From 2f8e6dbb30fa4492dde6b23ed5ee869ce65dbcd1 Mon Sep 17 00:00:00 2001 From: Marc-Eric Martel <1205697@etu.cegepsth.qc.ca> Date: Fri, 24 Sep 2021 10:15:43 -0400 Subject: [PATCH] =?UTF-8?q?D=C3=A9but=20TP2=20+=20Handling=20des=20=C3=A9v?= =?UTF-8?q?=C3=A9nements=20de=20touches=20de=20mouvement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQCSim2021.sln | 29 +- SQCSim2021/SQCSim2021.vcxproj | 160 ---- SQCSim2021/SQCSim2021.vcxproj.filters | 51 -- SQCSim2021/blockarray3d.cpp | 26 - SQCSim2021/blockarray3d.h | 24 - SQCSim2021/blockinfo.cpp | 13 - SQCSim2021/blockinfo.h | 23 - SQCSim2021/chunk.cpp | 13 - SQCSim2021/chunk.h | 20 - SQCSim2021/define.h | 17 - SQCSim2021/main.cpp | 64 -- SQCSim2021/main.h | 11 - mcclone/Makefile | 64 ++ mcclone/blockarray3d.cpp | 41 + mcclone/blockarray3d.h | 26 + mcclone/blockinfo.cpp | 34 + mcclone/blockinfo.h | 27 + mcclone/chunk.cpp | 25 + mcclone/chunk.h | 16 + mcclone/define.h | 25 + mcclone/engine.cpp | 189 +++++ mcclone/engine.h | 37 + mcclone/external/devil178/include/IL/config.h | 140 ++++ .../external/devil178/include/IL/config.h.win | 79 ++ .../include/IL/devil_internal_exports.h | 161 ++++ mcclone/external/devil178/include/IL/il.h | 644 +++++++++++++++ .../external/devil178/include/IL/il_wrap.h | 205 +++++ mcclone/external/devil178/include/IL/ilu.h | 195 +++++ .../external/devil178/include/IL/ilu_region.h | 25 + mcclone/external/devil178/include/IL/ilut.h | 390 +++++++++ .../devil178/include/IL/ilut_config.h | 26 + mcclone/external/devil178/lib/DevIL.dll | Bin 0 -> 764416 bytes mcclone/external/devil178/lib/DevIL.lib | Bin 0 -> 30802 bytes mcclone/external/devil178/lib/ILU.dll | Bin 0 -> 28672 bytes mcclone/external/devil178/lib/ILU.lib | Bin 0 -> 11630 bytes mcclone/external/devil178/lib/ILUT.dll | Bin 0 -> 17408 bytes mcclone/external/devil178/lib/ILUT.lib | Bin 0 -> 10564 bytes .../external/devil178/lib/unicode/DevIL.dll | Bin 0 -> 764416 bytes .../external/devil178/lib/unicode/DevIL.lib | Bin 0 -> 30802 bytes mcclone/external/devil178/lib/unicode/ILU.dll | Bin 0 -> 29184 bytes mcclone/external/devil178/lib/unicode/ILU.lib | Bin 0 -> 11630 bytes .../external/devil178/lib/unicode/ILUT.dll | Bin 0 -> 17408 bytes .../external/devil178/lib/unicode/ILUT.lib | Bin 0 -> 10564 bytes .../external/sfml23/include/SFML/Audio.hpp | 56 ++ .../sfml23/include/SFML/Audio/AlResource.hpp | 70 ++ .../sfml23/include/SFML/Audio/Export.hpp | 48 ++ .../include/SFML/Audio/InputSoundFile.hpp | 250 ++++++ .../sfml23/include/SFML/Audio/Listener.hpp | 234 ++++++ .../sfml23/include/SFML/Audio/Music.hpp | 229 ++++++ .../include/SFML/Audio/OutputSoundFile.hpp | 133 +++ .../sfml23/include/SFML/Audio/Sound.hpp | 264 ++++++ .../sfml23/include/SFML/Audio/SoundBuffer.hpp | 352 ++++++++ .../SFML/Audio/SoundBufferRecorder.hpp | 138 ++++ .../include/SFML/Audio/SoundFileFactory.hpp | 197 +++++ .../include/SFML/Audio/SoundFileFactory.inl | 100 +++ .../include/SFML/Audio/SoundFileReader.hpp | 161 ++++ .../include/SFML/Audio/SoundFileWriter.hpp | 125 +++ .../include/SFML/Audio/SoundRecorder.hpp | 364 +++++++++ .../sfml23/include/SFML/Audio/SoundSource.hpp | 287 +++++++ .../sfml23/include/SFML/Audio/SoundStream.hpp | 386 +++++++++ .../external/sfml23/include/SFML/Config.hpp | 193 +++++ .../external/sfml23/include/SFML/Graphics.hpp | 67 ++ .../include/SFML/Graphics/BlendMode.hpp | 214 +++++ .../include/SFML/Graphics/CircleShape.hpp | 154 ++++ .../sfml23/include/SFML/Graphics/Color.hpp | 275 +++++++ .../include/SFML/Graphics/ConvexShape.hpp | 153 ++++ .../sfml23/include/SFML/Graphics/Drawable.hpp | 126 +++ .../sfml23/include/SFML/Graphics/Export.hpp | 48 ++ .../sfml23/include/SFML/Graphics/Font.hpp | 433 ++++++++++ .../sfml23/include/SFML/Graphics/Glyph.hpp | 79 ++ .../sfml23/include/SFML/Graphics/Image.hpp | 327 ++++++++ .../include/SFML/Graphics/PrimitiveType.hpp | 53 ++ .../sfml23/include/SFML/Graphics/Rect.hpp | 248 ++++++ .../sfml23/include/SFML/Graphics/Rect.inl | 159 ++++ .../include/SFML/Graphics/RectangleShape.hpp | 132 +++ .../include/SFML/Graphics/RenderStates.hpp | 174 ++++ .../include/SFML/Graphics/RenderTarget.hpp | 451 +++++++++++ .../include/SFML/Graphics/RenderTexture.hpp | 280 +++++++ .../include/SFML/Graphics/RenderWindow.hpp | 267 ++++++ .../sfml23/include/SFML/Graphics/Shader.hpp | 659 +++++++++++++++ .../sfml23/include/SFML/Graphics/Shape.hpp | 355 ++++++++ .../sfml23/include/SFML/Graphics/Sprite.hpp | 279 +++++++ .../sfml23/include/SFML/Graphics/Text.hpp | 372 +++++++++ .../sfml23/include/SFML/Graphics/Texture.hpp | 618 ++++++++++++++ .../include/SFML/Graphics/Transform.hpp | 450 +++++++++++ .../include/SFML/Graphics/Transformable.hpp | 429 ++++++++++ .../sfml23/include/SFML/Graphics/Vertex.hpp | 148 ++++ .../include/SFML/Graphics/VertexArray.hpp | 223 +++++ .../sfml23/include/SFML/Graphics/View.hpp | 343 ++++++++ mcclone/external/sfml23/include/SFML/Main.hpp | 43 + .../external/sfml23/include/SFML/Network.hpp | 53 ++ .../sfml23/include/SFML/Network/Export.hpp | 48 ++ .../sfml23/include/SFML/Network/Ftp.hpp | 611 ++++++++++++++ .../sfml23/include/SFML/Network/Http.hpp | 482 +++++++++++ .../sfml23/include/SFML/Network/IpAddress.hpp | 316 ++++++++ .../sfml23/include/SFML/Network/Packet.hpp | 412 ++++++++++ .../sfml23/include/SFML/Network/Socket.hpp | 219 +++++ .../include/SFML/Network/SocketHandle.hpp | 57 ++ .../include/SFML/Network/SocketSelector.hpp | 263 ++++++ .../include/SFML/Network/TcpListener.hpp | 162 ++++ .../sfml23/include/SFML/Network/TcpSocket.hpp | 315 ++++++++ .../sfml23/include/SFML/Network/UdpSocket.hpp | 283 +++++++ .../external/sfml23/include/SFML/OpenGL.hpp | 74 ++ .../external/sfml23/include/SFML/System.hpp | 60 ++ .../sfml23/include/SFML/System/Clock.hpp | 117 +++ .../sfml23/include/SFML/System/Err.hpp | 80 ++ .../sfml23/include/SFML/System/Export.hpp | 48 ++ .../include/SFML/System/FileInputStream.hpp | 169 ++++ .../include/SFML/System/InputStream.hpp | 152 ++++ .../sfml23/include/SFML/System/Lock.hpp | 139 ++++ .../include/SFML/System/MemoryInputStream.hpp | 148 ++++ .../sfml23/include/SFML/System/Mutex.hpp | 148 ++++ .../include/SFML/System/NonCopyable.hpp | 119 +++ .../sfml23/include/SFML/System/Sleep.hpp | 52 ++ .../sfml23/include/SFML/System/String.hpp | 668 +++++++++++++++ .../sfml23/include/SFML/System/String.inl | 53 ++ .../sfml23/include/SFML/System/Thread.hpp | 282 +++++++ .../sfml23/include/SFML/System/Thread.inl | 90 +++ .../include/SFML/System/ThreadLocal.hpp | 103 +++ .../include/SFML/System/ThreadLocalPtr.hpp | 158 ++++ .../include/SFML/System/ThreadLocalPtr.inl | 77 ++ .../sfml23/include/SFML/System/Time.hpp | 488 +++++++++++ .../sfml23/include/SFML/System/Utf.hpp | 763 ++++++++++++++++++ .../sfml23/include/SFML/System/Utf.inl | 752 +++++++++++++++++ .../sfml23/include/SFML/System/Vector2.hpp | 301 +++++++ .../sfml23/include/SFML/System/Vector2.inl | 161 ++++ .../sfml23/include/SFML/System/Vector3.hpp | 302 +++++++ .../sfml23/include/SFML/System/Vector3.inl | 168 ++++ .../external/sfml23/include/SFML/Window.hpp | 56 ++ .../sfml23/include/SFML/Window/Context.hpp | 151 ++++ .../include/SFML/Window/ContextSettings.hpp | 145 ++++ .../sfml23/include/SFML/Window/Event.hpp | 284 +++++++ .../sfml23/include/SFML/Window/Export.hpp | 48 ++ .../sfml23/include/SFML/Window/GlResource.hpp | 76 ++ .../sfml23/include/SFML/Window/Joystick.hpp | 227 ++++++ .../sfml23/include/SFML/Window/Keyboard.hpp | 224 +++++ .../sfml23/include/SFML/Window/Mouse.hpp | 177 ++++ .../sfml23/include/SFML/Window/Sensor.hpp | 150 ++++ .../sfml23/include/SFML/Window/Touch.hpp | 137 ++++ .../sfml23/include/SFML/Window/VideoMode.hpp | 228 ++++++ .../sfml23/include/SFML/Window/Window.hpp | 585 ++++++++++++++ .../include/SFML/Window/WindowHandle.hpp | 74 ++ .../include/SFML/Window/WindowStyle.hpp | 53 ++ mcclone/external/sfml23/lib/flac.lib | Bin 0 -> 512458 bytes mcclone/external/sfml23/lib/freetype.lib | Bin 0 -> 858580 bytes mcclone/external/sfml23/lib/jpeg.lib | Bin 0 -> 354754 bytes mcclone/external/sfml23/lib/ogg.lib | Bin 0 -> 22794 bytes mcclone/external/sfml23/lib/openal32.lib | Bin 0 -> 32366 bytes mcclone/external/sfml23/lib/sfml-audio-d.lib | Bin 0 -> 55936 bytes .../external/sfml23/lib/sfml-audio-s-d.lib | Bin 0 -> 3637600 bytes mcclone/external/sfml23/lib/sfml-audio-s.lib | Bin 0 -> 1208582 bytes mcclone/external/sfml23/lib/sfml-audio.lib | Bin 0 -> 55596 bytes .../external/sfml23/lib/sfml-graphics-d.lib | Bin 0 -> 128968 bytes .../external/sfml23/lib/sfml-graphics-s-d.lib | Bin 0 -> 4893600 bytes .../external/sfml23/lib/sfml-graphics-s.lib | Bin 0 -> 1877020 bytes mcclone/external/sfml23/lib/sfml-graphics.lib | Bin 0 -> 128172 bytes mcclone/external/sfml23/lib/sfml-main-d.lib | Bin 0 -> 18176 bytes mcclone/external/sfml23/lib/sfml-main.lib | Bin 0 -> 1170 bytes .../external/sfml23/lib/sfml-network-d.lib | Bin 0 -> 71842 bytes .../external/sfml23/lib/sfml-network-s-d.lib | Bin 0 -> 3062186 bytes .../external/sfml23/lib/sfml-network-s.lib | Bin 0 -> 1187608 bytes mcclone/external/sfml23/lib/sfml-network.lib | Bin 0 -> 71436 bytes mcclone/external/sfml23/lib/sfml-system-d.lib | Bin 0 -> 41816 bytes .../external/sfml23/lib/sfml-system-s-d.lib | Bin 0 -> 1197778 bytes mcclone/external/sfml23/lib/sfml-system-s.lib | Bin 0 -> 408504 bytes mcclone/external/sfml23/lib/sfml-system.lib | Bin 0 -> 41534 bytes mcclone/external/sfml23/lib/sfml-window-d.lib | Bin 0 -> 31084 bytes .../external/sfml23/lib/sfml-window-s-d.lib | Bin 0 -> 2418960 bytes mcclone/external/sfml23/lib/sfml-window-s.lib | Bin 0 -> 824300 bytes mcclone/external/sfml23/lib/sfml-window.lib | Bin 0 -> 30878 bytes mcclone/external/sfml23/lib/vorbis.lib | Bin 0 -> 852828 bytes mcclone/external/sfml23/lib/vorbisenc.lib | Bin 0 -> 643788 bytes mcclone/external/sfml23/lib/vorbisfile.lib | Bin 0 -> 34544 bytes mcclone/main.cpp | 9 + mcclone/matrix4.h | 571 +++++++++++++ mcclone/mcclone.vcxproj | 114 +++ mcclone/mcclone.vcxproj.filters | 74 ++ mcclone/media/textures/checker.png | Bin 0 -> 7538 bytes mcclone/notes.txt | 5 + mcclone/openglcontext.cpp | 172 ++++ mcclone/openglcontext.h | 68 ++ mcclone/texture.cpp | 64 ++ mcclone/texture.h | 23 + mcclone/transformation.cpp | 63 ++ mcclone/transformation.h | 35 + mcclone/vector3.h | 219 +++++ 186 files changed, 26429 insertions(+), 442 deletions(-) delete mode 100644 SQCSim2021/SQCSim2021.vcxproj delete mode 100644 SQCSim2021/SQCSim2021.vcxproj.filters delete mode 100644 SQCSim2021/blockarray3d.cpp delete mode 100644 SQCSim2021/blockarray3d.h delete mode 100644 SQCSim2021/blockinfo.cpp delete mode 100644 SQCSim2021/blockinfo.h delete mode 100644 SQCSim2021/chunk.cpp delete mode 100644 SQCSim2021/chunk.h delete mode 100644 SQCSim2021/define.h delete mode 100644 SQCSim2021/main.cpp delete mode 100644 SQCSim2021/main.h create mode 100644 mcclone/Makefile create mode 100644 mcclone/blockarray3d.cpp create mode 100644 mcclone/blockarray3d.h create mode 100644 mcclone/blockinfo.cpp create mode 100644 mcclone/blockinfo.h create mode 100644 mcclone/chunk.cpp create mode 100644 mcclone/chunk.h create mode 100644 mcclone/define.h create mode 100644 mcclone/engine.cpp create mode 100644 mcclone/engine.h create mode 100644 mcclone/external/devil178/include/IL/config.h create mode 100644 mcclone/external/devil178/include/IL/config.h.win create mode 100644 mcclone/external/devil178/include/IL/devil_internal_exports.h create mode 100644 mcclone/external/devil178/include/IL/il.h create mode 100644 mcclone/external/devil178/include/IL/il_wrap.h create mode 100644 mcclone/external/devil178/include/IL/ilu.h create mode 100644 mcclone/external/devil178/include/IL/ilu_region.h create mode 100644 mcclone/external/devil178/include/IL/ilut.h create mode 100644 mcclone/external/devil178/include/IL/ilut_config.h create mode 100644 mcclone/external/devil178/lib/DevIL.dll create mode 100644 mcclone/external/devil178/lib/DevIL.lib create mode 100644 mcclone/external/devil178/lib/ILU.dll create mode 100644 mcclone/external/devil178/lib/ILU.lib create mode 100644 mcclone/external/devil178/lib/ILUT.dll create mode 100644 mcclone/external/devil178/lib/ILUT.lib create mode 100644 mcclone/external/devil178/lib/unicode/DevIL.dll create mode 100644 mcclone/external/devil178/lib/unicode/DevIL.lib create mode 100644 mcclone/external/devil178/lib/unicode/ILU.dll create mode 100644 mcclone/external/devil178/lib/unicode/ILU.lib create mode 100644 mcclone/external/devil178/lib/unicode/ILUT.dll create mode 100644 mcclone/external/devil178/lib/unicode/ILUT.lib create mode 100644 mcclone/external/sfml23/include/SFML/Audio.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Audio/AlResource.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Audio/Export.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Audio/InputSoundFile.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Audio/Listener.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Audio/Music.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Audio/OutputSoundFile.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Audio/Sound.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundBuffer.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundBufferRecorder.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundFileFactory.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundFileFactory.inl create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundFileReader.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundFileWriter.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundRecorder.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundSource.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Audio/SoundStream.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Config.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/BlendMode.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/CircleShape.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Color.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/ConvexShape.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Drawable.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Export.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Font.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Glyph.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Image.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/PrimitiveType.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Rect.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Rect.inl create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/RectangleShape.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/RenderStates.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/RenderTarget.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/RenderTexture.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/RenderWindow.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Shader.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Shape.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Sprite.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Text.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Texture.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Transform.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Transformable.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/Vertex.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/VertexArray.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Graphics/View.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Main.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Network.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Network/Export.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Network/Ftp.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Network/Http.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Network/IpAddress.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Network/Packet.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Network/Socket.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Network/SocketHandle.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Network/SocketSelector.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Network/TcpListener.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Network/TcpSocket.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Network/UdpSocket.hpp create mode 100644 mcclone/external/sfml23/include/SFML/OpenGL.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/Clock.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/Err.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/Export.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/FileInputStream.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/InputStream.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/Lock.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/MemoryInputStream.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/Mutex.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/NonCopyable.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/Sleep.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/String.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/String.inl create mode 100644 mcclone/external/sfml23/include/SFML/System/Thread.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/Thread.inl create mode 100644 mcclone/external/sfml23/include/SFML/System/ThreadLocal.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/ThreadLocalPtr.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/ThreadLocalPtr.inl create mode 100644 mcclone/external/sfml23/include/SFML/System/Time.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/Utf.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/Utf.inl create mode 100644 mcclone/external/sfml23/include/SFML/System/Vector2.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/Vector2.inl create mode 100644 mcclone/external/sfml23/include/SFML/System/Vector3.hpp create mode 100644 mcclone/external/sfml23/include/SFML/System/Vector3.inl create mode 100644 mcclone/external/sfml23/include/SFML/Window.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Window/Context.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Window/ContextSettings.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Window/Event.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Window/Export.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Window/GlResource.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Window/Joystick.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Window/Keyboard.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Window/Mouse.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Window/Sensor.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Window/Touch.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Window/VideoMode.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Window/Window.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Window/WindowHandle.hpp create mode 100644 mcclone/external/sfml23/include/SFML/Window/WindowStyle.hpp create mode 100644 mcclone/external/sfml23/lib/flac.lib create mode 100644 mcclone/external/sfml23/lib/freetype.lib create mode 100644 mcclone/external/sfml23/lib/jpeg.lib create mode 100644 mcclone/external/sfml23/lib/ogg.lib create mode 100644 mcclone/external/sfml23/lib/openal32.lib create mode 100644 mcclone/external/sfml23/lib/sfml-audio-d.lib create mode 100644 mcclone/external/sfml23/lib/sfml-audio-s-d.lib create mode 100644 mcclone/external/sfml23/lib/sfml-audio-s.lib create mode 100644 mcclone/external/sfml23/lib/sfml-audio.lib create mode 100644 mcclone/external/sfml23/lib/sfml-graphics-d.lib create mode 100644 mcclone/external/sfml23/lib/sfml-graphics-s-d.lib create mode 100644 mcclone/external/sfml23/lib/sfml-graphics-s.lib create mode 100644 mcclone/external/sfml23/lib/sfml-graphics.lib create mode 100644 mcclone/external/sfml23/lib/sfml-main-d.lib create mode 100644 mcclone/external/sfml23/lib/sfml-main.lib create mode 100644 mcclone/external/sfml23/lib/sfml-network-d.lib create mode 100644 mcclone/external/sfml23/lib/sfml-network-s-d.lib create mode 100644 mcclone/external/sfml23/lib/sfml-network-s.lib create mode 100644 mcclone/external/sfml23/lib/sfml-network.lib create mode 100644 mcclone/external/sfml23/lib/sfml-system-d.lib create mode 100644 mcclone/external/sfml23/lib/sfml-system-s-d.lib create mode 100644 mcclone/external/sfml23/lib/sfml-system-s.lib create mode 100644 mcclone/external/sfml23/lib/sfml-system.lib create mode 100644 mcclone/external/sfml23/lib/sfml-window-d.lib create mode 100644 mcclone/external/sfml23/lib/sfml-window-s-d.lib create mode 100644 mcclone/external/sfml23/lib/sfml-window-s.lib create mode 100644 mcclone/external/sfml23/lib/sfml-window.lib create mode 100644 mcclone/external/sfml23/lib/vorbis.lib create mode 100644 mcclone/external/sfml23/lib/vorbisenc.lib create mode 100644 mcclone/external/sfml23/lib/vorbisfile.lib create mode 100644 mcclone/main.cpp create mode 100644 mcclone/matrix4.h create mode 100644 mcclone/mcclone.vcxproj create mode 100644 mcclone/mcclone.vcxproj.filters create mode 100644 mcclone/media/textures/checker.png create mode 100644 mcclone/notes.txt create mode 100644 mcclone/openglcontext.cpp create mode 100644 mcclone/openglcontext.h create mode 100644 mcclone/texture.cpp create mode 100644 mcclone/texture.h create mode 100644 mcclone/transformation.cpp create mode 100644 mcclone/transformation.h create mode 100644 mcclone/vector3.h diff --git a/SQCSim2021.sln b/SQCSim2021.sln index a4beb16..13eae87 100644 --- a/SQCSim2021.sln +++ b/SQCSim2021.sln @@ -1,31 +1,20 @@  -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31624.102 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SQCSim2021", "SQCSim2021\SQCSim2021.vcxproj", "{90AE3964-E572-47EC-A7FB-B550481DC822}" +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mcclone", "mcclone\mcclone.vcxproj", "{A21FD938-1FEA-4687-AB86-0EABAC30877B}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {90AE3964-E572-47EC-A7FB-B550481DC822}.Debug|x64.ActiveCfg = Debug|x64 - {90AE3964-E572-47EC-A7FB-B550481DC822}.Debug|x64.Build.0 = Debug|x64 - {90AE3964-E572-47EC-A7FB-B550481DC822}.Debug|x86.ActiveCfg = Debug|Win32 - {90AE3964-E572-47EC-A7FB-B550481DC822}.Debug|x86.Build.0 = Debug|Win32 - {90AE3964-E572-47EC-A7FB-B550481DC822}.Release|x64.ActiveCfg = Release|x64 - {90AE3964-E572-47EC-A7FB-B550481DC822}.Release|x64.Build.0 = Release|x64 - {90AE3964-E572-47EC-A7FB-B550481DC822}.Release|x86.ActiveCfg = Release|Win32 - {90AE3964-E572-47EC-A7FB-B550481DC822}.Release|x86.Build.0 = Release|Win32 + {A21FD938-1FEA-4687-AB86-0EABAC30877B}.Debug|Win32.ActiveCfg = Debug|Win32 + {A21FD938-1FEA-4687-AB86-0EABAC30877B}.Debug|Win32.Build.0 = Debug|Win32 + {A21FD938-1FEA-4687-AB86-0EABAC30877B}.Release|Win32.ActiveCfg = Release|Win32 + {A21FD938-1FEA-4687-AB86-0EABAC30877B}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {422CB8A4-C8D4-44CC-9478-D867DE3AFFDA} - EndGlobalSection EndGlobal diff --git a/SQCSim2021/SQCSim2021.vcxproj b/SQCSim2021/SQCSim2021.vcxproj deleted file mode 100644 index 35d96b4..0000000 --- a/SQCSim2021/SQCSim2021.vcxproj +++ /dev/null @@ -1,160 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 16.0 - Win32Proj - {90ae3964-e572-47ec-a7fb-b550481dc822} - SQCSim2021 - 10.0 - - - - Application - true - v142 - Unicode - - - Application - false - v142 - true - Unicode - - - Application - true - v142 - Unicode - - - Application - false - v142 - true - Unicode - - - - - - - - - - - - - - - - - - - - - true - - - false - - - true - - - false - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - true - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - true - true - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/SQCSim2021/SQCSim2021.vcxproj.filters b/SQCSim2021/SQCSim2021.vcxproj.filters deleted file mode 100644 index f06cd67..0000000 --- a/SQCSim2021/SQCSim2021.vcxproj.filters +++ /dev/null @@ -1,51 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - - \ No newline at end of file diff --git a/SQCSim2021/blockarray3d.cpp b/SQCSim2021/blockarray3d.cpp deleted file mode 100644 index 78b866a..0000000 --- a/SQCSim2021/blockarray3d.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "blockarray3d.h" - -BlockArray3d::BlockArray3d(int x, int y, int z) : m_x(x), m_y(y), m_z(z) { - m_blocks = new BlockType[x * y * z]; - Reset(BTYPE_AIR); -} - -BlockArray3d::BlockArray3d(BlockArray3d& ba) : m_x(ba.m_x), m_y(ba.m_y), m_z(ba.m_z) { - m_blocks = new BlockType[ba.m_x*ba.m_y*ba.m_z]; - - for (int index = 0; index < (m_x * m_y * m_z); ++index) - m_blocks[index] = ba.m_blocks[index]; -} - -BlockArray3d::~BlockArray3d() { delete[] m_blocks; } - -void BlockArray3d::Set(int x, int y, int z, BlockType type) { m_blocks[GetPosition(x, y, z)] = type; } - -BlockType BlockArray3d::Get(int x, int y, int z) const { return m_blocks[GetPosition(x, y, z)]; } - -void BlockArray3d::Reset(BlockType type) { - for (int index = 0; index < (m_x * m_y * m_z); ++index) - m_blocks[index] = type; -} - -int BlockArray3d::GetPosition(int x, int y, int z) const { return x + (z * m_x) + (y * m_z * m_x); } diff --git a/SQCSim2021/blockarray3d.h b/SQCSim2021/blockarray3d.h deleted file mode 100644 index f169cf2..0000000 --- a/SQCSim2021/blockarray3d.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef BLOCKARRAY3D_H__ -#define BLOCKARRAY3D_H__ - -#include "define.h" - -class BlockArray3d { -public: - BlockArray3d(int x, int y, int z); - BlockArray3d(BlockArray3d& ba); - virtual ~BlockArray3d(); - - void Set(int x, int y, int z, BlockType type); - BlockType Get(int x, int y, int z) const; - void Reset(BlockType type); - -private: - BlockType* m_blocks; - int m_x; - int m_y; - int m_z; - - int GetPosition(int x, int y, int z) const; -}; -#endif \ No newline at end of file diff --git a/SQCSim2021/blockinfo.cpp b/SQCSim2021/blockinfo.cpp deleted file mode 100644 index 9205100..0000000 --- a/SQCSim2021/blockinfo.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "blockinfo.h" - -BlockInfo::BlockInfo(BlockType type, const std::string& name): m_name(name), m_type(type) { m_durability = 0; } - -BlockInfo::~BlockInfo() { } - -BlockType BlockInfo::GetType() const { return m_type; } - -void BlockInfo::SetDurability(int durability) { m_durability = durability; } - -int BlockInfo::GetDurability() const { return m_durability; } - -void BlockInfo::Show() const { std::cout << "Name: " << m_name << "; Type " << m_type << "; Durability: " << m_durability << std::endl; } diff --git a/SQCSim2021/blockinfo.h b/SQCSim2021/blockinfo.h deleted file mode 100644 index 9ef279f..0000000 --- a/SQCSim2021/blockinfo.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef BLOCKINFO_H__ -#define BLOCKINFO_H__ - -#include "define.h" - -class BlockInfo { -public: - BlockInfo(BlockType type, const std::string& name); - ~BlockInfo(); - - BlockType GetType() const; - - void SetDurability(int durability); - int GetDurability() const; - void Show() const; - -private: - std::string m_name; - int m_durability; - BlockType m_type; -}; -#endif - diff --git a/SQCSim2021/chunk.cpp b/SQCSim2021/chunk.cpp deleted file mode 100644 index 579e355..0000000 --- a/SQCSim2021/chunk.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "chunk.h" - -Chunk::Chunk(): BlockArray3d(CHUNK_SIZE_X, CHUNK_SIZE_Y, CHUNK_SIZE_Z) {} - -Chunk::Chunk(Chunk& chk) : BlockArray3d(chk) {} - -Chunk::~Chunk() {} - -void Chunk::RemoveBlock(int x, int y, int z) { Set(x, y, z, BTYPE_AIR); } - -void Chunk::SetBlock(int x, int y, int z, BlockType type) { Set(x, y, z, type); } - -BlockType Chunk::GetBlock(int x, int y, int z) const { return Get(x, y, z); } diff --git a/SQCSim2021/chunk.h b/SQCSim2021/chunk.h deleted file mode 100644 index 4045b1a..0000000 --- a/SQCSim2021/chunk.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef CHUNK_H__ -#define CHUNK_H__ - -#include "define.h" -#include "blockarray3d.h" - -class Chunk : public BlockArray3d { -public: - Chunk(); - Chunk(Chunk& chk); - virtual ~Chunk(); - - void RemoveBlock(int x, int y, int z); - void SetBlock(int x, int y, int z, BlockType type); - BlockType GetBlock(int x, int y, int z) const; - -}; - -#endif - diff --git a/SQCSim2021/define.h b/SQCSim2021/define.h deleted file mode 100644 index d4413d5..0000000 --- a/SQCSim2021/define.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef DEFINE_H__ -#define DEFINE_H__ - -#include -#include - -#define CHUNK_SIZE_X 16 -#define CHUNK_SIZE_Y 128 -#define CHUNK_SIZE_Z 16 - -enum BlockType { - BTYPE_AIR, - BTYPE_DIRT, - BTYPE_GRASS -}; - -#endif diff --git a/SQCSim2021/main.cpp b/SQCSim2021/main.cpp deleted file mode 100644 index 920ebbf..0000000 --- a/SQCSim2021/main.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "main.h" - -int main() { - - Chunk* testchunk = new Chunk(); - std::vector testblock; - - std::cout << "-Test 1-------BlockInfo------------------" << std::endl; - - testblock.push_back(new BlockInfo(BTYPE_AIR, "The air in the sky")); - testblock.push_back(new BlockInfo(BTYPE_DIRT, "The dirt on the ground")); - testblock.push_back(new BlockInfo(BTYPE_GRASS, "The grass on the dirt")); - - testblock[1]->SetDurability(5); - testblock[2]->SetDurability(6); - - for (int index = 0; index < testblock.size(); ++index) - testblock[index]->Show(); - - std::cout << "GetDurability: " << testblock[0]->GetDurability() << " and " << testblock[1]->GetDurability() << " and " << testblock[2]->GetDurability() << std::endl; - std::cout << "GetType: " << testblock[0]->GetType() << " and " << testblock[1]->GetType() << " and " << testblock[2]->GetType() << std::endl; - - std::cout << std::endl; - std::cout << "-Test 2--------Chunk/BlockArray3D---------" << std::endl; - testchunk->SetBlock(1, 0, 0, BTYPE_DIRT); - testchunk->SetBlock(2, 0, 0, BTYPE_GRASS); - testblock.push_back(new BlockInfo(testchunk->GetBlock(0, 0, 0), "A new block in the chunk")); - testblock.push_back(new BlockInfo(testchunk->GetBlock(1, 0, 0), "A dirty block in the chunk")); - testblock.push_back(new BlockInfo(testchunk->GetBlock(2, 0, 0), "A grassy block in the chunk")); - - for (int index = 3; index < testblock.size(); ++index) - testblock[index]->Show(); - - std::cout << std::endl; - std::cout << "-Test 3--------Chunk Copy------------------" << std::endl; - Chunk testchunkcopy(*testchunk); - - delete testchunk; - - testblock.push_back(new BlockInfo(testchunkcopy.GetBlock(0, 0, 0), "A block in a copied chunk")); - testblock.push_back(new BlockInfo(testchunkcopy.GetBlock(1, 0, 0), "A dirty block in a copied chunk")); - testblock.push_back(new BlockInfo(testchunkcopy.GetBlock(1, 0, 0), "A grassy block in a copied chunk")); - - for (int index = 6; index < testblock.size(); ++index) - testblock[index]->Show(); - - std::cout << std::endl; - std::cout << "-Test 3--------Chunk Reset/Remove Block-----" << std::endl; - testchunkcopy.Reset(BTYPE_GRASS); - testchunkcopy.RemoveBlock(3, 0, 0); - testchunkcopy.SetBlock(4, 0, 0, BTYPE_DIRT); - - testblock.clear(); - - for (int index = 0; index < 10; ++index) - testblock.push_back(new BlockInfo(testchunkcopy.GetBlock(index, 0, 0), "A block in a reset chunk containing lots of grass")); - - for (int index = 0; index < testblock.size(); ++index) - testblock[index]->Show(); - - testblock.clear(); - - return 0; -} diff --git a/SQCSim2021/main.h b/SQCSim2021/main.h deleted file mode 100644 index e124f29..0000000 --- a/SQCSim2021/main.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef MAIN_H__ -#define MAIN_H__ - -#include - -#include "define.h" -#include "chunk.h" -#include "blockinfo.h" - -#endif - diff --git a/mcclone/Makefile b/mcclone/Makefile new file mode 100644 index 0000000..5d1cc75 --- /dev/null +++ b/mcclone/Makefile @@ -0,0 +1,64 @@ +SRCS = $(wildcard *.cpp) +OBJS = $(SRCS:.cpp=.o) +BINFILE = ./mcclone +CC = g++ + +COMPILER_FLAGS = -I/usr/X11R6/include -I/usr/local/include -I./external/noise/include -I./external/enet-1.3.1/include -finline-functions -std=c++11 +LINKER_FLAGS = -lm -L/usr/X11R6/lib -L/usr/local/lib -lGL -lGLU -lpthread -lsfml-graphics -lsfml-window -lsfml-system -lsndfile -lopenal -lsfml-audio -lXrandr -lIL -lILU -lX11 -ldl -lGLEW + +# Release: +#CFLAGS = -O3 -fomit-frame-pointer -ffast-math -w $(COMPILER_FLAGS) +#LFLAGS = $(LINKER_FLAGS) + +# Debug: +CFLAGS = -g -W -Wall $(COMPILER_FLAGS) -Wno-write-strings -Wno-unused-parameter -Wno-switch -Wno-reorder -DDEBUGMODE -DDEBUG +LFLAGS = $(LINKER_FLAGS) + +# Profiling: +#CFLAGS = -pg -W -Wall $(COMPILER_FLAGS) -Wno-write-strings +#LFLAGS = -pg $(LINKER_FLAGS) + +all : $(BINFILE) + +$(BINFILE) : $(OBJS) + @echo Linking to $(BINFILE)... + @$(CC) $(OBJS) -o $(BINFILE) $(LFLAGS) + +%.o : %.cpp + @echo CC $@ + @$(CC) $(CFLAGS) -c $< -o $@ + +%.o : %.cc + @echo CC $@ + @$(CC) $(CFLAGS) -c $< -o $@ + +%.o : %.C + @echo CC $@ + @$(CC) $(CFLAGS) -c $< -o $@ + +%.o : %.cxx + @echo CC $@ + @$(CC) $(CFLAGS) -c $< -o $@ + +strip: + @strip $(BINFILE) + +clean: + @rm -f Makefile.bak + @rm -f $(OBJS) + @rm -f gmon.out + @rm -f profiler_output.txt + @rm -f $(BINFILE) + +depend: + @$(CC) -MM $(CFLAGS) $(SRCS) > Makefile.dep + @make -s clean + +info: + @echo SRCS: $(SRCS) + @echo OBJS: $(OBJS) + @echo $(BINFILE) + + +include Makefile.dep + diff --git a/mcclone/blockarray3d.cpp b/mcclone/blockarray3d.cpp new file mode 100644 index 0000000..fe12b35 --- /dev/null +++ b/mcclone/blockarray3d.cpp @@ -0,0 +1,41 @@ +#include "blockarray3d.h" + +BlockArray3d::BlockArray3d(int x, int y, int z) : m_x(x), m_y(y), m_z(z) +{ + m_blocks = new BlockType[m_x * m_y * m_z]; + + Reset(BTYPE_AIR); +} + +BlockArray3d::~BlockArray3d() +{ + delete [] m_blocks; +} + +BlockArray3d::BlockArray3d(const BlockArray3d& array) : m_x(array.m_x), m_y(array.m_y), m_z(array.m_z) +{ + m_blocks = new BlockType[m_x * m_y * m_z]; + for(int i = 0; i < m_x * m_y * m_z; ++i) + m_blocks[i] = array.m_blocks[i]; +} + +void BlockArray3d::Set(int x, int y, int z, BlockType type) +{ + m_blocks[To1dIndex(x, y, z)] = type; +} + +BlockType BlockArray3d::Get(int x, int y, int z) const +{ + return m_blocks[To1dIndex(x, y, z)]; +} + +void BlockArray3d::Reset(BlockType type) +{ + for(int i = 0; i < m_x * m_y * m_z; ++i) + m_blocks[i] = type; +} + +int BlockArray3d::To1dIndex(int x, int y, int z) const +{ + return x + (z * m_x) + (y * m_z * m_x); +} diff --git a/mcclone/blockarray3d.h b/mcclone/blockarray3d.h new file mode 100644 index 0000000..818eef3 --- /dev/null +++ b/mcclone/blockarray3d.h @@ -0,0 +1,26 @@ +#ifndef BLOCKARRAY3D_H__ +#define BLOCKARRAY3D_H__ + +#include "define.h" + +class BlockArray3d +{ + public: + BlockArray3d(int x, int y, int z); + ~BlockArray3d(); + BlockArray3d(const BlockArray3d& array); + + void Set(int x, int y, int z, BlockType type); + BlockType Get(int x, int y, int z) const; + + void Reset(BlockType type); + + private: + int To1dIndex(int x, int y, int z) const; + + private: + int m_x, m_y, m_z; + BlockType* m_blocks; +}; + +#endif // BLOCKARRAY3D_H__ diff --git a/mcclone/blockinfo.cpp b/mcclone/blockinfo.cpp new file mode 100644 index 0000000..e4670b7 --- /dev/null +++ b/mcclone/blockinfo.cpp @@ -0,0 +1,34 @@ +#include "blockinfo.h" +#include + +BlockInfo::BlockInfo(BlockType type, const std::string& name) : m_type(type), m_name(name), m_durability(1) +{ +} + +BlockInfo::~BlockInfo() +{ +} + +BlockType BlockInfo::GetType() const +{ + return m_type; +} + +void BlockInfo::SetDurability(int durability) +{ + m_durability = durability; +} + +int BlockInfo::GetDurability() const +{ + return m_durability; +} + +void BlockInfo::Show() const +{ + std::cout << "Type: " << m_type << std::endl; + std::cout << "Nom: " << m_name << std::endl; + std::cout << "Durabilite: " << m_durability << std::endl; +} + + diff --git a/mcclone/blockinfo.h b/mcclone/blockinfo.h new file mode 100644 index 0000000..3b6c880 --- /dev/null +++ b/mcclone/blockinfo.h @@ -0,0 +1,27 @@ +#ifndef BLOCKINFO_H__ +#define BLOCKINFO_H__ + +#include +#include "define.h" + +class BlockInfo +{ + public: + BlockInfo(BlockType type, const std::string& name); + ~BlockInfo(); + + BlockType GetType() const; + + void SetDurability(int durability); + int GetDurability() const; + + void Show() const; + + private: + BlockType m_type; + std::string m_name; + int m_durability; + +}; + +#endif // BLOCKINFO_H__ diff --git a/mcclone/chunk.cpp b/mcclone/chunk.cpp new file mode 100644 index 0000000..32b8fcb --- /dev/null +++ b/mcclone/chunk.cpp @@ -0,0 +1,25 @@ +#include "chunk.h" + +Chunk::Chunk() : BlockArray3d(CHUNK_SIZE_X, CHUNK_SIZE_Y, CHUNK_SIZE_Z) +{ +} + +Chunk::~Chunk() +{ +} + +void Chunk::RemoveBlock(int x, int y, int z) +{ + Set(x, y, z, BTYPE_AIR); +} + +void Chunk::SetBlock(int x, int y, int z, BlockType type) +{ + Set(x, y, z, type); +} + +BlockType Chunk::GetBlock(int x, int y, int z) +{ + return Get(x, y, z); +} + diff --git a/mcclone/chunk.h b/mcclone/chunk.h new file mode 100644 index 0000000..46030e5 --- /dev/null +++ b/mcclone/chunk.h @@ -0,0 +1,16 @@ +#ifndef CHUNK_H__ +#define CHUNK_H__ +#include "blockarray3d.h" + +class Chunk : public BlockArray3d +{ + public: + Chunk(); + ~Chunk(); + + void RemoveBlock(int x, int y, int z); + void SetBlock(int x, int y, int z, BlockType type); + BlockType GetBlock(int x, int y, int z); +}; + +#endif // CHUNK_H__ diff --git a/mcclone/define.h b/mcclone/define.h new file mode 100644 index 0000000..1b1f83c --- /dev/null +++ b/mcclone/define.h @@ -0,0 +1,25 @@ +#ifndef DEFINE_H__ +#define DEFINE_H__ + +#include +#include + +#ifdef _WIN32 +#include +#include +#include +#else +#include +#endif + +#define CHUNK_SIZE_X 16 +#define CHUNK_SIZE_Y 128 +#define CHUNK_SIZE_Z 16 + +enum BlockType {BTYPE_AIR, BTYPE_DIRT, BTYPE_GRASS}; + + +#define TEXTURE_PATH "../mcclone/media/textures/" +#define VIEW_DISTANCE 128 + +#endif // DEFINE_H__ diff --git a/mcclone/engine.cpp b/mcclone/engine.cpp new file mode 100644 index 0000000..74aa6b5 --- /dev/null +++ b/mcclone/engine.cpp @@ -0,0 +1,189 @@ +#include "engine.h" +#include +#include +#include + +Engine::Engine() +{ +} + +Engine::~Engine() +{ +} + +void Engine::Init() +{ + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glEnable(GL_TEXTURE_2D); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(45.0f, (float)Width() / (float)Height(), 0.0001f, 1000.0f); + glEnable(GL_DEPTH_TEST); + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); + glShadeModel(GL_SMOOTH); + glEnable(GL_LIGHTING); + glEnable(GL_LINE_SMOOTH); + + // Light + GLfloat light0Pos[4] = { 0.0f, CHUNK_SIZE_Y, 0.0f, 1.0f }; + GLfloat light0Amb[4] = { 0.9f, 0.9f, 0.9f, 1.0f }; + GLfloat light0Diff[4] = { 1.0f, 1.0f, 1.0f, 1.0f }; + GLfloat light0Spec[4] = { 0.2f, 0.2f, 0.2f, 1.0f }; + + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0, GL_POSITION, light0Pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, light0Amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, light0Diff); + glLightfv(GL_LIGHT0, GL_SPECULAR, light0Spec); + + CenterMouse(); + HideCursor(); +} + +void Engine::DeInit() +{ +} + +void Engine::LoadResource() +{ + LoadTexture(m_textureFloor, TEXTURE_PATH "checker.png"); +} + +void Engine::UnloadResource() +{ +} + +void Engine::Render(float elapsedTime) +{ + static float gameTime = elapsedTime; + + gameTime += elapsedTime; + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + // Transformations initiales + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + // Plancher + // Les vertex doivent etre affiches dans le sens anti-horaire (CCW) + m_textureFloor.Bind(); + float nbRep = 50.f; + glBegin(GL_QUADS); + glNormal3f(0, 1, 0); // Normal vector + glTexCoord2f(0, 0); + glVertex3f(-100.f, -2.f, 100.f); + glTexCoord2f(nbRep, 0); + glVertex3f(100.f, -2.f, 100.f); + glTexCoord2f(nbRep, nbRep); + glVertex3f(100.f, -2.f, -100.f); + glTexCoord2f(0, nbRep); + glVertex3f(-100.f, -2.f, -100.f); + glEnd(); +} + +void Engine::KeyPressEvent(unsigned char key) +{ + switch(key) + { + case 36: // ESC + Stop(); + break; + case 94: // F10 + SetFullscreen(!IsFullscreen()); + break; + case 22: // W + if (!m_keyW) { + std::cout << "W " << (int)key << std::endl; + m_keyW = true; + } + break; + case 0: // A + if (!m_keyA) { + std::cout << "A " << (int)key << std::endl; + m_keyA = true; + } + break; + case 18: // S + if (!m_keyS) { + std::cout << "S " << (int)key << std::endl; + m_keyS = true; + } + break; + case 3: // D + if (!m_keyD) { + std::cout << "D " << (int)key << std::endl; + m_keyD = true; + } + break; + default: + std::cout << "Unhandled key: " << (int)key << std::endl; + } +} + +void Engine::KeyReleaseEvent(unsigned char key) +{ + switch(key) + { + case 24: // Y + m_wireframe = !m_wireframe; + if(m_wireframe) + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + else + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + break; + case 22: // W + std::cout << "rW " << (int)key << std::endl; + m_keyW = false; + break; + case 0: // A + std::cout << "rA " << (int)key << std::endl; + m_keyA = false; + break; + case 18: // S + std::cout << "rS " << (int)key << std::endl; + m_keyS = false; + break; + case 3: // D + std::cout << "rD " << (int)key << std::endl; + m_keyD = false; + break; + } +} + +void Engine::MouseMoveEvent(int x, int y) +{ + // Centrer la souris seulement si elle n'est pas déjà centrée + // Il est nécessaire de faire la vérification pour éviter de tomber + // dans une boucle infinie où l'appel à CenterMouse génère un + // MouseMoveEvent, qui rapelle CenterMouse qui rapelle un autre + // MouseMoveEvent, etc + if(x == (Width() / 2) && y == (Height() / 2)) + return; + + CenterMouse(); +} + +void Engine::MousePressEvent(const MOUSE_BUTTON& button, int x, int y) +{ +} + +void Engine::MouseReleaseEvent(const MOUSE_BUTTON& button, int x, int y) +{ +} + +bool Engine::LoadTexture(Texture& texture, const std::string& filename, bool stopOnError) +{ + texture.Load(filename); + if(!texture.IsValid()) + { + std::cerr << "Unable to load texture (" << filename << ")" << std::endl; + if(stopOnError) + Stop(); + + return false; + } + + return true; +} diff --git a/mcclone/engine.h b/mcclone/engine.h new file mode 100644 index 0000000..43b8d2b --- /dev/null +++ b/mcclone/engine.h @@ -0,0 +1,37 @@ +#ifndef ENGINE_H__ +#define ENGINE_H__ +#include "define.h" +#include "openglcontext.h" +#include "texture.h" + +class Engine : public OpenglContext +{ +public: + Engine(); + virtual ~Engine(); + virtual void Init(); + virtual void DeInit(); + virtual void LoadResource(); + virtual void UnloadResource(); + virtual void Render(float elapsedTime); + virtual void KeyPressEvent(unsigned char key); + virtual void KeyReleaseEvent(unsigned char key); + virtual void MouseMoveEvent(int x, int y); + virtual void MousePressEvent(const MOUSE_BUTTON &button, int x, int y); + virtual void MouseReleaseEvent(const MOUSE_BUTTON &button, int x, int y); + +private: + bool LoadTexture(Texture& texture, const std::string& filename, bool stopOnError = true); + +private: + bool m_wireframe = false; + + Texture m_textureFloor; + + bool m_keyW = false; + bool m_keyA = false; + bool m_keyS = false; + bool m_keyD = false; +}; + +#endif // ENGINE_H__ diff --git a/mcclone/external/devil178/include/IL/config.h b/mcclone/external/devil178/include/IL/config.h new file mode 100644 index 0000000..b9fe5dc --- /dev/null +++ b/mcclone/external/devil178/include/IL/config.h @@ -0,0 +1,140 @@ +/* include/IL/config.h. Generated by configure. */ +/* include/IL/config.h.in. Generated from configure.in by autoheader. */ +#ifndef __CONFIG_H__ +#define __CONFIG_H__ + +#define IL_USE_PRAGMA_LIBS + +// Supported image formats (IL) + +// #define IL_NO_BLP +// #define IL_NO_BMP +// #define IL_NO_CUT +// #define IL_NO_CHEAD +// #define IL_NO_DCX +// #define IL_NO_DDS +// #define IL_NO_DICOM +// #define IL_NO_DOOM +// #define IL_NO_EXR +// #define IL_NO_FITS +// #define IL_NO_FTX +// #define IL_NO_GIF +// #define IL_NO_HDR +// #define IL_NO_ICO +// #define IL_NO_ICNS +// #define IL_NO_IWI +// #define IL_NO_JP2 +// #define IL_NO_JPG +// #define IL_NO_LCMS +// #define IL_NO_LIF +// #define IL_NO_MDL +// #define IL_NO_MNG +// #define IL_NO_PCD +// #define IL_NO_PCX +// #define IL_NO_PIC +// #define IL_NO_PIX +// #define IL_NO_PNG +// #define IL_NO_PNM +// #define IL_NO_PSD +// #define IL_NO_PSP +// #define IL_NO_PXR +// #define IL_NO_RAW +// #define IL_NO_ROT +// #define IL_NO_SGI +// #define IL_NO_SUN +// #define IL_NO_TGA +// #define IL_NO_TIF +// #define IL_NO_TPL +// #define IL_NO_WAL +// #define IL_NO_WDP +// #define IL_NO_XPM +#define IL_USE_JPEGLIB_UNMODIFIED 1 +//#define IL_USE_DXTC_NVIDIA +#define IL_USE_DXTC_SQUISH + +/* Supported api (ilut) */ + + +// +// sorry just +// cant get this one to work under windows +// have disabled for the now +// +// will look at it some more later +// +// Kriss +// +#undef ILUT_USE_ALLEGRO + +#undef ILUT_USE_DIRECTX8 +//#define ILUT_USE_DIRECTX9 +//#define ILUT_USE_DIRECTX10 +//#define ILUT_USE_OPENGL +//#define ILUT_USE_SDL +//#define ILUT_USE_WIN32 + + +/* Define to 1 if you have the header file. */ +//#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +//#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +//#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the header file. */ +//#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +//#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +//#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +//#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +//#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +//#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +//#define HAVE_UNISTD_H 1 + +/* Name of package */ +#define IL_PACKAGE "DevIL" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define IL_PACKAGE_NAME "" + +/* Define to the full name and version of this package. */ +#define IL_PACKAGE_STRING "" + +/* Define to the one symbol short name of this package. */ +#define IL_PACKAGE_TARNAME "" + +/* Define to the version of this package. */ +#define IL_PACKAGE_VERSION "" + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +//#define IL_VERSION "1.7.3" + +/* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). */ +/* #undef WORDS_BIGENDIAN */ + +/* If using Mac OS X uncomment this line */ +/* #include "macconfig.h" */ + +/* Define to 1 if the X Window System is missing or not being used. */ +/* #undef X_DISPLAY_MISSING */ +#endif /* __CONFIG_H__ */ diff --git a/mcclone/external/devil178/include/IL/config.h.win b/mcclone/external/devil178/include/IL/config.h.win new file mode 100644 index 0000000..659f4ca --- /dev/null +++ b/mcclone/external/devil178/include/IL/config.h.win @@ -0,0 +1,79 @@ +#ifndef __CONFIG_H__ +#define __CONFIG_H__ + +#define IL_USE_PRAGMA_LIBS // Links to only the libraries that are requested. +#define IL_INLINE_ASM 1 // Define if you can support at least some ASM + +// Supported images formats (IL) + +// #define IL_NO_BLP +// #define IL_NO_BMP +// #define IL_NO_CUT +// #define IL_NO_CHEAD +// #define IL_NO_DCX +// #define IL_NO_DDS +// #define IL_NO_DICOM +// #define IL_NO_DOOM +// #define IL_NO_EXR +// #define IL_NO_FITS +// #define IL_NO_FTX +// #define IL_NO_GIF +// #define IL_NO_HDR +// #define IL_NO_ICO +// #define IL_NO_ICNS +// #define IL_NO_IWI +// #define IL_NO_JP2 +// #define IL_NO_JPG +// #define IL_NO_LCMS +// #define IL_NO_LIF +// #define IL_NO_MDL +// #define IL_NO_MNG +// #define IL_NO_PCD +// #define IL_NO_PCX +// #define IL_NO_PIC +// #define IL_NO_PIX +// #define IL_NO_PNG +// #define IL_NO_PNM +// #define IL_NO_PSD +// #define IL_NO_PSP +// #define IL_NO_PXR +// #define IL_NO_RAW +// #define IL_NO_ROT +// #define IL_NO_SGI +// #define IL_NO_SUN +// #define IL_NO_TGA +// #define IL_NO_TIF +// #define IL_NO_TPL +// #define IL_NO_WAL +// #define IL_NO_WDP +// #define IL_NO_XPM + +#define IL_USE_JPEGLIB_UNMODIFIED 1 +#define IL_USE_DXTC_NVIDIA +#define IL_USE_DXTC_SQUISH + +//#define IL_NO_GAMES + +/* Supported api (ilut) */ + + +// +// sorry just +// cant get this one to work under windows +// have disabled for the now +// +// will look at it some more later +// +// Kriss +// +#undef ILUT_USE_ALLEGRO + +#undef ILUT_USE_DIRECTX8 +#define ILUT_USE_DIRECTX9 +#define ILUT_USE_DIRECTX10 +#define ILUT_USE_OPENGL +#define ILUT_USE_SDL +#define ILUT_USE_WIN32 + + +#endif /* __CONFIG_H__ */ diff --git a/mcclone/external/devil178/include/IL/devil_internal_exports.h b/mcclone/external/devil178/include/IL/devil_internal_exports.h new file mode 100644 index 0000000..30b7aaa --- /dev/null +++ b/mcclone/external/devil178/include/IL/devil_internal_exports.h @@ -0,0 +1,161 @@ +//----------------------------------------------------------------------------- +// +// ImageLib Sources +// Copyright (C) 2000-2009 by Denton Woods +// Last modified: 01/06/2009 +// +// Filename: IL/devil_internal_exports.h +// +// Description: Internal stuff for DevIL (IL, ILU and ILUT) +// +//----------------------------------------------------------------------------- + +#ifndef IL_EXPORTS_H +#define IL_EXPORTS_H + +#include "IL/il.h" + +#ifdef DEBUG + #include +#else + #define assert(x) +#endif + +//#ifndef NOINLINE +#ifndef INLINE +#if defined(__GNUC__) + #define INLINE extern inline +#elif defined(_MSC_VER) //@TODO: Get this working in MSVC++. + // http://www.greenend.org.uk/rjk/2003/03/inline.html + #define NOINLINE + //#define INLINE + /*#ifndef _WIN64 // Cannot use inline assembly in x64 target platform. + #define USE_WIN32_ASM + #endif//_WIN64*/ + #define INLINE __inline +#else + #define INLINE inline +#endif +#endif +//#else +//#define INLINE +//#endif //NOINLINE + +#ifdef __cplusplus +extern "C" { +#endif + +#define IL_MAX(a,b) (((a) > (b)) ? (a) : (b)) +#define IL_MIN(a,b) (((a) < (b)) ? (a) : (b)) + + +//! Basic Palette struct +typedef struct ILpal +{ + ILubyte* Palette; //!< the image palette (if any) + ILuint PalSize; //!< size of the palette (in bytes) + ILenum PalType; //!< the palette types in il.h (0x0500 range) +} ILpal; + + +//! The Fundamental Image structure +/*! Every bit of information about an image is stored in this internal structure.*/ +typedef struct ILimage +{ + ILuint Width; //!< the image's width + ILuint Height; //!< the image's height + ILuint Depth; //!< the image's depth + ILubyte Bpp; //!< bytes per pixel (now number of channels) + ILubyte Bpc; //!< bytes per channel + ILuint Bps; //!< bytes per scanline (components for IL) + ILubyte* Data; //!< the image data + ILuint SizeOfData; //!< the total size of the data (in bytes) + ILuint SizeOfPlane; //!< SizeOfData in a 2d image, size of each plane slice in a 3d image (in bytes) + ILenum Format; //!< image format (in IL enum style) + ILenum Type; //!< image type (in IL enum style) + ILenum Origin; //!< origin of the image + ILpal Pal; //!< palette details + ILuint Duration; //!< length of the time to display this "frame" + ILenum CubeFlags; //!< cube map flags for sides present in chain + struct ILimage* Mipmaps; //!< mipmapped versions of this image terminated by a NULL - usu. NULL + struct ILimage* Next; //!< next image in the chain - usu. NULL + struct ILimage* Faces; //!< next cubemap face in the chain - usu. NULL + struct ILimage* Layers; //!< subsequent layers in the chain - usu. NULL + ILuint* AnimList; //!< animation list + ILuint AnimSize; //!< animation list size + void* Profile; //!< colour profile + ILuint ProfileSize; //!< colour profile size + ILuint OffX; //!< x-offset of the image + ILuint OffY; //!< y-offset of the image + ILubyte* DxtcData; //!< compressed data + ILenum DxtcFormat; //!< compressed data format + ILuint DxtcSize; //!< compressed data size +} ILimage; + + +// Memory functions +ILAPI void* ILAPIENTRY ialloc(const ILsizei Size); +ILAPI void ILAPIENTRY ifree(const void *Ptr); +ILAPI void* ILAPIENTRY icalloc(const ILsizei Size, const ILsizei Num); +#ifdef ALTIVEC_GCC +ILAPI void* ILAPIENTRY ivec_align_buffer(void *buffer, const ILuint size); +#endif + +// Internal library functions in IL +ILAPI ILimage* ILAPIENTRY ilGetCurImage(void); +ILAPI void ILAPIENTRY ilSetCurImage(ILimage *Image); +ILAPI void ILAPIENTRY ilSetError(ILenum Error); +ILAPI void ILAPIENTRY ilSetPal(ILpal *Pal); + +// +// Utility functions +// +ILAPI ILubyte ILAPIENTRY ilGetBppFormat(ILenum Format); +ILAPI ILenum ILAPIENTRY ilGetFormatBpp(ILubyte Bpp); +ILAPI ILubyte ILAPIENTRY ilGetBpcType(ILenum Type); +ILAPI ILenum ILAPIENTRY ilGetTypeBpc(ILubyte Bpc); +ILAPI ILubyte ILAPIENTRY ilGetBppPal(ILenum PalType); +ILAPI ILenum ILAPIENTRY ilGetPalBaseType(ILenum PalType); +ILAPI ILuint ILAPIENTRY ilNextPower2(ILuint Num); +ILAPI ILenum ILAPIENTRY ilTypeFromExt(ILconst_string FileName); +ILAPI void ILAPIENTRY ilReplaceCurImage(ILimage *Image); +ILAPI void ILAPIENTRY iMemSwap(ILubyte *, ILubyte *, const ILuint); + +// +// Image functions +// +ILAPI void ILAPIENTRY iBindImageTemp (void); +ILAPI ILboolean ILAPIENTRY ilClearImage_ (ILimage *Image); +ILAPI void ILAPIENTRY ilCloseImage (ILimage *Image); +ILAPI void ILAPIENTRY ilClosePal (ILpal *Palette); +ILAPI ILpal* ILAPIENTRY iCopyPal (void); +ILAPI ILboolean ILAPIENTRY ilCopyImageAttr (ILimage *Dest, ILimage *Src); +ILAPI ILimage* ILAPIENTRY ilCopyImage_ (ILimage *Src); +ILAPI void ILAPIENTRY ilGetClear (void *Colours, ILenum Format, ILenum Type); +ILAPI ILuint ILAPIENTRY ilGetCurName (void); +ILAPI ILboolean ILAPIENTRY ilIsValidPal (ILpal *Palette); +ILAPI ILimage* ILAPIENTRY ilNewImage (ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp, ILubyte Bpc); +ILAPI ILimage* ILAPIENTRY ilNewImageFull (ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp, ILenum Format, ILenum Type, void *Data); +ILAPI ILboolean ILAPIENTRY ilInitImage (ILimage *Image, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp, ILenum Format, ILenum Type, void *Data); +ILAPI ILboolean ILAPIENTRY ilResizeImage (ILimage *Image, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp, ILubyte Bpc); +ILAPI ILboolean ILAPIENTRY ilTexImage_ (ILimage *Image, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp, ILenum Format, ILenum Type, void *Data); +ILAPI ILboolean ILAPIENTRY ilTexSubImage_ (ILimage *Image, void *Data); +ILAPI void* ILAPIENTRY ilConvertBuffer (ILuint SizeOfData, ILenum SrcFormat, ILenum DestFormat, ILenum SrcType, ILenum DestType, ILpal *SrcPal, void *Buffer); +ILAPI ILimage* ILAPIENTRY iConvertImage (ILimage *Image, ILenum DestFormat, ILenum DestType); +ILAPI ILpal* ILAPIENTRY iConvertPal (ILpal *Pal, ILenum DestFormat); +ILAPI ILubyte* ILAPIENTRY iGetFlipped (ILimage *Image); +ILAPI ILboolean ILAPIENTRY iMirror(); +ILAPI void ILAPIENTRY iFlipBuffer(ILubyte *buff, ILuint depth, ILuint line_size, ILuint line_num); +ILubyte* iFlipNewBuffer(ILubyte *buff, ILuint depth, ILuint line_size, ILuint line_num); +ILAPI void ILAPIENTRY iGetIntegervImage(ILimage *Image, ILenum Mode, ILint *Param); + +// Internal library functions in ILU +ILAPI ILimage* ILAPIENTRY iluRotate_(ILimage *Image, ILfloat Angle); +ILAPI ILimage* ILAPIENTRY iluRotate3D_(ILimage *Image, ILfloat x, ILfloat y, ILfloat z, ILfloat Angle); +ILAPI ILimage* ILAPIENTRY iluScale_(ILimage *Image, ILuint Width, ILuint Height, ILuint Depth); + +#ifdef __cplusplus +} +#endif + +#endif//IL_EXPORTS_H diff --git a/mcclone/external/devil178/include/IL/il.h b/mcclone/external/devil178/include/IL/il.h new file mode 100644 index 0000000..540a56e --- /dev/null +++ b/mcclone/external/devil178/include/IL/il.h @@ -0,0 +1,644 @@ +//----------------------------------------------------------------------------- +// +// ImageLib Sources +// Copyright (C) 2000-2009 by Denton Woods +// Last modified: 03/07/2009 +// +// Filename: IL/il.h +// +// Description: The main include file for DevIL +// +//----------------------------------------------------------------------------- + +// Doxygen comment +/*! \file il.h + The main include file for DevIL +*/ + +#ifndef __il_h_ +#ifndef __IL_H__ + +#define __il_h_ +#define __IL_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +//this define controls if floats and doubles are clampled to [0..1] +//during conversion. It takes a little more time, but it is the correct +//way of doing this. If you are sure your floats are always valid, +//you can undefine this value... +#define CLAMP_HALF 1 +#define CLAMP_FLOATS 1 +#define CLAMP_DOUBLES 1 + +/*#ifdef _WIN32_WCE + #define IL_NO_EXR + #define IL_NO_GIF + #define IL_NO_JP2 + #define IL_NO_JPG + #define IL_NO_MNG + #define IL_NO_PNG + #define IL_NO_TIF + #define IL_NO_LCMS +#endif //_WIN32_WCE + +#ifdef DJGPP + #define IL_NO_EXR + #define IL_NO_GIF + #define IL_NO_JP2 + #define IL_NO_JPG + #define IL_NO_MNG + #define IL_NO_PNG + #define IL_NO_TIF + #define IL_NO_LCMS +#endif //DJGPP*/ + +#ifdef _WIN32 + #if (defined(IL_USE_PRAGMA_LIBS)) && (!defined(_IL_BUILD_LIBRARY)) + #if defined(_MSC_VER) || defined(__BORLANDC__) + #pragma comment(lib, "DevIL.lib") + #endif + #endif +#endif + +#ifdef RESTRICT_KEYWORD +#define RESTRICT restrict +#define CONST_RESTRICT const restrict +#else +#define RESTRICT +#define CONST_RESTRICT const +#endif + +#include + +typedef unsigned int ILenum; +typedef unsigned char ILboolean; +typedef unsigned int ILbitfield; +typedef signed char ILbyte; +typedef signed short ILshort; +typedef int ILint; +typedef size_t ILsizei; +typedef unsigned char ILubyte; +typedef unsigned short ILushort; +typedef unsigned int ILuint; +typedef float ILfloat; +typedef float ILclampf; +typedef double ILdouble; +typedef double ILclampd; + +#ifdef _MSC_VER +typedef __int64 ILint64; +typedef unsigned __int64 ILuint64; +#else +typedef long long int ILint64; +typedef long long unsigned int ILuint64; +#endif + + +#include +#ifdef _UNICODE + #ifndef _WIN32_WCE + #include + #endif + //if we use a define instead of a typedef, + //ILconst_string works as intended + #define ILchar wchar_t + #define ILstring wchar_t* + #define ILconst_string wchar_t const * +#else + //if we use a define instead of a typedef, + //ILconst_string works as intended + #define ILchar char + #define ILstring char* + #define ILconst_string char const * +#endif //_UNICODE + +#define IL_FALSE 0 +#define IL_TRUE 1 + +// Matches OpenGL's right now. +//! Data formats \link Formats Formats\endlink +#define IL_COLOUR_INDEX 0x1900 +#define IL_COLOR_INDEX 0x1900 +#define IL_ALPHA 0x1906 +#define IL_RGB 0x1907 +#define IL_RGBA 0x1908 +#define IL_BGR 0x80E0 +#define IL_BGRA 0x80E1 +#define IL_LUMINANCE 0x1909 +#define IL_LUMINANCE_ALPHA 0x190A + +//! Data types \link Types Types\endlink +#define IL_BYTE 0x1400 +#define IL_UNSIGNED_BYTE 0x1401 +#define IL_SHORT 0x1402 +#define IL_UNSIGNED_SHORT 0x1403 +#define IL_INT 0x1404 +#define IL_UNSIGNED_INT 0x1405 +#define IL_FLOAT 0x1406 +#define IL_DOUBLE 0x140A +#define IL_HALF 0x140B + + +#define IL_MAX_BYTE SCHAR_MAX +#define IL_MAX_UNSIGNED_BYTE UCHAR_MAX +#define IL_MAX_SHORT SHRT_MAX +#define IL_MAX_UNSIGNED_SHORT USHRT_MAX +#define IL_MAX_INT INT_MAX +#define IL_MAX_UNSIGNED_INT UINT_MAX + +#define IL_LIMIT(x,m,M) (xM?M:x)) +#define IL_CLAMP(x) IL_LIMIT(x,0,1) + +#define IL_VENDOR 0x1F00 +#define IL_LOAD_EXT 0x1F01 +#define IL_SAVE_EXT 0x1F02 + + +// +// IL-specific #define's +// + +#define IL_VERSION_1_7_8 1 +#define IL_VERSION 178 + + +// Attribute Bits +#define IL_ORIGIN_BIT 0x00000001 +#define IL_FILE_BIT 0x00000002 +#define IL_PAL_BIT 0x00000004 +#define IL_FORMAT_BIT 0x00000008 +#define IL_TYPE_BIT 0x00000010 +#define IL_COMPRESS_BIT 0x00000020 +#define IL_LOADFAIL_BIT 0x00000040 +#define IL_FORMAT_SPECIFIC_BIT 0x00000080 +#define IL_ALL_ATTRIB_BITS 0x000FFFFF + + +// Palette types +#define IL_PAL_NONE 0x0400 +#define IL_PAL_RGB24 0x0401 +#define IL_PAL_RGB32 0x0402 +#define IL_PAL_RGBA32 0x0403 +#define IL_PAL_BGR24 0x0404 +#define IL_PAL_BGR32 0x0405 +#define IL_PAL_BGRA32 0x0406 + + +// Image types +#define IL_TYPE_UNKNOWN 0x0000 +#define IL_BMP 0x0420 //!< Microsoft Windows Bitmap - .bmp extension +#define IL_CUT 0x0421 //!< Dr. Halo - .cut extension +#define IL_DOOM 0x0422 //!< DooM walls - no specific extension +#define IL_DOOM_FLAT 0x0423 //!< DooM flats - no specific extension +#define IL_ICO 0x0424 //!< Microsoft Windows Icons and Cursors - .ico and .cur extensions +#define IL_JPG 0x0425 //!< JPEG - .jpg, .jpe and .jpeg extensions +#define IL_JFIF 0x0425 //!< +#define IL_ILBM 0x0426 //!< Amiga IFF (FORM ILBM) - .iff, .ilbm, .lbm extensions +#define IL_PCD 0x0427 //!< Kodak PhotoCD - .pcd extension +#define IL_PCX 0x0428 //!< ZSoft PCX - .pcx extension +#define IL_PIC 0x0429 //!< PIC - .pic extension +#define IL_PNG 0x042A //!< Portable Network Graphics - .png extension +#define IL_PNM 0x042B //!< Portable Any Map - .pbm, .pgm, .ppm and .pnm extensions +#define IL_SGI 0x042C //!< Silicon Graphics - .sgi, .bw, .rgb and .rgba extensions +#define IL_TGA 0x042D //!< TrueVision Targa File - .tga, .vda, .icb and .vst extensions +#define IL_TIF 0x042E //!< Tagged Image File Format - .tif and .tiff extensions +#define IL_CHEAD 0x042F //!< C-Style Header - .h extension +#define IL_RAW 0x0430 //!< Raw Image Data - any extension +#define IL_MDL 0x0431 //!< Half-Life Model Texture - .mdl extension +#define IL_WAL 0x0432 //!< Quake 2 Texture - .wal extension +#define IL_LIF 0x0434 //!< Homeworld Texture - .lif extension +#define IL_MNG 0x0435 //!< Multiple-image Network Graphics - .mng extension +#define IL_JNG 0x0435 //!< +#define IL_GIF 0x0436 //!< Graphics Interchange Format - .gif extension +#define IL_DDS 0x0437 //!< DirectDraw Surface - .dds extension +#define IL_DCX 0x0438 //!< ZSoft Multi-PCX - .dcx extension +#define IL_PSD 0x0439 //!< Adobe PhotoShop - .psd extension +#define IL_EXIF 0x043A //!< +#define IL_PSP 0x043B //!< PaintShop Pro - .psp extension +#define IL_PIX 0x043C //!< PIX - .pix extension +#define IL_PXR 0x043D //!< Pixar - .pxr extension +#define IL_XPM 0x043E //!< X Pixel Map - .xpm extension +#define IL_HDR 0x043F //!< Radiance High Dynamic Range - .hdr extension +#define IL_ICNS 0x0440 //!< Macintosh Icon - .icns extension +#define IL_JP2 0x0441 //!< Jpeg 2000 - .jp2 extension +#define IL_EXR 0x0442 //!< OpenEXR - .exr extension +#define IL_WDP 0x0443 //!< Microsoft HD Photo - .wdp and .hdp extension +#define IL_VTF 0x0444 //!< Valve Texture Format - .vtf extension +#define IL_WBMP 0x0445 //!< Wireless Bitmap - .wbmp extension +#define IL_SUN 0x0446 //!< Sun Raster - .sun, .ras, .rs, .im1, .im8, .im24 and .im32 extensions +#define IL_IFF 0x0447 //!< Interchange File Format - .iff extension +#define IL_TPL 0x0448 //!< Gamecube Texture - .tpl extension +#define IL_FITS 0x0449 //!< Flexible Image Transport System - .fit and .fits extensions +#define IL_DICOM 0x044A //!< Digital Imaging and Communications in Medicine (DICOM) - .dcm and .dicom extensions +#define IL_IWI 0x044B //!< Call of Duty Infinity Ward Image - .iwi extension +#define IL_BLP 0x044C //!< Blizzard Texture Format - .blp extension +#define IL_FTX 0x044D //!< Heavy Metal: FAKK2 Texture - .ftx extension +#define IL_ROT 0x044E //!< Homeworld 2 - Relic Texture - .rot extension +#define IL_TEXTURE 0x044F //!< Medieval II: Total War Texture - .texture extension +#define IL_DPX 0x0450 //!< Digital Picture Exchange - .dpx extension +#define IL_UTX 0x0451 //!< Unreal (and Unreal Tournament) Texture - .utx extension +#define IL_MP3 0x0452 //!< MPEG-1 Audio Layer 3 - .mp3 extension + + +#define IL_JASC_PAL 0x0475 //!< PaintShop Pro Palette + + +// Error Types +#define IL_NO_ERROR 0x0000 +#define IL_INVALID_ENUM 0x0501 +#define IL_OUT_OF_MEMORY 0x0502 +#define IL_FORMAT_NOT_SUPPORTED 0x0503 +#define IL_INTERNAL_ERROR 0x0504 +#define IL_INVALID_VALUE 0x0505 +#define IL_ILLEGAL_OPERATION 0x0506 +#define IL_ILLEGAL_FILE_VALUE 0x0507 +#define IL_INVALID_FILE_HEADER 0x0508 +#define IL_INVALID_PARAM 0x0509 +#define IL_COULD_NOT_OPEN_FILE 0x050A +#define IL_INVALID_EXTENSION 0x050B +#define IL_FILE_ALREADY_EXISTS 0x050C +#define IL_OUT_FORMAT_SAME 0x050D +#define IL_STACK_OVERFLOW 0x050E +#define IL_STACK_UNDERFLOW 0x050F +#define IL_INVALID_CONVERSION 0x0510 +#define IL_BAD_DIMENSIONS 0x0511 +#define IL_FILE_READ_ERROR 0x0512 // 05/12/2002: Addition by Sam. +#define IL_FILE_WRITE_ERROR 0x0512 + +#define IL_LIB_GIF_ERROR 0x05E1 +#define IL_LIB_JPEG_ERROR 0x05E2 +#define IL_LIB_PNG_ERROR 0x05E3 +#define IL_LIB_TIFF_ERROR 0x05E4 +#define IL_LIB_MNG_ERROR 0x05E5 +#define IL_LIB_JP2_ERROR 0x05E6 +#define IL_LIB_EXR_ERROR 0x05E7 +#define IL_UNKNOWN_ERROR 0x05FF + + +// Origin Definitions +#define IL_ORIGIN_SET 0x0600 +#define IL_ORIGIN_LOWER_LEFT 0x0601 +#define IL_ORIGIN_UPPER_LEFT 0x0602 +#define IL_ORIGIN_MODE 0x0603 + + +// Format and Type Mode Definitions +#define IL_FORMAT_SET 0x0610 +#define IL_FORMAT_MODE 0x0611 +#define IL_TYPE_SET 0x0612 +#define IL_TYPE_MODE 0x0613 + + +// File definitions +#define IL_FILE_OVERWRITE 0x0620 +#define IL_FILE_MODE 0x0621 + + +// Palette definitions +#define IL_CONV_PAL 0x0630 + + +// Load fail definitions +#define IL_DEFAULT_ON_FAIL 0x0632 + + +// Key colour and alpha definitions +#define IL_USE_KEY_COLOUR 0x0635 +#define IL_USE_KEY_COLOR 0x0635 +#define IL_BLIT_BLEND 0x0636 + + +// Interlace definitions +#define IL_SAVE_INTERLACED 0x0639 +#define IL_INTERLACE_MODE 0x063A + + +// Quantization definitions +#define IL_QUANTIZATION_MODE 0x0640 +#define IL_WU_QUANT 0x0641 +#define IL_NEU_QUANT 0x0642 +#define IL_NEU_QUANT_SAMPLE 0x0643 +#define IL_MAX_QUANT_INDEXS 0x0644 //XIX : ILint : Maximum number of colors to reduce to, default of 256. and has a range of 2-256 +#define IL_MAX_QUANT_INDICES 0x0644 // Redefined, since the above #define is misspelled + + +// Hints +#define IL_FASTEST 0x0660 +#define IL_LESS_MEM 0x0661 +#define IL_DONT_CARE 0x0662 +#define IL_MEM_SPEED_HINT 0x0665 +#define IL_USE_COMPRESSION 0x0666 +#define IL_NO_COMPRESSION 0x0667 +#define IL_COMPRESSION_HINT 0x0668 + + +// Compression +#define IL_NVIDIA_COMPRESS 0x0670 +#define IL_SQUISH_COMPRESS 0x0671 + + +// Subimage types +#define IL_SUB_NEXT 0x0680 +#define IL_SUB_MIPMAP 0x0681 +#define IL_SUB_LAYER 0x0682 + + +// Compression definitions +#define IL_COMPRESS_MODE 0x0700 +#define IL_COMPRESS_NONE 0x0701 +#define IL_COMPRESS_RLE 0x0702 +#define IL_COMPRESS_LZO 0x0703 +#define IL_COMPRESS_ZLIB 0x0704 + + +// File format-specific values +#define IL_TGA_CREATE_STAMP 0x0710 +#define IL_JPG_QUALITY 0x0711 +#define IL_PNG_INTERLACE 0x0712 +#define IL_TGA_RLE 0x0713 +#define IL_BMP_RLE 0x0714 +#define IL_SGI_RLE 0x0715 +#define IL_TGA_ID_STRING 0x0717 +#define IL_TGA_AUTHNAME_STRING 0x0718 +#define IL_TGA_AUTHCOMMENT_STRING 0x0719 +#define IL_PNG_AUTHNAME_STRING 0x071A +#define IL_PNG_TITLE_STRING 0x071B +#define IL_PNG_DESCRIPTION_STRING 0x071C +#define IL_TIF_DESCRIPTION_STRING 0x071D +#define IL_TIF_HOSTCOMPUTER_STRING 0x071E +#define IL_TIF_DOCUMENTNAME_STRING 0x071F +#define IL_TIF_AUTHNAME_STRING 0x0720 +#define IL_JPG_SAVE_FORMAT 0x0721 +#define IL_CHEAD_HEADER_STRING 0x0722 +#define IL_PCD_PICNUM 0x0723 +#define IL_PNG_ALPHA_INDEX 0x0724 //XIX : ILint : the color in the palette at this index value (0-255) is considered transparent, -1 for no trasparent color +#define IL_JPG_PROGRESSIVE 0x0725 +#define IL_VTF_COMP 0x0726 + + +// DXTC definitions +#define IL_DXTC_FORMAT 0x0705 +#define IL_DXT1 0x0706 +#define IL_DXT2 0x0707 +#define IL_DXT3 0x0708 +#define IL_DXT4 0x0709 +#define IL_DXT5 0x070A +#define IL_DXT_NO_COMP 0x070B +#define IL_KEEP_DXTC_DATA 0x070C +#define IL_DXTC_DATA_FORMAT 0x070D +#define IL_3DC 0x070E +#define IL_RXGB 0x070F +#define IL_ATI1N 0x0710 +#define IL_DXT1A 0x0711 // Normally the same as IL_DXT1, except for nVidia Texture Tools. + +// Environment map definitions +#define IL_CUBEMAP_POSITIVEX 0x00000400 +#define IL_CUBEMAP_NEGATIVEX 0x00000800 +#define IL_CUBEMAP_POSITIVEY 0x00001000 +#define IL_CUBEMAP_NEGATIVEY 0x00002000 +#define IL_CUBEMAP_POSITIVEZ 0x00004000 +#define IL_CUBEMAP_NEGATIVEZ 0x00008000 +#define IL_SPHEREMAP 0x00010000 + + +// Values +#define IL_VERSION_NUM 0x0DE2 +#define IL_IMAGE_WIDTH 0x0DE4 +#define IL_IMAGE_HEIGHT 0x0DE5 +#define IL_IMAGE_DEPTH 0x0DE6 +#define IL_IMAGE_SIZE_OF_DATA 0x0DE7 +#define IL_IMAGE_BPP 0x0DE8 +#define IL_IMAGE_BYTES_PER_PIXEL 0x0DE8 +#define IL_IMAGE_BPP 0x0DE8 +#define IL_IMAGE_BITS_PER_PIXEL 0x0DE9 +#define IL_IMAGE_FORMAT 0x0DEA +#define IL_IMAGE_TYPE 0x0DEB +#define IL_PALETTE_TYPE 0x0DEC +#define IL_PALETTE_SIZE 0x0DED +#define IL_PALETTE_BPP 0x0DEE +#define IL_PALETTE_NUM_COLS 0x0DEF +#define IL_PALETTE_BASE_TYPE 0x0DF0 +#define IL_NUM_FACES 0x0DE1 +#define IL_NUM_IMAGES 0x0DF1 +#define IL_NUM_MIPMAPS 0x0DF2 +#define IL_NUM_LAYERS 0x0DF3 +#define IL_ACTIVE_IMAGE 0x0DF4 +#define IL_ACTIVE_MIPMAP 0x0DF5 +#define IL_ACTIVE_LAYER 0x0DF6 +#define IL_ACTIVE_FACE 0x0E00 +#define IL_CUR_IMAGE 0x0DF7 +#define IL_IMAGE_DURATION 0x0DF8 +#define IL_IMAGE_PLANESIZE 0x0DF9 +#define IL_IMAGE_BPC 0x0DFA +#define IL_IMAGE_OFFX 0x0DFB +#define IL_IMAGE_OFFY 0x0DFC +#define IL_IMAGE_CUBEFLAGS 0x0DFD +#define IL_IMAGE_ORIGIN 0x0DFE +#define IL_IMAGE_CHANNELS 0x0DFF + +# if defined __GNUC__ && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0)) +// __attribute__((deprecated)) is supported by GCC 3.1 and later. +# define DEPRECATED(D) D __attribute__((deprecated)) +# elif defined _MSC_VER && _MSC_VER >= 1300 +// __declspec(deprecated) is supported by MSVC 7.0 and later. +# define DEPRECATED(D) __declspec(deprecated) D +# else +# define DEPRECATED (D) D +# endif + +// +// Section shamelessly modified from the glut header. +// + +// This is from Win32's +#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) || defined(__LCC__) + #define ILAPIENTRY __stdcall + #define IL_PACKSTRUCT +//#elif defined(linux) || defined(MACOSX) || defined(__CYGWIN__) //fix bug 840364 +#elif defined( __GNUC__ ) + // this should work for any of the above commented platforms + // plus any platform using GCC + #ifdef __MINGW32__ + #define ILAPIENTRY __stdcall + #else + #define ILAPIENTRY + #endif + #define IL_PACKSTRUCT __attribute__ ((packed)) +#else + #define ILAPIENTRY + #define IL_PACKSTRUCT +#endif + +// This is from Win32's and +#if defined(__LCC__) + #define ILAPI __stdcall +#elif defined(_WIN32) //changed 20031221 to fix bug 840421 + #ifdef IL_STATIC_LIB + #define ILAPI + #else + #ifdef _IL_BUILD_LIBRARY + #define ILAPI __declspec(dllexport) + #else + #define ILAPI __declspec(dllimport) + #endif + #endif +#elif __APPLE__ + #define ILAPI extern +#else + #define ILAPI +#endif + + +#define IL_SEEK_SET 0 +#define IL_SEEK_CUR 1 +#define IL_SEEK_END 2 +#define IL_EOF -1 + + +// Callback functions for file reading +typedef void* ILHANDLE; +typedef void (ILAPIENTRY *fCloseRProc)(ILHANDLE); +typedef ILboolean (ILAPIENTRY *fEofProc) (ILHANDLE); +typedef ILint (ILAPIENTRY *fGetcProc) (ILHANDLE); +typedef ILHANDLE (ILAPIENTRY *fOpenRProc) (ILconst_string); +typedef ILint (ILAPIENTRY *fReadProc) (void*, ILuint, ILuint, ILHANDLE); +typedef ILint (ILAPIENTRY *fSeekRProc) (ILHANDLE, ILint, ILint); +typedef ILint (ILAPIENTRY *fTellRProc) (ILHANDLE); + +// Callback functions for file writing +typedef void (ILAPIENTRY *fCloseWProc)(ILHANDLE); +typedef ILHANDLE (ILAPIENTRY *fOpenWProc) (ILconst_string); +typedef ILint (ILAPIENTRY *fPutcProc) (ILubyte, ILHANDLE); +typedef ILint (ILAPIENTRY *fSeekWProc) (ILHANDLE, ILint, ILint); +typedef ILint (ILAPIENTRY *fTellWProc) (ILHANDLE); +typedef ILint (ILAPIENTRY *fWriteProc) (const void*, ILuint, ILuint, ILHANDLE); + +// Callback functions for allocation and deallocation +typedef void* (ILAPIENTRY *mAlloc)(const ILsizei); +typedef void (ILAPIENTRY *mFree) (const void* CONST_RESTRICT); + +// Registered format procedures +typedef ILenum (ILAPIENTRY *IL_LOADPROC)(ILconst_string); +typedef ILenum (ILAPIENTRY *IL_SAVEPROC)(ILconst_string); + + +// ImageLib Functions +ILAPI ILboolean ILAPIENTRY ilActiveFace(ILuint Number); +ILAPI ILboolean ILAPIENTRY ilActiveImage(ILuint Number); +ILAPI ILboolean ILAPIENTRY ilActiveLayer(ILuint Number); +ILAPI ILboolean ILAPIENTRY ilActiveMipmap(ILuint Number); +ILAPI ILboolean ILAPIENTRY ilApplyPal(ILconst_string FileName); +ILAPI ILboolean ILAPIENTRY ilApplyProfile(ILstring InProfile, ILstring OutProfile); +ILAPI void ILAPIENTRY ilBindImage(ILuint Image); +ILAPI ILboolean ILAPIENTRY ilBlit(ILuint Source, ILint DestX, ILint DestY, ILint DestZ, ILuint SrcX, ILuint SrcY, ILuint SrcZ, ILuint Width, ILuint Height, ILuint Depth); +ILAPI ILboolean ILAPIENTRY ilClampNTSC(void); +ILAPI void ILAPIENTRY ilClearColour(ILclampf Red, ILclampf Green, ILclampf Blue, ILclampf Alpha); +ILAPI ILboolean ILAPIENTRY ilClearImage(void); +ILAPI ILuint ILAPIENTRY ilCloneCurImage(void); +ILAPI ILubyte* ILAPIENTRY ilCompressDXT(ILubyte *Data, ILuint Width, ILuint Height, ILuint Depth, ILenum DXTCFormat, ILuint *DXTCSize); +ILAPI ILboolean ILAPIENTRY ilCompressFunc(ILenum Mode); +ILAPI ILboolean ILAPIENTRY ilConvertImage(ILenum DestFormat, ILenum DestType); +ILAPI ILboolean ILAPIENTRY ilConvertPal(ILenum DestFormat); +ILAPI ILboolean ILAPIENTRY ilCopyImage(ILuint Src); +ILAPI ILuint ILAPIENTRY ilCopyPixels(ILuint XOff, ILuint YOff, ILuint ZOff, ILuint Width, ILuint Height, ILuint Depth, ILenum Format, ILenum Type, void *Data); +ILAPI ILuint ILAPIENTRY ilCreateSubImage(ILenum Type, ILuint Num); +ILAPI ILboolean ILAPIENTRY ilDefaultImage(void); +ILAPI void ILAPIENTRY ilDeleteImage(const ILuint Num); +ILAPI void ILAPIENTRY ilDeleteImages(ILsizei Num, const ILuint *Images); +ILAPI ILenum ILAPIENTRY ilDetermineType(ILconst_string FileName); +ILAPI ILenum ILAPIENTRY ilDetermineTypeF(ILHANDLE File); +ILAPI ILenum ILAPIENTRY ilDetermineTypeL(const void *Lump, ILuint Size); +ILAPI ILboolean ILAPIENTRY ilDisable(ILenum Mode); +ILAPI ILboolean ILAPIENTRY ilDxtcDataToImage(void); +ILAPI ILboolean ILAPIENTRY ilDxtcDataToSurface(void); +ILAPI ILboolean ILAPIENTRY ilEnable(ILenum Mode); +ILAPI void ILAPIENTRY ilFlipSurfaceDxtcData(void); +ILAPI ILboolean ILAPIENTRY ilFormatFunc(ILenum Mode); +ILAPI void ILAPIENTRY ilGenImages(ILsizei Num, ILuint *Images); +ILAPI ILuint ILAPIENTRY ilGenImage(void); +ILAPI ILubyte* ILAPIENTRY ilGetAlpha(ILenum Type); +ILAPI ILboolean ILAPIENTRY ilGetBoolean(ILenum Mode); +ILAPI void ILAPIENTRY ilGetBooleanv(ILenum Mode, ILboolean *Param); +ILAPI ILubyte* ILAPIENTRY ilGetData(void); +ILAPI ILuint ILAPIENTRY ilGetDXTCData(void *Buffer, ILuint BufferSize, ILenum DXTCFormat); +ILAPI ILenum ILAPIENTRY ilGetError(void); +ILAPI ILint ILAPIENTRY ilGetInteger(ILenum Mode); +ILAPI void ILAPIENTRY ilGetIntegerv(ILenum Mode, ILint *Param); +ILAPI ILuint ILAPIENTRY ilGetLumpPos(void); +ILAPI ILubyte* ILAPIENTRY ilGetPalette(void); +ILAPI ILconst_string ILAPIENTRY ilGetString(ILenum StringName); +ILAPI void ILAPIENTRY ilHint(ILenum Target, ILenum Mode); +ILAPI ILboolean ILAPIENTRY ilInvertSurfaceDxtcDataAlpha(void); +ILAPI void ILAPIENTRY ilInit(void); +ILAPI ILboolean ILAPIENTRY ilImageToDxtcData(ILenum Format); +ILAPI ILboolean ILAPIENTRY ilIsDisabled(ILenum Mode); +ILAPI ILboolean ILAPIENTRY ilIsEnabled(ILenum Mode); +ILAPI ILboolean ILAPIENTRY ilIsImage(ILuint Image); +ILAPI ILboolean ILAPIENTRY ilIsValid(ILenum Type, ILconst_string FileName); +ILAPI ILboolean ILAPIENTRY ilIsValidF(ILenum Type, ILHANDLE File); +ILAPI ILboolean ILAPIENTRY ilIsValidL(ILenum Type, void *Lump, ILuint Size); +ILAPI void ILAPIENTRY ilKeyColour(ILclampf Red, ILclampf Green, ILclampf Blue, ILclampf Alpha); +ILAPI ILboolean ILAPIENTRY ilLoad(ILenum Type, ILconst_string FileName); +ILAPI ILboolean ILAPIENTRY ilLoadF(ILenum Type, ILHANDLE File); +ILAPI ILboolean ILAPIENTRY ilLoadImage(ILconst_string FileName); +ILAPI ILboolean ILAPIENTRY ilLoadL(ILenum Type, const void *Lump, ILuint Size); +ILAPI ILboolean ILAPIENTRY ilLoadPal(ILconst_string FileName); +ILAPI void ILAPIENTRY ilModAlpha(ILdouble AlphaValue); +ILAPI ILboolean ILAPIENTRY ilOriginFunc(ILenum Mode); +ILAPI ILboolean ILAPIENTRY ilOverlayImage(ILuint Source, ILint XCoord, ILint YCoord, ILint ZCoord); +ILAPI void ILAPIENTRY ilPopAttrib(void); +ILAPI void ILAPIENTRY ilPushAttrib(ILuint Bits); +ILAPI void ILAPIENTRY ilRegisterFormat(ILenum Format); +ILAPI ILboolean ILAPIENTRY ilRegisterLoad(ILconst_string Ext, IL_LOADPROC Load); +ILAPI ILboolean ILAPIENTRY ilRegisterMipNum(ILuint Num); +ILAPI ILboolean ILAPIENTRY ilRegisterNumFaces(ILuint Num); +ILAPI ILboolean ILAPIENTRY ilRegisterNumImages(ILuint Num); +ILAPI void ILAPIENTRY ilRegisterOrigin(ILenum Origin); +ILAPI void ILAPIENTRY ilRegisterPal(void *Pal, ILuint Size, ILenum Type); +ILAPI ILboolean ILAPIENTRY ilRegisterSave(ILconst_string Ext, IL_SAVEPROC Save); +ILAPI void ILAPIENTRY ilRegisterType(ILenum Type); +ILAPI ILboolean ILAPIENTRY ilRemoveLoad(ILconst_string Ext); +ILAPI ILboolean ILAPIENTRY ilRemoveSave(ILconst_string Ext); +ILAPI void ILAPIENTRY ilResetMemory(void); // Deprecated +ILAPI void ILAPIENTRY ilResetRead(void); +ILAPI void ILAPIENTRY ilResetWrite(void); +ILAPI ILboolean ILAPIENTRY ilSave(ILenum Type, ILconst_string FileName); +ILAPI ILuint ILAPIENTRY ilSaveF(ILenum Type, ILHANDLE File); +ILAPI ILboolean ILAPIENTRY ilSaveImage(ILconst_string FileName); +ILAPI ILuint ILAPIENTRY ilSaveL(ILenum Type, void *Lump, ILuint Size); +ILAPI ILboolean ILAPIENTRY ilSavePal(ILconst_string FileName); +ILAPI ILboolean ILAPIENTRY ilSetAlpha(ILdouble AlphaValue); +ILAPI ILboolean ILAPIENTRY ilSetData(void *Data); +ILAPI ILboolean ILAPIENTRY ilSetDuration(ILuint Duration); +ILAPI void ILAPIENTRY ilSetInteger(ILenum Mode, ILint Param); +ILAPI void ILAPIENTRY ilSetMemory(mAlloc, mFree); +ILAPI void ILAPIENTRY ilSetPixels(ILint XOff, ILint YOff, ILint ZOff, ILuint Width, ILuint Height, ILuint Depth, ILenum Format, ILenum Type, void *Data); +ILAPI void ILAPIENTRY ilSetRead(fOpenRProc, fCloseRProc, fEofProc, fGetcProc, fReadProc, fSeekRProc, fTellRProc); +ILAPI void ILAPIENTRY ilSetString(ILenum Mode, const char *String); +ILAPI void ILAPIENTRY ilSetWrite(fOpenWProc, fCloseWProc, fPutcProc, fSeekWProc, fTellWProc, fWriteProc); +ILAPI void ILAPIENTRY ilShutDown(void); +ILAPI ILboolean ILAPIENTRY ilSurfaceToDxtcData(ILenum Format); +ILAPI ILboolean ILAPIENTRY ilTexImage(ILuint Width, ILuint Height, ILuint Depth, ILubyte NumChannels, ILenum Format, ILenum Type, void *Data); +ILAPI ILboolean ILAPIENTRY ilTexImageDxtc(ILint w, ILint h, ILint d, ILenum DxtFormat, const ILubyte* data); +ILAPI ILenum ILAPIENTRY ilTypeFromExt(ILconst_string FileName); +ILAPI ILboolean ILAPIENTRY ilTypeFunc(ILenum Mode); +ILAPI ILboolean ILAPIENTRY ilLoadData(ILconst_string FileName, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp); +ILAPI ILboolean ILAPIENTRY ilLoadDataF(ILHANDLE File, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp); +ILAPI ILboolean ILAPIENTRY ilLoadDataL(void *Lump, ILuint Size, ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp); +ILAPI ILboolean ILAPIENTRY ilSaveData(ILconst_string FileName); + +// For all those weirdos that spell "colour" without the 'u'. +#define ilClearColor ilClearColour +#define ilKeyColor ilKeyColour + +#define imemclear(x,y) memset(x,0,y); + +#ifdef __cplusplus +} +#endif + +#endif // __IL_H__ +#endif // __il_h__ diff --git a/mcclone/external/devil178/include/IL/il_wrap.h b/mcclone/external/devil178/include/IL/il_wrap.h new file mode 100644 index 0000000..5cf9b0e --- /dev/null +++ b/mcclone/external/devil178/include/IL/il_wrap.h @@ -0,0 +1,205 @@ +#ifndef WRAPPER_H +#define WRAPPER_H + +/*#include +#include */ +#include // Probably only have to #include this one + +#ifdef _MSC_VER + #ifndef _IL_WRAP_BUILD_LIB + #pragma comment(lib, "il_wrap.lib") + #endif +#endif + +class ilImage +{ +public: + ilImage(); + ilImage(char *); + ilImage(const ilImage &); + virtual ~ilImage(); + + ILboolean Load(char *); + ILboolean Load(char *, ILenum); + ILboolean Save(char *); + ILboolean Save(char *, ILenum); + + + // ImageLib functions + ILboolean ActiveImage(ILuint); + ILboolean ActiveLayer(ILuint); + ILboolean ActiveMipmap(ILuint); + ILboolean Clear(void); + ILvoid ClearColour(ILclampf, ILclampf, ILclampf, ILclampf); + ILboolean Convert(ILenum); + ILboolean Copy(ILuint); + ILboolean Default(void); + ILboolean Flip(void); + ILboolean SwapColours(void); + ILboolean Resize(ILuint, ILuint, ILuint); + ILboolean TexImage(ILuint, ILuint, ILuint, ILubyte, ILenum, ILenum, ILvoid*); + + + // Image handling + ILvoid Bind(void) const; + ILvoid Bind(ILuint); + ILvoid Close(void) { this->Delete(); } + ILvoid Delete(void); + ILvoid iGenBind(); + ILenum PaletteAlphaIndex(); + + // Image characteristics + ILuint Width(void); + ILuint Height(void); + ILuint Depth(void); + ILubyte Bpp(void); + ILubyte Bitpp(void); + ILenum PaletteType(void); + ILenum Format(void); + ILenum Type(void); + ILuint NumImages(void); + ILuint NumMipmaps(void); + ILuint GetId(void) const; + ILenum GetOrigin(void); + ILubyte *GetData(void); + ILubyte *GetPalette(void); + + + // Rendering + ILuint BindImage(void); + ILuint BindImage(ILenum); + + + // Operators + ilImage& operator = (ILuint); + ilImage& operator = (const ilImage &); + + +protected: + ILuint Id; + +private: + ILvoid iStartUp(); + + +}; + + +class ilFilters +{ +public: + static ILboolean Alienify(ilImage &); + static ILboolean BlurAvg(ilImage &, ILuint Iter); + static ILboolean BlurGaussian(ilImage &, ILuint Iter); + static ILboolean Contrast(ilImage &, ILfloat Contrast); + static ILboolean EdgeDetectE(ilImage &); + static ILboolean EdgeDetectP(ilImage &); + static ILboolean EdgeDetectS(ilImage &); + static ILboolean Emboss(ilImage &); + static ILboolean Gamma(ilImage &, ILfloat Gamma); + static ILboolean Negative(ilImage &); + static ILboolean Noisify(ilImage &, ILubyte Factor); + static ILboolean Pixelize(ilImage &, ILuint PixSize); + static ILboolean Saturate(ilImage &, ILfloat Saturation); + static ILboolean Saturate(ilImage &, ILfloat r, ILfloat g, ILfloat b, ILfloat Saturation); + static ILboolean ScaleColours(ilImage &, ILfloat r, ILfloat g, ILfloat b); + static ILboolean Sharpen(ilImage &, ILfloat Factor, ILuint Iter); +}; + + +#ifdef ILUT_USE_OPENGL +class ilOgl +{ +public: + static ILvoid Init(void); + static GLuint BindTex(ilImage &); + static ILboolean Upload(ilImage &, ILuint); + static GLuint Mipmap(ilImage &); + static ILboolean Screen(void); + static ILboolean Screenie(void); +}; +#endif//ILUT_USE_OPENGL + + +#ifdef ILUT_USE_ALLEGRO +class ilAlleg +{ +public: + static ILvoid Init(void); + static BITMAP *Convert(ilImage &); +}; +#endif//ILUT_USE_ALLEGRO + + +#ifdef ILUT_USE_WIN32 +class ilWin32 +{ +public: + static ILvoid Init(void); + static HBITMAP Convert(ilImage &); + static ILboolean GetClipboard(ilImage &); + static ILvoid GetInfo(ilImage &, BITMAPINFO *Info); + static ILubyte *GetPadData(ilImage &); + static HPALETTE GetPal(ilImage &); + static ILboolean GetResource(ilImage &, HINSTANCE hInst, ILint ID, char *ResourceType); + static ILboolean GetResource(ilImage &, HINSTANCE hInst, ILint ID, char *ResourceType, ILenum Type); + static ILboolean SetClipboard(ilImage &); +}; +#endif//ILUT_USE_WIN32 + + +class ilValidate +{ +public: + static ILboolean Valid(ILenum, char *); + static ILboolean Valid(ILenum, FILE *); + static ILboolean Valid(ILenum, ILvoid *, ILuint); + +protected: + +private: + +}; + + +class ilState +{ +public: + static ILboolean Disable(ILenum); + static ILboolean Enable(ILenum); + static ILvoid Get(ILenum, ILboolean &); + static ILvoid Get(ILenum, ILint &); + static ILboolean GetBool(ILenum); + static ILint GetInt(ILenum); + static const char *GetString(ILenum); + static ILboolean IsDisabled(ILenum); + static ILboolean IsEnabled(ILenum); + static ILboolean Origin(ILenum); + static ILvoid Pop(void); + static ILvoid Push(ILuint); + + +protected: + +private: + +}; + + +class ilError +{ +public: + static ILvoid Check(ILvoid (*Callback)(const char*)); + static ILvoid Check(ILvoid (*Callback)(ILenum)); + static ILenum Get(void); + static const char *String(void); + static const char *String(ILenum); + +protected: + +private: + +}; + + +#endif//WRAPPER_H diff --git a/mcclone/external/devil178/include/IL/ilu.h b/mcclone/external/devil178/include/IL/ilu.h new file mode 100644 index 0000000..49871d7 --- /dev/null +++ b/mcclone/external/devil178/include/IL/ilu.h @@ -0,0 +1,195 @@ +//----------------------------------------------------------------------------- +// +// ImageLib Utility Sources +// Copyright (C) 2000-2009 by Denton Woods +// Last modified: 03/07/2009 +// +// Filename: IL/ilu.h +// +// Description: The main include file for ILU +// +//----------------------------------------------------------------------------- + +// Doxygen comment +/*! \file ilu.h + The main include file for ILU +*/ + +#ifndef __ilu_h_ +#ifndef __ILU_H__ + +#define __ilu_h_ +#define __ILU_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +#ifdef _WIN32 + #if (defined(IL_USE_PRAGMA_LIBS)) && (!defined(_IL_BUILD_LIBRARY)) + #if defined(_MSC_VER) || defined(__BORLANDC__) + #pragma comment(lib, "ILU.lib") + #endif + #endif +#endif + + +#define ILU_VERSION_1_7_8 1 +#define ILU_VERSION 178 + + +#define ILU_FILTER 0x2600 +#define ILU_NEAREST 0x2601 +#define ILU_LINEAR 0x2602 +#define ILU_BILINEAR 0x2603 +#define ILU_SCALE_BOX 0x2604 +#define ILU_SCALE_TRIANGLE 0x2605 +#define ILU_SCALE_BELL 0x2606 +#define ILU_SCALE_BSPLINE 0x2607 +#define ILU_SCALE_LANCZOS3 0x2608 +#define ILU_SCALE_MITCHELL 0x2609 + + +// Error types +#define ILU_INVALID_ENUM 0x0501 +#define ILU_OUT_OF_MEMORY 0x0502 +#define ILU_INTERNAL_ERROR 0x0504 +#define ILU_INVALID_VALUE 0x0505 +#define ILU_ILLEGAL_OPERATION 0x0506 +#define ILU_INVALID_PARAM 0x0509 + + +// Values +#define ILU_PLACEMENT 0x0700 +#define ILU_LOWER_LEFT 0x0701 +#define ILU_LOWER_RIGHT 0x0702 +#define ILU_UPPER_LEFT 0x0703 +#define ILU_UPPER_RIGHT 0x0704 +#define ILU_CENTER 0x0705 +#define ILU_CONVOLUTION_MATRIX 0x0710 + +#define ILU_VERSION_NUM IL_VERSION_NUM +#define ILU_VENDOR IL_VENDOR + + +// Languages +#define ILU_ENGLISH 0x0800 +#define ILU_ARABIC 0x0801 +#define ILU_DUTCH 0x0802 +#define ILU_JAPANESE 0x0803 +#define ILU_SPANISH 0x0804 +#define ILU_GERMAN 0x0805 +#define ILU_FRENCH 0x0806 + + +// Filters +/* +#define ILU_FILTER_BLUR 0x0803 +#define ILU_FILTER_GAUSSIAN_3x3 0x0804 +#define ILU_FILTER_GAUSSIAN_5X5 0x0805 +#define ILU_FILTER_EMBOSS1 0x0807 +#define ILU_FILTER_EMBOSS2 0x0808 +#define ILU_FILTER_LAPLACIAN1 0x080A +#define ILU_FILTER_LAPLACIAN2 0x080B +#define ILU_FILTER_LAPLACIAN3 0x080C +#define ILU_FILTER_LAPLACIAN4 0x080D +#define ILU_FILTER_SHARPEN1 0x080E +#define ILU_FILTER_SHARPEN2 0x080F +#define ILU_FILTER_SHARPEN3 0x0810 +*/ + + +typedef struct ILinfo +{ + ILuint Id; // the image's id + ILubyte *Data; // the image's data + ILuint Width; // the image's width + ILuint Height; // the image's height + ILuint Depth; // the image's depth + ILubyte Bpp; // bytes per pixel (not bits) of the image + ILuint SizeOfData; // the total size of the data (in bytes) + ILenum Format; // image format (in IL enum style) + ILenum Type; // image type (in IL enum style) + ILenum Origin; // origin of the image + ILubyte *Palette; // the image's palette + ILenum PalType; // palette type + ILuint PalSize; // palette size + ILenum CubeFlags; // flags for what cube map sides are present + ILuint NumNext; // number of images following + ILuint NumMips; // number of mipmaps + ILuint NumLayers; // number of layers +} ILinfo; + + +typedef struct ILpointf { + ILfloat x; + ILfloat y; +} ILpointf; + +typedef struct ILpointi { + ILint x; + ILint y; +} ILpointi; + +ILAPI ILboolean ILAPIENTRY iluAlienify(void); +ILAPI ILboolean ILAPIENTRY iluBlurAvg(ILuint Iter); +ILAPI ILboolean ILAPIENTRY iluBlurGaussian(ILuint Iter); +ILAPI ILboolean ILAPIENTRY iluBuildMipmaps(void); +ILAPI ILuint ILAPIENTRY iluColoursUsed(void); +ILAPI ILboolean ILAPIENTRY iluCompareImage(ILuint Comp); +ILAPI ILboolean ILAPIENTRY iluContrast(ILfloat Contrast); +ILAPI ILboolean ILAPIENTRY iluCrop(ILuint XOff, ILuint YOff, ILuint ZOff, ILuint Width, ILuint Height, ILuint Depth); +ILAPI void ILAPIENTRY iluDeleteImage(ILuint Id); // Deprecated +ILAPI ILboolean ILAPIENTRY iluEdgeDetectE(void); +ILAPI ILboolean ILAPIENTRY iluEdgeDetectP(void); +ILAPI ILboolean ILAPIENTRY iluEdgeDetectS(void); +ILAPI ILboolean ILAPIENTRY iluEmboss(void); +ILAPI ILboolean ILAPIENTRY iluEnlargeCanvas(ILuint Width, ILuint Height, ILuint Depth); +ILAPI ILboolean ILAPIENTRY iluEnlargeImage(ILfloat XDim, ILfloat YDim, ILfloat ZDim); +ILAPI ILboolean ILAPIENTRY iluEqualize(void); +ILAPI ILconst_string ILAPIENTRY iluErrorString(ILenum Error); +ILAPI ILboolean ILAPIENTRY iluConvolution(ILint *matrix, ILint scale, ILint bias); +ILAPI ILboolean ILAPIENTRY iluFlipImage(void); +ILAPI ILboolean ILAPIENTRY iluGammaCorrect(ILfloat Gamma); +ILAPI ILuint ILAPIENTRY iluGenImage(void); // Deprecated +ILAPI void ILAPIENTRY iluGetImageInfo(ILinfo *Info); +ILAPI ILint ILAPIENTRY iluGetInteger(ILenum Mode); +ILAPI void ILAPIENTRY iluGetIntegerv(ILenum Mode, ILint *Param); +ILAPI ILstring ILAPIENTRY iluGetString(ILenum StringName); +ILAPI void ILAPIENTRY iluImageParameter(ILenum PName, ILenum Param); +ILAPI void ILAPIENTRY iluInit(void); +ILAPI ILboolean ILAPIENTRY iluInvertAlpha(void); +ILAPI ILuint ILAPIENTRY iluLoadImage(ILconst_string FileName); +ILAPI ILboolean ILAPIENTRY iluMirror(void); +ILAPI ILboolean ILAPIENTRY iluNegative(void); +ILAPI ILboolean ILAPIENTRY iluNoisify(ILclampf Tolerance); +ILAPI ILboolean ILAPIENTRY iluPixelize(ILuint PixSize); +ILAPI void ILAPIENTRY iluRegionfv(ILpointf *Points, ILuint n); +ILAPI void ILAPIENTRY iluRegioniv(ILpointi *Points, ILuint n); +ILAPI ILboolean ILAPIENTRY iluReplaceColour(ILubyte Red, ILubyte Green, ILubyte Blue, ILfloat Tolerance); +ILAPI ILboolean ILAPIENTRY iluRotate(ILfloat Angle); +ILAPI ILboolean ILAPIENTRY iluRotate3D(ILfloat x, ILfloat y, ILfloat z, ILfloat Angle); +ILAPI ILboolean ILAPIENTRY iluSaturate1f(ILfloat Saturation); +ILAPI ILboolean ILAPIENTRY iluSaturate4f(ILfloat r, ILfloat g, ILfloat b, ILfloat Saturation); +ILAPI ILboolean ILAPIENTRY iluScale(ILuint Width, ILuint Height, ILuint Depth); +ILAPI ILboolean ILAPIENTRY iluScaleAlpha(ILfloat scale); +ILAPI ILboolean ILAPIENTRY iluScaleColours(ILfloat r, ILfloat g, ILfloat b); +ILAPI ILboolean ILAPIENTRY iluSetLanguage(ILenum Language); +ILAPI ILboolean ILAPIENTRY iluSharpen(ILfloat Factor, ILuint Iter); +ILAPI ILboolean ILAPIENTRY iluSwapColours(void); +ILAPI ILboolean ILAPIENTRY iluWave(ILfloat Angle); + +#define iluColorsUsed iluColoursUsed +#define iluSwapColors iluSwapColours +#define iluReplaceColor iluReplaceColour +#define iluScaleColor iluScaleColour + +#ifdef __cplusplus +} +#endif + +#endif // __ILU_H__ +#endif // __ilu_h_ diff --git a/mcclone/external/devil178/include/IL/ilu_region.h b/mcclone/external/devil178/include/IL/ilu_region.h new file mode 100644 index 0000000..b5b3adc --- /dev/null +++ b/mcclone/external/devil178/include/IL/ilu_region.h @@ -0,0 +1,25 @@ +//----------------------------------------------------------------------------- +// +// ImageLib Utility Sources +// Copyright (C) 2000-2002 by Denton Woods +// Last modified: 07/09/2002 <--Y2K Compliant! =] +// +// Filename: src-ILU/src/ilu_region.h +// +// Description: Creates an image region. +// +//----------------------------------------------------------------------------- + +#ifndef ILU_REGION_H +#define ILU_REGION_H + +typedef struct Edge +{ + ILint yUpper; + ILfloat xIntersect, dxPerScan; + struct Edge *next; +} Edge; + + +#endif//ILU_REGION_H + diff --git a/mcclone/external/devil178/include/IL/ilut.h b/mcclone/external/devil178/include/IL/ilut.h new file mode 100644 index 0000000..4a84b84 --- /dev/null +++ b/mcclone/external/devil178/include/IL/ilut.h @@ -0,0 +1,390 @@ +//----------------------------------------------------------------------------- +// +// ImageLib Utility Toolkit Sources +// Copyright (C) 2000-2009 by Denton Woods +// Last modified: 03/07/2009 +// +// Filename: IL/ilut.h +// +// Description: The main include file for ILUT +// +//----------------------------------------------------------------------------- + +// Doxygen comment +/*! \file ilut.h + The main include file for ILUT +*/ + +#ifndef __ilut_h_ +#ifndef __ILUT_H__ + +#define __ilut_h_ +#define __ILUT_H__ + +#include +#include + + +//----------------------------------------------------------------------------- +// Defines +//----------------------------------------------------------------------------- + +#define ILUT_VERSION_1_7_8 1 +#define ILUT_VERSION 178 + + +// Attribute Bits +#define ILUT_OPENGL_BIT 0x00000001 +#define ILUT_D3D_BIT 0x00000002 +#define ILUT_ALL_ATTRIB_BITS 0x000FFFFF + + +// Error Types +#define ILUT_INVALID_ENUM 0x0501 +#define ILUT_OUT_OF_MEMORY 0x0502 +#define ILUT_INVALID_VALUE 0x0505 +#define ILUT_ILLEGAL_OPERATION 0x0506 +#define ILUT_INVALID_PARAM 0x0509 +#define ILUT_COULD_NOT_OPEN_FILE 0x050A +#define ILUT_STACK_OVERFLOW 0x050E +#define ILUT_STACK_UNDERFLOW 0x050F +#define ILUT_BAD_DIMENSIONS 0x0511 +#define ILUT_NOT_SUPPORTED 0x0550 + + +// State Definitions +#define ILUT_PALETTE_MODE 0x0600 +#define ILUT_OPENGL_CONV 0x0610 +#define ILUT_D3D_MIPLEVELS 0x0620 +#define ILUT_MAXTEX_WIDTH 0x0630 +#define ILUT_MAXTEX_HEIGHT 0x0631 +#define ILUT_MAXTEX_DEPTH 0x0632 +#define ILUT_GL_USE_S3TC 0x0634 +#define ILUT_D3D_USE_DXTC 0x0634 +#define ILUT_GL_GEN_S3TC 0x0635 +#define ILUT_D3D_GEN_DXTC 0x0635 +#define ILUT_S3TC_FORMAT 0x0705 +#define ILUT_DXTC_FORMAT 0x0705 +#define ILUT_D3D_POOL 0x0706 +#define ILUT_D3D_ALPHA_KEY_COLOR 0x0707 +#define ILUT_D3D_ALPHA_KEY_COLOUR 0x0707 +#define ILUT_FORCE_INTEGER_FORMAT 0x0636 + +//This new state does automatic texture target detection +//if enabled. Currently, only cubemap detection is supported. +//if the current image is no cubemap, the 2d texture is chosen. +#define ILUT_GL_AUTODETECT_TEXTURE_TARGET 0x0807 + + +// Values +#define ILUT_VERSION_NUM IL_VERSION_NUM +#define ILUT_VENDOR IL_VENDOR + +// The different rendering api's...more to be added later? +#define ILUT_OPENGL 0 +#define ILUT_ALLEGRO 1 +#define ILUT_WIN32 2 +#define ILUT_DIRECT3D8 3 +#define ILUT_DIRECT3D9 4 +#define ILUT_X11 5 +#define ILUT_DIRECT3D10 6 + +/* +// Includes specific config +#ifdef DJGPP + #define ILUT_USE_ALLEGRO +#elif _WIN32_WCE + #define ILUT_USE_WIN32 +#elif _WIN32 + //#ifdef __GNUC__ //__CYGWIN32__ (Cygwin seems to not define this with DevIL builds) + #define ILUT_USE_WIN32 + #include "IL/config.h" + + // Temporary fix for the SDL main() linker bug. + //#ifdef ILUT_USE_SDL + //#undef ILUT_USE_SDL + //#endif//ILUT_USE_SDL + + //#else + // #define ILUT_USE_WIN32 + // #define ILUT_USE_OPENGL + // #define ILUT_USE_SDL + // #define ILUT_USE_DIRECTX8 + //#endif +#elif BEOS // Don't know the #define + #define ILUT_USE_BEOS + #define ILUT_USE_OPENGL +#elif MACOSX + #define ILUT_USE_OPENGL +#else + + // We are surely using a *nix so the configure script + // may have written the configured config.h header + #include "IL/config.h" +#endif +*/ + +#if (defined(_WIN32) || defined(_WIN64)) + #if (defined(IL_USE_PRAGMA_LIBS)) && (!defined(_IL_BUILD_LIBRARY)) + #if defined(_MSC_VER) || defined(__BORLANDC__) + #pragma comment(lib, "ILUT.lib") + #endif + #endif + + #include +#endif + + + +//this should remain private and hidden +//#include "IL/config.h" + +////////////// +// OpenGL +////////////// + +#ifdef ILUT_USE_OPENGL + #if defined(_MSC_VER) || defined(_WIN32) + //#define WIN32_LEAN_AND_MEAN + #include + #endif//_MSC_VER + + #ifdef __APPLE__ + #include + #include + #else + #include + #include + #endif//__APPLE__ +#endif + + +#ifdef ILUT_USE_WIN32 + //#define WIN32_LEAN_AND_MEAN + #ifdef _DEBUG + #define _CRTDBG_MAP_ALLOC + #include + #ifndef _WIN32_WCE + #include + #endif + #endif + #include +#endif + + +// +// If we can avoid including these in all cases thing tend to break less +// and we can keep all of them defined as available +// +// Kriss +// + +// ImageLib Utility Toolkit's Allegro Functions +#ifdef ILUT_USE_ALLEGRO +// #include +#endif//ILUT_USE_ALLEGRO + +#ifdef ILUT_USE_SDL +// #include +#endif + +#ifdef ILUT_USE_DIRECTX8 + #include +#endif//ILUT_USE_DIRECTX9 + +#ifdef ILUT_USE_DIRECTX9 + #include +#endif//ILUT_USE_DIRECTX9 + +#ifdef ILUT_USE_DIRECTX10 + #pragma warning(push) + #pragma warning(disable : 4201) // Disables 'nonstandard extension used : nameless struct/union' warning + #include + #include + #include + #pragma warning(pop) +#endif//ILUT_USE_DIRECTX10 + +#ifdef ILUT_USE_X11 + #include + #include +#ifdef ILUT_USE_XSHM + #include + #include + #include +#endif//ILUT_USE_XSHM +#endif//ILUT_USE_X11 + + + +//----------------------------------------------------------------------------- +// Functions +//----------------------------------------------------------------------------- + +#ifdef __cplusplus +extern "C" { +#endif + +// ImageLib Utility Toolkit Functions +ILAPI ILboolean ILAPIENTRY ilutDisable(ILenum Mode); +ILAPI ILboolean ILAPIENTRY ilutEnable(ILenum Mode); +ILAPI ILboolean ILAPIENTRY ilutGetBoolean(ILenum Mode); +ILAPI void ILAPIENTRY ilutGetBooleanv(ILenum Mode, ILboolean *Param); +ILAPI ILint ILAPIENTRY ilutGetInteger(ILenum Mode); +ILAPI void ILAPIENTRY ilutGetIntegerv(ILenum Mode, ILint *Param); +ILAPI ILstring ILAPIENTRY ilutGetString(ILenum StringName); +ILAPI void ILAPIENTRY ilutInit(void); +ILAPI ILboolean ILAPIENTRY ilutIsDisabled(ILenum Mode); +ILAPI ILboolean ILAPIENTRY ilutIsEnabled(ILenum Mode); +ILAPI void ILAPIENTRY ilutPopAttrib(void); +ILAPI void ILAPIENTRY ilutPushAttrib(ILuint Bits); +ILAPI void ILAPIENTRY ilutSetInteger(ILenum Mode, ILint Param); + +ILAPI ILboolean ILAPIENTRY ilutRenderer(ILenum Renderer); + + +// ImageLib Utility Toolkit's OpenGL Functions +#ifdef ILUT_USE_OPENGL + ILAPI GLuint ILAPIENTRY ilutGLBindTexImage(); + ILAPI GLuint ILAPIENTRY ilutGLBindMipmaps(void); + ILAPI ILboolean ILAPIENTRY ilutGLBuildMipmaps(void); + ILAPI GLuint ILAPIENTRY ilutGLLoadImage(ILstring FileName); + ILAPI ILboolean ILAPIENTRY ilutGLScreen(void); + ILAPI ILboolean ILAPIENTRY ilutGLScreenie(void); + ILAPI ILboolean ILAPIENTRY ilutGLSaveImage(ILstring FileName, GLuint TexID); + ILAPI ILboolean ILAPIENTRY ilutGLSubTex2D(GLuint TexID, ILuint XOff, ILuint YOff); + ILAPI ILboolean ILAPIENTRY ilutGLSubTex3D(GLuint TexID, ILuint XOff, ILuint YOff, ILuint ZOff); + ILAPI ILboolean ILAPIENTRY ilutGLSetTex2D(GLuint TexID); + ILAPI ILboolean ILAPIENTRY ilutGLSetTex3D(GLuint TexID); + ILAPI ILboolean ILAPIENTRY ilutGLTexImage(GLuint Level); + ILAPI ILboolean ILAPIENTRY ilutGLSubTex(GLuint TexID, ILuint XOff, ILuint YOff); + + ILAPI ILboolean ILAPIENTRY ilutGLSetTex(GLuint TexID); // Deprecated - use ilutGLSetTex2D. + ILAPI ILboolean ILAPIENTRY ilutGLSubTex(GLuint TexID, ILuint XOff, ILuint YOff); // Use ilutGLSubTex2D. +#endif//ILUT_USE_OPENGL + + +// ImageLib Utility Toolkit's Allegro Functions +#ifdef ILUT_USE_ALLEGRO + #ifdef __cplusplus + extern "C" { + #endif + #include + #ifdef __cplusplus + } + #endif + + ILAPI BITMAP* ILAPIENTRY ilutAllegLoadImage(ILstring FileName); + ILAPI BITMAP* ILAPIENTRY ilutConvertToAlleg(PALETTE Pal); +#endif//ILUT_USE_ALLEGRO + + +// ImageLib Utility Toolkit's SDL Functions +#ifdef ILUT_USE_SDL + ILAPI struct SDL_Surface* ILAPIENTRY ilutConvertToSDLSurface(unsigned int flags); + ILAPI struct SDL_Surface* ILAPIENTRY ilutSDLSurfaceLoadImage(ILstring FileName); + ILAPI ILboolean ILAPIENTRY ilutSDLSurfaceFromBitmap(struct SDL_Surface *Bitmap); +#endif//ILUT_USE_SDL + + +// ImageLib Utility Toolkit's BeOS Functions +#ifdef ILUT_USE_BEOS + ILAPI BBitmap ILAPIENTRY ilutConvertToBBitmap(void); +#endif//ILUT_USE_BEOS + + +// ImageLib Utility Toolkit's Win32 GDI Functions +#ifdef ILUT_USE_WIN32 + ILAPI HBITMAP ILAPIENTRY ilutConvertToHBitmap(HDC hDC); + ILAPI HBITMAP ILAPIENTRY ilutConvertSliceToHBitmap(HDC hDC, ILuint slice); + ILAPI void ILAPIENTRY ilutFreePaddedData(ILubyte *Data); + ILAPI void ILAPIENTRY ilutGetBmpInfo(BITMAPINFO *Info); + ILAPI HPALETTE ILAPIENTRY ilutGetHPal(void); + ILAPI ILubyte* ILAPIENTRY ilutGetPaddedData(void); + ILAPI ILboolean ILAPIENTRY ilutGetWinClipboard(void); + ILAPI ILboolean ILAPIENTRY ilutLoadResource(HINSTANCE hInst, ILint ID, ILstring ResourceType, ILenum Type); + ILAPI ILboolean ILAPIENTRY ilutSetHBitmap(HBITMAP Bitmap); + ILAPI ILboolean ILAPIENTRY ilutSetHPal(HPALETTE Pal); + ILAPI ILboolean ILAPIENTRY ilutSetWinClipboard(void); + ILAPI HBITMAP ILAPIENTRY ilutWinLoadImage(ILstring FileName, HDC hDC); + ILAPI ILboolean ILAPIENTRY ilutWinLoadUrl(ILstring Url); + ILAPI ILboolean ILAPIENTRY ilutWinPrint(ILuint XPos, ILuint YPos, ILuint Width, ILuint Height, HDC hDC); + ILAPI ILboolean ILAPIENTRY ilutWinSaveImage(ILstring FileName, HBITMAP Bitmap); +#endif//ILUT_USE_WIN32 + +// ImageLib Utility Toolkit's DirectX 8 Functions +#ifdef ILUT_USE_DIRECTX8 +// ILAPI void ILAPIENTRY ilutD3D8MipFunc(ILuint NumLevels); + ILAPI struct IDirect3DTexture8* ILAPIENTRY ilutD3D8Texture(struct IDirect3DDevice8 *Device); + ILAPI struct IDirect3DVolumeTexture8* ILAPIENTRY ilutD3D8VolumeTexture(struct IDirect3DDevice8 *Device); + ILAPI ILboolean ILAPIENTRY ilutD3D8TexFromFile(struct IDirect3DDevice8 *Device, char *FileName, struct IDirect3DTexture8 **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D8VolTexFromFile(struct IDirect3DDevice8 *Device, char *FileName, struct IDirect3DVolumeTexture8 **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D8TexFromFileInMemory(struct IDirect3DDevice8 *Device, void *Lump, ILuint Size, struct IDirect3DTexture8 **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D8VolTexFromFileInMemory(struct IDirect3DDevice8 *Device, void *Lump, ILuint Size, struct IDirect3DVolumeTexture8 **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D8TexFromFileHandle(struct IDirect3DDevice8 *Device, ILHANDLE File, struct IDirect3DTexture8 **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D8VolTexFromFileHandle(struct IDirect3DDevice8 *Device, ILHANDLE File, struct IDirect3DVolumeTexture8 **Texture); + // These two are not tested yet. + ILAPI ILboolean ILAPIENTRY ilutD3D8TexFromResource(struct IDirect3DDevice8 *Device, HMODULE SrcModule, char *SrcResource, struct IDirect3DTexture8 **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D8VolTexFromResource(struct IDirect3DDevice8 *Device, HMODULE SrcModule, char *SrcResource, struct IDirect3DVolumeTexture8 **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D8LoadSurface(struct IDirect3DDevice8 *Device, struct IDirect3DSurface8 *Surface); +#endif//ILUT_USE_DIRECTX8 + +#ifdef ILUT_USE_DIRECTX9 + #pragma warning(push) + #pragma warning(disable : 4115) // Disables 'named type definition in parentheses' warning +// ILAPI void ILAPIENTRY ilutD3D9MipFunc(ILuint NumLevels); + ILAPI struct IDirect3DTexture9* ILAPIENTRY ilutD3D9Texture (struct IDirect3DDevice9* Device); + ILAPI struct IDirect3DVolumeTexture9* ILAPIENTRY ilutD3D9VolumeTexture (struct IDirect3DDevice9* Device); + ILAPI struct IDirect3DCubeTexture9* ILAPIENTRY ilutD3D9CubeTexture (struct IDirect3DDevice9* Device); + + ILAPI ILboolean ILAPIENTRY ilutD3D9CubeTexFromFile(struct IDirect3DDevice9 *Device, ILconst_string FileName, struct IDirect3DCubeTexture9 **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D9CubeTexFromFileInMemory(struct IDirect3DDevice9 *Device, void *Lump, ILuint Size, struct IDirect3DCubeTexture9 **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D9CubeTexFromFileHandle(struct IDirect3DDevice9 *Device, ILHANDLE File, struct IDirect3DCubeTexture9 **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D9CubeTexFromResource(struct IDirect3DDevice9 *Device, HMODULE SrcModule, ILconst_string SrcResource, struct IDirect3DCubeTexture9 **Texture); + + ILAPI ILboolean ILAPIENTRY ilutD3D9TexFromFile(struct IDirect3DDevice9 *Device, ILconst_string FileName, struct IDirect3DTexture9 **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D9VolTexFromFile(struct IDirect3DDevice9 *Device, ILconst_string FileName, struct IDirect3DVolumeTexture9 **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D9TexFromFileInMemory(struct IDirect3DDevice9 *Device, void *Lump, ILuint Size, struct IDirect3DTexture9 **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D9VolTexFromFileInMemory(struct IDirect3DDevice9 *Device, void *Lump, ILuint Size, struct IDirect3DVolumeTexture9 **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D9TexFromFileHandle(struct IDirect3DDevice9 *Device, ILHANDLE File, struct IDirect3DTexture9 **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D9VolTexFromFileHandle(struct IDirect3DDevice9 *Device, ILHANDLE File, struct IDirect3DVolumeTexture9 **Texture); + + // These three are not tested yet. + ILAPI ILboolean ILAPIENTRY ilutD3D9TexFromResource(struct IDirect3DDevice9 *Device, HMODULE SrcModule, ILconst_string SrcResource, struct IDirect3DTexture9 **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D9VolTexFromResource(struct IDirect3DDevice9 *Device, HMODULE SrcModule, ILconst_string SrcResource, struct IDirect3DVolumeTexture9 **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D9LoadSurface(struct IDirect3DDevice9 *Device, struct IDirect3DSurface9 *Surface); + #pragma warning(pop) +#endif//ILUT_USE_DIRECTX9 + +#ifdef ILUT_USE_DIRECTX10 + ILAPI ID3D10Texture2D* ILAPIENTRY ilutD3D10Texture(ID3D10Device *Device); + ILAPI ILboolean ILAPIENTRY ilutD3D10TexFromFile(ID3D10Device *Device, ILconst_string FileName, ID3D10Texture2D **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D10TexFromFileInMemory(ID3D10Device *Device, void *Lump, ILuint Size, ID3D10Texture2D **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D10TexFromResource(ID3D10Device *Device, HMODULE SrcModule, ILconst_string SrcResource, ID3D10Texture2D **Texture); + ILAPI ILboolean ILAPIENTRY ilutD3D10TexFromFileHandle(ID3D10Device *Device, ILHANDLE File, ID3D10Texture2D **Texture); +#endif//ILUT_USE_DIRECTX10 + + + +#ifdef ILUT_USE_X11 + ILAPI XImage * ILAPIENTRY ilutXCreateImage( Display* ); + ILAPI Pixmap ILAPIENTRY ilutXCreatePixmap( Display*,Drawable ); + ILAPI XImage * ILAPIENTRY ilutXLoadImage( Display*,char* ); + ILAPI Pixmap ILAPIENTRY ilutXLoadPixmap( Display*,Drawable,char* ); +#ifdef ILUT_USE_XSHM + ILAPI XImage * ILAPIENTRY ilutXShmCreateImage( Display*,XShmSegmentInfo* ); + ILAPI void ILAPIENTRY ilutXShmDestroyImage( Display*,XImage*,XShmSegmentInfo* ); + ILAPI Pixmap ILAPIENTRY ilutXShmCreatePixmap( Display*,Drawable,XShmSegmentInfo* ); + ILAPI void ILAPIENTRY ilutXShmFreePixmap( Display*,Pixmap,XShmSegmentInfo* ); + ILAPI XImage * ILAPIENTRY ilutXShmLoadImage( Display*,char*,XShmSegmentInfo* ); + ILAPI Pixmap ILAPIENTRY ilutXShmLoadPixmap( Display*,Drawable,char*,XShmSegmentInfo* ); +#endif//ILUT_USE_XSHM +#endif//ILUT_USE_X11 + + +#ifdef __cplusplus +} +#endif + +#endif // __ILUT_H__ +#endif // __ilut_h_ diff --git a/mcclone/external/devil178/include/IL/ilut_config.h b/mcclone/external/devil178/include/IL/ilut_config.h new file mode 100644 index 0000000..2b3625b --- /dev/null +++ b/mcclone/external/devil178/include/IL/ilut_config.h @@ -0,0 +1,26 @@ +#ifndef __ILUT_CONFIG_H__ +#define __ILUT_CONFIG_H__ + +#define IL_USE_PRAGMA_LIBS + +// Supported APIs (ILUT) + +// +// sorry just +// cant get this one to work under windows +// have disabled for the now +// +// will look at it some more later +// +// Kriss +// +#undef ILUT_USE_ALLEGRO + +#undef ILUT_USE_DIRECTX8 +//#define ILUT_USE_DIRECTX9 +//#define ILUT_USE_DIRECTX10 +#define ILUT_USE_OPENGL +//#define ILUT_USE_SDL +#define ILUT_USE_WIN32 + +#endif//__ILUT_CONFIG_H__ diff --git a/mcclone/external/devil178/lib/DevIL.dll b/mcclone/external/devil178/lib/DevIL.dll new file mode 100644 index 0000000000000000000000000000000000000000..b7a4c0906a33c7cd4a2f0c29d4863b5a048ed055 GIT binary patch literal 764416 zcmeZ`n!v!!z`(%5z`*eTKLf)K1_*F~P^1JvLws4+R+`;H`Rxu;mcA z?eYQ4-wUO8g6W{lCv15NQT52c#Ax2&Taz3?Y}a z89aCy7z8eAGq^A^fXx*U1e<_D%(<@((upF5jia+wo52H{1P-y#fCvMyl!5}pK_Cv? z6Ce%)LjwcDgV2BoLog2%79jt(aU(npmSA9TU|@KlS5#b-4B~^r3lv5mx{Dhm0>=&v z3E|BkiGGd z1fxmwvjo)!hTHFM|L6P3)LEk_#5je!r%_9-eeYm$o<#+A>|0*wp7>sk$hMg{=r6Pfj z-A*hEst-PJOAuhq%2rviHV&?kY%NugVLE53v8QInthfmIc1i+;b!rFhDZzl zm$NAOC1REYPHD@RWc34MUZ~(UKk8l(#e9k9m`F zQ;@eSDkXtW!sX}|&I$72-L)c}6IAqnSc}@-P?tW?{NRW2Hz@(jQUPh5fSMBuooX(9 z*XGCa_bl`1V_YSwX`@EIehO$K=7#?m6%T6@;|$G9DK?8?I2@VxB<&?*9_5p?ce`v94Rrsd*dc6gKX!D zX(1UQ(o6nJT{sZo7$Fy-xS%ss!213DN~f3!BCi#1hQx$8Z9TPguSSF&Pl$k&NWw?% zd$}DFy%BP;2HhO2M?5~fdbC;~(8I%{AkM_cy?R@Q%aPui4k`PZcWm>X@4cTgPoni3 zmkgVNipGl@I#oIvTbOP-_b|VIyxr``3-3(_x`R3Hol;X#3NiUzSj{J)((CsB&<*ZW zIi35sxBR|$SZIdx5e1)^{qG-~?J@MryLsl`!L$^Ol)wMK7xERHH|Y)geee|%^YvbD zgm@CEc||_($b7N1EVjP> zTI;AkYgNj!ij*fR8al6;ByLD1ouB{b;0@0ojMt@3l+Rr9;}7Fi%`K;MxqYwxVZ5xJ zvg9DgS{5GWl$1#<96UwUr?;?N=kUKNGD$mSiGYN_B<7S95eb1iq997gp!pT!y+*AJ z=XKWqYOAE!+52QT|NE zq-}a){wF{rV5aM0&Nj<-WQhyOh3&Wf8MF%vo$J%x}7v0^dEff$mAD(hgaO}kgQ9A z)|{aF=W=`b_Ql35NcQ@$CpfX_&y6Y_o#Sj7DW{e19yGYqcKmr|+{q>h2^oVM>yA7v zUtEw^W^%(tA*P_=`?NfZ8!S8=-2u&a&y*B6d{mj)xx>?f^?bselcpwBXjcP zQxu4YGL zqnnQe9AaTO!}#xbhkEmylF0?Zp<&%0yTf*?RcqY1#xuuH*rwa&Z1%lC4h07l9v2M{ z9-Vjhbi#YJ^_xK@%(ZjD$#=BAq6K7@Sn?G#IivowMC`l z&V!F1a?0nOH0gG$cakt+k!YT0Bw+lubn}_b5zIpK1snzYQ=lD1;$Q*dVJWq7RZZ_?1X9bH%Vg5H#ycXzku!IF$ z_^2@b>n%7nTI(*Bo6l zUfh;STOe}Hrum0J&Hes5+h0{CLA@~n;VN=A;&ByWCprxn5*ip{YbUL`8osWi@l6kd z)6*?_!W&m}t`1*6C%ik=gYoQTo3njV8a^BmItoPGSjg9S1%mbn?1U$ZseJgHC-wC}{m!w2s7 zW^Z0MJw?O0LaOHbyImHRHG9JUR@}R7S6NeYv&D4N98sHiK1NPP=78=WJ__tbpFG&z zr}GG$aAyyh5OeZGx4V0Uf`nsHOkzMoV~U9drvis#kxk;d35`!GYL>)^Fx!1DWR^~7 zm_A2GwY;tl+hH(0C-N`LBSy!!7xS;OU`Z;hV~TO!>ga+{?esgN04! zOKX3Y$nD==fAH6_?%ezSfteOgXJ0f0FlHRuP9=KXJ7P|A7iK?b{j zNtJllHv<;egS!_ntoF>@_xPNsUa!T(#O!n8L<=(u z%ZU>$J*=#3b$R_hZ0y<})V^7Ny0)7=q2lBA&nk>=9Wpi+{A-h&EDrMhbP;F%^r3*8 z%Y~z>{@QF_F_tclunvxd@Qwh+-`RKH_7*S|Fzshr`2S2Go8v#`OU!z?-?woe5)(Z5 zh>bsxQGkLcD(Es|&F|4B97dqGu{^B_JL!cv!vBRymslISe2Xpg##?l2U zhjR-~xY$dGEDY}MuG=2bQLABnSB;}C*`@pEpZf~CdaZmkdP7V^x_HD}PL{I%fA+3i zhw-&!!%s$GhS&V8wGMWORo_^}B+uzpM})uS5+nD&WkmuFzZlszaB3auVD$BLItWVmjX|IzTusu^|rzV}wJ_pbkOdbOv^za0-+kCqrO za{ps}xZz;4Kg$j4d37w$&#$eC-NGd$P%B`&QsL0dC0no5vAJJp_-|Ca*L4kheWlHR zL77$=7RJVfNrFZkN-W`@gRgTu5}5ktpJmw={>I%UTm{zm>gL=Ny_LuM@|5-o57yci z)^8={l~YuXckuVtPh$IVI704x_aW`MpE##%{}H3u>-3v1On@O@{ic!15{(VVv=28Y zuvh;3!CtG@>&z~q@;~xM`_@zuu8*;@y>34@e(&dhqNCF-ahRv6L&aNU1zV4inrh#h z{SV&mNKa$<{_^6lSqERrGoR`eDeGAE+SLE{C!Q+fLkC|RDpJ1|<7r%ERH(6U>i@GZ zTKhB`mqhp41n!uu;yLMC3Ge^!@4G)Se?R!I=~(eGJ)32cPP1lv>3d$f$2(!x1}6iX zu9Y7)zda_V#o)%H{l6p17)R#YsrEPsHIMdO|G zzcm3u<57Gw}1Bg?Ek+x<5RNxhX0AyleI$K$M^K* z|3CPEjr&-<@ku_`IPQbdw|*YlSs@^{%-r}LN5?k%3R$OLT+Ednk_UftL^AHXd3&`; z05j7iCawUcXnsas0p-mTuLrQ0v9s~AvZSOu$uwi-=Hhg7o0rDH#?QyA$(7^A!+tpa z_^*VoDxu+lKflQQSr_z2?F>(q_=`B}zxA@+%))vHSm({!!&Go8iN_RFWyey54{K>^;bn+>mzYJS))Aaz^$W{1?#+i}NEb5-2r`C!-~yT-wB!2yo= z?l_T{%2|*13rJ{$g$FRXZWr=g64;W+FgYvr$M@Q4QsOt3WjKEKP|?HlHc8XAXAM>~pC zRc9OYxRung9A|S${&Um4vvI2X%?cS6K8E5XK~HrahTX-F7Hjc#xbYM$yYXW0mqe#P z-orlDSv;O0Hv$Eur&So6@EvzENaKq%|B;6sn_H1G1Tbr zVc`fjzOrt=4o^_8n~a^G!1azc_79;tmpc6nT;^#-DD%#Cv$vekm=YfA-@IQ?Yj$^- z!vR*tCjy;eb{gG+v)%rxN^)lehu-7p_AIw~yokf$xPwk%zl8G_?{FucnqHp1v;Y6c zv6y%%@%D-Y_u7Or|Ki^k&cyuDFZ%oXzf9e)_}8Cgd1b}Ne7097TEZubxh~sv`&FeZ zrp{k77HP zzTfb@+^ucI?$GJIiaCX$jJ4i`hyU1tN17TAbJq&|Q#<&I_1mGW68p~173$M(FXj`B zl3pURKt#t~Pon+9A&on22`a1DIreVQdeFMwnWeYmNQsMsV$BPNz@RfGma|uLpAz`y z9p}~=%*eH>L1a?Ao5UWchiZw3qt_hbV3_}4b3)sP86GTE-g{PGkz7&AbMTpPZwZ?W zcY&c^Tv@-6RgI{x6f!F9}wW&M{2_WQj!I#>*TSRdwU(fM%b#kZPU z#{V<;`x4J`HNT4JX%elQ$6VL^|A2XhM$Y+9FPh|Uikw@*d%=n2Jb!Ds(7*B$l`a;; zt{B7rPprPx#{KS)F}xXd%tgT^ibd@vQ+nLJz19z=DRtRp{A234_U6;OnxKq-QYvnL z();#=TdrYB`FHN`pN^GxPrR;{I`{XF8q1I3-R0$+)iP0kvXXyXcz5UF-)^(;loGzE z%iV!j9bT5avSH@$m%YVXz58qH$+{~&25dUhjcff4ZYXwzBwdDJ=s;5Mu1kFU^&A4CcNrF0-Lv3Gw~se2S2ad6(A))gO7L4(G>3jtIi1qe|@$v|Exq{G%9&`{I( zov}s5K}vUyc0S)8l@APSR32y_Wqe=6rf}(BpXHsYw>2KSEK#}87sOO6Sns!wecA>F z*$oR?FO_nEr#B`x38SZN8ay z_Sn&wuHYL2Trm$!-d>7&T=IC`@p~G#Zb)b5SM?^`;g3H&Yfh}Tb&SbdgSZ=W!tDhZ z&s~?Yi~N-n9Te>xutoXpr85VQSM7;BvMfc{*ZOz-gYMWr6MpP5tC;+(>i7e`Bj%AU zzQ6N6?p8Q3{ffZFLz(A8%8U;%oMAa9aCt+?+4(G2`6Espv|sS(aO+Q%6QQ-y$NsS0 zZ;tR<<$uEa&{0PIfE$*XT4B>l)IYqOv*fridt%THM$I?-neKU5A1=|1i9Y)Jq$~#` zzedE3j9!f^uede{IAv^Gdqd=1Os~_F2P`5i79P%4aeG@LcUfOvEnFC-0bJdO7@G<{L=yx@oNWuqRB+BK*iQcjf#`W)3F%TTa-s zy4`Q}+~0ow&5N_GCwp3y-|@G|%0yZ1VQ{Uuwc?VJrA(c0`Tq{4IFnn}hmN(FoM)(c z%h4?-xXJpOL9N)bOEI(T>_m=-;0~|HJrOn5fKy6Fn+Ra#@x7r>LwD>{_$q5v!W`6N_Mh;DlxTqI@z& zEesoH9A?Yx4xQ7{qdcL6Yfhs36vx>IVlS@xdHc;5`3>g_-gEVQ;GYxV=))$k;f0=U zz!L7)?D8@kEaD*|taD->Xh-ugCpAA%OSfG(wO2#(yj;SUYwzx9bzci=ygbuF+hJO> zx8Ba0B`OUK35{$$OsS6^YEC#%IxRs+_{_nVw^qu%_-62OI>X@u(g&9-FrThZUv}W2 z?d6LzVn40BZo)oo2_MUeo~75cJ~X679Qea^o+aUO*p{<0pCms0=Xv<>{|P-|tG&m9 zZbi;Xi{jq%YQn@v7Oz=meXBeWb2RHf@DGLKFYF3hu5rDe@}4nIL;37&(Zr~y{P9PY z#NIXBQDeB^!J+lhnfE8JcZxP{(D*s|(2ReVB~wQTM&5&3ALj z8iU#%Lm$4PfKwB#XUV0@m>Ed&M|3US%XU_Q|Cz(b1CGxe8WZ$LcWeG9 zNxtb44vay%7p-EW1@!bdmM@sg)I7cBfWQX5yeEzRQu7z^_vlKS$Xnc~m)LNt#_q+% z2WgY6t9hc2@oRqYxg+&}ZB@9^wL?=|f)g$^ni^avJCx#IT*)`{PxFn_YSYiIw{h_~ z_<+Uuq>BXO|0_#>HXmfPKDEGF=v1xvru%C{ZZJ)--qkV1&gM?>21yH-%+`WmE1=fv%JC z`;Tq+2-T2;eW67bJq>cXBar7?kr{SV5BI^9e$Z_>V0Z4o4q!xsNmaXQ-L>SN5CnyM`LK zV-gKjj19#?`qc#&#Pb<#3*MG^^u67mq3F9ryUXdHmHWR^WxoI09Pf{@rr8FBT^L|HkQO$_Wpp zvbbVp6i??XEfBBgyQ9oz7sn*O1N&nX1RHo@5A=i zI{7($A`+b(&1{UX9e11f6pFIUxFr7Qz}hbXP6jvDHoS5AE-O+a(NgG9al2Q`q`&KE z-xjMQ=W_mj;h9t~6qa-MriP_nMV)%@KHp>43xen0WVf=mu36n;W?6Al-d?XJNu>AJ z)A-o#V{c@>7k=>A^Z(|%pkOwZ$A>c#-in9r3!ArmqFWhxUqeq69wZllnsqVngf^|gh$(^WLOH4j@Z?ah1lr}p6_#t7y7lSf%P zY87X49Aw%r_RUOu`^J@vcQhBD-O01?uZY0Y?RjO1cl<~ItzDY}X|9X6s`?-s@|3nS- z)d>bN2lx}&=dP+$Qn-;aQ)SDk_g47_Z#XnWu;gi&IB?uM{Qd8zZ8vKoI3`Ir@Z38z zCxRz$K_qvx!?9K&5rrAcF5lYl{l|oYrUswxKTT3>*)6DJNB^2`?y(GEBf!lKGmbn}MB-MOVz4rKM+(;vCQmkuSp9y-%+ zl{2f~U?)ihpCj~5C?Kx4-kfXx0Yta(NeJ!_HjY^nwyo1F~mEe=Jqg0qqssx|Z zVAjb$sS?a$;CGMl{}FZ8ovaKm8A^;Azi$t(xO=xmoQJ7I=znurqRyBc zzI#XM=7#5N+sf2$di$NyezMa-N$%by1&(crS}e~?7`1oG-DLpfDA7>8xAUBbPU$zLzy${}TSN?1;=Pdb~NA5l1 zEH?{V&k^VMG2_PR^lLfQ`p@nhIA!GbYSOvy_tbYB{wE@H@AZEp4$<`QCcZ2pET`_@ zNO}3LfK$3NVbgN~pA}R5l_Tagrq6tNoaKyIfW0Gs|5UN2}MMiSGRF%{&1H2zF<$CK$B0^!-t!4+hpV|p88vv@B}&+O1iSBe}zSGPip~Ihm#ize_Z0<9@5Sy!)iUrr+C~ zWgonjb?h+U%b2i;eM9F41%nt5lclV?7r16G4UvfQZ0--VI2QNN_L_~%>WCvOVb(T* z`cDc@q+hqrIdk;zsV4mk9Ni!1-FoTLedj;l*8f#J2VV%Jb+To}#dV)J_)?sIJCB;k zzb4-<_aCh%OO#YsX#Hk-{QttiU%bta7<*fo{?9r1gO~YWYVr3d2@|J1GS`*=Y>&OP zU*<&E!Jp#Y9~vLd{93Q0aPXf%^UH$9XAJLZ{{MTsc3-_^^UrU!tZ8|NgTr_6d1+rf zxc7^3lT)wP|MQohcVBq|61+>QBIa|Op5{%!}IO%=;Ogh!lk zpVQ5Ep}EG0qinve-LV55?kn0hbn+HP#*40b!gS|`ym5GuQAJqE*E>u9a-W>ha-j49 z-vnc6?&hUUamQVlRGD`-X~=i{j$6R-&F6EOgZ)60DcI?-C zY;pM0VSAxk4vXMj(HoWGcc_Z)w6g4T`R^I1^dLonk>}%u?*$qub7#r)iA2hq*R=aw z6^T4{i{~2OIaPuC{%ks|_VsbG_J{0PxJvg2WH?TE`(cZFPj704;e6Hbf)kSA3kA|1 z|Gvi46n@!)OUglueT780fPpT{;>OjCHw{)aWXcCl>;1#e>?41|CvC;s)=M=y2iD~a z9h&+5=ix~;yw|i3r3KY6SIB(7(Qr*F^>*S-?Sqo@8!FODcp9Wu@b5Yjz^Zfjzs{_h z38#ZSo+$)>R45X-XdqGCbIG>1`GIUlgsn>2eKtu47G4HPj=%poiXN`9=yK&*VNjB{ zLZC$b_e(Xqw3G!IDiWPB>^pAXeJ-PLOk?A3nOFt>mQxjXr7y)U2~s)p%<@`bV0uYO zN6fzJdEZkNL?mR=SG>+?Ih~jeu?i#(mPUWMH5Vfi!1fc z$8bdOgnWvbcUmAo#7DyQx%EqrcNc#3*qzf?DJmD$xyi8A?<&Vi?pQq@fs1Ag`_ig; zBqloa_VUE`?@*r2D8@5YzWH@>Rh&eyKyau!=hcu2Djqov%|@ktu5T`_hzMAD?uCWQ z!IuZFadRpw-1@Ta;EVrSmYvLHyBZ!bsxWr=Du{Faua8Wf(OE0g5vthXs`R7zpiGVD zeEFc%J&kiFc?is3D6Uk%(Oq#(`&9IW+#O3geKmGzpA!yE3zd)xK9Kw5)qijlEC_&;ngi~8>zsuf8G|Yx0;Wz zbk61aY->M#&w=BuN7#i=98ht;%lh!>A(dGEsD##|_rpqjeU3RaaTs4>FW;f&$Gp0? z*kdj4yry^EYyrL;$#1*6wFAY=yQ_60;w%rd1m`Norz|(w^!$I6g`lLy8JoX82eW)* zms!r+v2{7yAK@R7ML8}dG?&n zYrbvBvrCb`CBNHm+x-0wd};4aGH+VHME8m06M>wZ#T(AtoVH-%(z#ZSTu%}fuL$DF zbu3US3G!aU#u(|uSdK}^rZu`@~us>tYWS(`^Ph=Y3+~IL$x&2kg-CN>e9H;H-HJy8(7k)^7nD#7- zF^f4Or#F1v-@j{)2mCN+l-b|7`NNdPS$P!_pW!iw#yvg@00CW z7w=QkTWiyOV@{|>UF>Tv%d&$<58dnbRdKT5U+O-}T( zNc3(wdNFO@cF_l&hG{HJJcUerEG)NuHF6x-j6@vStasF`Z|u6B9?rilRB1&?_yrEO zGNm4osfA&h2f}j~-nVHnXs$J3*ul8)0n=eEmjBxKlA=G}e4y+ZaxgcIIo3n8rb*PK zFs!#IBfiP~I*$#H#KvPW^PX4EvZ$=6tngGYzv1S=bBrT-ZFg&-LB;1@kBnYdn}Cx1 zg2M;fm;H?ktzh0MCC-ueg1z+B@6SuQwsf{`;Q5d%w)bX?WDSd&-9?cV2KIA!mmd`S zET4bRZp{QuIp^A-FWnEA?oH>}aijT@W5V1k3a6JcPU2BnTf5)m2X9@@3dVvG8JU`@ zEm{W?`||Q%3vws-e_p`xSwJ>NvP9#}8i(70B}!Q*qPnLB-cjFhFtF)YMU>*2hSb|f zmAJx#3{U7-zG1%dzs;se9eOW(U{`af&Y6oJZrwO#eJH19_e@Q< zh9;90!c1`zBF&vb(hc9rGv&C982Nms9$;2HXc7^S#2>J~M|r|3{<77*ee2_Db$FF@ zA{a!IcGP#;S4dcM@b|7Q5f0eM#TME*vuZvYGh@fR;5&bpu=wRYtkpbXaX|gTlZ7*S zP9D2Z5t`X}#3k4?Q?@!jwZT(rQcEyf*xy$Q^6iq_12UpSPRu*CJ2xPUFXRN1Kn_dZ zzjWSkwr=+a)5Bv9Mf93*^p<>@o0t79P0m3kiZ6~yFy`9!dB0Lz4#iF8m2qRMnG<)B zTkGgbBR`Hq_ftZeZ6`2X5y)cve<>+wR;C7vY(IaImWX`fK9S(CmyXMXk1M$H1YEge z%-(tXxEqT;561`2Uz*WXZ@Oaze1e0bO7_pS(Dum5;&}gWi?1VlN!_AjQW_$X<+nuM zu!M5NE!+Dx?_SLk?(;qz zIG|B|=F(}7ON$le3iw)QdDO?rAAYIOuT&rV!67)(%P1f)K$5L=aS4Z+_miz`;ZgVW z4~uMaWxo87Rf(l6&-SI;{)E&rj?cbx!Yg+eOkleez~yoyKKDR(tpM{k=Kt(khLhJl zmI;o0B_ld-WsHo>F@?qMGXIV+MBIFr(DzNu>XJ=h<39s~K9{{q1?H8=IjlYM{lS&E z00xdg2G+Nyp3mthZLQtVe1NH0;KT`$EiC6hPuWpt7NMe{Q*qwMx*%rT%3Th&L9WfTO7J9^ql9CSC1-Qm3Qm9XXZ0}8!MstlgU6?rhUm1SRe zd3d2l;)>2v8J7@-gAYR2?BFPhh_{I9=yu@Aa(+MMaG%q;=0lIO`Z+F#TSWL8RH@u_ zYnL%f&hwRVd=}8SpwL@{-?HShLvN{1Z?&wIyJx#xfX6>O1G!%v!M$7W>}OuMYy#s1 z1A{Zp)6@Jea9z0(*228AQbB^VUaPXbKDuW`Z?VsQ*%B@}h2G7J`2qtj$yn{4d?sk7 z*SUrJBX3+_&SVW*X4zhLV&Rsx8wH*?K0C7^%TA9v{@R?NHkV)pu3GAB$H z=k0ji5-z*fP3Br=AKzV0M&3PpeL@uHpI_$EcVXIeeah2EMgj&Q!@+=O2oBnybt_}`JiOu5YWy1fl*86wfgtF8-lF- z48B$O1gfdkcpJQtie~okbMW-o%PDSDn3-TQ8E@vnb!<>dN37rR#VUHQ*@+C7H(eD{s>{M#+kIxW+>6?`u* zt@u`1QOWwNNq1Sznwgzp7K^?dFgI0sbG{{{oAJNji~CP3zVFDX;oiY{+P3$5z<=3& zH!i;x*eUby^p5W)hl;+x)V^}O-{c%i_JPODH$+;#Pte)6(r0JtPoB?9^WQYyH$ExE zB02N(_x~S0ga@@9(>OPUr_=3E&6C&}B93A!N*1*yXKmho@(t&Xuuz5*uZ7OLgtS&` z|J)HOf8%=R6q$E+y&|m)rWd-~Hk(T9DtjVy;`ptkGe@Rh3z((ObNk>g=H46Wx(6H? zC8n^b&Xl`B0H$KjXW(m`~pnnPSr)d7+M(V~vJOsetv3(D2&VRhoB? z-FVGabE7USqVC74{S|dG!NHS+Wg6-f&iEVux2$8fS6DH_L!dR#lG)srcT&!e4AG|! zuB|F=9Cp4ZdG4rg(EF8BB<6Qko9#yEvj$fN>$)Ar^V~0fJItZAH~O8}iW5uKPi6Qi zmL8bwc%Oq^<8FDwzmDWJiETf0+f24AcrhxiVY$FPL7VUXnI0L2PX^u7&#)|TbXJ_s z;r8u`Lt8zEL>9;SBV8{8m<3X-kNeGVoc^z*GLW%k)`NxIJ1gOEXqUPjnvNA(xHt@YwOCj?x|UIYj1ioDY_!9(iISxcXij0^Jh6SO8c zw?zM$#O}fNf{}MmVEewt#1@W^^{G}&C*1jb`R49xYzqz7Y5TL+=|mjQuk`ME7KsGD zf*NJ_Gon>RoF{tEvwL4xJSJ~{LL^E-|E9xPhnj+1d-g>v)@-a63>Dr*C5Nn8@)Sa9 zj&&V8+@h5w5^wT@WB%ce(8trVW71X^h{gmS_i-IAc{qBXPbo{GHB#dX~MxR^2r|JHDRVO@uGG%1c)PyE2a8ZWsZxc|x{U`p zKb(6lBDDEJDcAP-7s8&4#d2g=IeIRACGBB(?%;C1WtI{O9MksS{&!o-hovjnrpwW$Bap?} z=Hq5YiwGP3-}@FHZvDL6*Q%0*zvYRTMZAVP>-Hjnlbf zZesOs_I|Ff(!W;JEoc#CQ_3-?r2O_1Go?Td`E!gNGNH#DV|VYq|Ge0yE9_^SO~@ph ziTmupxt7@NHvF);HuNwY=6|ZiME6VN|(64>Gu5+ov?dCpU#V* zi&+eeV$~^3ch4|tKDevHBP4%Nnd?cQZQNmb&zmb{I8q`r?nFAUO<<0Ud@{*nEpmktJ(P&WfCjjEIOZYT&sP5fQN_M$bJWBBCV5($aD#NPOq&o01W+XXJlwu4)dE zi-?#gzt1ts_k`dX`A8ncsS_h2A|i5U`ObbF)A5q=xm9S8=^43*tc0b}oxG3Vu^qRX zG;#UfEfOagIYgWqYmYfZFtRN=+$i;Dl~J&O`_1m}N4VrartJF|Wfs1a`#&eVzA2+$Wui30fpq%H8SIy)W8^<41{wH5W@K(+Aef zL`5@>`HY%ne2UMmaLf0P2(4)%Q8p3Jndtv6JgCZWS2(9mox zU{Iud#YR3r|4LWLsS2K*JYh@YJFaZtx*K5AA9wlw69>MNktH&bjH@TDj9g*id`Uhs zQvTtARVk76;oK<`f<)%I?s_o0ktZPbO>Y3Beb)|-1Cw{DA>jT+KnK~-Jm^xl|bGp^A9&Ubp?cl-el+rEJ+RckDKj>Xx(92>tGt~D* z;BPzT=nE6$%DD4hpFZ<|iH(1m9>>l_(m`e?_V17>yLI@ahs)h)srm88CU5*-d^P7! zDA&rsu;zmbJq$cSaV%HXe>uitUeCtQvf9lxZ~7IUzq3qsX2t8s$1!{NP0ijgarGfb znc(Ld=8Wxav35UwWwLsBRtT@S_3G}e3@IK(*_;wB8T}fj^t6fqt;YV6hikgeaah#$ zbn|aHuWBmsrq(}S!eeTqcjknN=h(~lFy7p#xn!-xew|#4T7i@4?UU9-_1%p3ps0^DQgWl37 z3)1--E1$3hrwRC{tZm%g*nIxK-rkdMs)Lrlv6h+5?tRXS!M|9aL3* z&Ww$a?k|5~UedW#XWlUfL&gv`mU~WbxELnRe{RKbq~VIjv^mHAIy2d1F^324urG_? zXO{os@<6aaLRIDW(5ZM zNRKX_qX9L{?(w&l_zL;vaD^Y{x2H1@*qdj4(nab zS9d;Wd0;K^!iq1&X`Vp--MD$rCwh7db~9ZNSbpxH>m)0I=J*^F4!x^0edft@2dp@{ z%|z?*ya18B!#y&K^@^fDIV%MG&AF_=&UpCsVu$YilLg%DRsCKFG0Ocbc<7^f1LM2i)*WKr8UeZm=fybJ`}S_F2~*kOKXLoHz~il| zwbg=dyK@Rtvg99y9tiq>{l&dJKfW(70>U^B9CN)td)9`P5orMmd43AMPbU9!?8-P6 z`^Gx?i)d!c1ny_m&8}ETsUJ+r$lgK(1RU)XCrmv znjUqRzWDf#v9o&dI))88QDyAn=k0#v$9H#EX@Z#zOs%ueewn~>&~rL0xm}c-l=|R{UlH{ zrNPzmr%>F*c?O0xf#3DSSKkoq)3Eq-sm9?#_q8C4oQ%T@lMYLBU5fL{;qYCy&2c>= z*J0D<<lhAyeUcg`f%t&U(K!Y?dnR{}~uX80Rc7f3TrLU;g3?*4Pihhg^&g2%K-q z3i~#<$+cI;-7-LefyXjP!Q|hyYu)x1UrP(N_Dq*_>Jr&rYvSC!J7J2-91X`glYW_8 z4ikCD$lufQ#L22P#KFU}&qF}KzkJVx&_ixI7ep9&7&jM8opImKds6d5nIE1U1r1Zf z)w7oRw<}+A3~^Mjw^2E-C=e%N{W)@nVtdP~Cz5U3tM#V12Ws%AF|71(uwb0$B`c;fB-#?e-@kX) z_ssoGehvcGAEeed{){lXBq}YiSp47gH*fx~{$*p&-`g!_E84)dcGfc66MJrS2XAn` z;8^W@Ii%YAr*Y%V{97L8>f-;UX9|4x)p(I6&QfVQV{2EP0C!(U(LF|++RV8%I>DtS zEf*Fp$o_I5R484hu|`ZC z>99WhhnsD_?8DZEJt}vOU#fN}{;=<3+flt;Pg>7R`7w3Rxxn&MUwONm6Ta}b^=ohQ zHCWJkNu-5w_mPH&^Cj}EKNe^0o^HQGtX$N0Z&0sGMq87^34s80-V>~!{=AcEJ$Z`x z8W)R^3}Z@r?q%KP9VHqZOeOUh9@0HmH;T$M|5%iimJz3ZCpM=zFf*^d^?ylC^Z$M2 z&Hsz$xO`Fwv}Z|w6LNg{o@E;U=M*Cc>&{Ojy%4&J@9BW)*GtVlV+ZTnuyB_*S$r)B&7*flJCY&G9yW11}(N<@SizwG;X zvV@DNROhMGe&6cvnR_i;I|NjvINr#0K32|p^LmQAVE*~`gKq*CN8Mn_*9j;QddAJs z;*@#A(P&~$_~W9J4SO;rSbG%so#b=^uLV_}Pz`5m2?*%AV8Wr;+AecK+nYs#FLX|q zg44v_tWCO>J#VD~8Mj@Z+K^;0^Lyq0*0tLDk(F#59Gpx%+Gh{6<;E}{PfRcs;K+OX zLpOUnQ(zXuN!R0D_TlUdD$GVD9AS+-CrUUKm=9lk+_RcXLAX(7Mi0jm1|#k)4)zI* zGkbWlD*PGURePLmCvdZE1Dg%SAOpE&t)i0O!xZd%bSS51qUiXVL zEO%bL&Z#)J&&m0bMikq<60UC3G=}v0|JPo#30vm`eAhd0re$wH#x?6~7T)P~rX>xv zJOw-@q7%Bs*C}v>GDL*!(c91^y@|2GuI7z;!uuAlt&!Z_AN)$3R`7O6?5of6u!-d= zi&?Wo%FIvRDvibY(Y*33CWo4s2yHpmyyIUyomqo;7GIBkpEM^R*`gxEa)a1`9G+w8 zOwZCd6yG@g*P*JMD}!vcqnlRCDuO)pO>@93JzQ&q`0W zf0-oSeD&~sX9+2ZHT=DP3Qx}nnQlFJw)9t6)`q?R4=M0hwlrN~I?BN?{fychR<~qz zg9EWVhrU0O`Vqv@*~;_pr$eiV(0BPV4!_R5;g|ULZ58K>t^W3%e_N{<&%tLL+y(AR zXQV%_xgDOur^Q^*D`NktrzFiWsjalN*J=0moevIndy8mXz5f5bq|Qn0#(!n{hK!x; zCF+x=vYq~y9nrgW#b1wB3AWR74OBaAB(qARxVp|7=ypW0_?EcnDBg+PY%gEY_fQ0rIWR&_-g^dr_g=@+^7ijiQ&|LpX1N|~z0NgZH&dUw(q7B=$HZ7_{7X2j zv)=`8jIjU4Vclzf&u=Dc-eZPhv#BxK$K%3T6kEGJUNudHv?wGGRJb_HpVhlA-OTH-(m|*?!jjsBNm>@rQ28Ny8p56gh8NCJe z1P2{_?)|ZD@*CrGj7cmlY0G|Jj+DHn8koGN`-jFA-i05-j=na|5?J2)$fe;(L@};FpTV(b2mXvC6 z@@JScz5L4&bDWhcV)-QYl;?+&3|wBVaSrRfFuBle{yqWLz2Z_=8*KFq^jl;v-ib_Q z*z>L^rafer7=MkdLP$gLB}coG8+#M_t-ta9l=)EbBl3Z@7JH=RzCw=u0x#AHJ4Xa4 z8(gkwHY+mJZ*uvSgv!3jsEX7Ap3>JY;oS?eO7uS+he z?LO>S@Yiq=PIs6zt5A^5#B#&DY?ef1-%L`x}E@Ctj!=v|$VH z{&$%1&#~Oae_G#m--wMpAi(s8rNpS$o9EfQ*^K9RS*E=6{I&Kr}J}9EgxcW$?yu_?(6=hQv<$(NIt0lG4 zS^`eV{odf2!MA1MQFHZKP7YJfSO{_)_T*~3^xMYTU~>THyHb6p;=K8LvhH3u(CRby z+`{|~ruSwzr_G+swrXOdc~e)L??ai}^W1o58%sDgzCProG0-@0W3cA%%Vd=Sps~2%QW6ekY8!&FfY7e{vX3Whjl52 zhK9>hCV3hf8lGe+a#}LS@X3?^f(BiV1|5M09nJ;@Ua21I3=9n1+_dH!Eb%ckFgSK5 z#?8PWc2Ax`9iRNqI0JbD3E@wFCxXUh_B`1+$41W3z`!8w`ZR8X*FGIDGdTQaGd|zb zajc6WD%5`dCC0@mGp{T0uubz3laTqKv})O$qUSz_4wq%m$Qv3dC{H&uG;H8eU^X;t zJcR^U)pA8KMsx)t$l38%*^~|z=)8C_j8#5Izn#J&} zEZJguh=bkgdx*7*)x(;9scEuG1#Qf939t^&H0vW!Q_p=a_i%onXn>&BL>D@l&B%g##tL``gR6XfDlZ zb}x9LWOUowy}jV!hf;wBF&Z76FKdsk%j{6J;3z2J?bOq-E+`Sdan4{$XC8-iLD7UL zP1a`_Og1I~Te-Tws#*Q#2s{5QQCVgQLr`z<+u+zk^H&w7Szo;=5Lu~kY*VX1(H+B% zSu%FZJ~5d*2%HwqVqN6LWW)Z0w_Cv4XbP9t1+{gvdJM%l4lq7*`TnUjgD>s6nem&Q z>jfgGD+Nq+idJCu;||!g_>jST)|FdSI5@Tmy)HGlvF>`eP^b9LV@?N!7A%StdmUxH zj^n^b%d*aL6%!}FM;#g3M_!i5&3P3Pz)>Q;ripVl-(RN2z1KzNGVbfKIP;0uZ(*Cw z37MEh%|_*i_WR^?W?0LO;#IU|^$6*I)P1+T4V0gYkpQ*^LH?)&dIJ|tjQAT z{^_o3u;4;s($1W_7B3TaZP>Y?$-{At#s(gi0=5#7@S}0eHwrGryBU8|Y+cOIEw3gf zHhJ#nbODE(b5gRtvz!a$VUR9*Wzre8voSJb)(J5lo`5;5;;aq=Z(MfIXFTFi6r=C^ zpmFZ(4>uQWoxo$!b6qN2Q_hKnb6-Tn%EdD|*cR^JAMtj%fs$Js3m1oh?`0DX9v*?4 zQ3o{k$45vk5H(~-UvoIOMwQo%!(p%SRIWY_4pENdZal|=*gs?+n|^=&Qh$aH&(oK~ zQn;NM7v4O;#lYMU>3#2<^JMMPIXeU#CNUosIUHYdBU|BTV13N#pG-pSCa!H~5>smy z9J^M+5wLxw#A$~u%pJuWm$@fR=n5hlg z64JUdn}RrZgsJ+Ra9e#ezTk(7+q~0_@hK4}uG>lfRZIxa`6C`9!XsFmsdqL)AVefU zBzBg!gpZ8JJ_WZ%nTc0sEz9hBCn6#tA>%M%S*DDFLiXCn3;F8eRn%tq@WgXWO5@j) zk?7#=2xgIBZF`cjU48}ERGAEG1>sMw^GhBGEcn5axaY&&GM8?)9OqnyT6>}EYd#;i z>)2Atqigw5{WrtjIiEP4W1~;s@2%}h>f!I&rxRy1Ke*84Q-;UgNq03^n3?`F*ekl9 zR=wdm@_`=>ku;}BK>vk5J3px)4PRVkxPLVt;(sxbzinQdbMzVU@NZM$=6HJT-Z}}c6_Xxv zaG#R8!hc}vqmuj+of$VRR-8V%=t*dN#*+O{n4T~e{RlCsXQ>2>1-_Y(^HeOOO43f|B7 z;(OUdS4==aL_|X9l8K1~n~aRAxWf8>X)HY_7@hbsHHu0sJ~sMjnB9C~{;cy_Y3>S% za4`;jmdidFvjik$8n{GeY{+s_>8-!)G(jdaflI~b1dF4}{~DJGJSQ5xkIY(@c}s*v zMnOfx;KRbq3==U68&e&%HrGoU4)Sw^xq3a)s*_mfU$HxI=H&deBeqJFicY%^>L^bN zHu;}+6opp%O>`mtqof7xc>DSXmfqyV*1d;arPL1B@?5>YFvWwf$j5%Y$Fd0uhq46Z zc-T~by*@Hk=aN+8ypj(pF*CdFOXivEeB`w@>Cp=w76E^+IFZ$F@2AbtHI-mVNh*6A zte3psC&%HRqgt0<6Hoo0cs?PPvaq}Wmdrqf_Kx_h5@w+j&2dF3_J3L!4*8knrDTz3fME9KhI@+;G)jq zTWc2t_v!tz4by39O?Y%PXkjdStBj!hksCpr9xC+>?bjH2e(q;B5KK?nFs-D3=fTVu zTn~<|5VByq^|b6T%Yk4ixmfp#{DX;lEL9&TzOf6)a-8SJ6JVSBK%jaz3-8Qi#V0x& z8UJsY!)PRWAWLMrY*M#g!(^uehvOw1*dNG;`^qsa_i=g>$ktHJ;F~PpBXROX%N5;We&C;rig-3pp z_A+MA>Uae%F-7+MKKH+DW!~ANVXt=c#U!Wj&bQazeYmwzT;Xm0ewTW_)+bM_kK`&z zBraa*l6mXU8i^$dTpS$BGG{I0;SmrJnYAo)7N}s9QOKONEK@;6MMDE5r=w$FV4|@u zbC!vPh0UG)JTg~OB1(B)6*|p0-do%g~y0xE2v`b`G%%9(}43+8|>g_uMETL{Dtz}6)Cbh_t?cZw6W^6$@l8EuzW9NEeH!%{1%o7ZfJg}V0-`n1>y5IDuiB(Y}De}`o)ObwY*E?yM1%yu{!})9Lw(twCR}{4m?iEpGK6pU>j*z0%ivOqMYxIb#AmKsFsGY98SNY6y|wS*KzZ;&in5I zOc!_^diuiTc;shqr@Fisfss#K8bYh(Jymo~1Urk^gt^-HuJu#U>0nV1T2RT+;ijT$ z$STA7M$FG;sT&K2NJ8Bk|Nq8Qf==o`zo+|Smd5^WH;)f)F7p~Mv3Tr}d?gU%tFSS= zf61(>i~r;A?KhM$5@46mIIXtDpunP0VO4_K=>;Jw2SqlN#cNy&lesCP5?Ju!Kr?T} z-mc0V9R)_G?O%hn-HamN-nS0@V8g{A%F!9;z>;F_d)Xu-r=+5$bKX90Y3Bu89X;YR zihu5mnX{m`?ZA>PQ{R8;n73jB_m&727LMPCGcNEjvr90a?Br6llvsLaHSgXF&zH*7 zvux?+EDhkU2zVW19%n2O(X4*|#EE>B34i|QCC}K=87VS1hO>>=xg&=CDBFISB8w8C z?!JEO)2EdTF8LY%S3BbQ-qpnJp!PvA>mS8dD*WXW3l)k)+miX+%uBm@ zixfLN<>5CCl}q10?p!lrp`(x1OyOLOw{|Q$;&<@u+$Q(r>ii&0gW#}q#>v@@4h{?l z%!A86C?DG4IIo3g=DJeNj03D<7TexDT5B0)pQ+y?mLFb0U++EoIpw>};eXX3hnBWT^LpI)$8%t2 zgr~z!-i1FmoLINV!}!2Hp}%^s*SB$Nb|2?HS}K^kf6>|vmQP;oaM5;)nEBnl;>F#4 z7xcqYS})xT@XOFXWxo65*@Hh17IEomeX}{(X;divGUp%*&&&&4rXdCzCX(3(tsA70 zRizyBmNnm(NxYmg;riCY5dzW@F;dbNFK!&4rI0FEmw$Ci*P1Vva%M6g7Z$H!Z@tYVyfIx+ zU{H2lgmL!njlW;3TbO19<}%48RtCKIVtqo@ruV-{_e=hk%90z_-#O~LTexE_y1!~S z$h7N3{mNeoHoy=wDzF|M4W+sxvnWyJDL zi!FEM^Zrb>$P+oG$A9jQWuBm|@rP}Tzeo*x_tAB)B@ol`RM5mX4roYKSC5HG3`h^8X{|_B5R7i@k zyr46?^N29leMb?uV~#T}1XOhWo4ClJ*F&II%ZD?&-g*YBhlGoDph$06ZEo9_fTbof zD@E3eW||oY>_7jRr)9#QeZCWU7N!(t3$2&ZDad|O;}Y=uPiA8c+mSMtY>5wi^L-E8 zR0%x5nKZN0_gJ(;%gmSxA0D2p)vQycBAz(NsJdQZnKJvEvVf9|MDvTyFTY>A>3YZd zMp$R;6B`w#W%gUQyA*PChN?|l{9C*3)x^`E8!tt49OBH&u1|ZR=PR;eA zCVNk+J+FQ6WLKZ!`82K{6B*m4CUb3xd^)Xn%j^a3c>XekpI=eZB_h*x{<4iJ&kcve z|Gpi&^D^&*_F*xDzsI^S&u3b9;uY72eHBk8gt4ZC3wqu-;rmnb#`oLZ;h{fn)gKQ2 z@%_HbjfP4Ih7z;x&~rgtGS)ehCd6_Ey^`oX7!xZIWfEl57c;kcQCK(2LJgneYqHie z?z$)-_2lWnqLZSF4;?D9{?n}VtaROp?l2B!zZemp>nX{HnHSvqqE zlS~$mtO6eGPy6+^<+lY&I4Mjp?LMUy#MA4u@b0V9D`8n|W}bSF*FA{IyR^fPqc}5t zU2PIaz3&ws9WIs~`^1hp$lP~UuQjM^-Z|m&jp-_hUspMu5(&DL_9NtJrNo`Q*Za7P zwqBXF-fe-ZT-$}zUGiB~emo@y3!g|tzg2qUqsn;i@}a}$n+>iz`G|Vu%XAfHt16!j zbNaoIOR+!x#-8~nlo?JZvfIsIh~F;Y{&Pmg4T<^?S?84xN?p|s+AaArSoU`I(kKkGQ4c?wEDR<=KnFV z?ItIgb8FnTF>G*c5A-$Rbj!(aU9-m}<$u1#!ZOv=#Sbp+fAB}N-{V)@2`1|)&qFx` z7z?BXx<%w%x#oxO{?Zvd^?r;>TG*Z~c8C95tLdpery#_!AZLP$ih#CO+o41z4wm=;kFLD!lU}>HQQooh>6cb*1OD|t#2+Z*LGO<^|r)+CQC2==Bev^ zG9Ls4O=Wu*8?~qP|HTrcXVPbn%QOopG!)+z5VHz;<`dxM|Fz~-!I^L!t78`3+YO}F zRKE^OvpRS`wec8Z37^GJ#u$wW(qh-s1^Fk~G|n~gO8htJ-L=@twgV+x-C?;b3|*I) zTwM%~&HU(fk#qiQ*0Zl3I-YE5yldUcD_q2K!Ertd#{>N{t0r7I==E5t=zo0e&j%Nz zo1*9Xw4UsIevfHMLx1TjtMVJmb_VPe=@xtNLP2vu>{*cjh1wI}4$RQmC{j>TBYjNU zgV{yRu8H6Jj$^`t7i*k*I~v|i-NO94w_-ud9mC^pbIG;@%qOGb|%@D zMhPi7OPk#r-aNlPamxdz1qG)3Z3R(_WzR%AHTO^6A+TbZ=>7wS(h}h_IV=)7BqKWw zF4!GlPLnLj`n9F~s>6rPewyV@jqKt{W$vsEh8C>sK~C4C(%j}+Z#0oey8T)}P*vwc zLdnfghV4=lX8ga-*z2U+x_$HEhSUdD5{KpU+GS3%+qpz+(fzaJj7rAh1l~)T4^(_2 zQkE?)_RL7oTz)7wSyHB;Rm|tCyx!-!pOZo^t>*u>$6z&^=7rCHTS}P}PM9!%uKT3V zz@+lUMa3q7bD7YAl!{rrJL1J70)tJPqAx$nt}ym8*ptEX%0}UVP=NL28`{#B4_7R* zuG;y(!Q%j{yNv3{ zu#Y`~s_|i4o5Cl2`P6VoD*OyXlgjcX9TOPpmsC0|>tX5+YTA*jx*`ZL;eDuMV3*HglncrORUW_=u)}D@>Lmi5nPSw70nK^XHK%2znPfYjL7W zK*72GZL0k1yV6VJ{UjWE;sTc`p3B|hqhi8lbGbM@>#X}E)esdIkA&Q$sxLl_ zfeiO_*lk5sCi@r}smo+>1z!|=8tSy=-8x4mi*pj6EfgGB+n38q*l4&o=yABz%uD<@sg(X z(>1#y1OvDl+9UH>A1(^|#%AF8P%`3?r^iX|n+qZs0~lLmo}85r{My3k$zPJas5FC# z+vIU4-w7|~X)N=cUC%JyUgW|4?9zm_pPE_9)b@w@Qh`A4)*t^GHawX! z^~b*~?LYNzT(lh{dTZ~@{JwMA7aqxE6Va?nj+j>>4jYd(SMB?EO4$CoGDo3HO+shs z4M*#3YCQil<>da0?fJl56MCh4;-*PY7;mg~{Wbl8+X2Q5*B6<=GntAzPgx&iZP*sN zsn?)}nd8m36$T6AYWbezDM?HSRw-eYa9QfQmNV+{h1LTu48F%g8RYM@-nhmi7bw>o zdgs6aDQnGhchXY}?rZ+8sjlhnl6$>_`Ecioe}z?^e1UJ;9fi{3nV(e?0i_SZC>j z7u_8C%tcQ-eIIILsLbh`qTzcWZV};F?%P(p=n~uiw z)O#@0EB^F3+PO%t;j?SQ+xDar2UuqIcTV?f_%Xe|`<8IC%%utKH>SsXY`j-5GppPA zT|l*rcK*NBtE!{i>=-pGJQ}K1!uZ$MK3Vx+@C0LpOY>ouU}vc?kJ^>4cOHE>H!IZo zOH7%~`d77Qco`S6alJTk)PRxE?_-?zosRn-u65f53j{F!y=s?v`pgYijz>Rh7=3v@ z7%n^TEa$C>W$*_@=X3j6Z#W*xWBgNMzCUp7{8=h&-Tbpd#e*UWt{gbd>>nI`*x-SRR7y(@7Vx*Z7ZzKnOlOUInV;OvGSi@heF9hGU6wT(#~dV*?v)ybwyaE3Y1wM? z-y(H$d-;)`-4UuYXX?gWx#D@o=G51Ociole9(68P+bnwFiN=G!(^*T5?D8hd@jM9% zd_R*-CO-0anTq|&$zG*viVOaIp1}N*qr3D7$ITiWhMh%IEB+O<1Qq;KRGive@Q;03 zutREn!If+k_XG1!lnIJA@pbYpT~Hu%M(L81ql%BpQ|4x;u7m~hibfvICztOQ`k-86Hg@Y&NL)Wv{+-G0C5x(X9gyXgG(TvIUj-`wX4HP1_ zosVDjb%U5?T-xo-^Nz~D!!P~!t2nK-<{9&^gYSRM@ZE3KaM_G!VzFU&9WS$N3&)4m zVNx3(?DGiSCBX1Ar^W9Tv&3wJ6FGr<=7h+|Nb#)ua=Gqr>ipvN8S0%C4-BLtWp(tJ z|JUhiFOHRoo@SX*CMMQa?Z#{}Ac#qVZZD3G_)vO&frnyK}qnd*FIoi9F2j;i4)ignRU zQ*0*q%x7ZOQD}EObY{QDhl!_EgCipZRP`sE`nD(Xjg8QW)lc5ol*m*)%oLvQA|Nbt zxrk%F6PvZrLwVMvo+=vFpGveQFwgeRIMjOJ{o?6mcTx=Nc)0?@O6SblRqeZ?nxnh3 zmLcFl_N#Mo2M$Rv{1>&#&$|3xq%?VAZ}W-Y1-(fT{ug*Wm{)#WwEc|(f6Hse_UgBc zdoGy;|7PCrsr{?{o6uwHf5jOA_RQDbJo95xY35_Rc=1(q?g|Z?pT&HgK76k~@NM|a z#(b)?vRF*pqM^D{mV^0RxICW(m%qx7WxQenaxPCK6}gWUeAKZh;q41oY$#K&j*4Im zF!p8n;m_c|>37acrtYu3Y)+>him>fDpMO0=&C5-Q$sEI%r* zVD;N#mn@CY`Hc7Ph@a3td$93{F84LnvN#M9Q>~R z;nfdco}gasuLu9de3SaO?Gi_w*wuj00PP?4yf@^-YlNrR{REToJ|{RQi5#k@=b^(|J$e8oJP-5-SF8d-#0b%R;B=2~sL;oJ7+@j_WCJ{5sL zy@J1U!})&B=?*pZeG`}xZ79}db|JvofukjR`6c%tjXCeRlG4f>s#(@XM~h~=bbct| z34b6lW2Lx&hMM>5to7R01SSgc$Q*sJDe>8bUY0iu2J2Yb+ow0ThFau4NGYG2!1V3^ z4@R$Izg`)pJsixnk7TWHj(?OoW5?;>sX@J=7yk3deQ3~WmXhg?<|yd(y%5+N z{N%M+Z&g(O2e&6-0V@_phDJ%T$(|1?ILG1G@mhh$^GwGv#>T%JwuQ@N|EQ7L*u$}N zm3*etB;}A(99wwQ_pG#B^ER8~#lgQ!r%ehUeBf`n$a0+N?c)CeTK3u(t*_tz7GuA> zXAwX1dFz*Z9vWJ{3R`rs=}TGk)je-*w=lnX8Cxu@-K%4%^FgPns_(;|4@^0&eD01~ ztt&+gnwaG?v`PfODX(E&vN2@ZAyJ9P|I7Fy_Wb(1TKr*-W{OO0iAW-g_dKOTy8_~w zn19UVSj(xh?#aIJ;u&cc&KxmYN;)sh^Qt&@eAV7ytv`)#Ws3dN48mdHzGVtn8ecLYjYnu9}`>jx%6{Bn_%Ddzba~rwg0WRIrQ@2 zf2IYQd&2^>U+}zmFey}q#d^uk;L}EBiv^kw9ORg(G2y=@R}yD?R>FNHRr{X;JB1>S zIYf%gs%2~WS0>*y!&A@2QTqc+oxzo>nIB&Cv|VrGsEO0Nz_ZJ})lEJopes^pepOHBt+i9q!UM{eDc zI2<3&$i00^)HUzR`_p8&?rR@s4C^%!46<4y$rPSpK2cDj=lLy#ZtE*9TuJ{sC6l+W z5cwax^Ar5~G$ww&QW~C^+wiV#;nFu;zFdx11axCK1v^$B zO+OgYPS>J1u?EcSSz_sn*td8ULsha6c@&!LaeFef+%eU-VwPb$5 z4@I6y;ptac&M3-$_WdBjA$+I)V*-y+f#N|q->3rzAJiw6GiK9SKxOKmV zfu@k$)NJ_xCxL^rBJ5gJM7&?SCO;L@{*&Xzu`@MF;=qEVo(m#Ny2E&mo34p^)Oe(5 zpoh;q2GS%=GDdCTN2i76NSoy#WZI2{eC;{`{HH{#}3^vZZ2~+Revgin_+OBrs zTQT2u;S=QvASFT*v_RS?@HcFc_YDaRWew)6U@*QNtXjOt%VEM9Mb!n8mNu3X6rE25 z%G=l)si=$F*w~&F|0Kf59K^^R#B}Y9v5n2a=8(7$`C=Oznu$fV)5N4%)tMtkB?8Q zjLV%{aRD|7Tp`EZ?wU?{(8m6s>!rgdMwaMz^8-EDJ7ZTXDCC|rk+D!X>muT3pr@gu zC2&E3m35m(tH=^bKY{NP#Li3zyka;)jntIW(vzHbYNZxnb=BOFqy=Pu_QEkN4z}3Tl>Ue?ufuB(}2H$%t7-cy`gy+u+HJPKu zu(x8nN6WE4Iq$603r$um+V{okgL|B}NnrQcFDZ5>I4^B&Yqyrzyd?C(m-R-|zjs}* zerlqZBa>%%@0fM=C$}YdT&2$uQ3F`7`Uwk-ir{ zRJw1jZVA#AyC2iyI(<=)p~Jm`7j=zI#?!U^G=#11#ksNVxzooKxw4D7>ezYS-eQBD zTp@ct<{H|$FHL^i>nz~uz`Xs%XTy&Pyfd{zg$n$d3LL)&zYOLxn+r0)c z9_B5*-_~><6_a5;m&MlbFjmVW$mh%}u|FYvHb=Rcx({n-mkKwSn{> z&eHmDuKiP97Pfq;oU||0Dm%JoUYX*lIoIAbPx#R#!_^^~!&LfNqvZZ`%di*S%q_W$ zen+ZTFPK!Zwr+oe1(*GgW2de;F!wOOXTH_g=v-W-Wgr`y`{QxLeJlPx=e{is)semx zJ+rnyn8$9{Wxx;-tFX9Zp&P$ke2o{6ci;vsM-k2IN4)P@N9?}{GRO;<`TJFw!);Xi&Sx2N0*D0Da%IP1ELM?c45l{i#pT$+o5prd#96*2~UpP zbq~=?u$2RK?IhM?OVCo>~A>#5*YwF95JQ9YkfeAr!ZSO9# zY3Ky?S+la(J!ah6Gr`fsx}lPbtJ!dN$g;95j^m8t`y2g#Cab^ObJSvguK+Wnz2xG_ zhZI=q+45gZlF*2snLESZIql#RmJQlQmttyk=1$Ig%=bzsr9i<-?P70jhtE5YkGVAg z(i!)&SebQhyyo(hauE2p^*(bu`xcc8yJKor$o6jEa5_aXVDs7~3P+C#G%4=dA}VEL z?QQ?~9Am3YQ(XM+wOg%AJx??QAADZ0JZ#1fAD=)2rc!BL{WD620ul}%7~E&b@CB@H zHlI;lsy6eSZ+GGQkBP;e2W6a@p9V;{t*~Lw;t_6e`I6|X{BA~GZ@>rEH9IQY7>(Wv zsL8iXlxdKNjJl!BZXJ_s5UQHOoLdz#?UP$}KzNOL@fHy@Xd{}WBZb-PK^a(%r%{9pO^E9x0O#{b4-NkF{fjUOQ-dwmx7Gb z8Ct(8Wi%AFUpl;t<=}qj#Ro;4O?VU-kLnz~_F&81DMvcKxwszSjNKL^RdGOPT3arg z_D8O=_4&QL?Ymm|51-Xj{KLd=a@70Sv9!(I503UO*x;KVuusU|)===1G}9cb1G^j4 zcw!bE(EhaZ$^(W?*}aOL(+Z9=R^RW8HVgi7P_2hSX~|LMn^Sn(O0piCoLwQ)vDABh znzcz$NN;7JMOZ*eQyW{ncXf_T$|S~!gb;>PpXc<%q-2yNTz)aBG-N_eNI+(h+C}3a z{qjS7)*LPpcModaT(e3*uy9Uy=QZ79Z%hJL@0yUiZ*%!_9}nv_Q&-q>1cU~L{x{pV zz#yReuW*lwPN1WXd0_X^f}prt-=?p8Eoi>L;#1Eg#g%3!Bm_<2xalfg%~)mSs=?{1!qPM)Y0vL}46B&Fh&{RV#%vdZXw@0JPmHU!%(Lf75aF4v z#vtc=_n3stjVCQ{bLF!HVs1R-lThKfvuF8MUlAUOdj*H21SAAbDm$*sRoC#kw0AE{ znZdRj&u*N}5%?)OXH$XLVfiEXs=t5t)A5_!s&Mb+5&;dX`v;BlZ|FqT=egI|I-?O zGSn0a@8imkf5r01=oB|+!`aUBE4DjLo5ZKvqH;M&fVttw>^hb&$*hdRXO4Csnzq>M zGoQn~0EWYU4!t^Gwf~%9s@l9jiXn>S-p76!7K>=zqSgbUwtod0`1`IfZCvq@`H+B{ zfl&qj$^-uwyzAMdDt^%Rc7!cwh)c29?ITU=)9yITIex>o%xl*LN%tSkId|jL9vT=F z$T&4VN^EqybZ6%;?$jI=r=#XS|24ibIrvtf@nP)Gre>i_TU=sJ^&a|kE##0zn%RGw zvo~4xo@011lgFF0$|uVq>bAVYA){8K+(T>f!=%JmUv9hp)b9^l-alg**&7YZ^aRAZ zB+ZtD=;d=UrrdaSgQu5a@->(90`IW?_P$#KD;8|7Ekwf5Pc}TtvR1b z)adTb19HI$)jJMZUr`d5W3gZIUH!Evhl&E*)Nc-9e;U>XvR+#@jiLVe9X_AeX^Zye z>c>t{dd|S&C-t7~wb)Y&@#ESYvU~y&3?sJ4!l;)xaAS+ z6L^;EBroe3i4$M`*(KzhH##k^a^qC3EMu(3LJoBuBjfdq2AvG%2CB;US9XNOncTCO zQnlx{jk*Kh!^0lw3{TA_Y5MGyZ$8}FvQFIJ_~hZ`{yt$}B3OL3H<_Ol@o-Xk9szQb ziGzzxesRU*kbs!2kpU@Z9_8|Vj|?a=j%>F{&N?5b)7RsCPxw!Y#i_>obj}2tUlQq zV_{-&FJ3)7#z;paTt#6DUsImE%rmbETIZe=*9xui_^_kAE1W4i`gRRxxUGO&lo30R zUtIm_X0bDq&L8KnzRTZ}F}Bo&!4-++NrJzSEt^S_4=zf6I;k2s_IzwSJ)uqM8yq+1+5H&~ixr*Yl& z5OBH0a(^k~`k5{g(VE{@!7lX}5ig;t#FdX~6y*i-@0hwan%vY0*HBkipRS@HBk|BnR9)n> zq_V=<^&H_6{+fFu`p;Y|?;8K>P$BmGkKGp< zA005?=J=|r@oDbkuthf>T>Qj*(SY-5euZVO=&nO+P0w~EoO;3X!0ZI~+1!I3)1Q3X z(8Z%~;{IQ8kFcIIQ>nH>Sg-%T-rJn<+}fgZM7{s0shFytXA%<-Zg&ge>JZ@wu>NH8 zh(GYL%l|+D_ej}Xsf<=)}%Bl(S$t^Ys z6-QM03vTwgsyG+*W=>eZtmJI8;ecx;t8$oY$B9Wd75O_3+;cbSvDo?2BG|^k_e#Ub zlP*5Gjch%Q2_}D-EhPfCSeklFV78p#;$SoD*bEyBerJ=E4#7tbCFiF*>m3*GZJXMs zqI_8`dyB$J#p4~~Q(G6Ydzg3_Z*{SCS)}Z+)xq0)dyVp0`5X2YvWB5^E-)JScYIPf zGU>qojuVw43araJKB#zHu<3ZgA85-pT?oQTKEl*iw`g!kIb? z*_@}&yKVf<<;e;;xsJ)fG7+cywtb(&^tYScb>ee3fe+o`pN@3jnf$H8pXZ}otGk5n z(#{|mKHDEj3UgMbGCxaC(hy2FmTZ0Qp3S9}T_btx$-y*>`Nc28c4)TM9;jw^SXXXPk1U#n3m*vuX=lW& z*b$(cqhAm$njdOdY1|NYbZM7qi@CVgy^Ea@wbm63UEHF!IriNiY)^Q295-_}F;#u@ z`M{l3e6^Z`=M$R_iyLF};iZT5e7~-YJ{%XDofy4wJ7bt)fUVQBOJNr44eA!91mAoy z?M8TS1=9k?|7^X5OxicQU!D86CAE4@yNu*vQ#CiHv*E^`t%`gxzreu%^eF!&T+V>m7INyl^Z9sP!v zHwsuXRW#W10*f?mw)|Q>iLr8nfWV~e@Yy0P#)mgb1T(fTe(|)1g>`uWWB58|WmV-b z>jk#z7D(?u=g!3D-?Zyd!0g~K_1>;1*Od#(S9G7sTw7YR_|7>Wc@{>yxtDo1`^G!i zp6A@gBp1z8E1~DTZExmn&B$v(ah3}cJPqDPTVJ1b@H%V3ri+R@xGMOZ>l1I-@V~hC zy76LSMr252yxbE_jvnXW&|dH0f@+KNz1b|AOWV#C@J;X*o_gBZ`O%Jt9Je@~8=+@=c@-d>|*0n@=@Y_JK-4z*9KR9t1#7jY&Lwcb{splsXo{s*R{Z( zjm7LuRy}`caK;Mheps-TktM93w$WBy9RZSo#3dW)7h{&zXV ze870iz7Qt{ZQg4l+Mh1|75jQmMZnHx(`zo-)_AUZwO)^ZTb535Xk4TcCDU6jKZnz@ zEL=3-GA6jOv1au8Rl%e%k^5RfaAV%7eB`#uI})Q4EBeofZ-bi3|%YMT`aenuG%*KX^?nP!y zd$)y6;i4j2;TJv?Ro=-;3|%fw+hiW{c60}?mov*q5xe*Nl7|BWhvSaAgaU!oDkGDc zZi%o2g{A~sOYV8vO_2r_`xPuj9OD@+Tj#8LB4ECUtFk3VzZW&&tk#;NUoGcPXr<@p9B_} z@3FEGc+$$kr>^NNUgqLjiB8L`Ky?MXzW<)&vdpG>ga6cM4% zC6Imae#sfjNsd|(5s?!VcXC8TJkeOl9r<6NYr#{k$oR>gYBM7vBPTFgPKu0-6malc z78#lF_geqDpWXQqbLwmx^f$dbZCx&LzPVmTCGXk9CGH#?T`UGWtu)<^h_UT)$vD~3 za`>Xln!3KPH7BDN?6*3=ejqryH&W&_qtN5p))!ahX3aeEP40h~cE^%{xXnjYSQkHW zc3A5fUOt~Qm^Ufp$4{vU3B%_bJc=(x^ZsJtndmty!7GkKz;oW@iGso+V$Bn}C-4Y} zNow#$Mb2Ho)~&NAKVg}-fGzWqO1UHad^~5PO(j{xo@BWMu&cN$aPa7{u&W51Xw>v6%5*T(dbbGKD za5BG2b=uS7;?mrm6sOF^dLcBjwxw25X@?Ql@m!7ohx8}Pa`!%%sVNjovXnHxSsf(O z)G5+v8hWtkxhUg@WtsOI#VbB^IkK!46kt)=@_{pv@6M$nf#@B%`x)8RSom-}6QAG3 zC9vQ=SLpSN?Eig26<^7#b8OIb7#}D;ZRKvB`$dkI z-10;uiX4j^Wfbms7dfh=mTL)Wb?uken3>W1T_B(+z*?kQV%=$>BAMit0UqZiy9B&W0>vf7SFre*Lk4)aO&YTn=#QHdalV_eq9l4U^y+ z#)DPY{$1^EP{;}Ih~NBWf!>YYPQLIio*;40AjVsnB0Szz5w$$pt8zG2?1|qvN!-SR zdw*a!|EmW=vK*5W)-UlA5$_A~x!hBhkr?l;x-{~z$Nhs=EN5?>atqtd6J`Dwz`Da6;T3bul;)@L>@V_Qt8~9};Q_;mJ_f&7 zj`ExdEHVM7g7ZX}@3XDj)X*B^;3&KAzrVi-KX+JYYgs^ao?v95f0`dhpGl^2?4+B) z+?qFS9xy1zShtpP-Q4woVH+Qhj)-t-&5~o^q>5TfvJcu_xUiy0et|8)npmg{x8q?4Mc3z zm6b)sC8RQEtewi@1%{ zh?wxN`z3qQ!m=l32D=pm%f7PQzq;rPLxMMNgMHZRq*rx{WsI%2Yo9jwT$`w^u=`Db z_bwS3`Hl=T={Tu_&->&rS(pS!e0a{meXmq<-cPoL^1ljFIm%s6XYngd&)cZXbGRyJYV)D;Hr>%Nh-&~uZ$gBa&*hkL3qdjHvDuQHur zWjw>uFA`ScP&zYOc|UWI^GTnMmyXSsc!JrtTbvIo^jYj|KGW=dL?f>mY6X8p@5a}jnhUFjZvHH{7$tUW?S5RES6pD$D{bIZvXV1 zi#B-I$@u*b3^Qfyl()OlB)s3Ww^SkSh`I5F3oePVFK-s=%xc*mFLAL$WWUmrF3qAI&g1rLjIykENW$qVTKncr)^hj9gc z>s2CFomJjX>_FU0WL z-{aVC8P5`$c6w3Q;S8O$sA!&(j(+li?Qa+uavV9Dxaag{Y++=}+_XhO;Wm#_|FL^K zPOb@=A{KjG?M+X}Se4`j)|95sP4g~zBM{feaMn3cs;AUMe5s+w)?+4R;u8WEZSJ1Z zveUIO3P5Be*WW*xE&5)8|VWx1n-hJ5wP0J4~GJfq-onFf^L z@hlxIp?*e3Lieq0kvZvH$MR>zmB7XOzMTo4>bdOje$jA=dB+5V<#|-LEPY{cc3a7= zi#+WQA71rwlz02y_{yqO_j zGlTAG^oC57o`3VQz{60sy_qt8i=DYgeccrCX*^Pi8S zdABQzwS_@BhcwStKeq~pdlDHndZ$EM?c^nsjMPNzMg8<9afXVBaPCa;5DlH@$#*j2 zQpP0_kvl0oX$S2?J=j+MVa%)%5y>zLJIHC@W6fhJ@*_pzto~egkph-ZjR?m_6AVKB zGxhG0Tc=v;94uy;dfg=4P%=?8-XZyHO481TkdrR;q74hCE3#_d;hQA3PC`Jnx5eN> z;B3^t?=C1$Aaq!mV?U77d+=~>J^orL6d}qA$PiqN>t-TXJ zL&M~!l?_jL_|+NoPn9_w6lg53Im@v8?%GKrWn#6x0oxuf{QJN87hic!mBjy_)t%3t zalA<>=a!ke;CkaZms3YrcTPwv>EIBMnIwM6)#6-W@rNsYPg<`9ZMnEIMXR#7#>JsP zbrM6oiu-{j_4}9^dl>7_WI86R*q@1!Oy*Iz!6W~YN0FCP;Qxg~G6G^JwlLU>unBl< zvk$x5G;10A>HijNQ$6_v!e^+dmd* zCxsOiEvOGG3O4fSZw}&Ah;w}4z*kbEu;j7kG49#?>wohvex#8yH+sIPeOz8K<9`PJ z(=$bai?)`UFwH)BF|06nX0e8<{!Sm}F7}wCqQONLEVF~PbB=~a=d#YuZCk7xHcNfN zy+@UP_lgDByju7FJaNGFC7;3lz!N41DiXq$XS~`iV^X1igNcK!B=m^-LV20O1^=%- zQZ@G2Jjti@1y6y>!!t{x=IHv*lHK4cR{BO|_lH@mPxW;eWXn|2GFF{Fr!aTZ>Mc~5e)EX82IuaZQ64A$+;^{d;HD%QD0j!{)wbRP zE6<3@N#7Qp8a9=8e#n|t1>F1hdnvtSiE|M@;4RHq_a?+vhqoc(jSz>_kLS7z9cuP; zx@qhU+gSWTo+;SFM9d(6<`P>6nz0=#AO7z+V4Tm+{^vN43VVgl%|8$Fl65zj^ture$ zJjpI{h~I%Z0!;iUTFlyTFlXqB_Ql|P?Bf23=WNO!+cNUkQGjzS>4Dcv= z_)VvG$yyW1t_bUfwbRrR4Xnj96`VOTH-vL6XQ|gUmVSMpH%?&*6Ps(3Tihw?6A zIwj)&EaIc8=lrbG=sq6y#V&=#AeDQHJO@L!>5Xf_EZIjgj2z_;Okh7z=2GTTpm6hG zypMJkkBCHsxOLe##@Rg0s$u-I9hMh~Upu~)iFx772zFhCJmCa+gE=MqVLh!7oJ*dZKZP{|Q+u(d_U<9|5o;lKA5r|4)^{n=4@;gF(Z_moe; zA0BR87!VX*9uwZ9%FEHib0sy2nO|PXAn!qRh4x)ew^hgcn-AD*m@rHC_v2U7a#yn>W{UUH2);DpXr=6bJBCcS}-38kVx`nWU-t_Gj7V3_>tRh}wuWuX0z zK8`CT$vW@XIxd)@5?_5sJYshEn)up3Oq~-~@xBiiU_9K%!kMo&jm5D1F5q@&eMN!_Zb7B*hwnB<<>wo?W z&A%9nZEVVPZg#jdO`COa&19PrkATDW2H6fpJk|y&?27Sruben0aK&0WaymcRa}|vPzdzCy@vCp;@Jj#!H?lw;1ikE2jk^kZ!BgPTwUzrD)a0(V<5K*>l}tB zCqiZf9SdOS?rULWV)-z|O!;5Ov2XeF1-gVf#F~#azjWEobzlEv>DvvAd*lBH-%a<)E66NJrBf zmLkrF)7zEi+4hR4u*GV7*t7?QChiMyd?eKUKYs3G@k==jVPywoR9dbHa{Y|;X?P&2 z!Vt?-A2PkGc6-VPOKY2r#R|^*4n8<|%Vxu|OUvrkgthoinR>W&$`#I2$1>fI8%^bP z_d04X)aGD#yhvk0lj~-OmwO^LS?2RRICUwl+t>MCf6@upr!1W^8+JC{b^B!FZon+F zag)&(pND%l8ZGbkV^a;B7qZS~wZ^W%<^gVY3-{J+x8qIttsvcDb?9ae+x?odU7d=~Ie*RS#f8``zcp9O z?QrvN(71K&L^EUN!A&m(8P73Xyp(l;wO2YLruphpgOfs~2l*=YukoJ0X|m0qiV{bz zX^WWN`_9_I7P~scB*=5l^ct@ltmRB=r8DoQ7RColruzi0zn$cGK=$32Y=>I58zvk@ zZ;n|MUiZ%TEiYQ>qAWe#C4eKLK=0;_gCZeynM}5OxQnmy%EioNe!y(Me@@f%Jr28= zZMyd^Tl6yK_`w>6%{M*;NpggjIg~ROu1PS@pPHibJ(lfB(|0DDH@(bvE%ahj9p(fi z*3^iwKgr~{&(54aVX}RgzXa3I-Z@>}rOXSNWMs^PkL3xNmE9el5-RWNlqh|X=h ztXrw$vigu`TcYfd@?@F2ZLRk5vvyR(7=4ST-S z6i;{Q4lz#%-SBSG_3qd4=WZN)o!O~ioy99KUrvC*M)?Kbe5KC&d_9IqGH+*G=rr%- z+R_o$6wCbI)_+G^0Ha+%fSi{nQ__-i0w;L&Z!TaCtM=IR%2Ho$38O%uTcWiL8!w|g zmrL1;3l~=W{_b)(x@@^P8yrE;;>0fdimivS=aFnJ3?5BF4(E<-@jR~=u@KLt046Urk0 z<+B39FVE(-7P!DryHrplxtOuYxB2CPV8$#f-JeW9ZocDw|5{{vdCITF9(uv@oDz~d z!lFWZ`bzw@Q`?Jf*$?s`X-*b9Cbn3h zhOvz87z6*J(%X{02Oc~u3t}uZwGa(g#(XO5LSV4{KGRDNr+6yFH^0lVXzAPa?3+&Mdy$XJwYzQw|75JG zJ$)_Xh{~5&eLW_;S}$%p)?K{0mP3v01EW9(kBXS7W2lFp#4IIl$Bk_dHMnMS=*gXr zI4-qX%0&OOe>7jo{@|N2yN!J~^rmyl%$(pjPj5OuA5U=XHon95aa;|`(V6$z+L~p& zcUo}mHYrLF`ydrO(}OGJ&kf%Q+wPy|mzW$C>PzZXS`q?8rM;in<%Ink^&L;PuqiO^ zVGHSt`Q+5XY|z8J^GRz=!UPV7liWLHW^m;2u!t8~76pi~RM?y-e=>`Sl#?Uh>ST=LAUHHBs^akVoiQaJrOb;xWLZ7fO7b))ez~~uw z;^_gV4-U*bC%iv#oWX-R^v{VC`Av)hj2A*HILe#6;{sR|7$aCh4>rV{5V>K%c(Oae z>_MmkV*;z*6YC;}4AxMc7dz)9I0P_$V70I=I>}wYmQcYKn&6=K#N|i96Qx~q7#Y|D z{x>X|)w}0-Lq})~65t6dyGGFT3Naper!%1(T)Vi7(|06S^JrcqDdmJW*0H z=yuR!vf+55G{GapL62!?Le3MV3EdSfdQ3YxCd^Tq(Cx5-X(z{%EeAk)&fEa$dGevt zL67MVOOfD-3Jwtk@x~Yhog%>#t`;uhjWH|%F@h&t6*3xQSc*y-PP!_H_srlr;JS8y z&pGEK3*=)N1h(WFEx%X7>8Y9f#CP}BU;)2PEzbl*G+)eK#v&o3aLi4Gfi>6c(nC#K zR#vO$_Z=sO^i67KfXz24ilV@1cjpISR7tYKw5 zcc)S$fUBNyHGA6wrof66N%mKIl6Bo-A}HqA8BG<$m8DRd=H!(+?aFKFM6PhjHbc zJyX4s9eocRnZvp;NoDS&8qJ7~3Mbh;ZVgs#cRmCKPOq`BDcQ%?qS=t$BHN-R=D)iy zrHj@6z#fjBle`b?VY?}H$li611?P?@9zH3B3Uj@`t=aI2xAXGkx^T6fOf2(wuK3EF z$v8Em-s#1*khT1+TfR+NsVIGKNa<^ z3%D)XV{%#I$bxpce!(gKGW#ZI%gbuLJypsjH08v;!fs7-74x2eybR-zNoKO!b+(Fo znyU*=)Clk|Rt+~&kx{U$#Cc(ou~Yrd*>b7N*`q;Ap?!ghFRts&3*wPslj!z5 zf7{{lrE4A`d;vb|qnSH{x-^vd`+GAo)Zcpe2>UJhaW=)qCzv&U;{ypcz)^97p;%z9pka`N^PPKoc@M$@@;P2>TsZDDwf7vu&cJO`nPO9u7rwKO zEqK7+KS_$Q;hdCE-Gh?)a*o(mj)(`M`h5#jFZ(D9M<(7#;>&r*-z?-9TNXNXvB(t9 zIkPu7M}O!pIi>QW^n%E#4MMXXil=5hD#=`zaj^B>PnBCPYMfR!D_YlAmUfi8cAPUi zmLe$srRClc=97YV^bU)p>4_vUZrY=zwD*zwCzBx82X`HNDtWYzT`@b_{Od@mOJC>{ zvG0)+ZsvYs5nw*1QX#ghV|T%^|3MmiL{_ROuM=bbaQBGb?bxDnR^XEN&pRrN4qD77w%9*Wd9+B-tgxQtLExu=4Y4BJEPQ>e zEo-9$q$X-yRcY*Y*81{ht#7lDE<;{#I1>ZwrP=>j6gt^^cLk?27VKx}^cU%jmuR<9 zOg3GRRjgv1dbwAnWSfio>Wxh)8J*YSS*LNG-}XK9O|xUh<5!1Vg4Wi5QTUlXe`ijD z_r5bC#`7=CW)?rwCdfPG(&Qr^t5@Z1dCHe!X*l5wX9IJ-vy{xj*rr;)#slW8eSu3F zbtVWYY}4tRz_5--K>qU;mmbFy){3Q@J9tluT1=k)2t0ugV;o7mzu^#;TQ@ntMy zT+3(|A(9djlG|{2UjUy^px&+^$2*SCcVAAZIwWNuQ{&LAyz=n`&j5zFdtz}Dwy1V& z@z4?bz`^^aYqJC-TBjP;!eSHj74XDojB3Lzgv!{Pw)2bV-}2`bbazC9&0<; zc#QYCTYF2|gcp7*FR&F<9O=?s(^Me0C#uw`^F-QQvERkBSDt*bl!1L4b660|Dl54I z511Hin6}q^wBxnU&v=(&5X2F~t#d`kQ6XV{rclvwW*5_(?2}VAv8kQvoy#VK z3xEH1S-4=n?aw-vUUvcI#D$B5{@fDa^74>W7T+|E%DCWqHQYmn~@;xu(|P zs{R!mA7_4_y1+d=kgw9Qox$t~Pw0d_8A?yI+=HeFnOFw8?((T-GFV_er~6){lfR=$ zE>pL!cx=UNDHG*|$ArQ;%UV2C4&3;_(0Jf^nzD&>ZV&U@D9aZ;Ggr6d%T8oy7$xzQ!i)> zs5cn)@cwWwZ4++Z8eCtJQ!a7DWrbX=W8*>YI#$NE8t#xy_f{)9yf1&i@SC~V;I%~S z+o$C^{}pbnN>p~Xxa;iEt-E2zQE!8<-N7cGUsyN?xbS8qB-lj#Nmu9-axp$>;T`z2 zOR%f+8k@MhcPO;1ZCn%N|lJ32T|IlPbCq+6d-@yyx@2+R)jKqIS>y)# zvsp46(2?SvutSsEC)m|ntW(ES^?$f`rXB0dh-;NLCk{eseC!bZn8g-?+Ctmp38GPZ@-O3}qTPp-5CMZ|9{%YRqpTqUwxX|n0 zb!>eNi@Oi}USWMfTJfT#YsZAz2_Ln) zTxwhbQ>;yP)#@_r&(*3C5X-QZX{zP;#H?E^vaZnOza!fLSs#(R40l@8b(k5$B(E_> zWa|d#2Dk4?VG6GjF}9NUbn8-(VdWp@6B9!&s4*}|9Q>~I)c@8 zCPq9yTc#b_!yLO-g7t6H%>Do09-AJh^5p;g6NQVoy9$rGFI+HD#$xue%DBpDdv-Nc zsN9Z-`gHcQ3Pbbp+lPC%?)evRL2{O^%7kf6>t^5hdqu=VYaNfLUA%(67;AUw1;(9! zeEut_JA@VPaQT0T!}F=je-^1VlfwVI=4f1KY-shKWOB{V;aQJBp7F`YAqj;~KHg?w z;5rw=+0S(Q(-Z@~*8VDqfX2WAN5+P*}V@^d3L!ElBwt`JcH^aME zrzJdYNb1DRV#nHI_fbA>+Ht!I+m(9Gze7IflBLs&>n*lP_w z5ohat2LC_Brxf};+$JgD&f%eSTt(dIsC393VFiD`sWDT6LZpIDsD#AVw8|8D+uZon z9h!AZrrpU}k}E+t?xI+LQnNiD_lXQ^j@o}60TXp<=T)8PEnUJWp5nBml!r8%C(I-a8>IGpX3am&*W z=l3+%IBI|8Ieez|()v7aC$|%QNiWO&ryaN^R(vhz-j-#32b^O4zOXPlGp`YCTWiUg zRl=M+Rc*s9@3$_k> zmRA|CH9acD|*VM&{ZdGS~@vuR~eSVGzQ?tk4&YQJ3jiugZCx z|9G)qn)-@EOf+_~c9!FRDfg`lSnvKe)Xm^lEfp016!@L-!kztGS&n?CUh~h33b5P3 z_WSa75Ay|ce#lPR)+@4gfqUBtRxia1w~i~?u;f@es`N&M%B!eP3cvj4@*ly@l`h-0 z%owC}zojdbRI}x9XUhEgRHCNzdPBv5;K0fVF@2`~r6+sPz{o_bp!;BfzV%SdWhZ!7D}7MIuhb7HUDj@z%&XU5ok@kO<#QGsUw<9e2* zx0Y1rGqS{b#H;nckko*@fnApzjVr!Uf!tr5?PlN1(JpsFqaaOGq z%6Bg)laJ3orm?uun}wA(r8527u2N6VpPrvoGmfro+dpp`tLh8ytk4rN&I=~iI5@j< z1oUVmY~55UpeN7T$~CbrrkAC1!OJj>Ag}AmMk-~i?Nj1s%gC^??J#-RXgx20O~cQ3 zPoQ~dliTJPjo#2b)l(Pn8U^17bH5QDu+6M#szS7a&4+@Diq?Z6J0D!In#y7Mr$%IU zAm^+^nQ)uv3BjCE@h&UpdF<0-yvDNbI%)j7}{kxjw;Byw{ zzpq68gnkg#e&?rm^2VGO0!ohhAK!0}jPDmHP*h-dTp4-n`X6PTkY29&w~vW8aYlVVdAcOp)JV)znM5ncmpEZ4W9%B1TN>=n#?fSCBo~VXF=4w zOXpadE?zMG(4;h7LZ?>Fjpa5Ab1UyG4xZm%OU-<|7i=*PH#>geQ-XL>=_bAS!+a?V zocD8S#OW}2?hlywP-v=`Q8sIR>zdLxow0wcYnOS5ykPOKQE_}S?^FqUIK!64n+I?I zDd@1%^L~B9l%ZylNG(sq+Zuldq5m$odX!3o8SJ)wnHC(Zy}Zd|wdMX>XFg40SGe7C z=glVvKbPA*x6c$QJz>3-bIXQj?F9GRXB?O%ckO3+>Tset{-qA+6`m&n z0X(w0b#w3Am}ExAv#)qt%5ic7!=;9Y^D7-Tf0&_qZoR32<_C82H@IdT$ z{M2XeC%rz_@^pW!Ewx|p$-eeQXYCW~-)u1tc$#^b%cdT$efaujtnh?84chT@KJh5r(7w-RBmL{(Z{||d*~v@R-@LFqJS?~?C5q8i z?eWPKh6!PrDKahZGWBnkhpV^vrM{>WP7e=|d|@gp>sv3L@b)Wvp~%6`FAJBJJ?GeH zR%iKsnazW%C2m)4ll6T*n1#|Y?zQnQLMd3iY;uMKej-~$3 zCn^ajxLye0s$rbeS^KB^uuyXNTKAJ|_hP&=tQ|7kZtV7b5^`tZ?!X{(AT_vxe*X771^D&66Xx=d`+*#p)q03G^*&`y6eN4o7{v>6| zC(eHqOk9^MfAL{F>k@XD&r9o}wwud~mPz7Wi&tc-iMfS@2Hy}_)h%-3#~F^d9G^>b zZ?Dnsy)eDnB6!o5Y7e)Ji8eky{6&h>m&mAC#wCdUvT@RzVi|BkxC5yKFYINs`6ZRQW3wD^Se4kMy2WL&vR=+D-zavFXP&k@pX!i zXv*X%m%e+jK2~Y>X|5ArdO6gEw`YZ)#6Fi=w}jW6+8@IloiDk(Gtqe>YQpFI|K$qi z37s5k!WEd6>m9rVl~X26$YAJlh&-=j*>r84=bCleu2;mle*IU7@UV^&=q>Q*tr8IV z-fiZYx%o?X6_0jA>=mH|2IoEdP6S+vFxk*huO8LApzln^vK)Vfo&s+(W|>_nU-vIK zaH_6iQi+Xa1V^oTw}%Li?puM$ALiEv;1FFxOL{Sp9JNkQA zcf2;5(I4B(GW)^7jSJEwP94lvy1?=3x6p0JyQ(Yi9TqbXjGCvv?Qr+CsE#UuuTfz( zCq!liNt+f2ImkOGzT$c!+fXm7(45EcrLo)j1mo(QdX|;5q9iKkX?rX7>`I)_som2% zt(RwO+Cu>&&de3fuNC?3>~g*HD-ae*!$r0vrz?;9SxbV4**q$K&9^gWd6M z|E7K9x$Ca5Wc>-|`(2#cT8H`8T;{sQe31F#q<<`>Yx+DT0zW!O#%_?g9@xz<(4){0 zBjopXTA7(+Yt9daxc|XL$}8R~s05!ltD?a8)>1*|q@dGhmBLWFh?7NJ%%xYh@ioYJ z$@@R}82qU{r$ypPjJr$L{{XAzFYcD{G9`A&VJ>1?LY+Daf^NpM1O6)ahLp(cXf+K{ z+!0=JROG-nj?Sdx?8(m}CJDSd#FOdIHZA1XyB}||tHMu491yYgmlIebpxP_xG_^=V zcwrjP%YUBvRssD!y7KeaJcI1bb=HLs*Z4a!9sI;`r|&{ifMO)$tQ`xyKL(5LTJSro z)5*f%<1FuLmOdK+9tVyUYcIvP2)OPG^vH|-q}=3@66pG^k|ni4#J*>x_~WzfFvqHI2YUl7@?ruV z>m}~w_;feSy!=eZQj4SZ$Km4wN`eg9tGS~T zi;>8b(4=V`jt=ufPAIf4c%xC%V-kPCX>Jahik-(CE~C{&|G(reu$ z84;0L&z>-dNQmf6_jZf>EHgzz;UvRJg(+JuFrHxTQPF#`F!t$!JI_3|rt2tp$Eb*C zvrTv=(fvZ_-MmibCznJVj@*{H!Fcrd4#Vq}<`a^ewiWc2hF8a2V4YBZH{;Fdzq>oF$ zF|m`JKSh{A|Mq<4Um#E=F5%65UE1xoyUcu}+Y()#T?+F~6i9yZ5jHukld*xVnXkDf zWAg%`Dzlm0U0mGqbxfNXvlP1pi+(kBmm0j5ab$JQ5IxJ0`j!1+n6j_IT~`mQ_S4B{ zIOUjqZC)oX=d5xu;B+wf{8+rirPt?apkPSi%fhoR9U1%#AqngcuPPR?WF0ybx+mjA zwBWiut559XotX8ep*Hex+#R;fU*7+cws`WSA~G^E)Gn=jTNJ;WZM-R{cngR!B9#;V(M!a}4IsDsnGUaCddLV2jcyWazXztFWIVUgemBf?TOpP}hPfk*B7ds9(kr z{2=sB^C6a?7889pk3xq4CeaDcjs*m8Kbc;$vxTL*^ajI|)6W<`<@ELx?g$hsvV79g z!YtFFWK#d{4wIAe6#HF03hV#r%~1> zq$(fJwM5M8-2IRnziblMa_rpE7a)=SWGO%3%5XRvczfZ*1;Gzo7CHnub*R?go<3!HiHnQe%?A$m@A)hEJrYj| zkn@n&(D=|CbM-WTLsa6~A1;2JHu7s_zJ)2c@$B&6xDczXZJSUpP}3nI5@e)$W<`5J zh#fRenpZUV~q zR?xh>W!tZJ0&*$}p`2Xhe*)BJ{gCLb3M#+UT`cg8!{NrS_NcM|{{GWU-tUEP*gH!k zNvS0qbt-0exf+o0#o?u@{u+tc6Lm}-h1hE7yDd zi2|7Gc%-j=}JUwQo}Y3x{4Ajzvp~|E`+E z%u~XALV!>EL*~L`*^G=H^{ORl4oZO`8k~z67o5rCo|jqcqj%A)@sUeIy=vKfmcIcF zjSp8f{!%PeVlzu*e8RVgxBt534sl;>Jf%11)NAFPg8!M;M7R7*`ojH-`TRcJ zw|PMvjX!mZSjEoIV+|L)mb2r?34YGGlTLiJeY}(75dV^r?hC>idlW?!I%XVr5ZAlQ zh_N%FpXW&M!hPOL-ti<91Z;TFbwSe(;X-}aUnk%5lX;T)ulq9dg~WjouCw`OwM))n0h*F5=`^M|{{YnJ)! z25n!K@v7X{?YUR}O7cedtE9ud`*zgKc%xzccS~S~?oWp$!2%`^WD)RN<>$keEcA2muhYF-(i z(f)e;&t318Qx=`G@33<-yQ>!FTwhbS^rU>qRE18^-CSQLgm%={X!%=vmdvy%3Ccgl zX28YsmA@p7{m`+nhUYa2eT_RNxcE%;|6?n`>O7SSr_EPW)i zkFW4L?QZVVao}orfW6EPkE@(J+_it)i)(ng`;N>+FM+^rF9WCGm%pZT2L+wHctB`w z+4e}rl46c5jaL!A@yuKn%s<-LZQGb41cCyz!|p50OZmj3ZCSe^mW;k3?`e?tkFz2RxVWx;0tNVut}F$ z^PrZ`qM41cIHxO)FG2g$3#%D=|BjeRJgBebVq0QX^p^S0f42KSm}|tk4r(3JVeDY; z60+*MKbvtKNB70o5jEz`=cnxxw0iKXw{Xj)V$m)(i*GCIe)sj()%`7Iv0^U~G3aIS zdysCw;m78yU5B&|&grwhSSO$MJ`~JDb^6xuQtMdKk@qOAaS%va0R=9qvGqEUP`&OS{{>ww5{{3r3 z=jQiJ%r7dGTz0!@ovh*O`sDk+Ugx1;$Lb5Q+J-S+9skTGDNa12ntY$5zmP+@%#B?@ z`1#Au@ZU$=Zu3f?^A<6wpLycqj{rrFghWoa&Lh1c-HEJ5MKA4njtFdE^H&U9C^&bT zVC_48ftZFWr)!K^P6dp8&-xf=2HX5$oo{iaiN~+kM2q>j^);LK9QAop9rFHCd=hHP zA6FhIdQ!&5oV)d(Rj(6cuZ&iUWq8AtTE}k5~^F=@) zD2plEaqG29B~nf+TQXi=aY~vh;#JoDas#`NceAT!gc7^f>jr^Y3w$CNYqY)0+5~fq z12fj1vMJSJ-8tb|%@Q6F=D+hjN*o!PPg@@>7P&8Br%}-r@V_C9A@E?)wM!c!97CKL z{n%>HKb`+v@|<{wVDrIq0v{gOq)4-!^Gu1lkl5k(E84%2b*1Bc1qFttqs{Dh1YZ2R zvdqod&4JH>^R3q*9%nt~YgTLj-^-Y_iSg2-bsS>WM{Az&eY00Alxa}^mv)@#zdXl^ z{A{ipISn?u3XH5j)D_GMYhb>{BxG3YEWIUL+4gkJo#j88X7WdHWW}pI+~xAB=EQ}6 z%0b;9L%Mi0TP~JzEMGhM#vT^;3ib&m?iNbk8Fe!m7*D6DvusPBH+TM@rJsBi?t0Fb zDCuJ<-}d`1^X0~W{JmlSYejboYoBY&F~9Nu;>%u}^3SV^@qWmP zgr4W?JzTm!+Dr>bXVUANYw{$jn+%W~bxs&iMkJ@e{fvxR#|zb*eto|C-@* zjAe?5{wL#;@79}eIpn&j9Cg@|RuR>BY+pxMgoy5z@^8MEG|s9>hu%tv%hcs`H1?V#g;!V_EPnT5P6?B{45N`g{~3mTS=Mfb&6PSO z3p_S3mTLNt8Bb==GR z1ejhPFJb<%va%t6ZK}LTC6i5Mt%^jTVVFwLg8(f{p7`E$fp@{{zlE!anaJ*%S0@*z z@#0TM$+>P1mTupL$`6C?us!ndE;~_^Cz11@WqU_`V~x0Ke}lZNkF4a1S(AKrWH6O9 zI^}P@^StNy%^fNpx0ovw4+wo%h;cd~dsm{u-{4-lhy{mcPxNPQoxArBRmgO^8(5!6 z&iP{C^+mOg#bM)K{z!)lq7Ly2B`(KBIl|i*5*{+-KU`G2_;QrRr2RkgQfyYVezz=H z{y}|R5bK3<6=ox&g?n3_YS`QoPl^Ql>zwW`bZ^_D)a_vq^oCQ`am$fgfkl^kd{jhC zYN8^x7w~jG*I?SX!cV}QOFN%ywo|Fg)JNBr8VNmm!f}DceNsScSb~V*hnH>)O9hTM zd+ljVe6sJ~HHB&1H)b4?dVE0U;uy;ubY8`1}3MhBAllawCl$xPcUgu{p}=E-mMxo0O&)B_)w(BE$PrMdIej0?f(>$3hnPD5dx<=j znDymD*M+oB@n%OBJ{z8GOdj>OCx6_kQ`jUpg}{oUL?g&4D^V%m$)qA8g-b@hN72T^~Aj(r>5&WF7Y2rVjr;Kqm zo(GNH)SP>#dNhdepUa(EUnnTnr0a4)@|N+*UDv{U_jodi=)4Nt+aUc@rbl5-)}JF2 zw{B?Le&OSpV{Ht|8yuSMZjjvjp-y_gg^bsfIWZMCj~g7$st`*$QS(yeY?zwW{rF34 zK9X~{YIDDlu;bSI7n*mENvOj|FDI=#M0oz8YyVWztPhqe`5j>SsBP5yQA_H-3rj@_ zZ&*OEDf7LZJvMtHwzwzM7roMN`(pgfvRtH2f8UG)tu9N7+)Y?6tgyM5mQcNhb-Drj zCZ2*{QERqb-!`e`LQKu&^>_4-7bsLab^oeaaW$yYZ^3*HL7}Tn)mw!b0-5)?UHtcu zD_(d-*rR=)w-oGoV8?l2N8tt0=BqMn)1?Ci1-3BVx*{blsIh*wPcA z2lH#gar!ycKB;jy;#Bfgb z&0ZUpof5i*;bdGFRfbBzNu#QebD|W6eSqZ!n0YhW%tPd*{T1I&J%m! z^1wL%nDDXCmw$p@-hMq(skd_b4K*d5JJ%W1nZ&wnxWw$4EnP1D3>2Jt`S}g?!Z+vE zSi05oDIHCVP2&3hnP+*HYnz?+mE}QSUrjL$HVb1DI{S2LMI2A_@w)4}C#Obh-8K_Y z`P8!Q)!~{o|NWSLUYv71!f{VSNu9#{bJJ$C%h@>Ysc8@^w(W{*I3(9x$HO>FB8hv3 ztU$-K);*~U^* z#^-1M|JiikBcF?*;kC$04nCIerxmZ~*zt<~+b|_cSm4FGM)nZ<}y$ zP6*$xmn)=M)NWkNl?Mo$J`MR$CxdZ2|wgxUmc_q9A* zuf-{ptm%(bO%qjla8*>pPF%sJGw09+xesSHD6E)Jqo=T^=i0Q>TXcV1^AvJ=Ws;XC zX%UdHh%2S}=*Ot)vkLnxjulMP<|>(gVVc9^?sdoIh=wDHZ2e^|pOZdY|E}fwEtj!@ zrk_@q+*t!Iy#rlQ zGY)jT|NHA1M@InDpI*1eeQJv%PQ2|_4-{7``4bWDV#&khrev|7n?w4x$eivDIo2JI zi-jk~ow{-GciTy+vu|^mxNcS{C^2>4WP0m+z`5>5*NX!W*|_vn_?Q-(GOKl{d|S4* z;GBS~-Le+e?ZpgfQ63ff4_PM8G(G#(ro)ZJ#)2(E%h>wt_2UN;9XNc_T>=e!trNOD z%F|{&SmPt$z{!&`X@fae^C^KBTqh1Zit)DipMNf-BaXYnkEbJycL$&6jtOpWcC5MB zc4YaY!^XGOyJ}Z)|J%eeDLjpPfh&{!f-l>;CcR`*xVU2b$z2N9q|OD+KNTb=_shWb z+qV~?%pE)jUj4ez{K(!!ruSOQjsq-GYH3{!EKY?A70nkmIIt~Rc0u>!UfU^w%oprb z>;;&YGOmdTOIW0|_u9?+H0|SQ%!j%{SyMhDiB|n*u0hwGJ_haI?Vs9Tb_Sh%)kLwce%7cdd9)G?coXD}ce}Pt0 zz1R1PZdwt=4K_yq{&5&KGJay?NMf=OD|^UiQ94OpVR@G0{OTQ&Pqqu$S41#$FW}7i zd`jchtJyzlZa!d_y6e`px_i!Qa|Vm2l_mE=8w!(W<AfqCYW{SqaP z&F%_}t=}Xn?8O@;;&n>d8C&)*`p|p%ufXdC`AtnC-%FSq99bOnf+D!1I8Sf%g{ky^}IwX|(CLD3&w|dS#v+Zn`xW9(yT7i92axcbl z$(%BBm>VipIbSJt`t)PkGG}M)V`ll2sTd(_Aet{%VE7{XAMlcE>SFkP}< z!ll>A&rL=nLhYL7m&5V`4SyCf&Nt|e(|Hgxg-1_MTy=Saym5`O@S16pYAQmsyAL|a z2E2B&cpR`S;0w=3FAmvNtHd6wE!kEoa5pUDUqD8Sfq^eWx1R~qBHq+lY9_N^Nv*mN z;hqu4_oKy5wMKGd0PCqzhX31CTAiHw?*CAmk{Ef}9MoF>BRZgbSM#Kp#9kTizZ0GIM)D{GsOa5kt`lH1wg|df zb>+wR{dMzm4rKTDefFzXFqqEo&7rW*VvC5*`x(Vcmo;whOuHw-SZdtRu4tBD7pYdy z^p-{LP2I1qKNn`Jm@@q8Iwjw18j=^Q!{k-}xKs6j%-TOS%HlC90=+ij!2!(o_2)(? z3z-FfxWI{A__`((`9gA(6=GA^*(JA3Uzd_0BiU(&( zG`kB{)-V1pQozH;F>3?!x3GY4zn6y{eu~H#+xPUfs(XFvdd_vCd{M$a8AeSTotPPI zcjG=bU7PTK+0R{dy(Zo!e!V>Y3#PX14ca&>P5XeW51&&_uFj+~luuvVAF zRzTvehl{e0LUS*352N&6lRieFgHqNf_UR;Mh@E`z`Bd!S1&dDZr8D^(|6BAvSX=b7 zV4;_SqfU{);(bBNG2GftGRrT;HaPuXvXC+DLH2@dHl5Ci90GPlJO$PblHt*n2I40e zMGUeVb~1-cHnn3CcPmI%g-usOcCO=-5v7QPGglIKACY@}rxHh=oGY z>f@JdnG{PE?sJ;6=yykDy}N(i;qO*w5ufS<)jVt*%niG_4*$1&S2C}dIXvwD?r$*@ zziaAsPCI69ZG6(wn@4GSxzIcf{=Q!hN75b`OIde+x!Ak)_`y3a^GsHVIVtepea>Uj z%OY%X#io$Ub4%Modsm(h^O+d)7-SpjnEsT8tFjleU(@UIW2@Ctms52#pV|1|Y)<16 z+5h#gxxPznn^Q5ta&wxx#uS%S9n&DAOUaja^|7pqQ98x9oiU>0glg@NIVC@Y*Q)I~ z^!%Hiz#OF)G7Z%d7kW3}|GFZ0@td0mWzN^K@8h@;urlsD2a`lm_jm96S7#`PZwclJ ztMvk-LT}SGhg0>UE2?7 zxo6ah)tOYzc&J<8Y2sq-^=M7-hYq%wCR?#YYa_!Q9Os{}G{~1>Gtp!0z7%6C_2+n( zM3%w!FNPYI918TbB9|}yY#{h>bFIwP?@nJWru;q3wBgXF_PehYEEX(lotz}KF!uYZ z{@Id0)|FJQ6mgUK#GZbNq3+60j{f+f0}8FT1^t%E1l6lZBv_O$zr=M``Sj_;)g~MQ z5idg4${m=rc;_D-g$+7gUv4=!D=Z%pBryzFp8H2DF;|4C}b zY-}|Pgsr_ygX^#z++-!VtC2qtcZw+h{fa(JJD*9<|8~3 zGMPPjlJz_*Cj{@WO$jTB3t2GVCpd{;JZ{R{?wh4tGgD%nT0g5hMK>SuIb+k`p*<_C zqgp_-BU*5k!hOLGaW%Edu8D#j0^Xq$J2f^L+Er-I`pA@(S1c2+Ah4(L;NexvMdx!I z_bYnQ@~MFPXG-%Mj;5|01{;|rIT@ijIVQ5l+EWcwRAi5t?` zu;XI?=slgPArBeFHzu0bd%AL*6v+v-lUrb&&@d$?A!hYqgALt=-WOfhaIgwYPP=i- z$D;iN^Myy6oT2|D$+30Pgqa3WB1g5&eQRGaGGFgv?_lITw|hn` zlk_3pj0kZ4p-nTIkunCXhJ}H^NU4Jun z9@8%M48B9}(&ooYeV6@q?0UGz6$JR z;g7m|gPs4sS)zYopjFy!7BxQIT+>LY46d_=%W8!67?k<$F$vw_%9i~gqxrD@GN0;% zM%xTWTW`HauDO$^zCWxxfwk(-VUEz|we~9gJ|!u&3bhRvm zudGKV-wBR#{g6Xfn$D%!DCa2}>t;12N_b6N8sEU7T=H_d!aJYC^F`XOxv5A5Ke`)o z!8-{$|)yChbi z=-c8CDmQ+M1RKj9Nq0D)*UNKH;<3Y>%gl!otZjmX*t9GY`-~>5GG9Akc7f5iH&viU zibaT*aWQj?!K%ZH7CiL7UcY-Kt3gQ9ZDl)ihJ+v8?#EeT#FtKWx?%c!U6Q1Q#Dv|s zeSsDZ&gP1S4B?f^jEmgYUuE2}#DB%tM+)n+B)rcBCb1agHHccO7~g7GRk}js$o)rt zEB;^nStC~e?QodS>UE4yzKJB%33qItz$CQ(PUNQis6%!?-uAMH#Wm#Vy=X6KX?|t! zDx{?5N&9XS7Dvv-3--i$cZQt{nzX}^GbX^{!?#xJ-#=`xL>Nh#?aWwc_$!>lipAI? zJvpKvTc^+1NoQ{iqmiI}L0eKU5pn8Y~P+O(I2Rfm0J%e4+-ddtDPYqP_LvyO9itzUS= z#^pkHErX-SoduIZB3y!-A5QyJ?`;y|!n{An=>VH;&!bWvCT^a~=k|Goa!B-uaP7QR zw)ilU^pBp}7jdm_4Db2-dISry8J_)`Vz@3%)k?>LGbLr$--Lw>kw$)NENic`|D7Vj z&}P?c^E+eSx2AmtEG9gu8;lRt$FfZLvij7*%|XxV&U<^y`8{T_z7coZDtqPq*N+Z9 zjkx;4XU*0^2mdo4ZWSMVXE&|iO{47SQMsN!Hl^JTmR7~-=?M&HjqCLPx=4AyHg->U zjJfjtlI+xOo~DFltG8v@_6@CCJqmPxe_U>!bNmjT8O(8;59zQ? zdhQ`2!TjXmB({e~icBRu_K6gyFvrLg8FoxNF5;88;n%|*A~TtpcYis!;;;x~vcSy! zuFkp(7&|I1755%I;IhZwZpYh?%Y6ha_*+6hoe)vjm#Zt~I!&OdKIv`uy@QXhs5In$ z=o5$z@ov2oG5Pd2H-$|JdJAlXlavpquza$pWq0G6TP~1u^Ky0HqX}+2yk&X^1U`fm ze{DU`(pozCX7ToW#TD!M@&z;!W_E1$(PMNj5^*c5E2wxi{oXx>GOf5-DV&KvCb$_c z;cF;mt<5^PyqXX_%IdfL;H{tj&FZF?@ON)okDLd)5 zO+IzLOwJ<57G}Hsu$6ybS8*~+?&lSg`X_-)ZKwK9cNXYPZH?SAPwXe-jJttzKFB{+ zo2_xN`CG)d*Ua;)1voFsTxSswu6OBY(RzE}UU|Lm=7zHkmQlA-8FgzJi=w8!=2_X8 zU*pm?VRAahMR73^gDp!eS!A^QtuxJH9;e)pclc-&b4+K*@VA-TGB3AAU5#Z0>l~Hc!4eNy zoEm2R>eOopf8fKzWp`-irKWj%0z$(%4sSK{Q@`cAv{{b%(c?pm@mVq74^L+Cyyt$# zgyY@Z;4Bpr6XhQb?|jzqds><>SBMJy_X=QTkrVx2%CojCFk5-mpU%(&yB!%0zc^&` zzD`7HK9iT~;bO6FCy80j3^o^TR*135g)yz!9B`;%vcE}iL%018SCQaL5+_=nxi&Oj zFt{IF6xh%`AylG8Mj=?Bc|wQp$#Rj+4(=>mp_&R08XFpm@(V5dM1n-T?wBjc{A5_W zIVad_j#v7dsTFk}T=&Q<4hlD#7SN}=(Q{9!4D;5%J?&D*7#J1nT~746cQbE_Kcx9X zHvG$y4{?Fl8MJx>U)YP4<@Gi(t5{ca)K=-(U93v<|}4#Mc?Ln!4>0Wud7UQHwa|a8e7b9*5VW1#oRwvVgAuF2a!u$ul`OI z)!_aUTW%e%+q2fQ?eE*t&z3oLNzN4q@;x-Q9&@;}l-xAlU~9eQe`(p#-@m&*m_Gge zRbj@TvNg*#Fv?o3VXag3k&aN}<#+2h*LX1D<*`cwGvfso@bc}HD1PUZ;@&^)=#KB5 z7S6m9YZZHzam&kx6bn?({GqX+<)`WMnAU>Ab&||6mO5`@7IX0=mheQMtkZjP_re*| z7uOCx-I=l^Guzko8pjE_xLTIi=DpQ_nF_*sf<<0ObF`%_De!i#wh#87rGKs4-RDHK z#IleLoaZ@@&q}azm?v~|lDNa6`5_V;Zm=!;wYz@xl0y0KXO0y+b-&J;{577#`gEeZ zNU)Z+vzE>6bEez=C9cv4xbr%DPHOC$sroF&f!ZhgW8{3h^I5Dv6x(0Z-IlH^z5KIv zd3#7?dzOq+d3b=tiL6<@UQ@drEdF|#v>q^!xU|N^;?5hJITB1~BJKTmv`-M95Zn{o z^YBTa!mTr$vo?6NNwU~`sP756_Q}s)AzP6lxRz}pdy7)l4f8(@22q|feE$^u^0{Mj z|8_i&c8~Q(ucVV}K8P}%JA2u&X_`0-|FwVH6|^tN*fXEAzRBM#%ed@k=7wvh1C97E zJ6j)^b^B&4=r+qjrVBS^46F9mBsurMxaK=Q@ zJ&R{B-{8-=Snx5YbBE2FVE?W|!rn1CVSH{2uiA&{tHpAETswh9`}7Ixa{&RxAKW;a zic%bUMI?heuIYPQq=e~+*c>>&HRyu&Wi{umXQj73gH zj(3rIZ2jH(-@ocj-R+@dPkm_ zxpdO0GtNC;9L_}ovEIRHN>YBSonxOzX3m=Uqq^8RjCuR4wd%KW!g@dDNt81Gy2v*p zytvXtqsqc&Q5Z*u4M##{_?h|V3pbny@K*@hvLB9g|P#e-3qI@NRTx`q|<6pD7|| z+Ao1aV&6+d;lfvybIFy&9rubnY#({1d6|!ju-q{lPmYr(?w`+|o}UyK8Gde@rcC zmF2WwJ>l8Gt)GtD)?Sx!s(2}QPkwq!xS)M-=lvNRDrZ%44wOW!Y2wr8ynXf`%Y)5~ z9Dh3gUz>2?MBb;Hyk#1XZna%m`0s{`r2$K6klTe1%Q9yz6XW3E;NY1ht2l$_kPO#x z3B{bWOXps%xmoAan8@>bzxAmS2T_4LEKwH>w50hW`u6+CDhOn8=TE(DoW(jm8umxOhxfQUtl4FJ# zN6lpuUk)A~9-h)m@sVj-mZtmtHEUOzOmF|VtJc@o*C2=|(JJewOp(LS-P|X)pG`=R zTGf5|kQj%F?`0E^Yk4FNJv_MjgoNF-54{^U$8Q#zc4zCa8`cLI9x$`+w@GWPiJE2- zFu|eG{Q!qd(4-p&nRFEr1?qc)nXkTLxM?{j?DKOM3Ds07{vIyorKa5#q2aHE|F2!I zofPDj6LVO^ZtK$b7R)vY{LJFNR{V>J*wf=!!h9yg>RRk6)+s9vTPa+db+KLG#u4oY z`*!iSb9|Vf>{I9w!w}xo%X`R5v}^gHB!=gcN)Og_)JF4PnN|PhDA(MCg(acaYuPpy zdI+Ut{8?~w)sm8+0ydo@t9jqv{;hK0-+%jt2G2|8yBB|J+*WbSQ%$*}?PHy&Hq(|% z!$g3|p5^?*XPCkSCE=ub^k&%ukIo3^Vec_N)Y62TY0nE(Efb4+aiqJ8MK-!I(>HvD}Xo!O7u{<`t!S6U}ap(XP* zYo@Z*9->Fm=P}pQgMQ0U(I zGTiHyOk!hxTT}PTK-q9dX9-*LU&b#P(@b{ythlz1|Kz7FADaT!Itt0jZ#(h*X5X5r z7p^#-)AM$`s%7vtPgd23<68G$J&78ZO$+owMJD^KWjj05?(+?05$E1}T|17laNZM% zT5#~N)%tI(OPskYnyz_Gp0-3*Cpatn_6Ps6zEB3Xl3JI8X~AKU1{Z${HLyI+8# z``WhVXG*`Auf3dcBiE#Y`co)L=R zIobWmhxr^=3s2i)Ue2gFpI6*qIdA?F`2#J z`z9WpBfMJR`xZX=JKuFRp9FpG=4*UrnDc$pvxgSOk$()nYM;w)Y238)c}Wi!cZmT@ zTh{8X^HZPwG<_-XDn~`a!jR3_#LrRwgTU6<18f@I?=~=>mC;B&=>Cmk`^y~<0$wXl zG6`TWyB+>c>g;`kJHcGeJIey3G*(7<1Z&8#G2iG^%VPJ*{2S2vs-*a(hvJrnHAj6W zIa}Z8K5fSo{A7)vhP+5+_nNZ`3u@LLlQHD5tx1{1^d%_# zz;HwML)_`8sf+sm*p#jJlgv}!+>eH}-9OH4~lzzionC%<}*01sUU zy(yma7tLvIbbTnO-mvWK!#Qi@=jAZ!-IY6VwpH&Pr+^t7C%9&9pvQpB_2ZeH@g?y)P8arBWiq>b$@(Q+<2Pw%>z5p%DLJy%vSC-( z9Dfy}b@2t)0Y=q7U$5PtwBy}{`in~(ST0*1-L87)n#-E*nj?NE9jv885;eycZJ z-okj8$A7}?u+VcnVz>S=Ow#^z@L$$H#?!65ZrAE`gEKDvZ~mv&bxvXF9vQucL}Qjk z-N!A$%q}#F7RNg7Tk!9H{euh+1`Y!g298JS$)zSoroQIu6u6XWzb-iC?agOC?<3A7 z32=yB`rZBP&o*;*zMwxWGOFEytSy^A{OK(Gqa#q7|HjxI>+BuC~T_k z73s~HwW9yftY@1_cNB?j4TyCzgZ>< z`g~@wzRIyh%kjz4v{SsoGMYz2-esS=cKsQ{p#%SK&ujUlz3*{!R!}xekyN>#mbG@7 z(2E|0DPaj`@>gjX;`B1nmcko zqrR_XX3&uqzaxyLJJ_Wc-ljSMvk= z(lRgpmF6|Q5sbC@SAKCc{ytVKqr+5pw3{o>-uPR&aM6x(-Vs(x9c5zfTix4Y`YX7#XL`1<@h{t?P5XcXW5ylUYz>(^N&ESje;+)rE}|pEKB?}| zNoGH8bCt^vX4ctlDe<{tEauT%SI6{1#lgv}LvELd5QoR?1Ls#Ruy@>b>3=7m)_jIL z-xDqurIerb&-LJCnl3Xt_uf98J)v*rg(tA=XK-lxP{=6HrpCX^UGm|^_lpj#mSqlj zoOf7m%iqw;jom++|0}fAMciaiTd-55lwtky?t=Cf~KemrJ%Vo{~HG;t|K%$0x#lez?3AtG8g7_gt^LJGky>)Qv-? zMeH+b?+5NuFnm8>CNIcMSn|WwO^shPICKxreXsCZ;l+KQidJ*GeRY1DUzPGU{$!Wj zU-q|_HR81vbM9<*)v3Skv2cjoi`!CgSYTT>%dxj6*;)%6Ze>aAt8-x}^E;(nvnk*B zr00R<+v=vPPHg;h^J~9mL;bn@4t8z6wGSGzSpFT~xBiu8IEzPB%o%r?0H<&-*%0

;#Fw{5JX3^mwADn*VXs%3k2##>l_qF2~Fle;plows7Cze)YrncR%j& zIWakJL&PM1>uZ|)?U$77zfKKlaSQ*)-}b=bP+G!$FUA9p1h_7~lxWv@!sILHuiI-D zP~uVfOQe7$uXT;r|DOUv8p|K>FdyTv;5oRSt0{3+uivNrJrmBJZw(1iF*SjT8Qna*X_Qf z4}nZNS}|K$-v8j`ykTZ@aNEJ==k_%T8!lUa*RIu_xlN{6zHYms;L>;>hnkzOO<8h` zcGZMV>zQNFmM#2>QS1TpQR7SR8`%GGtU9uw`Qm@&3;P@%o_?%+FnYV%l#N;Q{;IKY zapu(Ol}ODL{K8q)!Rh<{LNxp90s)nU8vo8oYJaz6=_)N}oW4DRYZs@DmvxOoh{fKc z<)w^4|H_=FGwy#fPe$Rjgd$(D#d_9I53#PTouW%tm#eilS#o`F*mYcSXYb;_UoH9f z@aK6p75<%`vw2*6-O1rA;(kZK~7(4mnCa$R;;wxHAOOz)Q|aBy~CR^6UAU-Rg}C>}Q+ z1K#cn53CQw@I_SfHy?8}ND&hJS~)9;O;AXf;nk%B691UBkHs?|Wv^3gUAf;Nb;leA zF1bP`$!33F4j=PE)opy1zPm)c<}&Fm&0yT5a<5FUj#)sgD~_phhU&$IX$#mxHQrbX ziJ$0lV>>9uBG|lTokHIaPku8#p6gpP^&5ZRVRU`6>H52e@)z$k{+AUyJ#T8r|F8c! z?E`mQauW$R2xh*hP~%vjH6>vGf`Usq>DsGAm`gc+uztMD{EgYN^huqf+JWBE1uazq z+^nt(&NqGVQ409$b)(cx@M!SDj5mA_6>by@bc^g*S9UWk<4U+!pucZU&H>>$wk$H* zayx)q>eR~GqkBL1fgqEV*~f)`H&%4N%W)E^HB&va zOvZj+$=%d{iYoamMchH+Wz64S*17Q+b&6~(WT?58|3iGHU$@z;nSVN2Hue_(FM42~ zvLxO5U9HyrJ@vD`&5N2AFDYd$UnbZsb(z2TMR3iXPMeMY-A{-_CUC^&SR8P;@H0a` zH<9UdYR2ruyP|Kt&X)}`UsA8*v*ri?J~pl6ZKft%{AXV9mAr7YJ#?Vd$Vc}Un~>Z# z4cQV?yD)+I*AA>GIuMkWKYONEP?Q>bKyt}Bf8Gg6jPLsv#J@S{px03v*tO<1>q4>F z`YSX{eoW(=ba(2nmg>bi8@kPR>ffKPTM|4$h-uBG2^S8zEh&EUOfAHrFE)*Zjqi%D z*^N?He$f;MzDgZ8J^k=mjF#dOTsKSjuEkAb*w3mJE5iZ>mzDmhnwY}*@|uWBw^y{z3FrTdqv{zjF-L}n}^-{xLMQpBikYswtqoGiY|XELU?hsZ6}$-EnrW$yV@ zahFf_p86XPiam06+n!WVuH-xM`KQgP+dij_6wWiAi#fBk!G?Xw*$02leUh2*{NSGR zhjcEm?lxebvz>?ixV3KFW`Qid@S5{`E!mE1gdNYC#^162fN@PlWCYu$!IW{>8Ia3!Xe372ioUgnWFAag6NHp@oCweCyX+2Dk7nW-~ZnlH2O77t64T^<%-{zQX4-clmtM1Q@B4nz2d zmrWeq2W`!BX1$%Q@M3DhaYq)O86P-iDuB&55O5G#m}z!4K%$XBrhMwcC9#_O1fB@owxM4mWotEbwuuwP$u@k9LgUy7T(+5jG+F9e+0*p248Qc7Jup30^kd z{oSqti2+-gPRuYp?8YK9@5@5&7dA^KG8|jc+taZwZ+Q#vl#50}_ZBn$TYo5vdH?%f*Wma!j;KBFn-z7u-Z5E&G7M|7q{)%yZnBAHg`SWGk`n$2A)Ni$1)uBfdoP zDaQjZg-to1mwFszIQ2Vjy+8ffgQfq0&;k$ROKuu! zb5xehdais{XNyhOggYH3XFa4duNVkDuvpVDwf7Vwql5Gl<5J5!86LqEX)6uc4nKCc z<1)N<>@aJM?>FX~92sd#BzhfZmok(waoW`Hob+3GelZ(c<3Y)j3S39;1#>h7a8@u_ zMWqWH#8fj;2k#jef2F zmwXB{>E`td^Xc`|xfv(jz#ca*%;vaTr{hDl5VnABDHGqz^Wq{{ViHm^8WMaj=Ma#j$Vm-ooYPvf6h)`y1B^2Orj(k`jk*x$>3W zlsa4=l5?;jeTztZbA?7l){eF=52-*Vm1s^so9!&Fx{8X0^_OPfNPN)!Mxa#nT(}$y?&}iD}0E)r$%~*mUq)d(;#QS-;`jb8Jh8L@8&9ZbYWm-CuzV z6c%(e3_l*0%zDMPspCU? z*cayqX@23ofwOuyB(!NJEd2dt#{w?@NgvPF&Tmmw2m`|y+)aQF`a0~CgTy*z}K$*2c_x`1&d;jlPcY;f*NjLaPP5Fi!Qz{q_bY+&w z^){_2S+d_sl&Hr4bI^IhLhc3%xyw5kC z&58U*~gF>83o~rCA_vpuJ)DSD}uwpu#VVFAjs?9B@@vzQ~y&4l8DJk6ZDgVJ9&MQ$-Y zQdGPBMaKVIQ=Dqpt_C(bORSu;^8iD0exhKj#L73l(K{HLTOYK|dzN{RM?fJ#WkDF@ zyG)G@7v?Wx?~!Phm&wuja?pc=;Q-^|S+0)0b4(U7y~{h$buRvJaNFKUrF{(s))(GA zo>?Q;>UG!ChDG~C1HaJml)p}4%qQM5>KJo#6>d{pgaj@`6)Kwf7t`gYXZm_hyK{YBau0x^Y!2^ZE8?P;{@6bw6Xn%c$eYLmj zA{(6skz`#L+xlyUx~~jbFMNu-qOAD(DUagD_zN<;nm_GX4l;j@KB3)FQ|0`qzUjlk zM+{ududR<3vxPGh@>X?k32Wu8V|JRbzg@fT&GH7-l3#qxT{fF~lvtkE{bNi>dDie= z`@ZeILdCcKrJ_B5wzwJ1Fpxa*qf^>y%Z(YOJJ@3%#=hVAsJV*!f4!T9z`i{^8rCQH zd!{S+*?m~Iwq2&R|1Ez@ZOCrT&nEnuad+?Pgj{>TVjyY6c`o6>3{CCVrdmNeemHf@ zWw1@I*Pess(23at~DU-1+?^82%h@$&OfHyQ3< zUgvKvRal{LJjk=C==S!Re^14Bg>h&KWS?$0booX1>6EV1p%!Z%TzbTPpu?g)q-#@s zc+MT>Qr2F_f3HP^5@KgFR-Yi|#U$LdgnxalP>9;RA7$*5T+~|ZVjTMNAN-bSy_b1g!JzT*p6L89>w{-r z>3(tfZOP?eE-S8lv1z;y^A3hcwP<>(G8|w?XWARcIw?;!QTW7%^?Sa^?=N!QF?+gl zCrj5a*7vr4TMs9_?iLWz^Ph5tjjg$KGrJK#m;8IptxcczcDB!Hb!rJ-daRtiv3{qX zN87Zfs9O=agy#e6#R&ep70X=hwP6p8Q+e#WIo=_X!@9CQ{7dWtbP1T z8;{SAyLYAI4gWWH=eiu`690uq>P#AY=J&d=J1pi&>!`W&S~SYD+AZ5?O305jvHv2r z$4*>m!%|`q-&b>F+K>G${MU}&d@a80?!sPH-|lTXa^DU_s80)%WY^J)cWC}Ez&h{D z#pWgtt3z9NOc!xxn`dkNqiic{NubH>prZ%ockB;o`}0qvWl`_iw&J1>_m`|>;GaML zo0(wG(q;2@{byctfL*%YsLZuXrsaS`uQ-nkm;2RCdiOL1(zZUbcq?>4Bw&kW5A%5! z4rzvk39(TxqXQiU;uPWpwOw{-C5K4ukhCreWWFBuQ*4dch6_bA-fJ<*sr`32lx%X$ za>nzFxMByNhr!+_Yl_@^?RTx|wQap*Gl4UwIO0c>*tZy83(I^nFU9xXclg+R$RYTC|63QX zrsSY_u5KQ#PRS#YUznF>&WebPh+H>e*A}+lhmLGN`R-9`K>ve<7X`(Hrfl9C;iF-< zrYw_hURe;Q`68!j594}G`b30hly2$1zma8Q*u!J>l{x~Ue3-s0b5>?XW=7_r zP1DL)FTMX>dhGR{X1k!PGHY(y<<+>B6wQuxwqYu64G=eout{;&DXhFD#Ky#Rgw0SZ zq2Bs|PL9n^1@9AH9ADpxOHKHA@EtRA(Wi&}%0)aGZ_AVxh;^Is+dLCs*|Q<3S8~7Y zdItuJ^%U3&zs*_%z7Z|<8w%E#c%h; z4lSP;!x#^hPx$J=aru!&Key@(re#Lca@71oq-IZu;};T4c<`HFP46LY}EfPAF| zmS@Ed$MbYF8ynxdcj|wC(X;QDl>f}X=ERg%zG=>~g;FivEcdtnKR%(@=IrLOfMy2{ zf!;y~aW0-WmoCeAJa$=h(oVo`pX57#VeX696wg15FSvQv>(;Y}JqLwb9FnSwN^4kH zoDW{kk1iC^o6xEg+#A=VKTUYvChp!gh6fsV4yd;VKK;{i;~vuvv2Op{wJaer3Nss- zg}cKv7OwG1VB&u#!^#rT%KY!XUY&&NH?t`cA9y~!UV7*OJM#(QOJQL=^P373j~y}- zP~O7N5|rX6VC;AB%MGs+JQi(TC8lSZ*j95isRWt&ammhlFgM&PP_yxxKq==tuOL=l z0cDQl3#`BRitgw<%)TjdQO2pahbd!?w8Zim1qsS*r(6zSnBT<0_D!RA%GRIXAKX3? zX%!S4xjXX7y8rQhhwLso%`oin>JzYEz~-PTWVlDc@*w;ANHr_J#@Wh#m*np7-V;z! zH`0o+(7srD@Sq%DP%69e;e_ii#OihGc(#>V@G{qhwK{&;bo{MK;-mje9~E}3`+mPS zgGu{>@caM%e%(jAJpOe_bVU5?c*5~A-myiCNruV#X3aB(Gpw=8nA0=_KFWqo$&jl# z#pTV+pK-wIZR3HkE0fp!-}bLIKKh7idA~@o>k7@3-${G(4+U79cjEf>$Id|Lh~6hB z#`~OiJYGip7dh~fd0npIE;FW05*PSRH$)u}G~q7rHD;f$nrLvq!oTG59UFFskYhir zOG{pgo%y^XJ}!2?L4gFb6E}n6ij)g7FY>2!b3K2nB|k++{=1S4N3BCVPn}i&f=M3U zGJoo<6&}_vsF3XSF=Xr#Vff#1gGGC*AP3``iZ!*b6@_oezF_`po#(U6m!-~m^~-aA z&YY2#XKv>)F-Y^3=sqy>%IQ#e~H%_$$4$~xXQ9B%AaX;)wq z=x%Ud7sy<`rdnt9k8cOdTJ0A_oY1Mav$k^j#ILd6j(?k!_V1z-4R>_)^u@JW^_eBO zw14jV&y{}Ei7%Z|s++@vsi81Dpx}bMfV;g=!4CEl+P_+R6sA}N@;b{)#FyyaRomiM zdXVKngGZ-?%7zoU@w*m;bN)#-NDSa;>};`>4UovRDH7ixb@0B5v&YgR4IKlAp9lWQ z+{$J7|480}=GsmR>5BSUe{0R|>zjRX0~fqoJyVgE0xwiH)I8>j^6 zYS+f_-?@~?5fr9-*q({^$n>KX+cTs&nH;Xg=6xzz{zNvFNkG5FlyMGg$#YH4jf(;@ zeA2YePrmem!O!LUW@mx;%nNVlrC&L9vN+_zmN11mlc!CdpLS^u`_@LrtR$8zKYSeo z^>|q8QsQ^akl1rSTC};Eg|RfufurYL$Onb;n$-N7K(Ds9A|JlnM_MdckmC`*?ShQW znuI;u>({Y3c0QWsw|AvLLYdqOhAxR1PPIo8S03^TtY*0@lsN5zj8B-?fthml9k2eb zQ}}Q~Bd9h_z{1m0;j-$2mXlHepZ=X$cx8>3&JDkSEjqq?&DZEGHZU*)4` ze=^BqX0Xb;3H@48!8S3a?o%h1wR!hO1e9Hj&2c{DVte$QoWudHz~uI$EK=3{^0N*k z3+>v&+j%<7fcvEVqyLut+l;io>o(>VCj8eusB-7%e@30dzm_Q&$W2yB&}dXCQGKz7 zBYsne(1D3}E~_Mn%;XI*TC;o-AAdVre@JNHN#jowQheB$5*|)wt2AL_viZll{L{(X zkwx1V^-NJ|aXz_Nf^$pmFV=zsaYiBqpBvgl)!^gJM*^aLu*zdHeyIBCaWO)+_~?s+GM=a}q2*-(P+y&T+}iH9ahDug`t2Z9G$Wp*KYR ziqOxne_MKdd|i4&c!D~8&b>d%$;fiBru9y9@qO#I9SbFH^gn3-Ez@L{J1?h{cXQMh zrp{t+v1@I{2GN=Sr^fj4v3M?Ie(}WNpx_*t`){n-i*`OtW)A-F*lEzZkk_{zCc!>da}2O*;5BO zVF{V)6D?<(&Z$d!Kmd9j;D@Ntt0ar?LKZ&d-^-kkmma~Lm&*z&vB>0?pA{Z~Q@~QmoI=t({g;(>- zD#9MQ|6#dS9WkX;Ft{z~$!CUHf2@y-#w#3e>Hiv>%)hPZjl(?2&z`z^JSP;Hjl`u* z0vBH9{37^ho_|FS$8RoHnPn50m5#2EQSu0IjtLMDSSEErLOYvl{UyU=u{>ppO8ea;`6BYJi!j%U=p0VKH<$ zvyY84e40v$h{;v9lWC1Dq6!^p%qAfY^UB2|535}~yHY0S!TgU$Gg!PH&wRoW!Xww* zkj=S-z2kaV(_OY{Q}m?1iW@I~6MOB2`mQX)i)+0%Tfb9F7H0R~a79ZyzVlJ^DTj3C zQufYR1`o9d40+3#f^|0=v~_$4c0Y3`AiL_v_wc2cZ1~;NWK{ThY@f6ct*LoCIQ0ySOuUu`tu(W+vRN6THPyk%#m%F{YiW>|kKbVh)}zJjC70PW zCOBm%Y;P<%5_-Sj%a<50<`Od>m5)vKhqf;=FgP}~+hytP%fCuQY?uBiW|4ol+|OXg z>kL^o~6^m{Kb>~s-J=rnM+RVrbXv$TDQbDO~Qewi06tn<|Quk=a;YP?pM<9y3w&S7tB zQ$EQU+p?@PF(1R!bHjb=8jLrdl{v@aSl=w~`F)XQiBQ_JG;8r^Q`CbuFbYrHeBV&S z^k~ttWZ8rAOngt|I$d)Pw=KOGrnmcov4F}1?SiL*du9Ap!~ ze^PTLbIEJL)2VHu@%FtT`j(1kEdrgAnO#&^TO4Ltu+K2rH0#4Zp%-@#dD*%77I3NM zU0?LU`d5ikm@Ef#i9||XULH${Flz}PTM1`xTejMgO+8U5Dry!|QMV^2gw#BUaSsgI zt`HMy&&szmp<@Au{me*w$9toCvw8QKdBR-RiwYMwMUaVMwH+w@7m0`4|sAgU@-4pLpA@mmT(X zXIwf(F_XV-hKi!(h6Q#3w}YRQPY4TLqomM!^5A+$nR`Fq+>EV=jb`V#=8P zrWG65&b?d7CU<^wrP*qywly3I7PmIvwAr;bW1Y8<+N$5?QB~{yF)_0+^7FIuGxpxS zBge+h!Op?S#m%GnjZJKc0Iw#aEMwS%MQwcZa~B?FIl6jn*q$YgAz#8>K0gR^mTgmX zTbH?xhw=MWnJgw1e*-18z03>>uUotogIGlpcpBdL^=$cgK4E#8;{MY8HHq6x|GZo- zP-D{FY}xD1bo<?5( zLRYT1m%@@!@Z;b#t}j1b3k0WBI(_83#ca}I_oA(XO`p>cHy zW1&ICu9G49J(hZP&Cc)k29#J?thl=(AmgdKpU;U>j?THSCySiBmUMQiti1Qz=xy77 z?a@8e{9emIG^!)b)J(F_Q86}q;xsm1H&4y)lUom(Y?5mTFxg<2s3f`8`5Hqplh&yZ z3&PeE)QCu#* zVHwFI$19*p#I(^d!99X zh|Br?w~V!juW-`>_st60TRwba)^6`Sy!gX?gUtGfoO=SLqQ~9u2A?k5&Xd4=#Omr1 z=lpyP^=StWZnSB9%fCWnoyVTVx|29==oKH1(p~4`7BXw|N}EVNlea4pwqDk`;1Ypam_E0@tlWnlw{TY>XRaTA$%qtp4_@} zx^Gy1NQN>jILv!v`AY+xqfFLu54O5jJStkgin+Yvpo$B}k>kusMJ>~RE!Fw@MEk?j zN7^^FUw#+3;~HOK85^JwSmm*!J9x2Czu+{NhBNYBxm``e6_Lgps`#kN5 zR~{U_f4)1z@Q)bZJFW20^KO1_az7b9zEqI2y6KQ|@&6@-CC#F42Jv^rOk{W^#djV# zt}b4*^YGQJ0+o6T9)@av-K(O&STUKIM|6Q^`vUu|7w#W$QR&~_u!B?7bju`r%T0os zTbh0}{Yi4)Bh$>#%(BpB!kVNE@7)d?{(pKBA`;)s(agixIEP0-WDbwf2?-em6F2Fn^`VaxM<^^A`^$^`iIP)_!Ww#)M_7- zeh_ue_PF*9?H51Y8m8M{-!J?&*|lM5=w3;U%O!FGB2J6B*cWoSY*Lq$beJWh!0;pH zgrUp_hR*^wq@_e=w5?rdx~Kb5l3b|bWYa~>f3@aZvJ7x3i*dTE^QLh(i_FO~`}_PI zvu$EHwfH(bmT@a=VBK`suSNX4r$dX>t`#R=iV0N+-t%DybtzhJ^`YUg-|`pLT-;h~ zlnvBoOq5^uSWU+7$BGPx2Nzxz8y!}B$1w5PJ+7Tk+B!o|O`NEivY=JrLt@Xw0F8MQ z^$qTPc+i-^U&&o)wTA1oLTTZ}ws4C|h5cFDUvtfa0<}cbASmlJV`{4TtaV z3D|FNiA!H$FT>sg6S@+T=6hynZr{e~I%k5_)=OFTOs+qcUS{dhoS`sp!F+|oM-5Kg zZjNIAVk9x&(_rtGz4lkxKh-q-PvzgH`PGX@aze7Mp0VKx2bZrhLi558J=iA1$j!zx zVd?{U=8`<2a|{*#qw`HT!+T9;e{VI_I>cUlcGm}sf1yVlg)J>hm-8ii>y}z-OT5ya z@SSIa>GMZia)~b-bv=SNEYO>+Qlq-(=Ar*D!yMezAH;{b1P1Z%I}ng%dL%}$GyYP9 zX~6x*&Wvwm_}qD1g2I#bMuZ2en)Uj{1lsRk#3m)um)q%=Agn*<&~Z0Oy@EnscgEDi ztTUDz4Gz&}-(aR_V;wYQPNRgI*-i&h-;@9USLCX-FgK|-J74k9i5Hb_IKV0_eDR`1 zPxtnPGcGQ2Q(o4;W<{3U(v^+ohFiF&$E|Oer*yx$I>M`3qm-9LZ+AoRg~L3BX@{dS zW+d1yIOG|}Z6E8dvU02Gl=*Irq4z%=G6>h(W$&*LwpQouwa{?sdS=Om*EnZ=%X)o0 z#QW==bBw_rvCIJrwQ>&IpI9T{Fu`FyLu~@P{pbDhEenMtmKB^7ef)p@hSz0m4R!yy zN*^>>E0Mu(M2SnXCaOsmmW|;n?G?w);Y_ksB zj`(-drum47_2FHYow|D>Tdy#*H3Uz~ocvOCcT&nh%?AOcPC0uy_18aC9F0OLjx_LFviD&_t z)h_}cvgoZ)<8l0Sj^Usoqp5TekL2-lLOB)1-)+`z{diqK;_D6jruT7WEuA+zeH}Vo zUDiu!?2tLkAfh}!qPmm)#BZjsQd6`4hMbJ6-?g0-y?LQ#_9yOdHl3~}XM8P;UHW4V z-M4ui((CcR@xm9`cy*l`riB7u4-}v5nXv2DgVj2$JaN4|5#20YNB%M_$mtf?d1A7z-Bh7y#1mxy0r|5b`xIIeu zIB|^mM5Jk>KvrP8sA>T39HX*OH6_*3lL`_KvjVv1e0e2QVS0?CMyaOxY`xAN8HY1x z8WOKq?232ko?)?Y%OXb&7NHLn_uE)r*s(dC7rvks=^7D{yS8_A!}{Lpg^mW{du*J1 z6LWhnY_PNY^^_ym!8TZ6F8hS=t?|~EtuNp8;#07`tSd2LLa!c&y!Gemss`+K37D<_9fPAG}s!?*EkAypBhbHJhPESmyz=RbNxJfxK0FhANBv z$Bt5KrQ;5*5+@bif3VNu`|@aVBgg*xpNbtjW>|EGI3=*mwfV%#@WGzp5C8u^Z89I- zUK{>D>>%++ZkqYr*W9;zRGee3F?*IP929BUA}5`nE16Z#eDDR6$r(5P)N|K#9(jKX zT~?x1?o|ILEFq2g(z4!oGX}LgelKKJu}JDV$~>H4=jN0q;q-o?a9Wv?!@LV#M%-T( zF#BCNEN+m+H~B)q!H_Ewwhm0PkMDfU(pbs4=3v?j4XN;q?_r@AG<*$2OLg|SNiC`N zoO8J|Fs909%HacE`#a(_HZnh{()ZHSM4$ON{0r^P6u6{)de+;w zOmAn1G+q|#@@bbm#Jm6H;r|tBhrZuX-E(O9GLb{f!ZHEgYYk;Rro{yG?2_!`@b@FH$ODC2(`1iKl@b%YL;Ro(IZA4*u|{dB*Ty?VM9vZ(g{$Cntk#+1`kE zAv-mSSvGI_&>eixnbVp{`i1s87tcpizBI757;0bL7oW%5=+Wu#(;04}91yHfoM{n~ z7bCdVrZ=6peOnQ;w}@clgy4eDYdUVTtjvlqdmR&zGGV=P^~KE{J+Ix^BqvN^j$9(3 zwtW35mf7={FPvtuamVc}WpNLi;6)5R3&cPCkM}8MxqI_9+ua+t`feP|K6}W5S;)=2 zETZ|Q*^CWl88^DwZmP_docCNeD!GA?kze#yVG$Ga{ri`Fl?3)&f2JVDV((HE*txpvJWZ`)+YeRG0$DtO2Q zoIPTG#VSlUV!?xq2fFiuKAqWQCeWkyZq{p#e*qj%%%tO=Oq$Am^TVxz45nCqimozNR@AlmxwTh!GU~8zZ3(LcI&1s?aPn25NgB^Zt zs0?Xd~otb%gj4tw)2xgpMKgJ^ei|2vJL<_;Nl-q?hpKJa#xVbrm_GV1|$nc}V znuj&+fUx}&YgvhX6FZsTpJqOM)a0F`#RLgiJ4PK(nHKh6Hp-V8tp#qD?N}gFBp5qE zDgKUbrf2qjCY6s8O%}HW@*dtZS~x+tktd5sK%&N=_s)jyzN4Y>VH|b)_c%XPZ%{GY z$s>5ANU7xWvXbuIi5ZJ4br^*uKUyZ76I(f(EsL#p%Z5)0A_jpU#ZN4?E>$~eA#r@t z-S$E~@!Ei(?SgH`r)Dq*{H`*LI~iEnW^zBhH*}GfIR;;0Tb4{XUY$+a`9x6&pIE%8h5VfWqcH)vXFCa?14`;&s79W zR0_QUL??9|598?(51MRpN~E^pBIBXy>#nBqvpcR~$%J7@0rjDb>spc5RHc zjlVB(XwuXT4-ED$W&BgFvcdBm8|U_&N0KzUOY@}U(l`!jG+b5+U+EU$p3E9CciXJR z8xKgUtSCQO?8G;drGrJGaM1$30+#cBDmL4b?d44NO!X^fG>CmvGTlr+Z0<>4jh7h~ z6V^&*{9&-lQix>M(~(#>&9Ctf^Xh9%$8LnWRxG=c@+Z+KvA5P>LN`0Jvi{}xR)-P^jt>I-V3y~=x4LS|`1Y-meJxEVCHmtR`K_e5iijDpMW zx2y+yq)#yRYTR`7nf$!(!4nk)O`XZDT+di|4r)k0xx_QOvDYNPzyMonau8p z%`t1))t}|gTwN1o$Wo**Js~BdC=3^M5CcTa}`T>n^E= zwy>u!1({g*j{b;9YHTw&R(#c0^3r*Q^VW^KWepGR;pI5AC(vm@NSUn2VHxwg?+e(4 zyqot$GL$%VPun6;bx4L)dPng2LqE5&e+rlH?%UBKP}d;edr?ZI?PidVYy4f_E!%V% zyBpuTEcnz^$GCrbjoU(zfL(pw8G1J^*qmlLtghUb(D;@6*r&j9iCf(k6W+CHadj*; z6#8HhH(~y&a||E4{Z9zE8*JT?(SKK^eW~oz+hxHTGj#lRPxTK%MO!<$8bP)&{WEEqE!lg1=PkyAfyp?_K=TJYE5%X6w&v_u1nAXN^Yl zq5oll2`@hA_J*BR{yVFE4Ub*oi;e9(8~Sh7Y}6G}i1+9dXcSM}Gu1!9OZ(Pw29J%c z{MX7#LX6)|6UfWbsEJ?bq+L+h_5J3TgE~6*bXdBNe*d`lV&_5ky?TPW|Ne{}rpMId`9zNRfG35fyt_;A!=%CCXnmFJgL@6EBdsmQiQlkF^U5`5f-7mbet&yV>1| zx9sCip}l_ts#gkkx@@p(R>{d(o{X{lP^iA{yhAS_;nsvNh3)v=Wo;6@yq}F}Fa?9@r zlNAKGG7^_aB)ymsp|St5*{%)mkM=e%Nm(#CJSg`BiLz3mf` z@fTG(7_voR#kBWNytVEXZTIi0*6DVZ5}fr!MO?ml!>VOGl}XJ9Ww*}QQOVr@a)rY5 zJqOrM-#^6VHsii18_%JwJO<&<69t=9WqU*#Tumh{k~E8oe6NTcOcL2D+QVR6${{v$ z%YibFM~v%EOk1HNDi9_Sw&S6U;9dsxOi^}Mo`jZ%fycq~8bu|~I(#Eoqhr%#wN%>HPv;&e(g zd&Lij2P({gkCw9TVGs$_eRQK~R`|Uj<_Ei#P24mB!v!^OJ=D}avqSdqE`z_`Gb&Ub z%a~lZ2(_9SyD)2;zDWD&o3B!~^Qayy^=a^0TU54EsgGBGoy7D7Zv4?V-}*h_d7{?& zHE~A61f)d9G;t%G({5Z9VkGZ(7MEws}iIS)N0+)mv z0RcflX9IYi?yHeCQ2J>`jrl|sR;+{*r0V+`g};- z20xdZyU*(0kJ}icyCIy-!+Pf2?J|5D9+@cdG`mmS5M{*UI(P4qW`zxEk*^O;K9Xr5 z$;!34z%{FTXYUcgCtKtL&k88G6dwK^8KI&a6(F(TL2Ac^vZODKl-M$>A%kL zsq|#HA|zbIS(9%5a7viJK;5B6-te}Y zHBATe>zAKDlxDf}Yze<*WkLxTM@k9n{;gc+r9bL6iwPC<-4juou3ET3XXoEry0&XO z*aQT9XRcTnZRq{9#i@(U8$hd$&?oa#CG z?ft`BweQ^0UaGVC(CIS)Av_u)7sGW9eA;O$R_Qsnr8sdVmxhooXI??LQP)3XojuZa<{lPaYF-*3MQ%ZI)5BFMVQjOwdF4Jq}ei+ z@-j)iF8L~QSUeZFL@h`3kHF`Us7C9+AwKt{Q6;+BHqi z#<0XBs7{w#e+nqgJbEr zlds-)Dhqu-9>{gPx%RuB$4$xZ%{P=9cHdF|V6DQCt034lxpIek%X$7|%|d$4S~7ZD zHnS*oTQ9g~{88X$A46k^VNUbKKMPK#Fxvgxe@bz_f$17=vt4qHb_GpdEfp_RcA0#b z)+WrN`X{U>n`7bMyH5{lS1glc^yKQ2>X_UVoWNe85b>q>RzhF$t$q$HbqPYt-ZCi1JoXY`;rU|Dxr~D?gCo4u%toQObt>cLj30Uox!c=byNH~q z>SDc-r1}?aNs=T@7TsgnHixfWg3Vg7dm6!L-NSMWL>B3Jk za;1+;r}urVJC(Dg^hm7SohH^s`R+Eg%!UV#Yq;8+BwjGC`MuA|LqjO$-pqsBY`*<7 z{Wa70koF;FDHdUanbT`u^CW%{QZW9c{YhVHrVqz90pXzIO@6(%ezOV8p5ItKbJq5o zyBEGVVEjt^Rp4<4#$KDA+g_hFVoUitx^LKdypH>Ap1J!=sjtcmbK_gux3YOBChNOJ z2zz`o*`C?FMWSs=Nc8ao60fDU__Af1O$f;5J*?hTZ+)zmGvd^w&aBqxJ?erSbN*VN zzn8@uq|EV|Dc&rKZ~LY86|Jq$SeSmO?5LM)-oK_*a1YClZw$90W7c&4W@VYe!^er{~Y*}i5=@%DGz^Eb3-g)rS{DwxBSw&Fub#2Jl+lbEz57VxQY87w-l zly2;tVZbDiAjA|Bv(nq)L4fwRneKmR$byQa?Y$i+p%3p>~X`eA>-@J1mb>&N1%)F|#WV^yw_Xc01e>K)7r%KKL-&h>Lb0LSlR4!Wa<-aExC8utba>Oz` zY>NuHpZ1`!_#uPc$r9e}8-Ff-z|lR=<~8fq-HQ)3?a8<_iTOYC|A6fad#f6cT@3vv z)}8Sq+}uO7%xcxj7M3+Smv8;wZl&;t`FeMdN~c!0MrRg_3=0=W2>5s`2?32AD?83# zIpFY0Mx=DNRE(8mXh`he%rk9qD|((+#-&X!zy9hHb7zgfv7I(8Qe_)kV{IZ`805Ph zglcBoI#B5`BTf4BYmN|uiNygi6PLf^&xzXD^0w0`y7Mv5<>@>eEE2iZ>&%;%SwBAf zdiPmQy(=8wAKw$qKF@OdK|Bj*NW4vjNRtWwtq1`g*#H3p4o5C-eF0WKa}Q-1(T<4x zoiV$_r*O!b%^z;53x7r;@cu;W%-?Br6#eLh!wN=&p8=>Jov8coA>2s1qD3TSK~GoZEJhD zt7&Hv`+D~N>L>pgi#{+mEbcwbd~%1hk;0Wz@A6s%omaeM)U}v#faQP2ce~*K?A$vS z+3<_>7P90RoA>!_{MLWFOo7eg$I`X6B7C8feogxLjDe?HLC~rG#OI7;C+P$SrPAKy|Y<|5> zv_thn=swd2J$VV6T8*bqG-L6SSTpAfhrRvocH`Fm?zSbt-8XJ9AJQ&n&dR7q?+dj1OD>fXtoZ4KMV7+L2BZG3^ zYG(echrBOMJ!Ic)7^A*r@r5RfQmNpV%xgDYYWCR2oyEeD^@b;L!XK;F#0afS7xP~g z>KnpR#F%?)8Tkd$?=V~Y1;!$72P21;eaX-Kqb3{NTX5&!^A-+x$2w7SDuEmY!r9feZ-xw*I^%7QXGcLwTStO;rOd#UV}gnM1D!()-V zMc(&XDr`PyvCVf$Z1UJB{yO}*BFEt@ri*9gyWJkJISC8x>+uZNqFeD{SK(onJgG%dO7X$%%GPo^4^qeng++f2{~Zd~}HucNhP?8>jd7pILFH zqw#!HNdFq_@@IBfU!OK}iKME5q{%x~!%tj%(Qx5+SUR>*8y%~J5) z$cE2Yp*urt!Zx;T`y7lj9&&84w=p{7a%YK^1;gSWMi&AMg8w-O-+T5;SU%#%_dOil z5i(D8%6F+FD-g%7uTET@V=8xu4J88 zaOO9b@3%TR_;`2()?5miB_JXqBhz@jRG_(N8As$zoy5FvwL*RpnKJSc!Kaj+GPaqp z1#LT6#=6RXgGM+k2_B9+tpmmqKQ7$o=`l!Le+C$y5;$36_8f8Ey`CB^Olov@I}x`zB{X z*QM#5LSC=V9THWN<~ZcQesEtcXZaZ)Ctp1?O^yn^^AS7Go_(e5QYuvYqT}FmHfAgD zT?MDkYO&0G^M3}HV=qtR!H0S#LT}mi^>>{qnb2GCLX>@IBAszxzzK zcbjZAui_Bed|ZHSJ&VasE2V!H4^yc%J3JRkCg#?w>}z%4Tz5EDM~DAwhCpimx!o0ghc6YLV=yxQCqMDY@06PRomR>j z><2#Hk+-rFeH}7E%%)=ZyC7?aUPqRtt_&4g;@`J3UpT{f`t;RsnGJ^yobD}Zn7=5% zH8IHd{&C3{#||>ZrXDu8yk>K_G4{ZLiGQRW5>6gqYPNiPgs-pnQ{scaY0NHe-ioIj zBA#8+{7}s2l-1xKI!V+_`F}hMLy?FIKXUKnnB>UBzjVSRrZ8nkM$<5Z zqwWrC7Z>Q(`PL^E2<&AAZ&= zqhWnZPl0usl3rlk6^F0e1Kl3*Gv7Ss;UutTB9q>VoWoiZedZ|ED}?tjtPSD%A#!!$ zRiiVD?it+>Skb6c&d2#bRAF{=X1<{raONO`fr7}C&?qPN1s^nPtX#Hu zZswHXPT-eF718Os@# zxGr$W&Z*3{d6f2wF;C`$#087Ms)GuLw2x}LzvW%CSNB|4m_SNdx4;S>nPt0|@^_2s z=$LfMiwkU9{%S`FKL^+L#@sv())H3sQah0wonZ=7lig-^>e#ce)-B7_l2MWAW2upF zdbB|{PMya=e(yt5R|C+UO~-`wIVybQTztNiQ;aEhPPlKbXV8 zgu&OK$f$*R3%i=dz$1Wkew8q}NXYno(-8)Rq&03eh$X4Dv!$N4=Q?F%D zKJC}h&?$SbmLj`hW0`vIjN$-SB%j}ITZE7u!g zVvuU`JI=M|boWjcyH3lHsDnKH4=!zZC2i9+-DANIz7O5AyElAiY2n;4D`;}W%U8D^ zr^Hsj<>qdb4+}37U(xnz;*#43pU=Bq!nyJN+U3l1HgHYgzhJFfkZ|xu=>GUtKF5mY z{hjOB3#wX5d3$1BAK0ngblh1XRIBfo@Rss`&oT@jZVFhtCx|^+o0 zPwjS>Oa3)GLc6*7`5M&FAwGmq3?562OT)7$-pGU5_@xQd`oxj_9yEd zTJIgdU?14u;81+LMIfx9<@DDSl`}j%7H3b-U0+|~U$v02N^{Od=9=p~th}c>oprxu zJ~rhslX0Fju_gN%^VI-*UN0e?9(H?OX0BrQRAGKCIoG}QTUZ`n%6gO|aOK>Ok{Jv( znwL2k<~)DMDz=6F-u(w;qD5$f#h()tz&!$6Ci*53mLYPWLe=lqCTT~-( z=GeZyo7dKs%e-cn@1E?_&9mo68S`XE?*=aZ+m93zdDe7J_U~=xwqDFPNrNk}*}?4W zL5uJZ4(F6F!doNkwq)n@-jV%bVP?69H;gkQ&^^9 z`ry0t@uQ{OI~o`-Tf9EO#B!<(`p$w7>y@2l_SZGt;@ z&uBd;^+vpOe(>#tu&zAGNzCi`FL+ch4KQ^SD`i{O|H3SS!`d%e|LuphEwZe&EV{kL zET5OI+wpR$x%V1ZpFr6uJM-GtXZG$5+$kBjSyW=<<*8wFt}ON~c_ZAgnzO6hHALL$ z>ETDM{;L>y*KO#15^=wT*+J)*(a9T@e=pnFSow<_ZoEQmKJ;w(s z3$AikXWZwpcFn0{-jNfXFsDyUuYz&?hs3Gpn?x=5)clig2s=3CG|&2D&&2AhI8Lr? zY?aRE4&>%ZBR}3$Jt<<#b#7%FW^9Ue`UBdG3z62CupgXa!|T@8M#I zpFF41rimwAocT>tsf?mO=JyCV{Pkq*JW(l6wbG;?z zT-7!0N2YF!*xj)E)=TNNnz=0RSS)>t|Az;kb%}~8Qn&t9uH3!*dqQaUzs42TKZ}II z%K2_SO1s@;D}AP9@03>I7yT}GwJ&IY{5S9N2fw2wO%E2?Y&=Oa?_2B*TT_4H z*H8Am-5>bdgc#YEw)!`+{&+V(KtI$lH?%VEaQ6g--iZ^$m$F+e%xa9C%Dnnbt`m=| zV~Fys1GzJ{2D_<3Mk*ZZd`UOKbQRxs&(F`wF1 z>zdPDoKvDGC-ZSqhj>PkzvdDXJ&#(Ck|_nu-9OiIe#$ZYcs#DTIxFtq7sten|Cnwy zNX`lQILqi?(xFAn?|d3xbB5}q`X1OSKI_s!mgBFDznN)khq=1UY5nuVy5@hyov8(% zguGm@_cpug#>OqRIuM+`v@BSyK~?NK1D|rdiAGU4mwo;9OA5s|WRzWsTw{vuA9U@L zn)koVvfDdp_f^IxlM2OE>$#6@{&#|-l0|#MfP|ycpX9v{UIsjvYF}3>V;Snl)MKV5Zk+H)KkqPq2G@cA zPByE$uL|C3O5SzHYOBrlUk+P)V%pZnU((Y!c=w{l<;Ks#?5|a3&Q0L)DQ<4xWs{*| z&G@^zlu!HoCF2T@vb1>9IWBF%+h93Ab;|JX zmh01MStd#sm-H~Zym^@Uh~bEDe=mz!_-Bt5bD}R5&Al(dQgf1bd8L(%Td@e^$Avr+ z!q4CFpOrXwH2Qe+4Fm3XH^jCI-SJUbzolB}SH43s zxLxtYe_U z=^capj)3m#Cob*gxpvJ`u%!9#pGyH9tql)f3ncA5z_Vce@oGl%s^zx2S1!ai8B|@< zyX!yiIK(%`%I>f8<%hvrROE2oZPsdp>M&RMFMgW z2hKRHTdvA{bi%w3yS?{JTljzNf-~tvBdjApqBN!D()xzh`dMW$y#a>5yQT3dbS2Uwg0Un}71~Xgs#_V7kT* zF*z3z4wVi;=K~4b7aa8TEV}Q>#xd_eWWdw#86RJ=3V$oE{KoLeWLJ#q&WXD=9nOFD z%X8O`;({*D4j%!=i*l(46^|a&cby}BMy9KOQi05aZ-W0iJQPZ;TTVul8TZB*zGi7+ zy6os;5+@ec7{0J@!XAO=7E7$83_>o8w94LDenO|{`svn^tXr8C(~2u>b{tF>d+4@7 zI)h8|&4=5i9!DK|djy(a^LU?qc>DkD>AnxktC+2BJinL}RI0J%xu|&1go623*J_*j z^lrEx)j3t=_mYQFVmAyA>@|E~bL82<-W$`D7+?CH7F>T+v_#DL;E64~MISe{93;1;pxgUzPDq%kH zn%8DV!c!Ry8|L1C;0tg6N@=If?6u)IzFWv&G{f(r)P}_$joOtW+BjxhnBe(>v8D7e z^E|0l4HeU@YlFCp($g(6SnPP;FW9Rv}%)3$#cFr?brSDkZmp-U;n9*|bjqs_StT~J8PUc|I7HM_Qr7hpU@(y(A;`H zSYo=^Ta()T?nSDKZGLB4Ino1fzTa`|k%*rHH}i43FETA5D*Kt){@5&1Fg$taGK0+l z*OxCO!uCB^c_GZ_z!BrkQL;|ty^cfUBL>+6(h?Jo1y~<`-4JH?DXb>$Y3G~}i{2>{ zbwsURCzZvWe&GFzVRK0GMst>>YaY}K`jmPYXlvOp?LYLN*QVKKYdv4L|Br6*qM5mU z&H|m{`VoKB9e(rt`NyL0MLMG1qJ<3pQEBDa{j1G;Mx5+3Z@+p9Ns$MY-gObZ;u z5C1b-n%L-PZm~eAv2?=&)s(yYbw51V-h7USeU0Cb65B*Ifn!`bAFeS}T+*o9Y_UVy z(nyA5la^(I?Ae+3+xAZU`Il$EYS$ElmX{_SQx#ejS`1qCB^rNsv?@wCMKQ^&S#XqB zA@IQhM?QVE?Ex!8R&n(9p7ha{bmnRbRDZ(6(=nsDhh09(vhoT;yIbp*BiD6bHwpK) zPgQ6*x^kjzJX6g?H@6MxTC*MaGEA~}rUhHfF=Dl}>XGqmzqYdX=`SG>;e(IexZY<> z^$Q3-{`c@q=gn#@EEByuyZS;4Djerr6YA(letnYP;GlL;Ky#~2{I^-_d#79XwyFKO zI(_Q&ZFV=N-kAF2nXH4w+}}Zk*B-Ceem=j%v@lTN5<_*IxJHl=-vw8UbIo_~ay4By zVV&B3yVdL|Ia8grm~~Ub6*;f1aO zvXLh+tmJ`Dgww`r9P3iL>`N1E58iSSuy!+bdXjMY4x?qEhPA*A$7nq+J&Co9s=s?LmL>uzOCCCi8y<={EXj1iyru1sd^rF1SO(>fIt%7a zHFuJ!XSk!M`ms@haY|knbC|y0Q^q3;njb6FOuo6~lcQDa!b?rXIvZsRGg*6;{M>FW z2)gi+Z`r$x@-uj)9c+SBS3hDY4W7Vc*0}K@gU6Zn9lm{Sg%e|#4PyB0bS~cK@oBDQ zVJQwy5EDIikWnDv^ohO$GyKoCAI^NiV#3hI@m4Y0V@^@Mw#A_cow**t`mE_E`!C6> z-m}cDxyD$!uFY7;?9;NtZ?hN_&mW4ZQml662w0KMn6y#&^By+&K4$$|M!t9UYkz98vWPjrtLqnrWsrRiG@8FsK9~Zk|ivHv1XVH3#xz4+lbxeKZKkM5G8}r|t6EgvecX^dt(BkYV*-nbP1lE~?h}>nF?EYZyKgM# zi#6^oEa@yvI4Wk-{Fwc8x~A4+wI$7`7<-pIy~s1E^5C;`8jqH$h+I}EIIi{6NP>ei zw&hSk-0A;KCtZ_Q%<@fLbTVMyO9$(owTfF?QajtDVx5gF=gxch#eV93T?V1T6PdT? z{lBWh+|hi-bD83t$-I3*e9p_tYSV+a?Y>#RFV1V7jTUplq@EKUCQP<0r`IZfkX}>9 z{^pvb^@}p$^_~A)?Are{9~60M%{DdS;nAY^&o~4mRVo-tRNdZA_hdhQLvs1mGTHQ? z?hp6de~Ii?(Pt6pV6wI>dez-#!0`BZrgqvId1i=MwoMl6 z?$M3PFx+?X*SaItZ4t>cTU#r;TYBP|nXgG0kfYi9~&+8)&vqxWq)i%j#6w{1rf8=oaT z&N4aJ?0hNMO|D6wJk0g>kY77M4YV))_a;OHvhY36d+(_MDmyY{RFe4Y>7f9E+! zvd&p%FiT+eg-}-~f#0qfTV|};P{Vj%&Qynk$J-)xgE(ii78{rI=fA%dt%}|@?>q8< zv2?n3(1%B@EBfwmnEe)MJ0_gJDof+R2M_j8pDxRFKbbUJ-fqr$tsuZsd|GJPr!694 zY)l+0)F1PwwwyexeXvt`P1Oa38-~*RbJPy|i|xHGYUtCVch>Tk(3FE8*~{#?57-%W zo;QBW#`eciBqe&;x*i#of2HL+%-3|VaCJrOe__48vO{j`mX9(;*BaYv`x^?sxJ@}& zZ?t)_*u|r*Zq_}W#jGI~1R)2X~wA1$O z>g&drI1)?zrna8w(wM;b>nY3ms!7d^LEny^E6?}g?GoENm+@HZEvIausilsyl-pen z&3k>Fy>;TL)`Po6-j|(my13N+$D!Rech0L6`1WoM+HPH`k;K#+uk*Mx!)#uIZ2Pu@ zFBX2-q5i+)Q$Np?Zzh&gb*7%QdBs?y_2fiQK<~lU!vXGk3U7k7iv+jt|Mtq<|Dx*D zySuIRw*9|w$W>orf?>}D{U;~xno0by-YxlL;)Bb3^ta;Q|#C_d||0Squwy}0soQY z>0AE%vy96r;j`?T(^0U7E6XiMOXLrK>edH~nl>%m^RlDi_=(1_X$Q9QM(DO~a!KFa zm#MPuiCNo$sVxzDZGV`)`?TC`Y3q<^I3Bby&iaHMH<#$U0G+h#mZMx>v^2L~Ixu_t z|I<%XAN5_e^Eou}h}_wSRt6uf66SSh?qX$}a9Zz8d;g9zZ)&zI6j0l~Bams%p$Hc> zwrhv%%PvaaZhWltsPTbo2=fi?n@rm4Uzjbl3%qqHV%i+>^UGg6XjSW!>9Wo}73eVa z3NNpQ)9t%c%k1yBod`V~Fe4`+zNy#4P3lRV$COErYRVpRIR`B?nYP1h#vOMCuifD# zfdT8q|F|_+Q?E?N`9EZO3+sO@Dkp zGAnTRPH}bSLzjQ(&AO4h=2`qZaju9DhvT#l-<&UTNb&O|77>=5T&Duhqy(jN3{3xn zncZtj-nX0ZReV+a+qoxCD&BABk{K*~A`*OtiGM=7^GnuL%$>HbW&5Mvw9tgBDlP|} zURAMUsk}Ye=;)=qt^=DoC*6oFvyVUg=JU4F(kMOQ#=v>Lds_Sgga7h=*R;6PH($4q zk4OGMx%?wF6=oqvQ?6)z!N>3O7f!!C{Q+-yN~5lG2eT7Pl1d!6e!Yxe21~5Oj!Snd zX3ShtxbK~mtx88FLRs1PcP{xUQ)11| z(R^&_Atr};T#W+CQRk=Y_y~ze7npA69|_Dp~0C1z&6Cye*;yO$Ptc?F+g152PBeDUNGB=@cYn=N#e2F{zdN(yZS~j~sm8 z&kPfBi*{oAqx>`_-sd3`v!BR9CQF|RkIu6xi#6qR4ks}&C|RgHDCWyj$-VoE>2g`y z?}P8VUkGH`f19QHD#L}r_O({VA2Xk?W%AuWl+ToDx}?Ug3bJ2vc$V23nSgK=ne&0B zmoG1EHVKl5-@oI}0ZF#|6+aqg#DrI!eDc5Ov8v&o`lwGiK?Neo0b5R~$R1oV>5K9Y zkp=DsO=|fW1uRS3OuWt<)q1ANzF6*q(eAj_;;NmE-Cem=QYVhQDSqFy@KMu;|Q}*EmqtctMr9T(up7+yC+8Cjtq^ETFM%H(|?p3>6 z-<~fEp0x3>`oCRM>`UD>=RDZ??tlpsKMPCt`ox-}|GAE4oG1`{W&87;HRtzTRhlfj zIeTq(+oZ?*7x+?i=Dk4ahH2q9I7Q!?loj7UeMC?AKci~Og5Uh=5kGAATZ`-tl|DKD zyZ*)v76B_9bGmtU@33t(pTegLQm(YB&rz;($!jwLMzf|w63n7_@SQfY&hv711Hm~=T0 z-?MV{h$T!K&w_7ow1w%N+E?QXzS2G7is_Hb_>< z?<=r(mkO6?e66^o^ir(D^p*ox&4TY$F6ZVEc_0%NEs%NMWdGYXje`pELEfB(a;N&< z^R;FrWL!>v@BUs+*2u`;J-jho*=0_qyO`UG%O`aV0-H;f3Vz+c5mUWoqgYq&f$nLC z0_JV9UUR6V>E2wXD(f@Z3qL6_Xs|RN+r0E;Ux>@SYZC%%KR8}s{W-aTp~Qr%~#<+rs$4|xU`oDB_4&iQ+JLU_;H*rHZ8 zM|KmP)y`V-7o1)-@~>>lV)zjKNQL7FM{v=@q;_U0nUe;yUrT2kynDcYjf(8O!;kjf zlTV+}wQjNGD=x9-`K2x$r7p}Ll00Wf^_;#am*>7nX+nQjv*My_-vs_$vSBP!mE>6& zaKR(}{dc#d#x)aI0%HTay1#vHDauTW3t?FmkWlNG?4+>++zly>7zlcxIjpp+bJX zwW?976N7V$c@BpNZTk1G`a>dLugd?)vw1f4vTTZzy~DuNV9lba^CO}0!Q4#6B{%s0 z?x|wpe(1leXheLBCw#!Utj zcfVV4GdI1#ti7qH-OJdyJUpjiOA~*>V!k;n;mudGE*#uA&8eo&inV*KLRP7Tk@zuT$vo3y@Sf!r}FXZA5wI7 zXJ(S%aZ~j6WKz2`t#Z=BTfAGtpXB@tD=)cqG89Ng*AS>7PElK^_~io4O7s;_-%<q6iO%UBaq~_u{`Mlw2V!fYwAo^od4@5a<=*4gnBboi!aAda$={*Z^#tp#PWBMy z8)BCl6HFQpu43d@Unn3hanLWOrg%D2AhWE3U-iYzD<>BCJZwtq;?q2nHoNPpcm%_= z!t9P0rPC4$Q}P0@8r;2WdiPMyl$KWqyFD4h(k%Wlh7~qk@~@5Fc_A$LV#nmfB9TW2 zCVg&VTBvc3h3T}O4%ViHQ@GuK2!}<75u7{?3xsFz=7Zt@epA=VV?o2D;ZAV2E4raGQ8y zE1yc+1O{iGcgZ@rpLkTA$`3hf3JTi$?hszV-009BAJHh&##0xT@`uSHtEMcW*Zq&^ z1I7DJEZR)YpG4NQI`}XgTqVAiaWBil?Y<$5*87T9pP4U`qw@M^+@+|Krwsn&?=D)= z`ZhND!tM6?x5C>UD%t$mqU^bi1uykn5bAVkP+zE=yzG*YV5~0N^A3+3jb#i!eLBx= z3fnuZIL5u?W~bEB%P;#Tw1zijt`wKFIM4g=LB>** z+a@$NWPh(^nd8-(bVz2-q9!GtW)W5yw~pMmOdpKmCVbnPz_xdWRA^^g!YP4uJaf$7 zikwO@x%!nU`D#EG-&yqlo`)Lqj!!P|S~#!0d(NU80@E*T@|br;Y--LQogZC(0b1NG z=gW7kU<;ZSQqHSY%F)_;Ak%GvU`=5A`p0epN-S&{S=PJRw&~@&ob>%`c`HrC>Gy|h zZZ;u-V%v~X5xv8)w}ToVJUda8&AL$JqHDMTQ>pOZ8-kb0^zD0Dr1f9E+bMRU)5o}y zeLqX$_iq^w-ZQEHJI=xUd)FMzHCqhQu9tDo5J>9fsVPZwm=n(2%9GsXxVJ@i&AJ_D zw=kbM#H_%w-*tvr-m*e7ZwbR9g}nQ%^)-wa>y|mc%ThabqPKBkdS48S&y@-pPIbHQ zZQKsBHy)nonlkZ7_#w84LxQhmwr}VBvEXzGvrtEmrl*LKY{$E%4zAs8yZ2<)D99~8 z9*}*fVZU`2BUfPKqwtw?r8=(5PKbNUU?J7f`1FYYud`k6FPG;6`pShz9lZB*)*kBP zaasF>U#W27;UXrMh0PX%``scOc1qd$+dX+WIoV#+r^&$~V}mDOifl%R*W~7u1m|6> z1rp5;U7jvWBvXoiG5uj+dEdw%rr&tnpRw1_hPn6U+V_l^^B5}&8AA?-@l{#S)1JLd30=O3yZJwYY08n<&=my8tb@cVTY3Jgfv-(m(!?^|g5?yzW9pZDUZH>G1;EvrKUag=@?HeO*SbCPn zt~`A#{$6(k=lYfpis4G^EMhn9iwh5UA1t2&+kX#coW{vtZ6U1^eP z>q+GvO=o5k(}vdq4N2?*95?b`)$K0Ri~fHm!7*V`M_8FzZ?Qt=wFPohpUZt0|Fu8! z?v4A!Jnq&XiypofvN8$o>S@?=TvR68SCIGZiI{}OT#x)R=Lrs${~dQ3H`>e;Qs(zM zD1N8>-MJTK(%p9_OfvVnJ@d)8=6Cn!Jri!S4rVO*8MWtsUj;$p7H1v8QP zj0=7qNw8z+WLdgBg=1DlzXy{|w>`VQ& zrPq>EqibRe91HT)_?G=UsPMW}$K9C0F3 zlR>lXL8rnVP7e-?IGHj5;h2S&>ZQd>1do>dEbH9Gxl89zX=j6@X%y!TzoW8OWL2@rcfs#up`v*7z6LCOqN3m5)~(3 zRB)J9Fa$L%Qx*Hb_`*Z)iV%ZYY`VEJi*M&^4w*eY)e+1>?+cfdcdBcM8q555$y?wV zml`MWS~Q3wXN#(V6X&VW4|6o)y(B~w{%w0Ip5~^Ia^R2KF?U&py?aBiu*vBNJx{nH z!Q>FNBRa4nUXJ(tm34Q&UFlEQ!@gg9%Yj{zO7*>=0&(H%J{@PiVc5VfiJ!$0xZOLkvpH$U0h|#4j zx$fi||6lh1c=H>Fq5`2GQ{QgUX30B{^@oe0jiqR3j2;J%fQWtYsizV$oZVlJTuv~F zo+qOszPg2v*Wico+bwZl)LPqXE=1ken0QE0C4on>Xvv0z_%H3pl;&L2*LcMuYOz%) z@YNEDT|T@!R44CKd$ch$W%;{<)0huMWwb|y3Gf?TSk$h0e2bMlcTIwf6SK_WrY#I& z9<8A{55lf+%-50#NPe_?P8zSzw8Clg_(P{UNb~4>?e_>3NXp0xsTo0oT$lyaSfUhH|jWzrLIKsVVdI%|8VfShD{f_Fng~g}-jO!F(qhK~a|QjNNDCS%MF5bv$6l7XQ@W zKBt0X7vF>islF)%U|o!thJbGcZ3;zMor$##cq zn>uw~_qx|YY8-7mY6n;D7T|81xS{M@X9mml?cVRs-`Rg?rOAY=`}WOSCdyFv-|I4q z>UYtPevGDX|0VOyKl~rS&)^(`-wRwhvQ3-_%+A-ixN~0 zKRz8XHM`>Ck3zk$qv5-zs#$s5=Rwz2HD5w+9mmgyIo za6nAqlV&&1bT*OcyEHAooZkA$_}h*H2d?!dv3avPCn-?{v3+L{C%&c@x$9dmCn-{b8RnYm!Ho>=RrbfckuheL^OnswxMs79`KDfEwf&?AYcwjl0+@Nsc~l}dgkJbypRnM^r2Bp1 zE!()~%-wSEr@W`-kT`S!?As{XcAK!C288V)-M8cbC0i z^V1*9Z<%{FGh%OVC~&lz;UjRq(d7Pu6qSBChk#o#HI;33%+FpZHvF!*_&V0) zDzk4yT%7J~^TMlNY45W58A8`ey^0O&wx!73JGe)FSA>koEtVC_zA#iwDNGOIzP-(6 z!4&qzjfFQl7m2Nz@*?CPOW%h*&;C}u_BS!u*z_V`5BJpSIGatzM$>j~_@VcE?TnsI zJ7s$gX@}OxKR=dAsIhdpu84B(U8f_=_o`=_ZJ;5aR>G!}FO-C}>i^#4`JhwB{8^3r zx8#NyQ})KMNxb9M*xfwi&(ar5S$nKMY?>6i?X*MilI)aqDZl&|vbHjQJ$s{Du|Z1W z*PlzJ3KFssAKjgoI_x;+BYCg*MXba1E8S}*E3B>d2yNMxk~BqS&hC$;zy8b@>z>@b z`o-Cd12dmG^Kq?se!N^DRi&e)@zC9?%MuPOGu(6T!J6xPlolj2WJEpTx*l(Tnj#?i!BkU5!0&>wjn2cxN)tuovL2du^{8~~tn56q$nwpD*2+ix z3Cs;!@04ZjDO$TUhWC4^@-2bJUr&{G6~348p8Q{FUE$6LTn8_{o50f>#yIN-^8te$ z3DM8k`5KSSSLkmHT&}#lWV6`XS<}R%bf>x2z1ft>RdUu)8ca0 zo3;r}EopuD`{1-oY68m|iVmz1xe>GFyNE{0u}LTIUiztaTgkWa(TR^gau`=tUr10$ z{$J+D$a~_1;0(56dmjUid0uwa3PplE_v-DL1tfHost@JxXe-YD>Cn=7Qm}L~!?Yh6 z|8<&oY++o%GA)0_vDj$uHR}>=ve&uVUX`Bz?c4eZ32Hrt8+e(u4Nl#9%)H`(qt}Gy z7iE#!xy|>OJ+7G?QR#W#Ym(pD5h7$UL5A_>a_N`^mD2Pj8IM!vZn+kc=xT9gQHIC- zRqHfAhaG&pEwIt=0E6!A)89^oOx*P7-G&~^6CYx&4+~9y5zw2e5YQeK*wAwA2A4+J z$pyCxr(avBzdgbKK1=JlOVd+5C$U_+WS7?QPq;6eV>KuHk*Wa3xylQK@2{G#*^{>? zBViYdFQ&t$fJ(|v(UP9b^!qZ8>450)KJK4HmX5;rr+F?a-E(O%Ky%v{)Rv`%req1J?6%u3qeHyy_{rt4F2gf$Zwz z0*(KbPYOEOn>_vPtFtI9cZcZwhJ2w7g64C0_6Vg-)Ueii%qcc6lj8<&Lc_*@^9{oB z0`Klge=B12l2l5^#y4B{x@>;UwM%BI+9H!HoqRLI?wfO32^~u7a#UzJFe#!$(N^FCzYX*8 z@62yD-k!rM$=Ef~zI){+e1tf7W3lJFOQVYVBEyAiSLW#j zJZ|)P$d~`)FJEfo5zoWTJH?{3%F`z{w#``KraXuLn$O%#_ZlZ%v0-y~&!{-P_b-3< zxeCsZJI_?upEJHVJoQDT1hdkPh6X7COJ1Lq+f%F$|B+VsKOubU?0_U=ou@i$7aV77 zm{Mcn>?e^tVSmMXzH8z+1s4D3JgN%WcI{w*OpWDpeeG2acU6@nDms2$6>d{3Te7VC zf%{iB1&7HOF8IX&T& z_7p}v1x+T29gdSkiVS7>!itjYo?nnGn!unRFEalU6VIHjPK|jNx%oPuEn4-Zrj%o| zsKO+ln<7h;0_RT)owJBD<2=izmZcp!Os_9R3Kl)d;kp=?q`+<|X&=t5vT8yWyXl>8 zA8e`>n8k!dnD)L}u{E#h;rt6aUmjRnh(-kET@V&gReV-`#8i^*=j zDaR%Li|_0&-`dH1SdU6C4!brFSe%(b#g<*+keXRy_vqEb1u-0Y7r3g{6$Ke}of34IamU83u~gOO;O9>p zmfzfKd{Tr-{0WEm#cf)Pw-)i1r*4{-EnbzaAp3r0dqCsESEbcYLJUqY*-{8)E7cE81OyMwb1pZy%p zywx??IHqm3uSBh1>+^=29+Uq~tz&cK-2SZIsqKJySxB>+f&0f(`!iKj6`FQD)#K~n zG|>oQ`lEVwGiS?Ak=_j)OwErLiO7Di{u6XT|F0kmRi_$(%s76uf~e3Ep~pl$jbhYg}nl0?qfq>8(JSiEqLgnGsfEvvN( zmyOIPFc&zBFs*nCn2e#iPO zllIh}&y^8;IHhcNz*-yGn3?QxCyP}yzW)2WbAo^IrI0xSB7Dz(D*w9pzWF)-gk?dE z{5riN7v-MUuuYzQ+-73As!eO0U4q=(xIfRQa7|;H>{t_)F!{Lrz3l;PYv-PC>^xk$ zS>&sTLgVKxOjDnqZ)EZa%RHdqx975kU-$&MQY+nc`~`wc#>%V{lsRTu|F5}tgSol+ zGULBrbsQc}Myjm$y0~QQK0G+pc=6x$pv2jw+;Y+%o{A*yNqi{AoxeN8t)f6+Lg;&G zuY;<5YKLz;QoiGmS89;Erm>Twz2vaPr+HxyKZR~}W0NmSC^Gok>vQA8c%zjYVR9`F8X@vA+EFZjZ;Mwu1T)_ltxF00$1CHO6@6Lw+yxzXCjI;k z6ShkkvHZ%OQ}UAe$00uv37Jc4vz{G%F50fo+s=B*rCpYD&ReU3azz#9)CoJDl=~i^ zQzCn5icdh>0hd0D$!pX(PxepIZ-{MIo+79$l*r~@d?5A7`Zllbo`XIuCXCbXd%3fH z*>&bzFU!PCuDx%kPA)oqQQ?Nq(U9j=ovf!B7g$u?ecFAIaast=7beq&7w0yq_Xs&< zT>4$&U3(;i-LT!8Lq8-UNj=H6am_>l%ZV)OGEOw^*5o)eRbBZSpHr#*fhz8xC3ok2 zl`(=a&T+&w$M4vBLAg@^^(b@n@raf<{k(P zl=1&@W0KIcZ|egB&oBtiKf25LJI@iRCrjOeN|W!4FYNYn;BaR)JI3-<;;Z)YZ40sw zc?Mk% z_^wFs9%0UYvun>z7mNM=+5$};E}D09J_rO&X*gOIv}C4uI4A2-mwIEJHsh%*yQXu? z{4uz|#jnA5e8HrHvZYH`{F9!Lmf*7avzo`V30WMLyBvD&%un;?TrtU!`yZ3zeuvJ= zn0m(U>j!@w$W&c;O@7Ne;ajVIDX|{;nbY5rd~EWk3)R=%D_^!>>=u<{e6or$S|N=~ zZGuPIa;^z6ic`-h2)YN&Z*c!5C*RX@=n?xLv&AA8nb}K}AE`gs=i?% zoSzw(*j%1*EmUdBkDjRM$z;Fn8>{X`$Ny}CES~?Ef~E;cS}B$k9Ao}@CHqjo4>1O> z6Pmxm4&I)f=E>+|-|WnM^g{1N?&^q6?$$XId>)JTo)dUFF4ij}--{TDPyR-`E?Va;4*kg3X&^!O1&kG)!bp za(v`?z3RaAHwp3mkGFV+g-I`OIFnU+!l2CTXX+W{=-D@-Gnhk}b6fdZWDf~F4!ybU z=02nJlIv`hrz;+crxm9Zmn|;uEfFofFsZ)+vDnE>z00?=vqz(ug(an1U;fAh4k;d^ zhHGrg<`=OE)NQ$-ez=4$i%Dwsp_PX^%{iXDW%w=KvFDna4P&Y3`fc~_OT~3KGa3jy zXgN?OZ}W{i=&kkpvRoGVwcq6#RIUFOy@?MJ2@>SpV4nR&9B@Cezhzq#d-Fk#UXyL+76$|O)WipM$nfQqGu|jQ z%8w0YiH{SDJERmOeA094rJA=3&#|>1Jov(i{p#7LPEHK`C+t{$E1qCFd1mjQFSR-c z9u}Pxb@$*XjdVX*USSe^pw@Tgv4*eDhJMEWgFVdegf7Rn} zpBNRxWXB+~e`eO4l7N&dsr?H|IBk8}?oY86eU|wCc;nIM&Ro3n=YN{H-}yyk?BtU{ zJYft5CcUwBXF7EJrfn+rGq7E(mBFzv%wFd1@oj9K|C$d=NC_^Q$G~NA^uoG@Eeo${ zJTQFi%kk7rYL398M~tD8XH4ulLw&`bdmTs%3V0#U)aUc?a#(Z1(abP+o&#~+M}&)t zRPFXTH_v-KxnXy-lTBi#4Lj4SedPvBjMkru9p)yq2y(Qok8tF;q_XpU7I)Bz=3o{- z8J4~!?;kMQFnM*{F6NV6-Xt=`>AaB5f)tm%Y$8nDO{N{I-A>M^QWL$q}xd0EcmvpX3N`W7jjZD1^x5T5S+`O)gles5R1O z`!migJZMu`SnJ`|gJP~salI#k%Rk66{S4`9Z7%$7;JmDHZMoLg{4GMexXyFD{8Xvp za4NYqC_rI~Fqioq?t6QKuWA43I?>S6b+Ds1bU~5lYvnW74j)|J`2B*4Yv~k=olOym zS%$vb!oz!fWs~oO>Nl)TU4J)lvVpOYs9O7`Fa8Fpx)nMzi#B_rnXB z(ml;D516%lDDOF0YU}VM;RNr-yxqsx(l(^tzi8Uv#-TM?eOgfE=IcRLdzz0O539U6 z&8=cZ>k5W7l8ZYwr_Ns6+9$dEl1GF4x6O_fiVwQQf}$qJ9F%8?*?XO*oA1;v&O^4^ za)~M>3iBgZg-_v~>S?#pA#w^6hl;@o{b@Sgvu|&ExT&o*KvyAjmi^jhHo<_6oihXy zIo8_qC(0d`T>J1UpP|XhKOY<#9!|_Uvcl{1aUoF+Kn6dSU;I})|X17*a*B@Ef;Gp2Nzq#5y?>Xa(_0u_CbDA79U`gKT zwaiW3x$EW2S=aXZvE)wBV_G@s%zpXRzg=r(ESvL6th$%m=?!12b)liCwFZZVu? zC{dcl$9!md^M!tgZHAniCh(N9+KMcwSpBZwzL|C2w5*l?e~RU-+%Y2~V0yand95ij zb7s80wBGG`cXQzsjTJA?I_XcJ7bxnnl6xXpW(c;XVJca*tgdS*c*NWd_vcGQK z_vCF%cvOkkfvyE&YcD*!)Zu@4>ftI?@0B+c=8Hs3ZLogyIwVubAe1w9$wAx6C1;l` zXySgSRzR5iavEZXo( zpfflp3@znaf~PGo`Qpfq;Xz#sQx#Cv;fv+}pFSW#XB=8qR8( zd1n~@Z1`i;)7RlJk@*Kt%?nnAa^oE*_I(SO{7=hF$Z}t~T#I(g;y8l~QXW_M1+*%~k;cb(0S5_IcQ!utdo*_Zag-=hH@U&{=;;I%5rrcDCH^n! zaxJwcZ81w&@N$}mH=}i~c!$W`kW3u~g%35RK{<~+AGZWC+!3Cy;`!_Wv1T`_9G`< zm^Rtf>n!f@O}bIfW^|zAeY9vNaUz;%f?g5CJo$$f@md8~2!>xIrRl)Mm|BBX7!E!Rxyi=N0UMx~l}A#q>) z87D#RDwCNC1;D~Ve-&I!9oA>|8zn?8(pPHYp z(eADL-9a-J*qsQd(^IGkXg7Plu z+mEYQ9MEl$z9+T(@4@#ABz|33bFTaDp|4K!g?@dx_)dA!wrA|~wzpdMy-}@Exsbf# z;Tf0NUtV)OR4nYfua?tuE{mnsKX+TP0Q1@PIr38P=Z1an)Y%}Ru%nY_)0Vf|4iC#5 zy}UoLX`lS?*zt`GPe)(#ttQKZVST|%YMFLRT>KgJ&9X~p(=V|SwpDkZDhs|6`uV)6 zq@}y%f`g%pkNXNitu?#v?=Cj{;^oTyV}r@2*H)|!Qo0fqv!7@@`?u;a|<+1=log72(8dOzGUtx2BYLHDE*g^AH(*W@>C{-Uwx z=^p9Zmv_8yeBAx6{4DP^nFDts%-1#_+`ge`ZO4Su&${L>2;7mM^TtHy;@`Lf9#a<0 zNRJC_E^s(3S2W8nSj^nwaIHCWL&-rU7pBEJ?k9XF>2Nj1Z4A-;UmIhvPcEl8qq$Nr zPB&A!K=op9RjzONh0NY<2M(>NOgS;Jpm)zsUImd>6^oENO=0_^rUmJolbgw0;;g>) zaa)M+f$gm&-S+>>lzKNNRO)r#%Dd4tm1Vujx$4%WxH%R@uW$8C?moS4vB;tiHXlE7 zIN5m~`~O_UPQ|C)mVM%yH%9AfrKRU+sYEDu@P_}_*!=NOxOK9^gKf-;dw3=Wm~QBL zrd>2`KCf*8jQo~8!dzBo zMbw^VD6~IR$T=)7$M(}k{Gi1D5Fe4QO1>pUA?sXxTGFVKXzjYVHmd;;}%c&JG_L`!6y z=zPM*#@ZTV+Opq%OB8d1Os;J~l2CG50q=l z=Y%;rf##7tjaLM8<(3;rn3}%WZ>=c7#=;Z&kNG6S;i9AbxeD_7+=>T`;;y-+&6vbA zMShBlqB=`0ONV!H!R*&!y(e`vCNjJH@mbW$a=LTUjt3HNEcjW1O)so}zUigOqb-Jy z`1a+bJ!pFTD`t+xnkMEsADN2_On>)Wer$a_{+Ri+voVc-iq7PQXeqOPm=aR%v$Dse z`CyNaIoG8^jk}Dj4?X=%G#mHA-s$Yu(^W`rSO)@1b=gj!EU_Kn7n|$g7tcm#j*RRy(z`NEsM+`6`GAOgiDY>d?QG!+$4T z?BbcUbki{n#+E5kh&rfx5h7t9BPSoSTM@tXN> z>fy`>3b&4kZc{s5QBj_|Pdxa*hGO}6j@tLSj1SmYT3M`9%8oY3c$7YGzhM0JZJe{S z^nZ?`3JxXZcs_*mYu_5M_g?{}r&Ha`uJcGyug!<(bv2=mG<9_P9@Z}6Gh zqp+ZW;mw};9|VeJow%hY-`FI#U(8>+=Xtu7ut0A$OU0!hW=wND6s#|naaAo=&fh=N zD#0OO)wU^4C#qK!{JHqx!juCCpRrYNIJdJh3t1lTP>)M$>uTm=U%k-&Mpt)heen&A z#~mGqW;p0fe3%|>YH&cfL%x-9-sjf0K2e>m_uPE{3pT8Y+a|=m;{mgxQ31b=kc0Ie zzC(Q(OJiiOf8=S5#RGgP)e&Tf&>lgdA%Q&Uf(oZF;FskliZ&`kpvn}-U>P((1 z-T6+t?w({jaI1sGkZHNQK~lX#z4V1HkL#0)7Ea)9;*)={l3!DTrN4OZ!edRntYSwJ zS0}SL&Z^(d=hP#yZT0b~lMV{M*nB>ckK@+?Ec-Z2nIx^?ZDMR40Uq*|AS4G3h(Dyi$vAMpjhF zL!Yn=o9Q7w7p}U_>fx-ukeIfksi;z$PvnbQvtQUK+6UOTquYO=^p@{{8XqX1VrjmTvQY zsRQht;^NG9+qD=LeDUr7B_K5QQZUP#){=xq?K36;N$$z7B!4-o6wHsUxLlBU`2RDd zV+O|ZNtc|Y)?3Tp*d*pJoh0EgrS9+{&Zjc=1`9uny8KkIzF}x`iMd$hLAbR=)Hg?o zO9yq^Cv4*NX9}HRv7~^jB7x)m+V9#46Q;jek#M%iOL}s93b&D0hIhHw^tPC5UEvA} z)9vMzPIVuA$f$kL{lA6hsgwJ1n6yu{gdey+?~==shF{Dj?0cDK9={~~>TTEbNDbpl ztjwHJjYn-vCaqk2Na|r%d)d2=rtS|Hn%ftb`Y0HD=;JRuI6>qp2gBh2&m!iqqiydO z`b{_&;1p7GF5EyZ;+OBka1GD%iahBJ!GDxRZ>BC>7QSS`nO_$dDj(f{hx^=)2F@Kh z7V||6S|fz4rrGUeX0>1}`F*CM*CwgGLT~?5o9KsW(eaID`#kHFIA=CgW{AcGN8MN* zk;>|mp7aGz&1uhlG3yb7x*|onq^|>tnKt&iu*wzgDwdW!%CP zoX~xCgW056A2+FrY@EuO|2KT&@+Vshycsq`NSMVfoXe)Oxl8-pUO~>9=JO#vKDiH$ zas4n^^=visCM%vCi}lOwxf}U;9~2$ozQDce(DLbg(@KgKpI>46vGru#4wI7sY5oiz z<~w(M;J>)B!;evrY2kG?hYUU^lh;hYS1w^^ey!`QD6_q0cX2_NM%R?WjxgqstBEQF zDHm=lFPZAad)0W4h-1~Fr#$aBN4zgtqhlYZAajjp`ZA*s0hQ-5J2oDioclUnQJ*(W z<==%hT+H@7%S+8)6lCzK#r#@1W%X^nUfLK)g5G@>GI&ZfUbt*tRPk2urEfl zWpYJd^W6?y?Am?#_yY^Y@QZb4@1N0JB=Yja@%#7BT?kGO=~gM1WwhwmYdWiNJj7-7 zgjwp+`}=tK%}*5cR_u7ONj!nciH%8+Z&5p+_RFH~Mbf=5`p&++{FnK{emDQs7pDfC zIJemQB6H)Mm8UxI{P^(V1oxcp2j@p;G9Gpjc99Rb8@-tA;w70m-2BEOA{uLVr+#~_ z-T13|m!7t0uj|>qb6tlsbTk7)FRhe$=Tokz?9qODD{p6iMDL04Fv|eZp5~UoDnqx( zi3Ur2B!XwXi1?-9+iaq7-{6F9U%QWdV`om&qMHd?_m3)wJItT8NWJvp3$az~Q?5r= zx%nJ*Jk)bcv+X+b^_d4^xETwku_~-tpeG*8`Bq^AZK0XtD5_KVjh;T1P9EV+qky3JAM9y2sh1jKOXRzY;oZ}wYI>mr1_DJ*d^l_ z^($Go!a4+ewXEhnZ@ah4`@u4s#du9zszbmTuQj&! z_cHxWR^Gq7)r4n_%9J^wL8q;HT$8-QQX7g-#vw8!r5CKaY|D%I}Ae^oSqooUsR(dpl#hc=9JaSf}g4adnnaJ9p6Km)<86Hg;cRnL1zdL5YHhr{)F$ zC4a7p2vZ@u%r|Q%{l9qNZkx%!$$Kr$H-)R2hcnu@HH z4%^%I9uDg2@0)^I%rv~5HXI1he{F4O|NPs!Aj$Ns8gUoDRl6p8IHYQHu~aB5&vLxL zI`Pckbq1CvnX3OTHeHf4$swn0waLSU4X2y?l@dbcJ@dUBQe)HK8B!D4Xd2->f0F;} za=V-fznY)3@!NcAd7$kV`rJfXKT-dqO&6c4ou9z6Fo}vK5e#{~j<3Go&ssd;*pw#! zNd=C%hq_;Ey2{KF;P<7o{Z{FMiM@y1%Y|m@Jl?mnD0n9m_s&xR%r)J8njg4NFlPpG zE@yjqpo2fvoze1VVb@D{rq%M|n?LhaycYOU(6!7%L4E0trn+5EIM??vz7M%@u!7BJ zU2Sf2g~QA%3pMOIVrw}c`@DMX5@Nt^cVs8ub%xj77w(@?V3VkL8-LHnw_-uV!OGKT zrk*;sq95ko3%=S z!)L{7qxyXlwM$gxIWlr?SKO`&Up2?0pd;k)yi@Hnm&)j6h8$A%dzu*%qOo=r-`e22 za!cjEG^RPb7+B{#YAu}F#qRPUXS3NH#w{){bz&@TJM=LcFquqcc&s^rdE>S^k5ax> za&NWeE=GA=W>hP7c=eb0=vP&{+^KEMfox2Sfmc?g*F5OeS@TyR)PZ638ezZr1>H>x z3^#sWEKu?!w0C}b)K!K5CTIN|c+Ggf{cpM}bj2@s)+F<<9CuFa(%z$aeQvTzpPF)Y zu(pQ&a@nW-i_bMAC^zq7>#3f%+=3USIYILD}8^#6Cty^Zh$<`5E)8 z%TFg}@a$xoB5$>J&*Sd>FI)clZ}`joi~HaA;}X|AG%RA&{{Ii1KJmHc5xsB!_Pzb| zp2hK3!rRwkjei|?ZvMo#_cgmY!)>NBjT)6InJkJYrp{>;`+s|qCf}TD8=0jV*BV7K zx$36}d#-z!QQR*xtu0ultH>tCp+ii{#qfOF;&%PY$%p>eJ!i78`8-QUQ08yu1}~F2 z=}T;WZ7llqVBVC22Y&iQO}WT&a&caV%=9^t|4;hgcJp(S65`IZ=g)cB;4G8R;=Q#g z=H%;D@}FZ4S$H~d3G+SZVLQuN;?DYXveutv@~0ko2<$t=-1T~<)XXhTulL)>-%OY^ zIcNJ>3Gqo0uXa25$z6PTq~hm4mU>*b-|?}ev6%XxZsMb1`NKK<(waO~*xiQX&Mto89_IC{>> zzs808{FC%)O^-O0@~;*cw zmz7d%uPwFTMrAmvsJUFo5y`wPvM6n?%^iV=1}Fd2Ko%Fam0~Fkj}uCzUo^{Yabmo_ z+mYQiV`9_N$Bv65^mFJQxcdJZ! zzsm6ad7Jg;S}vb&Y4cELUNSRi;i;QiGr9w!OAl=0_4s*8L~7+Gi#@CNFH@hg?B|Q! zubwLSYH!(pzBb9n?b&tK=RsFnU5jNTVt%i-7Mu3?VV>NpqL&RbpU;`?z5B?kH?mW? z&#EnPU@L0nxmuxrDCY9&SC@T6ymedOwi#byI$skk&dVyCe|w?4m5%q{tj}Rr;|iN} zc!DdpMVKlwx6h7Q!U4QnJpp3vQI}T=Ar+om>U;= z_GXpb4VaixlTmZwb&tB;7dF{jK94i(m+3I8{C#NNb6{hJNfW-&OoSJI#HKCp&}K zhSJ8w(u@bkJOnp5X6l_S%I>M0xJSAoIE1y^Q^U>EfcfMr5q759?w@Pd3Pm|}B)i|y zieoz0RerCZuhm+7(TT^aStsmP3s;qQSsmr2lTvm_Ut&*A{>zY2cM+5U!!x?T)eG|&S)&8dA zbuH6$pN!sIef9g!nu@Qb)=QnM-4@;xpOz@h6C?D}HD!f`1s)zIZ!E6Z+;_0xZ*LQ5ZMc7sv)?+`ATfSn`=28(qnnr*<1|~2 z-c42KR56*x=;++&RlO*7Hv9nUA(*vP_w>;z#;qakk*QXB%EbMO@@C_n8`T zCE{@OshL);4N=WqYBgfsyJs<4?OJcUD|WB?Qip~24K_qIG#WS_pJ?|;BIxBu?&_e< zpzuqZ(`WEKSe|c{?}<`=B#DVe)ylmK$W|I-QvwRpB9q`?=t0WRx#9EFS)+NxYNkGprL&! zqe8~<#YY;V|L3ruZ&-GrK``6*vWmm6)cvakPM?Dn2tG)mhB_F~UOi^wTxl7Z`HhKjPbL*X#K` zQ)rsZ?bi`MRi?N29O|}dZ&N zu1<5qnrjDsZ+R+UH(@nH*x%;|&Q7)Axy2~r!@#palZT~QTh3>`QGD{Q6*g-bmNTCG zv3Nx%L)wky{R#XJA4cA?De+;M!Liyo%L_406II@ODaZT& z%F%goLQrBAn@7>+N%4Lfa>>4KSqf|${)mi-lm$j+g z-98s5ik`EG%b)d}RVqpQ{PJIXy*5S5CEEVm=(iq-oNH2&By8iKzPvZ!ti1e2rC$qo zKAf^^zByNuy6!Z=53DvDgxyOxPaONtw^QrF9_`9+T$(9fQj@$DGG=HTt74IVHvh0} zH0P859LvK`6bIPbvl%tWD5!sWGDXCf)5?p1Dg5F|Wi{si_Ae(I2q^S_-fa51h?)7T z<}S&~Y>R~kKX)3;ICXd#7uQm)6AVQv@9!|ob0$2^pTS}g)0_~PRxX)*?9u$6vkfdPStfh%&pmYM#neQr+_Yx93uXVJ zm@HamGEL|>#&{|D1*7havkE$F$zi3?GUlNlcIH~ZLWptRX;9EdwF?_W*ZBZ zUHe_OsmVw%$WQ<2_8{s2e@5dcj)NDw?PD#ZwPf!J%^D4|9JX`Raft(uBm@D zYtCEQbnNTx4`g_?=tG=I%I7Q2w*?9&)uuE}+;Q5t_g|QVQ`Wb#o&S>`o6pTUX??ip zQ-w^gwew=t-rn0k7y~z?f=KV_uYrd6E2+K7oB3Gm-1rf_r3Z79@p1gJa9fHW{O|a&vgKWpy-kmK&7*`Za|y_>G2rRY&N=?XxexV*X;_WA#m6W1(TmgopPM zP6c1^m^H~pn)}Vlc?|3}&zMh#+~O?z*w4Ry-GpB&H5@!2o-?RoyLwC|Vi)@(mFbdF zJ5MPjwQJix`l9iNv2H5g<}W-QBApe7pNJGmq%$$<+3ovJ(&HT>jvhRkx43@&v;*F2!9OGNK7*x1E@B=7LmV z_a+~|!w+~uB)b3oljh_13@;1IXO-wuR@uKh;l_r9_~`Jqr3*zY3*yryS}!@rA8O{+ zGMW9rrRCfmj~0d?P2I97My4`FE*lfQC$XP!{AiQ)S_ zG?q>@@o4N;m?_nEL^)Hb-RqO||9dtoq{;;D+DFV*XrwYe$UI4$oAiJ^85!={(rdq&N@W$ z$%6}}8&~|Bb7;!6<(4ciJ(WgNSO0YhT@=H`Jmu2g7lr~-bv-$21Ws+zERDDnwubvO z@3Nhr7@oRx=A7aSX{&V-q>*nVDD^igrRDYJ2J^TsC%Gs8L0rU`4N z`LMlEd71S}CD&~B?AL4GoO*ldkW=Qa{T5U8ET>$%GH34w=Q*BLX9c^v-}CgI39^*S zlDzmj*djPkg|&IHkmMo3DO-dRwgt>}l3KVW^?sng^xR_?w1X=H6|4_wwiX&qb2$|d z)Hdmrrv%$v_nOSdx2C*e4wg8Qek4gcxLu>m;?bTXT`h5wTIW4foo10<6t5%Xos)UA zS|H)1g}@hYm51$LtBwSPAKTF}kyAz7#ig!PsqpH_v-7`S|JA06s zbf23d^sZ#h%sS@VI*uLcCw%56Obu7sYhk0S)9fJiBKV@jhp1V<{&k3O+;x#rDB)V- z?%ot*XmD6&$%3VcO#7ZNG;r{pXs{_hvE4^iROdtIRg0Jn0%9jCE?(ogC2Ey z@21}nKX}~wdZIv1|B8=2iANJVyrQ0JOl4!Yl>Kq+{sZ2Ug(mTzzP*!L67Xw3&&D+} z2CdfAFYKBLBC&Mf6zJ0~4tEiR92ntOz4tNhM{fJCKFCwV-D z8>Y^QDN#M!%C^sH+3UuIb?g@}T$$G`J>htfL|DkfFP+abeL`60YfoWXIJ4JcmdFf^ zc_HFc+*o|I9`#F3s#loTd(8TH(b7Z_?^)dJhvkg~dY+d4VZW$oo4R%5D<6|9QAJ8+ z|1FGE{1?{Q$QV?x=`a~rL>%y3E?Zo$VG=W|??F{%OLNGSWy{vzl$lU8yE!trV6x^^ z15r)oz_dHnLcbR9NvktF3<%mbui~lZ6dQgkX9uRK?je)sH6J?ExRIYd>shf%Zno~h zGhz`2_F}1JjTdyKITn_5GOW1wc_Yh2Hm8^27cQ~-R9q`dVSdmhy;e8kJ6l(`qr`EQ zoHQwMiw8Sr1x7hUUCy4?DRg_)mkQMt7dOSs>++tbYU7<&5pXeV*%K${nwFDXOMRM7 z8~tqKk;~k5se5&HAoo%pTUlivR-2V;C!3wsnAy}}R*)X^!INXTTE<7y5{(`$hlsl9 zl^V_K1wG_?C)HT|fBK=AF}^rd=U6~Uk%Ws$fw==~Z=uqke z%Cuj2FqZABd&u?FYu6*|>uuEzELPt0^_0B54SIJk4d<7U>?r3cIUT@M!Y0w*z_Nnr zgZ&N#j;P>>M5y$Pw2NjbK;FRIjK7ENMsmiqGbbo4y#SErr2b^d>t#H5iCqdM)@#n*Sfgmp0l zaLXKS3pm5+Fj4FjzeQERvYSRdH|?zh_UTsts=u{OA&Z6k)P^QEkMFKJQKz)c+B#({ zSP#}}vNZD;l*#DskvA)9V2&yJ{ZT#ezJaqti`cwIme8GoiL5W?F|5qpImNfhsI8BG z%N#L3j@>*nUT6CK&tSgDeA8W~VMWt-rUt*i(+@as`K6k)w*T`Gk!BNTI5l6;b3&j1 z!yy4ixk+E750nVKUwZ6ZP1ms(CHC;Ba6N3QUSS%fpC8kDNrY$3d^52SshIzM zrUvtCTBt^;klrGPo)AhZ9Eap?#90Mmw`SG0b(eypa zbS$EAq9nr(&W!t;?lBig#6O;R)xlzMRyMEg$BT^#CHetuohA(@uPOYKxm0decD&tM zdoKfv_=h`Qjbf*+88j;yNJl6p)L)BGxTE~*^852^UMN3RTJZR1W@f^r-c!GIKD0SA zwC=PCQsOAN%)hHFbJ|3?e^NRz9cdpVI9;N(t|_eITyyBaMSTIb|GKxdZwgyBUby8X zq8jnyit*M2o|#|wUU8lf_RjtG)M~$jT7UF*bIMHl5} z4)vQmSOm8!EdAg-vsc(%fo-Y4jr=(m<{S`gY2TLkyH=p?kbl^gr*Ebj_%J-Mmk3In zdd$N>THe&=$+`QpS}h(+y?W4k`4NKx<3_IKx23{@GP`tMpZqLy__@rz-!l^p+wSW< z_AaU17xPQ|=ke~E_cypQKC%9s!tmt~*NaIK!Phe-<~-cx@*uOBm$NbW`qbaja`QUM zH52>7#Ex_~t!+xRmXPEP$aFk;@y82pNB+AvnyaOpPb^+yH$jzg&Yca9h2)Art z`xm1vGNZs|hGCm$aY7s4Nglv{*FnNyoj~uQfN#O1jSrGhgoY zsN{Fjll*T8rg1XG| zBiquwQcOBHEHebiXYKsx&6sjE+Oor^f-$K4pL*`nlZOAQ8(IHU zzVIr`X=uEv9;3?|m$+d10rskv3ZC|hV*h0;3LdaXh+N(wcGz2QLNGJq9+_*ar~VMx zk@EePevOLe0h@0-n|21r`hE&H<@3|?e*7_2^~;B5W*j}XN+K|s&-ueao=cA|Kfh&f z5XHzXEXeEn;+5?Ijy;_hGx|44I`r{f=Q*aA!pwHCivNa>S*yb0)n6nv zjlsq;eNp-O4t&wqxxw=jkbnupUD&#X(5>ldtyDaLs~+(Y;$93l{qi$#Fmlc5aYfoV`*Z- zWA}zv{+b~vtq1zu6II_cnPnVhe6p6&&Mrrc@0jC1_S}>PCRv?WVevZdPuI4tYW_bV zIGOoOmf%7OlhCi7)`155_lLG!GE$B{xlw8Ff+O}FQktvwZ)awc68QY!TS^Z{!&=vg zg@y6{=?atgXjNCT{Lu(Alw0<%lQXoi>*5E&6a38V9V|s@^+^XZ4&1-aDempcHiOyC zXX8q_nHS|}y0)438P8=iSag$S zG~Hy`EAe36skaB+j74=99{iZYc*=)q{9K8xL5Qzw}nofr7n|dAM^RHz=tU& z`MViczRJ3>aw*4}3mv!Fx^M06S2%p^wDHZd(|eN^Kg`pp;+AHs=FzzPc`DHnlh(}C<8|0L zC8?`J$jrt_M(b3i&>T6xFZEw{&e|3Dqsx_{QtE)t)`0svG7jv25#1TnY%`f*GynWU zMw2`49Q+|}s&MHA(}n*=p$v@@Dw$$M*K{eV3Bj|eP@m=>l$sxiudaL*MjPb zExM1^9Q|e5Vl4UMnLx~g2`m>XE_UBluz2AUf2yjZkEew(@%@WEY~@GXlU@ti34GqO z`QN54`_1n!zm?}%*}bOG>)_7bH;m^eDn?A4{`R!Q9RFF}J%^2EifP_kaNHsNYh ziBz@q_53+n*V-7qGPk~FU|lFSb;Fh&y)HZ7x=Z;^*lpj~X)3)@Oj5a2i-q&hABnh= z3)idszxQu3SNeo!T=@!a4-D7V?q19!pCI~4fr*iKwP3|66rlkGr zz;*452ZC6pOq0yq@tWc4VUc?eUhzK^_0f1NF?IUHc4g~loq>Gk84gQ{y|=eFm=L4D z##!vb&+-1?zsa0oI+h;33{2h%;U~MNYchTcVl)x$cD(S^d+T1!{Re_GC0O@vS(1D$-1`mNs_%bg_;i(lg?j_L7~5a2 zZExr1{#z*itBvog8IvO$uW(t)=V);z4;Dd&4{SI8OgqbeLwuJw`+3eO8#m68Wed0G zzAv6L{YK96WOaYOrRujDa{L5y1QgCNIzGH`DU)Y`)?r(>L%Xd0O>0OoW9B~*E>veG z6{B|H!{4$*=KI$xWtLs)YyIa}&G)~!bN24}zl-%lr@uV-_O`_ijmwr9Ee;63H?a+K?w) zR#TSm#C3Mr{A06ID?TqWb`uD%S@PxLeTy%35*iAEtf3uD(`J7ZkUs0Z?5TiQXREZ+ zXRpWe8Ri;%5Wduvn^jPBxoT3_f~l>h3Od#T%M?5q&v)&4F#TV0S=#(Cr7(f-hgkXJ z_Stm1`Kz#oDY*wtH&G6{z@e+fRk1)&^1Il^J1i32oh-YA>a5uxo-UfN+u6FHo2l)Y zxx$8sy3R0>?nA=I3=AfHh~J~f__uz7wue9*vxiJ?i=YQ1kIsS*bJKeag0}DXoABUn zgFAct`#`UZDQCjCFI^D4#PdKwmcdq0ahtIHK8HAr)|8``;yP(_;SJ?wR85dm1{PTR{T18=@AJJy}nC~WM9b=f#TYrSbQ{up- znHyANXBBA0bnQJQ)MxvF#oYSP%U$;vY64lb1xv!`ru>vla5^L1wqb$m(}Oa{7`Nu` zj*t}lHhsnYeSS`pdT-Q!Dq>!6f7{+(M~`F7$IlvF;A6h{#jZ<_=~oV8LxzCxwf(XG z3O>9H)jk!deNEf6C%)y)w(zidX|ukaoFMaBDT;$9^rwwuqPD49+XL1{H>9`RFHnOq->rf`>7D z(Miw4bJs}3rBAN#RpWU*TOOZ&5}S23Ahke`STbym(e{jhgZK-~- zcVj7Qr_+6@&QmSg+qxrpm=Cu#PLS}6`jNO{OG9KSlTPf)xe3=+GrNTa+Nq=mRAt;_ z5#+r7n7vfr`mka3iKWFSS(@c_bYzN(o*ZV_&A`Z_|3qOWt3q+!As%+lAXeLc^^Jk9 zD|RUQ9%PxUc}+z@Sf{;5V*5cyg(#Va646cU{x;oSIty-VUP=5D#OiQ#4o}gvc&^r- z-MaCAgU(;mO_H6&c8*bexrVl^e8+>dY%kpomoQBaeTm&l3moJpc-&?ex)ZL+GT|w2 zrjyTuf}HRdFD8Aw_Q6ZXBggvunRB|<5tp*;&iNY&cwJgmEm$Uz!)y^z_id4v$T8DG zo*JHsbMETR@UXDHQ7kjT{9&l)JGJhCjf z|7_C2BDY3$j;+(SnW*^pF~2K4&~7xZ&Lcvu`7obv^+XZBFzd@jQd%k;hg32Z+q`bw z%=YUPY__bdkvic}cq=fFWomTc>kSbT=JIivlyY9leC{mI(Ya#**Aj~@6NDA*-xlgO zI(GMJXol}rnq}jmx#lOs@~^LAX2c)lTOfV8B4t%)@A6{pWe=|`I2>oY`GAbaYUhdv zD#<$>%&+(E&A4NHj=!^2fBJIcx7YW!eqwSy;b+bFs{QulR_?TG%d7>OF6Yh2DA7Io z`H1XCUen&Mid$vAwXUd9UzXX)(6rZPtCo(;rNxfr7c1U(g#=9A-#Yo2s9l+=eXPm9 zrHgtSyLvPtT2pJizVG)edfYwLpw%@*J?LUY$4r%z0WTUKYWAAcr3410*KB&AB6*-? zu1>^;2MjkD3_U|S9TNUI|GIE6`oUaRweK6-7qac~DAh3fJ9U9^sy&O!4(roVJUWbb zw%!a4ysmMVaLAL-DgRBSj#ahDS!t!kibH9E#;oojQZ%mb^3khI{@d z2PZ0OHn!T>m7kfzb}xrf!6S`x()HCv)e6jeJ#YIr+cr*^SZd0cZ=m?r+bwUYtjobi ztn+n*rO(SS{o=vQ! z$rhx3{-kPO(Ye2wEe+Y?5B8f_F>%?OSiPUpV7{zdBmAS(Ufg%Y)2o?oarRjuCwz=RKsK5qwp~!Qj|#sOPpRN>jtH}h77L_o8sZK~o!a&KLj_-` z$f01)biYz1r-{Lxg2uPmy|_);Jg$6;a9i#1*YZrf21_YN)+`kTnGO!&dsm#|O1J`h z**LNUiX7THm-ebC?UZ%gnr)$y5i?gfwxRdfHiJu9Ja<#191?;#r${zlDc}3FHPA9% zpj3Ck&Ctc07&rA6GyBS{RM8OgR{OZaq&q>eB<*BSIrsp8exbT}aLMs#)2b*=5yKdm!odl;XbYooN_U@wou zC7bDIeL{kgO7=A`UVbIPecCx+2{j7?mx(P3b-Fd~hE?|aWT*PNw$yIAa_H)XdA$Gc zN{Zhqx;fRP#5#*@ZXQ!m*$F8%$qQV+=hTEN9B^0hy~QljaxX`rJ35P1qpjGB<$+f? zn?koxmPYiOEweaoE_=-1r=a=7F}cJ=R?Tg-!XK%7%!ip%J6!HgFsn=OejsY?#cF-7 zoNLF7sVVOnA8PLwzR)SAt)p`)mnG{pi~Otu4^OgOIQB2ZeL>kuO;e$O)4XzvgQB|+ znDhDSG}m*u`pU#?N{(vi;5o#`vdt<=V$bHN2ImP}|2P-D2u=FOwdikFuF&7&%v+@* zcfP{U?N0`iy_1;-(%)gf(2@~=^ zP%U#WqCTu4WFB9j%}L1YZ2qUI13T8s%DqV zGS;8HZ?8LjtlO8Qxnmh?x*wjj9hn`p{7aiuI2;fw{l)t zziwc>)_d8O&0NFoM6K|Q*9Dew7p`>75xKWzTcS$olQ<0)1r-$?OFxAv#U_(yNLfze zSIV9|A!u8jip>|{J54{Ev`@K3sp&9ZoWywiZL#*jB&%&PpElHrUX@(Be1_ToPrbX< zxxBWP7I>vTK7PO_Fkp*M>S5k_s{zvY{jv{q3r%hd-n!_0h^ z^naLGle(De%j`J;VWBrIwiL8;@z{3!-_T*-x?;D?nvNZO2C9!Hzj&Krpyp{sj4jN^4$G`(3A7HpXpA9ta$Prz=x@lSl@0^9L{4c5v*7SVIuU*8to`Lm2L$i*g6tfR&${v+6m#Gg93aHE6x>0XG zWrBrTiivU3niqBT&3BTRv_AxRXGB_9pUt%~`N)vD*Ywg(j^Ng52`PI7&j0%PV^d+f zRqr1As&GeLCyD+m!2&B(ue=W5D!x&QU)Dq8!IEOOpZOhO77KbBf0t-4o$$r_e@Aba zPk`XPl|sAr1(;mi+$u9I-s3@aLbt^t);{(Ak5{HoIr^Z@?MrRl7RPBX+HAOWF1DGi z+5P)jgG<9IwO*#}@k>3=-Y#qNnL3?&eV@q`|Lg7bI|NcciX3yzSS>wi{zd8?2U?qQ>#DctQdelJ+k+pG{%(QRpc*TcNqwR>`4 zcZ}1?X{VbHt1NBqWPZbwwQ6O7gY!z>AR=RFPgQ$;uynC+HSZmfhU#0!*WW8P&^8#kA zx@4Uu%_E6LS5F)|#3#PXg}3Hs+~$t+6CQE}TITv}EDrylnVje0eEgm8gNLl5y4wp^ z*WB9BIU!}ccG4ctJmwAQT#U9;AFLFf#%PvkmG#5;9*T?2_?4$zuL?K}NQ259aELORfKA+)~Nj6gcnmkqLHPbHhZd z6b=;}wVPEc_~KUZtuDT}=+FZH(^LJM!+7Sqw{|=i{=vo~!62u6g7cd7UGa!{v-jty z2*mAA)D&ELVt2zKGdbfjkKg+2NjyEh?jl*N0m{3$d|x~$Te7d>MQ{9ua|iOW_yU8? zqvSbeU#rS%{MS%(FTB~2U+{4w({`1;kr~ZLkN;DsX^xw~;i&O<<;UAbV)AvJ1$~#^ z-k0ze3Gc0z=qwaEzEkvm(gOzWNlzAiH2u+8q*D61o`2Uj8`BA2{(kaQ5P9)u!+rLO z?DFG2|9ETe&(C_p`{i-%hK4sD(JzH;4#*j7uorJUb6m-61ABen?-x5=78*}K@lNw{ ztLY4n<8K?<41D(QEEf}K=99Y5q1LV4`u0Srr0b!;D?R7r{SLSt3Kc%iJb5m&z`cAC z9}SVTY0sW4i7NIE3}$R*wLUpRV(;Ig4d2!N9g)urR+}hW6vUoBX51G;d0yy2O3=#epBv_s9L%)TME-*Z;_l-`BW#52! zEsFB~Rw{*>oza($E#W&5+Pg3FWUoQm4^?mOnn!O;*1c$Djy9-@JD{hsSn}2daREWW z&g)HwC$_)vjChdv$jSP>*yIYOk~W1+e!bgMOkRmJbhk`UTWj*PspmrHL@|y)hqbIr zmum1V_so71%@whe#b(cIP0Ly4+f2BtJW5%jA2R2JG&+ddzW8Y4v(ztLV8^2r?jR0t zfj?&onF`L>T1H*Fx}=aNyRC8YeUYcr*BG-+I>(-*>{B$qJG^&2k5Yo_^~DF)aXt7G zWA?!05wk)%Q=I?yQ?EX<{_We>+P`Gp7AbkxAWOd7C-z+YK0mlurL5aF;W7tfz=PLj zM#Uu^*Z4Y=A8_nAzgESIsZ_aJQ!8I!|BKl^!W_&oS`R|}n@YZ2{LL64aAoDTZP{;F zN@W*Mh~lyMz$L&a@+9AyB}inSz-zhI+of_9*Jg#~NZCAL;d){B?+v5Zl561yWpr&c zi%TS?u{I?tbMu_gXkz2FzfdY9vt}+!5ntu=vo42S9bUU?t30&nlrIDc8nk&}Z;(TrPjy(dOzUKs(i63RN{BKk9JMgDk ze#M8^R>}`Fy8SNs{I8U(5tj>*I@~?A=|PNmz=!`eH6ko!XaDPk1?SWoiJlepv1p7^ zIm0s{DpPGAO9sblhx;e8%~u(ATP9llu@trcQ8ni|W5t&cXO>LvWZ`Io;<&B~4uh#H znq#$U1N`@HFfIRW6VmOQ%~7L$BCfO7AR<$(WU9QWf}L&Oy1Rev1=K3F93}p??cVWD z@L&79IW4ZvYCN-#Xfx}FiFNP1WKy^ChplA&Ap^&_9dc1$uICjAGXw~nU}WRqV>wni z?}f$_snDXSXWYMji%|_f`TfVwh82kup0HVXq?SxtB*V)3TFoKKNo3~+u^SJci!e^u zFTmG*SwwDek^qZaK}UAPuX{1?Wxg{0@HqN!d23w?Ljvpb{iQ#|HQsc$G>YszopG04 zb)Hs!be%?{Z^yog-33}_HV0geGT?9!`C}98ns!BO!PAOvk1HL21)g1snI$qsVus7| zohH+dgj|WZ(eTwds^gbPU8DDA%^kTKO!|!bSQ#XvRo6Ae7*=%mOpsBzenN$_W4gkD zE!>%!E^UmC9%3pR#9i;CbT?jX%(!)PtHOK^@rfRKDl@Z}#iXQYtfe0pQr+xUaAhDSt1wdaJfh{TC+ZH&&1F$!r5KCryVs5yV^-vp%yR<>&|Pe=F| z%>UIEEunWsQ?|#w;PyV3uEWjMZtQ{kSM(|HWwSl?bDh4FUsFICe2;Ze4Isz z>$RY4np>J`#+?8GWBwVnu^*1{Fdqew*=v3MvQMP)zl>|cr6`8UOHv+uZ>x6cx~aQGH0hg-EXzm{dP}xn#IFo#iCs+&@FLztF=$OSta+5yyz*4 zu}o^83m>`7Z~M$sBDlFUQb(=NhGp|Y(~S+Y7F%9#>fzYPf8wFf>SUYWz0i&XIJBfMwSt^}9e zGUt2k=@mXbAbjfEz)zJy-N)Q&!UKZ6S36^Farx30T2QMG&4eZPz*2YrbhTPz$F9Xw#V#_x=c(___|wNn-aiu23~TkD!( zv#@RP9aVug~33@x^*K<$SJEiUJuztUWt{c^leJ;&3zyteb=ZZ zuxE;z)ve-Fs>}+kZZZ4!U2uN<|DLZ%0Ar|zVnWS=XYFjsNhu||lT4=8u^ls&&RV2- zT*0CGtor2#r{vlmOCDdAz}vvAcwfSPzt3JSWmdLlX^#&w%D-2Zm~SvE@2`h^m|3Cs zXPfkFFY$lc*2guGUszY=g41#z`$vMmZtEOvy};k{)T-uD;Ngcq+&{d!cJITS*GZX; z$I2oYr5N2cB;<2znf`xjI&UClAE7!uk0oru;RJ=L*Lx;2xg03`r~FpF_3b_B=Mwic zUmIq=;@)w%q*E*N?B%EGGo3$Xf0*X5L+NPq+q@^7rIB~8|2>rU*zc@W`GsvaOLdOK zysP8!zomTt=;h8hAuZW=3l1C&{mr4w@U;KIa zmrsO|`Na%oo3#}Sjx}&3fAF*2wwtANhrNP8JtKd!Ra^}P(}9Q!0Y{iC^shzC zkKp{`cm49OZ#?<0_Z*6`UL8^(#r2Kr9!rCm;NC+w)kGYnPxL08DKvWFD*x+}%~aoZ zW+jdr3{zcBavv@HdNnMe`<3g9+ov^MBlyq+9bT9<1TAJOnCDre$T@u0ZsfC8#r$_s~K?m zyp+7SnM*}cLx%6`28PKyBz%_M^(e5IAKfsWFM#Fml-1eYx+g-aAI4eSk=!k=+$3O? zv145)mk4V>k`)8EU{uLlUP@=cszbql)z)VAtpwfwVd1a z#}1d!{~s1yFsQk{?GgXQz&1&dd943kbuH$k30OU6oPOsv(;YcXF>7vk$*AcY@(Vpw-^H?#_mYwTGt>R9f?H44 zetsk3$f%a#-)p0BoikLcP&cuFNBJsK*(u#-`AOyH#d|~*w~MUUIz z9WSA7KaPVhz2xgo-jHNIf4DBbPW$OpU9pH?EP>v?54w18FnVYRNUWE#Yt}jcs8itK z_ZwH3)tAH{I2C*N(~`-TitOEbJ*IVY3J0H-pOCz(?ToeM<)cRy^p(!!Z|~!O5p|8> zBBQO=ngpikSYht&%S>IJLZ>CaUn661yEaOA8XRx$eeHWpd78+<%W<=GStb!;HEy$64O^KiPMvUorJf zZ;d(>QbK#XZDwhUbf22(x<{g^ zQ)cd!)6X6_l!)9hnc%~}zFq0Sf$sv62M&6R%rXhODkSIdaIf%+PJ=16Hp|?O9=Z~c zn%5wQF^K)?tTB3~cW~k~vE_%Pbd*GQ+?vJ7 z(Q@~+{_H^QFzfGsrL$3nD?V6r{dmGw zw#wPbz2NW0cNRW-Q-xjxnS~T6x9O%>3C&?^u-Gi8w#CHFO+sOd@Wy%D-6iW4GL%=y zIVxmm|8?++_dHs`-uyX)c1J}E+p6A>m9o1(cA~errVWN zG0xM@3)9{sB)oTfD|4D?>5LeKUaKWvbgYc;3qCM!D1Fh(W2JoL2fK%mCi83iIwMPS z_P0jo&!;nTcOSQ9yC=2ME2fj#@2|rIgA)#`qXK+Z${k<}cr9>;chA57&B3iQ7ArdZ zTzWzu*zm7Enm>4TD!v#jGARs9_g zulw!Db|_`meFuAEc7{3AFSnZ*UFiTLRg;SntFlCCvOo93#)EBNA_Sac zt>)j83DRHCbY_2C?tM(fMxMc5*CW&hp#T0lWWnPZZhXkywU0Ua*C2uFwZ-tV83R9Kjnwd)Gxwb^M{ z#^<<}gzxffpAchU>?^P|@Q_=;s!*9prYtp8&TGwsU*4z*o*V2c(0D=O$plv&*LhY3 z!7)3m{MEDrez4t(ufL-0*~ajnqrsOUZqlJ(%aBW(ZZy@g@mKw2dc@A=w}G|S_3yQ? zZ8|HCYVPy1=9MgnQ)~^^_guTOb7M>H>?&pxkqI9C6$u|V{C|6HTgz7|haFx8>(^O`BOOAnVx*>V6?UC{c+z;&e@JHeS^)rZSDO^n?+7mEcv&>_|As^ z8g|$#<#UWH6LZgI2et<*I9wg-8T>4G zjW~`e9EuisuiW_dUOrPX>o=zOXMQhuUKTqjnsFRyNnJ7ZmExHXH5m#lAAWThowitD z>dv{h?t1#KxZv*lt=2W=4{rCqkSXY`_#s?s9nbW}YJTtUu!QdG4_z+Dc!kA;2#b01 ztN)AO&0_Xu{t2g-U}6msI45*v+j7;nMz;zX#e(u@HEDP} zJKg=Vlj*Q$`UDp@F_ZlgX;-YY-pjZC?+l0!U&NQwTps16$s=2%Ydq<%>sRH^B@_3k z@=s!oMW2b!BF4$#)NUw5nqO87XgOdESKMU*tSQ#USiR&(9X#a@RMP=n4tz! zDf4zlZ3hA4vbh{`GbHZ%T4I!p ztzt7LSH@b-q+&tI!IZTMNDAtx1GfAqL(PMO)BsGG;?OOEEeWRj`*`0Dlr zu306vzbqQgnVE5v7&n?Enr{k@I1=AGFIPvwPkw>-{pn2BUNuj`5)TVr@aWOWS-ZXN z!GkHAEcohNm$$7j>2UmKpMOA+_36&Z8+Qf%HQOn)ki}%C#<{R z!C97lTV@`gRj}*9Avf*g|6{MVMQjb5#GWaaH>aeTQSb3D<-aDEFE2ja-znc_U?Fna z=U4!HKX0x;27Aa11K}_Cdh>epJ?>~{u`Mi=Gdjt4!Gz~Rp3YiB>$7=5*`7wfb6-7j zzIS!W(bkh{J5MqH48G2|z~zU`k2uDRt2Pzv?1uk6i!zfUJGdp+T|D2kRR>yPJIILai!(q*q zqL9P&?$4PAwqZ(Q8J#&s8zLugo)J6DSE7_46JE32<|IQW>#J*z-?imG{AjvURwUg- zMy|gtW$IbG#ID#wvVD^ddT43CY~S>d$!@KK&6E~_c>Oz>FW4v53BFL#|6gY9>~w}r z<8@fAs&G~{pQf|8fYiQVf$S1f@e+=6-*5ch@ceg9H~U?F_1o;P18Wr-mzgqaI$UMX z=}Tueyv%m!0y~p_@3SZ&0V(^`@b^g_ZavXg9+=-aCB(?XY_sZw?v4p>6uM3uTt5DB zK_g>)j`4A24wkHjT;(K|l^tYT(4&G11= z(E5vfn}}cW0_F`>mzGc2eNk#wbxU@`rl-XR_<|!m7kT_ydtHcK@%^0SPXbyCzZ}`= zFrhDHW%tS@^Ai7_*s(=WJH+QrRJBCCPU#`8+i&K-Yw1_1?YQ&sTGX$gT}I*EYKM>P z3|ziLB33^(-rXnO=DNj+D%)Q5Su#8;8V(5y?Ubk!4!f4NxGc~zZs$tvHC?{p`#3^d zU05d_Yi;dlxzzKXrzLIAg1UlIk9Q?b`#!kc3B{J=Yef|cC zrmt?;|9w;9e0foUtz|r2nyam=8?C!~#jTzSH@}$7e@ba;>ol2jsnZW`-gwFC){hQ9 zb`}9w@t&ox*f!V%*?nBobipzA_foMA>q9Rt{?8C)lbG>Gz=yT&RrM+XjVK2d^%qH^ zOVtGaTI@QMRU#0){M=L43%-98xL=3}K4(7pkhz5E``!3Sah&-Pue&t5S1WipIP-cK ziWaZ5F*e%zqxrqcTg{!HJVVc3e*UBNf0f3gmixEDEAIr{n6_Yg&SdGtPdtrNBqZkC z(BFCL(INALlB;)SGtc1KZtw789*6Xfu7<}Q1;5xcOQ(BWpZY2+sd?oFN%szmf166g z4zo2MoS75M$T&%H`od!-J5QfxZ~82?dRAMMKKo`C7RJ9!Yh2@29~JpKgSmIwQHPrj z2N-J^TXj{J95}M^z=`6k93sC0G+a~}Osqm5cpND3Ra7^V)b*Tp%t0qzfjvg+fx4*7 zr3EKheIz8}m6)V@h&4mu*5#@~+k1h82;@Nr}rG^B6)DDNqK;gGxa;kBj#9x`l2yjzZJp2ELg zBT2V0@#?odoT5F!d=~HI>l~ff)^@gAFz~laYW1F4$N2T;;no@lw)p~w!-7vKIDb0a zxn4pd=+}mp*S01u*N#bPKRYGr<@fo+`t!ZhJG~iOOj!74>0M_$&mHyaQjYmKSAoUG z=0;Brc^dhCKJWILw=zi~*xgOJ;BJ;itw2~1Unr;URdEm7c^sF8nmG+wBpMP7d}R~@ z6pJONamsK_PIxdaDVrzJHuX`QNutK3JvVuTvVML3*BdIaf6ewl9=(88`7aq!($d*8 zIS)^fW3-NyxEN>QG+q1XqQ?JwQ*7B5)tp$IVJM7mKz+h^6{^ZyS1tX#Dw)0OQ@N-W%aehTc~Q*yM%sq8i`EW_>sG}PGYxy(aB(`1P8Y;>EOs?@%NW2T8MC#w$1o&v7lEc-m+n$lf*q0 zi*=%tB$?N@hO~Y#I?~6iTJh4m_@!q?1OK%?3FhMpuQ^)mf)$Rg_VSPNn7_y;zVVXS zi4rajCNo>1QlV=ee0=I3**qLfHwqLST|RY1fN0X8>Rap*+b4KiycWnWin3TDU~|Z% zV^Mr#p+M$2>qpPuv9xs?#u+FIH&?$^HEA=+Yw8Pod9}&Ok?DTpkKTrjOO|r>%1kWv zy!k_$qv}#Ocd347glo+d`GSkg4Yysq*|iC~Xszs|YX#2Fssguo{-2(oqu6Qbc>MdL%dd>DYhQPd=oj6zap_gXPIJ|@vEuN;K@E~GeEKkqTv>1ZL#sdD(fjDX^@P>qj8j3qqb zhv$BEcpS6!SgQm3pGCrdn^rjU%bs<5#@rC+WHsX>Po|CXQorZFZFV*9*pd<%y2T_e zJ2BK^`j1o7(ipTw)Xr%nC-KyS@yT zp0DZn;B~KSR&tR|M!bU(bN#Arfd|YX%p7fY4(t~KA0*3!JFMmOIh(I?!Qcaz0K-is z=T8nIU2j6By^&eB@2ty(Y^Frx8wP<-D!5+Q_0J3N<#@Bdd;Si+Qv1%8E)N@N=5X)v}= z<$7V#vNuZNFT<}O0cn@ssm4Cd2if23uQELD{LPDZpMgNPmF$iJseN9Ga(3NXJ8RfE zITJUsX*{Uu zidxQ_I;KWKTu z9lV-7A;;@U*!(Yw1xphJ_~##dc+CF8CX*iC-T=0X8l4Av_0N`6+>P*f)>?a#ch^ns zgu90=jBihAT|bMZZ=ZM13<3T`{Zp5pX_)w!U2Og#dGyhxy40@?t21SEY<%s_8%hqb zbcDz?UO2@3N2i_nopoHXWP$R+;^l8&dvTQZwgyYOyLU%(-+0gQXUY1V8Eqy}H<;NZ zdpkSAgcoR=&ogxB>GhXWU@hwlIVxTg_e|vLI~Nn-q6_Wib2?jhx2hS11|L((2snRX zUbvD@RrI0fzqlE%NL0MpxsRuoTd+s7H9%eHmGG)2KGpRn=JB+6g?mI>c#7Xxp;Q-f zG-2n5&_&Mtj1D&8?FkwcvnQU4h*;lH>F_g(nM=*eCS%jBNlT7sFy0e)h%u^3Wb-*+ zyr{61Eh5J4%0-JH*}2UIm3bmx*)9lkX~bFWJKf4M`Q)>RJ(qtOe*9Vbvnf!5F~Hta za!s3nSk@Wt07XsVl_oQ?C+zg}Jygunbckb*^3}CnaxMN6|Ane0+E?ZU@phi5VNqSl zYW}xc}JBk30IWQa$oj5&~;6~g)7C$u6U(N3%=Z(zuVoj@p0MgZpY!aA$h*I*cZU0&Ud4Tp`TOcRgO+6?7Te;P zBv=c*3K zH5#Vr$%S3GFi&Vk;PdYP4kel!_9aMGNOERHgzx@d9>OlQc=z8@zXsv8Vh8pgSTAD+N3cWP^(zk4rFugsB5hadBnHNGxznN<8xLBhqy z&rW3FjDE*NL3#I?Qg0m@1H?MdRtFq#i&4|K!TH01@kIAQUJJ(T*9z0U7*DWC-_c2D ziDGJITcXGP!dF1Q*Wml>1FOuqlmssSuvcq2GiBLj%gY?HnigrU0uBYv0$n?-UdddT z_f3+=Md0dU=PZL$=K|*+Ybf7PV9&J8LnZICyuC<3x2sCcAGwhE8@)tRg2L}sG0kf{ zc}rY0%Fl6mU*O3Zx45R>7ToK-^NDfjd<}~xqZ8BRr<+`Q6Pw+?d_mB35gWnoH--y% znxBLR^m6zeF0y$tLD%Far_QdH6rnlI6I&D6wR3!P>bF&|bj@VkwYtZe7oq_>|Ab`a{p5Qe&NEQ2`#g4H3~>;-;uWv;copeUt;@Y-ZC+_W%CxS zX>w#&=9REmu+`U=`#GeTEfGa$uYhAXwb9nBBo!P*k3d3D-TMMiDJI`!NSM; z{j!!t){aHk-aUr2C+~DxFBS#NUb|Rh`@M-A)_i5spKN1V3=f{!*{Le7S9jcdCgD6R+`+Tl+Mgds&|kSv|35bIPHFstt8Qel0!M*Y@nc z@Y%xpM7_LF^<3VAfsgWhc*-U`Yt7-YK7Q`RvtN^$QhT3y8@R|anCE11>T7O3>!V-b z#GxniLYlExgoT%9hW31Cqa8l8`5q=HA6^$#vMDjO^{v6iXvf&gw_4vmKhChFP&=mf z)|C=QvlkDai*<|4(SNbK{ouovND(&n6aS8TbDvaj;xRU9?A4K*KTl2TfV9NEqJjv8 z)Xoy?jvnXTx3SrY%j*Z1Z|j2FZ>)9*R8=YQ z1Z`&F65zV^Ke^?$_Yaew-CvDAXn$>f!1J=Ru|eN)>#C!DR-x7n8>-h{ ze#-jsV(~{4@#eReboKVQb{`Xvn;3C=ud=9LfV<(TYy2)3W9)2pdVf1Fry|t&)YQc? zz3V~olW&@-vnQwQ@aknT64BkmKjRjE$Nz)Ix4+-)zG!?w?r`%%Hk--GfqlHb%m+8x zR12i?uDYbmSFV3|0Z*LBrd}TH@I@It98%KCha;KZnwwl=zrb$o{-aE!<_E)!ow6e|; zytTvePOrkmidK%>Zmer^{_dX0Pe-YaA9HH+MkRJdS^7wCOl8FQF$|=v)SB^L+6s4w!_X` zl{rC2*;W=VKiE5!zpvW9rbr|7i^)Bq32Db}Oppqi%QEYx)}oip(mlWT%rU(9uw}{t zLxasl^Em$N^6t6Pz`C*JN(8!fY&z*NflyI5!O!JOv>71{10rN`1zuBbZcMH$Rj*J$OxF~xzy|Jo(h>^hD; zht^0pOcu1BXD;zw@PEywe=quVyW^vJr|xLb@C@P!Te2?kh^Kmhb3@Rb6L0s$cSnkp z3K)85D0TTt@@QHK9TT~7rbdH@<6vWrmdzT+PH}neL-+gngA5tD`nFn@H!2zx{Ho;) zxhWwNHDRCm$=r|v|4)k!P7mR7P7tcF(N=5`k@Q&e{8kvRe{Wh+8KZuL3CH|DZCkrO zrdBt%AJ0K)5fAH2bXIeT9;C4lPdGc%H)#Tu8W5@c0}cX=5{5nufdf%OJf+I-Fv6D|ubnw+=Ie??~7rVoqP z`s{I-7q%*-?aU085^twhF$>&f7>%O8g-G~K`Ng+NB=$nsp-XT0T&$dndQYU>+F_uj z#~_i#8Wm&}{Gr>Rebtn2t?r#(4>Ld1@Kju!by{)%Y?&wl|1kc!&FUs>1;<{h@!g#^ zCp<|&+C$deR#8!Ct)cee`P_s1`W2|pnkNvD^&~e?;%Ovd9T)qnDMK=yH zA4s3M+j8-Rb(bg933oC@?JcdytUD=UA@ejlyrUNl)(6a1Dl@o z?y=#w6{wrDn}5Ez&c*i0Yfc@ryZGy%vDn>%qC57pcnBWeOV-ov$ zuO8yOcTF%u+|c0g{EzP}h2+b^YYn-M+`DhQ^{r#Pp~NnuKVqs=n4CU;a*Iscv+WJ{ zHMN#~N1Dx+O^(*GF<;v%6f6*2Fx8-^*Lj`f1(U8XHntbfX;!qZYqPu9657<+)=|b? zG?l4f3eV1KF-!*6!ddzz8D#t})P1eNnZ&SzCwC?H&YE_-?E`e=DU+;^X{+CcdSmwiQVgp89=( zJ8%D5(h$5NXxXGi(!6_3P4=q1`*?W~&pg%_2P_zQTjH0hKkU=cb6+$0B2PKjS9g=u z`@A!6onIcJ_BEG>_0=I3BWoLt^H!_)*PPoe%JVTGH%&u~_2HxqcP?zwC<|lUA(qwj z&0G3^!+qu$kEv}zD)AaOY>qINuLv|eqZqS`bpda9o7Vgph87Ym9p?I+2CNeHD(Vac z8eD=Gu0~9WpD*yDNiR-o3x{B4@8oAHAw1K0cw#yZ7&OUtG9{I0HGMekl%$|#Cd1-W;K3?g?{sL735`2Da?!-k$ysBu=YU zX^Kq>GW#jSF(FRUz*o4xxnxnn4ww5Z1#OMj@BP-iGc6*67JQd&3_(oFi+=r z6e9Y;tL1j*PIlSF3QV3%|D&FMOlABabyjj;BWr{IzAXzbG8%LU`+kYIB)}%c6~ohIt>t_|amDZK z_9x}UtzTGd#vSr7V0+K5;MmhmX=^tcu>Mj|Dty{v5H&d}TsUma>drXfZl>9*Y*!Rn ze-K|@(|%{>>X#E6nEKY8W)W~_u&D~vM=4So! zTRGRElH>BK5Dm>md>q}5;YUtYBxyN6Y?a=~TpE&DR#Eh~=8?y3>x2K~FKZoe@MaEQ zx>&nLpkDb(*u<;x}W!hWhU}_pv!}KF^ z@xStrActK7PwoXI*G?@9-oKJ9G~6*Ol6%(N;3ctXT+{5VuXs18?rp7higA{ZczR*k z>m7_o4(Rrj#s$rd*nOpY^~y{|ohJ$oGg%%7{5sTl_`ynUWybz~;Uz6{sWlZ@&p76* z?K0GO;<)eZvb&~Bn-B9SGbJ1@abt2adh;yg)(3Hwv&yHH`7Q6x-RanUK19K3ZHsM{ zCznW*(Hy%wOJD7J{c54kLWTDYCM?s^%qHr=0IK=s2eD%dshX=_fn>4n}?! ze|4UW@ta}gU>@ow^XbsF50!p#+!^0j#Car~@tF6{`G+FU%r!0#TRR#}`B-w!yuRmj zaN9AKxoRhl6eM5p*!k4?h_^&nl}LxEJagpKcPHnia0YW7it@44-S#?y<=&xFmu)Qs zk7;vUi%(?!zdCY$oxrYxiXz;HyKfbyMR0zbAym=b%VQF7__fHqxlYsO{#Pm5Y(GWX z%al!G#jf9NBD+>xh}so1ZC78O(J7r-6&i;H^d2%F;k**@DC^H2#^4KG%q5EsF<6=@ zMrDZ_E#vuP`{>^!!IC=mog4~B+xv?TvTl3HSo(tX?}ma3fnU8g=g<1{FmUe)dWES3EEjEl z{zs8>VVktYq7FE7%t;fmOxyqqbKxU563eieM2KhzOM;RYT-fQqw zmcM;B`_OCUBlnK&WQ~lwwaU}<sySkc}O|Nr$x8FwQ`j%al&DzVYV|c>lAg5h$_tml~wN1u04YhU+GC}oA{Yn?sS|4`qlvmI` zdF*$u=L6?bljgdgrDncN1s}6n?Efybc*GHCTYj?kOd?bK!N3~UT!y~r_hx59@>e#B zSy|m%JHLgomh*>203T1nj|&IP4oyBFpjG-aX3CX2lQs5p#9vvix{~*4$I_|IIIel4D{&_}XmGW+p7Um~_xC-zbnf<4H>=pY~rb zfvD%bJmPUSTRQlT1-ZDH2<57$NLU2Q*aTP1`!;E9jDm!Wz`Sn)`g4@l*(j*!Z1^Bn zqY%KR5vJ*J{!qx%!}A2LMb>XrT5;eS^VP844hv_`^m1m--VI7(i*ojGJTlY%xTe+k zDc6=6f!9~h`qH#P+m~;LIl~1hmGxp7A<-`ktmf@#x?`TVXPL|d@jca?2Hv-h9bvjt zT)9u7`xKMK_k$B}cHh}7kh~CfA_`h6d(zYYsp0mjMntRAO=!A|+b%V0{*%J*S4h3`CwsAKo3jFWvH}jt1|#Q!5-i z^t3kkYcLz{+2p9x8Q;d6X4JQlJ-;GIh4Gz3XGh^26~;=1qi?@zzLB!8bUEgu_w~8N z)|K6jUd{^_hMMRF{;g#D@LG&vCTIO(_EK%3War)zPl1E~SZ94ZcR>4EtXXf3gUtW$ zx0dd_DGYNoD}4McapQAu-Rj;b#&Y3>w|g^${$Bij?rd+S zh~bZkN0^UtGoOB<@Q{Dvjx`@TjbeKl*ZI0x#CCGTFJ-h%+~56i=T?t54IZ<1Ip~{n zF8t?g(5o{oDQAu()4}ePA6g4|g!ovB4jVWN`%bub%znXQakc|i7k?d>WeU@2>k09k z!@Ni7qu2Y+)(e4Cf&>Ia3fatLcRuNLJup$_oIu0Gz5Qo?uhw4Ez5J%;Prns%YXw9) zOTPPZKVK)XeAe6M29{;rJ2?85T(S}1;1HO{{KP?qL&ofmatOzDft_bB-?=<1`2ddy z&*aHvT0A=>M9#L@OqWoQk>HuPe5H*75041*;UhPNB$PyZ1mw;<@Hv>{u-7x*VGrM? z=0mKf_@X>hW+coF=k#|LPUw6m`7_*$IXvZtx4_0Qp7kP5jm6A{@iBrvr3xxe=9)6% zZ9WAonnANn4r^@)(`8|?STb|3gF8!fcsTp=Y0tK$=yGt(ewtx5$4p{TXxQd!+Y)#W zBv=I+-QeEW@?4yc+oa*J%%rCxJGL`TxuC75t+s%B@zFzm4AY(k7EF?o)mW9}t$%hK zvsdGX=BgKE?_(;8MXG$xmN5rKv2B~hk|iXrJjNY2gjuzo3kPu z0z5oM2hQ;FRJYahXmWd5^Tb#1#I8N*5qvnlj!}MrMSpr*!YkoY(2))aO}SFyVALxrCS`tm%4r17rpPmafXuPzfSRQFSblmOxnos zKVg>UVgB=u+%H$Lv`=?#_|>_seX6Qm7x(<;qJwI(~ilM2q&$n+% zuKN4)ZVbU5p}qG4!^_>B!aZ~*Z+Ufiri$C+$C9hX50#XP-qeMgo3a)spO>&3pG zlZjS)&aA6=QZ?VNVHU&xyQlXUJDE+2>6#&CJNF)mwuKFKl#BiA$I8d=$y85f_ zRi1@nbEan%%vjXdES#b~@1Vm~UH+-;94{=Y`+e^oXcKlxyV|||!~*H&qw+SFJ6+dw ztlC|dbc6ln_O=Nk@*GP09yl?J3dMP!Y6)N{5ar4UWeHz$@rJXsSLop-4ja$QTq%3c zd{)MjIbeq#^9pfIYo%b>*1Z-*ZbKg+@Y%npJDnR;iPl!DHC zUbj0mZwt>q+3PAMI~3o4>NIbSKXl2@+JY_a*)Q%}2ST0gW9%3<#xDQSc<1Mo!(2v2 zd>EzM7GLqSZ|+>(^G5^K4(`l)O-hl6$S=;-HW@C+NV5V5VQ4Hc_c}*Xx}( zv9UhwQz6gl?C@&V+`Sf?Ca5v(?^!f&)6TC2k1T{%F+Q3yh512D!>)@?eBlO#x9o(t z>%ZpK1TM&N4Rg+#{^o#fdvAxB)!!NW_IG}W7c1P-(mUtiyCcOv2yEvR5)Vx?P<@lSm!23y{*qgkAwLlD)c*X^QmzEq&Qr?hvlK&0(k50UtNfc72b`=o77b z6d4#DQnpOs@nmFDYx%a^WO5Hore=DMyQ^OSGTW`5+YbL&jCku6KUOzr9SsGnGDtggkgr{^y*- z$47Vio&?mt<+1iS``hy)JA2dQ7>8Qb|1y0Km^svia}kNkkox=TV+~ zz-)eh14D*)wQ|E^z5@rv)7)O)TYsobV+PMv(-fXRb^iAJn&twHj~nW3F6jJd==GWJ z@J(cX%LPMUebume4cb%6>b~2ATFl>Pd4N&x;dhC1^BRu64nJPv9l;ttHQHrg`{gNf z1y&X@$fZB@+fkl7&;Q5EpvL28fA_^Ug)e3mT3Its$22M{St45A}!z4OnAiR zU)VwbLqosKEQdr-AFf~0PAk-%9p3)4x!1t& z#5ALtC10gI@4(Wg=!`^@$;TVQ`CH7GBEuOMrj?xxVNBep@Zda~$<7yM^FsE@zgTyW z|JlK}tly6^*3DCAvzf{=VT!-^jE|QZcuj)mIA?dgZ>~Lb`gOp;TF2cxZ%mWiaNt{; z!@<`FblP88Xa~(ts1K@KaPPs@vs)XNO^lKH(Dz5s?`Fa>?O8jtD#E+&9o3$fkP++7 z6UL&Da(9d3Y!9~_HIHzIpyziRmfI<4O!ZN4*>kI8kBWtkr-)X=={L#DeDcgJ;fj-c z{z$#rE}pIMC5ub#)dhveYr-ZgPi9@gaP;zo9rGqkxxS@iMnc2Go`9u^-*x5Iyw=Q^ zGiCqc8U6=fR881?>duwVTi)1ivD>pz;l_m(X^HnYSnLRlJm~Z>TsvsO+DQitUMTgy z&SqWO+1$Y3+*hXHKJkI`GlzK!>irYqSJ%qVj=h*za_EWcy}8X*Z*E+l)OO(hAr*#Y z6FzE+v@dv)_PtPbk>;yzHYuZ-uUlvS)M?n!C9j*gY=hXRI+t%XPCu@lG1<-D%`Q~* zLq&TVt5(Ym`DxwZ8h#G9BF>74oXXd}8|i=JSi1IAspV&7w=3P9aMY9e%il!`0f+B! zICL&u@^x!Zr+oG0dXo}XlbzmS4W+9$Htw>$+_!X|gP?6g^%D#2%RjVhqN|%^A#H+<{|F!(sasE_zFN^Sz3ZW|% zclX_4k(|AZ%gJWC@kvEVPIuRN;mf!_NGt5jm0f6kz=KsjCdh`-kKvDywvUR$+6B|+ ztY5-7YZ2qLS^So1s##va4Tj5A99Hmd5SnaXt?K=WYj((qipc`%B0}#oxoUVg)Fjqv zMLgUn9vgUp<;TIxwNAV3&8I|Zv3{_$VGCiBDKwCOrC@nv>Wn!IjGcGtnC{GZT3O?0 z*6Ys^IOE*(jA6;2wkd2h^SRsFhSL%9QBcT-8v(C)Q%K>N<0;2cz=F^(7G}S)G^w8>>9Fu@p1RVv>-C}*D>krJT{|x#V{^^QJPOz~#Eq6!W5-PW%k!eyZuxJUd<9#X%zukIOzdPVNoscD>4;eKsOaZD2f>aQrVrd7KYc!{z~@r3{bB z2fs2A7n-rvQ? z*1JitBDWzz*LBW=MHL&CD`c`cSBA;#^Wj?5*rfbIf#b+R2b=PlOCot>>^SFh?CE&_ zYx8$zmvdQMogCrE>`$!{VB7iMri-B=JMhlIU6VOebSGFea2wnavbm~yV4|Wwegadh2*Ce9boYn+Lb@ z@B~c^*B98cw4r{z{pk~)n;ESF4jee}jw5E$0sHmN*Ry9b9ggen*ckA@d**}3i44IL z-lex}_YZUMcc{ue@zlY=j?r3R-U{c0;2pgOmu8j;=*UPo$ZWj-fJ2FAiITg{(WN_0 z4pU_Je6>2`<^Gq!*(W1dci5Y~RbB8Yo8^1jcNT{KlLf4L16K4_co<#GRJm~Q*b+5H z{}~QK=Im+@S6STZR(JTVAW+!5XljLqp!sSi&t8=xo{-K1%wqprZ)fe0()zPOPIKX5 zy|RwLL~#TE%j;eUYO$~|uCBb*>?Xm%#H2Rut17Q1v%ov~Z68ClK1_MK_v5|eA{|q7 zWPAivra2uH5D!u77AaPdmELC)~c4&tkjw*ztKwI$8Htw z>)Mx@?_d1AGhlJA6SI$**Gv{=&KLXQuW8-uoawzYnR)YBl?65&8y@w__*gJB>LpZY zwETN=sV=`oQ-E>e(h8Ps3L0ttJ9*b~oZ;E5ao4B%d@A!!g}Xa=HtU#7|911lP9Dtw zmR$-W26;PmcUo+h*j<)?c8biLeHNJoGP6!Cn<-mddeCOKjELq=lj#NmIwljgexD|? z@sPwelhj0sqM$Mz39l{H(s_P+9X_3s(226RED)T@SUr2fWbMKUES0*7+k-Y#{t@As zD8StmpFimt^Y@GY0vUDUF8}={r2UmMCI$)$L75wT%MDV?WfbORw#yhO?2=iZwU9$6800@vKtex(!M^76}at4FuP6NCv-J)>+}G_BOm^ zW`fdt37L7{GOfM|h+G8?KrP?vTBQ)D5umAH@SOSMJQE8Gn-5ofL_c~uy1abkcEEap ze0Xnn%XGOz!M$^QrkM)$-Y!LoP3Y$t9N=Oux+wgxL1|0%k^kw<`2Db6EeAvc>K6<^l-otW-tHhFy_PN zg3EkQhn;8EouQ`Ad?8x!TVAbIZ%EiL8OKhsP6-3S@`!6ii|XA36z+A-STEA*ZNPl$ zVcR5wzM@OT4mk$zj3;TdA2RZg5b+B=lET%&(yJlxF4ui!ZE35Ey0r9^`k;%hs~aj# zKbSa~=j>dG?q&`S0p&v`9DmO2)fJrD{J*_M%J4dI#csIX4_qB%0F%DiQ zS(3#vO^yC z{WRBi?w>wWx!qw-M@5Q@h)R>r50^W-%E9WPSxWOdpSix`5S-gF)&Ao&tKF@J;`_oK zW_GwAGrZ3sUn#!q>4naa*Df~1~H z@Q>&6N{%~C(NeAl?C&0&wC#%cmj(a5Yu?FR)#RA!9;`LpQ_B6o0S0z~@P!K5#`iWG z*>1l3p1ZNYX~xU76UryN?EY%(#<+<^{7CT4ev#Y174~zxNB$IvY+Beq$=%_lLXe7b zUE8a7tJ=swLa6xOY$%gC%(Wf7}!xMsWXx&yWR`tkEWc4^=351Fp~_UY8SQc8lSx68$5 z9cZq0sj0p!-XnY5yU642f$H=84=&uR;xCE~Xl`nbXubGHAXJe9X>WKI+@OsZowMPuhzQ*Cq*KS26Ve zlCx7cf#G07ur1qm!NPBwpF77GGl*}Rwe;1GbH8s-X)Lhu6yEdkP2VS-c%vk@*KB@A zy19R82qvb?Ii&D+TXW4phf^C$tiM0~wC9!DCl!@nrTlur4_)?fYxxAm&*_*g>r)qR zVV|kAuWgo#^?A3SodM-fx*c9yItxw1rui`LQec}jIfmWg*p)XEq8YaFX|bf2U+9_A!}9Jyh{bN%?K@oz|MYuk1qrek zu|#F?2VAHZxOO2RKr2&^iDlEdV|MczKOA}Bacp;6#LFr7Or{j1@Xb$fy4-wSm^G*= zu=iQ>fm27EiW5qOrZ8E4&oLJ*^qtpzH(=4r*o7?yJmDH57XP|e80|ZxxuZ0+q1t6q zd%%L0?<=d*-OSS#9k{yk%;pb#7oI#mHK%#^RVF##hpL=~!VR1{@~y@+ZFYb=LC3z$AY2<V-4FcsJ!Ld>L9hXiLTl;x2v${+U~Ub#ig z(Wv|UsYAS`t%vVU5MVZLEHIP}O5X|F%SddR_g!&;M`vjTEQx|k{*WVwF@ z1$Tcw?%;cYWx~0Q2`dH4-iXF*$n#cMC(+_xz2iqfaJ7<(Owi{oJpGI;4;2z3?EI_m zTUa;*X)2_|*aW?J$2n=c#;XMaJ{xk5I2_kY`}SVz;r7K6bAAMcyNhgpo~fiF^QYiA zOL(@>A$}!SSM{l2Ib?El#ejXbQgKx6Z)7_Za2@_ z*2aUWb`#DA*g8yS+|tW%Vxn99kKQmAW&x4^dcMYmVQg-F)0((1`kKU_R-1ApF8C}D zi`Xk+i^UeJTkf=4dvVD*o6P;A_pz|O@937UD5>5@vRvE`>JD_AKfj^jrr%egKU`}A z^%D)wOkTV$&Z=6aO+of%rrr+4LJj}divkK3Bv{ra8wMX@IvkT{DKbmopq6czlDt~_ z!LvNx0wD$=EZaS}b~DEOU38$KvOzy#=PSka8vP+(*}gJ}1?nE`^%senAF%UC&v~{z zOFIKLws?pyE4bv8@N$n?q)_tpJwq0$;@WPdozN!l?qJPKQ86$;nCopQ|xdds9Z(tp~5w7smb-6 zu?Yvtyd9X285K!R_{z-8yo;sU=_znA;aOl~gYsWscAGp7ej2n8q{ED76aqM&53K*elI;f7TVhX!z>(mFK!**p!!lesFc3EKcd@`E~4S{RU_M)pZWN1^T_+`8f;wcN~1j zTGzW?{}^MY-zCp^4rh5>G{mMczf($yzd!b(Ur6G+lpCAj(zOSaiDW#)pOZ zkq%CFot_6)ZO~wOk-266{pAm5yL(tOx%~cUSD_d-mTs@J36bax!*CqZ*+F;Zus%=jNpV;p~pJRF`-RrZWk-u z3$qXK`hRfzvF-rl`d=(&j?Ddg4@`?`@3o$BreXVJ_q&Wo6nHIMA2DuikC`REU7<`x z!pllQ@#g`{C+vki&D)z974jxC_gMS9Po4C7J0s(hH~$s#>IJ+@)SiobIeEO>&dACW zw;&?Cu$!~cpWQI9d#QQ%_6|W^mEC1*mKIC5t9;>(Yh#^0m-~K7mQI?9_0N>nBUS>U z3lF65#V9Oi>oHS!zLMfU__-f}VP5Kn>Oa~m)W0yc88n?QWMNeR2mNio^&ustDVhZd!pF%)&iX= zz2zdw7tSapZ2t0i>F3sxW1M|&7{pfYD3re(ly*bLeD(ep(T9ESM`uh8e}1IbWqX~@ z_6d<19vPb-oZ5dTXW8Z#-BvsS%|}@{Ev8L=@YH%xk}UsWNOTJZ#Eg;u5ZEAL9?tZ{@e`TJ@t^H2TWI1073O@QQt4dAVolcOK8V zsjn`T@4ocZjCJD4%Y3hSCC>fesn>cUV6M=k_N(LjT^HV!8drKg)+j0_CcP_>oZK2M ztjzhXmnTVLdZ&ItO!7{JQjdd`TPki?Sghf!dHqoT<_nfO$HZ-H*K%y-%y^rWnZ+%& zvplv3lnUQ3Xt%WGi;b{ zt3@^__^s%*KE9);<&H+FfJ9`jH=_p=%j-{%xFiIn0{Pzl>3?{~P`XXS`nYdrosRN> zZ5oG7CtPfkEa9+k(mL1RbmNy=-CxOf;X&O3n?GDg`aRQ_$J(#v?&Qe)4A({Xm;E+x z=n4w4ZOeCltW3%F>5fpx#dES$5n7b%9fFYY((IUMONV%ZXoh z#zgg2_ErZ;?#|;GW+m&Et8e-uJeR>_=BXKfr5?;+%DZ#9TjxrKi$b2V$BIA7ulyM9 zn!OMW`r4hBkfY7D8IUw4z()zoo^Es*@*X9v2CydG{vz z!!(&I%?%ukO}!y}B5fO3E-YQj-}JT9MvKG8YRB@%x%J%_!vuv^@bTVfyTNk2R@!}* z)JM((D@!D7O&5N(kkRrAJbdAAbFA}^&Yp9Xbr%b}R1=DOI$yBqG(4Uc*r~xEWYZ@f zd*JyDn@IvWi+GiG2s~h`V>+QSfKHEFPOF*wIaPk`;XQoQ`QQ6J0zF~OtLk{9oF=|9DCG;`XmXb~ zsy)V7C;oIUV)BsUp%!p|f!bztAzI=s&fAP6cm-Ts2vkqW)h}D%DH!gs zq2fVJmyMo)$E^t>Rw^oLGD(MThUG+*@~MT%T-tpkdasRR#FhG2Cj}e!GB%b}En2%+ z*r80Q$S?C!ElWu75r(j^vuf{_|DUDJ*L_G?aTZ82rVmEyd?6FLcyh}de>@|n3le~e1H1E=UI)9M7fpjB{92+I0qlAc^&7* zCnRrL;ryd{Vh2a0OY4EK8kIe|I!r|z@%$=bGRaj%yk$n6EKC|JxQ>X)uT`7eK2qip5%oD(%g zzBQ+^1vKtfUwwMhY?IVJP8C!6U12Oz;%4a=c5Et0Z){BG+|Q=h+oH?B@>cCg!4~s( zCwC}??W)mXax#|F%z4%@ap^~6aqAbm8Cp1ZIho%&@=ce+;P+P+`9(U%L>f$<%FVde zYkG6Ha?`H3S0B`+bbc&Utl_G+*~xYGXm4oTF+UDfAE6IEuMc!`1^4Fv`=8cq<9=p! z#Jv3fr%c=rmA-nN-~5hiivWNBJcgsie_{(9SbLurZRc@Mn_-}KWsCpBQo%Ht!!sHD ze(w-b={n;3;K;lnY1V659^WI>N|@KpQa*R!?V&WwBc(-+k7ne|lr1PONjuTDBse8A zA$DIOPlAfTGyWcd!VQPNshJ4ukg5`&9#eEu*}~B$rs$+x7jWuia}f>reQX*JdV6nih;wPjomGV;Y`S%0FQV({gt| z(p$&S!CcC=Ow5o`Mq(OAyyKE`ne8`zG{11Wb^qp#%s=&N`X6dpcYNUHuyFQXR_nGT zPVq=L(+e4oAFr*wyMG9*`v2O0Tx zyWM%IU1elm6@J!(FjnUJ-FTyRcK}AF7l1#>nQU#OA=aRo0Fm)<0nG4Izd0&({$Hu~i z+aZQAFuiPRZ$_o0K-|VQrhWHc$i=Pb3~Ug5v3UBil<&3~or1FQ8jONZF4cst>3Adg zWP-m~xK780Cq*ZgPWT{TP?X7LIbq9;F9m!%Wh6{y2oquZp9u?J`e^GjR~`4OMh%d?}?F201t zWIAhuuYpFaWt@+qwd=7RE*bo60nw6MdYx4d$hGb={Nd!v8LyJ55?(4^vE^n$wST4# zOBKsj%_qitU6(jm>IieG>2KO^I*FM_$2!oYmaW-9gwxv5!1Twvdv#nQj7fQJyAEt| znQ4D(&3*@#TGq}$jaXKN#SwBE#fSV}HI=C9#GUh=@x%K}?&TRiXD zJl&9%ay{sCZHlAC0Y?V|q4zBho-N>Smtb_gQLWegLuG#w%QC6CN90d*Mv6oqGTX6- z*YC_8o4p1ByBmBbtW^oyVExSA^=7qFlF02V!ER5_WyH#bJ7@=5#LF1;E|7~5*!b6H zLC?_xF--sU?!~p&n1nmcHM}ktG2w{%1a2iGxkwMWsOOI{OmE9KKdD&#GJC`#UY^vP;L+<;1289szi0%l5(C(@Uoo6!)x(jZ6zQ%aq z)(55DtyhoLeEORfwR%~=y^1*oekL(0(KAfVRYF7(BEvIhJxkMy6j3p;C`+5QOoKxr zBqnm!GRvJD5*ijZyC*Em)Zvl&8#_~W)_R^u8J*=GHn03A3vKb2Q>c3>E3oDlR|XR+ z8*7}w#2aRB5AF5s6Bqce>cS!?X~24KT^`39)yMqNKiLiW!X!PI6V=VG7T4@J^kx$a ze`No)wKCS+nir0Iy9+?IJM8b?kX zKI=Q7dH<<362`a7oR+Y(y5Bv+^i8pY^_Wx^BhwF|%NEN*&pu$zh`*)k$I<05o#SRc zdyCU5sfdc-EZoljwXE+K?KMB#C3J^LCgMNq0q-_8uH65ni~@V|T0V$oWHLX}ZfU9I zoWxf;V^Z*eeW?PD*Zh85U}fVIxhBM_Y;o!ci>A@V3%QAz0b#S=Oj?&Ec;pB7K68cq z+{4p;g@o{!7cIT}z414bh+31Zkr;DZAmgd2rk;v$2WycYg9=wLftrRNy1)&5+l>%i2~7Y*J;dek)}Xcj}01aD|jj zPQ^VZ6=P?)ozo@X-g|Rqb!%6~Yo?ngcX9NVoe25HbK{QSQkB=@cgvohQIch?V!F$y zaPyRg|H(ItSMPrvy3}aK4MDZJ3M}3h%WpUoG=G!lV60dd$vMx=WVcP?R3)*g2d;eJ z>&oWl{o~Wf+`(h;qUfWw6kE}RZH|mz7#>Dwg*Q!OXPmM#Wm2$e9lO!#Z95#*a)QDX zz1VL%9gYaQ*U9sm`BT6N5lac7Vuy(`6aJ@lGCMo_m%d>0koA*Z%@WtUkJrm@W6>WY z$BAsG`6n*iy6e9g+Y;B!l4XrdZuam0uFTvmX79nXuj?cC#Q>A7OT9!qxYjWE&(fRu z{^-m6LV_m~Kq2_0YP_acP%RJ`YiynosDjTfczhf#Je|9iatjJpNb5^>G zG=+9D37=?;5m6Rqc6hr%#$wYh$t7u{md&*1X|Y3zu1=3dNOp)9aig9gSHc@>UY>yth!#Xq0#lt%Eyco17&8d zWeK{s<^RfuXUrLA-t5^r`KH2buIY^Xceb$xcfH%j!n}re8>@4}d7E2e?@!-UJ;3y& zEFgQ|BHe~RQ8JA6ft`O3MAb{)s#!B>`IEa0`&pQ0E2fI4&uL6)J+LxCFg5#mrQzqO zM;Bga@uuY6_75x3lYj8q$!6V+$!Bb)uYdMhLF%S+&av4{+g|fzuy8s!9S&Hq^=3}I zbO_6@FKmCR|0!?QGu!|F7y~P#3{!cREQj^(ZH({O7)qF`=Y5Z3v%A9=#b&Ur#edIt zn;Yy5|8Mujuo>O@Jn#F4Wo^8Cx1!Q3&EC&un#XjQub0{4=aEj^_nXC8euQhoNbZ} zvs+zC$}39T!>uiLePmp=t>K~ecaA(ymJBTwrfYFGGq?;AoK18TxGEfeHH$C>cN%wA z%QzJ$InSBOqry>_u;1pGGY_Lf7OUy~NVD4Su`EwML*Q!X-?r7%_s-v{?z(r{ zksoSrgqgDz?qHjveS+tK#`Nja*Lw2YQ;3vc65XhMdv}!9u50N5r_@$)wDRnI!^4)V zRJw^hlWlKxzCUtc2`^rnlO! zoVF^t6eV$3P}^N@hL+)c!}j3%a)q=etrZS_2j4LrsOLE1*5&cP!~g&PHOox@@e46B z1{`PhD}DZ7?^5acnB)M1bZ-{7v{2_FrnVD*wlXbw&iC)%bHO5y- z!@=Q}@FVU=O_lYAWt%h71$b^h(o8?)^V|8R!;hPhKe+y|7@as8cjcyJ`Z|Gq%Wm2W zxZQR5a5s{r=s7qp?3C)wIp*jG}F)xjZy*FLN zs8+;bnTXfcjOICuOP@E#aJ0IG_{CjXe(<20ghYVGmop2yEpA^a-kWRj^akgegwm(; zB?Km%IpyK%g5>kw=QuNOm>=e<9X46b>gO#QFo4RJ9?7C zOCi(xdu1TwH0Gn;V!z9;p3wHYqiSu${rP-l!}%@8RPR?ZYoD%nX5`uSA%sz=VZmLq zND;1%@V_FAUE&-}N1b=c^|E+8=v3WUY$|wc#dU8sbx+gaCvM;GecopFi_e0`hDqk% zKR%ZBE#8bvEIGPvI+v*#tMCX#W!y=N+We)ZNkHU}T?I$=hU^23I|LM2t9?vaCAP49 znZk5uv5i2=g*UBxZZN)(tUj*d8{BYKg2U|u$BVm+Q}!Zo95x%C~>#NW4D#TVQ1G^z3HdVWIgroYCl}>ye6XTJAZ5FcLu|U zDKE4>L>_!l$fN({z+Q*%Y)Y0XIR-}M@roZ51?2L|tS#eM(g;eMpA&vjY%hcoUw z9RGjtwZ7dV#K?Hek?H^23CkYUO<;MvsoLdpA;+c%4&k=9+|}H}#nT!+oBqFFu2LA$mtR;vBle!^N9DSuB@i?)qQNBk)*Hi}xebP4{AV_OPhGukx09+;mg-|JMlCg#|NgsM*9sIJzByM! zq1EHW_A)os`{MGAKD$F%b}!vOPk{Z&LHTaJ+>^K2g!7&|9NTzv^@*jLd_KQhR{h>n zt2Oo1rEJ%eHybCE9Xh=H5>wyLe~*0ApD(%WWPPnI=JKDS^G|p`YIJJJ=XYPe`A)gj zaUW;%L8(I`%0FHGs-k|B-YOU07Qn~;rO2V|gya)r1>gO0`?)q&N-Q@zxm>QK^xwiK zPHgh-&BvInYn@qU`p%5X{GRIJzavtKVUGGNmTtFVAJ5m*OVle%pH{n1KgJi)wOM6i zw^$U%c8i|LCnDxbb}fvEe1F#Y=VJF6O8|#%P_k6^)WGtFDmL{IQ?(xLYZa4O71NE z;?hb780Jk)uJ#CSVC`V}!6J~*FvDo7faN4%6&a2NHyP*b?Cguur7KmB2!kwW~O*u>d5VS9hRCju|;!Pa=P1C67;rKE$=wy)0#1J4xDqDHd`{q`e>HxnzPJOi*0pAY44Gdz8_P+Ej zaHmcD3C+8VcR2)9D@|EhrQT?}e`_o2yeDQn-MId4g@XPuF?aX2FHU_=RF;adSSpGa zHHvY>i^UXq>2cVK34ArWKGk-zg}CPvkIk2+cs1*&O1$1PLHzneuGbet4ey;WklwvG z_pVIQM)oVOvS-~tQ7YVXytGNLclVNm`AyEpT$~yI?|hr!yhP;j^$9$Ve9aC|CY=-V zerdHZ_t4y?W}m~;cn$8o&{d%3516GwV|LPJKh$>jJisQ@wH^&&}TQ9ksCw^z<_JqTodort1 zb;3@>OBfkCI{Hua-f&=@2iuxmcCAk$)_Xq4Oo`iHH6tyh?Le~!&wm?M%O#gm1RfbK z5q9|(f0OB^WM9-ef%HW>2`8Bjp8R|;_Ab+14vtSTp7Zo-4m_@`{Nxn(=EWvq6J{Aj zcFET>g#U~1?>t@pAX9i@fTYm%!})P1ZyeZa=Hi*k;(4V^S5iLKQ$hUtlV3ui94E9S z8;jJ$ZcNvjd%D*}W8pFV*>nA-t#50oU_9{LDQ>gc!L83fMOqeB3z?{!@TUqr(Xe#Y z5E6JIdUD|-!6kxzET6j41nr(hS{6C62%31C7%Nl?etIXcN5Dz0bx)Ikp8yM+O23o< zqxa_p>VKcO8ZaFSXuLM>wsLdMl%4$f;jNe6Eaq1TX43C1Qgvl-`Qv(tzs;Wi(kXA2 zPyB69_?AsDJDEGx^~Z^uZHw>S;16I5GjLaB2}|QYRdlKTe*mA&6Yq7(ANiV({dQN~ z5PHx3Zp`mr^@_b)CxmN1mVZ56O0tW0_T=i@LV+RoF7y5R_}<7zu)vT@wY^(c~5V3+B8wP zsH;c0iUEf?{LUiD)#TZThC#tJV)#28dL5} z4iyf454kB%*jKT)O$b&jWfurmHgLKfI+1zPggdtb17bwd5FQ-YO4deRAT2LUynvYuu-#Ci&bG?^!NzsCZoM6Fu1-x0r=dY^o+Eu-p=08>p`!bYyLF##k|{-mFn7R#OPtUFl=jwL{Hro zh0d%x$GE>?h1Ugnyabq6^;Z5(TfM5s&DDNE7Ymb&6U)Db8FziEWFr`YABoM`S-C%; z`{!!EDwcp-pZ%7^gm64td3~1A+wGyNgC+#p%Whe0-M=C~d-+NPI5hrT<9A45!-*g6&509g-2Ae?F^65Kh__cGaGeu0QNc4pw|UyoB@Qq0c$x%+pxe zuCcLmI3<(_oG)7?kx+SW+u7-?3@nUt97=30_czbIwVBhn#GUgC8<*qzDLLn-K5^q# z=JEemuI=l?qPc`Ct~?I zXZg1{ce&4O@&;w|%CpXI`Q)yU#Wv?!&hl?Lid=T?id)%~#I03te=a)arp%_?%obcd z@9ZTN<@^=ys#)hh?~!KnZQuRg{cYvEa&UXDZ$4|iHC>m*(Oq{F+XuZp!PWE3N;bP2 zc(Ij~XPy5%|HM0Y{TXZ=CqK{Ib>EFqrINYr!aL6V=m=i1tdbRO!WWOlK6%0QgH^CK z{`Q9yZNc)E?X1?T6pkK{_n5{SA#WMqRLPZfiy=V3py1;c#;@P%O=KjJ8_w>&w}3NJ zx0Z)fa`)GaH!WPvJDJw-7@6E#7;VCKc*mwIw~xEIAM;}7<8>&m(TWQ2I*_&C!}8iC zMP+3hA0!>V*W$6y_eb{z{cT%kbjAFWWIp6*t!CON?eJ<^#ENF=O(}JnaS`nMHJ=@K zJL_kCxeMKgE45LPR*&`Jq@MrzO6sK=>OAz|79F3EdR|qQ`a~B ziqdbW{a+CLcI~1MJl7U4cRJsk`sE?FV%W7Bwhv|YKX@_@>*bW`o(uhwxjEP3kKjJv z4}5Vvv0qjjl)9dYYwOZ^!@Z5oj#R(FSrJ5oie zoL0A-OkSI8mf~H+wtTW{*WvW^EWP6av(9!qnAj%G+kJk~oTf##%%W{K8Q30V$cDG~ zF#dMrDHECbq{efhZ=uCX$GihYzw0~0Hhr1p$s78i_0rAQ7iAi48x?ri;tUpPDn;E^ z2z?MGz;)-yo&J>l@&A1v+;Dy2SNiNGAAju)m0p&ZJ7-EY_uXZ)Pj9R+@h=sgWbmcS zg@ZZf!J>EeF5HYpQpa4F4__$@`1Iw(2j(26vVb%Lu?gX<@#d^n*Jod5Xnf?@URFQF z^2g+6uZSh8PIA3-G7`F)JtjDQvzXE7U>5P9x9DMk$@(`%jol&#TzO8p1^H%g@% zYXz8+oNh^k_z3jo3fgC^I1#q^3FBYE;Bfy6@AJNoA|pH9R4i-1Uh$Y!RFlOZ5D*;o zr(und0?PuH=kGb#)plI=TWlBUnsM?BGkZ?HL|kc8j_;SY(BRej<{2wi-_Sl)v4vNR z$8GxZk`oM{e|YW4*=nK0>i6gY+xir%Lp=3%jX&S}t*l>HVwT}x(%xX}BorxKW8act zQp%?sP<`?~Q|T;*CDPaG?Nk}}Rcy~HS)pT5$R-i<^XlSK{>BG~S1`-j-mWTDFR%z` z{QbDGG^fDh?t{j9h1}BQ-QR-Qei+!VWZdhJc;J$X5TA9+o4hC7K1__f=a?N&Tw!5g zdonAlysuH1gZs6O4vR=kw?QOhf0x4KWs71R`BYrW%i|VYWwdYI)w1kI)BU$SnTlUZ z80P-lR`L7Qw%2+UZ3QMg7RKM|yLl};VnjA{1)fUzy{JKHhx9Emj!?-Z$t)!;tVRxv z&tI^GDO|iz%De2Y{VQj7$=A1ocXQ}oE{~AOZ&+IRPp0`5TXe=lsViQq_c3d59C*`V z&+Yr$I>%(UsrKa(8?O=r78RNItDl+*gp|I1oh86jIrY1CVrQhu>li7vU;);Ddrk#= zu{iE{_}ZfJ*V36>IvhcIVqBKOJ5t-^e$M0b_c2IVeui&_%>A^AmqjeBmJ+2FmW2jP z%7Phbuj2P9N|XhDU_O?y_e7&~9#e;abd~|r?$R6c5}ChSM-|;N=JX2W^@`i}K-xh> zc2=kt8-qx6n=V(z+<1-|`krl5z3#Gnxa-2aY-j6-Wjrx$`%VVkGx=Wh@^$6^G_DmI zrC+*3HgI%`Z0J1yUU#z(&uJG=9_Ej3k6woc@|-U72q;MN+Be~BU!RD8UjfU#*SeFH zH7hhLL_|)1xm*+L_~H5n#t8w=&z9deIuIQn_n<;y$-HJ6MeD$9&mar`Ma&1Dy>$M1 z#MUFbUrv0>qlUT}C04ACQ(P*-SQar|d$?su=#&0ihlD1nd~UckS)$-T<9E}8519gI ztev@4=fD@9WM+P$_{vXQ{Ot}dD_tg9#{T$s&BG`v{7Z;P7YloH>Ywg1-Yqebk}eia zE|QH>Hk%nmnV9sJIey^d;$|$fR+72CH`KF*$>-B;uA45cPk0uTIGo(>wf5D!YL=io z&;C0&Dc|zlQde~0m_iBru?frt>lNNw@&31E{&A@G$7J?)&UEK4U6TbWc?p-)ds*xw zgm&yOeW8#bVA=HijRli<6$^`{P2hrzTN~mo>~Q4bVf!Rh>|kjXnUv$nR#yI>`L1Dtmh#=ZCd@x)#d8S% z5)k;WH{sNTnqPOMI3D^;b(FgsDWTBgTwwID@xV46d5sHJXQfz9&J~%#`SQ!D@9b?n zA2_|lZ8xe5zYzFabLOw-`^oQJ+Qc{{|CfF#HTZETaH-MKrdPsx(`ID6=RKdgO2aX^ z|EAk#^(~HWD(&h=?mE>UbK@-9wLkQDnU#3viVOx3cBZQ2Re_UgIK^u=tSZbt@TX2k z`^5T*UzAKN>r682DlR`*$EN;z#_Q7=!7rjU`LA#I!FtGH7n_^u>~zP#4^Dl~o7g23 zPCCDl>273Dmv)Q&FK>9{waq^Z>k5TZW9tZ&61Saw2j6Fyve|zVH+pB9&-a1lhm3<_ z@gp~Q|6hqJY;;nH3~El-Y0iw2c&;QO zGAC2f&Mn-v%;ijLxORp1oXM_?zOKv}41a%%M|_meU}ih~+1gQ~gv;vZE%Qg~Su_|A zhh+#w>+KUZ$(DE%7P~+~F(7+?x8z5K(x~(df$|&Q`k!d-6I3XX{9mY2n_J=hGRMHW zv9i8YHN#-BysN(R9UCR_=!}hrjy9Rcm$IyjI~;TPmX?dTsz}Di)X?BChTXC)>ttV_ zJNSM_$(AM7FIitk3s{^j+|Y9)_6NhP%7Z+6!k;pf{owetCgl26hR>}r8(bZXZx^qg zdg}X;*>Cz@h4g+3w^s5!{jRs9X4~5>8LcHTwL(E*FYc8)pa1S5;CkEsO4)Ab71Z`B%T>-JwRIyX!b_ zdz`sD?aYp^OL+U(g_oV#bUWjUw)8S*oo9^hA~&~-o@hPE=hzi0(be{e_g;v_ua2;P zm!7a3ZcfYayXe`X_2qbvZ}xm)juaU#1%&_;_7~e~>UKz|vqq_Xiq-ibx+gFOT+zu=8ZjhU-x?-MNfv{y(;;!}6 z79R`<=CyvDzGGfXsl`qAf5|aL56?*#iF%kUFzf!Kv?cpnsM)t84YeW%TzL-JFTHoE z!DzOO(1|Pi7H*YFyUE0Q> zXmavru)R)>E04WC&uh^em$P4Oir=kt^Rz18teVY}6GMdrcBMYJab@=3)PA{}XH5A{ z-Ut=Z7EtFl+r78g;kA116DxE5o$3))W}NS2MR(tx@}}f4lctG8bE58vLk*`y6{N2& z;9IlhuFl=&ySF#oko6RK?SA(r^G#OE?@zNi6*I&+67C(8eo#H{v_OQch`PwMzvtSH z^Q>wxe9bGgVuRUfNxs-WhEewgw{wN@w+Ac^yQi8SxGQkcgK3Ng7K`TCGsx98vCk{1 z-@-1Y=yBJBXLcR?!nGw;EPiM2-ne_CgndR>Q#RwAWWNWkg6F%J-Z&|wb$Qo1CV2tI zJZ`(cx7i$geWs@$+;Mr|cRMywpL-_*17|*-?4>B=8`{{km1_&5HSbPV&L%c)s~fy4 z-{uMImS&z^GHd$UK!*J4%V*u}dUQJPwebp^M0c0nd|8H;(_y}H4j3?|C`HFqNf?nZFj zHBO38YZj3>Z}mDZ<7f3kUWxQ>e~H&-U)(+@ycRFM#ATj%NW=ETESuS9%UFE^*?brJ zeF`wU({peE+l9%B3nys`_qlJdO6mL)yNUMz=YxI`p8sVkBHt1nxmt4P*rr-M)@rP~ ztEDfd=5}_WVDQ5O*4MOyPa2<0>D05%;`}9Qcd%HnD}?t1bLfJPA{`*` zx13MWc&oT0VZ#!8R`CVPUrT;63B91fyWz&qbqXx)k6bwB2{NCrJ*RbcPT8aGh}yKG z*Sd;RJDY{Y8(Jp`pWJw-{>fzqBgRiNZ{C!d{7CRq_+6KyckaGU{@KGVdMC@<&rPS} zW8#s8SuFA4(^U-XQguwaeD8d_dFS6$pFeXt>kOQ9x?JymyRmHdGKD(6ds3oIl35QY z-)G*y7;tgYA-8vDqmxhS3fs&M>*uaAZ6%|d~Bmkx08 zJYw!$o;yie>dJ0DTaJ1*%Q%fv&gU-QzO_lTm3G?(%3S{!r$?Puzm}AA z$M#&%U2`GZCY0w~H{0q3t*k|-T&3z5PTo>c6R;~|zGZ#mPR89uU5C^(Sn`+cy{4n1 z#u2D?SgKy3@&C%4XNx($|78$+*zoaW)X!3`@TaL9d&?Nyi!!D#8NaYuE6V&$q2`I+ z7mW?qf`2Y$cq8LGK|xF+sjQwgcgY8~Pzi@x1?kgG8@E=MB}fQOa5!XA#I{hX;)t4P zyJUgz2Zp4KtP9Nt>$GZ@#kvY=acCrKNIf_Ac_eUf$KN%fPndsmd|>|hDttzp#Di5l zTpbB*yoY$$3)M~uu*Dag`fv8%_e|*|IbII4j7f~LU#$Nv%e*Drtnq^5N!Qs;vp95a z^Efs-Hg7rUd7AIZ1&^`~DXSR^EF1FYr8i!wBTwx0`>t=}C>?C(MV$6_n)e z-Pyvt>&CK*ZBf5JgFsE_( zZElw;5xd~k%e;q)W0zuixTMkDYfmF2B6NPlM{i@ep>Uh!;A_L^R>gA7{VX2OUdw3A z{=WI^ZI%w(*L+epU$bptW-a79AaXM(LtRsrQO|aM7x&iKE&2WjK0IM)X&1d;mKwtR zW5S;9IexQ6MLJR{B!BGry@Q8y|L-XFYdZvP_`cxUa_`_F^E=mE|3`JOr(Akcbo8}C z-u^Ow$%1J=yShZ!Cv=ENwk%81sDD#*<;YPdRn-Qo33<(1%~mj8u=ve3Gv#Pg&%ZPA z+0$)bY2+(?a1>c%Wzf3&c?oN#nCJ)I`J2!GUOhQjBR6av+u<7#*FW1ld-pw;lc%O( zdgd;Xd8Z~ainOlwC@-CuBpzZ=B9!TtxKo*PiIvBaOy#?BOmZGRvluhkd>kBH4$n(- zaEaiVACWm>d8SHChH%CPt_wxZLIoTF5uSVQZgCH>QTIJ=a5X47K;1i5|3SBZ$fYv@ z&mwlWrlv%cXeh*lMyzwaHFu|qPsE~_pl1`FT{DS^&?!+d&@uTYG_7aXa^cn29Nv7$ zm72Z5&4Ep5)y}WVUX5MuJO*Z(ucvX@@G33KoMpzrB_kstF>6`oECmG>6%CEdS<5ml zENpB-7G=&_7Lt&VlA=19?bBw?Ifq^=`5Bk;U4QN9^^oz4dcd=jjbaDH%{(qVaepiE?gSL}}R{G)tJEoL5Y-o38T`>auTd6(EL_6PA!!CkR3+#PW(!G5Jm zw*>;0&x?|X5Rf_4*n0X#jp0f>;YfdYynEx_d{F))pBj%%=GPY4m z!h&N$m>w9u>yF-;(Hblp*sRWQhi%WHCiRntd#eJns@`3gcW@Qcia!Rg!&;x~Zcn`O zbmRMKt{=P~q~lHoryXoxIQ(`Q zF(J0^wQ8(!f^n%uC(PV*^*)UKSSbPp814dTnaU^E^?9k zjIOHeuMlPU$f5A=xTA7}%%pvBSN$xcEwg1h+iaucTTdRc4nD1>?%AolQAnc8WqtC4 zzHN*gjjuL%w6t~vbCwE)v|SOIE8KL+twryY%=1Ir*-}fK6&inWNIKN3hi>56qpQ+* zNL0e>^44FgJ|$c+`ylpCWh&2t2k8qGTGmv4=yDTKdMw!G81(ORu9Z~mhxi|^%!e4J z`CW{gb!m#rECUw5sKpOWHb}kk{Q89#fdqx%(kv0sLrjsji{@}P+#W~rio zhv5{%9p%M^Zbuw#%;iNagbp!w1qyaJG6!a+KX~Lbjcr2H{O#&Kue(p2V{_bf_PHCI z=j+QedA8N6H61<6^LnFm|GbHf35!qj{ORW5wSDO=!QaN#!h2ruzQm8j^xFwJ6Jrls z#QkB5mv6PGnCFt-y={j5`OovrC#cjx7<7d=5&yX?&o;zVZ11rrb$#JnVY90zK?zMU6!) zty@kA6&IX~Tq5SF&hAsNFF)%Ez-q;DSiVEU(X386-Gl z1bm_wUQ%FTsJ)^5cJ7=XS7LkKTzR|o(8MiQPVC7NdSNsD`6mX}r>%da57cw&KiK(U zsdRT{-s`B zF2`LeJGo`oNZBw{juwzJ4!x(c>So+_Q8YXzS3KBB~;}u7i`_BxI^|vgNt@?~F++<65B& z0%zhZWRD%xydhoUpoK|L>#x}o znJLv7MXd2+$GY2dFI^9~`*`JTyZ_QHAyLa+wpQpI*I!@mreCw8q{UanehAh zjU)TmXC(0kevN+ME@ip6DDjMsb_;*Pf;|Qdiy1SYT&ym0kFyrODiNsO{yoO*zVMM$ z$upg$TCwRa5d!=HoGBUaPf9=7X`ebZEl#-c-OqUko>_mmoaphswxD&ct!fIx{4Nfe zq7#ZMnm?Ba)-|UkW*pwgyQan}+@IlzC2JA;-AAw3=cNcm%F3zDyHFt|@T_ZrD_<*P z>xbjrpJ#LzSYCM5u3ZSNFj>#0%1tucD{f79*eKQ(w)4qff88I9k^D_%a-nG*{tpjr(C|F@ z&PP#7CvpS#{hkcP-Fj=q5_3e|8$*>ntOZJ3c(#lEOD=Ax=4C9CSp2_Op|nM=Be;Jp zpR;Vz#KSZ4C02azt3AopY^t}wt>pQV?6#t7{0}xL-0kmN*y+F%pghC#`-FG@4P?-x9-&42lduDupAezJW>z%J1TetePE&JvSVJWV|Wju$iG^m*$JSWfJi>CL74_5wV!+X);HN zV_)VE@fJayMP<+-2MwmQt&GRm??%lQ{iNgOFXqC{73Ffs$tC8j4(DbUhnPmG{6=2AkKL9H zll-JolOpoy$2_1-fd>OI<;K!_`8!)5 zC^ehAth&5)>7|0Mi2rwGy1FFZHnwgyV^m@kW^(-Yio@iGFGtO7=l^?_J;=+R+P8a4 zRm2Zkxa&J*b=ybgevz~oC z_^i|$-7HSX(ddPW0h&wkMObe_5nEO?c@(Q^wW$!h~B-rXG5& ze*Hot!_1;j4r;#44{tjMXT5sE79;k)J-k3EGk_3O3;e5^!2cL!8;FiTw0qG#ed~5`_}ia_M1vdSx-c~t_#q)-=Y>-o^EhK zvm!0RO6!8e^aEF=x7su0YhvTQ>U9+BqQ#x+Xvdsz{dP?(DJU!)lP7KiFD z6)ZE*ndtG@^z#1uT{@N}>iiWY@?o7tdtHJ%=q^u7tL?5@bnQ#xE0gMnKs4M_3^~gl~Mb@ zxj%epTOZI_dPjN{L(usT$FdKYm|ND~kWn`)XgHG@u5B!QnMMYnJ{NZ%eYIA0pysGZ#w+(3xX|`6i?v{3? zl0o&mwALM%!&}OCoNZr1M1Cq8-$n!8OC29Kxv@IyGj;MMd^yg_6Xy9^qf{@W^lYQ< zuFx0%c54Q=Iy=mc34L)f^^RlB3ueW-Nl$tmFEA)IZ)Q^M{D01#oIP*%w(me@_ld@b`JT-u|2RhP607^BeY5egvUl_8Kh7;L+&4&e zelEHZY|AsZ^MQ${vH7-Fa%IAf^ zIhH#mP7^8~{W4KV?W>U&WOcpMk)e0)hzJ*B=39rR6?!rvEL>s&>9dw`2uN7mb82TU zIX7XleRJI(C$|9QX~E`86DEH!DrGfz&3TTc)oo#ujM-wHc-IwvjPHYVYZ*5zuum%V zxX|hDl6snJRg$~+il&VRs_f#p^iCf*BCYr9RA;EgLH6cDTUuo!e(4z>IK*%AVTH>h z<}}`oU%Dr_eo?yQ{&M2&7iWAgZ2z)!zFzBV9`^;SmS6Vaa=Mc6!AoHIriLf8{WR`v zXfF6vq2!wvrtt%2g_kYIiFnCou*7H!z%SO0uo-V6YP#Zv_ViT=2YXOl?z(>Wug;L zr4^TbN?$wk zc;tat1mC9z-rNRaCtrK<%{TiIp-}1)SZ4R0!$d3c`;-{5b15m`3M4ETrJ0z1Ov_7Q zW?nVxkZ{gHUW@;}CqDfCwXPz~flzm8( z_*y{r!ZKl#U`eC+la*8UELd9ZT<*L{=#y51wR5)M{WpaV3Jt%wt~i+0CE#$I;m8!Z z2StKgc6l6@w>Hteu|Ro!Nr|R!8i&+uX=%e(qWK)rtB*BU>Q#Aue_!^_qw@RbNXJ0; zwUOU%L`og_r{Nx0QN6S9Tcmu!Bjc^L#=VY8H=H}YA4hWsJW_07xEs>yF2i%o*3R{z zXvS-)F3E4J8_#lNh*)P7^L4P;x!DWcT3a-JMun=jcdS&2xDk^mLjTDX>d-nEJG^nJKUZLaq@s)g=SnyXVC^m z%YXt?r#C4H%sEqeQZ!E-bmRNZlF;cZIiZ<1#?(H7S$YDqd%)?gCn*W)KANQ-DGq*Y z2`(;oqS&4|=$qBDS#q#D?6(PLF50l%yo5JA(Az>m!g53S-E+()yH6Zsdtzc>YS=ut zkymGG^LFN<4U>yB8iQ0E*q$Vqsw+HkV0)q=qsjKfflb0jq_J0q!~8sxfTpG7gvq;j zmU4i+J%OdfplE>wLuowI9|hf$j)vAIKZ+EXi)_F6nH424e>nY#@r@?PO?O|MaPVV$ z@?i5FKei_+({D6gVSAF|kb5EGNs5Et8RsJ)HF|p_r6)8$+`{a?A>L@iMCL~fD>TpM zIPjG%>GW7&Ds!SiCUA~RgUpGB8AewdWKK+Q?QvZhb17C&u|u|H(g$I|3z4da-qkJB z%ZOyPJCwe|nKxmF-l?hD;gLJsf_CV5@34&7S@hIphqmnwQ?nf^`a9ItYKO1W*x{+T z!%J$1!mO!Nd$o5s?oi#K8$VH^hryeZVacH@k>S;+Vh{D~yT*3=d$HylZ#TJeWpj4r zOTi6i_)chP-_TTW<2&(Y`r}}y)jekMMnw+Wuh_HZuQIY$POk8Zh-x!3O#ZyWDKYw0lRDm-btBR7L5 z+G+Jx1$F)>X50VTzipgj!^ZSI}`Nyj=fS(D~|wfC-HUA87nh z_k8oyh`*hiQU1uOneh|OPl#`;{{AjLeM@Ax7~6xG*Pr++dtSdXe}8XpwaUKNkK}bW zzrMxamGJtK{4D<0r~Z6CrM<4?^`V_VUhiTp5_-Mq>D2P|7rI`r;y?B3^`cwMuV-nm z-&6fG`t_vqFDhSmz3Y43B$V_-aW~(>5K-}6`o5ngwA(mO@^eakSb4%(E@x|f%A8*> zpDOZSy!T>x24k3Hdth^oNq^b%%6Z?};`r8Gdzg3cv(4-`6L^D^kFo80Z~MNoFHP?| z6Pt_JwC8)DSF+99)~063CQ-lt`CdJ_I<{r!vKN~s-}GBA?B_kdY4dH0f~3v9^VRo0vu(&$Ghty9N_%g6zFMw~t#MI;S_GTk zW83xC+e6uU&d8NqWSFp^^-|-XD;px3n2Jhl4#l~0>}<0>IL*hXP~qkA`uNo6(-aRe zY~k9e>Rz5&qQ8e>L3Ek7?gG&O-`^!R9wmA#3PK{X4t4TvyDP$`If}6L`{i}E%jnhU za>{7TYz=Lv&ZW&6AC9w7azDGAvT$|1_a?aT;sUQU(6X zHwQCBFFbe`dBR!l6T7r`pj6~5P(sUHR+}|90F=-Uow-zalhyCEv)qg9`}$R)5^I`$ z8Y|Z?*;qDhS~HvdC!6<=x-B-zRVPojuAEmMt(G0^UCdW~@AExNHW#@$*Z6pMh|POm zdH&6Ewzi2;67#;_t1dA6&h}7DnePD8vGRG}+5F{FPk)=P_t5ac7Ne}svrgRk!e{)D z?RM9)otC*;r|l~0$a?odm4?JTt8we_2l^qQjA#^2Yz*4BI^8&_1> zrz&!lXVwkNooiwoXPsXn+Bav8%#$@XU3%*$E33N)Jv8mE^VT~*k>4fhsJPtWlc#3$ z+-j-i@7yT&X~J>QY20&?7C9JJo^W2Qxy!He%|_u3+6VrLUhtLsq`?37KD#uZ|9X%@ z?SQ+HYjZRCD^EDrip<%2C|%w1iQ*-b8_z$s@8Hu}8mB$)ZRNe09c(i~7Rb#yKEdYw zlgf$}1!@f$&nxeJPKadlOWBio`tv+-rL?o(*p{6ypZ9!YmF}`xj1NGC6Q9LZ9=3eB zR*92^^Ip$hq3gcLj-h1k&w1*f8%5?!RN-OYDf8*1lUmOqSF_X8W7O8o4=Qn=x9r7) z5WPi8!umgJ=e<)~qG2_sQoQf4|MUCmdKs^)1$FFR7n!BZzxMLP>r4}m-7=E|o-$6W zx7W4keeEeI^zgOAx&8Il?_Qg?pSt#1PwM2c;_wsqDhnIOf#9&y(qKhgs0!)pk3vx zMHA;d*)sW{q41-L z2`{9wS(ozd-pyb(?`>t=Mz+IcXXNGy>;eV({HxR0R`h8inb3#YDK zJ^#r37VY}id7n;czvmD5_&RM4=j*tg^IwPEm0Z8)=Bn3z50AWd^A>t-_jGFbJ${wc z*Je&pul0iEUaL(FkE=}Wcr918>$TWPuGf4wIL{~DRrrhB)Lf+(v*`!|bbi{tgi zGb-n$XY;*hn=h^|Z$Iz*yyx!m=62uZ^w~e`d0xr?-=8hK=zVgD|1kzePNqft?EH)p zTVB5B;OFG$;^+Rw%g5QDsGA_WBXhyS=3Vju*-uYJO25$8XRq{V+Plzb!KWMB=S!c| zUK#oNocJ8$*ShvUeM@(qtPs6<<@KG1?_OW@uluCTuG0Vdn4Zn+-A*m)_CHU)-Vp5Z zdTHvW*R!e)-u?0R$?N`^fzq#Ab~~i%us>OACVj)A`>CCiW!`mTuLXvnP-KhCESb6h z6pWX;R@Zw3^PK-|W4rChgWExz4J^v3YI!C}-(#O2)<|HD?_OfiWY-dR_nXBNZ`Fvy zWmCerH#hBSYYmDFQ#8L-c0E=w@=0svsz~RmIf|BL9)Vuw1rwZ$PRyAfv#a}|V*8Ud zxA{(lGk4EXO8w5L`KZiDLH)>Cg{^#VC+M>aeVt*h8rUu~$yr42jljD}?^H^jC~{n` z&S;mJ#NurDzl?t=PORhiPgqG@Bdg5^dsE5D9GIV z^N#N_Qa!T^!*;IOxJ6{1`wpIqVatLlu0K2|KXY2ivZ4=)lN{OWH^iI_(A=FCI5pWm z6N)qEeqcS^A-3zJVtZMM`81CLnMuxka~XOz1o2s_w8!jv(=tJ($V0E@gQQjKQ`7cp ze%1BC5)J&nSYnnN7~RdWJfW$xf6D#EX;WfO1_bt3UC3+S)wQ=f;xI`0!HmhOyZ21e z7WmC<0}6fT3lB`ppQ?cZ-{8f09j}Ke2^YI8&O6s>?kw$o7bzp0y-~&dk-37R<&z1* zVKSg7m0Tzx?JcO*{zOFooJFpapGO!^7>A;&^U{Jt=WDzF1Qlg`^nYVE$(iruk3gv} z&PzAQM83NET{XN&_0icP)$pPnv)jUpRKp8n+(BYSvR;Wl6oJ)l>+Mi5tzUnjKChG}TO`V5Y{IQo}C97L1<+&f+tIB?z7ykNn zTDbAU$=@!--Cy?l;bn$+2DS&2-NJ?I7~(hEg{PYRmT2+YRqTXu(HhT75l?otv=;i$li5ol9TtS9f_0F31VF_eeA?oR>fx6n; zjaQv@R$&pbdAG7>&Ni1xo;8wbMe|IjP1k#qtNcIczG=5?xipx5i@;MZ}zPuIK-w0iBX>(pz}6t_9=mR5(X zK?z^%YxO<;d(Mac>v=6BY$7DwkhjObibL2Y(&&VX?TJ|(0pXV}D3@W1ibhmxQ-WuC#kG6rp}-kVi!U-;6w zY6%bPlq1Stm(3Giw@Z`z&z9v|{@iDOxkKaDkCr#zn1q=BG2avTQhNNw4&9Bax7KNH zG;ZKGzO+-&LxY_yvB^qI!{>6D_jDEk4x_;T3zXIwZeV=g_HDs7=GP*@eQozDH=JOZ zc(h{5!b@L{&ppF>kZUN>veCyFk={rSOY49)<{4ZszTe?*yQS0XD07XA};a%>`MWz+LCb4GI%>I9$t#+5${jSU@ z8|$AnkGo^<{I9&af5HK7_tFnMjHOSyOMl#b;QQ0splGAB$X{>`T>D@Ax#dD@65 zNcosput<9b%CJ_lu)Fuyv#)3LsL;E>^XFTgd^h)r4kO78%u8yasaDDge*SVIKw~}9%B|Uc435!VPm+gAE(n$5}?fZ8g-`eM8+~Pm)f1$`;U84(H z`{Jt1qT|D)PUK$x&f<5EMca!h?&MuVHSxd=t)?RLe{5;n*jOkPd+h2f$qT_zjDGCq zodH*+%;VU#k3aC*kf(L%HEY^2*Ra~u=jcnsrZKRn@EzQkmHS$FOUf#jgBy50 zcga*ZHnxX~aeZaf`4z~1bMb|{C%1EkIjOIk-&G{&<5;iI`Qn755z7mKim%he=JOnG zZ+LEWCB=&4A&;BM);F)scF$b3@LZAq@lUlU5-w~h*swP9!_QsJ*<1l%{EVL2c3gky zP$2j0L#OEnQMKiaaS|M!XEyFRYTUBy{DD6vlArkBF7mM3@vG=w*aNHXY$o2cX$NdJ z9deK|%fG-_`oXejmd^{t3EVp^?zAb1OuFN=?r`P}zDVAn8$Qbx^4|MuVr6}7)`emo z?Jpr8)*fDTLjKg}E1IDxwWdx1?GmxSUa-t#V42`@L0oFWw^Xe+KMXiz5)BV9iby?} zV*d5Y?aK}#ftm}~dM$Zi5PGJLk@;0f-1-|6!o4xp>&W|e>n2&!_de_4DCx!W3mq^zEn1JUFu2GH`?`iDTT##_<^y!K_@!Kx6 zY-8pLp0@Aek#Yfj){RdRGYTs>%(oSITmAm$$5<{BXwBoeX+{58pN1MPO#%JQ=RJFQ zOk`UAD6^iQs9@>K!ck%w+#8@1bf0A(=e2@6fsCn*4dE&*&u{TAu$ zMZ-_778m0PJG-4@!o+8;PtAfZ&0pF4>Pr*DHRk)-oU8fSkH6fswf*`-84(vh+buW# zgs{}AuF~EW`bKjNTO89fQ|&7=a=sX5cmJzcaE2#?pJiHIhTD%BE4MZ<|KQ=Vh>`vi z`^2`);XsyKCi5fa&pjd%o7qbo)_lJx)s!`NTS1qMUE6t~7s4V&8~RlIR116ytbKnZ z7x@WTEfg)A#Jof8$NxvGf3fUev$f}+HQ%?ICQ(uM8y#%X!cUeQ;wcb_bGa3(A-IdZ zh~c`i88oM*)lYcIA-V^ITN=;*m4&t?x?(r!^@m z-)1l<5=(R1C6FudM$u6!-)W85+5Qhaht6aG z3UE6ZGOIGaR%i9En2>qbA}^@?X(_!q@!2CeuFwZ*H?Dk0*zlkwa$6JgVJ>zSpMoeg zi8H32cbKMqE9rX1ZNpP}zxK?DX}uK3xLvOjZpM>a z6Q$4p`?v_tVVQs{8ynfT`{d2@i4D%;kqhgt@?$-^?U~V%BNL=<%9wm+y?69Qxlpi8 zz~Svj8n^p3Tv82G-|5T6QtY(rse+BK$I6C8ZY`s*a09*YU9pE$BzR=+=h%BCei35( z`t952j@TcL?kh7{e*Wq@&iHVl@?PIy*(~pqQcIclIWY0w(^{%N<*ul>#;iL=-+mmo zI^!B;-}J&Fwric$)YL^~n|AhUoh_Nt%fa)Zi{U@7kQrl_15*}9d)AE*In!u(bH|v~)I!%Sy~#adc+enQs5r+OIFP zUJ??uw(VZ*n|dnzaKmIqMvW)j^S4P_US&Ar;lX!A_j>xGf?et6JOBAjZWEHTV+<;r z6;af0XT>#7J$J@?75=GW3?lcma=X9tH_a_hEKB5Lc9`*N_q$2_3Tb?$wY?sNhCS-{ z;_Xf|pD2$gP}n=;{p-}SM2f(i&>QCz}d`|tZNQz^}G9@Vb>b0hPrjvc2@ZeDk2)|d8W!9v9j zTcka;5>E6wM{siIn!MC<`f|L;)XnJ4=hyL}26yJ_zm0MfIvE$!^yRgI=d0F-CO1V& z{6zMyuGs%UrqR4a#6bJVbj{yxcV!N0Z)^Q*bG!ZG{%>pt6uhhWn3&H`TXj8{T_Qxg zzeH|*{zeN=wnGU%rZ@kW=m_y$Hp<|uZ09Nx3f6dDYAEU2YASJX6F=vQ8JcV?N27by znEk`PvFv>GR8;>n!{S3NhjIeV=d9*;`o-UT%r1OlrRQGlcZcFPJ`r=s@5>4OQ|rj$ zRrvOGxnuUDzM8kiF_$}8x?Z~_%s#U7QMCt0vE>1G0f99IjW;#p{>-{}Q>HI5Ho+d-qx8@`{bQ2kY3jy;&1#bN-O5OLFcC4wLuVq2b1Fk9Iq<8OKMO&}*9a znx!RnYjQLW6!LG>Jkzk^k+XHtz7^#PevJzYKChPAVK-Cl zOWFJ9-~XLiu=_`g!HRyRyCe+E#b5g?e6{%p8A=7$Q8jSeELEW^XWke)#?# zwVfaJ6JA&KJaYUJf6#&@o!flc!|$Df(pj8-FKeEw#YRZ4xt)D`-sf<3hO;c+Sl(=I z+O^{Tu9hj?UNt}NU2K^0?1ab@xfSafa%z=2L%$esKIchN7OUkn_x|x7o|Tn z59fq^?hQEjkfrfpL&xrg(rPYIc9xxzJj-;anFdt}ZHifYZz}G3(P0`j~%6i^*Izo9lCe;ls_^skaW_HH!w)n8+3LZTf_L>t1a5D94dx7q-KvUZlG@?Axym zX$%i4wO%yu=L;od;HM$eSP!6i85V=9YSIPB0LPT69u@wOu4w! zCxv58``q7CzIU7PXzP90@uGPWhkaJLK=1ZXW?~A#AZn3WLm(D=a(tvhEo7iZK3bQ?n45 zJwZ+6K(JO=_RVyUBel)9nfPSx^}5~~p;M`mWoM`R8jIDFw)`wzCzd+(MB z>ghcAU;5{bRc^}7=zqVo1d0NtpL@uu&1x=k&t2D8CTc?M3nA+*uFJ!sN~CO^vmV7& zRosZwlxR|6yla2PD3I^lqk49!21~|Xf!qa&SF6=BJifI)O#I?^@ksEWlGm%e4*ziK zbu{`@^WZeARN9MolXbX{@)gz<%QdI9D27iAUR-_Hq4$30^`jZi&bHE#Gv)-E->+cH zZ2iCXbV308mD;qLfWz`Fd?(Z-7b@_GX-Spbyl~*WK;QD$Cso&Yv@GI%+`dV(na@`D zbJ}}hd0~HOm|*bvMevZEAr2@3LZHf9fqg=zu(pMuX){Tp9+sOTOHTh$yKNR50O)$#RHzEndrA>vH_HeHb@atW0F&7T)_WM0id}2df2y z%l$c(@!&GgY?)k^q~?NiqK*|U3885rd&NF%l-?74C?M?AoqcY%!gHqRWC~nMzhd$? z{GZk2nBQ|>bNfYFosp^NiTpPsPGplH>&XZerg)bf0vhZeMO*tTx=+OQw0`hEu|gor z;j^|&%*r-pW1f{)viup^WLRQF#0sCClePMPRQ*b_!7Ua3w#8qBe>D7jrhUR7L7_$M zAJd_b0*-H59AaNy8klY4F=4yt*>o(V;ZaHSNhd{9=HtTuj#Wne?`^S2W_kW5f7z8) zhvG}FF#q_^{@G-9lp7Btzl`|VyAS*o%)7U2tz_OZl~+SW;lSH$pr0Eb7t>$ND8 z)qWw7iGlsop(tzP2$A-GY3mC3L_GBlWN@ARtx)rsS$tY8kC6EVIfu_C0`f=B2!&+b zE$fxBc(ji3j&TCpo5OSJg|cp}yU8$#cN3$)jc3KHnH(6h6t?_*_j4D!2%~}G38y{( zB%~)S4Vibq!s0;B=X)>W418D=ZrxOw*HiMMFTu!1cK!{mzE**G2~M8fHWrUM&vDi? zTYHI~cqd)F(qy{8fg>Uhu6YJ|-I->wEO-*9Ov{ToW-m6_yEWAQQ`pk?mP2FSvrF6l z%luc6*!K5teCF$}!mk{wxi0K?&OWJVz_IJTf{jk+wTsNBvo9%X%*eQSXVX6h4Yr`e zb06~lGt-hwGI%?+!HUJw;Lkqphi4lawOMB7+~eoyHHnY*5ZC^}d_Tdk=^G#OCytHm zNpGqeb`!cW`4PVWrVClFJ%?zP?Yocx_p1)Rcn?*tH{DZL5pAUBJ`k}6xa^TOYo^;2iI3He~cNr@z z7!tLLZCPfpY?1NPkG;LsiO1mFqX&%6JCH5!A?5-9BH&`UZ>khs@dD3Mqc#My<|l9~@*kjwoHd^Y!q(Glw-I z8l9K5Eta_XQ1;HfU-ur$M6$OlZ+O2 zCxc2&Jp^WzaYh{G5)e3-k|D(5JLQMs&g@%ld`n)xl=&cHBWL3OL-X zuR86HeNwN}&?7LZe&6-!Ez&yw*8b`W<>{Eqd0%sliC*0&oAA01JNNy*?%aG_v9G3X z|Lfj0DisRK@3w5&VW9jrjw{~9y|sn;R0RX)v?_anty9EyTvbi@B__3Zf>bS&majdR z#f62B!aHpnm|GpDuXPJ9QTy~HA^RKCN=25YN5`LZv-6~PMm&;h?#bKWb^T6>WQ!tW z3Wsrr>=QGtC+}Hf31f*b>ZD5u2iD{qa&xrqv9j|nS2=0rmY4Mer z=*Ao@R?jZ^NN-xvvF=vs)e29h*zSI}LayUT;IVxbvRoDme(b&`ye0J3RVhQsX_9+Z zC$63)xo@^~8RNa+TgKtDb6AY7EI6F<-_C(|@m=8uX?q+V1-CZx)H<9~c=)E%_gqDm zLWJ{sx897%ohBROxDp~-bHv%+7p27LpS&2&=oaZyemL7?#;sZaI(Htqna{RF~i(p zfr8O%ZmG@}Ilp&zdtR=)y~z27h$W+bMFHa-@9#Y<@zfZ|BOuXU7NKfnlOtUU0VdUru=&#^sK~j!i8?0XQkZD?8*{T-33z0CgkZd z+?+e5o%4ytl!c#H1mr$E5T<8P^I*gCu+^HP(;SLSF4szyJ_w!?IOTAF3Hy||h2e%7 z1x%T}rDEELZ4RoduuP1b!D-NVS2+Il>nGv=!=4=UH`NU=ym;q)7(3(YTT@L1?%T5} z6bacf@sxAVs1X#t?dZU`TeYz~C-|j?EgMfzUEI$yQClu4+xrddwhwnCF83;a%{f(} zW@k@n<5T-}E$jl{PcG~h-x8AGVOCn8&OATEEqDpz@m;Y}xBETvZ_hinslxBjq3*WV z!v4(%7(DjPWT~0nB;jBBs_XE#&TBD;-nDx?$o+WFEhgZ(Vd=+~+e(s?R_i)AD9(KH z#KFPA%S~;9i-U{aB*mRBE-u^?JpEi;%!+j;xUh>9Ngj^aks&2d!P6@e=F3z z`0Q_WPhrnh*BxCUEKOC6?-;ta-VMKhS?s~AykPga!pyPzc!GW2G}I|uAG^Wk?zGc2 z;m{9e6&61$9=BHuO%*hMshqm?L%c)zg!aL+0{j=0cR zaiTy%5RcTGWmjV_Pg<$%D0{BXCx9zmwjpfFD}UISt{Pa z=N8f-_nK$--Lwcko(4Cre<#w8g$iiKI2@c|5YqVeVB+ZqR*Oz$NT>S>bMusNO6=O% zdeF?2+xtZQRoy>Y9|Ran3%)clMkH`aF}Th6{=4?HTCy2qi2xTTV}@4z1qwR?>oT|d^&R6IQSzQ!dJ);udV4-b!+m+c~3+gBw;Z?Kh& z(D37n5o|t~#}wAaWHawI+pEMwUd?KkBai!ZJTn!LVle;EwypLa&;3Iif^Kld3e=UV zB&0L3Q)_bCyS}Nau7#R7n zwfu02vazzVJC-3aUu0(YlOv)6vlwedav0b4urtlk3A+4&VZ#Ik-hIbdUiiGQZsA~b zQ%Rlcai~kb#8@S_6^4}Y9@oiC5MCzw?h3%(Y!wq|`bx71#- zOo;c4av7^+^lv-v-}#5R9pYWRQgst6rw7g6EAwi?*@MBJ556vG(3{xud>)snF1O_} z)~gGeds!F$xN?fSV6lfv&7L7Vc0bMfFe}J! zrp4+rhHM-UL{#?gX^K^lwqs(`2dyQtaP&&e11%*giQx{GRTI7P*+!(cH(XQ0`!y5) zRS)6Re}5UlE1&pzc#R}hXkU`z>5gkH>4 z)`OQbWVk{d+fFrA)^Q%I=&O6C+Ucy}=v4jYkmfI`lo=KY-3~4PCBj(#WwAzDpO9e> zbZHcvCLW{UcGUKh^6hK+Ktnf_LrY}@zc*=ak{sYi-}hj!wF%Ily5GK6ILdC z^k6u_y3ymOkKq-DlRm*o&1;=o8DF3Bs8Eq9;3@gMs>+KD`s;Z(dTuH=~4Y;{xWF zvN{)bCLf-$f_?4!1FXzKeAhTH97>q_+fMkq+!5($JFf>a2f0<5p4;+bo;9ALNUjHVnOZi3mHVCmRX1MR!Di72=V-h z5z$(~+Pt+dO;~q?A9LsGF4%QaNRnt?IHh7I;7c-2&__l+|m3gOWUC#^x?I@ zUw0odukZBG;JfN>{U~wogk?qjaq$6#KQ0}Lnf+Geg$T-)r&@68yFZflj3o|JQV#>SV)!5#nN z%MZF|F~#lqzOajRChPWk?FAt(n9I*8l%DQ#*}VOtBg7y2>{Gzoon%C-QoV%TE?EpEbL!T8bf@@zz-ve*LNy-JJhfy6PDt7X5zI zeKhj5Q~eyhW#9NTmlQc`&zy7X2j8Ws4}ZFOwocPKA##Vczg2Vzi*Dey30d58Pj)97 z{GZAhIb&J!+=4X2*Ycr^XQD0^6~7PJ5T-GSdBy!k#hEM{L+2D(uX(Ydj*)jK%Leu} zuk<=C7kvHmS@nnf`?ZWEMp>~OA1WN5TzsDPHC;~X?uYzE?{=;e;moW}JG^;=!uM~P zTq`<6_8&Ojz;$wZ{>mds@+ZzbY?%K3$?2097)7pdU%i(3FRae_`mq~~fp=KgJKsM! z9sZ#9^Ot0XAKdQyYNr4E<^21PD$4-|{s-3O{RddsggNFr*DzTa*C`5AJ}vrbr6|HJ zA)^qZH~qAVhK_;B`_fNl=yJr_E__8vne3S?_ zQVo_-P`MFoq^hCwx>TO|r-Plr>r|81p{#TGpIE$hwRvs&U|WIk0zF-ZM_~@OOm8GS zcHc4mzG0H{1|D9W*R0!&J6EVAe*DMwNw9L>^GX$Suh@dumGhoAOjvMbLy6b|Qb6d2|ka7vwAv3APgnyZO*nhc}1&sX}m}x#0INZJPRGmooCC{%`oU z!T9f<&uWp8-dP&@60e^rPd_7<5+L*XO6`AzO0RjhUhmgbdA&;G^;Fd*Pc(I2H*lw9 z&F}g=P2VI*vTTw?mV%~@O@4Qy>tXTF?QDy-RGOXteC+mzFRW5sRr8)3d6g#>>Iu*N zY07r`*s52j1h4S1E$b90$x~XfyEG(3fUm?-T5i|6gZyV&x2kse@~Ble@Vs?Y`zEY? zmHh-`(Up@YiW+1T4qWfAQhB7SQBp83Y^JzT9*22}-Ks4N5pNt^(_;_UF0|dk8ur>} z@u%08s+XCVAANkSHtAZ|3+GS2AF_8g`aO6pcw+-&Y;#QC!^oqnrj&$e`L|c?P4YID z_P1kMId@xE!*@@wWls`RuU<*9VEe#m<_M?ndPPtI|+MV5P7q*}l6Hof+2yjYhY#@1J2c1mwM+vJ|@5}r30 zyFc6QynEAxUq#_{bsrCF1IHm=yBn{0%o4U|-_t2k*=S9H29>N&s-AZQ2eUseBvlm=>^7_lcrB+XJThzzjN>ZG3_k* zyBmr`GWd)Z_uN1HMBMRT$A9zSFqS@(#Dzhz)9y8Utc*IyUeO-@q<4a1cTqzxza!hV zf1O5M0Sz4jUL5vk9NC^sI3aLBM&Rd!lT0N7`X^2{+|gvY>hP>#4$n1(JKgiQy8h`D zXt~Yb85p^tOwPpqb61!c^OtW%C%4yV{}BE8>yzs;-`}}^L=Ld{>rD3H;Mpiybb7%$ z`DUZm8g@Zb2^q!U6Cw&KB1Ww~8ah6T!6yt%EEc&Lwc12YI4~i`rfkPwo2dUAryP7P zaILewwA;4jPTX@>#qCBjbS38aoH#j0W`TmwiIXi$R92ig*)m6Cjn2uIIX)WqNm{D;~q+S3pJPu12<{b?JpV~@=o zVL1-nq=UU`!3sY7EY&=-wEPX7U#p5ooL^^@E}6SCL7VZaZ)#K;k4GufseDeISsMNa z5`}*p+Vb(P#4O$$o6~!_`{!|smF(-_xX8x1lKJN+iMLivY>YcMO-U2jC?3VQ%~&C_ zQon5yb7tB)35iJyQ@mtkmZfOSR8UZvq$%m8qOmZ=t4%{EMPue99Rq`da$d_!OkU?C z%A9aMX<_l&+D2f7!4#XTk1OAcWd1K@TY0x~-t$l;K{nUQwGY{B&u?ZFbz4!M`eWYu zLSgp#=NXrB?R2S_ck0T~y%U*h53H5CzA5`ilz?uD4u94a#_CHQdD=V9F7jCRQ&yB& zCe&^F?|=$UK`U2V$98UmEoYlj^WHE8K1q;g_;HCf;rp)!$zRcIDRx{>|26)M@4M#b z@M`|dH@d9s>nC~(-&jyC&o{Bj*H7CcPwE2Ox0yn*F|8dcYgB7)oK{MCZ77)VT7iF!@Qmx6T>VS) zU$1et_?5-DO{|dV_m@q2axzvECNR`;d|$WfmFj;rJBHMUg_bL0jv0Nvxozp$)b%qI z%Igz6HO*jrWkz4E+wZBswtd!%Mt%-aL% zCx7y!mY7-lu035Q%faunDSX+JEa9tPuUz112Msku{;Lw;5G?Gp^ey&b=QytVnn>?6S6p2o%*!DI4-voh)J zhu1rPymTc&nwS=ViL2vD5jT@#?&h@ znUU#0*6HByUo{K_rgi*gY1wkn0}+{ePG)GGY$ zaPia46{@v!Uvsa`>tNfqV2gRo_I3Z)KFu-LFy7H6@OD3EoB7vnNn_Cxe%Xt6|FHge z!B)cT@mfG$mrGU5PN=@cpWCD48rOywDjn8sY#W$gFqtuyPu%PAF)YmUhm-MvH5`)c zk`A+j!?+|bzc$YMnDnt+?kOABPW`0?o40c1za`m!JoH{dSmiX7X znG7tbKQ&Jkt=zbyE+Nk?}7~_Fx&x+ah;vAQkIqYWC zVdTt95I*EzYL?#=nlOi_=tFdgy4XF|gvuP(L`lD`j3*~J%0zh-H-#Na;$9tloK5oE z?L-biPA=b??T*~xJp5Ua#vHx-=0$72d7B();$8Y#tNB<+yecdI$vg6!$j{N~tS7cx%DF$v57YM$qyS?nix*{Y>|J$Woy!SBj1DNp_$&rBEw%F zZXf8F_fzSjZTm-FF1Oj`iO~j&PFOBxdeQUdQn>H($((-{M4f&zDfGnwzn8)VWlrzd zyLRb_c%%g1XnIknBYTFg%cqY~(dXNryJ}|2QW{L%wO5#0m*Wq3aP5beHD zZQX%MhfQuUt(V=pk&ER@|H5S{`KLsfBRnPe9zHM+U>De=X)jcsUCN>?c>b8>O71mA zU5yqErIXVVl~|&s*sTu<&3WK`T2>}NO|YMb=c<0g{pO<;CllAyF*daP?})wMS^C&x z!KMq9Q>Q*#oh^Lv0goX23Z7uy1kG;o)QTvLMHy+lOp0Hl4zDR*wZ+kSb>q%UFFdMk z#8MjD@9!-=!zpI((l+lkYXgVMs)W$K`!&HHmor%7wLiRBR@71yAl}sC?3H=@bwt{0 z2CYeMwMvX(CLQILF?+vo%}HA#RAG{rbDsHX(q7%eoo?^UIrJGsmtVQ$v%j~7)#SL_ zUUM0vr9bsn`ncXWu3};#!e7MtSw1-a#K<{lFdi`&dDhI61HYn1N z>3$ILy7j>MYeygcFneW}bnt><#nJc7uS=ODG9-RASxKC`wB@{|5Bt$rhm8F(U)dP6 zFocaBc^n4 zPxq`PTr5Y7#KKLx`CjlUD{70F{5`ju<61yC+iy1~8IiR$g1?)?{|ZlzW@PWs(=2KZ z`4sSpO)!>CF!nZs&?h#r+7sI6t5Yw89enlZoj~&|H`8_vG0TSie)6)EEURxWaFrLX}_D=h>^WQd~ zwC;m_rTne=(gz$ne%#$P&FPd}{qcl@kGK^01C{oiou*Krva2)JuWJKW){$rYLX66C zQST~Ry}#^R!loquT0Jb@gSo9g?W9-hxsu!0Qtte8a7V<+{Dwzx8i@%O&Wk_tP1D}wW}$Dv1gyv&Es{y!2fw#u?u>ehcJ z-_qRXN$V5VqzOr|akXS>IR?mi{^ngYGeu!pi4@o4&!0bYl!yqF@JW<#D3tu3?^Rsz#l^y* zxq?fo$cn4--=11No+6Vp9x=vJT_J`NHIYZ{9c$%RIY_)J5$XwksrZnG?G?jZ=H;{G zO&W}EG#m@du}_~|G{fPQ$qntbuXC7fm^wr_YW!cwA1z_!@YQuC=QMiN$0MfV39ZM%%>C{uqo6{ z-OOqd;r&ZY%;NFVyE|*V9aC>OWw0K(S*~@T#~{Dogq1}v<Kymb zn0awdhl#Nx-+O)QGb!dN>=O6ZaD`87)JVEIjYVL;g6D&&-^31!FmOa_ADpx7P2Xbv zw@hsclN7g!9gt&|DnGxu)Wq)p7cQOyfoG}IU8`B<;H_f5mU>)8{vvOW3mr9frvQkz{*DsS2PvgPiUyL011XwlvUn;5x{9Px#sEyCKhF_d6zjJT*~fZv}sQAn3kY+q)l%(uXE#gdLm4=;Kp%Twp=8hJ|b4PJx35 znI`L)6dg`yWjd(rF2Zr~B^#f|iab_MwF8-4a@_AOzP`c1l39FF`oQ~OJ4QQc9uIC+ zhFpOzUv7hcGa4QRh#YvyqTD0hlXjM|j7{)Yb%|tGsM&F5N0Aste^%~*F(99B>pUDseRFKAWV)`JNQLsX-fL#tIU>G z95ojjIF>ZC#$0Ggni@BijVp7G$BhdN;yJ8Yh9~nr7IVGW@K(!)qv(cE(Yi&&m#zjG zOlaKLX|ToYw#@Qae)(VdnQlVHw=;LQxlH1?X4Wa%wcyI*gAdn79Z;I~*D_A5mgzY#hm6O2#p37(W?)_CwXyA&_q%$Ei;+4*KA zOGbtDa(HEPPi~r*y*$ceJ4ZmQc3PWy&ZM%I+i&|sofy|%mwVAMV?x{)MUN8yg%aAF z84d56ZdqTva`QF&5~+7<<^%^w9J^*X^;S&HZ989=s9uA*;wRddWC&kRTMb}ZLhQ;a5#qLjT z9|gHyY*#oR7I?QME91b8x<-cwt6X!Qep;z~@#ADo<&B?~2(l@J@2}8!*kF>Cw2NKk zgHUTkNu}_@pVoE)9&($FFIoDD1s)1qqFTP;dS^gic)-@i1Jb8j!meFO%o5K2Wi2Nt z@%Kp>&;PEF!pvE&2Y!YMoJwCZb8X`d2A<;+4_(;6RC(?6`B!QmST43AO5ocz+sVDn^-E76d#l{ayw_dR(ZHlr|1x)d&3>Ego3R#jSG7j7BAYV z^1$L?p~&ox>C87xZg+f{n&1wUuEj+bV~Vrmk%#XSk4p`V`nBO_oqKMN<}C;qHcX&eSznb;dGA6;m25l z<a8dYs-g%lISd#yAKlKdrIP5URif87- z2O=L%m>OIuh|-AIXsck6ll!P^xr@tXDZ2w63ogEQozAPc{*Yc3BLjo$vI(mO^X{@Ky zKBs0C=Dxihlhzy|^Zniwu?qgFHlSjdUM}Idg zYl|>0+iHDgE61gaM<+jYe^jf^!Kwa5mM{OuGbijG#jfENH;C;0AgDUw zjDfMGb+F`FmN{cj-tM&`N4b-o$AbJAWj=;bh^ z%?XgbBawTUle+~bci!puu#d~E6 zr9X^c8yxVPRq*eYT7W|Gle7nV%!dQQbu(XF+FjGOGM#0ESJ5pU)zvfhs#!60xBm%T zCbls;&HBcT4`%yHB6K%dyYYN8IAUu3S1Orj&4jIe;hm?JZ9Fhf^WCvGA@`qFynDeW z!EkD)j{5o%c3Gx73fr8UMa}L_QP@4@L&qN7%Nb*E%Sq)`;(q7E6wZ*Scb zTzQnm7?ozdek^+W8RHLy*4H-}IMVyx7kGdRPy7wDCvNIoN)3Xi>|7*5!?MeRPw8kaNRT`Ff zR%C7!_`5OGYAWyAiI+IP@f_je`L@|}9@DpuqVE;k%aVhIbt*)jO10b$5id#oufzS? zxl*a&alPb$)4tw!I0Ov4MfV121+DNt;Ocox-sQxR2@@w(`R_YuHTA!yYo7JHqWRGm zcc%P#9Uu2S_T}7`oFff|23nN|4Ml==?Itk?M7a6u*#~(D3M5LVO!%JKDZs|Tl`_GR zjfc;v$B|9a#m!?yqk-tcz^I2$#jbr_)$7Fkc*@&94AWiy)c)C+anEYnh1pVu>DS&U zM#@?^ehSkm&KC7>=Ms|;nH6bT;2_W8ux35unxKCSGd(V}CxpqYIsa>kzX0$MKKhac6@}S?-R8tzQl^=o?4XFg~nT>I(g*bm7}AsY^V} z#Ui&Z{pV=z5V3Q=_=0og!%0327jAQ$;1jT9VKLZQ$^J+7#U+9N&2mZy72F>D%&S$c zW_c+#%i*8|S5{M83e&9%U;f3ccI8+a+}`lb`H`x-%9e*lQa$BP@v@3)ADF*o83=3* zyO~?SwMEasUA3-&nE~-Fht*b7G5>|9@)<&Ik+1 z&X-}QH5*@X{qh!hv9OVW$E4`XVe?ZNX74UNU|@6K6P0o_q3FRJHwVW8{aTBbf|G~& zt2IuZkkyYC5Et6X%M;xAW3Eci(e#FTW{zSWf!wcw4f^g&O#;3vNVzN%`u+U_i%HB3^ZuM$(+&Rza!87C2YqH)@Uuse}!mgR-iv^3W{ zwPfCWGBa1to|D_0+ur^Ef9Xq%2N?Rf%jCO!H+YJQulTV@*ofPiN%G@ny|=Hq+5*HC zEps%OoedqFFNB6n-@#UxOz+3aNdGF&A z$uP;+g1xVwcONsAJf^*PN5|z{jg1Qooz3?>tkqRFWn>NM_vsXg`5>+1dH6GDtUT+S zN{RQn(xoSzb1(gW*V{5z-?HLQ>0|5rVP(}-TlVs6vvfm-+gi2zJKEPzZENL z;t{@XN8b&E}EtkRbC8N8EvUGK0w;Q7*W@rmo39{=WjEVVkuW>*$ZUf9Z! z9VQZ>%Dnj#t9G^i({)k1KWPQ)-eRvk;FRKKb3c@aqjJ{rN*4iR1*Hv%vz9vuHk4R1 z#ZTLN`n9ewi`UYimCDSLOwVR%PvvK1ZBAkM{PM=y?Y3VmrAj^DaLSdrtYzH8JdcgP zr!29VCuZZrn$|mZx(@HyYCap?zA5{Wz0sFznOV0_!xuR&0hTV?Lle~tGQw@Xt2UTB z*c-oHHR;2uI>zwb>;hbItUO&?^uMr8ZT!#9e$V|irwHeX)eF`$y7#vKN^fWUR)6!D z#Wo3-h!DfqF2a-j?S2})wlaQgVDeh+(za*sOkc|+JBD})2`6#*AM)556fteGTmbvu z1rM%g)yxjwaUt-5Gxrw(t+g8!P0ot&3Gx`W_+|>U3A|2e*kHimx~O#W0gIMHT(6A1 zFEQDjibxDR+V;WYXW22v$b*l*N0#x1$?j%o5DPW0$~^JtZsfkth7RfGss7QXPFY;> zqW+Ol+0 z!{PhkLvex-JI7Si{ce7du)+Hj$0b_) zPIEJOik-7IrCeq_t#pRVJ=h#f3CxkJa|FPHqHgoi(+a-0@L72Pma$Y(vNY{|fUmSMUrQ%6rg zKx|l<+RVM~Delpa=7&$v%h9Q9djC#nj(g<8*L6Wyhw|?u;al>){q$@bw^gD&sMaG{4dPZA^Bj^1#vmYDUT;>Ke?v9D87Svw$!-; zuhSH+#A|d!xI1wtxSeot&{=PL>;31~ew}6RjWQPZpS+$Cqp(@cU!GYcZN?U6PMsU< zIgfP}H>?Wyv-)?lIzzKEgS@O_rW;?K^n;3vRuYr?^1Jsg5bR_()Mf5ocEhUGe%;Tq zmyDbbRbCu6dTn`WURkEh1TP-PFASOcHWe>*a18QV*SO?Vu;0=P;pW@dE#%n4B%me2 zn5KGv!Pjel{+mR^xpH$e`LW43c%GVj@!{LRH7r{4PVVk^kES#{sm`(2oEpU}`)vX< zKMUhz7LJo9N4qA5^`B^R%T~$_+s)irVfQJlSA^?r()@R6jgR^tiTF>vr6!{wy61+! zV|OEiba}_amFr`;ncQDH^+nvDfU4 zV|b^6y|01OG|8~k6z+o52LXSs#VY-_Ub<}QTdQJ0F$w<(uG8*qS@*?0oq@0BQMcui zro7#ZIgf0Lvjm!BSc*<3GnD<_VeRF|#LT2px~%t-!y4TmzNJZ-vqBjUF*)s?c)GaY z$DdFWkI$mz|9)P!77Uf}vJTYH61%%W^!sb3F0l_5^6t+sy6jYmzvuLf@lWa2rxovK z9lEzf=HZ7hX#V0EY^yo1BIHT+EI*Rs?ZIc5dRUi7f_-V%2Tcvr?A z{rz{a)wiCsWiM4(J>+D*{}DBrS|`UWu|xJpueo`J!@>AEXa{975b+$!&3W1AglG65B59aB8yqSb;vt6 z|K=#Vy(B5iG38Xog(GSY5*^LFq|D~r$`Y6s|7}r-sGOh|FYgkoPcF|mz3%gPJ!Izc zeY(B=@cA&oCn`Jmx_n=DT|DqeCiKOH1xv*Cz2tw+CbBPMD#wMS*GycluOv0@@OTI? zaUBf$Ci!GZ*SoiG{Fr;5PMAFTEyM$7+u9DJ-G$G$vv zVeKm>?Q2{GZQ*>C3eBxeoO85gggHwLj-Tt9cwlmHm8!)4 zy-Gf|dzsa?h1l-tz7^wC@iFZKgY77R)L)tv}atuAj&vU2`h^OBU&cP?%H)kFR_R`Vp)@l17`KI!zGFP9IA9b%UJV{oaVP4=tKo2cunZmsf| zpur{ars0BDLIHz=;KL{z)>2LV;8Xwiu45^7T)IV}pkdaPh1W96n03^6o=$Fbo*dG3 z;+kCCviBVv`3+y}gt&a}OcQJ2VJl(3rM}=QTUifJF{i@GlRokXjtKF^#a_0VP?DOM zb-~s~sqF5V@ar6%3K!d!i#_I9m~<$V)v?6El8?7_uFoYi3t28!Wv)pNGem7=cFH_q zKJ@4!+l^Px|MGG^)OgyX)8YH9qbyrZisOoz!3&XBuM@0p<)&XQeH`J(C{p`ygVD1s zHzz*p*Qf}6+WAPy>GhV(Eembzf@jVEa#WZc=hH1 z(^q*l1BW99Jie(n%(oozvrV&MY$%piIh$}e?u|rAUDuLjT(3;IEKL9F9m_ry#T)8% zqw7RKdzfY2#EPwxn{ORsXqVkq<`rcUef0UAB5y0FseU&Mij`UJlohPx>bui%A!8Xc z$D;<0wmlwEkNCFO)dyGM;X^XKOO@zo`3eA#%SZ@;;0^1$Hh zBhJtZYPa0_kMDcet$9IlFK_Ew|B^+gCTXwo;d4s;qoL9nyJSaL?wN#sYpX~%UK`;h z8+^M3gi!!`dNtZ>P9zyaMov&7UNzZXt=e^ai!D%wfd=CiSXcCG!9(vhvf=}3%OHY^@y4ZF&MP$snc5RE@4vsIGYf64R_m%0; z;HStaJlkbECx;t=)4NTsIu{EUVaDmiC$9 z3DXn%?I!HYA3WtKn)SM<#CRkX-Qtne!10H$e-IbIpJEi-IJ0Xe{?gM=U>?AZ0VOI(64J& zC!#iC3SVm(QyIgC1Ct6^mu7#6_};?tpeMr4M>jM4z;lKhyGu3QQhO3VScf>y?&P_! zz{r_}wU#%mx!g>xgzd=og)xgaY?rdpjd9uRz#p%DG;{h~T}#6WJuHVya-SSsvo}Dy zX+pZC_=evhavLTDq}pts6Xb4@1Evho|V%PyC*M=Gvs3p>yw7E(qmR9 zH?YSRytng7Tqyd;g1wTJ@ioKC#FaIQ8;{H>W8d>UY{nF}BdX`qx~1+d@XKZMol%yy zZTp3CX0ADJuX9`!=?q;Vb)d+^X}8RtHUHK~t@t!&#rEpVzGl8P!NK#hSmZXmil{eb zb5YoSlWk>H(;vHgqOM6?pEKQl|NF}*=~MmH!gtO?N2?u4d`CT}$~-tHqJD{y$?}Bf zONR3dB3n|@I%lZ;U+1i;q0|-h@WX)@ELEnNsCT}U1ZtA zKga(Z*}AKHmcs1%{lY`8+0{JfA}xk2RF{(v7NqGqeS6?fdZF8(~qUh z9y>cUMOqtmTiiU3$-2IrQm|(FZTmuD)oizfol80=yjf5p$nm0V!sFJ7H+XC+{$KBK zR-WK2@zE@w`=-5KEk|k5!)+V^^A-y3IK=Omaje3_@!!fVZU-8FzINo}FwC^`UCO1& zTPDCCb-+7VQZR#g=gNiaFSGeiKF7~ow?sW@zD`6=Sg9U|hSH&ePZt?9KI&RlWE{Bm z(ad}GtekUv1sU!iwl8BjUcmC9IIFxO!>lB2cezS;h02x$gTkeH2U_a5epm#BaL>LU z5j;0>V~hOk?i-%bzt}F#6e#LGoV-ibhBG?M;31#&Yl(e|*2lspre>@72yN#OYT-zl zAbf;J^pW$mV$KbpYd@??h;n|BUSbhk<~~Ws_{grs#XC)U1Ub0Az2unHC}R=4^!c=o zOWqCvuRij$#7=SPuqV`8*QJ$)VS1tT3Q{)ycXTYrNJV+ zj7#|w8KVU+HXN9HnawZzuzSUQWj5Oq>q+6k=1lbhu?sk^zgBHm_IB?OTD;LSB=2V0 zgh+OtBdc#qFg*4ZOlX|oAM3%#!uUSm;|fRCD}|rp-MA)5$Z&PKDfHH4!@9%=st$kc ztJr?jXt=lpE0l^g*ZC-zOj+{DPk?8_g0|`YF>$*}6dm_pus#*O|IEIvlUt4Zn5IZv z;tdUdmryFqkn+tkA|ri&qsKYMGmNhltI0-b4%ma_$homHiCz?9^!u|xOIKSN1?udC)!w84sYOK zVJ?uaVp-IpaUy?htU&9Yk{qV}yd`<>6J{#))k$;+ln8riKMvvJ%FXuGm^A4?3rqAr zGj6F6Ekhkk6(^38(%9$oZv6SdX#;n_e6jd_TfR>y$yMhIH!g88DKSh` zoS|=8B6lWaAKUyhlmF+MigIgtKMmT+CeJDoT%b3Vg_C(6OYzQ-U54x*n3zw!u!vr% z!o;vaMPXl(yZrYXQJk+izFm-+J}JTI5aUkYq76#%SN_H}G(S<8nqR?T?tAF)cgF%V zwK!p?TS|*v_8em6=v!G8R-3%|&?N5Z3~XVKR8*#NPu=p7?^2w#@!CrPT`HeMcmxs@ zIL{u6_;^U@+_G6*>Pj0`UdN_b#BX5lJY4bG!I+IEAmjE(aS`TE{@5Ny28;|kZY z%}3XAK8b6SX!HzVQLuUcz*t5p{;-h^TVnMS9;O%1;uxo0P^@0X#LTE2;GFV6{Ezj~ zu<%e_jyF~%+TV?DEG%&?sOMgL{z>@J#nysT=N{f2e!^6qW6f^q>?b8Px-E0(E)aI& zQq{0ZJfWG_jF~C1uQ;xq-0LYn``QGnv?2u6kV@;YYnTD{1&|6*WcgF z_uQ=wYo5DWN7r1LP{|s`6wTVKx-{;FM|-%=w7U+Lo{B+E50{wVxxY^0)+PUKB`Kd+ z778gm=vy&;mz5V+(CS&Qi+{eGr&-RKmvXo^E`Z(v<)QH^~$Mr_t&fQ^ofM+#l z!+MU(9j+NMHyk4vl~!>G`fis0(;?AyGe_q2%~|j6i3)Y>l4Ev~|Hsr>*5!Tb+ytRh z4B5|^I4rhZy!AyYf9>mwJ}eypZ1+M`WS;*mDY5z3 zcO6t{i92xch5CdGO$(#tn2elV4o!^hYLl`Q_B!-9-*Vfd158;wM^67|Qwo_f@BC$# zwULf1ls@maV3GQAd5gB`6)`@MA3K?fZ|>^*!&1}s&5Gepb5!6|%{$gA!NOKHPV8Qr zxGuP|9q_REbFAz=gH=P0*{K8PdR_ck&hS5AoEd#1^eo>3p%s1C+b-?X@vokE(&&uR z#S?F>>p8nF^tx0s_M8olyOv*>sO+Jha8>2CaqIg%$=A-^i#>bg!0hP?p2wLF=l|aA zZ+$}P_!;Iy_Q(8XC3JOmXfd2Uk=}PY;^c`lj;rRiY-V%|zQxvYUd&HL=}Ux&SdoB- zM#eRjW8W4Fy|}RdreqOUO#J2N%C$ExzrUL(E&h)0*@w1l*F&_QK)gi;d(G@@8Pwl+&7y%}xaOQ6zjLZ=mSL}7@f5B9g zd^sbxbh6kJzB`+B9x_~E%#W~PUCEX9O(krVidW1Roqq}<49cY(f(0=Gd!Em?X<%PC z^;@#RRJ(oVaW|r;EHJV5d1>=a!pil}%_@VhE7-a=&d6F8QzaB|ZPK@b55|!z-L|wZ zXOfVMY&&LlXMcoEgz5EvcTWZ%pVueKGH=afnF_VJT|pbFH~3a)GB?t;yw|omA%o#THjT7j?U;rik@^E<7^@UKBdVKlZS` zr^yr9`af3I-Qi$T(wQ3p3=tvQ<}IJgEOUp&)PehK;9a=~3~RQ$o+>VN?@lv!TfwXc zS7ZN7E$GiIn0duyf+A3mY1`0<65s ziXJ+s)`asUebqXsswJu~9@-RmVV3M#p?gLXoE+rEcWOO!Rt@mb4Cj=)s2xzQx~2IG zn@)#unc2)$EpIFXLY&M4IIX)&8#7IlLmZC?G@9~pzsg|hkZW4VurgqwX2w@VEuT&w zgDp{s_jlX#P1+!pnYUOsEcDzzKc?#|nBHTMoUDGC^tT)Vcn z?$5$q*6aCu=SLpNXKtD179Vn@XqQt^zx?Uiq$MS;2T!!oSwW8qxQ`(Ci zH@0kIW2(RNfL+P!=aU0Dk64<;Yb2O2?O`q#=$Vnx#deM7!VbqdZ4HMs*p{%&lYBBG z>PmG-q|U8dzRIoQ9AP?deW>tt-0)cY7eK*H`u*UT|Cxw>c_MT*ME4VJl&F*$T%g+ z`HQfCmF|J?nNNOf@ienyd?CZr#rC++?!%lNZjAg`tasM z#RrkzC#p8Al@1RMX?^)+ac|$Pr6v!e?%18kQwY7%<;QqV#V$Q<{iQ^gi+w*W((c5( ztFWlGnpW%e)7nUXFs1V8u9I4?2Yb7oxF$P(mdwwx#>%EEsXB$$Tw?AU!w5jgm;LZh7o%a zv(S!iUQ6H4cavuIn&`-$c%oX(c!}GgZ{Ct?CJr1dzkYIkWu3pFq2*6EI7f;lawh@Qc{9^^Vs)mR#3J>)d3ui*XgVUUwb0ON(jqp^`Hq9SiUJUY25II@`si zrEoBBi@4OxINrFUAY*b@!E} z^K6)p2RQRp8J6uYKEhyUUL?iTeZJE6cpF#uhq>3?ZZxtyI$)=fQJS$fu(GFf!-;L; zYO?Y6wGOKuyp5e~;d+2cW@aLnQoGo`IPUhHAO3z#t0@eKIr4(j?W$|c&VslT+@BUP z@N8M@!~Lh=Qeozrte}UN5~NQ{WQiJ@1TWc{s#!O|>OrX5WxFiq-!d{4{Cw}FHO!+x(gH4UQG5Buh_ z*)Ux0D^p06W@ah>!yfQpyTFCWUH9GHy(3HC?AuhR_;g{J>*O_RiaGl{9)4qEIuL)u zIe&Ng`d0ayFO+Y}MY{9NODMZ>@XGV~*1>j*TfXM9-xT9+eJ@yt?VTDzcV z{xN(M~eZ|zk}_HHEMbS9BxMxPtK_Lr%?3t`sH^j>ntY; zC~|P{Ftsk{xW=*gr<#(F!^M})KR$0ebK<)glX?k9E6X|SgcC8H3mIORtjWtzI>;bU zmn)yMEbm)$f{I{)xlN0XM!I|+_rj&T2ZL8-Da3HZ&)^kE;90BcQL$WKQAxyghM?8# zvl;vmIg1OLe;F;9#u`{4@}@e_a`$! zxBowC)NR9Sd?dKO2j`jXPmNWyVeW9<@T1OY*R3Nr-4@ktiH}v2Yf7v&6YKbzTt-cNNeCQS@1?+nYSa$K33?tlKmERBOK0^w5%9vywi zGBqPQTQo>5G5J4l_^Y`dtZL`^Ufx@$JDDYby(54t{&sNgEcO5v54Nj}WjexP-Fm{h zy)I!T9J`-w%s}OpE$N$9^1Bb4>YR?82F}qL>ncbIaeg_-eI;O zZXWk1`S?c)NG6y&8N7^(_dk}ZBgu7)Rr#@nqsBx>TQRO{4guEPH40aSUv;xQJI1_I zuu(L6^TF2_-Z5p}*}JsBuS_Pr%*vLFSHqU?m`2FI5;0qTDM99$o5VCf*`GN4?*{{0 zVg74*QTNv(@~=6wIF@hjRA!2(d$B~$i&6YZ$zFzCE=!z0WmG9Gacg{Wc+v&6J3-SL z{2uogtp9N_m+Q^GEo@ew7$ej^NY2i+-SonQpK-E~(Lzrku`m!dfq~)-f}dEZ8I+)+gFBf?BCgbY*{8WoAoEl31%j{H(x66eSZ5+@BN35Os?Fyt8&=c93JiZ zZ`61ps4J;-!iq3O;|-buR~7D^OM2{;pcZ8n`#Qql&E6|zY%;G|xZcQYGdSG9>GUbV zm$&Fq^FIl*2^abPSMjo(Kln<(%*{waP;k1(d~Me)2ZB!qmxP@5(~)hlO>I8-^W{T9 zEthXOUm9QSEB}+f*2}9@eK$if^J`X~qE8BcE^jC+$f)BJ5Dx7Kk-8lD&HFmX!~5H# zCvSP;t=Yox+iTYnxxm#`4K1OMx*dZiMsD_I6g%}+SoQ3_wHn764~yj*KC)-~5XKjG zyM)zNXUnv_tr{5#3;ho$a7@ff%Bb1iqLXF!GxP4$54pR$-3`?4ya@=OHvgHVtjUcR z0m0w*ot<>^r-f?cfqN{Mr)14y^!*SnT@fqxF#;kq(!HHEHn;KF8#6Kau74eE+v;+w+?zKiBzO@ zmQ-%}xo`W|W&BO=z8i$!IrY>!?2RvzsmYC<8jmNxFsW?Vbf15o!pqAR%CT-wF0=mG z+VQ%h#GdW)M5^XzSXTND_m=cRt zo!#d&PDB2DVSYodf8DAp8kT%a`S)o_--78c-seo&qj0<=(5-N5L5JiYhNIjJJ67`Z zmt5{s>XXS@r}DqD^Qv&XPF?)r2ggcx5$<=)HZvofegAE$s$mN=Ym1(yeeS>3brWIP zNsL)u+Hx+Z-n%n%z1A>cDph6iH@$mJMpCVc(Vv;A`%l3GQw1x2A$=V+DdvM*S{E$r zWlU-=J&tyISfKOwgMYO0-KPdmJRig~hv?1yV{CHg29s9)NtxeM-9G&2i`3l!q&5za}k1bbazt)ksVNUSI2Jv#`r#n0Rnb~AF?fB7Qpc}qP zs(mHHyHoX2%Q_g?s_s>73TSozopc}}@_1BVqK(57sbubjU}HCK!GmvZAJSjhZug&aQg^HUj}H;0(&aj{GhXH? znBDudV@z$y>Q^Jl-@mM zlI0eNh~+Bz>&0OlQL*geo0(qHu@WB4%}**qO2k<{hVS`uLiog&=>aQ0?C|(`@t+No z`~rc_-pKHDo%h{4jyS4+-=yvw=4N<`?f9bC%?Eazt_$OKKgH92c9Kw}Q&G%a367_3 z4$heeiZiukCw=?RE3lvMQp_yxZTxEmmh3Z`{!DPT&?KHx<;^@U+b3|V@}7uuC{W(B zH>cJXha_>GE6uOH7JOvxNP6RXQ8iR_&|J21y!fluUS2Z4fM;rvJ9hd%DA zd^97denyM7m8*wk?VeNoULXE0Ug+);qm{7V;DW+q%?$Hp$L#EuD6Lz`^3hN|&;FsJ z)$414_F<{7I)krixUG;sCb{1u=k2+_271>2escVL_;1_x?WwFhEad{cj8{&?n7s5j zwOB+@HGf z@)0p-@#;hdwu;v7Hxo{*>|T29?^T7miWS=DR7(T{I0AbYC9rK_6DwmjpTQFOI_vdM zcI`*U?mJ`zD!&zKoV{;xBzv6FmL^jxHV##X1>82}9%_@6y;ZcQ>s%?QW4W_EzGH=R zYG|!FbIqTCtl-Yi8xJt4oeloeFnih>6;7#!<^z)yR|^#OWIwvW^w-Pb+>z_%oc7U^ zJN7*6HQBpO#iUh?Uw6@A@1S|vskM#y%(u_p2|QbpUD$tN^)KEPmfLu~{`<|hf`k82 zWgpKz0YM>ECC|xX=l%yNytqXb!Fk|MA12S4VniS@5)zaq%NP?49& zuy|_o69(Rtn){-*ovPowT5RI(NcKH^E0b2ViGj)8%ev!-WBu6^c5RQEr?Sppc>4tV ze(pf6_baZ(h5m}&U=5<)ISxF>jMBa?FVDJg&mt5WZzu|XiX{1eXsn&eX<`yNnw2Vn|Td&=5S6wEs ztXBBJm2*ZmKBYR*_1m_GWwJ=BMn}B9$j_j6cUN%9A^|f|hPtfxS~i}gYRznq8ISSU zPP%B8#q@d3F*mEG3sNp!C*zdZQW9!k7}QMPx%O0vHV03MTAkuIHwpHji??!KmFb*k zioCzU$zc6~f^%-wbHw@o#TWRu**KNR*@Tx!*|?R6)s(UnR5M?+3Dk+Uwh1Yb@GCVg z@Cq+TzP%zsP|nI(S?rg9!-{5W9_b?{FI;RSc-kkwz8@mYoGIyZs)4Qhje3{sc81E0 zq8xLCELf!5iW2i53;&&C*eur0e|AmM4`JW)5}uyDe%tGLm%mgi32IDZXPvN)!|~!@ z@0Pc%=}8LNegS{pK5za}CYo}Z_4y}`V{WA>o9{N>j+kYp$5?r{R>C)9--!T28+Elm zQOz80WFo;+E` zw9aFNTj(E&q74?YZ(16?Bn#7DsZRf5Ag6dqUq_AQIOD#yZrpX$+-&UP18`i-X?Zfxu z-S4``Zf*~XZr>>>y>iY$VrAHsZ8yu(PgKSq^UoV)Yd zaWB^=?J|k~1tL53T@sqE&sUA*mXzVpD`+_;d%5WOq7hkippO?T^DA4NtF0-QfT5c9(Sk z2j~7{oTmcvXq>##cQpTg={UYW=uT(Z{4DW9EB)#B1V}*0ao}G*=ixlQWFn%)H z%Y8u5?{da>zO74-tNm;KpT=`=OVF1`fiNs{~xDk*jpMg{$(ihuom&K;pUZcE%~?Lu(`z_m0F3e(EoOl96b9J z8)8ysI4+Vo|Bp2)QRjqMnq|ihg@>*Q{X*UQJ=`7_>Ai7((sb>V$|fgKt<7s+UfauH zJE!9@gXV`7d)7z_%{}b#O77aiTn?Ri8@@|3oM7oQ)(ml788&Ir_rDGYlzUF_yYw;p z2g-jicJx>nrqH?|nIpGZ;<5ECE(6i9QqE+>HH_N7jvo*_pux$_GA%}jpZCJCzSxtO zon)srPka!z-$F#5B|Ye%DvO0$_~GtQHoN26>(@&89ge@T>+b@N-x>bBreb|h1P=U- zI~>=<(8lC>nssx?r>^~Ol>(_NpY%q$Ie5&=GG*(#@_y?DPEPSToou2(9^OnM>t4E+ z%`$W2(D(D(#l4(gL_+45=jZ4Qg{%~n;4Fz=&*C$;X3D25*rRg0djAQDa5WZ2nKM;o zJ(H~uU)-OS(U~DA1vPp`Hi7WgN z%K3dh?W~~GeGc=@2k&fWRLN3U(wURkwEg3d^G)_ydOOBK~3fW;3TWsar<8?&fhiF}-3{ z7Kgl`kpz#PnmofF_Vh(2S@x027r8IwJ^8QYQXbY7`c3KJfmbXK_>Esr+j1%HP^4S* zH};dB#otxXj7?{R@oCUZl-vao0b&uTuzw8erw9@#}tmq@lV))+Z&2{4mnQX3jSnosYfj{~U z>I@Es9~t}(iR-TVqVyq0VOlLy_76!3iEYMHlZ`elPf%oVWj|-<@*wh|xm!%jQvnD2 zcFoXQGvkx1qQb*oJrMqH*8M}g%`RT6((z&R`so3W9oQq?4knl%Q<9YLSK+w%!RgQ0 zi~yFKv1e|+Xz=XxT~Sxf5Fq9CY5~iV&d@cD6)a0XDcyFutK!W6EO1({?}^T3N1pS^ zEC^h{v*F@YRB^qmpLyet9@4_^o8@+h2ENp97}Gxzmb0P zV#*acp2HuS-2VjJ+G>AY?T@Lx&tWD*c74Znyl+?%Sq#}Ox2;^zyu%{bC~qy#e*;UF zqJHD-OACJT=;Z!4>ubFDYff2AxQ^FqEoLr-FS^bTH!j$kg;C0_O3|;%YU8w zl55*ettc_HxqCzV`wxc~|GR6qxM~0HEIs1hZFeM0sX6z<8P=`;#l&1HBxbcAE;+J- zr{t8CF;mLH)ExhppXcd`1fO6|uUW8iw-Z-zcwG#e3d`5|F)M5t88^xM#4yY0#;Uuq z?s3SIXcOARYS5pdAiBXM_}NM~``D>_9z^|}mD-rFOvi2Isz`~Gb2yhy5DNMI1GGZO+RRTKDB3{su%m>7%`H;5=XdizxuSO*f!Ysm{nFyoJ{QP*%-$k9 zLqAD?>D#e$isqVcIdU61V+17TZ1}TQOi1XGc1XD+k8jA7hHs0zo}%B$iEZMn;-mK@P)o37k4^vGwxcbx%B7v??$o{ zEw=3mdYGYCv|)OcTk{W#R~w!SywZ~4IKaorCa3NAW#t~{1uIzICszr^ORwR68Pf8OPH z(sNBeZ12;0;BjYq=?5o+>Mh+Y8pUc03`Msp@ys&SbvDxt54j~i;iX47AGe2&qxa3H z3_)fLmtBL-$0Vrz-F!5(YCmV)c87P}jCVzT+;K{&(`S9nA;a?HuHf?BDsI=3C+|O7 zw_DRA>Z10=J0e_>%tc&x8Sj*SIh~=)_}4FC@$J$z>8Hz*4@cUY_xkXi)Hr`rrmM|q z#}1K<>bnoO7v8wZvcu)(=>n~bKhG)(-?({`@kZ&Nn{CVwp0nJ&5idNcU2sLstnk3pFX2WR#q?KF_*-$Jf$@D;I6Lc#?5K@S;tN zHT%>eCNr|x8k}G?_`+uHaO=vY-mqQ2p7;k}Grr>&TDipXn&7eLV)}CgJ!gu#u3VX| zs%UjD_=TUO)+!^%%MY$6Wu(6Fu!yzs-o@f3>1V}$q~GyjYPY}4&7BO)KZGs_Pkl5m zQ0Ric&`HKBA+aU4Atnue{36PRm*X|McjRo8Tg80%V$nY(!Ig>Kf4a39D-JQ)?^AXX z=dAp1YTnVi#`1?^H~Y2cx6J3-{@kGTnZqPS`$4lrYofyp#_hpp5?*!NOWb&Esm`8w zcwUdYJCibtV3YH$jjZKn5^VCUY<4$iwSIXmk(rRt)7~m1Rj#0Scz;CeC68;jg*8LM zcXRD)C@qUUsJ-Z0K-a#M%Fdju3G3#xx>~?}0IQh4|?BL~`6R^7b%2NaBYm5H9;r{El-}+E} zqxOZJ2^9}+s<)UcACIkLpK*-6@b%kk`;L5?@SasPVgHZ6d_%>v z?M9_8VaLL`yBtD87#kTYRHpsE79=H;nxa0z;NlJI3{UC!P_f;NV(T~a|6U%v_#=A; zlY*9Pg7F6qfm7Y0_ZHu6?oH$F5=*z+zC@ol(E4z?pvjdZyMABLd9nEyuk*QXkIIkh z3iLE&t!1~|J*Oiwb%6tSkAuvcWjA-NZsDBKeJf|>;Zplf35n*r`%NQH7W60XT^P9k z-syP-;Tx}Be73Y)eA2$V)~wMbpZR;Zn;x{(iO;CXNvN07@L-%;D&C{Zq<1;5lBr&m zkw@(d+c!r>#!_KECi|cdz9PkWECO>bC@`()G5_E)vnxr2gZcjg#{0~*GS{z6s@k<; z>VqC8mWXWzGAV6e8J6wq&EC=DCO+p}jd*O12KSWZI_kZ5nZlOc?BZZ{emApjnPTmQ z4QfX{?ME;Gn1=Aw=WC793Ovssj`@cgXb+n1C1xYIvv}jF3c!t-L<2= zDLSWop`(Fmfmo-wY3nD2&C5Te9$nGg6nKEy)66jB0^=4}4)4oW%V)1TEaCNHdW*8y ziGVZ4!Twy2UfAtbSnCkTxJ_j?=OmX8ey>$ly%w|Fj`(Li!K`7~q!SzBnFJ(sCbKC|;9|(>tUI5?{B6lEowedVQaWwHi|04> zPMYm@yW>NJWXM)0@uni}w0{Y2E{e!Je3iXU$?WmM9HyOStCp+~n0Yfn#Dqzo{S%{` zoQCUDn;lh?H|dDXE0j#R;b-l7Qt&Zz#GsNOVYHReEdr}ZMZVcCOkB{c`FJNc!RcRb5Jz*Vi_*xdSYk;SL3z6<9)i0_PEZ` zw%DoC{DbgC&{N^(_a(v_4MY?=~t`chg#QkWD4=^%I$(8BPhj zrtvqgvBr5U;h%CnZI8y!6FsYYV)tnYtW)UTz!A2i;fwL~Hv#56MlSPzwtxB}IWe*M zo8b2|8(6oVPwBWi_Y1om&vA>6aE3I$zzMTm?C1Pw)p+#ijC*9zmvE;0N2Uj;eG2GK z7XHzu`s-UmiD)>RzKrq5Z^b?~vjz6-DbPK#`lP1ij#C>Op1tFE68GTK(}gT|P5*E> zUTTgw9)Ckg^1-@O0&Z**m;)*|h^BD*A7QZ$&*GZu8DMiPY=Z8)1R<#_%T?>u-$Y-Y zu*|JX%7&|y)gmBi_UVQOj@S1yy@GB!?DJW0lglrl_?Jd-zN`ARTPv*By8A7!x!dc; z#aO7!bier+U)K(8QLc)v6>9>Hr3ftGmf}~@b0~OHa`uU1zsb_GdsYjyt-Uny4cCW< zHcTgcbELlCC@d_u5qP%PbSIbJlx=J;i;t89NvXBnQQyNmC+N`c4cTG2Dvw)R>tkBQ z91`;D)njihur6tN7<`q#O){CWB-=B>X=3*o&j9%c(c73xYZh{BEv@vJWpkvR@$+7e zmkCTxZ(jInI%>T+(!Sr6?aPnG|FZhipVyaZgs=;3w{|Jk=qPj!E(o6`@!_?Ya?u0p zZM^!gw2F3QeEo4jaP|CSn?3xr8Z0LGPhj;9%KBEZq;}eaHYcCy4f*p~^wNHmYFgji z)HvO!@Iv=_zA~}dL7NShf8uj?jta`FP!M>;+~8IEYJrm8i3$^wA3+=k5&|oj8D?tk zdSuOW!9ph|t*B%DJC6(Ar#|oqc-59Koy;bqDX{nE(dpAQ1peHS)wrRZm#!7LV$Y#- zY_I*9Bl91aB{3&+eCK~%afdfVOswI4(5=cFz6_V%{QfPrUu(o;ry`%;^jmL(0 zR@wq(Ygv@46pX&H74VxS9Q%_Y_gdxQ=2J;~Y)uTJca?`TUApNe^4*f>lLGt7Ek-O7 zm49rxBX&tXC_VI+RiRMCR=`kUL*sTUMk|3^C+eKC6kaF__+-2iV&UuK=w0GoZpda= z%zkQ*@2VVcZ2`6hktQcM4qla>GU+chyzTV|a~cmU(!BYjGC*Qe`YoOv>r|Qf1b)RX z`ciTFlTcZ4;sw)%mKGnL#Yr$FC%k%6{9Jzboe64k^~Gu&d$)%>J4sr}SO&TG@|e4I z7RnoKG%0#ecj%GEwsk5J=d@4xXz^)0Fvyy;%_^965vLK~U)K)-yf5u~x;8kx=G>i` zyZ^QArPv>g7uB*Wt;(2K3|PDJ4kdO}%#GsA*}62z!lzH)3hqjbBF5AS$yOcrYrKwIogPlpD>GtC{-!YxZbANSn!ZFt; zJYTLwvk=3HCcuKfj$eiO^&DQ8oi(0m(&0ID&^7}3$76FcfZ1XfC z*{Tm-@UW0^@)7E8y5gtAp?OI1eK~)-IHT!{8w{7)7Y0bbQTfOoV7~f)?&cDQXLqLD zWtwoXxZ6BB&h=gwJLml@mS3-VJnk&|B3~9^*#1@{h-1IdPB!6)!xt~y+28f$N|e1% zb_b7I=-s;lPQ`gbr^BS~TFp}Zbw$Wq`u;yYA0HQ!1I`N8@cDQ)&oYd?3!k{$z(}s4RFZNq{Ej0aW;wkT{q@WY}m>YVGRM9bK3bG5dr9y|16bwcboi~)1&NuC%3MllhC&e$7F&b!K%3YD;XMu-cr za$49m-MPK2HutOw&&N$^H;it|znvw!MCV59ZG)OSy74UL4bIK6dP#;{T+IjnaImbq zB(Hn8_3j^|2iC6N9y&aX4sBh1+G0y$`w3xb;dO;MLoEaU6F!ea zu^)N0LmI#3F8k_}Qmoc}PWyYYlvKhY!_GFT8^y2gXEZJ}3G#Pa7HYpcYnDaMk7fJ} zz3U#N?%WorcVsEU`p2&s7A%Z?@N9=Och1hc-5m?NCwz6`C`o;k$jFyE)79pmklF$% z-M`G!0wuYUk2?lmecZvUbUgmICa>>SeU4(5D%p-lb|E3tuBfOduyHW+3VjHO64>2) zi$(n8#MfSK>r5Fx1$PHOEsCDa(AjUW zYc3z0cdFrGy~DqaGZeHA{fx8rJ)To7$Wre4%~h*J&DkMGDk#y~L#s~DV)xtQau&>o zS2Ev!En!n963oKUP^-fj`=9N=wp(F`j=iydP&B0{W21nR)AW0u9D5c7?06W&V5aVQ zlO^U?DNlGE(}qLMIYrS+x~{n$KP|auoAR}X_cwRC%zaTJ?p^t!^-;6t(i2DC?M_#m zyznfyPn}JX%pP7%jyMbX|4tgYTEAjiUohY5lHnFx$mMj%p~0Nfmg}9Pw@OY$sM+xu zj7rScw{TC_J8{NFlkd%H-8pkUd|CcOFpKMV;(x9r2Ci3Owh_`EnY$I=9bjAdOIotA z_Kdr)r*p=?iQkjnANUm&yxYaYDdaWZ!#A5=i=WWaZ0KsOO(=0loA<9dd zKXWSHh}3s(KQH@2_nNupo)61^wBL3((s<(gUq(Se0f8wKeCKdTyk}rq7AZQ1U6h$` z(N+Pzpd7=stTco%dt z=rviIaeffa(GD$VTzJ6I$vsG*?H}(WA-7PcDE`^a6%%?-|F|cb#IWA+(i_o9I`_NS z|7agy^~1sWMWisdXP)-yrM8Z@Twc`v*>_Rtki(5E7KNgTPMaGpWPN(5kYK#zew!f^ zhx^rgk3_?Mf94X3^eZtA3)nH&CAmiHmLBsv$(4S3Yu_9ZnRBoGnr(f%P@Xx{dQ%>Q zmW!KB9w_fJIoG|80b9%tf5lZiZLSQmiGPqTV6V?XROKM`C$A_ulyww_Z*Kbma6`*%vG%0;v*8PIoEpj?-aJ0c&+ixj;$g#fg58Of^B!iF^0L-PRY=p zzGrikEW3n8Nurl?qqTo#$<8O$2A-#ciZj$j*9hsXdsENQ$$DPp4x5~v{XrvM9^Pdv z5mU?Vt+g>(&3LS}k%6aaKWqP!>ZlVBj_ldSR==O+P3%IAZlw^mgWJRSnTs}eiab4# zD<`rpRxh)_B*R1}y4b_`#M`-PonqatW@Z*1#vaBNR#pxm+QG%e%}~MF!0q)8O?C;P zH9;1S)i&&5s(;9OLgDT7>>J-d)>LfJzb?mP{W+p|c|`ZxgGUa=mVA}rsED}EqJ6l8 zeg2V3k+KCZrZg=K-!A#>kxb6o0Jr~KnpGv-#&cI)D7qi|p;YlIYt1ziJ{udw(m*CR z75+qF%{>!@J}@6#)xb2T{!z%M>dO%phDfbzi_p;4=qO>0L_Daey z2pmYe-x0_y$RWh&uw={I=-n@~6yhvhN;oGp?dRqd+2d>Bboo)1LxgU02uF!d!PKtG zXY;D{FTCn;;GZlzU7()h-Q&_C>mPOe(e-%@pRB(ZTR%}{ZeGZ2$KLpRw(xnK>`TmD zEus<%l~c`Fc!VSwRit#gdaD`T=Ipu1S=!_#_CYlJKQn7MpUY*og4FJZX4fKK{H?0+ zGvi6{)L_#wOG-?X4C={YxW;klvQ@#I%?VR3ByhCZJv#Gy$%_@2gO+SbYktxHT}@y@ zm*xr2Zx<$9s&HbHPE$|0adcPvMW+0Q9ZXYy=oP!q=Ccm}ze)YlkJqaI4xBkRU3KQS zOFc6K!|NMoxv}~z_;6XqEk6FWNG+RhVZola7B6zTS(sx3tbZMB=Rd?K<<)Yfz4!h{ zi4wkzC9KS@n?e`LnsVrL#*}b{WQ(vZWJ$19E=cz}WHoEW$@cYAwoGB&{>0^}ylX?n z&Xz*P9KNplrUO3RwK*rYn@(KGaHNdskxEK*bX1#(l2}243j2a(8rCJ3-X3(G&e0*B zu&KezAoHbsu7wPTXG+&CrMc5K{FU@?{>NU<-eqy=b@b~WM-TY@y!4nuV$pv&2R50~ z-J&xdUSY01)AJ&QOQCd4QADv8>p=g#=2B)frGRCF7U4~MEj=IZ1Pp((4&6nk6>Lf`(&%=1m?nj6_7 zd5-&zbk{zci>WEh=l8u1EYbFP-RvV0@z1RJ{g1briJJZ;H7r^FrGi;P62TK@9x886 zjtGbfx$sX!Y|5PrYiB>O_))^U&Viq!L*SIp0)^#U91bty*m9@ku!#p*;cz2Okr)S{L;$b z!rF2{vinjl=LJoUw=YsH-oInAc_ebRjEl3q`PHO}M-qI!*R;pAvCGA|ud92i*OIiYhNOG#q>T@#eFyY7ZOcDlxK17&9*|-z=6b$zrdsJLe1Y8bP@lE+L6| zNjJrLOcmD54AOHd7mfRWMh#{&iFOP3b=-BvDAyDDsSbQ|M&iQaps z4(Fyxh;L8kh>{RCGEHAKt?}ZlG}%sZafMi}#};hCjxXv8-mry~ZAf8L>`P|;&ydi% zfK!*dQMPIGLiUyq#$pn6E^G?ZOeQG&o-gLr@aRK_h=ur;wRaVjIzreD1og$3?q?=$ z(`SBObM&=9n`DQ0*p`P0(#?rqJTTK^$O>NNWw5%EQZoc61`Tt9k# zxN=p6*-W%w@=|yC>oYsl8xIOuyp`2I>l$x((sTKv6iwyLfy{j8Wska5GKQZN2nb+~ znxR1>g66f}Cy|$)X~P4XrW{;yEMV@GjliQ2WRC^Ru^ErSG`@29&<| zr%?Ln|D7MAT!DtJ!3uT^Et?8B7;4;FpEWx1NSU5H6n@@R=uKqulQ`c6)Q^RVtTEu>-ww3U}mJIG`D2- z;SWbus#;jX*lu^MtyRc=t<{@&fLHTDc(6r0k3&r7j?nDK%?>|i{WsT;`#vXQkyBdV zjt?Rq8b9pr3=U3Tq8oZjA zji%k(wjk#Mv#-eIs~U%{tWkT>vByY-LFEUF6l0gXh8la(sSjUP`};b&vlMOH&Hm*~ zUguYqz5s<~JJfn2HG?BHuPJZi&UjYLv6f-^+r8=nDtkC&u9|DSXlZ8=^jOEhawO4V z!8S&fBGx$!k%o#Z1a_VK8DX^Gutz!f907%e93pSFWo%lyn)iht3x{pao$VERuVs|J zA1F_h?EJ88hJs1?oja0~3|X4fWWGJ;=lpRi{Z<`|lK_iE{1cb?kw>H>qn=;Hy6{aL?4<^2l6zf@Yn&1anIGEl_iFmdR95_r z<+#0<^URVreiHvJwlO+(^6;{65qiyR)3~Jft!YxX&%JI>d!a(JeQO@=saff0Jwem0 z?rhCWr3D^=TV;OC`D4TuoO6+V-3jIezW4qcF~`dt!!>WgV@RI9Q@Som1g{Vc8+sme8?ej@oULRSdu7{*|h)5Y_3p z@XVpS%;Cmf|6{C~jOSTaO?0c&{!t$F*}QjEiNo=`1gc*uL=0=2?f-#U@20y_R~faPN-K>;2u=UobJ|-~FJ( z_|CZLGM`uJGM~Ml37>96z>C3j!JkyA^%QA;v*6&f&Eh$J@p`q0Fy&bYC7^p0dj@O88F;v%mV5 zdHmU`jegO)Uq|howbbrZ&jx{DSNlm;VZq74Z7(bzg-c{@*ivW1Y7_b0=+D+jrir|n z;idbU8QL}W>RF!AsA;|uXxCxQ`iMc`XKjFacg~bO7e(DxUu@vHSSmZ2_i+8A32KR( ztweTx(5>y4xwBj0<%*0qrK=g*C3Z3Q7jUkgz$x0m>LhnfF7}C2-X+5|E3}?C=`C3x z$}U`V<3RZ4)_{`M?AyoWjQ0idoZyQ$opUpZxzk;B<7(YNNe-@4~!8GjPHy!&0~YDZWeSdnJ3t+<=~`pLVC>?#@7{Idl(&jBP0}Z zmRxO^sKFHXHrM;Ok%Zbbi~M=dGI@Ah1m=k_aHk%a%rHwqqQ>UYMGV+`%5t9DEAf4d2>})XOvAH72;X9Vf{m@MLQdb0HR>~%@8_RblaW8=ZJA`2ooRZFbmrYn-E6P69Lx;RcqE|H_#r4d zO~}CTxL>u^qg@ViCb`^)x>;A0DESDoZ(H0Ne(3_^&d2~qsjJF!a(h@**`H74p116j zWl>M0JY%NMp@5b*m(+Crm2tiKq}0+fmHB)?XD^@7x##jrvT_s(-frRdE;>IysN)BQ4Hat?Y)9QnWakv_S4r4x^IASL%;|<=?W>A8zS&t! z0ZqOf8xHJO{Nt8TbTfxthoRb{wC&yXjZc^-^PC8}bVToolir>k8@j!gJKg@iadM3q zr;^7%3#KhwIGNwYvunkF20b>rz`vADM@8#ZY1bU6AmXDK=!=Mlae z{z~KDF_seVj18-%R|joz-XWv(%9oMHr{T zTIIzY7Pq>rEESGW*X2`C$<<&=f2~l#G3}-25524k9-~rGlM9**@*0*hO+k?_W=CdO zdGPLhZ;;>&8-}#Y0S~k zb~$3T##`b*tlA+>{$oDu4fFh!m4!4IYIJiB{$uEz+>-qA9cv~ZUz6xgkp)-QcIH{G z)PMY}dYTuXpzPyvH=U__5-OkMxka2{w7B|Y&8J0A7#5g3d3jA?n$X3@|Fh*b=^ttQ z=jjq0Qpzc*tE%kwkjd|)&x8QojLzDXi)U>JTKzOZoBPf4Php2w&*(Gz=-jzJZpT`+ z6>EBZg&NqeZCa9TS-WJ`I}dfSpjSEk$5RgP@+qB_>F{dj#oZzNZH{XDmhNX@cG!NI zPw%_K9k0W0gnj(-_&F0qImH{MHRN|lUpx0Hb^ZNn9KB> zIftiBN4ZoYIEcf?ask(ajf@urB;BRGRUhl82(0I<>CT%ZxS-W0Qd-L5a-^`cuy*3l zrdq>g07{dnpo;b@44HN7nKw8cYXT8cM{Uvgl2Xz243fx=VEWob5b! zVs?4jILhU)*IDUJZC^7ZW=4-?&V*|DQ_`m0}!hLet$pSbv{YVzK+>74Q z9g%lub;!>uWzBh=av+QAu*Hl^`ggQ$IS6y6&FWj|ILF~mm)MdsNBWgl?Rhh6V_kz& z#P-+ry{;cTpKhypy;=J61Cc{QKi(*ML`GeI)Kh%;NCLYGf09z7u1WA?&gh97rXAzdz-MQy%^t*93W-dbIC0X_ z4^dO(q&htgOk@#1k=OU-ut?h-&YTzA51J<)*rD+Mnzo2k*n!_%&oVxx2(eyxVX79d zyR@L-?sb>k(f~DuRbf{pN(8ojpFYX#oeX=2K+XQw#(F(hx88is)gK@d>HcwMV3yiz zg;!EvCR@$F_f1a2a|iPgseoU5T01?C+?pJzuKHx*b_1WPjVY7v2x@$^T^ZcRHIqxz z^hC9pQEl4=Jua6?&$LcxTsi%%K4NiNW9=1353!dFE7tcsyY`sj?)3+5DH~Xnb#gov z*9gh4>WuA5T6RHnxm8%sj)w|gT1CuL9@}Q|I+r*w9=@+EB$wlmw`rqjryU#DQKrxH z7BGdHH7~ilyeB5+O!of6b%-?@~%D3RxU4%ep%&(hj1s#nNaR!H_OR80}E z3*LLAKJtM2e~a+&?nbd|q2c?y?={-4nSHG+GkAIyipw~+qu-|-XG5g{IP zBFOG&wE-KSle)oLJsTwnj<^3G@`TOG<;e||DN*>H6~@mH)=+fnvAUDJ=8F>3 znQTjCFX>fROcpTN%|6RiE8u&Avs1uiwuVeDjy(IN;*K2OOPo7AmTsMIYu>wfN{AQF zR_%jbRfdlP!dyL{yS@0V%opXu%XM0vL%r&@C{NS<)mzxN2{G9T{ETRC*hX$yM#IU>ufeO6q0XCr8RP|8u4@j+xosT#*& z>764YvvaoPPd0`VG0k=9SmdV`^}N>_2al| z!(s*Dn5$<`66 zbvfJegGSrU*A~Tw+MWJKO$@wj_1X(q^%UG9xBofHK5eco%c@eL##)|PD^Bf}7ho1U z6L`2_{U-@lP60OmnM*7U7OD9aOKME_RO9C6dRw-`B_K|uS?Ep|@}?(#04=~A|fPi5N|L9g=;tiPA66E2#)Yrhqf&>puNpV_mP^pUZo4=DC8o-pmUnVj`@v*}(`(NqY zoDlOT{KiFX)iTl_C+|2hw_~~UFYXDq{+D*_V_5V};DY1?-FHtEO0G}zm66*kaQ9$P z?@|$)5XLA6rJYLyT{$`%CwMd3ad7{e@+!Nb_EBjngWLnvC$EmXE1D)v4NMDbNmYw; zvT9CkNn-x4_^f6+KeKPkoZCvL6dv7UF52SS5*T&hFY|xjhSIYMYaKHm9}&~n7ce{V zD6dz#w1o48PTv#;wQx-yWroAA)fhs9bV{a_GM(4Y>PcZ>Y`oJ_=OQm*{ri4{boZs> zoDNo}^Dn-bpmL~;fl2>NQ~3FC74}bo&Fl8rg?HZg}9x8o(VQwH+ z;LqW@piGOGN$R@SvDZ!g@s|&4T#jV^8f5Juc;Ui@qHCMAS6mKlbctQ_(NjTa0@ppi zf1mvqtei1%w$66pBd$#Pds#O-tlHL4SbI|7;8IR@MpJHg4fW9YlIb#K>gpf8BQ2{L zIP6vKYJa-&`k^7q=Pj>Kge#rn2$62v<$Yz5@1pQ5j$2=p+}|)tpMIcyu*7ptQ~1Bb zOTTQMdU3_==&-#(2i9)=bIJGp_Q<{|agFYeE_0vZWjHO`ZXgk!c`0&d)Vr-7Azo_d z*?L6WzI91D&NAs?eVjEhpvWr0Y`S)Wy-CRxu6^ektBx*aXmC#s(EM=W)-}#>_sAFA zjZ#;cToe5Uh0b(0p0%rY$E9 z3u!0pEAwGmX>eF}f#lC^k_JNe9$L=0_wqFB^>5`JQ|=wQcPh1EfjH|%j>omLcc>>; zb6MZ4y7ViHh3hp_hg4|v-SYWcQY4IptS{EFi#2fHer&<+#U~b5Rn1u2x$W37>w{Jo z`P8oaFg%T)-AS1Mmrc97;TxJJW**JQyuvnY``A8XJ6EY^Lj_aUifsy38VwGr zOWf=v_lT}IbU|3H&*R12nnVZY5;m4nB{`0c?fM#4+NT_om^q60G#8pHK9X~ADq(zL zCNIJBQY5%L)|)Lrg6A%qGgtW5?45tOe7sq*7@c1>23^?qk)3OH<}#)&i-Vozo7M>& zxOtT|qx$at*F4f?n^#sQI)|;$X0&i-7C558Iald-&yF)nLbB41Me&z?^8)VtP(H0?7whii>@6hvX33@B>=$M_MEQOx+Wp#L^S8YR zXZOBl7KmJ^I@@V^CFg`MUw&}~_#I#TjiFV>P3T5+VdCkp@5|&o+N_pLP<)xWKs6!9 zr1e2Q^S+G>oVc#B7CRk$#=1->yy4de^{|61HmVx36CNH%aO8QgUJo z-u0zejpe`-uKNb%QB{mm+6CS{g$&+r5)2ic9kT;jY&<6hY_8lWIk}+p%ioiV^SL8G z@V71Cp8Jx)irPM1uq7R~$p zzonPuco&Pnr3V~r!G*5o3&Zs;xu+a2k!jHL{qlwR^tXh$5h=QguVsX}4_OP|ef^wk zug6-(*@Dypv{_vk84le{7RNl9>^Ci7yI|baGQCr^;EdVqi!Yf)&Gq(m%E#6E;8d?x)uedJL@(8IZhmeC(-JrI<}Be4 z(Bf6}^t;rtUFr%u?`17lJp*I*lb^D9UGBy+?DFQ|y2tZ_=|O^R*o|OomXHqK=37jS zf}yL<*E3pN^bnR(RrsvYcIsrH(}dtIMl}t_*xrjt%87Sg`5E@|SaiMU)J$p*b}Y;6 z%6gT@JH3NN+}geCLd=*U0u;&id_v zT^#0X$~?FNBEl{O@NjJ?^9Z}TtIjD?Wb!WMGe6emJ9Mv$5UF1i_KtH$Y4XkU+LJja zH$B}}6}zBoPyD&JXZ|_tDfcO0WG#)(6-*1zl&Vrb(|?S6k&u?a8qR5d-DgkLy0)_a z`RUAzh5F_%w|opbP{hq+pd<1isyp_^;#(KOPL}LzmR>)}!SwYemMIr4>I|pw-7Q$U zUNBhIbkP%`sqAu^Z*~b8@|Vl0@hR-BF|jK%d#w~=xA<5ipEx_0Y>S(3Dq0 z6#kS-O5Hb_ZrFZ_UpH+*VReW}a2D5o)=4ut?(#D(<~UH-l{1ICayvtsM}YiU4xKj+ zEQ*nKSrZO?dt(qC-tArbP5AVMt%eunyE{2j&8tcn9XeOCt|@iou&QO}*`ttS*2N`y zse5fgnaaNtb^;n-1P}Z-%RA1jAa1#vo#C_H8`qGZMRz1Q9=AKciDM~J@LRuaVs~ri z4rvkF>mJc z{~|Eu@E^~5Z82Te`XHX}8wbCj>yUKcYA$Fl1 z&Q{(Y{T61^ru~V$8OM?pAnX>=%){XFzbxlQZbXb=Ty}zDir^!DQNy(NjdmvA8iLJM zcW7TVa*L>5!FKhwsW%%5^)@Q`Ol3&3R;}q-7;m~upiXXq)WU_m z8@?=4RrOh}F2<8keBxKlBj(z&ikcINJeewrvHcVAkW5m`I?;s1@V#3Y*E)%VKSiLC2i>@C-5eRR6*A5N}?pO3m**FMXc z+`fNXi&%G82+&yi4)^m_ga z4URQy=SeR7-z9%hwkwP&q2*E~i=yubN0r#b*WV5~l(_VMIHjzd-y@~KBv8WlszGfE z^ScCNpFIqD86VAs4!rX6DiQN4wGD5daY>mi@Vuyify(|HuT@k<%3cd9CrIiD%Q;kT zX|y#iW9~~6i8$QS(?6kiQm~l1o6wsX5}w|3Dr~>mZ;iP0VXnlo>~DYAg!tArFA=bB zzsM?C*JwF^$-4z2I^la$)A{tdQeS#A|C{nyHkN%&w3Ya}t^?hZWW?pK9hk6Mu;iGN zW5pb)1?&$jOpDfK*l&CYl+i~VBs4^#QyrCgspR!0a_l^lM}$u%Wk;o2vr z~~+tTGA745j(kbfn^}87>j|&r+mj%BDpT954D$CXx;0S zF}i*EL3d)<@$P!&09lP5rB??(Hc8l}U7lDvaix6E-0<4A&&f-RS(@6*9bsVz1 z<=QfC_uJb~l4Dm8mfOb>mdVQ@qcctEwg*%9X?dR{r-rsw@k^?v{qbN@Zp+x)$#N~Z zUNzh^A-Bn}v{pI)ik#x#XZ)SFdQ}ocq_2b*^{5y~UnzPrA-pZ)Pg}-`?!7mro;{^_ z{}YQDbB~ewL8~6bFQ_Z^nn$HgnWkAX*K$E8#I z*je|@>F!|QV4bog;Gd(z$G6ise*7fU^rbR(mOa+_?7>uS(IsOUQ~M@2JI9jI@K@lhth9V1CUvGK zx=T9wFZ{ky`atePK~HqR3LZN_w%5bd2)RvD48rx!8 znH>u%mxwclXe|{ybJ269r}KhI9!%W#ru`^-8TS3$Y0aPIVQm?0IS*8=Wd zEj~RWEG+hbv-qtKEH9E3WisTLz8LWuUS}0BveBHx6v2@7c-n1_fN*xLFQr_43U)7R zv)C?g;$!%s_oKq)$WfJ!#$O6o&#Q&cP>GB{X^K97mlk`WBkpyiE^o>xA$nB}m9NR2FfZbGj+_ExF!t z@qe>?8>tMH^GD(sMCaB>Y-C;#-0^>>H`95AcMc28eyk9k`;YDZx&Ikb?8R$V)%a!0 zR`G1ub>_edp*;+%ezb*ru8>jozbtkAfXf6V&8ytJ_*TT#A(su(gKH8or?$_*mKG!udP)EGZ0_F5L3s%ZpuIhs~wir6XE;CpEY+gas^J zx$fh=N$p;{*`*ugUOh;CFg@eu3;F0@^LER~%x$?Oq9EbKSMW-3yMoUY83lF)pBbwB z4spttRQQ8co#j;cRXk2GPfAr4DcJPEb8f&~$7|xAcXSLlvRZv$opy2NVNT=Q`$QBk zwZF1t;&%LXU$2b$LaIR5yd4F;ot)e|1|b#n#yQw+}*PMiF#{K*+)O6 zcMU3EfAja9vMVrG@=wXwa%EBhlTY6i(^*@lewVDhrM19DS>o`QQOeBfsqv7B@a2Zua3NXI|A&z z+3TieO5B(hcObXg@k3eY%dTtqU6-Y`b`XLtVmsikO?(TCJH+ zZgM*-8s|1J?_%8GwfsWtdTqg9PKP*xUz@nUxY~A2;2vIIbQ4}KDp}T8|PrR2Hhx2 z5&8B9kx8d{%pR;MQ@qQ^uye+nr?J#0Fl##JEjgzr< zqoTx&qi4O#g$`T~yKb3lak6fa!{wf-H?0MbH8hvYP3X496R@xjzm)()RZ#+uE zS$zA>9!cMx(#fdoVZhRIUP({;UX8&H9R-Pi-FMX5s(E%>Xur_jy*tQ~K}qBFC0>=+ z58btR_AXK2lr&Tda-5~``>ewR^>42P{EZFnUJ<{@XWRa88K3svJ?#gTIOZOg(BCVg zGGk+jh!D5J7L(VeBHtsK4psPWHkr6vOMp3#N!qt8Wd={v>zsc1LN?i!pVG@3Y}o7h zryn@PeoW1Xnf1`Xh_+Dn}Wo5@aE%)Pi}sbyIoJMM zIx|CW$qn`H*W#ixTGaVJz2;G4+;&Xiji!95(o?=@IhF0N7c`3tZ2Wt(=ndl|qf%q- zBgaISrHR0RG<*uz%zS%oKU-J5S*A*xf#`oeR#oF4DWP>unZ~&Jni$oNpSchehAW8qYd> z!I;O3chiwO>1kgOSV3-N9kY$A{_6J0?1>xlwdczvqHeD?^rH zoxX(t+i%|@{X3=tp}a4aC9~QHcstdxOsVrL%jK+5=HHjMKv?XULCdKvXO5I-bbVN9 z@Uf5i!}{dja>nf~`V*S!ZR*MmU$016CF`4YdL7#?R>vR3dWWxFWATs(sx(x{Y3KcJ zeXD5lR_1JJzLeR;%0?U0e6PxH_>#IN;Pvg;1FVe;FM9ktAtM))zm_+g<%G~ho{fQ% z=C}t;%X(y?F!#&j3+kH+%&&h*FHwCYDB7lyUhzldA&d95h6-Lr1@4jz!NMzT3W01% z*4rN_8G0&*eyML-C-qSAL6}=chyZ)XMF~fP1&uR#9j1siv`@Ih!_7Fssp7+-4ktsO zmb6mlvMXWV^kxMJ6kThSh={!PvCfjIXn#$>hlUr^iu6pX*`NMovi!}QY<$}%QN77v z%{7kq?>{;yNV0r2V7?psq>Ej6rk-Hy9V4YTd<(WuV)<@h*}?9sn5o6@eKTT<^wfws zb5(ZzDS1)g*n0VFae@!a@(I84oli3!Y`&NwP#?p^;fApla!f9 z#b$_~dab6oX|jmp$%C0JxnBy-7YHuoUve=);Npil8Wuq%L8f0*Col>AESQ-7G=PVV zb&~;eSW-!ZlvK&9mvRLv@^8dm%XutJXmG51yP;YnMQYm2&u$A?-QHX`^A>%_N<4G$Ta z4xSB`x>3_x66VCi^QwBHp4Gpv5!%N~m~T8#>Ez$QzvR+^knN|+LsWZtSb`%WoTnb? z=F#q8_Hh#~I(Ws8D_@3tCdVm;OoM7}?mg+3-dXN# zX?WnmFk57o%A1N(xd(g?W7d4~Z2!}DuWiF`MazBG%qMj(Cp^B`?Y_=ki0QzO_Sr@s z=DG^k$n)>}q0z9m^_DwhkK8r6Wl{TgikEe{ZIHdhDX%jxrB*op;og?A^MRR{4>)|| zeaPbz_u<1s&XC&&7^ZBII@aOc+_Onw*V_X}g!+ZT6hxHGq>FMFUr?U9_x;VRU_oA~ zi|1K;Y9GqaaX(=EF-_7y+}c}9%|+z_6Uz=ig9U1N%jPtFS%Z5c z8s3fd`y*7Wle3uWE$b8_EeeD<&#IPGH8ATl7uIqy7MQF|TX|U}F3g2pxwkuHk%ZPZ zwue_Zj9wm^btcE}5p&UPegfxdZcPY*p$y>S&6WUFCd}>QvBg`XS z^EDS)M(`YCTi5$|-mprs5o<_H_eWlyOpjVbhk6 znVcu08Q!xQUf5vYYvNvdJ3ckeQ>RP5Lx#&!>iia2F%3aRSve-pAM=?eA7XZQaI+3H zC|WMsy`k$vcwl?OVeg|3zxvI7WZ5uxbx)rp@e6_Bv}1Pr3I!+2q#LgS9O$Iz(!Z{isedl233^N@M9h5u@4SCYHd$ zT2z_a)#D*~BSHGWx1em;`$3+ z>-WAE6JFTZ9bFrryhypNm`D3dWRixJiq?Z*-K-ALPmdU*(w6*p{3Gd6YLRxFo#Qs2 zaro2V zx0uUX4lc|PQh#71CwPBhHh0S$%fqo|UU8+3*1z0TUuZCxZr`>^v0xI{0)hSaRjz(x z4xHk^6v=P*ar>Ex%C<5#CY`gK_*k5xSo~UJ?zl2IZ8j0&Rq$1ev3RiAPTH4sPXX)O z(i?11oIA9g3ePK*NWJ#oxFO_IQ>^nxHz&W)iMH%6#@m!WWGR^MeehI%(!>IV_ix)x z-ZEJ*h%y=ZUHQgi5Rmxk;*+vz&!rXy3jHk+t(am`USb=~Frn>$k8F3~HL-QqGo?9a zXessxeyD4EcJ_8@4cAAf(y~w9r3Ihw%v^kRTh@ZwFFeVMch;-6E@Sxh!S5YQmR5xI z2fH^1SCyL_3)Wt+u++ZS?V6hoi%A_v`6@%+KM(e9?q}$2cBbQh8?1s?p9W_Nt;nFe{fr@4Brw+uI3Aq+}BwD{_H{RTG zMZQ8|Z;Qa*4mM5JgOBpG8{$e^TMSRwEp?lzAak(qxZOqG4{VZGWcMza#&qV@b-G#sTBRg>3++G8J@E;r8`U-3>xk#mw8I}w!esAZkgU6ez7HuSyOo0cYeJ@ zC6@`J@2!`>0Y zbx=gkf5x1h(DGsZ#>3mW4&=v1*O$Dr^*d0a%cp#%Ol+Yt;{)kS|4nq?r99sIOsmL7 zCy!yrZ}m9m7uLuBa?0-)Z|8o|xi(5jYC+!NxmT(-hMZ93xTEIEqTJE&=b?;ML&?r1 zOCBr7EZb^rIG53i+akpA8|OBjf>~zVf;ER3`kN)Kr5>0tD+;~UWaXI7f3xEe151%^ zI9H@cQ3~T!J5F`mV+k^R9Ba<)U1GFSHDbERqLQ$k z4bOjig(tdgaG!$puSGrEht)o^-rX@0QQRQ@$F;ep<2eSbq- zSxW5^U0dcQB<6L924@wo5IMZ#An)sgQNqo6?JFHLBx=sv>aG&)?UeiwrYjh~IqO%% zrXL$3j71+tSpN_?e(SKj<3BgaO}*~Dtq00{%OV!e4gTKZ_QUPbwgbUuTB{s(7wl>f zIIvjy<;-o`UQv3s+q4<WY_QvK!Rhe%`}e&g*6s2OmMD?j z!EjM_@|1VBZ`&U>m~1r(b6y-?nlSTWJ3H@dY0VFd0$7$5{px6bB6vAC`~F3SlZwqU z#~Jo+-e{(9mSaWo|0}L~zM4Ne&nY~s-*|8}Yq9qC=67l(CroT6g}J`@@3Zo)#R-$w zT9qr;d??r$Tq^jL?Xe?+a>75aFrmfmY^8q~S4-%7i}}VF>~;G8x-hb|2NB9<{yk|~stFZ9eTt88Pc@ERzlBd3(_vT62UywI9I3wUUgG+bb`NM9P zc5xbQVo+wQHSqUd<-H-q&H7=E&J+LN1{WkQ#Vx3AFtE}!SmDy*pB(zI?nR`&;taKY z3LebuEuEq1n_qLXx3|a?^75}>|)fwz8bt3#TzK;POl zN!=qil>!sh_ykllW(6o!y4_+lSCtW3UCNuF$SfN0LS}K^;~~ocg=Q&(?gKYpG8s*Be7e+eQnDn+lP3z(>;eK*d0kk79M?8@tF~LP z2l~5lR61z12Nh~LF^R`;Pg>6LlRfAmd$61olZ3&G&fv%@r^xJBk%p#}vq@}R4Xhkq zKQ`T2@wk+6LR!9drqu+tX5$SUOAZ`x*zrr?6;mIhMQ*h7>l2P&<1;K2rku*R+1Rl9 zu<0%LFefIC<>hl#ypJDT885>zkz>WPm4VL7oK-@~rQbPZXjG_%@o>tu#w%GYy_+fF zC2`1I*jROreDGuT&RcB9L;3ly9y;6=^<^5r%Zj#ZNxEGL+djP7(5b^HcEDL*dUBqR z=9|5y?GIZWxl;ezybnZ#62nr$YL0|hTz2%5e)6i5RW*Nt@a136 zRBLtalsN8WS;#16ciAF=nJG`gC6!+!BlE?jea9NsDL6WG$gJmkaHAzF>^9?L#)*27 z(^GVH93Dh8y}itLQs}`&rjLiVHA%DXSJ^Gaf5(?)`Sc?7sU=(a=Vt2Hi!Qxv)(}y= z)=I#~NFhffFmY#Mo9&J07u7y189nUUnZI)~&Y$+?0o#$i_RlR#HQos<%86nz=>AqJ ztlJ~awf(ZkZ7xIBWUlliFN++l6_f7h{y6n?s?(`b7XFrB4d<7Bde~aX_@(s4;n$x{ zJ3iZ5ziTaPjb3&#DlgYFSf^(9$_P1iR`$PlTl|U_ElGIK&Zv3qQC)n-arYc9y_tR= zKY7WW{LAo#;XXslM48H%9akCHZaiNb^@`(l@>Aw5r>DepHHJM*N#c56T6A-B4%3xN z_EOCgY}_02zs_*aQ0y!(crD!Eb6|^lY^Sd8gqKd5-CFM>l(+rR2p2hDDj8T8y*#M- z^~d#Zrp$RTX=3Ph(N9{Hq1z+ZPT#U?ZSrEbD;op^xmI7Qu*~G+5y%Rt{?le7$Eck# zCDtut)3lmsiJSz{&i=2r(z-m}Cmzy#CT?}AR6$7m#4(G2Uul*BwRLq$3S4X@{2V2m zTqT<}h2=iKZOQTaum#&Z)>h?&8EKPM3>y~k#xb@`Wu6}^W);BV`XwQ3Ny)m05f*!O z9F9zSb|Cg*L>B8dYbIZNO}z*8_tGLPxVdAvbavcY$JCHsqJ8E6lW9G@0bZa zS)qEI@eA_}#>n<-i3!m=OJi@{J8JOa%kfe%yDpQ)rV>RImH?KfzIEL+SHW?0fOBk7r zGr3RlGWfG!?X5rA@T>HYrCZhE3I-q6ue=Nv#)?+53~m%xiTlI7Bh6keB5Xx%2Sir2 zaEAYB(vvM)_;8()_WjO9YwonH^f9;YAx~uK-HG~_*mhlbBmT$x zNFlT9ms+*$b?CBh%uPH@lJ%fj^Muj+@IgpE=1QeSqJi7q&Q#CoYpJAu^Q zcWKRM7|LqcB7-v}esCnzYdLdUs8oDt-QL>o%+X|Ha&YOAvs&(Z4{tV}JS{cq;omSu znV<@TQ|}I%OxOIraG~kqgbOwcKge*sIVHETlqIIkyh4J@#OeC4{F;ApA=|#0v|OI+ z+TFz_perHLU$N|m$T41xW&gOnm`cSJs(v$^?~b^9^w6UuTDo5C1+f3m^0mSYpA^D=yJ<6>uz&QWn%B4fJ!p=gc4sqKP)=F4*#xU@IE z4{vt5=%u;UabNwi2@FzOWZR>a4p=Ri93#SD;i6npQ*IFP(Lnm+(bb|F8GDaxX3Sq8 zShe{LLwK3#rS1qlM^2RsOs0k*jvD@LPkS2bL>C)LzSk={-EzCP-`nEa4cRk+UIF}t zx$G&croFyD>rn9StCvH=ODuY`{~0ahR#|7*Tm50H%A1}NE&CGDFy`xvG>ghqTz!7? z9=#A55c*m{GQ8uqc!ZXlN~d6eX3)acOS=m*MD>@HDCzy5;x#o@4lood*v*`}C*G~qy6fg=i3&@-v1Czxxu^aM;}=B|emu9X9Anyo=>A$YFHXVk`AaY zwQ6wSvF6+VPI_r<=mD+dzODu~(I|%CUtNr8O;2|>?qu|~GXMUXwIXq{@{WF|jh4MP zMa4X}wzRcGDWojFlw=h9MnrF8e^u#+C~)c`$_{`+74!Qdvz7CSVgdz<+Prj zYZ5AgtbulMLqRoR1W-=8EQquz>C%G;@C24Brw`qCX$KL*iQX}Dpo7=@_?K;NR@LE~X-TUCD3AclE z8O^2mjbM%Q)qLTg`@?Iw2R<9boD&_Tn|2`%u951;_a<4IG84W`_(uiIs5) z=qFxf^Nzd0JhRnJ??GwZ_fuzfJl<5|;MrQFcQ7pKmq)kSzHZ5|Hapk&?6+oH7!@6r z{ZyMTIP5VwIt z{Q1@nwyVd^Si7VP2>4~5;C$T{B~bF;<`UCl<+o25J#z zman#4CpICW``Nib%eyV-b+pe2RW}!~6g@bQx%X!ItP6L#A4JYrFa3XQqQcgR zISi&5p3021xB5&Es=U8g7Q7_cSD0};3 zq2+f?l6q}4vx25UQJ3`j2 zHt6U&5cxat@H!<)WjnBeTE{JgO zm+%X4F&J1c`6a=onY{I%`8Nkafl|XwEhlU2?ib%+WD5Do{FC!1SB%Sxe?PfPd1_o7 z1OyZXS8yz>oT(zUrMq0Bylj!%u`@HWSQ;iiTwq?3hM8FJ4BsO?kVBu{g_| zX>NCArJmr!-FgcGWUbX&w=}%9cJzN-?|druhg9uK`;s?hE>1t{w4;vAoa7|7BY)W! zp@w2UdB^Zj9-Lj``szp!>Gm7yf)Um z$>_7z7q^~2%$|z#6gbLQv~RvvsbEmBaeoxJSVU{mLGP~#*$xiBjxF4fEApd^+f4g& zvxl#@LHDOAS#1R=Uz7OW8#ah^-o7oJXCWfE=|fMuxx%(q+1Bo3^2||^@%Oq7m!}1CL4Ty}T||@Oh8RLyJ!z1-@O1ndQy%LEwkTX_M*Ceo6e1>Hl!T zak;Tu?yKidCOmrgCNC^fs8zLmIb(ZHL`^f>+g!fXgyxHn4mPiqVJoy^6kM_BS$LNu z7c(<2Uu;ulBfq@;Iwv^=9a}2{l|6G@8fURzl?pMu#2R~W%SztmSG%-qLJVw99ALN; zBxj>AIkK(RtW{P^n#DV{F;vEU)uOJo0U2+re~Z_M30hX_l}CDIlF5HqvS6F3|>8pG37kKJHOxT3(-zGm&F0u~Dc^FP-nrYG!=dht4z$wTX83x_y>tEkqk{uiw z|3x!PGg9FDJ4SWZWRdqOySJaTjtKamz0+k$C_@Vq_moI?hWCc2Z?N6@-fW!6DwkZ) zYdLxH?PlQ*{9o=Ui#JZbab>PgLEY+IZ2RYUNF=V+Wnh(HHs+h~!0%7ZjPShz;p{U7 zwc|Ia?_FQYc)LWpx+GlR(sygQ*_Ss(Pczu&YbdDPVw~W+k^9;`KF&wXt4l8!x*4?b zDz}7BRNp6gtRpoeM`QOzU9Y%; zWdDMz3=bvE+~ftd_w6{$UbV4aqEO?Y_(b*(B2QwKf;g1k>9jHk2|k#VVXG<0!aYTX zA%8v3snV*#;?Mu9Kg~7}Eqe2svyidwZ}S6#$P&Ak46#mG+CS_BUvX6!lv@8?U-Vkz z>05zos?t)7nzmVAQ#i}QoHy&}#e6-juYUfP?}gKa z`DY3kmOE8W6bCi9D$iA(`_S;jp=wu+qee+`$kGx6^(8sxhURIC#obMZGp#GNZl)+S zon@~Txg>i+xpaf5`U=T>Zed1^=*5lYiD|ZrIJta%r@w2xP{Q^0HLLY`Ety3UP96ER zr=yj0rn+f$@;-1}v1q5X7?Z5E>eRpuPn)d&l-+P(V7s5QJLSfb-~)e@gUdO76#Z$i zC|_B(?_Fu1)imD4;+)YYmp3W2hs3>>th8-m@_#9Ptmg^)!5vLv0xNZ{&0?wb4F9ul z%CbBbn-AUprr!8I^T3bT814}H1In-8Csd!v5;2WvoTu<$-7F1>-p|VG*=y&UJ4l>d zS^Lv>YiVkz^?}8ivzD=J+0gOf%D(xgCXDT2g84PvI(3SBwfc52Y^pnHeJnsi%be-- zxo?68zSp@P@JP@J`(U}Hg)8A^aQK27bL&!W3QiIT6f~Uk#->-?uV2>4CZ*W(@(0F_ zrwwV7e2d-p+!1BG!4P(M0#k^K;@e5zj-K%d`XVEgIZJRix1EfL&kwd{sY`k*WMq7^ zqk`YLZQ%N_<;(`Bf=OnITOyo8uQZshS)9dW&M<$%;$vx+v5~TxTkc3$JioDqiL2U? zKdp#sYwz;CULMQSmd-t>v`#QUO_Dh??p~%|zrvRAx*QH%uyJc@yXL?vaUD z<{8834O(harKP`^1ocdp)ISI+zi50yci>Y z@8nCGI$Jz|QL9DxL9GLK^!cI(dn9J;U6Utv{2;$WzHnlK`mWjs>oZqHushwbd2!hD zwVb82fXF?@ODmZU#m=^MevE^Kk{{@HfS z?2g6%7kTe;IyVPDwasx5x7PX5e8Ep>tte}g>k^~=2Ye^Uyj@hg_K4k;GJApkdO@{3eg7!pk#0w3yA~J2KDpZSKjolQ;P;8S#|q?9p{j z;nLEbW3JH^z`wrsf=Ot>19rXe)%K>F8l4$S&3`7(P*Ba$-qRs)gjdsBpp1`IeYQ}a zPnGp%RH>)c@$@fTlS^HcrRbl=OD zl(OQO;u%-W+cUwpD3sBK(VFp#-t6!Xmabd$8I32;nAdou)Uw>8a>ATYW;5n5Q4LEQ zdQv?dgo2x1yb~^58KPD9=6`RG_UQw`CH%Y(eQ0C_)@ZNO@J`V&Ej@zyB94D>JQ~&Tx{4P3rpABH)ptQ zXz^U-|JJAc!4=)iu4@>aXZ3~6k$c;5f&V>g(;Sl}zQzqEQcD)dPgusQuwcOyX;yA? z_9-`S_|B0`aIGt;d2r|8jfY09%k-u!xO?+r$(9`|DONiUC?)@p(D>`vBd~r>WT`o; z?IFt+E0KR64}>2vKalYxX>G<7-8x=brdC@o{nz4i&#^9ilkE7KJ^bjm=^^u4r0JX@h#O*pvIO~s*J)ankOgWdZy6*-oUbRkXda>o^WSXqr)mfuVLY{Rm6 zF29gM*3}G_sS-ICr)?4tzk9Bhf%jO4m^%MK$*LVkj=#@%#4G#pTvkWJi^Xjj(`R#; z?F=s5*tT)=y9d%!n8n?$&3KT-)F3%yIj`ZSX$my6+F#wN2g}?L|I9Z8-5Np8N63bU+>+2eZPWVc;K1_Z9A5S zg3M~ulnkUckznbE(LZkbq z!I_|k6AuQ+IA-#{5ouZbfk(>wt&2u%f6#(^?ou~=emrNo#-KcbdFir+hrY0!eErLS zIgN+W?T#4R1ip>(Q{UX&vDfP4B%7{XT~;ksm2PRl{D=5Od6pTiyjGWWi=%@_Uh9Oy z%dpoKTNR9Mb%))0tabDIx8DafV#FDpxK4E6>F{A^;*nQ8`|p?wJM;h7vGMG)xQznU zlo~EBsAXtW7i3$lUMn>E-+mZm~EB)_P`ABYbRuO zB=QBt2c5e3;@erlwv`eSeyn&oq4QcyDZi6$TVCR_aLy;kT75(B@&rj*NLl|&SSX_? zYQ33P?9OxEt}BmOdBp!|x3Bfvzoj$7k;xP7OX8YSe=y6kwQD~tGySi&rOn^*MP8Cvhl@#&2SY0Fdk@ZewV|raMW-ty zdKW&H%iq5#f5~CTe_4yUdEXsnc-HF06!7`sGo}@BMuB!rdoxuF6~Fw=$>O%}pUYar zzl86SBOk{EV|#_Ud|%zVzA$e~n{n|sfFUUIBB8KGF3 z!5P9h?^!`T`x2`z9}Y&R_VCLkf8rFFq?k&%>O?G9)q-yG8HZi7Qn(;+f!TfggeWcs ztLEx&Ea%H}U;V4Hll}3-sqHdbft;dQ`-#JB!nYW#4?6QX?`5}QEX)4?K&3fm0?%vn zM?ROjewM!GohYr-)-F<&$We5sshm$nDS{(vYM?`*z?`B6#g&=~sR<{0?mswqI#e?x z_K*JWog6h2bXzAT9G~Dg>4jXeW=ln(fvji9hmHkHH8+(rx$6ii6|wL)v$6V%FeW$$ zA4@hW`t;#V>4ZHTB^+Gbj6C6+vrjx1zWb&54NuRihL5p%?iR+U+%iPAe7WlE=pHh6 z&bNrF+sVsIUQ731nGn@qcs_V`&VhqkY+O4QM69^t!yanJ8S_LetAJs}k_#uigB6Vu zZVGJ3&n-E@WydMP^q}kfgLw59|JcM^_S#&$AyN^!#lP=H<(;)|zZpd1SUH&dqJMTw zsl5?y{bNt-hgUwIlpYjU-U$-02jFX$tkM4*FS& ztbZiyBVSvdeH6I!x6uwRUX2}`iqDRneY@U+;Qv_zfv+$j#J+x!BFQe7*YH)S(8e!IiO zRG!IubJqR!;W?MR1r{l)t>t*!@b%Kt4|OajFQh!)EA-f_eiTm4_**M2R@Wo>GfP<1NKeUC1aYdc< zyB~6O8CTM27FC{A0c+Q>i}5nQdcv*89?wy9bef3H)a5K6K2)WrNb#MFeb2T%n`zC2 zh32yvCbM@Mu8lkVWajJ_FFNDcgda@u?m061jX`^i!iP608caH^v)MB(d{dviIWkpI zvTI@q$KUXip+zT`u&yhrTl*ub{r8k&4}V2*@x3A<9X@*#HcSv-yGO#rRc`6RJ$V%q zxGjJBumqW={@xYd*wVp#SfGVzeWODdd(JGrr!E9;o%^j(}e_Bb&y7xiQ+8B)+!IIUK}nCK3BZ;v4U#utUe1EFGsY zp9(*c(B*MY`+leEhAkYvdlfBGd2_iF9zBi=US!gm+w3_ zQpl3K)8;tq&V>(-_qt@BB#8^mx|r}Z@mb)9zeW$N3`(qJl$kFd(iB)ag;g-&?d~1N zW=}G>K3y}0?OCg)uCx(jean++D_LI~{nsgD;kfL))ngs^%3Tg}3I<{~6Beqrn=|g~ z&yxA{`@sX@IikCTd}8iDNPN8Xvk~W*4B}O% z*sax=UT)IgV!Xmfp3&~r1+G}VkdPH3LDQ{*XKpKH=Fc;3krACNA|j) zrWmG;&;I>NS#5ptU+95tt_v0jd0SY0`zsgdC33u)_sWbficd@L76ukEWinlvcqII! zz-G6~PoLtZ$VBEXnbYtxM1+lb&R$lfi!S`4hCP9tu44ZTvosGjYt1VaE}8y8?6Iva zLy?&)L-{3*q|Np*6;F(IE#YX%EP9m_DJ$JjnfBg=xp$hwFSR1o1=?#YE`PYnw2rGm zk=;w!`t;-1VOp+l+O{^goR|0Te(m%s^f1rW%F`*lE&mSBnk>bp%$JkH`dvyaA*kl2 z)c2dr90?736&OmFH~a8N7%Z^vOo5OWnid)2*{~dlYCF#%` z7D494Q9A|N}DIkh2ufxf(vB|Zl^w|i~8P(U)IF1O=+d?h6A%&O4x0Vvpw-v_FP;) z>&c=gi}pRTop_{!wPI20dXA5oTec^7IC8z+YU!{ng@=b{!+J+vPLr^0X}7B;KN8x~ z&bsIF6#@H$&$o%PiWyn+l(TZM6fY^b{?~}Hj^$`t&5|`|6WnU7+&G?y*?JZ}K&GlV7p_9jqVfwz(B*r~9z5n=F zBTu>>NZ#^Yp?D8_GsC>LB`-L>RL*M)v3&LA3&+e!`eL)QPl|{H8#xqx;^Em6rK-*0 zkZhgspuj;$!mU1AYJT63EFTq-$j?iQw`xbE9Cl@WroiqYBDQp?THob)JOU2yJ|3A7 zb}eAucnUTAQYQyYelzEVE%(zab9-;GezD&UI#|zH2<_o>B zKD1o@!-plYXKn6Oi%8yzi`QoT^xrIZrK;uv4*tl3HkX8UZ63>}+bjnScH|0ta^PR0 zc=(-yy#WW0Wwk}cDOV2v2`@A_e#LOJHqE*lEOJ^PXr~CPL}r1-bRHgC!&Q~s-mL8N z`z?#CA}_S&i%GOUNn23U>AWcWz+}yt6GV3Kw0zBx%(j{E>(laWYE!rvA}n(s<(yJE z#^8Qk;lo#-IF_YrTR%ix2n<*Iv&zjY`=bfZj~@Z5W(5}}bR-|qZam0ve3`_hCPy>^^*zst^Ks7bNa%Rcv2kVt?}Ya9jqffr@XyQ=Srs2pr#zkKVC`)lo?_E} zmAS1PHcQ^z3~O9csm=G~A8S)*qjc>v*7!Ts0ghZV7krj3Xn(TgRQHJ~A=(GUxY`n0 zzx-}}`r!H#o|8fm0^9Cv4cBXpj6D0&J0hrZnTv=B??X>p+3t?}n;X}rv-CFniCL)G z{mX%&we!Y`TgQa^`QpEfC#E5$!K3|2f_@{5 zi2t!7#v-QWEKU<;ix^v98~U}+`c4#*j~6f?hmZewDqxxj^c_l{+!x7AG-DE&|_(5QS! zQ2(mjjK_|ii!SwX$tSXK&wll|^x3BskD1mBuC&&3*cIxZ+`U#y&tdaHg(AjF{r+Dk`X3r-!yNv&_oLJd4bB!c-u)~uz`JLuTq6H~MnRniR7)0qnE$MyPOMZY{M8hR6^CUuNeM3Hn9ty^)=dMy( zpB$WUaBU(>{-o1uJ9%DeY&>iraJO1C>{URZ?!VQlP1d(V?nfr5^iFU;zk%~w;QrWs z;lYy91;GbrPoCPR)^Pa4ivU)CY0le8x1twL^wZ8#v5mRuvtO6&bR&+pxKf@QXM zF?aoeBikf5F#o%}@Y{T&#t`Fq!OJh|3p5A3maX5P$TTl3Aa%{l?!4_vYrWZQtObre zFF3sZLs7lMYvx40(?9MVy!C^jCuL>$hF$L%Gug~o**84CAyFW5!d=$+)$C)<30&vD z<~s>Y+awTN9N^0=w?zG}c2htM^P=$YK2r|PKKREnRQsbhL)iw#+mUZF-p*s>_13l9&v(|&pass#Oq616Y zQ$(`=i{xyZB;3lEx@kt!!Vo`iBd#w$xXpEae1ffy6^C%|Qg&MQuVcs2Y_EU+f_`WC z2nslBItesMvdFZqN!4y!TKKW?L@Hx-_6;^&zXI+1!NrT2^Ys;0R%mP8`#IxZ`1~}H zcSmPkV#{<%b=dkuG;=X?YRd#~xs}51Z-QUhv8)O z)bxla(&3j|k+t^E8~<)LNNitk@!HMM@t)D{9oFe8bu3$qy_s|+SBTVTEQsVgha^d#hcdgN~oCpu$4B}SYYt@ zOodxm(Wd{YH&>dNvu~;W-+kl2xy{?AGoPP-PFH7Bkfy_pEq4!Z(QMfIeC27s+c&(A zU9u_Ka_$E6{opseletqQB98>VbaBksv4ySt$EScbGtUHu>*=)SY0ui_#g|-qBC()Y zD#be`^W={UjcNA&Vk>+CSN~#Yy4`)`;A2*m+nsT{)0Spt)wykBIIxCA^FVdvk#zp_ zkNa1K%yNr8ef~&TaY^_2cYL$-k1(GOR`khQz;lnMI8^&*>qkDeqYwJXI^UEMz@6LC>e zOo!i}pI1kAuUDJVsUQ*;b1EaNXY;8|Us)1G z!iwLR9-Jp=C9%3>)9UaJo1KYoHaBo{zxlED)$Nb-*)=|-e*ICV)&AxU=fS#iwhyLT zxL?~B+lHI5tk@#K^5p3qNj-Q6KxOm}P( z_2k>hq`BjbMS~BkbKa%}tPGqh&3H0A7-w3CN@O`daM;NrA;Pxo%kwL4JNPY&(;BaQ zZ_!g+`YrEgF&EFgOP$PGih2q68aUNFl}}ET$>nh85!h4KEi0ldq#+^dv|$>{BEif1 z-tsP-r}o7QlbyWNPDLNT zBAp`>GSN{^hT*>ekD778!QF8(JjG>sX5~y?Y||YK4)QhjGv_;;h;J>JI8*wDOR7*@ z@Jv_H6WJApCH9i;GVW3`N491$y(^k~{=DnbN#d`c>aeo!tc!~1&%8C6QO}0O!DU(I ztYv>BWE41>mSxW35%38JS(49QBi(Ap7RONPyt+wH*gnFe_u!?Pr~`Z~Yd4BaZ0Aid zw=kb(C}5^>GSoG{$>$J9T|5qnrF9a3Vrx*{@f>-kR!O}TA)!t_ySjn!6k;^D~wF^hPX_1bp-C2D452ExyGz z-%+%*-Cf7yAn|W!#~Zs+aoIVy>`N8Wjz19+Il$HMnp1U$!e1wYd(AH#17s!SMdmfw zg$ZBUvxUngMCcKd+l}eZ{68}@oNKOQVL!rAF=5wd7XJ2KOXSwib7B@s$PoD9z_y;% zWd3dev5YO(C%sKe5o+VU6t2~-f1pyp?s(irzp?-!WucU=O~$GmTa>=&MY+w`q@=dt zd1CxFKU+7x8_L)Ie6zGO=`v{eDNwG{Wy3RX+vJt1tF8Tnqz|Yu{z}_ZF4$dWslXs& zB=xRBgs1Vcu3YcRYh0z;EJ_;%G&!9;B&K_(X1gEeYG80s5YTuKqsPHgPSB~L?@ z1>7ykAM0lq}stG)Wdggg2apbvmzp@Qy7g?*$*@EHbfmT3V0C2b1CZnoH=n0x3(R2mQ?p)N}sT#zg=!$fx zp8TPKxqC}wjR0rn6o$fg0l^hBq=QRK3~Vo57P}W5YPpfcC5(Yr)Gzd+%-X%vZ%hk4 zd0%SIc~x8AXpbF-nGR2z%(!3wZNH1Im-*V#B4%rW*rR$cUQJxUQnbuwi)_LHZW*OA zS0CxM2dkIXPPxFV`An;fv2($L*o57k$^&k4j`LbO(96oG! zl0M0Kj3Il1u!~6lF@{5KClybGx(WBX<|?Z5g3Zi~nwo6T6WpOKf z%s!uYg@?__wC@JlOIh2G=v?~mYs8nafF)q{x;4y#J60d~*22KH;fJ4nYk|q{5A_YT zU%Rr@nA*6$c^3p_|4RF7&=7F)%umVXnx>AYWF<~Ftc?Fu|AE;-MBzw#;O?TPGA34^ z-P5ZzJGV#au91;@vB=2NhE34qytsuC{gyCm2+GhzaN&sfpPzD0Vnt&81~Ih=c0mXvw_ z@_74j^S7-(O%H!+J`}{d%WH<%m1=R`u!SKPwyxM-v3<#`B{f^$e6a6nPF)hc(oF8$ zg(sgDFi5E`n(I5G?_$T4;LLqHgO~8Vj9zeE`Q+@dIgUOp8x#-zkPN?4#}cvrq4;I? zi!s+)d2|*|Nb&WY-l!a~F4{vZ_%WB9`AXL{Df6?~4c%P7I|>yjt~53FiL2vso+4py zQ@h4jfo1o#1t!}YBaRCk&OFI_!j|LU$}knKIh!9dm#f%Xh{oN{Ipf5sXkn!~WufXM zC*S3ZBsP2(>FhrK{o}W;lI{ZOYd_Pvt_gOSa{ipDc5hj$@H-|cd)|j@+#>(E?Yk5w zBO@U2KZc31OOmPOJ4=J=@uFL$or{A0jSf!@O zcHaN6iP^nsvz>DD^J31-S7P|V!Og(Kz{IY~A^wkpnUkBFiy?WMkpeq&rWDVftOatf zucn{m^5R=C@z@*&E(ZOR)lYA13jB0(hZ|S;r&W(HnKU%>vZyWnXt+T!==_y;RT1?; zP6{g;+{0_DL#5)@y6)iLWBl#>I6YkmF-=l=LFgSF^sh|mXSlkbv*_bj)~0LqUl@~EX3Y2Wl9>71VPc)Z z#J{ryjBYaqB)vHJ?DfrzwOh69?w2Xq{Y#zZv)aq^*cqckyoXrl9lWK`eSE*;ZRV8+ znH6>|zWl4fMuPFcI~~SGtCfWhaC<|mEJ$0w#34?QIluMyH6K(tY%ou*L>h)$VASt8Pfi3 zy#3$r-EQVvskY$MV^2RRKF)3b85;!;y)!${qGKH2msqfufl*gwmBZ@{wZu#BG#L8B zB+B|vHCX=Md2U;Wh_jQm-iagMf{JQVm?AHEMs!zB5m7MPAaRU4jJsvd)z`6;#P2Y8 zU;FUHL81TJhZ}rzW;!(Ny^*dau(Fjie9F^`MuXtqIs=wXLQCcueR=&Xs` zd@u8U8h7aF_U(8w>858%k?M+g70I0`Cwx4Nsuy!Amq}R%Dpe*ht5B|9Bv$5M85f=F7pzcw8hQ=SuA@c6rVm?Vro!I#@i9 zy+})B(_!@U*l_K6v&-ioruv>5PUbFqk9781nt3(%9W&K=+{$WRa|(IXXYk&-7kSb+ zW70#0HK$c99b6Xr@h zLsnt$n$=sktyx`R@I%bFCWrBMSGMNP>G_@v96{wWq6`PN9_}{#r6wl5kk@;&o!jby zA9mC3m)Ka!Zuqo0f+48v0sHN~GrG!~S_@WZh@89DvTs3Dx|D%A?*o<>cHGM{?_AKk zV{*OMziIImJEp)7vcG*EJgThG{Z;>>plV-r??o-mr~8(2_B1ufmHBMU{n@{ z+F1Q*GDUAI0(9MG+-!+3iet&&^wBKVsDP!^;`kwZN2Z>KCk%Q^rLX-cJ-O8Gc*BJ2 zcPlfv@0fSaXxQYrTEcIcO7O({Kj%psUJ>Y+aYrvm?n&p22WuD^=Pc;#IID2>dA<0O zmK7bd9A~L}RII7lpfRoPaOaATcLF;8mlhNs*dP?x{m1Z9?hb*prE32Ld^&O#bY}!x zSGM@iDR42Zo#0Nit8~-iZ`?(0D>2x9pF=jXPSIzr}VZT!~jXusDnR z{++ZF!GV+f+3&LnNi}*ndGe~f`d7D0YSNMRNrED!f`0qo)x4j%lauR^qeR-|Eeb3w zs@aN{XY=qfoW3i+J5wN|q+`N@E{^MLAG*0a?MmOjDxJJ0z2OP7=2L?sB0AeD@Au6J zh&~jVHS5P(l_T|RkIf=%dTn-evxn6R3rEe}!N#y{i}zv)rhDcSV*B4KYw+}$G`6Tq z?BGq+oy|VuuD7TAQyZ_Y8xCuDB2?QtLJvMavLexRVc>38??&GnB~~qW_Oaer^v7DJ zR!^1_9aw5k3iFL_Bfik6MkCjcX%4Wh%|s;23q&MHmz zKE1b^&JlhF1}~IfdGq%s%0GDS&cM$odw6};%Sm2;SePYOOyjHSo;&55*qj$E4BJ#*v2%)980g65zfW=y3uX^Ws%CnBFe&*uIj7v*Wel*@b62-TCj5m~Qisl8Ch>0+%1(^T0Ni5;F zaV+6xwyAWvwYw{SN)G=%cb0HpIaalJ2JOpv&94n~)v|A!m7m z!>LlIR%}v@+A^n(yT)88uXFw(U9Xz2oYhZvH}BnW&g{XztUA^ITLn+aD9N>ixK7%m zuBWx5D*1q}Pv@IQYP!2kInMD4ms+#c{+s8pXQ_;`p-Qb>_q{1?y()nW3cdV!EHypO z*1}PF`uDy2oL@?dw&My8rb}$yydobng}Os~Y-+acT+qPfGvl?4%r{@7c^n)p z9lkSO^I9o93jfJg!`sE^$TjmdpZ=EZmb2_w)@# zRWRN|oUV804SZ3BP*!@8i`J;oi@$HcBayx+yc z?a#JuN)xZrhyAnaG}+r4JEuPB>Q-f(5v%d|qqG|L>}0Een(LKG%xiUHdRRK5FNaNh zoa=YwWYrSedDbFzUJaWYvJ^ zD+=%U8L9B$=7DIpr3D`MweF{jt+8Gs_Sxp%KNqJTFIz8F%BAqAG=AKwQKN9C@nDeH z61FARwsp4LTYhPswSL*|w3HjSL<@tlxRrXNpsh3$n zJ1zz&nT3B;xV?int6;+RMb}n6`MaZy(%1!=+whESC|WL zc+>xiJ)7y*^#73_hoyHanrd$1I&kRyBr^f_FS~l{{%m83*nW>EEd7^B?h!>3v*$Zr z3s1lD-pk#p zbvs!qc1Unlb&9As2F}~C&#;u$IpgC)VVhN-GB16aD7t3tX<@EkVu_IqOv+i$cJMnm zJl)MQt%G9+gTnVZtN*6FTSeffuh|@-Ah#zA$b{bd1L0D_N5`v*b^+ zyjHrixW{IP04K|#yOF=_0uP^^qW$ahzt)|+jwP;l+2~^@7$iEv7tmRgV+CE3IB(=aqdbopJfdGvrf`*Oux9A%chBw=h;EirE|I4ca>Ctrte5rgG7 z@y>jOQ%?Uc^rWnGt+oDId^2>bI}cxM%+!?|)Rn|I&oLZ5@I~lRL;NdA1+jYuTTTfa zcy&h4VjqV+qyO;(+8TOdK@D;j1T43D{8=FBr}yN|dp7G20uF-zUNDvFE#%v>!&}<_ z*^LWjzu(0*Hcq~ywB=2p#%}h^rhh68tn0M>|1oaP@>pB?XJ3GNc=v(REMf6WH&|c1 zdq!!Q!&T-|=lO|;&+W@#R=ilE7peMRctyHn#hd+>Rw4_0^#U()aWKwd5Q$2i+Aoml zH~ss2`6n5vcOQ7%&{@jCuw$CG32X5omX{x*eLgF^6N${_34VJw$YWs|zsA88Pjm#M zuB$5lWMHz@s1V3oe9l&uH!YdlsbB*q$fs*YuF*AI{RyL zg01u#nZp{)JJ*^mncOL1#U;`y`upe4p8}n-Je{T-owh7#J%(p4+pIO<;Z>1knEx!Z z_varT)gQWF<}9sc-_ftp%|n`?yw5GeT^KXiTEgqmUX0JNIMD zKkm%fZl1t7eLeFXGie!a2>~ZAn*(RgT>4mRdSE%{hB+2&z1j~N9;$IB8y-Nuw$UQFIQKyb_rb-{nq>@k4$t3k%-BcoSMtt70}1rYT~HN}yUnec*`20UarML0ZpN*_H$J&eeOfA*nEmvi@W(la=X6`_iCkj5Ky=TJ zJDY?!gp~9q)qE)CuVL`MTF+!5_r2(&;*ug`1NVZ0=PWH-&M->)M!6r&`b?rXn`c!V_=w`}xLIuKtX@qkVKU*`%9Hr^U<&PNu0$4!3lcRp=t zd&e%E(ePn%_J;FJswI=2>8eZl7q1C0e#2p%rQzgNreS5aC(-Qd>?Tfw<1-I$W}ML) z%^JV=*`YZP^_Qr5lq4&g>rKxu{KNg@%bS;-SGYYIM3#2lKN`N@@0r7Hh25bFN@nW3 zt^4E_PoCbmZDYOKV+1)7{ zD`j*mTSE0@!sIu;c89CB zxOoQgF=kXmv)%60$(%Ytr1j#uuObVBf+e^V3Jc0O91|zish_A)FUb?B)0J#}`z?WI zZfMjb8Sd_N%=f1Wm{=7ttgl(h`S4!Nvy%rp8n-&!JYEwq;e~nAa^^4z=F{=Nyj?A$ zIxUX51ao!7zuJ(%@L@{0zz4HKb3$bbw3n}7@3Uf3X=*RnY^EYv=PwYNYIEsWN|Yp%23w%)g^4`m_;nA;? zY4P`CbGQ8s`~PvrKg+r$h7-00e?RbKc48m@f8Uec$LrKrdIiV}SYNJ9dA&r=Y{Any zw$8gUM*uQ(WE4E^i->`z=gx|#UkdJv(7F1@9oI=%U})LRB!#?q0Cmk z=3-BSFWrxK&6mGC>DBg2^J1Kd zT6I>=h?w?BqE3E`9>=VZ5)-*dzsxnabRMfWFx0$`U3thz@9sf|J}$30I?;B)6K=On zXO%t}yzQ*OGX{U=#UVw%ZDzIvw1~vX2;4C=<5UpPs1ujFyV_*c-k{dn!;hRl9x%Fl zc-f%?HahI4DmmZoi7)?hMlSv=+m<@X3GcQlD1@n;V{CpaT^4qLr>W%j8d=ej=S6X6 z`0Vb;G^(2#xzFBE^GT|kh0kcy#sn7mBTF_!n#8{=Xb-8*meBsVLfFji&JzXgPiiY< z!h%!(Ui=#v5LELuQLMM!`1n;evpoXguSHI``oum8&_285yY8_m!Un9p=ABEdR}?U1 zaKx4|nH6kM$kMpqFlFk*`qZq)3QN4#eS0d#6cj0^!pNY0n!{B=dp=Xp^Yw~CZ-SYm zB#y=(PGDt}?>kWE^NWGGX!@;~Ki0?VZmIaIE>hyQb7RRraKLHd50>5QF33);+1;`{ zp7nsQ3*$n~#qCBR0X4gQZXDJ=d7#&1?}zKm_xWc@Y-Mo>>}1;{E;CW-!|AJ8C4L-i z{AV)NIZ6dN82Q&+z9_02=*d$mm6@*@AmSOtk#Tvz*OcRu}?0|D}~>Vws%a{0KnLIYic3>JyAsm?O-jLTggY`bbZVWqzQv18wBPI&BRTys`g z>bcrNHx@B<<_lc$DNbKsFe+Ccoi<~ctmliO|H{WIu5L*=%OP;X^Mk;Sf2|)%n6wWq zbr5j4;>R|%Z>E!hR9$lStMIg_gNF_jL~vy`Gl_~xwv|+JY+7ckTBE`tqWH?uVReTm z%e^iB{hXTLW9mZQupByUWOql<@|Kq%yMP$a)N2gfc>#TauWm<7vJ2#J(&MPz7J1Ev zLqvNfmw^Y5KSx9v$NCC^8Wt_X#`W{mBkOtC6oX5JGFUt`_$#;m=F;fnQ4UlU<+=Q& z;uO33j~xQV?7bQ7Kd^*knM~ZtutPybGuY{| z<_rdbtCB_H#ASigpb=RZg==#F*bUsQ1M+Y|QE{H&UFum7?>3b3&baHx&e zY2NjpN0v!UVN1n{-#QTjE5bO>ycRaQ;wq76!+5}sfhk{-&ETlGz8pi4R^L+&2JTlP z1q(UXE&e3-vPF2pqJrPsl)iq6kA3$cLP(VL8FTggr_Y$yUJN@M=@ymu?ySzA0M=2}{oYxEvI%o}~E=6%QomknS0>m|0XV4S03 zSUo{L>`&7V6+07|pE}*%t+RL5#Oyq7Rr5IRfQ--qoBzK<8a6yDkX4EaHf~ijaPk-E z__0TLFKBfbwTf3-JsW+X~wRclUi>=s*`YkT|0arU_K=+UpX2NS9sbKQ zBB^!DuP|)p2zjS2I%ak_xDYJm(Ay?D9%Pc{6n=eh0cJcf>_dSbQe~X`mrMrlin)htEc!@1} zenQg0-)+_=JNj&0-4ve0B<>_4#ky$XgoeCdTNCeQ`e^GPoG;vPs>SDlo4D6SsbfoK zyj#qBn&W54Yi}RP>kbkE`2xF+>v;)r3;V`&tulXBY?69TBig@jwN$^uE2D39S(i?H zWRahr@Up>wIy29OqlS~N{p;te;}Kvw$0^7dVI!Hq!OX72%5Xh?b?K{>+{c+5!kKay z>u1~M9AD1QRm9ERtI&E%;nALtY!%yC3;SbD8;yC`?)*#>d5|#e7em?#@e30y*i1@zJY>H^v`-v+J?XlGq(w5@qq>(E*0wx;lGBM%|e| z_OfmHa=@MEq^sRfhsZzcIx4YY)h=|lmrRcmo#r%gO_Z9Qu z?mtn-Qv?L-StRytSo2%wsYrwddzt%wf0-8t_^N8{w}fqXZ9Qb>to9>rop-_U%*CFp zEIXP0v``8BO{xa7HED$CwGHmmL*d%@}OxFm4a{)=sn?Fy_m z{x>d6n(}P2iJZ-b$UljW>$~~&Cxu3@6cBl$BB03EZ6s9T%O}j3;1YkL*H&poW6X<( z^^@3q(zup*>h_x@+p+GEdgsrmt#H`-UOnHfcN@4bcrTmfn;l_M*X0ppYRAd=K_H1i ztJ|PPDk^fWO5k6y?mR7LLvB5xgEjjc7`m9*E;)!59**+}2)#3-n)8yGM@!A#1B(vu zwGPe5JbA>BpP<%z4b80z6L2Z)256-fAy)*x6pHT;#a>#@g~3HG)Cz5~cj% zRb@R)nh6|V6vFd848l|0O&&4{eE1exr#YGX$)QDg@5=J-{oxnsEjzKE@rH$h=oAIR zIT>6_8Dv@#;y5H#SpP4SJg#0poxs+nD81qCv5eV5MI za{s?fBl`~T;|>l#Pk%A{TAwVQC1VsgnJ04oVHUQfH{ABMq}_4tN#OW*?f<2Wgv>(6Y?LN=&TIGVqYtc1!2Y$`s_#oEl_b*IA zfmLU56Dva}zrDcJ-z&$szH~{)eD!Dl6Dn_N%~-)3kZIQJy{by*gN@2O)?lxtuY4Y) zSa9St@X41rO7d8VYp|7ki<|dhE3chLoxE9sMfiW-YYRTk{H7Rx=u{)CsMrrhzkt&L zIlGn>FmQ%!sM_Furo`AGfhFwS0pEg&J+Dp$hB?Qp+^$pq>1Wd+&LI(RwReZ_DWUmY zTxJWUTNIu+$=5X=ShlX`YV%K@a@AWuBZV$-aHsJ2?9}8vcuj{x=rwP2!_J)?uQ^y= zGv~8U7FzYJsr1<437>7wSNqtqSr}{THKc86*~KXMO0SHONs*b8g~fEK-u@ZE3y!oH zpFF>oy=0pCjhwxn2NcbYmvRWM@voTn;G4TaZ0Ysls&04IeKxgOT{8bGojIrSrttHv z5L^>}i7{WRf7%MAdH$T9OI<&2>2mYSIqBzP$g6GB`k{p1=!+bOlXJ~ieQvloN%yc&!)~mo5S-D$p&Pv z4f(DeP&=VlIZBP~{WOL>mf^?ic;-r&NhHRzh41z0)pLH~=*U>XAm5rXXORcbhHvu> zJ{+%8I4WiRqxOvNk22w$nqMtEZ`S&Ylr(2VOgOmgi{iyPqiF}26n40s+qhr&k;!_6 z)mw(OWMf8--a&P%or3bjpLItnW$8f^a4 z%XeXsbwCOCiX8U6Q%zM5GzzQ`&Sy}Zp2op+@$HJLLe*ZDlCvBuHZ`8@zw~|bq!j|f z%mNbP+rE0U|F|f{;nZzvobj36MWsP-$H^2koy*6xwB)}vgi2W`Ya7T5v`hbC3TCh6 zHeVAT`*o{P2Hyg%oxIsG-3coGf?Mj}YzZ%Xlf&)(vy`i!OX%S4-r(MN4(5p9gvZVA z|9v!Y%wQ@zDKMu&SRlG}QKpn@=DZUBEeG5hXPF1gXE?NF#_#*-5$rpvYYUmrq_dNVKJcg>EoC-%*A-zXe^hn;KJwWBGw3r=olD0&>`mXPp> zW2-=a!T&g}?XQ1yiRgC-@-6v&$B|L^^QM}0-(#7b6f9z&USFN5wby=M$jJ#m-%1sn z402k}{(bIB-Xd}FuYw;~%0DhE-KhMrvhQK}*Zo&+zxiF~y5F^tdxE#A;0|x0^;`FU zKkmwEqjF2x?*MzxYHybtClCCr^Y4lg)T?~3)c(GgRgdXUNB(VxD+LY+MLgx7#@!tz z#lg;Px5q@Pe)qEOgY0#&{l^Y!C)$5=U=cX9(0>#E|9JjQ`wrRv7mX|sThd)#P!gMF z_U4k)(kqF%XPk|F^alTrae~Th^H`(y1S}W%~7cfrU$W1b(vF${uDC%6~XR;;ip35&d&c zOLsc4Hm(Q|VP|qscp8b@cH$rj)ci$4DU zgBp8-P=KML_-u{)SL82TP*b%mGauWq|{eW{ap)#I)cd&~lSq?VQ9Rdg0Zt1Pg;hT8hl~GF%*l?T>A244+%dbmzl%SCfeb z-;aKC7i{qT5*I)J(5?pcuq+SBXji6f9!fj^HC|z1{B4pe%a+ZeqH)>8_p*+GiG|Gp z!#g1khYlT^5aV~o-koEs;XI)eTf55taaiRjlLQ%#WkEXqMj6cpW*}*6(kGtUI#ll934Q3M#+-)u}Ed9oO z_r_r%wQE9FHKMDzRQ9iVQ-5En!Q$aMiJoqD_NDjOzv*QOtYPA0U_}cgd*b`AAcS6sBt*J-S)7p=pYAU zQoWSZUiPL2?{K+08V7swTJ9Qn9!g>^-XT{bz~<;CP|KOe7_aa^N9TEPl9w#^io6Jl7}9%%FLY+(0J5)ZA)m}A?pZVF)4|L1Q!PFyqkv>=pV4y#q#|wo7Zbb;rhiN zlX{&V)rQ}7|qz+O~TKW>|7(9aP`rU--cJgG^0_ z#|_DC&lTA<-wJEIKC-a=91k~N)2n|%EF2OK&I{aBzRNB>FYW_-RkZjICzGI=wsN{Q z9HupE*(a@W`aA7J&5^!@TjG4R>b)lCLnZBBb8{LkW)fRBMId7~(?MpHyM6qR4n|0@ zyke~AdlMHNWNb_~zMr zY-i$b9KHAX<|+Mq!dGrQT$TUtuA|=D+21tocm{BJ7~Fe#hf_|$;puOmXbuib1yzj- zHkAm0s;v_l{w+}ZQq6SpLHdD&C)euOvbfeAnRkt6%VsmF?K&G{o6R0YDeTrbUKV{> z#et*vn*Zx>rJHA$3;1d{aw>Cp-%)%k?NMqlOF*D7cGvcAN(wV&G)fij&GLGE&uf!} zu>_xmMTCE1NN7a;d$T5YklKKqkqm!?%c zx9OS8xWeddzamLGSHkRs(Yagp)A|nHk<(7-EEHf7c@nTOQ$nUUXcsfH&;`zWu{D=X zTxZ*Uj_HhHv2pOdY~t(U;S&%NVd8t)BqkvxBZtM*_i{l=Ma|BbTg@-IS~_}81sy7y z;JS?Mg6pn>d&B=sQ(V(!`k%*uLHS|4$Q9u;pXG(vYn&Nc`(|Bb*j8&%FYqXaF?Vv? ziKbuOr`V#W-et(*WZrI@Uhg5I;qXH$cyU5~gi2|!LY8mM2f?_;12=lh6|$vd(ppY* zEpd>!b4=BB!t$L41{MaVcpu!;nP%bJXUcXff7Z1nGSPS46K8-Z-sPapSB^NA+&YJ!b9PIu7^Fa9G?sdsB_~&D`iC0v`8H6$GqlzWFJE zx%p&qXNiBYCo8+2i*0q0!@F(F)_d{}Pl*1(#p?h1I$w*#2RZ)E?e8VaBzf+CFHJa{ zz}|eak3n>9iKz6P=z|iX2Y1|9GVAvC_cu;*+&sARj(^0XJN_0g-g*D#U2(Z`^J%9F zqwV?3Z>LE3?Ui0$d2XRgs$>7L<=G4B*+ayFOO^`S|L=|X-zHc8DVn=E)}XSfeb zi-EEHi&RJX-eQr;32Yynr|r*El3{zelWRK5bE(Xe#@v%RwR=voW)vLW*4AJu#2V38 zc+A~EK5SoF5Bv76h^rhdpAVI=pLNQdu+p-ANA`#MP#NtSKA8;XAhszjcSEw@i`dv+ z`o7=8roOS3rL3qlxwOnnUZ;^^*EQkn*=yqXb5A_K5)(e@#IaP&zzsEdvay)nAO@o(MUs1UE;vR!c#3ASAZ>ApvDpc=qC20J2 z+qJhU_eH0>$la3$(phB;sw}nH(O&g5_-Svvf|JymwauINN0+YbE%EIM zy~Qmjz+Yk1{e7#n$_v|s1MdPpKAftd6MwgJ;!4%>?u38mKilM=W0TO3(NW+#&Bv~| zuqb#=G#lTBWiuz7t0_8VoUW0n_GHP1B%NuQ;=+z8vn7mb7Th^xHd}G>=fT@X{i=utPahdtIIBfkjw=3|e=KuE>xxGrn@uwe<`v zdoJzCy&)%XgD*m);%xwq6tOaZZ5_BuL&zRn@*0i+}o6{&@Z)W=;AXIM7ceVnB2?jE2W=_p8 zRxIp_n;2wp!a$^@<=L){1}6*(brb`q2@pOiXm~(n-M$ z1X&lYc>7v&9{cv>$p;=ZA8KBBF5oJ|Rb|tpLl)vWz5f*U@Tug8OL21LNM18~#8q(E z!K>NgS+n>?al;L~vUiT~yxhAcL-I(5tK^?;7TexAhpKQ?i=}(BU)%gjpx-X>pze&@ z70b3MEmV5LyeDV%j7BT9=-c(n~n(@+?vHprh)BKtZ_& ze%`-diuG!j?CKVl_;k!xg5yNXolj4cVz!3*NG-P4Vs*atN?4-A__5)hP3PWe>FSrN z_i*uBFSxVui+DuEY43TR@-CXGp3`q!E`5JFX3{2C`*qC?!Vg?m{cD=b$yUHFdYs|K zuDA{BWYEUUsSZZ6;6eXKXmg3qC|PGF{mzyTE@u|IJhZS%IS zpUD-(Xcb{Q??x(sEk!?2k#axYoKHUdAnW=E$rcS&M&&u=rR^_il(|nO&;b zr|0ncx7f+XK2=%vc7aaSrMDNw?#xV@eE;hb+cV9j0k zy^o3ErpX(4GIns>;d+~wx!j=gxk)WYT(ZMkw?k=fFLiy0Il|TQpxlQ0LgOpQNKqoWgJ=ktyiKp|eIJ`xb@s_eU*NG+a`2*6j$>WfhsXK?;*gSX>Je zKQcNB+b#_-OK1yNrZ{oJ^M9r}bN2GS&N)@I)JV)_F+=kM?ZXUi9V{x5SxhUvQ=6HB zny$=$eem(Y*GCxM)co+wQs7$h|9WHnhh?g-w3!=z`XYz zT1rY@Rn=!0!vzECOWx#oDDv5}W_6#D*ZH3{+pEgfp6S1g_Kh>^FMn~p)%;)gyO|f? zwt2TNGu$-&nshuQT>kumWoiqa8EY&GHFuyraDa76&g-;A@hKuZZXHbHK9pvAMA2ExzHMAgIW9ngOYCqt$U$meZjPl zImGPX%4UU_43?RjQZ!ZX7M#9NF)uJrz&V1Ghc)l1-~lIwpRN~-)tzq^O%7d}5f$B_ zFaLN!sQiK89+%$27S_Ii^Ak>#pS*cRboJ%V)hlz(igX`H=;7qoh?AC@!pbNs%A!)l z$}sH~+qn}u1~SSjVN3H*)g1C_l&jJ6krZUx63?i1$RwJcgu93u58T2p(KJB2^2d46r>y`4%4QM@s7EDSrM*e}kE;0*~0 zViWjt;(DP@r1_vWs%H10h0XloC7L~{p z9B^dcP~iH>*?`~St!#o&o}*8|{mYkM)ot?3V?87q;M*Y(@gPZvQTEKb2sJkYruSzr zN=GBQ&<>L7ZK=QDsuHCn40PptpM4J>X9f8{w|9`Go%3>K(QYW|tc<*G1LOJi>6ui>@_??)NCZmU^wviC?hWi$iSYp=fn^9Ea!Q*jn zhXJd|0}g*4##~d=j_DE}I#){<+%6xWGNPsepUd zhqmIhU5i-#(j-0w>O1TZRt*i0_g4s7_Ice6hJbH+3@vjU&2vB5r1j{OS=+lCB&@v= z=dyvBBV@xemJQFdxAUro1#t<41@eUDHSSr$-&XqKqlVrSC&Lw|9shf`O+ILvxO2n7 zga2G@n|1y?72dO6$xkax)JTv+m*Ktn!Q$Bzej(*e+jpa`E+pek|>8R6myR>Ad4v8ohBxXnl%X`R-b#FOPa`1uUhGyZ*kY z+_FDxo10F!_4FG{7U|T9%y)5|H7#N8EFMWwhgqCAW(Z7?R&=lDu@@6P?-+TeVpo>^ zu3`H5*|9aou};suWG`!h6iTn#o_iKecxSXU^a{_#Pf{D)vy z?J7$tiQ*#)oEB~;c>Z%-zsbL)lquZpc$u@JlRB%gT&)-*@NWo+xh4V-Q%MLWuQ$Bm)r}%H(EK(j+TM5gB(2tCarT2N-->T zU+n$xt`k%30#+lF{rY$OmvNE09gyUDQmc;7p+h{vyFix21gW$SMu!oI%KvMXPFtNi}U;g5T}N+g79`Ly>km{c^N>(xtTX35u+YY$rjW~cO-niR`P-_-cNjOzu9-DACs*`N zrO4!>6M-}1t{q_eFrQsuX8F;d8~Kxh!$q67?B)t~l-nq_E7f5e$A*hReoxdTXE9#e z$ocPIh>4}*i+{rL1nV_kt$YZ1!%&E(;m~~t6A)DQHvh`gJ%52UJ zr`2M;!o#fg*e9o$Z%|US(b0S2UgqzlX!%CA`50%ITFXK<9-oS)fHZ+aUekO2YznnM zKHs{=Les5IFKoVTj`|MiiR@0_*nOBLuwC02pv-)OC$jV6Pp=CT?3<5sga_vb6^Pww zV(bdmd}5?HJ(nYb=c&UxHRoD?fj~Wnbv`FVB+Dhjrm`13WeJxFde5NXSYWPrOEX_3 zw6afg=Ch*=mRAF2d0!Ub*etRtM{(hVM~hy%GW0OKSUpwpM7I1R?Y8wAC3Q8W3}r8T zC0bJM-3(6XyS+L+v)ifHXG4?bm4-c)A>H9Fo0tRaO*^A!o-mM06ny`Sy~AfypTCAm z{S^k2f{2a#I>Hy$&-qj||C{qX4U@oydwFlHTznxwJxFGu!}0iNnf?ju(>11M%X`V> zYO=d=zVxfE)%?UzE3tCUgj07JWKJ+B7%5KY+^jM$TuAMSMyGhPBmW|u+vUO4`4Ots zI-zB8U1}mT=geg6)$zFF`er=oo~oYCT-pm^Z7Np-F#*+2MYPs ztYK5q*>%m@H6Txg{wqbi4jqrT|UL3EJ#4{Fwur8@5c331u@O% z5=-e|lVu7Q?wS3q=2C;2>q>@{?yu2tC6R}D*0AOBr}Ne@3g7zBbNsLTj>*2YUt2Di zD{Rm7u2BkS4$7)=xOX7NMmZvj^;YDx4{nyNC5AN(2k&3usMBik``^W8u;Fq@7C%e0 zpy#(k!R0sOqF-<=PJS8rku(1IEuRw&cjhoKGBeBBoiCTw;@N5Uhk>~}?MH&xYre@j ztX%pID;yHIe1eOZ_nIb%^19z=kw|)R-kirTpllNVF^<5n5{cNuf@?p#JCymtj{QmO zC$507Yh~P}M-mo_N-vI2xurHktjBDQJkRQ_fdbw7cJ-M%;0nI zzp9Bz!hw_x?2ZmTerhi{965}A9tbMT344(C;NqEzMVEuP|5Pjr(%3LTsWM3T(4hln zIbAh-^*9bQ#7XYkcTlKc&!=w!Yg!5!+Dq(vF7!=S&|>8})W~4^quoc4BW~9Ywo~S! zA}4lKE|_6DtL(>RpJV0Q_aw^w;i(7=ev|V#qlM4qT;2cDgoTHXm3q2sZIxZ-Za>e1 zBReu^x?_x_Yxn*Rj+MuMFl#h1F&25<2`klH$8_7mPbRI`XC`M;mU6alP|ezA_gPO4 ziGP_B9L6NV{MO^yA)WA7=HAg+4?@qMpByuLXXt+p$L^fai6&Q6_0t|m#y0Q0V*GW6 z@a|%7;kr+uuU+19@+3@1pCA*<5t|rgRI+~?X9|zQL^l3K8`+kf$k%pAGMzRjGd}yW z$wB5#?Fwt`RsTFsEE9et!?eS)@3Doy*%t$=h1mwGIVzq^hm}++qVwe#TGk6UFkhM= ztM-v=wKGp&^(iI31sweuuO|F5?c=jN=y9NP)!jvUHD&>_68|-O^H>UlK630SF^>!4 zv~8W(be2KbouQ$*`C9d>83F|jQN8S!;*9zFOLshAS}r%^1?$7!x*dW2ua$UBTQ6*# zV0q)&*=2j{*!aV&Bb`dh|8#{hT4nIJ`v!M+$QqU0vSycX=ns6pzcuL?m$f6u8YYP< zulW{{9;)`gR<`lq+7zC(gE>QW(`);{h@*))r`^vVwhi7>W64{@GQqE=H7M{k_Z=2q z4<6}Ko0qBwq3>CdO1q9%AI@v@$|D-RM{?uvRGOd1#`?|l*#$Oj9Ge4SFmz#iK0-1c}(Qn zFV;oZ3g$NlPx}7b$-+jiD_3K>t^9+$#J$Blu^e?q*Vkw7Sl|}wsbU`RP&0n)z1V@I(s0V z!G4bOdA~J}!UbJ6GTQBKV3Nt2#^1D9%KFRgJtF_xXBb`&Ug;prTcP96mQd+->wBuy zVudkPJwUNbNkX)hGK`sv>4e>Dt@NzQev zPR#qg^GD#kLxCH@H<<16^{$bDj%+akOf2K1m;K~pdoTK_wHq6CdGA>x4?;ZD9N#2r6hvkK}FL*{&Z*KR! z%(If^wTEcf_0!?Ac)aCV(i83pWPES43;bXD>F?48CjU;xDc#4amS{##mhTkVkR>~p zJ-Al;!NI0~8qJj)4A+l5_@Ht5_EqP`sppm!e+aGS<5S=bPyU#CW$z}{%EIv9)1`c; zo=tg~#^U-^`#`X_AOH5?Vxxl+el^yi2RX`krDn}=71!Kqvg=r>W_%2LoK#(G#ELL| zr9}5$tAz>POj2eN&i6b`6IAWO_XPCTacIZxdZX`>6TiVZE}A1-+kpB14#xGe)&&C3 z5BjsPZ4+kT3{B*)-2mj80!?@6B zE0bWk^2T)@+4I9@H>mwwy;}S=UwGI<^$)i$tcWkYP-LIw%q|+nzi&^M8&lRE#lQO( zurjB}X%>4Pe$Y|E7Iv0HV2Lw7YuNqABK|7(*n11C=G}U+$idX@%^~|{g_GOO+|SfA zGKE(J&U~1nQzgdK>rgJ!ePKq$3FpFy!i0s1N(rxd%|A|=v{i;_$Ca;Fa#w7B!7dmo ze}{eX+8sCl2QF1OdAwXUgQI|F>&fGNtaTigwhCfO@RDg3cqQa7uK95 zx>Mm#z4p2a?Gu%3-)~<2_nPTHcmhEE#fY$ zUGUz=-D8dx$B)kbslxZ}-k9>?n{KP`%@>FIc5v{ESy<`6I2JU&KkaG3?A+wmOR~-% zf;pK(*x2r!l-wu87ReEJbKd(0J`*l=P2iVfnlLB0sMY?2u#0rSog*rI{+$vxZ(I?! zDHWCT&G7$k=$P`rsbO|Z?6!aYdR+@qY)PEGAJ4}N_(@d(fZQO zQyOf7n2xc0`NWj=ugP~muizecmQwfR2W}^{+uo?Ddo&!5Yjs{{6wu{j|Haesd5~$I z|El?%^QLqLM06=kJ36Oj!{W|>fG0*anmp^@t?qHyb=!Genq6?v43P#qaV1W>Kb~n< z{2Y4>3r{=~n&&)7A_>i|!$f~ECf#JiY6fU-vip!2GXt^x(PM;YfuV^!f?kXfalxWijH4y9*iXx zW-Mg}1|Gs3{||W|$g2A07ZB&MfR*|CUB5|MVzOz^-_`t_r*!T}(QOAkWy!96O@Zte zY#g3tMFhphlw6x2mm|XApP(wK_G-f zO`xmKUqXhTCF_uchLx|({TX{07j?U`1eSKPr*!{1U>m<+xyb(c$B*$_^VrO~Vluyn z;g5-rjrJ;sb$eCL#dY3iEA!5HBXNL9#6_j2qHdkgG^qnxCwbGeav~QswCqt>YMgOJ zxIZbo(M4V%@KD0FFyGLeavtUOH2Fq>uLqRHC)WNbvY}Us8 zMGJJtQdpWl=5TaHIE3(IfSFB5ugHbe!6){5Sc2@_Yc;*~Nk(BC%qg~Dro z)lT+(b49)?&-hTYU7A6<;fl9+&7=eNR*wH~z6%b$c|b|-Ve|28y*!T%J6yYDPJCR* z__rb{wml)t#rP6y$CBAib*-0D-o>{vx4bCf(k^1TlVl;@b3Q}zXBD6I`Gnv3n-T&w zitKtTJziT%74vzwSTY`w+v;{uF4RbDhC#*mQ^=5F0&?F|>j zay;&oPTVHFiM!+W>(7fgf;2d`^0%^UwHD61do!LTHnCz^i=Gw-|NpOBmc&JBtmP@$ zAjr5rPr^orb%D5AXmyB({@EkJUG3d<-#ARA%Uo=7*j*%rg66wh>Tl7mx#T}rjK#y? zO@P2jru_~jJdw{5o*IiRJ+|by%KWqkzfU*Krmmw-y(xy}wyp z0+ua^OLD3Tvldco|2;!%MYiz%l1H-`9(=q1?=^!ukIKHshyPpOTg+qI=2EA)fAQ)M z@*DnG^K2;NtQNR>Dr82<=bGo5ueU7}UujXQY|^stqPxMwj)d-doev)bj3VA-{?EU} z{NvyQiAjokRX&vX&i=2WadGAifi2tec73?0F~Rzv!a<$~?D@9;Gt;=5nEDEYQZ}pz zJCS2DV~UL4+pe?@llA-@;{Kfb)tG_=k5sW3PZTPfSbxbRVA8wf&D!t##r$RNH(Q6a zJO2p^XFlF-d_(?%(zK6K>lo@v<{QM=c(ItVwf3@1x!@k*^zKwipia2*%j@$J*dkst z9b*34^Hy?!n)nyi4Th6Tf*dzlDn2YI-{ki9ROwMUr)5jl9!x%C^Q?5jg+$KWY}qxA zSK2>4%uWfNo2DKiwdQ%NfTqB6i^G{Vm93{sC0I+M+T?Rx-s*HN;)&TgQL21FD6 zk&G8T9!i^pIxJ2}i21v|k_xyvLz$m>PMHo5TP%;PF+V8n{FzBhlQq>3T%l!7V=WHpwGHqVw$%AYU zB`cFcW-*`OV0+%zeYH6um%UG1wp)R*`Y*$>$2=FB>2Octr#P=lLJu~Z=+M&{KHq&>`Os!Hp_T8ZGY}>ceCB6=Qj|+uN!U9t{ zQy3%_A3WmXo4ZVImxofb*T#|p1M$9JB`n<^nbT$JSeEP;$q9cjU8ba_x!&MwYrvUI z9)-FjHB-~M@&PYu(rZ}W?C9)ZxXBv-zuZXUuugDb_c?7ZgB^|byI5jAKj8oV(#2k| zsdR<}L;E%Q*#Qc0Q84vqrGM+X~^^?ocq&iFydMK!=<*OCPi zKCfF#)GpSsNxjyP>{*jAGx%Y4#pCUmC+sIxFCvKvi!c39#36q%JZ5(~NZ+jLvsNbauI*b`iMx#X8{ zH}ghkk?$o^sR=;`PUvkd{3LVY{Hf#C$BrF3aoL9X(BYW54Ll0&aZ=(ZS&VMZpCh$X zMzK6AS>t4P!g8}8zU5LCf)d+*lyPrjm(WNKbH%-rT@Ca6Uq^* z%zH)Y!Kpy?VrFU8%=-Z^BNg}xc)AZwyp$oqs4FbCY)jw7rJd6lf5|&@EW0eAQC<_+ z?NO%ja_6Qu9WT1GS*+(O6l%RTW^5E`=YGp1F0h(u1g(S}RvBtk zKf=F0lY?2)I-8^4_xFhnrXoDdnJi{J1uPOr-cVLEV`NGkY<_p%D0Ex3pwP6b<93((0u4w5@IyZ+Sf{VjOO;+15#$L_Kp++`(qj;pWM>D^smN&?Gymi@U7@qS?_g>_$ z-=#I&XSx~8rTE)R#S)ocN1QHJ@#vY6cwfn9Q_<5ZZl)Bw*52hEJu11oicF6?*r;=a z7paDeNXYOC6{#vT8mZiMT0G~Ih3R%a#%qbD8m1?$b#^A``^4%cY$#P!X%V!a%evxq za82T-$|>HvlsLRB>UT|w(3@ls!m4<{n5|I%zvMS>X$Q{+KN}`NmJm>q38_h{G7`hj{O_Z8(^LnRZd&n%V2o4UBTShr2Dr^=h zYaH1AmAgRINlot-kMx_v3M#>7XP7SPWT9|i@)F-42F&-{wiqRpZ0MWvrT1%HLbpKT@EIvMjh|IFuUpJSQ1 zLAPF2?0}L^r9zaxn~n*C(8;5l=6#k-$-~MQo`Y>E>V@jxMQnCSoS?<9vz!^ zG8Ps&wZ?0L!aSVS9{Y%QN-#b%-|+8|-hm=7iw-}#{DXHL;@s>QRMqq^1TfrC>HJ{$ z!LuXGpQ%i4LJY$!CW9IKIQA5LX4`s$EGOo?cI0U6PVdQLEGXHko&hPmJEYj#G>YH%=NS z=HKd%HL-4|15^<7an_+j-_&=MN``I7u%P zMkC%IB3~pI=`qzURGGFUf~|gK{#ALIChM4{n%)_nd54({CUIqC^Zefx!DM~6=Fxf% zcE*Uj42K<rtSlap7 z=KSZm8;{=n^1O0hdJez3ef^Gk&nxF0z4_?%m%ldWKj-AK@k=OLtO+^vIcr8yoa%xI zqXUch*m^dqp5zJ7*P3%-u2Rjn_`oM?B@V6Om6Pz#Ec(eA*(1}tswMhEcbURoIo|9w zSKb9bjFXw59v(Z#F1W2srMTz+L#=nF>hES{yA^HZ?8{9RRgu@>y169!tATv#lqIJB z=X16GV`Vv~?JskeVey2>SBnpH=A7h}b=P2VNq4w*EcZb`^!7L&6W`1Gjjh4EJ-3_-8tXIDFz^SgFs!aFF@xb#HUAR*7%SS8|lO*l2Ndzs%dqyQRqQ)x~;i1z#1XgnOU#erUdI-WAO7V$A}* zTatk?r9Q_D+gMtdxOr+k*PDiidKoypS6$K7l9priL9S&|iuW<+V=v+*_M|*IeZ=@? z-j00}!W7CR9eQUxR@ZiGnKoT~z#YEB|IHCU!%b_nR{0&9G;`WD)=MJd z^^$F8>jWBW*(V$@*3-NAFhQO%qE6N_ujXOF@?SXy;S>B=(k?jg^GxRwQ1%p^pz>C& zb&=#g8$XpV92&1SnXOW0F@N!)+v7uGgnmaEn{92^1&06&CGWeRs}=THAJubF;W>I_ zm+W%^E~l147n6D2yg!&P965L>dn3d1e_I-V2e-)FI9wAXV12PTt%dQHf{nnxAnO;W z_?t!Mri)*&G!bg52>akU@w8IG?#Ioq4bFax`E*(N?p+H%y_4yl4;0?#oa9;}x~)84 zw98ND=PK5gCn9;b4jIkbl31v0r6+p%3jghTu6+mZ)?GaqbW!=@B%e4P?e?uV7W8Oe zt;Q{}mBxFKXFwboWsfMpp~d-_!hxRpzd)YFT1p zV5%d&?aJi?{z7f04fC$fGbqW9k%&Kg?e2r4)-ol&d*U@u@^bfa%|5W-AmT%(#8%xF zHIXA{F79Vdu5v4S;?`X*Q|5QtpilE*$ukiLCf{OatN2&9Oa%5k-ou$DqjvLQCwtW7 zt=mEtWtAluNZb*5bZlDM`DGVxnC1W5Qf;Dhv+bDwT7x?2(l>|NrFcC1qB5M9EoXda zQ1dcp<#7cj1N$)d{DYa!7WH@P^iKFrX6PyiKCSJ=;h*AVTz9KVR+r^K4Fg9+{F-2s z5Vzl{;;(#|pH2>#Y~X3}PdZrZG5^0%n+xChFMQ}0w+`pa-DmC2Q<56W@MGG7*yqvK zD{@yVyj>M8!z2+j%Vw`w&UFzERW5_|t5~}EJLh^lIH&5wp`cY2W!9j?rME8Sf!s}{ z0FFG{p6=~kZvrMBY$%d0P<+HN|Io50GX6oGGBr6@u4MD6h*(bR;kD-plPEdmtgxek z%k)GxTS>r&>}xN!vD7Fi{Ld~+aXh5Kk&w}H`)9XrMghlf6KijUfNr}zdSwU7#Cpqo zeh70m2%Kd+ll@A{xb&ju{IJBY%iL}sU<|Hfz9twJ-=Y@g6IUYeQRqOW&moNmYH{o} z@2&+nYA)UBAZ*C=qoQ8Kjx$gt_RN*&`8T(6G_dRaESR|CMn|#5WR3d*jbi?MLb<1| zNM2(J-+Wx-?Kl3b5hp{m{$KvpDeTH&-f)I3g29p}N%X8SM_E}&b|w3UwXcozjGe5% zx_Q;QG0f7OBv7*VA4?H;)+?@FA5KPwNgPdK`*W6uU3}mekkHWLDDQZ|;ZVt;QjY1O zt8;l&x`kf5{TCHTFi&wkry{n*(aXpGcS>uTl#Wl75v$F_9EF2TDu+Lx)Y5y?7%o(w zf9mpciSO5y{|R~BxWn_W+q+KiXV{PCMO@dEi|cq>N)L0~6N~CCSE_PZ-XmPK58Kl4#{K~|@q%QvzkLSDn zm#3XQ5@1x>lXjf#g30mo>%zPr-2C<9w&_5}MrjX3Ga5vxOVO3JwG_ zvRjyP1=_#T@NQ&?{KJw^@*_08BJ)3Q?2-Im%+(tD543zajyoUNWFwO=%;&d(QEcsw zTh6~XsNOE&2|0LZO|Nt`Ti}AKkO0TCJggryC+-#u2n`I<>)q3-&Jw;^Ih}@#{}=3A+{kT;N}B;50l zg`&s;*Qq8(!3?S;x5NyXEEQi&Vri&%?3BqZ=9oNLS^3zEYKf1G;f#8GHFqyH9$~ns z_$0U4V3FpEw^x+s^N6-?^OvnXvsB(vM9Ke_od9QvJY=c{i|}>-1;Q zQIO~qU2^FJ$E}7f%QL0d2ZtnWoMU&x`qZaWYg3arq8wUYKCSXeX=CBili_IY`SJgK z)2W6oZ<`K(k*;9dj&RW~XS)vfHw-L$-Z?vnx-93=dvMcTqmoJJL$_GIM4fn!T=ks! z;Tq05P1Z3r@0ouqNX%poC^wM#$Zg`|Yng4}U*IoncR%jKmyX=;t4(L8-6?wI*<(W@#0-) zqfD1=)AWY7>ms7Mcf>nNnD1aLe!ro0`pNB&E>`5s;0%g&bw3#J>z^&}8Q8rye~;w^V3WII$Sb$+{*QYXNo@b1g04fP9*V?GL$^4YC?swmUY zV*h1*=H^%>$fXvG}C>~hZ-a(a>$?3sjG}pKPa88tZTXxDS$VubbKutTZL+7oYlsF`qwb>pj)e^I3dtj!z`KQRAW)}mU) z`Y?<4%eOm*VjpfQHdudmmC;COZFJtYSy5MvXM(_t<@X{^TuV7GGsXM6RnKcF^NtCN zj9us2J91i|S`-9?=M9uwOyFFpjaX9f$@h0iPOEpf~FK*X1UE`@HoFoziF&$hdDf9pI4rEel}(|Kle`W*RDqPDbQPJ2ckd(;YzKMOQi+N||&SFJeW zvN+}R-xiDBDdE?dTJ1hi$sjOMa zWfLEfoIkZpac$eI?uv7o&b&Vu_t!D8NWR#1<=}&GrmqVbZHms{IL7Q?Z?x2Z@tKm} z3;2#NJI^ioVz0<1(PIZxEH3$QZMt+wEP-!F`Xr;S>Mkz6$K7QXJypN7d;Qm{ajB@R zdL`R7L!;|#%e>HIo>saw8FD+e$ae>Ca}lWcVc^oh*Sv84wV)3MldpuaZJoB0+s)HH zcaOhBbLAzGSl&5GG2Z(E=0(3exRl=~?Lqn%g<$@i#f}kbJbP3Eq8@!%d#5O%!XxCy zoaruNvYeN5GWf-(8|}|!+-`TmDbRZHk?=b9)QN{KT)kuTW(HdT(-fv=SG$QR;f&=M z{!Q!mVU;oKw?1V5@b~6>>;Ar$5KYK~T=gAT6wR28~2)KW_3MBx55abG-?rutw?dZ725u<+)>*Jg@k6_0PE}ZIM_3Q@*NCM3H(oSVOm&*E zaS4A>0H;SlWD1{WaDw@_0EcHx%NDKtGP}$r@NDNMoTFT=j;-BmVoR;_tvwDC5#ud6_fTXL>R zfx^UTT`FQsfj2fQeW>zfDL2<=cFXMv}4Yx&3F70{E zap}zA&J!#Kd&?}uI1+b;q&EIhyT>U|vo}JuDfrH%4xR}nlbbI5_*cSPW14WQo<-B* z^>W3hBKj(>$6sv=s=2elB_^z7L7Dl9xa|&#(K($;YZ!bNDYP*zpU1mmYqvlxA6sD7 z^SPhW6&Lh0ge!yvMV;Z*%rLqw;;>2jwKz-G|63de@0POJm-_knaPMdn`R}d4`f8h; z9C*U-#cTBmoEAR0Vu}y78Cf%V7@ehJN`)0mHmH7dnkW!f+#F*%?;^|jlG?DO z2NUmlhn7}KHt)&FxXF=PW%#=!;%BJ-T}MWqs}ZkFIFmS5=Xi0mUU2M5;}G`^SG>)$ zCUB`~^rp}Z`-=1GE&jiw95^OKMR5PCyym32wR-voj@IkWVb4oz7mC#}-E9cV*1yDY zQa@vh!Ig$a3u{ry*5Jjxuhnn!DoXsm+{yl0LR`#a{a%h1Nwx1K-K*B#JrEsMyx8}E zesyFjRS`lVA1jBh5f zLs3`hr$tjs^Z%{q-f!dHx=E2w}RemVM{E)YL82Dgk}c^XavgDxxOjMWhjT1q;k6ejshs`Ba6>@4 zkW5)ApDBZam=p_Fg6;vS9K+5oR?g2pms!}@r$o5N&f0vE>*}@j9d}Lcu-?t8Ilonj zPto>FpqJ~EhPA>Ia(23lUOeKf=X>nPS*MpA9idsyTwGn=$2Yv6tHjdb%cI8|V6d$s zsaW~OoZ~8v-YkKYIvO60w!bw3LcLjZTnld;$f}Udvvkhb%5>{%o$maXjS)NAOJ&yn z+UcHa%KuOK^U}scku!ANyWr-H3~SWTJdzZZ(SO)cE2 zw;tr#vOeLl|x|Vr7D;1W;{TG!}Ecq|Gf5I_` z`~1hgF(1}GUHaK#o}dNGlJ`q(`gjF;+u|y<3hq}hJeb7%yYbkzlV$s8bqtQr;HTga>ZUOsMa#->I8pWWx_kVxzO>i+P&j7B6!&9iH#7&*m5-#&0r zT)`p3#^HR4=|Ic2QzohJLLPm?=)zAn29@+87!t0E5j|%(zFXHj+PnalM zqV^#qLd+*%pGxT~^QLEq1+=-WHO*L%ND6~b_suxxTR&S zp1q9MpKmi)v22vba#8<(GH?N{zq{ct{@gxQ{>=0fYS z5+zQ_NpTZ4RrGPpX?XMbwz-J%_kKY}ThA@i1TvWTd2X59_;FaOr+f>$B}aUrfLwTh z=EE0z;_q^MwzuBPxyD^G=@QFvmQEcLUkx1t*1Vc2w*qXq9LfS*_FXnvnfllG+wfdiky3|@KZ%su3qVxZGpYkpCJ zV`ZmlU(i0mf_-&!BNCh+Pxf$nTfp;fs~qofw(gH>R*8Hu@?r|)KjvbT_-XHrZlhU; zQfd!tSjz2_I#uqh66x@ed4rv$*o;t}0w%V7X;E$*K673+xXCP?FG}yw(#JI&k-|dW3u#o>;o+u5uQl32vj))m}GBX=;=!aX>F3(P0q~o^FI&Ys+ zHgC&B4Qof1dG3#IMR>mCYZeh&C*hhYb<5Z3??&0iYagCZv#@@+@Uok!RjS9@`7P&M zt^B+!(wDqd+FxO45*D4Y&%)M1$Dd^h&n=rze;-duVt9ReA5VmcDxQxKEi%aVL^n|VMdNiI@<5Ev}7qOo+{dK=3TX>E4jn;M!=8bcf zMmC97TWYJuX3FyItCfnm7vLNpwy*0T!?kOd{W?!}Uwe4Z*P5;L^b!{xH%58CW;Vv3 zjJLZO??>6y>}B|2_OOO!$0}>ST45Hu?n?&(M7p@H@$6Ys^(W!&B#97nt?W_`hd)A9 zqFVpOwh1}NckyhHUX}Ov(suKjSM!3hc~`a=Xy0WC-`x8Du)Xny+g@q4R-YeTPW)wxhb6ll8L?K9o}XUa$CQIzzhHVdu?->U`E-q4PzQ!fG|sEX&HdOe?B6E#Ae- z30Vx96mm*eTPIXX$cVt4<15IS6QXW#wCKlklVv35xu?-ZRq#c_j>fwq7J_*-EsHjnUyOY9hT`_DtNGziO+jS=z+s2hNot)(Jk1>UzqIhv_V z7|f~gs!|G&SIB&kb4x>n`9(m3VoVQjQezFP6=$}>)SN?jvji|rT^3zCUBKG+!VV4Zt@h!EEt=)ci`wV6R`t*(rVvubkLE zNu_X}?%83Yz}^?atS@DD?0+ZQgKbw@etdtZnSAtzJge-~j)elxZ#V~cI=puA6c21X z=#i1*C~)fv+v{GNEq^NZ?^38Mws7Ie>#g~d@sTxHAVlPcYfund4U;EF(3;&lS(!g- z1(-Z*_>j3UE=Yt~jQMQsi>W@%8Uo(Fr+GS7OjHx;l-67{_v#DA3pMODGj3hpDIfky zrsXIT%Sw&ZGiAbs@q6+mO04~P#Li~lnwOl#%<0TxmUPgjfyFs!!a6ao)^Ia_pHP87 zKQ}!UY3E>Pr6La(5$CQcBF;P~ESDIys845*iHMl9*812b=Dj^jt{!oCR?~X2b)})* zY&VzgWRtb?6&eII%LIyx76xzGw=awN#hMh|Cew>MHJ5QSPGmmt8u>c((+!uUE7QAVz;KBc)|C8*U#*- z2k&C`rll=gm24ZCH=fRN@Ns@6x!28Pk<_huW;3@LY5&)IB&L09a^jo1s(68}`tH*| z)cQD&Ubwa|Jn6Iaj``*82bsJs_h#vvsw}%%pzzCGBKv@js=G{A50ko1PUcKLBMXbp zhOX8QR_=y>Rek!5nw&h*MiC(r_nI{2DKQQ2)Beniu`Vksv5qUtTR7#)&UXyC3)8a1KMS$! zapxBQZzjT|qB3z|a4M^-#^t1fMS64Qh%uhcOqUD@G8Xa{{GtB%?BC|2I?YQhU#wZj z_{+EJn9Hth3Tt|f+tiX@4V19p&NJW6zd*KbX+m1R~sBE!(m~=dA^^fTO zfI=_7V5PNpf|Uyy?uR8gg|A%5xvbV~X`O=KzFUDTVW|yjF{|$A+nJavrt!wtSO)cE zORzjx8_0Low(O61oQLXrh5IvZbmmISf81G6HCw?i?`F&dF9lU*mp=Z$O(BOpKd3u7 zxNZrv2o6{IASm$r{BBjoYrb23b9e&|M~I{^jFc6&tYGo-zZB?MUH@L{P;b?)v<>=o zF&h>wN#DTN$guE(^BsvGkt=LLFA@%jPrYNxX(N~S=O>Sj*czFTL%iKt?bx~G&hTbQCA8gdo~@}R==#V z&7w}Wx1!7aOGGyR3IS&4J$z9H(p)Mj7L{UM8$v=ATzGa#uUgvmUN^7X!zzG7z+h{- zSh>z?5pCN=jp9P`1|0GWT^C!_syI4t-%z~cxEMRr0*9qNQc-0Q9n;wk)ww&HH*WB- zVwtI;)@w2$cCr4KTHfBq0#$|wsXN5A4`m4MKPdhE#;P9!Lkb@=&%SQEFlFA8kS|$vGW@x15nlrw1o$RI zvv_&!`N02ZJF{JC=)%|%c0El=huhjGl)Ct1<;ATZ%JF}T3Dr=Ly>v-5dizpM)2Yu+ z6xPND=djHvm?xmJq|8Br_o;;11OY)qSM|cCP?^9#s z^5lbuswIN!Z5N6!*`TvSqsKM#f${#may%Lgx{o3jDtf$F7R)niS>^mLXC(m{5rvdl z%Q7WYWHc7MHL&UnwmKA`Vv3AkZ7wB{*eL&bBjsPi{Cc+^q_!E0GOkf9{$2~ix4$O%$PI0((``_^jlOrM`oQ!j{1ytM^ESDS- z5Q#Y4B)HB(;Z{CtT}OdM1WR}c9~ZBpj>f7h4SF4ZubG(^9lns3ruC=pm3jLI)`TvB zhDU5FCcJf0_mguu6`Yn$&Pn5y5HJn4NMQB2Tl0E_`G$;ld9N%o{~O1!+_dS>;tJR$ zo_o$<28a0kViB`zF=~a9a!ye@P0IKGX+D0enwv>}!tJ}FVfzd+zZHn=;F!2EK>bgh zd&bt^K@-{C6S%wCWsiMRO|<`0?yxHJejta<#5Z9PaiI}E%=9Y_tg|(Q3?t=vRN#D19ly+i~VN|&*z;s_Ullk<`^9*`>ZQ8uG8n3)s_%ED8#$BWI zZnwXV_31j5-4ldzYA^Ava}~5YqY%@{;x<92Br#($SG-7o?_37P)o(%tjY~b4=d~Fg zVv4U22w1GIqvjsx;LM}E@%*>hB~7nn_k?o$*#yhWXk_hJRI2g*zR}Su?M0TA7PA!Y zhv_?sM;K{rQrPD6VGV!F1ykk{(=z`h^Kwga1MD;T6--~HTWPOWzvbCr@#4M4Hm&LD z83NZ7HVXKq``E9PJIAmt@J_LdozjiKhN<`6r}r%6Ik+u)29KV#p}EI{SD|0DUK%vn z>=Mk`aGfz4c*h^`5OY86s@Q4cM$_s0m%25PW7LpQa3#jPsuf3opsNj_6{3ac~>2 zO!W`>mu(l6wGHjL4VasxemWgiS$mix@T_LE0#iwY)*6oWGZJll=E&Hx_|6hjQ878~ zIIGOw%S1xx4U?=bCq zz3h*-^roK0XE!)Xi-pzPn67(3%1gnR`=E0~@Xh7MwYiC2A-8_AgynF#v~ZURl&UG{ zEKL&p-)dI+wYyM(Z4Kk?sq4Cn9K;X$oK)8P-|wIpv!4BvhNr^&^}+mkZxz{tWcS7U z@a?-`<8<&(aNG}$gO@^_4y@pw>si229~V__!>1r|`(>1aczi*$lbTbGEYBrD=J>i7 zQfCi~@19j3T&i1A;ufEE+Cb*VqR&|i+ta1rRL?u(|6`Vrcz)tBG2z$xT+Op{wn|)P zK9ZRcl$`x;o7aO<@r$nd^)01_i2};MH03-OyD=ZDY9+? zhrqsRH~$8tyy;uWpPOM^n&xHW(#W88)Wv#3a7@4I-LqmYWwjGF6u)FWyi3)K)v=N> zxz-}vrX#V(_fm1scJ7@vJafu7z1E3ixywBJ{2Ajq0R<1{_DPHjT6_amZPR%b_1|*G z$%7#b5-(3l-4c_SAXMYV7=36)U%~4te>Og?3HyUD2_5na%o5lc&gi!O`HkB=Q;)F( zS*ZNywx23+saTSK-^m%1l)1uxTXSzvtBNa4xyNyfWuID&V1CxznZmxiR3C|} z>M9(IOG;R4I6u1jzxP81OBJ5hGY;GSct~`5D5Q&?IQp-G^Rc}fk37q@&Td~eTZ#Ec z^Rinu+l$C^?|gDZVR2Z~2N%v2TVchw*+f>S8D(Dz#HH-);m$g=boY`9tCix9MLu_yYVu7o zi}7^a9pAm*@kRcg;*`UU^&J0gKfTQ>VNWi2eMU}%tDTEC;`N@J_h(Pb-_0>&Pewsy zNt!1M%eN;sucsTo^^IeA(5l)U&scLa(_!zIhQpI|T>t)8=ddlx$xkkKE-|xBPA*6) zxyw?xd`fCc@}zWm4m z4JM^zWR|$~85M-JCWJ2%SU2yG9S{2z(FvV)ujTo9+nAE~Xk-fT@MXqY?((S?H`{%L zW8H-XHzpk5T=s-v9>cAJ8+W?79OMFcU%POe^t+~=*H9(* zKXYPD>jZZDh6;K1lJg`L?-s&aI$mT6RGF%>o^_(=&^UkwfX zf7U~+D}vc7N~}0KK_=^3tHN5Rhdp;2qO1-dyudqAJ>+vwy2H8&dFC-T!CcuJt`){H znnpS(ipd;g68&Yuk$6JveaVkkTZLvg0SJL`oS1{Z=O?2JtQXUp+-N z=1yamuL4hL4ab$d_@fQ8rn~4&tNSW`Q>G+Xi|58I_A*ubu=ZmDFI1Qr8Ls>)J5?o{ zrXJA}miGO@RL6@9`8x!hugNKSE)Z_D3`#U^^<>D+NMH|o&zhjPV#@_K*KJoCV?Lx6 z2AtwO7_1>YYl&-Cc}||!j|bh09OpKf24fC$6qW{V$}~tPuxwQ zpew@ZLjH_jtT$dUFX!4`_4P!F^^OwO!xoLtuGnq=HmCVrk{SnNiEyd%xt;lww#z;$ zmtxwvKJkUwv;+3G7H2QVwUj9Eun4pMoF_iPP>4Z*ThP5I)hSLy;1Q3rfmeHKZECK9 z!2gVomv}Wqj1Ds_`I70e_N90yyS6~m|GMTM z7a0<@!%Y}_8|<#6HKg^j?8}Va!D++79+EYoW!ajk`~?pVy}rHO>|LSU)39T1^6YF1 z3{5f|W{M1^P0V(l9~6GtX2hvCiT{&MX5Q;?N15C1MBo>%<(${1ezLKa@=B^+VNhl$ zAD;Ijzv{}1cdNPrCAvIi3YJG{JUsA_eID1v-5nx6$;Qrg2}RdqiWD;LhiSiI%Fys( zao3T)n(l0owNZw7=JKMITSQpqvQBa?T)*|$9ws(XKC!qT+y@VpoRQ=H^+h1wL-R>4xT%qA_gjCJs6J_Ze?wkr_{!yd6Bwkr z{7f!79N0NCutR53=?8~NE5bOWyPgM!%k=g%HZsQ;ALZUTb*8Y0z}k2hjR490qDpcf z{+zfUpMN6oBn!(UoD-ww4*g?Zc;pkeV9V63Wsyv-3pwte3+ta|W^=lz zPNs?Z#3e0(W)?nGkt-_EGY(9sxbmdVsl6vXRF7YzFTnfjnPYd>oir2GE)(>qVRB22 zkYB#^LWEV-g!l0|zP(zl+x%jfrPkkf_-UQbQyY1&Xch0nd2SaCwm;bL;aHsRfteaS zeqsBXyc;eZeRg9*&05w23%31=XkypWJ93JP=i>w)iAJGm5&BAI)n~Qy4qyJE{Oz7^ z$~sRzjq`!N{0_g|*_3Z-zjw=i@zMKSY0^jLo*!(f?i*OLjVcTme3SDuVE<&p^_ulr zArJQj%l(Ea7EuQs{+O$Htvwac>y-mXcK}z%AzM8mbnwZ*=OFT;(PfcRhS39!D*jFZf)`7I;+7B618o&3{ z2_6gk>e+5{ddKJ0eGwOKZOz?wbY`(ml8)r6&Z7$J=0^4GUYf-qyE3}2pO;rG>5Xq( zD%TG2jeWHYGbczoSzhg`YWTK;A#Aeo$^Pd;cTY(j;1}0!IuX$s^_silN2hV8nj9Oa zuP)0!F{Ve>_iMUTw}c1@u;d8%96BsoetBWbOVz}TM+)H=qZ+BY!yuH$eX|?74rS69+j_LV{ZQ`(KXj74xEb;J|7?T#~lWK!~A5QE! z>^A8Gd&;qGGwpwwwz^z8Q=@q2mgkYJ^0`msi{Gj|ioFr<%Y2E)L%>!H^^ToWPK@qSf^B~ z?x@24Q6kYSv+=;E{|Y6-9A{eG<}%2O%w=xqIe5C>ScvKEa@{nC z-U5fth#xF}O57|scZz0ws9nJMsf2w|_xXeej58usdU*~_Kl&x}1j|9kg6Z$iYkRzC z4O0E_o8?`a!@eyl3yv9V5^K_J-?Aa3BkQ!@qQk3w!mv9W@jlTGy<@!PQ zBM;eZLfp+dqcpfAv^+BMJf?=HO<3v?UU8!`XkNF#eFXz$pUwvccccq6xqo@H9$d9S1Il>Oj$&7JGDZ)#b3-EEpyDyfJ(zQ9n?#=&q>$ltR{%7$q|V^vAerIxc5 zUp9maFiE6E{iQEeN(GVqJe2wEWaJ^kte zCSN1=d$&zO**emAUN88V_j;m5vEIuYO&A)$4l>#b zLDQdcJdn94yQ5q+xJyvjFgJi0$HEn1_x%82o`QU#A`fhD7K!+*k9Y4%}^-!{(zL9@78+Z z9%f!?C0{0v)TD3P+R@GLIgb3j+!C8|{%dXPDG|E_I}Z~P{+@o8kF&lpr&S6Gc6}Dp zex1^I;6PV=Mbdo+ElWl9(+n4a9{AKgnDz29H;;>nv(8=yLo?61yqzU;&CWGUj^Nmv z$ulM4oLXU~E=R^~=Ac%0Bhd+RDxb@GW*w_}!+h#>^`>{&pB~Pygqf!p>@q} zh5qHHhVkKgM|;H*R^I<3(UB}E&n?Ii=)+uU)6P&Ob@6drT))aWfk!bIo>kL z_we&HW_?~Hvg_Rw&LFOk9|vw_>YY!%x1){atC)h>B{rT*Jh$cCS;W0K?07EmT;eej zPy^8-QWAVq_;@bKFik!%mC^KG4MR)Yj6b%Abb|Nem&X;SBePz0pva8gQ;bgCr z!qIK={cS2oql6|&`Muqs@KxX^^DG6G-7946CKnuwo!GGA&W9-vH*Sf0cS@Y;=mrzc zbvt-@WiItR6I#fnmZQA>_%|<~do1Tn{vUkDB*x5=EIF-eV&gHLhd(!7WVyVi_ga`~ z;%AM^-!rZ%vD8#2Fm24LufO6oZ?%)Jtx1sJ{ZC=xQ7n5}c+|e0Vb9G7nf#2Sams;X z%;LHB3Uyqz88rnJG7uc)cg*A%KK63aopVzL1 z{@lA*vVA>r{>XIs3Zyr3Fncckp|&mfvG@GNO!AhoQ~K^PEDaUf&;Nvf@5buha;9V^ zj`kFj^AcPg0qW=XS-r?B->~6oe~z%LO6~5&f9?NRbO-A2@2@$;#E~m?a@(zs@-z(TQn9X z@+#SWx|GK8yynG!R;3`@sMp8-PkekqCFy(oVSX2xCef0Mp{LXyTu|A;K8?{`XvLy9 z5pH4Ai>lYST|@I~6$7Rlznz~j*~CTE)AIC7rwjU`2OmiAym%b&n^WfCTd%F#mv^#D z&t1~N6&j-PI5k4|fT>1>>;Bk=m{0#54SCx~*hQcCz=l(YI3BRG z_S`iN4i7C3aGP+;D~>@!C?r%NJSyS8nnNu|xL5QBBb``2@g|w+=QcJS{c~5DZMwo? zxi=!S-!bV+usvB`bj|0WOyIr=j6Xv|`VJ`sE&KVB?} znD^r`M;-_EA6)OZYi&E`#Pj_Ff1hRL+e-0i_5ucJYJ4K9p;z8j)-p&)2R5_pEUC^J3G^J=Jsi zlkl}K{O=j#WGV&DYB5wV%)F<6Su>bNf%!yyeE$gsqlW%{p%F~X`@C~Qy=H0m>4e%z z$Tx-*^wxw4yfnOddFqDKedeQ_qA7b87aYE9aIj+k9hKW1 z7efz;xvt=MKl#)s=2*rl&uZ?~a#d@7iHPJgoz*@omeO3$#~As%LoMv_FD{OE3|VTf zI{7JI{C2glZalZ^KIatk8_loHD#f3-yia_r6#dfrZk=ho)7ohXy0=41)5Tk#b%qO` z`@r6FTX4tMGAlosbKU zZ~m`r(e6Ii8t_WjqKy+UZinSadNN-xMs>2ZZJP1ER|{%dMUAj@&5$If@PH4o0J ze$C_0JmKOrwU7Jkx2o1(TXVBS;$*PMG_&OgIj;Upc=^HaiJG#s&D!AOZN?nYXXbxx zGEQs>suqw4TkSEw&8Pazhxwd3sZ;LMN&o!F!L&+DWa^cqKWecQ*uO9_u=# zGUb84$N4(dJ+$M+ZZi#Da5Zo9vQDQQ~IiY>>9Mes786W&KdHv8;u(NnwrZ5xV^$VNCT2urC z*=Bv+ASdRa%J_9P>kFSbQ>Uv4$sG*Mf4%W+`ksg>Ej_kd70jA0A9Jp&@8x`XWr~u@ zW5cb>BhP7;b*^C%Fp~Ks_5BRbi8DVQynethA)Y2PA&p6e`76U-MT_8g4;80o*ZrMW zd*;M4$4rV)Ezdce9&=)<eD zBGaNU-C3`_L?uPTnDc;Q2!A~L4EaMUp-UBt^qyq#{(qw)FmKs2hu`6uyxnemdw;}8 zbRR$e^y#)`oRYVX|L#`YUZPvsJ>RG`=ET&-un=CECsHM`Q`d7#u5#2j++p@l(_8$m zb>zgu%QpOwXZQRi*8Is;V|sWr!{x-5xBFI_@b25wQozAyp*roW#I`1P?@MZWMq(ci z{+p(BtjS>2dAT)PJzUKQ&DpOd5x`NC~e7PDn+FUnKUG;^9W6AP`-m-ExXC*A!b<@gE zu{J5c`%te;-J=TbORWpdn-{Hf+{$oO`r5+lW({)^8VW?-EK_|siQ)UUg<^WEQ#NrW z>L~V@h2_o4N-@iS5fLrbSf}!?H{-x7<)*{O*?bfD1WKy>q^s->M5=jTbMk$Y=55dP zEM|RJ1e@N3hw`4g3^s4s_u8SC)AFI9m$i~(+}zMLN?SPNOR|z*wP%P2FPLCo$k41& zFN_QRtbHva!Nv*)t}s08i*AICA* zC+1*jy=?xAz@2HePvh&(Gm7sqDi4rRF7;jcWYYWj_4fJ~&YLe4*wB9HbwkXOE5gf< zF8ve}m$=i8pG&M@7KiXD;SDT1m-`6LjtC2n*M1S(z#8f2STnO??TO<_94mOu)B>$` zw12wzFtFvdRcuh_#sW2$c|IRK+Ar}r+VHh6oZ_ncZ@S%u0~-aEr46~b*mvILF(?r+ zF)ZOPy~fTl|Ac?njsq7QnpaFol&EKLTN?R7M1pfC$GX#jjQZa!E@r6cuDV$&&AeRq zq42lZQXY#H52kGt(=K@t%^6ssPAj_U zk@-0Ferc(X*}c|_c~cq76`gntGdJw+etQ1RiSIXx^j{y*K6!f{yL}Y%7L_e&_rJO@ zhS>P{m;@*>uf6^DVUC*bF)5V~d{%!gF9zJ3Az^WTaznL-RxOYHlmq!pA060S>XgiO zX0B2CsmLM|cwvi8{~?tPNntHD_ofNG`Dg9J-b-~4pXtwn zI~boiyD>RCdoNp+Gp{$@SvvT4kMk^VXYcb|Vdn(Xd)aBT=^XQcu$A1ey5cUx{XMwNF5=s#-|88R$G2vz{eSJS?G|mDg@4!< z1WyV4tbXV=*N&|%(>h%?{_&Gmd{cA2zhauq!r2Z2{fwpmOI^1AV=OIguH9$z?QWsF z$=!Xvq8l3IRekh37=+A(t{=3HZoc&S@}ikVM_*(fSaEsv>;S#>Z>?;v)_!G>nYMAK zzs&38mk}j~6En4o+>O%@)=KZ6te|lBwUJ+tnzHkyM4t&NCz^jQ>9BCyqhPXaW#>j7 z`DKkO8J*1oejWbP^W@+E|0nB=4<9y6i=T18NZdL8h|j!`D}mu*1;<5$?kk+WTEo$* z{L0&hzh^Rs$@{}^covn)AJA1eJm04J`IlJTt!}+GH@rDmUZ31yw&rkrMe}-{y(f<> zElH>miAemsisgOHvwMse8kaRVOm(eY$q|(BSg)&4B{rfv_tXC)lYXSXOvDx)16dYR+8?VN5UYhT4==`Uh?8y=zO3wX16v4(h=Yzr- z;SOHGPN#RPmTF%O)8+BMp&Kxn`D*1&hZ?r9fOQ{Ygu*`LaIi)1J|-e4Q1DnGey1!8 zUx9N;ilr5YOrg&_1>j<8x@g$IqIw|^f|j$8GW z@m%oC3a)#nH&|v$T;vtFCx1aYK)A)eR%Dm1VBWLCOYBa2J?1?BD1Q5fwlyd9es{m9 z2#^RkxTF5)y%$$XUS`T$?k@D$C?LWl7`AbPX27D#ZT#CIVMrZCsWo#Y{HZ#lMOJ_jr|g|~z3V2%<~pSb-QGW+iE@3mK4!q*@`gcq zWlGK8n)?Mg6XYx;W#V2pH;Zlco93|2K>O25u>&)A#kH-dnlexKw+IVc=p1fAX4Zr{ z#R)70=VO9Gk9q7~$B_MKu}#gMM-Swf0_>RMRLs>bvHlP6y~Fxwi;-U39FK0_P7UR! z0$XG~Pp%erTptQ)}-)6mlQt;I{Dr>qxfxYK}di>15e+tt=jnEf~4mUoFz-o*fAkqI$pg-kkl`D302SlO})>g}KB%<+4b z&MS}R8xlW0?U}TzYrn(YFKfbd&vLGxelX&45Nn--)ICQVsm-Y+r2@BKDMZI^`4CeO zy*JEa(z=ou|KCfS?V?I*B6G6UeuiJysBz0;3ez#%pr^`wf|+q`(56N&KiB#_K1L0K zw3}PnQh7KmBb9wuzu{TO zAR{5NP{G&ul8M9=0hxC1gqNCCGELF02Xt*#m6pqYZ@=Ti!&90rZ7o?EDeY&{=*8l2 zTZ=7^Ag+KM@XPsONI?^li17vL&8pddNI} zo^Cf54jztH9z~V?A>3MtU4jxBI}d43Qe#%0dQ)3J-rCIY^+V;vR&P5S-Yj3~uV(@+ zPZfq8V@RHqx!spb;`N?DPaescbMGE=XY@R6#>+UfEQmv?(rtp`gy~^SZd`sxDka?* zxXv?1rai7pns8~uhK+wu?GKk?bC*zD%Vlth??|AS!0BhP77^@$K>;&3YFQEwbk~c$ z;t%iE)%c_}{YPb9wr8&NRqI1F^WA-Ik|uoMSb2%N+tI!{KrDO~(*q&qdw=6E?Bbcg zX!T@ybi+9}4mTD?#+S=B#wlnX$qAGW32=9jmr<;UIK#F7M2lM1fcf2pXo%H|BLw@xK zQGG|EXNktY)0p{Wo~NbESH_j8dycnO_qwjlo_Bcj0zn?%`09csvetXH*NBDHIrBVZ z+-quAu_yP00B6Lbw{b5P2puk*8GO)*-TArY|DGn+B)ynLY1sjcR*MRLu=EB9U#JsI zW0R1Q5|Z4&i@bb>>c&P@fkj(Y`ZhECh(68sR~)3b&4FXb2%%W=JC9a5qRz0dWY?a$ZM-KC5hJ>Tu(DUNxc>e5ZB{ysPUNM zlbCyWwv6I`1;`*4^_jiBv;;R;%=Yth4C!ggO8tW z&TnR75>_#F@9E|`78!q|Q;$J%!ll1;q6_pdY`*hBsDnLx_dfmwj0&s{^-u1F9ur$~ z;s`r~v9yGI(g6;gwe3x9Z2tx9r6f3}fB3NE$L>SA$Hhx{gS+n~9i3#?!|*3s{mFzk ziSs!GSOh+DTo338+b+Ty`MBlpmgQ5P@EZ%*_=+8~W9RwP@W=CFjf#+)dVtj>kxjx} z<;*%Yi|+kl_PJ>gmT#K;rm;Tju8G0Ppw_qPOHUt}75cKl zKtVizfyGpv*1GKO<4!`J?9;DE#C0xq-ha=+sY-~GMNIF3z>5x_l#?F}=5Vv7CN=Gx zz;sB2gUMpX%>M#g*M2y3!9wjgyN=j3bzkSSMji|4u)gl|(*lZ4IoP~<85wnB#e+(;fVO&cLCGN9SNk-jW8!%~^MANsx9)^sRC+>S&Tn}(uFp+Pt`*QcDih^bF zD;c&1wuut@oi|_qQLV`Nn-lMT_(I~Cz5Zx zo-kicilJ5}y_>Ib8q+zw`mnW(*Bf8|a4-lu?|MeVq=dsJao)rQ2~9Vwm;*u`_`;+T z9SSbpaC)Vh%XGycc(abh&4`D4Lw2xoL`=2Iu{ob4a3_A^F7q!N!ZVmd8@X&8V)iUH zC{a9c$3)|n*MUASK*%!QzQ=joD7&%AuNV1=kox@KbWc~Nn zdv1*N3-3p{yD=Ns+x!=)RC}1#@O#Fb7b4CEW~vOV8!zT=2&|QGu37vcfX&$;xQgYB z?E=1rXOVknvHs=U?Ge!Nm&c09ul1|Q-V#=xPdk$B13Oq2bHz2y(4IFhBUYEg`t=gO zXwNMZ0(;JEj95EcL&s}XPmh5~FDKuFy6YBUO!=&RUJpVizwkTWClekL9NcgHn$U!Gu@(AXeZmiWm`ra>4hoogEH3oU)XB{UtKvlJY#Ma=E$Zf3pPnni7~#}*#qIRd z{u8oEujZbZ=DN-~@ts+3kbDyx`yI>Rs>Q+?nOv$O+z;9w_l52aaQnYu#cqX}J|fn3 zb@AOdbA=NFc&zRTsOIjy)O6y&ng2d)L6-vEP0F~uW^OWzI&R>}RK{l9a`hK$@1DyA zqSp-W?BJba=NvF^OSgv(Tk||elTYRDx z%ckw=IRAu>CWlu~l)x>=-K_$gwmtqFw>)+z>}IevsGD&_@pA5Cg~R^^^m)TMZt}-# z`Gn*y>2+Cf*uF?U@v%vx>COpF6~a%RSuFJ3%K3psEa(Nh!~Rkoj|2fb>3SQ33bQR! zIEtGtywtOP67kG9Fr|g{kK?~E#|23>>`H$>X;1Kyimt8VDd?(Y$tX|LR|%`X68xLx z;i2Ydx%+2#9L!9xKP)Vy9@-JdyfJcFnEintKU#h<+UMSAEvRSEKE~q_?8Lr6bhrJD zik61CGd;}g8mubLhy>0tnIg_JQ-dQXB<`i8#5O;rK#rF+7P7r2_c<7COL9F|I~hHS zyt2=F%Q_aDr2it}vzdKZrYJktB)&c3P_>io2cuMz!nW2C0NH zo{J)X1Q)DU*jR6PkR`MJaJq;5p?LYg;70ZzJ?Et^eLJ|^nVZ+-M}-^TqrI&sm+W2r zs)tijImnS= zGEdVe=F$Y7hc6eZm@J#~w8+MfhxRcKk54o+VRBud(JELzo5cD&vML-!J~Cz0I=RM*HB- z54?|r>ZJ8p)^ER{l%L)%n6o?bpmL|!$NNP&EX^^|@f;SdZ4L|g)8?yi3mgnldQq2Z z_OCVTNw3Y(AKl55{_zS5S@)PLIb}`?blmSPd)H~!+lcopvzBoCEOcZtX|U8jak^ga zk##Hkgkr9@#wPC z18-k&soALzdVFp}MPjm*rM6CNr#wepbayp}KJ(u#`Mkcb+})N0X-reZ7gNrgj~-Oo)hQ$D3{I53*e3_Hj!#VV_$+MVxt$bQ~wwge-;a?H9O~Mm*hn z`q&A!?*eavds$xH@{xBw=TZE2y}WU6I9pJ>GRK-wZ!RCM`E#eO$X$G2Q0I1Za8Laq z`8p1J>5ijW^;HXI2AT7A#~%DXLB-i>r2YlhotqL}u@gRa7#(DJsoZ{ao5+OcH#w>d6#wkJaf>55%g}LV+)nG3 zmZBdU13BKc>?+?=a%fwx$)P~km=E(5Rkq#{>xhrsp1-i(=Ld@`+h3yumbul^mz}-2 z!lHlqEO6tx)w?7}Ux72wK8ig|$C|NLL}SMPtZtEmy(|aaD^#u2OaEI29*(}mxb$(m zHg7`l<>UjlCj!>=7X}5r;*BglEb6xH-W|rQnBE|tHVskLJ<3e04J8(em1-pMDq8Vu z+2}aCU2>xrlX)YjC{O*Rwspnpc#azC2rQav5-ufDzR_1!W&TM%V;`U14JI++tc{)5 zSmK>sQXd3;czal%FWH3ag#3Rg2N|E)ERjL?4>#BzSRD2&#fKs837^RwK2uH}8E00T zHS;-UNPTde+iw1r=_6MNPuczL6MWqo%vdS|ShxCf+zcveUh29sHrrh+K|xmF({={0 z#!EZ`r=yhxWE4}*TX608UD`5TTfh74r(aFC&N?5BXjr?RljqCjV>}Z}GmM;eeCy5U z36+oN%eF9NbQUOC7OKI0WN+@Jpq0*>dQ@2}F3k|h)IEPxTVAS7XUoIe9K1YD_Kd3G zM>^cavYe}qy`I)2zFNn*bnTQ4rfjPp>ScGb|KK)J3fLB8eY}2Zt;l65C&pjJcbJwK z>h2S}*!uCt%Xm|fU0QRs9=%sob7YnjPngl`5~$m`rBg~d=lh)#B8MUmOg;MOaCX*; z()D8QGVjZH4$HprdOvxEyF$~IAg>ey;UXT+oUoH@20gsWOKez=+`6gV9oA62l~amG zf^m-2X?bVXFJ~jV{FOR5%J~jyNSQa(E6vH9n=sKRNIBf~HCGs?V@kKPw~!AX$2B+J zzV6>4eMbL}X=oU~6`FPJl*2h;6BY{xg`O`NE{l8Iu8Zv0Xy$NE+u+K^9up0f-<}CU zKdq0}D9bSit=)QV7r%(gV*wZD1HBy#2_F)9eSdsCvgz0S;LFqAnV8J}%zQZ2)>ytE zg6Fivmdu<#H79!G4T2RC&#W~unx1SE;H>|V@ez;r{cD?bx{`#BE)sY($Kt@Pidcoj zWe3{!UakhPCC$!3R?+5ocG@7WK{q!V}_k~rD?msqr&$kkD znC85wxxQoD^AD^OZr1Gcofdn?yL&>J;cHKkxq9*Q9JoF8*zf)oS?&>fOK+LrExVPQ zeIj2j+N_wKw4XKLa6t9^3#RXj108Da7bw`59XgzDsFb^&%i3i5l^rz_$2z#KPuRqz z!lh#(z;sKlDYo&&;-(8C_1nTsm~QB>G%xPmoxa}5LydQikj>on=i|LT2wdExGw;^r zV@qt>L>9961YOW{2q?8angH zbN?pq^Bei!FIX(V`?_p9Uu;KRA8&`Ca&W`qojKi!)(ZD0O+M?r(!}WGR2~y?9`kRL z#J~Mh2wj*T*U57CzQvipK78+aD&*A8sT>n^TX%e;gdyubQ>P6#x@)soB2#v~b7G#^ zWq&U`sFCsT3Y*yZY!k}M%sd=F=DT*x>*Em$f90dl!gji-!=*FM<9kXxqu{^r*jvjV z->tdTlkd-)^HQ^jq0-tuJfKMG`rnBMHNCUkPVK)pInD6J)^9KTEt(|VR3sgyF8rkU z>VUk9ibg=Qqfv;=nnsi3jXLU2WEx|PKFQP^QHbYO4>EF(V)Rn@;LP@~*GD(PsPMse zLjk9{1W{Ylk6ug$me(9i>^I2UTl5-OY%fSMaoaRcXN{wk(-Xdab}eys*G@6#SB?7N zd2D4e_Ac+vL{FaV)gA6IXJ1gG7rVm~pG7hc5~3a$&o{Z~?A8^ikSY9=+h(cJzeOBN zUe;XcE_rkOz*F%Z_7-ww=Ypo)(^XrnQD!)SnfcTA4w0GjS+W97O?BM$+{H(5{wuZ{ zoU@jnsM*D&p`*B3)?z|rr}q`#X9q;`U4jJ)3@RqsO;BGePZ#UE7bM;R`zWx zudOqkv(QO?9_nyr2aULfbj0~2Wm{clGjuGYh@~=^Kz2Sy%#t4=NKRs{y zhR;3bBV4a;tabiMSUS1pJWOS%H1i0EwTVnVRCLF{VVh{hJT+IBIF^b% z@z*33R^H0-c-y%2rZ4YJ`OpBJlZ;P_s-FGLnswBJT`u&-#BVoJ7%KgJEt)Eqm zkWXdcYp@nP$*H#D_p=FZ&FRyo=+Jr9Z)&NpmBd{NZbYnooRCo+&`^!POb0uHpw(r%+2nxiL(fb z;Rxsz@$q!9s&Lt3W!3PkLMI?p%-2>_D^F*>PAMzHwrf_R_T3-T>_k`2H<0gjR&Q4g zXXEzf2&`r=Gg=W){+MCOCkHKo^9&+)ul?ZL?JvPAGH3S66HguVRHkaIXWk*xsPnk6 z_c~A6$zX%Tv~BW%-#Au$3h%A9ICIUpYAT!b1P9}&j&nTWEFre43j%hFzIy1*U;Vv$ z`bzJ}o7e64gn9WUy!GLhx!ic;wPKCB8B0f(&XvNCfg4+ttWA?q4cJ*J2I9N5WuqZCHRk|d9N83j% zCN9%4;re}nnCL693K=yG0yBT;p9>G{&5MxEcIY;BtuSIbeT?zkU#4Ck2Ss1~DQrv}-cIC9>=SstAO5KF^wtYei4?y> zd?D)l*!|NhjqXksQdCqpln}rqyTaqG!5ry&zRPP_#qQ1B#fjXO_fKt@`CoyBW42~3WAXnVJR6>HYWvLB(9>~t;%B;RxM89A zg|}*+A5ugysnC+7Lpt1~n``har;dxGUQ*#z@ie!ZN$ zIGu#pCt?S~Ck3}1j(*>{V}pFz?eiTLN!-l$JU&nT`qadVQ*(|`qiiTggyEOkh{cV2 z-p&>7v7dQjYemGx{~|Tr_Pr(bipGn+F$FcSRa{u}qsBwsRMuyTftSUl+`|zvxiJwZ zjf75_&1;IkG^^CP^`sI{U;=Xm3;R1`qu65k_@3YZbB>GJE40j68Dkf0T%j+nrhV+M z+&bopRG07|+nc$O)74&lx7Ahqko$6zj&Z?(he`^pbJtkRk5fymPn_|i!gA7lf&12{ zrI?d=UkBwsJlPzSByLkucqwV2_Xcm4n)k1)j)*m0%P$SLh_f%9R=`*@;{{*YYmw=t zwyo3mC%S3|9GtC@oVc*+k&Hyb=OuO`I)Qusm6i0*P*gZ<8OrXN#ly?YsXdwH(lviZ zc^^x${VLc07=Q2*yv!eFFzLsk6#X1+F2`&qAwOH+{=^sKhA7T+ zZ0A4n9+dj@Q{zma{e^~uTy^zFl*N~Jc+ZHOzassiv~Y}bf%C7$)dFQvf|o9FWLC_) zZ?ekePmf(#u~}+DVCcmBg?G|o1OuFEkL+2m%bi$sBcu3$V&$IW0;cyOrZ3jaPW)rS zqay#4e{LIN_Wl1|5(zr?Hn-d~*Shf8Z}@(=-eg0k!^2Y>_RX5_pnbxz;M7|UaSp~3 z{${5KJ%v|$nG<`w%w9L9Gwsj+R%yL#3wvc9_bHxutuO|yoBJA|82mY=~tbM z?v%18cC2dp>aEJ9_CY5?f5tY}mA9Y$pII-m`|sWNI?1n{R7=bXdp)?UKi0BaTD&#B z*7RC){|kl|CR&_sYrSU(pmF;nx=N;5q(><4OesG-&*DiwsKi2iROyLU-zGI*F zu{%mAY}W;4mRD@uEf*>u%QMe5_V`=H)clw+Q{v)l|E8}c;t!Yub4*m${QrAdA%Z>b zx#^UcPt%02ie0#7nV`tAF~_scttFF*m1mmNPnE{CiOYVeZ=I=h*67z3^`B>cFSt`* zB^b>*o86OFS3FzzR-#3bQR$nlp$i)3>8|;?(tS%?>(68!HRa1a;{SiJd{+s482Ck4 zp^OUCmo!INj8+*9%PTuuJ_g>07$a*uC=}hsw^ykW}czxHJQ>yz{J}BiX ziq(`zckVl|7i!JqmQ}8zdY{nmLY$}pA`|p9D>U$r^bq<9T(=&<4KOHn#ID( zT)bVW@F2%6;hMwtn%56-v@@HV_e93ue8K0Ut6(*|PWWyE1Dnyz7cusVdqM<$a_kXT zyZVYx^kT<_ZwDt8JZrggl6kjvAbaV{fE3fp?^#!mT)lha^?kK{L3cmAy<>6T_}jt9 zs~0xj`M=X7U3j(cA?|bW6B*}rF)-AAndq_iPD0It`8B7-cyhMvzr7`V!$TX>HEvtq zB;*FRMLl7OGnSondV0K*S=S{LO$?HbZMFCohV`Eik&M~MA8x!{vHSaNQ$CeDC*mBWgaXCcOeaiW|HFMnZQ_PIKX0CFinB`iy};p3&~1jx zHxk0%#TJ}67QIP9Z`Q8)d$($QDZZ8P=?>R&fd;qtx9+I+FFKI$K}{whQ1b(K!8iZC&fZN?Ng7K zg{03PNlH5ubD00Z0(nz``U_Tj4tUFWdhR}2xZ!H^-N`a8oDqWZ;!_%(>$|h}Nz4^) zWp&P;S-0~1!Rz^9Wg&JY-ZBNxx%HlvdGR!Mi!}NC<(-vpZ`Cc=&1h|Xl=()dWG7P^ zhgQZ6Hv5BS1$#B!nga%hEV?f&F4+*?VEIt0U3hojo}kc&!VDkU z!ep2Wp66b;@8PS{B;=#_K%k{^X~_Mx8!|cU>SuBotok6$p*3^GuLGBEGw%|+k#Rz3 zo>#_$?QusgIdmLRe<+!-Mtb|!DbX!K8522o8b&m)YI%D>j%H zRc_+qWzCxKPVZ84pUg-FTeE#d50q;_Oe~riyBuF*8Z~yJl*?z`evJ`V%@?ABlBK zojRg6&8)jZdBJaUKg9(VbuJefE_fuK^3c1MQ)3#p`kqFbWV`SZr>LW%(-(!woRldS zxThcK>&2ONsYvUs@G+Z?a3L8NaWiTQ8Ro1ym7PW)4WQPiey78-^&^=92K3^M+H3DgV14f5=~)g|UemDrrSSh=AqOyps?&jlsZ5B)CXO|iVpJ7R36pXIdRReo0S zn>%(>ov=pyjAPd)9ofO|B2-$pxO$)AA3FtB)$EsTg$mrJ;=2;(yu7ZhH}%wp+K19Q z8-hG;d1>vCXGnOInDy`q*OM|&#oafgMLVZ2TF><^B~9d`oNI!aaKZ7p2ktTm{g=^j zc2L&+Q5(S*dw?&g^kG#OThKz0mQ{*xRv!!UWH|omEt^DS+hr;BpAMF-E9z`x_KCAE zVNeW63duY#&>*+tf|S45imA(f>R${Jd9!q3sE)J!og#&XmwjJ0|DCSjJTH4vmW&MR zX~tW1uKOKwB2^pn6dY8Kp2*~%<22cc<#mvD0N=c+L7|B&elkd$mri*4wedfHUlPxP zOP)F=Yz7Sm7(5sa)GTI`H%r1ORj_StVvSK&f9S(4?zYlgRH~DXK$8-VTAzshe z?R%={U6fGxcaC{qs?(O@tH-t+ny{JSx$%_6ngSaPA{P8I)_J^HdRg4WVvX3=HPgRt zlwfu$uxNK=bGsej#ouGFpwn)SzuH!gY~j`o;*q=Vx}5lN<7VrcT=V$H%o-2>Z){BC zwH9%^@t<{@p8!vQOt%+{HrK(QYvyL!o|Gb%|y{L*qR77Q`_E{O8PA8G>R|gp0W$^TPWQeJ)T%o;(nJwT%+l2*s zkC@F{8Q$?J$e$4Q5wYE};eew`mAS^Q4CcId%9H$+P3#$jX8!QWQ4CjEtC`dI^;U(~ zhy4x}Me-g|2fd=EO!PI0>XbipK}Dp@X5NMk%?!2-_Y<7FmR@aXa7f&~anYHyFcuci zmkGrpmns*O8ZM|?z)->L@@MM#h2pvuyF^+TQ*LbD{#l@M=Gjjr`obrSFA3CC9WA|n zXE6kl`wG(A8-c{=ph3zx3=f%X_XFYH!ppGiE65bCT#XF%CX$ zCC9^m)sZu9!j&~?oMz%17%xcHGHgB_@Z+7*njM?Uc-C>wo0)mm(PLBmRyn85opFgh zeGN&G#zMU4XyOfW~F7kQQ!b~Z#W8A+YDjefe z=gM7(TCO_fl##`usJ2*zDL=))XmwP0~L=QJ63w8kbOZ!sKsMf#j_rl3tROz-9yVD09Uc|U6EKzG{{}H$>otatPB}ex})kG(r4Q+}Y{>n;n zz3!~+9QLeX3ii=2?nN+$2L#F9vF|DJIx^j{NX`5Ff{jHA=O$cc=1`Db(&sF2s6B1r zo6XS@GE4X9{4L{|IR2Ua;-aCGyrtY>m+KOr_}kHblHE0_2;q8+YuTb9H5%YxxPpseod*c z6z5#QM;jS4WVIv~3$gWGINBd?En~u_Q6j?YFT%;ceQSh=Ug;NYvAGk1C%IWFoz{M| z`}ff!ZgVF5{~d9NgW=YOdmIlAu&yjAV4IM|)y2bOppl^v6@Hj2nDtDqw4=84AJ&&b zTYm)Gh_b9>Ts`M?L$BwadD=fx=N&j<@?kp9ach@%DJyr!Gv+j!y!Db5th(!QTw>m( z=I1h{6M}4A)~_;EVt0x)W>nrAsdnd&_5E()6X_H9!)AB{Hdo*5OlX>Yz@od@F+leK zV=_}jMSej+dT9&O7G%xINcJn)HxbM9w^R7}l_|3^?O2(ubZXxF1Y<0i3`Y^tf@-lf4=6Hzr z#KfBdE9579{cf<4ON9FairmrkLeEIRKKAl^4yFcIYJAN!7WV+ASsBj-4eWt?nd2V~O znI|ZD`vvTYar$-hkwoW=pU1S1ZaLtVU3qMl_Gb%MZy)V<_lz0+(;qX=GgAC%dT1>$jGv--ZR2;I@MCqRN~XZ7F5|hAxnkpM-OWcqxC#V4z~{rA9Phjt(YbAFW~YP)`T!F4vUxS z(!K&FYYvt^cfZ|vVFBB|n#JNg{*T&@vb`*A?boci{UcxE*1Z`skBJ|2yncyeaixob zgzVCp3=;MVe@vK*PVxx+_+#R0+-RU-!C@@oaoI#b;-A;&6EeZw5x2vbZ+3sQ{#?lP zMM!9iR9Drej|U`}`~y-0ZJeF>StBlV2UeQ>G4b%X%rdbvX7plUkyzq%LodsDYS|PQ z$?RjZSD&8$H%pEShwn%9G`7kvno-Vd7Gev`K&6TzTCc~4_#iZU;j?7 ze-J)9qUo%qULET-=EH}g8a2d9Cbw`zI&-W&m2pmGmKz`cUc;lSjl((g&v3ED?KmXi z>eK9GGG*T{&X7Nk4sJf-!_}Fgpy44=!1CqWq!|;BWSbr-mDYKuAJTF%$f>bM%9L%E zHlLV{iuKL+s=VDI2a7rOmfYfY*U{NJH;OGcx_)8{2S=T}lGMrx>;7N9apjiNtdAR& zl4=f~Wh}%3f#oolaA~aOpF3I=@eU*3!D`3V)r*r3r_^eq`?#vF5M& za5$f3Gn>-FZAEGtOkoZO@@F+?tUb2--JusI9T!$!$oy>DVxlC>GW)QUMEoV26Y}Q| z$&__6wNIVGz@;ZW#cgj(k<&H*l{(^U&+X5f!tvlhl}?4h5e}aB4}uy*4jw!rnLU%c zIf*B~G|p>6P=(kzi-u#7zlGNMM@KNI9D3C>QK(?nl-?>41HBT*dw)#CgQ_=Od(jnO zAmHQkz^im6M?u0SJ2roo72PFCr)+q;_WcTo-e8(h6f)_!v1wv$fj~&+k0leGo39&K z1S`DR5oVBBmQZ)XKFY~M#$@e{4SXC{7F--Qnx?*&c^m{>s@ZsD&aGwfy=>yEp(7!q zpz`n1MH2&)1u@$kL_6FrONA|JVM!|ptBzlq%NHvb6s;9<%q@^XEkdOAu2Pf-OUg;b zMUqnTHRVk_3cW(CLc3+Bn5-=O!(E;;wUzzU%SS42HB7^f{0WkqxX{`mAUJ$&si6r= z&dU3lyvBDdj;5?qTDvl^B(NziFj3EIVp7!A{~U!v%e&c*F5B?eCYGm*t;J1uLS5_< zpGUV#M7!Lk3ox?sO?jHR-D^Xq$IS=@?zh_+brM6WPB>R7eFzQwe|fFSJ)^99_<=5%dSl?&(;CNy}-L+^=aRsgm6$wXF@@h{V zv47P3lp)>j%wZ$Z3GQ|Ro5C0hwrVpe_R1&o_VWm_Fq<89STkE{_vxn|Qu}x~L@Lft zYmk^No95lX`9M;@?7$D1;Gjmw3S$97TdsuLnesN5GQzF|9Ba~E^6h^-L(iJ)=6COi z=hRweIU3$htTy-{t$9N=(YEAR>Dvi@>oZg$F28Or<*MTmuI7x)mhK4GImrFL#HG^x zVE<>2yRqCnHmb9@&auTjI-`Dni^K(vB4uWV-U%UErK^h~JR}y&hj}DR>=)R6niV*B?g}YQW0)tj*Ccq`(l7hGtk1nlbqJWjeD3 zk8tof7NoD3b?~u(oaoj-p4Yj zT4$>n2xK!&S+Zq~gPhwhgN=cv=L8pfwMqSm3cu;h;TWL7$hJY3Ib(WI#rgkl6N3M% zZ2f;xZNWlz2MH;*MB65d$iB24+ZrcJy{wRbbb*WGG4omd0uLeHdoujYF7vldV4oLu zzWAl)`Xot_GoH>8+3qW16Jt$HHaN z#iP9LNHO1^4L+XBI_f%^`WGY@_uE`QSw@Lq{ z(1+I?mWmminjwd(O7=0S$Vm1d=FK#VZjD$PlJ+i5oAvIBZM#lCI`QV`BDZBCCvF+J zvrKE6k|S|Ze4;(aWwqGHix2x8EpbRMu@}0iY{ZpVY8dJFK#C=G`{74hQs)XxN%d%3 z^l4kdtmM^U4T42KT{tr$m^Wz2v94uhsA)PhuldGeKI2<^UuRyG40CU4fA{0n1&;-6 z4^H;aYErrOwN1W2A>pvx?#s?z`>q{UnUR~LAmKPY{@+mf7%)9(u>Pg4mnY=4S_AxK)c@gYB@tRcJoK(RN20~eT%5z=(zf9a-B3)?5d_Ldk zgi84HSreNAnEjG{)%SBQVOS_tv8>B(>h;5Q3Ylpey21{gPrkj&?U`p$hG;~IjL%`l z81|RbXL~$VX`YlaJJFrh-6+)gxa^S+5egwQ4OlvO(=X00uwaNfl^QzTAjPlu{*D!K zCt6F(ugCK*4@t8Xlw+uaxjqNcK9Zuue>jx^uypao%C6_##CH6`uC%i^8r+W#~0+JRlS=QpdSKRP%QX zgVwwcIRVo1yBwMJ=_c5vYA7?GtCo+r{i&hZZFWw?$=YRF-5k&7?0TW`sb1ak<3e!> zp4*S+Z0lqE$MNk{o3q(D1`&~ljIM;Kt?>`}doAa;PCVnPCgnG8L!>4fknoUV*yVwM$ZPQH-S^YU?eR0XOELDD)vNNw(-Y!d*;mMxpv%II3 zo6mJ^zc>ud`HY z>5q>ZaYy~Tg)6Oi80zhQ)F~`d6(JvviJ5e3x1C4vq*8qY6F|mM-s=&H|T8 z;$E{n&0}u9y(eL!9m|8d{fZ@hYmVo8v`=_*G-08s`3>tANQjlx6SCrD=91Q#OV- z%Ezh8w`|F**%G){WoOF#^JNTM(|PsgB+IT-SXk$>MTYt2H~iNh z5zU`GJIn0R1m8^yI9n4_Gy%_Rd|i=>YvkIygVV%w3DMCr%LMTgsK8=jpg0`GZ|iJy)11vX0}+wv~MT#2C>3_ zHM4&!s<=P+xLdxz)8nA?{z#9%AJe%GWF~}#Z!Hz~c&VIGS1H0N@FU~#gx5ZIXZ=0% zx~S8IMa4qJT2Ni_D0}lgo7s=TqOOTe+7=w3#9|#dZ9}fCLXk`{lSyqBQ^Q3MrmXVI zTl^OU^4JMTaMb#iSWnE{%Vy`Amnv4fNyqquQ7_A+n1f8WH>|nlC~|?NoJHV($en-I z;S!b&@Ot&a4_ER8WL~#%s2s|cI?cexVZq0o;l@So%rmfoJ*5Yx)ycT+58nKF1_&K4ad0?PDKJ7cQUW)9`YinfgMlh6ic_&OEcP z1~kZ?ns=&G!$LJxAwq7|iGoei4qn?soGtGpOv>5aKe+D`Sh(GjP2#TC?$wh$enfS}3!G;*D{(Z5upSrfeM)d_l z#9>Qyjx+jU5nCp&QD_u9WTf*rF;Qs2Deg$Oj7<-+%pHRym*k#Ekn66fn0fKKgMW9` zLmNS!r`h`44pY0mcq;T`j7w%}s!Zjo=3xBIb5Dc$VM>|MMxDChU<$v8CqH`A>3jTVdVCkbw|8E}5zw=abWST=RYjWK%vdFT# z$7B?fV&}zPtMqz-aqnG=TJd;=MFkZOT`UuKX~?`y6L4XCeVt1}$VNcqhVp~lYi@hW zeGI-ZIM!*moA^FIr@mFkq;s2Abh?c0vNRdS)`W#qLM~YfbZ2ZYe9U@ZPhsYy03M!2 zC(|8x!fmEHooL;|&UE=2TV{8gKZnhNfOn^4rg`wrnJA<8)%3v31zI%?%Zy#$Hi?NG zOxWt`w*E42pzPTr7L6H#y8E}=%;*ra*lQh@FXHO!C$Uf`&ERaT3-iTu#;1-;pLF?h zB2>tk=+ZxO6tIw|sKlR+YIf?JagCdi43eA2>FP00kK6!AU@xA0> zRwGxv*}ChvB^}g_9oH(HWeE1y4LrmqBH^;#(sb@D-Qt(R#fO$%|H4qbxw+_=?gX~T z#(OMJbOR;A&rV%p-zI5XCp4jMTS5CL&eAn`#x?JmUbbzqyUZ1_O67A-3ELLq1$N>! z+73>2bs{qw80IoCWMu61dfFKm^>ES?j-T=QEML0AdYZZe|NMQ|&G}++fzv0R9n#Z# zLRt5-aJFe@uyi8OLYXDZC~T=&1ZH}PhKs^t8Ojgp=94ErpfeEp`bxvn!ifhDEWIb*Mi zspvTYkJZi(%#_xIPjS+#Q=PPs(@AEZ))isqS&a3X#Y{U69==fXrT2wh&F$tE^V7?Z z3G{2W_E^>IfBC;6+g&tj_sS*Zhssk*U38YDzL@0`@hT=Lb>RkHT^2X#yIa;J$jjyC z9J;_0$oq8*A47JKVX0^D1FxkEcwQ{@?qkkf_3EZ{w6$f0N_@7=YZ<}$_Vw%j+~Uc( z^O`6B%xl)7Ie#+zy(_MHd@HYsI>^enQz+w8%G(47&GJ76_m<3iUdi_S!}ote5)+dD z=O|yg;ZeJKvy&D}?DqnnFG;-)`&R}!n(q{Q6=b&f$wH?4oMmTHJ^NdO>*E#IRezUJ zZ7%1i6F9x6%welZ?N+%OHXe5gpDAK9IFx6e7T}YKU(DJpdaaj9Zl?bEr3uXUtt%(V zcCA!kUl+W9*Ei8P=GxWZv%x2FAFZ+vGnUZWa;(8BY*L?qnd@Eo3)kL8iX{E8b-Y1*FT7uBbJUxh{d}fGPbSWp z`GCe|mfFoZ+%I&F%3LjYb+CB|cE--W>2zHyl>8Gc(*J{YaEQLW*$k}=SiompVZ zATVuih4Ac5%c5Sn;7M~mzRh|ut&UkCMWg$K6ie&c-<=07S{+rY9j5CXTBd!40>){Bi4Fgj-%3thth{v-X_590{&3Dj;N!u`ll1j1=AALVW*NYs z>8|}FXor6(Bl}s2O%_5-pX+z2ED$;ID#AzO598j~GpaaPsw|!~d;Vcs!hemShecnu zk@KnV8h)!r9t}Po-#-dWd#{OwuCE^R%{-5L5f3Ve1dR0%&ap|SXF8nv75Ab~B zFzgE#c#y?uvh(=HPRmYlPECIow^`cZT)a$~RTBF02h5jEQcQ`7iAm^8af-2-eEdN2 zKlNq0%a$%V>aMEY;QeLCfyEuBHyhNA7bJX0OyPX-a6{kpLkW!h+C>+m8WwuI@sOY9 zv((tw-%U?h^b?1%pWl3*%SXuauu~Kbe?wSNiQ;%M5Yj z7fNrvT~2tEyB;w4DIxpSV_8@C*Ngrx0T#0j>P&BTiLQLq{qpJ=9NNIZbDBMK z?Sv)FyzU8Kd02LB)qTCJoja%B_($I)Zq8nh6bC7dZFVlV_0Hrh3i8$I4!QB2>wuJG zdxG9Gm&e*1Hva>{7bJv6K8lx7xO`eU^Qm>5iAUNJfgd6DOy^une|&tgKu7UIH%q>Z z69-2ki`72^H`T`qJ3D5l$>;I<*+fbn{4JoK^?~cQRbA#D?+LHC{bf4%)t(maRG4Dg zc$z6g;7zHw@A9ZTN9=giqHacdg?_pe*a7Pb2N(lu4j zPM^qbX-(#Go8S|`Y%ix)>7LOl&&9wHCUNAmCkqz?Lq{X~iY>}%{Vxw>PCQko#;?S8 zS8rMKR;}q$-YmSuCbkVM*&$M9CbFAC4qKZ{XjCxt(NEK!(Q@jr$%Eq?=1efQsI-pZ zbmi2U=ib1`$(MG7SmEd`qW{V%30DdOi>iCMzE{G|?SKJ$+y zGBcN)$PkDOXe?Xbka75Zq!w#GgQcP{>vX7uEb~r_K5WP{%#$-xnfmna)rZV{ zjGr7%F}E?d$aMLgjn8J@ut?cWAbqBXnCy|b8m5>A7d5rO=byUTuI@Zv$@Gb1f^ZU( z9Fu?DLqTRH#-bdR1FVYE1U@leny@H5mVw`5LZ9B6L}S*Y6WEI!A{m_+*?fvP{xO^_ z?R8buf51?>b4jJKfrLTj%vTzV4}8vLPGNj*$zpNAK|`VF%Y`L5bwPJ3PS+{D(fif> zNMvfZyFP=(Yqf8WOPEu-R}I#&um|QbXdUq<#etaXQqkg zx1g}a&Pl@0=1BkBZnjFsFR*}7(~af3+evpnw=h4p*PLMtr`!7vDX^NzvaDxPxN!cE ze@c*EUbO=A+pE{+3QuAG!Tjn4yF;8~v+7^l->wXXtgH(^OEgO{87}yFIkR!?#L&4S z?3a0(S{05y{`Ty(jzN3F!T*mQGMrGhp3d`X`%jIg={FDA@~~*!50MbuG-1cdg>&Yw zIWCvWvy}Cp&YwGhzZ&}cnQIyuXP3J_kb32&;iGfnx1-;^fTbR-2jatK9bla3X6B%G zMXi2$z&|~12@@-SneI#$ZOtv7&ao0pC9J&WlpJV~F_-aPcyd3Rq9;qYRrA43>s;5& zGp#xGgSn=UnT^$*cLG!WkEYJc0c@MMYorQ0_v)-`5aoEFbY_Dv!-w_zAG58xZpPRa z@Lc@gKSQP^Qv6&BjG+vFm->i!^LO762zu#xz27a%hvit^_wbdR`V2eeOT|Pc=q+Uy zycl$=P|Bp_(P9q&xmtIxYUnDllyLLC^HTMkFZE%0Q-BHAiC!J?IgHA3LC)J%Z?3=L zksubxmcll(PD8x;p1z{B;f*UxA8;hf7epjH(3Ra~706>*c=+spUjD4pEXNN_Y+!F!H@?vsmtFQa6dF5LF12N(9P!R_$$Fi3nQH+LhBBu%Rt_d+|Acz^toGW4G5!w-ZalQ+_oZz~-&wdddwFuqe_z(iWIp_z!8~hKfD!VwB zerd0oGB^C=PaTs3Y(n1GdLAEMYyKhU@GaLZJTiVi4|TJ&_MKsG_xk&Qshd;TGP3eO zpz;JpiA1ZGbnbv|x#hBM?Hl}x*GF9aC6Zpv&Auc;hX1wjMrjX0&Z{Cj{SqtYP7yno zdGemY%{6RNssd~)4su*@e(|Pz_1Rql9!C^5+f4OZx=H3-gn@xWMD(S%`X%HWgO;vu92W0txh~+#u#jDZdy>P^`Q1mGh4WaC zY+=1>bb_bJXXldzT}fL*v>q)t2tRRHDO2@GM{mIo2yBB$YsqnCd@7tB`-6zKMEZ+NDs-bnD+IcTns}j?~`qXEu0MNcN|m>*`eaT z?_p~>%XS|l7f*3McR?P@=8uhvSvw9dlvj((3%{diC9Zi_zA`DNEuy6V`ALhcL$b~( z%`rh|nj-ml&2ArEHji`eO1Al{7q%%);LKSZTVL^`^HNNBSXiCJB1Rbp)dRg6ds(uC zw{ynr>C8HNc&SW)oP?uS=80&t^d67D0mtgtPF+w{HBS*+WyiE}sT0eT=<{tV+rkQ1 z4yE`r)p5O9$lQ=ubndiCo0T%d#KSuhjx`@<+S_iBeCrqE+!st%SMwMc)N0tyX|OF| zo40n-*GoayO*qc(3=^E5pBj2NL572O4Nu|)ku$~$EJD3YOO+J%y%IR^Q-o(NEepMayUDfZL{z?q+oHsZ_RnNI5i2M@ON$|rCLwi zCcZmYx?7@h@*ZQ`O4Gnnxh)17bK0lhdZ%SwE_3#DwBz-iABruxA4}!Ce^_d#W^WIvX1TdyGQ-0_ zi`zb13jepBzjN}ogTxIE=LE+0fj3TFJ;EI3!RU8JZp-bv?(6QIfW?Bz zZi~($jyulDj;p&iShyWO%=oZEChox2rfCihc5;^k<=s0MW=v!`S7FqvRQF-Zu7-bw zr}kUQ)iQO;&0uWsu#4kRPg&z?_B;B>fn!`wnzbcfDmL|BSbCNzRe3lw%Wbpm+E;Tg zOVmMEGA-(QCzT{vi%d9fpE@^-gOyRMe$vg23^(eIap*3);+-#IZ^FRiGk*a) z=UcJf%bkXt2h+azq`fo_x>3LGdPy^H!rst$U0@me@Pi_B@(dH)za=Cf#VG5lo8h|rv*{nKa1%!%8A1cOhSeV1rhxFJ%g+qt=c zpJ{o!X5t&h1s2sUQ@%%D(~_@GD=a^=>6Su@xP6fNsoMt~4t;L6TB3Ys!;?c^e->>k z@p8EQ>*EHek4rN*@%V~xesz2iG&h7lU@l`}EWHK(j=>?c(D-R25E{em_9HoJf(pS*;M&;fr2Llr~L zM{hD8bts$g%4qzl`N%1~^6L(3sl%uRu~m_7F@VywB&&r)4?_IemQ?! z6C9Z2m+@2=+q+(^T7I+i`pHAq8h3YWJY+KQKsK|m&Px6R%IZ7cTQGb-x;fzoe`}+P z=DDd^`)qtv9A+@q%(~RGo{?$V%H!Ag66aL?csbW4nL}}&(5Z?0r&+tPbop_HZCDoX zt;_d~?GLAbvVgVc{?`|s#dAeFQ!DFUm+)`RadggNlD+%ymaR^H4;A<&a$Uz zS|9Fo4`=%z;I+5dhh=8DW;{oo*nJ6x?=u<2{W)qroA9$POc%8=m~};2>hOk1Qm0?s z-M{ZZG((mBpQjSn_OZTTd#G~lub#)%V{&yuM?LpPW;Dr(So6)Z3-C=o$ePAxPa^LgGv=6f%T>^}U@7i7rOtKN*hcFO=TNF~0VW zbLI%Wuk^t2p&qlxgGkeYE7?3IdC$~*CtPdVyfVhm{7gvmkIr*kT?w3;RaY1bv|~iK zX-dtX!|bfZFTW=6>fLEPbsMDLJ-8>HmzKj=+wm%7=`*K3nMaHqOB?ia68oitBPxP_ z*)R&nPjFirRV3JCp%d2>6dY79q^_PSApE>Qq{6x2;dLd!_b;~;EPb)|Tfz(v*GFs& z3-4X+?akjK_-1~AjkcBmTXgrMoeO!63Npwnx)<1Z)pHh)(46_AA6EDoM}!Ga`p?q) zr}RlXgHy&v-!rc4-hNSx0W1>rZy7oj(;e1@U5d0>GRe(D`-#HSOLuQch#n8L2})++ zjM%}!YSg*o)^G1vhX!wes11lzkl_e}eob}I)Zz6ICTutZ&JJo~Sk@0i)Va~u2|^e$A3#NCi_ zxKcB7g_M(psER>4lW61hrefdd$C(cjliQ9J1l(W_3y?pSn7#It*DrSmryaZg3wRzE zyOb_huwkL`!Tt9gBs}E~{s`v{@RQj+%|S~(xUzp?ji+wG;@VZ!PA*cc?LUk;=S+3? zu=c4~ORasSVlES=8q z`<8z5Dwh{iSK7O6+hZ&DT5|3Tu1oxD%585tB(Z!oDf#5-k@oP^ejCNggApk=6=yo+ zWxJ@Dh$yQF30-$qE$wPlIpHCAX!|byi$A$f%+62?xyF2+UxKsw=pnV{4-+d6GMr+Q za8*8gVy=yfLvpBx{*roua)TF7PMT!0S?rJVkY5pXOtm)a6>~x5vADTDTn-<3tbY{i zq<4N~nUKeu!E1EJ=F}cZG3gD#Y+^P6Md}*_m-*!x?a@Beov6e(e-~HxMnk>Aq`KF4 z@2?S6X*?Ik{~%b~p6$$=TmM)ZpMC3QJNV|@6tf#*cZInh2u?F@;|b|%jGlQ_`{Jtr z%?-1?K5HKE@?v4pSD2oqJdaEBM9?K3F3lp&bV=oJ<+`$4KTcxWZ}EZS(oXZfHHjim z6xKG>Z{6SgrTM_YZk}yk9^D5sKYEJ$-i!@BD77$HGBD)91%?nkzwnSI28J0=3MOmT zh#$IpP^k1mk&eO(p;_z_JWJ{Yx}8L|#hjd)QvU>fY`8J!XWYY+-7TD9PHf8rEU)X$ zV*Ig}>74>k9_P9ja+#bLi?mb)OSld`oG_a)^I$krw?kyZ6nzEbMyZ9Yhsw0A*G*7M zIKaTkX(fKt%hrRhb*Ce%j3YO*q_{fEbsjmb&xQ*YRTwFsV1CKyUF*$r^r-MDk2~_> zEJloZGE@CC1Xm?03*P3{HM%_YUbpteTjq(f36~!7sPlAj1&TQLi8r!8k?s@V?_Y0T zvT*v7eL3xdezTSt*f?m+7CdN?8xnF|EyOPIzK+Fp<3ts~uwAS>qc_xi6YO?BQGNDE z-|AnCR&E&$AATsc!vAJWU|wD`>%*uC=~MR}l3Jl6 zDI?DkaB@ff`kMPu+#Zje|Kt?^Y3^+0o?QRP@z=BU0j?sv{M%hwx_p(7zvc{G{iIq{ zn2RN-Wz!`N`2`P5C0ef?U9Gs#ql>e~@XxjB)4RM4y-pc=|KMhhZV^A}v^rEqaNRbJ zm5GAOj0*4UHE7mS(R2y4l)84^ar#Hb(<-T#&+8pNeZchCv;(e_MgC|pe;3r%nbyJf zzJAHFn6nH|oU)x*y1aPbKUC)LJ{8Dr=feLkYx&(92kJT!c_*H{ymN0*YV1mj^G<3@ zjLgl=c@8sKn)3@Z7nVLKJw07*rOpmJ#+*mY-_IPh6q)118+88#qs)Y73N8UV8NDr> zCxkeNX#Y^X&v1RWj7s~HLjk`Sd=^Y#z7%+xLFM&?^bjTuv#>UsP=!Rr*7-M&Z*|LD zs223+P^*LR;jsM@mJXHCfijat6r?A+XEFw?h;f^`tzq)?PIFH&`|ewZE??7?50D7W z_`r~S%HvD544cMLBhH&VIr0+>E37vx3tJePkYl@GVb(3NZGNWg7ylk*&|LakqK@PH zT|Ui41}0LO-W9wX*sW$rc%QN>i1AGQVd683*>^!U2WRTUTR~ZcKllG+DmyrfZB2vi zLfb2qKbUN_@0!^hGydSksPgJWvXjJ-{QrK7e_j#L<5k_;J(LO06;xBM;j7ns?) zEhX$rm+a&@aovs0twAyPVc7OCNxnTFpOv<%&tc+}%`>yOnf4=RO`^!M_cn2dt_3Ps z`7l!rZr`1}epNTSB*+8>bm-de{ujT!z^P zrZG>t>cS<$$KxVC;l^PG)2U)I+=U8$%6w|G8lN)%P!M=yws5w+!@{QNvO5`APYAH| z_lHOoMy+^!Zu9BGzE5ub@%hpuwU)!E$bos)YF1?%OC9UZ+__>Q4RiY}G*;Ny|2p>P zbS@b@$+n6N-3;F6r`OV-l1Q|T@qJP%*nMRkj_ELG+6<2O0L_QLTVH_vNE z#YDBqOMeCS-^^fUx?k#>_{9FhwPwd=N0u&6LE&?U3g${Mr7w9k)#&y~fdk^6%gpA9 zH*)Y9yzmp7G_h zaE?qdEIM(>;_C_Zf95F(iIuEeMVkzI=cenueX+^ls?J)L01?jJg(YY9{?$zr(D3@_ zviN?6!h|Ivj>b_pI1f8X2s$tbxVg8vJSu9v(mPwj_um3hhC|msxbUx-6fVRg)yvv& zwZwtL#+jw(K+lG!Y_1}$->zr2h6{7-cHf}Lq1F%<)llr=x4M+)t53XxNejcg&;vWa zGO2zyu4mcK8gYBI!&{Rn+u3^$W}juW{MVCs>R9^{?wO%G+mCJ7rp0tr+y24Pt#MlF zh8il2-rpuZo7Bx!#NTZoWbUE6&}^69B{qXA3YGUywMuy`h+4q^fI;t(;AG#YY^F;y zR-14x&XdhjPwxJ(+f&8$@S+!H|8gR^vwAPu+AL*Qyv9gDC+Pc>4Pw$N2gIdfg?{!* zl*`s~$)C>Syt>0Y+iCI9Fmbu55&{RFrfJ8A%ywi-zwz)@(5y8Vluelh9yzQ$xQoY_ z<<(r>CCnQR-d1;>yW+laGiOeR>T1b?o3>NE*b_wVUyCrjv~{A5p}uUfh@`eDD_5oh zvxlLCqg(^myRrj06CbVZl<}6)WBzIw%+J$Uk?rv~IN)=5NOvpq(Ur{ksh1@+c#U1| z_B3~16;#||6R>E}K>_2Yb`yzTiCFPwEz#cTH;GwwZHem-Rz z*3Z@{oSmzk?9zU&g6)FD#hHRqB4(E*=38vzw9$4{@y+ni3bxBEUGiZ6cFhwjl=Nl= z{1S1@KYXA?ij#RhpP;KsDW}#QmP4yej@?_l)>YsMJM)JJP2SgdO8QR3?O67ER@}6A z{~UZ&_^cvSI7N3u&{@<)d|r6P8@)s1YExV9Br#Ln9!Kjj8vw5Ra> zF7HWxVzUa5te^Pe!iE9`tJMw~tcQOzTotbJjh@J9i=5ri361nVx>z%Yh#10x&h-6+eJR)#Sj^$xuGSde!Gn4#K4Gso|KLSf? zWg;v}_N#K9?rHVgIpdS$ny5{oZAT1_*tnImEed><7kpy#_r2~%UY7(vD79z^c&jmQ z?+Mi@$G^OvoyGh3%Jl7RQ_jeJcx{xf^5+!y_T0o*zABlM_RBc5U2gfXMCCQZlYg@p zd5L^$Va!zs*I@J8@iR!UVoK+Wr7qEzQ}vzMvN^mq|7y+Ddw;Mbj@@O+B@f59Y@AO8 zbavEV*kJILZ>QG$ts6=z%%>>am-zH(VoYM)*&3JX_QHUjouxCFmupCL>7Kc_lvQ(o zaBStJfLM`^p8#O)cN15IXOj)7SdeX-)bMJ*C5A-^s|7_J`Fh>5dnC$vy4h(SF(gFZo<| zo)i(iCsKJK%uCf~p)A7&r$CY5hO;58b3&Iq3JYgx30-FVazU7txY<30rP>TCE9Xu4 zF+p4R1GDwkD(pX>EZhONyETR9)HlsMho^q}FE*Wn$v z98?x?d~&#P>Q4+^-!;>n+4D4i?4Ct4%gpmnUEk**&9;(FK8vo@Vtrdp&QMH{E>a2F4P{l7PLp z=4@-c%-~yhq_)&MHAO=54Id}R%mo$hpILG^m{V9bL~hXARQA#2$AX0Wy2>@m$2&N- zTD^J1K8fv1VuMxr%LyGV9ie&RN?ivOlzr~#a>buj{I9k`D(6haJ+a6L5vjRBm+q(i z;{Fj;d9C~SE(Pw+oBRKKW%^Rh@yA5G)Re=aKs2P`5i7T_^K$l$G7A&czUkKHMoPH+ zP3fHS+jLp?d+raZ&R!L3Q`miLZmw&1|JAkYD0}l?_Q`eZy}mykmcLl?kJt0;<>u}c z0#^czeOPSPi7=FXu>Mfdb>Oj!6x*W<4eRC$Oym2$VY2_efWs;oifU5&3+5hf|FCG9 z>HqLB3Ht@-;_}yUGIx7B3CuVnx98F{wE#VF^DT`oEK3C%1QgUQ*|_@cB@W*gImBV9 zA!01LAu|55<>G~gC4nsAlZ%&lHngfPD7h@fXe;or%Ass8M}xnxru))v#S)Xv<$@tz z5|iw8A96Vs9O4l-jb1lp!{N)vraj=zic?^$ZC26w(C~APOsS}C{~`xJ#j2_GO zdMtb`AjQG&u}*CVn}p6GP8NpC7u6~>7joZQ`7ug6h>_uav^Sp<%l%iKEb2WIisZg> z8A-T$Kk#UK;2i8?#4YI*XDlJ1$F!N*Oo1^~L@(FDP3o`&2S;YBYCyiUX-S-w{Q`zy z3lGMF{*GK%By=L3oMZ&vFx00;JnT8B#=h;R)z+5Dlb0*}KgnFgB2vm5#*m?qVROR3 zI^m1=Bc0eSd|L{2>mBrYeAsx|S`2!$y6x2?l-O(!>88CfV2l?_VN(Ao%D*j4WKIl| zK#xbF%k+t}cPuPjs+^a^_}NIO>;Ox{+nVG6)ukLUQ|rSR*fz-hDi$eoQ;YGAT-g*q z%g5uroO7g^7S5>=anLn&SMv5?^y>_e5Wk^!hBf2ux%k-A_A(B+$}RJ! ztLQpy+cLpvEAMtwr!km(%8u-FA}rwQ_a0OJHC~Rlo|H=FBUSg zyAZPR(Z&Y`cASrbrd2XB_jk@&Ey7{s5-f7{;07@Tnj1o98y?PITXZ~a(ieu* z;6xFwl!@-lhr%zs^4ldeb=u~Kdu5oGB^;@t72@k&WVZ|{z8Y})pdE3$<({Eh5tDrVQdnk(@| z=Y{ZxtA#ntii~V$lmb}7mGsHf9zU0dk#-3TqSjDiviSbV=Gw0JQX7ARr z|NS@rqsX4_*t%(J?;M58m{aW-m9$}n>wX2-l>>t<`Ukk z-Dl(Vq_`DkESb54M~Ih2QejPj^KttfXVin1x=-fslCX4-XItJW>gOC%Cf~c%HgRS7 zhrQD!kC|{j{mbL1;89T+Z>b>OvZ(6Pfom!b-zz$qmzACs``;P)jd7`WvWf2{DJEM6 z_6aqT0`qL$Zz?oKGoJVxP`6EWe&$AZe;&IM@kPyv9rJ@XzTBu8#PT9AK5RDQ-h~_f z?l0k3su#rX`RU?$g?(EuXWea>v5iNAhgGJP{Z^Tm2IF+2clEI>%q_n!@vPo)(ISmW zT!+PTJ`1nHTwhz6WmPxXJ{RqaKG3w1acMLoqhjfW`CkPNEi}|?c*r}C_tmCZj=Uv- zhumLThK4>CXY+pMH{CwH|om(r%N#Kyx;p$aUK zs~H*AX}+DGyCZ2`pkrFHL?CzYLxVru2_<*^R=Jv)mw9sis{Q=o)`@>f^5KW9W=%`K z!6d26a*~5Z?}^CnC>D;wxA9?1S)QaF&fTUI!&0MiM=a=8LpP&v$)c+lPOYI|4sTR@u*ewHUIY@Wk@v|Q=RX}4pB z%-@%!8njAT9i7bLbbN^|>%lb};`jc09d%?E@5`QEjRS(l$JwXxNe4{HIUKw@>;~_d z8ujI=+<})F4vF*Wh_JgzJed0RhuoUD2S*zCpREZl=jgsa&8D1lvS*o7)W0$ji@715 zTcahX6-@cSwPDJK89yc;=+b!M=w~J7l<~@2jk&aLCDX1;Z0_=xVi~K7L-}>L+BB3L z=U#ycdNYKl6(BF9;=Gy!8bMuoU>>9CUayN zn0Bx$#UFRj5uea0b!5K|vra~Z{(pa&srsI`l|7rKnfMJOql5DW=1eYnyKuv?Z*AL2^)vR>w&fAOWOQl9Sr^6!V^*KJ*S!r`%uRF$xpL2Y)gxRK4Ww;WeE9ZoNm z)Yj!T55D#C3xCg!2)1{6y&5eAO^>CT5AW<;H=F zB<|bQTZucc>Fj$M+dp^G-(Hr<(RIQ#t8AEpz9w=;WQTnW6%xugaLbu@ne&mjHx70J zY){%xFtFG%u=p65KB)AOQ+N3uaOtRh-b9tAM8_yT!MnSZoM)_C``~5&>&MY{ z3+3#N75bq0zOARgz@sWNfp_Z0KqJPc?yo0a@@xF5^P13on(2`Csr>>1eg~8P>#WhZ zY;|5>{ym-NYj-?6sp7zVqoDq*mci0P7VL90rU*pu-Wb2->`tcFrQMhRviW=d?d9nU z)&8yhxBI&~)9npib)NTs+p}y^Tr2ZWqI1cXV2RJn7X;3h2(6i%e4?X&--8Efs()`! zVNdK)C^&J;p)n)jc2b>LwS1eeT+R9BxA*tme`j+2LYvWuE> zFn;=mB}p;diyrP1;YjgdQ;^^kO@Gp+WA%N)E?t(#7ytR~%J6)g!ZwrZ-8rv_3qdzO z-v97m?~U@%y%%3pX#9MsDW`MV=)oFqT^*h!_gDl2>I69W_8XWTs#9KEAR*Jq#rN>Z zrww!8Wxg|6d%^PsA7j^xxj1>iK`p`;Kbu zahkC1zd~jnw+Q3MgFkvtdT?mkY_QmA@#dVyw_`nSr{_96yyu{NV#CbIGUsKyZv||; ze_v+L+QLM$mJ>7HC!{X=A!L2%y~qxh)eLO{_dh&7!Fn`wslZbK2H^*aB@*Xbw3*mv zEIfVpRVdSj>vhsMwLjPA*swKB(BU(Mc1D%A&{dYN2SexZ%4kiDy(Kqq zN6f}LzxjUGg=8%6PbIrl?$MoJNJ$d`_`;3q8EdwX-t2{I1`Bl#sEE_Hb*_^n} zed*WR`~O}WJ71E~(YQTVXu*xuagEkLWi~F!K05awkMvpAF#A0cp%1t&%qGDo_r}CPK@&>LC7+*ZRCD^fp%S2Kp zaM}^3)@vn}6TF=+zj-lbQY`Zar@b#t#QF{9?7SHDd+&>cM>}_QPx-HXQ%^Qbs?Er# z&a-71hyT164-|En($`#5$_;*h;qA|d*KWw|+4ua~#YdM`_!JtPymiy!XH|3I-D#rV zTfA?r$lSH}{Pd&jc6ZCGI|BoDMO5w=IP0mH`p;qeLsibtJJ>b*I2_GxZ|_OtUo&N2 zi5B-)sRNop-S`q?O6pTIlYHzFf{0S)>iy6O*F)mc7S@=B8uxH0Fk&x{oYz>SoALP0c9>@uY7%`n; zWIuKGdei%j2maSTJtUSOVt1gMp`MX(0z+PNYr)!!3KAO{jJ)Efu&&@pn2|T-%7&(y zm)c&o$%&L@xw;74LV^mTRW@f-xd@KblH7TR6>X&rqYDNWGj!@v1@tH6^!;tZhFObNtREe zPU>~*N7tH9H<(X}6zpe^`@Vnj{CzEXyEZs*GfQ2%_*?TX(^JkqC5fs-0*ZgE-&f{K zurbSM+9^obs3@f{7Bp|Mud{8uvGbP4>ySw-dUF?U{n0FtcePPtmBE9=#MnSSafy2y z4!-(bsyFl3uE`qN4r~^$diY-#9H?=5=I|mVw>K;|tNYA_6qnyY{TjJlc?Vor>LWT1 z|7P4|z5DHQ(G9{f?7KwYIi+bux+pkY47ypsdtt-jsEbl9LLM9TIHgKPzWj0ei2ntT zr9N+1DkMx=ShATH=dY}oZY&zYA}QYf=!VP=QH%2LJ6bIZTc#Y}BqPo6K}DdKVcCxl z4C4EgwLB&Dd?tELc=Fp#vw}J6lZr%?Zurb4tAlj(WmF{8jvT!)SHY?|ll}E;!MSO3 zUzFV8;#iyGcSGxtLO|ZW?P=-K?+OBBxZ_JwFW#~(?7Ed$@WY(3@QcWwOLIhhoD4Kg zm{~NqgAENkPmAq4vOD)=Ns-M?fmv(;YwJDwUw%st z;p^ubZuphis!$rSmuHW_51CyjKlQV0;5#H*v+{t{ufuhc+LxmuG?z8pa(MIVqo+Y! z|CWnc%_WRqj>YlI=-v2xN;|~yaFnQm+n+|S#j^}vKJZb|c+T2&LDlM<3={L*+Yedw zG;>#9%(t}b53OO}zu4=5NvXKHVCiA~4SDCgMc6b2xIb4)#4QqU z{1tV<>fKeXVA-NYrOt7uuS}?8edniA-}x@E`Lu%k-bW@SB`N~nJU)Fs*nPIiqr2oA z^EdgZhD;6hSvrQ@BDxz}Icpv!Dt&p$G5LA7M#EC;O(D1L@yk82YzsLMS7K{wZp*@; zFT!ZZ=#nJ0U7+?|;mXE|UNfg$_Gq0N`tW4Fg5YNPK;hu3{qL@7Utb>Zxkc8yN%09g zx5kFVtZC{QjEanFK5H5<<=<}LYfAKC*eT&;@pi-1!~ZXAlX<}K^)_FKll->{Ig!(n z^Q7iWX^KT2d@WHaBlNWQK^*7ujERiWMV9AoKJXJWWHcz5RpNcRJL=L8epZ1^rJW5OY+uv668>6?M{=bb$28xB5Fu2h+z^tsnnvBF16Mp)8% z!O94(8vU&Q6*4M}`7NF@0lJk_J@3irS!h_Osi?5^+_h?!4dHvDG|8ts=Y>wKK*6P) zgmRb5jQ?#I3<65rdwmUGc^oZhnE!RpmMwf%_mX!fEEM6{{7Rri@6MCy&dwa#ulIdW zTxm0vk&%&6hwn>kz{?1aCjVQTBK9QC`Jl)t+H^PQhJ$Qj*F+B%y@QIj-@oiVDcZ2% zoPEh-4egggT;e>1`Z8=xZywdWQV`#_=+o629Yw)wy8rWA1mi01&6}1tX=g$5eMSu# zpCTji`;v?`dkegjGd<4Scqlk8Wou>;_imoLivf4Hlm>TfkZwF1UnQ8=qFk8HXu=-D zE*;JieE`D!)^b1KKbn@^ zA}9IJ&cq|{Zd>T4o!vqy9T!6$)a0DXF}@(tXCd$XKoSLM98Pip@A@@Ap)O3|Gq zsp@-JWeheiEo9@_V14nn7Z0!F#R>OLgnaNain(o8Q5Th8SfcgL!anShStrwa#%&km zf4}QIFiG?8#rEEGuCrS5b@vjP-#t?5tlw8GGfZs?p66@ik*ybil-+LsT+@vz=jKl}LYew*jVWUQKu8QcywomlC_elz+MpKna7 z>~f3!vIgJP#4jl_uKe|U))p?&ykj@_KRi)Y5L;@gYCLJe5(5{3zShrDjuU2vH?iR}tgF4LH+_<*D0kcT^=EPwfUAR_dzacX`$=6pN!?%+ALy4oHWAcC#t{L$UetB{N2JodyM^;UWz>? z;&XGJpL9A~VtD&^Kg|p-76IjgJ6D?y|BFeuzW>OooYyj0E^;?Qn?={@+q~JeazDp| zB}`rid-)oi+e+3nB|10UU!oS0^?znY?JO0G7Y8$)8QJ(AtrnMS`cQMp`rwO}&qbHS z4IiCm?U>4as!Y-I=H3syuH24I+F&8WW6+~z(@?Xaj@eD$?;m^fahZ+m zmyVT4J!g-*@K8X%M6QsbqS1nZA)P5{`*?@>B09_&H6xQskQH=+O60-U)-6` z&hySdJ109gecjR=)=9#mQ65~`^UmxFB>b37YvpUrrOgqWLiUNoY}(ptwf)#y>l39*mh#B2(-dcw_#l}2_kzE- zdUu3ZBB$klCuNh;jLdrW%C@~KCLEF)JO(=t3FhRADl->sFu0V-$DfyZx7S8O_jULx zdxr@xcC%PAGjHUUa5}iYjpwYiQ=XF*Gy9)54ZVVUtecs8T-n-m46?d-W##h+CUD|4bH6%Uv&~B)^S_{T$*qPeec|B!uC3^V62T^8$h<1=EC<$~6r z60>V+gsTLrW8ntJ4qZoc2UC$;{)olq!Hj$}d<6R4uQW`IQi|u-Toh{XlyieJTaI%) zzbj+3Miis>#O0E!;zL6ECUh^dI4qZTz=e}FCN`#xL(rGCMozJv!!b!FNrugJx|12} zAs2R;bqTB@PIeDElNAjOn;4npALw@3F^W2eUi3DR_m!<%!M4X+-o!FQB}OP@qQ~{P zQ;Hl?pBm~s>`Fb_^CDsneBGF~Ma*@Aea3o`u8SG>n44k_oG3c`~;dnex;3H^?{j9lLGwL&Qlrev=8;QSo^ea^NXy~gt=dcfTYAPER1hm>2&s=8mAwjX=Zm+|;nJbr` z+alxAsXVn);=RmqjW63|?CR3p7cf|OZQlQUXD`Rh_K{WH zVmgbt>Mh2YAo+?ePDC9PSa?D$c=ex4w%1Aa5!k-66KwDK&q{o zDW=(Pc8$AbLxKJZ104ud)Eoe3wWtsRX8jo7r=4< zpth0|!(kqA7KWDluhu-f9(+CAbV=B<3IF_ACdtRgsxP{!@k8j($KIL}?XZ2~1rsE? z@7FW4nRtF~iFwD|eE1vV%S^3vZ@88I9QaIU{B*f3pxXvvb>nqgwH=566q#U}xw#lEeI-qd~OA-gRE7 zMbEKq`J#t47z7iQ7|tB@Vek=TPGB*QViadAaA+~r6z9`wFxGI^Oq$;A9l{jCzH#v> zHi7@5yd29do|nAy>18;V9r@#qj{sj=RK%JW8V6KV6iWRff*6D=LK4oTNHBg53z_Y< zKi>Y?F%L#9gTtmi70kD{OK)JAP<1kV>8u47fmcFqBsQ2E>@Q%suddL#hs{K+piEe> z@X&%AdtXQ>YzTQO`q)rTd0Dhiuz;al%l%jx#o!Z~nwr89My;9;80TBu+pE;HGg`Yf zdBOdu?7Map99{0xEMufNT|Y!dq1{Jex{8iLvf^YD4FiP>FQ>_Uk*Pm8?cOZSuL{mi zv*a`CY`R%2R8CmG6>aO&@X|TS(il`9a^Y0IugcGemPzgx-^rJ7upPRlekpKV{3q8ait;$xQEEP;S2+BcL^7VUI*@YP&)#qpx~|Jw#! zl9mnuGFrhNshSF!DjQw5IN5r)%S_?A9S{;RK}IoRt5@HOpK_-gZS-$P_)Ks0F=bHJ zlsYMBq^TLfy-UG5C+gbm2a`Bf*uG{_Oh}pW@~!DVqedRX=(TG#N>2v*NZuD^^g4b; z=D%RT&J0Nx_Wz$hH?YR}@OOt~EZ4gs?#rg#n{i;9qIZ0dKfCw+hR2NV3?JV|crpgs ztWAIUvSDt}N#muZtuvS_X9-03%n&dy5b^%M9~!>=-3qP#xz1l07x9?1J7}tFSS2aE zGQ5!CFhyGEi_V@O_0ctN*D{*>${*)>&HURrPQy}A)Bdb8^EMG?XIE!N=4~$C&KGA& z6c|`5^RDnPNwD6}?-957r{I~0<&Eb5e|qYjl~FN~;O}E+O*WCT()i;le@Xkc)im+X zOpDV>6Oj^0M zef?uK_NLh^QF-F9E^xnv#Y)X544MubysTaw+HVmV-V}JaOrI@PV%=WX&pKfn1U8EO zi<}wUxwF*fzXOv<`^3p!CNe4}u1NxkClclCXL{vb`){GimGXqk!9w}T&J;}t1MMpl zn1wYXPO2FH*RYY9Y4FOv-rhl~!S$cTLS>UB%#Itp_;{IXXDQEo!u;RFMu}BO^nWpVyG;FcA&=gVp$XqIO_`eFf2cHm+Y)(qogm8WvCAkT6I8^r-+ME-Z>Qrp@ zT-W)%wEPKPiTB@Ff@ikHt2nL<_}jr@ukP5^-z&m7Wg^#uo=u8_#qZwC6dAS)_nhYmv4pX> z@kB8B77IK6iW6XOH4jLPz0mk7hn-2_rO1}BWt%Q6Yd-w{Fpo9oi#c31k{leLcs_Bk z@ffJ9R=c@fVo*HbXLg=RB!`{-=;3S2mt2?JRu(SrC_A^~zsKyqJMRQ?Xln`y$lqnW z@#(JQmh%c+UObT;d;n< zBFDKF&G~-4Ws;wT9GA}BI1V1h9RjmV1VU|?FEQ3lnb7?sYDU!JFs5Z|GNKQ$H|@N5 zPgKVyT31h^ndg(-;B70Hwv3L5S@HmMUF*<1o5PA>WItg)t`I60A%?bJawk!C?o zIp2kRS&7^YPxr2TZIs3H)X!t}#|s9X-XTUGOn3wm_UsjDV94?a39S1tu}Q|MH#_{z z-PnDb=ZSC!Nk(h96a*Y|SHCN1z>?IvSz@2sv7jWjMHXh3Jw+J~KRA~8a52nWmbr{Y zjDv^geTMM0*9CHQ+e#KY#=Pq6-qF4zilLCDuVVeBb6+oaI&oPXIlIW}E4xxdj%rG5 zT~b5(+vR`e9^o)BGg`_prEU8W0hc*$QGNdt7BIfl<17we(Q;?%N{-jTCQ<@oVjCtz zMp{ju@|7u{+raJbf%S<;j=W)xe<+f5bk?;=JQ*?GM~zMhh%hTP)v+}`t4wTUX1~p0w?e|{?wnxzyJTYEy+zx53koLv9L98G;*q8w>9Fa)0%uJT4Yk2dKqu`e;0xC z+@}sOef?#8-{yT#YEePWU7q@DH{Ts%teUk!>sjlfhgRBiZ%ojnmw$WEbmLG#LX^F@>O=3K-a3|#Mh*Gq;R_f4Y4Qo=Eq}h&-{gt$yfwXS zFPOR()c6I4@343fed*MS?E+^KR{lT39A2x_s^C(_x^2Y<9_2d|PP?{r9o;W~>d-2q zc=-i^?5zFy;mJB#4ebgo8vLIcA1`yxERhuMxGw1^G^OXJQ$(c28wW?G_Z%}-gLgB$ z;C9GRl~V8Yo0s{($L_Gohs#EnEK*pNHr#BT$E?o#BF{m?`U0;GgN}iLin_Xqg#){V zq?E9S&+=@iXP=tuG?;z9dlY#dGI5!;Jhsl%!bVEKL8Nll@=6y84;i1TkFzGsD3!^6 zz**IL(BS+M9f?EEO8u`wZMTUit>62i;Xy0sRm)X}k7xx5m#y!v=kATOk-ue=&V7vc z+WLtB{YDcTjrFqwGkY4uvvyRz{kN?ryfw$;*o2PHI?=B*%5ELF?Zkc2T+aO;w?NO5 zxYvg7HU@DATzv6|@uPy9N+IX(C2SH0_!T9J8nPL8+x@T((`Zop8>;+~S59|{gs znvF}@jr`(tmWXZWag4jQj9v2YrOaZX8enP$Z*tr z%AP$8%(VfDJ{-*gGEXlj6{%Dg`uOPt3mAHQcbgzkw*1qPiC20UHk|mrs_&0nU{K8Y zS-)9&+DxuSSm->w7%|~c&E5mH5!bwru9Y z{MEzu%^n?}+VhMuhkaITvf89`u(xTmiZ!>!W#7!#!STN%e%*P<#&f*w#1cl2tvcej zg!mk823cHl%(G;?`OfNQ@&htDT8qTvoL_=J9o=t1>{7XKD$Jy+=&s#d*V%hMgd0x6!rWBvEj%Hc4 zLXF8nCM}*D#*Tckhc_`On%w*q{b`AFpyH)Ih6Qcfq6-$aDjwfqvPMRy!^D~^!J{Ee zT!*7As3AHmAh1Q_kCrbZ6Ng)0VAU_v+YuH)yK5Zcqv!T)bJBRuV-nkV`ckx|di>6h z8+s~qW_XD2NlE(ku3}1b_aXI8TLY03`G34L5{nWGN~Fc+iNpyxaW9Ma>|>D9TPqkQ zA{Wr`SWMcT@5DJZzk`!m`EA%^4m+1dmO6(`YHK&;D>A*Iki}H0wU&2LY373(p|lH9 zp{q5@=7IiZ0cy~;XJ&Ua3g8zr7g-)9ELGwlyi&V*_2h5_E zc6<@J^|IGJ=8uVwV$HGT20C8^c~lvLf)7__ei8Ut!!042(Ur0#Ffn<%PvQczyM;N1 zMw4B;zn{7KFy8utVX{x#;-KF6m}SR*4dq|8I?|Yqw(h|Nr5? zqPrn{fgc3V#4}45aZLQPr%YC?<^8hzODf{i3T>*Vg>%J8xYxTMKYgUctJQ?1=!A-< zOiPUG@wj$*eWj~~ah>uf3U&G>Hts&KQc?VzifW%JPetpi2)1eOS4*^~GgwOQ&vA)X zP@moxa4~4E>bs8R#hg3DlLoYTIR~S4L=*;G{H<=*t?@^xvhoXj~!HW{E1xte5KdjW{@!;VI7O>$d z?O^$!kg@egL#@#LT{9luF6v3F);ulk87O_DV>#!on3F-8HTEV`K1BqCNCZCpc~7`i zL_xSf<(LcC`3jBKCsLnWlF;cen4mm;;%So^77J{$9zCs{>LKJ1aBD&pmqo$Pv@JYt zGBJ+JZ`#L2JFk=B?q@%vARibmXwiMez(YbNu08ztjAeZBBB@tz|Ka>0n7|So_;kaZ zt|_Y)N}q68lD*?YTelc**#9lQECP$CPmh~2t)_@Si!t6}nMTP}_VNJFeCDJm-o5cc z4n9%;y89~x3faYO6z$nLhvkEkrw!Aail|o66#bfBeq`&hSuUzbdvxy(VBAPftLPy2N37jzgg-n$8?@ zcY+?)N}Ny$W;60+VvmY!nc?#}T;f3U-qmHY5*{^iOZG)i6ew|%@SoF~>mYEq=y?vq zp;*3xg#jDCC8ct#e79hWK!BxeN3Zt(H@`k!YP|LCp~P3YfVBbrvhG`MI=ArMmIyE5 zj8Cq8`LahMnwMv}MA8aHmxUq|n8eQVE>OKU@v;C@81rFv|K^(K8j&Ts4!-Fg`zGp0 zM6<}~`G4NZtrigE=fk4F_*(pzLt{M;PpM7gU;DS)?YGp+mFNf=I2k$CXz>}<$;6+x zYUb75YBqyUL}*^A*(^4nD+UG=t(?!qH~J_zGb)4@u^2Hk`Iz4Mi5q5zqNFh*e;&>T#qG0xjjKgl34>!w`#Zr0Oz(mNS)OUjd{f!){a_k?;% z{SlEdDp3ec3~<{wIniGr{F1AVK=Ofi9>)ZD?lZ{6En--)bw&Gp&W$xi-7Whz@@3j6 zP3qZa7WghmLa5(J_R)sBoTu0(?AdoBRIorG>*B(i(z@;KePfQut$E7xV)BDNxTrq}Qf_HnDmY!?=}8vx7g`PzpW0sv zYO*&nPAe|qIO%xkc3IErRSe&kbjymJxU{c8Hi)sKARtL4l37c!$ozpw7EeGzqAr(5 zutb|ZuiGE)A8Z}Gd<>Qf2UB-UG+!8Ob!2Ltgu;b$m*1Pc+bNXSVDNeA0S|`PVjr&G zH~m!jk?;NvpQ56W+Lv)ElOD>%OPHq{tSnKld7^EQ6e5t*%9wF5sVhOzzGf}2Oi@%< zY?#i31cS{#<2WaW9pJMpnvWyEC`{`CXT)1m$9a>#he>!9Lnz-GX_~gd%logJ)-s$uZf57TXH8>9%6_LTuiS-~N`(Y;m0ETE zqpe$CPh?f(m+_tC<0KL0`i7D1gJ5s)2VKS0EAl@LV=EZ8Y-uQXAi(N$fOGlWS}E^0M;<(%G-pBcp6y>$7^S^adKgx_wm;^Wvz`6N zl%2}9-264tb6)8P+~tzad9b;>Gk#TLu>GC##kZ$wGJU9uuI^TCTz`7Y_IA#N_Obm^ zr^1DElJiQeba#5Zx6R4tk@6KVl$`K>rons$4vQ~N-M{mFq^C17JxmCe*vj}Kjx997 zF@j@*d%>NZCk`?m{2r|!P-ee^(Olut!QQu~#msLQS1EWlA5?MVjA^^JQbpj~n?t&v z9$X7Q=I9%@hh@|LslrY=48DhqZ%^7VU7?o4^1#*;=j_igoD1*R6Ux>7av56*%a+E^ z6_F36cM1s~w?F)#&0vQoQ$-f@H6baT(1dcv^aIYxN0@WiweP#did#f%a4WdF$h#z= zVRIF$wfT*2iHgA~f$jy1ANPb+thvybz9v@DSS@jJkMzQ?A< zItwk9@ZNm|Z{Hg&FW6C1P*UD~f5tYMBie~l|JB7gW`)h1Ey}_n#=~=C_OeU?0TGej zc?nzrJe_QIchccstsp5|T55Xa*A^a2C_pWZx&&^rDPiu0#CW9|XS=^wzd0=OIryO8wOCD$!`T9tO?*Fhig$bX2ZVcgTsHCb4+wW~=Td26 z$P{K~DtO9LDitpMA?nfwH;1s#H^la^N~`9pDqV7Qwtu~JztEcS5;L3f5~FFJZ`H2K zGaOHgQeI>9=!THll@nanZ|6qO*|E56*#e`r|JH`OmX5W)1a>7Nu+=jV7E;`yMY@qrT*7Z;h_z152WtV`c|*hRpBj z+)|5<1^4sMakFbo#H%}i4-P%kw$$$`nyUq%mI_|sQnQx#Gapz><>`y+E z58XWF`fkhoNppm59MZhwove66!NHQZ!MI>jN|w$vUlr*J{Q}?SrN^A~Qzw7zR&bGc z;1a)-ah7dmh=9S7{GRLgoVwgk26uLHaD6v8{**DVfk8U;e9Fp>h@-*sbxL>GRlECE z76xR=t$u6OaNJ;i*@yV;3QEfJ{$ylkUXzlsisz9$mvH_rdwqGO!gO(W4impG#v3ldz2PxIZ|<2C>O2gI?TUU7ldG|x<1o8!lm_qC(=M+f z3IY~5O=?uxD>|R^yXeB4gWc0g173RYRNY9?)$uEk_E2kD7$hohqL9gC$GEBcXOx7b zq@<*bf{I3=YV5&Mw$nnhITfdbv`DOFDqyfe3AdzI3}|#K7X?3@wDc{1!jj7s+=>AGN+u3-ppWPrNKDAla-Bc zmVI5l756dw!jkVM*6gLa5xcI;GArSAI<_q_`k~jguNQ1?o1QDqqDMBhoTI zgMC}r*OH3Vl9{qC;wwbf&Wo6FNL)G5ZSzLeKMU{9s}_82M6^E1Ez0<+Hgm?D)1?+JCy(Sv%)c1pX~W6PW8|^Mqe3ax zp_H8^DaG33bDNLJLGT0C^C9aet18cJ$S8r_os}))Z&6Y z1+2|D3N3q3?fhoC1YR0yfj~2c2Un#0TNM&|1dh=rE*Jh0m zH4U-05AH~?_8&2u&#_JIw#NO8+{}_a3N24kx<8+M$>pVJ!{NWdL$hgJQgEP#7-LU? z{9&mGc$Ld)BmqZ zu-@SN60RGxDL|ro@7ykL5EY_RDpz{jSnEiP5Z5uk7zCgoKQIhA!8do-fx?ILh>V=7R}KELGSP z&lzpmEMCa5dde5Y7A={^qg>~M*RQ=lzoq8r(gRIg5*kl0I$cnUn9I|mXuxv2geANo z!PR$*)&jHH2CfT!9Pp8kz5BDz&2ox+RAk{vrfbIa?0WwTEjE`FN;-uE@(+;7wjpw?%>#Zhmt0ezgDAT%KXGH{qCQtdK>Wms!qXrofW(kS* zShctkgXbcOF@jCLidRf_ApOj9`W)(gyLGdV1-A`&bieu?K2kB*Fi!eY)lJSHly zlLLLCug^GJDXK8@Ny226SPdQK$)0KkCi`>j*6~`Di0Fh_=4+Jw$!A;_`Ry0aH+H5H z-Jad9vCHQf1O|OzlXKg8OWlx(J#NLqmFt~2=C`;XQJANYyP;^^y6{7{S@wnVuTPO= z50zRneV=|n&6@m4i?0djlm+&(TyHtp#^KjemF8z z)hJ92yrfgK=W#S=$Ks_4^7DN!Pn=-$y5!sn`G)wFOdTIf^cw38=9Q=lO#2hnl#{_= zaM!b{@o~utj${)i=aVW98G#2itG>)GS#^i8e$jJFsiL5OK>jC_y!k>RVkUX(?Mz6? zn54P$NlrnCgWAlLh?oRVwV6*+GIEyu+%c)3Bqu;4CCu(ay~Y8bwz*S!c9m#)+}8b2 z7xAOaV~t3phQsTJ^O;gT?wDS(U}|+_*r*_LZl0Bo#hW!Z`8Jo{%wfA7({KiV}`({L!I2d{&Y(1Ka{+_~g&ar$lsxs6>Q_gapmi;NZ0tah%Fi zq{5q`Q^O&6@5s=6)(`B)7v}kjI7l?BcDxvFSA0j z8GS#v&RO}`&7I}Wq1tkvnt7AM>*9O&wHvzli`%oGu~X$anKmObNP$^aU;^Wb6Tv-; zcqDjq6%q_2uW2b-x;)q)_bKq$ipL8DcvN3TZPK{yB$6N;+q|zrueYGt>fjO?7V!%< z4SjuQSbr=zx~ye+K>PG-_7XC@x_-K`Z2_DfW)C$IT6+GR`*Y+Gi{j>J38OFifuYXj zcDD|&-QBUleI4t8h1*?Mh+pYg`Zu=qtyj>N8Da|>7(b|R%sU|XX2RUI(>IC)BQlvj z@-%rSvmAXPu-?c|!7w7gjktS%oi0EZ|hfd!>`j0ycjL z3JZRcsBahcMyV{@A(Pz<_ z8`3kaL^eKXdQ9UAuYy@=982B8M3^=O70jO@HchzNc`x&sb>7Qw-cRAkPGHjZc_q~@ znZXz?u~Urc{G*sX2SkDwd|oQVu)k9|rY9~#ytQY(&fJP($BZcjcjhuC+uYmlU+A3Z zCcuAstx((Eh~ViZGO5C*CE3@urk>+Z7I)+c=k2dLE1=iXt*ghPBeTa!qx*NRn@3ZE zMjS`&#fXzR9PvR7%8ak=gAN1)vPD|%o6~5|98x0H+g8Ky{efvgr@TaY&np84ZRurB z@0+52gjCll1^4=eP0DiWVmA12{j##Pf6cRKU0$tuTvdJHVcgsm3%IT(%#00g+VEt4 z)7+eb*hW5XF&TS%W~Pi28&1?M57GJ0=hOLs!Jy*d#91|xLAw`S3jATV=eWSq)88*^ z#Ar?72;%8&DQNiN5YZ`^_DC>+QSglI6Q!LA_Gh*TcSbAAJLEHX$K7q^sFh+qZDLdQ z#mQM~e#DG(7DjS9cT<8-1%)372(@W*;Wl~T%-L|G^x6)C%&=Ko_sg}oOlf3nNY2P) z%KRG4yrkgp?;8eg^5Uk(YGci(^c;Iaokl_fHX8ah?{rFA!hdiUzL zEieu=xOVVuZ&;0)pGjbO`n!_{;^wAVUI^q}Gp+EcRH>Itsq>@opbIsMEK|9T!~|^L zClYpZN6oyn9hyA`+c`p1lp_4JXL48hX!Sg6eEM>WOw5iaF%K#mc#>_lroBC^tEpJz zn5N>LP{S*`Yk4J4ifBf)!BvwL?>Kh_EVbJ4ezSw_!RduXPH)*y?eVZ?S2kRuaVqfU zF|TGr6SFj}sm#+On;l$ymT)_&xES4Q2+`uVh=@>eK6&DVpS#2BXvfMO&W}X81Mcc_ zOP2n{&dYh=Tw(F5!`;4Dc6INB2|Uyemvat#Jacr~?^1dg!acauND#fT;CW#Ve<&bZaS2paLo0+sY(w)({ zuij_9Oj9#&Y30U;Ck`Z3rnrZNd~j5-{ckg)k%AFOiSb&dMCe;xFMoa zv*GclYdW4g9DiOmnJD1m6Oi3%;u{hX!}R5HbkegeoV}ZmGfzYw zTsfh`UD{N@wPAK(P@9HLm5G+m@0AKMHYzJ!G#@#L-TGkkR7k<~=Y!R@-IL$Dn*|i_ zU%OgguyOji<=YNBeV8(N)r7T-5x>HM6u&fzmd96puI{j4+c+~`aSg*xZkg_+w#xYJ zQ{rS)ch_jw_H=74>uUaf@O|_1OCd53yLZ0}y1=w>k}%uZ>GFR3k{!(0t-{KuqpB?*U&O*3Rv+KFegTVwO6Dcr`izX% zFJ?WEW{P0k8uar+;#-%!3LXZNvJb3Zt+Ylm%5(pgLf*>P-VtHKtM`7ZR;~YjM!1t* z+?_>;rTDd^j>zAJx|sWiWA?>(3aneG{=#?qmpO5+O``R4f}<7GE$&{85vn$h;TvAGp-g)f^ak0?Ic9LV*SNDT|*6yz*YeYnr%g9u| zkI9fZ$ik-}GRc8)rK(tC?VL3}#(d2oB5WRST1{pMehBB7+OlzDLGz3GrW;aC?yQbE zqC78pMgIm7E)kxBSGwQC{weX~@HnsBVN`DKpSZ-kE+cEnm4Z_T!h4t*_0py1@7_F1 z@W{&xZ^EB3$(lw)E>7bLZC=yf{_)Oh#W2mQGQ#eM?-r>fXwN@yy@|J5L}Jm(_cqEh z)0=H77P!u_``@`sz;RDofM>MeRrZk2PA)t}Zyz0D*^%KKpWmIZP;ux(=kRM_k_%`oxE!^8ZGCu8C^=eqaPOb>F{CsiD9L|Q(a`bKm7e7 za3MN^@y{LOSsonDDoSxq9iBl`(z+e=BOaVrQSLq;_(oCXwezxryEK-*nR8X*N#(rB z3L*j=%bn*WJ8RZfr8xr3kyFS=W8tGdEQ!c!;JY^QpjN*flpyQ zCH&Sgng5Hzev76jT0C=Xl}(CdY}+y~Tw-!U)ro6Xy&RKH^)Kx)=8)i=C;3D`;A_g0 z4Q!8i>(8EcO|WZOlFc9Z;K+rxHD%s~S1YbxDD5;~5up>2ptEs9%>!X0#mR5pyy;=* zlbihEkc1we-I>64{*O#Tw;yP<-JD;>8?i&?WsVb99Ov6WTV}Rcj)gBC_(bzK8)~l1 z_I#R@Aajj>;=_!J$%ck=FM0C*coTGIcb#(e%c1~3>GZ&6tID_PYNtj zt*#fIypX)WGONYI*wcEI!W#t{;Y&Vm6yEU9S13Ee6J8R0J;r3oLLWz-x8aE^Wr{fd zB;|CrrT3J~xS$>{eBelRSKBO0+nd3uttoRX7)2IZT|fNHg;DcfK>l=own7$X8KI6A z8;)BKnAx-$UFS#1i0s&7)-dicM*ED~_RJwT5~vE1fO-s6N1c~>kv-fYmb z3tGSSlgpxDhNAO7I!h#$1byUvb4F!~PsaP8l{qRQb0UvT*Q!hwCCy&X*R>eSQ zfjsNRn4(YWGCB$-=M7}mgcdj$Fc>LL_6R7+&^hil?dG)5pr?AxO+_brK7NgI>V7=M zU-`AOQlVds#f;M;j29L~_voyT*%xShGUQ-TKw$C5mC8~sopuontqLcX%yTp{Dl%HK z;KrU%?Ug(t74mJYf}M573_BFkEDpYVCC9Ncutf4=dUNxdgGcX_RTWIm<6($1tYP~& zYx1Q-hnA}L%+4xtINJE7%Cx;y-0_Xze9<-MBg37#JJY*u(=GnohR72FIH&9 zmSyK96pAv#+0&xAb{wdge){Q&GZ!8dYDl^?T+q44wCC8W1kE+h20S(`EYUG{YOUMW z3k0ulINp4lfvc`HcxOg&6xVgfw=7CL9~5^>Hy&Eb(eCutLwu#gbOD*aTljCkjF0PV z*bseqY0ZUFhu&5W-3K$RqdM05-_MyD(5uX`{IzC-#KDS=h2Px_jDAgg>ELWX{hTzT z`fZ`FZF`m-a^x~q<=MC`kY(zgzl+w3FJQc0TDN^w0bj%2ZX5HSaH;=uO4lhm+p4dd z9~HazgYE%2 zco>&F*xQube|FCOt{o2~D)>u1zh%q{$~$;wou)*AW`Jhq5^gKWXF>}a&N5BwTWcvQ z@j&hVhu8<*-|CHT+vX(a=9Tgn%weodxYYWAFKyBbOL^&xuvv`~0z2YV*8iE(D)Lfy z2j^O0g`j`U{#i>Mrn~9veg1>TW5JO`UcNWp#w&MBY1+_f;nz9AKVB(AB4ELlJ^xq? z$~))HR@FFgnv2u^k$b|S5POGi{yhx$r^>A6%U-%(v}&V-6C1ZH(`RpiUUg$ih|CZnO!KL;c~zBo61swryEr! zY0jLqWyhY%Nt!bcoZuGpF;WdKI&7~C<#hj~Q(Mz{Y@aG?OZZ4mNSDl>klrZz zQ{5uF&{XKa{jkRqtTb~Nk^3e|HS!!aN^R8w-!rYGQ+7))NB#My@qQ}S^)1xAOMVQt9|5&XYMF?3%nJOYRA4Rz|w^!h*N1Do>W^DQIjl(brfP z%XLGt{LyJcoBloDYi5eJTr>M+$R}y{E^$dwcua3Y=RTfDU*}SR+s8d#v~}1&yM3Yi znEU}|)`!8~Jvt#X+}d}2-y)k+`=41tIqWfy%nS#a^9@TorZ4b5*f>klQe~shDNEP7 zdf_O&xe0!KRx(UGI{ju=6&PKOIv5)lq-Qa`ssEFo!IBqGW=o&d9V53%v>ODWT#guG_71L;h5-;q{R+wGZMm=>*)S?z?(32PHeE+-Ow1O zquuA1a}^5Ic=F4(hd17hta`|O(ziKI=lp8*?HBlYI=41IO?~bjv8KH}d|R#5v)C^m z(=1qSH#;2o+UVC{JI^rGgZ<%$*U<+X7e*?amNo5sAou6MYq?h*(Cw&X>D5%ZQ@fpqwoEa^~MjiKXJ<{+#=pxhAfidr0>p zpTWWn3#XhBE>+aHzk*3z;O`nEyP590~Xyjvl$DkRCC_$ z@HSb0h)Yqfq*O(&RQ~(%eHpAAj^bNC+O$mbWKrMH9U4)`AM=_~_f5@#629HeJ49y3 za2uZ8BkU^c(|<$Yv(f?e+7ma@rU&%4OR7C$zWYUG@yicypV!2ly~LVpF)2@WrRQTO zor-COC%9HW3IDaHr|CzdztGfq%S!wLJ|yp9GhjYl!vBqfCG+~t0~46P-Z4*5ygd2C z;^{NnRxY&;TO2!G=WvFLqwFP%y#E0Y_yZ2U<$1~b@hf3e$giQ^5Yp3mr_heu_aOC^cBVGJ6n=fUoxzMaQMN{97 zr)rS^^Xo+pFMXpF&3F06&%b7w>AlH-EBRUJr3elliNyv7SxU{r6z}>*UuQVJz`!)+ zJm(z&Ge@?^*3qq#9+cS^bhe1)u!S#u$F%MD%DZmM7KhyN6L^>*czB`v8v`-Dr2n`7 zCd}94{x5mkfu%w0;yRH9w>&tw1UMbMMfdA4>=8-e4-0B@cQbs3as6Uz4kNC~Q`iRMeeB=FDXxGEo9aQDTRj z%2#a``Fqf5>MSck4Iair%j42HnkQ;&s6UktF}#w&eCku2b0%Z=smR;hJ8oZK5vyUk zcZ!Xv(>p!o562#cP4^zYp6jD0RiU#`sCb5AtHpu$_U{rbxDBo+1c`m9W?^HSBKVs3 zhR%U?j7$eAd&UA;fS|ZUvYD={1^?3mj;!ZEuF(^EcI8y0Qw7Yn% z#%cwxwHlI7mQ*`QtXI$oSn?oN&A?)1h=WyT)O2+PBLfbLO9?Y3NUS%Aw-A#PDsr%h z6FSfkC_m}gCAPK8zT99-D4Bkm(`-lc+L-QhLK5N(JtE5-LTsNhGBkJG^Wju@!*;== zD)zOIw&V9p^ZmN>P6RkR3BB5&=%X6po3ey6#cXN+f%^T$A$gXm{R^&MubnP0!e%XwWp?Id>OQYw)NrO%tQ5NIjV7y+vUIfA@y8)TgEPt--;bdt{D;htHQX-;?BW&Zs*y zC{O#^;pX>j(cS+#Crq&3R}xyru&J5hUAsWQh1x$QfrW2)tX?lwDfq%LTgLmA^RdSv zFFyHB{P5?V`}MgpH5=IZo%=u7ujx8?JD24L^W&Py1}T5u9QyF1h9f}1gyVP~Q}Iq0 zkDU@B0#le(D|GGziY522{<}FvLG0HSt44XEXe?3_7U4%6| zs(tp`60=8AY6(58ISVr!9V#BIQ22lOx0r76Bu4HI$sDGJz>6j=Z@JI)^!6lvS21+i zU$SM+JC=y%u!SlHI+L8F^bd#~xp&1$V(I_=PT5;Z7=A?@*XR(~``d?Y3Kd&7 zyFAL|`jN}Bi&y#clIsoTDndT4SKpjGZ1Gxz!#Y8`z@|g@(8HCS%~En(pRh74SZ;K0 z+Lg@#8Pi_O{%uqe^=*fwYwN)d+4)m0Xr@*kn$p{FmBnvk_s>R$843HC7R=S-QI5@8 zk|46W^4-D(eXH^#I_B}@gt=F;XZKVDM|U{8s0f4>WK;#7+99JCZl1pRK%b-KQ$$X-->u)( zejN8cs;1mold2>T!+-1$BeTMKHffmc~(J2tQvHoU!}v(=>XT~L7J%L$E4c_%s* zUov+p*I#L9#MwO+>35bFa$5ABiTS!x<9v}f7k^at2rg8x z(`VoDnwhCJbKykoPP2&zI`#$$_}+b<>AcU4Lxjs%ktI4!onclmullPc_qgLl?|Uw} zed#l=&WEM;L4nTME87=NU0o9;!Yvu>r2h24g10-aX)LSXqrfli$K-sN&_E-Jm`7oX0{F z8;g=WE=dNP7{LjXmE~d3lApoRZF@WsIf5J>R%iIRyU_TUU5E)7Us{ z!piipsj1F>2klAd9+rpFn_Wu6((ZoPz&c4-q;YZBp=%2oA_}BdNco;~J=m=6p}*=u ztmn6H5By9R)V$LyUpr2I+?&ERL9K*Wdxk_?xW(5=d#o)}!*lMEZ0ReEd^=MXFW@LOdz8L7+ts4aq&?JN-9rQAuMJNE?@3FF1nH=# z$W*dl`z$6Qpb#jau*Y)Ndyz$JY%JKOx|&qad#1y^M8`&B>hntV{1z1vF#(RUx!32) z#2QRmy{y*d5u<_0@fMXtR-yQ*u^u;BT3Yse%;4TGcTO?NPkN3V6RS$->|-uQp=_r6 z4m_4GJQ*c;b0K?axUZm*nU7Wrhj#-rV|+btBkS*jdnR`OP)hh? zq_D^Tdfo?NACV>YTD|c${7VkA*-1!r2eF%V>=Rb{;O3P!cYRGKv)kndjHhqs-Hvw4 z`*vwUmrj{!O`F%OsnMSGe|VS!_i=Kk>sZ=|Z(z7=wO&MJ&wAhT&PMY_|9pnR){}S3 zrul@dawAkAT!y|_z+E6Dp>U#jP#+o_W;a623Bn{i;X>i_bP09Bn2T$v?q zVv#}3>~AluYbj^kQPg}eW~<4%`&}*S-7h#~BI*-$7;Tw(J}5unYn@U!E*1%duz-A+24&L)}qD}$d2cMAvCuw^jlr`yG|8?lHv#V?t5 zHsFMUiB55NLg@s?MsEGk2NvQi6Bti)HcMPbvJOky?L5-#!>mDLpm2rIC9hWRk1966!tZe*o# zB%#~g+0uq5=wo2^a zw>SB{F{ELsja9(K8i@}L(ei?P%<4IcGBYiVir@1)?MSWEDg6;Lbq!w$*T2}J^~;^y zJQ4&H`+ZjBJ}OBQk)NheT2U~4X>MNc4w+XwIsfI!aXOoHu5eI_>zv_ob4&R@p4iR_ z9=%Zt1&k+7pH`g0ID>HxBik~QLdKlXxJe$YeA4M{Ek`no`B<3eyRV70m}V$-;P>-& zJhBVeyd|cd?B$pKVYQ>%B#6b%NmpROA;-A*gp|XV7=J{xoZ-FrQhW=G^sjeCOZ~Pa zUi*GHsmg$@gpIGkXiYBnmb4vQ{M(Niar|y<$ji(8#`rPwq+r3*%I%r|xf_o+FdRGh zpM!HhtJ$x{gW^9q9@SXte6C6BwAwwDwSk92v3u#=S?^39vg9nfe(+Jwp%bDyH9H#X z8|vHG*REZ%HRy-kHLa7b)BiH9FzNpA*1qY))TK`BoC`%&bj^LY9BpSw&-mqHz;oyB zx5js+m8@wKKfHNeoz{3x;6&puo=+wD+fACCPyRePnJMr5YM=kT^O+qM*&d$MAl3e% zsfmH#n)$d~!O6?}PWA3{e$RaUnD@MIy?3tkZghUfe66)^TgSoup)3Z~3zYm7G~7C} zHmG#8-xKf+6<{-U|Nq+M{7+f2O=cZID!miFKM*PTrK1}@!Mw=x+qn;`G)`<0y|Ltb z_{l6Glfx%gyPk2KcR_ygDUC9_-o16c#_xu*_Pipdz#hJ z7;K{D%C_^DiHPe7;kNH?vzI=Xp7Z>XUhmuojC+kw@~?Fke^6o&T=KVImiMvarH2Gc zR6n%o6vj)PTq12H^yrd}*oR-)68>d^K9>?cEj0=WU}T!Zw}wZjhiT1TrfpjsbV~yC zb{?3N$QYw@ccE*H!|WiPU81ea9PNWHhb9(YbPu_Hk@*vor3{k;lgkE)NmH3TnDz-T z=U=wWG$6tHm~oA}k!!%kfFSpC?>&~S2s#=R;{M>7$kb~gJ43#4l*CP4%FO6@{qu&6 zhjQ*7Gk!Ov^WFE}SgTI6cZUS-3qOqKYpaSr$zu@I?mMOJE!*-BDIfR+o-tXw>ilFB zI%-s6q%5@lkwuRBS}V3&tKJ^hzCNGLM4-$-@wCwCgC5s%9%|{Z_&#P}N;#%$aG-(z z-c1$%6XFq#Oo`H+>`@u#okC(*T5C=22RR+O$>Egqt??~OIMaP0qs&XpQ@!{#0I9OihyHV7;+P~T+Ss_%O z$yrY)>Rz+*H3s=@e_d8PaF)EU>6>+2OR}lAZ?3@KPcs?%UasU{W-!Z+`CRXI`DN>W zOKoQU-l&q-yFPWpUe9@NnXh(F5^$L8<5bPW`}}zGbcXZRo4sAG>3b;sxzHt|rR*Xu z&0!lC+Z41pz*;gxsw;-a=;DFKZnk;0A}!0eoL5s)<**Sxzgfxd(z7s)&gLnx$D0p? zi0oy*Z*{m@<_<%|ocZ5(+>v}VJwW3ZV+!Y;qu*>9)$d9kzN0F5Kfvj_m#kd+&xf!!r?hH;kZ=|q(L(|DS%(`{q$Y`k2(x|= znYZTWp=~*qt(&!Pe7rF4O9^i&i|joC;Y87iD*t)6@98q--(F!EVY0=6L(H0S>J7%c z*6;6ZO6K+l{*{Xm;FvF3GD%{hg;4l>ze-8TWfI(Sj}l!4-cJw-6ZcdUTTmJ`-@%z_ zSNMjD^SBG7N_zH}g{mcPSXL%-t97bKqrrX0wZ7ZLMbrZpWEV$BOx=Fn>a7Bgz^#2g zlTG-!)^kpinJvWBCv)pg%9ifWxrclXpFaFR-$`X|*O~c?B2HA!dQ=%<5wJkwfrC)z z*Uu66ew4O-7x22SQ2!>Ir_Rdw#h=I%!ODzVPj2e}&~B;mAS`gUi(}HpuWQq8PhlzL zKCb^TE$kG}>zc6jmm8v4o=J2!KV#T&KtV}E;UVMo1BtICb=UitzHD?g+h4{cb?HFm z=NRr&JO`Cmbrl+PG~bzFv#)*9YsO6e1zR7iwwdv!%%G+lGQ0I{}!Eh<8}3F?*}GJ zWGy#Zl%y_VTs!56;_avV=E%JH(YQlJ;kAq(--&~JFL<9|V`1XSWS-A5XCBMTCN^rp9*RbAiUvfzw}R*h<#`l~zN4$t58l~LC)jr;YI#(8yj_z&ApT)tJfgukuU z&G`QcO{H_Z|Nn&ut+IJIYkG^q#sz|R{=K}Tc&72eogfbNZC1YO%{N#%7VO$OdD%NR zfo6I82A4gZ5tB>OZ};sv-dUZI7g-V~taVY?#xYFYrHWJBrP@d1g;*Ddnc^y^(+PPs^O)i&X;H7l;_2J?BU51qE({O-BprMcy`o3hI<`Q35~`Rsh` zox<|%L770{Sa7V? z+ZBS99$UG1e*QiEotrn2!_33kw_Y;LyR0-^FaBvKw>`h3W{Kh<=9as<<^tb-c^@hW zu8x1drKWhZV7zc(yuF}^!M8LjK_O+hxZ3-7Zu5Dvb90{jzp--O_c@Mi?!LjtW-Yp8>QVn@-W}she3$NcJJpw) z*IP(P2+uL8F{ziEaNlSS@5g{S3ys@%FqNB@zU6jZ>aCh=`Sh&Fw;LZkuUM3xnCf1- z+vB*nweggxJFeka{vWMlt2srSJA6oUyDm`_`6 zWd7RIAbcAqi>DoLQs!QLXVRR94mLrnFDw0+U?O*-o9)7+_Aioq*8Z-UB9{{$zGjM!AB&u9 z#7tIx#!CN+SvqPQQ$CuVdGf@_$CPEq93i()+p;+rnOZzPEevVWE|1qJDV5+YD;2CL zOW>jGLxH}kf0l{2mqi8q+HR2kEQGJp>q|~R zh=aru#d&T5R~8(R6?6^7@f{-QFT zT}QN!G{t6j=`L10aYd%)g7I{{#TQC=3R(k_U09ZJzn9IzGq7?V7v;BiHLY*Cd$xMV4RU z2~L(?DCN*n&$>K=hat5298*|og3z37o!~Y_2IgI_FJ*Y|XfVB5+&kgxMuu<9Ppao1 z+?}`Dbzx|yy4tu3Y!!#r_PTSe z5%^FlAGfvd$Ty9XF*e=TJvS~o-qh*tz|R*rbH}=+p)MD!Usjp%H0S#+D3}&2&A)rU zvf{>r4r&?`D|$3moMkXKeBJJEQb&LJH{X(a8yMui|A;cgR!RL2N?#q+)fyW7%42P8wD$YS`xP@jv-~p%EA?nP{c-!3c}6naO4{E) zJa}~XXmYJfmQry3j>S$HTGPWUTy*c9a4}pPQ^@be*uC#fUC^VwCgPJ6yt9~@6x$bx zPVN7EqxyINFX!or!RG__KJDf&w+SdY`yhCkk5|OyD!Elf3c{^r!7^d|+zcFD%EEen zO!51UM5>=UV12u8j=_YqR~N!#zcM~jJH*0Lto_~NM~`AoRlO)5vo-te)S9zfd80*5 z_4iwND>bHs9TPR!ILCU4gtGIqtI{W`zt>E?xyyUjZSfMhTO~bKOpMim_9!=+?G zPg=+vvqtxL^MtCZD3O{D&NMO3apsgfgo>oDd)TUHsPqhH&nkGi&P) zwVv(s)M@;w&BLergLO^gwiDcP25hHK$DeH2?#JTNEt+>B?Dg|t*4^h09MNdCXVu+f zoZfn}xc>m_n&eWp#!%N7m6JkcDPE0-952kOd7V(2(lbwdS5#u6=MPzKJC3C%`_EWz zk!C&U6+2I4yL1XyPGFC_pOZPugA>*@_oNeSn>Ln7?r)Kv&h*jGyH?Y)U;Dfye?;K1@Tt$DMfbFrXk3UX zJ}ouj7Ij1w0A-@%nz4r;voV)d6`Sqo3WkX67`cUyeH;9Uj;tbY<%tr2?7T zOBoX#!h{(LTE0vx(>u74RYvAsY#M8#>w^imHGLOdvenMB;Iy*Y#qRv*?z+h?>P{bO zjwsgm@6y)V!73j2;a|b}*2oUFM>{+krfvAC5N+49Wly=+^3x5NL4>K${C0H+OoAgcd@Ch_zeEMO{4aE;(!K+oCJ05ZV zvD@K?u~db~>bPhdZLPYK!D`{n;L{)iuJzN|qzqAwh-53OKgWA6(3 zs5@9>%eIQ^VA}mH9|Sgdd^_@%bpi7d z%kp=p>TF`wq=JfLnsOFi*Xi)xpX18LJ%cSy>zc^yoc3ZyVcSC0qfDx zeewNLlz2E0mGDR|B~<#sfe>;x|j1y8p1Cz4xMG=}X~xV=_`sbx=? ziPOOyud5a~89ZDZsC`U2=h4MxpMQZ5F0d6YnX3Dsal$ti#v|+x7t8OSS1Q>na&cNf zT~J5uor>D^ocAqF97{gSg-zd}z)%#F<}R3c%J@LAg(y2iW9Wmod#ubpGMJUhE4*uJ zbhoG#{Ugx)%7JTlxv62v(_OJ0OD zti5rK)Aq4<)V0+gS2H`@!l9YII;h~mj9`iI#8<+N=M}OtM9(>>I39nL`s!BP4;2Rk zQ;C$5H~k6>+Kwe!i&QRQanze%{Z3`;EEREn7m0U|9#ii=6N|3X#OL$b1WZ%wvY zWMR?$a;}X)#G_ith1-N$uVzn{&^X6bDsFhA^TDZOH@$l}(RA$0K652N2A^S0`ncJd25I5;a- zzTcp@$>z9;fRRAUvHYP z)NAJNc(ZASua^I5g?q;L(h_c+6xeXv+2qpQNjX;A?Ki6A-;c@5W52KRTl?p~#^e99 zJd-Z}Jg=Q>aN*J;uC-lTk1e>c(`JtKS(SSW7-z6qn6jPwyoXIfMnSMXHY(DrhwZ<5 z<5dM|`z<>)72|{NMJ#gP>-yPbUn#@Rym^aLe%HQ#-8z7vix9n z_reYx>9@)n%nqzSUd3{zU1TiqIAp?P(#RPibxhDDUw}8X#!Z{!bs_H;i=2x&#&7QF z_be`}akk9ivXx7_Ahh9O*Bs`9XY<$Ivqt;ntox#8DbB)=~>s?%? zO%D`K#JtS!-+yR*N)&Q;Fr6%RnJ4LrsS&q-_~-A ziWzlk*RQ{3GyY$=?W2Igr3&U7FBX_^g#YT@!!GE(v?JT+=2lgiV&|5`tAWQ{8vJa$ z!sfbX38wo9J^Y)idD&6p@c$zhwmo2c!57~mvn+incg}3DD77MHwjkCAk*-mRaw#$$ zK^roJB@e}ISCE+y)OInV#+v!mfdhB@p7KoQ2xDIKLDo3aAucdiQYWU^VvWO=q&;Gd z+jRZd8wF0?=9EsK;-SIUQ^3HtE?nRxg}{F@v;4{zy3b0A@yHFjBlP`-(d&;KzBLzx3|~MtzirK;H1ha zR#dq`=Ft7;8jcBjUyEJ+khg22#{4d;3-y7^L>|cLzU`UkusWpwj+D~jWR~UjFGXg| ziS+r=9X!GOyKnf)1vQ@5E_WX?O@Cmazf;*Fr@66p>oWhXD_v*J%TvkuoB2q+fB9yP z6}6uWFRN>G-c4h6Wk{GxD^lOo|v&o74ps=7{(fy;m2c zT!Q$S@@Cx+ukx_ow}k8VnGGSa$p%ZbO((_PF0NowSIQ`Q=kru$Nykd1j-(xSr)nxz zT(&q;(-dmEzKKQVQT1<*niPkwj{6THd``NEu>4opGa>v0%cGh{HAMl6(^*w`PKp+> zK7K3{a-xAv!?~z+4%?F_?4m{r>^c)-6xG?EiZ$|_c*?P3(^A2psiqf9g?LYAFl%EYUb@ z_Wbz^oAcH8?D#(Nu!$*XHOyM^)#ScFqAptz>-iK%$xBB=zB4Ms7_6VaWT9MW)wX*- z^?I`ycdB|%Ka#@Z!=eydv|NToQe0#!hi|-U0?WM#ZpjjdG8R}|xfdI-La0!sp6QiF zqj>K5iM0&5+>FZ(m2gaLbK*E_!(qge$>rUZ{D3Lu8b{6>NxlcAia*u=mzXS=!dJlI zHr?@wq(NAf|DC9QZ;kLZ^;*%~0W33lY8ellzSlirEmP7_rsfA6rj9W$HDVtnBrjg! zS?HT`V@0vW{tq%c)-^sjJ-=q-Z8i=|&us3SVG%4c4r)Fb`zC!5?zzRbL80bQl~C(+ zd80Oso(s*1A@jtId-dgdg%WmOs}ad@=HtrkHYN9$IFV1<-Dy=HrOUlpot zak1HR`LLKX(*czUr>rjBh1sWc zKg}``6fsNSUK#RFEListhqZM>?-l+HtzrKhIfd1ft3(4VIt**t=d4=Oe|7%%W3@R4 zG+izoJNTl8qd#+H+(tXm2P&Jz99S6UPHM=I-eAP;AS7Jj$f9zdtIkzQMqI{)qwMU7 zlWdG16lF}NZF+X2{!p%f;8}iVLHErmiKkp^xGo1WDabh4H(Z=;m0j;Q^@E;5%%$V9 ze}8ZAlnHAW@!nv(&!zjtqFF3!I8L07j9`8FGH)G+=(S3B!LFhW6ECS9*>m~N(N=~N zy*6)!^#YpDt4i2vPSs&tusrqe+i?HaFC9A-zL^QUeW22@i zTz86!Wxqe)f$6cjWH1|hCO_BI8ysCHYk1zUIGnZQW~wSxU}e2765uVx6(HiiRQyB& z|C;w-yV+H`Hf_J~`<|ap$l=3Ne^oUcI3&t_;#vN~aKU(z8X~KYByn zLzl3yg<^Ma6d&5wcxZp+F;SK~J;5$Y9&1@@wN7m8o5rHTBJ!Q%^n!?WHFA6wHWC#k zU()_5HZU&TdgI`2_mCSG%@X&iOz*l~(a6wu#$xsho(}$Z_gj8v<#OD;saSWbMX4ul zMg{Z3ga*y0HU$;4)WU3RY&<3>Oqg8$?cRaUF{5K77r!qlYcCTx!KdmD2wYPfaq|pD=k|)16R`OC<>pY&YGJY7uj`c*Ocv zVzaA&j>{;7)*2J%h|&foW=zTe?3m6)-#B*kR}vl)|FX@^?zl&v#yjEDQ|z zRE)wI^bR!hs3}y4uPHC;`NY7wpF#0btnkd;VGpk;9tb>te8cHO(Fax)JaCA}UAUN| zrhK^!4@;_&U~sCN34>mZLZ;ibA8j57S`40Q%uV^;DG)K?(PzfGX|?m6-ChS)2XMDP z5EDKWk|D7lJB{b^h2)a`dgWg zPeksp@w7%eaojxrePK3#moKBCgu>mIIz=apKWSPBXeiH+cw#JLaZ5n;#T%=wF5J_6 z)Ld%jC-r#wEjP@)gF?kUO&Xu1{kMn_m@G$*^$i*RbPp3@l6r>r#|&Sn=+U<=FF_;op(&eaVUAkR%rjx0ui0MT}hJ_8ehg8?xjS@0Gn4hy_n_T98Q8BK45%YTs zBL3LfsBpef=*`gC$zsp>BV#)=*SDITI#VP2172PgXSw$8YZt@2%Yr+;Ux+>|)^}1( z{?|{=M~-(K{G{WS_+8;r3Q(0?%pVuAEay(kasIOWRvnt&_i>i8Pj2DgMy^8fRQkxbhOO zNSA{Ki7iQ+!W)xx1hjd#EYx)5_1n}UYSOV&&5fN|?3I;ROJnQNPaSf{CVNGA2OP+M z)ajuwax_MymA{)UX8yekE%L{DoP$H6D~@qru%8y8($f7UbSwLm0Je3SOx%SJ8koJA z*g2ezDAfPZ+ry;#JjY7e-EMh7Bwq=01xw9_2|rs{jT-`ZG#>e!KT)GPB~qcMW#beU z7RJq!dTW+FwP?xs_P>(9N`z%Y*rAN}Ed~7DZ&>SJu4{=oW>&)PbDNFFppb3V1{Tip zMY25t_h!CeXL0?(b@N58@U??`OSFvddDPbMw~MI$nc}v9_lEDU(vseRpq(MGHwJ-W9$RCULM; z;Yr|$J82U9m$Gc6#k!Z5&9;>~xZ`-$X~)FO+ln0uEZ1*MKl?}`P=WEtq03Si>MzTk zDJXV&_&RfX>B;^2O+v*Que~?jaWi=ByvA2Y*Lt(q0*#$++4B>k@4bA@rDY%_abIGq z!IX)f5{++IFP8|`O+Bb{=k&g?#p-K2yEYwu=o8@=XyMw$(eP~kGU*us0Rd^9?*Aqy zKJ0hN?s<9Cs4(w~N0@j`C!2A&;6m4FF?VlXDVVh+JaF!T?u)rO*Lso#LMzWdt7ZQ^ zkIHo*j-B5EyJe>9XlEK!cr#T(QAh*9#6x! z&ui%Dvzu^W*4MRdVbvWW`_4>C2?-MOyEmzsx%r5M&7p)jv!gD|5mn*Qa-FCz>v3s+ z+Z;v<|^h!Wle|O?0h~F~qD;Q9FO<;iR}1(*i4B2y`6M;?!hjR(85?F@}VJc!gjF(M(H3W1-EQB|xtSs&J668Evz+1>CU1Hxo z(fWt#JqC5r#)D_iy4StemVSU_N*8 z#2v~z?4LVzx+w}ohqSb?w6HJP%O%g@b+GZTkB-u(<)Pwsh8BxeMZ32bgc|uRVw=#p zIP%!;cJZ3ySt;Ed-0$}tH&15EO`g>d)TfZ$eD2D5l{MRAmd_F2c=+LBsm>|eg|ofx z&k>n_bkW~6jU^SDPeY|6yl1=a*%d1o+45F*V_dvkbA{_c$(f;>JB}xA?zCg~&R(Zv zV#B-UfRICviSpTh0v-V_3#_{4U-C&7;FuZjAZ3%1zE#U*Li+vIPK)CWK8*>-8~6np zoV@<}S21{pzqu??x21z^@zR|18E;yreV!55R`1CXCpCeylO^oe#0l@7U5c5dBQSwu z3J+W6)9Et=x*O&=id0VU?$e#WV2LA}WXg&)8_M$4Cv6E(m>HllIY490w%c!e19aL0 z3>qCwsLZ$*#{yH~5u z{1bhKjrP&?R?H_qe!3a7=*+$P<7=PJwsBDr>8xQa`Z=e*{*SoMUA1#M-Oi2Pv)0y0 z9B2CAXS9d0?DUZZvisTHcCaf4WJwtQf8e%Tbhe(|p?kZdMJC8+Y99-dN_@-HUaC`g zr`u!6!T(Hq5+!80Uxo_YciFK*Q@%SWL1c!m$q6yz?%tG!dX@RVXEre>rL$IWO!djx zx^ljUZ;5!L{2eY90evQY372k_53UdHcszG~a7)2CzQF57^s7Y4C4LHy4!6E3+)3cj zOiu7|*gM~bQ88?>pW|A;QyctLbVPZqbvCnKiN5CU!DC_Szu9fdegy>wgPt6&XEp^B zECdR;6Ev2p`N?rI288shb-3QwRQhl($k~O@!}-Ua#hfn!N^ZPlFket4-1XqQ7UyBf zdrLm6S-lUP=dj|GM1_LKq=I*WyvMm1#n`p|jYODt1UabLs;k&;2$-4q?#0ammFKfx zKHG48!b^dU1nv2;ukQT1u>RD&pPK`eHH)?|oHB^;eXN(#tH(6OV$w^GnKSl;{MJa| z%wP(;A5+1|-yY%@<`Wvsken8h{418P(Im!WHM`rbPoI-=nvWT1tVo#NIq_Sj%z}u_ zpveu4`rg38u*W4_h4I)Oy51+WXMK=#ZEhO!q|B-WN2{ z@L3UaqMxTnWkX za}wJMRZgyG)le*{XDs^|big}c^&yWit7$<(B5ycE#Mn|SZ1x^DkZp9CYVe~#;>Cfx zCp0cLEq#%|-?_5Qt@yyENUZXI;qQP)~)AUYrvJf`ZT9 z{ZzSBHE-t@P zOQ*qN35O=-FObx56~r%tVdCxKq3HP`;L%Cab`UUM&Fj0{Bw)u(c(j|;ux-tRbijzaw zI6?%Daxp%9ty|5Tl9KX7Ktw{ubix6*zt8=orI{wr->Fc;qG!R;>;JLN{y`{%d6=3~vq zhkZl0uzF~0Xoiym!ylI7DNYafW?ghywXE@HjOd>Iwg2TMmWi~OFmkSl75T8CMIfU1 zHscjGU51ZOXT8&sh!>u0qi}3SgXiI;x`rZ7^8I_H?48}#bTWp?$}DWpddim|W6kQI zvE86^yJr9=b3px*%0HQxrp8tWzYw|*wom(jAKR0EQI?^c97ZQ%n5=|LS7D9N@i#t`=OIs*?Ch8gZLbGyXZhY7NKaK~=-D?6O ziVnmCgn2w}-VkA8Vbf)CGcGVp#g@a=H1p*8DU8~E8bQoG{8PV9+?6xAUU~8>wnvVM zj9V{tSM+X8+9+~i#sv92xuOn#60b{&U$8b_5P3gTx{cGK>+CA=hSmFZysBJeW;EXN z*rRd5K4zg>>zZ5qy`?!}y!xhFS+AX$s-FM*8n3!LQ`mN`-ZjA${fj3vFtoCIQ|Eegg{=(o+i{l;1pRalH=GZV-w1!MP)wXvPJA%3E0|y|l#T(`pSa=@YH5 zmPkCBA6&^c)5OFejjNlnYkKg>g-02VHq4BkZLayCMx;b(r$B*e(>M7rrsfJ^;iVQ0 z|N1WetaK8{cAk}`QCuH$M{3@Yi~pus3EKWUpzx^i+Qm&X4s7O)h`n)bLx=u;6ECI~ z_Tq};`z08HJmzp}_?*d}q%p%Pd3MY!cWnuO5d$Gzmexw`<|DQ|*En5tUNL>>iU=-= zPdc6;U|_B>Uw}J{X=SJ}gP(bWxO^#tO(IXs&b<-^9gGtFH?@yB2rg19X1enrjOVQP z;T_YH7@7|rkNZ~5{eY>G_lgk9$;MyNCXAWy^1F52|K zpg?#5Pe*tsn?Zv>=BLFUruQZrJdNLb;n0z3oSL$%Ow3sVv#UHGJrh`2Te(X;{sy<8 z&kx2#CZ4ww4n3343Gzlcjn}7Pl+!r2eOquTIDn)QGX{iO?d?2wyD&hWOom7GE>=kvn3ZEJUuD+Xn ztn@Ee|F)7$>kfTp0S8nw|d!%Tgr;d-rN^k zux9e)^CJ8+CUp4k+aF%X%hw=XapM$!LB_q*N0Ke4lr`@Cobz66`|W4XVKp3C1Pp;LcB^w9HpvUgOAyH6;aY)$CDXVo$9 zKu;;B(5(Gy8TcQ3&-E(RXP%kz+m+=SLm@}00$*bs8&AXZoxKcyCK(GPNeQGsWMg`; zt)ZZGa;(gw75sMF?t=?L%64^dZA4|~lQS$yL~n~#j3{>=x` zO3JP;x_`W0{K50dgn|e06I!-DE}1>*D~nh!eWy9r)MF>bhjfZg}R+0K*?4_IwYBcuHP zCZx_1{&C~w!e4Bk6WlmTKXAv~;hftd5Vnj->XV#MpSq`slE}(*c3*)@THkGMJM6Fz z+pci#68|5CFb9r>1wO{h&9-h@(#cwN9ni!d%ENA$% z$<|aM^J*zixt3@&PtBv|j>?pDg=XRUG(P!f+?MgZd z?*4zW*+Fi(zz7R!luZyyaWPBqqB|*W>1q8!}EzM^>rjM~Ja3 zIvoE*h5w11k6eyi&aJ4%>vrO-%hMkEh}>fRC^CU*_fK|(_1_fcFIPxkE}`A9P-?$} z-Cf4q!w)!J8D~9z>&a2&C@U{xAs{Mq+1ugne%VQ(wjY*NwOgqF?D_80_Eg3}(m-s& zHjPe}$N#Hs8`N(w=sO66a|=uLU;cSJ_6gI$*Wzj4FKaSgu6?GwT;awgVU2i>28Lqm z{@23cVt1Q%ve%zdO#R!mt6k=p#~j?-`H z)+uqzd1h>Bj}rkdr5K&+im)J?(zk zSC9RZ`ahQc2ZC5vKc64xq}J5DP;5R^n&zz(mi;XUMZ-5XitT4nG;kMX7L)h+uC zx_G4EuTAf2rKf5vRC+8YdCF~PrpBeh_i=gbLUNJZb@7MU1@4BvI>>DyC?W7}ZnD0b zFbfZxRHS(6_xQ-P##2Jt&J#L!ZWWX+mSx!%ku-}f{=dzeouLI%!u|i_SI3@lvr80= z_hyOC@V>l1{`NMLnzVz5)FpGJC75RWu+%?mPP}Ynt9MZQ;`Z-rp05cDO`cLXOLao` z-2f&lU6y4EM=l(Vt9NCSb~@-)YtK0&$i;s4`(wLgLLhKPN8!p6~#NT@L;e)Cm^ZwmOW?iopIeFGh?<3ESEmz~0 ze-OW?_M*A_gyNS2%ys(&wc-MH6<7s#akP{%Rfsnf{bP2$Q1jeMvSB-y+@G+E2Lor_ zik&Y%iquBc#C!Wn)mB9O2Y55Wz}jh_s862(P`fKgk_$=`GX2P zTl9qLZWpRtVhIS`>i8%}{*3=rU+V=D3`QYA0X{xb+g1C+I6GppBQ**oJPzKH)=Ag2 zb759CJjr14&n3~3i;c)o?in-Zq&m@A8xal^?#!TUl=_JUaMVAXI?wQ|m%OsU-)u8r!AadGzw; zYvC@*EgZb-|7e~FR+KO^d#0h1?W^pSyFtzdjpsQ1jl&$80y<6DK@B@LKrNt&{e&$?*toX2YaF^T;lm`+c}tf&tT@dTcakCLVf+ymL$)r?)o~tk?4$3C`MI;q zR!vx-{z?7myziT*?3w2_!>jUfTxPcXv3B=^%=4Y5Yaa_|c_=kuTark~4z~r8_dBD` zS{!>=e}Jp#P`dqQ$s2-3XYA+MI3-j|$5_r#{uu8&lTlKs!bo0j&4k7W2M=?ozy8qT zBOot(@Hj_cf=aOZ+j>!J#>C_E!*y)GbYIwcRD&tTmx1~0)1#TUSr7k~(06fCe0K1` zjTix`CkpF@WhzAHhp{N?lpXT==bzT8(VfR5@W??sWQSnyTlNPR_T@2Y1~6U_C_2Db zV#xOUVBQH1fuo*WnI{vu&)GdaXm#+XUMx40xtjb&$F>Q~O@j7JEIj<&PW2~>{n_M_ zJFki!u%67r#vv{KZe~E;CSlc?C*Ml5-d`vuTT9@41t{(Ox zEKfJsJ;TC;vFM21L2I_Iu;$$w4je1)Pn2O@c%P+1QY`oWl!q>cjJrASvn*T{6e1%y z-#+@JA#X8Ty>aao@5*$+um8Ar&d8OWCC`!*nmd_o?f#Sn4<>OdGI7d3(PX_ke;Hd- zj;PA~@a0du)@@T~VdGvUa&Z64P%ViGOq}-jS4Hk!grwVqtJ!mA&!4XpyTC3rp}Zj&+)i4;dEjZ%wse)AhY?zdz{u(cTha z`KYFhpYzhX|J$Fu7E<2cEK4_R(pK4iZ5;Jy@FdG{!TlfD+*k18YgckFr1 z{a2D{moRHl+kK88EuENNm-73{u^CzBQ#T!2!SblG?`Sqf7~0_ zL%UOds#=4P-G}aL4b~^V3+Hf@a#`sa=sF0e)XwGAN&bGU^Z}#b`kWHg-AfrZEZU_w zEt&mhxi*8=0pWz7a-5H1&gO^QYhpa;$DjLvAwD;aKb%EU|6B9VZ{`+pPj0b9*KF6k zrLgscg1^QCjc7e?qc>Ux$`19DZ)Bg}aKW5KCR_c(V%bY#Md}S^8v@#%Y;CO9d##qB z8WAz`biZ)+m-|hPwsQ>*%B)TOkYRC4al>2%PN8O*GL;L_Dhpf=Uz+Ld^iezE#`DBA zhp$}{xbf(K!HJ1Xrx@mJJ+V0P#Ds~O6CUz07X`4J3cRk^_I{7f%Ho9AIgQT@B4If-h$V> z*GoA|q-MO3Raj$e;mW(V@qzUD&w10i9c$Q%GG<9myIIgAR5|avWV4x*7@JGcrq4Fw zo18tH=kGQUnQ-=#i|MLW>y_u9c=eFYh54sI6Q9m6ZjUei)}pt0p6tu85jtXW|XpX+XVicIBk=4KQZx^P!Npp=!@;8_F5a^X45MfcU7HRUCqv)o|q5R<}@ zrZ}P1W?`Y-4@C~`b0y)0Z=*w%Bo1i?{uT7<$}|e0bh6RiD*|)oo##AF|KB& z><9A&d$-T%jjOnHVEbXKfz@4KI|Xcmsf1A9P{4h z`nguQYw?|CbIX2qSj6C?39|{~gzEFZtL*xkHt-#CWt-xjq|hsV=1ja3$I8?rPYn&e zL|o3`i4)jn_I^!9!CyMr{Xk!Ol~(*!eu z#1wkpIaO@9`QnRCV@x-L4qNc!$s$aGo%YhdG?QFyqJ9Y&H5M40V{)5*ywm2ZLU31w znM2s;9vkKJ#v&n0V)mRc{?wB)C1;H{yYl&xBQ@RS)(H};)8#`{5)@2WrUs>-*14e> z`$J{kIANoa|Cs_d&mal-S&%`&8To%RX~cN=JsJ-ruPEx84qv0 zr1!#;iqt73-ppmtuS`ZTOfQAbb4skt?1VN3@Tt#B&Szi1y@2Pm4Lh@Zdtg zh3Qwe*znmX3TunK&eY%BP-y|m1#kM}Ro-c%jS$Z!9PE-GGy-DQSRRf_9#~9vx z-`FsH)~om3eT|uJ?+ZHT{Yj3~=$Mzx#c=-o(;{XL&SPzijLb8mGI^NNj{BWbm{uMn zz*g_P`XkE*#-;Xo5+Xdg+}($EiF|o-rbBAahFhmQ`dDv-@^nc3N|vbSjE^;1!}9uF zcSu?R>sk|+#ZP%XvMy|kx~QPi`ljTP=drjO5=JflZm!4KBr7khrWySQwZ<}qrd~egd$6*Q&I~8+Jiu+jJuKaB@bFQDv(``?t*US}UXLOT!E!w5Z z{_5YKu$oOFm!zvYE{g>gb~H)Y&GUMCOh!S4%_F6~AjNxo=)OA_8N9YI1Y5lo?`do* z6f zuNMSw-4@I~E9b6i7)$KKj0gNrvY1bl<=4$wIFogghYj1&P!84RHEVo%LIqMQf?PA_ zh=f?ba#ToQ5H?R;PV zkXj;_*t+<9!W#Roitb;lHiWfxDz9e@JMe`w=yzwCmg9{JzR#{$1+#mriFvQ$ENE(& zp5E!?d9&K0V;6gQ+A7b794DIC0xI~Gc7#0OI?TxEJv~G`f5L}?C)|Qzv0pNT+dsGS zu1yw-2xnPgdDWss%|m5L^6q6S8Be+LC2Fj+ z+e^bm{3XIOyedv?NDO_#_BAKgIPr~;%1id;%8H#uOuu9J_+rW>{{3=wIh+~s=|^8q z^wQo5;xGQj73ke{Y-ryR@9R@`Yiq^N*L~}|FLa~`-{Ia>A!7EHg} zr~Y_asJE+xT6|`{&ZaLDd1t!SO!g?)Vfsexp2Y&Al9X5miNo>^Y-}ky8Z`_C;8djosvqb#b4%_@XXF$fd)_MrGmgOMg{u z-T$iz)E&H5sPpo~3RMO*zmGYIE@^^(>dT@_y48JjHN50Cm##FK%A+NqEwcZ^)t>zY%it6g>R@OG&S_vCh&yq0v=ykcC?V+ap z^~s_h4IBZ2hx7MNm3-h=XYFU>Kku}H+Xe1_e#t*Xm-{{H67C4GvG7c6*nQaghkMOY z&3%ajS|uft?N#g3o9FC^>U7OZkvt z|6=Brm;&AN-?`0vl#X|vy5ulp&V;LO7K}QKfgeJI=1G)C<@vGA-^M2QR7XKRLdq*V zF3vs1?yj7N?%TJIpS_%0Bi8N56MorUgQqhf@3}DZq3{FSmUpPHZ#a1BaPH6a`EkbG z{B?mDyR;g_Eq;_eE1GxfrkVkVql{7=my=HTzP9zJ7gtIBdnb`AU$SIjbS(Re@IBi< zg_`lq`y>!Cz}*}u&mhgTJ4QA=kq6~{JtR<7w9vcf1i^ZCfpgqSM{MfK>q%r zla2pQsZEIwIB1d9DdOSrNId58i{{D<3uajU}cVv0xtmRSyY$6;IMzR(&xQ_jZWnOx@%jd$zkBXWHx$;YwF4`q&x6IL= zRoo#)O!H_CkCetgp2uA$z649`^ntlcLzSK%>1+bZ6LK5-OR-INf>P(UV$jMkia(bbx6Z>;4f{mx zX18Wq^|6)cN#FF2*~ z%0wL4dusc%jpy~5E(vg5x*5*?pObUKBCc@W5)I}PTenY-^5^;M&ikFQVJ=fcyvL>f zCZ5-Pz4s?3n6A5Zv@t@1=ZSS%q{O_O9c*vd9&BY;!w``9-*2(Nh6oFHCbb#v(rRo! zAN4b|vVF9i(8)2WBwjXQ_APFv10{+qkxQ*-KC%`0uGXB-nCgGnv7n&>_OKWFu->vc@rL>%j zDZjLkIcXu!!?UH?EUBfb4aLG<8`#)5BDh0)bhC;xSi>tgT@ST=c&r!Xz_uf|?ISl| z(7~rdFFG~FITl=g(U~O2^ZX!>tk22#SdHf5>GB+xnOojJ*m27*l-a{YjIXKu@c*}m z*_di70`i3mj&Rr%#(2HSOjZdf@oeMsFcZ2KFK@gs^g)vUi)d>H#RXgPf(oM^#d6e! zw$0~YV%iql{Ex4uVK&PH?j3v=g&JDemPOCAp60vfgz~k@EhqjNv3@VJ+`^)<$!OnW zp8(NB!G-3D%e#-68`Z7jQQ+8V9sly+xw%EhCA*@uKQt~7+$#JjZl|_y(MM4R5z}s_ zA1;g+*6-%(ZgSho74d>S;DP9C+qf>Z9tVw=8}bCLP9OYqFGk1z(0kq&g5BqAlq1h@ zA7AvbX#c&B35^zZb%OaGuL1?a0tz0sMR08ik%$#zv8oI*^kc49spB{)$`R+z6L!{O zR>41iA(5~h$9dJSeq=VVh)M|fX%Ic_b`Rq}ZssuCH-QolmtN?qdbm*8?dboU3sVpL zoNDCP8xWSsz`rAYx5Y|k_xsuVO8sPxFBN+u6U@3iX2FAZW+ozRUp;FV__BMji}by+ zZ&nnO^Q$_w#jEpZaE^|!#eve&lb^Osyf)t~E%ef_J{}_rxyIl3uWauUY}vLVs^K}) z;Sb8i)vxX1ZMSzgzn{`E<*8No1kLK_?@Baf7B77HC1jmfR1OEv?a6it{{uR+Et>6a zt&NCVF=Oo{2C2*qhvF++U2ogB$eoaPTUW44Q_dno=I|rgph_RVYpy*)WhXYzJj}_P z*ILYOd*ivPM9Q(omZ?F3_HZb0Ja&Xz-h(wuqxE; zw9zfd+}hqBsCI-u;aFUaVzQ#Tewul(jQgBP@2tE3S%mpy>qeaUdc1XxVBh*Fjo)^Z z7(^X>{m*-cN`zWl(o$tfu6HM$_Qvq9>1B=&UwFk)+}kB^);q_fAF`r({(o+Y9Xv5F zCf@Mj4b~;o7lxkl%&~5K$`qEglP$6K{O5b0C*6{h7h83R`SZQawpnb+T6}WWY@wpX zHs=ecKh0qL?h(Pxc#oOk$^RukS=pG`nHe}ZxwzSR`1yHRIy!Z$`IcD7=Ed(@_R8UL z_oPe5k6v1Ja+kitu?yCHUfVxEHjqrR=i70nRX;0Gn)$etR@3g!j9p>hgZYYQBn9Rz z>E4$AhTZ9qpCEguK<90hRUC2l&QgViv#xhliWa1N3-8R5Isd=$_Z@$!UB7GD_cL7$ z?VbGfK_^q)FZOcRUe_wt-(n3n3axMO_%dB-JSe|K|Lp&pC2GB)|C=8jx>d42=HH~# zLDM&QziN+pbZTKjVrPni(ZvcGZI&vD7kal$I0f!!Ch~SBv@U)iFjLX%bE;pX4sS4T zymx#wQ~ZSZ`(Q=o%7GU zIu!FDENLpUNn?mZTHJrZBbVL$X2u_wt|a-VP9P{@7DL5}V?0Z9pYtA8NvW=9I>emv zoPQ3Z{+akXkvN5e9uE8ON+<2SBbd?jmgiVQ!`{Oan2QqZg%|}HbJ&a?aj-A=VaL7L zvt&-3!2aY5z2|r~O4u=YwyvANRLfv{VA&Ie?ct&sjCRhewVSSG7zP`!l9+HPY+6~I z$=bh{!g^wEzIejHBH@zH>2le_hk04%*)?)p5iA)oAC_g#%1J0lDY+YG5PhS7?@dCr z`{90(_cPLY>^*uJRIat26wvE1I&0EC(NMuhGC;9Gg*jvmU;ByjjD0NHAF?<3=rCl8 zAHTmaQ7cThUSvw@f%C??bJEgFT$J{=ZK(7y2@|oe4OBCjwmVGW3ZKsXVqs@zLt%p^ zsXoqJnZ~!LW&NbC|D7%z9KKs3ULdM$OQGi7k7YsAE;@@b%I5G$oK zvCM)3b?4L0Tyf=f=uY1MH1EKNloDz6wyi$`3Ur0+q%&gJ(^IZb5L>Uq`>;s5%y?Rk zYpxxelKtNli)kAUUSQbDeEXtkYUdu_{~t8iPNwP?iSeCMnEST+|I~-;5(Jw4mlVXc z{ZyHv!6)0oaj$mT+P*0){VZX=G9@3pw5=yht6nS0c;beGU!bC5OUJSGfiEA_K57V> zlg60(!O-pMzW@81Ywbf>4lnSLGZb0Pz@{9!BAdZ3S4i`m$+4BYeh11sJwCp2YS857 znz2tDm0*R-**`3l#r^%pn}`TyAW$7qLqtMijnM_vbpv8pgUWDcl5pPJI*Mz2i7ef{cmIK1u3dGo~FBn~5J=DOY zG~*KE7LyM*4rxq@-fzp*6?kyPwja};{WcK@&bEbOv8M1R3t9}A`c)0u3$f~0xw zbMJ_(vS!%(VGdj8dR69bW?2W;HSAq}5dv=hdzq)XG4EtKTrhJ>oPftaW`5QO=k{_N zFn_P_eRxsmqm5YUgKr!?2TWB?YA$SMakC3=X}O{rCs^!uSIkO+g&sT?>AgF zz431qPj6gA*bae}Ki2M14e%~L;gzwp`J= zlRiqb?)kuI_tj?AnfUhnDV^#K6S)iLOiJwNmz?*qC4AD83EMj5#F9;(MBe|iqN8Qk z5*ICIqdU)3M& z`h!JaPD?|94QoYPW4X%rAe-rOzoeA7>QtUf`F)D0V4fi+!__M`FQVW;okj%b51Tqw z<4gCqaQ`z|!NGi*yW&vAR$Y^e6>%ZfEj14o>ur2qzqVWZKim0dmD?oQ@@1S?7YIyy zCB@-#|MK>Ix(`l>lsmBWw71`3v{qcxu;)PYfwwaldJHb*Zuq-n?!CI`4Cjip0)-d1 zzO+48c^G^DJL{qkzgSv7)>}^Qbo1m}u_hwje2Tz+?#ja~TcRKD{W2qdR@@N=9uZIW zfaRNFmVNZfNogy5v-*t397XX)5rY*~-FY_Qo%;^Al`Xe^-4N$cDzcx?he@{i^{qPT zUa?(1H7)-o7H{6zVY9Y!U&M>wx{S~Er3lpOGQL~w8`OQgo^?m6@QnlST-tQIxe^2J zy%l4zD$P68ZDTj(1HWeHzGWw`&GchB`A*KWDYi4g{qhH1Vg4mWI&4|<_TSxbRjF`K z7Nh;{?UFG&6*U!&yH8DSj!pArVk>02*`AWC9LFdooU~>8)i}nDe)_y^XLPs@Gp^W| z%Go(ne|upHNBvdCfaem&awksO&AR-}AyZY*#jS=Vqq= z5AsVkvo$v{pFi0@d%1o3GUq84%UpDpcpVSElHsAFbb%>CK4i`;@31!s>>e{Y>V^1Q zuFB_}?wrde^gKRrjTqPWFBT?ielDBACc1%pWA<+T!cBSX$J+QA!{j#mTlvg=zlD28 zae`OyEw7_I$HJ~p_`%|Rl~K@X9lQ4_laidphnbf;$*&CS<5b~#p3c+AwuJH0inx7e zPPi_78FOKch>*fl^DsxA85&&AFCH-IpKxx$MxGr7oc*ni%Nv9yC)f)yNaejUtd*9^ zk&-?ZZJ5Da!>MvH?+W`zx11lAZW(HU<$KsUN)&7B87|ps2-Jqv@tQ{zTv}8UP|z(R z7Ie&{OQxVg_1`Uzg8?-^M6Ekk+-`SyP|y3}m)*Yj?R)`TN%kI5hFyHF6CN*XX}VS- z5N6hJiDl#8pQ5*ODkBSn(iH}>Ab#GWy6Z*fSZ;FN+dL*rZnU(O{wTqNf2{1 zVtwTLYjQ)CS8Z=yh1jJ7+OOOairwoc_FS2~NBmFJy`|0f{N8bFo7&gHcBg3~|C5B9 z%q(_3m#TbKqV;ckX2cX#l_~GtzjISkj5zy!6EV5#%CQ@2g=Bw}wtcYhb9@&vnd8sF zON|H5nuIlrb2`NfaH>mm#5bl{S}m*&SnOBvUutGG+p$%pnx7QQU$m!-M<+bIpsuu} ztwmU}N#;|C3Qtf#*TIF}{5!HEfrRR6Ux%Lvv88-$2Y?yuDL)d}!utGm19e7D(w3$4|AzeS1I-z-&JIQRKl z+Z}gW9Jz}{PH#O_#x|M1wD6zZ9TG6n_$4Mzev{I7K#G-#S^s+X{!BvwR1aBaX=)b6V){3ZrdF;gGm3V`=*?NMVad}^Vvn}? zbM06o#qhSVY{$M|QS-&-+xWyTmWZFRk$1_26O245wM$u=kB09Kt#F!uI%Td>M(HA+ zR+VE9brQ87XT7PNXOX?1WgW}X3+EkoL}_0NezD8QEL@4Xh>`8;6Ha#r_O?x_8mzM) zR?bb$*|=B2iP_uQ;x>;CllI4F-%1QTJ*!PFvOnehDH5lDL1N;CjP0{OE!02U@Pb>e zXVIFuzXL+LcdW3EEEQ&En^IGOX|%FfYcZhv+olrAH?SX2~oKv&6xh`2a^KclC0b`wM z<-Lb3>2<L-EgmK!LU_rfv*Y{5(ZuihTIl1=DG2;{$$0hpS zkC`ht^!HCy;Nd=D{E@|CrR=kX?|T1day9Q@Ie*xPQ(mjS*T>-h1;vNY)^o&ZABtz- zThRJHLESNiaY@hL zBUQ;JVZ%y;^27J9aH;3^razd%=9OsXt02H6%U0Z)p%`m#)M~$Mt^J3Sv#ghzGV&fe zHaX{!u>*JGZB>Q_-5+JVoq`so8FFF5++R~`L;f*cU1uZGA-si;xwAluTjk%1P^REW zmklPyZyWMv7Hsw5Xg(w}#q|YaB7;@ydl#nP`OQw8GlULSyk-~lJ-}_(u!G?gpZ0O< z4@n=G15&w{1v1^3H|xq0U6qUPUKkZWx}~n^#MCQd7vx^z`bUQ4rv_u7&ykiy-sVrI zN^2dYI7EJxa;dF!J!Y0M(ZrX7Z{w0Jns!Utcoxn|YV7v5Xel}*E+7%KeSdt`iIzWM z%-u&hQ$!0ga(R9*sm(uhI50@Utmi3jv%f%K=#TA7a`V@)^z?=cFa{q`D4VsX*``cg z;gJrXe2H8{OvHuwUgmk+(lr-8?9l!GS!rd~qluHk***yu7`}AVy~)0<;71LUL-Q1= zEGF5&0+z;guL9oo{7qORF(V+V%yYsezUlw9k0lg|M(&speqAW2=l04;IY*iK;?LIO!Srx%ys{Ng8YRTRz(rmY_CBqetIVe^6yYPJb zde}h5-G%kOH=CuFhljzQZSnHK1x_w1GuDb9JN;{2iK+sJ;ne#UYM1gVRGd3rGJoY` z$qH9m`1hN^!yJ#>c1xcri7JN&jvpX_=OwX5YmIpsb%rOJ^LYuNYx ze$8ieWEK0a7kTxpj&76fI(%K8)(U-E2cA?+P>_Vn@7v`R;8DWzXUB-t!$3bv}jR|)$;c^$zvI@y2DM;=Jvx^ z-DN5qlc&5Z@+f+uxTJXA=M=?mH>1wrgySJ^3U4v?eJT7ICXiYiFJ$?%Wx^dUzN-v@ zKf^Y3Upg}3cwo(LgC5y+aT0gJFL3f7aJ_54rAniulVQIY!vhvBwxYlt41Cj0{y49F z@yyEPQ-=?TDsA&qUgg$swBbUqT9{po*u97aYyvzxCaJWs^}X06bHV3@-0KXjT`inO zQWi6wG&w9)W@28(vvf7{gjeAL2ZT5T%Kx(Q9j__S zVYj|l&SgDkdD=%eo^sZM%b1UdUGko&G|`~zUA{qLR)_V=GXI7;r9k&bpE=&RGIVpS z4BnBt#X!;GV7r5`yRd~VmqW7EnlhIrz2&SuQ?yO2k8L|z$#i2u7K7&!8S6LF6(9Z< zM_S7i%dOriVJdM#EVe6VrN*MjSp$%mEn;#kyMn(>F}Nt{ zllZsj)za4M4-;6#7@M_I_&EE{Z7^-z^DRc8MC|zmzw2-ED%B&Oc__RnI3#h%znrnCRibo1<<0fgj78xFz5Z8@xl3uQ*@?v0t9*JCFfG8u z$75prnTZN~{s-f;9du7#4DrY;*PeA`oflW3XNA-;6<1~nJEJE#TmoVXc^>%xu+hx( z$v$5CKp;x*eNLK*2~*20w))cjOzRk1%&i!zH{AX&m)6bcFIMRFk!2r$qDDwScyIU- z=61oWJi!GLEIfRXY`eER&e?xEyqBrrPeN{sp@#3~huaN(e#?btce86A{%kVEj9>f| z-;E=igYTVPcJmx}BTv%-j^+fO+0Qb~S_A|Rh_o7*%>HH~vA|5Gqd_69`qt%6m7s17 zo*spVyqPTqv$iKsKGX7PU7Ulhz+Q()8|E+5*Q&LI^d6ib(aRwCX!n|~X$8ER8?2IF zT0gbzU@+V%Eux}Qp>WZCzK&s!h)u4@m5W&-4VMhWb1^{p zM?;I^$6%e~Jj^pMROmA}N>m>Vb~jMy2(@Q^w3Tsh$2^byrL&KC$UQb;7ky}Oilu(1 zxL8-g{$+p4GEZ)Cz9;gJLzAgB-DpARiH7}b&F^&8OUpBEpFieoVaw9ccr@I(`&`Kq z#yhHSy3ei*Gz+^R(7ckOe%W~X~?d>hpA)EPxwSzetBa-J-Em__;bJJt`J z3N@!b9Bce267aE;@wib#sle6=&8OZwl`ZGUY0LPL#B(C2NJaKcTZD|AQQ!==r0%^5 zFC4EhFl)we>76(-*{b|~Q4ou3#AP8yZVBf5QX%17tioz5gsq$0Id1Rj-@TLBO8n0@ z9__%Xj8_|2#5n3+he~ZIGc1XJqb(TZxcTE1 zZF|lzEvb=w8J}_}fG5D-tz<1n&T10}j?{X~Ns`+_x$0RtWajeIitzy zW}L9iy-AFmPftA$VYTodH-NYt~{eX!Qx7o&CrYV1$9E*={R;o)DiQZkaN;k7{b;q>w&MPNk6AEAU zO+4PWP-2nsoAW%y%O9z*&UvsyAUexyTJzbu&@4AzPicmmx)}^QM{i5^9s73T^OL}7 z$Ah-FomhYH*4F7#r%p30)N|A@==g6Zy|c{o9bd6y3h(a}Go$>Zxv3I6Qj&{W(mYxO zO&T1hamLu>7PH77;9+OUViITS@+e~bKXIP#p2q(LWeWp4^qz1FEMLg;dc{t6ruew` z-YhR~)z5vrzxkzV;Xaj&8`Je<=UqDPemUj{dvey&zs3{y$eoEViDFV;Q+sSu%;LJo zHD6rze+xJMzp>f z<5L@aWM(eE=`!hqguz|m=BvK{{dTj9F7Nsox1m>D`SqJg3FpeVpZ3__d2?pRV-wBm z>|qg1-D+zS8HHYp#yn-+!f0@!W>4AL6Osa#Shw+>*wnI7L$^!9y-faNz{RyTOKS>Q zc%)|Xy!q|X{zGKx>Q8;@Y6lytJQn3N?BdG(ukk3k*GZ!^l0&6*(Y#ycB~?01rG6qQ zC%Sh1zy9rQC5M9TQ%lE~Qe(@;4f)!wm+#!u<6){-RY@pS*m5K5?d`5f5}Z{R1vfz>so>QJ+~O? zQ^(uBpENqzu%$Gmm4(GJO)HqmDV8ZH)k}?uMfl2_)`y28!eTTza{R7Mwe8EyNC;2i zot`KjmvcbVswz~*SM1_f#vdHDW^4j)*c3`?f6afhBp{*TM%Vp%28Mm+QkvcKL@ZyZ zPw9yFdTafXQt#SISs4~4BK|iS8Mz*GlR32*@BTx@Scep z%e&6a3Nncj4GBxS>lb`G_``Vq=PpKuN!8o8_O@~B@K?WQ%r)0i)?2H%W$nHR-G1GN zzHeQ%Q^9!o0VS6Gt4g}oUkn$VzNYY=(9Am;A|2D&KgIKOxUcH?&vLlS&CBX=39H3D z&JC4{0^gP597~#&71mGIUw7=LbW2W2sDIosw+P0Nj$bQv_TA!1jPZGSvEbj-o*8?6 z|L8=OZiqAw`4D$~|6y}~iCv{m7V!c<6wDlN-~J~0>a~jHoD#MLk&Lg`+69y>xqE%f z5|OAyc2+&jCOQ}9-rYMhEGkG^Z;zn18pj9m5{r2!r-~Fj<-TBaVlt2V9Uf^O_NKe0 zskspXZ@zU%ADR^4a+QOz@scgGOyEI2f2BPB1za!xuaUW&p=(p+B*8zS^haQStsh6m z=@OrA_YlsT(|2wvvHAX>WDe8A>=vfZNG=&>wM@pE9fd!Rwdl0S7@v$%%yMIC^zyoK z#N)0?Kzv756}R^P!}Z1oc$m4DUF?1kB)8$it{#V}8cVB9TOX#tCsie^?%Z+k+S*rbc=G8Ka>1s%dHT1{`BDe`7?No8-> z`cv0X;dNodQ8hL{lY<>ARtG$E<2ezUcvpG8O#9EG6Ag3bZa9{6VPW&NS@ApW?DJq* z(7d=41dqLI6au9Qm4Ro$lJMB%1?#o0(1Ds1v2?gF|9Y^!}>ebDNGY)Abm*?D3W z=jYv0XMWu&UnBTX^~Qsm#hkxGd2eiNEdBFR*p~Ue`?45mS9WT$C5A)KdO_TpFAdJqSm`LU%i_Dj^@fJ`ozrZTRn9oBYZq#92>#v_;BtA335$h|OV)(e^m*NG z9w$_{a2Gi+vbhwt@T`@+WwWW&r&Qhe=Y?j@pBhdwECTn%DiTl1yw?<0auc=QwlDt< zbJaq_&V3Fub(+17axB_3ZS|!yN_{b*D=QV**jn$YoGHp}4sY8K=&-W;uFU;r7O#Vy zm76lx-rM~7L8g_<*Rxmu?RI~ix~Ka$^YNm7CIOEVyb2y%-^FtLU$O4x>sOo7r`=qx zH2J{f8xPONMe#ppk=`4%XhGbD%xITGvI+LhyZsOHc};f??QPyWUx#&FSdGmw&E`qn zF2`$qI0Ak8R@NW-!PUHH^X}Fue}qa+UbiN{m~wXFmIUQkw$48aX)-28ElYiUQUneh zdh&^<`B)>fz@tsE+Iu3d#@j8B`6#mXfcwHnGsIOo{^+W3RepD5*+#u+9KDTye2eX$z^99D^u1C)We17KFe{yE*@_Q32?)jDe|D#+ZKUH9V!_Ez*jSH%{ zr87${MBec=OK(}0UG(DMNzQSXn+>Ik|C!VQV&3UL^Y~%4xm+W7Q4`_d~EcjBqC9tKl@j}I+ zmWC};zRP$l3rtd~KWU?r5?j+f&-S+eM9(!MeFiVfnUBPVIE#dzu9;Fc<&kW&v(wvU zJX{s0EegZZPD-Th&kj5AhD9*9eN&?|WK0323P_cTP&`|qV*5tlu20v|dGxEts#`*y zBP@dR$c0H7wW_WrlaBSWtZ2^UUKTd*&o9nTz8(_uw`%D7O{FsQaWHKKG|KII-B+_Ou2JupTzTKmpd!uZ}yhV zJo16H$)fJGgYdLp|5zJrbGBp_s;VA!wZ+P^CnTI9R*>WP+?(oA+a!D`Z+$XI5&a2q-<)4nb$JuqI0vlhJv-qnq9Z}V& zKe2?d!t~M%>He0Wjd^`L9#rTl3U%A`m~LzIZM(i+$Z^l^lPkj=j$Kh}3H_{~I-_-l z{DQbcxh6|a=ZpNBE5^KHFQXP`XrTO>qkQ@zmVf*tij}_bN}uU`tl-42zhWh;qD1h0 zfdJ>=%!Zn{s=OJEnQIuj4@*l-Jf_Zhj77%c@{w)lr7Bm&P3MR=S=l@_nj<+_O609> z5kK>)3{;pe)Uu%(FX4fPWncE(` zhhNyJ@Z1v*i&^<6ApB*nC6CQE(=zj9Iqhb9#!AI)B~lHNOiiZ)CVXpYly|cJ%>0Y_ zRuyye{QEaV_49aY7F?VYa*)M9K_yx8e`;uWh_$1Qs4}OmRn)&8zsqxOOgXL@yJ8Kq z*Al1rc^BI+UGzTpisPuc_X5vL>(Xv1$QE|mO%prK5@a2&#ME5xU|xB}PQ;FTRe|e@ z4Ld(@Se7hHFpgDZ>9N{p-~L;1FKc9b{~JXWwJckbU{83&2AbF=SyD=39^=&2}aEDPLe!^Eu9 zwqwuqDrX4|W)}I{%O$crES4q~Hu1-u9h?nyxvT4C_8EMg#45q6tit;IltAGJR_1-& zj&3$WdyTG4kZL=?s>Z^s;JI0WZBOALC5?GM5``)@N30Qx6^M`8oDs|Zrc-ETZu5sJ z2|Mf!XYnwz-QsUPBy=Dn>_p3tSKM*e=P%l3qRGj$_+SCIRh>Y8>i)Wi9N7{M4(qNR zc9K-F(clTab)Zm+``-n}Z{GjwwjDEh*d@&D;P--mLMz83-d*b)xy*jQD2eaYo*zhAD$L^U9P#*f%78(a?x#y>k-^6EbmyRObBKJm`zOvYIz%>RElO34fTTRFqi z=z-vL7XD+bLE2&ttiM~;r;q3uddmL876+eYu(StV7ZTHR|kv!pMMsL>M0tmGOX?jv)3w$ zyx4V{AtS?KDc=L1xl9RRZ<<7ArPxO~G4r?lYTgtepFW_k zP|N=PzUe{PimZ$OYo{C*o3g|x=;Lp$x*4u)uJf2Uwx3iL5Yb>?z_)GVa^6EKnQRim z*(>k%EcQF}Y@Y$!gA(7AYIzF8}k7P`Z{AB%dm` zZ{GFqK^uMMv4sdt+L*lH|KSYJYR7Z`S8eFGUgrAnNW*J`t@>LMgi21v^tc^5Efp_c zo?yFU$NY^ZH=UkHZab*VAeX#vWqr+alaAl}_XKZGWJpdw>n^eL*smO(DGGi9d7n*~ z*?X>QNQfNjGV+trkl)C5F?C;wLR7OA^PQgo-b+oFJUX^H;+l7~w94bV@2}pSKR2{4 zr?;O)pw2=kRQ83v2h*i?NdpcZ*LCyuOlH`WRByVwoZxPGJSn$dVx`O+ z?$fL81q&2EO@AUHA=Bxv&>7yr=)Grw`%k%JQ_iUFkPw@@XaZL~|G#ORheZyUNK`Ue zbQdx z5_=OfJ!VO}Pf$a@NFY<(<2HAmm4Q39o=G_Qq0@I&Q~P3@C)U@0&U;z(>icvN>+3Zu zFT9G4+r%+#p9O~rM?_p$m<@*mhX==07l#e!j;)M-$uM<-L`jB`(Wi4dJO(Bf#zsa) zHV!TxOIj_?cKB>e=`>)`d>~s`*0yKKzQoU~J6E@zKVn^=v#-tgq+HVs7M4GMI7C7( z->A>}bWy?XPSe@OpViM3BtNd%wcowlq`OSfJbK}`dY=;||GF>UXAHRUxMJU8p2>_n z&Hh2(*D)@TXx`KEz)1S$f_nbrERz}T)yOisUz)Z(y!NHW6p79$W>ehe^qIHt*ZAGP z@WkO(9Yf3Av=t1eK1l6WcP)9~a`E6Ei3IgC3Ia0i-|&j4?pwY z&nz~^*2nh=$jQ|nd4J)WeZw9erM9x*+no1%dTxFB`)D@hKkU zeeJiDkA=zk|McFn?VNMu%Qye}S~^!});9+6%a3|J=Uo-4v8Z(x{_j|!GIziGw_epn zyi-&(p8b&3+mr6c($$k2_MzmXVoZmhK+V;jkgmJiuBMfy@Cg=W|A;@td{p{1^VQ~G zPLDPT9XoQ~CH`33ZBdSjH9w!$uNEvt$<%KYJVmgb3&*xUN{)1iutJeHbJqvVBCpJej$da^N9Mj5RCP_<~5j~MgeW?dtO zscr^Vx<@Y0-;yIC_{FIuk?6zZ4amTP}xolmcyO+bq@r-iq| zp3=k+hp)4}3O$8?Y~cU%{a=@bLFxPH9NfM?6g&MBG-8A|Xzab8^Md;8sH#miy~*19y_IOfC|cCD9fRilsD zAA2-iB-%jxNPCLnmx(Pw z9mnfRRk|i}N%A|!WlUOer?)P={VnIKlb0$K!h*yTlC17`eDq>-cb(_(Tu}VjRtrY2 zz5E?%jf9E<;lMw=I-)ebM~QCDvbg>)0yTkx z32Sp*Q<&SLIi2SEjc>%i@N&tQa`W)YaB``vP?TD-YU)R>13Lm(FBWNXdF^1He8hak zRjD7h+?-Q3@*n$E$yuQ(DO0aAK`22;NA?iU0)-hKg=Zge=A0I^_7nOaJm*5dWQn?~ z-T4m8`8Jg^E5iHES^M% zVx{Z-xXa&Hu&(+R{;KBK*NcuNE%v(cdV5w%^*@LgNIk~gk)5F}rk>k@mKJN{I+ zwdF_r&~*uKIT-TP4(5<*rYrGn!W3eHJaMn+h0^TaWZ^wOn1oM zAitA+n)OyP1xyjWftp1NmKWyTmYL_PZE&66PsM`8MndOoj){zTZH7r=%!1BPm&g@+ zR=CL@``~jeqxYI*0B;DRVav;&h_4R&K1gn0TDzxvy(!D&#r-NTj604msJ+1S^_PO` zmqQUHH8Np03taxV8+>5b+wQ^3!8=n*Bs|(l>zzsdi}vViIxRcYtzzOf3Abh+-JZsH zE7M|aNrU(&gYt_x`~u5PPd~R+L9TJhG8R6+?#6>UYPnt)_#J$OzRZ$h+aV_*)oYP3 zvC;cM;h&81iVUIEw?7_Iuq}5IE|0(C@#BT4#LcK?i{*Q6_`P#BQaNuDZRBTv=Y#Vn zA0v$ipA5FBo>zJDrFf>9%J~=H9PHoB^K5(a!{fs*&RHoQ0bhb7+tlAT^7zkZv|J*1 ziHE1xX?s}Is?WR1W-WXh&LQ{x9{>KVe`g~8?D_V5sv`?`XXFnZEv1ezM9Ni$+1az6BjRY^!Es*8djAH%WXY{ z-emmIV{V?HQ%GtcC|orQph?)Jr@HX06$y1cBew#=&!91C_hIh&*JYj3d2ufMyW ze3J3_x5p>!#C4gI{{uKSKcAf-;u8`s8WCUiA*TA0_|_Q45{~2vs~snFJWePw$St}Q z`Y^@j_ra~n?itDL_jBIrS)O1lxU{)slA?t}MejWc&L>Z5cupj8rcOM4S@Ketb*@3n zMS~9KCzIZDBzpBQHtb=Y=znLzNr9r19aCoPoDoyBbB>2Vyvr?x7YqC^|5Z`WRs6E# z_nCEj%U0xHG5x+K`LB1}!HFC8UP(Xc**0Ozjw>^^H~19o5y?Fe%W_)v{PQE)GZxLL z|0jB4_fdhOlUIe$T&QfD;2n3>^~w#OqLZFi%kD^Abtstlz<1YD*^?)t-#z*B!f5xC z*_nSozJHVaPgPsl{loujiW)^*PJa3M(pR}rZ7zG&hCrqDnomqrYg0Uy&lUjm_4C8rDrb!#EM9x(_v{6ZVyw>`HBV~I=9PL`K;yZIB}pqH^(ukQ2X%2mgkE4TB2vAgV~oDyjFjD{zBF*`QUjx z*&kku3vi@z{COMKA(+HqfBHbYgErIJ=?ZgIwisRLTCA~HM|tf9Rz+#GGiTdgx^T>~ z*F46~-z^ya|D7GfDGNibV;L_S4VJ!U+K|i0eDa!~jXalzaL0#VGI{>5nnmQF-alfh zY7ly=;d^CM!=11r&tfyDL{2{x_%lda({VSe*g7t^=G=Lg+2%1$SZQD>-ow&ySta87 zgQLuAH?Gl+EsfrtbIkfi&5fA_@``QK0^Ds9Ui!-M34K`1F}EX-agOG`a1+LmD6hnz zyYU}1V+~3Zt=qb5`);-bKCpS}q$DNrs9=@7wY8CG<3r1U8V2nv&3!j)UVcyDj-BNu zUvnXTTBK=CYF=mP_2Yk>rRFnO_C1%>$xZTPIp)m%FvtC|$Z@~x70cvI-qspKa9BSn z5_3#CF3M_or0KI+S#W1!OqffH+k_oE9e6(Wv}`-h!qp-x@GBrl;KNN0^(_+<10LF} z{Oxt=PvOh)YCN2&*?WE72b%>#+uP@+1YO4IkaMnu- z=NcGfr1-XTT<`u>`|-kssW~<_OOAiKsJux+gNNbpL&JvG3GeL%mFC&oh1%4s~LfDmqwlF;M3Aw1O@Mw;O z1&6ClPE+fjPDYJ|C)b*pcnQ_m>CV@Bdtc1N@2>}G^A6rN}#G!Uq<_b)1$s1ujl+dTthZN9bV_L;D@`IB8_Zxp-=l-}htH$S2CwZB4hNarxutMOY9)tWke}DIGc%{9<~YM9?_+|D_kUzKNYtyi?W9x zCr_e^LZH9?;DiOF*qnohez&gWM_J} z@Yp%F@>i_Ko!w<>4hsppy=LHzf5>KCv!u~Ac;;<`@3qrfpDP7zyu%R7+S6Fh!4$@~ zFXhJKqM25D4*H&4r<_joAL=z>5j7Cub-z9HhQ=-Z0EfUj6Gy)60SMJ zzueG8>Hoyg)k2-l!4=xx5f`@B75!%pva=7>VNAC6X*|a7IgvX@CgkwPhik8T+3{%c zc+Z*7vG0GGron+D@=^1yG2goQ`^bz7%EjLn2r+VV)Mu!&=vHbU{!yqj(~&21%e>|* z9(&^iL=5j6@47(bVJ>14`!N;rm@ibup~OKQ*HV7||sQfR7K#?-;r_(R3z&FSyV_h(lmI0T*w zkUW#hD6w-H7c>8XXePzXht@F~HQn+avkRCtehc;{#2zm=X;br->&M zk(BM(@8e?I+v4UG)MUn8wj){U8e87&)=M{3jUyL7oxES&3 zvY(VQ(>0s73Krq@ujN)8jL1D;lfUCr!(q*UZ(1dxA%1xkB?7@>4vg6v+j%?hF0G$) zonxVdWDmnX3tkV#ei#T?ORLNW**Q!aDs8tF2?HS@8-G7 zdpIf|RZLKe4H5XQD9R_kUtH#$Kv?qyiTz7BiYwJbOcd)J{fgIh&f`4v{h9r7W(J<% zfaA`0KOA#Dw{P>z#shbbi>#KMa!rD9#{-!x7lp4Op_aKJrV1JFs%P*hiL)fKWhq!q z(tBn-SO1mggHq+@z9Zj*EN&lXKlg;e;@N&#)hOTm`x``yIGrjc+@0dp9h;H3dD;r@ zK3-1motp3VK45sAWT&;FY_06SurM~BhYhc7qBp!YnfLLMLaUU1lSho`6$YtKw{}(Y z2s_?ucpa^F%1=Rz@iRkfS4+uWQ~-*NxSP*Js~&Bj;>JNwNR+KCcp-Z+&siXf0&@|68*xJ<`gs zb48A_KqH&I{q*%KK} z-=SI6jmO-k$-FmK%dy|D&Gq_h$j^%to$A^vCzQCXsn1&IwyE%BqqFB^&XT4Qj4nZ-ubHQ;*naC}$pCL;SGw=WTOuRDyCYCRF}SRt=3<*7Pfy6b&V@F-%KMmRcdBm` z>F>VcQlG-esbKQxaEE<>Orgz(D<5Q7oa*y`>^KtOu6M7A(bTKG!m#}sk2=TV<^#Lr zZ0A-qaYi}a7qR)!A;?wBStn|0R7aN*ns%`BqgeQOH1AIeC!$%^S%-eR23 z+F@fEWX2;Av8H62>$Zmx4LlQ43)p>3&K#&e`^7UV;xWrvXUk^M8!t0${)fac%`iGw z6~)vQ#Qd~8pMh8V+&RoD3uv;OD4B65L+V4#8Fv*fn@?X2w8U>S{t#iAcWByz zu1<~$7b~?E)xPVhl8;jqOyb?xot(aK$g%veuksM$7nbXiRBZSmFr!1ppz%PQhrMLw zxffQK%xd?qu{m17AbF+vb?{^9xr`Cn&%+c;g?Igb`@`&Q$zO`wEie84~$cnatT8 zT`g5qZ&)tJVBjd7|Mts@np?lNhrAZ$V=hs8%{xW+oGdnB8 zc_*%;_Z`QE2{SWoqPbKqI&4suwwDsO=n}l~-1DWt`$DFmoVK&xbDs2;dG}5I@_RQy*Q?UPy7Ms!8&vWKjNu4jnL%i&I~RY zPaB519cvm(PAY_QBr$Na>1C%d+4Ea?E>Ceyk8R%W+N0X)=@_?_#+zkrni0|5D^BcEPu$qEn`y=)p(8rKrz-B8 zCimL&T!KuEW+d~+x)eqeb>H~i-&Y>=ZqQk$+#tB7Yl0+QcozhFwmwlj%p`H3ep<)&=KuEP;`0-jT@MI9<7+mI^8E9Y ztDLj-QqwQ4H!4eZ3jN~{ObXz3Enj!|fhyyxBN~PWCp7;OeEC{6_`?AyDaMj~K?6gE zM0Kz9ikVr`hZh$4n4~k77f36&nyV(A>y44o=wUTis<39LmC>Ba#gKSe$htmVZg*U_ zme>g;We@YdiX)k?wZa|*ES%}WDPgJdLczr#YJlL4L08jj0XkrzS2? zSg-itR{RVdu2`-p1$osto6;+lcbhtEZ&#SGFfR6boygBv6&P$^lA@C6na$() z#Shy9bq)qEu=o`$K8dwH(ZgYXf>ieH5au|8jE7tfC5KK(@=xGf^K!+s>+>!OwdWa> zDw!-!ZOwkI5Um(7BrNU#Qq~n--)WDJJ++;AtppoG~K*oG!ce#^K7+x^^VEDtZkB4LZRMiNU$!=#g)-W_I zT*AnperZ0-L^1EWmqOg%I<%z@Xf^Dd_A||!g^A()Uq6}js1J?Yw`;8#8`7EF=gXh? zT=|6I4+BHr3x+8^pG|y1xGESQ^ze3Pddo}?7hqV}$8g>|?GQsmBX7g{SByyt|EBr6 zFb4f(oZm8yg<&59%abPziGEH3D@(i*JOnt{Z|-o+&dji^x!}oLGWlP8ujhls`R)SZ zR~4*Flw~Zq-pwN6eI)pKk$AQyDi-RT8E8@i_gP;#-54i%0vnTy%ZmE}GOg{ZxsqxHmhvdTt ziY7L2ZdtO>>q$pJQ`5Azq6rgQ&mUFf{djGL0ZR=BgPY2g8SKTXUCEX4XOB527(|EI zn(w_)AdA4>O30LCRTC82IS|eYw+d`P-P;G=z*EGrKONaDcFqOP!E-$zi zqK8I=y(}uDxUkMjAhn0xgCsUro4eXE0{Q(+&S0&ZIL$JaDVRw-inBiM>bAq zlue9w)6rMsxzP1Ir$5y9aogkop5TAsS0-xOgq)VC5%{FK#VL%5O?QV#$j-1mHmlfJ zbFO>Z%5hx~Sv9+0La0*b)_Cbd%9)2L|$2_L=wwXkJh=lHF+X_`@YZcTQBlT43}U8fG$^p+Ua z4|<(b6-tyhyzc&_vXq(Y*4itlQtvJ=+<#3lMUIcP{Mr})a*>c~#aq@{Dy|t>%3dISyPfOb|1_?edD6bZfAw>dY_Kju`JQz@ewf+kT<$$ z^S@u*Wa5Vs509w0Fq}9dyvXkRegQ@v@S4=GXV1C7*35Jt#0M zvoqGfnL}ZIi{m5KnIaO>eGzW$9iloP4y#7(E^$8QX3)xhh?VnSdym_Mb@M`7)}MS} z_Rnv7P+(|poJp_{!(DZjgO=JwTsdVN3dY%%_iyK}>{CC%)MxRw_w=R$hn2tnPIP2! zcJpEU?&iY#Son6iOlV1TcS_G2-v)+8zPCvu0Jd@DP zOe{Qt4KnIx8*=5ER%h?GlzO5d^@zWD#!{b&4NHv$RJI>d$#z|1WZj>$_p%S?s(*j7 z7(eKqzx>w4XZjP5z#Ut-k``_0d*c=0pi?3KC-kjak;RANZ>rsKKGT2iF^qG#x2Ylb z$bE^%hy$0t^v4A~=rFXo#8hu0#`&G6{r)}$W!d@i?JWzp6(9c3`ld~YP5bmq_G<@i z-mQAcR3awA;lVD<;$;7Jo09W?2B9MhEFw8(JU{rpL@7Y~?}3D0Ih~5aw!A-mxHrG) z`yV0b8}N~{ht1ylpT%0?3lBvYI_I@K+1%j%-=IXAh0{sXI$%h`x6!Rf>{4QX2kb^1?E1nQngbpNjt6T+uu)w-`^*`r%~9$iwjB z;=-9Bmz$0yf1cpS@UKIK(T35+M=R{pgE|w3#7+$5N_xZ(Y%(!Ex$&x_Xwv!#pm9WQw|E& z3G9`8H1&}43-OiV{{x$iU$5TG!^{@Yad^VC<4moL-?xRRR75bPF#Qr?Hn@HvEX>8* z!6K@H!<*T#q3)hdijBanPg*K#Wgcp-GR(Dj?*-!hnY!P$I+OOku5lvHH?m7epo zVw^LZe0W*I zqnmMwyQ2O(l~+2abrc1eBkKQgsj}XWU*Dn3wP%)3e`DTEmK}_8%L6RTR7~7jCP>}i z^ruZ>#*)=t%RaKF=$C0*d0x8vI$VdtY4z@B4lZwxT3wvzcShtz(TbYP16wxr-#r)? zQ7J1reVs_n>JLgAI|Sq#4^Alf{h90U>Gamd*GpLbw|7iUwW;B?e!9f?>w+WkO2zvh zCAciuKfgw0rQSjDAMB^9rI(8~@8^&(kXDF$Rae09yp&1#a7CAY(WOHx8yJm)!x=8A z&DdKI!_t1_$F$aBX_e6SMyGbQ4-b5%PGETzaLwbZWTk$tpU{~KCXs^z^CqT0*`}~s zXaQSag&WIMS=;SjQtmPz?PLEU%PaWKi^Wly|59=Ap`9FxGJ?&SQDq7YmBv9lJbkgn zYk1@Z1is0OFbgip6cO2x|M%8`&)W`3G#*{qcFvz^+x#Bw#eJ6oIYKr>ANgj+V{|}} zccoD$_v7mvPnxDN8a8keka*K3EIs&6X;-Q&aCfvGwJK`}Tr| zbe8ayO5U25b52JuH)z^*nW?g79>>b1gJ0JtYROrr*KJ*-;xE2!pK@`z${ohp22rf% zOLpwovd4VWZV&B)p$-XxR+AFf>tDS2(*1u!_0GR6YyDYYE#7dx+ncA@<5UK-f>6ZA z7lH@Yw7fRaD?Z7-mxHHj_u`i2&bz(hOW8yW=2YhSWZx;dvT6=*P}z*|6aO6;l&#vB zwXXQ?{iUPJRvGN(^m)~?2`AJgeACzL>lCv;bY@ob!BS(!PlXc=3e*~dS#>HN%r4@n zINqX=s9!UKDT6PQGhgAyA324}OIgz8Dnc*UgwIrs{>XgLvelwz?9 zoYdkKVXPa@n^=*->2vzfS^iTuTAAaQG4Z)@z3lq2@OX&Lv|A-?dl>h=cPg1N?T?+% zCea6~y5iPp$1hg}ebaN9#-?t>VriRjL2pN}%)Y*}OYCww72|}Xk7*PpDBL@FlvzZl z$EHBcrSX_!G+)4-h-C}c2;Og=v%>$e;O}`g(O0yRF3l)boc-Y1wL@ZA?3*5nbe2E! z(cONoEz3g;Mi= zyJ-ffyxS&y$ZqnTeJM`=UrTBm@-ctE(HNflXck+`!IgVNwrD@gTQTAGqJreqfDO(b zb$>t3-!Sjg3Lno|EpA7a?k<=4xg+OVkG;dA52`}lniU6imM;M)aDQa$ESd&9S)D3E@kzGdQ}-EBzikb zFn#0_I8l;Xa^aA|hd@r*#_4VE_i)afROI5a&G*1v@$(9z%;6233O}m7H-7Z6V^lC; zXWuGQw_L)+BwX`>*ZOq^Df~No3^by9wM7#2S=UPZyD3q$bDp7&#u5R& z(m&!G5)8T4i*M3jDYDF9jq%A`M-$GzJq;{wl4n)7c2BD5(b?4WFO2!_+zZ>!8TDv% znlwqUH2r5#3Vh&Lm~^h?@Q<76PA=b$X;{n&VtAW;=%&coYR#|?m;J^3$Gp^PhrHE+i#&C!7ls&CsCg{p?<|{jfO*HK0*BZV^9->( z>5ETwC)Bvu35Jz)hgb8jSt+oUGnt2B{Y^%u{^wW13|Rdn+?aR9GYf|@&fERbC2=d~ zTJGZpeOIj{FRM5!oUs3Y`B33jXw7lQhoW0&s!Ee=-JiF$;juZXo zb}O7O6^ZE=d~&thHgVR6>2;1Aj5{THw7)1Oq+b`mobonjty!XC|Hqt1lQlv)+;i77 zFx{V0$i2gCa;;MEHEk~W#0H^18@L&bwhJaGl&DTl_2qtZzcw^XTW;Q`%Lh(}b*V_2 z8kzl>yHEM6waLsn`~7ckFMIdk2V-qR(BeJ!m8(nqrmyOFb@^|3qd-}G%Tq?~+WHd< z*Z4+jxOCQO8}*zQZn#rcFCf(M)cp5~GCHfmsPumddwauw6~!rWNGn z$ID7z_+R{kW5S24Qol}{Y&zLQadkY^BwLW`AZowKlP+_}8yH z3N5vcn!O%Bmb7v?efuTkvBpZUX8MGdJz*-6R(q_Dn?&rIP@u7s^G2ZNQ}Ne!Xj3!t^iRT34+_ z_Qqv&U*WuSx1GD&Msfx7uPeVexF00W{%glI!*#EE)m7oCoQyR+dY&^S3)qC>Z{-BM za9nis@B=N0{r?}SGqeRCRM%iqpT)WJ$yBXS7p8-pl>rwRujl<}H!*w8Uy{!J(cFji z1Y>330!C$q_BMTyt$`e^5KswP>6_hhFzwfT9!W9IDBhDywq#N;a!RF<6ys9bSMc02HhChra zFaNpx$@KSThsze7f`T@ex3_LR;ruS@fRmQZ3ms3TPnS)qWEdNnZn#(5#7ei!7P7a? zdDP%EiSb#%R`2V~KT3s`m2e7FJekbt-?+G{kYTy5jf&{)2Im9O4_2wRaR0o?++xpJ zu;f-qzednfX}dkkoCJ9GthWd_BxKb7LfTM}V}tQggNh`b1BWmE7pU3PHuWQ`eqGTH ztra;r`!DzQPwovb=w0U$_+dft;d<9QZLAT?b2G#)%{Pm>AtX^{wt%-mszHnY(e~^P zmWl)X^AB`5axE@QTWfcWgFz*xW7%@Xuww@uuQ@m$Xm8lyArPjhv)`}7ouj+&Prt4) zt3mx50hh_0sxxvpBp&-E^N22BVYFtcVbO?R(B8lw?8d}dnqX1y zj6oNi*yn$%u#L0(z+|&ZLpnw{>XXMEMkYR+QwuXxcKr~OsZd#`k#F$6NannZf|LV$ zUzNOCfRf9FgL*xxGG3xz{a!UrWSc9%DBx{=iD#l#)Sb2hR)_jVd5%Bd17GRX8lE_? z^w(~kOU172bAnG9WIR7yc|wu->f||6jZcdub%G5-%b)LD^iSmFiv3#{94$5qoH&>* z;G+^1!WWdv+0DB*oKf5Ll+2%p61p9=WrDYWth#Z*IR+F=t81to~V3FD4}L?n$V=bfDnR9HH*- z3)ze0mp%TwsCvQUTxUsd!JMDE8mnAH^j>ap=7{U8-f+7?W3kWroDI$W&CjiKY9 zpD^ibuB4Yx({{$v`NffYwzaUI2)4PK>u^s{?Y_4`n1w_76G;=ZJU-TfUtZq2qMtaP z2#8%X31i(+EW9&!!*Py6ewkb6Gnrqjb7nIa8H9DlpLm+N?)|;rmtVYW41RK0!}7!B z=TfJl7DlaQ@>zQz%hTpJ|Bs{mDJdN6r=*1=UohT!?f+gNqM~Fu!?E`zmL+Pz5)wZ$ zEK9j!k2{)*+5A?mxhABur}@~gXUf-^Unxqc3MjIATu@CoIx9RP{efJnmVnbj3sGkQ zoz5vy7ev#SE?a!&$%NyJX4E@!Y;dbMcxSM_usUM|V48)YL{&V+0CUVdm2mt(7;m#w0*@@AE_tY&2s$F0ODr#rcQO((9bg$;zz#KdYDLX=P=HcRzkxv&w}_V&Z?# zFYdQ3c6kIHyZl4->Ga8G7B;OB`1x9A$4SlyiVL2ZGEZ$>`Qoh)(?V|>bI+Qy6;Fj( z)nslS`Fl#iIp9I|(xQ$y)v`kz0k^JPee|F4d$_3H>I1K4U0ZklyAa- zOG;2l5O7$B{2LP+aOZFQcJ906xNP=(Cq!lg- z1qQ#x7i^-hlimz-s7Y%E-k9A%lBA5+QqbEmU&Nu*Dpg7^u>IShKrKOPh-)Uc<&7O8bC zcz)$I=fn!puZ$AmKE-_z7c?Kt3zL(-p?KGSvW_EPUXRb2=DXc`BB}g;d*t}EZTXqC zcf5UR!eukzK#NC3!w=<2wrR&%0-MZYRwcc*WLDu`-TnWP(VTfxZ?hJ396A?q)mI|? zm(j_V+uJ(cNmt}1TduQ^o5o)*%@oyV<50ttn7-rKM#gXnk*+AumbH7@?pyvfoufKi z_a<*WON&fqhRFeYW`P{W-5VbEb@#3I6YIP*lS5;JV@1y5?*848m zd$9Ye5@Vn8!Bw5MTf9mXCU;iKbZ5^z#N1j__0NP?q;6*2<^}-~{%6Y50$l!I>QYTe zw=;fwv{dZ)`>PrL?)#)ayp|P|GuV(>@zYRSq2V>VVu2PbMMCh;>{O4GaX<|{`&2{iW zt7PM34hfHhl@|jhH+?wPoD$OTpY4}`*}=<=3ZGY(CdLT7Kl3b&;gI;s`c`|D*WIn% zM?SAJ-0GYCg@=t}S?|JzM_&@>>i-MtEzk-7!@hViOG4f0>E>@%@^0tR_Q`X

E#r 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 a)Gn0UArMxPo-**{vVJ7HAcqzpECK+5gMd*0 literal 0 HcmV?d00001 diff --git a/mcclone/external/devil178/lib/ILU.dll b/mcclone/external/devil178/lib/ILU.dll new file mode 100644 index 0000000000000000000000000000000000000000..b5f6561c3ec3ce3aa17cad6369e4599eee4384e1 GIT binary patch literal 28672 zcmeZ`n!v!!z`(%5z`*eTKLf)K1_*F~P^1JvLws4+R+`;H`Rxu z+K&nxYJYHTfBRv9L+vc`^P&8m?T5hX4!8G#<=4000@FL%kAdlZPg`lnF2h zFfcGMLBa0us>rrK7@W3LDODHrT!T>CH0OCY28}11(kD-Bq;X!CXgdvy*3JZ|` z!=Q-*EC?YS7#JSt6%`jHgSepZ0)>$n0|P@8NC1Hyz#)m?kFo|N1dR0zj2S`$A{2Q! znK%P~gxDn&h%gs$Gcs%n2Bif?1~pcOZU6KC|L=BDVQD>3;%fV!m4Ts@Yaz=Ci*5&& z*Verq|9`#xw)_A8|II%I%lW%`MIE|Z8vnc&e61*XHf_R0c{ZDx7wq5PzE8JhIK;vb zX3N0AUu0^_#&$ODUs<_cZyLjc|Npx?4t?nitbgT zKdh9^__lLrV}$~Pq+;jZ`=`Iv-YFFh6!~9Z;>;GndguS`-JP^Q&9xk?2g|B-?{2%F7w-Fj^?@~Cajw)KyVy7X{+I9PyAZGo|K91H-JuVx1&af?TkqZ3|M!$NN3oT~nFbqSh7!$!_K)2j z*YCwVpJMGWC5qYiLsMaF%b{H6gZd}#x;th$<-D{0Zhg6EZ-1?2?4P1#-CR$8l-=I@ zqp0io-5Wd~EUoyP?)}Ssx9)*Wlp$m6mm=0X8xpr|V>(kNxmASmnc3#Qa&N4;_&a%D z?A+}BFl`%ef$PD9ZHkBI7aY2Di0P~GH_J+nvnKh|SP#5tGrnXQ_$G2kug-+bFU*z< zdwpm1N5q%rh+HNvtf8=48I6 zH>>p6_OqJ0LT>hk|BkKc{vX^jZbTVX zT-$E3#`xR2eD_G6>Ra7`GTojn7nnmouyWqt_U%0LWrfyLdQUnHq6z;n7|7nt!Kj> z&8rS3E?Bdab92$f+LhtyOUkCbs5_UOoFdsW(b98i=%MOqYeh9xK1kHsOHOMos(rGw zwp6A?chd%?D@s>{{wyzRKP2g+x^x}$F}o!T?`|m8ZC&Jgi226D{NH6={M%U~u0Ba~ zW4^F(-qK38Q?9P-T?MzDE8WCDk>|;>C&v8AT|br-HD*1T;JqVov6c3O*0#>HC232& zVA-veBzRTlO{Ztt_u(OZ9aMFsjDN4|J+pq3r)BeHeFoc&GzKsl!-ls zEJg}5!rRPqSDW%3W|rO+bV&1*Zpa}PiME-&3{J&)hq~+k^l?ql`73=UK|!$BM$YT!Ok2g(#7=m{K50P*d?)9xJaV=*roZHW=?(tQ=|9AN#d$}^pL9qGw`Uj1@8D?t zZ*DA@9>%@2{?Y$(2_d2G53S$YceQNJ@qOgS$siy6q+Z zp4Yc@Madn5kyufI8``v!Z??&)hCA`UL;brLz~#B=fH zEvxM-bj8^FH>mu{d#AT8c7bv8&F&L-qeUdXJ>7PfJ51r^4lW)JKN;qW4aO&oZ*1TZ zS;BGar16P00(1Dd^Cv8SsU#t>f`_LjJ7?Mg7B`laEiVECZ>RnYD=0p}DsVUUgvh)0 z`tAcOPuy`ma92j9Z%92_^=q`7By{jyLji`Pu-SzG$2tK5M* z)7?I!=12Vn?TgIeBH9PLM5H_pceJcCb$`9DTgX{%q4=|XdlN+j%))uJ56MYp?70x# zWqhM%$qxxDuKP?zOB$9YR{uQ0u)((+$K@^^O4)g%RSi%kV@ek#bWQQ&7TVN@;T`NXAI$|o+nFDAcnq3n!P zYI{Ds@_KQ}qt}bEu&$=9O^_ou;ouz+0aoW|F>@XXrU>bmJ$*b1_c^|GoBW9CndZpC zA+62p<5gB9Cwf#n-FRm9Lvaxfcab~U2`5}{c)t<5cJ8vt(aWKXA~&L)_=GydLOB-t zp5W*fW}e!2&gTU4w|~7y+7oVYwfy2J?rM9d>pde&;De6O%o&L(FK2%L$@oE1d3Cdm zz^&e;4g8bDrzl=izyhH8<*QOsw zSl`LU2y*Qye^lkw{%x_yF9F8-2Ig&oX9OFYrX|Pc-ENoR5O3GM*;a1*rLwI|Fci#n2QP%3p2x|Q~9QitQUmNcqlZQiN9(3 zc{q6Ye#PKpO|jgEEch6YzkcxkU+cyI73<4oqQN5EjGZAW0)e?-g!kNz3k?eo4lg?> zq_ZUBtIB8g$My%=4)Q9R)_>?MiQfM2hKh+q^AQE>@7?cmR8F+W8{cl*z-RrQeTAoG zg+y7_Ly&Zzmp{xg0gsyP}XWU+z zEz7)#PgwB3ri9xOu_Q|#g||jI@e()q%xvT1VxupKa7}PmEEMr-n#5kT_{`!TFY11n zH3o+ozm;Jyx_yVoGfu(1!1}1DLh*@{C&TuIiSyrXu=#VXOekz~u83uvlIy3ynpUpL1=p|M>|7#tPgZQ-%bpdEL|BK5a2w=61r`Z@X`kZ{Bux z@o8ceVs*T`C3=;2Wwdf}e!l;B@9v!ypZ&YP^S2zh?q5>kf8?pyUS{3q_h*`z%S0Zq zZP(4X^s|)b&>fy*`rpcKn;o;ZWS(}Y=v}b#tqcF={SP!?*>{`iJll=A1}%DSH$)$H z{tjbXEal>Gua>9iyi+63Y;L~Y{}V0JCZ#6Vbqfd_PVv|_`EZ&?-MJdh{XtT$CzzJ? znn)xzeoQL%x@N#J@h#&G>sZfIpAzhH}xj^hesYn#v0_=e+vP($zkcXBU&hTVJ-e($64x4SlX zd-EhBjE}kgy&LoC-R3Ph4>&m1-1%^)-tl+y#U(Gq>u%23`r~&)gNOCK18$A~7$l1h z7dJIt5;iEc*z_=UcjT-C#~x%@+-zwzNf224{SL2ZxcP(V1sC0YPTiRBq&_YJx-r|#~(ahiqW z-a$5v8>hA(+jMjWH%kYjl*o;|yWaE8sIc9WCWCil(Q7t?gEQUz0&bSgFTEXlhKuKEsKkYvhquID*^qbh7|#vS zI|3(9%5RHJeDi?yNt;mY3(+@Qw&vbs`tXJOM;6PUe@+^SnF@Tpz6Szb7hmaDmwTI3 z^~An%(?bD`@C(NOt*>{A{?Gfvscak^)?IYX^@f8&Pq$Oi$zzf$B9}BCJ$!*#IOAp2 z_qELBxd)`ofAz-L3EDEvUO3^{6D}7!riCunS9m)Y3hm!m$nov~E8hjzY_S;bBJRIy z?GETBB$w#jvHPOEJvZ@P2eU$$%$x8B_ZF8aDF5h~kT@@AhThK!Yr~bbpUtyAzHJGE zN5DS+lV;m;4#qqPeIsr5W^eq2m`<%pKF`$doYeaAX2W-@-{yCBY2CQ`ZIWQ(6YjnL zH*PIpa*x@>v?T7An~hgUg?@7?2gB0s1$TWTL|j)k*GuH}9zFcAT%^p?y=N|u@$&<{ z(|9;?IC?5R6gio*yyo6{Y*DnVNkrViP0nt<+*{6_bKi38hH&in#>Sq*>0t$7flGbA zZo3*7%E83)-{6Fb_qvTnvy6EUmTeb*;U?uL@~z&%ny2V<#Dxb-ZzgjD-sG9=k^5m~ zsj?XlPu--f0|(?Z)q}hBowhmFe=hA$x%uxAZ+O7efd6HsWoE6(GCzM<|BeiMVfLSQ zeQ#~HY+9K@7Ncq~gSgb4ts4zwwM5uN)h*XnFE181mh5JoE?_$;!nMxcyYzLqp)Pt|Y~P3P?_kLL%^%)jV)E|n)xWCEek#`I z%lMoar(O|Ct*#dP^S@Mpi6`!Drdz}78@F}rS$E83cvf548TTM>_tuHwJOXVc+$KNX zD_xwya9`un?YpyHTxXea^AXR@*-IHXi?Wq;-_tvbsYk1@0{RiKU zuzpRKURpKn=L;UkQsKL|++UZietGYXs?oBHR}Y`9+j{JDehI_a+wq7}H|o8PYTo08tAlis|E%{yr-sZ+9SLHLaMYhT{86x1x|o$zy4+0O|# zU)=Gz8^WCa(k8;>pPoy#pwfqyJ0)!gMKvlrZZTWWKJ2BZnsSddl*8$?Vsdtda$tC( za>)hWwcAM%)l-80_nf-NziaZkQx9&dRvd_2cqk!x+XMC+ zyXNqiz4^TC!m<-@j5SP8M7-89Jg`Gb?#Y>@)*Dv5J`{hWNcQy6D+?mJPdrZGd-?9_ zom`H|7f)V@&2CS=C9+4XO5o1wt^d|=DlmJ#W_7&l-DYlL5PiA3#bjnLPwXr6UuNHb zwqE+ie9`(^99Q?DZ@u64$sE)^ff5ZM~yj{G9^UUU$aRoool6vuJ4u zzhhaja;lW`m$D20d9EK-EswGIEikJ)TPxrPW62H%!>xx`Pqh5Oz~2(UvRtRt=cI^8 z&eXF>>ZOynY+P5TQ>MRq)9XE+KFz*Y{@<)&ld9keUm)cAgE#3(QW3+wl5G1W+n9yI z|97+9X5-`K&)Lp@?`M`*G0U7S+iX?`aOt)F-`%-8yn?g2b5gfA%aedx)6N{^+2GWA zn`xTNkpnJK7JK^6I&E_J`n~lev$%}x?HiwBj(q-9#KhmnFloci{nNybggg{9i3@91 zXE0b9XT!bD(tW;t+@C$>3a2-nIdkNRpog)-7Pq)NPfjax=dX*qV|~V^;CO|XS*QR< zOMRoihEWuMZ{R2K?r@fa4_}==DJv}4?asr<@p_wXp|R*|E|%uw-Oh}MH}9C)_}k6r*BL~Xr7&1d6A_v1+U8*TIj zzs$YnbN?R(l*sdU9}{uZVa_w=J}Y$S+%vf^FJ&J*5Y{vcxKrF~`f(TUEY~d^0S)_A za-&w<)M?$T*l%gyci}FFc>F}$()E5kjPVEZ=XHmk=oU)37|0}Np359260%97?lqHs z=#lacU;etV>gezbhB2WHf~MNH?j4(>u52Y&!hZZP<6W+8hV~~_FO)PNjNehcV$!t> zCU-o4be0}(uI0Aj$qOmr<5xej_jMyD-!?XV*JD2F&HU`@C4x8ay^s;))8SRUDSCF+ z%S4t*j@C1H6gDM@nV6}cc-Q>GY*O{3Jw9)4-?@F~lFJV_4uch3S5I%dTd{g^H_uP4 zI!D_Z($+V$rH?cpIC#fn-y<=mC)bR;dEEcBtv3(Ozs`J$*;^#%ZRqZI74Da;clWqF zRmfX=>lU*m3$N6J9ak8(Md{ys@S{$wr2d%e_S*JO!tPugRy8F;{@mZL$VUze(FBmtKX3;(=DmMQ@m>zbB1I|a|Op)&VPJW4Y~sLA&W}fJWH&S zzNg+~(ozucEOiZ0cmAFyMM=hqr+`@R`}%XvS&8pm$9}>7_R?l|O_^82Euu%E5g+)Wf*)qM;eeMQNdV&MO zUTAI*`8{`yUTM7He^yURUe?ZOMPG_88O%`mvY_lxTuG5rcVe#kZQ}+<4Q`7t9t$^< zCW+5q6rcE9VB%90G5BCs6j;O|`ucIP_rzZne&IV;6BQj>c~*pX*6Z0MGSpjhbbVzIvG!m|7d)H8{qm^Bjqm;ix2^AMJQP&)5a=$@ z2!0lCd7W$F%O_po2AmVK7~V;Q*R0<-i(_@E^#Z5ZX&qmKUue8ElviWWb+QTIlwG=G zYS!hll*fB`?u#n~FI`q4Q05e1Y`b9H%5Qsh#X0`yCcNIJ&Me1VA#?80E&pvFStObN z-4L&Fv;J6g_1Vl_QYT7oyl_D8Bi? zy-+}68i$N~wwKU0y(q4dK&~eNJ>E4Bwe7TPd9+_=F~k?OZ(ywt4&exUC^Th_@{vxD zpbn=C1`Yvxk`_+5sW@}CWvp0C_Jz_?(VVQJ(@xfrAKnON1XXZF<(jk}w{~vcz?iFd zi+SJaf^HoNu{#kmwk5yIiVS0JpKYx8UUWVF$#;%hn;-C%UEfldx9&lfr>{}zJ?Wwu z+jX{F6L4&6`@zv6&Z%6$-&7d!rN7o{$?`+Uw4OYag5Z&qIA49-~n(+U5>c4(h}t*$8hQP8_|;m7;C?uqa) zYk#`<^5VPKT+(?KdRxj~v#|1;2JjgAISI>r`t_WJvGs(*gsM52MHgntTSRblcYRyC zG&Q?FnC%ZsmI1fHw2fN>7Kk$ z)f-rrI{O9B9}$U;UU?Un{ZYvO2xVx5LN<=Zi_V7#gwBP&*iJZnt&#oO1NzG$_*bt={K9$4%u#~y! z1+H`4>t~4scLfFKY>(LNpkn%_mFwR0`$s#D8kh-&{a0x<{dxE4+I+sly#@a(dPA6+ zn-sL`^DjI)_f2T`@t?2DWlR`6PJg=}#V#xMuQ)^dMA~<$Yd?Oz;XU&@rv2bECYe9Q z-g@qzBBg)6cF@1cB>CjM_8%$5&#&c}O+JO${V3*@zoT^b>*bPIcG1Ig5}0deY};?* zyXD#!Mn)zkW>yB4PRB5nlOJ}qs_L<-l_zw zhjU)ZwKgvh7159guRGRvJ9m90FS94l&F;h8@mB+X7~lT>{p*wI+w)D2isdue`TOhc zR6qRVTTZU*pKa@Eb#5Mf%=Bab-sXE{ybbpG%-=<(IayyU`pno@D|_F~o%yq6%%j3o z)3Tb)wa4BW_R4VT^Rc8Egw5Dpd-Bu6*P*&)fm-4Fw<_^}6EXUy`qBDE(UV=fb#A{l zn5HaLs-~y(UF`gODJemZ9TL1EY2U@%+_;)kOU&86iE;nh>-+VfvYx_~!^ikNY8sm@ z1%nIjm9if$5=s{p5HBd@KGMXV;L5l^Jo>}-olLnr5*&QXIqs@3s2hdc+y1CHw8^bp z=fl>%djfLWTmGot)-B#@@L-0vyz4*BgV&n4m;I4=V0PIvIs3=gg7-blIs5fQZ!W9# z3j2Ov;JBe@jdV}2>4c{4*hj)!{v9tkAFwDe%>LTdi89?R*A;_;nU4jSABg+*+NUnu z^hBVqk$G$BZvX2+`e8Z2xhkiw8p%v&d?DVN)coXD(+z{G6JETG|I>Dnd(Dk~VS#an zk3?Q+=U^;N4=8HnU$QHwQ|!8qkS#q zENrsT>vPX%Fp0epPUXDK%J|l}o{cqwB_^jZaA_~yt+r@lE2^y>vNr3Jr?P4_gn8N zE3A|_!kv3xmuKdp(wx@!I<@=IKAn=&L1HDsulAG#bswCT zrF)FO^wc54J(J!|jV*CX2wjpau|}|cZ%JhQlIYYAs&>wT9&6aQSo^NnD=PVmp^1sT z$z^Lpf8ZjdhL0(5*2}#_%4~Vhqhm}Id7}Lz|tDl(`zdKu&$c3!m&&B zA4}AiSrBOV4a`XewbCd?LD=3tDoj(0(6AMeJlZHmAl}ZoqHhq;+qwW+z?Qq4l zViyDb#3xy9I#A|rDrUtZ&YpC=x;u77{O!>6?)cXtTpuzcP1PD>qcv7@F`W>4xiYK3 zUTn_KeX7zQB_D*b8g^|8Efub95>coYs9i2{Bjc)y)@~Lv(X}CJhQH%Q3>y;E!xkqV zQ}Z(rIJC1pS1{>Elj}Q2{$QQ93*CEXd+u;MDY{~du*LaRJI^Nha&KWc=)N>^-jSbe z6>(i&ybr$LzNOp9?Qnbfan`j3jG-d`SL|leJ|*;5EcBoDp~D(^%72cr9AjqgImECt zbn6<%xEH}25^D^zf7I)&U1Y#~zWC9OB|G2vSTOPNFbWu|gf32D$UYMB*n`PlD0bO3 z)fnv$Ex%tpT@kqmT1wXt7N7qT z8-MHWc#-wC{JezWcEA_3k9 z4@93l>5^vKm@CsErBRuleB#_O{RhHNOd6V3-~92_`~qjlzO!OarOoby z>4wL_{(ihi+$0P?dLCS;8-KsdlkMr8i;H7L*qPSN(=eFbt+cdG?R%7{*Tnm|yloYE z7G|9GuN`kN{%F)Xkak`4N9RwaV;yA;7VLTqUeX!Qo>V4iU#}7}Nzj~U9+QU*9@8@I38%N0)vn=~@O*>2_C}7d z#;UL%y*$z-rFD2?@RyZWCkiIiv04;vcjciir03jO^4RGBCAEZ}i$_LAx6xfIyzvS0kBBg?&;A31ZQw{DT}TyXM(Q?#2u!>(OS zMLY%}`+J?D#5Z1G^t(~F#ix1g-_7^MF0#C4cMz}+ImlA-Ifhk)`{RN*=RR#EhwTQQ z*Ft$t@GeSacyZs$zGM3}kz3Q`WNt=iM6f)#y;N+$Esg*|h5sfKW~VY)DJw_>-;#>gKXgQU*cDO3_P;yK!8*7_ZVlEvV@{} zb!I$YZkLscTCqDEED`T02)M|#(Ybr`m978I9L)2wlZJWWsP0iQ*6rP%b4Ngm?{qql(I|j{mT)HhFzfw`HP10P@-^S}0~-R9?Qh)E5|hfk%}{yk%3K>4RH;NO~v{?8o#yvm)%pEe@^{2yT#Yz9Zyz!z7!7L zx$(i(63NN&KXfk{-0HHFU$g&xaj5n&%QZJPB)aK1ntP?M{2W){eQ$}ICB6K1fWcXOR^Gs*&srkZlzd1*>qOw<((dRzP zN*;kYmz>jHvQs}LnVonReuU{o)+O7=6P5tU+?VZF! zuXXj7sJaKmUi++I8XD2FNB&}%!GWIGoVyHBN5T(y^g6Bz@YyEfDY05l>eQ4YXLyP? z=CSbc$lTGF;#R(4wO3ZahI7mOCVMS)4F`v{y^kxWQ<-!$l?@+qe3vKuEiTu2pNba!I+?G;&^NXtA7;aGGEkYOMWdHu_TYlK=b`~o39SjCZD|c;ozM)+7{Z?ww%XL zt-dAx?5|B$$z5gBTS_tql{tQ|@H}$RCfx1*Tq~i6Df3@HyL>oO=a8$I>6yn5oSB>h zAGzO3eX-KhKs+QZuG@Y83$piE9Ly77zI-sBt#j{{WY&)^Rh3iu`%-qeaQ@Ox&T7qNEL!W#|R z8^WL7kNUYvASBK#c>N*fgGDa;oeM;mPj@FQVA=9zuifoDmYm0@l+ayIjggC}tPOtPUV8AP0?&u! zQ1=ZtWzL=p3;olQ9X)aJyP2w)mk#nZq&^fmbeGBKVTX@tW`Fkf6QZ-O8`nJ3xE>tI z!RGE9ALuYUcf);lLCu3{YL8duZc1mib(zfMFwfJEsV?_Kh2oRgMbphrdmL_5X6ove ztljGSVqIs;YL*wFvpw|=ubZ*BKZr@@gt1Ef{kUk!%~RUv^m(gUDlF=I!nAXOK>&xl z(gaSPMLkZ!2QNl3eOQ)Yqhz_c`^M7ay#F4z-d+-IEms@axJ`qm5q*Rb&d`WIckzdGnY&VnO>xDenQ=?*c2rlk>15mob+b)8~B_G zljNS!JLO>AlIiCdYU@p$8*-*@iVE8%dg5}B?>SfNq&pEOrv#);n&p&Mlwu<>-O15$ zO4j0yCc#D*FHWBHK|qGFvyi{bast1w*M#Q8719$qR@A9z7zoNpe|Q(ic>n*cE*b8X zn>u8eCdVB5zIN5U%K6&@;X#jdlKX5f`??lgyTzPRXnmO@!OPBVO{%Wu4-Tu=<82(OOc|^- zheQ}cS!XcrInfzWsAcj0JXgAWcZNy#kKq61CL4u)6&4(DxFBNcDitOjaKY^v+jP%& zFV>3`+~m!BTcWNbm)tt}#g3n0s>0z{mHaMtf41!i64A7pGjXSXSSh=cYp7JWpFx7) z+E<+(261yt-!R@b(KNUza8bI6Bk5}?kJ0T%vwufebRB-Jtj?tKzd(mS!o}e2!_ADZ zotflTT(ymj=bNqLDk<_z!SrldmkhfMiv)Md{N^v=z9m*ibI$I2z})MmBeG}?d*>{N zogD_j4C{FWc`gNXSEL+`y!xB@RfEL8WnupxY`D$OemC}p=xug^#yrR988v-sFKTau zS#YV>a&`a8-}7+6H%s2Tp*5`@jQLwF!)9G!D9M{!nrN+j?Do3TC(5D}<9Kd6_cF~@ zS-}x@ZwLEcpE53l8lU1N- z*@|OvjzwWz@r;=tEUK-IBAwH+oE*|}9iF_IAi6X2^^~OE_KskN=E*y`^4eeQRVq_F z_p*1BX_+6ZZ*3QgK2MLgajKi) z`i2z~n-+f2+VV_kqN<}tZ@au%A|rS6VHUn^Yg0sTRPk0bHq~+RziXA|Z{q$Ue~H~& zPowhp--v?9X%nNI-@Neder^_i;K#c{R^}28qnl|Qe_2ldeDkDwoAnE(zf5VroSlCj zQP??2S(5RlT(!>Gzr7KR|8JRH%oCVe=JrR)_rXEUq)PWge_XdL2s@&!y2Hu%HPZ|B zw<$fs{lEQx2%0=$vflSrHO8^QXYID5u^Tn6hvhukRGJ_vxJoU?f7=0u=0K0v)y#$* zAHQdn+`bXX@~@`joP4nL_YyXXz6R@yJ^s>hYga3^C_a6(D#S*SFL-{*k-B{2j}wG% zvGPhdM!Y}0DTj|$LPUZ?$W(NHf{AqHwAI45HZ@N3Gyf%;bH$yOAT~GJnC0R`B zX-CAO3NC7wcJqe|#3;>bRFKvz#@(Xgj7|o^ zMV#7A@;tlvn-9qcG#>nOGvUx3>3OXD?Q2Dfg)gviEAF|FK;#TRCyCt`!4qlV$ zvHN!Uw?p3}-HtNbz=^wGG3?=u&mY16!55M0l!n-JG z=A1I2z_1|oEgnZ-A6VwH$dqmK!P-?}VflJ~tG?%o-i~*zG~o>r-`$$Y7zM*w^wavsnIPjRIpYG&x_|;;Xa39vh9_e-!5|$e)uoA z;@qY7Ce(k&-OYxb$-zGu&aF6E-F4^Knv(8`FFz=>MXb6i$a9`)(J`ia!7a>3mp0Am z4(7Jm93+|kta4;~c;fHB zl=(Uv<_K`HB?~QketvekuD?9 zH!D|0i8=o4vIVO-RW*bCw{_@v@Aq>{<&l}-Icra~^IK-eSy7BOd8D0T*SxuT6J_H;MI%fVYq{sI5dbS7ewnQoMbzckU zogrj+Tjz=Mx$a|eKfGKIANSxXufEcf_1kU3nipRlwQW0i^qAPum;c)fcicFp^y5jd z&HF7JJKu5#c250eGqIcfyaZ!Xc1;DR+Tx8SZ@wFNA91*!euKeneduPHe@h~>F8zsM z70o3qJ}rDFK;vGyxGyNadRP?R_m9nM`zhI zwL-uCG}YnY*vWA3;N+YFr7EU!_mdObb-r!m$>ezOg7w7$zQSr1w%xBeb_He@i(KMO zQ{EFI(~=nX-&aI)%i+_yY|_G$nG}7${B}+}d1AtZjSF~s4)yxp`ME97Ea^;=+hJA? zj#P!m4j*e*RR3l=!OEn)LsaC(&!CTuy@s9(LVw>p^+z#m)8ZRVHxJ%8X+Fyig*S^%zf-f3L{2 zu=jw>5g ziqoIpxUqrl8jH&Fhe>nUKDC(rd9roN(`~O#8o!9zx~l!->jhPZx*K~G4B>+KVD|~VA`Cpf{NV3%oDwNFGFf7H>c|`6&;MxFH-Kkx}o~`T?PiR^-7W7N}e)Ca60(8cA2L*?V2#z?^jsZ zGY2&{ziI0jb8ZVMd|(xHw4);;J)q?{Kf04#j?Lx%Sd)}O9_Y%XSW3$Og4cc1%U zXXzh@n+`wjyD#Nv-Ddo4?W3)WYPYj(Np|A;+ z&QdLS-YH(iZMA|{hP+Qy4?Vxb9Ae9&?oqK^p(gr{;BEFRcmBF7TS)kHhx;2bg=8O? zFx|UB;Od8l*DtIW%w$}&H}u-EGtLJjUfK#zkT{rHIYC6?pO>3Svr@djGFQX_zWGs1 zd`lBT=Vd$Hp7dc(8ZU!LpY+QX|DWBZA}cti?a6r^146 z@7CRREWo6Sy)@y?YY{1?ogwnZd@0Lcv+m4VC3sh)Brdix%=l7(?}ZDCB!qaYKf13F z+Ylfl;D01#^QO6`pSkzQ%ZPvC4Vl&;v+76=e~Y`CSAo&u9X)pQGS<|n_pl$4)bL)! z`ipDFY8FZ6*UEP!ZZnr{xGq$id-6y{o<%`?{>c;ZM-uqkcqCkHb!JUCFr)5BM$*OC zE2c2ZUae!Fm+_mc#C>5>-i0eA`Ps?}FZ{iAw^(-bd8QtjQ0LG3iv81(Ge=s=oc6r> zR<%e%=v3zq=Cke2wW{8S3$_T$Oll9c&$<4Yzt%N$8KvPZac-;I-J zm45u&QKgi#sdPp`LDua4#0icS_5QOuE`&8rnrtxV7t@M~%rh@|btojBJgIQx%p3+w zm7bnl#<^=9_*h(1MC7(ID8+O(i_Oqc?#!68{OAOO-_eI9w{#y4Xpd+y)M|TMS1fr| z?(3N{w+6o2cO@Z>4J{J6f>Nc2m~Zwwc296SnBTaiU%1TrZ1#+u=^MM;ovjzl4*8@N z*^IU6vkI%EaLK)bVOO33otPft&efQW<)h*nV1&;ii~CKfgz+QG%c2Sf*i zM8tsTgp`b&zMh_*f|81wGfgS=2N`%Ls+?h{zj%yq=ZOe+T`i90C+(v97XLW3B z<(ahLv3-B@C0K6Ss6?bSKd5K^QD1UdN5PHRJD~dJ{rks>e+|OZtJu|Ro@zPS8 zqpg=J<#xZjv7@V-=jTV!hQ@>Z_08Ph*50|mpyqpt;kAye`2BoK%Nw^uIKCeeEq$}b z_WF*SE1COtE3lTNq@>752yj>@%;xy#l2FR@c~bj}`(N`zdk;rypO8NA{ep4`)2(f1 zj%a=eO}Uj&yeH#eIp;6d_#$%7<;-vS9}2rt7E182G)!32vD-VqPGY~T&ug*f zslV*QTR&JID-p}+TD&3StzM|X|H}z4UfVlecd*#BYN5VISAKc%|174s63#67-nQ2^ zODDRpI)mH(|Jg7W)$DldixPWZgua@0yK(N`{8d*?FP-B)oFtpGHaqGX z!|Pq^3pa?%FqLrah&G8YDR!x!);EPrx%*VKT*+bx7cLf9$7B5HLG+KmO-0Ki zR&ewLbSo6BGxPeiOD6fMKp@YJKN|{Kc=Z^*TYogOytS%P&oRjN$?0cISKi&fTEg1= zkEvAe>hdYAN0=RdbA*Ql_j)|hD{9NQvtE#~eA3#Th9duk8uZtxUptrg;~!(Ginu~} zfN=O~{flwIIYD`Bg26fFZ`Lo!VlH*|H(^%HXlR%HR-&h)TK`&lH$(3-Z;qNh0fDy} z9=JXBVp*H|LUKXLha;88OEl}aFG{v?KT(`|c*eHAUDuKr4x4k#Vs+)n_#u8Kjm6l8 z-`?eA>z7C~9)kxP|8@tY@oO9mc~V+kZ2o+DjW~m?{}e7;SvCV<*N4oZ8(Yk-ZMxY| zT_K_1eSzU{aP|g);3M}>e3%o_eWGrEz}z`e+838SD&IXLaIQT6BH7p%zU%ImzW4pG zBVQ=g_($}2D?Y!r*iM%1LG9Z7$7^_RELe2FMW|Y^`#>#kMEjYuw-=t9Cva>(D^I5= zhxD{FXFFwCI!zzjzWb9_w)Ez{9tjOLUKxd>KW@%idXtUyi|Pjv-EAAU?R+z*|Cqw1 zFcEf^ZQ>U761}b*0<91Jd^rC0R^%^>grkfyl1D`*ALHs5=HO&e<>Yys_VZ5c=g!s} zMqDX(?1b)1?3rN_v9Bi~GV8#NHsgzP`j*e&TCn%9%-eekE0i;$ZAFjuNiPXtTOn}A zK%{cVN4YeKERiz-4gJc^y{6Y9m;AWzeZQy2^38_yEDrMumFsEkk>B++)Hijzy}n~? z^5AR5y>G_J=})|WB=i)?Y;wJI>yC)dwOO1G^pz(qtY0&wbIQeYYSI#Sa&ngJXq^3` z&F;td8((fjdgT2r+rBn@$Cn@bS*(w16!QlbMkkD;V~(oaJ}B zq3n02JMCyt|Hnp4->8+{jyA51_1UId(p>95a7t82a5M5xVcikgd@xp5U;BeoO}CBi zc1MxNtnn|zN($LbzJ=#-m33zXKX&8VSTOW zSwf9mnaXSrhRIp~+6sJ3q~EY~uT^6R*!l371fM;R;X~u2!M4sXcYjD(EY<0*&$-=z z&3D6xm47@~Zdcy89uk_PD;yx%rL$}A!ZZ%+?1L}lzyE%~m}kA!xxv?;fgy5oko4&* z-A|`lGM?F|d*h|<=R@6xw&?FV=9iIb=zN6r#P=Cww^H_f{*jTNx!kq(g?>HwK!E#X!gpnxMH{cNr?iRQP*zq>X1(*^ z$qSK2QKj_^|LwO6H@^^Vzn@xElv-M(keQd9fBVLh|9N?(sSE{)#R@6v@)a^x|I4a3 zD5$0+=E>$HGG!(eC1w_7PEwz=Jykxdz$iB_J(c~YdP!zlnnHp7&CVR|`c#GV%(#v3 z4h#Ly$uIhzD)ZJm_ibu&i6B?Xv$V|Q43)C--yH0@iKS&m#i^>9xv6e(*%fay^O?oX z$`twT&-QD3ne|{&g>OlJ$=lS; zg2^R;P7HYs*>4x--Yj+K&#zj&_}yC8HK`NC59YooS$^`)_EcjR-I7-&J2m*v>`j&F ze=e1ib2IwhotNpNKKTVNOX`JHlW*qe3#fm4H*imAquQ zzE&ysN5(g^UEgwF=H_qHei@OQ_^`h9z8FJjUQ%i{Q;>pN>e;rf_cL;Cc&94zu!a4| zIA`R`*6FmvroVOXxBQX}Gkf_?$8QoT@}2U_aw2;=73>R|-w1kj+Ap4PK(5oCC2(!Q zwn7D;$W(O~4S^j64|%1lN^_q0W~O^MCRJa*6&A!Ss%onB^I557Wp|{-*k$L#-&~`$yg4zU8(7Q&R0-+ld*8d+2(kCf;X|Hb~543h)2y ze`AyRVqZi3`RcROl8AcJ+dnOHRsQj z6=M2*iE|3p6|=sx7SBtLYLvZUdNd$0$>^ogbBRXdhx7dIGaGLa)8YDh*Gbx}xOHXY zhU~rX4*XB_^ob8~jR?^&Hb`zxOx)ZmVIJQs{Y}llO5pqY?6oBi@~y-<`45Y|*jHZm z_So^lBZ-cwJ5JpWJC^t?v$(+8ev>gz`+}5|Cp&tdP2T$U|BSxJjjJ9vt$5tLl4*}H z*Yiy~g>Sbkl$?H=Uv$YC!3{U2N$Bj7o_I(`bC>i9KFv3~WQwh2n%@ZSvp$r3dfFj5 zo~a9^R~s07fBRz9+I#z7?AycY(DqIGr|{avTQ!?@33E*||MTu?*G}Q5OFEzR&sN^~ zxM_cL`nJ@Y9P1ZtwrhyL(dujFzE*jaY|b10n-i3uukC!YZ{gIHQo4z^^XKU|cce{Q zU3rt||J(J?rl&Qoe!6zX(>W`qF)b@QFfFxZ-^}^Xx;eJ--+a4gtLg*>`<|E6x(y~? z)4lCBTV%5F%!z+=y>IAg?`IHq*wAROY37Uu`Gjfu3G>%IZCE1xVb&VfGaLR~ZQ8zE zIa*)g&pRE4r){k-n^(-Ax6ABM`+|z*x%?e`DLwkCdk(){#j5+d;qJ`Vg|8Mhyx6um zeVSOu-;U|edS>Qc$yO>q;%l|@c(^{-B-@4VkM9*#ilp{UvAivOS$L}KP36-f1?n@E zQ~S4ztX7vXx#DHDspzYe#Lk0)Nu0Jhr!xe&6`X~OxB71J*#1y6E$7MB$PLZ>`DJ{; zri)Y5KZI5a6}!8;baJR{_KG_g`iPThrIy(w-OiKh1g1h8#=>%9 z!uidr(L&R$l^Bd>?Tmb=@=m!V*ZN6Gs!nCaJO>+QCFL>4svYw66GP@x%sMw(sJ*``f9h+!<9c%ZU-%XAK=`4F0D87-sf!lkPNmRjQP1$qGI0+wj5{9tPE^ik5l4UUp-zFKj)YJwsIF)Od+{vkza_N^{8~v=UnA=-{t;Brs!onTV2&vtaXoT|%v^BP|<`}aKIa`(e(TeFJZi(4;DJsp?5+F$v0`vpaoXAIZ# z)mVOOc&1O_Dlp?&JJD6#UBb+rTPbVa?oxOCP)ar6CKH-dJ;Ey@H0m@vriyHyd?tHs4rvW5tb?tRl}i z5~Zu8zj-9~)k!y*+cKRLENII=p3x%BdSmVR8>LjYGt!wRZ->^$?nfR`qZOm4c1X-fQ?2mE z7RT53IM(ju65c5-wo*3n28VJUgL~`Vd=BO#AJ*AO^= z|GmS%|JCUn`RwwJml)>REoPLlpZ9*bt-!hk0@FF_*)1!}9@z6g*#F~&eOb|ljiC%j z`57FZihrNn%&Tf|azMjj^(uyWvQOSH9nhB$b%@tE;P~&qzl?)~u1m;oMNS9Hxj~EE z?oYgJeB!2^1G}Dz$@GSj6Zh2*#5-(1@c+J}-?n1z_s&YpTb!;nq{-iUbY8xp%)uqq zHRq0cu|d|N0}7tC#y)3zGcG2CPCsgJ`~TW}aSczO(94E;=6V(kj!BipYB>$lH~diu z&QB{TPt`ukVXLunmXU|};RNm{4SO_~e_&iY+uQ7?Tr&Fw{`W-@-`6m+x1DExtbXOm zfmy=sJ{j(3go_fEcg~Q%(XGL>dKV|NEK{gpBQLYb^ktTdBTRS}{djWO#P{-%DHT3C z%Q9zqb1eLDV?)Q;rJ1uzVsr!+e7Rxbd)Z{qf|iVs%vsMaSP3ud`UcVZL!>!?Mg-&*px4a^b*|S<5nKO=&5J z@i4i&d2Xgc@thym=e%GBn|@@=k_j~+M`VOJ=tx{PneNRq`_IfLM^@ZDXX4wD6OcR` zs&K)Ch6I<)S>BgbcxJu1v1VE3tYs5&JSQ?5^0!rYRw{pPG?E-EbHlc)JGFU!>P zHQ|~1=gk$6gZC`xNbxbaTyj@9eyReqfcK9FzL!gUkKABBvSvyH$fAM-9|Mt$SR>ML&;WtokIt+4{qSLV7NW= z-Rs2%lymqmd_VYuJMH?;WimG6mk)>^dgGe@vMlAOnVxx}Y^C@44H@(p%$Y6zX&n+{W&XEm zXH!MX1V;DNlHf{j$L$SVxgn8`eS6(56uWKalyEK$`7*sjKCdL8C_g#)0`qPM&lHi6 z4Cn3Nq78%%le3-kOGSADOSkeb_?B8!8Nl3dTP&rvM+EmvBDoIPUa=p5h$&fS8RkZeYStoazU8<1tJ6WwHlZX6WXLzfB z2PEb=C7utdED)Td@V#lLnRL8Z-rqMT^9sZOE_l-+vOMdWLBgutj@WS zQ_L&nSW@C1Uz)=GJ|f=1LWZfrtRUywEf)j#1Ph=1g}S@XtlFF>*?DyD-~Ew!{%$#$ z1x}@DX-gdp&Av^m{UP9+$>3n{`~8JYhZ6Xm3JQ3fs^h#Sd5F0Yx;9q&AD z_qN6l-(utWg63parHUNYJGeKa->pnGqJeAMGNVZL#MbT0Blq_2iGPxupK?Rs@7C|} zd8Ij)Tzv5b`7;)Ouuk#H%XBg2x>aV)6VJT5IGv+H@b^QCm#rZ{O-5$<@k*J{A`uvlX>waycgF^ofFPd|EDavtH}Y@<=afZU*|0JOG`|WDZkIa@bCY0dl4}yJ{2}rHVq%s z9bNSw^cd?tXfS?Q@bB=y`%KbYfxLWdnnB!F4jlG=0wTP;zW?+89cT6M;gt{))AZp| zDalj&@SQ<`r$fy1|NsC0y_O2_UK9{pB_M8V%ch{kW2LRj^C6AN>dmGJAs>nvxj<^T zjD-aK#MxbW*d=+~Q#d%-*hM+GI7~MPO%v+iGZiTMzv=IPp=&~y7wp%KA#xKmx zC(Owws3L19FY6+{-nQt2FQcMrueHkm|J(obs!ZqS=W{LPW3@7u-grSobfyxguA+eh zmx;b({f4{$xg7N@d94Dt#l^DO_1HgjG4hzF-unOl8z&F9aw(4jKc^@!7ptPAxQMtc zFPr4??f2_$E3xk5;}J99m1NTw`*15mR{#J0zyGIneJEp`+5e%Gaa!Mpe9q|~dKk^Q zl)d-`Ids&vU;q2xJw%W#AS<~=kz2x3JcV@|^QTDZ+tKB}oA?rv1ftxy-$;dWb8#=@ z*(9E~pN*M^H-nYmT%3bf;`Z5I89qT7u|;gsf|9rI-r_c57m`+1;WGE&5)(iC_K=gA z7$2uN8=J(l`rWy?LhO8vtU;XeT0%nN0^FRtCaZ4}R+D4n7FA(0mAi3GGm}eAjK@NJ zo73)YHer!-{tBlBIG^pi@WY5(i=S2Rk^n2K2)p^d2YK%Vxh;G7M7K2XO9=37%Uydn zP+G)v$tzA%fz4~SZagHx63ZPoE&kB8TY2(vqI`;?<{V;e8@6pVP?3Bc%At{6k*_8p z$*HT(=FgXM`>n7UyW$SvCB|y+mQ6anK+t5Kn4rLq-n9Y7I&9YRQpW4K4sCxMX0?IU z?lt!VAvYeL8;4o~I1G*oSx!|=Jj8wPp`w|J^%EXJ8Tk()BHzky+-qdx6#FFjQO=5w zH`jj6-`z~2hU~iGlJ08G45A_;GFzYPPh#T}keR^d6mw{M*}_L+Jkl@CIVB`SwM4mE zk4ba$H5%PI)Vi&jzxa?WyE$k1r>)bcu}O4!=x%OcV9!{$wTQ#s=*CL@lG9;vVq$!2 zM4iNV&G-Jj^^aAabvdh$+|JArS)VjzUY`9WYc3e5$T)x4aq>fi7>h&Go45Il94rzn z3NpME;w%geY7FZb+I0{1;TulZ`LfBK63%T0E57Z zZEtK?7}&)bb*neOy>H0QB*4U;ayzHpZJ)`mo*g9tH4NN87#sw27#Re(y=PcYU9jC= zK>zk1(INvzy^_?5l8&AU@ojHdU)L)n=oO_1u~`efjZ*$?z`QNeIFiXhPtAZM_Y~Vp z?+X{y5BQr)uenfMwDk3Z6m}V{iJSbL&Xtu_h^%9t&8XfRQ|Im^&9h5|WiA6ll<0L% z1_p-z3@D(XMumfszjY@g14F_-h6@Y=z55s({{IhuEieHLy4c)0*xea#m$G-uHNX2K zc)RHB4n_tB1|$)|1B|ze-x8@K3OG-MABC9`%!YNg7 zMB$?u)_jnu@h`*Y|NomWGWLq-H~;-p#^1%{)WPoVS^E8D^8f$;Cv-D4A7bfbZ$8e_ z{F0^oBjfp(KL7v!kL&!ta|ROwLl?Wd&I=pH^6w4ytfim2*}LLd(hk1hICwyy?TF@& zhSx6`KY;YIcHDS$vv(f@10zE>JLiECo9=j)-WG!k`iu;Wp97kYbNrvCV8F;QwTs=I z<3P!s&Y$5PpVo!`pQd8K$iR7^guRow`7q1thlz#<4)HKFA7|-}`(t>Zi`|{`K#7vg z`*K0X!`;knN5Hl+e&}R={YZuX-~)lQZuaKmOs^kxuhTGKWa!<;@Ztae-JpYf146P` zg2Vq`?QLggVqj=csBcKnsE-H;2>=O3B=)+fG-NSY9x46R{HEb$YvF%Tw32eJFG?a{ zU|>kN%pmY#JA(iyZqen4;X{rDW@P}K1#Q8=(7?vPz_5aWp@ENqf#C%MLxTVV1A_)5 zLxThZ149NQ=*VD*sStfk3?O?W7#JFu7#Kj34G>w_xyg(SoGc6s1q=)fYYZ6~GFTZH zo1_^UUh8Ik@)v+^x4;jX4&kY6!h955(7+M%`>z@s>8N(kC zcS=+qB7!mqcJY-gFFd70wEd-E@1hCr~ z85x*B1r8G!FfgF=8Q}6@<)Cty2~?zmH9>@M@nLqs0wN1$ zf(bAm;a)Ho$^BqH)JiZLL=-nNFf=ki@Igifh6DTz3=cqJrjCJmh7AK_g9HP^0VsYT!NB-{fr0r01OI;nX8-?zfe~a@{RajH`40>X z>>n5y7(veX09MPu|AB$Q{sRNZK4v6+{Qn;?@c)0n!Tc5vGeMB9VfkPM(UAq(hA4X|1m zv5Fa_BbcFtp@<=qA&()Q!Hpr4A%`KA!IL46A&nuQfq|h7tj2)Bgu#Hpk^w{~F@P?& zC}PlMU}SJ+$Y;o9$Yn@n$YUsBC}v<_@MQ2|2xYKhP+)LmP+%xv$Y&^GC}BusNCKOy zz>ot27?MzUp_+$Ln%WtLkUu-F))B)9+ApG zF`&*+%%H#k9k2$cPw<#EIF*(#WP(!)$dAZrmVv>Ffg8gf^cY3NCn#6sf#VvK$g~(( z85kLY!9GZ4$OOk5vfmsT5NbhX7$ZX%I3>eE4UtP37*xRZB_x(Wx^lo_g-BDJEE`zf zyklUnNh~f-%}vUwRH(?!$t$*1DlN*hDo)Nw%}p%U&CN_M$}i4OE748P&$UV{&ebb3 zR8q)I%*#wmEiMU5Eh^5;&$CrB)H6`BQWnhn6FU%fDi}!7NOq`6qhjU;lRkCfYL!^ zUGAp=8@3Il_-Dg(o*Kn8{vo(v3cycrml7&9_K_3|n&<7{Ub@7$i*?7^FNI z7%JQu7+yFrGJJ7jWccsI$iVN+$RO{`$e`!U$YAHp$l&G7$Pnqw$dKsF$WY+S$WZUh z$k6A^$S~KLkzu(rBf}17Murp4j0{(t85tfsGctT|W@KP+VPxQOVPueTVPw#9VPvp$ zVPtS~VPuGKVPr^fVPwd6VPvRrVPt4?VPu%(!pJb!g^^*U3nRl;7ecYst;L6Cr=gP<+dMGq?8?aC?8?aC>&nOw*xc3|tJ{3_J|H415gy3<3;-3_=XT3?dAo3}Ou83=#~I3{niz z3^EL|3~~(e3plY3|b7@3_1+D40;Uu3_c=Q|gpcTI5)k4r96}mKGOhCgy?prI|S?zL^ENi3P8BsD#?2$fd` z6GlLULN{bRpQVr8U5-^?#gqNI{12!la#DMz&%!AkmjtVdzVpwX4PhwtrDKvEi oXCxLCq=HjJaCu?@l9uqqGEhmzpa8k|?X2+$(=(=^5{$kW05ZCtTL1t6 literal 0 HcmV?d00001 diff --git a/mcclone/external/devil178/lib/ILU.lib b/mcclone/external/devil178/lib/ILU.lib new file mode 100644 index 0000000000000000000000000000000000000000..5124172e2965eb41c9a6918a807314845934fc6b GIT binary patch literal 11630 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 O8A5G>&Xd5b-~s?etUizc literal 0 HcmV?d00001 diff --git a/mcclone/external/devil178/lib/ILUT.dll b/mcclone/external/devil178/lib/ILUT.dll new file mode 100644 index 0000000000000000000000000000000000000000..33178896cf62c2c1296644ca4b5371eee42124dc GIT binary patch literal 17408 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 literal 0 HcmV?d00001 diff --git a/mcclone/external/devil178/lib/ILUT.lib b/mcclone/external/devil178/lib/ILUT.lib new file mode 100644 index 0000000000000000000000000000000000000000..99bfb61240124767cdc2c9fe628c9e5e29b2bc88 GIT binary patch literal 10564 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%0AIv+z8Sz?yZAS=~gY+F83*`$! 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%0A|9X4zGOO>$j+76J>F-*aelW8TSf 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

`9ina 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

=kVMZJIfBUVQ5<(@~y0 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

Ex%w@qG&gwih(FdV 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

u5~P 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 literal 0 HcmV?d00001 diff --git a/mcclone/external/devil178/lib/unicode/DevIL.lib b/mcclone/external/devil178/lib/unicode/DevIL.lib new file mode 100644 index 0000000000000000000000000000000000000000..40b60a990a438c1df118d1c53caa91f65d4dcd92 GIT binary patch literal 30802 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/mcclone/external/devil178/lib/unicode/ILU.lib b/mcclone/external/devil178/lib/unicode/ILU.lib new file mode 100644 index 0000000000000000000000000000000000000000..d8daf83894065f209a06368bf3a40d0d85d47f28 GIT binary patch literal 11630 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 Px-x{?1f3^=S-}MW5o|&u literal 0 HcmV?d00001 diff --git a/mcclone/external/devil178/lib/unicode/ILUT.dll b/mcclone/external/devil178/lib/unicode/ILUT.dll new file mode 100644 index 0000000000000000000000000000000000000000..e6cc19dcf9136ba2ee6c01114b5121fcd6616ac5 GIT binary patch literal 17408 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 literal 0 HcmV?d00001 diff --git a/mcclone/external/devil178/lib/unicode/ILUT.lib b/mcclone/external/devil178/lib/unicode/ILUT.lib new file mode 100644 index 0000000000000000000000000000000000000000..89bc4ee144b407c663342d76e9b5d2e565264090 GIT binary patch literal 10564 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 literal 0 HcmV?d00001 diff --git a/mcclone/external/sfml23/include/SFML/Audio.hpp b/mcclone/external/sfml23/include/SFML/Audio.hpp new file mode 100644 index 0000000..41737cf --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Audio.hpp @@ -0,0 +1,56 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_AUDIO_HPP +#define SFML_AUDIO_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#endif // SFML_AUDIO_HPP + +//////////////////////////////////////////////////////////// +/// \defgroup audio Audio module +/// +/// Sounds, streaming (musics or custom sources), recording, +/// spatialization. +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Audio/AlResource.hpp b/mcclone/external/sfml23/include/SFML/Audio/AlResource.hpp new file mode 100644 index 0000000..ca5d2c0 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Audio/AlResource.hpp @@ -0,0 +1,70 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_ALRESOURCE_HPP +#define SFML_ALRESOURCE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Base class for classes that require an OpenAL context +/// +//////////////////////////////////////////////////////////// +class SFML_AUDIO_API AlResource +{ +protected: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + AlResource(); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + //////////////////////////////////////////////////////////// + ~AlResource(); +}; + +} // namespace sf + + +#endif // SFML_ALRESOURCE_HPP + +//////////////////////////////////////////////////////////// +/// \class sf::AlResource +/// \ingroup audio +/// +/// This class is for internal use only, it must be the base +/// of every class that requires a valid OpenAL context in +/// order to work. +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Audio/Export.hpp b/mcclone/external/sfml23/include/SFML/Audio/Export.hpp new file mode 100644 index 0000000..1ea6f42 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Audio/Export.hpp @@ -0,0 +1,48 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_AUDIO_EXPORT_HPP +#define SFML_AUDIO_EXPORT_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +// Define portable import / export macros +//////////////////////////////////////////////////////////// +#if defined(SFML_AUDIO_EXPORTS) + + #define SFML_AUDIO_API SFML_API_EXPORT + +#else + + #define SFML_AUDIO_API SFML_API_IMPORT + +#endif + + +#endif // SFML_AUDIO_EXPORT_HPP diff --git a/mcclone/external/sfml23/include/SFML/Audio/InputSoundFile.hpp b/mcclone/external/sfml23/include/SFML/Audio/InputSoundFile.hpp new file mode 100644 index 0000000..5e306ae --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Audio/InputSoundFile.hpp @@ -0,0 +1,250 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_INPUTSOUNDFILE_HPP +#define SFML_INPUTSOUNDFILE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include + + +namespace sf +{ +class InputStream; +class SoundFileReader; + +//////////////////////////////////////////////////////////// +/// \brief Provide read access to sound files +/// +//////////////////////////////////////////////////////////// +class SFML_AUDIO_API InputSoundFile : NonCopyable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + InputSoundFile(); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + //////////////////////////////////////////////////////////// + ~InputSoundFile(); + + //////////////////////////////////////////////////////////// + /// \brief Open a sound file from the disk for reading + /// + /// The supported audio formats are: WAV, OGG/Vorbis, FLAC. + /// + /// \param filename Path of the sound file to load + /// + /// \return True if the file was successfully opened + /// + //////////////////////////////////////////////////////////// + bool openFromFile(const std::string& filename); + + //////////////////////////////////////////////////////////// + /// \brief Open a sound file in memory for reading + /// + /// The supported audio formats are: WAV, OGG/Vorbis, FLAC. + /// + /// \param data Pointer to the file data in memory + /// \param sizeInBytes Size of the data to load, in bytes + /// + /// \return True if the file was successfully opened + /// + //////////////////////////////////////////////////////////// + bool openFromMemory(const void* data, std::size_t sizeInBytes); + + //////////////////////////////////////////////////////////// + /// \brief Open a sound file from a custom stream for reading + /// + /// The supported audio formats are: WAV, OGG/Vorbis, FLAC. + /// + /// \param stream Source stream to read from + /// + /// \return True if the file was successfully opened + /// + //////////////////////////////////////////////////////////// + bool openFromStream(InputStream& stream); + + //////////////////////////////////////////////////////////// + /// \brief Open the sound file from the disk for writing + /// + /// \param filename Path of the sound file to write + /// \param channelCount Number of channels in the sound + /// \param sampleRate Sample rate of the sound + /// + /// \return True if the file was successfully opened + /// + //////////////////////////////////////////////////////////// + bool openForWriting(const std::string& filename, unsigned int channelCount, unsigned int sampleRate); + + //////////////////////////////////////////////////////////// + /// \brief Get the total number of audio samples in the file + /// + /// \return Number of samples + /// + //////////////////////////////////////////////////////////// + Uint64 getSampleCount() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the number of channels used by the sound + /// + /// \return Number of channels (1 = mono, 2 = stereo) + /// + //////////////////////////////////////////////////////////// + unsigned int getChannelCount() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the sample rate of the sound + /// + /// \return Sample rate, in samples per second + /// + //////////////////////////////////////////////////////////// + unsigned int getSampleRate() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the total duration of the sound file + /// + /// This function is provided for convenience, the duration is + /// deduced from the other sound file attributes. + /// + /// \return Duration of the sound file + /// + //////////////////////////////////////////////////////////// + Time getDuration() const; + + //////////////////////////////////////////////////////////// + /// \brief Change the current read position to the given sample offset + /// + /// This function takes a sample offset to provide maximum + /// precision. If you need to jump to a given time, use the + /// other overload. + /// + /// If the given offset exceeds to total number of samples, + /// this function jumps to the end of the sound file. + /// + /// \param sampleOffset Index of the sample to jump to, relative to the beginning + /// + //////////////////////////////////////////////////////////// + void seek(Uint64 sampleOffset); + + //////////////////////////////////////////////////////////// + /// \brief Change the current read position to the given time offset + /// + /// Using a time offset is handy but imprecise. If you need an accurate + /// result, consider using the overload which takes a sample offset. + /// + /// If the given time exceeds to total duration, this function jumps + /// to the end of the sound file. + /// + /// \param timeOffset Time to jump to, relative to the beginning + /// + //////////////////////////////////////////////////////////// + void seek(Time timeOffset); + + //////////////////////////////////////////////////////////// + /// \brief Read audio samples from the open file + /// + /// \param samples Pointer to the sample array to fill + /// \param maxCount Maximum number of samples to read + /// + /// \return Number of samples actually read (may be less than \a maxCount) + /// + //////////////////////////////////////////////////////////// + Uint64 read(Int16* samples, Uint64 maxCount); + +private: + + //////////////////////////////////////////////////////////// + /// \brief Close the current file + /// + //////////////////////////////////////////////////////////// + void close(); + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + SoundFileReader* m_reader; ///< Reader that handles I/O on the file's format + InputStream* m_stream; ///< Input stream used to access the file's data + bool m_streamOwned; ///< Is the stream internal or external? + Uint64 m_sampleCount; ///< Total number of samples in the file + unsigned int m_channelCount; ///< Number of channels of the sound + unsigned int m_sampleRate; ///< Number of samples per second +}; + +} // namespace sf + + +#endif // SFML_INPUTSOUNDFILE_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::InputSoundFile +/// \ingroup audio +/// +/// This class decodes audio samples from a sound file. It is +/// used internally by higher-level classes such as sf::SoundBuffer +/// and sf::Music, but can also be useful if you want to process +/// or analyze audio files without playing them, or if you want to +/// implement your own version of sf::Music with more specific +/// features. +/// +/// Usage example: +/// \code +/// // Open a sound file +/// sf::InputSoundFile file; +/// if (!file.openFromFile("music.ogg")) +/// /* error */; +/// +/// // Print the sound attributes +/// std::cout << "duration: " << file.getDuration().asSeconds() << std::endl; +/// std::cout << "channels: " << file.getChannelCount() << std::endl; +/// std::cout << "sample rate: " << file.getSampleRate() << std::endl; +/// std::cout << "sample count: " << file.getSampleCount() << std::endl; +/// +/// // Read and process batches of samples until the end of file is reached +/// sf::Int16 samples[1024]; +/// sf::Uint64 count; +/// do +/// { +/// count = file.read(samples, 1024); +/// +/// // process, analyze, play, convert, or whatever +/// // you want to do with the samples... +/// } +/// while (count > 0); +/// \endcode +/// +/// \see sf::SoundFileReader, sf::OutputSoundFile +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Audio/Listener.hpp b/mcclone/external/sfml23/include/SFML/Audio/Listener.hpp new file mode 100644 index 0000000..04e4af3 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Audio/Listener.hpp @@ -0,0 +1,234 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_LISTENER_HPP +#define SFML_LISTENER_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief The audio listener is the point in the scene +/// from where all the sounds are heard +/// +//////////////////////////////////////////////////////////// +class SFML_AUDIO_API Listener +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Change the global volume of all the sounds and musics + /// + /// The volume is a number between 0 and 100; it is combined with + /// the individual volume of each sound / music. + /// The default value for the volume is 100 (maximum). + /// + /// \param volume New global volume, in the range [0, 100] + /// + /// \see getGlobalVolume + /// + //////////////////////////////////////////////////////////// + static void setGlobalVolume(float volume); + + //////////////////////////////////////////////////////////// + /// \brief Get the current value of the global volume + /// + /// \return Current global volume, in the range [0, 100] + /// + /// \see setGlobalVolume + /// + //////////////////////////////////////////////////////////// + static float getGlobalVolume(); + + //////////////////////////////////////////////////////////// + /// \brief Set the position of the listener in the scene + /// + /// The default listener's position is (0, 0, 0). + /// + /// \param x X coordinate of the listener's position + /// \param y Y coordinate of the listener's position + /// \param z Z coordinate of the listener's position + /// + /// \see getPosition, setDirection + /// + //////////////////////////////////////////////////////////// + static void setPosition(float x, float y, float z); + + //////////////////////////////////////////////////////////// + /// \brief Set the position of the listener in the scene + /// + /// The default listener's position is (0, 0, 0). + /// + /// \param position New listener's position + /// + /// \see getPosition, setDirection + /// + //////////////////////////////////////////////////////////// + static void setPosition(const Vector3f& position); + + //////////////////////////////////////////////////////////// + /// \brief Get the current position of the listener in the scene + /// + /// \return Listener's position + /// + /// \see setPosition + /// + //////////////////////////////////////////////////////////// + static Vector3f getPosition(); + + //////////////////////////////////////////////////////////// + /// \brief Set the forward vector of the listener in the scene + /// + /// The direction (also called "at vector") is the vector + /// pointing forward from the listener's perspective. Together + /// with the up vector, it defines the 3D orientation of the + /// listener in the scene. The direction vector doesn't + /// have to be normalized. + /// The default listener's direction is (0, 0, -1). + /// + /// \param x X coordinate of the listener's direction + /// \param y Y coordinate of the listener's direction + /// \param z Z coordinate of the listener's direction + /// + /// \see getDirection, setUpVector, setPosition + /// + //////////////////////////////////////////////////////////// + static void setDirection(float x, float y, float z); + + //////////////////////////////////////////////////////////// + /// \brief Set the forward vector of the listener in the scene + /// + /// The direction (also called "at vector") is the vector + /// pointing forward from the listener's perspective. Together + /// with the up vector, it defines the 3D orientation of the + /// listener in the scene. The direction vector doesn't + /// have to be normalized. + /// The default listener's direction is (0, 0, -1). + /// + /// \param direction New listener's direction + /// + /// \see getDirection, setUpVector, setPosition + /// + //////////////////////////////////////////////////////////// + static void setDirection(const Vector3f& direction); + + //////////////////////////////////////////////////////////// + /// \brief Get the current forward vector of the listener in the scene + /// + /// \return Listener's forward vector (not normalized) + /// + /// \see setDirection + /// + //////////////////////////////////////////////////////////// + static Vector3f getDirection(); + + //////////////////////////////////////////////////////////// + /// \brief Set the upward vector of the listener in the scene + /// + /// The up vector is the vector that points upward from the + /// listener's perspective. Together with the direction, it + /// defines the 3D orientation of the listener in the scene. + /// The up vector doesn't have to be normalized. + /// The default listener's up vector is (0, 1, 0). It is usually + /// not necessary to change it, especially in 2D scenarios. + /// + /// \param x X coordinate of the listener's up vector + /// \param y Y coordinate of the listener's up vector + /// \param z Z coordinate of the listener's up vector + /// + /// \see getUpVector, setDirection, setPosition + /// + //////////////////////////////////////////////////////////// + static void setUpVector(float x, float y, float z); + + //////////////////////////////////////////////////////////// + /// \brief Set the upward vector of the listener in the scene + /// + /// The up vector is the vector that points upward from the + /// listener's perspective. Together with the direction, it + /// defines the 3D orientation of the listener in the scene. + /// The up vector doesn't have to be normalized. + /// The default listener's up vector is (0, 1, 0). It is usually + /// not necessary to change it, especially in 2D scenarios. + /// + /// \param upVector New listener's up vector + /// + /// \see getUpVector, setDirection, setPosition + /// + //////////////////////////////////////////////////////////// + static void setUpVector(const Vector3f& upVector); + + //////////////////////////////////////////////////////////// + /// \brief Get the current upward vector of the listener in the scene + /// + /// \return Listener's upward vector (not normalized) + /// + /// \see setUpVector + /// + //////////////////////////////////////////////////////////// + static Vector3f getUpVector(); +}; + +} // namespace sf + + +#endif // SFML_LISTENER_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Listener +/// \ingroup audio +/// +/// The audio listener defines the global properties of the +/// audio environment, it defines where and how sounds and musics +/// are heard. If sf::View is the eyes of the user, then sf::Listener +/// is his ears (by the way, they are often linked together -- +/// same position, orientation, etc.). +/// +/// sf::Listener is a simple interface, which allows to setup the +/// listener in the 3D audio environment (position, direction and +/// up vector), and to adjust the global volume. +/// +/// Because the listener is unique in the scene, sf::Listener only +/// contains static functions and doesn't have to be instantiated. +/// +/// Usage example: +/// \code +/// // Move the listener to the position (1, 0, -5) +/// sf::Listener::setPosition(1, 0, -5); +/// +/// // Make it face the right axis (1, 0, 0) +/// sf::Listener::setDirection(1, 0, 0); +/// +/// // Reduce the global volume +/// sf::Listener::setGlobalVolume(50); +/// \endcode +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Audio/Music.hpp b/mcclone/external/sfml23/include/SFML/Audio/Music.hpp new file mode 100644 index 0000000..76b4254 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Audio/Music.hpp @@ -0,0 +1,229 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_MUSIC_HPP +#define SFML_MUSIC_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include +#include + + +namespace sf +{ +class InputStream; + +//////////////////////////////////////////////////////////// +/// \brief Streamed music played from an audio file +/// +//////////////////////////////////////////////////////////// +class SFML_AUDIO_API Music : public SoundStream +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + Music(); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + //////////////////////////////////////////////////////////// + ~Music(); + + //////////////////////////////////////////////////////////// + /// \brief Open a music from an audio file + /// + /// This function doesn't start playing the music (call play() + /// to do so). + /// See the documentation of sf::InputSoundFile for the list + /// of supported formats. + /// + /// \warning Since the music is not loaded at once but rather + /// streamed continuously, the file must remain accessible until + /// the sf::Music object loads a new music or is destroyed. + /// + /// \param filename Path of the music file to open + /// + /// \return True if loading succeeded, false if it failed + /// + /// \see openFromMemory, openFromStream + /// + //////////////////////////////////////////////////////////// + bool openFromFile(const std::string& filename); + + //////////////////////////////////////////////////////////// + /// \brief Open a music from an audio file in memory + /// + /// This function doesn't start playing the music (call play() + /// to do so). + /// See the documentation of sf::InputSoundFile for the list + /// of supported formats. + /// + /// \warning Since the music is not loaded at once but rather streamed + /// continuously, the \a data buffer must remain accessible until + /// the sf::Music object loads a new music or is destroyed. That is, + /// you can't deallocate the buffer right after calling this function. + /// + /// \param data Pointer to the file data in memory + /// \param sizeInBytes Size of the data to load, in bytes + /// + /// \return True if loading succeeded, false if it failed + /// + /// \see openFromFile, openFromStream + /// + //////////////////////////////////////////////////////////// + bool openFromMemory(const void* data, std::size_t sizeInBytes); + + //////////////////////////////////////////////////////////// + /// \brief Open a music from an audio file in a custom stream + /// + /// This function doesn't start playing the music (call play() + /// to do so). + /// See the documentation of sf::InputSoundFile for the list + /// of supported formats. + /// + /// \warning Since the music is not loaded at once but rather + /// streamed continuously, the \a stream must remain accessible + /// until the sf::Music object loads a new music or is destroyed. + /// + /// \param stream Source stream to read from + /// + /// \return True if loading succeeded, false if it failed + /// + /// \see openFromFile, openFromMemory + /// + //////////////////////////////////////////////////////////// + bool openFromStream(InputStream& stream); + + //////////////////////////////////////////////////////////// + /// \brief Get the total duration of the music + /// + /// \return Music duration + /// + //////////////////////////////////////////////////////////// + Time getDuration() const; + +protected: + + //////////////////////////////////////////////////////////// + /// \brief Request a new chunk of audio samples from the stream source + /// + /// This function fills the chunk from the next samples + /// to read from the audio file. + /// + /// \param data Chunk of data to fill + /// + /// \return True to continue playback, false to stop + /// + //////////////////////////////////////////////////////////// + virtual bool onGetData(Chunk& data); + + //////////////////////////////////////////////////////////// + /// \brief Change the current playing position in the stream source + /// + /// \param timeOffset New playing position, from the beginning of the music + /// + //////////////////////////////////////////////////////////// + virtual void onSeek(Time timeOffset); + +private: + + //////////////////////////////////////////////////////////// + /// \brief Initialize the internal state after loading a new music + /// + //////////////////////////////////////////////////////////// + void initialize(); + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + InputSoundFile m_file; ///< The streamed music file + Time m_duration; ///< Music duration + std::vector m_samples; ///< Temporary buffer of samples + Mutex m_mutex; ///< Mutex protecting the data +}; + +} // namespace sf + + +#endif // SFML_MUSIC_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Music +/// \ingroup audio +/// +/// Musics are sounds that are streamed rather than completely +/// loaded in memory. This is especially useful for compressed +/// musics that usually take hundreds of MB when they are +/// uncompressed: by streaming it instead of loading it entirely, +/// you avoid saturating the memory and have almost no loading delay. +/// This implies that the underlying resource (file, stream or +/// memory buffer) must remain valid for the lifetime of the +/// sf::Music object. +/// +/// Apart from that, a sf::Music has almost the same features as +/// the sf::SoundBuffer / sf::Sound pair: you can play/pause/stop +/// it, request its parameters (channels, sample rate), change +/// the way it is played (pitch, volume, 3D position, ...), etc. +/// +/// As a sound stream, a music is played in its own thread in order +/// not to block the rest of the program. This means that you can +/// leave the music alone after calling play(), it will manage itself +/// very well. +/// +/// Usage example: +/// \code +/// // Declare a new music +/// sf::Music music; +/// +/// // Open it from an audio file +/// if (!music.openFromFile("music.ogg")) +/// { +/// // error... +/// } +/// +/// // Change some parameters +/// music.setPosition(0, 1, 10); // change its 3D position +/// music.setPitch(2); // increase the pitch +/// music.setVolume(50); // reduce the volume +/// music.setLoop(true); // make it loop +/// +/// // Play it +/// music.play(); +/// \endcode +/// +/// \see sf::Sound, sf::SoundStream +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Audio/OutputSoundFile.hpp b/mcclone/external/sfml23/include/SFML/Audio/OutputSoundFile.hpp new file mode 100644 index 0000000..8f60498 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Audio/OutputSoundFile.hpp @@ -0,0 +1,133 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_OUTPUTSOUNDFILE_HPP +#define SFML_OUTPUTSOUNDFILE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +namespace sf +{ +class SoundFileWriter; + +//////////////////////////////////////////////////////////// +/// \brief Provide write access to sound files +/// +//////////////////////////////////////////////////////////// +class SFML_AUDIO_API OutputSoundFile : NonCopyable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + OutputSoundFile(); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + /// Closes the file if it was still open. + /// + //////////////////////////////////////////////////////////// + ~OutputSoundFile(); + + //////////////////////////////////////////////////////////// + /// \brief Open the sound file from the disk for writing + /// + /// The supported audio formats are: WAV, OGG/Vorbis, FLAC. + /// + /// \param filename Path of the sound file to write + /// \param sampleRate Sample rate of the sound + /// \param channelCount Number of channels in the sound + /// + /// \return True if the file was successfully opened + /// + //////////////////////////////////////////////////////////// + bool openFromFile(const std::string& filename, unsigned int sampleRate, unsigned int channelCount); + + //////////////////////////////////////////////////////////// + /// \brief Write audio samples to the file + /// + /// \param samples Pointer to the sample array to write + /// \param count Number of samples to write + /// + //////////////////////////////////////////////////////////// + void write(const Int16* samples, Uint64 count); + +private: + + //////////////////////////////////////////////////////////// + /// \brief Close the current file + /// + //////////////////////////////////////////////////////////// + void close(); + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + SoundFileWriter* m_writer; ///< Writer that handles I/O on the file's format +}; + +} // namespace sf + + +#endif // SFML_OUTPUTSOUNDFILE_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::OutputSoundFile +/// \ingroup audio +/// +/// This class encodes audio samples to a sound file. It is +/// used internally by higher-level classes such as sf::SoundBuffer, +/// but can also be useful if you want to create audio files from +/// custom data sources, like generated audio samples. +/// +/// Usage example: +/// \code +/// // Create a sound file, ogg/vorbis format, 44100 Hz, stereo +/// sf::OutputSoundFile file; +/// if (!file.openFromFile("music.ogg", 44100, 2)) +/// /* error */; +/// +/// while (...) +/// { +/// // Read or generate audio samples from your custom source +/// std::vector samples = ...; +/// +/// // Write them to the file +/// file.write(samples.data(), samples.size()); +/// } +/// \endcode +/// +/// \see sf::SoundFileWriter, sf::InputSoundFile +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Audio/Sound.hpp b/mcclone/external/sfml23/include/SFML/Audio/Sound.hpp new file mode 100644 index 0000000..8b0771d --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Audio/Sound.hpp @@ -0,0 +1,264 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOUND_HPP +#define SFML_SOUND_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include + + +namespace sf +{ +class SoundBuffer; + +//////////////////////////////////////////////////////////// +/// \brief Regular sound that can be played in the audio environment +/// +//////////////////////////////////////////////////////////// +class SFML_AUDIO_API Sound : public SoundSource +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + Sound(); + + //////////////////////////////////////////////////////////// + /// \brief Construct the sound with a buffer + /// + /// \param buffer Sound buffer containing the audio data to play with the sound + /// + //////////////////////////////////////////////////////////// + explicit Sound(const SoundBuffer& buffer); + + //////////////////////////////////////////////////////////// + /// \brief Copy constructor + /// + /// \param copy Instance to copy + /// + //////////////////////////////////////////////////////////// + Sound(const Sound& copy); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + //////////////////////////////////////////////////////////// + ~Sound(); + + //////////////////////////////////////////////////////////// + /// \brief Start or resume playing the sound + /// + /// This function starts the stream if it was stopped, resumes + /// it if it was paused, and restarts it from beginning if it + /// was it already playing. + /// This function uses its own thread so that it doesn't block + /// the rest of the program while the sound is played. + /// + /// \see pause, stop + /// + //////////////////////////////////////////////////////////// + void play(); + + //////////////////////////////////////////////////////////// + /// \brief Pause the sound + /// + /// This function pauses the sound if it was playing, + /// otherwise (sound already paused or stopped) it has no effect. + /// + /// \see play, stop + /// + //////////////////////////////////////////////////////////// + void pause(); + + //////////////////////////////////////////////////////////// + /// \brief stop playing the sound + /// + /// This function stops the sound if it was playing or paused, + /// and does nothing if it was already stopped. + /// It also resets the playing position (unlike pause()). + /// + /// \see play, pause + /// + //////////////////////////////////////////////////////////// + void stop(); + + //////////////////////////////////////////////////////////// + /// \brief Set the source buffer containing the audio data to play + /// + /// It is important to note that the sound buffer is not copied, + /// thus the sf::SoundBuffer instance must remain alive as long + /// as it is attached to the sound. + /// + /// \param buffer Sound buffer to attach to the sound + /// + /// \see getBuffer + /// + //////////////////////////////////////////////////////////// + void setBuffer(const SoundBuffer& buffer); + + //////////////////////////////////////////////////////////// + /// \brief Set whether or not the sound should loop after reaching the end + /// + /// If set, the sound will restart from beginning after + /// reaching the end and so on, until it is stopped or + /// setLoop(false) is called. + /// The default looping state for sound is false. + /// + /// \param loop True to play in loop, false to play once + /// + /// \see getLoop + /// + //////////////////////////////////////////////////////////// + void setLoop(bool loop); + + //////////////////////////////////////////////////////////// + /// \brief Change the current playing position of the sound + /// + /// The playing position can be changed when the sound is + /// either paused or playing. Changing the playing position + /// when the sound is stopped has no effect, since playing + /// the sound will reset its position. + /// + /// \param timeOffset New playing position, from the beginning of the sound + /// + /// \see getPlayingOffset + /// + //////////////////////////////////////////////////////////// + void setPlayingOffset(Time timeOffset); + + //////////////////////////////////////////////////////////// + /// \brief Get the audio buffer attached to the sound + /// + /// \return Sound buffer attached to the sound (can be NULL) + /// + //////////////////////////////////////////////////////////// + const SoundBuffer* getBuffer() const; + + //////////////////////////////////////////////////////////// + /// \brief Tell whether or not the sound is in loop mode + /// + /// \return True if the sound is looping, false otherwise + /// + /// \see setLoop + /// + //////////////////////////////////////////////////////////// + bool getLoop() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the current playing position of the sound + /// + /// \return Current playing position, from the beginning of the sound + /// + /// \see setPlayingOffset + /// + //////////////////////////////////////////////////////////// + Time getPlayingOffset() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the current status of the sound (stopped, paused, playing) + /// + /// \return Current status of the sound + /// + //////////////////////////////////////////////////////////// + Status getStatus() const; + + //////////////////////////////////////////////////////////// + /// \brief Overload of assignment operator + /// + /// \param right Instance to assign + /// + /// \return Reference to self + /// + //////////////////////////////////////////////////////////// + Sound& operator =(const Sound& right); + + //////////////////////////////////////////////////////////// + /// \brief Reset the internal buffer of the sound + /// + /// This function is for internal use only, you don't have + /// to use it. It is called by the sf::SoundBuffer that + /// this sound uses, when it is destroyed in order to prevent + /// the sound from using a dead buffer. + /// + //////////////////////////////////////////////////////////// + void resetBuffer(); + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + const SoundBuffer* m_buffer; ///< Sound buffer bound to the source +}; + +} // namespace sf + + +#endif // SFML_SOUND_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Sound +/// \ingroup audio +/// +/// sf::Sound is the class to use to play sounds. +/// It provides: +/// \li Control (play, pause, stop) +/// \li Ability to modify output parameters in real-time (pitch, volume, ...) +/// \li 3D spatial features (position, attenuation, ...). +/// +/// sf::Sound is perfect for playing short sounds that can +/// fit in memory and require no latency, like foot steps or +/// gun shots. For longer sounds, like background musics +/// or long speeches, rather see sf::Music (which is based +/// on streaming). +/// +/// In order to work, a sound must be given a buffer of audio +/// data to play. Audio data (samples) is stored in sf::SoundBuffer, +/// and attached to a sound with the setBuffer() function. +/// The buffer object attached to a sound must remain alive +/// as long as the sound uses it. Note that multiple sounds +/// can use the same sound buffer at the same time. +/// +/// Usage example: +/// \code +/// sf::SoundBuffer buffer; +/// buffer.loadFromFile("sound.wav"); +/// +/// sf::Sound sound; +/// sound.setBuffer(buffer); +/// sound.play(); +/// \endcode +/// +/// \see sf::SoundBuffer, sf::Music +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Audio/SoundBuffer.hpp b/mcclone/external/sfml23/include/SFML/Audio/SoundBuffer.hpp new file mode 100644 index 0000000..42eda6f --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Audio/SoundBuffer.hpp @@ -0,0 +1,352 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOUNDBUFFER_HPP +#define SFML_SOUNDBUFFER_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include + + +namespace sf +{ +class Sound; +class InputSoundFile; +class InputStream; + +//////////////////////////////////////////////////////////// +/// \brief Storage for audio samples defining a sound +/// +//////////////////////////////////////////////////////////// +class SFML_AUDIO_API SoundBuffer : AlResource +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + SoundBuffer(); + + //////////////////////////////////////////////////////////// + /// \brief Copy constructor + /// + /// \param copy Instance to copy + /// + //////////////////////////////////////////////////////////// + SoundBuffer(const SoundBuffer& copy); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + //////////////////////////////////////////////////////////// + ~SoundBuffer(); + + //////////////////////////////////////////////////////////// + /// \brief Load the sound buffer from a file + /// + /// See the documentation of sf::InputSoundFile for the list + /// of supported formats. + /// + /// \param filename Path of the sound file to load + /// + /// \return True if loading succeeded, false if it failed + /// + /// \see loadFromMemory, loadFromStream, loadFromSamples, saveToFile + /// + //////////////////////////////////////////////////////////// + bool loadFromFile(const std::string& filename); + + //////////////////////////////////////////////////////////// + /// \brief Load the sound buffer from a file in memory + /// + /// See the documentation of sf::InputSoundFile for the list + /// of supported formats. + /// + /// \param data Pointer to the file data in memory + /// \param sizeInBytes Size of the data to load, in bytes + /// + /// \return True if loading succeeded, false if it failed + /// + /// \see loadFromFile, loadFromStream, loadFromSamples + /// + //////////////////////////////////////////////////////////// + bool loadFromMemory(const void* data, std::size_t sizeInBytes); + + //////////////////////////////////////////////////////////// + /// \brief Load the sound buffer from a custom stream + /// + /// See the documentation of sf::InputSoundFile for the list + /// of supported formats. + /// + /// \param stream Source stream to read from + /// + /// \return True if loading succeeded, false if it failed + /// + /// \see loadFromFile, loadFromMemory, loadFromSamples + /// + //////////////////////////////////////////////////////////// + bool loadFromStream(InputStream& stream); + + //////////////////////////////////////////////////////////// + /// \brief Load the sound buffer from an array of audio samples + /// + /// The assumed format of the audio samples is 16 bits signed integer + /// (sf::Int16). + /// + /// \param samples Pointer to the array of samples in memory + /// \param sampleCount Number of samples in the array + /// \param channelCount Number of channels (1 = mono, 2 = stereo, ...) + /// \param sampleRate Sample rate (number of samples to play per second) + /// + /// \return True if loading succeeded, false if it failed + /// + /// \see loadFromFile, loadFromMemory, saveToFile + /// + //////////////////////////////////////////////////////////// + bool loadFromSamples(const Int16* samples, Uint64 sampleCount, unsigned int channelCount, unsigned int sampleRate); + + //////////////////////////////////////////////////////////// + /// \brief Save the sound buffer to an audio file + /// + /// See the documentation of sf::OutputSoundFile for the list + /// of supported formats. + /// + /// \param filename Path of the sound file to write + /// + /// \return True if saving succeeded, false if it failed + /// + /// \see loadFromFile, loadFromMemory, loadFromSamples + /// + //////////////////////////////////////////////////////////// + bool saveToFile(const std::string& filename) const; + + //////////////////////////////////////////////////////////// + /// \brief Get the array of audio samples stored in the buffer + /// + /// The format of the returned samples is 16 bits signed integer + /// (sf::Int16). The total number of samples in this array + /// is given by the getSampleCount() function. + /// + /// \return Read-only pointer to the array of sound samples + /// + /// \see getSampleCount + /// + //////////////////////////////////////////////////////////// + const Int16* getSamples() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the number of samples stored in the buffer + /// + /// The array of samples can be accessed with the getSamples() + /// function. + /// + /// \return Number of samples + /// + /// \see getSamples + /// + //////////////////////////////////////////////////////////// + Uint64 getSampleCount() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the sample rate of the sound + /// + /// The sample rate is the number of samples played per second. + /// The higher, the better the quality (for example, 44100 + /// samples/s is CD quality). + /// + /// \return Sample rate (number of samples per second) + /// + /// \see getChannelCount, getDuration + /// + //////////////////////////////////////////////////////////// + unsigned int getSampleRate() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the number of channels used by the sound + /// + /// If the sound is mono then the number of channels will + /// be 1, 2 for stereo, etc. + /// + /// \return Number of channels + /// + /// \see getSampleRate, getDuration + /// + //////////////////////////////////////////////////////////// + unsigned int getChannelCount() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the total duration of the sound + /// + /// \return Sound duration + /// + /// \see getSampleRate, getChannelCount + /// + //////////////////////////////////////////////////////////// + Time getDuration() const; + + //////////////////////////////////////////////////////////// + /// \brief Overload of assignment operator + /// + /// \param right Instance to assign + /// + /// \return Reference to self + /// + //////////////////////////////////////////////////////////// + SoundBuffer& operator =(const SoundBuffer& right); + +private: + + friend class Sound; + + //////////////////////////////////////////////////////////// + /// \brief Initialize the internal state after loading a new sound + /// + /// \param file Sound file providing access to the new loaded sound + /// + /// \return True on successful initialization, false on failure + /// + //////////////////////////////////////////////////////////// + bool initialize(InputSoundFile& file); + + //////////////////////////////////////////////////////////// + /// \brief Update the internal buffer with the cached audio samples + /// + /// \param channelCount Number of channels + /// \param sampleRate Sample rate (number of samples per second) + /// + /// \return True on success, false if any error happened + /// + //////////////////////////////////////////////////////////// + bool update(unsigned int channelCount, unsigned int sampleRate); + + //////////////////////////////////////////////////////////// + /// \brief Add a sound to the list of sounds that use this buffer + /// + /// \param sound Sound instance to attach + /// + //////////////////////////////////////////////////////////// + void attachSound(Sound* sound) const; + + //////////////////////////////////////////////////////////// + /// \brief Remove a sound from the list of sounds that use this buffer + /// + /// \param sound Sound instance to detach + /// + //////////////////////////////////////////////////////////// + void detachSound(Sound* sound) const; + + //////////////////////////////////////////////////////////// + // Types + //////////////////////////////////////////////////////////// + typedef std::set SoundList; ///< Set of unique sound instances + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + unsigned int m_buffer; ///< OpenAL buffer identifier + std::vector m_samples; ///< Samples buffer + Time m_duration; ///< Sound duration + mutable SoundList m_sounds; ///< List of sounds that are using this buffer +}; + +} // namespace sf + + +#endif // SFML_SOUNDBUFFER_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::SoundBuffer +/// \ingroup audio +/// +/// A sound buffer holds the data of a sound, which is +/// an array of audio samples. A sample is a 16 bits signed integer +/// that defines the amplitude of the sound at a given time. +/// The sound is then reconstituted by playing these samples at +/// a high rate (for example, 44100 samples per second is the +/// standard rate used for playing CDs). In short, audio samples +/// are like texture pixels, and a sf::SoundBuffer is similar to +/// a sf::Texture. +/// +/// A sound buffer can be loaded from a file (see loadFromFile() +/// for the complete list of supported formats), from memory, from +/// a custom stream (see sf::InputStream) or directly from an array +/// of samples. It can also be saved back to a file. +/// +/// Sound buffers alone are not very useful: they hold the audio data +/// but cannot be played. To do so, you need to use the sf::Sound class, +/// which provides functions to play/pause/stop the sound as well as +/// changing the way it is outputted (volume, pitch, 3D position, ...). +/// This separation allows more flexibility and better performances: +/// indeed a sf::SoundBuffer is a heavy resource, and any operation on it +/// is slow (often too slow for real-time applications). On the other +/// side, a sf::Sound is a lightweight object, which can use the audio data +/// of a sound buffer and change the way it is played without actually +/// modifying that data. Note that it is also possible to bind +/// several sf::Sound instances to the same sf::SoundBuffer. +/// +/// It is important to note that the sf::Sound instance doesn't +/// copy the buffer that it uses, it only keeps a reference to it. +/// Thus, a sf::SoundBuffer must not be destructed while it is +/// used by a sf::Sound (i.e. never write a function that +/// uses a local sf::SoundBuffer instance for loading a sound). +/// +/// Usage example: +/// \code +/// // Declare a new sound buffer +/// sf::SoundBuffer buffer; +/// +/// // Load it from a file +/// if (!buffer.loadFromFile("sound.wav")) +/// { +/// // error... +/// } +/// +/// // Create a sound source and bind it to the buffer +/// sf::Sound sound1; +/// sound1.setBuffer(buffer); +/// +/// // Play the sound +/// sound1.play(); +/// +/// // Create another sound source bound to the same buffer +/// sf::Sound sound2; +/// sound2.setBuffer(buffer); +/// +/// // Play it with a higher pitch -- the first sound remains unchanged +/// sound2.setPitch(2); +/// sound2.play(); +/// \endcode +/// +/// \see sf::Sound, sf::SoundBufferRecorder +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Audio/SoundBufferRecorder.hpp b/mcclone/external/sfml23/include/SFML/Audio/SoundBufferRecorder.hpp new file mode 100644 index 0000000..7715ac5 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Audio/SoundBufferRecorder.hpp @@ -0,0 +1,138 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOUNDBUFFERRECORDER_HPP +#define SFML_SOUNDBUFFERRECORDER_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Specialized SoundRecorder which stores the captured +/// audio data into a sound buffer +/// +//////////////////////////////////////////////////////////// +class SFML_AUDIO_API SoundBufferRecorder : public SoundRecorder +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Get the sound buffer containing the captured audio data + /// + /// The sound buffer is valid only after the capture has ended. + /// This function provides a read-only access to the internal + /// sound buffer, but it can be copied if you need to + /// make any modification to it. + /// + /// \return Read-only access to the sound buffer + /// + //////////////////////////////////////////////////////////// + const SoundBuffer& getBuffer() const; + +protected: + + //////////////////////////////////////////////////////////// + /// \brief Start capturing audio data + /// + /// \return True to start the capture, or false to abort it + /// + //////////////////////////////////////////////////////////// + virtual bool onStart(); + + //////////////////////////////////////////////////////////// + /// \brief Process a new chunk of recorded samples + /// + /// \param samples Pointer to the new chunk of recorded samples + /// \param sampleCount Number of samples pointed by \a samples + /// + /// \return True to continue the capture, or false to stop it + /// + //////////////////////////////////////////////////////////// + virtual bool onProcessSamples(const Int16* samples, std::size_t sampleCount); + + //////////////////////////////////////////////////////////// + /// \brief Stop capturing audio data + /// + //////////////////////////////////////////////////////////// + virtual void onStop(); + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + std::vector m_samples; ///< Temporary sample buffer to hold the recorded data + SoundBuffer m_buffer; ///< Sound buffer that will contain the recorded data +}; + +} // namespace sf + +#endif // SFML_SOUNDBUFFERRECORDER_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::SoundBufferRecorder +/// \ingroup audio +/// +/// sf::SoundBufferRecorder allows to access a recorded sound +/// through a sf::SoundBuffer, so that it can be played, saved +/// to a file, etc. +/// +/// It has the same simple interface as its base class (start(), stop()) +/// and adds a function to retrieve the recorded sound buffer +/// (getBuffer()). +/// +/// As usual, don't forget to call the isAvailable() function +/// before using this class (see sf::SoundRecorder for more details +/// about this). +/// +/// Usage example: +/// \code +/// if (sf::SoundBufferRecorder::isAvailable()) +/// { +/// // Record some audio data +/// sf::SoundBufferRecorder recorder; +/// recorder.start(); +/// ... +/// recorder.stop(); +/// +/// // Get the buffer containing the captured audio data +/// const sf::SoundBuffer& buffer = recorder.getBuffer(); +/// +/// // Save it to a file (for example...) +/// buffer.saveToFile("my_record.ogg"); +/// } +/// \endcode +/// +/// \see sf::SoundRecorder +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Audio/SoundFileFactory.hpp b/mcclone/external/sfml23/include/SFML/Audio/SoundFileFactory.hpp new file mode 100644 index 0000000..bd346cc --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Audio/SoundFileFactory.hpp @@ -0,0 +1,197 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOUNDFILEFACTORY_HPP +#define SFML_SOUNDFILEFACTORY_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +namespace sf +{ +class InputStream; +class SoundFileReader; +class SoundFileWriter; + +//////////////////////////////////////////////////////////// +/// \brief Manages and instantiates sound file readers and writers +/// +//////////////////////////////////////////////////////////// +class SFML_AUDIO_API SoundFileFactory +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Register a new reader + /// + /// \see unregisterReader + /// + //////////////////////////////////////////////////////////// + template + static void registerReader(); + + //////////////////////////////////////////////////////////// + /// \brief Unregister a reader + /// + /// \see registerReader + /// + //////////////////////////////////////////////////////////// + template + static void unregisterReader(); + + //////////////////////////////////////////////////////////// + /// \brief Register a new writer + /// + /// \see unregisterWriter + /// + //////////////////////////////////////////////////////////// + template + static void registerWriter(); + + //////////////////////////////////////////////////////////// + /// \brief Unregister a writer + /// + /// \see registerWriter + /// + //////////////////////////////////////////////////////////// + template + static void unregisterWriter(); + + //////////////////////////////////////////////////////////// + /// \brief Instantiate the right reader for the given file on disk + /// + /// It's up to the caller to release the returned reader + /// + /// \param filename Path of the sound file + /// + /// \return A new sound file reader that can read the given file, or null if no reader can handle it + /// + /// \see createReaderFromMemory, createReaderFromStream + /// + //////////////////////////////////////////////////////////// + static SoundFileReader* createReaderFromFilename(const std::string& filename); + + //////////////////////////////////////////////////////////// + /// \brief Instantiate the right codec for the given file in memory + /// + /// It's up to the caller to release the returned reader + /// + /// \param data Pointer to the file data in memory + /// \param sizeInBytes Total size of the file data, in bytes + /// + /// \return A new sound file codec that can read the given file, or null if no codec can handle it + /// + /// \see createReaderFromFilename, createReaderFromStream + /// + //////////////////////////////////////////////////////////// + static SoundFileReader* createReaderFromMemory(const void* data, std::size_t sizeInBytes); + + //////////////////////////////////////////////////////////// + /// \brief Instantiate the right codec for the given file in stream + /// + /// It's up to the caller to release the returned reader + /// + /// \param stream Source stream to read from + /// + /// \return A new sound file codec that can read the given file, or null if no codec can handle it + /// + /// \see createReaderFromFilename, createReaderFromMemory + /// + //////////////////////////////////////////////////////////// + static SoundFileReader* createReaderFromStream(InputStream& stream); + + //////////////////////////////////////////////////////////// + /// \brief Instantiate the right writer for the given file on disk + /// + /// It's up to the caller to release the returned writer + /// + /// \param filename Path of the sound file + /// + /// \return A new sound file writer that can write given file, or null if no writer can handle it + /// + //////////////////////////////////////////////////////////// + static SoundFileWriter* createWriterFromFilename(const std::string& filename); + +private: + + //////////////////////////////////////////////////////////// + // Types + //////////////////////////////////////////////////////////// + struct ReaderFactory + { + bool (*check)(InputStream&); + SoundFileReader* (*create)(); + }; + typedef std::vector ReaderFactoryArray; + + struct WriterFactory + { + bool (*check)(const std::string&); + SoundFileWriter* (*create)(); + }; + typedef std::vector WriterFactoryArray; + + //////////////////////////////////////////////////////////// + // Static member data + //////////////////////////////////////////////////////////// + static ReaderFactoryArray s_readers; ///< List of all registered readers + static WriterFactoryArray s_writers; ///< List of all registered writers +}; + +} // namespace sf + +#include + +#endif // SFML_SOUNDFILEFACTORY_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::SoundFileFactory +/// \ingroup audio +/// +/// This class is where all the sound file readers and writers are +/// registered. You should normally only need to use its registration +/// and unregistration functions; readers/writers creation and manipulation +/// are wrapped into the higher-level classes sf::InputSoundFile and +/// sf::OutputSoundFile. +/// +/// To register a new reader (writer) use the sf::SoundFileFactory::registerReader +/// (registerWriter) static function. You don't have to call the unregisterReader +/// (unregisterWriter) function, unless you want to unregister a format before your +/// application ends (typically, when a plugin is unloaded). +/// +/// Usage example: +/// \code +/// sf::SoundFileFactory::registerReader(); +/// sf::SoundFileFactory::registerWriter(); +/// \endcode +/// +/// \see sf::InputSoundFile, sf::OutputSoundFile, sf::SoundFileReader, sf::SoundFileWriter +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Audio/SoundFileFactory.inl b/mcclone/external/sfml23/include/SFML/Audio/SoundFileFactory.inl new file mode 100644 index 0000000..19d334b --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Audio/SoundFileFactory.inl @@ -0,0 +1,100 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// + + +namespace sf +{ +namespace priv +{ + template SoundFileReader* createReader() {return new T;} + template SoundFileWriter* createWriter() {return new T;} +} + +//////////////////////////////////////////////////////////// +template +void SoundFileFactory::registerReader() +{ + // Make sure the same class won't be registered twice + unregisterReader(); + + // Create a new factory with the functions provided by the class + ReaderFactory factory; + factory.check = &T::check; + factory.create = &priv::createReader; + + // Add it + s_readers.push_back(factory); +} + + +//////////////////////////////////////////////////////////// +template +void SoundFileFactory::unregisterReader() +{ + // Remove the instance(s) of the reader from the array of factories + for (ReaderFactoryArray::iterator it = s_readers.begin(); it != s_readers.end(); ) + { + if (it->create == &priv::createReader) + it = s_readers.erase(it); + else + ++it; + } +} + +//////////////////////////////////////////////////////////// +template +void SoundFileFactory::registerWriter() +{ + // Make sure the same class won't be registered twice + unregisterWriter(); + + // Create a new factory with the functions provided by the class + WriterFactory factory; + factory.check = &T::check; + factory.create = &priv::createWriter; + + // Add it + s_writers.push_back(factory); +} + + +//////////////////////////////////////////////////////////// +template +void SoundFileFactory::unregisterWriter() +{ + // Remove the instance(s) of the writer from the array of factories + for (WriterFactoryArray::iterator it = s_writers.begin(); it != s_writers.end(); ) + { + if (it->create == &priv::createWriter) + it = s_writers.erase(it); + else + ++it; + } +} + +} // namespace sf diff --git a/mcclone/external/sfml23/include/SFML/Audio/SoundFileReader.hpp b/mcclone/external/sfml23/include/SFML/Audio/SoundFileReader.hpp new file mode 100644 index 0000000..549f50b --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Audio/SoundFileReader.hpp @@ -0,0 +1,161 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOUNDFILEREADER_HPP +#define SFML_SOUNDFILEREADER_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +class InputStream; + +//////////////////////////////////////////////////////////// +/// \brief Abstract base class for sound file decoding +/// +//////////////////////////////////////////////////////////// +class SFML_AUDIO_API SoundFileReader +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Structure holding the audio properties of a sound file + /// + //////////////////////////////////////////////////////////// + struct Info + { + Uint64 sampleCount; ///< Total number of samples in the file + unsigned int channelCount; ///< Number of channels of the sound + unsigned int sampleRate; ///< Samples rate of the sound, in samples per second + }; + + //////////////////////////////////////////////////////////// + /// \brief Virtual destructor + /// + //////////////////////////////////////////////////////////// + virtual ~SoundFileReader() {} + + //////////////////////////////////////////////////////////// + /// \brief Open a sound file for reading + /// + /// The provided stream reference is valid as long as the + /// SoundFileReader is alive, so it is safe to use/store it + /// during the whole lifetime of the reader. + /// + /// \param stream Source stream to read from + /// \param info Structure to fill with the properties of the loaded sound + /// + /// \return True if the file was successfully opened + /// + //////////////////////////////////////////////////////////// + virtual bool open(InputStream& stream, Info& info) = 0; + + //////////////////////////////////////////////////////////// + /// \brief Change the current read position to the given sample offset + /// + /// If the given offset exceeds to total number of samples, + /// this function must jump to the end of the file. + /// + /// \param sampleOffset Index of the sample to jump to, relative to the beginning + /// + //////////////////////////////////////////////////////////// + virtual void seek(Uint64 sampleOffset) = 0; + + //////////////////////////////////////////////////////////// + /// \brief Read audio samples from the open file + /// + /// \param samples Pointer to the sample array to fill + /// \param maxCount Maximum number of samples to read + /// + /// \return Number of samples actually read (may be less than \a maxCount) + /// + //////////////////////////////////////////////////////////// + virtual Uint64 read(Int16* samples, Uint64 maxCount) = 0; +}; + +} // namespace sf + + +#endif // SFML_SOUNDFILEREADER_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::SoundFileReader +/// \ingroup audio +/// +/// This class allows users to read audio file formats not natively +/// supported by SFML, and thus extend the set of supported readable +/// audio formats. +/// +/// A valid sound file reader must override the open, seek and write functions, +/// as well as providing a static check function; the latter is used by +/// SFML to find a suitable writer for a given input file. +/// +/// To register a new reader, use the sf::SoundFileFactory::registerReader +/// template function. +/// +/// Usage example: +/// \code +/// class MySoundFileReader : public sf::SoundFileReader +/// { +/// public: +/// +/// static bool check(sf::InputStream& stream) +/// { +/// // typically, read the first few header bytes and check fields that identify the format +/// // return true if the reader can handle the format +/// } +/// +/// virtual bool open(sf::InputStream& stream, Info& info) +/// { +/// // read the sound file header and fill the sound attributes +/// // (channel count, sample count and sample rate) +/// // return true on success +/// } +/// +/// virtual void seek(sf::Uint64 sampleOffset) +/// { +/// // advance to the sampleOffset-th sample from the beginning of the sound +/// } +/// +/// virtual sf::Uint64 read(sf::Int16* samples, sf::Uint64 maxCount) +/// { +/// // read up to 'maxCount' samples into the 'samples' array, +/// // convert them (for example from normalized float) if they are not stored +/// // as 16-bits signed integers in the file +/// // return the actual number of samples read +/// } +/// }; +/// +/// sf::SoundFileFactory::registerReader(); +/// \endcode +/// +/// \see sf::InputSoundFile, sf::SoundFileFactory, sf::SoundFileWriter +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Audio/SoundFileWriter.hpp b/mcclone/external/sfml23/include/SFML/Audio/SoundFileWriter.hpp new file mode 100644 index 0000000..36a2678 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Audio/SoundFileWriter.hpp @@ -0,0 +1,125 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOUNDFILEWRITER_HPP +#define SFML_SOUNDFILEWRITER_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Abstract base class for sound file encoding +/// +//////////////////////////////////////////////////////////// +class SFML_AUDIO_API SoundFileWriter +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Virtual destructor + /// + //////////////////////////////////////////////////////////// + virtual ~SoundFileWriter() {} + + //////////////////////////////////////////////////////////// + /// \brief Open a sound file for writing + /// + /// \param filename Path of the file to open + /// \param sampleRate Sample rate of the sound + /// \param channelCount Number of channels of the sound + /// + /// \return True if the file was successfully opened + /// + //////////////////////////////////////////////////////////// + virtual bool open(const std::string& filename, unsigned int sampleRate, unsigned int channelCount) = 0; + + //////////////////////////////////////////////////////////// + /// \brief Write audio samples to the open file + /// + /// \param samples Pointer to the sample array to write + /// \param count Number of samples to write + /// + //////////////////////////////////////////////////////////// + virtual void write(const Int16* samples, Uint64 count) = 0; +}; + +} // namespace sf + + +#endif // SFML_SOUNDFILEWRITER_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::SoundFileWriter +/// \ingroup audio +/// +/// This class allows users to write audio file formats not natively +/// supported by SFML, and thus extend the set of supported writable +/// audio formats. +/// +/// A valid sound file writer must override the open and write functions, +/// as well as providing a static check function; the latter is used by +/// SFML to find a suitable writer for a given filename. +/// +/// To register a new writer, use the sf::SoundFileFactory::registerWriter +/// template function. +/// +/// Usage example: +/// \code +/// class MySoundFileWriter : public sf::SoundFileWriter +/// { +/// public: +/// +/// static bool check(const std::string& filename) +/// { +/// // typically, check the extension +/// // return true if the writer can handle the format +/// } +/// +/// virtual bool open(const std::string& filename, unsigned int sampleRate, unsigned int channelCount) +/// { +/// // open the file 'filename' for writing, +/// // write the given sample rate and channel count to the file header +/// // return true on success +/// } +/// +/// virtual void write(const sf::Int16* samples, sf::Uint64 count) +/// { +/// // write 'count' samples stored at address 'samples', +/// // convert them (for example to normalized float) if the format requires it +/// } +/// }; +/// +/// sf::SoundFileFactory::registerWriter(); +/// \endcode +/// +/// \see sf::OutputSoundFile, sf::SoundFileFactory, sf::SoundFileReader +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Audio/SoundRecorder.hpp b/mcclone/external/sfml23/include/SFML/Audio/SoundRecorder.hpp new file mode 100644 index 0000000..964e4f3 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Audio/SoundRecorder.hpp @@ -0,0 +1,364 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOUNDRECORDER_HPP +#define SFML_SOUNDRECORDER_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Abstract base class for capturing sound data +/// +//////////////////////////////////////////////////////////// +class SFML_AUDIO_API SoundRecorder : AlResource +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief destructor + /// + //////////////////////////////////////////////////////////// + virtual ~SoundRecorder(); + + //////////////////////////////////////////////////////////// + /// \brief Start the capture + /// + /// The \a sampleRate parameter defines the number of audio samples + /// captured per second. The higher, the better the quality + /// (for example, 44100 samples/sec is CD quality). + /// This function uses its own thread so that it doesn't block + /// the rest of the program while the capture runs. + /// Please note that only one capture can happen at the same time. + /// You can select which capture device will be used, by passing + /// the name to the setDevice() method. If none was selected + /// before, the default capture device will be used. You can get a + /// list of the names of all available capture devices by calling + /// getAvailableDevices(). + /// + /// \param sampleRate Desired capture rate, in number of samples per second + /// + /// \return True, if start of capture was successful + /// + /// \see stop, getAvailableDevices + /// + //////////////////////////////////////////////////////////// + bool start(unsigned int sampleRate = 44100); + + //////////////////////////////////////////////////////////// + /// \brief Stop the capture + /// + /// \see start + /// + //////////////////////////////////////////////////////////// + void stop(); + + //////////////////////////////////////////////////////////// + /// \brief Get the sample rate + /// + /// The sample rate defines the number of audio samples + /// captured per second. The higher, the better the quality + /// (for example, 44100 samples/sec is CD quality). + /// + /// \return Sample rate, in samples per second + /// + //////////////////////////////////////////////////////////// + unsigned int getSampleRate() const; + + //////////////////////////////////////////////////////////// + /// \brief Get a list of the names of all available audio capture devices + /// + /// This function returns a vector of strings, containing + /// the names of all available audio capture devices. + /// + /// \return A vector of strings containing the names + /// + //////////////////////////////////////////////////////////// + static std::vector getAvailableDevices(); + + //////////////////////////////////////////////////////////// + /// \brief Get the name of the default audio capture device + /// + /// This function returns the name of the default audio + /// capture device. If none is available, an empty string + /// is returned. + /// + /// \return The name of the default audio capture device + /// + //////////////////////////////////////////////////////////// + static std::string getDefaultDevice(); + + //////////////////////////////////////////////////////////// + /// \brief Set the audio capture device + /// + /// This function sets the audio capture device to the device + /// with the given \a name. It can be called on the fly (i.e: + /// while recording). If you do so while recording and + /// opening the device fails, it stops the recording. + /// + /// \param name The name of the audio capture device + /// + /// \return True, if it was able to set the requested device + /// + /// \see getAvailableDevices, getDefaultDevice + /// + //////////////////////////////////////////////////////////// + bool setDevice(const std::string& name); + + //////////////////////////////////////////////////////////// + /// \brief Get the name of the current audio capture device + /// + /// \return The name of the current audio capture device + /// + //////////////////////////////////////////////////////////// + const std::string& getDevice() const; + + //////////////////////////////////////////////////////////// + /// \brief Check if the system supports audio capture + /// + /// This function should always be called before using + /// the audio capture features. If it returns false, then + /// any attempt to use sf::SoundRecorder or one of its derived + /// classes will fail. + /// + /// \return True if audio capture is supported, false otherwise + /// + //////////////////////////////////////////////////////////// + static bool isAvailable(); + +protected: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// This constructor is only meant to be called by derived classes. + /// + //////////////////////////////////////////////////////////// + SoundRecorder(); + + //////////////////////////////////////////////////////////// + /// \brief Set the processing interval + /// + /// The processing interval controls the period + /// between calls to the onProcessSamples function. You may + /// want to use a small interval if you want to process the + /// recorded data in real time, for example. + /// + /// Note: this is only a hint, the actual period may vary. + /// So don't rely on this parameter to implement precise timing. + /// + /// The default processing interval is 100 ms. + /// + /// \param interval Processing interval + /// + //////////////////////////////////////////////////////////// + void setProcessingInterval(Time interval); + + //////////////////////////////////////////////////////////// + /// \brief Start capturing audio data + /// + /// This virtual function may be overridden by a derived class + /// if something has to be done every time a new capture + /// starts. If not, this function can be ignored; the default + /// implementation does nothing. + /// + /// \return True to start the capture, or false to abort it + /// + //////////////////////////////////////////////////////////// + virtual bool onStart(); + + //////////////////////////////////////////////////////////// + /// \brief Process a new chunk of recorded samples + /// + /// This virtual function is called every time a new chunk of + /// recorded data is available. The derived class can then do + /// whatever it wants with it (storing it, playing it, sending + /// it over the network, etc.). + /// + /// \param samples Pointer to the new chunk of recorded samples + /// \param sampleCount Number of samples pointed by \a samples + /// + /// \return True to continue the capture, or false to stop it + /// + //////////////////////////////////////////////////////////// + virtual bool onProcessSamples(const Int16* samples, std::size_t sampleCount) = 0; + + //////////////////////////////////////////////////////////// + /// \brief Stop capturing audio data + /// + /// This virtual function may be overridden by a derived class + /// if something has to be done every time the capture + /// ends. If not, this function can be ignored; the default + /// implementation does nothing. + /// + //////////////////////////////////////////////////////////// + virtual void onStop(); + +private: + + //////////////////////////////////////////////////////////// + /// \brief Function called as the entry point of the thread + /// + /// This function starts the recording loop, and returns + /// only when the capture is stopped. + /// + //////////////////////////////////////////////////////////// + void record(); + + //////////////////////////////////////////////////////////// + /// \brief Get the new available audio samples and process them + /// + /// This function is called continuously during the + /// capture loop. It retrieves the captured samples and + /// forwards them to the derived class. + /// + //////////////////////////////////////////////////////////// + void processCapturedSamples(); + + //////////////////////////////////////////////////////////// + /// \brief Clean up the recorder's internal resources + /// + /// This function is called when the capture stops. + /// + //////////////////////////////////////////////////////////// + void cleanup(); + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + Thread m_thread; ///< Thread running the background recording task + std::vector m_samples; ///< Buffer to store captured samples + unsigned int m_sampleRate; ///< Sample rate + Time m_processingInterval; ///< Time period between calls to onProcessSamples + bool m_isCapturing; ///< Capturing state + std::string m_deviceName; ///< Name of the audio capture device +}; + +} // namespace sf + + +#endif // SFML_SOUNDRECORDER_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::SoundRecorder +/// \ingroup audio +/// +/// sf::SoundBuffer provides a simple interface to access +/// the audio recording capabilities of the computer +/// (the microphone). As an abstract base class, it only cares +/// about capturing sound samples, the task of making something +/// useful with them is left to the derived class. Note that +/// SFML provides a built-in specialization for saving the +/// captured data to a sound buffer (see sf::SoundBufferRecorder). +/// +/// A derived class has only one virtual function to override: +/// \li onProcessSamples provides the new chunks of audio samples while the capture happens +/// +/// Moreover, two additional virtual functions can be overridden +/// as well if necessary: +/// \li onStart is called before the capture happens, to perform custom initializations +/// \li onStop is called after the capture ends, to perform custom cleanup +/// +/// A derived class can also control the frequency of the onProcessSamples +/// calls, with the setProcessingInterval protected function. The default +/// interval is chosen so that recording thread doesn't consume too much +/// CPU, but it can be changed to a smaller value if you need to process +/// the recorded data in real time, for example. +/// +/// The audio capture feature may not be supported or activated +/// on every platform, thus it is recommended to check its +/// availability with the isAvailable() function. If it returns +/// false, then any attempt to use an audio recorder will fail. +/// +/// If you have multiple sound input devices connected to your +/// computer (for example: microphone, external soundcard, webcam mic, ...) +/// you can get a list of all available devices through the +/// getAvailableDevices() function. You can then select a device +/// by calling setDevice() with the appropriate device. Otherwise +/// the default capturing device will be used. +/// +/// It is important to note that the audio capture happens in a +/// separate thread, so that it doesn't block the rest of the +/// program. In particular, the onProcessSamples virtual function +/// (but not onStart and not onStop) will be called +/// from this separate thread. It is important to keep this in +/// mind, because you may have to take care of synchronization +/// issues if you share data between threads. +/// +/// Usage example: +/// \code +/// class CustomRecorder : public sf::SoundRecorder +/// { +/// virtual bool onStart() // optional +/// { +/// // Initialize whatever has to be done before the capture starts +/// ... +/// +/// // Return true to start playing +/// return true; +/// } +/// +/// virtual bool onProcessSamples(const Int16* samples, std::size_t sampleCount) +/// { +/// // Do something with the new chunk of samples (store them, send them, ...) +/// ... +/// +/// // Return true to continue playing +/// return true; +/// } +/// +/// virtual void onStop() // optional +/// { +/// // Clean up whatever has to be done after the capture ends +/// ... +/// } +/// } +/// +/// // Usage +/// if (CustomRecorder::isAvailable()) +/// { +/// CustomRecorder recorder; +/// +/// if (!recorder.start()) +/// return -1; +/// +/// ... +/// recorder.stop(); +/// } +/// \endcode +/// +/// \see sf::SoundBufferRecorder +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Audio/SoundSource.hpp b/mcclone/external/sfml23/include/SFML/Audio/SoundSource.hpp new file mode 100644 index 0000000..cde0a3b --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Audio/SoundSource.hpp @@ -0,0 +1,287 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOUNDSOURCE_HPP +#define SFML_SOUNDSOURCE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Base class defining a sound's properties +/// +//////////////////////////////////////////////////////////// +class SFML_AUDIO_API SoundSource : AlResource +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Enumeration of the sound source states + /// + //////////////////////////////////////////////////////////// + enum Status + { + Stopped, ///< Sound is not playing + Paused, ///< Sound is paused + Playing ///< Sound is playing + }; + + //////////////////////////////////////////////////////////// + /// \brief Copy constructor + /// + /// \param copy Instance to copy + /// + //////////////////////////////////////////////////////////// + SoundSource(const SoundSource& copy); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + //////////////////////////////////////////////////////////// + virtual ~SoundSource(); + + //////////////////////////////////////////////////////////// + /// \brief Set the pitch of the sound + /// + /// The pitch represents the perceived fundamental frequency + /// of a sound; thus you can make a sound more acute or grave + /// by changing its pitch. A side effect of changing the pitch + /// is to modify the playing speed of the sound as well. + /// The default value for the pitch is 1. + /// + /// \param pitch New pitch to apply to the sound + /// + /// \see getPitch + /// + //////////////////////////////////////////////////////////// + void setPitch(float pitch); + + //////////////////////////////////////////////////////////// + /// \brief Set the volume of the sound + /// + /// The volume is a value between 0 (mute) and 100 (full volume). + /// The default value for the volume is 100. + /// + /// \param volume Volume of the sound + /// + /// \see getVolume + /// + //////////////////////////////////////////////////////////// + void setVolume(float volume); + + //////////////////////////////////////////////////////////// + /// \brief Set the 3D position of the sound in the audio scene + /// + /// Only sounds with one channel (mono sounds) can be + /// spatialized. + /// The default position of a sound is (0, 0, 0). + /// + /// \param x X coordinate of the position of the sound in the scene + /// \param y Y coordinate of the position of the sound in the scene + /// \param z Z coordinate of the position of the sound in the scene + /// + /// \see getPosition + /// + //////////////////////////////////////////////////////////// + void setPosition(float x, float y, float z); + + //////////////////////////////////////////////////////////// + /// \brief Set the 3D position of the sound in the audio scene + /// + /// Only sounds with one channel (mono sounds) can be + /// spatialized. + /// The default position of a sound is (0, 0, 0). + /// + /// \param position Position of the sound in the scene + /// + /// \see getPosition + /// + //////////////////////////////////////////////////////////// + void setPosition(const Vector3f& position); + + //////////////////////////////////////////////////////////// + /// \brief Make the sound's position relative to the listener or absolute + /// + /// Making a sound relative to the listener will ensure that it will always + /// be played the same way regardless of the position of the listener. + /// This can be useful for non-spatialized sounds, sounds that are + /// produced by the listener, or sounds attached to it. + /// The default value is false (position is absolute). + /// + /// \param relative True to set the position relative, false to set it absolute + /// + /// \see isRelativeToListener + /// + //////////////////////////////////////////////////////////// + void setRelativeToListener(bool relative); + + //////////////////////////////////////////////////////////// + /// \brief Set the minimum distance of the sound + /// + /// The "minimum distance" of a sound is the maximum + /// distance at which it is heard at its maximum volume. Further + /// than the minimum distance, it will start to fade out according + /// to its attenuation factor. A value of 0 ("inside the head + /// of the listener") is an invalid value and is forbidden. + /// The default value of the minimum distance is 1. + /// + /// \param distance New minimum distance of the sound + /// + /// \see getMinDistance, setAttenuation + /// + //////////////////////////////////////////////////////////// + void setMinDistance(float distance); + + //////////////////////////////////////////////////////////// + /// \brief Set the attenuation factor of the sound + /// + /// The attenuation is a multiplicative factor which makes + /// the sound more or less loud according to its distance + /// from the listener. An attenuation of 0 will produce a + /// non-attenuated sound, i.e. its volume will always be the same + /// whether it is heard from near or from far. On the other hand, + /// an attenuation value such as 100 will make the sound fade out + /// very quickly as it gets further from the listener. + /// The default value of the attenuation is 1. + /// + /// \param attenuation New attenuation factor of the sound + /// + /// \see getAttenuation, setMinDistance + /// + //////////////////////////////////////////////////////////// + void setAttenuation(float attenuation); + + //////////////////////////////////////////////////////////// + /// \brief Get the pitch of the sound + /// + /// \return Pitch of the sound + /// + /// \see setPitch + /// + //////////////////////////////////////////////////////////// + float getPitch() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the volume of the sound + /// + /// \return Volume of the sound, in the range [0, 100] + /// + /// \see setVolume + /// + //////////////////////////////////////////////////////////// + float getVolume() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the 3D position of the sound in the audio scene + /// + /// \return Position of the sound + /// + /// \see setPosition + /// + //////////////////////////////////////////////////////////// + Vector3f getPosition() const; + + //////////////////////////////////////////////////////////// + /// \brief Tell whether the sound's position is relative to the + /// listener or is absolute + /// + /// \return True if the position is relative, false if it's absolute + /// + /// \see setRelativeToListener + /// + //////////////////////////////////////////////////////////// + bool isRelativeToListener() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the minimum distance of the sound + /// + /// \return Minimum distance of the sound + /// + /// \see setMinDistance, getAttenuation + /// + //////////////////////////////////////////////////////////// + float getMinDistance() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the attenuation factor of the sound + /// + /// \return Attenuation factor of the sound + /// + /// \see setAttenuation, getMinDistance + /// + //////////////////////////////////////////////////////////// + float getAttenuation() const; + +protected: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// This constructor is meant to be called by derived classes only. + /// + //////////////////////////////////////////////////////////// + SoundSource(); + + //////////////////////////////////////////////////////////// + /// \brief Get the current status of the sound (stopped, paused, playing) + /// + /// \return Current status of the sound + /// + //////////////////////////////////////////////////////////// + Status getStatus() const; + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + unsigned int m_source; ///< OpenAL source identifier +}; + +} // namespace sf + + +#endif // SFML_SOUNDSOURCE_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::SoundSource +/// \ingroup audio +/// +/// sf::SoundSource is not meant to be used directly, it +/// only serves as a common base for all audio objects +/// that can live in the audio environment. +/// +/// It defines several properties for the sound: pitch, +/// volume, position, attenuation, etc. All of them can be +/// changed at any time with no impact on performances. +/// +/// \see sf::Sound, sf::SoundStream +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Audio/SoundStream.hpp b/mcclone/external/sfml23/include/SFML/Audio/SoundStream.hpp new file mode 100644 index 0000000..22ae8cd --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Audio/SoundStream.hpp @@ -0,0 +1,386 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOUNDSTREAM_HPP +#define SFML_SOUNDSTREAM_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Abstract base class for streamed audio sources +/// +//////////////////////////////////////////////////////////// +class SFML_AUDIO_API SoundStream : public SoundSource +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Structure defining a chunk of audio data to stream + /// + //////////////////////////////////////////////////////////// + struct Chunk + { + const Int16* samples; ///< Pointer to the audio samples + std::size_t sampleCount; ///< Number of samples pointed by Samples + }; + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + //////////////////////////////////////////////////////////// + virtual ~SoundStream(); + + //////////////////////////////////////////////////////////// + /// \brief Start or resume playing the audio stream + /// + /// This function starts the stream if it was stopped, resumes + /// it if it was paused, and restarts it from the beginning if + /// it was already playing. + /// This function uses its own thread so that it doesn't block + /// the rest of the program while the stream is played. + /// + /// \see pause, stop + /// + //////////////////////////////////////////////////////////// + void play(); + + //////////////////////////////////////////////////////////// + /// \brief Pause the audio stream + /// + /// This function pauses the stream if it was playing, + /// otherwise (stream already paused or stopped) it has no effect. + /// + /// \see play, stop + /// + //////////////////////////////////////////////////////////// + void pause(); + + //////////////////////////////////////////////////////////// + /// \brief Stop playing the audio stream + /// + /// This function stops the stream if it was playing or paused, + /// and does nothing if it was already stopped. + /// It also resets the playing position (unlike pause()). + /// + /// \see play, pause + /// + //////////////////////////////////////////////////////////// + void stop(); + + //////////////////////////////////////////////////////////// + /// \brief Return the number of channels of the stream + /// + /// 1 channel means a mono sound, 2 means stereo, etc. + /// + /// \return Number of channels + /// + //////////////////////////////////////////////////////////// + unsigned int getChannelCount() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the stream sample rate of the stream + /// + /// The sample rate is the number of audio samples played per + /// second. The higher, the better the quality. + /// + /// \return Sample rate, in number of samples per second + /// + //////////////////////////////////////////////////////////// + unsigned int getSampleRate() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the current status of the stream (stopped, paused, playing) + /// + /// \return Current status + /// + //////////////////////////////////////////////////////////// + Status getStatus() const; + + //////////////////////////////////////////////////////////// + /// \brief Change the current playing position of the stream + /// + /// The playing position can be changed when the stream is + /// either paused or playing. Changing the playing position + /// when the stream is stopped has no effect, since playing + /// the stream would reset its position. + /// + /// \param timeOffset New playing position, from the beginning of the stream + /// + /// \see getPlayingOffset + /// + //////////////////////////////////////////////////////////// + void setPlayingOffset(Time timeOffset); + + //////////////////////////////////////////////////////////// + /// \brief Get the current playing position of the stream + /// + /// \return Current playing position, from the beginning of the stream + /// + /// \see setPlayingOffset + /// + //////////////////////////////////////////////////////////// + Time getPlayingOffset() const; + + //////////////////////////////////////////////////////////// + /// \brief Set whether or not the stream should loop after reaching the end + /// + /// If set, the stream will restart from beginning after + /// reaching the end and so on, until it is stopped or + /// setLoop(false) is called. + /// The default looping state for streams is false. + /// + /// \param loop True to play in loop, false to play once + /// + /// \see getLoop + /// + //////////////////////////////////////////////////////////// + void setLoop(bool loop); + + //////////////////////////////////////////////////////////// + /// \brief Tell whether or not the stream is in loop mode + /// + /// \return True if the stream is looping, false otherwise + /// + /// \see setLoop + /// + //////////////////////////////////////////////////////////// + bool getLoop() const; + +protected: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// This constructor is only meant to be called by derived classes. + /// + //////////////////////////////////////////////////////////// + SoundStream(); + + //////////////////////////////////////////////////////////// + /// \brief Define the audio stream parameters + /// + /// This function must be called by derived classes as soon + /// as they know the audio settings of the stream to play. + /// Any attempt to manipulate the stream (play(), ...) before + /// calling this function will fail. + /// It can be called multiple times if the settings of the + /// audio stream change, but only when the stream is stopped. + /// + /// \param channelCount Number of channels of the stream + /// \param sampleRate Sample rate, in samples per second + /// + //////////////////////////////////////////////////////////// + void initialize(unsigned int channelCount, unsigned int sampleRate); + + //////////////////////////////////////////////////////////// + /// \brief Request a new chunk of audio samples from the stream source + /// + /// This function must be overridden by derived classes to provide + /// the audio samples to play. It is called continuously by the + /// streaming loop, in a separate thread. + /// The source can choose to stop the streaming loop at any time, by + /// returning false to the caller. + /// If you return true (i.e. continue streaming) it is important that + /// the returned array of samples is not empty; this would stop the stream + /// due to an internal limitation. + /// + /// \param data Chunk of data to fill + /// + /// \return True to continue playback, false to stop + /// + //////////////////////////////////////////////////////////// + virtual bool onGetData(Chunk& data) = 0; + + //////////////////////////////////////////////////////////// + /// \brief Change the current playing position in the stream source + /// + /// This function must be overridden by derived classes to + /// allow random seeking into the stream source. + /// + /// \param timeOffset New playing position, relative to the beginning of the stream + /// + //////////////////////////////////////////////////////////// + virtual void onSeek(Time timeOffset) = 0; + +private: + + //////////////////////////////////////////////////////////// + /// \brief Function called as the entry point of the thread + /// + /// This function starts the streaming loop, and returns + /// only when the sound is stopped. + /// + //////////////////////////////////////////////////////////// + void streamData(); + + //////////////////////////////////////////////////////////// + /// \brief Fill a new buffer with audio samples, and append + /// it to the playing queue + /// + /// This function is called as soon as a buffer has been fully + /// consumed; it fills it again and inserts it back into the + /// playing queue. + /// + /// \param bufferNum Number of the buffer to fill (in [0, BufferCount]) + /// + /// \return True if the stream source has requested to stop, false otherwise + /// + //////////////////////////////////////////////////////////// + bool fillAndPushBuffer(unsigned int bufferNum); + + //////////////////////////////////////////////////////////// + /// \brief Fill the audio buffers and put them all into the playing queue + /// + /// This function is called when playing starts and the + /// playing queue is empty. + /// + /// \return True if the derived class has requested to stop, false otherwise + /// + //////////////////////////////////////////////////////////// + bool fillQueue(); + + //////////////////////////////////////////////////////////// + /// \brief Clear all the audio buffers and empty the playing queue + /// + /// This function is called when the stream is stopped. + /// + //////////////////////////////////////////////////////////// + void clearQueue(); + + enum + { + BufferCount = 3 ///< Number of audio buffers used by the streaming loop + }; + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + Thread m_thread; ///< Thread running the background tasks + mutable Mutex m_threadMutex; ///< Thread mutex + Status m_threadStartState; ///< State the thread starts in (Playing, Paused, Stopped) + bool m_isStreaming; ///< Streaming state (true = playing, false = stopped) + unsigned int m_buffers[BufferCount]; ///< Sound buffers used to store temporary audio data + unsigned int m_channelCount; ///< Number of channels (1 = mono, 2 = stereo, ...) + unsigned int m_sampleRate; ///< Frequency (samples / second) + Uint32 m_format; ///< Format of the internal sound buffers + bool m_loop; ///< Loop flag (true to loop, false to play once) + Uint64 m_samplesProcessed; ///< Number of buffers processed since beginning of the stream + bool m_endBuffers[BufferCount]; ///< Each buffer is marked as "end buffer" or not, for proper duration calculation +}; + +} // namespace sf + + +#endif // SFML_SOUNDSTREAM_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::SoundStream +/// \ingroup audio +/// +/// Unlike audio buffers (see sf::SoundBuffer), audio streams +/// are never completely loaded in memory. Instead, the audio +/// data is acquired continuously while the stream is playing. +/// This behavior allows to play a sound with no loading delay, +/// and keeps the memory consumption very low. +/// +/// Sound sources that need to be streamed are usually big files +/// (compressed audio musics that would eat hundreds of MB in memory) +/// or files that would take a lot of time to be received +/// (sounds played over the network). +/// +/// sf::SoundStream is a base class that doesn't care about the +/// stream source, which is left to the derived class. SFML provides +/// a built-in specialization for big files (see sf::Music). +/// No network stream source is provided, but you can write your own +/// by combining this class with the network module. +/// +/// A derived class has to override two virtual functions: +/// \li onGetData fills a new chunk of audio data to be played +/// \li onSeek changes the current playing position in the source +/// +/// It is important to note that each SoundStream is played in its +/// own separate thread, so that the streaming loop doesn't block the +/// rest of the program. In particular, the OnGetData and OnSeek +/// virtual functions may sometimes be called from this separate thread. +/// It is important to keep this in mind, because you may have to take +/// care of synchronization issues if you share data between threads. +/// +/// Usage example: +/// \code +/// class CustomStream : public sf::SoundStream +/// { +/// public: +/// +/// bool open(const std::string& location) +/// { +/// // Open the source and get audio settings +/// ... +/// unsigned int channelCount = ...; +/// unsigned int sampleRate = ...; +/// +/// // Initialize the stream -- important! +/// initialize(channelCount, sampleRate); +/// } +/// +/// private: +/// +/// virtual bool onGetData(Chunk& data) +/// { +/// // Fill the chunk with audio data from the stream source +/// // (note: must not be empty if you want to continue playing) +/// data.samples = ...; +/// data.sampleCount = ...; +/// +/// // Return true to continue playing +/// return true; +/// } +/// +/// virtual void onSeek(Uint32 timeOffset) +/// { +/// // Change the current position in the stream source +/// ... +/// } +/// } +/// +/// // Usage +/// CustomStream stream; +/// stream.open("path/to/stream"); +/// stream.play(); +/// \endcode +/// +/// \see sf::Music +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Config.hpp b/mcclone/external/sfml23/include/SFML/Config.hpp new file mode 100644 index 0000000..05c7719 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Config.hpp @@ -0,0 +1,193 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_CONFIG_HPP +#define SFML_CONFIG_HPP + + +//////////////////////////////////////////////////////////// +// Define the SFML version +//////////////////////////////////////////////////////////// +#define SFML_VERSION_MAJOR 2 +#define SFML_VERSION_MINOR 3 +#define SFML_VERSION_PATCH 2 + + +//////////////////////////////////////////////////////////// +// Identify the operating system +// see http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_system +//////////////////////////////////////////////////////////// +#if defined(_WIN32) + + // Windows + #define SFML_SYSTEM_WINDOWS + #ifndef NOMINMAX + #define NOMINMAX + #endif + +#elif defined(__APPLE__) && defined(__MACH__) + + // Apple platform, see which one it is + #include "TargetConditionals.h" + + #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR + + // iOS + #define SFML_SYSTEM_IOS + + #elif TARGET_OS_MAC + + // MacOS + #define SFML_SYSTEM_MACOS + + #else + + // Unsupported Apple system + #error This Apple operating system is not supported by SFML library + + #endif + +#elif defined(__unix__) + + // UNIX system, see which one it is + #if defined(__ANDROID__) + + // Android + #define SFML_SYSTEM_ANDROID + + #elif defined(__linux__) + + // Linux + #define SFML_SYSTEM_LINUX + + #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) + + // FreeBSD + #define SFML_SYSTEM_FREEBSD + + #else + + // Unsupported UNIX system + #error This UNIX operating system is not supported by SFML library + + #endif + +#else + + // Unsupported system + #error This operating system is not supported by SFML library + +#endif + + +//////////////////////////////////////////////////////////// +// Define a portable debug macro +//////////////////////////////////////////////////////////// +#if !defined(NDEBUG) + + #define SFML_DEBUG + +#endif + + +//////////////////////////////////////////////////////////// +// Define helpers to create portable import / export macros for each module +//////////////////////////////////////////////////////////// +#if !defined(SFML_STATIC) + + #if defined(SFML_SYSTEM_WINDOWS) + + // Windows compilers need specific (and different) keywords for export and import + #define SFML_API_EXPORT __declspec(dllexport) + #define SFML_API_IMPORT __declspec(dllimport) + + // For Visual C++ compilers, we also need to turn off this annoying C4251 warning + #ifdef _MSC_VER + + #pragma warning(disable: 4251) + + #endif + + #else // Linux, FreeBSD, Mac OS X + + #if __GNUC__ >= 4 + + // GCC 4 has special keywords for showing/hidding symbols, + // the same keyword is used for both importing and exporting + #define SFML_API_EXPORT __attribute__ ((__visibility__ ("default"))) + #define SFML_API_IMPORT __attribute__ ((__visibility__ ("default"))) + + #else + + // GCC < 4 has no mechanism to explicitely hide symbols, everything's exported + #define SFML_API_EXPORT + #define SFML_API_IMPORT + + #endif + + #endif + +#else + + // Static build doesn't need import/export macros + #define SFML_API_EXPORT + #define SFML_API_IMPORT + +#endif + + +//////////////////////////////////////////////////////////// +// Define portable fixed-size types +//////////////////////////////////////////////////////////// +namespace sf +{ + // All "common" platforms use the same size for char, short and int + // (basically there are 3 types for 3 sizes, so no other match is possible), + // we can use them without doing any kind of check + + // 8 bits integer types + typedef signed char Int8; + typedef unsigned char Uint8; + + // 16 bits integer types + typedef signed short Int16; + typedef unsigned short Uint16; + + // 32 bits integer types + typedef signed int Int32; + typedef unsigned int Uint32; + + // 64 bits integer types + #if defined(_MSC_VER) + typedef signed __int64 Int64; + typedef unsigned __int64 Uint64; + #else + typedef signed long long Int64; + typedef unsigned long long Uint64; + #endif + +} // namespace sf + + +#endif // SFML_CONFIG_HPP diff --git a/mcclone/external/sfml23/include/SFML/Graphics.hpp b/mcclone/external/sfml23/include/SFML/Graphics.hpp new file mode 100644 index 0000000..7a7f4da --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics.hpp @@ -0,0 +1,67 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_GRAPHICS_HPP +#define SFML_GRAPHICS_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#endif // SFML_GRAPHICS_HPP + +//////////////////////////////////////////////////////////// +/// \defgroup graphics Graphics module +/// +/// 2D graphics module: sprites, text, shapes, ... +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/BlendMode.hpp b/mcclone/external/sfml23/include/SFML/Graphics/BlendMode.hpp new file mode 100644 index 0000000..7f5803b --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/BlendMode.hpp @@ -0,0 +1,214 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_BLENDMODE_HPP +#define SFML_BLENDMODE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +namespace sf +{ + +//////////////////////////////////////////////////////////// +/// \brief Blending modes for drawing +/// +//////////////////////////////////////////////////////////// +struct SFML_GRAPHICS_API BlendMode +{ + //////////////////////////////////////////////////////// + /// \brief Enumeration of the blending factors + /// + /// The factors are mapped directly to their OpenGL equivalents, + /// specified by glBlendFunc() or glBlendFuncSeparate(). + //////////////////////////////////////////////////////// + enum Factor + { + Zero, ///< (0, 0, 0, 0) + One, ///< (1, 1, 1, 1) + SrcColor, ///< (src.r, src.g, src.b, src.a) + OneMinusSrcColor, ///< (1, 1, 1, 1) - (src.r, src.g, src.b, src.a) + DstColor, ///< (dst.r, dst.g, dst.b, dst.a) + OneMinusDstColor, ///< (1, 1, 1, 1) - (dst.r, dst.g, dst.b, dst.a) + SrcAlpha, ///< (src.a, src.a, src.a, src.a) + OneMinusSrcAlpha, ///< (1, 1, 1, 1) - (src.a, src.a, src.a, src.a) + DstAlpha, ///< (dst.a, dst.a, dst.a, dst.a) + OneMinusDstAlpha ///< (1, 1, 1, 1) - (dst.a, dst.a, dst.a, dst.a) + }; + + //////////////////////////////////////////////////////// + /// \brief Enumeration of the blending equations + /// + /// The equations are mapped directly to their OpenGL equivalents, + /// specified by glBlendEquation() or glBlendEquationSeparate(). + //////////////////////////////////////////////////////// + enum Equation + { + Add, ///< Pixel = Src * SrcFactor + Dst * DstFactor + Subtract ///< Pixel = Src * SrcFactor - Dst * DstFactor + }; + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// Constructs a blending mode that does alpha blending. + /// + //////////////////////////////////////////////////////////// + BlendMode(); + + //////////////////////////////////////////////////////////// + /// \brief Construct the blend mode given the factors and equation. + /// + /// This constructor uses the same factors and equation for both + /// color and alpha components. It also defaults to the Add equation. + /// + /// \param sourceFactor Specifies how to compute the source factor for the color and alpha channels. + /// \param destinationFactor Specifies how to compute the destination factor for the color and alpha channels. + /// \param blendEquation Specifies how to combine the source and destination colors and alpha. + /// + //////////////////////////////////////////////////////////// + BlendMode(Factor sourceFactor, Factor destinationFactor, Equation blendEquation = Add); + + //////////////////////////////////////////////////////////// + /// \brief Construct the blend mode given the factors and equation. + /// + /// \param colorSourceFactor Specifies how to compute the source factor for the color channels. + /// \param colorDestinationFactor Specifies how to compute the destination factor for the color channels. + /// \param colorBlendEquation Specifies how to combine the source and destination colors. + /// \param alphaSourceFactor Specifies how to compute the source factor. + /// \param alphaDestinationFactor Specifies how to compute the destination factor. + /// \param alphaBlendEquation Specifies how to combine the source and destination alphas. + /// + //////////////////////////////////////////////////////////// + BlendMode(Factor colorSourceFactor, Factor colorDestinationFactor, + Equation colorBlendEquation, Factor alphaSourceFactor, + Factor alphaDestinationFactor, Equation alphaBlendEquation); + + //////////////////////////////////////////////////////////// + // Member Data + //////////////////////////////////////////////////////////// + Factor colorSrcFactor; ///< Source blending factor for the color channels + Factor colorDstFactor; ///< Destination blending factor for the color channels + Equation colorEquation; ///< Blending equation for the color channels + Factor alphaSrcFactor; ///< Source blending factor for the alpha channel + Factor alphaDstFactor; ///< Destination blending factor for the alpha channel + Equation alphaEquation; ///< Blending equation for the alpha channel +}; + +//////////////////////////////////////////////////////////// +/// \relates BlendMode +/// \brief Overload of the == operator +/// +/// \param left Left operand +/// \param right Right operand +/// +/// \return True if blending modes are equal, false if they are different +/// +//////////////////////////////////////////////////////////// +SFML_GRAPHICS_API bool operator ==(const BlendMode& left, const BlendMode& right); + +//////////////////////////////////////////////////////////// +/// \relates BlendMode +/// \brief Overload of the != operator +/// +/// \param left Left operand +/// \param right Right operand +/// +/// \return True if blending modes are different, false if they are equal +/// +//////////////////////////////////////////////////////////// +SFML_GRAPHICS_API bool operator !=(const BlendMode& left, const BlendMode& right); + +//////////////////////////////////////////////////////////// +// Commonly used blending modes +//////////////////////////////////////////////////////////// +SFML_GRAPHICS_API extern const BlendMode BlendAlpha; ///< Blend source and dest according to dest alpha +SFML_GRAPHICS_API extern const BlendMode BlendAdd; ///< Add source to dest +SFML_GRAPHICS_API extern const BlendMode BlendMultiply; ///< Multiply source and dest +SFML_GRAPHICS_API extern const BlendMode BlendNone; ///< Overwrite dest with source + +} // namespace sf + + +#endif // SFML_BLENDMODE_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::BlendMode +/// \ingroup graphics +/// +/// sf::BlendMode is a class that represents a blend mode. A blend +/// mode determines how the colors of an object you draw are +/// mixed with the colors that are already in the buffer. +/// +/// The class is composed of 6 components, each of which has its +/// own public member variable: +/// \li %Color Source Factor (@ref colorSrcFactor) +/// \li %Color Destination Factor (@ref colorDstFactor) +/// \li %Color Blend Equation (@ref colorEquation) +/// \li Alpha Source Factor (@ref alphaSrcFactor) +/// \li Alpha Destination Factor (@ref alphaDstFactor) +/// \li Alpha Blend Equation (@ref alphaEquation) +/// +/// The source factor specifies how the pixel you are drawing contributes +/// to the final color. The destination factor specifies how the pixel +/// already drawn in the buffer contributes to the final color. +/// +/// The color channels RGB (red, green, blue; simply referred to as +/// color) and A (alpha; the transparency) can be treated separately. This +/// separation can be useful for specific blend modes, but most often you +/// won't need it and will simply treat the color as a single unit. +/// +/// The blend factors and equations correspond to their OpenGL equivalents. +/// In general, the color of the resulting pixel is calculated according +/// to the following formula (\a src is the color of the source pixel, \a dst +/// the color of the destination pixel, the other variables correspond to the +/// public members, with the equations being + or - operators): +/// \code +/// dst.rgb = colorSrcFactor * src.rgb (colorEquation) colorDstFactor * dst.rgb +/// dst.a = alphaSrcFactor * src.a (alphaEquation) alphaDstFactor * dst.a +/// \endcode +/// All factors and colors are represented as floating point numbers between +/// 0 and 1. Where necessary, the result is clamped to fit in that range. +/// +/// The most common blending modes are defined as constants +/// in the sf namespace: +/// +/// \code +/// sf::BlendMode alphaBlending = sf::BlendAlpha; +/// sf::BlendMode additiveBlending = sf::BlendAdd; +/// sf::BlendMode multiplicativeBlending = sf::BlendMultipy; +/// sf::BlendMode noBlending = sf::BlendNone; +/// \endcode +/// +/// In SFML, a blend mode can be specified every time you draw a sf::Drawable +/// object to a render target. It is part of the sf::RenderStates compound +/// that is passed to the member function sf::RenderTarget::draw(). +/// +/// \see sf::RenderStates, sf::RenderTarget +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/CircleShape.hpp b/mcclone/external/sfml23/include/SFML/Graphics/CircleShape.hpp new file mode 100644 index 0000000..2d5ac00 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/CircleShape.hpp @@ -0,0 +1,154 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_CIRCLESHAPE_HPP +#define SFML_CIRCLESHAPE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Specialized shape representing a circle +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API CircleShape : public Shape +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// \param radius Radius of the circle + /// \param pointCount Number of points composing the circle + /// + //////////////////////////////////////////////////////////// + explicit CircleShape(float radius = 0, std::size_t pointCount = 30); + + //////////////////////////////////////////////////////////// + /// \brief Set the radius of the circle + /// + /// \param radius New radius of the circle + /// + /// \see getRadius + /// + //////////////////////////////////////////////////////////// + void setRadius(float radius); + + //////////////////////////////////////////////////////////// + /// \brief Get the radius of the circle + /// + /// \return Radius of the circle + /// + /// \see setRadius + /// + //////////////////////////////////////////////////////////// + float getRadius() const; + + //////////////////////////////////////////////////////////// + /// \brief Set the number of points of the circle + /// + /// \param count New number of points of the circle + /// + /// \see getPointCount + /// + //////////////////////////////////////////////////////////// + void setPointCount(std::size_t count); + + //////////////////////////////////////////////////////////// + /// \brief Get the number of points of the circle + /// + /// \return Number of points of the circle + /// + /// \see setPointCount + /// + //////////////////////////////////////////////////////////// + virtual std::size_t getPointCount() const; + + //////////////////////////////////////////////////////////// + /// \brief Get a point of the circle + /// + /// The returned point is in local coordinates, that is, + /// the shape's transforms (position, rotation, scale) are + /// not taken into account. + /// The result is undefined if \a index is out of the valid range. + /// + /// \param index Index of the point to get, in range [0 .. getPointCount() - 1] + /// + /// \return index-th point of the shape + /// + //////////////////////////////////////////////////////////// + virtual Vector2f getPoint(std::size_t index) const; + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + float m_radius; ///< Radius of the circle + std::size_t m_pointCount; ///< Number of points composing the circle +}; + +} // namespace sf + + +#endif // SFML_CIRCLESHAPE_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::CircleShape +/// \ingroup graphics +/// +/// This class inherits all the functions of sf::Transformable +/// (position, rotation, scale, bounds, ...) as well as the +/// functions of sf::Shape (outline, color, texture, ...). +/// +/// Usage example: +/// \code +/// sf::CircleShape circle; +/// circle.setRadius(150); +/// circle.setOutlineColor(sf::Color::Red); +/// circle.setOutlineThickness(5); +/// circle.setPosition(10, 20); +/// ... +/// window.draw(circle); +/// \endcode +/// +/// Since the graphics card can't draw perfect circles, we have to +/// fake them with multiple triangles connected to each other. The +/// "points count" property of sf::CircleShape defines how many of these +/// triangles to use, and therefore defines the quality of the circle. +/// +/// The number of points can also be used for another purpose; with +/// small numbers you can create any regular polygon shape: +/// equilateral triangle, square, pentagon, hexagon, ... +/// +/// \see sf::Shape, sf::RectangleShape, sf::ConvexShape +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/Color.hpp b/mcclone/external/sfml23/include/SFML/Graphics/Color.hpp new file mode 100644 index 0000000..87a1598 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/Color.hpp @@ -0,0 +1,275 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_COLOR_HPP +#define SFML_COLOR_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Utility class for manipulating RGBA colors +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API Color +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// Constructs an opaque black color. It is equivalent to + /// sf::Color(0, 0, 0, 255). + /// + //////////////////////////////////////////////////////////// + Color(); + + //////////////////////////////////////////////////////////// + /// \brief Construct the color from its 4 RGBA components + /// + /// \param red Red component (in the range [0, 255]) + /// \param green Green component (in the range [0, 255]) + /// \param blue Blue component (in the range [0, 255]) + /// \param alpha Alpha (opacity) component (in the range [0, 255]) + /// + //////////////////////////////////////////////////////////// + Color(Uint8 red, Uint8 green, Uint8 blue, Uint8 alpha = 255); + + //////////////////////////////////////////////////////////// + /// \brief Construct the color from 32-bit unsigned integer + /// + /// \param color Number containing the RGBA components (in that order) + /// + //////////////////////////////////////////////////////////// + explicit Color(Uint32 color); + + //////////////////////////////////////////////////////////// + /// \brief Retrieve the color as a 32-bit unsigned integer + /// + /// \return Color represented as a 32-bit unsigned integer + /// + //////////////////////////////////////////////////////////// + Uint32 toInteger() const; + + //////////////////////////////////////////////////////////// + // Static member data + //////////////////////////////////////////////////////////// + static const Color Black; ///< Black predefined color + static const Color White; ///< White predefined color + static const Color Red; ///< Red predefined color + static const Color Green; ///< Green predefined color + static const Color Blue; ///< Blue predefined color + static const Color Yellow; ///< Yellow predefined color + static const Color Magenta; ///< Magenta predefined color + static const Color Cyan; ///< Cyan predefined color + static const Color Transparent; ///< Transparent (black) predefined color + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + Uint8 r; ///< Red component + Uint8 g; ///< Green component + Uint8 b; ///< Blue component + Uint8 a; ///< Alpha (opacity) component +}; + +//////////////////////////////////////////////////////////// +/// \relates Color +/// \brief Overload of the == operator +/// +/// This operator compares two colors and check if they are equal. +/// +/// \param left Left operand +/// \param right Right operand +/// +/// \return True if colors are equal, false if they are different +/// +//////////////////////////////////////////////////////////// +SFML_GRAPHICS_API bool operator ==(const Color& left, const Color& right); + +//////////////////////////////////////////////////////////// +/// \relates Color +/// \brief Overload of the != operator +/// +/// This operator compares two colors and check if they are different. +/// +/// \param left Left operand +/// \param right Right operand +/// +/// \return True if colors are different, false if they are equal +/// +//////////////////////////////////////////////////////////// +SFML_GRAPHICS_API bool operator !=(const Color& left, const Color& right); + +//////////////////////////////////////////////////////////// +/// \relates Color +/// \brief Overload of the binary + operator +/// +/// This operator returns the component-wise sum of two colors. +/// Components that exceed 255 are clamped to 255. +/// +/// \param left Left operand +/// \param right Right operand +/// +/// \return Result of \a left + \a right +/// +//////////////////////////////////////////////////////////// +SFML_GRAPHICS_API Color operator +(const Color& left, const Color& right); + +//////////////////////////////////////////////////////////// +/// \relates Color +/// \brief Overload of the binary - operator +/// +/// This operator returns the component-wise subtraction of two colors. +/// Components below 0 are clamped to 0. +/// +/// \param left Left operand +/// \param right Right operand +/// +/// \return Result of \a left - \a right +/// +//////////////////////////////////////////////////////////// +SFML_GRAPHICS_API Color operator -(const Color& left, const Color& right); + +//////////////////////////////////////////////////////////// +/// \relates Color +/// \brief Overload of the binary * operator +/// +/// This operator returns the component-wise multiplication +/// (also called "modulation") of two colors. +/// Components are then divided by 255 so that the result is +/// still in the range [0, 255]. +/// +/// \param left Left operand +/// \param right Right operand +/// +/// \return Result of \a left * \a right +/// +//////////////////////////////////////////////////////////// +SFML_GRAPHICS_API Color operator *(const Color& left, const Color& right); + +//////////////////////////////////////////////////////////// +/// \relates Color +/// \brief Overload of the binary += operator +/// +/// This operator computes the component-wise sum of two colors, +/// and assigns the result to the left operand. +/// Components that exceed 255 are clamped to 255. +/// +/// \param left Left operand +/// \param right Right operand +/// +/// \return Reference to \a left +/// +//////////////////////////////////////////////////////////// +SFML_GRAPHICS_API Color& operator +=(Color& left, const Color& right); + +//////////////////////////////////////////////////////////// +/// \relates Color +/// \brief Overload of the binary -= operator +/// +/// This operator computes the component-wise subtraction of two colors, +/// and assigns the result to the left operand. +/// Components below 0 are clamped to 0. +/// +/// \param left Left operand +/// \param right Right operand +/// +/// \return Reference to \a left +/// +//////////////////////////////////////////////////////////// +SFML_GRAPHICS_API Color& operator -=(Color& left, const Color& right); + +//////////////////////////////////////////////////////////// +/// \relates Color +/// \brief Overload of the binary *= operator +/// +/// This operator returns the component-wise multiplication +/// (also called "modulation") of two colors, and assigns +/// the result to the left operand. +/// Components are then divided by 255 so that the result is +/// still in the range [0, 255]. +/// +/// \param left Left operand +/// \param right Right operand +/// +/// \return Reference to \a left +/// +//////////////////////////////////////////////////////////// +SFML_GRAPHICS_API Color& operator *=(Color& left, const Color& right); + +} // namespace sf + + +#endif // SFML_COLOR_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Color +/// \ingroup graphics +/// +/// sf::Color is a simple color class composed of 4 components: +/// \li Red +/// \li Green +/// \li Blue +/// \li Alpha (opacity) +/// +/// Each component is a public member, an unsigned integer in +/// the range [0, 255]. Thus, colors can be constructed and +/// manipulated very easily: +/// +/// \code +/// sf::Color color(255, 0, 0); // red +/// color.r = 0; // make it black +/// color.b = 128; // make it dark blue +/// \endcode +/// +/// The fourth component of colors, named "alpha", represents +/// the opacity of the color. A color with an alpha value of +/// 255 will be fully opaque, while an alpha value of 0 will +/// make a color fully transparent, whatever the value of the +/// other components is. +/// +/// The most common colors are already defined as static variables: +/// \code +/// sf::Color black = sf::Color::Black; +/// sf::Color white = sf::Color::White; +/// sf::Color red = sf::Color::Red; +/// sf::Color green = sf::Color::Green; +/// sf::Color blue = sf::Color::Blue; +/// sf::Color yellow = sf::Color::Yellow; +/// sf::Color magenta = sf::Color::Magenta; +/// sf::Color cyan = sf::Color::Cyan; +/// sf::Color transparent = sf::Color::Transparent; +/// \endcode +/// +/// Colors can also be added and modulated (multiplied) using the +/// overloaded operators + and *. +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/ConvexShape.hpp b/mcclone/external/sfml23/include/SFML/Graphics/ConvexShape.hpp new file mode 100644 index 0000000..82991a7 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/ConvexShape.hpp @@ -0,0 +1,153 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_CONVEXSHAPE_HPP +#define SFML_CONVEXSHAPE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Specialized shape representing a convex polygon +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API ConvexShape : public Shape +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// \param pointCount Number of points of the polygon + /// + //////////////////////////////////////////////////////////// + explicit ConvexShape(std::size_t pointCount = 0); + + //////////////////////////////////////////////////////////// + /// \brief Set the number of points of the polygon + /// + /// \a count must be greater than 2 to define a valid shape. + /// + /// \param count New number of points of the polygon + /// + /// \see getPointCount + /// + //////////////////////////////////////////////////////////// + void setPointCount(std::size_t count); + + //////////////////////////////////////////////////////////// + /// \brief Get the number of points of the polygon + /// + /// \return Number of points of the polygon + /// + /// \see setPointCount + /// + //////////////////////////////////////////////////////////// + virtual std::size_t getPointCount() const; + + //////////////////////////////////////////////////////////// + /// \brief Set the position of a point + /// + /// Don't forget that the polygon must remain convex, and + /// the points need to stay ordered! + /// setPointCount must be called first in order to set the total + /// number of points. The result is undefined if \a index is out + /// of the valid range. + /// + /// \param index Index of the point to change, in range [0 .. getPointCount() - 1] + /// \param point New position of the point + /// + /// \see getPoint + /// + //////////////////////////////////////////////////////////// + void setPoint(std::size_t index, const Vector2f& point); + + //////////////////////////////////////////////////////////// + /// \brief Get the position of a point + /// + /// The returned point is in local coordinates, that is, + /// the shape's transforms (position, rotation, scale) are + /// not taken into account. + /// The result is undefined if \a index is out of the valid range. + /// + /// \param index Index of the point to get, in range [0 .. getPointCount() - 1] + /// + /// \return Position of the index-th point of the polygon + /// + /// \see setPoint + /// + //////////////////////////////////////////////////////////// + virtual Vector2f getPoint(std::size_t index) const; + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + std::vector m_points; ///< Points composing the convex polygon +}; + +} // namespace sf + + +#endif // SFML_CONVEXSHAPE_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::ConvexShape +/// \ingroup graphics +/// +/// This class inherits all the functions of sf::Transformable +/// (position, rotation, scale, bounds, ...) as well as the +/// functions of sf::Shape (outline, color, texture, ...). +/// +/// It is important to keep in mind that a convex shape must +/// always be... convex, otherwise it may not be drawn correctly. +/// Moreover, the points must be defined in order; using a random +/// order would result in an incorrect shape. +/// +/// Usage example: +/// \code +/// sf::ConvexShape polygon; +/// polygon.setPointCount(3); +/// polygon.setPoint(0, sf::Vector2f(0, 0)); +/// polygon.setPoint(1, sf::Vector2f(0, 10)); +/// polygon.setPoint(2, sf::Vector2f(25, 5)); +/// polygon.setOutlineColor(sf::Color::Red); +/// polygon.setOutlineThickness(5); +/// polygon.setPosition(10, 20); +/// ... +/// window.draw(polygon); +/// \endcode +/// +/// \see sf::Shape, sf::RectangleShape, sf::CircleShape +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/Drawable.hpp b/mcclone/external/sfml23/include/SFML/Graphics/Drawable.hpp new file mode 100644 index 0000000..5ddf2da --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/Drawable.hpp @@ -0,0 +1,126 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_DRAWABLE_HPP +#define SFML_DRAWABLE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +class RenderTarget; + +//////////////////////////////////////////////////////////// +/// \brief Abstract base class for objects that can be drawn +/// to a render target +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API Drawable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Virtual destructor + /// + //////////////////////////////////////////////////////////// + virtual ~Drawable() {} + +protected: + + friend class RenderTarget; + + //////////////////////////////////////////////////////////// + /// \brief Draw the object to a render target + /// + /// This is a pure virtual function that has to be implemented + /// by the derived class to define how the drawable should be + /// drawn. + /// + /// \param target Render target to draw to + /// \param states Current render states + /// + //////////////////////////////////////////////////////////// + virtual void draw(RenderTarget& target, RenderStates states) const = 0; +}; + +} // namespace sf + + +#endif // SFML_DRAWABLE_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Drawable +/// \ingroup graphics +/// +/// sf::Drawable is a very simple base class that allows objects +/// of derived classes to be drawn to a sf::RenderTarget. +/// +/// All you have to do in your derived class is to override the +/// draw virtual function. +/// +/// Note that inheriting from sf::Drawable is not mandatory, +/// but it allows this nice syntax "window.draw(object)" rather +/// than "object.draw(window)", which is more consistent with other +/// SFML classes. +/// +/// Example: +/// \code +/// class MyDrawable : public sf::Drawable +/// { +/// public: +/// +/// ... +/// +/// private: +/// +/// virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const +/// { +/// // You can draw other high-level objects +/// target.draw(m_sprite, states); +/// +/// // ... or use the low-level API +/// states.texture = &m_texture; +/// target.draw(m_vertices, states); +/// +/// // ... or draw with OpenGL directly +/// glBegin(GL_QUADS); +/// ... +/// glEnd(); +/// } +/// +/// sf::Sprite m_sprite; +/// sf::Texture m_texture; +/// sf::VertexArray m_vertices; +/// }; +/// \endcode +/// +/// \see sf::RenderTarget +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/Export.hpp b/mcclone/external/sfml23/include/SFML/Graphics/Export.hpp new file mode 100644 index 0000000..624f1eb --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/Export.hpp @@ -0,0 +1,48 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_GRAPHICS_EXPORT_HPP +#define SFML_GRAPHICS_EXPORT_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +// Define portable import / export macros +//////////////////////////////////////////////////////////// +#if defined(SFML_GRAPHICS_EXPORTS) + + #define SFML_GRAPHICS_API SFML_API_EXPORT + +#else + + #define SFML_GRAPHICS_API SFML_API_IMPORT + +#endif + + +#endif // SFML_GRAPHICS_EXPORT_HPP diff --git a/mcclone/external/sfml23/include/SFML/Graphics/Font.hpp b/mcclone/external/sfml23/include/SFML/Graphics/Font.hpp new file mode 100644 index 0000000..ac6b00e --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/Font.hpp @@ -0,0 +1,433 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_FONT_HPP +#define SFML_FONT_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +namespace sf +{ +class InputStream; + +//////////////////////////////////////////////////////////// +/// \brief Class for loading and manipulating character fonts +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API Font +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Holds various information about a font + /// + //////////////////////////////////////////////////////////// + struct Info + { + std::string family; ///< The font family + }; + +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// This constructor defines an empty font + /// + //////////////////////////////////////////////////////////// + Font(); + + //////////////////////////////////////////////////////////// + /// \brief Copy constructor + /// + /// \param copy Instance to copy + /// + //////////////////////////////////////////////////////////// + Font(const Font& copy); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + /// Cleans up all the internal resources used by the font + /// + //////////////////////////////////////////////////////////// + ~Font(); + + //////////////////////////////////////////////////////////// + /// \brief Load the font from a file + /// + /// The supported font formats are: TrueType, Type 1, CFF, + /// OpenType, SFNT, X11 PCF, Windows FNT, BDF, PFR and Type 42. + /// Note that this function know nothing about the standard + /// fonts installed on the user's system, thus you can't + /// load them directly. + /// + /// \warning SFML cannot preload all the font data in this + /// function, so the file has to remain accessible until + /// the sf::Font object loads a new font or is destroyed. + /// + /// \param filename Path of the font file to load + /// + /// \return True if loading succeeded, false if it failed + /// + /// \see loadFromMemory, loadFromStream + /// + //////////////////////////////////////////////////////////// + bool loadFromFile(const std::string& filename); + + //////////////////////////////////////////////////////////// + /// \brief Load the font from a file in memory + /// + /// The supported font formats are: TrueType, Type 1, CFF, + /// OpenType, SFNT, X11 PCF, Windows FNT, BDF, PFR and Type 42. + /// + /// \warning SFML cannot preload all the font data in this + /// function, so the buffer pointed by \a data has to remain + /// valid until the sf::Font object loads a new font or + /// is destroyed. + /// + /// \param data Pointer to the file data in memory + /// \param sizeInBytes Size of the data to load, in bytes + /// + /// \return True if loading succeeded, false if it failed + /// + /// \see loadFromFile, loadFromStream + /// + //////////////////////////////////////////////////////////// + bool loadFromMemory(const void* data, std::size_t sizeInBytes); + + //////////////////////////////////////////////////////////// + /// \brief Load the font from a custom stream + /// + /// The supported font formats are: TrueType, Type 1, CFF, + /// OpenType, SFNT, X11 PCF, Windows FNT, BDF, PFR and Type 42. + /// Warning: SFML cannot preload all the font data in this + /// function, so the contents of \a stream have to remain + /// valid as long as the font is used. + /// + /// \warning SFML cannot preload all the font data in this + /// function, so the stream has to remain accessible until + /// the sf::Font object loads a new font or is destroyed. + /// + /// \param stream Source stream to read from + /// + /// \return True if loading succeeded, false if it failed + /// + /// \see loadFromFile, loadFromMemory + /// + //////////////////////////////////////////////////////////// + bool loadFromStream(InputStream& stream); + + //////////////////////////////////////////////////////////// + /// \brief Get the font information + /// + /// \return A structure that holds the font information + /// + //////////////////////////////////////////////////////////// + const Info& getInfo() const; + + //////////////////////////////////////////////////////////// + /// \brief Retrieve a glyph of the font + /// + /// If the font is a bitmap font, not all character sizes + /// might be available. If the glyph is not available at the + /// requested size, an empty glyph is returned. + /// + /// \param codePoint Unicode code point of the character to get + /// \param characterSize Reference character size + /// \param bold Retrieve the bold version or the regular one? + /// + /// \return The glyph corresponding to \a codePoint and \a characterSize + /// + //////////////////////////////////////////////////////////// + const Glyph& getGlyph(Uint32 codePoint, unsigned int characterSize, bool bold) const; + + //////////////////////////////////////////////////////////// + /// \brief Get the kerning offset of two glyphs + /// + /// The kerning is an extra offset (negative) to apply between two + /// glyphs when rendering them, to make the pair look more "natural". + /// For example, the pair "AV" have a special kerning to make them + /// closer than other characters. Most of the glyphs pairs have a + /// kerning offset of zero, though. + /// + /// \param first Unicode code point of the first character + /// \param second Unicode code point of the second character + /// \param characterSize Reference character size + /// + /// \return Kerning value for \a first and \a second, in pixels + /// + //////////////////////////////////////////////////////////// + float getKerning(Uint32 first, Uint32 second, unsigned int characterSize) const; + + //////////////////////////////////////////////////////////// + /// \brief Get the line spacing + /// + /// Line spacing is the vertical offset to apply between two + /// consecutive lines of text. + /// + /// \param characterSize Reference character size + /// + /// \return Line spacing, in pixels + /// + //////////////////////////////////////////////////////////// + float getLineSpacing(unsigned int characterSize) const; + + //////////////////////////////////////////////////////////// + /// \brief Get the position of the underline + /// + /// Underline position is the vertical offset to apply between the + /// baseline and the underline. + /// + /// \param characterSize Reference character size + /// + /// \return Underline position, in pixels + /// + /// \see getUnderlineThickness + /// + //////////////////////////////////////////////////////////// + float getUnderlinePosition(unsigned int characterSize) const; + + //////////////////////////////////////////////////////////// + /// \brief Get the thickness of the underline + /// + /// Underline thickness is the vertical size of the underline. + /// + /// \param characterSize Reference character size + /// + /// \return Underline thickness, in pixels + /// + /// \see getUnderlinePosition + /// + //////////////////////////////////////////////////////////// + float getUnderlineThickness(unsigned int characterSize) const; + + //////////////////////////////////////////////////////////// + /// \brief Retrieve the texture containing the loaded glyphs of a certain size + /// + /// The contents of the returned texture changes as more glyphs + /// are requested, thus it is not very relevant. It is mainly + /// used internally by sf::Text. + /// + /// \param characterSize Reference character size + /// + /// \return Texture containing the glyphs of the requested size + /// + //////////////////////////////////////////////////////////// + const Texture& getTexture(unsigned int characterSize) const; + + //////////////////////////////////////////////////////////// + /// \brief Overload of assignment operator + /// + /// \param right Instance to assign + /// + /// \return Reference to self + /// + //////////////////////////////////////////////////////////// + Font& operator =(const Font& right); + +private: + + //////////////////////////////////////////////////////////// + /// \brief Structure defining a row of glyphs + /// + //////////////////////////////////////////////////////////// + struct Row + { + Row(unsigned int rowTop, unsigned int rowHeight) : width(0), top(rowTop), height(rowHeight) {} + + unsigned int width; ///< Current width of the row + unsigned int top; ///< Y position of the row into the texture + unsigned int height; ///< Height of the row + }; + + //////////////////////////////////////////////////////////// + // Types + //////////////////////////////////////////////////////////// + typedef std::map GlyphTable; ///< Table mapping a codepoint to its glyph + + //////////////////////////////////////////////////////////// + /// \brief Structure defining a page of glyphs + /// + //////////////////////////////////////////////////////////// + struct Page + { + Page(); + + GlyphTable glyphs; ///< Table mapping code points to their corresponding glyph + Texture texture; ///< Texture containing the pixels of the glyphs + unsigned int nextRow; ///< Y position of the next new row in the texture + std::vector rows; ///< List containing the position of all the existing rows + }; + + //////////////////////////////////////////////////////////// + /// \brief Free all the internal resources + /// + //////////////////////////////////////////////////////////// + void cleanup(); + + //////////////////////////////////////////////////////////// + /// \brief Load a new glyph and store it in the cache + /// + /// \param codePoint Unicode code point of the character to load + /// \param characterSize Reference character size + /// \param bold Retrieve the bold version or the regular one? + /// + /// \return The glyph corresponding to \a codePoint and \a characterSize + /// + //////////////////////////////////////////////////////////// + Glyph loadGlyph(Uint32 codePoint, unsigned int characterSize, bool bold) const; + + //////////////////////////////////////////////////////////// + /// \brief Find a suitable rectangle within the texture for a glyph + /// + /// \param page Page of glyphs to search in + /// \param width Width of the rectangle + /// \param height Height of the rectangle + /// + /// \return Found rectangle within the texture + /// + //////////////////////////////////////////////////////////// + IntRect findGlyphRect(Page& page, unsigned int width, unsigned int height) const; + + //////////////////////////////////////////////////////////// + /// \brief Make sure that the given size is the current one + /// + /// \param characterSize Reference character size + /// + /// \return True on success, false if any error happened + /// + //////////////////////////////////////////////////////////// + bool setCurrentSize(unsigned int characterSize) const; + + //////////////////////////////////////////////////////////// + // Types + //////////////////////////////////////////////////////////// + typedef std::map PageTable; ///< Table mapping a character size to its page (texture) + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + void* m_library; ///< Pointer to the internal library interface (it is typeless to avoid exposing implementation details) + void* m_face; ///< Pointer to the internal font face (it is typeless to avoid exposing implementation details) + void* m_streamRec; ///< Pointer to the stream rec instance (it is typeless to avoid exposing implementation details) + int* m_refCount; ///< Reference counter used by implicit sharing + Info m_info; ///< Information about the font + mutable PageTable m_pages; ///< Table containing the glyphs pages by character size + mutable std::vector m_pixelBuffer; ///< Pixel buffer holding a glyph's pixels before being written to the texture + #ifdef SFML_SYSTEM_ANDROID + void* m_stream; ///< Asset file streamer (if loaded from file) + #endif +}; + +} // namespace sf + + +#endif // SFML_FONT_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Font +/// \ingroup graphics +/// +/// Fonts can be loaded from a file, from memory or from a custom +/// stream, and supports the most common types of fonts. See +/// the loadFromFile function for the complete list of supported formats. +/// +/// Once it is loaded, a sf::Font instance provides three +/// types of information about the font: +/// \li Global metrics, such as the line spacing +/// \li Per-glyph metrics, such as bounding box or kerning +/// \li Pixel representation of glyphs +/// +/// Fonts alone are not very useful: they hold the font data +/// but cannot make anything useful of it. To do so you need to +/// use the sf::Text class, which is able to properly output text +/// with several options such as character size, style, color, +/// position, rotation, etc. +/// This separation allows more flexibility and better performances: +/// indeed a sf::Font is a heavy resource, and any operation on it +/// is slow (often too slow for real-time applications). On the other +/// side, a sf::Text is a lightweight object which can combine the +/// glyphs data and metrics of a sf::Font to display any text on a +/// render target. +/// Note that it is also possible to bind several sf::Text instances +/// to the same sf::Font. +/// +/// It is important to note that the sf::Text instance doesn't +/// copy the font that it uses, it only keeps a reference to it. +/// Thus, a sf::Font must not be destructed while it is +/// used by a sf::Text (i.e. never write a function that +/// uses a local sf::Font instance for creating a text). +/// +/// Usage example: +/// \code +/// // Declare a new font +/// sf::Font font; +/// +/// // Load it from a file +/// if (!font.loadFromFile("arial.ttf")) +/// { +/// // error... +/// } +/// +/// // Create a text which uses our font +/// sf::Text text1; +/// text1.setFont(font); +/// text1.setCharacterSize(30); +/// text1.setStyle(sf::Text::Regular); +/// +/// // Create another text using the same font, but with different parameters +/// sf::Text text2; +/// text2.setFont(font); +/// text2.setCharacterSize(50); +/// text2.setStyle(sf::Text::Italic); +/// \endcode +/// +/// Apart from loading font files, and passing them to instances +/// of sf::Text, you should normally not have to deal directly +/// with this class. However, it may be useful to access the +/// font metrics or rasterized glyphs for advanced usage. +/// +/// Note that if the font is a bitmap font, it is not scalable, +/// thus not all requested sizes will be available to use. This +/// needs to be taken into consideration when using sf::Text. +/// If you need to display text of a certain size, make sure the +/// corresponding bitmap font that supports that size is used. +/// +/// \see sf::Text +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/Glyph.hpp b/mcclone/external/sfml23/include/SFML/Graphics/Glyph.hpp new file mode 100644 index 0000000..0068872 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/Glyph.hpp @@ -0,0 +1,79 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_GLYPH_HPP +#define SFML_GLYPH_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Structure describing a glyph +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API Glyph +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + Glyph() : advance(0) {} + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + float advance; ///< Offset to move horizontally to the next character + FloatRect bounds; ///< Bounding rectangle of the glyph, in coordinates relative to the baseline + IntRect textureRect; ///< Texture coordinates of the glyph inside the font's texture +}; + +} // namespace sf + + +#endif // SFML_GLYPH_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Glyph +/// \ingroup graphics +/// +/// A glyph is the visual representation of a character. +/// +/// The sf::Glyph structure provides the information needed +/// to handle the glyph: +/// \li its coordinates in the font's texture +/// \li its bounding rectangle +/// \li the offset to apply to get the starting position of the next glyph +/// +/// \see sf::Font +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/Image.hpp b/mcclone/external/sfml23/include/SFML/Graphics/Image.hpp new file mode 100644 index 0000000..11dc8f7 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/Image.hpp @@ -0,0 +1,327 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_IMAGE_HPP +#define SFML_IMAGE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include + + +namespace sf +{ +class InputStream; + +//////////////////////////////////////////////////////////// +/// \brief Class for loading, manipulating and saving images +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API Image +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// Creates an empty image. + /// + //////////////////////////////////////////////////////////// + Image(); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + //////////////////////////////////////////////////////////// + ~Image(); + + //////////////////////////////////////////////////////////// + /// \brief Create the image and fill it with a unique color + /// + /// \param width Width of the image + /// \param height Height of the image + /// \param color Fill color + /// + //////////////////////////////////////////////////////////// + void create(unsigned int width, unsigned int height, const Color& color = Color(0, 0, 0)); + + //////////////////////////////////////////////////////////// + /// \brief Create the image from an array of pixels + /// + /// The \a pixel array is assumed to contain 32-bits RGBA pixels, + /// and have the given \a width and \a height. If not, this is + /// an undefined behavior. + /// If \a pixels is null, an empty image is created. + /// + /// \param width Width of the image + /// \param height Height of the image + /// \param pixels Array of pixels to copy to the image + /// + //////////////////////////////////////////////////////////// + void create(unsigned int width, unsigned int height, const Uint8* pixels); + + //////////////////////////////////////////////////////////// + /// \brief Load the image from a file on disk + /// + /// The supported image formats are bmp, png, tga, jpg, gif, + /// psd, hdr and pic. Some format options are not supported, + /// like progressive jpeg. + /// If this function fails, the image is left unchanged. + /// + /// \param filename Path of the image file to load + /// + /// \return True if loading was successful + /// + /// \see loadFromMemory, loadFromStream, saveToFile + /// + //////////////////////////////////////////////////////////// + bool loadFromFile(const std::string& filename); + + //////////////////////////////////////////////////////////// + /// \brief Load the image from a file in memory + /// + /// The supported image formats are bmp, png, tga, jpg, gif, + /// psd, hdr and pic. Some format options are not supported, + /// like progressive jpeg. + /// If this function fails, the image is left unchanged. + /// + /// \param data Pointer to the file data in memory + /// \param size Size of the data to load, in bytes + /// + /// \return True if loading was successful + /// + /// \see loadFromFile, loadFromStream + /// + //////////////////////////////////////////////////////////// + bool loadFromMemory(const void* data, std::size_t size); + + //////////////////////////////////////////////////////////// + /// \brief Load the image from a custom stream + /// + /// The supported image formats are bmp, png, tga, jpg, gif, + /// psd, hdr and pic. Some format options are not supported, + /// like progressive jpeg. + /// If this function fails, the image is left unchanged. + /// + /// \param stream Source stream to read from + /// + /// \return True if loading was successful + /// + /// \see loadFromFile, loadFromMemory + /// + //////////////////////////////////////////////////////////// + bool loadFromStream(InputStream& stream); + + //////////////////////////////////////////////////////////// + /// \brief Save the image to a file on disk + /// + /// The format of the image is automatically deduced from + /// the extension. The supported image formats are bmp, png, + /// tga and jpg. The destination file is overwritten + /// if it already exists. This function fails if the image is empty. + /// + /// \param filename Path of the file to save + /// + /// \return True if saving was successful + /// + /// \see create, loadFromFile, loadFromMemory + /// + //////////////////////////////////////////////////////////// + bool saveToFile(const std::string& filename) const; + + //////////////////////////////////////////////////////////// + /// \brief Return the size (width and height) of the image + /// + /// \return Size of the image, in pixels + /// + //////////////////////////////////////////////////////////// + Vector2u getSize() const; + + //////////////////////////////////////////////////////////// + /// \brief Create a transparency mask from a specified color-key + /// + /// This function sets the alpha value of every pixel matching + /// the given color to \a alpha (0 by default), so that they + /// become transparent. + /// + /// \param color Color to make transparent + /// \param alpha Alpha value to assign to transparent pixels + /// + //////////////////////////////////////////////////////////// + void createMaskFromColor(const Color& color, Uint8 alpha = 0); + + //////////////////////////////////////////////////////////// + /// \brief Copy pixels from another image onto this one + /// + /// This function does a slow pixel copy and should not be + /// used intensively. It can be used to prepare a complex + /// static image from several others, but if you need this + /// kind of feature in real-time you'd better use sf::RenderTexture. + /// + /// If \a sourceRect is empty, the whole image is copied. + /// If \a applyAlpha is set to true, the transparency of + /// source pixels is applied. If it is false, the pixels are + /// copied unchanged with their alpha value. + /// + /// \param source Source image to copy + /// \param destX X coordinate of the destination position + /// \param destY Y coordinate of the destination position + /// \param sourceRect Sub-rectangle of the source image to copy + /// \param applyAlpha Should the copy take into account the source transparency? + /// + //////////////////////////////////////////////////////////// + void copy(const Image& source, unsigned int destX, unsigned int destY, const IntRect& sourceRect = IntRect(0, 0, 0, 0), bool applyAlpha = false); + + //////////////////////////////////////////////////////////// + /// \brief Change the color of a pixel + /// + /// This function doesn't check the validity of the pixel + /// coordinates, using out-of-range values will result in + /// an undefined behavior. + /// + /// \param x X coordinate of pixel to change + /// \param y Y coordinate of pixel to change + /// \param color New color of the pixel + /// + /// \see getPixel + /// + //////////////////////////////////////////////////////////// + void setPixel(unsigned int x, unsigned int y, const Color& color); + + //////////////////////////////////////////////////////////// + /// \brief Get the color of a pixel + /// + /// This function doesn't check the validity of the pixel + /// coordinates, using out-of-range values will result in + /// an undefined behavior. + /// + /// \param x X coordinate of pixel to get + /// \param y Y coordinate of pixel to get + /// + /// \return Color of the pixel at coordinates (x, y) + /// + /// \see setPixel + /// + //////////////////////////////////////////////////////////// + Color getPixel(unsigned int x, unsigned int y) const; + + //////////////////////////////////////////////////////////// + /// \brief Get a read-only pointer to the array of pixels + /// + /// The returned value points to an array of RGBA pixels made of + /// 8 bits integers components. The size of the array is + /// width * height * 4 (getSize().x * getSize().y * 4). + /// Warning: the returned pointer may become invalid if you + /// modify the image, so you should never store it for too long. + /// If the image is empty, a null pointer is returned. + /// + /// \return Read-only pointer to the array of pixels + /// + //////////////////////////////////////////////////////////// + const Uint8* getPixelsPtr() const; + + //////////////////////////////////////////////////////////// + /// \brief Flip the image horizontally (left <-> right) + /// + //////////////////////////////////////////////////////////// + void flipHorizontally(); + + //////////////////////////////////////////////////////////// + /// \brief Flip the image vertically (top <-> bottom) + /// + //////////////////////////////////////////////////////////// + void flipVertically(); + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + Vector2u m_size; ///< Image size + std::vector m_pixels; ///< Pixels of the image + #ifdef SFML_SYSTEM_ANDROID + void* m_stream; ///< Asset file streamer (if loaded from file) + #endif +}; + +} // namespace sf + + +#endif // SFML_IMAGE_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Image +/// \ingroup graphics +/// +/// sf::Image is an abstraction to manipulate images +/// as bidimensional arrays of pixels. The class provides +/// functions to load, read, write and save pixels, as well +/// as many other useful functions. +/// +/// sf::Image can handle a unique internal representation of +/// pixels, which is RGBA 32 bits. This means that a pixel +/// must be composed of 8 bits red, green, blue and alpha +/// channels -- just like a sf::Color. +/// All the functions that return an array of pixels follow +/// this rule, and all parameters that you pass to sf::Image +/// functions (such as loadFromMemory) must use this +/// representation as well. +/// +/// A sf::Image can be copied, but it is a heavy resource and +/// if possible you should always use [const] references to +/// pass or return them to avoid useless copies. +/// +/// Usage example: +/// \code +/// // Load an image file from a file +/// sf::Image background; +/// if (!background.loadFromFile("background.jpg")) +/// return -1; +/// +/// // Create a 20x20 image filled with black color +/// sf::Image image; +/// image.create(20, 20, sf::Color::Black); +/// +/// // Copy image1 on image2 at position (10, 10) +/// image.copy(background, 10, 10); +/// +/// // Make the top-left pixel transparent +/// sf::Color color = image.getPixel(0, 0); +/// color.a = 0; +/// image.setPixel(0, 0, color); +/// +/// // Save the image to a file +/// if (!image.saveToFile("result.png")) +/// return -1; +/// \endcode +/// +/// \see sf::Texture +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/PrimitiveType.hpp b/mcclone/external/sfml23/include/SFML/Graphics/PrimitiveType.hpp new file mode 100644 index 0000000..9dae947 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/PrimitiveType.hpp @@ -0,0 +1,53 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_PRIMITIVETYPE_HPP +#define SFML_PRIMITIVETYPE_HPP + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \ingroup graphics +/// \brief Types of primitives that a sf::VertexArray can render +/// +/// Points and lines have no area, therefore their thickness +/// will always be 1 pixel, regardless the current transform +/// and view. +/// +//////////////////////////////////////////////////////////// +enum PrimitiveType +{ + Points, ///< List of individual points + Lines, ///< List of individual lines + LinesStrip, ///< List of connected lines, a point uses the previous point to form a line + Triangles, ///< List of individual triangles + TrianglesStrip, ///< List of connected triangles, a point uses the two previous points to form a triangle + TrianglesFan, ///< List of connected triangles, a point uses the common center and the previous point to form a triangle + Quads ///< List of individual quads (deprecated, don't work with OpenGL ES) +}; + +} // namespace sf + + +#endif // SFML_PRIMITIVETYPE_HPP diff --git a/mcclone/external/sfml23/include/SFML/Graphics/Rect.hpp b/mcclone/external/sfml23/include/SFML/Graphics/Rect.hpp new file mode 100644 index 0000000..f11a920 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/Rect.hpp @@ -0,0 +1,248 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_RECT_HPP +#define SFML_RECT_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Utility class for manipulating 2D axis aligned rectangles +/// +//////////////////////////////////////////////////////////// +template +class Rect +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// Creates an empty rectangle (it is equivalent to calling + /// Rect(0, 0, 0, 0)). + /// + //////////////////////////////////////////////////////////// + Rect(); + + //////////////////////////////////////////////////////////// + /// \brief Construct the rectangle from its coordinates + /// + /// Be careful, the last two parameters are the width + /// and height, not the right and bottom coordinates! + /// + /// \param rectLeft Left coordinate of the rectangle + /// \param rectTop Top coordinate of the rectangle + /// \param rectWidth Width of the rectangle + /// \param rectHeight Height of the rectangle + /// + //////////////////////////////////////////////////////////// + Rect(T rectLeft, T rectTop, T rectWidth, T rectHeight); + + //////////////////////////////////////////////////////////// + /// \brief Construct the rectangle from position and size + /// + /// Be careful, the last parameter is the size, + /// not the bottom-right corner! + /// + /// \param position Position of the top-left corner of the rectangle + /// \param size Size of the rectangle + /// + //////////////////////////////////////////////////////////// + Rect(const Vector2& position, const Vector2& size); + + //////////////////////////////////////////////////////////// + /// \brief Construct the rectangle from another type of rectangle + /// + /// This constructor doesn't replace the copy constructor, + /// it's called only when U != T. + /// A call to this constructor will fail to compile if U + /// is not convertible to T. + /// + /// \param rectangle Rectangle to convert + /// + //////////////////////////////////////////////////////////// + template + explicit Rect(const Rect& rectangle); + + //////////////////////////////////////////////////////////// + /// \brief Check if a point is inside the rectangle's area + /// + /// \param x X coordinate of the point to test + /// \param y Y coordinate of the point to test + /// + /// \return True if the point is inside, false otherwise + /// + /// \see intersects + /// + //////////////////////////////////////////////////////////// + bool contains(T x, T y) const; + + //////////////////////////////////////////////////////////// + /// \brief Check if a point is inside the rectangle's area + /// + /// \param point Point to test + /// + /// \return True if the point is inside, false otherwise + /// + /// \see intersects + /// + //////////////////////////////////////////////////////////// + bool contains(const Vector2& point) const; + + //////////////////////////////////////////////////////////// + /// \brief Check the intersection between two rectangles + /// + /// \param rectangle Rectangle to test + /// + /// \return True if rectangles overlap, false otherwise + /// + /// \see contains + /// + //////////////////////////////////////////////////////////// + bool intersects(const Rect& rectangle) const; + + //////////////////////////////////////////////////////////// + /// \brief Check the intersection between two rectangles + /// + /// This overload returns the overlapped rectangle in the + /// \a intersection parameter. + /// + /// \param rectangle Rectangle to test + /// \param intersection Rectangle to be filled with the intersection + /// + /// \return True if rectangles overlap, false otherwise + /// + /// \see contains + /// + //////////////////////////////////////////////////////////// + bool intersects(const Rect& rectangle, Rect& intersection) const; + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + T left; ///< Left coordinate of the rectangle + T top; ///< Top coordinate of the rectangle + T width; ///< Width of the rectangle + T height; ///< Height of the rectangle +}; + +//////////////////////////////////////////////////////////// +/// \relates Rect +/// \brief Overload of binary operator == +/// +/// This operator compares strict equality between two rectangles. +/// +/// \param left Left operand (a rectangle) +/// \param right Right operand (a rectangle) +/// +/// \return True if \a left is equal to \a right +/// +//////////////////////////////////////////////////////////// +template +bool operator ==(const Rect& left, const Rect& right); + +//////////////////////////////////////////////////////////// +/// \relates Rect +/// \brief Overload of binary operator != +/// +/// This operator compares strict difference between two rectangles. +/// +/// \param left Left operand (a rectangle) +/// \param right Right operand (a rectangle) +/// +/// \return True if \a left is not equal to \a right +/// +//////////////////////////////////////////////////////////// +template +bool operator !=(const Rect& left, const Rect& right); + +#include + +// Create typedefs for the most common types +typedef Rect IntRect; +typedef Rect FloatRect; + +} // namespace sf + + +#endif // SFML_RECT_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Rect +/// \ingroup graphics +/// +/// A rectangle is defined by its top-left corner and its size. +/// It is a very simple class defined for convenience, so +/// its member variables (left, top, width and height) are public +/// and can be accessed directly, just like the vector classes +/// (Vector2 and Vector3). +/// +/// To keep things simple, sf::Rect doesn't define +/// functions to emulate the properties that are not directly +/// members (such as right, bottom, center, etc.), it rather +/// only provides intersection functions. +/// +/// sf::Rect uses the usual rules for its boundaries: +/// \li The left and top edges are included in the rectangle's area +/// \li The right (left + width) and bottom (top + height) edges are excluded from the rectangle's area +/// +/// This means that sf::IntRect(0, 0, 1, 1) and sf::IntRect(1, 1, 1, 1) +/// don't intersect. +/// +/// sf::Rect is a template and may be used with any numeric type, but +/// for simplicity the instantiations used by SFML are typedef'd: +/// \li sf::Rect is sf::IntRect +/// \li sf::Rect is sf::FloatRect +/// +/// So that you don't have to care about the template syntax. +/// +/// Usage example: +/// \code +/// // Define a rectangle, located at (0, 0) with a size of 20x5 +/// sf::IntRect r1(0, 0, 20, 5); +/// +/// // Define another rectangle, located at (4, 2) with a size of 18x10 +/// sf::Vector2i position(4, 2); +/// sf::Vector2i size(18, 10); +/// sf::IntRect r2(position, size); +/// +/// // Test intersections with the point (3, 1) +/// bool b1 = r1.contains(3, 1); // true +/// bool b2 = r2.contains(3, 1); // false +/// +/// // Test the intersection between r1 and r2 +/// sf::IntRect result; +/// bool b3 = r1.intersects(r2, result); // true +/// // result == (4, 2, 16, 3) +/// \endcode +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/Rect.inl b/mcclone/external/sfml23/include/SFML/Graphics/Rect.inl new file mode 100644 index 0000000..9ac4870 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/Rect.inl @@ -0,0 +1,159 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +template +Rect::Rect() : +left (0), +top (0), +width (0), +height(0) +{ + +} + + +//////////////////////////////////////////////////////////// +template +Rect::Rect(T rectLeft, T rectTop, T rectWidth, T rectHeight) : +left (rectLeft), +top (rectTop), +width (rectWidth), +height(rectHeight) +{ + +} + + +//////////////////////////////////////////////////////////// +template +Rect::Rect(const Vector2& position, const Vector2& size) : +left (position.x), +top (position.y), +width (size.x), +height(size.y) +{ + +} + + +//////////////////////////////////////////////////////////// +template +template +Rect::Rect(const Rect& rectangle) : +left (static_cast(rectangle.left)), +top (static_cast(rectangle.top)), +width (static_cast(rectangle.width)), +height(static_cast(rectangle.height)) +{ +} + + +//////////////////////////////////////////////////////////// +template +bool Rect::contains(T x, T y) const +{ + // Rectangles with negative dimensions are allowed, so we must handle them correctly + + // Compute the real min and max of the rectangle on both axes + T minX = std::min(left, static_cast(left + width)); + T maxX = std::max(left, static_cast(left + width)); + T minY = std::min(top, static_cast(top + height)); + T maxY = std::max(top, static_cast(top + height)); + + return (x >= minX) && (x < maxX) && (y >= minY) && (y < maxY); +} + + +//////////////////////////////////////////////////////////// +template +bool Rect::contains(const Vector2& point) const +{ + return contains(point.x, point.y); +} + + +//////////////////////////////////////////////////////////// +template +bool Rect::intersects(const Rect& rectangle) const +{ + Rect intersection; + return intersects(rectangle, intersection); +} + + +//////////////////////////////////////////////////////////// +template +bool Rect::intersects(const Rect& rectangle, Rect& intersection) const +{ + // Rectangles with negative dimensions are allowed, so we must handle them correctly + + // Compute the min and max of the first rectangle on both axes + T r1MinX = std::min(left, static_cast(left + width)); + T r1MaxX = std::max(left, static_cast(left + width)); + T r1MinY = std::min(top, static_cast(top + height)); + T r1MaxY = std::max(top, static_cast(top + height)); + + // Compute the min and max of the second rectangle on both axes + T r2MinX = std::min(rectangle.left, static_cast(rectangle.left + rectangle.width)); + T r2MaxX = std::max(rectangle.left, static_cast(rectangle.left + rectangle.width)); + T r2MinY = std::min(rectangle.top, static_cast(rectangle.top + rectangle.height)); + T r2MaxY = std::max(rectangle.top, static_cast(rectangle.top + rectangle.height)); + + // Compute the intersection boundaries + T interLeft = std::max(r1MinX, r2MinX); + T interTop = std::max(r1MinY, r2MinY); + T interRight = std::min(r1MaxX, r2MaxX); + T interBottom = std::min(r1MaxY, r2MaxY); + + // If the intersection is valid (positive non zero area), then there is an intersection + if ((interLeft < interRight) && (interTop < interBottom)) + { + intersection = Rect(interLeft, interTop, interRight - interLeft, interBottom - interTop); + return true; + } + else + { + intersection = Rect(0, 0, 0, 0); + return false; + } +} + + +//////////////////////////////////////////////////////////// +template +inline bool operator ==(const Rect& left, const Rect& right) +{ + return (left.left == right.left) && (left.width == right.width) && + (left.top == right.top) && (left.height == right.height); +} + + +//////////////////////////////////////////////////////////// +template +inline bool operator !=(const Rect& left, const Rect& right) +{ + return !(left == right); +} diff --git a/mcclone/external/sfml23/include/SFML/Graphics/RectangleShape.hpp b/mcclone/external/sfml23/include/SFML/Graphics/RectangleShape.hpp new file mode 100644 index 0000000..3195dc3 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/RectangleShape.hpp @@ -0,0 +1,132 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_RECTANGLESHAPE_HPP +#define SFML_RECTANGLESHAPE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Specialized shape representing a rectangle +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API RectangleShape : public Shape +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// \param size Size of the rectangle + /// + //////////////////////////////////////////////////////////// + explicit RectangleShape(const Vector2f& size = Vector2f(0, 0)); + + //////////////////////////////////////////////////////////// + /// \brief Set the size of the rectangle + /// + /// \param size New size of the rectangle + /// + /// \see getSize + /// + //////////////////////////////////////////////////////////// + void setSize(const Vector2f& size); + + //////////////////////////////////////////////////////////// + /// \brief Get the size of the rectangle + /// + /// \return Size of the rectangle + /// + /// \see setSize + /// + //////////////////////////////////////////////////////////// + const Vector2f& getSize() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the number of points defining the shape + /// + /// \return Number of points of the shape. For rectangle + /// shapes, this number is always 4. + /// + //////////////////////////////////////////////////////////// + virtual std::size_t getPointCount() const; + + //////////////////////////////////////////////////////////// + /// \brief Get a point of the rectangle + /// + /// The returned point is in local coordinates, that is, + /// the shape's transforms (position, rotation, scale) are + /// not taken into account. + /// The result is undefined if \a index is out of the valid range. + /// + /// \param index Index of the point to get, in range [0 .. 3] + /// + /// \return index-th point of the shape + /// + //////////////////////////////////////////////////////////// + virtual Vector2f getPoint(std::size_t index) const; + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + Vector2f m_size; ///< Size of the rectangle +}; + +} // namespace sf + + +#endif // SFML_RECTANGLESHAPE_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::RectangleShape +/// \ingroup graphics +/// +/// This class inherits all the functions of sf::Transformable +/// (position, rotation, scale, bounds, ...) as well as the +/// functions of sf::Shape (outline, color, texture, ...). +/// +/// Usage example: +/// \code +/// sf::RectangleShape rectangle; +/// rectangle.setSize(sf::Vector2f(100, 50)); +/// rectangle.setOutlineColor(sf::Color::Red); +/// rectangle.setOutlineThickness(5); +/// rectangle.setPosition(10, 20); +/// ... +/// window.draw(rectangle); +/// \endcode +/// +/// \see sf::Shape, sf::CircleShape, sf::ConvexShape +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/RenderStates.hpp b/mcclone/external/sfml23/include/SFML/Graphics/RenderStates.hpp new file mode 100644 index 0000000..3ab3271 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/RenderStates.hpp @@ -0,0 +1,174 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_RENDERSTATES_HPP +#define SFML_RENDERSTATES_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +namespace sf +{ +class Shader; +class Texture; + +//////////////////////////////////////////////////////////// +/// \brief Define the states used for drawing to a RenderTarget +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API RenderStates +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// Constructing a default set of render states is equivalent + /// to using sf::RenderStates::Default. + /// The default set defines: + /// \li the BlendAlpha blend mode + /// \li the identity transform + /// \li a null texture + /// \li a null shader + /// + //////////////////////////////////////////////////////////// + RenderStates(); + + //////////////////////////////////////////////////////////// + /// \brief Construct a default set of render states with a custom blend mode + /// + /// \param theBlendMode Blend mode to use + /// + //////////////////////////////////////////////////////////// + RenderStates(const BlendMode& theBlendMode); + + //////////////////////////////////////////////////////////// + /// \brief Construct a default set of render states with a custom transform + /// + /// \param theTransform Transform to use + /// + //////////////////////////////////////////////////////////// + RenderStates(const Transform& theTransform); + + //////////////////////////////////////////////////////////// + /// \brief Construct a default set of render states with a custom texture + /// + /// \param theTexture Texture to use + /// + //////////////////////////////////////////////////////////// + RenderStates(const Texture* theTexture); + + //////////////////////////////////////////////////////////// + /// \brief Construct a default set of render states with a custom shader + /// + /// \param theShader Shader to use + /// + //////////////////////////////////////////////////////////// + RenderStates(const Shader* theShader); + + //////////////////////////////////////////////////////////// + /// \brief Construct a set of render states with all its attributes + /// + /// \param theBlendMode Blend mode to use + /// \param theTransform Transform to use + /// \param theTexture Texture to use + /// \param theShader Shader to use + /// + //////////////////////////////////////////////////////////// + RenderStates(const BlendMode& theBlendMode, const Transform& theTransform, + const Texture* theTexture, const Shader* theShader); + + //////////////////////////////////////////////////////////// + // Static member data + //////////////////////////////////////////////////////////// + static const RenderStates Default; ///< Special instance holding the default render states + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + BlendMode blendMode; ///< Blending mode + Transform transform; ///< Transform + const Texture* texture; ///< Texture + const Shader* shader; ///< Shader +}; + +} // namespace sf + + +#endif // SFML_RENDERSTATES_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::RenderStates +/// \ingroup graphics +/// +/// There are four global states that can be applied to +/// the drawn objects: +/// \li the blend mode: how pixels of the object are blended with the background +/// \li the transform: how the object is positioned/rotated/scaled +/// \li the texture: what image is mapped to the object +/// \li the shader: what custom effect is applied to the object +/// +/// High-level objects such as sprites or text force some of +/// these states when they are drawn. For example, a sprite +/// will set its own texture, so that you don't have to care +/// about it when drawing the sprite. +/// +/// The transform is a special case: sprites, texts and shapes +/// (and it's a good idea to do it with your own drawable classes +/// too) combine their transform with the one that is passed in the +/// RenderStates structure. So that you can use a "global" transform +/// on top of each object's transform. +/// +/// Most objects, especially high-level drawables, can be drawn +/// directly without defining render states explicitly -- the +/// default set of states is ok in most cases. +/// \code +/// window.draw(sprite); +/// \endcode +/// +/// If you want to use a single specific render state, +/// for example a shader, you can pass it directly to the Draw +/// function: sf::RenderStates has an implicit one-argument +/// constructor for each state. +/// \code +/// window.draw(sprite, shader); +/// \endcode +/// +/// When you're inside the Draw function of a drawable +/// object (inherited from sf::Drawable), you can +/// either pass the render states unmodified, or change +/// some of them. +/// For example, a transformable object will combine the +/// current transform with its own transform. A sprite will +/// set its texture. Etc. +/// +/// \see sf::RenderTarget, sf::Drawable +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/RenderTarget.hpp b/mcclone/external/sfml23/include/SFML/Graphics/RenderTarget.hpp new file mode 100644 index 0000000..eb02355 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/RenderTarget.hpp @@ -0,0 +1,451 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_RENDERTARGET_HPP +#define SFML_RENDERTARGET_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +namespace sf +{ +class Drawable; + +//////////////////////////////////////////////////////////// +/// \brief Base class for all render targets (window, texture, ...) +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API RenderTarget : NonCopyable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + //////////////////////////////////////////////////////////// + virtual ~RenderTarget(); + + //////////////////////////////////////////////////////////// + /// \brief Clear the entire target with a single color + /// + /// This function is usually called once every frame, + /// to clear the previous contents of the target. + /// + /// \param color Fill color to use to clear the render target + /// + //////////////////////////////////////////////////////////// + void clear(const Color& color = Color(0, 0, 0, 255)); + + //////////////////////////////////////////////////////////// + /// \brief Change the current active view + /// + /// The view is like a 2D camera, it controls which part of + /// the 2D scene is visible, and how it is viewed in the + /// render target. + /// The new view will affect everything that is drawn, until + /// another view is set. + /// The render target keeps its own copy of the view object, + /// so it is not necessary to keep the original one alive + /// after calling this function. + /// To restore the original view of the target, you can pass + /// the result of getDefaultView() to this function. + /// + /// \param view New view to use + /// + /// \see getView, getDefaultView + /// + //////////////////////////////////////////////////////////// + void setView(const View& view); + + //////////////////////////////////////////////////////////// + /// \brief Get the view currently in use in the render target + /// + /// \return The view object that is currently used + /// + /// \see setView, getDefaultView + /// + //////////////////////////////////////////////////////////// + const View& getView() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the default view of the render target + /// + /// The default view has the initial size of the render target, + /// and never changes after the target has been created. + /// + /// \return The default view of the render target + /// + /// \see setView, getView + /// + //////////////////////////////////////////////////////////// + const View& getDefaultView() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the viewport of a view, applied to this render target + /// + /// The viewport is defined in the view as a ratio, this function + /// simply applies this ratio to the current dimensions of the + /// render target to calculate the pixels rectangle that the viewport + /// actually covers in the target. + /// + /// \param view The view for which we want to compute the viewport + /// + /// \return Viewport rectangle, expressed in pixels + /// + //////////////////////////////////////////////////////////// + IntRect getViewport(const View& view) const; + + //////////////////////////////////////////////////////////// + /// \brief Convert a point from target coordinates to world + /// coordinates, using the current view + /// + /// This function is an overload of the mapPixelToCoords + /// function that implicitly uses the current view. + /// It is equivalent to: + /// \code + /// target.mapPixelToCoords(point, target.getView()); + /// \endcode + /// + /// \param point Pixel to convert + /// + /// \return The converted point, in "world" coordinates + /// + /// \see mapCoordsToPixel + /// + //////////////////////////////////////////////////////////// + Vector2f mapPixelToCoords(const Vector2i& point) const; + + //////////////////////////////////////////////////////////// + /// \brief Convert a point from target coordinates to world coordinates + /// + /// This function finds the 2D position that matches the + /// given pixel of the render target. In other words, it does + /// the inverse of what the graphics card does, to find the + /// initial position of a rendered pixel. + /// + /// Initially, both coordinate systems (world units and target pixels) + /// match perfectly. But if you define a custom view or resize your + /// render target, this assertion is not true anymore, i.e. a point + /// located at (10, 50) in your render target may map to the point + /// (150, 75) in your 2D world -- if the view is translated by (140, 25). + /// + /// For render-windows, this function is typically used to find + /// which point (or object) is located below the mouse cursor. + /// + /// This version uses a custom view for calculations, see the other + /// overload of the function if you want to use the current view of the + /// render target. + /// + /// \param point Pixel to convert + /// \param view The view to use for converting the point + /// + /// \return The converted point, in "world" units + /// + /// \see mapCoordsToPixel + /// + //////////////////////////////////////////////////////////// + Vector2f mapPixelToCoords(const Vector2i& point, const View& view) const; + + //////////////////////////////////////////////////////////// + /// \brief Convert a point from world coordinates to target + /// coordinates, using the current view + /// + /// This function is an overload of the mapCoordsToPixel + /// function that implicitly uses the current view. + /// It is equivalent to: + /// \code + /// target.mapCoordsToPixel(point, target.getView()); + /// \endcode + /// + /// \param point Point to convert + /// + /// \return The converted point, in target coordinates (pixels) + /// + /// \see mapPixelToCoords + /// + //////////////////////////////////////////////////////////// + Vector2i mapCoordsToPixel(const Vector2f& point) const; + + //////////////////////////////////////////////////////////// + /// \brief Convert a point from world coordinates to target coordinates + /// + /// This function finds the pixel of the render target that matches + /// the given 2D point. In other words, it goes through the same process + /// as the graphics card, to compute the final position of a rendered point. + /// + /// Initially, both coordinate systems (world units and target pixels) + /// match perfectly. But if you define a custom view or resize your + /// render target, this assertion is not true anymore, i.e. a point + /// located at (150, 75) in your 2D world may map to the pixel + /// (10, 50) of your render target -- if the view is translated by (140, 25). + /// + /// This version uses a custom view for calculations, see the other + /// overload of the function if you want to use the current view of the + /// render target. + /// + /// \param point Point to convert + /// \param view The view to use for converting the point + /// + /// \return The converted point, in target coordinates (pixels) + /// + /// \see mapPixelToCoords + /// + //////////////////////////////////////////////////////////// + Vector2i mapCoordsToPixel(const Vector2f& point, const View& view) const; + + //////////////////////////////////////////////////////////// + /// \brief Draw a drawable object to the render target + /// + /// \param drawable Object to draw + /// \param states Render states to use for drawing + /// + //////////////////////////////////////////////////////////// + void draw(const Drawable& drawable, const RenderStates& states = RenderStates::Default); + + //////////////////////////////////////////////////////////// + /// \brief Draw primitives defined by an array of vertices + /// + /// \param vertices Pointer to the vertices + /// \param vertexCount Number of vertices in the array + /// \param type Type of primitives to draw + /// \param states Render states to use for drawing + /// + //////////////////////////////////////////////////////////// + void draw(const Vertex* vertices, std::size_t vertexCount, + PrimitiveType type, const RenderStates& states = RenderStates::Default); + + //////////////////////////////////////////////////////////// + /// \brief Return the size of the rendering region of the target + /// + /// \return Size in pixels + /// + //////////////////////////////////////////////////////////// + virtual Vector2u getSize() const = 0; + + //////////////////////////////////////////////////////////// + /// \brief Save the current OpenGL render states and matrices + /// + /// This function can be used when you mix SFML drawing + /// and direct OpenGL rendering. Combined with popGLStates, + /// it ensures that: + /// \li SFML's internal states are not messed up by your OpenGL code + /// \li your OpenGL states are not modified by a call to a SFML function + /// + /// More specifically, it must be used around code that + /// calls Draw functions. Example: + /// \code + /// // OpenGL code here... + /// window.pushGLStates(); + /// window.draw(...); + /// window.draw(...); + /// window.popGLStates(); + /// // OpenGL code here... + /// \endcode + /// + /// Note that this function is quite expensive: it saves all the + /// possible OpenGL states and matrices, even the ones you + /// don't care about. Therefore it should be used wisely. + /// It is provided for convenience, but the best results will + /// be achieved if you handle OpenGL states yourself (because + /// you know which states have really changed, and need to be + /// saved and restored). Take a look at the resetGLStates + /// function if you do so. + /// + /// \see popGLStates + /// + //////////////////////////////////////////////////////////// + void pushGLStates(); + + //////////////////////////////////////////////////////////// + /// \brief Restore the previously saved OpenGL render states and matrices + /// + /// See the description of pushGLStates to get a detailed + /// description of these functions. + /// + /// \see pushGLStates + /// + //////////////////////////////////////////////////////////// + void popGLStates(); + + //////////////////////////////////////////////////////////// + /// \brief Reset the internal OpenGL states so that the target is ready for drawing + /// + /// This function can be used when you mix SFML drawing + /// and direct OpenGL rendering, if you choose not to use + /// pushGLStates/popGLStates. It makes sure that all OpenGL + /// states needed by SFML are set, so that subsequent draw() + /// calls will work as expected. + /// + /// Example: + /// \code + /// // OpenGL code here... + /// glPushAttrib(...); + /// window.resetGLStates(); + /// window.draw(...); + /// window.draw(...); + /// glPopAttrib(...); + /// // OpenGL code here... + /// \endcode + /// + //////////////////////////////////////////////////////////// + void resetGLStates(); + +protected: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + RenderTarget(); + + //////////////////////////////////////////////////////////// + /// \brief Performs the common initialization step after creation + /// + /// The derived classes must call this function after the + /// target is created and ready for drawing. + /// + //////////////////////////////////////////////////////////// + void initialize(); + +private: + + //////////////////////////////////////////////////////////// + /// \brief Apply the current view + /// + //////////////////////////////////////////////////////////// + void applyCurrentView(); + + //////////////////////////////////////////////////////////// + /// \brief Apply a new blending mode + /// + /// \param mode Blending mode to apply + /// + //////////////////////////////////////////////////////////// + void applyBlendMode(const BlendMode& mode); + + //////////////////////////////////////////////////////////// + /// \brief Apply a new transform + /// + /// \param transform Transform to apply + /// + //////////////////////////////////////////////////////////// + void applyTransform(const Transform& transform); + + //////////////////////////////////////////////////////////// + /// \brief Apply a new texture + /// + /// \param texture Texture to apply + /// + //////////////////////////////////////////////////////////// + void applyTexture(const Texture* texture); + + //////////////////////////////////////////////////////////// + /// \brief Apply a new shader + /// + /// \param shader Shader to apply + /// + //////////////////////////////////////////////////////////// + void applyShader(const Shader* shader); + + //////////////////////////////////////////////////////////// + /// \brief Activate the target for rendering + /// + /// This function must be implemented by derived classes to make + /// their OpenGL context current; it is called by the base class + /// everytime it's going to use OpenGL calls. + /// + /// \param active True to make the target active, false to deactivate it + /// + /// \return True if the function succeeded + /// + //////////////////////////////////////////////////////////// + virtual bool activate(bool active) = 0; + + //////////////////////////////////////////////////////////// + /// \brief Render states cache + /// + //////////////////////////////////////////////////////////// + struct StatesCache + { + enum {VertexCacheSize = 4}; + + bool glStatesSet; ///< Are our internal GL states set yet? + bool viewChanged; ///< Has the current view changed since last draw? + BlendMode lastBlendMode; ///< Cached blending mode + Uint64 lastTextureId; ///< Cached texture + bool useVertexCache; ///< Did we previously use the vertex cache? + Vertex vertexCache[VertexCacheSize]; ///< Pre-transformed vertices cache + }; + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + View m_defaultView; ///< Default view + View m_view; ///< Current view + StatesCache m_cache; ///< Render states cache +}; + +} // namespace sf + + +#endif // SFML_RENDERTARGET_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::RenderTarget +/// \ingroup graphics +/// +/// sf::RenderTarget defines the common behavior of all the +/// 2D render targets usable in the graphics module. It makes +/// it possible to draw 2D entities like sprites, shapes, text +/// without using any OpenGL command directly. +/// +/// A sf::RenderTarget is also able to use views (sf::View), +/// which are a kind of 2D cameras. With views you can globally +/// scroll, rotate or zoom everything that is drawn, +/// without having to transform every single entity. See the +/// documentation of sf::View for more details and sample pieces of +/// code about this class. +/// +/// On top of that, render targets are still able to render direct +/// OpenGL stuff. It is even possible to mix together OpenGL calls +/// and regular SFML drawing commands. When doing so, make sure that +/// OpenGL states are not messed up by calling the +/// pushGLStates/popGLStates functions. +/// +/// \see sf::RenderWindow, sf::RenderTexture, sf::View +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/RenderTexture.hpp b/mcclone/external/sfml23/include/SFML/Graphics/RenderTexture.hpp new file mode 100644 index 0000000..5d38562 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/RenderTexture.hpp @@ -0,0 +1,280 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_RENDERTEXTURE_HPP +#define SFML_RENDERTEXTURE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +namespace sf +{ +namespace priv +{ + class RenderTextureImpl; +} + +//////////////////////////////////////////////////////////// +/// \brief Target for off-screen 2D rendering into a texture +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API RenderTexture : public RenderTarget +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// Constructs an empty, invalid render-texture. You must + /// call create to have a valid render-texture. + /// + /// \see create + /// + //////////////////////////////////////////////////////////// + RenderTexture(); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + //////////////////////////////////////////////////////////// + virtual ~RenderTexture(); + + //////////////////////////////////////////////////////////// + /// \brief Create the render-texture + /// + /// Before calling this function, the render-texture is in + /// an invalid state, thus it is mandatory to call it before + /// doing anything with the render-texture. + /// The last parameter, \a depthBuffer, is useful if you want + /// to use the render-texture for 3D OpenGL rendering that requires + /// a depth buffer. Otherwise it is unnecessary, and you should + /// leave this parameter to false (which is its default value). + /// + /// \param width Width of the render-texture + /// \param height Height of the render-texture + /// \param depthBuffer Do you want this render-texture to have a depth buffer? + /// + /// \return True if creation has been successful + /// + //////////////////////////////////////////////////////////// + bool create(unsigned int width, unsigned int height, bool depthBuffer = false); + + //////////////////////////////////////////////////////////// + /// \brief Enable or disable texture smoothing + /// + /// This function is similar to Texture::setSmooth. + /// This parameter is disabled by default. + /// + /// \param smooth True to enable smoothing, false to disable it + /// + /// \see isSmooth + /// + //////////////////////////////////////////////////////////// + void setSmooth(bool smooth); + + //////////////////////////////////////////////////////////// + /// \brief Tell whether the smooth filtering is enabled or not + /// + /// \return True if texture smoothing is enabled + /// + /// \see setSmooth + /// + //////////////////////////////////////////////////////////// + bool isSmooth() const; + + //////////////////////////////////////////////////////////// + /// \brief Enable or disable texture repeating + /// + /// This function is similar to Texture::setRepeated. + /// This parameter is disabled by default. + /// + /// \param repeated True to enable repeating, false to disable it + /// + /// \see isRepeated + /// + //////////////////////////////////////////////////////////// + void setRepeated(bool repeated); + + //////////////////////////////////////////////////////////// + /// \brief Tell whether the texture is repeated or not + /// + /// \return True if texture is repeated + /// + /// \see setRepeated + /// + //////////////////////////////////////////////////////////// + bool isRepeated() const; + + //////////////////////////////////////////////////////////// + /// \brief Activate of deactivate the render-texture for rendering + /// + /// This function makes the render-texture's context current for + /// future OpenGL rendering operations (so you shouldn't care + /// about it if you're not doing direct OpenGL stuff). + /// Only one context can be current in a thread, so if you + /// want to draw OpenGL geometry to another render target + /// (like a RenderWindow) don't forget to activate it again. + /// + /// \param active True to activate, false to deactivate + /// + /// \return True if operation was successful, false otherwise + /// + //////////////////////////////////////////////////////////// + bool setActive(bool active = true); + + //////////////////////////////////////////////////////////// + /// \brief Update the contents of the target texture + /// + /// This function updates the target texture with what + /// has been drawn so far. Like for windows, calling this + /// function is mandatory at the end of rendering. Not calling + /// it may leave the texture in an undefined state. + /// + //////////////////////////////////////////////////////////// + void display(); + + //////////////////////////////////////////////////////////// + /// \brief Return the size of the rendering region of the texture + /// + /// The returned value is the size that you passed to + /// the create function. + /// + /// \return Size in pixels + /// + //////////////////////////////////////////////////////////// + virtual Vector2u getSize() const; + + //////////////////////////////////////////////////////////// + /// \brief Get a read-only reference to the target texture + /// + /// After drawing to the render-texture and calling Display, + /// you can retrieve the updated texture using this function, + /// and draw it using a sprite (for example). + /// The internal sf::Texture of a render-texture is always the + /// same instance, so that it is possible to call this function + /// once and keep a reference to the texture even after it is + /// modified. + /// + /// \return Const reference to the texture + /// + //////////////////////////////////////////////////////////// + const Texture& getTexture() const; + +private: + + //////////////////////////////////////////////////////////// + /// \brief Activate the target for rendering + /// + /// This function is called by the base class + /// everytime it's going to use OpenGL calls. + /// + /// \param active True to make the target active, false to deactivate it + /// + /// \return True if the function succeeded + /// + //////////////////////////////////////////////////////////// + virtual bool activate(bool active); + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + priv::RenderTextureImpl* m_impl; ///< Platform/hardware specific implementation + Texture m_texture; ///< Target texture to draw on +}; + +} // namespace sf + + +#endif // SFML_RENDERTEXTURE_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::RenderTexture +/// \ingroup graphics +/// +/// sf::RenderTexture is the little brother of sf::RenderWindow. +/// It implements the same 2D drawing and OpenGL-related functions +/// (see their base class sf::RenderTarget for more details), +/// the difference is that the result is stored in an off-screen +/// texture rather than being show in a window. +/// +/// Rendering to a texture can be useful in a variety of situations: +/// \li precomputing a complex static texture (like a level's background from multiple tiles) +/// \li applying post-effects to the whole scene with shaders +/// \li creating a sprite from a 3D object rendered with OpenGL +/// \li etc. +/// +/// Usage example: +/// +/// \code +/// // Create a new render-window +/// sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window"); +/// +/// // Create a new render-texture +/// sf::RenderTexture texture; +/// if (!texture.create(500, 500)) +/// return -1; +/// +/// // The main loop +/// while (window.isOpen()) +/// { +/// // Event processing +/// // ... +/// +/// // Clear the whole texture with red color +/// texture.clear(sf::Color::Red); +/// +/// // Draw stuff to the texture +/// texture.draw(sprite); // sprite is a sf::Sprite +/// texture.draw(shape); // shape is a sf::Shape +/// texture.draw(text); // text is a sf::Text +/// +/// // We're done drawing to the texture +/// texture.display(); +/// +/// // Now we start rendering to the window, clear it first +/// window.clear(); +/// +/// // Draw the texture +/// sf::Sprite sprite(texture.getTexture()); +/// window.draw(sprite); +/// +/// // End the current frame and display its contents on screen +/// window.display(); +/// } +/// \endcode +/// +/// Like sf::RenderWindow, sf::RenderTexture is still able to render direct +/// OpenGL stuff. It is even possible to mix together OpenGL calls +/// and regular SFML drawing commands. If you need a depth buffer for +/// 3D rendering, don't forget to request it when calling RenderTexture::create. +/// +/// \see sf::RenderTarget, sf::RenderWindow, sf::View, sf::Texture +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/RenderWindow.hpp b/mcclone/external/sfml23/include/SFML/Graphics/RenderWindow.hpp new file mode 100644 index 0000000..98e5b9a --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/RenderWindow.hpp @@ -0,0 +1,267 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_RENDERWINDOW_HPP +#define SFML_RENDERWINDOW_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Window that can serve as a target for 2D drawing +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API RenderWindow : public Window, public RenderTarget +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// This constructor doesn't actually create the window, + /// use the other constructors or call create() to do so. + /// + //////////////////////////////////////////////////////////// + RenderWindow(); + + //////////////////////////////////////////////////////////// + /// \brief Construct a new window + /// + /// This constructor creates the window with the size and pixel + /// depth defined in \a mode. An optional style can be passed to + /// customize the look and behavior of the window (borders, + /// title bar, resizable, closable, ...). + /// + /// The fourth parameter is an optional structure specifying + /// advanced OpenGL context settings such as antialiasing, + /// depth-buffer bits, etc. You shouldn't care about these + /// parameters for a regular usage of the graphics module. + /// + /// \param mode Video mode to use (defines the width, height and depth of the rendering area of the window) + /// \param title Title of the window + /// \param style %Window style, a bitwise OR combination of sf::Style enumerators + /// \param settings Additional settings for the underlying OpenGL context + /// + //////////////////////////////////////////////////////////// + RenderWindow(VideoMode mode, const String& title, Uint32 style = Style::Default, const ContextSettings& settings = ContextSettings()); + + //////////////////////////////////////////////////////////// + /// \brief Construct the window from an existing control + /// + /// Use this constructor if you want to create an SFML + /// rendering area into an already existing control. + /// + /// The second parameter is an optional structure specifying + /// advanced OpenGL context settings such as antialiasing, + /// depth-buffer bits, etc. You shouldn't care about these + /// parameters for a regular usage of the graphics module. + /// + /// \param handle Platform-specific handle of the control (\a HWND on + /// Windows, \a %Window on Linux/FreeBSD, \a NSWindow on OS X) + /// \param settings Additional settings for the underlying OpenGL context + /// + //////////////////////////////////////////////////////////// + explicit RenderWindow(WindowHandle handle, const ContextSettings& settings = ContextSettings()); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + /// Closes the window and frees all the resources attached to it. + /// + //////////////////////////////////////////////////////////// + virtual ~RenderWindow(); + + //////////////////////////////////////////////////////////// + /// \brief Get the size of the rendering region of the window + /// + /// The size doesn't include the titlebar and borders + /// of the window. + /// + /// \return Size in pixels + /// + //////////////////////////////////////////////////////////// + virtual Vector2u getSize() const; + + //////////////////////////////////////////////////////////// + /// \brief Copy the current contents of the window to an image + /// + /// This is a slow operation, whose main purpose is to make + /// screenshots of the application. If you want to update an + /// image with the contents of the window and then use it for + /// drawing, you should rather use a sf::Texture and its + /// update(Window&) function. + /// You can also draw things directly to a texture with the + /// sf::RenderTexture class. + /// + /// \return Image containing the captured contents + /// + //////////////////////////////////////////////////////////// + Image capture() const; + +protected: + + //////////////////////////////////////////////////////////// + /// \brief Function called after the window has been created + /// + /// This function is called so that derived classes can + /// perform their own specific initialization as soon as + /// the window is created. + /// + //////////////////////////////////////////////////////////// + virtual void onCreate(); + + //////////////////////////////////////////////////////////// + /// \brief Function called after the window has been resized + /// + /// This function is called so that derived classes can + /// perform custom actions when the size of the window changes. + /// + //////////////////////////////////////////////////////////// + virtual void onResize(); + +private: + + //////////////////////////////////////////////////////////// + /// \brief Activate the target for rendering + /// + /// \param active True to make the target active, false to deactivate it + /// + /// \return True if the function succeeded + /// + //////////////////////////////////////////////////////////// + virtual bool activate(bool active); +}; + +} // namespace sf + + +#endif // SFML_RENDERWINDOW_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::RenderWindow +/// \ingroup graphics +/// +/// sf::RenderWindow is the main class of the Graphics module. +/// It defines an OS window that can be painted using the other +/// classes of the graphics module. +/// +/// sf::RenderWindow is derived from sf::Window, thus it inherits +/// all its features: events, window management, OpenGL rendering, +/// etc. See the documentation of sf::Window for a more complete +/// description of all these features, as well as code examples. +/// +/// On top of that, sf::RenderWindow adds more features related to +/// 2D drawing with the graphics module (see its base class +/// sf::RenderTarget for more details). +/// Here is a typical rendering and event loop with a sf::RenderWindow: +/// +/// \code +/// // Declare and create a new render-window +/// sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window"); +/// +/// // Limit the framerate to 60 frames per second (this step is optional) +/// window.setFramerateLimit(60); +/// +/// // The main loop - ends as soon as the window is closed +/// while (window.isOpen()) +/// { +/// // Event processing +/// sf::Event event; +/// while (window.pollEvent(event)) +/// { +/// // Request for closing the window +/// if (event.type == sf::Event::Closed) +/// window.close(); +/// } +/// +/// // Clear the whole window before rendering a new frame +/// window.clear(); +/// +/// // Draw some graphical entities +/// window.draw(sprite); +/// window.draw(circle); +/// window.draw(text); +/// +/// // End the current frame and display its contents on screen +/// window.display(); +/// } +/// \endcode +/// +/// Like sf::Window, sf::RenderWindow is still able to render direct +/// OpenGL stuff. It is even possible to mix together OpenGL calls +/// and regular SFML drawing commands. +/// +/// \code +/// // Create the render window +/// sf::RenderWindow window(sf::VideoMode(800, 600), "SFML OpenGL"); +/// +/// // Create a sprite and a text to display +/// sf::Sprite sprite; +/// sf::Text text; +/// ... +/// +/// // Perform OpenGL initializations +/// glMatrixMode(GL_PROJECTION); +/// ... +/// +/// // Start the rendering loop +/// while (window.isOpen()) +/// { +/// // Process events +/// ... +/// +/// // Draw a background sprite +/// window.pushGLStates(); +/// window.draw(sprite); +/// window.popGLStates(); +/// +/// // Draw a 3D object using OpenGL +/// glBegin(GL_QUADS); +/// glVertex3f(...); +/// ... +/// glEnd(); +/// +/// // Draw text on top of the 3D object +/// window.pushGLStates(); +/// window.draw(text); +/// window.popGLStates(); +/// +/// // Finally, display the rendered frame on screen +/// window.display(); +/// } +/// \endcode +/// +/// \see sf::Window, sf::RenderTarget, sf::RenderTexture, sf::View +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/Shader.hpp b/mcclone/external/sfml23/include/SFML/Graphics/Shader.hpp new file mode 100644 index 0000000..55cc3bb --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/Shader.hpp @@ -0,0 +1,659 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SHADER_HPP +#define SFML_SHADER_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +namespace sf +{ +class InputStream; +class Texture; + +//////////////////////////////////////////////////////////// +/// \brief Shader class (vertex and fragment) +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API Shader : GlResource, NonCopyable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Types of shaders + /// + //////////////////////////////////////////////////////////// + enum Type + { + Vertex, ///< Vertex shader + Fragment ///< Fragment (pixel) shader + }; + + //////////////////////////////////////////////////////////// + /// \brief Special type that can be passed to setParameter, + /// and that represents the texture of the object being drawn + /// + /// \see setParameter(const std::string&, CurrentTextureType) + /// + //////////////////////////////////////////////////////////// + struct CurrentTextureType {}; + + //////////////////////////////////////////////////////////// + /// \brief Represents the texture of the object being drawn + /// + /// \see setParameter(const std::string&, CurrentTextureType) + /// + //////////////////////////////////////////////////////////// + static CurrentTextureType CurrentTexture; + +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// This constructor creates an invalid shader. + /// + //////////////////////////////////////////////////////////// + Shader(); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + //////////////////////////////////////////////////////////// + ~Shader(); + + //////////////////////////////////////////////////////////// + /// \brief Load either the vertex or fragment shader from a file + /// + /// This function loads a single shader, either vertex or + /// fragment, identified by the second argument. + /// The source must be a text file containing a valid + /// shader in GLSL language. GLSL is a C-like language + /// dedicated to OpenGL shaders; you'll probably need to + /// read a good documentation for it before writing your + /// own shaders. + /// + /// \param filename Path of the vertex or fragment shader file to load + /// \param type Type of shader (vertex or fragment) + /// + /// \return True if loading succeeded, false if it failed + /// + /// \see loadFromMemory, loadFromStream + /// + //////////////////////////////////////////////////////////// + bool loadFromFile(const std::string& filename, Type type); + + //////////////////////////////////////////////////////////// + /// \brief Load both the vertex and fragment shaders from files + /// + /// This function loads both the vertex and the fragment + /// shaders. If one of them fails to load, the shader is left + /// empty (the valid shader is unloaded). + /// The sources must be text files containing valid shaders + /// in GLSL language. GLSL is a C-like language dedicated to + /// OpenGL shaders; you'll probably need to read a good documentation + /// for it before writing your own shaders. + /// + /// \param vertexShaderFilename Path of the vertex shader file to load + /// \param fragmentShaderFilename Path of the fragment shader file to load + /// + /// \return True if loading succeeded, false if it failed + /// + /// \see loadFromMemory, loadFromStream + /// + //////////////////////////////////////////////////////////// + bool loadFromFile(const std::string& vertexShaderFilename, const std::string& fragmentShaderFilename); + + //////////////////////////////////////////////////////////// + /// \brief Load either the vertex or fragment shader from a source code in memory + /// + /// This function loads a single shader, either vertex or + /// fragment, identified by the second argument. + /// The source code must be a valid shader in GLSL language. + /// GLSL is a C-like language dedicated to OpenGL shaders; + /// you'll probably need to read a good documentation for + /// it before writing your own shaders. + /// + /// \param shader String containing the source code of the shader + /// \param type Type of shader (vertex or fragment) + /// + /// \return True if loading succeeded, false if it failed + /// + /// \see loadFromFile, loadFromStream + /// + //////////////////////////////////////////////////////////// + bool loadFromMemory(const std::string& shader, Type type); + + //////////////////////////////////////////////////////////// + /// \brief Load both the vertex and fragment shaders from source codes in memory + /// + /// This function loads both the vertex and the fragment + /// shaders. If one of them fails to load, the shader is left + /// empty (the valid shader is unloaded). + /// The sources must be valid shaders in GLSL language. GLSL is + /// a C-like language dedicated to OpenGL shaders; you'll + /// probably need to read a good documentation for it before + /// writing your own shaders. + /// + /// \param vertexShader String containing the source code of the vertex shader + /// \param fragmentShader String containing the source code of the fragment shader + /// + /// \return True if loading succeeded, false if it failed + /// + /// \see loadFromFile, loadFromStream + /// + //////////////////////////////////////////////////////////// + bool loadFromMemory(const std::string& vertexShader, const std::string& fragmentShader); + + //////////////////////////////////////////////////////////// + /// \brief Load either the vertex or fragment shader from a custom stream + /// + /// This function loads a single shader, either vertex or + /// fragment, identified by the second argument. + /// The source code must be a valid shader in GLSL language. + /// GLSL is a C-like language dedicated to OpenGL shaders; + /// you'll probably need to read a good documentation for it + /// before writing your own shaders. + /// + /// \param stream Source stream to read from + /// \param type Type of shader (vertex or fragment) + /// + /// \return True if loading succeeded, false if it failed + /// + /// \see loadFromFile, loadFromMemory + /// + //////////////////////////////////////////////////////////// + bool loadFromStream(InputStream& stream, Type type); + + //////////////////////////////////////////////////////////// + /// \brief Load both the vertex and fragment shaders from custom streams + /// + /// This function loads both the vertex and the fragment + /// shaders. If one of them fails to load, the shader is left + /// empty (the valid shader is unloaded). + /// The source codes must be valid shaders in GLSL language. + /// GLSL is a C-like language dedicated to OpenGL shaders; + /// you'll probably need to read a good documentation for + /// it before writing your own shaders. + /// + /// \param vertexShaderStream Source stream to read the vertex shader from + /// \param fragmentShaderStream Source stream to read the fragment shader from + /// + /// \return True if loading succeeded, false if it failed + /// + /// \see loadFromFile, loadFromMemory + /// + //////////////////////////////////////////////////////////// + bool loadFromStream(InputStream& vertexShaderStream, InputStream& fragmentShaderStream); + + //////////////////////////////////////////////////////////// + /// \brief Change a float parameter of the shader + /// + /// \a name is the name of the variable to change in the shader. + /// The corresponding parameter in the shader must be a float + /// (float GLSL type). + /// + /// Example: + /// \code + /// uniform float myparam; // this is the variable in the shader + /// \endcode + /// \code + /// shader.setParameter("myparam", 5.2f); + /// \endcode + /// + /// \param name Name of the parameter in the shader + /// \param x Value to assign + /// + //////////////////////////////////////////////////////////// + void setParameter(const std::string& name, float x); + + //////////////////////////////////////////////////////////// + /// \brief Change a 2-components vector parameter of the shader + /// + /// \a name is the name of the variable to change in the shader. + /// The corresponding parameter in the shader must be a 2x1 vector + /// (vec2 GLSL type). + /// + /// Example: + /// \code + /// uniform vec2 myparam; // this is the variable in the shader + /// \endcode + /// \code + /// shader.setParameter("myparam", 5.2f, 6.0f); + /// \endcode + /// + /// \param name Name of the parameter in the shader + /// \param x First component of the value to assign + /// \param y Second component of the value to assign + /// + //////////////////////////////////////////////////////////// + void setParameter(const std::string& name, float x, float y); + + //////////////////////////////////////////////////////////// + /// \brief Change a 3-components vector parameter of the shader + /// + /// \a name is the name of the variable to change in the shader. + /// The corresponding parameter in the shader must be a 3x1 vector + /// (vec3 GLSL type). + /// + /// Example: + /// \code + /// uniform vec3 myparam; // this is the variable in the shader + /// \endcode + /// \code + /// shader.setParameter("myparam", 5.2f, 6.0f, -8.1f); + /// \endcode + /// + /// \param name Name of the parameter in the shader + /// \param x First component of the value to assign + /// \param y Second component of the value to assign + /// \param z Third component of the value to assign + /// + //////////////////////////////////////////////////////////// + void setParameter(const std::string& name, float x, float y, float z); + + //////////////////////////////////////////////////////////// + /// \brief Change a 4-components vector parameter of the shader + /// + /// \a name is the name of the variable to change in the shader. + /// The corresponding parameter in the shader must be a 4x1 vector + /// (vec4 GLSL type). + /// + /// Example: + /// \code + /// uniform vec4 myparam; // this is the variable in the shader + /// \endcode + /// \code + /// shader.setParameter("myparam", 5.2f, 6.0f, -8.1f, 0.4f); + /// \endcode + /// + /// \param name Name of the parameter in the shader + /// \param x First component of the value to assign + /// \param y Second component of the value to assign + /// \param z Third component of the value to assign + /// \param w Fourth component of the value to assign + /// + //////////////////////////////////////////////////////////// + void setParameter(const std::string& name, float x, float y, float z, float w); + + //////////////////////////////////////////////////////////// + /// \brief Change a 2-components vector parameter of the shader + /// + /// \a name is the name of the variable to change in the shader. + /// The corresponding parameter in the shader must be a 2x1 vector + /// (vec2 GLSL type). + /// + /// Example: + /// \code + /// uniform vec2 myparam; // this is the variable in the shader + /// \endcode + /// \code + /// shader.setParameter("myparam", sf::Vector2f(5.2f, 6.0f)); + /// \endcode + /// + /// \param name Name of the parameter in the shader + /// \param vector Vector to assign + /// + //////////////////////////////////////////////////////////// + void setParameter(const std::string& name, const Vector2f& vector); + + //////////////////////////////////////////////////////////// + /// \brief Change a 3-components vector parameter of the shader + /// + /// \a name is the name of the variable to change in the shader. + /// The corresponding parameter in the shader must be a 3x1 vector + /// (vec3 GLSL type). + /// + /// Example: + /// \code + /// uniform vec3 myparam; // this is the variable in the shader + /// \endcode + /// \code + /// shader.setParameter("myparam", sf::Vector3f(5.2f, 6.0f, -8.1f)); + /// \endcode + /// + /// \param name Name of the parameter in the shader + /// \param vector Vector to assign + /// + //////////////////////////////////////////////////////////// + void setParameter(const std::string& name, const Vector3f& vector); + + //////////////////////////////////////////////////////////// + /// \brief Change a color parameter of the shader + /// + /// \a name is the name of the variable to change in the shader. + /// The corresponding parameter in the shader must be a 4x1 vector + /// (vec4 GLSL type). + /// + /// It is important to note that the components of the color are + /// normalized before being passed to the shader. Therefore, + /// they are converted from range [0 .. 255] to range [0 .. 1]. + /// For example, a sf::Color(255, 125, 0, 255) will be transformed + /// to a vec4(1.0, 0.5, 0.0, 1.0) in the shader. + /// + /// Example: + /// \code + /// uniform vec4 color; // this is the variable in the shader + /// \endcode + /// \code + /// shader.setParameter("color", sf::Color(255, 128, 0, 255)); + /// \endcode + /// + /// \param name Name of the parameter in the shader + /// \param color Color to assign + /// + //////////////////////////////////////////////////////////// + void setParameter(const std::string& name, const Color& color); + + //////////////////////////////////////////////////////////// + /// \brief Change a matrix parameter of the shader + /// + /// \a name is the name of the variable to change in the shader. + /// The corresponding parameter in the shader must be a 4x4 matrix + /// (mat4 GLSL type). + /// + /// Example: + /// \code + /// uniform mat4 matrix; // this is the variable in the shader + /// \endcode + /// \code + /// sf::Transform transform; + /// transform.translate(5, 10); + /// shader.setParameter("matrix", transform); + /// \endcode + /// + /// \param name Name of the parameter in the shader + /// \param transform Transform to assign + /// + //////////////////////////////////////////////////////////// + void setParameter(const std::string& name, const Transform& transform); + + //////////////////////////////////////////////////////////// + /// \brief Change a texture parameter of the shader + /// + /// \a name is the name of the variable to change in the shader. + /// The corresponding parameter in the shader must be a 2D texture + /// (sampler2D GLSL type). + /// + /// Example: + /// \code + /// uniform sampler2D the_texture; // this is the variable in the shader + /// \endcode + /// \code + /// sf::Texture texture; + /// ... + /// shader.setParameter("the_texture", texture); + /// \endcode + /// It is important to note that \a texture must remain alive as long + /// as the shader uses it, no copy is made internally. + /// + /// To use the texture of the object being draw, which cannot be + /// known in advance, you can pass the special value + /// sf::Shader::CurrentTexture: + /// \code + /// shader.setParameter("the_texture", sf::Shader::CurrentTexture). + /// \endcode + /// + /// \param name Name of the texture in the shader + /// \param texture Texture to assign + /// + //////////////////////////////////////////////////////////// + void setParameter(const std::string& name, const Texture& texture); + + //////////////////////////////////////////////////////////// + /// \brief Change a texture parameter of the shader + /// + /// This overload maps a shader texture variable to the + /// texture of the object being drawn, which cannot be + /// known in advance. The second argument must be + /// sf::Shader::CurrentTexture. + /// The corresponding parameter in the shader must be a 2D texture + /// (sampler2D GLSL type). + /// + /// Example: + /// \code + /// uniform sampler2D current; // this is the variable in the shader + /// \endcode + /// \code + /// shader.setParameter("current", sf::Shader::CurrentTexture); + /// \endcode + /// + /// \param name Name of the texture in the shader + /// + //////////////////////////////////////////////////////////// + void setParameter(const std::string& name, CurrentTextureType); + + //////////////////////////////////////////////////////////// + /// \brief Get the underlying OpenGL handle of the shader. + /// + /// You shouldn't need to use this function, unless you have + /// very specific stuff to implement that SFML doesn't support, + /// or implement a temporary workaround until a bug is fixed. + /// + /// \return OpenGL handle of the shader or 0 if not yet loaded + /// + //////////////////////////////////////////////////////////// + unsigned int getNativeHandle() const; + + //////////////////////////////////////////////////////////// + /// \brief Bind a shader for rendering + /// + /// This function is not part of the graphics API, it mustn't be + /// used when drawing SFML entities. It must be used only if you + /// mix sf::Shader with OpenGL code. + /// + /// \code + /// sf::Shader s1, s2; + /// ... + /// sf::Shader::bind(&s1); + /// // draw OpenGL stuff that use s1... + /// sf::Shader::bind(&s2); + /// // draw OpenGL stuff that use s2... + /// sf::Shader::bind(NULL); + /// // draw OpenGL stuff that use no shader... + /// \endcode + /// + /// \param shader Shader to bind, can be null to use no shader + /// + //////////////////////////////////////////////////////////// + static void bind(const Shader* shader); + + //////////////////////////////////////////////////////////// + /// \brief Tell whether or not the system supports shaders + /// + /// This function should always be called before using + /// the shader features. If it returns false, then + /// any attempt to use sf::Shader will fail. + /// + /// Note: The first call to this function, whether by your + /// code or SFML will result in a context switch. + /// + /// \return True if shaders are supported, false otherwise + /// + //////////////////////////////////////////////////////////// + static bool isAvailable(); + +private: + + //////////////////////////////////////////////////////////// + /// \brief Compile the shader(s) and create the program + /// + /// If one of the arguments is NULL, the corresponding shader + /// is not created. + /// + /// \param vertexShaderCode Source code of the vertex shader + /// \param fragmentShaderCode Source code of the fragment shader + /// + /// \return True on success, false if any error happened + /// + //////////////////////////////////////////////////////////// + bool compile(const char* vertexShaderCode, const char* fragmentShaderCode); + + //////////////////////////////////////////////////////////// + /// \brief Bind all the textures used by the shader + /// + /// This function each texture to a different unit, and + /// updates the corresponding variables in the shader accordingly. + /// + //////////////////////////////////////////////////////////// + void bindTextures() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the location ID of a shader parameter + /// + /// \param name Name of the parameter to search + /// + /// \return Location ID of the parameter, or -1 if not found + /// + //////////////////////////////////////////////////////////// + int getParamLocation(const std::string& name); + + //////////////////////////////////////////////////////////// + // Types + //////////////////////////////////////////////////////////// + typedef std::map TextureTable; + typedef std::map ParamTable; + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + unsigned int m_shaderProgram; ///< OpenGL identifier for the program + int m_currentTexture; ///< Location of the current texture in the shader + TextureTable m_textures; ///< Texture variables in the shader, mapped to their location + ParamTable m_params; ///< Parameters location cache +}; + +} // namespace sf + + +#endif // SFML_SHADER_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Shader +/// \ingroup graphics +/// +/// Shaders are programs written using a specific language, +/// executed directly by the graphics card and allowing +/// to apply real-time operations to the rendered entities. +/// +/// There are two kinds of shaders: +/// \li Vertex shaders, that process vertices +/// \li Fragment (pixel) shaders, that process pixels +/// +/// A sf::Shader can be composed of either a vertex shader +/// alone, a fragment shader alone, or both combined +/// (see the variants of the load functions). +/// +/// Shaders are written in GLSL, which is a C-like +/// language dedicated to OpenGL shaders. You'll probably +/// need to learn its basics before writing your own shaders +/// for SFML. +/// +/// Like any C/C++ program, a shader has its own variables +/// that you can set from your C++ application. sf::Shader +/// handles 5 different types of variables: +/// \li floats +/// \li vectors (2, 3 or 4 components) +/// \li colors +/// \li textures +/// \li transforms (matrices) +/// +/// The value of the variables can be changed at any time +/// with the various overloads of the setParameter function: +/// \code +/// shader.setParameter("offset", 2.f); +/// shader.setParameter("point", 0.5f, 0.8f, 0.3f); +/// shader.setParameter("color", sf::Color(128, 50, 255)); +/// shader.setParameter("matrix", transform); // transform is a sf::Transform +/// shader.setParameter("overlay", texture); // texture is a sf::Texture +/// shader.setParameter("texture", sf::Shader::CurrentTexture); +/// \endcode +/// +/// The special Shader::CurrentTexture argument maps the +/// given texture variable to the current texture of the +/// object being drawn (which cannot be known in advance). +/// +/// To apply a shader to a drawable, you must pass it as an +/// additional parameter to the Draw function: +/// \code +/// window.draw(sprite, &shader); +/// \endcode +/// +/// ... which is in fact just a shortcut for this: +/// \code +/// sf::RenderStates states; +/// states.shader = &shader; +/// window.draw(sprite, states); +/// \endcode +/// +/// In the code above we pass a pointer to the shader, because it may +/// be null (which means "no shader"). +/// +/// Shaders can be used on any drawable, but some combinations are +/// not interesting. For example, using a vertex shader on a sf::Sprite +/// is limited because there are only 4 vertices, the sprite would +/// have to be subdivided in order to apply wave effects. +/// Another bad example is a fragment shader with sf::Text: the texture +/// of the text is not the actual text that you see on screen, it is +/// a big texture containing all the characters of the font in an +/// arbitrary order; thus, texture lookups on pixels other than the +/// current one may not give you the expected result. +/// +/// Shaders can also be used to apply global post-effects to the +/// current contents of the target (like the old sf::PostFx class +/// in SFML 1). This can be done in two different ways: +/// \li draw everything to a sf::RenderTexture, then draw it to +/// the main target using the shader +/// \li draw everything directly to the main target, then use +/// sf::Texture::update(Window&) to copy its contents to a texture +/// and draw it to the main target using the shader +/// +/// The first technique is more optimized because it doesn't involve +/// retrieving the target's pixels to system memory, but the +/// second one doesn't impact the rendering process and can be +/// easily inserted anywhere without impacting all the code. +/// +/// Like sf::Texture that can be used as a raw OpenGL texture, +/// sf::Shader can also be used directly as a raw shader for +/// custom OpenGL geometry. +/// \code +/// sf::Shader::bind(&shader); +/// ... render OpenGL geometry ... +/// sf::Shader::bind(NULL); +/// \endcode +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/Shape.hpp b/mcclone/external/sfml23/include/SFML/Graphics/Shape.hpp new file mode 100644 index 0000000..5983a9d --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/Shape.hpp @@ -0,0 +1,355 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SHAPE_HPP +#define SFML_SHAPE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Base class for textured shapes with outline +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API Shape : public Drawable, public Transformable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Virtual destructor + /// + //////////////////////////////////////////////////////////// + virtual ~Shape(); + + //////////////////////////////////////////////////////////// + /// \brief Change the source texture of the shape + /// + /// The \a texture argument refers to a texture that must + /// exist as long as the shape uses it. Indeed, the shape + /// doesn't store its own copy of the texture, but rather keeps + /// a pointer to the one that you passed to this function. + /// If the source texture is destroyed and the shape tries to + /// use it, the behavior is undefined. + /// \a texture can be NULL to disable texturing. + /// If \a resetRect is true, the TextureRect property of + /// the shape is automatically adjusted to the size of the new + /// texture. If it is false, the texture rect is left unchanged. + /// + /// \param texture New texture + /// \param resetRect Should the texture rect be reset to the size of the new texture? + /// + /// \see getTexture, setTextureRect + /// + //////////////////////////////////////////////////////////// + void setTexture(const Texture* texture, bool resetRect = false); + + //////////////////////////////////////////////////////////// + /// \brief Set the sub-rectangle of the texture that the shape will display + /// + /// The texture rect is useful when you don't want to display + /// the whole texture, but rather a part of it. + /// By default, the texture rect covers the entire texture. + /// + /// \param rect Rectangle defining the region of the texture to display + /// + /// \see getTextureRect, setTexture + /// + //////////////////////////////////////////////////////////// + void setTextureRect(const IntRect& rect); + + //////////////////////////////////////////////////////////// + /// \brief Set the fill color of the shape + /// + /// This color is modulated (multiplied) with the shape's + /// texture if any. It can be used to colorize the shape, + /// or change its global opacity. + /// You can use sf::Color::Transparent to make the inside of + /// the shape transparent, and have the outline alone. + /// By default, the shape's fill color is opaque white. + /// + /// \param color New color of the shape + /// + /// \see getFillColor, setOutlineColor + /// + //////////////////////////////////////////////////////////// + void setFillColor(const Color& color); + + //////////////////////////////////////////////////////////// + /// \brief Set the outline color of the shape + /// + /// By default, the shape's outline color is opaque white. + /// + /// \param color New outline color of the shape + /// + /// \see getOutlineColor, setFillColor + /// + //////////////////////////////////////////////////////////// + void setOutlineColor(const Color& color); + + //////////////////////////////////////////////////////////// + /// \brief Set the thickness of the shape's outline + /// + /// Note that negative values are allowed (so that the outline + /// expands towards the center of the shape), and using zero + /// disables the outline. + /// By default, the outline thickness is 0. + /// + /// \param thickness New outline thickness + /// + /// \see getOutlineThickness + /// + //////////////////////////////////////////////////////////// + void setOutlineThickness(float thickness); + + //////////////////////////////////////////////////////////// + /// \brief Get the source texture of the shape + /// + /// If the shape has no source texture, a NULL pointer is returned. + /// The returned pointer is const, which means that you can't + /// modify the texture when you retrieve it with this function. + /// + /// \return Pointer to the shape's texture + /// + /// \see setTexture + /// + //////////////////////////////////////////////////////////// + const Texture* getTexture() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the sub-rectangle of the texture displayed by the shape + /// + /// \return Texture rectangle of the shape + /// + /// \see setTextureRect + /// + //////////////////////////////////////////////////////////// + const IntRect& getTextureRect() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the fill color of the shape + /// + /// \return Fill color of the shape + /// + /// \see setFillColor + /// + //////////////////////////////////////////////////////////// + const Color& getFillColor() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the outline color of the shape + /// + /// \return Outline color of the shape + /// + /// \see setOutlineColor + /// + //////////////////////////////////////////////////////////// + const Color& getOutlineColor() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the outline thickness of the shape + /// + /// \return Outline thickness of the shape + /// + /// \see setOutlineThickness + /// + //////////////////////////////////////////////////////////// + float getOutlineThickness() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the total number of points of the shape + /// + /// \return Number of points of the shape + /// + /// \see getPoint + /// + //////////////////////////////////////////////////////////// + virtual std::size_t getPointCount() const = 0; + + //////////////////////////////////////////////////////////// + /// \brief Get a point of the shape + /// + /// The returned point is in local coordinates, that is, + /// the shape's transforms (position, rotation, scale) are + /// not taken into account. + /// The result is undefined if \a index is out of the valid range. + /// + /// \param index Index of the point to get, in range [0 .. getPointCount() - 1] + /// + /// \return index-th point of the shape + /// + /// \see getPointCount + /// + //////////////////////////////////////////////////////////// + virtual Vector2f getPoint(std::size_t index) const = 0; + + //////////////////////////////////////////////////////////// + /// \brief Get the local bounding rectangle of the entity + /// + /// The returned rectangle is in local coordinates, which means + /// that it ignores the transformations (translation, rotation, + /// scale, ...) that are applied to the entity. + /// In other words, this function returns the bounds of the + /// entity in the entity's coordinate system. + /// + /// \return Local bounding rectangle of the entity + /// + //////////////////////////////////////////////////////////// + FloatRect getLocalBounds() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the global (non-minimal) bounding rectangle of the entity + /// + /// The returned rectangle is in global coordinates, which means + /// that it takes into account the transformations (translation, + /// rotation, scale, ...) that are applied to the entity. + /// In other words, this function returns the bounds of the + /// shape in the global 2D world's coordinate system. + /// + /// This function does not necessarily return the \a minimal + /// bounding rectangle. It merely ensures that the returned + /// rectangle covers all the vertices (but possibly more). + /// This allows for a fast approximation of the bounds as a + /// first check; you may want to use more precise checks + /// on top of that. + /// + /// \return Global bounding rectangle of the entity + /// + //////////////////////////////////////////////////////////// + FloatRect getGlobalBounds() const; + +protected: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + Shape(); + + //////////////////////////////////////////////////////////// + /// \brief Recompute the internal geometry of the shape + /// + /// This function must be called by the derived class everytime + /// the shape's points change (i.e. the result of either + /// getPointCount or getPoint is different). + /// + //////////////////////////////////////////////////////////// + void update(); + +private: + + //////////////////////////////////////////////////////////// + /// \brief Draw the shape to a render target + /// + /// \param target Render target to draw to + /// \param states Current render states + /// + //////////////////////////////////////////////////////////// + virtual void draw(RenderTarget& target, RenderStates states) const; + + //////////////////////////////////////////////////////////// + /// \brief Update the fill vertices' color + /// + //////////////////////////////////////////////////////////// + void updateFillColors(); + + //////////////////////////////////////////////////////////// + /// \brief Update the fill vertices' texture coordinates + /// + //////////////////////////////////////////////////////////// + void updateTexCoords(); + + //////////////////////////////////////////////////////////// + /// \brief Update the outline vertices' position + /// + //////////////////////////////////////////////////////////// + void updateOutline(); + + //////////////////////////////////////////////////////////// + /// \brief Update the outline vertices' color + /// + //////////////////////////////////////////////////////////// + void updateOutlineColors(); + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + const Texture* m_texture; ///< Texture of the shape + IntRect m_textureRect; ///< Rectangle defining the area of the source texture to display + Color m_fillColor; ///< Fill color + Color m_outlineColor; ///< Outline color + float m_outlineThickness; ///< Thickness of the shape's outline + VertexArray m_vertices; ///< Vertex array containing the fill geometry + VertexArray m_outlineVertices; ///< Vertex array containing the outline geometry + FloatRect m_insideBounds; ///< Bounding rectangle of the inside (fill) + FloatRect m_bounds; ///< Bounding rectangle of the whole shape (outline + fill) +}; + +} // namespace sf + + +#endif // SFML_SHAPE_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Shape +/// \ingroup graphics +/// +/// sf::Shape is a drawable class that allows to define and +/// display a custom convex shape on a render target. +/// It's only an abstract base, it needs to be specialized for +/// concrete types of shapes (circle, rectangle, convex polygon, +/// star, ...). +/// +/// In addition to the attributes provided by the specialized +/// shape classes, a shape always has the following attributes: +/// \li a texture +/// \li a texture rectangle +/// \li a fill color +/// \li an outline color +/// \li an outline thickness +/// +/// Each feature is optional, and can be disabled easily: +/// \li the texture can be null +/// \li the fill/outline colors can be sf::Color::Transparent +/// \li the outline thickness can be zero +/// +/// You can write your own derived shape class, there are only +/// two virtual functions to override: +/// \li getPointCount must return the number of points of the shape +/// \li getPoint must return the points of the shape +/// +/// \see sf::RectangleShape, sf::CircleShape, sf::ConvexShape, sf::Transformable +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/Sprite.hpp b/mcclone/external/sfml23/include/SFML/Graphics/Sprite.hpp new file mode 100644 index 0000000..c7447df --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/Sprite.hpp @@ -0,0 +1,279 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SPRITE_HPP +#define SFML_SPRITE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include + + +namespace sf +{ +class Texture; + +//////////////////////////////////////////////////////////// +/// \brief Drawable representation of a texture, with its +/// own transformations, color, etc. +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API Sprite : public Drawable, public Transformable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// Creates an empty sprite with no source texture. + /// + //////////////////////////////////////////////////////////// + Sprite(); + + //////////////////////////////////////////////////////////// + /// \brief Construct the sprite from a source texture + /// + /// \param texture Source texture + /// + /// \see setTexture + /// + //////////////////////////////////////////////////////////// + explicit Sprite(const Texture& texture); + + //////////////////////////////////////////////////////////// + /// \brief Construct the sprite from a sub-rectangle of a source texture + /// + /// \param texture Source texture + /// \param rectangle Sub-rectangle of the texture to assign to the sprite + /// + /// \see setTexture, setTextureRect + /// + //////////////////////////////////////////////////////////// + Sprite(const Texture& texture, const IntRect& rectangle); + + //////////////////////////////////////////////////////////// + /// \brief Change the source texture of the sprite + /// + /// The \a texture argument refers to a texture that must + /// exist as long as the sprite uses it. Indeed, the sprite + /// doesn't store its own copy of the texture, but rather keeps + /// a pointer to the one that you passed to this function. + /// If the source texture is destroyed and the sprite tries to + /// use it, the behavior is undefined. + /// If \a resetRect is true, the TextureRect property of + /// the sprite is automatically adjusted to the size of the new + /// texture. If it is false, the texture rect is left unchanged. + /// + /// \param texture New texture + /// \param resetRect Should the texture rect be reset to the size of the new texture? + /// + /// \see getTexture, setTextureRect + /// + //////////////////////////////////////////////////////////// + void setTexture(const Texture& texture, bool resetRect = false); + + //////////////////////////////////////////////////////////// + /// \brief Set the sub-rectangle of the texture that the sprite will display + /// + /// The texture rect is useful when you don't want to display + /// the whole texture, but rather a part of it. + /// By default, the texture rect covers the entire texture. + /// + /// \param rectangle Rectangle defining the region of the texture to display + /// + /// \see getTextureRect, setTexture + /// + //////////////////////////////////////////////////////////// + void setTextureRect(const IntRect& rectangle); + + //////////////////////////////////////////////////////////// + /// \brief Set the global color of the sprite + /// + /// This color is modulated (multiplied) with the sprite's + /// texture. It can be used to colorize the sprite, or change + /// its global opacity. + /// By default, the sprite's color is opaque white. + /// + /// \param color New color of the sprite + /// + /// \see getColor + /// + //////////////////////////////////////////////////////////// + void setColor(const Color& color); + + //////////////////////////////////////////////////////////// + /// \brief Get the source texture of the sprite + /// + /// If the sprite has no source texture, a NULL pointer is returned. + /// The returned pointer is const, which means that you can't + /// modify the texture when you retrieve it with this function. + /// + /// \return Pointer to the sprite's texture + /// + /// \see setTexture + /// + //////////////////////////////////////////////////////////// + const Texture* getTexture() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the sub-rectangle of the texture displayed by the sprite + /// + /// \return Texture rectangle of the sprite + /// + /// \see setTextureRect + /// + //////////////////////////////////////////////////////////// + const IntRect& getTextureRect() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the global color of the sprite + /// + /// \return Global color of the sprite + /// + /// \see setColor + /// + //////////////////////////////////////////////////////////// + const Color& getColor() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the local bounding rectangle of the entity + /// + /// The returned rectangle is in local coordinates, which means + /// that it ignores the transformations (translation, rotation, + /// scale, ...) that are applied to the entity. + /// In other words, this function returns the bounds of the + /// entity in the entity's coordinate system. + /// + /// \return Local bounding rectangle of the entity + /// + //////////////////////////////////////////////////////////// + FloatRect getLocalBounds() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the global bounding rectangle of the entity + /// + /// The returned rectangle is in global coordinates, which means + /// that it takes into account the transformations (translation, + /// rotation, scale, ...) that are applied to the entity. + /// In other words, this function returns the bounds of the + /// sprite in the global 2D world's coordinate system. + /// + /// \return Global bounding rectangle of the entity + /// + //////////////////////////////////////////////////////////// + FloatRect getGlobalBounds() const; + +private: + + //////////////////////////////////////////////////////////// + /// \brief Draw the sprite to a render target + /// + /// \param target Render target to draw to + /// \param states Current render states + /// + //////////////////////////////////////////////////////////// + virtual void draw(RenderTarget& target, RenderStates states) const; + + //////////////////////////////////////////////////////////// + /// \brief Update the vertices' positions + /// + //////////////////////////////////////////////////////////// + void updatePositions(); + + //////////////////////////////////////////////////////////// + /// \brief Update the vertices' texture coordinates + /// + //////////////////////////////////////////////////////////// + void updateTexCoords(); + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + Vertex m_vertices[4]; ///< Vertices defining the sprite's geometry + const Texture* m_texture; ///< Texture of the sprite + IntRect m_textureRect; ///< Rectangle defining the area of the source texture to display +}; + +} // namespace sf + + +#endif // SFML_SPRITE_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Sprite +/// \ingroup graphics +/// +/// sf::Sprite is a drawable class that allows to easily display +/// a texture (or a part of it) on a render target. +/// +/// It inherits all the functions from sf::Transformable: +/// position, rotation, scale, origin. It also adds sprite-specific +/// properties such as the texture to use, the part of it to display, +/// and some convenience functions to change the overall color of the +/// sprite, or to get its bounding rectangle. +/// +/// sf::Sprite works in combination with the sf::Texture class, which +/// loads and provides the pixel data of a given texture. +/// +/// The separation of sf::Sprite and sf::Texture allows more flexibility +/// and better performances: indeed a sf::Texture is a heavy resource, +/// and any operation on it is slow (often too slow for real-time +/// applications). On the other side, a sf::Sprite is a lightweight +/// object which can use the pixel data of a sf::Texture and draw +/// it with its own transformation/color/blending attributes. +/// +/// It is important to note that the sf::Sprite instance doesn't +/// copy the texture that it uses, it only keeps a reference to it. +/// Thus, a sf::Texture must not be destroyed while it is +/// used by a sf::Sprite (i.e. never write a function that +/// uses a local sf::Texture instance for creating a sprite). +/// +/// See also the note on coordinates and undistorted rendering in sf::Transformable. +/// +/// Usage example: +/// \code +/// // Declare and load a texture +/// sf::Texture texture; +/// texture.loadFromFile("texture.png"); +/// +/// // Create a sprite +/// sf::Sprite sprite; +/// sprite.setTexture(texture); +/// sprite.setTextureRect(sf::IntRect(10, 10, 50, 30)); +/// sprite.setColor(sf::Color(255, 255, 255, 200)); +/// sprite.setPosition(100, 25); +/// +/// // Draw it +/// window.draw(sprite); +/// \endcode +/// +/// \see sf::Texture, sf::Transformable +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/Text.hpp b/mcclone/external/sfml23/include/SFML/Graphics/Text.hpp new file mode 100644 index 0000000..c31ec61 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/Text.hpp @@ -0,0 +1,372 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_TEXT_HPP +#define SFML_TEXT_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Graphical text that can be drawn to a render target +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API Text : public Drawable, public Transformable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Enumeration of the string drawing styles + /// + //////////////////////////////////////////////////////////// + enum Style + { + Regular = 0, ///< Regular characters, no style + Bold = 1 << 0, ///< Bold characters + Italic = 1 << 1, ///< Italic characters + Underlined = 1 << 2, ///< Underlined characters + StrikeThrough = 1 << 3 ///< Strike through characters + }; + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// Creates an empty text. + /// + //////////////////////////////////////////////////////////// + Text(); + + //////////////////////////////////////////////////////////// + /// \brief Construct the text from a string, font and size + /// + /// Note that if the used font is a bitmap font, it is not + /// scalable, thus not all requested sizes will be available + /// to use. This needs to be taken into consideration when + /// setting the character size. If you need to display text + /// of a certain size, make sure the corresponding bitmap + /// font that supports that size is used. + /// + /// \param string Text assigned to the string + /// \param font Font used to draw the string + /// \param characterSize Base size of characters, in pixels + /// + //////////////////////////////////////////////////////////// + Text(const String& string, const Font& font, unsigned int characterSize = 30); + + //////////////////////////////////////////////////////////// + /// \brief Set the text's string + /// + /// The \a string argument is a sf::String, which can + /// automatically be constructed from standard string types. + /// So, the following calls are all valid: + /// \code + /// text.setString("hello"); + /// text.setString(L"hello"); + /// text.setString(std::string("hello")); + /// text.setString(std::wstring(L"hello")); + /// \endcode + /// A text's string is empty by default. + /// + /// \param string New string + /// + /// \see getString + /// + //////////////////////////////////////////////////////////// + void setString(const String& string); + + //////////////////////////////////////////////////////////// + /// \brief Set the text's font + /// + /// The \a font argument refers to a font that must + /// exist as long as the text uses it. Indeed, the text + /// doesn't store its own copy of the font, but rather keeps + /// a pointer to the one that you passed to this function. + /// If the font is destroyed and the text tries to + /// use it, the behavior is undefined. + /// + /// \param font New font + /// + /// \see getFont + /// + //////////////////////////////////////////////////////////// + void setFont(const Font& font); + + //////////////////////////////////////////////////////////// + /// \brief Set the character size + /// + /// The default size is 30. + /// + /// Note that if the used font is a bitmap font, it is not + /// scalable, thus not all requested sizes will be available + /// to use. This needs to be taken into consideration when + /// setting the character size. If you need to display text + /// of a certain size, make sure the corresponding bitmap + /// font that supports that size is used. + /// + /// \param size New character size, in pixels + /// + /// \see getCharacterSize + /// + //////////////////////////////////////////////////////////// + void setCharacterSize(unsigned int size); + + //////////////////////////////////////////////////////////// + /// \brief Set the text's style + /// + /// You can pass a combination of one or more styles, for + /// example sf::Text::Bold | sf::Text::Italic. + /// The default style is sf::Text::Regular. + /// + /// \param style New style + /// + /// \see getStyle + /// + //////////////////////////////////////////////////////////// + void setStyle(Uint32 style); + + //////////////////////////////////////////////////////////// + /// \brief Set the global color of the text + /// + /// By default, the text's color is opaque white. + /// + /// \param color New color of the text + /// + /// \see getColor + /// + //////////////////////////////////////////////////////////// + void setColor(const Color& color); + + //////////////////////////////////////////////////////////// + /// \brief Get the text's string + /// + /// The returned string is a sf::String, which can automatically + /// be converted to standard string types. So, the following + /// lines of code are all valid: + /// \code + /// sf::String s1 = text.getString(); + /// std::string s2 = text.getString(); + /// std::wstring s3 = text.getString(); + /// \endcode + /// + /// \return Text's string + /// + /// \see setString + /// + //////////////////////////////////////////////////////////// + const String& getString() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the text's font + /// + /// If the text has no font attached, a NULL pointer is returned. + /// The returned pointer is const, which means that you + /// cannot modify the font when you get it from this function. + /// + /// \return Pointer to the text's font + /// + /// \see setFont + /// + //////////////////////////////////////////////////////////// + const Font* getFont() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the character size + /// + /// \return Size of the characters, in pixels + /// + /// \see setCharacterSize + /// + //////////////////////////////////////////////////////////// + unsigned int getCharacterSize() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the text's style + /// + /// \return Text's style + /// + /// \see setStyle + /// + //////////////////////////////////////////////////////////// + Uint32 getStyle() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the global color of the text + /// + /// \return Global color of the text + /// + /// \see setColor + /// + //////////////////////////////////////////////////////////// + const Color& getColor() const; + + //////////////////////////////////////////////////////////// + /// \brief Return the position of the \a index-th character + /// + /// This function computes the visual position of a character + /// from its index in the string. The returned position is + /// in global coordinates (translation, rotation, scale and + /// origin are applied). + /// If \a index is out of range, the position of the end of + /// the string is returned. + /// + /// \param index Index of the character + /// + /// \return Position of the character + /// + //////////////////////////////////////////////////////////// + Vector2f findCharacterPos(std::size_t index) const; + + //////////////////////////////////////////////////////////// + /// \brief Get the local bounding rectangle of the entity + /// + /// The returned rectangle is in local coordinates, which means + /// that it ignores the transformations (translation, rotation, + /// scale, ...) that are applied to the entity. + /// In other words, this function returns the bounds of the + /// entity in the entity's coordinate system. + /// + /// \return Local bounding rectangle of the entity + /// + //////////////////////////////////////////////////////////// + FloatRect getLocalBounds() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the global bounding rectangle of the entity + /// + /// The returned rectangle is in global coordinates, which means + /// that it takes into account the transformations (translation, + /// rotation, scale, ...) that are applied to the entity. + /// In other words, this function returns the bounds of the + /// text in the global 2D world's coordinate system. + /// + /// \return Global bounding rectangle of the entity + /// + //////////////////////////////////////////////////////////// + FloatRect getGlobalBounds() const; + +private: + + //////////////////////////////////////////////////////////// + /// \brief Draw the text to a render target + /// + /// \param target Render target to draw to + /// \param states Current render states + /// + //////////////////////////////////////////////////////////// + virtual void draw(RenderTarget& target, RenderStates states) const; + + //////////////////////////////////////////////////////////// + /// \brief Make sure the text's geometry is updated + /// + /// All the attributes related to rendering are cached, such + /// that the geometry is only updated when necessary. + /// + //////////////////////////////////////////////////////////// + void ensureGeometryUpdate() const; + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + String m_string; ///< String to display + const Font* m_font; ///< Font used to display the string + unsigned int m_characterSize; ///< Base size of characters, in pixels + Uint32 m_style; ///< Text style (see Style enum) + Color m_color; ///< Text color + mutable VertexArray m_vertices; ///< Vertex array containing the text's geometry + mutable FloatRect m_bounds; ///< Bounding rectangle of the text (in local coordinates) + mutable bool m_geometryNeedUpdate; ///< Does the geometry need to be recomputed? +}; + +} // namespace sf + + +#endif // SFML_TEXT_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Text +/// \ingroup graphics +/// +/// sf::Text is a drawable class that allows to easily display +/// some text with custom style and color on a render target. +/// +/// It inherits all the functions from sf::Transformable: +/// position, rotation, scale, origin. It also adds text-specific +/// properties such as the font to use, the character size, +/// the font style (bold, italic, underlined, strike through), the +/// global color and the text to display of course. +/// It also provides convenience functions to calculate the +/// graphical size of the text, or to get the global position +/// of a given character. +/// +/// sf::Text works in combination with the sf::Font class, which +/// loads and provides the glyphs (visual characters) of a given font. +/// +/// The separation of sf::Font and sf::Text allows more flexibility +/// and better performances: indeed a sf::Font is a heavy resource, +/// and any operation on it is slow (often too slow for real-time +/// applications). On the other side, a sf::Text is a lightweight +/// object which can combine the glyphs data and metrics of a sf::Font +/// to display any text on a render target. +/// +/// It is important to note that the sf::Text instance doesn't +/// copy the font that it uses, it only keeps a reference to it. +/// Thus, a sf::Font must not be destructed while it is +/// used by a sf::Text (i.e. never write a function that +/// uses a local sf::Font instance for creating a text). +/// +/// See also the note on coordinates and undistorted rendering in sf::Transformable. +/// +/// Usage example: +/// \code +/// // Declare and load a font +/// sf::Font font; +/// font.loadFromFile("arial.ttf"); +/// +/// // Create a text +/// sf::Text text("hello", font); +/// text.setCharacterSize(30); +/// text.setStyle(sf::Text::Bold); +/// text.setColor(sf::Color::Red); +/// +/// // Draw it +/// window.draw(text); +/// \endcode +/// +/// \see sf::Font, sf::Transformable +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/Texture.hpp b/mcclone/external/sfml23/include/SFML/Graphics/Texture.hpp new file mode 100644 index 0000000..2471531 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/Texture.hpp @@ -0,0 +1,618 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_TEXTURE_HPP +#define SFML_TEXTURE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +namespace sf +{ +class Window; +class RenderTarget; +class RenderTexture; +class InputStream; + +//////////////////////////////////////////////////////////// +/// \brief Image living on the graphics card that can be used for drawing +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API Texture : GlResource +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Types of texture coordinates that can be used for rendering + /// + //////////////////////////////////////////////////////////// + enum CoordinateType + { + Normalized, ///< Texture coordinates in range [0 .. 1] + Pixels ///< Texture coordinates in range [0 .. size] + }; + +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// Creates an empty texture. + /// + //////////////////////////////////////////////////////////// + Texture(); + + //////////////////////////////////////////////////////////// + /// \brief Copy constructor + /// + /// \param copy instance to copy + /// + //////////////////////////////////////////////////////////// + Texture(const Texture& copy); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + //////////////////////////////////////////////////////////// + ~Texture(); + + //////////////////////////////////////////////////////////// + /// \brief Create the texture + /// + /// If this function fails, the texture is left unchanged. + /// + /// \param width Width of the texture + /// \param height Height of the texture + /// + /// \return True if creation was successful + /// + //////////////////////////////////////////////////////////// + bool create(unsigned int width, unsigned int height); + + //////////////////////////////////////////////////////////// + /// \brief Load the texture from a file on disk + /// + /// This function is a shortcut for the following code: + /// \code + /// sf::Image image; + /// image.loadFromFile(filename); + /// texture.loadFromImage(image, area); + /// \endcode + /// + /// The \a area argument can be used to load only a sub-rectangle + /// of the whole image. If you want the entire image then leave + /// the default value (which is an empty IntRect). + /// If the \a area rectangle crosses the bounds of the image, it + /// is adjusted to fit the image size. + /// + /// The maximum size for a texture depends on the graphics + /// driver and can be retrieved with the getMaximumSize function. + /// + /// If this function fails, the texture is left unchanged. + /// + /// \param filename Path of the image file to load + /// \param area Area of the image to load + /// + /// \return True if loading was successful + /// + /// \see loadFromMemory, loadFromStream, loadFromImage + /// + //////////////////////////////////////////////////////////// + bool loadFromFile(const std::string& filename, const IntRect& area = IntRect()); + + //////////////////////////////////////////////////////////// + /// \brief Load the texture from a file in memory + /// + /// This function is a shortcut for the following code: + /// \code + /// sf::Image image; + /// image.loadFromMemory(data, size); + /// texture.loadFromImage(image, area); + /// \endcode + /// + /// The \a area argument can be used to load only a sub-rectangle + /// of the whole image. If you want the entire image then leave + /// the default value (which is an empty IntRect). + /// If the \a area rectangle crosses the bounds of the image, it + /// is adjusted to fit the image size. + /// + /// The maximum size for a texture depends on the graphics + /// driver and can be retrieved with the getMaximumSize function. + /// + /// If this function fails, the texture is left unchanged. + /// + /// \param data Pointer to the file data in memory + /// \param size Size of the data to load, in bytes + /// \param area Area of the image to load + /// + /// \return True if loading was successful + /// + /// \see loadFromFile, loadFromStream, loadFromImage + /// + //////////////////////////////////////////////////////////// + bool loadFromMemory(const void* data, std::size_t size, const IntRect& area = IntRect()); + + //////////////////////////////////////////////////////////// + /// \brief Load the texture from a custom stream + /// + /// This function is a shortcut for the following code: + /// \code + /// sf::Image image; + /// image.loadFromStream(stream); + /// texture.loadFromImage(image, area); + /// \endcode + /// + /// The \a area argument can be used to load only a sub-rectangle + /// of the whole image. If you want the entire image then leave + /// the default value (which is an empty IntRect). + /// If the \a area rectangle crosses the bounds of the image, it + /// is adjusted to fit the image size. + /// + /// The maximum size for a texture depends on the graphics + /// driver and can be retrieved with the getMaximumSize function. + /// + /// If this function fails, the texture is left unchanged. + /// + /// \param stream Source stream to read from + /// \param area Area of the image to load + /// + /// \return True if loading was successful + /// + /// \see loadFromFile, loadFromMemory, loadFromImage + /// + //////////////////////////////////////////////////////////// + bool loadFromStream(InputStream& stream, const IntRect& area = IntRect()); + + //////////////////////////////////////////////////////////// + /// \brief Load the texture from an image + /// + /// The \a area argument can be used to load only a sub-rectangle + /// of the whole image. If you want the entire image then leave + /// the default value (which is an empty IntRect). + /// If the \a area rectangle crosses the bounds of the image, it + /// is adjusted to fit the image size. + /// + /// The maximum size for a texture depends on the graphics + /// driver and can be retrieved with the getMaximumSize function. + /// + /// If this function fails, the texture is left unchanged. + /// + /// \param image Image to load into the texture + /// \param area Area of the image to load + /// + /// \return True if loading was successful + /// + /// \see loadFromFile, loadFromMemory + /// + //////////////////////////////////////////////////////////// + bool loadFromImage(const Image& image, const IntRect& area = IntRect()); + + //////////////////////////////////////////////////////////// + /// \brief Return the size of the texture + /// + /// \return Size in pixels + /// + //////////////////////////////////////////////////////////// + Vector2u getSize() const; + + //////////////////////////////////////////////////////////// + /// \brief Copy the texture pixels to an image + /// + /// This function performs a slow operation that downloads + /// the texture's pixels from the graphics card and copies + /// them to a new image, potentially applying transformations + /// to pixels if necessary (texture may be padded or flipped). + /// + /// \return Image containing the texture's pixels + /// + /// \see loadFromImage + /// + //////////////////////////////////////////////////////////// + Image copyToImage() const; + + //////////////////////////////////////////////////////////// + /// \brief Update the whole texture from an array of pixels + /// + /// The \a pixel array is assumed to have the same size as + /// the \a area rectangle, and to contain 32-bits RGBA pixels. + /// + /// No additional check is performed on the size of the pixel + /// array, passing invalid arguments will lead to an undefined + /// behavior. + /// + /// This function does nothing if \a pixels is null or if the + /// texture was not previously created. + /// + /// \param pixels Array of pixels to copy to the texture + /// + //////////////////////////////////////////////////////////// + void update(const Uint8* pixels); + + //////////////////////////////////////////////////////////// + /// \brief Update a part of the texture from an array of pixels + /// + /// The size of the \a pixel array must match the \a width and + /// \a height arguments, and it must contain 32-bits RGBA pixels. + /// + /// No additional check is performed on the size of the pixel + /// array or the bounds of the area to update, passing invalid + /// arguments will lead to an undefined behavior. + /// + /// This function does nothing if \a pixels is null or if the + /// texture was not previously created. + /// + /// \param pixels Array of pixels to copy to the texture + /// \param width Width of the pixel region contained in \a pixels + /// \param height Height of the pixel region contained in \a pixels + /// \param x X offset in the texture where to copy the source pixels + /// \param y Y offset in the texture where to copy the source pixels + /// + //////////////////////////////////////////////////////////// + void update(const Uint8* pixels, unsigned int width, unsigned int height, unsigned int x, unsigned int y); + + //////////////////////////////////////////////////////////// + /// \brief Update the texture from an image + /// + /// Although the source image can be smaller than the texture, + /// this function is usually used for updating the whole texture. + /// The other overload, which has (x, y) additional arguments, + /// is more convenient for updating a sub-area of the texture. + /// + /// No additional check is performed on the size of the image, + /// passing an image bigger than the texture will lead to an + /// undefined behavior. + /// + /// This function does nothing if the texture was not + /// previously created. + /// + /// \param image Image to copy to the texture + /// + //////////////////////////////////////////////////////////// + void update(const Image& image); + + //////////////////////////////////////////////////////////// + /// \brief Update a part of the texture from an image + /// + /// No additional check is performed on the size of the image, + /// passing an invalid combination of image size and offset + /// will lead to an undefined behavior. + /// + /// This function does nothing if the texture was not + /// previously created. + /// + /// \param image Image to copy to the texture + /// \param x X offset in the texture where to copy the source image + /// \param y Y offset in the texture where to copy the source image + /// + //////////////////////////////////////////////////////////// + void update(const Image& image, unsigned int x, unsigned int y); + + //////////////////////////////////////////////////////////// + /// \brief Update the texture from the contents of a window + /// + /// Although the source window can be smaller than the texture, + /// this function is usually used for updating the whole texture. + /// The other overload, which has (x, y) additional arguments, + /// is more convenient for updating a sub-area of the texture. + /// + /// No additional check is performed on the size of the window, + /// passing a window bigger than the texture will lead to an + /// undefined behavior. + /// + /// This function does nothing if either the texture or the window + /// was not previously created. + /// + /// \param window Window to copy to the texture + /// + //////////////////////////////////////////////////////////// + void update(const Window& window); + + //////////////////////////////////////////////////////////// + /// \brief Update a part of the texture from the contents of a window + /// + /// No additional check is performed on the size of the window, + /// passing an invalid combination of window size and offset + /// will lead to an undefined behavior. + /// + /// This function does nothing if either the texture or the window + /// was not previously created. + /// + /// \param window Window to copy to the texture + /// \param x X offset in the texture where to copy the source window + /// \param y Y offset in the texture where to copy the source window + /// + //////////////////////////////////////////////////////////// + void update(const Window& window, unsigned int x, unsigned int y); + + //////////////////////////////////////////////////////////// + /// \brief Enable or disable the smooth filter + /// + /// When the filter is activated, the texture appears smoother + /// so that pixels are less noticeable. However if you want + /// the texture to look exactly the same as its source file, + /// you should leave it disabled. + /// The smooth filter is disabled by default. + /// + /// \param smooth True to enable smoothing, false to disable it + /// + /// \see isSmooth + /// + //////////////////////////////////////////////////////////// + void setSmooth(bool smooth); + + //////////////////////////////////////////////////////////// + /// \brief Tell whether the smooth filter is enabled or not + /// + /// \return True if smoothing is enabled, false if it is disabled + /// + /// \see setSmooth + /// + //////////////////////////////////////////////////////////// + bool isSmooth() const; + + //////////////////////////////////////////////////////////// + /// \brief Enable or disable repeating + /// + /// Repeating is involved when using texture coordinates + /// outside the texture rectangle [0, 0, width, height]. + /// In this case, if repeat mode is enabled, the whole texture + /// will be repeated as many times as needed to reach the + /// coordinate (for example, if the X texture coordinate is + /// 3 * width, the texture will be repeated 3 times). + /// If repeat mode is disabled, the "extra space" will instead + /// be filled with border pixels. + /// Warning: on very old graphics cards, white pixels may appear + /// when the texture is repeated. With such cards, repeat mode + /// can be used reliably only if the texture has power-of-two + /// dimensions (such as 256x128). + /// Repeating is disabled by default. + /// + /// \param repeated True to repeat the texture, false to disable repeating + /// + /// \see isRepeated + /// + //////////////////////////////////////////////////////////// + void setRepeated(bool repeated); + + //////////////////////////////////////////////////////////// + /// \brief Tell whether the texture is repeated or not + /// + /// \return True if repeat mode is enabled, false if it is disabled + /// + /// \see setRepeated + /// + //////////////////////////////////////////////////////////// + bool isRepeated() const; + + //////////////////////////////////////////////////////////// + /// \brief Overload of assignment operator + /// + /// \param right Instance to assign + /// + /// \return Reference to self + /// + //////////////////////////////////////////////////////////// + Texture& operator =(const Texture& right); + + //////////////////////////////////////////////////////////// + /// \brief Get the underlying OpenGL handle of the texture. + /// + /// You shouldn't need to use this function, unless you have + /// very specific stuff to implement that SFML doesn't support, + /// or implement a temporary workaround until a bug is fixed. + /// + /// \return OpenGL handle of the texture or 0 if not yet created + /// + //////////////////////////////////////////////////////////// + unsigned int getNativeHandle() const; + + //////////////////////////////////////////////////////////// + /// \brief Bind a texture for rendering + /// + /// This function is not part of the graphics API, it mustn't be + /// used when drawing SFML entities. It must be used only if you + /// mix sf::Texture with OpenGL code. + /// + /// \code + /// sf::Texture t1, t2; + /// ... + /// sf::Texture::bind(&t1); + /// // draw OpenGL stuff that use t1... + /// sf::Texture::bind(&t2); + /// // draw OpenGL stuff that use t2... + /// sf::Texture::bind(NULL); + /// // draw OpenGL stuff that use no texture... + /// \endcode + /// + /// The \a coordinateType argument controls how texture + /// coordinates will be interpreted. If Normalized (the default), they + /// must be in range [0 .. 1], which is the default way of handling + /// texture coordinates with OpenGL. If Pixels, they must be given + /// in pixels (range [0 .. size]). This mode is used internally by + /// the graphics classes of SFML, it makes the definition of texture + /// coordinates more intuitive for the high-level API, users don't need + /// to compute normalized values. + /// + /// \param texture Pointer to the texture to bind, can be null to use no texture + /// \param coordinateType Type of texture coordinates to use + /// + //////////////////////////////////////////////////////////// + static void bind(const Texture* texture, CoordinateType coordinateType = Normalized); + + //////////////////////////////////////////////////////////// + /// \brief Get the maximum texture size allowed + /// + /// This maximum size is defined by the graphics driver. + /// You can expect a value of 512 pixels for low-end graphics + /// card, and up to 8192 pixels or more for newer hardware. + /// + /// Note: The first call to this function, whether by your + /// code or SFML will result in a context switch. + /// + /// \return Maximum size allowed for textures, in pixels + /// + //////////////////////////////////////////////////////////// + static unsigned int getMaximumSize(); + +private: + + friend class RenderTexture; + friend class RenderTarget; + + //////////////////////////////////////////////////////////// + /// \brief Get a valid image size according to hardware support + /// + /// This function checks whether the graphics driver supports + /// non power of two sizes or not, and adjusts the size + /// accordingly. + /// The returned size is greater than or equal to the original size. + /// + /// \param size size to convert + /// + /// \return Valid nearest size (greater than or equal to specified size) + /// + //////////////////////////////////////////////////////////// + static unsigned int getValidSize(unsigned int size); + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + Vector2u m_size; ///< Public texture size + Vector2u m_actualSize; ///< Actual texture size (can be greater than public size because of padding) + unsigned int m_texture; ///< Internal texture identifier + bool m_isSmooth; ///< Status of the smooth filter + bool m_isRepeated; ///< Is the texture in repeat mode? + mutable bool m_pixelsFlipped; ///< To work around the inconsistency in Y orientation + bool m_fboAttachment; ///< Is this texture owned by a framebuffer object? + Uint64 m_cacheId; ///< Unique number that identifies the texture to the render target's cache +}; + +} // namespace sf + + +#endif // SFML_TEXTURE_HPP + +//////////////////////////////////////////////////////////// +/// \class sf::Texture +/// \ingroup graphics +/// +/// sf::Texture stores pixels that can be drawn, with a sprite +/// for example. A texture lives in the graphics card memory, +/// therefore it is very fast to draw a texture to a render target, +/// or copy a render target to a texture (the graphics card can +/// access both directly). +/// +/// Being stored in the graphics card memory has some drawbacks. +/// A texture cannot be manipulated as freely as a sf::Image, +/// you need to prepare the pixels first and then upload them +/// to the texture in a single operation (see Texture::update). +/// +/// sf::Texture makes it easy to convert from/to sf::Image, but +/// keep in mind that these calls require transfers between +/// the graphics card and the central memory, therefore they are +/// slow operations. +/// +/// A texture can be loaded from an image, but also directly +/// from a file/memory/stream. The necessary shortcuts are defined +/// so that you don't need an image first for the most common cases. +/// However, if you want to perform some modifications on the pixels +/// before creating the final texture, you can load your file to a +/// sf::Image, do whatever you need with the pixels, and then call +/// Texture::loadFromImage. +/// +/// Since they live in the graphics card memory, the pixels of a texture +/// cannot be accessed without a slow copy first. And they cannot be +/// accessed individually. Therefore, if you need to read the texture's +/// pixels (like for pixel-perfect collisions), it is recommended to +/// store the collision information separately, for example in an array +/// of booleans. +/// +/// Like sf::Image, sf::Texture can handle a unique internal +/// representation of pixels, which is RGBA 32 bits. This means +/// that a pixel must be composed of 8 bits red, green, blue and +/// alpha channels -- just like a sf::Color. +/// +/// Usage example: +/// \code +/// // This example shows the most common use of sf::Texture: +/// // drawing a sprite +/// +/// // Load a texture from a file +/// sf::Texture texture; +/// if (!texture.loadFromFile("texture.png")) +/// return -1; +/// +/// // Assign it to a sprite +/// sf::Sprite sprite; +/// sprite.setTexture(texture); +/// +/// // Draw the textured sprite +/// window.draw(sprite); +/// \endcode +/// +/// \code +/// // This example shows another common use of sf::Texture: +/// // streaming real-time data, like video frames +/// +/// // Create an empty texture +/// sf::Texture texture; +/// if (!texture.create(640, 480)) +/// return -1; +/// +/// // Create a sprite that will display the texture +/// sf::Sprite sprite(texture); +/// +/// while (...) // the main loop +/// { +/// ... +/// +/// // update the texture +/// sf::Uint8* pixels = ...; // get a fresh chunk of pixels (the next frame of a movie, for example) +/// texture.update(pixels); +/// +/// // draw it +/// window.draw(sprite); +/// +/// ... +/// } +/// +/// \endcode +/// +/// Like sf::Shader that can be used as a raw OpenGL shader, +/// sf::Texture can also be used directly as a raw texture for +/// custom OpenGL geometry. +/// \code +/// sf::Texture::bind(&texture); +/// ... render OpenGL geometry ... +/// sf::Texture::bind(NULL); +/// \endcode +/// +/// \see sf::Sprite, sf::Image, sf::RenderTexture +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/Transform.hpp b/mcclone/external/sfml23/include/SFML/Graphics/Transform.hpp new file mode 100644 index 0000000..a555a33 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/Transform.hpp @@ -0,0 +1,450 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_TRANSFORM_HPP +#define SFML_TRANSFORM_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Define a 3x3 transform matrix +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API Transform +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// Creates an identity transform (a transform that does nothing). + /// + //////////////////////////////////////////////////////////// + Transform(); + + //////////////////////////////////////////////////////////// + /// \brief Construct a transform from a 3x3 matrix + /// + /// \param a00 Element (0, 0) of the matrix + /// \param a01 Element (0, 1) of the matrix + /// \param a02 Element (0, 2) of the matrix + /// \param a10 Element (1, 0) of the matrix + /// \param a11 Element (1, 1) of the matrix + /// \param a12 Element (1, 2) of the matrix + /// \param a20 Element (2, 0) of the matrix + /// \param a21 Element (2, 1) of the matrix + /// \param a22 Element (2, 2) of the matrix + /// + //////////////////////////////////////////////////////////// + Transform(float a00, float a01, float a02, + float a10, float a11, float a12, + float a20, float a21, float a22); + + //////////////////////////////////////////////////////////// + /// \brief Return the transform as a 4x4 matrix + /// + /// This function returns a pointer to an array of 16 floats + /// containing the transform elements as a 4x4 matrix, which + /// is directly compatible with OpenGL functions. + /// + /// \code + /// sf::Transform transform = ...; + /// glLoadMatrixf(transform.getMatrix()); + /// \endcode + /// + /// \return Pointer to a 4x4 matrix + /// + //////////////////////////////////////////////////////////// + const float* getMatrix() const; + + //////////////////////////////////////////////////////////// + /// \brief Return the inverse of the transform + /// + /// If the inverse cannot be computed, an identity transform + /// is returned. + /// + /// \return A new transform which is the inverse of self + /// + //////////////////////////////////////////////////////////// + Transform getInverse() const; + + //////////////////////////////////////////////////////////// + /// \brief Transform a 2D point + /// + /// \param x X coordinate of the point to transform + /// \param y Y coordinate of the point to transform + /// + /// \return Transformed point + /// + //////////////////////////////////////////////////////////// + Vector2f transformPoint(float x, float y) const; + + //////////////////////////////////////////////////////////// + /// \brief Transform a 2D point + /// + /// \param point Point to transform + /// + /// \return Transformed point + /// + //////////////////////////////////////////////////////////// + Vector2f transformPoint(const Vector2f& point) const; + + //////////////////////////////////////////////////////////// + /// \brief Transform a rectangle + /// + /// Since SFML doesn't provide support for oriented rectangles, + /// the result of this function is always an axis-aligned + /// rectangle. Which means that if the transform contains a + /// rotation, the bounding rectangle of the transformed rectangle + /// is returned. + /// + /// \param rectangle Rectangle to transform + /// + /// \return Transformed rectangle + /// + //////////////////////////////////////////////////////////// + FloatRect transformRect(const FloatRect& rectangle) const; + + //////////////////////////////////////////////////////////// + /// \brief Combine the current transform with another one + /// + /// The result is a transform that is equivalent to applying + /// *this followed by \a transform. Mathematically, it is + /// equivalent to a matrix multiplication. + /// + /// \param transform Transform to combine with this transform + /// + /// \return Reference to *this + /// + //////////////////////////////////////////////////////////// + Transform& combine(const Transform& transform); + + //////////////////////////////////////////////////////////// + /// \brief Combine the current transform with a translation + /// + /// This function returns a reference to *this, so that calls + /// can be chained. + /// \code + /// sf::Transform transform; + /// transform.translate(100, 200).rotate(45); + /// \endcode + /// + /// \param x Offset to apply on X axis + /// \param y Offset to apply on Y axis + /// + /// \return Reference to *this + /// + /// \see rotate, scale + /// + //////////////////////////////////////////////////////////// + Transform& translate(float x, float y); + + //////////////////////////////////////////////////////////// + /// \brief Combine the current transform with a translation + /// + /// This function returns a reference to *this, so that calls + /// can be chained. + /// \code + /// sf::Transform transform; + /// transform.translate(sf::Vector2f(100, 200)).rotate(45); + /// \endcode + /// + /// \param offset Translation offset to apply + /// + /// \return Reference to *this + /// + /// \see rotate, scale + /// + //////////////////////////////////////////////////////////// + Transform& translate(const Vector2f& offset); + + //////////////////////////////////////////////////////////// + /// \brief Combine the current transform with a rotation + /// + /// This function returns a reference to *this, so that calls + /// can be chained. + /// \code + /// sf::Transform transform; + /// transform.rotate(90).translate(50, 20); + /// \endcode + /// + /// \param angle Rotation angle, in degrees + /// + /// \return Reference to *this + /// + /// \see translate, scale + /// + //////////////////////////////////////////////////////////// + Transform& rotate(float angle); + + //////////////////////////////////////////////////////////// + /// \brief Combine the current transform with a rotation + /// + /// The center of rotation is provided for convenience as a second + /// argument, so that you can build rotations around arbitrary points + /// more easily (and efficiently) than the usual + /// translate(-center).rotate(angle).translate(center). + /// + /// This function returns a reference to *this, so that calls + /// can be chained. + /// \code + /// sf::Transform transform; + /// transform.rotate(90, 8, 3).translate(50, 20); + /// \endcode + /// + /// \param angle Rotation angle, in degrees + /// \param centerX X coordinate of the center of rotation + /// \param centerY Y coordinate of the center of rotation + /// + /// \return Reference to *this + /// + /// \see translate, scale + /// + //////////////////////////////////////////////////////////// + Transform& rotate(float angle, float centerX, float centerY); + + //////////////////////////////////////////////////////////// + /// \brief Combine the current transform with a rotation + /// + /// The center of rotation is provided for convenience as a second + /// argument, so that you can build rotations around arbitrary points + /// more easily (and efficiently) than the usual + /// translate(-center).rotate(angle).translate(center). + /// + /// This function returns a reference to *this, so that calls + /// can be chained. + /// \code + /// sf::Transform transform; + /// transform.rotate(90, sf::Vector2f(8, 3)).translate(sf::Vector2f(50, 20)); + /// \endcode + /// + /// \param angle Rotation angle, in degrees + /// \param center Center of rotation + /// + /// \return Reference to *this + /// + /// \see translate, scale + /// + //////////////////////////////////////////////////////////// + Transform& rotate(float angle, const Vector2f& center); + + //////////////////////////////////////////////////////////// + /// \brief Combine the current transform with a scaling + /// + /// This function returns a reference to *this, so that calls + /// can be chained. + /// \code + /// sf::Transform transform; + /// transform.scale(2, 1).rotate(45); + /// \endcode + /// + /// \param scaleX Scaling factor on the X axis + /// \param scaleY Scaling factor on the Y axis + /// + /// \return Reference to *this + /// + /// \see translate, rotate + /// + //////////////////////////////////////////////////////////// + Transform& scale(float scaleX, float scaleY); + + //////////////////////////////////////////////////////////// + /// \brief Combine the current transform with a scaling + /// + /// The center of scaling is provided for convenience as a second + /// argument, so that you can build scaling around arbitrary points + /// more easily (and efficiently) than the usual + /// translate(-center).scale(factors).translate(center). + /// + /// This function returns a reference to *this, so that calls + /// can be chained. + /// \code + /// sf::Transform transform; + /// transform.scale(2, 1, 8, 3).rotate(45); + /// \endcode + /// + /// \param scaleX Scaling factor on X axis + /// \param scaleY Scaling factor on Y axis + /// \param centerX X coordinate of the center of scaling + /// \param centerY Y coordinate of the center of scaling + /// + /// \return Reference to *this + /// + /// \see translate, rotate + /// + //////////////////////////////////////////////////////////// + Transform& scale(float scaleX, float scaleY, float centerX, float centerY); + + //////////////////////////////////////////////////////////// + /// \brief Combine the current transform with a scaling + /// + /// This function returns a reference to *this, so that calls + /// can be chained. + /// \code + /// sf::Transform transform; + /// transform.scale(sf::Vector2f(2, 1)).rotate(45); + /// \endcode + /// + /// \param factors Scaling factors + /// + /// \return Reference to *this + /// + /// \see translate, rotate + /// + //////////////////////////////////////////////////////////// + Transform& scale(const Vector2f& factors); + + //////////////////////////////////////////////////////////// + /// \brief Combine the current transform with a scaling + /// + /// The center of scaling is provided for convenience as a second + /// argument, so that you can build scaling around arbitrary points + /// more easily (and efficiently) than the usual + /// translate(-center).scale(factors).translate(center). + /// + /// This function returns a reference to *this, so that calls + /// can be chained. + /// \code + /// sf::Transform transform; + /// transform.scale(sf::Vector2f(2, 1), sf::Vector2f(8, 3)).rotate(45); + /// \endcode + /// + /// \param factors Scaling factors + /// \param center Center of scaling + /// + /// \return Reference to *this + /// + /// \see translate, rotate + /// + //////////////////////////////////////////////////////////// + Transform& scale(const Vector2f& factors, const Vector2f& center); + + //////////////////////////////////////////////////////////// + // Static member data + //////////////////////////////////////////////////////////// + static const Transform Identity; ///< The identity transform (does nothing) + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + float m_matrix[16]; ///< 4x4 matrix defining the transformation +}; + +//////////////////////////////////////////////////////////// +/// \relates sf::Transform +/// \brief Overload of binary operator * to combine two transforms +/// +/// This call is equivalent to calling Transform(left).combine(right). +/// +/// \param left Left operand (the first transform) +/// \param right Right operand (the second transform) +/// +/// \return New combined transform +/// +//////////////////////////////////////////////////////////// +SFML_GRAPHICS_API Transform operator *(const Transform& left, const Transform& right); + +//////////////////////////////////////////////////////////// +/// \relates sf::Transform +/// \brief Overload of binary operator *= to combine two transforms +/// +/// This call is equivalent to calling left.combine(right). +/// +/// \param left Left operand (the first transform) +/// \param right Right operand (the second transform) +/// +/// \return The combined transform +/// +//////////////////////////////////////////////////////////// +SFML_GRAPHICS_API Transform& operator *=(Transform& left, const Transform& right); + +//////////////////////////////////////////////////////////// +/// \relates sf::Transform +/// \brief Overload of binary operator * to transform a point +/// +/// This call is equivalent to calling left.transformPoint(right). +/// +/// \param left Left operand (the transform) +/// \param right Right operand (the point to transform) +/// +/// \return New transformed point +/// +//////////////////////////////////////////////////////////// +SFML_GRAPHICS_API Vector2f operator *(const Transform& left, const Vector2f& right); + +} // namespace sf + + +#endif // SFML_TRANSFORM_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Transform +/// \ingroup graphics +/// +/// A sf::Transform specifies how to translate, rotate, scale, +/// shear, project, whatever things. In mathematical terms, it defines +/// how to transform a coordinate system into another. +/// +/// For example, if you apply a rotation transform to a sprite, the +/// result will be a rotated sprite. And anything that is transformed +/// by this rotation transform will be rotated the same way, according +/// to its initial position. +/// +/// Transforms are typically used for drawing. But they can also be +/// used for any computation that requires to transform points between +/// the local and global coordinate systems of an entity (like collision +/// detection). +/// +/// Example: +/// \code +/// // define a translation transform +/// sf::Transform translation; +/// translation.translate(20, 50); +/// +/// // define a rotation transform +/// sf::Transform rotation; +/// rotation.rotate(45); +/// +/// // combine them +/// sf::Transform transform = translation * rotation; +/// +/// // use the result to transform stuff... +/// sf::Vector2f point = transform.transformPoint(10, 20); +/// sf::FloatRect rect = transform.transformRect(sf::FloatRect(0, 0, 10, 100)); +/// \endcode +/// +/// \see sf::Transformable, sf::RenderStates +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/Transformable.hpp b/mcclone/external/sfml23/include/SFML/Graphics/Transformable.hpp new file mode 100644 index 0000000..e4b86cf --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/Transformable.hpp @@ -0,0 +1,429 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_TRANSFORMABLE_HPP +#define SFML_TRANSFORMABLE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Decomposed transform defined by a position, a rotation and a scale +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API Transformable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + Transformable(); + + //////////////////////////////////////////////////////////// + /// \brief Virtual destructor + /// + //////////////////////////////////////////////////////////// + virtual ~Transformable(); + + //////////////////////////////////////////////////////////// + /// \brief set the position of the object + /// + /// This function completely overwrites the previous position. + /// See the move function to apply an offset based on the previous position instead. + /// The default position of a transformable object is (0, 0). + /// + /// \param x X coordinate of the new position + /// \param y Y coordinate of the new position + /// + /// \see move, getPosition + /// + //////////////////////////////////////////////////////////// + void setPosition(float x, float y); + + //////////////////////////////////////////////////////////// + /// \brief set the position of the object + /// + /// This function completely overwrites the previous position. + /// See the move function to apply an offset based on the previous position instead. + /// The default position of a transformable object is (0, 0). + /// + /// \param position New position + /// + /// \see move, getPosition + /// + //////////////////////////////////////////////////////////// + void setPosition(const Vector2f& position); + + //////////////////////////////////////////////////////////// + /// \brief set the orientation of the object + /// + /// This function completely overwrites the previous rotation. + /// See the rotate function to add an angle based on the previous rotation instead. + /// The default rotation of a transformable object is 0. + /// + /// \param angle New rotation, in degrees + /// + /// \see rotate, getRotation + /// + //////////////////////////////////////////////////////////// + void setRotation(float angle); + + //////////////////////////////////////////////////////////// + /// \brief set the scale factors of the object + /// + /// This function completely overwrites the previous scale. + /// See the scale function to add a factor based on the previous scale instead. + /// The default scale of a transformable object is (1, 1). + /// + /// \param factorX New horizontal scale factor + /// \param factorY New vertical scale factor + /// + /// \see scale, getScale + /// + //////////////////////////////////////////////////////////// + void setScale(float factorX, float factorY); + + //////////////////////////////////////////////////////////// + /// \brief set the scale factors of the object + /// + /// This function completely overwrites the previous scale. + /// See the scale function to add a factor based on the previous scale instead. + /// The default scale of a transformable object is (1, 1). + /// + /// \param factors New scale factors + /// + /// \see scale, getScale + /// + //////////////////////////////////////////////////////////// + void setScale(const Vector2f& factors); + + //////////////////////////////////////////////////////////// + /// \brief set the local origin of the object + /// + /// The origin of an object defines the center point for + /// all transformations (position, scale, rotation). + /// The coordinates of this point must be relative to the + /// top-left corner of the object, and ignore all + /// transformations (position, scale, rotation). + /// The default origin of a transformable object is (0, 0). + /// + /// \param x X coordinate of the new origin + /// \param y Y coordinate of the new origin + /// + /// \see getOrigin + /// + //////////////////////////////////////////////////////////// + void setOrigin(float x, float y); + + //////////////////////////////////////////////////////////// + /// \brief set the local origin of the object + /// + /// The origin of an object defines the center point for + /// all transformations (position, scale, rotation). + /// The coordinates of this point must be relative to the + /// top-left corner of the object, and ignore all + /// transformations (position, scale, rotation). + /// The default origin of a transformable object is (0, 0). + /// + /// \param origin New origin + /// + /// \see getOrigin + /// + //////////////////////////////////////////////////////////// + void setOrigin(const Vector2f& origin); + + //////////////////////////////////////////////////////////// + /// \brief get the position of the object + /// + /// \return Current position + /// + /// \see setPosition + /// + //////////////////////////////////////////////////////////// + const Vector2f& getPosition() const; + + //////////////////////////////////////////////////////////// + /// \brief get the orientation of the object + /// + /// The rotation is always in the range [0, 360]. + /// + /// \return Current rotation, in degrees + /// + /// \see setRotation + /// + //////////////////////////////////////////////////////////// + float getRotation() const; + + //////////////////////////////////////////////////////////// + /// \brief get the current scale of the object + /// + /// \return Current scale factors + /// + /// \see setScale + /// + //////////////////////////////////////////////////////////// + const Vector2f& getScale() const; + + //////////////////////////////////////////////////////////// + /// \brief get the local origin of the object + /// + /// \return Current origin + /// + /// \see setOrigin + /// + //////////////////////////////////////////////////////////// + const Vector2f& getOrigin() const; + + //////////////////////////////////////////////////////////// + /// \brief Move the object by a given offset + /// + /// This function adds to the current position of the object, + /// unlike setPosition which overwrites it. + /// Thus, it is equivalent to the following code: + /// \code + /// sf::Vector2f pos = object.getPosition(); + /// object.setPosition(pos.x + offsetX, pos.y + offsetY); + /// \endcode + /// + /// \param offsetX X offset + /// \param offsetY Y offset + /// + /// \see setPosition + /// + //////////////////////////////////////////////////////////// + void move(float offsetX, float offsetY); + + //////////////////////////////////////////////////////////// + /// \brief Move the object by a given offset + /// + /// This function adds to the current position of the object, + /// unlike setPosition which overwrites it. + /// Thus, it is equivalent to the following code: + /// \code + /// object.setPosition(object.getPosition() + offset); + /// \endcode + /// + /// \param offset Offset + /// + /// \see setPosition + /// + //////////////////////////////////////////////////////////// + void move(const Vector2f& offset); + + //////////////////////////////////////////////////////////// + /// \brief Rotate the object + /// + /// This function adds to the current rotation of the object, + /// unlike setRotation which overwrites it. + /// Thus, it is equivalent to the following code: + /// \code + /// object.setRotation(object.getRotation() + angle); + /// \endcode + /// + /// \param angle Angle of rotation, in degrees + /// + //////////////////////////////////////////////////////////// + void rotate(float angle); + + //////////////////////////////////////////////////////////// + /// \brief Scale the object + /// + /// This function multiplies the current scale of the object, + /// unlike setScale which overwrites it. + /// Thus, it is equivalent to the following code: + /// \code + /// sf::Vector2f scale = object.getScale(); + /// object.setScale(scale.x * factorX, scale.y * factorY); + /// \endcode + /// + /// \param factorX Horizontal scale factor + /// \param factorY Vertical scale factor + /// + /// \see setScale + /// + //////////////////////////////////////////////////////////// + void scale(float factorX, float factorY); + + //////////////////////////////////////////////////////////// + /// \brief Scale the object + /// + /// This function multiplies the current scale of the object, + /// unlike setScale which overwrites it. + /// Thus, it is equivalent to the following code: + /// \code + /// sf::Vector2f scale = object.getScale(); + /// object.setScale(scale.x * factor.x, scale.y * factor.y); + /// \endcode + /// + /// \param factor Scale factors + /// + /// \see setScale + /// + //////////////////////////////////////////////////////////// + void scale(const Vector2f& factor); + + //////////////////////////////////////////////////////////// + /// \brief get the combined transform of the object + /// + /// \return Transform combining the position/rotation/scale/origin of the object + /// + /// \see getInverseTransform + /// + //////////////////////////////////////////////////////////// + const Transform& getTransform() const; + + //////////////////////////////////////////////////////////// + /// \brief get the inverse of the combined transform of the object + /// + /// \return Inverse of the combined transformations applied to the object + /// + /// \see getTransform + /// + //////////////////////////////////////////////////////////// + const Transform& getInverseTransform() const; + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + Vector2f m_origin; ///< Origin of translation/rotation/scaling of the object + Vector2f m_position; ///< Position of the object in the 2D world + float m_rotation; ///< Orientation of the object, in degrees + Vector2f m_scale; ///< Scale of the object + mutable Transform m_transform; ///< Combined transformation of the object + mutable bool m_transformNeedUpdate; ///< Does the transform need to be recomputed? + mutable Transform m_inverseTransform; ///< Combined transformation of the object + mutable bool m_inverseTransformNeedUpdate; ///< Does the transform need to be recomputed? +}; + +} // namespace sf + + +#endif // SFML_TRANSFORMABLE_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Transformable +/// \ingroup graphics +/// +/// This class is provided for convenience, on top of sf::Transform. +/// +/// sf::Transform, as a low-level class, offers a great level of +/// flexibility but it is not always convenient to manage. Indeed, +/// one can easily combine any kind of operation, such as a translation +/// followed by a rotation followed by a scaling, but once the result +/// transform is built, there's no way to go backward and, let's say, +/// change only the rotation without modifying the translation and scaling. +/// The entire transform must be recomputed, which means that you +/// need to retrieve the initial translation and scale factors as +/// well, and combine them the same way you did before updating the +/// rotation. This is a tedious operation, and it requires to store +/// all the individual components of the final transform. +/// +/// That's exactly what sf::Transformable was written for: it hides +/// these variables and the composed transform behind an easy to use +/// interface. You can set or get any of the individual components +/// without worrying about the others. It also provides the composed +/// transform (as a sf::Transform), and keeps it up-to-date. +/// +/// In addition to the position, rotation and scale, sf::Transformable +/// provides an "origin" component, which represents the local origin +/// of the three other components. Let's take an example with a 10x10 +/// pixels sprite. By default, the sprite is positioned/rotated/scaled +/// relatively to its top-left corner, because it is the local point +/// (0, 0). But if we change the origin to be (5, 5), the sprite will +/// be positioned/rotated/scaled around its center instead. And if +/// we set the origin to (10, 10), it will be transformed around its +/// bottom-right corner. +/// +/// To keep the sf::Transformable class simple, there's only one +/// origin for all the components. You cannot position the sprite +/// relatively to its top-left corner while rotating it around its +/// center, for example. To do such things, use sf::Transform directly. +/// +/// sf::Transformable can be used as a base class. It is often +/// combined with sf::Drawable -- that's what SFML's sprites, +/// texts and shapes do. +/// \code +/// class MyEntity : public sf::Transformable, public sf::Drawable +/// { +/// virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const +/// { +/// states.transform *= getTransform(); +/// target.draw(..., states); +/// } +/// }; +/// +/// MyEntity entity; +/// entity.setPosition(10, 20); +/// entity.setRotation(45); +/// window.draw(entity); +/// \endcode +/// +/// It can also be used as a member, if you don't want to use +/// its API directly (because you don't need all its functions, +/// or you have different naming conventions for example). +/// \code +/// class MyEntity +/// { +/// public: +/// void SetPosition(const MyVector& v) +/// { +/// myTransform.setPosition(v.x(), v.y()); +/// } +/// +/// void Draw(sf::RenderTarget& target) const +/// { +/// target.draw(..., myTransform.getTransform()); +/// } +/// +/// private: +/// sf::Transformable myTransform; +/// }; +/// \endcode +/// +/// A note on coordinates and undistorted rendering: \n +/// By default, SFML (or more exactly, OpenGL) may interpolate drawable objects +/// such as sprites or texts when rendering. While this allows transitions +/// like slow movements or rotations to appear smoothly, it can lead to +/// unwanted results in some cases, for example blurred or distorted objects. +/// In order to render a sf::Drawable object pixel-perfectly, make sure +/// the involved coordinates allow a 1:1 mapping of pixels in the window +/// to texels (pixels in the texture). More specifically, this means: +/// * The object's position, origin and scale have no fractional part +/// * The object's and the view's rotation are a multiple of 90 degrees +/// * The view's center and size have no fractional part +/// +/// \see sf::Transform +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/Vertex.hpp b/mcclone/external/sfml23/include/SFML/Graphics/Vertex.hpp new file mode 100644 index 0000000..2509976 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/Vertex.hpp @@ -0,0 +1,148 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_VERTEX_HPP +#define SFML_VERTEX_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Define a point with color and texture coordinates +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API Vertex +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + Vertex(); + + //////////////////////////////////////////////////////////// + /// \brief Construct the vertex from its position + /// + /// The vertex color is white and texture coordinates are (0, 0). + /// + /// \param thePosition Vertex position + /// + //////////////////////////////////////////////////////////// + Vertex(const Vector2f& thePosition); + + //////////////////////////////////////////////////////////// + /// \brief Construct the vertex from its position and color + /// + /// The texture coordinates are (0, 0). + /// + /// \param thePosition Vertex position + /// \param theColor Vertex color + /// + //////////////////////////////////////////////////////////// + Vertex(const Vector2f& thePosition, const Color& theColor); + + //////////////////////////////////////////////////////////// + /// \brief Construct the vertex from its position and texture coordinates + /// + /// The vertex color is white. + /// + /// \param thePosition Vertex position + /// \param theTexCoords Vertex texture coordinates + /// + //////////////////////////////////////////////////////////// + Vertex(const Vector2f& thePosition, const Vector2f& theTexCoords); + + //////////////////////////////////////////////////////////// + /// \brief Construct the vertex from its position, color and texture coordinates + /// + /// \param thePosition Vertex position + /// \param theColor Vertex color + /// \param theTexCoords Vertex texture coordinates + /// + //////////////////////////////////////////////////////////// + Vertex(const Vector2f& thePosition, const Color& theColor, const Vector2f& theTexCoords); + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + Vector2f position; ///< 2D position of the vertex + Color color; ///< Color of the vertex + Vector2f texCoords; ///< Coordinates of the texture's pixel to map to the vertex +}; + +} // namespace sf + + +#endif // SFML_VERTEX_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Vertex +/// \ingroup graphics +/// +/// A vertex is an improved point. It has a position and other +/// extra attributes that will be used for drawing: in SFML, +/// vertices also have a color and a pair of texture coordinates. +/// +/// The vertex is the building block of drawing. Everything which +/// is visible on screen is made of vertices. They are grouped +/// as 2D primitives (triangles, quads, ...), and these primitives +/// are grouped to create even more complex 2D entities such as +/// sprites, texts, etc. +/// +/// If you use the graphical entities of SFML (sprite, text, shape) +/// you won't have to deal with vertices directly. But if you want +/// to define your own 2D entities, such as tiled maps or particle +/// systems, using vertices will allow you to get maximum performances. +/// +/// Example: +/// \code +/// // define a 100x100 square, red, with a 10x10 texture mapped on it +/// sf::Vertex vertices[] = +/// { +/// sf::Vertex(sf::Vector2f( 0, 0), sf::Color::Red, sf::Vector2f( 0, 0)), +/// sf::Vertex(sf::Vector2f( 0, 100), sf::Color::Red, sf::Vector2f( 0, 10)), +/// sf::Vertex(sf::Vector2f(100, 100), sf::Color::Red, sf::Vector2f(10, 10)), +/// sf::Vertex(sf::Vector2f(100, 0), sf::Color::Red, sf::Vector2f(10, 0)) +/// }; +/// +/// // draw it +/// window.draw(vertices, 4, sf::Quads); +/// \endcode +/// +/// Note: although texture coordinates are supposed to be an integer +/// amount of pixels, their type is float because of some buggy graphics +/// drivers that are not able to process integer coordinates correctly. +/// +/// \see sf::VertexArray +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/VertexArray.hpp b/mcclone/external/sfml23/include/SFML/Graphics/VertexArray.hpp new file mode 100644 index 0000000..f0820a5 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/VertexArray.hpp @@ -0,0 +1,223 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_VERTEXARRAY_HPP +#define SFML_VERTEXARRAY_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Define a set of one or more 2D primitives +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API VertexArray : public Drawable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// Creates an empty vertex array. + /// + //////////////////////////////////////////////////////////// + VertexArray(); + + //////////////////////////////////////////////////////////// + /// \brief Construct the vertex array with a type and an initial number of vertices + /// + /// \param type Type of primitives + /// \param vertexCount Initial number of vertices in the array + /// + //////////////////////////////////////////////////////////// + explicit VertexArray(PrimitiveType type, std::size_t vertexCount = 0); + + //////////////////////////////////////////////////////////// + /// \brief Return the vertex count + /// + /// \return Number of vertices in the array + /// + //////////////////////////////////////////////////////////// + std::size_t getVertexCount() const; + + //////////////////////////////////////////////////////////// + /// \brief Get a read-write access to a vertex by its index + /// + /// This function doesn't check \a index, it must be in range + /// [0, getVertexCount() - 1]. The behavior is undefined + /// otherwise. + /// + /// \param index Index of the vertex to get + /// + /// \return Reference to the index-th vertex + /// + /// \see getVertexCount + /// + //////////////////////////////////////////////////////////// + Vertex& operator [](std::size_t index); + + //////////////////////////////////////////////////////////// + /// \brief Get a read-only access to a vertex by its index + /// + /// This function doesn't check \a index, it must be in range + /// [0, getVertexCount() - 1]. The behavior is undefined + /// otherwise. + /// + /// \param index Index of the vertex to get + /// + /// \return Const reference to the index-th vertex + /// + /// \see getVertexCount + /// + //////////////////////////////////////////////////////////// + const Vertex& operator [](std::size_t index) const; + + //////////////////////////////////////////////////////////// + /// \brief Clear the vertex array + /// + /// This function removes all the vertices from the array. + /// It doesn't deallocate the corresponding memory, so that + /// adding new vertices after clearing doesn't involve + /// reallocating all the memory. + /// + //////////////////////////////////////////////////////////// + void clear(); + + //////////////////////////////////////////////////////////// + /// \brief Resize the vertex array + /// + /// If \a vertexCount is greater than the current size, the previous + /// vertices are kept and new (default-constructed) vertices are + /// added. + /// If \a vertexCount is less than the current size, existing vertices + /// are removed from the array. + /// + /// \param vertexCount New size of the array (number of vertices) + /// + //////////////////////////////////////////////////////////// + void resize(std::size_t vertexCount); + + //////////////////////////////////////////////////////////// + /// \brief Add a vertex to the array + /// + /// \param vertex Vertex to add + /// + //////////////////////////////////////////////////////////// + void append(const Vertex& vertex); + + //////////////////////////////////////////////////////////// + /// \brief Set the type of primitives to draw + /// + /// This function defines how the vertices must be interpreted + /// when it's time to draw them: + /// \li As points + /// \li As lines + /// \li As triangles + /// \li As quads + /// The default primitive type is sf::Points. + /// + /// \param type Type of primitive + /// + //////////////////////////////////////////////////////////// + void setPrimitiveType(PrimitiveType type); + + //////////////////////////////////////////////////////////// + /// \brief Get the type of primitives drawn by the vertex array + /// + /// \return Primitive type + /// + //////////////////////////////////////////////////////////// + PrimitiveType getPrimitiveType() const; + + //////////////////////////////////////////////////////////// + /// \brief Compute the bounding rectangle of the vertex array + /// + /// This function returns the minimal axis-aligned rectangle + /// that contains all the vertices of the array. + /// + /// \return Bounding rectangle of the vertex array + /// + //////////////////////////////////////////////////////////// + FloatRect getBounds() const; + +private: + + //////////////////////////////////////////////////////////// + /// \brief Draw the vertex array to a render target + /// + /// \param target Render target to draw to + /// \param states Current render states + /// + //////////////////////////////////////////////////////////// + virtual void draw(RenderTarget& target, RenderStates states) const; + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + std::vector m_vertices; ///< Vertices contained in the array + PrimitiveType m_primitiveType; ///< Type of primitives to draw +}; + +} // namespace sf + + +#endif // SFML_VERTEXARRAY_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::VertexArray +/// \ingroup graphics +/// +/// sf::VertexArray is a very simple wrapper around a dynamic +/// array of vertices and a primitives type. +/// +/// It inherits sf::Drawable, but unlike other drawables it +/// is not transformable. +/// +/// Example: +/// \code +/// sf::VertexArray lines(sf::LinesStrip, 4); +/// lines[0].position = sf::Vector2f(10, 0); +/// lines[1].position = sf::Vector2f(20, 0); +/// lines[2].position = sf::Vector2f(30, 5); +/// lines[3].position = sf::Vector2f(40, 2); +/// +/// window.draw(lines); +/// \endcode +/// +/// \see sf::Vertex +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Graphics/View.hpp b/mcclone/external/sfml23/include/SFML/Graphics/View.hpp new file mode 100644 index 0000000..4bd62d8 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Graphics/View.hpp @@ -0,0 +1,343 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_VIEW_HPP +#define SFML_VIEW_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief 2D camera that defines what region is shown on screen +/// +//////////////////////////////////////////////////////////// +class SFML_GRAPHICS_API View +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// This constructor creates a default view of (0, 0, 1000, 1000) + /// + //////////////////////////////////////////////////////////// + View(); + + //////////////////////////////////////////////////////////// + /// \brief Construct the view from a rectangle + /// + /// \param rectangle Rectangle defining the zone to display + /// + //////////////////////////////////////////////////////////// + explicit View(const FloatRect& rectangle); + + //////////////////////////////////////////////////////////// + /// \brief Construct the view from its center and size + /// + /// \param center Center of the zone to display + /// \param size Size of zone to display + /// + //////////////////////////////////////////////////////////// + View(const Vector2f& center, const Vector2f& size); + + //////////////////////////////////////////////////////////// + /// \brief Set the center of the view + /// + /// \param x X coordinate of the new center + /// \param y Y coordinate of the new center + /// + /// \see setSize, getCenter + /// + //////////////////////////////////////////////////////////// + void setCenter(float x, float y); + + //////////////////////////////////////////////////////////// + /// \brief Set the center of the view + /// + /// \param center New center + /// + /// \see setSize, getCenter + /// + //////////////////////////////////////////////////////////// + void setCenter(const Vector2f& center); + + //////////////////////////////////////////////////////////// + /// \brief Set the size of the view + /// + /// \param width New width of the view + /// \param height New height of the view + /// + /// \see setCenter, getCenter + /// + //////////////////////////////////////////////////////////// + void setSize(float width, float height); + + //////////////////////////////////////////////////////////// + /// \brief Set the size of the view + /// + /// \param size New size + /// + /// \see setCenter, getCenter + /// + //////////////////////////////////////////////////////////// + void setSize(const Vector2f& size); + + //////////////////////////////////////////////////////////// + /// \brief Set the orientation of the view + /// + /// The default rotation of a view is 0 degree. + /// + /// \param angle New angle, in degrees + /// + /// \see getRotation + /// + //////////////////////////////////////////////////////////// + void setRotation(float angle); + + //////////////////////////////////////////////////////////// + /// \brief Set the target viewport + /// + /// The viewport is the rectangle into which the contents of the + /// view are displayed, expressed as a factor (between 0 and 1) + /// of the size of the RenderTarget to which the view is applied. + /// For example, a view which takes the left side of the target would + /// be defined with View.setViewport(sf::FloatRect(0, 0, 0.5, 1)). + /// By default, a view has a viewport which covers the entire target. + /// + /// \param viewport New viewport rectangle + /// + /// \see getViewport + /// + //////////////////////////////////////////////////////////// + void setViewport(const FloatRect& viewport); + + //////////////////////////////////////////////////////////// + /// \brief Reset the view to the given rectangle + /// + /// Note that this function resets the rotation angle to 0. + /// + /// \param rectangle Rectangle defining the zone to display + /// + /// \see setCenter, setSize, setRotation + /// + //////////////////////////////////////////////////////////// + void reset(const FloatRect& rectangle); + + //////////////////////////////////////////////////////////// + /// \brief Get the center of the view + /// + /// \return Center of the view + /// + /// \see getSize, setCenter + /// + //////////////////////////////////////////////////////////// + const Vector2f& getCenter() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the size of the view + /// + /// \return Size of the view + /// + /// \see getCenter, setSize + /// + //////////////////////////////////////////////////////////// + const Vector2f& getSize() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the current orientation of the view + /// + /// \return Rotation angle of the view, in degrees + /// + /// \see setRotation + /// + //////////////////////////////////////////////////////////// + float getRotation() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the target viewport rectangle of the view + /// + /// \return Viewport rectangle, expressed as a factor of the target size + /// + /// \see setViewport + /// + //////////////////////////////////////////////////////////// + const FloatRect& getViewport() const; + + //////////////////////////////////////////////////////////// + /// \brief Move the view relatively to its current position + /// + /// \param offsetX X coordinate of the move offset + /// \param offsetY Y coordinate of the move offset + /// + /// \see setCenter, rotate, zoom + /// + //////////////////////////////////////////////////////////// + void move(float offsetX, float offsetY); + + //////////////////////////////////////////////////////////// + /// \brief Move the view relatively to its current position + /// + /// \param offset Move offset + /// + /// \see setCenter, rotate, zoom + /// + //////////////////////////////////////////////////////////// + void move(const Vector2f& offset); + + //////////////////////////////////////////////////////////// + /// \brief Rotate the view relatively to its current orientation + /// + /// \param angle Angle to rotate, in degrees + /// + /// \see setRotation, move, zoom + /// + //////////////////////////////////////////////////////////// + void rotate(float angle); + + //////////////////////////////////////////////////////////// + /// \brief Resize the view rectangle relatively to its current size + /// + /// Resizing the view simulates a zoom, as the zone displayed on + /// screen grows or shrinks. + /// \a factor is a multiplier: + /// \li 1 keeps the size unchanged + /// \li > 1 makes the view bigger (objects appear smaller) + /// \li < 1 makes the view smaller (objects appear bigger) + /// + /// \param factor Zoom factor to apply + /// + /// \see setSize, move, rotate + /// + //////////////////////////////////////////////////////////// + void zoom(float factor); + + //////////////////////////////////////////////////////////// + /// \brief Get the projection transform of the view + /// + /// This function is meant for internal use only. + /// + /// \return Projection transform defining the view + /// + /// \see getInverseTransform + /// + //////////////////////////////////////////////////////////// + const Transform& getTransform() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the inverse projection transform of the view + /// + /// This function is meant for internal use only. + /// + /// \return Inverse of the projection transform defining the view + /// + /// \see getTransform + /// + //////////////////////////////////////////////////////////// + const Transform& getInverseTransform() const; + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + Vector2f m_center; ///< Center of the view, in scene coordinates + Vector2f m_size; ///< Size of the view, in scene coordinates + float m_rotation; ///< Angle of rotation of the view rectangle, in degrees + FloatRect m_viewport; ///< Viewport rectangle, expressed as a factor of the render-target's size + mutable Transform m_transform; ///< Precomputed projection transform corresponding to the view + mutable Transform m_inverseTransform; ///< Precomputed inverse projection transform corresponding to the view + mutable bool m_transformUpdated; ///< Internal state telling if the transform needs to be updated + mutable bool m_invTransformUpdated; ///< Internal state telling if the inverse transform needs to be updated +}; + +} // namespace sf + + +#endif // SFML_VIEW_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::View +/// \ingroup graphics +/// +/// sf::View defines a camera in the 2D scene. This is a +/// very powerful concept: you can scroll, rotate or zoom +/// the entire scene without altering the way that your +/// drawable objects are drawn. +/// +/// A view is composed of a source rectangle, which defines +/// what part of the 2D scene is shown, and a target viewport, +/// which defines where the contents of the source rectangle +/// will be displayed on the render target (window or texture). +/// +/// The viewport allows to map the scene to a custom part +/// of the render target, and can be used for split-screen +/// or for displaying a minimap, for example. If the source +/// rectangle has not the same size as the viewport, its +/// contents will be stretched to fit in. +/// +/// To apply a view, you have to assign it to the render target. +/// Then, every objects drawn in this render target will be +/// affected by the view until you use another view. +/// +/// Usage example: +/// \code +/// sf::RenderWindow window; +/// sf::View view; +/// +/// // Initialize the view to a rectangle located at (100, 100) and with a size of 400x200 +/// view.reset(sf::FloatRect(100, 100, 400, 200)); +/// +/// // Rotate it by 45 degrees +/// view.rotate(45); +/// +/// // Set its target viewport to be half of the window +/// view.setViewport(sf::FloatRect(0.f, 0.f, 0.5f, 1.f)); +/// +/// // Apply it +/// window.setView(view); +/// +/// // Render stuff +/// window.draw(someSprite); +/// +/// // Set the default view back +/// window.setView(window.getDefaultView()); +/// +/// // Render stuff not affected by the view +/// window.draw(someText); +/// \endcode +/// +/// See also the note on coordinates and undistorted rendering in sf::Transformable. +/// +/// \see sf::RenderWindow, sf::RenderTexture +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Main.hpp b/mcclone/external/sfml23/include/SFML/Main.hpp new file mode 100644 index 0000000..23973d0 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Main.hpp @@ -0,0 +1,43 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_MAIN_HPP +#define SFML_MAIN_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +#if defined(SFML_SYSTEM_IOS) + + // On iOS, we have no choice but to have our own main, + // so we need to rename the user one and call it later + #define main sfmlMain + +#endif + + +#endif // SFML_MAIN_HPP diff --git a/mcclone/external/sfml23/include/SFML/Network.hpp b/mcclone/external/sfml23/include/SFML/Network.hpp new file mode 100644 index 0000000..68507af --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Network.hpp @@ -0,0 +1,53 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_NETWORK_HPP +#define SFML_NETWORK_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#endif // SFML_NETWORK_HPP + +//////////////////////////////////////////////////////////// +/// \defgroup network Network module +/// +/// Socket-based communication, utilities and higher-level +/// network protocols (HTTP, FTP). +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Network/Export.hpp b/mcclone/external/sfml23/include/SFML/Network/Export.hpp new file mode 100644 index 0000000..6c880f6 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Network/Export.hpp @@ -0,0 +1,48 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_NETWORK_EXPORT_HPP +#define SFML_NETWORK_EXPORT_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +// Define portable import / export macros +//////////////////////////////////////////////////////////// +#if defined(SFML_NETWORK_EXPORTS) + + #define SFML_NETWORK_API SFML_API_EXPORT + +#else + + #define SFML_NETWORK_API SFML_API_IMPORT + +#endif + + +#endif // SFML_NETWORK_EXPORT_HPP diff --git a/mcclone/external/sfml23/include/SFML/Network/Ftp.hpp b/mcclone/external/sfml23/include/SFML/Network/Ftp.hpp new file mode 100644 index 0000000..c62db7b --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Network/Ftp.hpp @@ -0,0 +1,611 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_FTP_HPP +#define SFML_FTP_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include + + +namespace sf +{ +class IpAddress; + +//////////////////////////////////////////////////////////// +/// \brief A FTP client +/// +//////////////////////////////////////////////////////////// +class SFML_NETWORK_API Ftp : NonCopyable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Enumeration of transfer modes + /// + //////////////////////////////////////////////////////////// + enum TransferMode + { + Binary, ///< Binary mode (file is transfered as a sequence of bytes) + Ascii, ///< Text mode using ASCII encoding + Ebcdic ///< Text mode using EBCDIC encoding + }; + + //////////////////////////////////////////////////////////// + /// \brief Define a FTP response + /// + //////////////////////////////////////////////////////////// + class SFML_NETWORK_API Response + { + public: + + //////////////////////////////////////////////////////////// + /// \brief Status codes possibly returned by a FTP response + /// + //////////////////////////////////////////////////////////// + enum Status + { + // 1xx: the requested action is being initiated, + // expect another reply before proceeding with a new command + RestartMarkerReply = 110, ///< Restart marker reply + ServiceReadySoon = 120, ///< Service ready in N minutes + DataConnectionAlreadyOpened = 125, ///< Data connection already opened, transfer starting + OpeningDataConnection = 150, ///< File status ok, about to open data connection + + // 2xx: the requested action has been successfully completed + Ok = 200, ///< Command ok + PointlessCommand = 202, ///< Command not implemented + SystemStatus = 211, ///< System status, or system help reply + DirectoryStatus = 212, ///< Directory status + FileStatus = 213, ///< File status + HelpMessage = 214, ///< Help message + SystemType = 215, ///< NAME system type, where NAME is an official system name from the list in the Assigned Numbers document + ServiceReady = 220, ///< Service ready for new user + ClosingConnection = 221, ///< Service closing control connection + DataConnectionOpened = 225, ///< Data connection open, no transfer in progress + ClosingDataConnection = 226, ///< Closing data connection, requested file action successful + EnteringPassiveMode = 227, ///< Entering passive mode + LoggedIn = 230, ///< User logged in, proceed. Logged out if appropriate + FileActionOk = 250, ///< Requested file action ok + DirectoryOk = 257, ///< PATHNAME created + + // 3xx: the command has been accepted, but the requested action + // is dormant, pending receipt of further information + NeedPassword = 331, ///< User name ok, need password + NeedAccountToLogIn = 332, ///< Need account for login + NeedInformation = 350, ///< Requested file action pending further information + + // 4xx: the command was not accepted and the requested action did not take place, + // but the error condition is temporary and the action may be requested again + ServiceUnavailable = 421, ///< Service not available, closing control connection + DataConnectionUnavailable = 425, ///< Can't open data connection + TransferAborted = 426, ///< Connection closed, transfer aborted + FileActionAborted = 450, ///< Requested file action not taken + LocalError = 451, ///< Requested action aborted, local error in processing + InsufficientStorageSpace = 452, ///< Requested action not taken; insufficient storage space in system, file unavailable + + // 5xx: the command was not accepted and + // the requested action did not take place + CommandUnknown = 500, ///< Syntax error, command unrecognized + ParametersUnknown = 501, ///< Syntax error in parameters or arguments + CommandNotImplemented = 502, ///< Command not implemented + BadCommandSequence = 503, ///< Bad sequence of commands + ParameterNotImplemented = 504, ///< Command not implemented for that parameter + NotLoggedIn = 530, ///< Not logged in + NeedAccountToStore = 532, ///< Need account for storing files + FileUnavailable = 550, ///< Requested action not taken, file unavailable + PageTypeUnknown = 551, ///< Requested action aborted, page type unknown + NotEnoughMemory = 552, ///< Requested file action aborted, exceeded storage allocation + FilenameNotAllowed = 553, ///< Requested action not taken, file name not allowed + + // 10xx: SFML custom codes + InvalidResponse = 1000, ///< Not part of the FTP standard, generated by SFML when a received response cannot be parsed + ConnectionFailed = 1001, ///< Not part of the FTP standard, generated by SFML when the low-level socket connection with the server fails + ConnectionClosed = 1002, ///< Not part of the FTP standard, generated by SFML when the low-level socket connection is unexpectedly closed + InvalidFile = 1003 ///< Not part of the FTP standard, generated by SFML when a local file cannot be read or written + }; + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// This constructor is used by the FTP client to build + /// the response. + /// + /// \param code Response status code + /// \param message Response message + /// + //////////////////////////////////////////////////////////// + explicit Response(Status code = InvalidResponse, const std::string& message = ""); + + //////////////////////////////////////////////////////////// + /// \brief Check if the status code means a success + /// + /// This function is defined for convenience, it is + /// equivalent to testing if the status code is < 400. + /// + /// \return True if the status is a success, false if it is a failure + /// + //////////////////////////////////////////////////////////// + bool isOk() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the status code of the response + /// + /// \return Status code + /// + //////////////////////////////////////////////////////////// + Status getStatus() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the full message contained in the response + /// + /// \return The response message + /// + //////////////////////////////////////////////////////////// + const std::string& getMessage() const; + + private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + Status m_status; ///< Status code returned from the server + std::string m_message; ///< Last message received from the server + }; + + //////////////////////////////////////////////////////////// + /// \brief Specialization of FTP response returning a directory + /// + //////////////////////////////////////////////////////////// + class SFML_NETWORK_API DirectoryResponse : public Response + { + public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// \param response Source response + /// + //////////////////////////////////////////////////////////// + DirectoryResponse(const Response& response); + + //////////////////////////////////////////////////////////// + /// \brief Get the directory returned in the response + /// + /// \return Directory name + /// + //////////////////////////////////////////////////////////// + const std::string& getDirectory() const; + + private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + std::string m_directory; ///< Directory extracted from the response message + }; + + + //////////////////////////////////////////////////////////// + /// \brief Specialization of FTP response returning a + /// filename listing + //////////////////////////////////////////////////////////// + class SFML_NETWORK_API ListingResponse : public Response + { + public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// \param response Source response + /// \param data Data containing the raw listing + /// + //////////////////////////////////////////////////////////// + ListingResponse(const Response& response, const std::string& data); + + //////////////////////////////////////////////////////////// + /// \brief Return the array of directory/file names + /// + /// \return Array containing the requested listing + /// + //////////////////////////////////////////////////////////// + const std::vector& getListing() const; + + private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + std::vector m_listing; ///< Directory/file names extracted from the data + }; + + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + /// Automatically closes the connection with the server if + /// it is still opened. + /// + //////////////////////////////////////////////////////////// + ~Ftp(); + + //////////////////////////////////////////////////////////// + /// \brief Connect to the specified FTP server + /// + /// The port has a default value of 21, which is the standard + /// port used by the FTP protocol. You shouldn't use a different + /// value, unless you really know what you do. + /// This function tries to connect to the server so it may take + /// a while to complete, especially if the server is not + /// reachable. To avoid blocking your application for too long, + /// you can use a timeout. The default value, Time::Zero, means that the + /// system timeout will be used (which is usually pretty long). + /// + /// \param server Name or address of the FTP server to connect to + /// \param port Port used for the connection + /// \param timeout Maximum time to wait + /// + /// \return Server response to the request + /// + /// \see disconnect + /// + //////////////////////////////////////////////////////////// + Response connect(const IpAddress& server, unsigned short port = 21, Time timeout = Time::Zero); + + //////////////////////////////////////////////////////////// + /// \brief Close the connection with the server + /// + /// \return Server response to the request + /// + /// \see connect + /// + //////////////////////////////////////////////////////////// + Response disconnect(); + + //////////////////////////////////////////////////////////// + /// \brief Log in using an anonymous account + /// + /// Logging in is mandatory after connecting to the server. + /// Users that are not logged in cannot perform any operation. + /// + /// \return Server response to the request + /// + //////////////////////////////////////////////////////////// + Response login(); + + //////////////////////////////////////////////////////////// + /// \brief Log in using a username and a password + /// + /// Logging in is mandatory after connecting to the server. + /// Users that are not logged in cannot perform any operation. + /// + /// \param name User name + /// \param password Password + /// + /// \return Server response to the request + /// + //////////////////////////////////////////////////////////// + Response login(const std::string& name, const std::string& password); + + //////////////////////////////////////////////////////////// + /// \brief Send a null command to keep the connection alive + /// + /// This command is useful because the server may close the + /// connection automatically if no command is sent. + /// + /// \return Server response to the request + /// + //////////////////////////////////////////////////////////// + Response keepAlive(); + + //////////////////////////////////////////////////////////// + /// \brief Get the current working directory + /// + /// The working directory is the root path for subsequent + /// operations involving directories and/or filenames. + /// + /// \return Server response to the request + /// + /// \see getDirectoryListing, changeDirectory, parentDirectory + /// + //////////////////////////////////////////////////////////// + DirectoryResponse getWorkingDirectory(); + + //////////////////////////////////////////////////////////// + /// \brief Get the contents of the given directory + /// + /// This function retrieves the sub-directories and files + /// contained in the given directory. It is not recursive. + /// The \a directory parameter is relative to the current + /// working directory. + /// + /// \param directory Directory to list + /// + /// \return Server response to the request + /// + /// \see getWorkingDirectory, changeDirectory, parentDirectory + /// + //////////////////////////////////////////////////////////// + ListingResponse getDirectoryListing(const std::string& directory = ""); + + //////////////////////////////////////////////////////////// + /// \brief Change the current working directory + /// + /// The new directory must be relative to the current one. + /// + /// \param directory New working directory + /// + /// \return Server response to the request + /// + /// \see getWorkingDirectory, getDirectoryListing, parentDirectory + /// + //////////////////////////////////////////////////////////// + Response changeDirectory(const std::string& directory); + + //////////////////////////////////////////////////////////// + /// \brief Go to the parent directory of the current one + /// + /// \return Server response to the request + /// + /// \see getWorkingDirectory, getDirectoryListing, changeDirectory + /// + //////////////////////////////////////////////////////////// + Response parentDirectory(); + + //////////////////////////////////////////////////////////// + /// \brief Create a new directory + /// + /// The new directory is created as a child of the current + /// working directory. + /// + /// \param name Name of the directory to create + /// + /// \return Server response to the request + /// + /// \see deleteDirectory + /// + //////////////////////////////////////////////////////////// + Response createDirectory(const std::string& name); + + //////////////////////////////////////////////////////////// + /// \brief Remove an existing directory + /// + /// The directory to remove must be relative to the + /// current working directory. + /// Use this function with caution, the directory will + /// be removed permanently! + /// + /// \param name Name of the directory to remove + /// + /// \return Server response to the request + /// + /// \see createDirectory + /// + //////////////////////////////////////////////////////////// + Response deleteDirectory(const std::string& name); + + //////////////////////////////////////////////////////////// + /// \brief Rename an existing file + /// + /// The filenames must be relative to the current working + /// directory. + /// + /// \param file File to rename + /// \param newName New name of the file + /// + /// \return Server response to the request + /// + /// \see deleteFile + /// + //////////////////////////////////////////////////////////// + Response renameFile(const std::string& file, const std::string& newName); + + //////////////////////////////////////////////////////////// + /// \brief Remove an existing file + /// + /// The file name must be relative to the current working + /// directory. + /// Use this function with caution, the file will be + /// removed permanently! + /// + /// \param name File to remove + /// + /// \return Server response to the request + /// + /// \see renameFile + /// + //////////////////////////////////////////////////////////// + Response deleteFile(const std::string& name); + + //////////////////////////////////////////////////////////// + /// \brief Download a file from the server + /// + /// The filename of the distant file is relative to the + /// current working directory of the server, and the local + /// destination path is relative to the current directory + /// of your application. + /// If a file with the same filename as the distant file + /// already exists in the local destination path, it will + /// be overwritten. + /// + /// \param remoteFile Filename of the distant file to download + /// \param localPath The directory in which to put the file on the local computer + /// \param mode Transfer mode + /// + /// \return Server response to the request + /// + /// \see upload + /// + //////////////////////////////////////////////////////////// + Response download(const std::string& remoteFile, const std::string& localPath, TransferMode mode = Binary); + + //////////////////////////////////////////////////////////// + /// \brief Upload a file to the server + /// + /// The name of the local file is relative to the current + /// working directory of your application, and the + /// remote path is relative to the current directory of the + /// FTP server. + /// + /// \param localFile Path of the local file to upload + /// \param remotePath The directory in which to put the file on the server + /// \param mode Transfer mode + /// + /// \return Server response to the request + /// + /// \see download + /// + //////////////////////////////////////////////////////////// + Response upload(const std::string& localFile, const std::string& remotePath, TransferMode mode = Binary); + + //////////////////////////////////////////////////////////// + /// \brief Send a command to the FTP server + /// + /// While the most often used commands are provided as member + /// functions in the sf::Ftp class, this method can be used + /// to send any FTP command to the server. If the command + /// requires one or more parameters, they can be specified + /// in \a parameter. If the server returns information, you + /// can extract it from the response using Response::getMessage(). + /// + /// \param command Command to send + /// \param parameter Command parameter + /// + /// \return Server response to the request + /// + //////////////////////////////////////////////////////////// + Response sendCommand(const std::string& command, const std::string& parameter = ""); + +private: + + //////////////////////////////////////////////////////////// + /// \brief Receive a response from the server + /// + /// This function must be called after each call to + /// sendCommand that expects a response. + /// + /// \return Server response to the request + /// + //////////////////////////////////////////////////////////// + Response getResponse(); + + //////////////////////////////////////////////////////////// + /// \brief Utility class for exchanging datas with the server + /// on the data channel + /// + //////////////////////////////////////////////////////////// + class DataChannel; + + friend class DataChannel; + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + TcpSocket m_commandSocket; ///< Socket holding the control connection with the server +}; + +} // namespace sf + + +#endif // SFML_FTP_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Ftp +/// \ingroup network +/// +/// sf::Ftp is a very simple FTP client that allows you +/// to communicate with a FTP server. The FTP protocol allows +/// you to manipulate a remote file system (list files, +/// upload, download, create, remove, ...). +/// +/// Using the FTP client consists of 4 parts: +/// \li Connecting to the FTP server +/// \li Logging in (either as a registered user or anonymously) +/// \li Sending commands to the server +/// \li Disconnecting (this part can be done implicitly by the destructor) +/// +/// Every command returns a FTP response, which contains the +/// status code as well as a message from the server. Some +/// commands such as getWorkingDirectory() and getDirectoryListing() +/// return additional data, and use a class derived from +/// sf::Ftp::Response to provide this data. The most often used +/// commands are directly provided as member functions, but it is +/// also possible to use specific commands with the sendCommand() function. +/// +/// Note that response statuses >= 1000 are not part of the FTP standard, +/// they are generated by SFML when an internal error occurs. +/// +/// All commands, especially upload and download, may take some +/// time to complete. This is important to know if you don't want +/// to block your application while the server is completing +/// the task. +/// +/// Usage example: +/// \code +/// // Create a new FTP client +/// sf::Ftp ftp; +/// +/// // Connect to the server +/// sf::Ftp::Response response = ftp.connect("ftp://ftp.myserver.com"); +/// if (response.isOk()) +/// std::cout << "Connected" << std::endl; +/// +/// // Log in +/// response = ftp.login("laurent", "dF6Zm89D"); +/// if (response.isOk()) +/// std::cout << "Logged in" << std::endl; +/// +/// // Print the working directory +/// sf::Ftp::DirectoryResponse directory = ftp.getWorkingDirectory(); +/// if (directory.isOk()) +/// std::cout << "Working directory: " << directory.getDirectory() << std::endl; +/// +/// // Create a new directory +/// response = ftp.createDirectory("files"); +/// if (response.isOk()) +/// std::cout << "Created new directory" << std::endl; +/// +/// // Upload a file to this new directory +/// response = ftp.upload("local-path/file.txt", "files", sf::Ftp::Ascii); +/// if (response.isOk()) +/// std::cout << "File uploaded" << std::endl; +/// +/// // Send specific commands (here: FEAT to list supported FTP features) +/// response = ftp.sendCommand("FEAT"); +/// if (response.isOk()) +/// std::cout << "Feature list:\n" << response.getMessage() << std::endl; +/// +/// // Disconnect from the server (optional) +/// ftp.disconnect(); +/// \endcode +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Network/Http.hpp b/mcclone/external/sfml23/include/SFML/Network/Http.hpp new file mode 100644 index 0000000..057b86b --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Network/Http.hpp @@ -0,0 +1,482 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_HTTP_HPP +#define SFML_HTTP_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief A HTTP client +/// +//////////////////////////////////////////////////////////// +class SFML_NETWORK_API Http : NonCopyable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Define a HTTP request + /// + //////////////////////////////////////////////////////////// + class SFML_NETWORK_API Request + { + public: + + //////////////////////////////////////////////////////////// + /// \brief Enumerate the available HTTP methods for a request + /// + //////////////////////////////////////////////////////////// + enum Method + { + Get, ///< Request in get mode, standard method to retrieve a page + Post, ///< Request in post mode, usually to send data to a page + Head, ///< Request a page's header only + Put, ///< Request in put mode, useful for a REST API + Delete ///< Request in delete mode, useful for a REST API + }; + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// This constructor creates a GET request, with the root + /// URI ("/") and an empty body. + /// + /// \param uri Target URI + /// \param method Method to use for the request + /// \param body Content of the request's body + /// + //////////////////////////////////////////////////////////// + Request(const std::string& uri = "/", Method method = Get, const std::string& body = ""); + + //////////////////////////////////////////////////////////// + /// \brief Set the value of a field + /// + /// The field is created if it doesn't exist. The name of + /// the field is case-insensitive. + /// By default, a request doesn't contain any field (but the + /// mandatory fields are added later by the HTTP client when + /// sending the request). + /// + /// \param field Name of the field to set + /// \param value Value of the field + /// + //////////////////////////////////////////////////////////// + void setField(const std::string& field, const std::string& value); + + //////////////////////////////////////////////////////////// + /// \brief Set the request method + /// + /// See the Method enumeration for a complete list of all + /// the availale methods. + /// The method is Http::Request::Get by default. + /// + /// \param method Method to use for the request + /// + //////////////////////////////////////////////////////////// + void setMethod(Method method); + + //////////////////////////////////////////////////////////// + /// \brief Set the requested URI + /// + /// The URI is the resource (usually a web page or a file) + /// that you want to get or post. + /// The URI is "/" (the root page) by default. + /// + /// \param uri URI to request, relative to the host + /// + //////////////////////////////////////////////////////////// + void setUri(const std::string& uri); + + //////////////////////////////////////////////////////////// + /// \brief Set the HTTP version for the request + /// + /// The HTTP version is 1.0 by default. + /// + /// \param major Major HTTP version number + /// \param minor Minor HTTP version number + /// + //////////////////////////////////////////////////////////// + void setHttpVersion(unsigned int major, unsigned int minor); + + //////////////////////////////////////////////////////////// + /// \brief Set the body of the request + /// + /// The body of a request is optional and only makes sense + /// for POST requests. It is ignored for all other methods. + /// The body is empty by default. + /// + /// \param body Content of the body + /// + //////////////////////////////////////////////////////////// + void setBody(const std::string& body); + + private: + + friend class Http; + + //////////////////////////////////////////////////////////// + /// \brief Prepare the final request to send to the server + /// + /// This is used internally by Http before sending the + /// request to the web server. + /// + /// \return String containing the request, ready to be sent + /// + //////////////////////////////////////////////////////////// + std::string prepare() const; + + //////////////////////////////////////////////////////////// + /// \brief Check if the request defines a field + /// + /// This function uses case-insensitive comparisons. + /// + /// \param field Name of the field to test + /// + /// \return True if the field exists, false otherwise + /// + //////////////////////////////////////////////////////////// + bool hasField(const std::string& field) const; + + //////////////////////////////////////////////////////////// + // Types + //////////////////////////////////////////////////////////// + typedef std::map FieldTable; + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + FieldTable m_fields; ///< Fields of the header associated to their value + Method m_method; ///< Method to use for the request + std::string m_uri; ///< Target URI of the request + unsigned int m_majorVersion; ///< Major HTTP version + unsigned int m_minorVersion; ///< Minor HTTP version + std::string m_body; ///< Body of the request + }; + + //////////////////////////////////////////////////////////// + /// \brief Define a HTTP response + /// + //////////////////////////////////////////////////////////// + class SFML_NETWORK_API Response + { + public: + + //////////////////////////////////////////////////////////// + /// \brief Enumerate all the valid status codes for a response + /// + //////////////////////////////////////////////////////////// + enum Status + { + // 2xx: success + Ok = 200, ///< Most common code returned when operation was successful + Created = 201, ///< The resource has successfully been created + Accepted = 202, ///< The request has been accepted, but will be processed later by the server + NoContent = 204, ///< The server didn't send any data in return + ResetContent = 205, ///< The server informs the client that it should clear the view (form) that caused the request to be sent + PartialContent = 206, ///< The server has sent a part of the resource, as a response to a partial GET request + + // 3xx: redirection + MultipleChoices = 300, ///< The requested page can be accessed from several locations + MovedPermanently = 301, ///< The requested page has permanently moved to a new location + MovedTemporarily = 302, ///< The requested page has temporarily moved to a new location + NotModified = 304, ///< For conditional requests, means the requested page hasn't changed and doesn't need to be refreshed + + // 4xx: client error + BadRequest = 400, ///< The server couldn't understand the request (syntax error) + Unauthorized = 401, ///< The requested page needs an authentication to be accessed + Forbidden = 403, ///< The requested page cannot be accessed at all, even with authentication + NotFound = 404, ///< The requested page doesn't exist + RangeNotSatisfiable = 407, ///< The server can't satisfy the partial GET request (with a "Range" header field) + + // 5xx: server error + InternalServerError = 500, ///< The server encountered an unexpected error + NotImplemented = 501, ///< The server doesn't implement a requested feature + BadGateway = 502, ///< The gateway server has received an error from the source server + ServiceNotAvailable = 503, ///< The server is temporarily unavailable (overloaded, in maintenance, ...) + GatewayTimeout = 504, ///< The gateway server couldn't receive a response from the source server + VersionNotSupported = 505, ///< The server doesn't support the requested HTTP version + + // 10xx: SFML custom codes + InvalidResponse = 1000, ///< Response is not a valid HTTP one + ConnectionFailed = 1001 ///< Connection with server failed + }; + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// Constructs an empty response. + /// + //////////////////////////////////////////////////////////// + Response(); + + //////////////////////////////////////////////////////////// + /// \brief Get the value of a field + /// + /// If the field \a field is not found in the response header, + /// the empty string is returned. This function uses + /// case-insensitive comparisons. + /// + /// \param field Name of the field to get + /// + /// \return Value of the field, or empty string if not found + /// + //////////////////////////////////////////////////////////// + const std::string& getField(const std::string& field) const; + + //////////////////////////////////////////////////////////// + /// \brief Get the response status code + /// + /// The status code should be the first thing to be checked + /// after receiving a response, it defines whether it is a + /// success, a failure or anything else (see the Status + /// enumeration). + /// + /// \return Status code of the response + /// + //////////////////////////////////////////////////////////// + Status getStatus() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the major HTTP version number of the response + /// + /// \return Major HTTP version number + /// + /// \see getMinorHttpVersion + /// + //////////////////////////////////////////////////////////// + unsigned int getMajorHttpVersion() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the minor HTTP version number of the response + /// + /// \return Minor HTTP version number + /// + /// \see getMajorHttpVersion + /// + //////////////////////////////////////////////////////////// + unsigned int getMinorHttpVersion() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the body of the response + /// + /// The body of a response may contain: + /// \li the requested page (for GET requests) + /// \li a response from the server (for POST requests) + /// \li nothing (for HEAD requests) + /// \li an error message (in case of an error) + /// + /// \return The response body + /// + //////////////////////////////////////////////////////////// + const std::string& getBody() const; + + private: + + friend class Http; + + //////////////////////////////////////////////////////////// + /// \brief Construct the header from a response string + /// + /// This function is used by Http to build the response + /// of a request. + /// + /// \param data Content of the response to parse + /// + //////////////////////////////////////////////////////////// + void parse(const std::string& data); + + + //////////////////////////////////////////////////////////// + /// \brief Read values passed in the answer header + /// + /// This function is used by Http to extract values passed + /// in the response. + /// + /// \param in String stream containing the header values + /// + //////////////////////////////////////////////////////////// + void parseFields(std::istream &in); + + //////////////////////////////////////////////////////////// + // Types + //////////////////////////////////////////////////////////// + typedef std::map FieldTable; + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + FieldTable m_fields; ///< Fields of the header + Status m_status; ///< Status code + unsigned int m_majorVersion; ///< Major HTTP version + unsigned int m_minorVersion; ///< Minor HTTP version + std::string m_body; ///< Body of the response + }; + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + Http(); + + //////////////////////////////////////////////////////////// + /// \brief Construct the HTTP client with the target host + /// + /// This is equivalent to calling setHost(host, port). + /// The port has a default value of 0, which means that the + /// HTTP client will use the right port according to the + /// protocol used (80 for HTTP). You should leave it like + /// this unless you really need a port other than the + /// standard one, or use an unknown protocol. + /// + /// \param host Web server to connect to + /// \param port Port to use for connection + /// + //////////////////////////////////////////////////////////// + Http(const std::string& host, unsigned short port = 0); + + //////////////////////////////////////////////////////////// + /// \brief Set the target host + /// + /// This function just stores the host address and port, it + /// doesn't actually connect to it until you send a request. + /// The port has a default value of 0, which means that the + /// HTTP client will use the right port according to the + /// protocol used (80 for HTTP). You should leave it like + /// this unless you really need a port other than the + /// standard one, or use an unknown protocol. + /// + /// \param host Web server to connect to + /// \param port Port to use for connection + /// + //////////////////////////////////////////////////////////// + void setHost(const std::string& host, unsigned short port = 0); + + //////////////////////////////////////////////////////////// + /// \brief Send a HTTP request and return the server's response. + /// + /// You must have a valid host before sending a request (see setHost). + /// Any missing mandatory header field in the request will be added + /// with an appropriate value. + /// Warning: this function waits for the server's response and may + /// not return instantly; use a thread if you don't want to block your + /// application, or use a timeout to limit the time to wait. A value + /// of Time::Zero means that the client will use the system default timeout + /// (which is usually pretty long). + /// + /// \param request Request to send + /// \param timeout Maximum time to wait + /// + /// \return Server's response + /// + //////////////////////////////////////////////////////////// + Response sendRequest(const Request& request, Time timeout = Time::Zero); + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + TcpSocket m_connection; ///< Connection to the host + IpAddress m_host; ///< Web host address + std::string m_hostName; ///< Web host name + unsigned short m_port; ///< Port used for connection with host +}; + +} // namespace sf + + +#endif // SFML_HTTP_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Http +/// \ingroup network +/// +/// sf::Http is a very simple HTTP client that allows you +/// to communicate with a web server. You can retrieve +/// web pages, send data to an interactive resource, +/// download a remote file, etc. The HTTPS protocol is +/// not supported. +/// +/// The HTTP client is split into 3 classes: +/// \li sf::Http::Request +/// \li sf::Http::Response +/// \li sf::Http +/// +/// sf::Http::Request builds the request that will be +/// sent to the server. A request is made of: +/// \li a method (what you want to do) +/// \li a target URI (usually the name of the web page or file) +/// \li one or more header fields (options that you can pass to the server) +/// \li an optional body (for POST requests) +/// +/// sf::Http::Response parse the response from the web server +/// and provides getters to read them. The response contains: +/// \li a status code +/// \li header fields (that may be answers to the ones that you requested) +/// \li a body, which contains the contents of the requested resource +/// +/// sf::Http provides a simple function, SendRequest, to send a +/// sf::Http::Request and return the corresponding sf::Http::Response +/// from the server. +/// +/// Usage example: +/// \code +/// // Create a new HTTP client +/// sf::Http http; +/// +/// // We'll work on http://www.sfml-dev.org +/// http.setHost("http://www.sfml-dev.org"); +/// +/// // Prepare a request to get the 'features.php' page +/// sf::Http::Request request("features.php"); +/// +/// // Send the request +/// sf::Http::Response response = http.sendRequest(request); +/// +/// // Check the status code and display the result +/// sf::Http::Response::Status status = response.getStatus(); +/// if (status == sf::Http::Response::Ok) +/// { +/// std::cout << response.getBody() << std::endl; +/// } +/// else +/// { +/// std::cout << "Error " << status << std::endl; +/// } +/// \endcode +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Network/IpAddress.hpp b/mcclone/external/sfml23/include/SFML/Network/IpAddress.hpp new file mode 100644 index 0000000..8205e9f --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Network/IpAddress.hpp @@ -0,0 +1,316 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_IPADDRESS_HPP +#define SFML_IPADDRESS_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Encapsulate an IPv4 network address +/// +//////////////////////////////////////////////////////////// +class SFML_NETWORK_API IpAddress +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// This constructor creates an empty (invalid) address + /// + //////////////////////////////////////////////////////////// + IpAddress(); + + //////////////////////////////////////////////////////////// + /// \brief Construct the address from a string + /// + /// Here \a address can be either a decimal address + /// (ex: "192.168.1.56") or a network name (ex: "localhost"). + /// + /// \param address IP address or network name + /// + //////////////////////////////////////////////////////////// + IpAddress(const std::string& address); + + //////////////////////////////////////////////////////////// + /// \brief Construct the address from a string + /// + /// Here \a address can be either a decimal address + /// (ex: "192.168.1.56") or a network name (ex: "localhost"). + /// This is equivalent to the constructor taking a std::string + /// parameter, it is defined for convenience so that the + /// implicit conversions from literal strings to IpAddress work. + /// + /// \param address IP address or network name + /// + //////////////////////////////////////////////////////////// + IpAddress(const char* address); + + //////////////////////////////////////////////////////////// + /// \brief Construct the address from 4 bytes + /// + /// Calling IpAddress(a, b, c, d) is equivalent to calling + /// IpAddress("a.b.c.d"), but safer as it doesn't have to + /// parse a string to get the address components. + /// + /// \param byte0 First byte of the address + /// \param byte1 Second byte of the address + /// \param byte2 Third byte of the address + /// \param byte3 Fourth byte of the address + /// + //////////////////////////////////////////////////////////// + IpAddress(Uint8 byte0, Uint8 byte1, Uint8 byte2, Uint8 byte3); + + //////////////////////////////////////////////////////////// + /// \brief Construct the address from a 32-bits integer + /// + /// This constructor uses the internal representation of + /// the address directly. It should be used for optimization + /// purposes, and only if you got that representation from + /// IpAddress::ToInteger(). + /// + /// \param address 4 bytes of the address packed into a 32-bits integer + /// + /// \see toInteger + /// + //////////////////////////////////////////////////////////// + explicit IpAddress(Uint32 address); + + //////////////////////////////////////////////////////////// + /// \brief Get a string representation of the address + /// + /// The returned string is the decimal representation of the + /// IP address (like "192.168.1.56"), even if it was constructed + /// from a host name. + /// + /// \return String representation of the address + /// + /// \see toInteger + /// + //////////////////////////////////////////////////////////// + std::string toString() const; + + //////////////////////////////////////////////////////////// + /// \brief Get an integer representation of the address + /// + /// The returned number is the internal representation of the + /// address, and should be used for optimization purposes only + /// (like sending the address through a socket). + /// The integer produced by this function can then be converted + /// back to a sf::IpAddress with the proper constructor. + /// + /// \return 32-bits unsigned integer representation of the address + /// + /// \see toString + /// + //////////////////////////////////////////////////////////// + Uint32 toInteger() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the computer's local address + /// + /// The local address is the address of the computer from the + /// LAN point of view, i.e. something like 192.168.1.56. It is + /// meaningful only for communications over the local network. + /// Unlike getPublicAddress, this function is fast and may be + /// used safely anywhere. + /// + /// \return Local IP address of the computer + /// + /// \see getPublicAddress + /// + //////////////////////////////////////////////////////////// + static IpAddress getLocalAddress(); + + //////////////////////////////////////////////////////////// + /// \brief Get the computer's public address + /// + /// The public address is the address of the computer from the + /// internet point of view, i.e. something like 89.54.1.169. + /// It is necessary for communications over the world wide web. + /// The only way to get a public address is to ask it to a + /// distant website; as a consequence, this function depends on + /// both your network connection and the server, and may be + /// very slow. You should use it as few as possible. Because + /// this function depends on the network connection and on a distant + /// server, you may use a time limit if you don't want your program + /// to be possibly stuck waiting in case there is a problem; this + /// limit is deactivated by default. + /// + /// \param timeout Maximum time to wait + /// + /// \return Public IP address of the computer + /// + /// \see getLocalAddress + /// + //////////////////////////////////////////////////////////// + static IpAddress getPublicAddress(Time timeout = Time::Zero); + + //////////////////////////////////////////////////////////// + // Static member data + //////////////////////////////////////////////////////////// + static const IpAddress None; ///< Value representing an empty/invalid address + static const IpAddress LocalHost; ///< The "localhost" address (for connecting a computer to itself locally) + static const IpAddress Broadcast; ///< The "broadcast" address (for sending UDP messages to everyone on a local network) + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + Uint32 m_address; ///< Address stored as an unsigned 32 bits integer +}; + +//////////////////////////////////////////////////////////// +/// \brief Overload of == operator to compare two IP addresses +/// +/// \param left Left operand (a IP address) +/// \param right Right operand (a IP address) +/// +/// \return True if both addresses are equal +/// +//////////////////////////////////////////////////////////// +SFML_NETWORK_API bool operator ==(const IpAddress& left, const IpAddress& right); + +//////////////////////////////////////////////////////////// +/// \brief Overload of != operator to compare two IP addresses +/// +/// \param left Left operand (a IP address) +/// \param right Right operand (a IP address) +/// +/// \return True if both addresses are different +/// +//////////////////////////////////////////////////////////// +SFML_NETWORK_API bool operator !=(const IpAddress& left, const IpAddress& right); + +//////////////////////////////////////////////////////////// +/// \brief Overload of < operator to compare two IP addresses +/// +/// \param left Left operand (a IP address) +/// \param right Right operand (a IP address) +/// +/// \return True if \a left is lesser than \a right +/// +//////////////////////////////////////////////////////////// +SFML_NETWORK_API bool operator <(const IpAddress& left, const IpAddress& right); + +//////////////////////////////////////////////////////////// +/// \brief Overload of > operator to compare two IP addresses +/// +/// \param left Left operand (a IP address) +/// \param right Right operand (a IP address) +/// +/// \return True if \a left is greater than \a right +/// +//////////////////////////////////////////////////////////// +SFML_NETWORK_API bool operator >(const IpAddress& left, const IpAddress& right); + +//////////////////////////////////////////////////////////// +/// \brief Overload of <= operator to compare two IP addresses +/// +/// \param left Left operand (a IP address) +/// \param right Right operand (a IP address) +/// +/// \return True if \a left is lesser or equal than \a right +/// +//////////////////////////////////////////////////////////// +SFML_NETWORK_API bool operator <=(const IpAddress& left, const IpAddress& right); + +//////////////////////////////////////////////////////////// +/// \brief Overload of >= operator to compare two IP addresses +/// +/// \param left Left operand (a IP address) +/// \param right Right operand (a IP address) +/// +/// \return True if \a left is greater or equal than \a right +/// +//////////////////////////////////////////////////////////// +SFML_NETWORK_API bool operator >=(const IpAddress& left, const IpAddress& right); + +//////////////////////////////////////////////////////////// +/// \brief Overload of >> operator to extract an IP address from an input stream +/// +/// \param stream Input stream +/// \param address IP address to extract +/// +/// \return Reference to the input stream +/// +//////////////////////////////////////////////////////////// +SFML_NETWORK_API std::istream& operator >>(std::istream& stream, IpAddress& address); + +//////////////////////////////////////////////////////////// +/// \brief Overload of << operator to print an IP address to an output stream +/// +/// \param stream Output stream +/// \param address IP address to print +/// +/// \return Reference to the output stream +/// +//////////////////////////////////////////////////////////// +SFML_NETWORK_API std::ostream& operator <<(std::ostream& stream, const IpAddress& address); + +} // namespace sf + + +#endif // SFML_IPADDRESS_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::IpAddress +/// \ingroup network +/// +/// sf::IpAddress is a utility class for manipulating network +/// addresses. It provides a set a implicit constructors and +/// conversion functions to easily build or transform an IP +/// address from/to various representations. +/// +/// Usage example: +/// \code +/// sf::IpAddress a0; // an invalid address +/// sf::IpAddress a1 = sf::IpAddress::None; // an invalid address (same as a0) +/// sf::IpAddress a2("127.0.0.1"); // the local host address +/// sf::IpAddress a3 = sf::IpAddress::Broadcast; // the broadcast address +/// sf::IpAddress a4(192, 168, 1, 56); // a local address +/// sf::IpAddress a5("my_computer"); // a local address created from a network name +/// sf::IpAddress a6("89.54.1.169"); // a distant address +/// sf::IpAddress a7("www.google.com"); // a distant address created from a network name +/// sf::IpAddress a8 = sf::IpAddress::getLocalAddress(); // my address on the local network +/// sf::IpAddress a9 = sf::IpAddress::getPublicAddress(); // my address on the internet +/// \endcode +/// +/// Note that sf::IpAddress currently doesn't support IPv6 +/// nor other types of network addresses. +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Network/Packet.hpp b/mcclone/external/sfml23/include/SFML/Network/Packet.hpp new file mode 100644 index 0000000..0b7da9f --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Network/Packet.hpp @@ -0,0 +1,412 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_PACKET_HPP +#define SFML_PACKET_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +namespace sf +{ +class String; +class TcpSocket; +class UdpSocket; + +//////////////////////////////////////////////////////////// +/// \brief Utility class to build blocks of data to transfer +/// over the network +/// +//////////////////////////////////////////////////////////// +class SFML_NETWORK_API Packet +{ + // A bool-like type that cannot be converted to integer or pointer types + typedef bool (Packet::*BoolType)(std::size_t); + +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// Creates an empty packet. + /// + //////////////////////////////////////////////////////////// + Packet(); + + //////////////////////////////////////////////////////////// + /// \brief Virtual destructor + /// + //////////////////////////////////////////////////////////// + virtual ~Packet(); + + //////////////////////////////////////////////////////////// + /// \brief Append data to the end of the packet + /// + /// \param data Pointer to the sequence of bytes to append + /// \param sizeInBytes Number of bytes to append + /// + /// \see clear + /// + //////////////////////////////////////////////////////////// + void append(const void* data, std::size_t sizeInBytes); + + //////////////////////////////////////////////////////////// + /// \brief Clear the packet + /// + /// After calling Clear, the packet is empty. + /// + /// \see append + /// + //////////////////////////////////////////////////////////// + void clear(); + + //////////////////////////////////////////////////////////// + /// \brief Get a pointer to the data contained in the packet + /// + /// Warning: the returned pointer may become invalid after + /// you append data to the packet, therefore it should never + /// be stored. + /// The return pointer is NULL if the packet is empty. + /// + /// \return Pointer to the data + /// + /// \see getDataSize + /// + //////////////////////////////////////////////////////////// + const void* getData() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the size of the data contained in the packet + /// + /// This function returns the number of bytes pointed to by + /// what getData returns. + /// + /// \return Data size, in bytes + /// + /// \see getData + /// + //////////////////////////////////////////////////////////// + std::size_t getDataSize() const; + + //////////////////////////////////////////////////////////// + /// \brief Tell if the reading position has reached the + /// end of the packet + /// + /// This function is useful to know if there is some data + /// left to be read, without actually reading it. + /// + /// \return True if all data was read, false otherwise + /// + /// \see operator bool + /// + //////////////////////////////////////////////////////////// + bool endOfPacket() const; + +public: + + //////////////////////////////////////////////////////////// + /// \brief Test the validity of the packet, for reading + /// + /// This operator allows to test the packet as a boolean + /// variable, to check if a reading operation was successful. + /// + /// A packet will be in an invalid state if it has no more + /// data to read. + /// + /// This behavior is the same as standard C++ streams. + /// + /// Usage example: + /// \code + /// float x; + /// packet >> x; + /// if (packet) + /// { + /// // ok, x was extracted successfully + /// } + /// + /// // -- or -- + /// + /// float x; + /// if (packet >> x) + /// { + /// // ok, x was extracted successfully + /// } + /// \endcode + /// + /// Don't focus on the return type, it's equivalent to bool but + /// it disallows unwanted implicit conversions to integer or + /// pointer types. + /// + /// \return True if last data extraction from packet was successful + /// + /// \see endOfPacket + /// + //////////////////////////////////////////////////////////// + operator BoolType() const; + + //////////////////////////////////////////////////////////// + /// Overloads of operator >> to read data from the packet + /// + //////////////////////////////////////////////////////////// + Packet& operator >>(bool& data); + Packet& operator >>(Int8& data); + Packet& operator >>(Uint8& data); + Packet& operator >>(Int16& data); + Packet& operator >>(Uint16& data); + Packet& operator >>(Int32& data); + Packet& operator >>(Uint32& data); + Packet& operator >>(Int64& data); + Packet& operator >>(Uint64& data); + Packet& operator >>(float& data); + Packet& operator >>(double& data); + Packet& operator >>(char* data); + Packet& operator >>(std::string& data); + Packet& operator >>(wchar_t* data); + Packet& operator >>(std::wstring& data); + Packet& operator >>(String& data); + + //////////////////////////////////////////////////////////// + /// Overloads of operator << to write data into the packet + /// + //////////////////////////////////////////////////////////// + Packet& operator <<(bool data); + Packet& operator <<(Int8 data); + Packet& operator <<(Uint8 data); + Packet& operator <<(Int16 data); + Packet& operator <<(Uint16 data); + Packet& operator <<(Int32 data); + Packet& operator <<(Uint32 data); + Packet& operator <<(Int64 data); + Packet& operator <<(Uint64 data); + Packet& operator <<(float data); + Packet& operator <<(double data); + Packet& operator <<(const char* data); + Packet& operator <<(const std::string& data); + Packet& operator <<(const wchar_t* data); + Packet& operator <<(const std::wstring& data); + Packet& operator <<(const String& data); + +protected: + + friend class TcpSocket; + friend class UdpSocket; + + //////////////////////////////////////////////////////////// + /// \brief Called before the packet is sent over the network + /// + /// This function can be defined by derived classes to + /// transform the data before it is sent; this can be + /// used for compression, encryption, etc. + /// The function must return a pointer to the modified data, + /// as well as the number of bytes pointed. + /// The default implementation provides the packet's data + /// without transforming it. + /// + /// \param size Variable to fill with the size of data to send + /// + /// \return Pointer to the array of bytes to send + /// + /// \see onReceive + /// + //////////////////////////////////////////////////////////// + virtual const void* onSend(std::size_t& size); + + //////////////////////////////////////////////////////////// + /// \brief Called after the packet is received over the network + /// + /// This function can be defined by derived classes to + /// transform the data after it is received; this can be + /// used for decompression, decryption, etc. + /// The function receives a pointer to the received data, + /// and must fill the packet with the transformed bytes. + /// The default implementation fills the packet directly + /// without transforming the data. + /// + /// \param data Pointer to the received bytes + /// \param size Number of bytes + /// + /// \see onSend + /// + //////////////////////////////////////////////////////////// + virtual void onReceive(const void* data, std::size_t size); + +private: + + //////////////////////////////////////////////////////////// + /// Disallow comparisons between packets + /// + //////////////////////////////////////////////////////////// + bool operator ==(const Packet& right) const; + bool operator !=(const Packet& right) const; + + //////////////////////////////////////////////////////////// + /// \brief Check if the packet can extract a given number of bytes + /// + /// This function updates accordingly the state of the packet. + /// + /// \param size Size to check + /// + /// \return True if \a size bytes can be read from the packet + /// + //////////////////////////////////////////////////////////// + bool checkSize(std::size_t size); + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + std::vector m_data; ///< Data stored in the packet + std::size_t m_readPos; ///< Current reading position in the packet + std::size_t m_sendPos; ///< Current send position in the packet (for handling partial sends) + bool m_isValid; ///< Reading state of the packet +}; + +} // namespace sf + + +#endif // SFML_PACKET_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Packet +/// \ingroup network +/// +/// Packets provide a safe and easy way to serialize data, +/// in order to send it over the network using sockets +/// (sf::TcpSocket, sf::UdpSocket). +/// +/// Packets solve 2 fundamental problems that arise when +/// transferring data over the network: +/// \li data is interpreted correctly according to the endianness +/// \li the bounds of the packet are preserved (one send == one receive) +/// +/// The sf::Packet class provides both input and output modes. +/// It is designed to follow the behavior of standard C++ streams, +/// using operators >> and << to extract and insert data. +/// +/// It is recommended to use only fixed-size types (like sf::Int32, etc.), +/// to avoid possible differences between the sender and the receiver. +/// Indeed, the native C++ types may have different sizes on two platforms +/// and your data may be corrupted if that happens. +/// +/// Usage example: +/// \code +/// sf::Uint32 x = 24; +/// std::string s = "hello"; +/// double d = 5.89; +/// +/// // Group the variables to send into a packet +/// sf::Packet packet; +/// packet << x << s << d; +/// +/// // Send it over the network (socket is a valid sf::TcpSocket) +/// socket.send(packet); +/// +/// ----------------------------------------------------------------- +/// +/// // Receive the packet at the other end +/// sf::Packet packet; +/// socket.receive(packet); +/// +/// // Extract the variables contained in the packet +/// sf::Uint32 x; +/// std::string s; +/// double d; +/// if (packet >> x >> s >> d) +/// { +/// // Data extracted successfully... +/// } +/// \endcode +/// +/// Packets have built-in operator >> and << overloads for +/// standard types: +/// \li bool +/// \li fixed-size integer types (sf::Int8/16/32, sf::Uint8/16/32) +/// \li floating point numbers (float, double) +/// \li string types (char*, wchar_t*, std::string, std::wstring, sf::String) +/// +/// Like standard streams, it is also possible to define your own +/// overloads of operators >> and << in order to handle your +/// custom types. +/// +/// \code +/// struct MyStruct +/// { +/// float number; +/// sf::Int8 integer; +/// std::string str; +/// }; +/// +/// sf::Packet& operator <<(sf::Packet& packet, const MyStruct& m) +/// { +/// return packet << m.number << m.integer << m.str; +/// } +/// +/// sf::Packet& operator >>(sf::Packet& packet, MyStruct& m) +/// { +/// return packet >> m.number >> m.integer >> m.str; +/// } +/// \endcode +/// +/// Packets also provide an extra feature that allows to apply +/// custom transformations to the data before it is sent, +/// and after it is received. This is typically used to +/// handle automatic compression or encryption of the data. +/// This is achieved by inheriting from sf::Packet, and overriding +/// the onSend and onReceive functions. +/// +/// Here is an example: +/// \code +/// class ZipPacket : public sf::Packet +/// { +/// virtual const void* onSend(std::size_t& size) +/// { +/// const void* srcData = getData(); +/// std::size_t srcSize = getDataSize(); +/// +/// return MySuperZipFunction(srcData, srcSize, &size); +/// } +/// +/// virtual void onReceive(const void* data, std::size_t size) +/// { +/// std::size_t dstSize; +/// const void* dstData = MySuperUnzipFunction(data, size, &dstSize); +/// +/// append(dstData, dstSize); +/// } +/// }; +/// +/// // Use like regular packets: +/// ZipPacket packet; +/// packet << x << s << d; +/// ... +/// \endcode +/// +/// \see sf::TcpSocket, sf::UdpSocket +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Network/Socket.hpp b/mcclone/external/sfml23/include/SFML/Network/Socket.hpp new file mode 100644 index 0000000..d63f55e --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Network/Socket.hpp @@ -0,0 +1,219 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOCKET_HPP +#define SFML_SOCKET_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include + + +namespace sf +{ +class SocketSelector; + +//////////////////////////////////////////////////////////// +/// \brief Base class for all the socket types +/// +//////////////////////////////////////////////////////////// +class SFML_NETWORK_API Socket : NonCopyable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Status codes that may be returned by socket functions + /// + //////////////////////////////////////////////////////////// + enum Status + { + Done, ///< The socket has sent / received the data + NotReady, ///< The socket is not ready to send / receive data yet + Partial, ///< The socket sent a part of the data + Disconnected, ///< The TCP socket has been disconnected + Error ///< An unexpected error happened + }; + + //////////////////////////////////////////////////////////// + /// \brief Some special values used by sockets + /// + //////////////////////////////////////////////////////////// + enum + { + AnyPort = 0 ///< Special value that tells the system to pick any available port + }; + +public: + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + //////////////////////////////////////////////////////////// + virtual ~Socket(); + + //////////////////////////////////////////////////////////// + /// \brief Set the blocking state of the socket + /// + /// In blocking mode, calls will not return until they have + /// completed their task. For example, a call to Receive in + /// blocking mode won't return until some data was actually + /// received. + /// In non-blocking mode, calls will always return immediately, + /// using the return code to signal whether there was data + /// available or not. + /// By default, all sockets are blocking. + /// + /// \param blocking True to set the socket as blocking, false for non-blocking + /// + /// \see isBlocking + /// + //////////////////////////////////////////////////////////// + void setBlocking(bool blocking); + + //////////////////////////////////////////////////////////// + /// \brief Tell whether the socket is in blocking or non-blocking mode + /// + /// \return True if the socket is blocking, false otherwise + /// + /// \see setBlocking + /// + //////////////////////////////////////////////////////////// + bool isBlocking() const; + +protected: + + //////////////////////////////////////////////////////////// + /// \brief Types of protocols that the socket can use + /// + //////////////////////////////////////////////////////////// + enum Type + { + Tcp, ///< TCP protocol + Udp ///< UDP protocol + }; + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// This constructor can only be accessed by derived classes. + /// + /// \param type Type of the socket (TCP or UDP) + /// + //////////////////////////////////////////////////////////// + Socket(Type type); + + //////////////////////////////////////////////////////////// + /// \brief Return the internal handle of the socket + /// + /// The returned handle may be invalid if the socket + /// was not created yet (or already destroyed). + /// This function can only be accessed by derived classes. + /// + /// \return The internal (OS-specific) handle of the socket + /// + //////////////////////////////////////////////////////////// + SocketHandle getHandle() const; + + //////////////////////////////////////////////////////////// + /// \brief Create the internal representation of the socket + /// + /// This function can only be accessed by derived classes. + /// + //////////////////////////////////////////////////////////// + void create(); + + //////////////////////////////////////////////////////////// + /// \brief Create the internal representation of the socket + /// from a socket handle + /// + /// This function can only be accessed by derived classes. + /// + /// \param handle OS-specific handle of the socket to wrap + /// + //////////////////////////////////////////////////////////// + void create(SocketHandle handle); + + //////////////////////////////////////////////////////////// + /// \brief Close the socket gracefully + /// + /// This function can only be accessed by derived classes. + /// + //////////////////////////////////////////////////////////// + void close(); + +private: + + friend class SocketSelector; + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + Type m_type; ///< Type of the socket (TCP or UDP) + SocketHandle m_socket; ///< Socket descriptor + bool m_isBlocking; ///< Current blocking mode of the socket +}; + +} // namespace sf + + +#endif // SFML_SOCKET_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Socket +/// \ingroup network +/// +/// This class mainly defines internal stuff to be used by +/// derived classes. +/// +/// The only public features that it defines, and which +/// is therefore common to all the socket classes, is the +/// blocking state. All sockets can be set as blocking or +/// non-blocking. +/// +/// In blocking mode, socket functions will hang until +/// the operation completes, which means that the entire +/// program (well, in fact the current thread if you use +/// multiple ones) will be stuck waiting for your socket +/// operation to complete. +/// +/// In non-blocking mode, all the socket functions will +/// return immediately. If the socket is not ready to complete +/// the requested operation, the function simply returns +/// the proper status code (Socket::NotReady). +/// +/// The default mode, which is blocking, is the one that is +/// generally used, in combination with threads or selectors. +/// The non-blocking mode is rather used in real-time +/// applications that run an endless loop that can poll +/// the socket often enough, and cannot afford blocking +/// this loop. +/// +/// \see sf::TcpListener, sf::TcpSocket, sf::UdpSocket +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Network/SocketHandle.hpp b/mcclone/external/sfml23/include/SFML/Network/SocketHandle.hpp new file mode 100644 index 0000000..7808ab5 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Network/SocketHandle.hpp @@ -0,0 +1,57 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOCKETHANDLE_HPP +#define SFML_SOCKETHANDLE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + +#if defined(SFML_SYSTEM_WINDOWS) + #include +#endif + + +namespace sf +{ +//////////////////////////////////////////////////////////// +// Define the low-level socket handle type, specific to +// each platform +//////////////////////////////////////////////////////////// +#if defined(SFML_SYSTEM_WINDOWS) + + typedef UINT_PTR SocketHandle; + +#else + + typedef int SocketHandle; + +#endif + +} // namespace sf + + +#endif // SFML_SOCKETHANDLE_HPP diff --git a/mcclone/external/sfml23/include/SFML/Network/SocketSelector.hpp b/mcclone/external/sfml23/include/SFML/Network/SocketSelector.hpp new file mode 100644 index 0000000..4d334c6 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Network/SocketSelector.hpp @@ -0,0 +1,263 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SOCKETSELECTOR_HPP +#define SFML_SOCKETSELECTOR_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +class Socket; + +//////////////////////////////////////////////////////////// +/// \brief Multiplexer that allows to read from multiple sockets +/// +//////////////////////////////////////////////////////////// +class SFML_NETWORK_API SocketSelector +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + SocketSelector(); + + //////////////////////////////////////////////////////////// + /// \brief Copy constructor + /// + /// \param copy Instance to copy + /// + //////////////////////////////////////////////////////////// + SocketSelector(const SocketSelector& copy); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + //////////////////////////////////////////////////////////// + ~SocketSelector(); + + //////////////////////////////////////////////////////////// + /// \brief Add a new socket to the selector + /// + /// This function keeps a weak reference to the socket, + /// so you have to make sure that the socket is not destroyed + /// while it is stored in the selector. + /// This function does nothing if the socket is not valid. + /// + /// \param socket Reference to the socket to add + /// + /// \see remove, clear + /// + //////////////////////////////////////////////////////////// + void add(Socket& socket); + + //////////////////////////////////////////////////////////// + /// \brief Remove a socket from the selector + /// + /// This function doesn't destroy the socket, it simply + /// removes the reference that the selector has to it. + /// + /// \param socket Reference to the socket to remove + /// + /// \see add, clear + /// + //////////////////////////////////////////////////////////// + void remove(Socket& socket); + + //////////////////////////////////////////////////////////// + /// \brief Remove all the sockets stored in the selector + /// + /// This function doesn't destroy any instance, it simply + /// removes all the references that the selector has to + /// external sockets. + /// + /// \see add, remove + /// + //////////////////////////////////////////////////////////// + void clear(); + + //////////////////////////////////////////////////////////// + /// \brief Wait until one or more sockets are ready to receive + /// + /// This function returns as soon as at least one socket has + /// some data available to be received. To know which sockets are + /// ready, use the isReady function. + /// If you use a timeout and no socket is ready before the timeout + /// is over, the function returns false. + /// + /// \param timeout Maximum time to wait, (use Time::Zero for infinity) + /// + /// \return True if there are sockets ready, false otherwise + /// + /// \see isReady + /// + //////////////////////////////////////////////////////////// + bool wait(Time timeout = Time::Zero); + + //////////////////////////////////////////////////////////// + /// \brief Test a socket to know if it is ready to receive data + /// + /// This function must be used after a call to Wait, to know + /// which sockets are ready to receive data. If a socket is + /// ready, a call to receive will never block because we know + /// that there is data available to read. + /// Note that if this function returns true for a TcpListener, + /// this means that it is ready to accept a new connection. + /// + /// \param socket Socket to test + /// + /// \return True if the socket is ready to read, false otherwise + /// + /// \see isReady + /// + //////////////////////////////////////////////////////////// + bool isReady(Socket& socket) const; + + //////////////////////////////////////////////////////////// + /// \brief Overload of assignment operator + /// + /// \param right Instance to assign + /// + /// \return Reference to self + /// + //////////////////////////////////////////////////////////// + SocketSelector& operator =(const SocketSelector& right); + +private: + + struct SocketSelectorImpl; + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + SocketSelectorImpl* m_impl; ///< Opaque pointer to the implementation (which requires OS-specific types) +}; + +} // namespace sf + + +#endif // SFML_SOCKETSELECTOR_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::SocketSelector +/// \ingroup network +/// +/// Socket selectors provide a way to wait until some data is +/// available on a set of sockets, instead of just one. This +/// is convenient when you have multiple sockets that may +/// possibly receive data, but you don't know which one will +/// be ready first. In particular, it avoids to use a thread +/// for each socket; with selectors, a single thread can handle +/// all the sockets. +/// +/// All types of sockets can be used in a selector: +/// \li sf::TcpListener +/// \li sf::TcpSocket +/// \li sf::UdpSocket +/// +/// A selector doesn't store its own copies of the sockets +/// (socket classes are not copyable anyway), it simply keeps +/// a reference to the original sockets that you pass to the +/// "add" function. Therefore, you can't use the selector as a +/// socket container, you must store them outside and make sure +/// that they are alive as long as they are used in the selector. +/// +/// Using a selector is simple: +/// \li populate the selector with all the sockets that you want to observe +/// \li make it wait until there is data available on any of the sockets +/// \li test each socket to find out which ones are ready +/// +/// Usage example: +/// \code +/// // Create a socket to listen to new connections +/// sf::TcpListener listener; +/// listener.listen(55001); +/// +/// // Create a list to store the future clients +/// std::list clients; +/// +/// // Create a selector +/// sf::SocketSelector selector; +/// +/// // Add the listener to the selector +/// selector.add(listener); +/// +/// // Endless loop that waits for new connections +/// while (running) +/// { +/// // Make the selector wait for data on any socket +/// if (selector.wait()) +/// { +/// // Test the listener +/// if (selector.isReady(listener)) +/// { +/// // The listener is ready: there is a pending connection +/// sf::TcpSocket* client = new sf::TcpSocket; +/// if (listener.accept(*client) == sf::Socket::Done) +/// { +/// // Add the new client to the clients list +/// clients.push_back(client); +/// +/// // Add the new client to the selector so that we will +/// // be notified when he sends something +/// selector.add(*client); +/// } +/// else +/// { +/// // Error, we won't get a new connection, delete the socket +/// delete client; +/// } +/// } +/// else +/// { +/// // The listener socket is not ready, test all other sockets (the clients) +/// for (std::list::iterator it = clients.begin(); it != clients.end(); ++it) +/// { +/// sf::TcpSocket& client = **it; +/// if (selector.isReady(client)) +/// { +/// // The client has sent some data, we can receive it +/// sf::Packet packet; +/// if (client.receive(packet) == sf::Socket::Done) +/// { +/// ... +/// } +/// } +/// } +/// } +/// } +/// } +/// \endcode +/// +/// \see sf::Socket +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Network/TcpListener.hpp b/mcclone/external/sfml23/include/SFML/Network/TcpListener.hpp new file mode 100644 index 0000000..a46ef29 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Network/TcpListener.hpp @@ -0,0 +1,162 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_TCPLISTENER_HPP +#define SFML_TCPLISTENER_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +class TcpSocket; + +//////////////////////////////////////////////////////////// +/// \brief Socket that listens to new TCP connections +/// +//////////////////////////////////////////////////////////// +class SFML_NETWORK_API TcpListener : public Socket +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + TcpListener(); + + //////////////////////////////////////////////////////////// + /// \brief Get the port to which the socket is bound locally + /// + /// If the socket is not listening to a port, this function + /// returns 0. + /// + /// \return Port to which the socket is bound + /// + /// \see listen + /// + //////////////////////////////////////////////////////////// + unsigned short getLocalPort() const; + + //////////////////////////////////////////////////////////// + /// \brief Start listening for connections + /// + /// This functions makes the socket listen to the specified + /// port, waiting for new connections. + /// If the socket was previously listening to another port, + /// it will be stopped first and bound to the new port. + /// + /// \param port Port to listen for new connections + /// + /// \return Status code + /// + /// \see accept, close + /// + //////////////////////////////////////////////////////////// + Status listen(unsigned short port); + + //////////////////////////////////////////////////////////// + /// \brief Stop listening and close the socket + /// + /// This function gracefully stops the listener. If the + /// socket is not listening, this function has no effect. + /// + /// \see listen + /// + //////////////////////////////////////////////////////////// + void close(); + + //////////////////////////////////////////////////////////// + /// \brief Accept a new connection + /// + /// If the socket is in blocking mode, this function will + /// not return until a connection is actually received. + /// + /// \param socket Socket that will hold the new connection + /// + /// \return Status code + /// + /// \see listen + /// + //////////////////////////////////////////////////////////// + Status accept(TcpSocket& socket); +}; + + +} // namespace sf + + +#endif // SFML_TCPLISTENER_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::TcpListener +/// \ingroup network +/// +/// A listener socket is a special type of socket that listens to +/// a given port and waits for connections on that port. +/// This is all it can do. +/// +/// When a new connection is received, you must call accept and +/// the listener returns a new instance of sf::TcpSocket that +/// is properly initialized and can be used to communicate with +/// the new client. +/// +/// Listener sockets are specific to the TCP protocol, +/// UDP sockets are connectionless and can therefore communicate +/// directly. As a consequence, a listener socket will always +/// return the new connections as sf::TcpSocket instances. +/// +/// A listener is automatically closed on destruction, like all +/// other types of socket. However if you want to stop listening +/// before the socket is destroyed, you can call its close() +/// function. +/// +/// Usage example: +/// \code +/// // Create a listener socket and make it wait for new +/// // connections on port 55001 +/// sf::TcpListener listener; +/// listener.listen(55001); +/// +/// // Endless loop that waits for new connections +/// while (running) +/// { +/// sf::TcpSocket client; +/// if (listener.accept(client) == sf::Socket::Done) +/// { +/// // A new client just connected! +/// std::cout << "New connection received from " << client.getRemoteAddress() << std::endl; +/// doSomethingWith(client); +/// } +/// } +/// \endcode +/// +/// \see sf::TcpSocket, sf::Socket +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Network/TcpSocket.hpp b/mcclone/external/sfml23/include/SFML/Network/TcpSocket.hpp new file mode 100644 index 0000000..a402506 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Network/TcpSocket.hpp @@ -0,0 +1,315 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_TCPSOCKET_HPP +#define SFML_TCPSOCKET_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +namespace sf +{ +class TcpListener; +class IpAddress; +class Packet; + +//////////////////////////////////////////////////////////// +/// \brief Specialized socket using the TCP protocol +/// +//////////////////////////////////////////////////////////// +class SFML_NETWORK_API TcpSocket : public Socket +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + TcpSocket(); + + //////////////////////////////////////////////////////////// + /// \brief Get the port to which the socket is bound locally + /// + /// If the socket is not connected, this function returns 0. + /// + /// \return Port to which the socket is bound + /// + /// \see connect, getRemotePort + /// + //////////////////////////////////////////////////////////// + unsigned short getLocalPort() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the address of the connected peer + /// + /// It the socket is not connected, this function returns + /// sf::IpAddress::None. + /// + /// \return Address of the remote peer + /// + /// \see getRemotePort + /// + //////////////////////////////////////////////////////////// + IpAddress getRemoteAddress() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the port of the connected peer to which + /// the socket is connected + /// + /// If the socket is not connected, this function returns 0. + /// + /// \return Remote port to which the socket is connected + /// + /// \see getRemoteAddress + /// + //////////////////////////////////////////////////////////// + unsigned short getRemotePort() const; + + //////////////////////////////////////////////////////////// + /// \brief Connect the socket to a remote peer + /// + /// In blocking mode, this function may take a while, especially + /// if the remote peer is not reachable. The last parameter allows + /// you to stop trying to connect after a given timeout. + /// If the socket was previously connected, it is first disconnected. + /// + /// \param remoteAddress Address of the remote peer + /// \param remotePort Port of the remote peer + /// \param timeout Optional maximum time to wait + /// + /// \return Status code + /// + /// \see disconnect + /// + //////////////////////////////////////////////////////////// + Status connect(const IpAddress& remoteAddress, unsigned short remotePort, Time timeout = Time::Zero); + + //////////////////////////////////////////////////////////// + /// \brief Disconnect the socket from its remote peer + /// + /// This function gracefully closes the connection. If the + /// socket is not connected, this function has no effect. + /// + /// \see connect + /// + //////////////////////////////////////////////////////////// + void disconnect(); + + //////////////////////////////////////////////////////////// + /// \brief Send raw data to the remote peer + /// + /// To be able to handle partial sends over non-blocking + /// sockets, use the send(const void*, std::size_t, std::size_t&) + /// overload instead. + /// This function will fail if the socket is not connected. + /// + /// \param data Pointer to the sequence of bytes to send + /// \param size Number of bytes to send + /// + /// \return Status code + /// + /// \see receive + /// + //////////////////////////////////////////////////////////// + Status send(const void* data, std::size_t size); + + //////////////////////////////////////////////////////////// + /// \brief Send raw data to the remote peer + /// + /// This function will fail if the socket is not connected. + /// + /// \param data Pointer to the sequence of bytes to send + /// \param size Number of bytes to send + /// \param sent The number of bytes sent will be written here + /// + /// \return Status code + /// + /// \see receive + /// + //////////////////////////////////////////////////////////// + Status send(const void* data, std::size_t size, std::size_t& sent); + + //////////////////////////////////////////////////////////// + /// \brief Receive raw data from the remote peer + /// + /// In blocking mode, this function will wait until some + /// bytes are actually received. + /// This function will fail if the socket is not connected. + /// + /// \param data Pointer to the array to fill with the received bytes + /// \param size Maximum number of bytes that can be received + /// \param received This variable is filled with the actual number of bytes received + /// + /// \return Status code + /// + /// \see send + /// + //////////////////////////////////////////////////////////// + Status receive(void* data, std::size_t size, std::size_t& received); + + //////////////////////////////////////////////////////////// + /// \brief Send a formatted packet of data to the remote peer + /// + /// In non-blocking mode, if this function returns sf::Socket::Partial, + /// you \em must retry sending the same unmodified packet before sending + /// anything else in order to guarantee the packet arrives at the remote + /// peer uncorrupted. + /// This function will fail if the socket is not connected. + /// + /// \param packet Packet to send + /// + /// \return Status code + /// + /// \see receive + /// + //////////////////////////////////////////////////////////// + Status send(Packet& packet); + + //////////////////////////////////////////////////////////// + /// \brief Receive a formatted packet of data from the remote peer + /// + /// In blocking mode, this function will wait until the whole packet + /// has been received. + /// This function will fail if the socket is not connected. + /// + /// \param packet Packet to fill with the received data + /// + /// \return Status code + /// + /// \see send + /// + //////////////////////////////////////////////////////////// + Status receive(Packet& packet); + +private: + + friend class TcpListener; + + //////////////////////////////////////////////////////////// + /// \brief Structure holding the data of a pending packet + /// + //////////////////////////////////////////////////////////// + struct PendingPacket + { + PendingPacket(); + + Uint32 Size; ///< Data of packet size + std::size_t SizeReceived; ///< Number of size bytes received so far + std::vector Data; ///< Data of the packet + }; + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + PendingPacket m_pendingPacket; ///< Temporary data of the packet currently being received +}; + +} // namespace sf + + +#endif // SFML_TCPSOCKET_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::TcpSocket +/// \ingroup network +/// +/// TCP is a connected protocol, which means that a TCP +/// socket can only communicate with the host it is connected +/// to. It can't send or receive anything if it is not connected. +/// +/// The TCP protocol is reliable but adds a slight overhead. +/// It ensures that your data will always be received in order +/// and without errors (no data corrupted, lost or duplicated). +/// +/// When a socket is connected to a remote host, you can +/// retrieve informations about this host with the +/// getRemoteAddress and getRemotePort functions. You can +/// also get the local port to which the socket is bound +/// (which is automatically chosen when the socket is connected), +/// with the getLocalPort function. +/// +/// Sending and receiving data can use either the low-level +/// or the high-level functions. The low-level functions +/// process a raw sequence of bytes, and cannot ensure that +/// one call to Send will exactly match one call to Receive +/// at the other end of the socket. +/// +/// The high-level interface uses packets (see sf::Packet), +/// which are easier to use and provide more safety regarding +/// the data that is exchanged. You can look at the sf::Packet +/// class to get more details about how they work. +/// +/// The socket is automatically disconnected when it is destroyed, +/// but if you want to explicitly close the connection while +/// the socket instance is still alive, you can call disconnect. +/// +/// Usage example: +/// \code +/// // ----- The client ----- +/// +/// // Create a socket and connect it to 192.168.1.50 on port 55001 +/// sf::TcpSocket socket; +/// socket.connect("192.168.1.50", 55001); +/// +/// // Send a message to the connected host +/// std::string message = "Hi, I am a client"; +/// socket.send(message.c_str(), message.size() + 1); +/// +/// // Receive an answer from the server +/// char buffer[1024]; +/// std::size_t received = 0; +/// socket.receive(buffer, sizeof(buffer), received); +/// std::cout << "The server said: " << buffer << std::endl; +/// +/// // ----- The server ----- +/// +/// // Create a listener to wait for incoming connections on port 55001 +/// sf::TcpListener listener; +/// listener.listen(55001); +/// +/// // Wait for a connection +/// sf::TcpSocket socket; +/// listener.accept(socket); +/// std::cout << "New client connected: " << socket.getRemoteAddress() << std::endl; +/// +/// // Receive a message from the client +/// char buffer[1024]; +/// std::size_t received = 0; +/// socket.receive(buffer, sizeof(buffer), received); +/// std::cout << "The client said: " << buffer << std::endl; +/// +/// // Send an answer +/// std::string message = "Welcome, client"; +/// socket.send(message.c_str(), message.size() + 1); +/// \endcode +/// +/// \see sf::Socket, sf::UdpSocket, sf::Packet +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Network/UdpSocket.hpp b/mcclone/external/sfml23/include/SFML/Network/UdpSocket.hpp new file mode 100644 index 0000000..f00c257 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Network/UdpSocket.hpp @@ -0,0 +1,283 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_UDPSOCKET_HPP +#define SFML_UDPSOCKET_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +namespace sf +{ +class IpAddress; +class Packet; + +//////////////////////////////////////////////////////////// +/// \brief Specialized socket using the UDP protocol +/// +//////////////////////////////////////////////////////////// +class SFML_NETWORK_API UdpSocket : public Socket +{ +public: + + //////////////////////////////////////////////////////////// + // Constants + //////////////////////////////////////////////////////////// + enum + { + MaxDatagramSize = 65507 ///< The maximum number of bytes that can be sent in a single UDP datagram + }; + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + UdpSocket(); + + //////////////////////////////////////////////////////////// + /// \brief Get the port to which the socket is bound locally + /// + /// If the socket is not bound to a port, this function + /// returns 0. + /// + /// \return Port to which the socket is bound + /// + /// \see bind + /// + //////////////////////////////////////////////////////////// + unsigned short getLocalPort() const; + + //////////////////////////////////////////////////////////// + /// \brief Bind the socket to a specific port + /// + /// Binding the socket to a port is necessary for being + /// able to receive data on that port. + /// You can use the special value Socket::AnyPort to tell the + /// system to automatically pick an available port, and then + /// call getLocalPort to retrieve the chosen port. + /// + /// \param port Port to bind the socket to + /// + /// \return Status code + /// + /// \see unbind, getLocalPort + /// + //////////////////////////////////////////////////////////// + Status bind(unsigned short port); + + //////////////////////////////////////////////////////////// + /// \brief Unbind the socket from the local port to which it is bound + /// + /// The port that the socket was previously using is immediately + /// available after this function is called. If the + /// socket is not bound to a port, this function has no effect. + /// + /// \see bind + /// + //////////////////////////////////////////////////////////// + void unbind(); + + //////////////////////////////////////////////////////////// + /// \brief Send raw data to a remote peer + /// + /// Make sure that \a size is not greater than + /// UdpSocket::MaxDatagramSize, otherwise this function will + /// fail and no data will be sent. + /// + /// \param data Pointer to the sequence of bytes to send + /// \param size Number of bytes to send + /// \param remoteAddress Address of the receiver + /// \param remotePort Port of the receiver to send the data to + /// + /// \return Status code + /// + /// \see receive + /// + //////////////////////////////////////////////////////////// + Status send(const void* data, std::size_t size, const IpAddress& remoteAddress, unsigned short remotePort); + + //////////////////////////////////////////////////////////// + /// \brief Receive raw data from a remote peer + /// + /// In blocking mode, this function will wait until some + /// bytes are actually received. + /// Be careful to use a buffer which is large enough for + /// the data that you intend to receive, if it is too small + /// then an error will be returned and *all* the data will + /// be lost. + /// + /// \param data Pointer to the array to fill with the received bytes + /// \param size Maximum number of bytes that can be received + /// \param received This variable is filled with the actual number of bytes received + /// \param remoteAddress Address of the peer that sent the data + /// \param remotePort Port of the peer that sent the data + /// + /// \return Status code + /// + /// \see send + /// + //////////////////////////////////////////////////////////// + Status receive(void* data, std::size_t size, std::size_t& received, IpAddress& remoteAddress, unsigned short& remotePort); + + //////////////////////////////////////////////////////////// + /// \brief Send a formatted packet of data to a remote peer + /// + /// Make sure that the packet size is not greater than + /// UdpSocket::MaxDatagramSize, otherwise this function will + /// fail and no data will be sent. + /// + /// \param packet Packet to send + /// \param remoteAddress Address of the receiver + /// \param remotePort Port of the receiver to send the data to + /// + /// \return Status code + /// + /// \see receive + /// + //////////////////////////////////////////////////////////// + Status send(Packet& packet, const IpAddress& remoteAddress, unsigned short remotePort); + + //////////////////////////////////////////////////////////// + /// \brief Receive a formatted packet of data from a remote peer + /// + /// In blocking mode, this function will wait until the whole packet + /// has been received. + /// + /// \param packet Packet to fill with the received data + /// \param remoteAddress Address of the peer that sent the data + /// \param remotePort Port of the peer that sent the data + /// + /// \return Status code + /// + /// \see send + /// + //////////////////////////////////////////////////////////// + Status receive(Packet& packet, IpAddress& remoteAddress, unsigned short& remotePort); + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + std::vector m_buffer; ///< Temporary buffer holding the received data in Receive(Packet) +}; + +} // namespace sf + + +#endif // SFML_UDPSOCKET_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::UdpSocket +/// \ingroup network +/// +/// A UDP socket is a connectionless socket. Instead of +/// connecting once to a remote host, like TCP sockets, +/// it can send to and receive from any host at any time. +/// +/// It is a datagram protocol: bounded blocks of data (datagrams) +/// are transfered over the network rather than a continuous +/// stream of data (TCP). Therefore, one call to send will always +/// match one call to receive (if the datagram is not lost), +/// with the same data that was sent. +/// +/// The UDP protocol is lightweight but unreliable. Unreliable +/// means that datagrams may be duplicated, be lost or +/// arrive reordered. However, if a datagram arrives, its +/// data is guaranteed to be valid. +/// +/// UDP is generally used for real-time communication +/// (audio or video streaming, real-time games, etc.) where +/// speed is crucial and lost data doesn't matter much. +/// +/// Sending and receiving data can use either the low-level +/// or the high-level functions. The low-level functions +/// process a raw sequence of bytes, whereas the high-level +/// interface uses packets (see sf::Packet), which are easier +/// to use and provide more safety regarding the data that is +/// exchanged. You can look at the sf::Packet class to get +/// more details about how they work. +/// +/// It is important to note that UdpSocket is unable to send +/// datagrams bigger than MaxDatagramSize. In this case, it +/// returns an error and doesn't send anything. This applies +/// to both raw data and packets. Indeed, even packets are +/// unable to split and recompose data, due to the unreliability +/// of the protocol (dropped, mixed or duplicated datagrams may +/// lead to a big mess when trying to recompose a packet). +/// +/// If the socket is bound to a port, it is automatically +/// unbound from it when the socket is destroyed. However, +/// you can unbind the socket explicitly with the Unbind +/// function if necessary, to stop receiving messages or +/// make the port available for other sockets. +/// +/// Usage example: +/// \code +/// // ----- The client ----- +/// +/// // Create a socket and bind it to the port 55001 +/// sf::UdpSocket socket; +/// socket.bind(55001); +/// +/// // Send a message to 192.168.1.50 on port 55002 +/// std::string message = "Hi, I am " + sf::IpAddress::getLocalAddress().toString(); +/// socket.send(message.c_str(), message.size() + 1, "192.168.1.50", 55002); +/// +/// // Receive an answer (most likely from 192.168.1.50, but could be anyone else) +/// char buffer[1024]; +/// std::size_t received = 0; +/// sf::IpAddress sender; +/// unsigned short port; +/// socket.receive(buffer, sizeof(buffer), received, sender, port); +/// std::cout << sender.ToString() << " said: " << buffer << std::endl; +/// +/// // ----- The server ----- +/// +/// // Create a socket and bind it to the port 55002 +/// sf::UdpSocket socket; +/// socket.bind(55002); +/// +/// // Receive a message from anyone +/// char buffer[1024]; +/// std::size_t received = 0; +/// sf::IpAddress sender; +/// unsigned short port; +/// socket.receive(buffer, sizeof(buffer), received, sender, port); +/// std::cout << sender.ToString() << " said: " << buffer << std::endl; +/// +/// // Send an answer +/// std::string message = "Welcome " + sender.toString(); +/// socket.send(message.c_str(), message.size() + 1, sender, port); +/// \endcode +/// +/// \see sf::Socket, sf::TcpSocket, sf::Packet +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/OpenGL.hpp b/mcclone/external/sfml23/include/SFML/OpenGL.hpp new file mode 100644 index 0000000..a5d964f --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/OpenGL.hpp @@ -0,0 +1,74 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_OPENGL_HPP +#define SFML_OPENGL_HPP + + +//////////////////////////////////////////////////////////// +/// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +/// This file just includes the OpenGL headers, +/// which have actually different paths on each system +//////////////////////////////////////////////////////////// +#if defined(SFML_SYSTEM_WINDOWS) + + // The Visual C++ version of gl.h uses WINGDIAPI and APIENTRY but doesn't define them + #ifdef _MSC_VER + #include + #endif + + #include + +#elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_FREEBSD) + + #if defined(SFML_OPENGL_ES) + #include + #include + #else + #include + #endif + +#elif defined(SFML_SYSTEM_MACOS) + + #include + +#elif defined (SFML_SYSTEM_IOS) + + #include + #include + +#elif defined (SFML_SYSTEM_ANDROID) + + #include + #include + +#endif + + +#endif // SFML_OPENGL_HPP diff --git a/mcclone/external/sfml23/include/SFML/System.hpp b/mcclone/external/sfml23/include/SFML/System.hpp new file mode 100644 index 0000000..6af0652 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System.hpp @@ -0,0 +1,60 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SYSTEM_HPP +#define SFML_SYSTEM_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif // SFML_SYSTEM_HPP + +//////////////////////////////////////////////////////////// +/// \defgroup system System module +/// +/// Base module of SFML, defining various utilities. It provides +/// vector classes, Unicode strings and conversion functions, +/// threads and mutexes, timing classes. +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/System/Clock.hpp b/mcclone/external/sfml23/include/SFML/System/Clock.hpp new file mode 100644 index 0000000..684c616 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/Clock.hpp @@ -0,0 +1,117 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_CLOCK_HPP +#define SFML_CLOCK_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Utility class that measures the elapsed time +/// +//////////////////////////////////////////////////////////// +class SFML_SYSTEM_API Clock +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// The clock starts automatically after being constructed. + /// + //////////////////////////////////////////////////////////// + Clock(); + + //////////////////////////////////////////////////////////// + /// \brief Get the elapsed time + /// + /// This function returns the time elapsed since the last call + /// to restart() (or the construction of the instance if restart() + /// has not been called). + /// + /// \return Time elapsed + /// + //////////////////////////////////////////////////////////// + Time getElapsedTime() const; + + //////////////////////////////////////////////////////////// + /// \brief Restart the clock + /// + /// This function puts the time counter back to zero. + /// It also returns the time elapsed since the clock was started. + /// + /// \return Time elapsed + /// + //////////////////////////////////////////////////////////// + Time restart(); + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + Time m_startTime; ///< Time of last reset, in microseconds +}; + +} // namespace sf + + +#endif // SFML_CLOCK_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Clock +/// \ingroup system +/// +/// sf::Clock is a lightweight class for measuring time. +/// +/// Its provides the most precise time that the underlying +/// OS can achieve (generally microseconds or nanoseconds). +/// It also ensures monotonicity, which means that the returned +/// time can never go backward, even if the system time is +/// changed. +/// +/// Usage example: +/// \code +/// sf::Clock clock; +/// ... +/// Time time1 = clock.getElapsedTime(); +/// ... +/// Time time2 = clock.restart(); +/// \endcode +/// +/// The sf::Time value returned by the clock can then be +/// converted to a number of seconds, milliseconds or even +/// microseconds. +/// +/// \see sf::Time +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/System/Err.hpp b/mcclone/external/sfml23/include/SFML/System/Err.hpp new file mode 100644 index 0000000..1c5b468 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/Err.hpp @@ -0,0 +1,80 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_ERR_HPP +#define SFML_ERR_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Standard stream used by SFML to output warnings and errors +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API std::ostream& err(); + +} // namespace sf + + +#endif // SFML_ERR_HPP + + +//////////////////////////////////////////////////////////// +/// \fn sf::err +/// \ingroup system +/// +/// By default, sf::err() outputs to the same location as std::cerr, +/// (-> the stderr descriptor) which is the console if there's +/// one available. +/// +/// It is a standard std::ostream instance, so it supports all the +/// insertion operations defined by the STL +/// (operator <<, manipulators, etc.). +/// +/// sf::err() can be redirected to write to another output, independently +/// of std::cerr, by using the rdbuf() function provided by the +/// std::ostream class. +/// +/// Example: +/// \code +/// // Redirect to a file +/// std::ofstream file("sfml-log.txt"); +/// std::streambuf* previous = sf::err().rdbuf(file.rdbuf()); +/// +/// // Redirect to nothing +/// sf::err().rdbuf(NULL); +/// +/// // Restore the original output +/// sf::err().rdbuf(previous); +/// \endcode +/// +/// \return Reference to std::ostream representing the SFML error stream +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/System/Export.hpp b/mcclone/external/sfml23/include/SFML/System/Export.hpp new file mode 100644 index 0000000..f4adc10 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/Export.hpp @@ -0,0 +1,48 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SYSTEM_EXPORT_HPP +#define SFML_SYSTEM_EXPORT_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +// Define portable import / export macros +//////////////////////////////////////////////////////////// +#if defined(SFML_SYSTEM_EXPORTS) + + #define SFML_SYSTEM_API SFML_API_EXPORT + +#else + + #define SFML_SYSTEM_API SFML_API_IMPORT + +#endif + + +#endif // SFML_SYSTEM_EXPORT_HPP diff --git a/mcclone/external/sfml23/include/SFML/System/FileInputStream.hpp b/mcclone/external/sfml23/include/SFML/System/FileInputStream.hpp new file mode 100644 index 0000000..995351c --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/FileInputStream.hpp @@ -0,0 +1,169 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_FILEINPUTSTREAM_HPP +#define SFML_FILEINPUTSTREAM_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include + +#ifdef ANDROID +namespace sf +{ +namespace priv +{ +class SFML_SYSTEM_API ResourceStream; +} +} +#endif + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Implementation of input stream based on a file +/// +//////////////////////////////////////////////////////////// +class SFML_SYSTEM_API FileInputStream : public InputStream, NonCopyable +{ +public: + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + FileInputStream(); + + //////////////////////////////////////////////////////////// + /// \brief Default destructor + /// + //////////////////////////////////////////////////////////// + virtual ~FileInputStream(); + + //////////////////////////////////////////////////////////// + /// \brief Open the stream from a file path + /// + /// \param filename Name of the file to open + /// + /// \return True on success, false on error + /// + //////////////////////////////////////////////////////////// + bool open(const std::string& filename); + + //////////////////////////////////////////////////////////// + /// \brief Read data from the stream + /// + /// After reading, the stream's reading position must be + /// advanced by the amount of bytes read. + /// + /// \param data Buffer where to copy the read data + /// \param size Desired number of bytes to read + /// + /// \return The number of bytes actually read, or -1 on error + /// + //////////////////////////////////////////////////////////// + virtual Int64 read(void* data, Int64 size); + + //////////////////////////////////////////////////////////// + /// \brief Change the current reading position + /// + /// \param position The position to seek to, from the beginning + /// + /// \return The position actually sought to, or -1 on error + /// + //////////////////////////////////////////////////////////// + virtual Int64 seek(Int64 position); + + //////////////////////////////////////////////////////////// + /// \brief Get the current reading position in the stream + /// + /// \return The current position, or -1 on error. + /// + //////////////////////////////////////////////////////////// + virtual Int64 tell(); + + //////////////////////////////////////////////////////////// + /// \brief Return the size of the stream + /// + /// \return The total number of bytes available in the stream, or -1 on error + /// + //////////////////////////////////////////////////////////// + virtual Int64 getSize(); + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// +#ifdef ANDROID + priv::ResourceStream* m_file; +#else + std::FILE* m_file; ///< stdio file stream +#endif +}; + +} // namespace sf + + +#endif // SFML_FILEINPUTSTREAM_HPP + + +//////////////////////////////////////////////////////////// +/// \class FileInputStream +/// \ingroup system +/// +/// This class is a specialization of InputStream that +/// reads from a file on disk. +/// +/// It wraps a file in the common InputStream interface +/// and therefore allows to use generic classes or functions +/// that accept such a stream, with a file on disk as the data +/// source. +/// +/// In addition to the virtual functions inherited from +/// InputStream, FileInputStream adds a function to +/// specify the file to open. +/// +/// SFML resource classes can usually be loaded directly from +/// a filename, so this class shouldn't be useful to you unless +/// you create your own algorithms that operate on a InputStream. +/// +/// Usage example: +/// \code +/// void process(InputStream& stream); +/// +/// FileStream stream; +/// if (stream.open("some_file.dat")) +/// process(stream); +/// \endcode +/// +/// InputStream, MemoryStream +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/System/InputStream.hpp b/mcclone/external/sfml23/include/SFML/System/InputStream.hpp new file mode 100644 index 0000000..e5694fa --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/InputStream.hpp @@ -0,0 +1,152 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_INPUTSTREAM_HPP +#define SFML_INPUTSTREAM_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Abstract class for custom file input streams +/// +//////////////////////////////////////////////////////////// +class SFML_SYSTEM_API InputStream +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Virtual destructor + /// + //////////////////////////////////////////////////////////// + virtual ~InputStream() {} + + //////////////////////////////////////////////////////////// + /// \brief Read data from the stream + /// + /// After reading, the stream's reading position must be + /// advanced by the amount of bytes read. + /// + /// \param data Buffer where to copy the read data + /// \param size Desired number of bytes to read + /// + /// \return The number of bytes actually read, or -1 on error + /// + //////////////////////////////////////////////////////////// + virtual Int64 read(void* data, Int64 size) = 0; + + //////////////////////////////////////////////////////////// + /// \brief Change the current reading position + /// + /// \param position The position to seek to, from the beginning + /// + /// \return The position actually sought to, or -1 on error + /// + //////////////////////////////////////////////////////////// + virtual Int64 seek(Int64 position) = 0; + + //////////////////////////////////////////////////////////// + /// \brief Get the current reading position in the stream + /// + /// \return The current position, or -1 on error. + /// + //////////////////////////////////////////////////////////// + virtual Int64 tell() = 0; + + //////////////////////////////////////////////////////////// + /// \brief Return the size of the stream + /// + /// \return The total number of bytes available in the stream, or -1 on error + /// + //////////////////////////////////////////////////////////// + virtual Int64 getSize() = 0; +}; + +} // namespace sf + + +#endif // SFML_INPUTSTREAM_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::InputStream +/// \ingroup system +/// +/// This class allows users to define their own file input sources +/// from which SFML can load resources. +/// +/// SFML resource classes like sf::Texture and +/// sf::SoundBuffer provide loadFromFile and loadFromMemory functions, +/// which read data from conventional sources. However, if you +/// have data coming from a different source (over a network, +/// embedded, encrypted, compressed, etc) you can derive your +/// own class from sf::InputStream and load SFML resources with +/// their loadFromStream function. +/// +/// Usage example: +/// \code +/// // custom stream class that reads from inside a zip file +/// class ZipStream : public sf::InputStream +/// { +/// public: +/// +/// ZipStream(std::string archive); +/// +/// bool open(std::string filename); +/// +/// Int64 read(void* data, Int64 size); +/// +/// Int64 seek(Int64 position); +/// +/// Int64 tell(); +/// +/// Int64 getSize(); +/// +/// private: +/// +/// ... +/// }; +/// +/// // now you can load textures... +/// sf::Texture texture; +/// ZipStream stream("resources.zip"); +/// stream.open("images/img.png"); +/// texture.loadFromStream(stream); +/// +/// // musics... +/// sf::Music music; +/// ZipStream stream("resources.zip"); +/// stream.open("musics/msc.ogg"); +/// music.openFromStream(stream); +/// +/// // etc. +/// \endcode +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/System/Lock.hpp b/mcclone/external/sfml23/include/SFML/System/Lock.hpp new file mode 100644 index 0000000..05dac10 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/Lock.hpp @@ -0,0 +1,139 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_LOCK_HPP +#define SFML_LOCK_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +class Mutex; + +//////////////////////////////////////////////////////////// +/// \brief Automatic wrapper for locking and unlocking mutexes +/// +//////////////////////////////////////////////////////////// +class SFML_SYSTEM_API Lock : NonCopyable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Construct the lock with a target mutex + /// + /// The mutex passed to sf::Lock is automatically locked. + /// + /// \param mutex Mutex to lock + /// + //////////////////////////////////////////////////////////// + explicit Lock(Mutex& mutex); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + /// The destructor of sf::Lock automatically unlocks its mutex. + /// + //////////////////////////////////////////////////////////// + ~Lock(); + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + Mutex& m_mutex; ///< Mutex to lock / unlock +}; + +} // namespace sf + + +#endif // SFML_LOCK_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Lock +/// \ingroup system +/// +/// sf::Lock is a RAII wrapper for sf::Mutex. By unlocking +/// it in its destructor, it ensures that the mutex will +/// always be released when the current scope (most likely +/// a function) ends. +/// This is even more important when an exception or an early +/// return statement can interrupt the execution flow of the +/// function. +/// +/// For maximum robustness, sf::Lock should always be used +/// to lock/unlock a mutex. +/// +/// Usage example: +/// \code +/// sf::Mutex mutex; +/// +/// void function() +/// { +/// sf::Lock lock(mutex); // mutex is now locked +/// +/// functionThatMayThrowAnException(); // mutex is unlocked if this function throws +/// +/// if (someCondition) +/// return; // mutex is unlocked +/// +/// } // mutex is unlocked +/// \endcode +/// +/// Because the mutex is not explicitly unlocked in the code, +/// it may remain locked longer than needed. If the region +/// of the code that needs to be protected by the mutex is +/// not the entire function, a good practice is to create a +/// smaller, inner scope so that the lock is limited to this +/// part of the code. +/// +/// \code +/// sf::Mutex mutex; +/// +/// void function() +/// { +/// { +/// sf::Lock lock(mutex); +/// codeThatRequiresProtection(); +/// +/// } // mutex is unlocked here +/// +/// codeThatDoesntCareAboutTheMutex(); +/// } +/// \endcode +/// +/// Having a mutex locked longer than required is a bad practice +/// which can lead to bad performances. Don't forget that when +/// a mutex is locked, other threads may be waiting doing nothing +/// until it is released. +/// +/// \see sf::Mutex +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/System/MemoryInputStream.hpp b/mcclone/external/sfml23/include/SFML/System/MemoryInputStream.hpp new file mode 100644 index 0000000..250466c --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/MemoryInputStream.hpp @@ -0,0 +1,148 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_MEMORYINPUTSTREAM_HPP +#define SFML_MEMORYINPUTSTREAM_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Implementation of input stream based on a memory chunk +/// +//////////////////////////////////////////////////////////// +class SFML_SYSTEM_API MemoryInputStream : public InputStream +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + MemoryInputStream(); + + //////////////////////////////////////////////////////////// + /// \brief Open the stream from its data + /// + /// \param data Pointer to the data in memory + /// \param sizeInBytes Size of the data, in bytes + /// + //////////////////////////////////////////////////////////// + void open(const void* data, std::size_t sizeInBytes); + + //////////////////////////////////////////////////////////// + /// \brief Read data from the stream + /// + /// After reading, the stream's reading position must be + /// advanced by the amount of bytes read. + /// + /// \param data Buffer where to copy the read data + /// \param size Desired number of bytes to read + /// + /// \return The number of bytes actually read, or -1 on error + /// + //////////////////////////////////////////////////////////// + virtual Int64 read(void* data, Int64 size); + + //////////////////////////////////////////////////////////// + /// \brief Change the current reading position + /// + /// \param position The position to seek to, from the beginning + /// + /// \return The position actually sought to, or -1 on error + /// + //////////////////////////////////////////////////////////// + virtual Int64 seek(Int64 position); + + //////////////////////////////////////////////////////////// + /// \brief Get the current reading position in the stream + /// + /// \return The current position, or -1 on error. + /// + //////////////////////////////////////////////////////////// + virtual Int64 tell(); + + //////////////////////////////////////////////////////////// + /// \brief Return the size of the stream + /// + /// \return The total number of bytes available in the stream, or -1 on error + /// + //////////////////////////////////////////////////////////// + virtual Int64 getSize(); + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + const char* m_data; ///< Pointer to the data in memory + Int64 m_size; ///< Total size of the data + Int64 m_offset; ///< Current reading position +}; + +} // namespace sf + + +#endif // SFML_MEMORYINPUTSTREAM_HPP + + +//////////////////////////////////////////////////////////// +/// \class MemoryeInputStream +/// \ingroup system +/// +/// This class is a specialization of InputStream that +/// reads from data in memory. +/// +/// It wraps a memory chunk in the common InputStream interface +/// and therefore allows to use generic classes or functions +/// that accept such a stream, with content already loaded in memory. +/// +/// In addition to the virtual functions inherited from +/// InputStream, MemoryInputStream adds a function to +/// specify the pointer and size of the data in memory. +/// +/// SFML resource classes can usually be loaded directly from +/// memory, so this class shouldn't be useful to you unless +/// you create your own algorithms that operate on a InputStream. +/// +/// Usage example: +/// \code +/// void process(InputStream& stream); +/// +/// MemoryStream stream; +/// stream.open(thePtr, theSize); +/// process(stream); +/// \endcode +/// +/// InputStream, FileStream +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/System/Mutex.hpp b/mcclone/external/sfml23/include/SFML/System/Mutex.hpp new file mode 100644 index 0000000..67a8473 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/Mutex.hpp @@ -0,0 +1,148 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_MUTEX_HPP +#define SFML_MUTEX_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +namespace priv +{ + class MutexImpl; +} + +//////////////////////////////////////////////////////////// +/// \brief Blocks concurrent access to shared resources +/// from multiple threads +/// +//////////////////////////////////////////////////////////// +class SFML_SYSTEM_API Mutex : NonCopyable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + Mutex(); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + //////////////////////////////////////////////////////////// + ~Mutex(); + + //////////////////////////////////////////////////////////// + /// \brief Lock the mutex + /// + /// If the mutex is already locked in another thread, + /// this call will block the execution until the mutex + /// is released. + /// + /// \see unlock + /// + //////////////////////////////////////////////////////////// + void lock(); + + //////////////////////////////////////////////////////////// + /// \brief Unlock the mutex + /// + /// \see lock + /// + //////////////////////////////////////////////////////////// + void unlock(); + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + priv::MutexImpl* m_mutexImpl; ///< OS-specific implementation +}; + +} // namespace sf + + +#endif // SFML_MUTEX_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Mutex +/// \ingroup system +/// +/// Mutex stands for "MUTual EXclusion". A mutex is a +/// synchronization object, used when multiple threads are involved. +/// +/// When you want to protect a part of the code from being accessed +/// simultaneously by multiple threads, you typically use a +/// mutex. When a thread is locked by a mutex, any other thread +/// trying to lock it will be blocked until the mutex is released +/// by the thread that locked it. This way, you can allow only +/// one thread at a time to access a critical region of your code. +/// +/// Usage example: +/// \code +/// Database database; // this is a critical resource that needs some protection +/// sf::Mutex mutex; +/// +/// void thread1() +/// { +/// mutex.lock(); // this call will block the thread if the mutex is already locked by thread2 +/// database.write(...); +/// mutex.unlock(); // if thread2 was waiting, it will now be unblocked +/// } +/// +/// void thread2() +/// { +/// mutex.lock(); // this call will block the thread if the mutex is already locked by thread1 +/// database.write(...); +/// mutex.unlock(); // if thread1 was waiting, it will now be unblocked +/// } +/// \endcode +/// +/// Be very careful with mutexes. A bad usage can lead to bad problems, +/// like deadlocks (two threads are waiting for each other and the +/// application is globally stuck). +/// +/// To make the usage of mutexes more robust, particularly in +/// environments where exceptions can be thrown, you should +/// use the helper class sf::Lock to lock/unlock mutexes. +/// +/// SFML mutexes are recursive, which means that you can lock +/// a mutex multiple times in the same thread without creating +/// a deadlock. In this case, the first call to lock() behaves +/// as usual, and the following ones have no effect. +/// However, you must call unlock() exactly as many times as you +/// called lock(). If you don't, the mutex won't be released. +/// +/// \see sf::Lock +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/System/NonCopyable.hpp b/mcclone/external/sfml23/include/SFML/System/NonCopyable.hpp new file mode 100644 index 0000000..9eb291c --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/NonCopyable.hpp @@ -0,0 +1,119 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_NONCOPYABLE_HPP +#define SFML_NONCOPYABLE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Utility class that makes any derived +/// class non-copyable +/// +//////////////////////////////////////////////////////////// +class SFML_SYSTEM_API NonCopyable +{ +protected: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// Because this class has a copy constructor, the compiler + /// will not automatically generate the default constructor. + /// That's why we must define it explicitly. + /// + //////////////////////////////////////////////////////////// + NonCopyable() {} + +private: + + //////////////////////////////////////////////////////////// + /// \brief Disabled copy constructor + /// + /// By making the copy constructor private, the compiler will + /// trigger an error if anyone outside tries to use it. + /// To prevent NonCopyable or friend classes from using it, + /// we also give no definition, so that the linker will + /// produce an error if the first protection was inefficient. + /// + //////////////////////////////////////////////////////////// + NonCopyable(const NonCopyable&); + + //////////////////////////////////////////////////////////// + /// \brief Disabled assignment operator + /// + /// By making the assignment operator private, the compiler will + /// trigger an error if anyone outside tries to use it. + /// To prevent NonCopyable or friend classes from using it, + /// we also give no definition, so that the linker will + /// produce an error if the first protection was inefficient. + /// + //////////////////////////////////////////////////////////// + NonCopyable& operator =(const NonCopyable&); +}; + +} // namespace sf + + +#endif // SFML_NONCOPYABLE_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::NonCopyable +/// \ingroup system +/// +/// This class makes its instances non-copyable, by explicitly +/// disabling its copy constructor and its assignment operator. +/// +/// To create a non-copyable class, simply inherit from +/// sf::NonCopyable. +/// +/// The type of inheritance (public or private) doesn't matter, +/// the copy constructor and assignment operator are declared private +/// in sf::NonCopyable so they will end up being inaccessible in both +/// cases. Thus you can use a shorter syntax for inheriting from it +/// (see below). +/// +/// Usage example: +/// \code +/// class MyNonCopyableClass : sf::NonCopyable +/// { +/// ... +/// }; +/// \endcode +/// +/// Deciding whether the instances of a class can be copied +/// or not is a very important design choice. You are strongly +/// encouraged to think about it before writing a class, +/// and to use sf::NonCopyable when necessary to prevent +/// many potential future errors when using it. This is also +/// a very important indication to users of your class. +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/System/Sleep.hpp b/mcclone/external/sfml23/include/SFML/System/Sleep.hpp new file mode 100644 index 0000000..3c0d04a --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/Sleep.hpp @@ -0,0 +1,52 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SLEEP_HPP +#define SFML_SLEEP_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \ingroup system +/// \brief Make the current thread sleep for a given duration +/// +/// sf::sleep is the best way to block a program or one of its +/// threads, as it doesn't consume any CPU power. +/// +/// \param duration Time to sleep +/// +//////////////////////////////////////////////////////////// +void SFML_SYSTEM_API sleep(Time duration); + +} // namespace sf + + +#endif // SFML_SLEEP_HPP diff --git a/mcclone/external/sfml23/include/SFML/System/String.hpp b/mcclone/external/sfml23/include/SFML/System/String.hpp new file mode 100644 index 0000000..5a8c576 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/String.hpp @@ -0,0 +1,668 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_STRING_HPP +#define SFML_STRING_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Utility string class that automatically handles +/// conversions between types and encodings +/// +//////////////////////////////////////////////////////////// +class SFML_SYSTEM_API String +{ +public: + + //////////////////////////////////////////////////////////// + // Types + //////////////////////////////////////////////////////////// + typedef std::basic_string::iterator Iterator; ///< Iterator type + typedef std::basic_string::const_iterator ConstIterator; ///< Read-only iterator type + + //////////////////////////////////////////////////////////// + // Static member data + //////////////////////////////////////////////////////////// + static const std::size_t InvalidPos; ///< Represents an invalid position in the string + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// This constructor creates an empty string. + /// + //////////////////////////////////////////////////////////// + String(); + + //////////////////////////////////////////////////////////// + /// \brief Construct from a single ANSI character and a locale + /// + /// The source character is converted to UTF-32 according + /// to the given locale. + /// + /// \param ansiChar ANSI character to convert + /// \param locale Locale to use for conversion + /// + //////////////////////////////////////////////////////////// + String(char ansiChar, const std::locale& locale = std::locale()); + + //////////////////////////////////////////////////////////// + /// \brief Construct from single wide character + /// + /// \param wideChar Wide character to convert + /// + //////////////////////////////////////////////////////////// + String(wchar_t wideChar); + + //////////////////////////////////////////////////////////// + /// \brief Construct from single UTF-32 character + /// + /// \param utf32Char UTF-32 character to convert + /// + //////////////////////////////////////////////////////////// + String(Uint32 utf32Char); + + //////////////////////////////////////////////////////////// + /// \brief Construct from a null-terminated C-style ANSI string and a locale + /// + /// The source string is converted to UTF-32 according + /// to the given locale. + /// + /// \param ansiString ANSI string to convert + /// \param locale Locale to use for conversion + /// + //////////////////////////////////////////////////////////// + String(const char* ansiString, const std::locale& locale = std::locale()); + + //////////////////////////////////////////////////////////// + /// \brief Construct from an ANSI string and a locale + /// + /// The source string is converted to UTF-32 according + /// to the given locale. + /// + /// \param ansiString ANSI string to convert + /// \param locale Locale to use for conversion + /// + //////////////////////////////////////////////////////////// + String(const std::string& ansiString, const std::locale& locale = std::locale()); + + //////////////////////////////////////////////////////////// + /// \brief Construct from null-terminated C-style wide string + /// + /// \param wideString Wide string to convert + /// + //////////////////////////////////////////////////////////// + String(const wchar_t* wideString); + + //////////////////////////////////////////////////////////// + /// \brief Construct from a wide string + /// + /// \param wideString Wide string to convert + /// + //////////////////////////////////////////////////////////// + String(const std::wstring& wideString); + + //////////////////////////////////////////////////////////// + /// \brief Construct from a null-terminated C-style UTF-32 string + /// + /// \param utf32String UTF-32 string to assign + /// + //////////////////////////////////////////////////////////// + String(const Uint32* utf32String); + + //////////////////////////////////////////////////////////// + /// \brief Construct from an UTF-32 string + /// + /// \param utf32String UTF-32 string to assign + /// + //////////////////////////////////////////////////////////// + String(const std::basic_string& utf32String); + + //////////////////////////////////////////////////////////// + /// \brief Copy constructor + /// + /// \param copy Instance to copy + /// + //////////////////////////////////////////////////////////// + String(const String& copy); + + //////////////////////////////////////////////////////////// + /// \brief Create a new sf::String from a UTF-8 encoded string + /// + /// \param begin Forward iterator to the beginning of the UTF-8 sequence + /// \param end Forward iterator to the end of the UTF-8 sequence + /// + /// \return A sf::String containing the source string + /// + /// \see fromUtf16, fromUtf32 + /// + //////////////////////////////////////////////////////////// + template + static String fromUtf8(T begin, T end); + + //////////////////////////////////////////////////////////// + /// \brief Create a new sf::String from a UTF-16 encoded string + /// + /// \param begin Forward iterator to the beginning of the UTF-16 sequence + /// \param end Forward iterator to the end of the UTF-16 sequence + /// + /// \return A sf::String containing the source string + /// + /// \see fromUtf8, fromUtf32 + /// + //////////////////////////////////////////////////////////// + template + static String fromUtf16(T begin, T end); + + //////////////////////////////////////////////////////////// + /// \brief Create a new sf::String from a UTF-32 encoded string + /// + /// This function is provided for consistency, it is equivalent to + /// using the constructors that takes a const sf::Uint32* or + /// a std::basic_string. + /// + /// \param begin Forward iterator to the beginning of the UTF-32 sequence + /// \param end Forward iterator to the end of the UTF-32 sequence + /// + /// \return A sf::String containing the source string + /// + /// \see fromUtf8, fromUtf16 + /// + //////////////////////////////////////////////////////////// + template + static String fromUtf32(T begin, T end); + + //////////////////////////////////////////////////////////// + /// \brief Implicit conversion operator to std::string (ANSI string) + /// + /// The current global locale is used for conversion. If you + /// want to explicitly specify a locale, see toAnsiString. + /// Characters that do not fit in the target encoding are + /// discarded from the returned string. + /// This operator is defined for convenience, and is equivalent + /// to calling toAnsiString(). + /// + /// \return Converted ANSI string + /// + /// \see toAnsiString, operator std::wstring + /// + //////////////////////////////////////////////////////////// + operator std::string() const; + + //////////////////////////////////////////////////////////// + /// \brief Implicit conversion operator to std::wstring (wide string) + /// + /// Characters that do not fit in the target encoding are + /// discarded from the returned string. + /// This operator is defined for convenience, and is equivalent + /// to calling toWideString(). + /// + /// \return Converted wide string + /// + /// \see toWideString, operator std::string + /// + //////////////////////////////////////////////////////////// + operator std::wstring() const; + + //////////////////////////////////////////////////////////// + /// \brief Convert the Unicode string to an ANSI string + /// + /// The UTF-32 string is converted to an ANSI string in + /// the encoding defined by \a locale. + /// Characters that do not fit in the target encoding are + /// discarded from the returned string. + /// + /// \param locale Locale to use for conversion + /// + /// \return Converted ANSI string + /// + /// \see toWideString, operator std::string + /// + //////////////////////////////////////////////////////////// + std::string toAnsiString(const std::locale& locale = std::locale()) const; + + //////////////////////////////////////////////////////////// + /// \brief Convert the Unicode string to a wide string + /// + /// Characters that do not fit in the target encoding are + /// discarded from the returned string. + /// + /// \return Converted wide string + /// + /// \see toAnsiString, operator std::wstring + /// + //////////////////////////////////////////////////////////// + std::wstring toWideString() const; + + //////////////////////////////////////////////////////////// + /// \brief Convert the Unicode string to a UTF-8 string + /// + /// \return Converted UTF-8 string + /// + /// \see toUtf16, toUtf32 + /// + //////////////////////////////////////////////////////////// + std::basic_string toUtf8() const; + + //////////////////////////////////////////////////////////// + /// \brief Convert the Unicode string to a UTF-16 string + /// + /// \return Converted UTF-16 string + /// + /// \see toUtf8, toUtf32 + /// + //////////////////////////////////////////////////////////// + std::basic_string toUtf16() const; + + //////////////////////////////////////////////////////////// + /// \brief Convert the Unicode string to a UTF-32 string + /// + /// This function doesn't perform any conversion, since the + /// string is already stored as UTF-32 internally. + /// + /// \return Converted UTF-32 string + /// + /// \see toUtf8, toUtf16 + /// + //////////////////////////////////////////////////////////// + std::basic_string toUtf32() const; + + //////////////////////////////////////////////////////////// + /// \brief Overload of assignment operator + /// + /// \param right Instance to assign + /// + /// \return Reference to self + /// + //////////////////////////////////////////////////////////// + String& operator =(const String& right); + + //////////////////////////////////////////////////////////// + /// \brief Overload of += operator to append an UTF-32 string + /// + /// \param right String to append + /// + /// \return Reference to self + /// + //////////////////////////////////////////////////////////// + String& operator +=(const String& right); + + //////////////////////////////////////////////////////////// + /// \brief Overload of [] operator to access a character by its position + /// + /// This function provides read-only access to characters. + /// Note: the behavior is undefined if \a index is out of range. + /// + /// \param index Index of the character to get + /// + /// \return Character at position \a index + /// + //////////////////////////////////////////////////////////// + Uint32 operator [](std::size_t index) const; + + //////////////////////////////////////////////////////////// + /// \brief Overload of [] operator to access a character by its position + /// + /// This function provides read and write access to characters. + /// Note: the behavior is undefined if \a index is out of range. + /// + /// \param index Index of the character to get + /// + /// \return Reference to the character at position \a index + /// + //////////////////////////////////////////////////////////// + Uint32& operator [](std::size_t index); + + //////////////////////////////////////////////////////////// + /// \brief Clear the string + /// + /// This function removes all the characters from the string. + /// + /// \see isEmpty, erase + /// + //////////////////////////////////////////////////////////// + void clear(); + + //////////////////////////////////////////////////////////// + /// \brief Get the size of the string + /// + /// \return Number of characters in the string + /// + /// \see isEmpty + /// + //////////////////////////////////////////////////////////// + std::size_t getSize() const; + + //////////////////////////////////////////////////////////// + /// \brief Check whether the string is empty or not + /// + /// \return True if the string is empty (i.e. contains no character) + /// + /// \see clear, getSize + /// + //////////////////////////////////////////////////////////// + bool isEmpty() const; + + //////////////////////////////////////////////////////////// + /// \brief Erase one or more characters from the string + /// + /// This function removes a sequence of \a count characters + /// starting from \a position. + /// + /// \param position Position of the first character to erase + /// \param count Number of characters to erase + /// + //////////////////////////////////////////////////////////// + void erase(std::size_t position, std::size_t count = 1); + + //////////////////////////////////////////////////////////// + /// \brief Insert one or more characters into the string + /// + /// This function inserts the characters of \a str + /// into the string, starting from \a position. + /// + /// \param position Position of insertion + /// \param str Characters to insert + /// + //////////////////////////////////////////////////////////// + void insert(std::size_t position, const String& str); + + //////////////////////////////////////////////////////////// + /// \brief Find a sequence of one or more characters in the string + /// + /// This function searches for the characters of \a str + /// in the string, starting from \a start. + /// + /// \param str Characters to find + /// \param start Where to begin searching + /// + /// \return Position of \a str in the string, or String::InvalidPos if not found + /// + //////////////////////////////////////////////////////////// + std::size_t find(const String& str, std::size_t start = 0) const; + + //////////////////////////////////////////////////////////// + /// \brief Replace a substring with another string + /// + /// This function replaces the substring that starts at index \a position + /// and spans \a length characters with the string \a replaceWith. + /// + /// \param position Index of the first character to be replaced + /// \param length Number of characters to replace. You can pass InvalidPos to + /// replace all characters until the end of the string. + /// \param replaceWith String that replaces the given substring. + /// + //////////////////////////////////////////////////////////// + void replace(std::size_t position, std::size_t length, const String& replaceWith); + + //////////////////////////////////////////////////////////// + /// \brief Replace all occurrences of a substring with a replacement string + /// + /// This function replaces all occurrences of \a searchFor in this string + /// with the string \a replaceWith. + /// + /// \param searchFor The value being searched for + /// \param replaceWith The value that replaces found \a searchFor values + /// + //////////////////////////////////////////////////////////// + void replace(const String& searchFor, const String& replaceWith); + + //////////////////////////////////////////////////////////// + /// \brief Return a part of the string + /// + /// This function returns the substring that starts at index \a position + /// and spans \a length characters. + /// + /// \param position Index of the first character + /// \param length Number of characters to include in the substring (if + /// the string is shorter, as many characters as possible + /// are included). \ref InvalidPos can be used to include all + /// characters until the end of the string. + /// + /// \return String object containing a substring of this object + /// + //////////////////////////////////////////////////////////// + String substring(std::size_t position, std::size_t length = InvalidPos) const; + + //////////////////////////////////////////////////////////// + /// \brief Get a pointer to the C-style array of characters + /// + /// This functions provides a read-only access to a + /// null-terminated C-style representation of the string. + /// The returned pointer is temporary and is meant only for + /// immediate use, thus it is not recommended to store it. + /// + /// \return Read-only pointer to the array of characters + /// + //////////////////////////////////////////////////////////// + const Uint32* getData() const; + + //////////////////////////////////////////////////////////// + /// \brief Return an iterator to the beginning of the string + /// + /// \return Read-write iterator to the beginning of the string characters + /// + /// \see end + /// + //////////////////////////////////////////////////////////// + Iterator begin(); + + //////////////////////////////////////////////////////////// + /// \brief Return an iterator to the beginning of the string + /// + /// \return Read-only iterator to the beginning of the string characters + /// + /// \see end + /// + //////////////////////////////////////////////////////////// + ConstIterator begin() const; + + //////////////////////////////////////////////////////////// + /// \brief Return an iterator to the end of the string + /// + /// The end iterator refers to 1 position past the last character; + /// thus it represents an invalid character and should never be + /// accessed. + /// + /// \return Read-write iterator to the end of the string characters + /// + /// \see begin + /// + //////////////////////////////////////////////////////////// + Iterator end(); + + //////////////////////////////////////////////////////////// + /// \brief Return an iterator to the end of the string + /// + /// The end iterator refers to 1 position past the last character; + /// thus it represents an invalid character and should never be + /// accessed. + /// + /// \return Read-only iterator to the end of the string characters + /// + /// \see begin + /// + //////////////////////////////////////////////////////////// + ConstIterator end() const; + +private: + + friend SFML_SYSTEM_API bool operator ==(const String& left, const String& right); + friend SFML_SYSTEM_API bool operator <(const String& left, const String& right); + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + std::basic_string m_string; ///< Internal string of UTF-32 characters +}; + +//////////////////////////////////////////////////////////// +/// \relates String +/// \brief Overload of == operator to compare two UTF-32 strings +/// +/// \param left Left operand (a string) +/// \param right Right operand (a string) +/// +/// \return True if both strings are equal +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API bool operator ==(const String& left, const String& right); + +//////////////////////////////////////////////////////////// +/// \relates String +/// \brief Overload of != operator to compare two UTF-32 strings +/// +/// \param left Left operand (a string) +/// \param right Right operand (a string) +/// +/// \return True if both strings are different +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API bool operator !=(const String& left, const String& right); + +//////////////////////////////////////////////////////////// +/// \relates String +/// \brief Overload of < operator to compare two UTF-32 strings +/// +/// \param left Left operand (a string) +/// \param right Right operand (a string) +/// +/// \return True if \a left is lexicographically before \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API bool operator <(const String& left, const String& right); + +//////////////////////////////////////////////////////////// +/// \relates String +/// \brief Overload of > operator to compare two UTF-32 strings +/// +/// \param left Left operand (a string) +/// \param right Right operand (a string) +/// +/// \return True if \a left is lexicographically after \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API bool operator >(const String& left, const String& right); + +//////////////////////////////////////////////////////////// +/// \relates String +/// \brief Overload of <= operator to compare two UTF-32 strings +/// +/// \param left Left operand (a string) +/// \param right Right operand (a string) +/// +/// \return True if \a left is lexicographically before or equivalent to \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API bool operator <=(const String& left, const String& right); + +//////////////////////////////////////////////////////////// +/// \relates String +/// \brief Overload of >= operator to compare two UTF-32 strings +/// +/// \param left Left operand (a string) +/// \param right Right operand (a string) +/// +/// \return True if \a left is lexicographically after or equivalent to \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API bool operator >=(const String& left, const String& right); + +//////////////////////////////////////////////////////////// +/// \relates String +/// \brief Overload of binary + operator to concatenate two strings +/// +/// \param left Left operand (a string) +/// \param right Right operand (a string) +/// +/// \return Concatenated string +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API String operator +(const String& left, const String& right); + +#include + +} // namespace sf + + +#endif // SFML_STRING_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::String +/// \ingroup system +/// +/// sf::String is a utility string class defined mainly for +/// convenience. It is a Unicode string (implemented using +/// UTF-32), thus it can store any character in the world +/// (European, Chinese, Arabic, Hebrew, etc.). +/// +/// It automatically handles conversions from/to ANSI and +/// wide strings, so that you can work with standard string +/// classes and still be compatible with functions taking a +/// sf::String. +/// +/// \code +/// sf::String s; +/// +/// std::string s1 = s; // automatically converted to ANSI string +/// std::wstring s2 = s; // automatically converted to wide string +/// s = "hello"; // automatically converted from ANSI string +/// s = L"hello"; // automatically converted from wide string +/// s += 'a'; // automatically converted from ANSI string +/// s += L'a'; // automatically converted from wide string +/// \endcode +/// +/// Conversions involving ANSI strings use the default user locale. However +/// it is possible to use a custom locale if necessary: +/// \code +/// std::locale locale; +/// sf::String s; +/// ... +/// std::string s1 = s.toAnsiString(locale); +/// s = sf::String("hello", locale); +/// \endcode +/// +/// sf::String defines the most important functions of the +/// standard std::string class: removing, random access, iterating, +/// appending, comparing, etc. However it is a simple class +/// provided for convenience, and you may have to consider using +/// a more optimized class if your program requires complex string +/// handling. The automatic conversion functions will then take +/// care of converting your string to sf::String whenever SFML +/// requires it. +/// +/// Please note that SFML also defines a low-level, generic +/// interface for Unicode handling, see the sf::Utf classes. +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/System/String.inl b/mcclone/external/sfml23/include/SFML/System/String.inl new file mode 100644 index 0000000..2b22efa --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/String.inl @@ -0,0 +1,53 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +template +String String::fromUtf8(T begin, T end) +{ + String string; + Utf8::toUtf32(begin, end, std::back_inserter(string.m_string)); + return string; +} + + +//////////////////////////////////////////////////////////// +template +String String::fromUtf16(T begin, T end) +{ + String string; + Utf16::toUtf32(begin, end, std::back_inserter(string.m_string)); + return string; +} + + +//////////////////////////////////////////////////////////// +template +String String::fromUtf32(T begin, T end) +{ + String string; + string.m_string.assign(begin, end); + return string; +} diff --git a/mcclone/external/sfml23/include/SFML/System/Thread.hpp b/mcclone/external/sfml23/include/SFML/System/Thread.hpp new file mode 100644 index 0000000..3321615 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/Thread.hpp @@ -0,0 +1,282 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_THREAD_HPP +#define SFML_THREAD_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +namespace sf +{ +namespace priv +{ + class ThreadImpl; + struct ThreadFunc; +} + +//////////////////////////////////////////////////////////// +/// \brief Utility class to manipulate threads +/// +//////////////////////////////////////////////////////////// +class SFML_SYSTEM_API Thread : NonCopyable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Construct the thread from a functor with no argument + /// + /// This constructor works for function objects, as well + /// as free functions. + /// + /// Use this constructor for this kind of function: + /// \code + /// void function(); + /// + /// // --- or ---- + /// + /// struct Functor + /// { + /// void operator()(); + /// }; + /// \endcode + /// Note: this does *not* run the thread, use launch(). + /// + /// \param function Functor or free function to use as the entry point of the thread + /// + //////////////////////////////////////////////////////////// + template + Thread(F function); + + //////////////////////////////////////////////////////////// + /// \brief Construct the thread from a functor with an argument + /// + /// This constructor works for function objects, as well + /// as free functions. + /// It is a template, which means that the argument can + /// have any type (int, std::string, void*, Toto, ...). + /// + /// Use this constructor for this kind of function: + /// \code + /// void function(int arg); + /// + /// // --- or ---- + /// + /// struct Functor + /// { + /// void operator()(std::string arg); + /// }; + /// \endcode + /// Note: this does *not* run the thread, use launch(). + /// + /// \param function Functor or free function to use as the entry point of the thread + /// \param argument argument to forward to the function + /// + //////////////////////////////////////////////////////////// + template + Thread(F function, A argument); + + //////////////////////////////////////////////////////////// + /// \brief Construct the thread from a member function and an object + /// + /// This constructor is a template, which means that you can + /// use it with any class. + /// Use this constructor for this kind of function: + /// \code + /// class MyClass + /// { + /// public: + /// + /// void function(); + /// }; + /// \endcode + /// Note: this does *not* run the thread, use launch(). + /// + /// \param function Entry point of the thread + /// \param object Pointer to the object to use + /// + //////////////////////////////////////////////////////////// + template + Thread(void(C::*function)(), C* object); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + /// This destructor calls wait(), so that the internal thread + /// cannot survive after its sf::Thread instance is destroyed. + /// + //////////////////////////////////////////////////////////// + ~Thread(); + + //////////////////////////////////////////////////////////// + /// \brief Run the thread + /// + /// This function starts the entry point passed to the + /// thread's constructor, and returns immediately. + /// After this function returns, the thread's function is + /// running in parallel to the calling code. + /// + //////////////////////////////////////////////////////////// + void launch(); + + //////////////////////////////////////////////////////////// + /// \brief Wait until the thread finishes + /// + /// This function will block the execution until the + /// thread's function ends. + /// Warning: if the thread function never ends, the calling + /// thread will block forever. + /// If this function is called from its owner thread, it + /// returns without doing anything. + /// + //////////////////////////////////////////////////////////// + void wait(); + + //////////////////////////////////////////////////////////// + /// \brief Terminate the thread + /// + /// This function immediately stops the thread, without waiting + /// for its function to finish. + /// Terminating a thread with this function is not safe, + /// and can lead to local variables not being destroyed + /// on some operating systems. You should rather try to make + /// the thread function terminate by itself. + /// + //////////////////////////////////////////////////////////// + void terminate(); + +private: + + friend class priv::ThreadImpl; + + //////////////////////////////////////////////////////////// + /// \brief Internal entry point of the thread + /// + /// This function is called by the thread implementation. + /// + //////////////////////////////////////////////////////////// + void run(); + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + priv::ThreadImpl* m_impl; ///< OS-specific implementation of the thread + priv::ThreadFunc* m_entryPoint; ///< Abstraction of the function to run +}; + +#include + +} // namespace sf + +#endif // SFML_THREAD_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Thread +/// \ingroup system +/// +/// Threads provide a way to run multiple parts of the code +/// in parallel. When you launch a new thread, the execution +/// is split and both the new thread and the caller run +/// in parallel. +/// +/// To use a sf::Thread, you construct it directly with the +/// function to execute as the entry point of the thread. +/// sf::Thread has multiple template constructors, which means +/// that you can use several types of entry points: +/// \li non-member functions with no argument +/// \li non-member functions with one argument of any type +/// \li functors with no argument (this one is particularly useful for compatibility with boost/std::%bind) +/// \li functors with one argument of any type +/// \li member functions from any class with no argument +/// +/// The function argument, if any, is copied in the sf::Thread +/// instance, as well as the functor (if the corresponding +/// constructor is used). Class instances, however, are passed +/// by pointer so you must make sure that the object won't be +/// destroyed while the thread is still using it. +/// +/// The thread ends when its function is terminated. If the +/// owner sf::Thread instance is destroyed before the +/// thread is finished, the destructor will wait (see wait()) +/// +/// Usage examples: +/// \code +/// // example 1: non member function with one argument +/// +/// void threadFunc(int argument) +/// { +/// ... +/// } +/// +/// sf::Thread thread(&threadFunc, 5); +/// thread.launch(); // start the thread (internally calls threadFunc(5)) +/// \endcode +/// +/// \code +/// // example 2: member function +/// +/// class Task +/// { +/// public: +/// void run() +/// { +/// ... +/// } +/// }; +/// +/// Task task; +/// sf::Thread thread(&Task::run, &task); +/// thread.launch(); // start the thread (internally calls task.run()) +/// \endcode +/// +/// \code +/// // example 3: functor +/// +/// struct Task +/// { +/// void operator()() +/// { +/// ... +/// } +/// }; +/// +/// sf::Thread thread(Task()); +/// thread.launch(); // start the thread (internally calls operator() on the Task instance) +/// \endcode +/// +/// Creating parallel threads of execution can be dangerous: +/// all threads inside the same process share the same memory space, +/// which means that you may end up accessing the same variable +/// from multiple threads at the same time. To prevent this +/// kind of situations, you can use mutexes (see sf::Mutex). +/// +/// \see sf::Mutex +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/System/Thread.inl b/mcclone/external/sfml23/include/SFML/System/Thread.inl new file mode 100644 index 0000000..8e0236f --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/Thread.inl @@ -0,0 +1,90 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +namespace priv +{ +// Base class for abstract thread functions +struct ThreadFunc +{ + virtual ~ThreadFunc() {} + virtual void run() = 0; +}; + +// Specialization using a functor (including free functions) with no argument +template +struct ThreadFunctor : ThreadFunc +{ + ThreadFunctor(T functor) : m_functor(functor) {} + virtual void run() {m_functor();} + T m_functor; +}; + +// Specialization using a functor (including free functions) with one argument +template +struct ThreadFunctorWithArg : ThreadFunc +{ + ThreadFunctorWithArg(F function, A arg) : m_function(function), m_arg(arg) {} + virtual void run() {m_function(m_arg);} + F m_function; + A m_arg; +}; + +// Specialization using a member function +template +struct ThreadMemberFunc : ThreadFunc +{ + ThreadMemberFunc(void(C::*function)(), C* object) : m_function(function), m_object(object) {} + virtual void run() {(m_object->*m_function)();} + void(C::*m_function)(); + C* m_object; +}; + +} // namespace priv + + +//////////////////////////////////////////////////////////// +template +Thread::Thread(F functor) : +m_impl (NULL), +m_entryPoint(new priv::ThreadFunctor(functor)) +{ +} + + +//////////////////////////////////////////////////////////// +template +Thread::Thread(F function, A argument) : +m_impl (NULL), +m_entryPoint(new priv::ThreadFunctorWithArg(function, argument)) +{ +} + + +//////////////////////////////////////////////////////////// +template +Thread::Thread(void(C::*function)(), C* object) : +m_impl (NULL), +m_entryPoint(new priv::ThreadMemberFunc(function, object)) +{ +} diff --git a/mcclone/external/sfml23/include/SFML/System/ThreadLocal.hpp b/mcclone/external/sfml23/include/SFML/System/ThreadLocal.hpp new file mode 100644 index 0000000..d1f9e4f --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/ThreadLocal.hpp @@ -0,0 +1,103 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_THREADLOCAL_HPP +#define SFML_THREADLOCAL_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +namespace sf +{ +namespace priv +{ + class ThreadLocalImpl; +} + +//////////////////////////////////////////////////////////// +/// \brief Defines variables with thread-local storage +/// +//////////////////////////////////////////////////////////// +class SFML_SYSTEM_API ThreadLocal : NonCopyable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// \param value Optional value to initialize the variable + /// + //////////////////////////////////////////////////////////// + ThreadLocal(void* value = NULL); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + //////////////////////////////////////////////////////////// + ~ThreadLocal(); + + //////////////////////////////////////////////////////////// + /// \brief Set the thread-specific value of the variable + /// + /// \param value Value of the variable for the current thread + /// + //////////////////////////////////////////////////////////// + void setValue(void* value); + + //////////////////////////////////////////////////////////// + /// \brief Retrieve the thread-specific value of the variable + /// + /// \return Value of the variable for the current thread + /// + //////////////////////////////////////////////////////////// + void* getValue() const; + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + priv::ThreadLocalImpl* m_impl; ///< Pointer to the OS specific implementation +}; + +} // namespace sf + + +#endif // SFML_THREADLOCAL_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::ThreadLocal +/// \ingroup system +/// +/// This class manipulates void* parameters and thus is not +/// appropriate for strongly-typed variables. You should rather +/// use the sf::ThreadLocalPtr template class. +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/System/ThreadLocalPtr.hpp b/mcclone/external/sfml23/include/SFML/System/ThreadLocalPtr.hpp new file mode 100644 index 0000000..3ee7abf --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/ThreadLocalPtr.hpp @@ -0,0 +1,158 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_THREADLOCALPTR_HPP +#define SFML_THREADLOCALPTR_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Pointer to a thread-local variable +/// +//////////////////////////////////////////////////////////// +template +class ThreadLocalPtr : private ThreadLocal +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// \param value Optional value to initialize the variable + /// + //////////////////////////////////////////////////////////// + ThreadLocalPtr(T* value = NULL); + + //////////////////////////////////////////////////////////// + /// \brief Overload of unary operator * + /// + /// Like raw pointers, applying the * operator returns a + /// reference to the pointed-to object. + /// + /// \return Reference to the thread-local variable + /// + //////////////////////////////////////////////////////////// + T& operator *() const; + + //////////////////////////////////////////////////////////// + /// \brief Overload of operator -> + /// + /// Similarly to raw pointers, applying the -> operator + /// returns the pointed-to object. + /// + /// \return Pointer to the thread-local variable + /// + //////////////////////////////////////////////////////////// + T* operator ->() const; + + //////////////////////////////////////////////////////////// + /// \brief Conversion operator to implicitly convert the + /// pointer to its raw pointer type (T*) + /// + /// \return Pointer to the actual object + /// + //////////////////////////////////////////////////////////// + operator T*() const; + + //////////////////////////////////////////////////////////// + /// \brief Assignment operator for a raw pointer parameter + /// + /// \param value Pointer to assign + /// + /// \return Reference to self + /// + //////////////////////////////////////////////////////////// + ThreadLocalPtr& operator =(T* value); + + //////////////////////////////////////////////////////////// + /// \brief Assignment operator for a ThreadLocalPtr parameter + /// + /// \param right ThreadLocalPtr to assign + /// + /// \return Reference to self + /// + //////////////////////////////////////////////////////////// + ThreadLocalPtr& operator =(const ThreadLocalPtr& right); +}; + +} // namespace sf + +#include + + +#endif // SFML_THREADLOCALPTR_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::ThreadLocalPtr +/// \ingroup system +/// +/// sf::ThreadLocalPtr is a type-safe wrapper for storing +/// pointers to thread-local variables. A thread-local +/// variable holds a different value for each different +/// thread, unlike normal variables that are shared. +/// +/// Its usage is completely transparent, so that it is similar +/// to manipulating the raw pointer directly (like any smart pointer). +/// +/// Usage example: +/// \code +/// MyClass object1; +/// MyClass object2; +/// sf::ThreadLocalPtr objectPtr; +/// +/// void thread1() +/// { +/// objectPtr = &object1; // doesn't impact thread2 +/// ... +/// } +/// +/// void thread2() +/// { +/// objectPtr = &object2; // doesn't impact thread1 +/// ... +/// } +/// +/// int main() +/// { +/// // Create and launch the two threads +/// sf::Thread t1(&thread1); +/// sf::Thread t2(&thread2); +/// t1.launch(); +/// t2.launch(); +/// +/// return 0; +/// } +/// \endcode +/// +/// ThreadLocalPtr is designed for internal use; however you +/// can use it if you feel like it fits well your implementation. +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/System/ThreadLocalPtr.inl b/mcclone/external/sfml23/include/SFML/System/ThreadLocalPtr.inl new file mode 100644 index 0000000..1d735bf --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/ThreadLocalPtr.inl @@ -0,0 +1,77 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + + +namespace sf +{ +//////////////////////////////////////////////////////////// +template +ThreadLocalPtr::ThreadLocalPtr(T* value) : +ThreadLocal(value) +{ +} + + +//////////////////////////////////////////////////////////// +template +T& ThreadLocalPtr::operator *() const +{ + return *static_cast(getValue()); +} + + +//////////////////////////////////////////////////////////// +template +T* ThreadLocalPtr::operator ->() const +{ + return static_cast(getValue()); +} + + +//////////////////////////////////////////////////////////// +template +ThreadLocalPtr::operator T*() const +{ + return static_cast(getValue()); +} + + +//////////////////////////////////////////////////////////// +template +ThreadLocalPtr& ThreadLocalPtr::operator =(T* value) +{ + setValue(value); + return *this; +} + + +//////////////////////////////////////////////////////////// +template +ThreadLocalPtr& ThreadLocalPtr::operator =(const ThreadLocalPtr& right) +{ + setValue(right.getValue()); + return *this; +} + +} // namespace sf diff --git a/mcclone/external/sfml23/include/SFML/System/Time.hpp b/mcclone/external/sfml23/include/SFML/System/Time.hpp new file mode 100644 index 0000000..95a0a35 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/Time.hpp @@ -0,0 +1,488 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_TIME_HPP +#define SFML_TIME_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Represents a time value +/// +//////////////////////////////////////////////////////////// +class SFML_SYSTEM_API Time +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// Sets the time value to zero. + /// + //////////////////////////////////////////////////////////// + Time(); + + //////////////////////////////////////////////////////////// + /// \brief Return the time value as a number of seconds + /// + /// \return Time in seconds + /// + /// \see asMilliseconds, asMicroseconds + /// + //////////////////////////////////////////////////////////// + float asSeconds() const; + + //////////////////////////////////////////////////////////// + /// \brief Return the time value as a number of milliseconds + /// + /// \return Time in milliseconds + /// + /// \see asSeconds, asMicroseconds + /// + //////////////////////////////////////////////////////////// + Int32 asMilliseconds() const; + + //////////////////////////////////////////////////////////// + /// \brief Return the time value as a number of microseconds + /// + /// \return Time in microseconds + /// + /// \see asSeconds, asMilliseconds + /// + //////////////////////////////////////////////////////////// + Int64 asMicroseconds() const; + + //////////////////////////////////////////////////////////// + // Static member data + //////////////////////////////////////////////////////////// + static const Time Zero; ///< Predefined "zero" time value + +private: + + friend SFML_SYSTEM_API Time seconds(float); + friend SFML_SYSTEM_API Time milliseconds(Int32); + friend SFML_SYSTEM_API Time microseconds(Int64); + + //////////////////////////////////////////////////////////// + /// \brief Construct from a number of microseconds + /// + /// This function is internal. To construct time values, + /// use sf::seconds, sf::milliseconds or sf::microseconds instead. + /// + /// \param microseconds Number of microseconds + /// + //////////////////////////////////////////////////////////// + explicit Time(Int64 microseconds); + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + Int64 m_microseconds; ///< Time value stored as microseconds +}; + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Construct a time value from a number of seconds +/// +/// \param amount Number of seconds +/// +/// \return Time value constructed from the amount of seconds +/// +/// \see milliseconds, microseconds +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time seconds(float amount); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Construct a time value from a number of milliseconds +/// +/// \param amount Number of milliseconds +/// +/// \return Time value constructed from the amount of milliseconds +/// +/// \see seconds, microseconds +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time milliseconds(Int32 amount); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Construct a time value from a number of microseconds +/// +/// \param amount Number of microseconds +/// +/// \return Time value constructed from the amount of microseconds +/// +/// \see seconds, milliseconds +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time microseconds(Int64 amount); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of == operator to compare two time values +/// +/// \param left Left operand (a time) +/// \param right Right operand (a time) +/// +/// \return True if both time values are equal +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API bool operator ==(Time left, Time right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of != operator to compare two time values +/// +/// \param left Left operand (a time) +/// \param right Right operand (a time) +/// +/// \return True if both time values are different +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API bool operator !=(Time left, Time right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of < operator to compare two time values +/// +/// \param left Left operand (a time) +/// \param right Right operand (a time) +/// +/// \return True if \a left is lesser than \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API bool operator <(Time left, Time right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of > operator to compare two time values +/// +/// \param left Left operand (a time) +/// \param right Right operand (a time) +/// +/// \return True if \a left is greater than \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API bool operator >(Time left, Time right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of <= operator to compare two time values +/// +/// \param left Left operand (a time) +/// \param right Right operand (a time) +/// +/// \return True if \a left is lesser or equal than \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API bool operator <=(Time left, Time right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of >= operator to compare two time values +/// +/// \param left Left operand (a time) +/// \param right Right operand (a time) +/// +/// \return True if \a left is greater or equal than \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API bool operator >=(Time left, Time right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of unary - operator to negate a time value +/// +/// \param right Right operand (a time) +/// +/// \return Opposite of the time value +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time operator -(Time right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of binary + operator to add two time values +/// +/// \param left Left operand (a time) +/// \param right Right operand (a time) +/// +/// \return Sum of the two times values +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time operator +(Time left, Time right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of binary += operator to add/assign two time values +/// +/// \param left Left operand (a time) +/// \param right Right operand (a time) +/// +/// \return Sum of the two times values +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time& operator +=(Time& left, Time right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of binary - operator to subtract two time values +/// +/// \param left Left operand (a time) +/// \param right Right operand (a time) +/// +/// \return Difference of the two times values +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time operator -(Time left, Time right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of binary -= operator to subtract/assign two time values +/// +/// \param left Left operand (a time) +/// \param right Right operand (a time) +/// +/// \return Difference of the two times values +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time& operator -=(Time& left, Time right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of binary * operator to scale a time value +/// +/// \param left Left operand (a time) +/// \param right Right operand (a number) +/// +/// \return \a left multiplied by \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time operator *(Time left, float right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of binary * operator to scale a time value +/// +/// \param left Left operand (a time) +/// \param right Right operand (a number) +/// +/// \return \a left multiplied by \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time operator *(Time left, Int64 right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of binary * operator to scale a time value +/// +/// \param left Left operand (a number) +/// \param right Right operand (a time) +/// +/// \return \a left multiplied by \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time operator *(float left, Time right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of binary * operator to scale a time value +/// +/// \param left Left operand (a number) +/// \param right Right operand (a time) +/// +/// \return \a left multiplied by \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time operator *(Int64 left, Time right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of binary *= operator to scale/assign a time value +/// +/// \param left Left operand (a time) +/// \param right Right operand (a number) +/// +/// \return \a left multiplied by \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time& operator *=(Time& left, float right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of binary *= operator to scale/assign a time value +/// +/// \param left Left operand (a time) +/// \param right Right operand (a number) +/// +/// \return \a left multiplied by \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time& operator *=(Time& left, Int64 right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of binary / operator to scale a time value +/// +/// \param left Left operand (a time) +/// \param right Right operand (a number) +/// +/// \return \a left divided by \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time operator /(Time left, float right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of binary / operator to scale a time value +/// +/// \param left Left operand (a time) +/// \param right Right operand (a number) +/// +/// \return \a left divided by \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time operator /(Time left, Int64 right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of binary /= operator to scale/assign a time value +/// +/// \param left Left operand (a time) +/// \param right Right operand (a number) +/// +/// \return \a left divided by \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time& operator /=(Time& left, float right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of binary /= operator to scale/assign a time value +/// +/// \param left Left operand (a time) +/// \param right Right operand (a number) +/// +/// \return \a left divided by \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time& operator /=(Time& left, Int64 right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of binary / operator to compute the ratio of two time values +/// +/// \param left Left operand (a time) +/// \param right Right operand (a time) +/// +/// \return \a left divided by \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API float operator /(Time left, Time right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of binary % operator to compute remainder of a time value +/// +/// \param left Left operand (a time) +/// \param right Right operand (a time) +/// +/// \return \a left modulo \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time operator %(Time left, Time right); + +//////////////////////////////////////////////////////////// +/// \relates Time +/// \brief Overload of binary %= operator to compute/assign remainder of a time value +/// +/// \param left Left operand (a time) +/// \param right Right operand (a time) +/// +/// \return \a left modulo \a right +/// +//////////////////////////////////////////////////////////// +SFML_SYSTEM_API Time& operator %=(Time& left, Time right); + +} // namespace sf + + +#endif // SFML_TIME_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Time +/// \ingroup system +/// +/// sf::Time encapsulates a time value in a flexible way. +/// It allows to define a time value either as a number of +/// seconds, milliseconds or microseconds. It also works the +/// other way round: you can read a time value as either +/// a number of seconds, milliseconds or microseconds. +/// +/// By using such a flexible interface, the API doesn't +/// impose any fixed type or resolution for time values, +/// and let the user choose its own favorite representation. +/// +/// Time values support the usual mathematical operations: +/// you can add or subtract two times, multiply or divide +/// a time by a number, compare two times, etc. +/// +/// Since they represent a time span and not an absolute time +/// value, times can also be negative. +/// +/// Usage example: +/// \code +/// sf::Time t1 = sf::seconds(0.1f); +/// Int32 milli = t1.asMilliseconds(); // 100 +/// +/// sf::Time t2 = sf::milliseconds(30); +/// Int64 micro = t2.asMicroseconds(); // 30000 +/// +/// sf::Time t3 = sf::microseconds(-800000); +/// float sec = t3.asSeconds(); // -0.8 +/// \endcode +/// +/// \code +/// void update(sf::Time elapsed) +/// { +/// position += speed * elapsed.asSeconds(); +/// } +/// +/// update(sf::milliseconds(100)); +/// \endcode +/// +/// \see sf::Clock +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/System/Utf.hpp b/mcclone/external/sfml23/include/SFML/System/Utf.hpp new file mode 100644 index 0000000..9e9d153 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/Utf.hpp @@ -0,0 +1,763 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_UTF_HPP +#define SFML_UTF_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include + + +namespace sf +{ +template +class Utf; + +//////////////////////////////////////////////////////////// +/// \brief Specialization of the Utf template for UTF-8 +/// +//////////////////////////////////////////////////////////// +template <> +class Utf<8> +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Decode a single UTF-8 character + /// + /// Decoding a character means finding its unique 32-bits + /// code (called the codepoint) in the Unicode standard. + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Codepoint of the decoded UTF-8 character + /// \param replacement Replacement character to use in case the UTF-8 sequence is invalid + /// + /// \return Iterator pointing to one past the last read element of the input sequence + /// + //////////////////////////////////////////////////////////// + template + static In decode(In begin, In end, Uint32& output, Uint32 replacement = 0); + + //////////////////////////////////////////////////////////// + /// \brief Encode a single UTF-8 character + /// + /// Encoding a character means converting a unique 32-bits + /// code (called the codepoint) in the target encoding, UTF-8. + /// + /// \param input Codepoint to encode as UTF-8 + /// \param output Iterator pointing to the beginning of the output sequence + /// \param replacement Replacement for characters not convertible to UTF-8 (use 0 to skip them) + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out encode(Uint32 input, Out output, Uint8 replacement = 0); + + //////////////////////////////////////////////////////////// + /// \brief Advance to the next UTF-8 character + /// + /// This function is necessary for multi-elements encodings, as + /// a single character may use more than 1 storage element. + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// + /// \return Iterator pointing to one past the last read element of the input sequence + /// + //////////////////////////////////////////////////////////// + template + static In next(In begin, In end); + + //////////////////////////////////////////////////////////// + /// \brief Count the number of characters of a UTF-8 sequence + /// + /// This function is necessary for multi-elements encodings, as + /// a single character may use more than 1 storage element, thus the + /// total size can be different from (begin - end). + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// + /// \return Iterator pointing to one past the last read element of the input sequence + /// + //////////////////////////////////////////////////////////// + template + static std::size_t count(In begin, In end); + + //////////////////////////////////////////////////////////// + /// \brief Convert an ANSI characters range to UTF-8 + /// + /// The current global locale will be used by default, unless you + /// pass a custom one in the \a locale parameter. + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// \param locale Locale to use for conversion + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out fromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale()); + + //////////////////////////////////////////////////////////// + /// \brief Convert a wide characters range to UTF-8 + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out fromWide(In begin, In end, Out output); + + //////////////////////////////////////////////////////////// + /// \brief Convert a latin-1 (ISO-5589-1) characters range to UTF-8 + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out fromLatin1(In begin, In end, Out output); + + //////////////////////////////////////////////////////////// + /// \brief Convert an UTF-8 characters range to ANSI characters + /// + /// The current global locale will be used by default, unless you + /// pass a custom one in the \a locale parameter. + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// \param replacement Replacement for characters not convertible to ANSI (use 0 to skip them) + /// \param locale Locale to use for conversion + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale()); + + //////////////////////////////////////////////////////////// + /// \brief Convert an UTF-8 characters range to wide characters + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// \param replacement Replacement for characters not convertible to wide (use 0 to skip them) + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toWide(In begin, In end, Out output, wchar_t replacement = 0); + + //////////////////////////////////////////////////////////// + /// \brief Convert an UTF-8 characters range to latin-1 (ISO-5589-1) characters + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// \param replacement Replacement for characters not convertible to wide (use 0 to skip them) + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toLatin1(In begin, In end, Out output, char replacement = 0); + + //////////////////////////////////////////////////////////// + /// \brief Convert a UTF-8 characters range to UTF-8 + /// + /// This functions does nothing more than a direct copy; + /// it is defined only to provide the same interface as other + /// specializations of the sf::Utf<> template, and allow + /// generic code to be written on top of it. + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toUtf8(In begin, In end, Out output); + + //////////////////////////////////////////////////////////// + /// \brief Convert a UTF-8 characters range to UTF-16 + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toUtf16(In begin, In end, Out output); + + //////////////////////////////////////////////////////////// + /// \brief Convert a UTF-8 characters range to UTF-32 + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toUtf32(In begin, In end, Out output); +}; + +//////////////////////////////////////////////////////////// +/// \brief Specialization of the Utf template for UTF-16 +/// +//////////////////////////////////////////////////////////// +template <> +class Utf<16> +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Decode a single UTF-16 character + /// + /// Decoding a character means finding its unique 32-bits + /// code (called the codepoint) in the Unicode standard. + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Codepoint of the decoded UTF-16 character + /// \param replacement Replacement character to use in case the UTF-8 sequence is invalid + /// + /// \return Iterator pointing to one past the last read element of the input sequence + /// + //////////////////////////////////////////////////////////// + template + static In decode(In begin, In end, Uint32& output, Uint32 replacement = 0); + + //////////////////////////////////////////////////////////// + /// \brief Encode a single UTF-16 character + /// + /// Encoding a character means converting a unique 32-bits + /// code (called the codepoint) in the target encoding, UTF-16. + /// + /// \param input Codepoint to encode as UTF-16 + /// \param output Iterator pointing to the beginning of the output sequence + /// \param replacement Replacement for characters not convertible to UTF-16 (use 0 to skip them) + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out encode(Uint32 input, Out output, Uint16 replacement = 0); + + //////////////////////////////////////////////////////////// + /// \brief Advance to the next UTF-16 character + /// + /// This function is necessary for multi-elements encodings, as + /// a single character may use more than 1 storage element. + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// + /// \return Iterator pointing to one past the last read element of the input sequence + /// + //////////////////////////////////////////////////////////// + template + static In next(In begin, In end); + + //////////////////////////////////////////////////////////// + /// \brief Count the number of characters of a UTF-16 sequence + /// + /// This function is necessary for multi-elements encodings, as + /// a single character may use more than 1 storage element, thus the + /// total size can be different from (begin - end). + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// + /// \return Iterator pointing to one past the last read element of the input sequence + /// + //////////////////////////////////////////////////////////// + template + static std::size_t count(In begin, In end); + + //////////////////////////////////////////////////////////// + /// \brief Convert an ANSI characters range to UTF-16 + /// + /// The current global locale will be used by default, unless you + /// pass a custom one in the \a locale parameter. + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// \param locale Locale to use for conversion + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out fromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale()); + + //////////////////////////////////////////////////////////// + /// \brief Convert a wide characters range to UTF-16 + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out fromWide(In begin, In end, Out output); + + //////////////////////////////////////////////////////////// + /// \brief Convert a latin-1 (ISO-5589-1) characters range to UTF-16 + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out fromLatin1(In begin, In end, Out output); + + //////////////////////////////////////////////////////////// + /// \brief Convert an UTF-16 characters range to ANSI characters + /// + /// The current global locale will be used by default, unless you + /// pass a custom one in the \a locale parameter. + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// \param replacement Replacement for characters not convertible to ANSI (use 0 to skip them) + /// \param locale Locale to use for conversion + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale()); + + //////////////////////////////////////////////////////////// + /// \brief Convert an UTF-16 characters range to wide characters + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// \param replacement Replacement for characters not convertible to wide (use 0 to skip them) + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toWide(In begin, In end, Out output, wchar_t replacement = 0); + + //////////////////////////////////////////////////////////// + /// \brief Convert an UTF-16 characters range to latin-1 (ISO-5589-1) characters + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// \param replacement Replacement for characters not convertible to wide (use 0 to skip them) + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toLatin1(In begin, In end, Out output, char replacement = 0); + + //////////////////////////////////////////////////////////// + /// \brief Convert a UTF-16 characters range to UTF-8 + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toUtf8(In begin, In end, Out output); + + //////////////////////////////////////////////////////////// + /// \brief Convert a UTF-16 characters range to UTF-16 + /// + /// This functions does nothing more than a direct copy; + /// it is defined only to provide the same interface as other + /// specializations of the sf::Utf<> template, and allow + /// generic code to be written on top of it. + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toUtf16(In begin, In end, Out output); + + //////////////////////////////////////////////////////////// + /// \brief Convert a UTF-16 characters range to UTF-32 + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toUtf32(In begin, In end, Out output); +}; + +//////////////////////////////////////////////////////////// +/// \brief Specialization of the Utf template for UTF-32 +/// +//////////////////////////////////////////////////////////// +template <> +class Utf<32> +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Decode a single UTF-32 character + /// + /// Decoding a character means finding its unique 32-bits + /// code (called the codepoint) in the Unicode standard. + /// For UTF-32, the character value is the same as the codepoint. + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Codepoint of the decoded UTF-32 character + /// \param replacement Replacement character to use in case the UTF-8 sequence is invalid + /// + /// \return Iterator pointing to one past the last read element of the input sequence + /// + //////////////////////////////////////////////////////////// + template + static In decode(In begin, In end, Uint32& output, Uint32 replacement = 0); + + //////////////////////////////////////////////////////////// + /// \brief Encode a single UTF-32 character + /// + /// Encoding a character means converting a unique 32-bits + /// code (called the codepoint) in the target encoding, UTF-32. + /// For UTF-32, the codepoint is the same as the character value. + /// + /// \param input Codepoint to encode as UTF-32 + /// \param output Iterator pointing to the beginning of the output sequence + /// \param replacement Replacement for characters not convertible to UTF-32 (use 0 to skip them) + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out encode(Uint32 input, Out output, Uint32 replacement = 0); + + //////////////////////////////////////////////////////////// + /// \brief Advance to the next UTF-32 character + /// + /// This function is trivial for UTF-32, which can store + /// every character in a single storage element. + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// + /// \return Iterator pointing to one past the last read element of the input sequence + /// + //////////////////////////////////////////////////////////// + template + static In next(In begin, In end); + + //////////////////////////////////////////////////////////// + /// \brief Count the number of characters of a UTF-32 sequence + /// + /// This function is trivial for UTF-32, which can store + /// every character in a single storage element. + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// + /// \return Iterator pointing to one past the last read element of the input sequence + /// + //////////////////////////////////////////////////////////// + template + static std::size_t count(In begin, In end); + + //////////////////////////////////////////////////////////// + /// \brief Convert an ANSI characters range to UTF-32 + /// + /// The current global locale will be used by default, unless you + /// pass a custom one in the \a locale parameter. + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// \param locale Locale to use for conversion + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out fromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale()); + + //////////////////////////////////////////////////////////// + /// \brief Convert a wide characters range to UTF-32 + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out fromWide(In begin, In end, Out output); + + //////////////////////////////////////////////////////////// + /// \brief Convert a latin-1 (ISO-5589-1) characters range to UTF-32 + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out fromLatin1(In begin, In end, Out output); + + //////////////////////////////////////////////////////////// + /// \brief Convert an UTF-32 characters range to ANSI characters + /// + /// The current global locale will be used by default, unless you + /// pass a custom one in the \a locale parameter. + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// \param replacement Replacement for characters not convertible to ANSI (use 0 to skip them) + /// \param locale Locale to use for conversion + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale()); + + //////////////////////////////////////////////////////////// + /// \brief Convert an UTF-32 characters range to wide characters + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// \param replacement Replacement for characters not convertible to wide (use 0 to skip them) + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toWide(In begin, In end, Out output, wchar_t replacement = 0); + + //////////////////////////////////////////////////////////// + /// \brief Convert an UTF-16 characters range to latin-1 (ISO-5589-1) characters + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// \param replacement Replacement for characters not convertible to wide (use 0 to skip them) + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toLatin1(In begin, In end, Out output, char replacement = 0); + + //////////////////////////////////////////////////////////// + /// \brief Convert a UTF-32 characters range to UTF-8 + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toUtf8(In begin, In end, Out output); + + //////////////////////////////////////////////////////////// + /// \brief Convert a UTF-32 characters range to UTF-16 + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toUtf16(In begin, In end, Out output); + + //////////////////////////////////////////////////////////// + /// \brief Convert a UTF-32 characters range to UTF-32 + /// + /// This functions does nothing more than a direct copy; + /// it is defined only to provide the same interface as other + /// specializations of the sf::Utf<> template, and allow + /// generic code to be written on top of it. + /// + /// \param begin Iterator pointing to the beginning of the input sequence + /// \param end Iterator pointing to the end of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out toUtf32(In begin, In end, Out output); + + //////////////////////////////////////////////////////////// + /// \brief Decode a single ANSI character to UTF-32 + /// + /// This function does not exist in other specializations + /// of sf::Utf<>, it is defined for convenience (it is used by + /// several other conversion functions). + /// + /// \param input Input ANSI character + /// \param locale Locale to use for conversion + /// + /// \return Converted character + /// + //////////////////////////////////////////////////////////// + template + static Uint32 decodeAnsi(In input, const std::locale& locale = std::locale()); + + //////////////////////////////////////////////////////////// + /// \brief Decode a single wide character to UTF-32 + /// + /// This function does not exist in other specializations + /// of sf::Utf<>, it is defined for convenience (it is used by + /// several other conversion functions). + /// + /// \param input Input wide character + /// + /// \return Converted character + /// + //////////////////////////////////////////////////////////// + template + static Uint32 decodeWide(In input); + + //////////////////////////////////////////////////////////// + /// \brief Encode a single UTF-32 character to ANSI + /// + /// This function does not exist in other specializations + /// of sf::Utf<>, it is defined for convenience (it is used by + /// several other conversion functions). + /// + /// \param codepoint Iterator pointing to the beginning of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// \param replacement Replacement if the input character is not convertible to ANSI (use 0 to skip it) + /// \param locale Locale to use for conversion + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out encodeAnsi(Uint32 codepoint, Out output, char replacement = 0, const std::locale& locale = std::locale()); + + //////////////////////////////////////////////////////////// + /// \brief Encode a single UTF-32 character to wide + /// + /// This function does not exist in other specializations + /// of sf::Utf<>, it is defined for convenience (it is used by + /// several other conversion functions). + /// + /// \param codepoint Iterator pointing to the beginning of the input sequence + /// \param output Iterator pointing to the beginning of the output sequence + /// \param replacement Replacement if the input character is not convertible to wide (use 0 to skip it) + /// + /// \return Iterator to the end of the output sequence which has been written + /// + //////////////////////////////////////////////////////////// + template + static Out encodeWide(Uint32 codepoint, Out output, wchar_t replacement = 0); +}; + +#include + +// Make typedefs to get rid of the template syntax +typedef Utf<8> Utf8; +typedef Utf<16> Utf16; +typedef Utf<32> Utf32; + +} // namespace sf + + +#endif // SFML_UTF_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Utf +/// \ingroup system +/// +/// Utility class providing generic functions for UTF conversions. +/// +/// sf::Utf is a low-level, generic interface for counting, iterating, +/// encoding and decoding Unicode characters and strings. It is able +/// to handle ANSI, wide, latin-1, UTF-8, UTF-16 and UTF-32 encodings. +/// +/// sf::Utf functions are all static, these classes are not meant to +/// be instantiated. All the functions are template, so that you +/// can use any character / string type for a given encoding. +/// +/// It has 3 specializations: +/// \li sf::Utf<8> (typedef'd to sf::Utf8) +/// \li sf::Utf<16> (typedef'd to sf::Utf16) +/// \li sf::Utf<32> (typedef'd to sf::Utf32) +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/System/Utf.inl b/mcclone/external/sfml23/include/SFML/System/Utf.inl new file mode 100644 index 0000000..a69ca07 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/Utf.inl @@ -0,0 +1,752 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +// References: +// +// http://www.unicode.org/ +// http://www.unicode.org/Public/PROGRAMS/CVTUTF/ConvertUTF.c +// http://www.unicode.org/Public/PROGRAMS/CVTUTF/ConvertUTF.h +// http://people.w3.org/rishida/scripts/uniview/conversion +// +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +template +In Utf<8>::decode(In begin, In end, Uint32& output, Uint32 replacement) +{ + // Some useful precomputed data + static const int trailing[256] = + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5 + }; + static const Uint32 offsets[6] = + { + 0x00000000, 0x00003080, 0x000E2080, 0x03C82080, 0xFA082080, 0x82082080 + }; + + // decode the character + int trailingBytes = trailing[static_cast(*begin)]; + if (begin + trailingBytes < end) + { + output = 0; + switch (trailingBytes) + { + case 5: output += static_cast(*begin++); output <<= 6; + case 4: output += static_cast(*begin++); output <<= 6; + case 3: output += static_cast(*begin++); output <<= 6; + case 2: output += static_cast(*begin++); output <<= 6; + case 1: output += static_cast(*begin++); output <<= 6; + case 0: output += static_cast(*begin++); + } + output -= offsets[trailingBytes]; + } + else + { + // Incomplete character + begin = end; + output = replacement; + } + + return begin; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<8>::encode(Uint32 input, Out output, Uint8 replacement) +{ + // Some useful precomputed data + static const Uint8 firstBytes[7] = + { + 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC + }; + + // encode the character + if ((input > 0x0010FFFF) || ((input >= 0xD800) && (input <= 0xDBFF))) + { + // Invalid character + if (replacement) + *output++ = replacement; + } + else + { + // Valid character + + // Get the number of bytes to write + std::size_t bytestoWrite = 1; + if (input < 0x80) bytestoWrite = 1; + else if (input < 0x800) bytestoWrite = 2; + else if (input < 0x10000) bytestoWrite = 3; + else if (input <= 0x0010FFFF) bytestoWrite = 4; + + // Extract the bytes to write + Uint8 bytes[4]; + switch (bytestoWrite) + { + case 4: bytes[3] = static_cast((input | 0x80) & 0xBF); input >>= 6; + case 3: bytes[2] = static_cast((input | 0x80) & 0xBF); input >>= 6; + case 2: bytes[1] = static_cast((input | 0x80) & 0xBF); input >>= 6; + case 1: bytes[0] = static_cast (input | firstBytes[bytestoWrite]); + } + + // Add them to the output + output = std::copy(bytes, bytes + bytestoWrite, output); + } + + return output; +} + + +//////////////////////////////////////////////////////////// +template +In Utf<8>::next(In begin, In end) +{ + Uint32 codepoint; + return decode(begin, end, codepoint); +} + + +//////////////////////////////////////////////////////////// +template +std::size_t Utf<8>::count(In begin, In end) +{ + std::size_t length = 0; + while (begin < end) + { + begin = next(begin, end); + ++length; + } + + return length; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<8>::fromAnsi(In begin, In end, Out output, const std::locale& locale) +{ + while (begin < end) + { + Uint32 codepoint = Utf<32>::decodeAnsi(*begin++, locale); + output = encode(codepoint, output); + } + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<8>::fromWide(In begin, In end, Out output) +{ + while (begin < end) + { + Uint32 codepoint = Utf<32>::decodeWide(*begin++); + output = encode(codepoint, output); + } + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<8>::fromLatin1(In begin, In end, Out output) +{ + // Latin-1 is directly compatible with Unicode encodings, + // and can thus be treated as (a sub-range of) UTF-32 + while (begin < end) + output = encode(*begin++, output); + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<8>::toAnsi(In begin, In end, Out output, char replacement, const std::locale& locale) +{ + while (begin < end) + { + Uint32 codepoint; + begin = decode(begin, end, codepoint); + output = Utf<32>::encodeAnsi(codepoint, output, replacement, locale); + } + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<8>::toWide(In begin, In end, Out output, wchar_t replacement) +{ + while (begin < end) + { + Uint32 codepoint; + begin = decode(begin, end, codepoint); + output = Utf<32>::encodeWide(codepoint, output, replacement); + } + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<8>::toLatin1(In begin, In end, Out output, char replacement) +{ + // Latin-1 is directly compatible with Unicode encodings, + // and can thus be treated as (a sub-range of) UTF-32 + while (begin < end) + { + Uint32 codepoint; + begin = decode(begin, end, codepoint); + *output++ = codepoint < 256 ? static_cast(codepoint) : replacement; + } + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<8>::toUtf8(In begin, In end, Out output) +{ + return std::copy(begin, end, output); +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<8>::toUtf16(In begin, In end, Out output) +{ + while (begin < end) + { + Uint32 codepoint; + begin = decode(begin, end, codepoint); + output = Utf<16>::encode(codepoint, output); + } + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<8>::toUtf32(In begin, In end, Out output) +{ + while (begin < end) + { + Uint32 codepoint; + begin = decode(begin, end, codepoint); + *output++ = codepoint; + } + + return output; +} + + +//////////////////////////////////////////////////////////// +template +In Utf<16>::decode(In begin, In end, Uint32& output, Uint32 replacement) +{ + Uint16 first = *begin++; + + // If it's a surrogate pair, first convert to a single UTF-32 character + if ((first >= 0xD800) && (first <= 0xDBFF)) + { + if (begin < end) + { + Uint32 second = *begin++; + if ((second >= 0xDC00) && (second <= 0xDFFF)) + { + // The second element is valid: convert the two elements to a UTF-32 character + output = static_cast(((first - 0xD800) << 10) + (second - 0xDC00) + 0x0010000); + } + else + { + // Invalid character + output = replacement; + } + } + else + { + // Invalid character + begin = end; + output = replacement; + } + } + else + { + // We can make a direct copy + output = first; + } + + return begin; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<16>::encode(Uint32 input, Out output, Uint16 replacement) +{ + if (input < 0xFFFF) + { + // The character can be copied directly, we just need to check if it's in the valid range + if ((input >= 0xD800) && (input <= 0xDFFF)) + { + // Invalid character (this range is reserved) + if (replacement) + *output++ = replacement; + } + else + { + // Valid character directly convertible to a single UTF-16 character + *output++ = static_cast(input); + } + } + else if (input > 0x0010FFFF) + { + // Invalid character (greater than the maximum Unicode value) + if (replacement) + *output++ = replacement; + } + else + { + // The input character will be converted to two UTF-16 elements + input -= 0x0010000; + *output++ = static_cast((input >> 10) + 0xD800); + *output++ = static_cast((input & 0x3FFUL) + 0xDC00); + } + + return output; +} + + +//////////////////////////////////////////////////////////// +template +In Utf<16>::next(In begin, In end) +{ + Uint32 codepoint; + return decode(begin, end, codepoint); +} + + +//////////////////////////////////////////////////////////// +template +std::size_t Utf<16>::count(In begin, In end) +{ + std::size_t length = 0; + while (begin < end) + { + begin = next(begin, end); + ++length; + } + + return length; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<16>::fromAnsi(In begin, In end, Out output, const std::locale& locale) +{ + while (begin < end) + { + Uint32 codepoint = Utf<32>::decodeAnsi(*begin++, locale); + output = encode(codepoint, output); + } + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<16>::fromWide(In begin, In end, Out output) +{ + while (begin < end) + { + Uint32 codepoint = Utf<32>::decodeWide(*begin++); + output = encode(codepoint, output); + } + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<16>::fromLatin1(In begin, In end, Out output) +{ + // Latin-1 is directly compatible with Unicode encodings, + // and can thus be treated as (a sub-range of) UTF-32 + return std::copy(begin, end, output); +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<16>::toAnsi(In begin, In end, Out output, char replacement, const std::locale& locale) +{ + while (begin < end) + { + Uint32 codepoint; + begin = decode(begin, end, codepoint); + output = Utf<32>::encodeAnsi(codepoint, output, replacement, locale); + } + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<16>::toWide(In begin, In end, Out output, wchar_t replacement) +{ + while (begin < end) + { + Uint32 codepoint; + begin = decode(begin, end, codepoint); + output = Utf<32>::encodeWide(codepoint, output, replacement); + } + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<16>::toLatin1(In begin, In end, Out output, char replacement) +{ + // Latin-1 is directly compatible with Unicode encodings, + // and can thus be treated as (a sub-range of) UTF-32 + while (begin < end) + { + *output++ = *begin < 256 ? static_cast(*begin) : replacement; + begin++; + } + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<16>::toUtf8(In begin, In end, Out output) +{ + while (begin < end) + { + Uint32 codepoint; + begin = decode(begin, end, codepoint); + output = Utf<8>::encode(codepoint, output); + } + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<16>::toUtf16(In begin, In end, Out output) +{ + return std::copy(begin, end, output); +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<16>::toUtf32(In begin, In end, Out output) +{ + while (begin < end) + { + Uint32 codepoint; + begin = decode(begin, end, codepoint); + *output++ = codepoint; + } + + return output; +} + + +//////////////////////////////////////////////////////////// +template +In Utf<32>::decode(In begin, In /*end*/, Uint32& output, Uint32 /*replacement*/) +{ + output = *begin++; + return begin; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<32>::encode(Uint32 input, Out output, Uint32 /*replacement*/) +{ + *output++ = input; + return output; +} + + +//////////////////////////////////////////////////////////// +template +In Utf<32>::next(In begin, In /*end*/) +{ + return ++begin; +} + + +//////////////////////////////////////////////////////////// +template +std::size_t Utf<32>::count(In begin, In end) +{ + return begin - end; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<32>::fromAnsi(In begin, In end, Out output, const std::locale& locale) +{ + while (begin < end) + *output++ = decodeAnsi(*begin++, locale); + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<32>::fromWide(In begin, In end, Out output) +{ + while (begin < end) + *output++ = decodeWide(*begin++); + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<32>::fromLatin1(In begin, In end, Out output) +{ + // Latin-1 is directly compatible with Unicode encodings, + // and can thus be treated as (a sub-range of) UTF-32 + return std::copy(begin, end, output); +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<32>::toAnsi(In begin, In end, Out output, char replacement, const std::locale& locale) +{ + while (begin < end) + output = encodeAnsi(*begin++, output, replacement, locale); + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<32>::toWide(In begin, In end, Out output, wchar_t replacement) +{ + while (begin < end) + output = encodeWide(*begin++, output, replacement); + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<32>::toLatin1(In begin, In end, Out output, char replacement) +{ + // Latin-1 is directly compatible with Unicode encodings, + // and can thus be treated as (a sub-range of) UTF-32 + while (begin < end) + { + *output++ = *begin < 256 ? static_cast(*begin) : replacement; + begin++; + } + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<32>::toUtf8(In begin, In end, Out output) +{ + while (begin < end) + output = Utf<8>::encode(*begin++, output); + + return output; +} + +//////////////////////////////////////////////////////////// +template +Out Utf<32>::toUtf16(In begin, In end, Out output) +{ + while (begin < end) + output = Utf<16>::encode(*begin++, output); + + return output; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<32>::toUtf32(In begin, In end, Out output) +{ + return std::copy(begin, end, output); +} + + +//////////////////////////////////////////////////////////// +template +Uint32 Utf<32>::decodeAnsi(In input, const std::locale& locale) +{ + // On Windows, GCC's standard library (glibc++) has almost + // no support for Unicode stuff. As a consequence, in this + // context we can only use the default locale and ignore + // the one passed as parameter. + + #if defined(SFML_SYSTEM_WINDOWS) && /* if Windows ... */ \ + (defined(__GLIBCPP__) || defined (__GLIBCXX__)) && /* ... and standard library is glibc++ ... */ \ + !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) /* ... and STLPort is not used on top of it */ + + (void)locale; // to avoid warnings + + wchar_t character = 0; + mbtowc(&character, &input, 1); + return static_cast(character); + + #else + + // Get the facet of the locale which deals with character conversion + const std::ctype& facet = std::use_facet< std::ctype >(locale); + + // Use the facet to convert each character of the input string + return static_cast(facet.widen(input)); + + #endif +} + + +//////////////////////////////////////////////////////////// +template +Uint32 Utf<32>::decodeWide(In input) +{ + // The encoding of wide characters is not well defined and is left to the system; + // however we can safely assume that it is UCS-2 on Windows and + // UCS-4 on Unix systems. + // In both cases, a simple copy is enough (UCS-2 is a subset of UCS-4, + // and UCS-4 *is* UTF-32). + + return input; +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<32>::encodeAnsi(Uint32 codepoint, Out output, char replacement, const std::locale& locale) +{ + // On Windows, gcc's standard library (glibc++) has almost + // no support for Unicode stuff. As a consequence, in this + // context we can only use the default locale and ignore + // the one passed as parameter. + + #if defined(SFML_SYSTEM_WINDOWS) && /* if Windows ... */ \ + (defined(__GLIBCPP__) || defined (__GLIBCXX__)) && /* ... and standard library is glibc++ ... */ \ + !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) /* ... and STLPort is not used on top of it */ + + (void)locale; // to avoid warnings + + char character = 0; + if (wctomb(&character, static_cast(codepoint)) >= 0) + *output++ = character; + else if (replacement) + *output++ = replacement; + + return output; + + #else + + // Get the facet of the locale which deals with character conversion + const std::ctype& facet = std::use_facet< std::ctype >(locale); + + // Use the facet to convert each character of the input string + *output++ = facet.narrow(static_cast(codepoint), replacement); + + return output; + + #endif +} + + +//////////////////////////////////////////////////////////// +template +Out Utf<32>::encodeWide(Uint32 codepoint, Out output, wchar_t replacement) +{ + // The encoding of wide characters is not well defined and is left to the system; + // however we can safely assume that it is UCS-2 on Windows and + // UCS-4 on Unix systems. + // For UCS-2 we need to check if the source characters fits in (UCS-2 is a subset of UCS-4). + // For UCS-4 we can do a direct copy (UCS-4 *is* UTF-32). + + switch (sizeof(wchar_t)) + { + case 4: + { + *output++ = static_cast(codepoint); + break; + } + + default: + { + if ((codepoint <= 0xFFFF) && ((codepoint < 0xD800) || (codepoint > 0xDFFF))) + { + *output++ = static_cast(codepoint); + } + else if (replacement) + { + *output++ = replacement; + } + break; + } + } + + return output; +} diff --git a/mcclone/external/sfml23/include/SFML/System/Vector2.hpp b/mcclone/external/sfml23/include/SFML/System/Vector2.hpp new file mode 100644 index 0000000..6284026 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/Vector2.hpp @@ -0,0 +1,301 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_VECTOR2_HPP +#define SFML_VECTOR2_HPP + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Utility template class for manipulating +/// 2-dimensional vectors +/// +//////////////////////////////////////////////////////////// +template +class Vector2 +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// Creates a Vector2(0, 0). + /// + //////////////////////////////////////////////////////////// + Vector2(); + + //////////////////////////////////////////////////////////// + /// \brief Construct the vector from its coordinates + /// + /// \param X X coordinate + /// \param Y Y coordinate + /// + //////////////////////////////////////////////////////////// + Vector2(T X, T Y); + + //////////////////////////////////////////////////////////// + /// \brief Construct the vector from another type of vector + /// + /// This constructor doesn't replace the copy constructor, + /// it's called only when U != T. + /// A call to this constructor will fail to compile if U + /// is not convertible to T. + /// + /// \param vector Vector to convert + /// + //////////////////////////////////////////////////////////// + template + explicit Vector2(const Vector2& vector); + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + T x; ///< X coordinate of the vector + T y; ///< Y coordinate of the vector +}; + +//////////////////////////////////////////////////////////// +/// \relates Vector2 +/// \brief Overload of unary operator - +/// +/// \param right Vector to negate +/// +/// \return Memberwise opposite of the vector +/// +//////////////////////////////////////////////////////////// +template +Vector2 operator -(const Vector2& right); + +//////////////////////////////////////////////////////////// +/// \relates Vector2 +/// \brief Overload of binary operator += +/// +/// This operator performs a memberwise addition of both vectors, +/// and assigns the result to \a left. +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a vector) +/// +/// \return Reference to \a left +/// +//////////////////////////////////////////////////////////// +template +Vector2& operator +=(Vector2& left, const Vector2& right); + +//////////////////////////////////////////////////////////// +/// \relates Vector2 +/// \brief Overload of binary operator -= +/// +/// This operator performs a memberwise subtraction of both vectors, +/// and assigns the result to \a left. +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a vector) +/// +/// \return Reference to \a left +/// +//////////////////////////////////////////////////////////// +template +Vector2& operator -=(Vector2& left, const Vector2& right); + +//////////////////////////////////////////////////////////// +/// \relates Vector2 +/// \brief Overload of binary operator + +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a vector) +/// +/// \return Memberwise addition of both vectors +/// +//////////////////////////////////////////////////////////// +template +Vector2 operator +(const Vector2& left, const Vector2& right); + +//////////////////////////////////////////////////////////// +/// \relates Vector2 +/// \brief Overload of binary operator - +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a vector) +/// +/// \return Memberwise subtraction of both vectors +/// +//////////////////////////////////////////////////////////// +template +Vector2 operator -(const Vector2& left, const Vector2& right); + +//////////////////////////////////////////////////////////// +/// \relates Vector2 +/// \brief Overload of binary operator * +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a scalar value) +/// +/// \return Memberwise multiplication by \a right +/// +//////////////////////////////////////////////////////////// +template +Vector2 operator *(const Vector2& left, T right); + +//////////////////////////////////////////////////////////// +/// \relates Vector2 +/// \brief Overload of binary operator * +/// +/// \param left Left operand (a scalar value) +/// \param right Right operand (a vector) +/// +/// \return Memberwise multiplication by \a left +/// +//////////////////////////////////////////////////////////// +template +Vector2 operator *(T left, const Vector2& right); + +//////////////////////////////////////////////////////////// +/// \relates Vector2 +/// \brief Overload of binary operator *= +/// +/// This operator performs a memberwise multiplication by \a right, +/// and assigns the result to \a left. +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a scalar value) +/// +/// \return Reference to \a left +/// +//////////////////////////////////////////////////////////// +template +Vector2& operator *=(Vector2& left, T right); + +//////////////////////////////////////////////////////////// +/// \relates Vector2 +/// \brief Overload of binary operator / +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a scalar value) +/// +/// \return Memberwise division by \a right +/// +//////////////////////////////////////////////////////////// +template +Vector2 operator /(const Vector2& left, T right); + +//////////////////////////////////////////////////////////// +/// \relates Vector2 +/// \brief Overload of binary operator /= +/// +/// This operator performs a memberwise division by \a right, +/// and assigns the result to \a left. +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a scalar value) +/// +/// \return Reference to \a left +/// +//////////////////////////////////////////////////////////// +template +Vector2& operator /=(Vector2& left, T right); + +//////////////////////////////////////////////////////////// +/// \relates Vector2 +/// \brief Overload of binary operator == +/// +/// This operator compares strict equality between two vectors. +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a vector) +/// +/// \return True if \a left is equal to \a right +/// +//////////////////////////////////////////////////////////// +template +bool operator ==(const Vector2& left, const Vector2& right); + +//////////////////////////////////////////////////////////// +/// \relates Vector2 +/// \brief Overload of binary operator != +/// +/// This operator compares strict difference between two vectors. +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a vector) +/// +/// \return True if \a left is not equal to \a right +/// +//////////////////////////////////////////////////////////// +template +bool operator !=(const Vector2& left, const Vector2& right); + +#include + +// Define the most common types +typedef Vector2 Vector2i; +typedef Vector2 Vector2u; +typedef Vector2 Vector2f; + +} // namespace sf + + +#endif // SFML_VECTOR2_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Vector2 +/// \ingroup system +/// +/// sf::Vector2 is a simple class that defines a mathematical +/// vector with two coordinates (x and y). It can be used to +/// represent anything that has two dimensions: a size, a point, +/// a velocity, etc. +/// +/// The template parameter T is the type of the coordinates. It +/// can be any type that supports arithmetic operations (+, -, /, *) +/// and comparisons (==, !=), for example int or float. +/// +/// You generally don't have to care about the templated form (sf::Vector2), +/// the most common specializations have special typedefs: +/// \li sf::Vector2 is sf::Vector2f +/// \li sf::Vector2 is sf::Vector2i +/// \li sf::Vector2 is sf::Vector2u +/// +/// The sf::Vector2 class has a small and simple interface, its x and y members +/// can be accessed directly (there are no accessors like setX(), getX()) and it +/// contains no mathematical function like dot product, cross product, length, etc. +/// +/// Usage example: +/// \code +/// sf::Vector2f v1(16.5f, 24.f); +/// v1.x = 18.2f; +/// float y = v1.y; +/// +/// sf::Vector2f v2 = v1 * 5.f; +/// sf::Vector2f v3; +/// v3 = v1 + v2; +/// +/// bool different = (v2 != v3); +/// \endcode +/// +/// Note: for 3-dimensional vectors, see sf::Vector3. +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/System/Vector2.inl b/mcclone/external/sfml23/include/SFML/System/Vector2.inl new file mode 100644 index 0000000..5cc67ca --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/Vector2.inl @@ -0,0 +1,161 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +template +inline Vector2::Vector2() : +x(0), +y(0) +{ + +} + + +//////////////////////////////////////////////////////////// +template +inline Vector2::Vector2(T X, T Y) : +x(X), +y(Y) +{ + +} + + +//////////////////////////////////////////////////////////// +template +template +inline Vector2::Vector2(const Vector2& vector) : +x(static_cast(vector.x)), +y(static_cast(vector.y)) +{ +} + + +//////////////////////////////////////////////////////////// +template +inline Vector2 operator -(const Vector2& right) +{ + return Vector2(-right.x, -right.y); +} + + +//////////////////////////////////////////////////////////// +template +inline Vector2& operator +=(Vector2& left, const Vector2& right) +{ + left.x += right.x; + left.y += right.y; + + return left; +} + + +//////////////////////////////////////////////////////////// +template +inline Vector2& operator -=(Vector2& left, const Vector2& right) +{ + left.x -= right.x; + left.y -= right.y; + + return left; +} + + +//////////////////////////////////////////////////////////// +template +inline Vector2 operator +(const Vector2& left, const Vector2& right) +{ + return Vector2(left.x + right.x, left.y + right.y); +} + + +//////////////////////////////////////////////////////////// +template +inline Vector2 operator -(const Vector2& left, const Vector2& right) +{ + return Vector2(left.x - right.x, left.y - right.y); +} + + +//////////////////////////////////////////////////////////// +template +inline Vector2 operator *(const Vector2& left, T right) +{ + return Vector2(left.x * right, left.y * right); +} + + +//////////////////////////////////////////////////////////// +template +inline Vector2 operator *(T left, const Vector2& right) +{ + return Vector2(right.x * left, right.y * left); +} + + +//////////////////////////////////////////////////////////// +template +inline Vector2& operator *=(Vector2& left, T right) +{ + left.x *= right; + left.y *= right; + + return left; +} + + +//////////////////////////////////////////////////////////// +template +inline Vector2 operator /(const Vector2& left, T right) +{ + return Vector2(left.x / right, left.y / right); +} + + +//////////////////////////////////////////////////////////// +template +inline Vector2& operator /=(Vector2& left, T right) +{ + left.x /= right; + left.y /= right; + + return left; +} + + +//////////////////////////////////////////////////////////// +template +inline bool operator ==(const Vector2& left, const Vector2& right) +{ + return (left.x == right.x) && (left.y == right.y); +} + + +//////////////////////////////////////////////////////////// +template +inline bool operator !=(const Vector2& left, const Vector2& right) +{ + return (left.x != right.x) || (left.y != right.y); +} diff --git a/mcclone/external/sfml23/include/SFML/System/Vector3.hpp b/mcclone/external/sfml23/include/SFML/System/Vector3.hpp new file mode 100644 index 0000000..51704b8 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/Vector3.hpp @@ -0,0 +1,302 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_VECTOR3_HPP +#define SFML_VECTOR3_HPP + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Utility template class for manipulating +/// 3-dimensional vectors +/// +//////////////////////////////////////////////////////////// +template +class Vector3 +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// Creates a Vector3(0, 0, 0). + /// + //////////////////////////////////////////////////////////// + Vector3(); + + //////////////////////////////////////////////////////////// + /// \brief Construct the vector from its coordinates + /// + /// \param X X coordinate + /// \param Y Y coordinate + /// \param Z Z coordinate + /// + //////////////////////////////////////////////////////////// + Vector3(T X, T Y, T Z); + + //////////////////////////////////////////////////////////// + /// \brief Construct the vector from another type of vector + /// + /// This constructor doesn't replace the copy constructor, + /// it's called only when U != T. + /// A call to this constructor will fail to compile if U + /// is not convertible to T. + /// + /// \param vector Vector to convert + /// + //////////////////////////////////////////////////////////// + template + explicit Vector3(const Vector3& vector); + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + T x; ///< X coordinate of the vector + T y; ///< Y coordinate of the vector + T z; ///< Z coordinate of the vector +}; + +//////////////////////////////////////////////////////////// +/// \relates Vector3 +/// \brief Overload of unary operator - +/// +/// \param left Vector to negate +/// +/// \return Memberwise opposite of the vector +/// +//////////////////////////////////////////////////////////// +template +Vector3 operator -(const Vector3& left); + +//////////////////////////////////////////////////////////// +/// \relates Vector3 +/// \brief Overload of binary operator += +/// +/// This operator performs a memberwise addition of both vectors, +/// and assigns the result to \a left. +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a vector) +/// +/// \return Reference to \a left +/// +//////////////////////////////////////////////////////////// +template +Vector3& operator +=(Vector3& left, const Vector3& right); + +//////////////////////////////////////////////////////////// +/// \relates Vector3 +/// \brief Overload of binary operator -= +/// +/// This operator performs a memberwise subtraction of both vectors, +/// and assigns the result to \a left. +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a vector) +/// +/// \return Reference to \a left +/// +//////////////////////////////////////////////////////////// +template +Vector3& operator -=(Vector3& left, const Vector3& right); + +//////////////////////////////////////////////////////////// +/// \relates Vector3 +/// \brief Overload of binary operator + +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a vector) +/// +/// \return Memberwise addition of both vectors +/// +//////////////////////////////////////////////////////////// +template +Vector3 operator +(const Vector3& left, const Vector3& right); + +//////////////////////////////////////////////////////////// +/// \relates Vector3 +/// \brief Overload of binary operator - +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a vector) +/// +/// \return Memberwise subtraction of both vectors +/// +//////////////////////////////////////////////////////////// +template +Vector3 operator -(const Vector3& left, const Vector3& right); + +//////////////////////////////////////////////////////////// +/// \relates Vector3 +/// \brief Overload of binary operator * +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a scalar value) +/// +/// \return Memberwise multiplication by \a right +/// +//////////////////////////////////////////////////////////// +template +Vector3 operator *(const Vector3& left, T right); + +//////////////////////////////////////////////////////////// +/// \relates Vector3 +/// \brief Overload of binary operator * +/// +/// \param left Left operand (a scalar value) +/// \param right Right operand (a vector) +/// +/// \return Memberwise multiplication by \a left +/// +//////////////////////////////////////////////////////////// +template +Vector3 operator *(T left, const Vector3& right); + +//////////////////////////////////////////////////////////// +/// \relates Vector3 +/// \brief Overload of binary operator *= +/// +/// This operator performs a memberwise multiplication by \a right, +/// and assigns the result to \a left. +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a scalar value) +/// +/// \return Reference to \a left +/// +//////////////////////////////////////////////////////////// +template +Vector3& operator *=(Vector3& left, T right); + +//////////////////////////////////////////////////////////// +/// \relates Vector3 +/// \brief Overload of binary operator / +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a scalar value) +/// +/// \return Memberwise division by \a right +/// +//////////////////////////////////////////////////////////// +template +Vector3 operator /(const Vector3& left, T right); + +//////////////////////////////////////////////////////////// +/// \relates Vector3 +/// \brief Overload of binary operator /= +/// +/// This operator performs a memberwise division by \a right, +/// and assigns the result to \a left. +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a scalar value) +/// +/// \return Reference to \a left +/// +//////////////////////////////////////////////////////////// +template +Vector3& operator /=(Vector3& left, T right); + +//////////////////////////////////////////////////////////// +/// \relates Vector3 +/// \brief Overload of binary operator == +/// +/// This operator compares strict equality between two vectors. +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a vector) +/// +/// \return True if \a left is equal to \a right +/// +//////////////////////////////////////////////////////////// +template +bool operator ==(const Vector3& left, const Vector3& right); + +//////////////////////////////////////////////////////////// +/// \relates Vector3 +/// \brief Overload of binary operator != +/// +/// This operator compares strict difference between two vectors. +/// +/// \param left Left operand (a vector) +/// \param right Right operand (a vector) +/// +/// \return True if \a left is not equal to \a right +/// +//////////////////////////////////////////////////////////// +template +bool operator !=(const Vector3& left, const Vector3& right); + +#include + +// Define the most common types +typedef Vector3 Vector3i; +typedef Vector3 Vector3f; + +} // namespace sf + + +#endif // SFML_VECTOR3_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Vector3 +/// \ingroup system +/// +/// sf::Vector3 is a simple class that defines a mathematical +/// vector with three coordinates (x, y and z). It can be used to +/// represent anything that has three dimensions: a size, a point, +/// a velocity, etc. +/// +/// The template parameter T is the type of the coordinates. It +/// can be any type that supports arithmetic operations (+, -, /, *) +/// and comparisons (==, !=), for example int or float. +/// +/// You generally don't have to care about the templated form (sf::Vector3), +/// the most common specializations have special typedefs: +/// \li sf::Vector3 is sf::Vector3f +/// \li sf::Vector3 is sf::Vector3i +/// +/// The sf::Vector3 class has a small and simple interface, its x and y members +/// can be accessed directly (there are no accessors like setX(), getX()) and it +/// contains no mathematical function like dot product, cross product, length, etc. +/// +/// Usage example: +/// \code +/// sf::Vector3f v1(16.5f, 24.f, -8.2f); +/// v1.x = 18.2f; +/// float y = v1.y; +/// float z = v1.z; +/// +/// sf::Vector3f v2 = v1 * 5.f; +/// sf::Vector3f v3; +/// v3 = v1 + v2; +/// +/// bool different = (v2 != v3); +/// \endcode +/// +/// Note: for 2-dimensional vectors, see sf::Vector2. +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/System/Vector3.inl b/mcclone/external/sfml23/include/SFML/System/Vector3.inl new file mode 100644 index 0000000..3c69f2c --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/System/Vector3.inl @@ -0,0 +1,168 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +template +inline Vector3::Vector3() : +x(0), +y(0), +z(0) +{ + +} + + +//////////////////////////////////////////////////////////// +template +inline Vector3::Vector3(T X, T Y, T Z) : +x(X), +y(Y), +z(Z) +{ + +} + + +//////////////////////////////////////////////////////////// +template +template +inline Vector3::Vector3(const Vector3& vector) : +x(static_cast(vector.x)), +y(static_cast(vector.y)), +z(static_cast(vector.z)) +{ +} + + +//////////////////////////////////////////////////////////// +template +inline Vector3 operator -(const Vector3& left) +{ + return Vector3(-left.x, -left.y, -left.z); +} + + +//////////////////////////////////////////////////////////// +template +inline Vector3& operator +=(Vector3& left, const Vector3& right) +{ + left.x += right.x; + left.y += right.y; + left.z += right.z; + + return left; +} + + +//////////////////////////////////////////////////////////// +template +inline Vector3& operator -=(Vector3& left, const Vector3& right) +{ + left.x -= right.x; + left.y -= right.y; + left.z -= right.z; + + return left; +} + + +//////////////////////////////////////////////////////////// +template +inline Vector3 operator +(const Vector3& left, const Vector3& right) +{ + return Vector3(left.x + right.x, left.y + right.y, left.z + right.z); +} + + +//////////////////////////////////////////////////////////// +template +inline Vector3 operator -(const Vector3& left, const Vector3& right) +{ + return Vector3(left.x - right.x, left.y - right.y, left.z - right.z); +} + + +//////////////////////////////////////////////////////////// +template +inline Vector3 operator *(const Vector3& left, T right) +{ + return Vector3(left.x * right, left.y * right, left.z * right); +} + + +//////////////////////////////////////////////////////////// +template +inline Vector3 operator *(T left, const Vector3& right) +{ + return Vector3(right.x * left, right.y * left, right.z * left); +} + + +//////////////////////////////////////////////////////////// +template +inline Vector3& operator *=(Vector3& left, T right) +{ + left.x *= right; + left.y *= right; + left.z *= right; + + return left; +} + + +//////////////////////////////////////////////////////////// +template +inline Vector3 operator /(const Vector3& left, T right) +{ + return Vector3(left.x / right, left.y / right, left.z / right); +} + + +//////////////////////////////////////////////////////////// +template +inline Vector3& operator /=(Vector3& left, T right) +{ + left.x /= right; + left.y /= right; + left.z /= right; + + return left; +} + + +//////////////////////////////////////////////////////////// +template +inline bool operator ==(const Vector3& left, const Vector3& right) +{ + return (left.x == right.x) && (left.y == right.y) && (left.z == right.z); +} + + +//////////////////////////////////////////////////////////// +template +inline bool operator !=(const Vector3& left, const Vector3& right) +{ + return (left.x != right.x) || (left.y != right.y) || (left.z != right.z); +} diff --git a/mcclone/external/sfml23/include/SFML/Window.hpp b/mcclone/external/sfml23/include/SFML/Window.hpp new file mode 100644 index 0000000..103f888 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Window.hpp @@ -0,0 +1,56 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SFML_WINDOW_HPP +#define SFML_SFML_WINDOW_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + + +#endif // SFML_SFML_WINDOW_HPP + +//////////////////////////////////////////////////////////// +/// \defgroup window Window module +/// +/// Provides OpenGL-based windows, and abstractions for +/// events and input handling. +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Window/Context.hpp b/mcclone/external/sfml23/include/SFML/Window/Context.hpp new file mode 100644 index 0000000..29df67c --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Window/Context.hpp @@ -0,0 +1,151 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_CONTEXT_HPP +#define SFML_CONTEXT_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include + + +namespace sf +{ +namespace priv +{ + class GlContext; +} + +typedef void (*GlFunctionPointer)(); + +//////////////////////////////////////////////////////////// +/// \brief Class holding a valid drawing context +/// +//////////////////////////////////////////////////////////// +class SFML_WINDOW_API Context : GlResource, NonCopyable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// The constructor creates and activates the context + /// + //////////////////////////////////////////////////////////// + Context(); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + /// The destructor deactivates and destroys the context + /// + //////////////////////////////////////////////////////////// + ~Context(); + + //////////////////////////////////////////////////////////// + /// \brief Activate or deactivate explicitly the context + /// + /// \param active True to activate, false to deactivate + /// + /// \return True on success, false on failure + /// + //////////////////////////////////////////////////////////// + bool setActive(bool active); + +public: + //////////////////////////////////////////////////////////// + /// \brief Get the address of an OpenGL function + /// + /// \param name Name of the function to get the address of + /// + /// \return Address of the OpenGL function, 0 on failure + /// + //////////////////////////////////////////////////////////// + static GlFunctionPointer getFunction(const char* name); + + //////////////////////////////////////////////////////////// + /// \brief Construct a in-memory context + /// + /// This constructor is for internal use, you don't need + /// to bother with it. + /// + /// \param settings Creation parameters + /// \param width Back buffer width + /// \param height Back buffer height + /// + //////////////////////////////////////////////////////////// + Context(const ContextSettings& settings, unsigned int width, unsigned int height); + +private: + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + priv::GlContext* m_context; ///< Internal OpenGL context +}; + +} // namespace sf + + +#endif // SFML_CONTEXT_HPP + +//////////////////////////////////////////////////////////// +/// \class sf::Context +/// \ingroup window +/// +/// If you need to make OpenGL calls without having an +/// active window (like in a thread), you can use an +/// instance of this class to get a valid context. +/// +/// Having a valid context is necessary for *every* OpenGL call. +/// +/// Note that a context is only active in its current thread, +/// if you create a new thread it will have no valid context +/// by default. +/// +/// To use a sf::Context instance, just construct it and let it +/// live as long as you need a valid context. No explicit activation +/// is needed, all it has to do is to exist. Its destructor +/// will take care of deactivating and freeing all the attached +/// resources. +/// +/// Usage example: +/// \code +/// void threadFunction(void*) +/// { +/// sf::Context context; +/// // from now on, you have a valid context +/// +/// // you can make OpenGL calls +/// glClear(GL_DEPTH_BUFFER_BIT); +/// } +/// // the context is automatically deactivated and destroyed +/// // by the sf::Context destructor +/// \endcode +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Window/ContextSettings.hpp b/mcclone/external/sfml23/include/SFML/Window/ContextSettings.hpp new file mode 100644 index 0000000..26ea910 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Window/ContextSettings.hpp @@ -0,0 +1,145 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_CONTEXTSETTINGS_HPP +#define SFML_CONTEXTSETTINGS_HPP + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Structure defining the settings of the OpenGL +/// context attached to a window +/// +//////////////////////////////////////////////////////////// +struct ContextSettings +{ + //////////////////////////////////////////////////////////// + /// \brief Enumeration of the context attribute flags + /// + //////////////////////////////////////////////////////////// + enum Attribute + { + Default = 0, ///< Non-debug, compatibility context (this and the core attribute are mutually exclusive) + Core = 1 << 0, ///< Core attribute + Debug = 1 << 2 ///< Debug attribute + }; + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// \param depth Depth buffer bits + /// \param stencil Stencil buffer bits + /// \param antialiasing Antialiasing level + /// \param major Major number of the context version + /// \param minor Minor number of the context version + /// \param attributes Attribute flags of the context + /// + //////////////////////////////////////////////////////////// + explicit ContextSettings(unsigned int depth = 0, unsigned int stencil = 0, unsigned int antialiasing = 0, unsigned int major = 1, unsigned int minor = 1, unsigned int attributes = Default) : + depthBits (depth), + stencilBits (stencil), + antialiasingLevel(antialiasing), + majorVersion (major), + minorVersion (minor), + attributeFlags (attributes) + { + } + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + unsigned int depthBits; ///< Bits of the depth buffer + unsigned int stencilBits; ///< Bits of the stencil buffer + unsigned int antialiasingLevel; ///< Level of antialiasing + unsigned int majorVersion; ///< Major number of the context version to create + unsigned int minorVersion; ///< Minor number of the context version to create + Uint32 attributeFlags; ///< The attribute flags to create the context with +}; + +} // namespace sf + + +#endif // SFML_CONTEXTSETTINGS_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::ContextSettings +/// \ingroup window +/// +/// ContextSettings allows to define several advanced settings +/// of the OpenGL context attached to a window. All these +/// settings with the exception of the compatibility flag +/// and anti-aliasing level have no impact on the regular +/// SFML rendering (graphics module), so you may need to use +/// this structure only if you're using SFML as a windowing +/// system for custom OpenGL rendering. +/// +/// The depthBits and stencilBits members define the number +/// of bits per pixel requested for the (respectively) depth +/// and stencil buffers. +/// +/// antialiasingLevel represents the requested number of +/// multisampling levels for anti-aliasing. +/// +/// majorVersion and minorVersion define the version of the +/// OpenGL context that you want. Only versions greater or +/// equal to 3.0 are relevant; versions lesser than 3.0 are +/// all handled the same way (i.e. you can use any version +/// < 3.0 if you don't want an OpenGL 3 context). +/// +/// When requesting a context with a version greater or equal +/// to 3.2, you have the option of specifying whether the +/// context should follow the core or compatibility profile +/// of all newer (>= 3.2) OpenGL specifications. For versions +/// 3.0 and 3.1 there is only the core profile. By default +/// a compatibility context is created. You only need to specify +/// the core flag if you want a core profile context to use with +/// your own OpenGL rendering. +/// Warning: The graphics module will not function if you +/// request a core profile context. Make sure the attributes are +/// set to Default if you want to use the graphics module. +/// +/// Setting the debug attribute flag will request a context with +/// additional debugging features enabled. Depending on the +/// system, this might be required for advanced OpenGL debugging. +/// OpenGL debugging is disabled by default. +/// +/// Special Note for OS X: +/// Apple only supports choosing between either a legacy context +/// (OpenGL 2.1) or a core context (OpenGL version depends on the +/// operating system version but is at least 3.2). Compatibility +/// contexts are not supported. Further information is available on the +/// +/// OpenGL Capabilities Tables page. OS X also currently does +/// not support debug contexts. +/// +/// Please note that these values are only a hint. +/// No failure will be reported if one or more of these values +/// are not supported by the system; instead, SFML will try to +/// find the closest valid match. You can then retrieve the +/// settings that the window actually used to create its context, +/// with Window::getSettings(). +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Window/Event.hpp b/mcclone/external/sfml23/include/SFML/Window/Event.hpp new file mode 100644 index 0000000..5fc9a10 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Window/Event.hpp @@ -0,0 +1,284 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_EVENT_HPP +#define SFML_EVENT_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Defines a system event and its parameters +/// +//////////////////////////////////////////////////////////// +class Event +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Size events parameters (Resized) + /// + //////////////////////////////////////////////////////////// + struct SizeEvent + { + unsigned int width; ///< New width, in pixels + unsigned int height; ///< New height, in pixels + }; + + //////////////////////////////////////////////////////////// + /// \brief Keyboard event parameters (KeyPressed, KeyReleased) + /// + //////////////////////////////////////////////////////////// + struct KeyEvent + { + Keyboard::Key code; ///< Code of the key that has been pressed + bool alt; ///< Is the Alt key pressed? + bool control; ///< Is the Control key pressed? + bool shift; ///< Is the Shift key pressed? + bool system; ///< Is the System key pressed? + }; + + //////////////////////////////////////////////////////////// + /// \brief Text event parameters (TextEntered) + /// + //////////////////////////////////////////////////////////// + struct TextEvent + { + Uint32 unicode; ///< UTF-32 Unicode value of the character + }; + + //////////////////////////////////////////////////////////// + /// \brief Mouse move event parameters (MouseMoved) + /// + //////////////////////////////////////////////////////////// + struct MouseMoveEvent + { + int x; ///< X position of the mouse pointer, relative to the left of the owner window + int y; ///< Y position of the mouse pointer, relative to the top of the owner window + }; + + //////////////////////////////////////////////////////////// + /// \brief Mouse buttons events parameters + /// (MouseButtonPressed, MouseButtonReleased) + /// + //////////////////////////////////////////////////////////// + struct MouseButtonEvent + { + Mouse::Button button; ///< Code of the button that has been pressed + int x; ///< X position of the mouse pointer, relative to the left of the owner window + int y; ///< Y position of the mouse pointer, relative to the top of the owner window + }; + + //////////////////////////////////////////////////////////// + /// \brief Mouse wheel events parameters (MouseWheelMoved) + /// + /// \deprecated This event is deprecated and potentially inaccurate. + /// Use MouseWheelScrollEvent instead. + /// + //////////////////////////////////////////////////////////// + struct MouseWheelEvent + { + int delta; ///< Number of ticks the wheel has moved (positive is up, negative is down) + int x; ///< X position of the mouse pointer, relative to the left of the owner window + int y; ///< Y position of the mouse pointer, relative to the top of the owner window + }; + + //////////////////////////////////////////////////////////// + /// \brief Mouse wheel events parameters (MouseWheelScrolled) + /// + //////////////////////////////////////////////////////////// + struct MouseWheelScrollEvent + { + Mouse::Wheel wheel; ///< Which wheel (for mice with multiple ones) + float delta; ///< Wheel offset (positive is up/left, negative is down/right). High-precision mice may use non-integral offsets. + int x; ///< X position of the mouse pointer, relative to the left of the owner window + int y; ///< Y position of the mouse pointer, relative to the top of the owner window + }; + + //////////////////////////////////////////////////////////// + /// \brief Joystick connection events parameters + /// (JoystickConnected, JoystickDisconnected) + /// + //////////////////////////////////////////////////////////// + struct JoystickConnectEvent + { + unsigned int joystickId; ///< Index of the joystick (in range [0 .. Joystick::Count - 1]) + }; + + //////////////////////////////////////////////////////////// + /// \brief Joystick axis move event parameters (JoystickMoved) + /// + //////////////////////////////////////////////////////////// + struct JoystickMoveEvent + { + unsigned int joystickId; ///< Index of the joystick (in range [0 .. Joystick::Count - 1]) + Joystick::Axis axis; ///< Axis on which the joystick moved + float position; ///< New position on the axis (in range [-100 .. 100]) + }; + + //////////////////////////////////////////////////////////// + /// \brief Joystick buttons events parameters + /// (JoystickButtonPressed, JoystickButtonReleased) + /// + //////////////////////////////////////////////////////////// + struct JoystickButtonEvent + { + unsigned int joystickId; ///< Index of the joystick (in range [0 .. Joystick::Count - 1]) + unsigned int button; ///< Index of the button that has been pressed (in range [0 .. Joystick::ButtonCount - 1]) + }; + + //////////////////////////////////////////////////////////// + /// \brief Touch events parameters (TouchBegan, TouchMoved, TouchEnded) + /// + //////////////////////////////////////////////////////////// + struct TouchEvent + { + unsigned int finger; ///< Index of the finger in case of multi-touch events + int x; ///< X position of the touch, relative to the left of the owner window + int y; ///< Y position of the touch, relative to the top of the owner window + }; + + //////////////////////////////////////////////////////////// + /// \brief Sensor event parameters (SensorChanged) + /// + //////////////////////////////////////////////////////////// + struct SensorEvent + { + Sensor::Type type; ///< Type of the sensor + float x; ///< Current value of the sensor on X axis + float y; ///< Current value of the sensor on Y axis + float z; ///< Current value of the sensor on Z axis + }; + + //////////////////////////////////////////////////////////// + /// \brief Enumeration of the different types of events + /// + //////////////////////////////////////////////////////////// + enum EventType + { + Closed, ///< The window requested to be closed (no data) + Resized, ///< The window was resized (data in event.size) + LostFocus, ///< The window lost the focus (no data) + GainedFocus, ///< The window gained the focus (no data) + TextEntered, ///< A character was entered (data in event.text) + KeyPressed, ///< A key was pressed (data in event.key) + KeyReleased, ///< A key was released (data in event.key) + MouseWheelMoved, ///< The mouse wheel was scrolled (data in event.mouseWheel) (deprecated) + MouseWheelScrolled, ///< The mouse wheel was scrolled (data in event.mouseWheelScroll) + MouseButtonPressed, ///< A mouse button was pressed (data in event.mouseButton) + MouseButtonReleased, ///< A mouse button was released (data in event.mouseButton) + MouseMoved, ///< The mouse cursor moved (data in event.mouseMove) + MouseEntered, ///< The mouse cursor entered the area of the window (no data) + MouseLeft, ///< The mouse cursor left the area of the window (no data) + JoystickButtonPressed, ///< A joystick button was pressed (data in event.joystickButton) + JoystickButtonReleased, ///< A joystick button was released (data in event.joystickButton) + JoystickMoved, ///< The joystick moved along an axis (data in event.joystickMove) + JoystickConnected, ///< A joystick was connected (data in event.joystickConnect) + JoystickDisconnected, ///< A joystick was disconnected (data in event.joystickConnect) + TouchBegan, ///< A touch event began (data in event.touch) + TouchMoved, ///< A touch moved (data in event.touch) + TouchEnded, ///< A touch event ended (data in event.touch) + SensorChanged, ///< A sensor value changed (data in event.sensor) + + Count ///< Keep last -- the total number of event types + }; + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + EventType type; ///< Type of the event + + union + { + SizeEvent size; ///< Size event parameters (Event::Resized) + KeyEvent key; ///< Key event parameters (Event::KeyPressed, Event::KeyReleased) + TextEvent text; ///< Text event parameters (Event::TextEntered) + MouseMoveEvent mouseMove; ///< Mouse move event parameters (Event::MouseMoved) + MouseButtonEvent mouseButton; ///< Mouse button event parameters (Event::MouseButtonPressed, Event::MouseButtonReleased) + MouseWheelEvent mouseWheel; ///< Mouse wheel event parameters (Event::MouseWheelMoved) (deprecated) + MouseWheelScrollEvent mouseWheelScroll; ///< Mouse wheel event parameters (Event::MouseWheelScrolled) + JoystickMoveEvent joystickMove; ///< Joystick move event parameters (Event::JoystickMoved) + JoystickButtonEvent joystickButton; ///< Joystick button event parameters (Event::JoystickButtonPressed, Event::JoystickButtonReleased) + JoystickConnectEvent joystickConnect; ///< Joystick (dis)connect event parameters (Event::JoystickConnected, Event::JoystickDisconnected) + TouchEvent touch; ///< Touch events parameters (Event::TouchBegan, Event::TouchMoved, Event::TouchEnded) + SensorEvent sensor; ///< Sensor event parameters (Event::SensorChanged) + }; +}; + +} // namespace sf + + +#endif // SFML_EVENT_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Event +/// \ingroup window +/// +/// sf::Event holds all the informations about a system event +/// that just happened. Events are retrieved using the +/// sf::Window::pollEvent and sf::Window::waitEvent functions. +/// +/// A sf::Event instance contains the type of the event +/// (mouse moved, key pressed, window closed, ...) as well +/// as the details about this particular event. Please note that +/// the event parameters are defined in a union, which means that +/// only the member matching the type of the event will be properly +/// filled; all other members will have undefined values and must not +/// be read if the type of the event doesn't match. For example, +/// if you received a KeyPressed event, then you must read the +/// event.key member, all other members such as event.MouseMove +/// or event.text will have undefined values. +/// +/// Usage example: +/// \code +/// sf::Event event; +/// while (window.pollEvent(event)) +/// { +/// // Request for closing the window +/// if (event.type == sf::Event::Closed) +/// window.close(); +/// +/// // The escape key was pressed +/// if ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Escape)) +/// window.close(); +/// +/// // The window was resized +/// if (event.type == sf::Event::Resized) +/// doSomethingWithTheNewSize(event.size.width, event.size.height); +/// +/// // etc ... +/// } +/// \endcode +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Window/Export.hpp b/mcclone/external/sfml23/include/SFML/Window/Export.hpp new file mode 100644 index 0000000..4a708ec --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Window/Export.hpp @@ -0,0 +1,48 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_WINDOW_EXPORT_HPP +#define SFML_WINDOW_EXPORT_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +//////////////////////////////////////////////////////////// +// Define portable import / export macros +//////////////////////////////////////////////////////////// +#if defined(SFML_WINDOW_EXPORTS) + + #define SFML_WINDOW_API SFML_API_EXPORT + +#else + + #define SFML_WINDOW_API SFML_API_IMPORT + +#endif + + +#endif // SFML_WINDOW_EXPORT_HPP diff --git a/mcclone/external/sfml23/include/SFML/Window/GlResource.hpp b/mcclone/external/sfml23/include/SFML/Window/GlResource.hpp new file mode 100644 index 0000000..a341f64 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Window/GlResource.hpp @@ -0,0 +1,76 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_GLRESOURCE_HPP +#define SFML_GLRESOURCE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Base class for classes that require an OpenGL context +/// +//////////////////////////////////////////////////////////// +class SFML_WINDOW_API GlResource +{ +protected: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + //////////////////////////////////////////////////////////// + GlResource(); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + //////////////////////////////////////////////////////////// + ~GlResource(); + + //////////////////////////////////////////////////////////// + /// \brief Make sure that a valid OpenGL context exists in the current thread + /// + //////////////////////////////////////////////////////////// + static void ensureGlContext(); +}; + +} // namespace sf + + +#endif // SFML_GLRESOURCE_HPP + +//////////////////////////////////////////////////////////// +/// \class sf::GlResource +/// \ingroup window +/// +/// This class is for internal use only, it must be the base +/// of every class that requires a valid OpenGL context in +/// order to work. +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Window/Joystick.hpp b/mcclone/external/sfml23/include/SFML/Window/Joystick.hpp new file mode 100644 index 0000000..27f6291 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Window/Joystick.hpp @@ -0,0 +1,227 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_JOYSTICK_HPP +#define SFML_JOYSTICK_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Give access to the real-time state of the joysticks +/// +//////////////////////////////////////////////////////////// +class SFML_WINDOW_API Joystick +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Constants related to joysticks capabilities + /// + //////////////////////////////////////////////////////////// + enum + { + Count = 8, ///< Maximum number of supported joysticks + ButtonCount = 32, ///< Maximum number of supported buttons + AxisCount = 8 ///< Maximum number of supported axes + }; + + //////////////////////////////////////////////////////////// + /// \brief Axes supported by SFML joysticks + /// + //////////////////////////////////////////////////////////// + enum Axis + { + X, ///< The X axis + Y, ///< The Y axis + Z, ///< The Z axis + R, ///< The R axis + U, ///< The U axis + V, ///< The V axis + PovX, ///< The X axis of the point-of-view hat + PovY ///< The Y axis of the point-of-view hat + }; + + //////////////////////////////////////////////////////////// + /// \brief Structure holding a joystick's identification + /// + //////////////////////////////////////////////////////////// + struct SFML_WINDOW_API Identification + { + Identification(); + + String name; ///< Name of the joystick + unsigned int vendorId; ///< Manufacturer identifier + unsigned int productId; ///< Product identifier + }; + + //////////////////////////////////////////////////////////// + /// \brief Check if a joystick is connected + /// + /// \param joystick Index of the joystick to check + /// + /// \return True if the joystick is connected, false otherwise + /// + //////////////////////////////////////////////////////////// + static bool isConnected(unsigned int joystick); + + //////////////////////////////////////////////////////////// + /// \brief Return the number of buttons supported by a joystick + /// + /// If the joystick is not connected, this function returns 0. + /// + /// \param joystick Index of the joystick + /// + /// \return Number of buttons supported by the joystick + /// + //////////////////////////////////////////////////////////// + static unsigned int getButtonCount(unsigned int joystick); + + //////////////////////////////////////////////////////////// + /// \brief Check if a joystick supports a given axis + /// + /// If the joystick is not connected, this function returns false. + /// + /// \param joystick Index of the joystick + /// \param axis Axis to check + /// + /// \return True if the joystick supports the axis, false otherwise + /// + //////////////////////////////////////////////////////////// + static bool hasAxis(unsigned int joystick, Axis axis); + + //////////////////////////////////////////////////////////// + /// \brief Check if a joystick button is pressed + /// + /// If the joystick is not connected, this function returns false. + /// + /// \param joystick Index of the joystick + /// \param button Button to check + /// + /// \return True if the button is pressed, false otherwise + /// + //////////////////////////////////////////////////////////// + static bool isButtonPressed(unsigned int joystick, unsigned int button); + + //////////////////////////////////////////////////////////// + /// \brief Get the current position of a joystick axis + /// + /// If the joystick is not connected, this function returns 0. + /// + /// \param joystick Index of the joystick + /// \param axis Axis to check + /// + /// \return Current position of the axis, in range [-100 .. 100] + /// + //////////////////////////////////////////////////////////// + static float getAxisPosition(unsigned int joystick, Axis axis); + + //////////////////////////////////////////////////////////// + /// \brief Get the joystick information + /// + /// \param joystick Index of the joystick + /// + /// \return Structure containing joystick information. + /// + //////////////////////////////////////////////////////////// + static Identification getIdentification(unsigned int joystick); + + //////////////////////////////////////////////////////////// + /// \brief Update the states of all joysticks + /// + /// This function is used internally by SFML, so you normally + /// don't have to call it explicitly. However, you may need to + /// call it if you have no window yet (or no window at all): + /// in this case the joystick states are not updated automatically. + /// + //////////////////////////////////////////////////////////// + static void update(); +}; + +} // namespace sf + + +#endif // SFML_JOYSTICK_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Joystick +/// \ingroup window +/// +/// sf::Joystick provides an interface to the state of the +/// joysticks. It only contains static functions, so it's not +/// meant to be instantiated. Instead, each joystick is identified +/// by an index that is passed to the functions of this class. +/// +/// This class allows users to query the state of joysticks at any +/// time and directly, without having to deal with a window and +/// its events. Compared to the JoystickMoved, JoystickButtonPressed +/// and JoystickButtonReleased events, sf::Joystick can retrieve the +/// state of axes and buttons of joysticks at any time +/// (you don't need to store and update a boolean on your side +/// in order to know if a button is pressed or released), and you +/// always get the real state of joysticks, even if they are +/// moved, pressed or released when your window is out of focus +/// and no event is triggered. +/// +/// SFML supports: +/// \li 8 joysticks (sf::Joystick::Count) +/// \li 32 buttons per joystick (sf::Joystick::ButtonCount) +/// \li 8 axes per joystick (sf::Joystick::AxisCount) +/// +/// Unlike the keyboard or mouse, the state of joysticks is sometimes +/// not directly available (depending on the OS), therefore an update() +/// function must be called in order to update the current state of +/// joysticks. When you have a window with event handling, this is done +/// automatically, you don't need to call anything. But if you have no +/// window, or if you want to check joysticks state before creating one, +/// you must call sf::Joystick::update explicitly. +/// +/// Usage example: +/// \code +/// // Is joystick #0 connected? +/// bool connected = sf::Joystick::isConnected(0); +/// +/// // How many buttons does joystick #0 support? +/// unsigned int buttons = sf::Joystick::getButtonCount(0); +/// +/// // Does joystick #0 define a X axis? +/// bool hasX = sf::Joystick::hasAxis(0, sf::Joystick::X); +/// +/// // Is button #2 pressed on joystick #0? +/// bool pressed = sf::Joystick::isButtonPressed(0, 2); +/// +/// // What's the current position of the Y axis on joystick #0? +/// float position = sf::Joystick::getAxisPosition(0, sf::Joystick::Y); +/// \endcode +/// +/// \see sf::Keyboard, sf::Mouse +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Window/Keyboard.hpp b/mcclone/external/sfml23/include/SFML/Window/Keyboard.hpp new file mode 100644 index 0000000..b3186e9 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Window/Keyboard.hpp @@ -0,0 +1,224 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_KEYBOARD_HPP +#define SFML_KEYBOARD_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Give access to the real-time state of the keyboard +/// +//////////////////////////////////////////////////////////// +class SFML_WINDOW_API Keyboard +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Key codes + /// + //////////////////////////////////////////////////////////// + enum Key + { + Unknown = -1, ///< Unhandled key + A = 0, ///< The A key + B, ///< The B key + C, ///< The C key + D, ///< The D key + E, ///< The E key + F, ///< The F key + G, ///< The G key + H, ///< The H key + I, ///< The I key + J, ///< The J key + K, ///< The K key + L, ///< The L key + M, ///< The M key + N, ///< The N key + O, ///< The O key + P, ///< The P key + Q, ///< The Q key + R, ///< The R key + S, ///< The S key + T, ///< The T key + U, ///< The U key + V, ///< The V key + W, ///< The W key + X, ///< The X key + Y, ///< The Y key + Z, ///< The Z key + Num0, ///< The 0 key + Num1, ///< The 1 key + Num2, ///< The 2 key + Num3, ///< The 3 key + Num4, ///< The 4 key + Num5, ///< The 5 key + Num6, ///< The 6 key + Num7, ///< The 7 key + Num8, ///< The 8 key + Num9, ///< The 9 key + Escape, ///< The Escape key + LControl, ///< The left Control key + LShift, ///< The left Shift key + LAlt, ///< The left Alt key + LSystem, ///< The left OS specific key: window (Windows and Linux), apple (MacOS X), ... + RControl, ///< The right Control key + RShift, ///< The right Shift key + RAlt, ///< The right Alt key + RSystem, ///< The right OS specific key: window (Windows and Linux), apple (MacOS X), ... + Menu, ///< The Menu key + LBracket, ///< The [ key + RBracket, ///< The ] key + SemiColon, ///< The ; key + Comma, ///< The , key + Period, ///< The . key + Quote, ///< The ' key + Slash, ///< The / key + BackSlash, ///< The \ key + Tilde, ///< The ~ key + Equal, ///< The = key + Dash, ///< The - key + Space, ///< The Space key + Return, ///< The Return key + BackSpace, ///< The Backspace key + Tab, ///< The Tabulation key + PageUp, ///< The Page up key + PageDown, ///< The Page down key + End, ///< The End key + Home, ///< The Home key + Insert, ///< The Insert key + Delete, ///< The Delete key + Add, ///< The + key + Subtract, ///< The - key + Multiply, ///< The * key + Divide, ///< The / key + Left, ///< Left arrow + Right, ///< Right arrow + Up, ///< Up arrow + Down, ///< Down arrow + Numpad0, ///< The numpad 0 key + Numpad1, ///< The numpad 1 key + Numpad2, ///< The numpad 2 key + Numpad3, ///< The numpad 3 key + Numpad4, ///< The numpad 4 key + Numpad5, ///< The numpad 5 key + Numpad6, ///< The numpad 6 key + Numpad7, ///< The numpad 7 key + Numpad8, ///< The numpad 8 key + Numpad9, ///< The numpad 9 key + F1, ///< The F1 key + F2, ///< The F2 key + F3, ///< The F3 key + F4, ///< The F4 key + F5, ///< The F5 key + F6, ///< The F6 key + F7, ///< The F7 key + F8, ///< The F8 key + F9, ///< The F9 key + F10, ///< The F10 key + F11, ///< The F11 key + F12, ///< The F12 key + F13, ///< The F13 key + F14, ///< The F14 key + F15, ///< The F15 key + Pause, ///< The Pause key + + KeyCount ///< Keep last -- the total number of keyboard keys + }; + + //////////////////////////////////////////////////////////// + /// \brief Check if a key is pressed + /// + /// \param key Key to check + /// + /// \return True if the key is pressed, false otherwise + /// + //////////////////////////////////////////////////////////// + static bool isKeyPressed(Key key); + + //////////////////////////////////////////////////////////// + /// \brief Show or hide the virtual keyboard + /// + /// Warning: the virtual keyboard is not supported on all + /// systems. It will typically be implemented on mobile OSes + /// (Android, iOS) but not on desktop OSes (Windows, Linux, ...). + /// + /// If the virtual keyboard is not available, this function does + /// nothing. + /// + /// \param visible True to show, false to hide + /// + //////////////////////////////////////////////////////////// + static void setVirtualKeyboardVisible(bool visible); +}; + +} // namespace sf + + +#endif // SFML_KEYBOARD_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Keyboard +/// \ingroup window +/// +/// sf::Keyboard provides an interface to the state of the +/// keyboard. It only contains static functions (a single +/// keyboard is assumed), so it's not meant to be instantiated. +/// +/// This class allows users to query the keyboard state at any +/// time and directly, without having to deal with a window and +/// its events. Compared to the KeyPressed and KeyReleased events, +/// sf::Keyboard can retrieve the state of a key at any time +/// (you don't need to store and update a boolean on your side +/// in order to know if a key is pressed or released), and you +/// always get the real state of the keyboard, even if keys are +/// pressed or released when your window is out of focus and no +/// event is triggered. +/// +/// Usage example: +/// \code +/// if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) +/// { +/// // move left... +/// } +/// else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) +/// { +/// // move right... +/// } +/// else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Escape)) +/// { +/// // quit... +/// } +/// \endcode +/// +/// \see sf::Joystick, sf::Mouse, sf::Touch +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Window/Mouse.hpp b/mcclone/external/sfml23/include/SFML/Window/Mouse.hpp new file mode 100644 index 0000000..0056f8c --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Window/Mouse.hpp @@ -0,0 +1,177 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_MOUSE_HPP +#define SFML_MOUSE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +class Window; + +//////////////////////////////////////////////////////////// +/// \brief Give access to the real-time state of the mouse +/// +//////////////////////////////////////////////////////////// +class SFML_WINDOW_API Mouse +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Mouse buttons + /// + //////////////////////////////////////////////////////////// + enum Button + { + Left, ///< The left mouse button + Right, ///< The right mouse button + Middle, ///< The middle (wheel) mouse button + XButton1, ///< The first extra mouse button + XButton2, ///< The second extra mouse button + + ButtonCount ///< Keep last -- the total number of mouse buttons + }; + + //////////////////////////////////////////////////////////// + /// \brief Mouse wheels + /// + //////////////////////////////////////////////////////////// + enum Wheel + { + VerticalWheel, ///< The vertical mouse wheel + HorizontalWheel ///< The horizontal mouse wheel + }; + + //////////////////////////////////////////////////////////// + /// \brief Check if a mouse button is pressed + /// + /// \param button Button to check + /// + /// \return True if the button is pressed, false otherwise + /// + //////////////////////////////////////////////////////////// + static bool isButtonPressed(Button button); + + //////////////////////////////////////////////////////////// + /// \brief Get the current position of the mouse in desktop coordinates + /// + /// This function returns the global position of the mouse + /// cursor on the desktop. + /// + /// \return Current position of the mouse + /// + //////////////////////////////////////////////////////////// + static Vector2i getPosition(); + + //////////////////////////////////////////////////////////// + /// \brief Get the current position of the mouse in window coordinates + /// + /// This function returns the current position of the mouse + /// cursor, relative to the given window. + /// + /// \param relativeTo Reference window + /// + /// \return Current position of the mouse + /// + //////////////////////////////////////////////////////////// + static Vector2i getPosition(const Window& relativeTo); + + //////////////////////////////////////////////////////////// + /// \brief Set the current position of the mouse in desktop coordinates + /// + /// This function sets the global position of the mouse + /// cursor on the desktop. + /// + /// \param position New position of the mouse + /// + //////////////////////////////////////////////////////////// + static void setPosition(const Vector2i& position); + + //////////////////////////////////////////////////////////// + /// \brief Set the current position of the mouse in window coordinates + /// + /// This function sets the current position of the mouse + /// cursor, relative to the given window. + /// + /// \param position New position of the mouse + /// \param relativeTo Reference window + /// + //////////////////////////////////////////////////////////// + static void setPosition(const Vector2i& position, const Window& relativeTo); +}; + +} // namespace sf + + +#endif // SFML_MOUSE_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Mouse +/// \ingroup window +/// +/// sf::Mouse provides an interface to the state of the +/// mouse. It only contains static functions (a single +/// mouse is assumed), so it's not meant to be instantiated. +/// +/// This class allows users to query the mouse state at any +/// time and directly, without having to deal with a window and +/// its events. Compared to the MouseMoved, MouseButtonPressed +/// and MouseButtonReleased events, sf::Mouse can retrieve the +/// state of the cursor and the buttons at any time +/// (you don't need to store and update a boolean on your side +/// in order to know if a button is pressed or released), and you +/// always get the real state of the mouse, even if it is +/// moved, pressed or released when your window is out of focus +/// and no event is triggered. +/// +/// The setPosition and getPosition functions can be used to change +/// or retrieve the current position of the mouse pointer. There are +/// two versions: one that operates in global coordinates (relative +/// to the desktop) and one that operates in window coordinates +/// (relative to a specific window). +/// +/// Usage example: +/// \code +/// if (sf::Mouse::isButtonPressed(sf::Mouse::Left)) +/// { +/// // left click... +/// } +/// +/// // get global mouse position +/// sf::Vector2i position = sf::Mouse::getPosition(); +/// +/// // set mouse position relative to a window +/// sf::Mouse::setPosition(sf::Vector2i(100, 200), window); +/// \endcode +/// +/// \see sf::Joystick, sf::Keyboard, sf::Touch +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Window/Sensor.hpp b/mcclone/external/sfml23/include/SFML/Window/Sensor.hpp new file mode 100644 index 0000000..6078881 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Window/Sensor.hpp @@ -0,0 +1,150 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_SENSOR_HPP +#define SFML_SENSOR_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief Give access to the real-time state of the sensors +/// +//////////////////////////////////////////////////////////// +class SFML_WINDOW_API Sensor +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Sensor type + /// + //////////////////////////////////////////////////////////// + enum Type + { + Accelerometer, ///< Measures the raw acceleration (m/s^2) + Gyroscope, ///< Measures the raw rotation rates (degrees/s) + Magnetometer, ///< Measures the ambient magnetic field (micro-teslas) + Gravity, ///< Measures the direction and intensity of gravity, independent of device acceleration (m/s^2) + UserAcceleration, ///< Measures the direction and intensity of device acceleration, independent of the gravity (m/s^2) + Orientation, ///< Measures the absolute 3D orientation (degrees) + + Count ///< Keep last -- the total number of sensor types + }; + + //////////////////////////////////////////////////////////// + /// \brief Check if a sensor is available on the underlying platform + /// + /// \param sensor Sensor to check + /// + /// \return True if the sensor is available, false otherwise + /// + //////////////////////////////////////////////////////////// + static bool isAvailable(Type sensor); + + //////////////////////////////////////////////////////////// + /// \brief Enable or disable a sensor + /// + /// All sensors are disabled by default, to avoid consuming too + /// much battery power. Once a sensor is enabled, it starts + /// sending events of the corresponding type. + /// + /// This function does nothing if the sensor is unavailable. + /// + /// \param sensor Sensor to enable + /// \param enabled True to enable, false to disable + /// + //////////////////////////////////////////////////////////// + static void setEnabled(Type sensor, bool enabled); + + //////////////////////////////////////////////////////////// + /// \brief Get the current sensor value + /// + /// \param sensor Sensor to read + /// + /// \return The current sensor value + /// + //////////////////////////////////////////////////////////// + static Vector3f getValue(Type sensor); +}; + +} // namespace sf + + +#endif // SFML_SENSOR_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Sensor +/// \ingroup window +/// +/// sf::Sensor provides an interface to the state of the +/// various sensors that a device provides. It only contains static +/// functions, so it's not meant to be instantiated. +/// +/// This class allows users to query the sensors values at any +/// time and directly, without having to deal with a window and +/// its events. Compared to the SensorChanged event, sf::Sensor +/// can retrieve the state of a sensor at any time (you don't need to +/// store and update its current value on your side). +/// +/// Depending on the OS and hardware of the device (phone, tablet, ...), +/// some sensor types may not be available. You should always check +/// the availability of a sensor before trying to read it, with the +/// sf::Sensor::isAvailable function. +/// +/// You may wonder why some sensor types look so similar, for example +/// Accelerometer and Gravity / UserAcceleration. The first one +/// is the raw measurement of the acceleration, and takes into account +/// both the earth gravity and the user movement. The others are +/// more precise: they provide these components separately, which is +/// usually more useful. In fact they are not direct sensors, they +/// are computed internally based on the raw acceleration and other sensors. +/// This is exactly the same for Gyroscope vs Orientation. +/// +/// Because sensors consume a non-negligible amount of current, they are +/// all disabled by default. You must call sf::Sensor::setEnabled for each +/// sensor in which you are interested. +/// +/// Usage example: +/// \code +/// if (sf::Sensor::isAvailable(sf::Sensor::Gravity)) +/// { +/// // gravity sensor is available +/// } +/// +/// // enable the gravity sensor +/// sf::Sensor::setEnabled(sf::Sensor::Gravity, true); +/// +/// // get the current value of gravity +/// sf::Vector3f gravity = sf::Sensor::getValue(sf::Sensor::Gravity); +/// \endcode +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Window/Touch.hpp b/mcclone/external/sfml23/include/SFML/Window/Touch.hpp new file mode 100644 index 0000000..bf44f43 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Window/Touch.hpp @@ -0,0 +1,137 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_TOUCH_HPP +#define SFML_TOUCH_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +class Window; + +//////////////////////////////////////////////////////////// +/// \brief Give access to the real-time state of the touches +/// +//////////////////////////////////////////////////////////// +class SFML_WINDOW_API Touch +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Check if a touch event is currently down + /// + /// \param finger Finger index + /// + /// \return True if \a finger is currently touching the screen, false otherwise + /// + //////////////////////////////////////////////////////////// + static bool isDown(unsigned int finger); + + //////////////////////////////////////////////////////////// + /// \brief Get the current position of a touch in desktop coordinates + /// + /// This function returns the current touch position + /// in global (desktop) coordinates. + /// + /// \param finger Finger index + /// + /// \return Current position of \a finger, or undefined if it's not down + /// + //////////////////////////////////////////////////////////// + static Vector2i getPosition(unsigned int finger); + + //////////////////////////////////////////////////////////// + /// \brief Get the current position of a touch in window coordinates + /// + /// This function returns the current touch position + /// in global (desktop) coordinates. + /// + /// \param finger Finger index + /// \param relativeTo Reference window + /// + /// \return Current position of \a finger, or undefined if it's not down + /// + //////////////////////////////////////////////////////////// + static Vector2i getPosition(unsigned int finger, const Window& relativeTo); +}; + +} // namespace sf + + +#endif // SFML_TOUCH_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Touch +/// \ingroup window +/// +/// sf::Touch provides an interface to the state of the +/// touches. It only contains static functions, so it's not +/// meant to be instantiated. +/// +/// This class allows users to query the touches state at any +/// time and directly, without having to deal with a window and +/// its events. Compared to the TouchBegan, TouchMoved +/// and TouchEnded events, sf::Touch can retrieve the +/// state of the touches at any time (you don't need to store and +/// update a boolean on your side in order to know if a touch is down), +/// and you always get the real state of the touches, even if they +/// happen when your window is out of focus and no event is triggered. +/// +/// The getPosition function can be used to retrieve the current +/// position of a touch. There are two versions: one that operates +/// in global coordinates (relative to the desktop) and one that +/// operates in window coordinates (relative to a specific window). +/// +/// Touches are identified by an index (the "finger"), so that in +/// multi-touch events, individual touches can be tracked correctly. +/// As long as a finger touches the screen, it will keep the same index +/// even if other fingers start or stop touching the screen in the +/// meantime. As a consequence, active touch indices may not always be +/// sequential (i.e. touch number 0 may be released while touch number 1 +/// is still down). +/// +/// Usage example: +/// \code +/// if (sf::Touch::isDown(0)) +/// { +/// // touch 0 is down +/// } +/// +/// // get global position of touch 1 +/// sf::Vector2i globalPos = sf::Touch::getPosition(1); +/// +/// // get position of touch 1 relative to a window +/// sf::Vector2i relativePos = sf::Touch::getPosition(1, window); +/// \endcode +/// +/// \see sf::Joystick, sf::Keyboard, sf::Mouse +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Window/VideoMode.hpp b/mcclone/external/sfml23/include/SFML/Window/VideoMode.hpp new file mode 100644 index 0000000..5eb268c --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Window/VideoMode.hpp @@ -0,0 +1,228 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_VIDEOMODE_HPP +#define SFML_VIDEOMODE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include + + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// \brief VideoMode defines a video mode (width, height, bpp) +/// +//////////////////////////////////////////////////////////// +class SFML_WINDOW_API VideoMode +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// This constructors initializes all members to 0. + /// + //////////////////////////////////////////////////////////// + VideoMode(); + + //////////////////////////////////////////////////////////// + /// \brief Construct the video mode with its attributes + /// + /// \param modeWidth Width in pixels + /// \param modeHeight Height in pixels + /// \param modeBitsPerPixel Pixel depths in bits per pixel + /// + //////////////////////////////////////////////////////////// + VideoMode(unsigned int modeWidth, unsigned int modeHeight, unsigned int modeBitsPerPixel = 32); + + //////////////////////////////////////////////////////////// + /// \brief Get the current desktop video mode + /// + /// \return Current desktop video mode + /// + //////////////////////////////////////////////////////////// + static VideoMode getDesktopMode(); + + //////////////////////////////////////////////////////////// + /// \brief Retrieve all the video modes supported in fullscreen mode + /// + /// When creating a fullscreen window, the video mode is restricted + /// to be compatible with what the graphics driver and monitor + /// support. This function returns the complete list of all video + /// modes that can be used in fullscreen mode. + /// The returned array is sorted from best to worst, so that + /// the first element will always give the best mode (higher + /// width, height and bits-per-pixel). + /// + /// \return Array containing all the supported fullscreen modes + /// + //////////////////////////////////////////////////////////// + static const std::vector& getFullscreenModes(); + + //////////////////////////////////////////////////////////// + /// \brief Tell whether or not the video mode is valid + /// + /// The validity of video modes is only relevant when using + /// fullscreen windows; otherwise any video mode can be used + /// with no restriction. + /// + /// \return True if the video mode is valid for fullscreen mode + /// + //////////////////////////////////////////////////////////// + bool isValid() const; + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + unsigned int width; ///< Video mode width, in pixels + unsigned int height; ///< Video mode height, in pixels + unsigned int bitsPerPixel; ///< Video mode pixel depth, in bits per pixels +}; + +//////////////////////////////////////////////////////////// +/// \relates VideoMode +/// \brief Overload of == operator to compare two video modes +/// +/// \param left Left operand (a video mode) +/// \param right Right operand (a video mode) +/// +/// \return True if modes are equal +/// +//////////////////////////////////////////////////////////// +SFML_WINDOW_API bool operator ==(const VideoMode& left, const VideoMode& right); + +//////////////////////////////////////////////////////////// +/// \relates VideoMode +/// \brief Overload of != operator to compare two video modes +/// +/// \param left Left operand (a video mode) +/// \param right Right operand (a video mode) +/// +/// \return True if modes are different +/// +//////////////////////////////////////////////////////////// +SFML_WINDOW_API bool operator !=(const VideoMode& left, const VideoMode& right); + +//////////////////////////////////////////////////////////// +/// \relates VideoMode +/// \brief Overload of < operator to compare video modes +/// +/// \param left Left operand (a video mode) +/// \param right Right operand (a video mode) +/// +/// \return True if \a left is lesser than \a right +/// +//////////////////////////////////////////////////////////// +SFML_WINDOW_API bool operator <(const VideoMode& left, const VideoMode& right); + +//////////////////////////////////////////////////////////// +/// \relates VideoMode +/// \brief Overload of > operator to compare video modes +/// +/// \param left Left operand (a video mode) +/// \param right Right operand (a video mode) +/// +/// \return True if \a left is greater than \a right +/// +//////////////////////////////////////////////////////////// +SFML_WINDOW_API bool operator >(const VideoMode& left, const VideoMode& right); + +//////////////////////////////////////////////////////////// +/// \relates VideoMode +/// \brief Overload of <= operator to compare video modes +/// +/// \param left Left operand (a video mode) +/// \param right Right operand (a video mode) +/// +/// \return True if \a left is lesser or equal than \a right +/// +//////////////////////////////////////////////////////////// +SFML_WINDOW_API bool operator <=(const VideoMode& left, const VideoMode& right); + +//////////////////////////////////////////////////////////// +/// \relates VideoMode +/// \brief Overload of >= operator to compare video modes +/// +/// \param left Left operand (a video mode) +/// \param right Right operand (a video mode) +/// +/// \return True if \a left is greater or equal than \a right +/// +//////////////////////////////////////////////////////////// +SFML_WINDOW_API bool operator >=(const VideoMode& left, const VideoMode& right); + +} // namespace sf + + +#endif // SFML_VIDEOMODE_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::VideoMode +/// \ingroup window +/// +/// A video mode is defined by a width and a height (in pixels) +/// and a depth (in bits per pixel). Video modes are used to +/// setup windows (sf::Window) at creation time. +/// +/// The main usage of video modes is for fullscreen mode: +/// indeed you must use one of the valid video modes +/// allowed by the OS (which are defined by what the monitor +/// and the graphics card support), otherwise your window +/// creation will just fail. +/// +/// sf::VideoMode provides a static function for retrieving +/// the list of all the video modes supported by the system: +/// getFullscreenModes(). +/// +/// A custom video mode can also be checked directly for +/// fullscreen compatibility with its isValid() function. +/// +/// Additionally, sf::VideoMode provides a static function +/// to get the mode currently used by the desktop: getDesktopMode(). +/// This allows to build windows with the same size or pixel +/// depth as the current resolution. +/// +/// Usage example: +/// \code +/// // Display the list of all the video modes available for fullscreen +/// std::vector modes = sf::VideoMode::getFullscreenModes(); +/// for (std::size_t i = 0; i < modes.size(); ++i) +/// { +/// sf::VideoMode mode = modes[i]; +/// std::cout << "Mode #" << i << ": " +/// << mode.width << "x" << mode.height << " - " +/// << mode.bitsPerPixel << " bpp" << std::endl; +/// } +/// +/// // Create a window with the same pixel depth as the desktop +/// sf::VideoMode desktop = sf::VideoMode::getDesktopMode(); +/// window.create(sf::VideoMode(1024, 768, desktop.bitsPerPixel), "SFML window"); +/// \endcode +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Window/Window.hpp b/mcclone/external/sfml23/include/SFML/Window/Window.hpp new file mode 100644 index 0000000..44f0752 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Window/Window.hpp @@ -0,0 +1,585 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_WINDOW_HPP +#define SFML_WINDOW_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +namespace sf +{ +namespace priv +{ + class GlContext; + class WindowImpl; +} + +class Event; + +//////////////////////////////////////////////////////////// +/// \brief Window that serves as a target for OpenGL rendering +/// +//////////////////////////////////////////////////////////// +class SFML_WINDOW_API Window : GlResource, NonCopyable +{ +public: + + //////////////////////////////////////////////////////////// + /// \brief Default constructor + /// + /// This constructor doesn't actually create the window, + /// use the other constructors or call create() to do so. + /// + //////////////////////////////////////////////////////////// + Window(); + + //////////////////////////////////////////////////////////// + /// \brief Construct a new window + /// + /// This constructor creates the window with the size and pixel + /// depth defined in \a mode. An optional style can be passed to + /// customize the look and behavior of the window (borders, + /// title bar, resizable, closable, ...). If \a style contains + /// Style::Fullscreen, then \a mode must be a valid video mode. + /// + /// The fourth parameter is an optional structure specifying + /// advanced OpenGL context settings such as antialiasing, + /// depth-buffer bits, etc. + /// + /// \param mode Video mode to use (defines the width, height and depth of the rendering area of the window) + /// \param title Title of the window + /// \param style %Window style, a bitwise OR combination of sf::Style enumerators + /// \param settings Additional settings for the underlying OpenGL context + /// + //////////////////////////////////////////////////////////// + Window(VideoMode mode, const String& title, Uint32 style = Style::Default, const ContextSettings& settings = ContextSettings()); + + //////////////////////////////////////////////////////////// + /// \brief Construct the window from an existing control + /// + /// Use this constructor if you want to create an OpenGL + /// rendering area into an already existing control. + /// + /// The second parameter is an optional structure specifying + /// advanced OpenGL context settings such as antialiasing, + /// depth-buffer bits, etc. + /// + /// \param handle Platform-specific handle of the control (\a HWND on + /// Windows, \a %Window on Linux/FreeBSD, \a NSWindow on OS X) + /// \param settings Additional settings for the underlying OpenGL context + /// + //////////////////////////////////////////////////////////// + explicit Window(WindowHandle handle, const ContextSettings& settings = ContextSettings()); + + //////////////////////////////////////////////////////////// + /// \brief Destructor + /// + /// Closes the window and frees all the resources attached to it. + /// + //////////////////////////////////////////////////////////// + virtual ~Window(); + + //////////////////////////////////////////////////////////// + /// \brief Create (or recreate) the window + /// + /// If the window was already created, it closes it first. + /// If \a style contains Style::Fullscreen, then \a mode + /// must be a valid video mode. + /// + /// The fourth parameter is an optional structure specifying + /// advanced OpenGL context settings such as antialiasing, + /// depth-buffer bits, etc. + /// + /// \param mode Video mode to use (defines the width, height and depth of the rendering area of the window) + /// \param title Title of the window + /// \param style %Window style, a bitwise OR combination of sf::Style enumerators + /// \param settings Additional settings for the underlying OpenGL context + /// + //////////////////////////////////////////////////////////// + void create(VideoMode mode, const String& title, Uint32 style = Style::Default, const ContextSettings& settings = ContextSettings()); + + //////////////////////////////////////////////////////////// + /// \brief Create (or recreate) the window from an existing control + /// + /// Use this function if you want to create an OpenGL + /// rendering area into an already existing control. + /// If the window was already created, it closes it first. + /// + /// The second parameter is an optional structure specifying + /// advanced OpenGL context settings such as antialiasing, + /// depth-buffer bits, etc. + /// + /// \param handle Platform-specific handle of the control (\a HWND on + /// Windows, \a %Window on Linux/FreeBSD, \a NSWindow on OS X) + /// \param settings Additional settings for the underlying OpenGL context + /// + //////////////////////////////////////////////////////////// + void create(WindowHandle handle, const ContextSettings& settings = ContextSettings()); + + //////////////////////////////////////////////////////////// + /// \brief Close the window and destroy all the attached resources + /// + /// After calling this function, the sf::Window instance remains + /// valid and you can call create() to recreate the window. + /// All other functions such as pollEvent() or display() will + /// still work (i.e. you don't have to test isOpen() every time), + /// and will have no effect on closed windows. + /// + //////////////////////////////////////////////////////////// + void close(); + + //////////////////////////////////////////////////////////// + /// \brief Tell whether or not the window is open + /// + /// This function returns whether or not the window exists. + /// Note that a hidden window (setVisible(false)) is open + /// (therefore this function would return true). + /// + /// \return True if the window is open, false if it has been closed + /// + //////////////////////////////////////////////////////////// + bool isOpen() const; + + //////////////////////////////////////////////////////////// + /// \brief Get the settings of the OpenGL context of the window + /// + /// Note that these settings may be different from what was + /// passed to the constructor or the create() function, + /// if one or more settings were not supported. In this case, + /// SFML chose the closest match. + /// + /// \return Structure containing the OpenGL context settings + /// + //////////////////////////////////////////////////////////// + const ContextSettings& getSettings() const; + + //////////////////////////////////////////////////////////// + /// \brief Pop the event on top of the event queue, if any, and return it + /// + /// This function is not blocking: if there's no pending event then + /// it will return false and leave \a event unmodified. + /// Note that more than one event may be present in the event queue, + /// thus you should always call this function in a loop + /// to make sure that you process every pending event. + /// \code + /// sf::Event event; + /// while (window.pollEvent(event)) + /// { + /// // process event... + /// } + /// \endcode + /// + /// \param event Event to be returned + /// + /// \return True if an event was returned, or false if the event queue was empty + /// + /// \see waitEvent + /// + //////////////////////////////////////////////////////////// + bool pollEvent(Event& event); + + //////////////////////////////////////////////////////////// + /// \brief Wait for an event and return it + /// + /// This function is blocking: if there's no pending event then + /// it will wait until an event is received. + /// After this function returns (and no error occurred), + /// the \a event object is always valid and filled properly. + /// This function is typically used when you have a thread that + /// is dedicated to events handling: you want to make this thread + /// sleep as long as no new event is received. + /// \code + /// sf::Event event; + /// if (window.waitEvent(event)) + /// { + /// // process event... + /// } + /// \endcode + /// + /// \param event Event to be returned + /// + /// \return False if any error occurred + /// + /// \see pollEvent + /// + //////////////////////////////////////////////////////////// + bool waitEvent(Event& event); + + //////////////////////////////////////////////////////////// + /// \brief Get the position of the window + /// + /// \return Position of the window, in pixels + /// + /// \see setPosition + /// + //////////////////////////////////////////////////////////// + Vector2i getPosition() const; + + //////////////////////////////////////////////////////////// + /// \brief Change the position of the window on screen + /// + /// This function only works for top-level windows + /// (i.e. it will be ignored for windows created from + /// the handle of a child window/control). + /// + /// \param position New position, in pixels + /// + /// \see getPosition + /// + //////////////////////////////////////////////////////////// + void setPosition(const Vector2i& position); + + //////////////////////////////////////////////////////////// + /// \brief Get the size of the rendering region of the window + /// + /// The size doesn't include the titlebar and borders + /// of the window. + /// + /// \return Size in pixels + /// + /// \see setSize + /// + //////////////////////////////////////////////////////////// + Vector2u getSize() const; + + //////////////////////////////////////////////////////////// + /// \brief Change the size of the rendering region of the window + /// + /// \param size New size, in pixels + /// + /// \see getSize + /// + //////////////////////////////////////////////////////////// + void setSize(const Vector2u& size); + + //////////////////////////////////////////////////////////// + /// \brief Change the title of the window + /// + /// \param title New title + /// + /// \see setIcon + /// + //////////////////////////////////////////////////////////// + void setTitle(const String& title); + + //////////////////////////////////////////////////////////// + /// \brief Change the window's icon + /// + /// \a pixels must be an array of \a width x \a height pixels + /// in 32-bits RGBA format. + /// + /// The OS default icon is used by default. + /// + /// \param width Icon's width, in pixels + /// \param height Icon's height, in pixels + /// \param pixels Pointer to the array of pixels in memory. The + /// pixels are copied, so you need not keep the + /// source alive after calling this function. + /// + /// \see setTitle + /// + //////////////////////////////////////////////////////////// + void setIcon(unsigned int width, unsigned int height, const Uint8* pixels); + + //////////////////////////////////////////////////////////// + /// \brief Show or hide the window + /// + /// The window is shown by default. + /// + /// \param visible True to show the window, false to hide it + /// + //////////////////////////////////////////////////////////// + void setVisible(bool visible); + + //////////////////////////////////////////////////////////// + /// \brief Enable or disable vertical synchronization + /// + /// Activating vertical synchronization will limit the number + /// of frames displayed to the refresh rate of the monitor. + /// This can avoid some visual artifacts, and limit the framerate + /// to a good value (but not constant across different computers). + /// + /// Vertical synchronization is disabled by default. + /// + /// \param enabled True to enable v-sync, false to deactivate it + /// + //////////////////////////////////////////////////////////// + void setVerticalSyncEnabled(bool enabled); + + //////////////////////////////////////////////////////////// + /// \brief Show or hide the mouse cursor + /// + /// The mouse cursor is visible by default. + /// + /// \param visible True to show the mouse cursor, false to hide it + /// + //////////////////////////////////////////////////////////// + void setMouseCursorVisible(bool visible); + + //////////////////////////////////////////////////////////// + /// \brief Enable or disable automatic key-repeat + /// + /// If key repeat is enabled, you will receive repeated + /// KeyPressed events while keeping a key pressed. If it is disabled, + /// you will only get a single event when the key is pressed. + /// + /// Key repeat is enabled by default. + /// + /// \param enabled True to enable, false to disable + /// + //////////////////////////////////////////////////////////// + void setKeyRepeatEnabled(bool enabled); + + //////////////////////////////////////////////////////////// + /// \brief Limit the framerate to a maximum fixed frequency + /// + /// If a limit is set, the window will use a small delay after + /// each call to display() to ensure that the current frame + /// lasted long enough to match the framerate limit. + /// SFML will try to match the given limit as much as it can, + /// but since it internally uses sf::sleep, whose precision + /// depends on the underlying OS, the results may be a little + /// unprecise as well (for example, you can get 65 FPS when + /// requesting 60). + /// + /// \param limit Framerate limit, in frames per seconds (use 0 to disable limit) + /// + //////////////////////////////////////////////////////////// + void setFramerateLimit(unsigned int limit); + + //////////////////////////////////////////////////////////// + /// \brief Change the joystick threshold + /// + /// The joystick threshold is the value below which + /// no JoystickMoved event will be generated. + /// + /// The threshold value is 0.1 by default. + /// + /// \param threshold New threshold, in the range [0, 100] + /// + //////////////////////////////////////////////////////////// + void setJoystickThreshold(float threshold); + + //////////////////////////////////////////////////////////// + /// \brief Activate or deactivate the window as the current target + /// for OpenGL rendering + /// + /// A window is active only on the current thread, if you want to + /// make it active on another thread you have to deactivate it + /// on the previous thread first if it was active. + /// Only one window can be active on a thread at a time, thus + /// the window previously active (if any) automatically gets deactivated. + /// This is not to be confused with requestFocus(). + /// + /// \param active True to activate, false to deactivate + /// + /// \return True if operation was successful, false otherwise + /// + //////////////////////////////////////////////////////////// + bool setActive(bool active = true) const; + + //////////////////////////////////////////////////////////// + /// \brief Request the current window to be made the active + /// foreground window + /// + /// At any given time, only one window may have the input focus + /// to receive input events such as keystrokes or mouse events. + /// If a window requests focus, it only hints to the operating + /// system, that it would like to be focused. The operating system + /// is free to deny the request. + /// This is not to be confused with setActive(). + /// + /// \see hasFocus + /// + //////////////////////////////////////////////////////////// + void requestFocus(); + + //////////////////////////////////////////////////////////// + /// \brief Check whether the window has the input focus + /// + /// At any given time, only one window may have the input focus + /// to receive input events such as keystrokes or most mouse + /// events. + /// + /// \return True if window has focus, false otherwise + /// \see requestFocus + /// + //////////////////////////////////////////////////////////// + bool hasFocus() const; + + //////////////////////////////////////////////////////////// + /// \brief Display on screen what has been rendered to the window so far + /// + /// This function is typically called after all OpenGL rendering + /// has been done for the current frame, in order to show + /// it on screen. + /// + //////////////////////////////////////////////////////////// + void display(); + + //////////////////////////////////////////////////////////// + /// \brief Get the OS-specific handle of the window + /// + /// The type of the returned handle is sf::WindowHandle, + /// which is a typedef to the handle type defined by the OS. + /// You shouldn't need to use this function, unless you have + /// very specific stuff to implement that SFML doesn't support, + /// or implement a temporary workaround until a bug is fixed. + /// The type is \a HWND on Windows, \a %Window on Linux/FreeBSD + /// and \a NSWindow on OS X. + /// + /// \return System handle of the window + /// + //////////////////////////////////////////////////////////// + WindowHandle getSystemHandle() const; + +protected: + + //////////////////////////////////////////////////////////// + /// \brief Function called after the window has been created + /// + /// This function is called so that derived classes can + /// perform their own specific initialization as soon as + /// the window is created. + /// + //////////////////////////////////////////////////////////// + virtual void onCreate(); + + //////////////////////////////////////////////////////////// + /// \brief Function called after the window has been resized + /// + /// This function is called so that derived classes can + /// perform custom actions when the size of the window changes. + /// + //////////////////////////////////////////////////////////// + virtual void onResize(); + +private: + + //////////////////////////////////////////////////////////// + /// \brief Processes an event before it is sent to the user + /// + /// This function is called every time an event is received + /// from the internal window (through pollEvent or waitEvent). + /// It filters out unwanted events, and performs whatever internal + /// stuff the window needs before the event is returned to the + /// user. + /// + /// \param event Event to filter + /// + //////////////////////////////////////////////////////////// + bool filterEvent(const Event& event); + + //////////////////////////////////////////////////////////// + /// \brief Perform some common internal initializations + /// + //////////////////////////////////////////////////////////// + void initialize(); + + //////////////////////////////////////////////////////////// + // Member data + //////////////////////////////////////////////////////////// + priv::WindowImpl* m_impl; ///< Platform-specific implementation of the window + priv::GlContext* m_context; ///< Platform-specific implementation of the OpenGL context + Clock m_clock; ///< Clock for measuring the elapsed time between frames + Time m_frameTimeLimit; ///< Current framerate limit + Vector2u m_size; ///< Current size of the window +}; + +} // namespace sf + + +#endif // SFML_WINDOW_HPP + + +//////////////////////////////////////////////////////////// +/// \class sf::Window +/// \ingroup window +/// +/// sf::Window is the main class of the Window module. It defines +/// an OS window that is able to receive an OpenGL rendering. +/// +/// A sf::Window can create its own new window, or be embedded into +/// an already existing control using the create(handle) function. +/// This can be useful for embedding an OpenGL rendering area into +/// a view which is part of a bigger GUI with existing windows, +/// controls, etc. It can also serve as embedding an OpenGL rendering +/// area into a window created by another (probably richer) GUI library +/// like Qt or wxWidgets. +/// +/// The sf::Window class provides a simple interface for manipulating +/// the window: move, resize, show/hide, control mouse cursor, etc. +/// It also provides event handling through its pollEvent() and waitEvent() +/// functions. +/// +/// Note that OpenGL experts can pass their own parameters (antialiasing +/// level, bits for the depth and stencil buffers, etc.) to the +/// OpenGL context attached to the window, with the sf::ContextSettings +/// structure which is passed as an optional argument when creating the +/// window. +/// +/// Usage example: +/// \code +/// // Declare and create a new window +/// sf::Window window(sf::VideoMode(800, 600), "SFML window"); +/// +/// // Limit the framerate to 60 frames per second (this step is optional) +/// window.setFramerateLimit(60); +/// +/// // The main loop - ends as soon as the window is closed +/// while (window.isOpen()) +/// { +/// // Event processing +/// sf::Event event; +/// while (window.pollEvent(event)) +/// { +/// // Request for closing the window +/// if (event.type == sf::Event::Closed) +/// window.close(); +/// } +/// +/// // Activate the window for OpenGL rendering +/// window.setActive(); +/// +/// // OpenGL drawing commands go here... +/// +/// // End the current frame and display its contents on screen +/// window.display(); +/// } +/// \endcode +/// +//////////////////////////////////////////////////////////// diff --git a/mcclone/external/sfml23/include/SFML/Window/WindowHandle.hpp b/mcclone/external/sfml23/include/SFML/Window/WindowHandle.hpp new file mode 100644 index 0000000..9da3042 --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Window/WindowHandle.hpp @@ -0,0 +1,74 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_WINDOWHANDLE_HPP +#define SFML_WINDOWHANDLE_HPP + +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + +// Windows' HWND is a typedef on struct HWND__* +#if defined(SFML_SYSTEM_WINDOWS) + struct HWND__; +#endif + +namespace sf +{ +//////////////////////////////////////////////////////////// +/// Define a low-level window handle type, specific to +/// each platform +//////////////////////////////////////////////////////////// +#if defined(SFML_SYSTEM_WINDOWS) + + // Window handle is HWND (HWND__*) on Windows + typedef HWND__* WindowHandle; + +#elif defined(SFML_SYSTEM_LINUX) || defined(SFML_SYSTEM_FREEBSD) + + // Window handle is Window (unsigned long) on Unix - X11 + typedef unsigned long WindowHandle; + +#elif defined(SFML_SYSTEM_MACOS) + + // Window handle is NSWindow (void*) on Mac OS X - Cocoa + typedef void* WindowHandle; + +#elif defined(SFML_SYSTEM_IOS) + + // Window handle is UIWindow (void*) on iOS - UIKit + typedef void* WindowHandle; + +#elif defined(SFML_SYSTEM_ANDROID) + + // Window handle is ANativeWindow (void*) on Android + typedef void* WindowHandle; + +#endif + +} // namespace sf + + +#endif // SFML_WINDOWHANDLE_HPP diff --git a/mcclone/external/sfml23/include/SFML/Window/WindowStyle.hpp b/mcclone/external/sfml23/include/SFML/Window/WindowStyle.hpp new file mode 100644 index 0000000..b9253db --- /dev/null +++ b/mcclone/external/sfml23/include/SFML/Window/WindowStyle.hpp @@ -0,0 +1,53 @@ +//////////////////////////////////////////////////////////// +// +// SFML - Simple and Fast Multimedia Library +// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// +// This software is provided 'as-is', without any express or implied warranty. +// In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it freely, +// subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; +// you must not claim that you wrote the original software. +// If you use this software in a product, an acknowledgment +// in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, +// and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +// +//////////////////////////////////////////////////////////// + +#ifndef SFML_WINDOWSTYLE_HPP +#define SFML_WINDOWSTYLE_HPP + + +namespace sf +{ +namespace Style +{ + //////////////////////////////////////////////////////////// + /// \ingroup window + /// \brief Enumeration of the window styles + /// + //////////////////////////////////////////////////////////// + enum + { + None = 0, ///< No border / title bar (this flag and all others are mutually exclusive) + Titlebar = 1 << 0, ///< Title bar + fixed border + Resize = 1 << 1, ///< Title bar + resizable border + maximize button + Close = 1 << 2, ///< Title bar + close button + Fullscreen = 1 << 3, ///< Fullscreen mode (this flag and all others are mutually exclusive) + + Default = Titlebar | Resize | Close ///< Default window style + }; +} + +} // namespace sf + + +#endif // SFML_WINDOWSTYLE_HPP diff --git a/mcclone/external/sfml23/lib/flac.lib b/mcclone/external/sfml23/lib/flac.lib new file mode 100644 index 0000000000000000000000000000000000000000..fd29aca3f85bcf1b4521ba70044f5da66f171586 GIT binary patch literal 512458 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ξ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