From 1621cc851aa44f5aa639a7e3500dd11026f63595 Mon Sep 17 00:00:00 2001 From: bkaradzic Date: Sun, 16 Sep 2012 17:36:08 -0700 Subject: [PATCH] Added examples. --- 3rdparty/compiler/mingw/alloca.h | 6 - 3rdparty/compiler/mingw/sal.h | 252 ------ 3rdparty/compiler/mingw/specstrings_strict.h | 1 - 3rdparty/compiler/mingw/specstrings_undef.h | 2 - 3rdparty/compiler/mingw/unordered_map | 1 - 3rdparty/compiler/msvc/inttypes.h | 305 ------- 3rdparty/compiler/msvc/stdint.h | 247 ------ 3rdparty/compiler/nacl/memory.h | 1 - examples/00-helloworld/helloworld.cpp | 54 ++ .../helloworld.nmf | 0 .../{helloworld => 00-helloworld}/index.htm | 0 .../nacl-chrome.bat | 0 examples/01-cubes/common.sh | 6 + examples/01-cubes/cubes.cpp | 244 ++++++ examples/01-cubes/fs_cubes.sc | 11 + examples/01-cubes/makefile | 98 +++ examples/01-cubes/shaders/dx11/fs_cubes.bin | Bin 0 -> 485 bytes examples/01-cubes/shaders/dx11/vs_cubes.bin | Bin 0 -> 1067 bytes examples/01-cubes/shaders/dx9/fs_cubes.bin | Bin 0 -> 129 bytes examples/01-cubes/shaders/dx9/vs_cubes.bin | Bin 0 -> 287 bytes examples/01-cubes/shaders/gles/fs_cubes.bin | Bin 0 -> 122 bytes examples/01-cubes/shaders/gles/vs_cubes.bin | Bin 0 -> 310 bytes examples/01-cubes/shaders/glsl/fs_cubes.bin | Bin 0 -> 83 bytes examples/01-cubes/shaders/glsl/vs_cubes.bin | Bin 0 -> 271 bytes examples/01-cubes/varying.def.sc | 4 + examples/01-cubes/vs_cubes.sc | 15 + examples/02-metaballs/common.sh | 6 + examples/02-metaballs/fs_metaballs.sc | 14 + examples/02-metaballs/makefile | 98 +++ examples/02-metaballs/metaballs.cpp | 785 ++++++++++++++++++ .../shaders/dx11/fs_metaballs.bin | Bin 0 -> 729 bytes .../shaders/dx11/vs_metaballs.bin | Bin 0 -> 1281 bytes .../02-metaballs/shaders/dx9/fs_metaballs.bin | Bin 0 -> 261 bytes .../02-metaballs/shaders/dx9/vs_metaballs.bin | Bin 0 -> 397 bytes .../shaders/gles/fs_metaballs.bin | Bin 0 -> 275 bytes .../shaders/gles/vs_metaballs.bin | Bin 0 -> 483 bytes .../shaders/glsl/fs_metaballs.bin | Bin 0 -> 236 bytes .../shaders/glsl/vs_metaballs.bin | Bin 0 -> 444 bytes examples/02-metaballs/varying.def.sc | 6 + examples/02-metaballs/vs_metaballs.sc | 16 + examples/common/math.h | 128 +++ examples/helloworld/helloworld.cpp | 40 - include/bgfx.h | 18 +- makefile | 41 + ...lloworld.lua => example-00-helloworld.lua} | 6 +- premake/example-01-cubes.lua | 36 + premake/example-02-metaballs.lua | 36 + premake/premake4.lua | 16 +- src/bgfx.cpp | 60 +- src/bgfx_p.h | 96 +-- src/bgfx_shader.sh | 57 ++ src/common.sh | 21 + src/config.h | 6 +- src/dds.cpp | 4 +- src/fs_clear.sc | 13 + src/fs_debugfont.sc | 18 + src/makefile | 38 + src/renderer_d3d11.cpp | 103 ++- src/renderer_d3d11.h | 4 +- src/renderer_d3d9.cpp | 55 +- src/renderer_d3d9.h | 2 +- src/renderer_gl.cpp | 70 +- src/renderer_gl.h | 2 +- src/renderer_null.cpp | 4 +- src/varying.def.sc | 10 + src/vs_clear.sc | 15 + src/vs_debugfont.sc | 17 + src/vs_debugfont_dx11.bin.h | 242 ++---- tools/bin/shaderc.exe | Bin 0 -> 1117696 bytes 69 files changed, 2087 insertions(+), 1243 deletions(-) delete mode 100644 3rdparty/compiler/mingw/alloca.h delete mode 100644 3rdparty/compiler/mingw/sal.h delete mode 100644 3rdparty/compiler/mingw/specstrings_strict.h delete mode 100644 3rdparty/compiler/mingw/specstrings_undef.h delete mode 100644 3rdparty/compiler/mingw/unordered_map delete mode 100644 3rdparty/compiler/msvc/inttypes.h delete mode 100644 3rdparty/compiler/msvc/stdint.h delete mode 100644 3rdparty/compiler/nacl/memory.h create mode 100644 examples/00-helloworld/helloworld.cpp rename examples/{helloworld => 00-helloworld}/helloworld.nmf (100%) rename examples/{helloworld => 00-helloworld}/index.htm (100%) rename examples/{helloworld => 00-helloworld}/nacl-chrome.bat (100%) create mode 100644 examples/01-cubes/common.sh create mode 100644 examples/01-cubes/cubes.cpp create mode 100644 examples/01-cubes/fs_cubes.sc create mode 100644 examples/01-cubes/makefile create mode 100644 examples/01-cubes/shaders/dx11/fs_cubes.bin create mode 100644 examples/01-cubes/shaders/dx11/vs_cubes.bin create mode 100644 examples/01-cubes/shaders/dx9/fs_cubes.bin create mode 100644 examples/01-cubes/shaders/dx9/vs_cubes.bin create mode 100644 examples/01-cubes/shaders/gles/fs_cubes.bin create mode 100644 examples/01-cubes/shaders/gles/vs_cubes.bin create mode 100644 examples/01-cubes/shaders/glsl/fs_cubes.bin create mode 100644 examples/01-cubes/shaders/glsl/vs_cubes.bin create mode 100644 examples/01-cubes/varying.def.sc create mode 100644 examples/01-cubes/vs_cubes.sc create mode 100644 examples/02-metaballs/common.sh create mode 100644 examples/02-metaballs/fs_metaballs.sc create mode 100644 examples/02-metaballs/makefile create mode 100644 examples/02-metaballs/metaballs.cpp create mode 100644 examples/02-metaballs/shaders/dx11/fs_metaballs.bin create mode 100644 examples/02-metaballs/shaders/dx11/vs_metaballs.bin create mode 100644 examples/02-metaballs/shaders/dx9/fs_metaballs.bin create mode 100644 examples/02-metaballs/shaders/dx9/vs_metaballs.bin create mode 100644 examples/02-metaballs/shaders/gles/fs_metaballs.bin create mode 100644 examples/02-metaballs/shaders/gles/vs_metaballs.bin create mode 100644 examples/02-metaballs/shaders/glsl/fs_metaballs.bin create mode 100644 examples/02-metaballs/shaders/glsl/vs_metaballs.bin create mode 100644 examples/02-metaballs/varying.def.sc create mode 100644 examples/02-metaballs/vs_metaballs.sc create mode 100644 examples/common/math.h delete mode 100644 examples/helloworld/helloworld.cpp create mode 100644 makefile rename premake/{helloworld.lua => example-00-helloworld.lua} (76%) create mode 100644 premake/example-01-cubes.lua create mode 100644 premake/example-02-metaballs.lua create mode 100644 src/bgfx_shader.sh create mode 100644 src/common.sh create mode 100644 src/fs_clear.sc create mode 100644 src/fs_debugfont.sc create mode 100644 src/makefile create mode 100644 src/varying.def.sc create mode 100644 src/vs_clear.sc create mode 100644 src/vs_debugfont.sc create mode 100644 tools/bin/shaderc.exe diff --git a/3rdparty/compiler/mingw/alloca.h b/3rdparty/compiler/mingw/alloca.h deleted file mode 100644 index 2da04def..00000000 --- a/3rdparty/compiler/mingw/alloca.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef __MINGW32__ALLOCA_H__ -#define __MINGW32__ALLOCA_H__ - -#include - -#endif // __MINGW32__ALLOCA_H__ diff --git a/3rdparty/compiler/mingw/sal.h b/3rdparty/compiler/mingw/sal.h deleted file mode 100644 index ab235049..00000000 --- a/3rdparty/compiler/mingw/sal.h +++ /dev/null @@ -1,252 +0,0 @@ -#pragma once - -#if __GNUC__ >=3 -#pragma GCC system_header -#endif - -//#define __null // << Conflicts with GCC internal type __null -#define __notnull -#define __maybenull -#define __readonly -#define __notreadonly -#define __maybereadonly -#define __valid -#define __notvalid -#define __maybevalid -#define __readableTo(extent) -#define __elem_readableTo(size) -#define __byte_readableTo(size) -#define __writableTo(size) -#define __elem_writableTo(size) -#define __byte_writableTo(size) -#define __deref -#define __pre -#define __post -#define __precond(expr) -#define __postcond(expr) -#define __exceptthat -#define __execeptthat -#define __inner_success(expr) -#define __inner_checkReturn -#define __inner_typefix(ctype) -#define __inner_override -#define __inner_callback -#define __inner_blocksOn(resource) -#define __inner_fallthrough_dec -#define __inner_fallthrough -#define __refparam -#define __inner_control_entrypoint(category) -#define __inner_data_entrypoint(category) - -#define __ecount(size) -#define __bcount(size) -#define __in -#define __in_ecount(size) -#define __in_bcount(size) -#define __in_z -#define __in_ecount_z(size) -#define __in_bcount_z(size) -#define __in_nz -#define __in_ecount_nz(size) -#define __in_bcount_nz(size) -#define __out -#define __out_ecount(size) -#define __out_bcount(size) -#define __out_ecount_part(size,length) -#define __out_bcount_part(size,length) -#define __out_ecount_full(size) -#define __out_bcount_full(size) -#define __out_z -#define __out_z_opt -#define __out_ecount_z(size) -#define __out_bcount_z(size) -#define __out_ecount_part_z(size,length) -#define __out_bcount_part_z(size,length) -#define __out_ecount_full_z(size) -#define __out_bcount_full_z(size) -#define __out_nz -#define __out_nz_opt -#define __out_ecount_nz(size) -#define __out_bcount_nz(size) -#define __inout -#define __inout_ecount(size) -#define __inout_bcount(size) -#define __inout_ecount_part(size,length) -#define __inout_bcount_part(size,length) -#define __inout_ecount_full(size) -#define __inout_bcount_full(size) -#define __inout_z -#define __inout_ecount_z(size) -#define __inout_bcount_z(size) -#define __inout_nz -#define __inout_ecount_nz(size) -#define __inout_bcount_nz(size) -#define __ecount_opt(size) -#define __bcount_opt(size) -#define __in_opt -#define __in_ecount_opt(size) -#define __in_bcount_opt(size) -#define __in_z_opt -#define __in_ecount_z_opt(size) -#define __in_bcount_z_opt(size) -#define __in_nz_opt -#define __in_ecount_nz_opt(size) -#define __in_bcount_nz_opt(size) -#define __out_opt -#define __out_ecount_opt(size) -#define __out_bcount_opt(size) -#define __out_ecount_part_opt(size,length) -#define __out_bcount_part_opt(size,length) -#define __out_ecount_full_opt(size) -#define __out_bcount_full_opt(size) -#define __out_ecount_z_opt(size) -#define __out_bcount_z_opt(size) -#define __out_ecount_part_z_opt(size,length) -#define __out_bcount_part_z_opt(size,length) -#define __out_ecount_full_z_opt(size) -#define __out_bcount_full_z_opt(size) -#define __out_ecount_nz_opt(size) -#define __out_bcount_nz_opt(size) -#define __inout_opt -#define __inout_ecount_opt(size) -#define __inout_bcount_opt(size) -#define __inout_ecount_part_opt(size,length) -#define __inout_bcount_part_opt(size,length) -#define __inout_ecount_full_opt(size) -#define __inout_bcount_full_opt(size) -#define __inout_z_opt -#define __inout_ecount_z_opt(size) -#define __inout_ecount_z_opt(size) -#define __inout_bcount_z_opt(size) -#define __inout_nz_opt -#define __inout_ecount_nz_opt(size) -#define __inout_bcount_nz_opt(size) -#define __deref_ecount(size) -#define __deref_bcount(size) -#define __deref_out -#define __deref_out_ecount(size) -#define __deref_out_bcount(size) -#define __deref_out_ecount_part(size,length) -#define __deref_out_bcount_part(size,length) -#define __deref_out_ecount_full(size) -#define __deref_out_bcount_full(size) -#define __deref_out_z -#define __deref_out_ecount_z(size) -#define __deref_out_bcount_z(size) -#define __deref_out_nz -#define __deref_out_ecount_nz(size) -#define __deref_out_bcount_nz(size) -#define __deref_inout -#define __deref_inout_z -#define __deref_inout_ecount(size) -#define __deref_inout_bcount(size) -#define __deref_inout_ecount_part(size,length) -#define __deref_inout_bcount_part(size,length) -#define __deref_inout_ecount_full(size) -#define __deref_inout_bcount_full(size) -#define __deref_inout_z -#define __deref_inout_ecount_z(size) -#define __deref_inout_bcount_z(size) -#define __deref_inout_nz -#define __deref_inout_ecount_nz(size) -#define __deref_inout_bcount_nz(size) -#define __deref_ecount_opt(size) -#define __deref_bcount_opt(size) -#define __deref_out_opt -#define __deref_out_ecount_opt(size) -#define __deref_out_bcount_opt(size) -#define __deref_out_ecount_part_opt(size,length) -#define __deref_out_bcount_part_opt(size,length) -#define __deref_out_ecount_full_opt(size) -#define __deref_out_bcount_full_opt(size) -#define __deref_out_z_opt -#define __deref_out_ecount_z_opt(size) -#define __deref_out_bcount_z_opt(size) -#define __deref_out_nz_opt -#define __deref_out_ecount_nz_opt(size) -#define __deref_out_bcount_nz_opt(size) -#define __deref_inout_opt -#define __deref_inout_ecount_opt(size) -#define __deref_inout_bcount_opt(size) -#define __deref_inout_ecount_part_opt(size,length) -#define __deref_inout_bcount_part_opt(size,length) -#define __deref_inout_ecount_full_opt(size) -#define __deref_inout_bcount_full_opt(size) -#define __deref_inout_z_opt -#define __deref_inout_ecount_z_opt(size) -#define __deref_inout_bcount_z_opt(size) -#define __deref_inout_nz_opt -#define __deref_inout_ecount_nz_opt(size) -#define __deref_inout_bcount_nz_opt(size) -#define __deref_opt_ecount(size) -#define __deref_opt_bcount(size) -#define __deref_opt_out -#define __deref_opt_out_z -#define __deref_opt_out_ecount(size) -#define __deref_opt_out_bcount(size) -#define __deref_opt_out_ecount_part(size,length) -#define __deref_opt_out_bcount_part(size,length) -#define __deref_opt_out_ecount_full(size) -#define __deref_opt_out_bcount_full(size) -#define __deref_opt_inout -#define __deref_opt_inout_ecount(size) -#define __deref_opt_inout_bcount(size) -#define __deref_opt_inout_ecount_part(size,length) -#define __deref_opt_inout_bcount_part(size,length) -#define __deref_opt_inout_ecount_full(size) -#define __deref_opt_inout_bcount_full(size) -#define __deref_opt_inout_z -#define __deref_opt_inout_ecount_z(size) -#define __deref_opt_inout_bcount_z(size) -#define __deref_opt_inout_nz -#define __deref_opt_inout_ecount_nz(size) -#define __deref_opt_inout_bcount_nz(size) -#define __deref_opt_ecount_opt(size) -#define __deref_opt_bcount_opt(size) -#define __deref_opt_out_opt -#define __deref_opt_out_ecount_opt(size) -#define __deref_opt_out_bcount_opt(size) -#define __deref_opt_out_ecount_part_opt(size,length) -#define __deref_opt_out_bcount_part_opt(size,length) -#define __deref_opt_out_ecount_full_opt(size) -#define __deref_opt_out_bcount_full_opt(size) -#define __deref_opt_out_z_opt -#define __deref_opt_out_ecount_z_opt(size) -#define __deref_opt_out_bcount_z_opt(size) -#define __deref_opt_out_nz_opt -#define __deref_opt_out_ecount_nz_opt(size) -#define __deref_opt_out_bcount_nz_opt(size) -#define __deref_opt_inout_opt -#define __deref_opt_inout_ecount_opt(size) -#define __deref_opt_inout_bcount_opt(size) -#define __deref_opt_inout_ecount_part_opt(size,length) -#define __deref_opt_inout_bcount_part_opt(size,length) -#define __deref_opt_inout_ecount_full_opt(size) -#define __deref_opt_inout_bcount_full_opt(size) -#define __deref_opt_inout_z_opt -#define __deref_opt_inout_ecount_z_opt(size) -#define __deref_opt_inout_bcount_z_opt(size) -#define __deref_opt_inout_nz_opt -#define __deref_opt_inout_ecount_nz_opt(size) -#define __deref_opt_inout_bcount_nz_opt(size) - -#define __success(expr) -#define __nullterminated -#define __nullnullterminated -#define __reserved -#define __checkReturn -#define __typefix(ctype) -#define __override -#define __callback -#define __format_string -#define __blocksOn(resource) -#define __control_entrypoint(category) -#define __data_entrypoint(category) - -#ifndef __fallthrough - #define __fallthrough __inner_fallthrough -#endif - -#ifndef __analysis_assume - #define __analysis_assume(expr) -#endif diff --git a/3rdparty/compiler/mingw/specstrings_strict.h b/3rdparty/compiler/mingw/specstrings_strict.h deleted file mode 100644 index 982dd201..00000000 --- a/3rdparty/compiler/mingw/specstrings_strict.h +++ /dev/null @@ -1 +0,0 @@ -#define __reserved diff --git a/3rdparty/compiler/mingw/specstrings_undef.h b/3rdparty/compiler/mingw/specstrings_undef.h deleted file mode 100644 index 69d43155..00000000 --- a/3rdparty/compiler/mingw/specstrings_undef.h +++ /dev/null @@ -1,2 +0,0 @@ -#undef __reserved - diff --git a/3rdparty/compiler/mingw/unordered_map b/3rdparty/compiler/mingw/unordered_map deleted file mode 100644 index 22f82dd0..00000000 --- a/3rdparty/compiler/mingw/unordered_map +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/3rdparty/compiler/msvc/inttypes.h b/3rdparty/compiler/msvc/inttypes.h deleted file mode 100644 index 25542771..00000000 --- a/3rdparty/compiler/msvc/inttypes.h +++ /dev/null @@ -1,305 +0,0 @@ -// ISO C9x compliant inttypes.h for Microsoft Visual Studio -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 -// -// Copyright (c) 2006 Alexander Chemeris -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. The name of the author may be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _MSC_VER // [ -#error "Use this header only with Microsoft Visual C++ compilers!" -#endif // _MSC_VER ] - -#ifndef _MSC_INTTYPES_H_ // [ -#define _MSC_INTTYPES_H_ - -#if _MSC_VER > 1000 -#pragma once -#endif - -#include "stdint.h" - -// 7.8 Format conversion of integer types - -typedef struct { - intmax_t quot; - intmax_t rem; -} imaxdiv_t; - -// 7.8.1 Macros for format specifiers - -#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [ See footnote 185 at page 198 - -// The fprintf macros for signed integers are: -#define PRId8 "d" -#define PRIi8 "i" -#define PRIdLEAST8 "d" -#define PRIiLEAST8 "i" -#define PRIdFAST8 "d" -#define PRIiFAST8 "i" - -#define PRId16 "hd" -#define PRIi16 "hi" -#define PRIdLEAST16 "hd" -#define PRIiLEAST16 "hi" -#define PRIdFAST16 "hd" -#define PRIiFAST16 "hi" - -#define PRId32 "I32d" -#define PRIi32 "I32i" -#define PRIdLEAST32 "I32d" -#define PRIiLEAST32 "I32i" -#define PRIdFAST32 "I32d" -#define PRIiFAST32 "I32i" - -#define PRId64 "I64d" -#define PRIi64 "I64i" -#define PRIdLEAST64 "I64d" -#define PRIiLEAST64 "I64i" -#define PRIdFAST64 "I64d" -#define PRIiFAST64 "I64i" - -#define PRIdMAX "I64d" -#define PRIiMAX "I64i" - -#define PRIdPTR "Id" -#define PRIiPTR "Ii" - -// The fprintf macros for unsigned integers are: -#define PRIo8 "o" -#define PRIu8 "u" -#define PRIx8 "x" -#define PRIX8 "X" -#define PRIoLEAST8 "o" -#define PRIuLEAST8 "u" -#define PRIxLEAST8 "x" -#define PRIXLEAST8 "X" -#define PRIoFAST8 "o" -#define PRIuFAST8 "u" -#define PRIxFAST8 "x" -#define PRIXFAST8 "X" - -#define PRIo16 "ho" -#define PRIu16 "hu" -#define PRIx16 "hx" -#define PRIX16 "hX" -#define PRIoLEAST16 "ho" -#define PRIuLEAST16 "hu" -#define PRIxLEAST16 "hx" -#define PRIXLEAST16 "hX" -#define PRIoFAST16 "ho" -#define PRIuFAST16 "hu" -#define PRIxFAST16 "hx" -#define PRIXFAST16 "hX" - -#define PRIo32 "I32o" -#define PRIu32 "I32u" -#define PRIx32 "I32x" -#define PRIX32 "I32X" -#define PRIoLEAST32 "I32o" -#define PRIuLEAST32 "I32u" -#define PRIxLEAST32 "I32x" -#define PRIXLEAST32 "I32X" -#define PRIoFAST32 "I32o" -#define PRIuFAST32 "I32u" -#define PRIxFAST32 "I32x" -#define PRIXFAST32 "I32X" - -#define PRIo64 "I64o" -#define PRIu64 "I64u" -#define PRIx64 "I64x" -#define PRIX64 "I64X" -#define PRIoLEAST64 "I64o" -#define PRIuLEAST64 "I64u" -#define PRIxLEAST64 "I64x" -#define PRIXLEAST64 "I64X" -#define PRIoFAST64 "I64o" -#define PRIuFAST64 "I64u" -#define PRIxFAST64 "I64x" -#define PRIXFAST64 "I64X" - -#define PRIoMAX "I64o" -#define PRIuMAX "I64u" -#define PRIxMAX "I64x" -#define PRIXMAX "I64X" - -#define PRIoPTR "Io" -#define PRIuPTR "Iu" -#define PRIxPTR "Ix" -#define PRIXPTR "IX" - -// The fscanf macros for signed integers are: -#define SCNd8 "d" -#define SCNi8 "i" -#define SCNdLEAST8 "d" -#define SCNiLEAST8 "i" -#define SCNdFAST8 "d" -#define SCNiFAST8 "i" - -#define SCNd16 "hd" -#define SCNi16 "hi" -#define SCNdLEAST16 "hd" -#define SCNiLEAST16 "hi" -#define SCNdFAST16 "hd" -#define SCNiFAST16 "hi" - -#define SCNd32 "ld" -#define SCNi32 "li" -#define SCNdLEAST32 "ld" -#define SCNiLEAST32 "li" -#define SCNdFAST32 "ld" -#define SCNiFAST32 "li" - -#define SCNd64 "I64d" -#define SCNi64 "I64i" -#define SCNdLEAST64 "I64d" -#define SCNiLEAST64 "I64i" -#define SCNdFAST64 "I64d" -#define SCNiFAST64 "I64i" - -#define SCNdMAX "I64d" -#define SCNiMAX "I64i" - -#ifdef _WIN64 // [ -# define SCNdPTR "I64d" -# define SCNiPTR "I64i" -#else // _WIN64 ][ -# define SCNdPTR "ld" -# define SCNiPTR "li" -#endif // _WIN64 ] - -// The fscanf macros for unsigned integers are: -#define SCNo8 "o" -#define SCNu8 "u" -#define SCNx8 "x" -#define SCNX8 "X" -#define SCNoLEAST8 "o" -#define SCNuLEAST8 "u" -#define SCNxLEAST8 "x" -#define SCNXLEAST8 "X" -#define SCNoFAST8 "o" -#define SCNuFAST8 "u" -#define SCNxFAST8 "x" -#define SCNXFAST8 "X" - -#define SCNo16 "ho" -#define SCNu16 "hu" -#define SCNx16 "hx" -#define SCNX16 "hX" -#define SCNoLEAST16 "ho" -#define SCNuLEAST16 "hu" -#define SCNxLEAST16 "hx" -#define SCNXLEAST16 "hX" -#define SCNoFAST16 "ho" -#define SCNuFAST16 "hu" -#define SCNxFAST16 "hx" -#define SCNXFAST16 "hX" - -#define SCNo32 "lo" -#define SCNu32 "lu" -#define SCNx32 "lx" -#define SCNX32 "lX" -#define SCNoLEAST32 "lo" -#define SCNuLEAST32 "lu" -#define SCNxLEAST32 "lx" -#define SCNXLEAST32 "lX" -#define SCNoFAST32 "lo" -#define SCNuFAST32 "lu" -#define SCNxFAST32 "lx" -#define SCNXFAST32 "lX" - -#define SCNo64 "I64o" -#define SCNu64 "I64u" -#define SCNx64 "I64x" -#define SCNX64 "I64X" -#define SCNoLEAST64 "I64o" -#define SCNuLEAST64 "I64u" -#define SCNxLEAST64 "I64x" -#define SCNXLEAST64 "I64X" -#define SCNoFAST64 "I64o" -#define SCNuFAST64 "I64u" -#define SCNxFAST64 "I64x" -#define SCNXFAST64 "I64X" - -#define SCNoMAX "I64o" -#define SCNuMAX "I64u" -#define SCNxMAX "I64x" -#define SCNXMAX "I64X" - -#ifdef _WIN64 // [ -# define SCNoPTR "I64o" -# define SCNuPTR "I64u" -# define SCNxPTR "I64x" -# define SCNXPTR "I64X" -#else // _WIN64 ][ -# define SCNoPTR "lo" -# define SCNuPTR "lu" -# define SCNxPTR "lx" -# define SCNXPTR "lX" -#endif // _WIN64 ] - -#endif // __STDC_FORMAT_MACROS ] - -// 7.8.2 Functions for greatest-width integer types - -// 7.8.2.1 The imaxabs function -#define imaxabs _abs64 - -// 7.8.2.2 The imaxdiv function - -// This is modified version of div() function from Microsoft's div.c found -// in %MSVC.NET%\crt\src\div.c -#ifdef STATIC_IMAXDIV // [ -static -#else // STATIC_IMAXDIV ][ -_inline -#endif // STATIC_IMAXDIV ] -imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom) -{ - imaxdiv_t result; - - result.quot = numer / denom; - result.rem = numer % denom; - - if (numer < 0 && result.rem > 0) { - // did division wrong; must fix up - ++result.quot; - result.rem -= denom; - } - - return result; -} - -// 7.8.2.3 The strtoimax and strtoumax functions -#define strtoimax _strtoi64 -#define strtoumax _strtoui64 - -// 7.8.2.4 The wcstoimax and wcstoumax functions -#define wcstoimax _wcstoi64 -#define wcstoumax _wcstoui64 - - -#endif // _MSC_INTTYPES_H_ ] diff --git a/3rdparty/compiler/msvc/stdint.h b/3rdparty/compiler/msvc/stdint.h deleted file mode 100644 index 59d06730..00000000 --- a/3rdparty/compiler/msvc/stdint.h +++ /dev/null @@ -1,247 +0,0 @@ -// ISO C9x compliant stdint.h for Microsoft Visual Studio -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 -// -// Copyright (c) 2006-2008 Alexander Chemeris -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. The name of the author may be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _MSC_VER // [ -#error "Use this header only with Microsoft Visual C++ compilers!" -#endif // _MSC_VER ] - -#ifndef _MSC_STDINT_H_ // [ -#define _MSC_STDINT_H_ - -#if _MSC_VER > 1000 -#pragma once -#endif - -#include - -// For Visual Studio 6 in C++ mode and for many Visual Studio versions when -// compiling for ARM we should wrap include with 'extern "C++" {}' -// or compiler give many errors like this: -// error C2733: second C linkage of overloaded function 'wmemchr' not allowed -#ifdef __cplusplus -extern "C" { -#endif -# include -#ifdef __cplusplus -} -#endif - -// Define _W64 macros to mark types changing their size, like intptr_t. -#ifndef _W64 -# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 -# define _W64 __w64 -# else -# define _W64 -# endif -#endif - - -// 7.18.1 Integer types - -// 7.18.1.1 Exact-width integer types - -// Visual Studio 6 and Embedded Visual C++ 4 doesn't -// realize that, e.g. char has the same size as __int8 -// so we give up on __intX for them. -#if (_MSC_VER < 1300) - typedef signed char int8_t; - typedef signed short int16_t; - typedef signed int int32_t; - typedef unsigned char uint8_t; - typedef unsigned short uint16_t; - typedef unsigned int uint32_t; -#else - typedef signed __int8 int8_t; - typedef signed __int16 int16_t; - typedef signed __int32 int32_t; - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; -#endif -typedef signed __int64 int64_t; -typedef unsigned __int64 uint64_t; - - -// 7.18.1.2 Minimum-width integer types -typedef int8_t int_least8_t; -typedef int16_t int_least16_t; -typedef int32_t int_least32_t; -typedef int64_t int_least64_t; -typedef uint8_t uint_least8_t; -typedef uint16_t uint_least16_t; -typedef uint32_t uint_least32_t; -typedef uint64_t uint_least64_t; - -// 7.18.1.3 Fastest minimum-width integer types -typedef int8_t int_fast8_t; -typedef int16_t int_fast16_t; -typedef int32_t int_fast32_t; -typedef int64_t int_fast64_t; -typedef uint8_t uint_fast8_t; -typedef uint16_t uint_fast16_t; -typedef uint32_t uint_fast32_t; -typedef uint64_t uint_fast64_t; - -// 7.18.1.4 Integer types capable of holding object pointers -#ifdef _WIN64 // [ - typedef signed __int64 intptr_t; - typedef unsigned __int64 uintptr_t; -#else // _WIN64 ][ - typedef _W64 signed int intptr_t; - typedef _W64 unsigned int uintptr_t; -#endif // _WIN64 ] - -// 7.18.1.5 Greatest-width integer types -typedef int64_t intmax_t; -typedef uint64_t uintmax_t; - - -// 7.18.2 Limits of specified-width integer types - -#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 - -// 7.18.2.1 Limits of exact-width integer types -#define INT8_MIN ((int8_t)_I8_MIN) -#define INT8_MAX _I8_MAX -#define INT16_MIN ((int16_t)_I16_MIN) -#define INT16_MAX _I16_MAX -#define INT32_MIN ((int32_t)_I32_MIN) -#define INT32_MAX _I32_MAX -#define INT64_MIN ((int64_t)_I64_MIN) -#define INT64_MAX _I64_MAX -#define UINT8_MAX _UI8_MAX -#define UINT16_MAX _UI16_MAX -#define UINT32_MAX _UI32_MAX -#define UINT64_MAX _UI64_MAX - -// 7.18.2.2 Limits of minimum-width integer types -#define INT_LEAST8_MIN INT8_MIN -#define INT_LEAST8_MAX INT8_MAX -#define INT_LEAST16_MIN INT16_MIN -#define INT_LEAST16_MAX INT16_MAX -#define INT_LEAST32_MIN INT32_MIN -#define INT_LEAST32_MAX INT32_MAX -#define INT_LEAST64_MIN INT64_MIN -#define INT_LEAST64_MAX INT64_MAX -#define UINT_LEAST8_MAX UINT8_MAX -#define UINT_LEAST16_MAX UINT16_MAX -#define UINT_LEAST32_MAX UINT32_MAX -#define UINT_LEAST64_MAX UINT64_MAX - -// 7.18.2.3 Limits of fastest minimum-width integer types -#define INT_FAST8_MIN INT8_MIN -#define INT_FAST8_MAX INT8_MAX -#define INT_FAST16_MIN INT16_MIN -#define INT_FAST16_MAX INT16_MAX -#define INT_FAST32_MIN INT32_MIN -#define INT_FAST32_MAX INT32_MAX -#define INT_FAST64_MIN INT64_MIN -#define INT_FAST64_MAX INT64_MAX -#define UINT_FAST8_MAX UINT8_MAX -#define UINT_FAST16_MAX UINT16_MAX -#define UINT_FAST32_MAX UINT32_MAX -#define UINT_FAST64_MAX UINT64_MAX - -// 7.18.2.4 Limits of integer types capable of holding object pointers -#ifdef _WIN64 // [ -# define INTPTR_MIN INT64_MIN -# define INTPTR_MAX INT64_MAX -# define UINTPTR_MAX UINT64_MAX -#else // _WIN64 ][ -# define INTPTR_MIN INT32_MIN -# define INTPTR_MAX INT32_MAX -# define UINTPTR_MAX UINT32_MAX -#endif // _WIN64 ] - -// 7.18.2.5 Limits of greatest-width integer types -#define INTMAX_MIN INT64_MIN -#define INTMAX_MAX INT64_MAX -#define UINTMAX_MAX UINT64_MAX - -// 7.18.3 Limits of other integer types - -#ifdef _WIN64 // [ -# define PTRDIFF_MIN _I64_MIN -# define PTRDIFF_MAX _I64_MAX -#else // _WIN64 ][ -# define PTRDIFF_MIN _I32_MIN -# define PTRDIFF_MAX _I32_MAX -#endif // _WIN64 ] - -#define SIG_ATOMIC_MIN INT_MIN -#define SIG_ATOMIC_MAX INT_MAX - -#ifndef SIZE_MAX // [ -# ifdef _WIN64 // [ -# define SIZE_MAX _UI64_MAX -# else // _WIN64 ][ -# define SIZE_MAX _UI32_MAX -# endif // _WIN64 ] -#endif // SIZE_MAX ] - -// WCHAR_MIN and WCHAR_MAX are also defined in -#ifndef WCHAR_MIN // [ -# define WCHAR_MIN 0 -#endif // WCHAR_MIN ] -#ifndef WCHAR_MAX // [ -# define WCHAR_MAX _UI16_MAX -#endif // WCHAR_MAX ] - -#define WINT_MIN 0 -#define WINT_MAX _UI16_MAX - -#endif // __STDC_LIMIT_MACROS ] - - -// 7.18.4 Limits of other integer types - -#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 - -// 7.18.4.1 Macros for minimum-width integer constants - -#define INT8_C(val) val##i8 -#define INT16_C(val) val##i16 -#define INT32_C(val) val##i32 -#define INT64_C(val) val##i64 - -#define UINT8_C(val) val##ui8 -#define UINT16_C(val) val##ui16 -#define UINT32_C(val) val##ui32 -#define UINT64_C(val) val##ui64 - -// 7.18.4.2 Macros for greatest-width integer constants -#define INTMAX_C INT64_C -#define UINTMAX_C UINT64_C - -#endif // __STDC_CONSTANT_MACROS ] - - -#endif // _MSC_STDINT_H_ ] diff --git a/3rdparty/compiler/nacl/memory.h b/3rdparty/compiler/nacl/memory.h deleted file mode 100644 index 8e69c1fc..00000000 --- a/3rdparty/compiler/nacl/memory.h +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/examples/00-helloworld/helloworld.cpp b/examples/00-helloworld/helloworld.cpp new file mode 100644 index 00000000..5f68f924 --- /dev/null +++ b/examples/00-helloworld/helloworld.cpp @@ -0,0 +1,54 @@ +/* + * Copyright 2011-2012 Branimir Karadzic. All rights reserved. + * License: http://www.opensource.org/licenses/BSD-2-Clause + */ + +#include +#include +#include "../common/dbg.h" + +void fatalCb(bgfx::Fatal::Enum _code, const char* _str) +{ + DBG("%x: %s", _code, _str); +} + +int _main_(int _argc, char** _argv) +{ + bgfx::init(BX_PLATFORM_WINDOWS, fatalCb); + bgfx::reset(1280, 720); + + // Enable debug text. + bgfx::setDebug(BGFX_DEBUG_TEXT); + + // Set view 0 default viewport. + bgfx::setViewRect(0, 0, 0, 1280, 720); + + // Set view 0 clear state. + bgfx::setViewClear(0 + , BGFX_CLEAR_COLOR_BIT|BGFX_CLEAR_DEPTH_BIT + , 0x303030ff + , 1.0f + , 0 + ); + + while (true) + { + // This dummy draw call is here to make sure that view 0 is cleared + // if not other draw calls are submitted to view 0. + bgfx::submit(0); + + // Use debug font to print information about this example. + bgfx::dbgTextClear(); + bgfx::dbgTextPrintf(0, 1, 0x4f, "bgfx/examples/00-helloworld"); + bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Initialization and debug text."); + + // Advance to next frame. Rendering thread will be kicked to + // process submitted rendering primitives. + bgfx::frame(); + } + + // Shutdown bgfx. + bgfx::shutdown(); + + return 0; +} diff --git a/examples/helloworld/helloworld.nmf b/examples/00-helloworld/helloworld.nmf similarity index 100% rename from examples/helloworld/helloworld.nmf rename to examples/00-helloworld/helloworld.nmf diff --git a/examples/helloworld/index.htm b/examples/00-helloworld/index.htm similarity index 100% rename from examples/helloworld/index.htm rename to examples/00-helloworld/index.htm diff --git a/examples/helloworld/nacl-chrome.bat b/examples/00-helloworld/nacl-chrome.bat similarity index 100% rename from examples/helloworld/nacl-chrome.bat rename to examples/00-helloworld/nacl-chrome.bat diff --git a/examples/01-cubes/common.sh b/examples/01-cubes/common.sh new file mode 100644 index 00000000..f8ae0eb6 --- /dev/null +++ b/examples/01-cubes/common.sh @@ -0,0 +1,6 @@ +/* + * Copyright 2011-2012 Branimir Karadzic. All rights reserved. + * License: http://www.opensource.org/licenses/BSD-2-Clause + */ + +#include "../../src/common.sh" diff --git a/examples/01-cubes/cubes.cpp b/examples/01-cubes/cubes.cpp new file mode 100644 index 00000000..bf1e891b --- /dev/null +++ b/examples/01-cubes/cubes.cpp @@ -0,0 +1,244 @@ +/* + * Copyright 2011-2012 Branimir Karadzic. All rights reserved. + * License: http://www.opensource.org/licenses/BSD-2-Clause + */ + +#include +#include +#include +#include "../common/dbg.h" +#include "../common/math.h" + +#include +#include + +void fatalCb(bgfx::Fatal::Enum _code, const char* _str) +{ + DBG("%x: %s", _code, _str); +} + +struct PosColorVertex +{ + float m_x; + float m_y; + float m_z; + uint32_t m_abgr; +}; + +static PosColorVertex s_cubeVertices[8] = +{ + {-1.0f, 1.0f, 1.0f, 0xff000000 }, + { 1.0f, 1.0f, 1.0f, 0xff0000ff }, + {-1.0f, -1.0f, 1.0f, 0xff00ff00 }, + { 1.0f, -1.0f, 1.0f, 0xff00ffff }, + {-1.0f, 1.0f, -1.0f, 0xffff0000 }, + { 1.0f, 1.0f, -1.0f, 0xffff00ff }, + {-1.0f, -1.0f, -1.0f, 0xffffff00 }, + { 1.0f, -1.0f, -1.0f, 0xffffffff }, +}; + +static const uint16_t s_cubeIndices[36] = +{ + 0, 2, 1, // 0 + 1, 2, 3, + 4, 5, 6, // 2 + 5, 7, 6, + 0, 4, 2, // 4 + 4, 6, 2, + 1, 3, 5, // 6 + 5, 3, 7, + 0, 1, 4, // 8 + 4, 1, 5, + 2, 6, 3, // 10 + 6, 7, 3, +}; + +static const char* s_shaderPath = NULL; + +static void shaderFilePath(char* _out, const char* _name) +{ + strcpy(_out, s_shaderPath); + strcat(_out, _name); + strcat(_out, ".bin"); +} + +long int fsize(FILE* _file) +{ + long int pos = ftell(_file); + fseek(_file, 0L, SEEK_END); + long int size = ftell(_file); + fseek(_file, pos, SEEK_SET); + return size; +} + +static const bgfx::Memory* load(const char* _filePath) +{ + FILE* file = fopen(_filePath, "rb"); + if (NULL != file) + { + uint32_t size = (uint32_t)fsize(file); + const bgfx::Memory* mem = bgfx::alloc(size+1); + fread(mem->data, 1, size, file); + fclose(file); + mem->data[mem->size-1] = '\0'; + return mem; + } + + return NULL; +} + +static const bgfx::Memory* loadShader(const char* _name, const char* _default = NULL) +{ + char filePath[_MAX_PATH]; + shaderFilePath(filePath, _name); + BX_UNUSED(_default); + return load(filePath); +} + +int _main_(int _argc, char** _argv) +{ + bgfx::init(BX_PLATFORM_WINDOWS, fatalCb); + bgfx::reset(1280, 720); + + // Enable debug text. + bgfx::setDebug(BGFX_DEBUG_TEXT); + + // Set view 0 default viewport. + bgfx::setViewRect(0, 0, 0, 1280, 720); + + // Set view 0 clear state. + bgfx::setViewClear(0 + , BGFX_CLEAR_COLOR_BIT|BGFX_CLEAR_DEPTH_BIT + , 0x303030ff + , 1.0f + , 0 + ); + + // Setup root path for binary shaders. Shader binaries are different + // for each renderer. + switch (bgfx::getRendererType() ) + { + case bgfx::RendererType::Null: + case bgfx::RendererType::Direct3D9: + s_shaderPath = "shaders/dx9/"; + break; + + case bgfx::RendererType::Direct3D11: + s_shaderPath = "shaders/dx11/"; + break; + + case bgfx::RendererType::OpenGL: + s_shaderPath = "shaders/glsl/"; + break; + + case bgfx::RendererType::OpenGLES2: + s_shaderPath = "shaders/gles/"; + break; + } + + // Create vertex stream declaration. + bgfx::VertexDecl s_PosColorDecl; + s_PosColorDecl.begin(); + s_PosColorDecl.add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float); + s_PosColorDecl.add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true); + s_PosColorDecl.end(); + + const bgfx::Memory* mem; + + // Create static vertex buffer. + mem = bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) ); + bgfx::VertexBufferHandle vbh = bgfx::createVertexBuffer(mem, s_PosColorDecl); + + // Create static index buffer. + mem = bgfx::makeRef(s_cubeIndices, sizeof(s_cubeIndices) ); + bgfx::IndexBufferHandle ibh = bgfx::createIndexBuffer(mem); + + // Load vertex shader. + mem = loadShader("vs_cubes"); + bgfx::VertexShaderHandle vsh = bgfx::createVertexShader(mem); + + // Load fragment shader. + mem = loadShader("fs_cubes"); + bgfx::FragmentShaderHandle fsh = bgfx::createFragmentShader(mem); + + // Create program from shaders. + bgfx::ProgramHandle program = bgfx::createProgram(vsh, fsh); + + // We can destroy vertex and fragment shader here since + // their reference is kept inside bgfx after calling createProgram. + // Vertex and fragment shader will be destroyed once program is + // destroyed. + bgfx::destroyVertexShader(vsh); + bgfx::destroyFragmentShader(fsh); + + while (true) + { + // This dummy draw call is here to make sure that view 0 is cleared + // if not other draw calls are submitted to view 0. + bgfx::submit(0); + + // Use debug font to print information about this example. + bgfx::dbgTextClear(); + bgfx::dbgTextPrintf(0, 1, 0x4f, "bgfx/examples/01-cube"); + bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Rendering simple static mesh."); + + float at[3] = { 0.0f, 0.0f, 0.0f }; + float eye[3] = { 0.0f, 0.0f, -35.0f }; + + float view[16]; + float proj[16]; + mtxLookAt(view, eye, at); + mtxProj(proj, 60.0f, 16.0f/9.0f, 0.1f, 100.0f); + + // Set view and projection matrix for view 0. + bgfx::setViewTransform(0, view, proj); + + float time = (float)(bx::getHPCounter()/double(bx::getHPFrequency() ) ); + + // Submit 10x10 cubes. + for (uint32_t yy = 0; yy <= 10; ++yy) + { + for (uint32_t xx = 0; xx <= 10; ++xx) + { + float mtx[16]; + mtxRotateXY(mtx, time + xx*0.21f, time + yy*0.37f); + mtx[12] = -15.0f + float(xx)*3.0f; + mtx[13] = -15.0f + float(yy)*3.0f; + mtx[14] = 0.0f; + + // Set model matrix for rendering. + bgfx::setTransform(mtx); + + // Set vertex and fragment shaders. + bgfx::setProgram(program); + + // Set vertex and index buffer. + bgfx::setVertexBuffer(vbh); + bgfx::setIndexBuffer(ibh); + + // Set render states. + bgfx::setState(BGFX_STATE_RGB_WRITE + |BGFX_STATE_DEPTH_WRITE + |BGFX_STATE_DEPTH_TEST_LESS + ); + + // Submit primitive for rendering to view 0. + bgfx::submit(0); + } + } + + // Advance to next frame. Rendering thread will be kicked to + // process submitted rendering primitives. + bgfx::frame(); + } + + // Cleanup. + bgfx::destroyIndexBuffer(ibh); + bgfx::destroyVertexBuffer(vbh); + bgfx::destroyProgram(program); + + // Shutdown bgfx. + bgfx::shutdown(); + + return 0; +} diff --git a/examples/01-cubes/fs_cubes.sc b/examples/01-cubes/fs_cubes.sc new file mode 100644 index 00000000..13bc3b09 --- /dev/null +++ b/examples/01-cubes/fs_cubes.sc @@ -0,0 +1,11 @@ +$input v_color0 + +/* + * Copyright 2011-2012 Branimir Karadzic. All rights reserved. + * License: http://www.opensource.org/licenses/BSD-2-Clause + */ + +void main() +{ + gl_FragColor = v_color0; +} diff --git a/examples/01-cubes/makefile b/examples/01-cubes/makefile new file mode 100644 index 00000000..ab137879 --- /dev/null +++ b/examples/01-cubes/makefile @@ -0,0 +1,98 @@ +# +# Copyright 2011-2012 Branimir Karadzic. All rights reserved. +# License: http://www.opensource.org/licenses/BSD-2-Clause +# + +ifndef TARGET +.PHONY: all +all:;@echo Usage: make TARGET=# [clean] + @echo TARGET=0 (dx9) + @echo TARGET=2 (dx11) + @echo TARGET=3 (nacl) + @echo TARGET=4 (android) + @echo TARGET=5 (linux) +else +SHADERC="../../../../tools/bin/shaderc" + +EXT=sc + +ifeq ($(TARGET), 0) +VS_FLAGS=--platform windows -p vs_2_0 -O 3 +FS_FLAGS=--platform windows -p ps_2_a -O 3 +SHADER_PATH=shaders/dx9 +else +ifeq ($(TARGET), 1) +VS_FLAGS=--platform windows -p vs_4_0 -O 3 +FS_FLAGS=--platform windows -p ps_4_0 -O 3 +SHADER_PATH=shaders/dx11 +else +ifeq ($(TARGET), 2) +VS_FLAGS=--platform nacl +FS_FLAGS=--platform nacl +SHADER_PATH=shaders/gles +else +ifeq ($(TARGET), 3) +VS_FLAGS=--platform android +FS_FLAGS=--platform android +SHADER_PATH=shaders/gles +else +ifeq ($(TARGET), 4) +VS_FLAGS=--platform linux -p 140 +FS_FLAGS=--platform linux -p 140 +SHADER_PATH=shaders/glsl +endif +endif +endif +endif +endif + +BUILD_OUTPUT_DIR=$(addprefix ./, $(SHADER_PATH)) +BUILD_INTERMEDIATE_DIR=$(addprefix ../../.build/, $(SHADER_PATH)) + +VS_SOURCES=$(wildcard vs_*.$(EXT)) +VS_DEPS=$(addprefix $(BUILD_INTERMEDIATE_DIR)/,$(addsuffix .bin.d, $(basename $(VS_SOURCES)))) + +FS_SOURCES=$(wildcard fs_*.$(EXT)) +FS_DEPS=$(addprefix $(BUILD_INTERMEDIATE_DIR)/,$(addsuffix .bin.d, $(basename $(FS_SOURCES)))) + +CMD_MKDIR=cmd /C "if not exist "$(subst /,\,$(1))" mkdir "$(subst /,\,$(1))"" +CMD_RMDIR=cmd /C "if exist "$(subst /,\,$(1))" rmdir /S /Q "$(subst /,\,$(1))"" + +VS_BIN = $(addprefix $(BUILD_INTERMEDIATE_DIR)/, $(addsuffix .bin, $(basename $(VS_SOURCES)))) +FS_BIN = $(addprefix $(BUILD_INTERMEDIATE_DIR)/, $(addsuffix .bin, $(basename $(FS_SOURCES)))) + +BIN = $(VS_BIN) $(FS_BIN) +ASM = $(VS_ASM) $(FS_ASM) + +$(BUILD_INTERMEDIATE_DIR)/vs_%.bin : vs_%.$(EXT) + @echo [$(<)] + @$(SHADERC) $(VS_FLAGS) --type vertex --depends -o $(@) -f $(<) + @cp $(@) $(BUILD_OUTPUT_DIR)/$(@F) + +$(BUILD_INTERMEDIATE_DIR)/fs_%.bin : fs_%.$(EXT) + @echo [$(<)] + @$(SHADERC) $(FS_FLAGS) --type fragment --depends -o $(@) -f $(<) + @cp $(@) $(BUILD_OUTPUT_DIR)/$(@F) + +.PHONY: all +all: dirs $(BIN) + @echo Target $(SHADER_PATH) + +.PHONY: clean +clean: + @echo Cleaning... + @-rm -vf $(BIN) + @-$(call CMD_RMDIR,$(BUILD_INTERMEDIATE_DIR)) + +.PHONY: dirs +dirs: + @-$(call CMD_MKDIR,$(BUILD_INTERMEDIATE_DIR)) + @-$(call CMD_MKDIR,$(BUILD_OUTPUT_DIR)) + +.PHONY: rebuild +rebuild: clean all + +endif # TARGET + +-include $(VS_DEPS) +-include $(FS_DEPS) diff --git a/examples/01-cubes/shaders/dx11/fs_cubes.bin b/examples/01-cubes/shaders/dx11/fs_cubes.bin new file mode 100644 index 0000000000000000000000000000000000000000..9e1a0eac8154c3694610bdf35b0d104cdb50ccfe GIT binary patch literal 485 zcmZQz_|Jd}E-<=8I61GJaq+g-qB;NOe0*|2XX&+Vj6g*ffCMX$HUZ)uAbtSEB0#Ya zAP#bIbqfIUk%0_|!}9+>!$bxK5ZgC1xhTIlKdnSTBS=%h!zb8BAvhy3CACPwIX|}` zGY819)HAZwvotl*Gd46dWLUj=wP&!qpAS$k6A*I%u>}x=0LVSeU={-dKah5TvOyF` z93;;Vln4%s5AYB64Ds~$V{rEO@ecwT>JKzi2dV~SrUDSd0J51ty&;Z4?yey~J;5F> zK_I&wfS3=6lLQ!;KM4qc?MVe%`AI@%!92ZID1a@G&#rd~e=+^L7U^kiQm_UMzL&9R%AgztL`e zUhM??_e5g0NTS$$SGbz?zMr07^)A+b{5+GFGchhrh}?mD1zdud858LOU*aOQ;``DG zIO@s({S!bEzX$S7#0T+)`3R$y_H@Y)wl@7k3B!=uabN@JsQ_`(#5Q7D+T<3zjhvt< z{{nm$xed^ip9SATZUZ#s7ue7A8XMvra)uw)Z-DEL;E%men5u+viDPUSoUw@Kw8czc zJzrrs9@gj!H6dVM)|#^1{?G{ygPkMmS?#%1uDVsr-P_!5b*w^g@UiV9$Y*l-Onxqx znayUioNL8hTH*WfZb{&^ITszC@y5n6_(c=bk;fG!l@eKX+)BOTtVqGBIyDI$^sAzF zyC3!156h$osQu{&!fklBTZV4ASo?*Vja?Vu*YFjUzFLSx9s(X(chc#boN*s9_uGZ8 zZ$&)w7Hh~E@8O8_xNovAk*4t|^4j|W>N$}Ktt(H}U9(^5ezazkZW6lF$EK&zflBI` rbglNCLUA6yl%BCP9i8qp!d;JIo1ia2LA2(dX}a}dd7x^h79ry3`{`n4GawY6Bt2k M4t^l}$po+s0OB+rS^xk5 literal 0 HcmV?d00001 diff --git a/examples/01-cubes/shaders/dx9/vs_cubes.bin b/examples/01-cubes/shaders/dx9/vs_cubes.bin new file mode 100644 index 0000000000000000000000000000000000000000..d82abbcec8e62596d52c2423fe65957558eae77f GIT binary patch literal 287 zcmZQ%;4h8O%}+_q3Cm0^4=Bpd;$&oCU}0ckWMKOD|KERQ2Imk*Cm99?hHxMTi29%*<2J(B!J-Qcy_GiFYeXOm_y!E7&5b JtmWcj005JuCaeGe literal 0 HcmV?d00001 diff --git a/examples/01-cubes/shaders/gles/vs_cubes.bin b/examples/01-cubes/shaders/gles/vs_cubes.bin new file mode 100644 index 0000000000000000000000000000000000000000..cf0dae0c3ded59173ae67c3de4cb832dcd02c1b4 GIT binary patch literal 310 zcmZ9HF$=;l5QUxZR~)#ggIeqs9L2?&S>yZhd|F_}yo z-0tLN50%p?)x;K0l%Faz1uHLLtZhaH7mLptG?omz5=-S{Y-GuqE)JwGiQ}_?R=JLB zj;&5(Y-P#?yQKi-y`y8}b#JKN_|sRYWW_c4P$H0+vJgTRCsVis_Lsh_LWGP&5Qcev r!8Jzn5c8v5yIW9yfrxn_lMg?5lfUvf`x2)w)X@Hoc|RiH0Wf+3m)K^# literal 0 HcmV?d00001 diff --git a/examples/01-cubes/shaders/glsl/fs_cubes.bin b/examples/01-cubes/shaders/glsl/fs_cubes.bin new file mode 100644 index 0000000000000000000000000000000000000000..59695bd22859a918a6c77d24b81db8c2088c15c6 GIT binary patch literal 83 zcmY!`OD!tS%+FIWG%?`fDoZS?%*;zyC`(N?Q7DT~&d*Xp$N2 literal 0 HcmV?d00001 diff --git a/examples/01-cubes/shaders/glsl/vs_cubes.bin b/examples/01-cubes/shaders/glsl/vs_cubes.bin new file mode 100644 index 0000000000000000000000000000000000000000..5ba478cc471b06e8aa4b33246a1cceea34239a95 GIT binary patch literal 271 zcmZ9H!485j42C`TDVlfz4+J7N;yZZqx=fg)hOK0bAsXM^31SGh=KIs{Z}(o=j@V$9 zrvSa78(WQ9x*U6J#L OTCSfo(<24E0d^k``&s?~ literal 0 HcmV?d00001 diff --git a/examples/01-cubes/varying.def.sc b/examples/01-cubes/varying.def.sc new file mode 100644 index 00000000..a1490b97 --- /dev/null +++ b/examples/01-cubes/varying.def.sc @@ -0,0 +1,4 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); + +vec3 a_position : POSITION; +vec4 a_color : COLOR0; diff --git a/examples/01-cubes/vs_cubes.sc b/examples/01-cubes/vs_cubes.sc new file mode 100644 index 00000000..5bfcd85e --- /dev/null +++ b/examples/01-cubes/vs_cubes.sc @@ -0,0 +1,15 @@ +$input a_position, a_color +$output v_color0 + +/* + * Copyright 2011-2012 Branimir Karadzic. All rights reserved. + * License: http://www.opensource.org/licenses/BSD-2-Clause + */ + +#include "common.sh" + +void main() +{ + gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) ); + v_color0 = a_color; +} diff --git a/examples/02-metaballs/common.sh b/examples/02-metaballs/common.sh new file mode 100644 index 00000000..f8ae0eb6 --- /dev/null +++ b/examples/02-metaballs/common.sh @@ -0,0 +1,6 @@ +/* + * Copyright 2011-2012 Branimir Karadzic. All rights reserved. + * License: http://www.opensource.org/licenses/BSD-2-Clause + */ + +#include "../../src/common.sh" diff --git a/examples/02-metaballs/fs_metaballs.sc b/examples/02-metaballs/fs_metaballs.sc new file mode 100644 index 00000000..b3ed4301 --- /dev/null +++ b/examples/02-metaballs/fs_metaballs.sc @@ -0,0 +1,14 @@ +$input v_normal, v_color0 + +/* + * Copyright 2011-2012 Branimir Karadzic. All rights reserved. + * License: http://www.opensource.org/licenses/BSD-2-Clause + */ + +void main() +{ + vec3 lightDir = vec3(0.0, 0.0, -1.0); + float ndotl = max(dot(normalize(v_normal), lightDir), 0.0); + float spec = pow(ndotl, 30.0); + gl_FragColor = v_color0 * ndotl + spec; +} diff --git a/examples/02-metaballs/makefile b/examples/02-metaballs/makefile new file mode 100644 index 00000000..ab137879 --- /dev/null +++ b/examples/02-metaballs/makefile @@ -0,0 +1,98 @@ +# +# Copyright 2011-2012 Branimir Karadzic. All rights reserved. +# License: http://www.opensource.org/licenses/BSD-2-Clause +# + +ifndef TARGET +.PHONY: all +all:;@echo Usage: make TARGET=# [clean] + @echo TARGET=0 (dx9) + @echo TARGET=2 (dx11) + @echo TARGET=3 (nacl) + @echo TARGET=4 (android) + @echo TARGET=5 (linux) +else +SHADERC="../../../../tools/bin/shaderc" + +EXT=sc + +ifeq ($(TARGET), 0) +VS_FLAGS=--platform windows -p vs_2_0 -O 3 +FS_FLAGS=--platform windows -p ps_2_a -O 3 +SHADER_PATH=shaders/dx9 +else +ifeq ($(TARGET), 1) +VS_FLAGS=--platform windows -p vs_4_0 -O 3 +FS_FLAGS=--platform windows -p ps_4_0 -O 3 +SHADER_PATH=shaders/dx11 +else +ifeq ($(TARGET), 2) +VS_FLAGS=--platform nacl +FS_FLAGS=--platform nacl +SHADER_PATH=shaders/gles +else +ifeq ($(TARGET), 3) +VS_FLAGS=--platform android +FS_FLAGS=--platform android +SHADER_PATH=shaders/gles +else +ifeq ($(TARGET), 4) +VS_FLAGS=--platform linux -p 140 +FS_FLAGS=--platform linux -p 140 +SHADER_PATH=shaders/glsl +endif +endif +endif +endif +endif + +BUILD_OUTPUT_DIR=$(addprefix ./, $(SHADER_PATH)) +BUILD_INTERMEDIATE_DIR=$(addprefix ../../.build/, $(SHADER_PATH)) + +VS_SOURCES=$(wildcard vs_*.$(EXT)) +VS_DEPS=$(addprefix $(BUILD_INTERMEDIATE_DIR)/,$(addsuffix .bin.d, $(basename $(VS_SOURCES)))) + +FS_SOURCES=$(wildcard fs_*.$(EXT)) +FS_DEPS=$(addprefix $(BUILD_INTERMEDIATE_DIR)/,$(addsuffix .bin.d, $(basename $(FS_SOURCES)))) + +CMD_MKDIR=cmd /C "if not exist "$(subst /,\,$(1))" mkdir "$(subst /,\,$(1))"" +CMD_RMDIR=cmd /C "if exist "$(subst /,\,$(1))" rmdir /S /Q "$(subst /,\,$(1))"" + +VS_BIN = $(addprefix $(BUILD_INTERMEDIATE_DIR)/, $(addsuffix .bin, $(basename $(VS_SOURCES)))) +FS_BIN = $(addprefix $(BUILD_INTERMEDIATE_DIR)/, $(addsuffix .bin, $(basename $(FS_SOURCES)))) + +BIN = $(VS_BIN) $(FS_BIN) +ASM = $(VS_ASM) $(FS_ASM) + +$(BUILD_INTERMEDIATE_DIR)/vs_%.bin : vs_%.$(EXT) + @echo [$(<)] + @$(SHADERC) $(VS_FLAGS) --type vertex --depends -o $(@) -f $(<) + @cp $(@) $(BUILD_OUTPUT_DIR)/$(@F) + +$(BUILD_INTERMEDIATE_DIR)/fs_%.bin : fs_%.$(EXT) + @echo [$(<)] + @$(SHADERC) $(FS_FLAGS) --type fragment --depends -o $(@) -f $(<) + @cp $(@) $(BUILD_OUTPUT_DIR)/$(@F) + +.PHONY: all +all: dirs $(BIN) + @echo Target $(SHADER_PATH) + +.PHONY: clean +clean: + @echo Cleaning... + @-rm -vf $(BIN) + @-$(call CMD_RMDIR,$(BUILD_INTERMEDIATE_DIR)) + +.PHONY: dirs +dirs: + @-$(call CMD_MKDIR,$(BUILD_INTERMEDIATE_DIR)) + @-$(call CMD_MKDIR,$(BUILD_OUTPUT_DIR)) + +.PHONY: rebuild +rebuild: clean all + +endif # TARGET + +-include $(VS_DEPS) +-include $(FS_DEPS) diff --git a/examples/02-metaballs/metaballs.cpp b/examples/02-metaballs/metaballs.cpp new file mode 100644 index 00000000..269368f2 --- /dev/null +++ b/examples/02-metaballs/metaballs.cpp @@ -0,0 +1,785 @@ +/* + * Copyright 2011-2012 Branimir Karadzic. All rights reserved. + * License: http://www.opensource.org/licenses/BSD-2-Clause + */ + +#include +#include +#include +#include "../common/dbg.h" +#include "../common/math.h" + +#include +#include + +bgfx::VertexDecl s_PosNormalColorDecl; + +void fatalCb(bgfx::Fatal::Enum _code, const char* _str) +{ + DBG("%x: %s", _code, _str); +} + +struct PosNormalColorVertex +{ + float m_pos[3]; + float m_normal[3]; + uint32_t m_abgr; +}; + +struct Grid +{ + Grid() + : m_val(0.0f) + { + m_normal[0] = 0.0f; + m_normal[1] = 0.0f; + m_normal[2] = 0.0f; + } + + float m_val; + float m_normal[3]; +}; + +static const char* s_shaderPath = NULL; + +static void shaderFilePath(char* _out, const char* _name) +{ + strcpy(_out, s_shaderPath); + strcat(_out, _name); + strcat(_out, ".bin"); +} + +long int fsize(FILE* _file) +{ + long int pos = ftell(_file); + fseek(_file, 0L, SEEK_END); + long int size = ftell(_file); + fseek(_file, pos, SEEK_SET); + return size; +} + +static const bgfx::Memory* load(const char* _filePath) +{ + FILE* file = fopen(_filePath, "rb"); + if (NULL != file) + { + uint32_t size = (uint32_t)fsize(file); + const bgfx::Memory* mem = bgfx::alloc(size+1); + fread(mem->data, 1, size, file); + fclose(file); + mem->data[mem->size-1] = '\0'; + return mem; + } + + return NULL; +} + +static const bgfx::Memory* loadShader(const char* _name, const char* _default = NULL) +{ + char filePath[_MAX_PATH]; + shaderFilePath(filePath, _name); + BX_UNUSED(_default); + return load(filePath); +} + +// Triangulation tables taken from: +// http://paulbourke.net/geometry/polygonise/ + +static const uint16_t s_edges[256] = +{ + 0x000, 0x109, 0x203, 0x30a, 0x406, 0x50f, 0x605, 0x70c, + 0x80c, 0x905, 0xa0f, 0xb06, 0xc0a, 0xd03, 0xe09, 0xf00, + 0x190, 0x099, 0x393, 0x29a, 0x596, 0x49f, 0x795, 0x69c, + 0x99c, 0x895, 0xb9f, 0xa96, 0xd9a, 0xc93, 0xf99, 0xe90, + 0x230, 0x339, 0x033, 0x13a, 0x636, 0x73f, 0x435, 0x53c, + 0xa3c, 0xb35, 0x83f, 0x936, 0xe3a, 0xf33, 0xc39, 0xd30, + 0x3a0, 0x2a9, 0x1a3, 0x0aa, 0x7a6, 0x6af, 0x5a5, 0x4ac, + 0xbac, 0xaa5, 0x9af, 0x8a6, 0xfaa, 0xea3, 0xda9, 0xca0, + 0x460, 0x569, 0x663, 0x76a, 0x66 , 0x16f, 0x265, 0x36c, + 0xc6c, 0xd65, 0xe6f, 0xf66, 0x86a, 0x963, 0xa69, 0xb60, + 0x5f0, 0x4f9, 0x7f3, 0x6fa, 0x1f6, 0x0ff, 0x3f5, 0x2fc, + 0xdfc, 0xcf5, 0xfff, 0xef6, 0x9fa, 0x8f3, 0xbf9, 0xaf0, + 0x650, 0x759, 0x453, 0x55a, 0x256, 0x35f, 0x055, 0x15c, + 0xe5c, 0xf55, 0xc5f, 0xd56, 0xa5a, 0xb53, 0x859, 0x950, + 0x7c0, 0x6c9, 0x5c3, 0x4ca, 0x3c6, 0x2cf, 0x1c5, 0x0cc, + 0xfcc, 0xec5, 0xdcf, 0xcc6, 0xbca, 0xac3, 0x9c9, 0x8c0, + 0x8c0, 0x9c9, 0xac3, 0xbca, 0xcc6, 0xdcf, 0xec5, 0xfcc, + 0x0cc, 0x1c5, 0x2cf, 0x3c6, 0x4ca, 0x5c3, 0x6c9, 0x7c0, + 0x950, 0x859, 0xb53, 0xa5a, 0xd56, 0xc5f, 0xf55, 0xe5c, + 0x15c, 0x55 , 0x35f, 0x256, 0x55a, 0x453, 0x759, 0x650, + 0xaf0, 0xbf9, 0x8f3, 0x9fa, 0xef6, 0xfff, 0xcf5, 0xdfc, + 0x2fc, 0x3f5, 0x0ff, 0x1f6, 0x6fa, 0x7f3, 0x4f9, 0x5f0, + 0xb60, 0xa69, 0x963, 0x86a, 0xf66, 0xe6f, 0xd65, 0xc6c, + 0x36c, 0x265, 0x16f, 0x066, 0x76a, 0x663, 0x569, 0x460, + 0xca0, 0xda9, 0xea3, 0xfaa, 0x8a6, 0x9af, 0xaa5, 0xbac, + 0x4ac, 0x5a5, 0x6af, 0x7a6, 0x0aa, 0x1a3, 0x2a9, 0x3a0, + 0xd30, 0xc39, 0xf33, 0xe3a, 0x936, 0x83f, 0xb35, 0xa3c, + 0x53c, 0x435, 0x73f, 0x636, 0x13a, 0x033, 0x339, 0x230, + 0xe90, 0xf99, 0xc93, 0xd9a, 0xa96, 0xb9f, 0x895, 0x99c, + 0x69c, 0x795, 0x49f, 0x596, 0x29a, 0x393, 0x099, 0x190, + 0xf00, 0xe09, 0xd03, 0xc0a, 0xb06, 0xa0f, 0x905, 0x80c, + 0x70c, 0x605, 0x50f, 0x406, 0x30a, 0x203, 0x109, 0x000, +}; + +static const int8_t s_indices[256][16] = +{ + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1 }, + { 8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1 }, + { 3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1 }, + { 4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1 }, + { 4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1 }, + { 9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1 }, + { 10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1 }, + { 5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1 }, + { 5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1 }, + { 8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1 }, + { 2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1 }, + { 2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1 }, + { 11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1 }, + { 5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1 }, + { 11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1 }, + { 11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1 }, + { 2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1 }, + { 6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1 }, + { 3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1 }, + { 6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1 }, + { 6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1 }, + { 8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1 }, + { 7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1 }, + { 3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1 }, + { 0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1 }, + { 9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1 }, + { 8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1 }, + { 5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1 }, + { 0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1 }, + { 6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1 }, + { 10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1 }, + { 1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1 }, + { 0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1 }, + { 3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1 }, + { 6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1 }, + { 9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1 }, + { 8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1 }, + { 3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1 }, + { 10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1 }, + { 10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1 }, + { 2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1 }, + { 7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1 }, + { 2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1 }, + { 1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1 }, + { 11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1 }, + { 8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, -1 }, + { 0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1 }, + { 7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1 }, + { 7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1 }, + { 10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1 }, + { 0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1 }, + { 7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1 }, + { 6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1 }, + { 4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1 }, + { 10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1 }, + { 8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1 }, + { 1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1 }, + { 10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1 }, + { 10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1 }, + { 9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1 }, + { 7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1 }, + { 3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1 }, + { 7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1 }, + { 3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1 }, + { 6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1 }, + { 9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1 }, + { 1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1 }, + { 4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1 }, + { 7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1 }, + { 6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1 }, + { 0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1 }, + { 6, 11, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1 }, + { 0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1 }, + { 11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1 }, + { 6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1 }, + { 5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1 }, + { 9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1 }, + { 1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1 }, + { 10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, -1, -1, -1, -1 }, + { 0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1 }, + { 11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1 }, + { 9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1 }, + { 7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1 }, + { 2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1 }, + { 9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1 }, + { 9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1 }, + { 1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1 }, + { 0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1 }, + { 10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1 }, + { 2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1 }, + { 0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1 }, + { 0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1 }, + { 9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1 }, + { 5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, -1 }, + { 5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1 }, + { 8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, -1, -1, -1, -1 }, + { 9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1 }, + { 1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1 }, + { 3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1 }, + { 4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1 }, + { 9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1 }, + { 11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1 }, + { 2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1 }, + { 9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1 }, + { 3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1 }, + { 1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1 }, + { 4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1 }, + { 0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1 }, + { 1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 3, 8, -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 }, +}; + +static const float s_cube[8][3] = +{ + { 0.0f, 1.0f, 1.0f }, // 0 + { 1.0f, 1.0f, 1.0f }, // 1 + { 1.0f, 1.0f, 0.0f }, // 2 + { 0.0f, 1.0f, 0.0f }, // 3 + { 0.0f, 0.0f, 1.0f }, // 4 + { 1.0f, 0.0f, 1.0f }, // 5 + { 1.0f, 0.0f, 0.0f }, // 6 + { 0.0f, 0.0f, 0.0f }, // 7 +}; + +float vertLerp(float* __restrict _result, float _iso, uint32_t _idx0, float _v0, uint32_t _idx1, float _v1) +{ + const float* __restrict edge0 = s_cube[_idx0]; + const float* __restrict edge1 = s_cube[_idx1]; + + if (fabsf(_iso-_v1) < 0.00001f) + { + _result[0] = edge1[0]; + _result[1] = edge1[1]; + _result[2] = edge1[2]; + return 1.0f; + } + + if (fabsf(_iso-_v0) < 0.00001f + || fabsf(_v0-_v1) < 0.00001f) + { + _result[0] = edge0[0]; + _result[1] = edge0[1]; + _result[2] = edge0[2]; + return 0.0f; + } + + float lerp = (_iso - _v0) / (_v1 - _v0); + _result[0] = edge0[0] + lerp * (edge1[0] - edge0[0]); + _result[1] = edge0[1] + lerp * (edge1[1] - edge0[1]); + _result[2] = edge0[2] + lerp * (edge1[2] - edge0[2]); + + return lerp; +} + +uint32_t triangulate(uint8_t* _result, uint32_t _stride, const float* __restrict _rgb, const float* __restrict _xyz, const Grid* _val[8], float _iso) +{ + uint8_t cubeindex = 0; + cubeindex |= (_val[0]->m_val < _iso) ? 0x01 : 0; + cubeindex |= (_val[1]->m_val < _iso) ? 0x02 : 0; + cubeindex |= (_val[2]->m_val < _iso) ? 0x04 : 0; + cubeindex |= (_val[3]->m_val < _iso) ? 0x08 : 0; + cubeindex |= (_val[4]->m_val < _iso) ? 0x10 : 0; + cubeindex |= (_val[5]->m_val < _iso) ? 0x20 : 0; + cubeindex |= (_val[6]->m_val < _iso) ? 0x40 : 0; + cubeindex |= (_val[7]->m_val < _iso) ? 0x80 : 0; + + if (0 == s_edges[cubeindex]) + { + return 0; + } + + float verts[12][6]; + uint16_t flags = s_edges[cubeindex]; + + for (uint32_t ii = 0; ii < 12; ++ii) + { + if (flags & (1<m_val, idx1, _val[idx1]->m_val); + + const float* na = _val[idx0]->m_normal; + const float* nb = _val[idx1]->m_normal; + vertex[3] = na[0] + lerp * (nb[0] - na[0]); + vertex[4] = na[1] + lerp * (nb[1] - na[1]); + vertex[5] = na[2] + lerp * (nb[2] - na[2]); + } + } + + float dr = _rgb[3] - _rgb[0]; + float dg = _rgb[4] - _rgb[1]; + float db = _rgb[5] - _rgb[2]; + + uint32_t num = 0; + const int8_t* indices = s_indices[cubeindex]; + for (uint32_t ii = 0; indices[ii] != -1; ++ii) + { + const float* vertex = verts[indices[ii] ]; + + float* xyz = (float*)_result; + xyz[0] = _xyz[0] + vertex[0]; + xyz[1] = _xyz[1] + vertex[1]; + xyz[2] = _xyz[2] + vertex[2]; + + xyz[3] = vertex[3]; + xyz[4] = vertex[4]; + xyz[5] = vertex[5]; + + uint32_t rr = uint8_t( (_rgb[0] + vertex[0]*dr)*255.0f); + uint32_t gg = uint8_t( (_rgb[1] + vertex[1]*dg)*255.0f); + uint32_t bb = uint8_t( (_rgb[2] + vertex[2]*db)*255.0f); + + uint32_t* abgr = (uint32_t*)&_result[24]; + *abgr = 0xff000000 + | (bb<<16) + | (gg<<8) + | rr + ; + + _result += _stride; + ++num; + } + + return num; +} + +int _main_(int _argc, char** _argv) +{ + bgfx::init(BX_PLATFORM_WINDOWS, fatalCb); + bgfx::reset(1280, 720); + + // Enable debug text. + bgfx::setDebug(BGFX_DEBUG_TEXT); + + // Set view 0 default viewport. + bgfx::setViewRect(0, 0, 0, 1280, 720); + + // Set view 0 clear state. + bgfx::setViewClear(0 + , BGFX_CLEAR_COLOR_BIT|BGFX_CLEAR_DEPTH_BIT + , 0x303030ff + , 1.0f + , 0 + ); + + // Setup root path for binary shaders. Shader binaries are different + // for each renderer. + switch (bgfx::getRendererType() ) + { + case bgfx::RendererType::Null: + case bgfx::RendererType::Direct3D9: + s_shaderPath = "shaders/dx9/"; + break; + + case bgfx::RendererType::Direct3D11: + s_shaderPath = "shaders/dx11/"; + break; + + case bgfx::RendererType::OpenGL: + s_shaderPath = "shaders/glsl/"; + break; + + case bgfx::RendererType::OpenGLES2: + s_shaderPath = "shaders/gles/"; + break; + } + + // Create vertex stream declaration. + s_PosNormalColorDecl.begin(); + s_PosNormalColorDecl.add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float); + s_PosNormalColorDecl.add(bgfx::Attrib::Normal, 3, bgfx::AttribType::Float); + s_PosNormalColorDecl.add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true); + s_PosNormalColorDecl.end(); + + const bgfx::Memory* mem; + + // Load vertex shader. + mem = loadShader("vs_metaballs"); + bgfx::VertexShaderHandle vsh = bgfx::createVertexShader(mem); + + // Load fragment shader. + mem = loadShader("fs_metaballs"); + bgfx::FragmentShaderHandle fsh = bgfx::createFragmentShader(mem); + + // Create program from shaders. + bgfx::ProgramHandle program = bgfx::createProgram(vsh, fsh); + + // We can destroy vertex and fragment shader here since + // their reference is kept inside bgfx after calling createProgram. + // Vertex and fragment shader will be destroyed once program is + // destroyed. + bgfx::destroyVertexShader(vsh); + bgfx::destroyFragmentShader(fsh); + +#define DIMS 32 + + Grid* grid = new Grid[DIMS*DIMS*DIMS]; + const uint32_t ypitch = DIMS; + const uint32_t zpitch = DIMS*DIMS; + const float invdim = 1.0f/float(DIMS-1); + + while (true) + { + // This dummy draw call is here to make sure that view 0 is cleared + // if not other draw calls are submitted to view 0. + bgfx::submit(0); + + int64_t now = bx::getHPCounter(); + static int64_t last = now; + const int64_t frameTime = now - last; + last = now; + const double freq = double(bx::getHPFrequency() ); + const double toMs = 1000.0/freq; + + // Use debug font to print information about this example. + bgfx::dbgTextClear(); + bgfx::dbgTextPrintf(0, 1, 0x4f, "bgfx/examples/02-metaball"); + bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Rendering with transient buffers."); + + float at[3] = { 0.0f, 0.0f, 0.0f }; + float eye[3] = { 0.0f, 0.0f, -50.0f }; + + float view[16]; + float proj[16]; + mtxLookAt(view, eye, at); + mtxProj(proj, 60.0f, 16.0f/9.0f, 0.1f, 100.0f); + + // Set view and projection matrix for view 0. + bgfx::setViewTransform(0, view, proj); + + float time = (float)(bx::getHPCounter()/double(bx::getHPFrequency() ) ); + + // Stats. + uint32_t numVertices = 0; + int64_t profUpdate; + int64_t profNormal; + int64_t profTriangulate; + + // Allocate 32K vertices in transient vertex buffer. + uint32_t maxVertices = (32<<10); + const bgfx::TransientVertexBuffer* tvb = bgfx::allocTransientVertexBuffer(maxVertices, s_PosNormalColorDecl); + + // If there is no enough space in transient vertex buffer alloc will return NULL. + if (NULL != tvb) + { + const uint32_t numSpheres = 16; + float sphere[numSpheres][4]; + for (uint32_t ii = 0; ii < numSpheres; ++ii) + { + sphere[ii][0] = sin(time*(ii*0.21f)+ii*0.37f) * (DIMS * 0.5f - 8.0f); + sphere[ii][1] = sin(time*(ii*0.37f)+ii*0.67f) * (DIMS * 0.5f - 8.0f); + sphere[ii][2] = cos(time*(ii*0.11f)+ii*0.13f) * (DIMS * 0.5f - 8.0f); + sphere[ii][3] = 1.0f/(2.0f + (sin(time*(ii*0.13f) )*0.5f+0.5f)*2.0f); + } + + profUpdate = bx::getHPCounter(); + + for (uint32_t zz = 0; zz < DIMS; ++zz) + { + for (uint32_t yy = 0; yy < DIMS; ++yy) + { + uint32_t offset = (zz*DIMS+yy)*DIMS; + + for (uint32_t xx = 0; xx < DIMS; ++xx) + { + uint32_t xoffset = offset + xx; + + float dist = 0.0f; + float prod = 1.0f; + for (uint32_t ii = 0; ii < numSpheres; ++ii) + { + const float* pos = sphere[ii]; + float dx = pos[0] - (-DIMS*0.5f + float(xx) ); + float dy = pos[1] - (-DIMS*0.5f + float(yy) ); + float dz = pos[2] - (-DIMS*0.5f + float(zz) ); + float invr = pos[3]; + float dot = dx*dx + dy*dy + dz*dz; + dot *= invr*invr; + + dist *= dot; + dist += prod; + prod *= dot; + } + + grid[xoffset].m_val = dist / prod - 1.0f; + } + } + } + + profUpdate = bx::getHPCounter() - profUpdate; + + profNormal = bx::getHPCounter(); + + for (uint32_t zz = 1; zz < DIMS-1; ++zz) + { + for (uint32_t yy = 1; yy < DIMS-1; ++yy) + { + uint32_t offset = (zz*DIMS+yy)*DIMS; + + for (uint32_t xx = 1; xx < DIMS-1; ++xx) + { + uint32_t xoffset = offset + xx; + + float normal[3] = + { + grid[xoffset-1 ].m_val - grid[xoffset+1 ].m_val, + grid[xoffset-ypitch].m_val - grid[xoffset+ypitch].m_val, + grid[xoffset-zpitch].m_val - grid[xoffset+zpitch].m_val, + }; + + vec3Norm(grid[xoffset].m_normal, normal); + } + } + } + + profNormal = bx::getHPCounter() - profNormal; + + profTriangulate = bx::getHPCounter(); + + PosNormalColorVertex* vertex = (PosNormalColorVertex*)tvb->data; + + for (uint32_t zz = 0; zz < DIMS-1 && numVertices+12 < maxVertices; ++zz) + { + float rgb[6]; + rgb[2] = zz*invdim; + rgb[5] = (zz+1)*invdim; + + for (uint32_t yy = 0; yy < DIMS-1 && numVertices+12 < maxVertices; ++yy) + { + uint32_t offset = (zz*DIMS+yy)*DIMS; + + rgb[1] = yy*invdim; + rgb[4] = (yy+1)*invdim; + + for (uint32_t xx = 0; xx < DIMS-1 && numVertices+12 < maxVertices; ++xx) + { + uint32_t xoffset = offset + xx; + + rgb[0] = xx*invdim; + rgb[3] = (xx+1)*invdim; + + float pos[3] = + { + -DIMS*0.5f + float(xx), + -DIMS*0.5f + float(yy), + -DIMS*0.5f + float(zz) + }; + + const Grid* val[8] = { + &grid[xoffset+zpitch+ypitch ], + &grid[xoffset+zpitch+ypitch+1], + &grid[xoffset+ypitch+1 ], + &grid[xoffset+ypitch ], + &grid[xoffset+zpitch ], + &grid[xoffset+zpitch+1 ], + &grid[xoffset+1 ], + &grid[xoffset ], + }; + + uint32_t num = triangulate( (uint8_t*)vertex, s_PosNormalColorDecl.m_stride, rgb, pos, val, 0.5f); + vertex += num; + numVertices += num; + } + } + } + + profTriangulate = bx::getHPCounter() - profTriangulate; + + float mtx[16]; + mtxRotateXY(mtx, time*0.67f, time); + + // Set model matrix for rendering. + bgfx::setTransform(mtx); + + // Set vertex and fragment shaders. + bgfx::setProgram(program); + + // Set vertex and index buffer. + bgfx::setVertexBuffer(tvb, numVertices); + + // Set render states. + bgfx::setState(BGFX_STATE_RGB_WRITE + |BGFX_STATE_DEPTH_WRITE + |BGFX_STATE_DEPTH_TEST_LESS + ); + + // Submit primitive for rendering to view 0. + bgfx::submit(0); + } + + // Display stats. + bgfx::dbgTextPrintf(1, 4, 0x0f, "Num vertices: %5d (%6.4f%%)", numVertices, float(numVertices)/maxVertices * 100); + bgfx::dbgTextPrintf(1, 5, 0x0f, " Update: % 7.3f[ms]", double(profUpdate)*toMs); + bgfx::dbgTextPrintf(1, 6, 0x0f, "Calc normals: % 7.3f[ms]", double(profNormal)*toMs); + bgfx::dbgTextPrintf(1, 7, 0x0f, " Triangulate: % 7.3f[ms]", double(profTriangulate)*toMs); + bgfx::dbgTextPrintf(1, 8, 0x0f, " Frame: % 7.3f[ms]", double(frameTime)*toMs); + + // Advance to next frame. Rendering thread will be kicked to + // process submitted rendering primitives. + bgfx::frame(); + } + + delete [] grid; + + // Cleanup. + bgfx::destroyProgram(program); + + // Shutdown bgfx. + bgfx::shutdown(); + + return 0; +} diff --git a/examples/02-metaballs/shaders/dx11/fs_metaballs.bin b/examples/02-metaballs/shaders/dx11/fs_metaballs.bin new file mode 100644 index 0000000000000000000000000000000000000000..ea4bf6ec66e21bd3bee07d768c7554e6e666e63b GIT binary patch literal 729 zcmb_ZT}lFB6uoJthTz~^5i#`A4`FBu84->%{(H_lxhlU#CysspqpxxAOb3 z;++u1@Gbza06{DOjR=uxRBIj9Lb1hs)phBOi222MFq=M3@8;^Bxvw@_R!g-;*SEu& zs!#79#uJcIHebq?iuvquE|(+6ahg`WJwa_0NC47<=V6T_4fFxlI9O*Mj}r}92!eHt zN@)~W-K&nUns!sP$*%TvAxwjG(Gn&(0-lG+;~wm(0y4s$=wWMSy=r4nt6`Wa6qJ#u z12+mqXNuzWV7>rnZ_E>2s0tX-2;;B^zTz2vB5E1GM!pUFa(T8M&E;&&S7cUnmvbY T65u^K`2XQrmLc_}@L%K)C8I>J literal 0 HcmV?d00001 diff --git a/examples/02-metaballs/shaders/dx11/vs_metaballs.bin b/examples/02-metaballs/shaders/dx11/vs_metaballs.bin new file mode 100644 index 0000000000000000000000000000000000000000..928c69660bd4577d852f06e63a62d419081132d8 GIT binary patch literal 1281 zcma)6&u}-3r}8vSpiHLNGA_YN^F+vu4}cD={W| zGVwp~*t$H|Xh;qQBYzCUb#`1W^}LZOL9bOGyq_)h>< znka-@z@6HL`2`sB>Tq6fz)AZzqt8ShfXAFKFy^w|+VuRLzIRCD@tC<;cn=;50dY>n z24c2?%5|&;a&|Vs?*bnoH{g(Zimw6>ksEL};Xmbis#cP3Gp6t)zXxoz06*@&#Z+mW zp$uvGh{ZTho7D7WEEC&C44#z7-cyA8p8Rhe+W4n!3 z!){X3cDB|ns@j(AprMU^9ys&;xE^C{I8HC%jIl8u^@G4cgv1ZVqkdT3cK5VpYok-O zZKozp-FnS=j{*j&^ufiuXyzv!5z$q67cGK9A<8A@ejHDMbB|XzGu2}b??FcR!Pn z>j@HiSflw)$CC)Z^GJ{E3(nsM))R5lXL{tlg|`A8>q+v~@Yf(SF>l7Rd4g+nTkEYO U)sy*bOK`b+&IRZAJa%sWe<|;mB>(^b literal 0 HcmV?d00001 diff --git a/examples/02-metaballs/shaders/dx9/fs_metaballs.bin b/examples/02-metaballs/shaders/dx9/fs_metaballs.bin new file mode 100644 index 0000000000000000000000000000000000000000..32005c6a0e5b6eb943efc0bc1ece71f0bfb4851b GIT binary patch literal 261 zcmXv}I}U6ido rL4&9!vFv-*L&_OxDW@w@@n4;h7C2OWfXpP^l!}vmwAbi3(f#rZ>>Dy< literal 0 HcmV?d00001 diff --git a/examples/02-metaballs/shaders/dx9/vs_metaballs.bin b/examples/02-metaballs/shaders/dx9/vs_metaballs.bin new file mode 100644 index 0000000000000000000000000000000000000000..22f00d28371c1b8dade511a62c536df60b0c0faf GIT binary patch literal 397 zcmZ8cJ5Iwu6r5cftkC!ZNVo(F3mZ|mgiufzDI$al$%m8(KMy*bBs zC(cbc51sk*GEQ=5s@AV*Mi97u;071Id+vE2j(W=yuq%zZPbmg`KrD&(px3n7v#11` zn)~tUx~TzF%;m_*j{EL7{zcFI=y!vBuVYbvLCsOe;%rm%Uw=9R)^@++dL6z|%HB}B IYFj$~0^J5s`Tzg` literal 0 HcmV?d00001 diff --git a/examples/02-metaballs/shaders/gles/fs_metaballs.bin b/examples/02-metaballs/shaders/gles/fs_metaballs.bin new file mode 100644 index 0000000000000000000000000000000000000000..75281d442686c1e8138cc3404e0d0a72c2af5b71 GIT binary patch literal 275 zcmYk0%MOAt5Jg@0D{kVZRa6Y_h%2LR-1z~dfdZ32ODe%v{C5Wt43&^rEtA;kRgN9GPD(-icP@?tY1QrY?(Ti> zZh^W|8eU$-^BZfuD)EHQ!U5|;3)(mtI9n)Np@!8ejj_(6cD{i|h8=XGag{RfsLp%u zj{I(yvtIfO+8TOQ?w}W?GtRHCH~pX(^J}a1y3EKf@Dja*8$6J}+OS&J6)-BlgLkddr&^z~i4|Hdw`z p6Qh`U7m>HV;uZPCn_fZt>B<@EA5mn(M#QA2#M!7YsHusl}v+c&cO_)bQ0SnN0;-k`?VsCWrGQrBt(oo4o1JAR?L`@l zS)Ky4S{;mSun{iDwrETx>z$I + +inline void vec3Add(float* __restrict _result, const float* __restrict _a, const float* __restrict _b) +{ + _result[0] = _a[0] + _b[0]; + _result[1] = _a[1] + _b[1]; + _result[2] = _a[2] + _b[2]; +} + +inline void vec3Sub(float* __restrict _result, const float* __restrict _a, const float* __restrict _b) +{ + _result[0] = _a[0] - _b[0]; + _result[1] = _a[1] - _b[1]; + _result[2] = _a[2] - _b[2]; +} + +inline void vec3Mul(float* __restrict _result, const float* __restrict _a, const float* __restrict _b) +{ + _result[0] = _a[0] * _b[0]; + _result[1] = _a[1] * _b[1]; + _result[2] = _a[2] * _b[2]; +} + +inline float vec3Dot(const float* __restrict _a, const float* __restrict _b) +{ + return _a[0]*_b[0] + _a[1]*_b[1] + _a[2]*_b[2]; +} + +inline void vec3Cross(float* __restrict _result, const float* __restrict _a, const float* __restrict _b) +{ + _result[0] = _a[1]*_b[2] - _a[2]*_b[1]; + _result[1] = _a[2]*_b[0] - _a[0]*_b[2]; + _result[2] = _a[0]*_b[1] - _a[1]*_b[0]; +} + +inline void vec3Norm(float* __restrict _result, const float* __restrict _a) +{ + float scale = 1.0f/sqrtf(vec3Dot(_a, _a) ); + _result[0] = _a[0] * scale; + _result[1] = _a[1] * scale; + _result[2] = _a[2] * scale; +} + +inline void mtxIdentity(float* _result) +{ + memset(_result, 0, sizeof(float)*16); + _result[0] = _result[5] = _result[10] = _result[15] = 1.0f; +} + +inline void mtxLookAt(float* __restrict _result, const float* __restrict _eye, const float* __restrict _at) +{ + float tmp[4]; + vec3Sub(tmp, _at, _eye); + + float view[4]; + vec3Norm(view, tmp); + + float up[3] = { 0.0f, 1.0f, 0.0f }; + vec3Cross(tmp, up, view); + + float right[4]; + vec3Norm(right, tmp); + + vec3Cross(up, view, right); + + memset(_result, 0, sizeof(float)*16); + _result[ 0] = right[0]; + _result[ 1] = up[0]; + _result[ 2] = view[0]; + + _result[ 4] = right[1]; + _result[ 5] = up[1]; + _result[ 6] = view[1]; + + _result[ 8] = right[2]; + _result[ 9] = up[2]; + _result[10] = view[2]; + + _result[12] = -vec3Dot(right, _eye); + _result[13] = -vec3Dot(up, _eye); + _result[14] = -vec3Dot(view, _eye); + _result[15] = 1.0f; +} + +inline void mtxProj(float* _result, float _fovy, float _aspect, float _near, float _far) +{ + float height = 1.0f/tanf(_fovy*( (float)M_PI/180.0f)*0.5f); + float width = height * 1.0f/_aspect; + float aa = _far/(_far-_near); + float bb = -_near * aa; + + memset(_result, 0, sizeof(float)*16); + _result[0] = width; + _result[5] = height; + _result[10] = aa; + _result[11] = 1.0f; + _result[14] = bb; +} + +void mtxRotateXY(float* _result, float _ax, float _ay) +{ + float sinx = sinf(_ax); + float cosx = cosf(_ax); + float siny = sinf(_ay); + float cosy = cosf(_ay); + + memset(_result, 0, sizeof(float)*16); + _result[ 0] = cosy; + _result[ 2] = -siny; + _result[ 4] = -sinx * siny; + _result[ 5] = cosx; + _result[ 6] = -sinx * cosy; + _result[ 8] = cosx * siny; + _result[ 9] = sinx; + _result[10] = cosx * cosy; + _result[15] = 1.0f; +} + +#endif // __MATH_H__ diff --git a/examples/helloworld/helloworld.cpp b/examples/helloworld/helloworld.cpp deleted file mode 100644 index bec34265..00000000 --- a/examples/helloworld/helloworld.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2011-2012 Branimir Karadzic. All rights reserved. - * License: http://www.opensource.org/licenses/BSD-2-Clause - */ - -#include -#include -#include "../common/dbg.h" - -void fatalCb(bgfx::Fatal::Enum _code, const char* _str) -{ - DBG("%x: %s", _code, _str); -} - -int _main_(int _argc, char** _argv) -{ - bgfx::init(BX_PLATFORM_WINDOWS, fatalCb); - bgfx::reset(1280, 720); - - bgfx::setDebug(BGFX_DEBUG_TEXT); - - bgfx::setViewRect(0, 0, 0, 1280, 720); - bgfx::setViewClear(0, BGFX_CLEAR_COLOR_BIT|BGFX_CLEAR_DEPTH_BIT, 0x000000ff, 0.0f, 0); - - while (true) - { - bgfx::submit(0); - - bgfx::dbgTextClear(); - bgfx::dbgTextPrintf(0, 1, 0x4f, "BGFX: Hello, World!"); - - bgfx::dbgTextPrintf(0, 2, 0x6f, "Initialization and debug text."); - - bgfx::frame(); - } - - bgfx::shutdown(); - - return 0; -} diff --git a/include/bgfx.h b/include/bgfx.h index 5fed67c3..1482197b 100644 --- a/include/bgfx.h +++ b/include/bgfx.h @@ -240,7 +240,7 @@ namespace bgfx typedef struct { uint16_t idx; } DynamicVertexBufferHandle; typedef struct { uint16_t idx; } FragmentShaderHandle; typedef struct { uint16_t idx; } IndexBufferHandle; - typedef struct { uint16_t idx; } MaterialHandle; + typedef struct { uint16_t idx; } ProgramHandle; typedef struct { uint16_t idx; } RenderTargetHandle; typedef struct { uint16_t idx; } TextureHandle; typedef struct { uint16_t idx; } UniformHandle; @@ -339,7 +339,7 @@ namespace bgfx const Memory* alloc(uint32_t _size); /// - const Memory* makeRef(void* _data, uint32_t _size); + const Memory* makeRef(const void* _data, uint32_t _size); /// void setDebug(uint32_t _debug); @@ -414,10 +414,10 @@ namespace bgfx void destroyFragmentShader(FragmentShaderHandle _handle); /// - MaterialHandle createMaterial(VertexShaderHandle _vsh, FragmentShaderHandle _fsh); + ProgramHandle createProgram(VertexShaderHandle _vsh, FragmentShaderHandle _fsh); /// - void destroyMaterial(MaterialHandle _handle); + void destroyProgram(ProgramHandle _handle); /// TextureHandle createTexture(const Memory* _mem, uint32_t _flags = BGFX_TEXTURE_NONE, uint16_t* _width = NULL, uint16_t* _height = NULL); @@ -510,22 +510,22 @@ namespace bgfx void setIndexBuffer(DynamicIndexBufferHandle _handle); /// - void setIndexBuffer(const TransientIndexBuffer* _ib, uint32_t _numIndices = 0xffffffff); + void setIndexBuffer(const TransientIndexBuffer* _ib, uint32_t _numIndices = UINT32_MAX); /// - void setVertexBuffer(VertexBufferHandle _handle); + void setVertexBuffer(VertexBufferHandle _handle, uint32_t _numVertices = UINT32_MAX); /// - void setVertexBuffer(DynamicVertexBufferHandle _handle); + void setVertexBuffer(DynamicVertexBufferHandle _handle, uint32_t _numVertices = UINT32_MAX); /// - void setVertexBuffer(const TransientVertexBuffer* _vb); + void setVertexBuffer(const TransientVertexBuffer* _vb, uint32_t _numVertices = UINT32_MAX); /// void setInstanceDataBuffer(const InstanceDataBuffer* _idb); /// - void setMaterial(MaterialHandle _handle); + void setProgram(ProgramHandle _handle); /// void setTexture(uint8_t _stage, UniformHandle _sampler, TextureHandle _handle); diff --git a/makefile b/makefile new file mode 100644 index 00000000..90a28768 --- /dev/null +++ b/makefile @@ -0,0 +1,41 @@ +# +# Copyright 2011-2012 Branimir Karadzic. All rights reserved. +# License: http://www.opensource.org/licenses/BSD-2-Clause +# + +all: + premake --file=premake\premake4.lua vs2008 + premake --file=premake\premake4.lua --gcc=nacl gmake + premake --file=premake\premake4.lua --gcc=mingw gmake + premake --file=premake\premake4.lua --gcc=linux gmake + make -s --no-print-directory -C src + +nacl-debug32: + make -C .build\projects\gmake-nacl config=debug32 +nacl-release32: + make -C .build\projects\gmake-nacl config=release32 +nacl-debug64: + make -C .build\projects\gmake-nacl config=debug64 +nacl-release64: + make -C .build\projects\gmake-nacl config=release64 +nacl: nacl-debug32 nacl-release32 nacl-debug64 nacl-release64 + +mingw-debug32: + make -C .build\projects\gmake-mingw config=debug32 +mingw-release32: + make -C .build\projects\gmake-mingw config=release32 +mingw-debug64: + make -C .build\projects\gmake-mingw config=debug64 +mingw-release64: + make -C .build\projects\gmake-mingw config=release64 +mingw: mingw-debug32 mingw-release32 mingw-debug64 mingw-release64 + +linux-debug32: + make -C .build\projects\gmake-linux config=debug32 +linux-release32: + make -C .build\projects\gmake-linux config=release32 +linux-debug64: + make -C .build\projects\gmake-linux config=debug64 +linux-release64: + make -C .build\projects\gmake-linux config=release64 +linux: linux-debug32 linux-release32 linux-debug64 linux-release64 diff --git a/premake/helloworld.lua b/premake/example-00-helloworld.lua similarity index 76% rename from premake/helloworld.lua rename to premake/example-00-helloworld.lua index ca3a6db7..e99afd74 100644 --- a/premake/helloworld.lua +++ b/premake/example-00-helloworld.lua @@ -1,4 +1,4 @@ -project "helloworld" +project "example-00-helloworld" uuid "ff2c8450-ebf4-11e0-9572-0800200c9a66" kind "WindowedApp" @@ -10,8 +10,8 @@ project "helloworld" files { BGFX_DIR .. "examples/common/**.cpp", BGFX_DIR .. "examples/common/**.h", - BGFX_DIR .. "examples/helloworld/**.cpp", - BGFX_DIR .. "examples/helloworld/**.h", + BGFX_DIR .. "examples/00-helloworld/**.cpp", + BGFX_DIR .. "examples/00-helloworld/**.h", } links { diff --git a/premake/example-01-cubes.lua b/premake/example-01-cubes.lua new file mode 100644 index 00000000..23b58738 --- /dev/null +++ b/premake/example-01-cubes.lua @@ -0,0 +1,36 @@ +project "example-01-cubes" + uuid "fec3bc94-e1e5-11e1-9c59-c7eeec2c1c51" + kind "WindowedApp" + + debugdir (BGFX_DIR .. "examples/01-cubes/") + + includedirs { + BGFX_DIR .. "../bx/include", + BGFX_DIR .. "include", + } + + files { + BGFX_DIR .. "examples/common/**.cpp", + BGFX_DIR .. "examples/common/**.h", + BGFX_DIR .. "examples/01-cubes/**.cpp", + BGFX_DIR .. "examples/01-cubes/**.h", + } + + links { + "bgfx", + } + + configuration { "nacl" } + targetextension ".nexe" + + configuration { "nacl", "Release" } + postbuildcommands { + "@echo Stripping symbols.", + "@$(NACL)/bin/x86_64-nacl-strip -s \"$(TARGET)\"" + } + + configuration { "linux" } + links { + "GL", + "pthread", + } diff --git a/premake/example-02-metaballs.lua b/premake/example-02-metaballs.lua new file mode 100644 index 00000000..d1edf320 --- /dev/null +++ b/premake/example-02-metaballs.lua @@ -0,0 +1,36 @@ +project "example-02-metaballs" + uuid "413b2cb4-f7db-11e1-bf5f-a716de6a022f" + kind "WindowedApp" + + debugdir (BGFX_DIR .. "examples/02-metaballs/") + + includedirs { + BGFX_DIR .. "../bx/include", + BGFX_DIR .. "include", + } + + files { + BGFX_DIR .. "examples/common/**.cpp", + BGFX_DIR .. "examples/common/**.h", + BGFX_DIR .. "examples/02-metaballs/**.cpp", + BGFX_DIR .. "examples/02-metaballs/**.h", + } + + links { + "bgfx", + } + + configuration { "nacl" } + targetextension ".nexe" + + configuration { "nacl", "Release" } + postbuildcommands { + "@echo Stripping symbols.", + "@$(NACL)/bin/x86_64-nacl-strip -s \"$(TARGET)\"" + } + + configuration { "linux" } + links { + "GL", + "pthread", + } diff --git a/premake/premake4.lua b/premake/premake4.lua index f76c0d64..051cd960 100644 --- a/premake/premake4.lua +++ b/premake/premake4.lua @@ -1,5 +1,5 @@ -- --- Copyright 2010-2011 Branimir Karadzic. All rights reserved. +-- Copyright 2010-2012 Branimir Karadzic. All rights reserved. -- License: http://www.opensource.org/licenses/BSD-2-Clause -- @@ -35,6 +35,8 @@ BGFX_DIR = (path.getabsolute("..") .. "/") local BGFX_BUILD_DIR = (BGFX_DIR .. ".build/") local BGFX_THIRD_PARTY_DIR = (BGFX_DIR .. "3rdparty/") +BX_DIR = (BGFX_DIR .. "/../../bx/") + local XEDK = os.getenv("XEDK") if not XEDK then XEDK = "" end @@ -106,7 +108,7 @@ configuration "Release" targetsuffix "Release" configuration { "vs*" } - includedirs { BGFX_THIRD_PARTY_DIR .. "compiler/msvc" } + includedirs { BX_DIR .. "include/compat/msvc" } defines { "WIN32", "_WIN32", @@ -136,7 +138,7 @@ configuration { "x64", "vs*" } configuration { "mingw" } defines { "WIN32" } - includedirs { BGFX_THIRD_PARTY_DIR .. "compiler/mingw" } + includedirs { BX_DIR .. "include/compat/mingw" } buildoptions { "-std=c++0x", "-U__STRICT_ANSI__", @@ -191,7 +193,7 @@ configuration { "linux", "x64" } configuration { "nacl" } defines { "_BSD_SOURCE=1", "_POSIX_C_SOURCE=199506", "_XOPEN_SOURCE=600" } - includedirs { BGFX_THIRD_PARTY_DIR .. "compiler/nacl" } + includedirs { BX_DIR .. "include/compat/nacl" } buildoptions { "-std=c++0x", "-U__STRICT_ANSI__", @@ -224,7 +226,7 @@ configuration { "x64", "nacl" } configuration { "Xbox360" } targetdir (BGFX_BUILD_DIR .. "xbox360" .. "/bin") objdir (BGFX_BUILD_DIR .. "xbox360" .. "/obj") - includedirs { BGFX_THIRD_PARTY_DIR .. "compiler/msvc" } + includedirs { BX_DIR .. "include/compat/msvc" } libdirs { BGFX_THIRD_PARTY_DIR .. "lib/xbox360" } defines { "NOMINMAX", @@ -238,6 +240,8 @@ end dofile "bgfx.lua" dofile "ddsdump.lua" -dofile "helloworld.lua" dofile "makedisttex.lua" dofile "shaderc.lua" +dofile "example-00-helloworld.lua" +dofile "example-01-cubes.lua" +dofile "example-02-metaballs.lua" diff --git a/src/bgfx.cpp b/src/bgfx.cpp index da1cc313..79c365b6 100644 --- a/src/bgfx.cpp +++ b/src/bgfx.cpp @@ -218,32 +218,24 @@ namespace bgfx m_texture = createTexture2D(2048, 24, 1, TextureFormat::L8, BGFX_TEXTURE_MIN_POINT|BGFX_TEXTURE_MAG_POINT|BGFX_TEXTURE_MIP_POINT, mem); #if BGFX_CONFIG_RENDERER_DIRECT3D9 - mem = alloc(sizeof(vs_debugfont_dx9)+1); - memcpy(mem->data, vs_debugfont_dx9, mem->size-1); + mem = makeRef(vs_debugfont_dx9, sizeof(vs_debugfont_dx9) ); #elif BGFX_CONFIG_RENDERER_DIRECT3D11 - mem = alloc(sizeof(vs_debugfont_dx11)+1); - memcpy(mem->data, vs_debugfont_dx11, mem->size-1); + mem = makeRef(vs_debugfont_dx11, sizeof(vs_debugfont_dx11) ); #else - mem = alloc(sizeof(vs_debugfont_glsl)+1); - memcpy(mem->data, vs_debugfont_glsl, mem->size-1); + mem = makeRef(vs_debugfont_glsl, sizeof(vs_debugfont_glsl) ); #endif // BGFX_CONFIG_RENDERER_ - mem->data[mem->size-1] = '\0'; VertexShaderHandle vsh = createVertexShader(mem); #if BGFX_CONFIG_RENDERER_DIRECT3D9 - mem = alloc(sizeof(fs_debugfont_dx9)+1); - memcpy(mem->data, fs_debugfont_dx9, mem->size-1); + mem = makeRef(fs_debugfont_dx9, sizeof(fs_debugfont_dx9) ); #elif BGFX_CONFIG_RENDERER_DIRECT3D11 - mem = alloc(sizeof(fs_debugfont_dx11)+1); - memcpy(mem->data, fs_debugfont_dx11, mem->size-1); + mem = makeRef(fs_debugfont_dx11, sizeof(fs_debugfont_dx11) ); #else - mem = alloc(sizeof(fs_debugfont_glsl)+1); - memcpy(mem->data, fs_debugfont_glsl, mem->size-1); + mem = makeRef(fs_debugfont_glsl, sizeof(fs_debugfont_glsl) ); #endif // BGFX_CONFIG_RENDERER_ - mem->data[mem->size-1] = '\0'; FragmentShaderHandle fsh = createFragmentShader(mem); - m_material = createMaterial(vsh, fsh); + m_program = createProgram(vsh, fsh); m_vb = s_ctx.createTransientVertexBuffer(numBatchVertices*m_decl.m_stride, &m_decl); m_ib = s_ctx.createTransientIndexBuffer(numBatchIndices*2); @@ -377,7 +369,7 @@ namespace bgfx memcpy(mem->data, fs_clear_dx11, mem->size-1); FragmentShaderHandle fsh = createFragmentShader(mem); - m_material = createMaterial(vsh, fsh); + m_program = createProgram(vsh, fsh); m_vb = s_ctx.createTransientVertexBuffer(4*m_decl.m_stride, &m_decl); @@ -432,7 +424,8 @@ namespace bgfx return; } - if (BGFX_CONFIG_MAX_DRAW_CALLS-1 <= m_num) + if (BGFX_CONFIG_MAX_DRAW_CALLS-1 <= m_num + || (0 == m_state.m_numVertices && 0 == m_state.m_numIndices) ) { ++m_numDropped; return; @@ -462,7 +455,8 @@ namespace bgfx return; } - if (BGFX_CONFIG_MAX_DRAW_CALLS-1 <= m_num) + if (BGFX_CONFIG_MAX_DRAW_CALLS-1 <= m_num + || (0 == m_state.m_numVertices && 0 == m_state.m_numIndices) ) { m_numDropped += uint32_cntbits(_viewMask); return; @@ -782,7 +776,7 @@ namespace bgfx return mem; } - const Memory* makeRef(void* _data, uint32_t _size) + const Memory* makeRef(const void* _data, uint32_t _size) { Memory* mem = (Memory*)g_realloc(NULL, sizeof(Memory) ); mem->size = _size; @@ -918,14 +912,14 @@ namespace bgfx s_ctx.destroyFragmentShader(_handle); } - MaterialHandle createMaterial(VertexShaderHandle _vsh, FragmentShaderHandle _fsh) + ProgramHandle createProgram(VertexShaderHandle _vsh, FragmentShaderHandle _fsh) { - return s_ctx.createMaterial(_vsh, _fsh); + return s_ctx.createProgram(_vsh, _fsh); } - void destroyMaterial(MaterialHandle _handle) + void destroyProgram(ProgramHandle _handle) { - s_ctx.destroyMaterial(_handle); + s_ctx.destroyProgram(_handle); } TextureHandle createTexture(const Memory* _mem, uint32_t _flags, uint16_t* _width, uint16_t* _height) @@ -1137,9 +1131,9 @@ namespace bgfx s_ctx.setUniform(_handle, _value, _num); } - void setUniform(MaterialHandle _material, UniformHandle _handle, const void* _value) + void setUniform(ProgramHandle _program, UniformHandle _handle, const void* _value) { - s_ctx.setUniform(_material, _handle, _value); + s_ctx.setUniform(_program, _handle, _value); } void setIndexBuffer(IndexBufferHandle _handle, uint32_t _firstIndex, uint32_t _numIndices) @@ -1168,19 +1162,19 @@ namespace bgfx s_ctx.m_submit->setIndexBuffer(_ib, numIndices); } - void setVertexBuffer(VertexBufferHandle _handle) + void setVertexBuffer(VertexBufferHandle _handle, uint32_t _numVertices) { - s_ctx.m_submit->setVertexBuffer(_handle); + s_ctx.m_submit->setVertexBuffer(_handle, _numVertices); } - void setVertexBuffer(DynamicVertexBufferHandle _handle) + void setVertexBuffer(DynamicVertexBufferHandle _handle, uint32_t _numVertices) { - s_ctx.m_submit->setVertexBuffer(s_ctx.m_dynamicVertexBuffers[_handle.idx]); + s_ctx.m_submit->setVertexBuffer(s_ctx.m_dynamicVertexBuffers[_handle.idx], _numVertices); } - void setVertexBuffer(const TransientVertexBuffer* _vb) + void setVertexBuffer(const TransientVertexBuffer* _vb, uint32_t _numVertices) { - s_ctx.m_submit->setVertexBuffer(_vb); + s_ctx.m_submit->setVertexBuffer(_vb, _numVertices); } void setInstanceDataBuffer(const InstanceDataBuffer* _idb) @@ -1188,9 +1182,9 @@ namespace bgfx s_ctx.m_submit->setInstanceDataBuffer(_idb); } - void setMaterial(MaterialHandle _handle) + void setProgram(ProgramHandle _handle) { - s_ctx.m_submit->setMaterial(_handle); + s_ctx.m_submit->setProgram(_handle); } void setTexture(uint8_t _stage, UniformHandle _sampler, TextureHandle _handle) diff --git a/src/bgfx_p.h b/src/bgfx_p.h index ccb12048..719c777e 100644 --- a/src/bgfx_p.h +++ b/src/bgfx_p.h @@ -362,7 +362,7 @@ namespace bgfx TransientVertexBuffer* m_vb; TransientIndexBuffer* m_ib; VertexDecl m_decl; - MaterialHandle m_material; + ProgramHandle m_program; }; struct ClearQuad @@ -373,7 +373,7 @@ namespace bgfx TransientVertexBuffer* m_vb; IndexBufferHandle m_ib; VertexDecl m_decl; - MaterialHandle m_material; + ProgramHandle m_program; }; struct PredefinedUniform @@ -528,7 +528,7 @@ namespace bgfx UpdateDynamicVertexBuffer, CreateVertexShader, CreateFragmentShader, - CreateMaterial, + CreateProgram, CreateTexture, UpdateTexture, CreateRenderTarget, @@ -542,7 +542,7 @@ namespace bgfx DestroyDynamicVertexBuffer, DestroyVertexShader, DestroyFragmentShader, - DestroyMaterial, + DestroyProgram, DestroyTexture, DestroyRenderTarget, DestroyUniform, @@ -607,7 +607,7 @@ namespace bgfx // | | | | | || uint64_t tmp0 = m_depth; - uint64_t tmp1 = uint64_t(m_material)<<0x18; + uint64_t tmp1 = uint64_t(m_program)<<0x18; uint64_t tmp2 = uint64_t(m_trans)<<0x21; uint64_t tmp3 = uint64_t(m_seq)<<0x23; uint64_t tmp4 = uint64_t(m_view)<<0x2e; @@ -618,7 +618,7 @@ namespace bgfx void decode(uint64_t _key) { m_depth = _key&0xffffffff; - m_material = (_key>>0x18)&(BGFX_CONFIG_MAX_MATERIALS-1); + m_program = (_key>>0x18)&(BGFX_CONFIG_MAX_PROGRAMS-1); m_trans = (_key>>0x21)&0x3; m_seq = (_key>>0x23)&0x7ff; m_view = (_key>>0x2e)&(BGFX_CONFIG_MAX_VIEWS-1); @@ -627,14 +627,14 @@ namespace bgfx void reset() { m_depth = 0; - m_material = 0; + m_program = 0; m_seq = 0; m_view = 0; m_trans = 0; } int32_t m_depth; - uint16_t m_material; + uint16_t m_program; uint16_t m_seq; uint8_t m_view; uint8_t m_trans; @@ -1113,26 +1113,26 @@ namespace bgfx g_free(const_cast(_ib) ); } - void setVertexBuffer(VertexBufferHandle _handle) + void setVertexBuffer(VertexBufferHandle _handle, uint32_t _numVertices) { BX_CHECK(_handle.idx < BGFX_CONFIG_MAX_VERTEX_BUFFERS, "Invalid vertex buffer handle. %d (< %d)", _handle.idx, BGFX_CONFIG_MAX_VERTEX_BUFFERS); m_state.m_startVertex = 0; - m_state.m_numVertices = UINT32_C(0xffffffff); + m_state.m_numVertices = _numVertices; m_state.m_vertexBuffer = _handle; } - void setVertexBuffer(const DynamicVertexBuffer& dvb) + void setVertexBuffer(const DynamicVertexBuffer& dvb, uint32_t _numVertices) { m_state.m_startVertex = dvb.m_startVertex; - m_state.m_numVertices = dvb.m_numVertices; + m_state.m_numVertices = uint32_min(dvb.m_numVertices, _numVertices); m_state.m_vertexBuffer = dvb.m_handle; m_state.m_vertexDecl = dvb.m_decl; } - void setVertexBuffer(const TransientVertexBuffer* _vb) + void setVertexBuffer(const TransientVertexBuffer* _vb, uint32_t _numVertices) { m_state.m_startVertex = _vb->startVertex; - m_state.m_numVertices = _vb->size/_vb->stride; + m_state.m_numVertices = uint32_min(_vb->size/_vb->stride, _numVertices); m_state.m_vertexBuffer = _vb->handle; m_state.m_vertexDecl = _vb->decl; g_free(const_cast(_vb) ); @@ -1150,10 +1150,10 @@ namespace bgfx #endif // BGFX_CONFIG_RENDERER_OPENGLES } - void setMaterial(MaterialHandle _handle) + void setProgram(ProgramHandle _handle) { - BX_CHECK(invalidHandle != _handle.idx, "Can't set material with invalid handle."); - m_key.m_material = _handle.idx; + BX_CHECK(invalidHandle != _handle.idx, "Can't set program with invalid handle."); + m_key.m_program = _handle.idx; } void setTexture(uint8_t _stage, UniformHandle _sampler, TextureHandle _handle) @@ -1259,10 +1259,10 @@ namespace bgfx ++m_numFreeFragmentShaderHandles; } - void free(MaterialHandle _handle) + void free(ProgramHandle _handle) { - m_freeMaterialHandle[m_numFreeMaterialHandles] = _handle; - ++m_numFreeMaterialHandles; + m_freeProgramHandle[m_numFreeProgramHandles] = _handle; + ++m_numFreeProgramHandles; } void free(TextureHandle _handle) @@ -1291,7 +1291,7 @@ namespace bgfx m_numFreeVertexShaderHandles = 0; m_numFreeFragmentShaderHandles = 0; m_numFreeFragmentShaderHandles = 0; - m_numFreeMaterialHandles = 0; + m_numFreeProgramHandles = 0; m_numFreeTextureHandles = 0; m_numFreeRenderTargetHandles = 0; m_numFreeUniformHandles = 0; @@ -1336,7 +1336,7 @@ namespace bgfx uint16_t m_numFreeVertexBufferHandles; uint16_t m_numFreeVertexShaderHandles; uint16_t m_numFreeFragmentShaderHandles; - uint16_t m_numFreeMaterialHandles; + uint16_t m_numFreeProgramHandles; uint16_t m_numFreeTextureHandles; uint16_t m_numFreeRenderTargetHandles; uint16_t m_numFreeUniformHandles; @@ -1346,7 +1346,7 @@ namespace bgfx VertexBufferHandle m_freeVertexBufferHandle[BGFX_CONFIG_MAX_VERTEX_BUFFERS]; VertexShaderHandle m_freeVertexShaderHandle[BGFX_CONFIG_MAX_VERTEX_SHADERS]; FragmentShaderHandle m_freeFragmentShaderHandle[BGFX_CONFIG_MAX_FRAGMENT_SHADERS]; - MaterialHandle m_freeMaterialHandle[BGFX_CONFIG_MAX_MATERIALS]; + ProgramHandle m_freeProgramHandle[BGFX_CONFIG_MAX_PROGRAMS]; TextureHandle m_freeTextureHandle[BGFX_CONFIG_MAX_TEXTURES]; RenderTargetHandle m_freeRenderTargetHandle[BGFX_CONFIG_MAX_RENDER_TARGETS]; UniformHandle m_freeUniformHandle[BGFX_CONFIG_MAX_UNIFORMS]; @@ -1530,7 +1530,7 @@ namespace bgfx , m_vertexBufferHandle(BGFX_CONFIG_MAX_VERTEX_BUFFERS) , m_vertexShaderHandle(BGFX_CONFIG_MAX_VERTEX_SHADERS) , m_fragmentShaderHandle(BGFX_CONFIG_MAX_FRAGMENT_SHADERS) - , m_materialHandle(BGFX_CONFIG_MAX_MATERIALS) + , m_programHandle(BGFX_CONFIG_MAX_PROGRAMS) , m_textureHandle(BGFX_CONFIG_MAX_TEXTURES) , m_renderTargetHandle(BGFX_CONFIG_MAX_RENDER_TARGETS) , m_uniformHandle(BGFX_CONFIG_MAX_UNIFORMS) @@ -1984,31 +1984,31 @@ namespace bgfx } } - MaterialHandle createMaterial(VertexShaderHandle _vsh, FragmentShaderHandle _fsh) + ProgramHandle createProgram(VertexShaderHandle _vsh, FragmentShaderHandle _fsh) { - MaterialHandle handle; - handle.idx = m_materialHandle.alloc(); + ProgramHandle handle; + handle.idx = m_programHandle.alloc(); vertexShaderIncRef(_vsh); fragmentShaderIncRef(_fsh); - m_materialRef[handle.idx].m_vsh = _vsh; - m_materialRef[handle.idx].m_fsh = _fsh; + m_programRef[handle.idx].m_vsh = _vsh; + m_programRef[handle.idx].m_fsh = _fsh; - CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::CreateMaterial); + CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::CreateProgram); cmdbuf.write(handle); cmdbuf.write(_vsh); cmdbuf.write(_fsh); return handle; } - void destroyMaterial(MaterialHandle _handle) + void destroyProgram(ProgramHandle _handle) { - CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::DestroyMaterial); + CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::DestroyProgram); cmdbuf.write(_handle); m_submit->free(_handle); - vertexShaderDecRef(m_materialRef[_handle.idx].m_vsh); - fragmentShaderDecRef(m_materialRef[_handle.idx].m_fsh); + vertexShaderDecRef(m_programRef[_handle.idx].m_vsh); + fragmentShaderDecRef(m_programRef[_handle.idx].m_fsh); } TextureHandle createTexture(const Memory* _mem, uint32_t _flags, uint16_t* _width, uint16_t* _height) @@ -2129,7 +2129,7 @@ namespace bgfx m_submit->writeConstant(constant.m_type, _handle, _value, uint16_min(constant.m_num, _num) ); } - void setUniform(MaterialHandle /*_material*/, UniformHandle /*_handle*/, const void* /*_value*/) + void setUniform(ProgramHandle /*_program*/, UniformHandle /*_handle*/, const void* /*_value*/) { BX_CHECK(false, "NOT IMPLEMENTED!"); } @@ -2262,9 +2262,9 @@ namespace bgfx m_fragmentShaderHandle.free(_frame->m_freeFragmentShaderHandle[ii].idx); } - for (uint16_t ii = 0, num = _frame->m_numFreeMaterialHandles; ii < num; ++ii) + for (uint16_t ii = 0, num = _frame->m_numFreeProgramHandles; ii < num; ++ii) { - m_materialHandle.free(_frame->m_freeMaterialHandle[ii].idx); + m_programHandle.free(_frame->m_freeProgramHandle[ii].idx); } for (uint16_t ii = 0, num = _frame->m_numFreeTextureHandles; ii < num; ++ii) @@ -2346,8 +2346,8 @@ namespace bgfx void rendererDestroyVertexShader(VertexShaderHandle _handle); void rendererCreateFragmentShader(FragmentShaderHandle _handle, Memory* _mem); void rendererDestroyFragmentShader(FragmentShaderHandle _handle); - void rendererCreateMaterial(MaterialHandle _handle, VertexShaderHandle _vsh, FragmentShaderHandle _fsh); - void rendererDestroyMaterial(FragmentShaderHandle _handle); + void rendererCreateProgram(ProgramHandle _handle, VertexShaderHandle _vsh, FragmentShaderHandle _fsh); + void rendererDestroyProgram(FragmentShaderHandle _handle); void rendererCreateTexture(TextureHandle _handle, Memory* _mem, uint32_t _flags); void rendererUpdateTexture(TextureHandle _handle, uint8_t _side, uint8_t _mip, const Rect& _rect, uint16_t _z, uint16_t _depth, const Memory* _mem); void rendererDestroyTexture(TextureHandle _handle); @@ -2609,9 +2609,9 @@ namespace bgfx } break; - case CommandBuffer::CreateMaterial: + case CommandBuffer::CreateProgram: { - MaterialHandle handle; + ProgramHandle handle; _cmdbuf.read(handle); VertexShaderHandle vsh; @@ -2620,16 +2620,16 @@ namespace bgfx FragmentShaderHandle fsh; _cmdbuf.read(fsh); - rendererCreateMaterial(handle, vsh, fsh); + rendererCreateProgram(handle, vsh, fsh); } break; - case CommandBuffer::DestroyMaterial: + case CommandBuffer::DestroyProgram: { FragmentShaderHandle handle; _cmdbuf.read(handle); - rendererDestroyMaterial(handle); + rendererDestroyProgram(handle); } break; @@ -2854,19 +2854,19 @@ namespace bgfx HandleAlloc m_vertexBufferHandle; HandleAlloc m_vertexShaderHandle; HandleAlloc m_fragmentShaderHandle; - HandleAlloc m_materialHandle; + HandleAlloc m_programHandle; HandleAlloc m_textureHandle; HandleAlloc m_renderTargetHandle; HandleAlloc m_uniformHandle; int32_t m_vertexShaderRef[BGFX_CONFIG_MAX_VERTEX_SHADERS]; int32_t m_fragmentShaderRef[BGFX_CONFIG_MAX_FRAGMENT_SHADERS]; - struct MaterialRef + struct ProgramRef { VertexShaderHandle m_vsh; FragmentShaderHandle m_fsh; }; - MaterialRef m_materialRef[BGFX_CONFIG_MAX_MATERIALS]; + ProgramRef m_programRef[BGFX_CONFIG_MAX_PROGRAMS]; VertexDeclRef m_declRef; RenderTargetHandle m_rt[BGFX_CONFIG_MAX_VIEWS]; @@ -3022,7 +3022,7 @@ namespace bgfx case WM_KEYDOWN: case WM_SYSKEYDOWN: if ((WM_KEYDOWN == _id && VK_F11 == _wparam) - || (WM_SYSKEYDOWN == _id && VK_RETURN == _wparam)) + || (WM_SYSKEYDOWN == _id && VK_RETURN == _wparam) ) { toggleWindowFrame(); } diff --git a/src/bgfx_shader.sh b/src/bgfx_shader.sh new file mode 100644 index 00000000..663329a0 --- /dev/null +++ b/src/bgfx_shader.sh @@ -0,0 +1,57 @@ +/* + * Copyright 2011-2012 Branimir Karadzic. All rights reserved. + * License: http://www.opensource.org/licenses/BSD-2-Clause + */ + +#ifndef __BGFX_SHADER_H__ +#define __BGFX_SHADER_H__ + +#ifndef __cplusplus + +#if BGFX_SHADER_LANGUAGE_HLSL +# define dFdx ddx +# define dFdy ddy + +# if BGFX_SHADER_LANGUAGE_HLSL > 3 +# define SAMPLER2D(_name, _reg) \ + uniform SamplerState _name ## Sampler : register(s[_reg]); \ + uniform Texture2D _name : register(t[_reg]) +# define texture2D(_name, _coord) _name.Sample(_name ## Sampler, _coord) + +# define SAMPLER3D(_name, _reg) \ + uniform SamplerState _name : register(s[_reg]) \ + uniform Texture3D _name : register(t[_reg]) +# define texture3D(_name, _coord) _name.Sample(_name ## Sampler, _coord) + +# define SAMPLERCUBE(_name, _reg) \ + uniform SamplerState _name ## Sampler : register(s[_reg]); \ + uniform TextureCube _name : register(t[_reg]) +# define textureCube(_name, _coord) _name.Sample(_name ## Sampler, _coord) +# else +# define SAMPLER2D(_name, _reg) uniform sampler2D _name : register(s ## _reg) +# define texture2D tex2D +# define SAMPLER3D(_name, _reg) uniform sampler3D _name : register(s ## _reg) +# define texture3D tex3D +# define SAMPLERCUBE(_name, _reg) uniform samplerCUBE _name : register(s[_reg]) +# define textureCube texCUBE +# endif // + +# define vec2_splat(_x) float2(_x, _x) +# define vec3_splat(_x) float3(_x, _x, _x) +# define vec4_splat(_x) float4(_x, _x, _x, _x) +#elif BGFX_SHADER_LANGUAGE_GLSL +# define frac fract +# define lerp mix +# define mul(_a, _b) ( (_a) * (_b) ) +# define saturate(_x) clamp(_x, 0.0, 1.0) +# define SAMPLER2D(_name, _reg) uniform sampler2D _name +# define SAMPLER3D(_name, _reg) uniform sampler3D _name +# define SAMPLERCUBE(_name, _reg) uniform samplerCube _name +# define vec2_splat(_x) vec2(_x) +# define vec3_splat(_x) vec3(_x) +# define vec4_splat(_x) vec4(_x) +#endif // BGFX_SHADER_LANGUAGE_HLSL + +#endif // __cplusplus + +#endif // __BGFX_SHADER_H__ diff --git a/src/common.sh b/src/common.sh new file mode 100644 index 00000000..0ae6ab27 --- /dev/null +++ b/src/common.sh @@ -0,0 +1,21 @@ +/* + * Copyright 2011-2012 Branimir Karadzic. All rights reserved. + * License: http://www.opensource.org/licenses/BSD-2-Clause + */ + +#ifndef __SHADER_COMMON_H__ +#define __SHADER_COMMON_H__ + +#include "bgfx_shader.sh" + +uniform mat4 u_view; +uniform mat4 u_viewProj; +uniform mat4 u_model; +uniform mat4 u_modelView; +uniform mat4 u_modelViewProj; +uniform mat4 u_modelViewProjX; +uniform mat4 u_viewProjX; + +SAMPLER2D(u_texColor, 0); + +#endif // __SHADER_COMMON_H__ diff --git a/src/config.h b/src/config.h index 341a7740..22d4c978 100644 --- a/src/config.h +++ b/src/config.h @@ -92,9 +92,9 @@ # define BGFX_CONFIG_MAX_FRAGMENT_SHADERS 256 #endif // BGFX_CONFIG_MAX_FRAGMENT_SHADERS -#ifndef BGFX_CONFIG_MAX_MATERIALS -# define BGFX_CONFIG_MAX_MATERIALS 512 -#endif // BGFX_CONFIG_MAX_MATERIALS +#ifndef BGFX_CONFIG_MAX_PROGRAMS +# define BGFX_CONFIG_MAX_PROGRAMS 512 +#endif // BGFX_CONFIG_MAX_PROGRAMS #ifndef BGFX_CONFIG_MAX_PROGRAMS # define BGFX_CONFIG_MAX_PROGRAMS (4<<10) diff --git a/src/dds.cpp b/src/dds.cpp index f6c6f020..dd6a7b7a 100644 --- a/src/dds.cpp +++ b/src/dds.cpp @@ -105,7 +105,7 @@ void decodeBlockDxt(uint8_t _dst[16*4], const uint8_t _src[8]) for (uint32_t ii = 0, next = 8*4; ii < 16*4; ii += 4, next += 2) { - int idx = ( (_src[next>>3] >> (next & 7)) & 3) * 3; + int idx = ( (_src[next>>3] >> (next & 7) ) & 3) * 3; _dst[ii+0] = colors[idx+0]; _dst[ii+1] = colors[idx+1]; _dst[ii+2] = colors[idx+2]; @@ -155,7 +155,7 @@ void decodeBlockDxt1(uint8_t _dst[16*4], const uint8_t _src[8]) for (uint32_t ii = 0, next = 8*4; ii < 16*4; ii += 4, next += 2) { - int idx = ( (_src[next>>3] >> (next & 7)) & 3) * 4; + int idx = ( (_src[next>>3] >> (next & 7) ) & 3) * 4; _dst[ii+0] = colors[idx+0]; _dst[ii+1] = colors[idx+1]; _dst[ii+2] = colors[idx+2]; diff --git a/src/fs_clear.sc b/src/fs_clear.sc new file mode 100644 index 00000000..1aa007d1 --- /dev/null +++ b/src/fs_clear.sc @@ -0,0 +1,13 @@ +$input v_color0 + +/* + * Copyright 2011-2012 Branimir Karadzic. All rights reserved. + * License: http://www.opensource.org/licenses/BSD-2-Clause + */ + +#include "common.sh" + +void main() +{ + gl_FragColor = v_color0; +} diff --git a/src/fs_debugfont.sc b/src/fs_debugfont.sc new file mode 100644 index 00000000..2261fabe --- /dev/null +++ b/src/fs_debugfont.sc @@ -0,0 +1,18 @@ +$input v_color0, v_color1, v_texcoord0 + +/* + * Copyright 2011-2012 Branimir Karadzic. All rights reserved. + * License: http://www.opensource.org/licenses/BSD-2-Clause + */ + +#include "common.sh" + +void main() +{ + vec4 color = lerp(v_color1, v_color0, texture2D(u_texColor, v_texcoord0).xxxx); + if (color.w < 1.0/255.0) + { + discard; + } + gl_FragColor = color; +} diff --git a/src/makefile b/src/makefile new file mode 100644 index 00000000..f9f6d10f --- /dev/null +++ b/src/makefile @@ -0,0 +1,38 @@ +# +# Copyright 2011-2012 Branimir Karadzic. All rights reserved. +# License: http://www.opensource.org/licenses/BSD-2-Clause +# + +.PHONY: all clean + +all: vs_debugfont_dx9.bin.h fs_debugfont_dx9.bin.h \ + vs_debugfont_glsl.bin.h fs_debugfont_glsl.bin.h \ + vs_debugfont_dx11.bin.h fs_debugfont_dx11.bin.h \ + vs_clear_dx11.bin.h fs_clear_dx11.bin.h + +clean: + rm *.bin.h + +vs_debugfont_dx9.bin.h: + ..\tools\bin\shaderc -f vs_debugfont.sc -o vs_debugfont_dx9.bin.h --type v -p vs_2_0 --platform windows -O 3 --bin2c vs_debugfont_dx9 + +fs_debugfont_dx9.bin.h: + ..\tools\bin\shaderc -f fs_debugfont.sc -o fs_debugfont_dx9.bin.h --type f -p ps_2_a --platform windows -O 3 --bin2c fs_debugfont_dx9 + +vs_debugfont_glsl.bin.h: + ..\tools\bin\shaderc -f vs_debugfont.sc -o vs_debugfont_glsl.bin.h --type v --platform nacl -O 3 --bin2c vs_debugfont_glsl + +fs_debugfont_glsl.bin.h: + ..\tools\bin\shaderc -f fs_debugfont.sc -o fs_debugfont_glsl.bin.h --type f --platform nacl -O 3 --bin2c fs_debugfont_glsl + +vs_debugfont_dx11.bin.h: + ..\tools\bin\shaderc -f vs_debugfont.sc -o vs_debugfont_dx11.bin.h --type v -p vs_5_0 --platform windows -O 3 --bin2c vs_debugfont_dx11 + +fs_debugfont_dx11.bin.h: + ..\tools\bin\shaderc -f fs_debugfont.sc -o fs_debugfont_dx11.bin.h --type f -p ps_5_0 --platform windows -O 3 --bin2c fs_debugfont_dx11 + +vs_clear_dx11.bin.h: + ..\tools\bin\shaderc -f vs_clear.sc -o vs_clear_dx11.bin.h --type v -p vs_5_0 --platform windows -O 3 --bin2c vs_clear_dx11 + +fs_clear_dx11.bin.h: + ..\tools\bin\shaderc -f fs_clear.sc -o fs_clear_dx11.bin.h --type f -p ps_5_0 --platform windows -O 3 --bin2c fs_clear_dx11 diff --git a/src/renderer_d3d11.cpp b/src/renderer_d3d11.cpp index 9c48bf9f..93d28339 100644 --- a/src/renderer_d3d11.cpp +++ b/src/renderer_d3d11.cpp @@ -484,9 +484,9 @@ namespace bgfx { if (0 < m_vsChanges) { - if (NULL != m_currentMaterial->m_vsh->m_buffer) + if (NULL != m_currentProgram->m_vsh->m_buffer) { - m_deviceCtx->UpdateSubresource(m_currentMaterial->m_vsh->m_buffer, 0, 0, m_vsScratch, 0, 0); + m_deviceCtx->UpdateSubresource(m_currentProgram->m_vsh->m_buffer, 0, 0, m_vsScratch, 0, 0); } m_vsChanges = 0; @@ -494,9 +494,9 @@ namespace bgfx if (0 < m_fsChanges) { - if (NULL != m_currentMaterial->m_fsh->m_buffer) + if (NULL != m_currentProgram->m_fsh->m_buffer) { - m_deviceCtx->UpdateSubresource(m_currentMaterial->m_fsh->m_buffer, 0, 0, m_fsScratch, 0, 0); + m_deviceCtx->UpdateSubresource(m_currentProgram->m_fsh->m_buffer, 0, 0, m_fsScratch, 0, 0); } m_fsChanges = 0; @@ -541,9 +541,9 @@ namespace bgfx // DX_CHECK(s_renderCtx.m_device->SetRenderState(D3DRS_SCISSORTESTENABLE, FALSE) ); } - void setInputLayout(const VertexDecl& _vertexDecl, const Material& _material) + void setInputLayout(const VertexDecl& _vertexDecl, const Program& _program) { - uint64_t layoutHash = (uint64_t(_vertexDecl.m_hash)<<32) | _material.m_vsh->m_hash; + uint64_t layoutHash = (uint64_t(_vertexDecl.m_hash)<<32) | _program.m_vsh->m_hash; ID3D11InputLayout* layout = m_inputLayoutCache.find(layoutHash); if (NULL == layout) { @@ -551,7 +551,7 @@ namespace bgfx VertexDecl decl; memcpy(&decl, &_vertexDecl, sizeof(VertexDecl) ); - const uint8_t* attrMask = _material.m_vsh->m_attrMask; + const uint8_t* attrMask = _program.m_vsh->m_attrMask; for (uint32_t ii = 0; ii < Attrib::Count; ++ii) { @@ -564,8 +564,8 @@ namespace bgfx ptrdiff_t num = elem-vertexElements; DX_CHECK(m_device->CreateInputLayout(vertexElements , uint32_t(num) - , _material.m_vsh->m_code->data - , _material.m_vsh->m_code->size + , _program.m_vsh->m_code->data + , _program.m_vsh->m_code->size , &layout ) ); m_inputLayoutCache.add(layoutHash, layout); @@ -735,7 +735,7 @@ namespace bgfx VertexBuffer m_vertexBuffers[BGFX_CONFIG_MAX_VERTEX_BUFFERS]; Shader m_vertexShaders[BGFX_CONFIG_MAX_VERTEX_SHADERS]; Shader m_fragmentShaders[BGFX_CONFIG_MAX_FRAGMENT_SHADERS]; - Material m_materials[BGFX_CONFIG_MAX_MATERIALS]; + Program m_program[BGFX_CONFIG_MAX_PROGRAMS]; Texture m_textures[BGFX_CONFIG_MAX_TEXTURES]; VertexDecl m_vertexDecls[BGFX_CONFIG_MAX_VERTEX_DECLS]; RenderTarget m_renderTargets[BGFX_CONFIG_MAX_RENDER_TARGETS]; @@ -754,7 +754,7 @@ namespace bgfx TextureStage m_textureStage; - Material* m_currentMaterial; + Program* m_currentProgram; uint8_t m_vsScratch[64<<10]; uint8_t m_fsScratch[64<<10]; @@ -959,19 +959,19 @@ namespace bgfx s_renderCtx.setDepthStencilState(state); s_renderCtx.setRasterizerState(state, false); - Material& material = s_renderCtx.m_materials[m_material.idx]; - s_renderCtx.m_currentMaterial = &material; - deviceCtx->VSSetShader( (ID3D11VertexShader*)material.m_vsh->m_ptr, NULL, 0); - deviceCtx->VSSetConstantBuffers(0, 1, &material.m_vsh->m_buffer); - deviceCtx->PSSetShader( (ID3D11PixelShader*)material.m_fsh->m_ptr, NULL, 0); - deviceCtx->PSSetConstantBuffers(0, 1, &material.m_fsh->m_buffer); + Program& program = s_renderCtx.m_program[m_program.idx]; + s_renderCtx.m_currentProgram = &program; + deviceCtx->VSSetShader( (ID3D11VertexShader*)program.m_vsh->m_ptr, NULL, 0); + deviceCtx->VSSetConstantBuffers(0, 1, &program.m_vsh->m_buffer); + deviceCtx->PSSetShader( (ID3D11PixelShader*)program.m_fsh->m_ptr, NULL, 0); + deviceCtx->PSSetConstantBuffers(0, 1, &program.m_fsh->m_buffer); VertexBuffer& vb = s_renderCtx.m_vertexBuffers[m_vb->handle.idx]; VertexDecl& vertexDecl = s_renderCtx.m_vertexDecls[m_vb->decl.idx]; uint32_t stride = vertexDecl.m_stride; uint32_t offset = 0; deviceCtx->IASetVertexBuffers(0, 1, &vb.m_ptr, &stride, &offset); - s_renderCtx.setInputLayout(vertexDecl, material); + s_renderCtx.setInputLayout(vertexDecl, program); IndexBuffer& ib = s_renderCtx.m_indexBuffers[m_ib->handle.idx]; deviceCtx->IASetIndexBuffer(ib.m_ptr, DXGI_FORMAT_R16_UINT, 0); @@ -979,7 +979,7 @@ namespace bgfx float proj[16]; matrix_ortho(proj, 0.0f, (float)width, (float)height, 0.0f, 0.0f, 1000.0f); - PredefinedUniform& predefined = material.m_predefined[0]; + PredefinedUniform& predefined = program.m_predefined[0]; uint8_t flags = predefined.m_type; s_renderCtx.setShaderConstant(flags, predefined.m_loc, proj, 4); @@ -1026,11 +1026,11 @@ namespace bgfx s_renderCtx.setDepthStencilState(state); s_renderCtx.setRasterizerState(state, false); - Material& material = s_renderCtx.m_materials[m_material.idx]; - s_renderCtx.m_currentMaterial = &material; - deviceCtx->VSSetShader( (ID3D11VertexShader*)material.m_vsh->m_ptr, NULL, 0); + Program& program = s_renderCtx.m_program[m_program.idx]; + s_renderCtx.m_currentProgram = &program; + deviceCtx->VSSetShader( (ID3D11VertexShader*)program.m_vsh->m_ptr, NULL, 0); deviceCtx->VSSetConstantBuffers(0, 0, NULL); - deviceCtx->PSSetShader( (ID3D11PixelShader*)material.m_fsh->m_ptr, NULL, 0); + deviceCtx->PSSetShader( (ID3D11PixelShader*)program.m_fsh->m_ptr, NULL, 0); deviceCtx->PSSetConstantBuffers(0, 0, NULL); VertexBuffer& vb = s_renderCtx.m_vertexBuffers[m_vb->handle.idx]; @@ -1070,7 +1070,7 @@ namespace bgfx s_renderCtx.m_vertexBuffers[m_vb->handle.idx].update(0, 4*m_decl.m_stride, m_vb->data); deviceCtx->IASetVertexBuffers(0, 1, &vb.m_ptr, &stride, &offset); - s_renderCtx.setInputLayout(vertexDecl, material); + s_renderCtx.setInputLayout(vertexDecl, program); IndexBuffer& ib = s_renderCtx.m_indexBuffers[m_ib.idx]; deviceCtx->IASetIndexBuffer(ib.m_ptr, DXGI_FORMAT_R16_UINT, 0); @@ -1700,14 +1700,14 @@ namespace bgfx s_renderCtx.m_fragmentShaders[_handle.idx].destroy(); } - void Context::rendererCreateMaterial(MaterialHandle _handle, VertexShaderHandle _vsh, FragmentShaderHandle _fsh) + void Context::rendererCreateProgram(ProgramHandle _handle, VertexShaderHandle _vsh, FragmentShaderHandle _fsh) { - s_renderCtx.m_materials[_handle.idx].create(s_renderCtx.m_vertexShaders[_vsh.idx], s_renderCtx.m_fragmentShaders[_fsh.idx]); + s_renderCtx.m_program[_handle.idx].create(s_renderCtx.m_vertexShaders[_vsh.idx], s_renderCtx.m_fragmentShaders[_fsh.idx]); } - void Context::rendererDestroyMaterial(FragmentShaderHandle _handle) + void Context::rendererDestroyProgram(FragmentShaderHandle _handle) { - s_renderCtx.m_materials[_handle.idx].destroy(); + s_renderCtx.m_program[_handle.idx].destroy(); } void Context::rendererCreateTexture(TextureHandle _handle, Memory* _mem, uint32_t _flags) @@ -1789,7 +1789,7 @@ namespace bgfx bool wireframe = !!(m_render->m_debug&BGFX_DEBUG_WIREFRAME); s_renderCtx.setDebugWireframe(wireframe); - uint16_t materialIdx = invalidHandle; + uint16_t programIdx = invalidHandle; SortKey key; uint8_t view = 0xff; RenderTargetHandle rt = BGFX_INVALID_HANDLE; @@ -1823,7 +1823,7 @@ namespace bgfx currentState.m_flags = newFlags; view = key.m_view; - materialIdx = invalidHandle; + programIdx = invalidHandle; if (m_render->m_rt[view].idx != rt.idx) { @@ -1882,51 +1882,50 @@ namespace bgfx } } - bool materialChanged = false; + bool programChanged = false; bool constantsChanged = state.m_constBegin < state.m_constEnd; rendererUpdateUniforms(m_render->m_constantBuffer, state.m_constBegin, state.m_constEnd); - if (key.m_material != materialIdx) + if (key.m_program != programIdx) { - materialIdx = key.m_material; + programIdx = key.m_program; - if (invalidHandle == materialIdx) + if (invalidHandle == programIdx) { - s_renderCtx.m_currentMaterial = NULL; + s_renderCtx.m_currentProgram = NULL; deviceCtx->VSSetShader(NULL, 0, 0); deviceCtx->PSSetShader(NULL, 0, 0); } else { - Material& material = s_renderCtx.m_materials[materialIdx]; - s_renderCtx.m_currentMaterial = &material; + Program& program = s_renderCtx.m_program[programIdx]; + s_renderCtx.m_currentProgram = &program; - deviceCtx->VSSetShader( (ID3D11VertexShader*)material.m_vsh->m_ptr, NULL, 0); - deviceCtx->VSSetConstantBuffers(0, 1, &material.m_vsh->m_buffer); + deviceCtx->VSSetShader( (ID3D11VertexShader*)program.m_vsh->m_ptr, NULL, 0); + deviceCtx->VSSetConstantBuffers(0, 1, &program.m_vsh->m_buffer); - deviceCtx->PSSetShader( (ID3D11PixelShader*)material.m_fsh->m_ptr, NULL, 0); - deviceCtx->PSSetConstantBuffers(0, 1, &material.m_fsh->m_buffer); + deviceCtx->PSSetShader( (ID3D11PixelShader*)program.m_fsh->m_ptr, NULL, 0); + deviceCtx->PSSetConstantBuffers(0, 1, &program.m_fsh->m_buffer); } - materialChanged = + programChanged = constantsChanged = true; } - if (invalidHandle != materialIdx) + if (invalidHandle != programIdx) { - Material& material = s_renderCtx.m_materials[materialIdx]; + Program& program = s_renderCtx.m_program[programIdx]; if (constantsChanged) { - Material& material = s_renderCtx.m_materials[materialIdx]; - material.m_vsh->m_constantBuffer->commit(); - material.m_fsh->m_constantBuffer->commit(); + program.m_vsh->m_constantBuffer->commit(); + program.m_fsh->m_constantBuffer->commit(); } - for (uint32_t ii = 0, num = material.m_numPredefined; ii < num; ++ii) + for (uint32_t ii = 0, num = program.m_numPredefined; ii < num; ++ii) { - PredefinedUniform& predefined = material.m_predefined[ii]; + PredefinedUniform& predefined = program.m_predefined[ii]; uint8_t flags = predefined.m_type&BGFX_UNIFORM_FRAGMENTBIT; switch (predefined.m_type&(~BGFX_UNIFORM_FRAGMENTBIT) ) { @@ -2049,7 +2048,7 @@ namespace bgfx Sampler& current = currentState.m_sampler[stage]; if (current.m_idx != sampler.m_idx || current.m_flags != sampler.m_flags - || materialChanged) + || programChanged) { if (invalidHandle != sampler.m_idx) { @@ -2087,7 +2086,7 @@ namespace bgfx } } - if (currentState.m_vertexBuffer.idx != state.m_vertexBuffer.idx || materialChanged) + if (currentState.m_vertexBuffer.idx != state.m_vertexBuffer.idx || programChanged) { currentState.m_vertexBuffer = state.m_vertexBuffer; @@ -2101,7 +2100,7 @@ namespace bgfx uint32_t stride = vertexDecl.m_stride; uint32_t offset = 0; deviceCtx->IASetVertexBuffers(0, 1, &vb.m_ptr, &stride, &offset); - s_renderCtx.setInputLayout(vertexDecl, s_renderCtx.m_materials[materialIdx]); + s_renderCtx.setInputLayout(vertexDecl, s_renderCtx.m_program[programIdx]); if (invalidHandle != state.m_instanceDataBuffer.idx) { diff --git a/src/renderer_d3d11.h b/src/renderer_d3d11.h index 62483686..f3fc20d8 100644 --- a/src/renderer_d3d11.h +++ b/src/renderer_d3d11.h @@ -171,9 +171,9 @@ namespace bgfx uint8_t m_numPredefined; }; - struct Material + struct Program { - Material() + Program() : m_vsh(NULL) , m_fsh(NULL) { diff --git a/src/renderer_d3d9.cpp b/src/renderer_d3d9.cpp index 6dbf66ee..a2d6148c 100644 --- a/src/renderer_d3d9.cpp +++ b/src/renderer_d3d9.cpp @@ -725,7 +725,7 @@ namespace bgfx VertexBuffer m_vertexBuffers[BGFX_CONFIG_MAX_VERTEX_BUFFERS]; Shader m_vertexShaders[BGFX_CONFIG_MAX_VERTEX_SHADERS]; Shader m_fragmentShaders[BGFX_CONFIG_MAX_FRAGMENT_SHADERS]; - Material m_materials[BGFX_CONFIG_MAX_MATERIALS]; + Program m_program[BGFX_CONFIG_MAX_PROGRAMS]; Texture m_textures[BGFX_CONFIG_MAX_TEXTURES]; VertexDeclaration m_vertexDecls[BGFX_CONFIG_MAX_VERTEX_DECLS]; RenderTarget m_renderTargets[BGFX_CONFIG_MAX_RENDER_TARGETS]; @@ -1675,9 +1675,9 @@ namespace bgfx DX_CHECK(s_renderCtx.m_device->SetRenderState(D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_RED|D3DCOLORWRITEENABLE_GREEN|D3DCOLORWRITEENABLE_BLUE) ); DX_CHECK(s_renderCtx.m_device->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID) ); - Material& material = s_renderCtx.m_materials[m_material.idx]; - s_renderCtx.m_device->SetVertexShader( (IDirect3DVertexShader9*)material.m_vsh->m_ptr); - s_renderCtx.m_device->SetPixelShader( (IDirect3DPixelShader9*)material.m_fsh->m_ptr); + Program& program = s_renderCtx.m_program[m_program.idx]; + s_renderCtx.m_device->SetVertexShader( (IDirect3DVertexShader9*)program.m_vsh->m_ptr); + s_renderCtx.m_device->SetPixelShader( (IDirect3DPixelShader9*)program.m_fsh->m_ptr); VertexBuffer& vb = s_renderCtx.m_vertexBuffers[m_vb->handle.idx]; VertexDeclaration& vertexDecl = s_renderCtx.m_vertexDecls[m_vb->decl.idx]; @@ -1690,7 +1690,7 @@ namespace bgfx float proj[16]; matrix_ortho(proj, 0.0f, (float)width, (float)height, 0.0f, 0.0f, 1000.0f); - PredefinedUniform& predefined = material.m_predefined[0]; + PredefinedUniform& predefined = program.m_predefined[0]; uint8_t flags = predefined.m_type; s_renderCtx.setShaderConstantF(flags, predefined.m_loc, proj, 4); @@ -1808,14 +1808,14 @@ namespace bgfx s_renderCtx.m_fragmentShaders[_handle.idx].destroy(); } - void Context::rendererCreateMaterial(MaterialHandle _handle, VertexShaderHandle _vsh, FragmentShaderHandle _fsh) + void Context::rendererCreateProgram(ProgramHandle _handle, VertexShaderHandle _vsh, FragmentShaderHandle _fsh) { - s_renderCtx.m_materials[_handle.idx].create(s_renderCtx.m_vertexShaders[_vsh.idx], s_renderCtx.m_fragmentShaders[_fsh.idx]); + s_renderCtx.m_program[_handle.idx].create(s_renderCtx.m_vertexShaders[_vsh.idx], s_renderCtx.m_fragmentShaders[_fsh.idx]); } - void Context::rendererDestroyMaterial(FragmentShaderHandle _handle) + void Context::rendererDestroyProgram(FragmentShaderHandle _handle) { - s_renderCtx.m_materials[_handle.idx].destroy(); + s_renderCtx.m_program[_handle.idx].destroy(); } void Context::rendererCreateTexture(TextureHandle _handle, Memory* _mem, uint32_t _flags) @@ -1902,7 +1902,7 @@ namespace bgfx } DX_CHECK(device->SetRenderState(D3DRS_FILLMODE, m_render->m_debug&BGFX_DEBUG_WIREFRAME ? D3DFILL_WIREFRAME : D3DFILL_SOLID) ); - uint16_t materialIdx = invalidHandle; + uint16_t programIdx = invalidHandle; SortKey key; uint8_t view = 0xff; RenderTargetHandle rt = BGFX_INVALID_HANDLE; @@ -1939,7 +1939,7 @@ namespace bgfx view = key.m_view; - materialIdx = invalidHandle; + programIdx = invalidHandle; if (m_render->m_rt[view].idx != rt.idx) { @@ -2088,44 +2088,43 @@ namespace bgfx primNumVerts = s_primNumVerts[primIndex]; } - bool materialChanged = false; + bool programChanged = false; bool constantsChanged = state.m_constBegin < state.m_constEnd; rendererUpdateUniforms(m_render->m_constantBuffer, state.m_constBegin, state.m_constEnd); - if (key.m_material != materialIdx) + if (key.m_program != programIdx) { - materialIdx = key.m_material; + programIdx = key.m_program; - if (invalidHandle == materialIdx) + if (invalidHandle == programIdx) { device->SetVertexShader(NULL); device->SetPixelShader(NULL); } else { - Material& material = s_renderCtx.m_materials[materialIdx]; - device->SetVertexShader( (IDirect3DVertexShader9*)material.m_vsh->m_ptr); - device->SetPixelShader( (IDirect3DPixelShader9*)material.m_fsh->m_ptr); + Program& program = s_renderCtx.m_program[programIdx]; + device->SetVertexShader( (IDirect3DVertexShader9*)program.m_vsh->m_ptr); + device->SetPixelShader( (IDirect3DPixelShader9*)program.m_fsh->m_ptr); } - materialChanged = + programChanged = constantsChanged = true; } - if (invalidHandle != materialIdx) + if (invalidHandle != programIdx) { - Material& material = s_renderCtx.m_materials[materialIdx]; + Program& program = s_renderCtx.m_program[programIdx]; if (constantsChanged) { - Material& material = s_renderCtx.m_materials[materialIdx]; - material.m_vsh->m_constantBuffer->commit(); - material.m_fsh->m_constantBuffer->commit(); + program.m_vsh->m_constantBuffer->commit(); + program.m_fsh->m_constantBuffer->commit(); } - for (uint32_t ii = 0, num = material.m_numPredefined; ii < num; ++ii) + for (uint32_t ii = 0, num = program.m_numPredefined; ii < num; ++ii) { - PredefinedUniform& predefined = material.m_predefined[ii]; + PredefinedUniform& predefined = program.m_predefined[ii]; uint8_t flags = predefined.m_type&BGFX_UNIFORM_FRAGMENTBIT; switch (predefined.m_type&(~BGFX_UNIFORM_FRAGMENTBIT) ) { @@ -2242,7 +2241,7 @@ namespace bgfx Sampler& current = currentState.m_sampler[stage]; if (current.m_idx != sampler.m_idx || current.m_flags != sampler.m_flags - || materialChanged) + || programChanged) { if (invalidHandle != sampler.m_idx) { @@ -2272,7 +2271,7 @@ namespace bgfx } } - if (currentState.m_vertexBuffer.idx != state.m_vertexBuffer.idx || materialChanged) + if (currentState.m_vertexBuffer.idx != state.m_vertexBuffer.idx || programChanged) { currentState.m_vertexBuffer = state.m_vertexBuffer; diff --git a/src/renderer_d3d9.h b/src/renderer_d3d9.h index 678f45f8..3fc34372 100644 --- a/src/renderer_d3d9.h +++ b/src/renderer_d3d9.h @@ -258,7 +258,7 @@ namespace bgfx uint8_t m_numPredefined; }; - struct Material + struct Program { void create(const Shader& _vsh, const Shader& _fsh) { diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index 09235ed7..e8ebd582 100644 --- a/src/renderer_gl.cpp +++ b/src/renderer_gl.cpp @@ -210,7 +210,7 @@ namespace bgfx BGFX_FATAL(display, Fatal::OPENGL_UnableToCreateContext, "Failed to open X display (0)."); int glxMajor, glxMinor; - if (!glXQueryVersion(display, &glxMajor, &glxMinor)) + if (!glXQueryVersion(display, &glxMajor, &glxMinor) ) { BGFX_FATAL(false, Fatal::OPENGL_UnableToCreateContext, "Failed to query GLX version"); } @@ -474,7 +474,7 @@ namespace bgfx VertexBuffer m_vertexBuffers[BGFX_CONFIG_MAX_VERTEX_BUFFERS]; Shader m_vertexShaders[BGFX_CONFIG_MAX_VERTEX_SHADERS]; Shader m_fragmentShaders[BGFX_CONFIG_MAX_FRAGMENT_SHADERS]; - Material m_materials[BGFX_CONFIG_MAX_MATERIALS]; + Program m_program[BGFX_CONFIG_MAX_PROGRAMS]; Texture m_textures[BGFX_CONFIG_MAX_TEXTURES]; VertexDecl m_vertexDecls[BGFX_CONFIG_MAX_VERTEX_DECLS]; RenderTarget m_renderTargets[BGFX_CONFIG_MAX_RENDER_TARGETS]; @@ -837,10 +837,10 @@ namespace bgfx return ConstantType::End; } - void Material::create(const Shader& _vsh, const Shader& _fsh) + void Program::create(const Shader& _vsh, const Shader& _fsh) { m_id = glCreateProgram(); - BX_TRACE("material create: %d: %d, %d", m_id, _vsh.m_id, _fsh.m_id); + BX_TRACE("program create: %d: %d, %d", m_id, _vsh.m_id, _fsh.m_id); bool cached = false; @@ -916,13 +916,13 @@ namespace bgfx init(); } - void Material::destroy() + void Program::destroy() { GL_CHECK(glUseProgram(0) ); GL_CHECK(glDeleteProgram(m_id) ); } - void Material::init() + void Program::init() { GLint activeAttribs; GLint activeUniforms; @@ -1048,7 +1048,7 @@ namespace bgfx m_instanceData[used] = 0xffff; } - void Material::bindAttributes(const VertexDecl& _vertexDecl, uint32_t _baseVertex) const + void Program::bindAttributes(const VertexDecl& _vertexDecl, uint32_t _baseVertex) const { uint32_t enabled = 0; for (uint32_t ii = 0; Attrib::Count != m_used[ii]; ++ii) @@ -1102,7 +1102,7 @@ namespace bgfx } } - void Material::bindInstanceData(uint32_t _stride, uint32_t _baseVertex) const + void Program::bindInstanceData(uint32_t _stride, uint32_t _baseVertex) const { uint32_t baseVertex = _baseVertex; for (uint32_t ii = 0; 0xffff != m_instanceData[ii]; ++ii) @@ -1698,14 +1698,14 @@ namespace bgfx GL_CHECK(glDisable(GL_ALPHA_TEST) ); #endif // BGFX_CONFIG_RENDERER_OPENGL - Material& material = s_renderCtx.m_materials[m_material.idx]; - GL_CHECK(glUseProgram(material.m_id) ); - GL_CHECK(glUniform1i(material.m_sampler[0], 0) ); + Program& program = s_renderCtx.m_program[m_program.idx]; + GL_CHECK(glUseProgram(program.m_id) ); + GL_CHECK(glUniform1i(program.m_sampler[0], 0) ); float proj[16]; matrix_ortho(proj, 0.0f, (float)width, (float)height, 0.0f, 0.0f, 1000.0f); - GL_CHECK(glUniformMatrix4fv(material.m_predefined[0].m_loc + GL_CHECK(glUniformMatrix4fv(program.m_predefined[0].m_loc , 1 , GL_FALSE , proj @@ -1727,8 +1727,8 @@ namespace bgfx IndexBuffer& ib = s_renderCtx.m_indexBuffers[m_ib->handle.idx]; GL_CHECK(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ib.m_id) ); - Material& material = s_renderCtx.m_materials[m_material.idx]; - material.bindAttributes(m_decl, 0); + Program& program = s_renderCtx.m_program[m_program.idx]; + program.bindAttributes(m_decl, 0); GL_CHECK(glDrawElements(GL_TRIANGLES , _numIndices @@ -1931,14 +1931,14 @@ namespace bgfx s_renderCtx.m_fragmentShaders[_handle.idx].destroy(); } - void Context::rendererCreateMaterial(MaterialHandle _handle, VertexShaderHandle _vsh, FragmentShaderHandle _fsh) + void Context::rendererCreateProgram(ProgramHandle _handle, VertexShaderHandle _vsh, FragmentShaderHandle _fsh) { - s_renderCtx.m_materials[_handle.idx].create(s_renderCtx.m_vertexShaders[_vsh.idx], s_renderCtx.m_fragmentShaders[_fsh.idx]); + s_renderCtx.m_program[_handle.idx].create(s_renderCtx.m_vertexShaders[_vsh.idx], s_renderCtx.m_fragmentShaders[_fsh.idx]); } - void Context::rendererDestroyMaterial(FragmentShaderHandle _handle) + void Context::rendererDestroyProgram(FragmentShaderHandle _handle) { - s_renderCtx.m_materials[_handle.idx].destroy(); + s_renderCtx.m_program[_handle.idx].destroy(); } void Context::rendererCreateTexture(TextureHandle _handle, Memory* _mem, uint32_t _flags) @@ -2026,7 +2026,7 @@ namespace bgfx matrix_mul(viewProj[ii].val, m_render->m_view[ii].val, m_render->m_proj[ii].val); } - uint16_t materialIdx = invalidHandle; + uint16_t programIdx = invalidHandle; SortKey key; uint8_t view = 0xff; RenderTargetHandle rt = BGFX_INVALID_HANDLE; @@ -2063,7 +2063,7 @@ namespace bgfx GREMEDY_SETMARKER("view"); view = key.m_view; - materialIdx = invalidHandle; + programIdx = invalidHandle; if (m_render->m_rt[view].idx != rt.idx) { @@ -2227,33 +2227,33 @@ namespace bgfx primNumVerts = s_primNumVerts[primIndex]; } - bool materialChanged = false; + bool programChanged = false; bool constantsChanged = state.m_constBegin < state.m_constEnd; bool bindAttribs = false; rendererUpdateUniforms(m_render->m_constantBuffer, state.m_constBegin, state.m_constEnd); - if (key.m_material != materialIdx) + if (key.m_program != programIdx) { - materialIdx = key.m_material; - GLuint id = invalidHandle == materialIdx ? 0 : s_renderCtx.m_materials[materialIdx].m_id; + programIdx = key.m_program; + GLuint id = invalidHandle == programIdx ? 0 : s_renderCtx.m_program[programIdx].m_id; GL_CHECK(glUseProgram(id) ); - materialChanged = + programChanged = constantsChanged = bindAttribs = true; } - if (invalidHandle != materialIdx) + if (invalidHandle != programIdx) { - Material& material = s_renderCtx.m_materials[materialIdx]; + Program& program = s_renderCtx.m_program[programIdx]; if (constantsChanged) { - material.m_constantBuffer->commit(); + program.m_constantBuffer->commit(); } - for (uint32_t ii = 0, num = material.m_numPredefined; ii < num; ++ii) + for (uint32_t ii = 0, num = program.m_numPredefined; ii < num; ++ii) { - PredefinedUniform& predefined = material.m_predefined[ii]; + PredefinedUniform& predefined = program.m_predefined[ii]; switch (predefined.m_type) { case PredefinedUniform::ViewRect: @@ -2398,7 +2398,7 @@ namespace bgfx Sampler& current = currentState.m_sampler[stage]; if (current.m_idx != sampler.m_idx || current.m_flags != sampler.m_flags - || materialChanged) + || programChanged) { if (invalidHandle != sampler.m_idx) { @@ -2434,7 +2434,7 @@ namespace bgfx } } - if (currentState.m_vertexBuffer.idx != state.m_vertexBuffer.idx || materialChanged) + if (currentState.m_vertexBuffer.idx != state.m_vertexBuffer.idx || programChanged) { currentState.m_vertexBuffer = state.m_vertexBuffer; @@ -2475,13 +2475,13 @@ namespace bgfx baseVertex = state.m_startVertex; VertexBuffer& vb = s_renderCtx.m_vertexBuffers[state.m_vertexBuffer.idx]; uint16_t decl = vb.m_decl.idx == invalidHandle ? state.m_vertexDecl.idx : vb.m_decl.idx; - const Material& material = s_renderCtx.m_materials[materialIdx]; - material.bindAttributes(s_renderCtx.m_vertexDecls[decl], state.m_startVertex); + const Program& program = s_renderCtx.m_program[programIdx]; + program.bindAttributes(s_renderCtx.m_vertexDecls[decl], state.m_startVertex); if (invalidHandle != state.m_instanceDataBuffer.idx) { GL_CHECK(glBindBuffer(GL_ARRAY_BUFFER, s_renderCtx.m_vertexBuffers[state.m_instanceDataBuffer.idx].m_id) ); - material.bindInstanceData(state.m_instanceDataStride, state.m_instanceDataOffset); + program.bindInstanceData(state.m_instanceDataStride, state.m_instanceDataOffset); } } diff --git a/src/renderer_gl.h b/src/renderer_gl.h index e61b3fd8..dfc5e8a6 100644 --- a/src/renderer_gl.h +++ b/src/renderer_gl.h @@ -369,7 +369,7 @@ namespace bgfx GLuint m_rbo; }; - struct Material + struct Program { void create(const Shader& _vsh, const Shader& _fsh); void destroy(); diff --git a/src/renderer_null.cpp b/src/renderer_null.cpp index 885f53b9..4ce3ce05 100644 --- a/src/renderer_null.cpp +++ b/src/renderer_null.cpp @@ -97,11 +97,11 @@ namespace bgfx { } - void Context::rendererCreateMaterial(MaterialHandle /*_handle*/, VertexShaderHandle /*_vsh*/, FragmentShaderHandle /*_fsh*/) + void Context::rendererCreateProgram(ProgramHandle /*_handle*/, VertexShaderHandle /*_vsh*/, FragmentShaderHandle /*_fsh*/) { } - void Context::rendererDestroyMaterial(FragmentShaderHandle /*_handle*/) + void Context::rendererDestroyProgram(FragmentShaderHandle /*_handle*/) { } diff --git a/src/varying.def.sc b/src/varying.def.sc new file mode 100644 index 00000000..c957f50e --- /dev/null +++ b/src/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec4 v_color1 : COLOR1 = vec4(0.0, 1.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec3 v_normal : TEXCOORD1 = vec3(0.0, 1.0, 0.0); + +vec3 a_position : POSITION; +vec3 a_normal : NORMAL0; +vec4 a_color : COLOR0; +vec4 a_color1 : COLOR1; +vec2 a_texcoord0 : TEXCOORD0; diff --git a/src/vs_clear.sc b/src/vs_clear.sc new file mode 100644 index 00000000..5b321c5f --- /dev/null +++ b/src/vs_clear.sc @@ -0,0 +1,15 @@ +$input a_position, a_color +$output v_color0 + +/* + * Copyright 2011-2012 Branimir Karadzic. All rights reserved. + * License: http://www.opensource.org/licenses/BSD-2-Clause + */ + +#include "common.sh" + +void main() +{ + gl_Position = vec4(a_position, 1.0); + v_color0 = a_color; +} diff --git a/src/vs_debugfont.sc b/src/vs_debugfont.sc new file mode 100644 index 00000000..e319d5ea --- /dev/null +++ b/src/vs_debugfont.sc @@ -0,0 +1,17 @@ +$input a_position, a_color, a_color1, a_texcoord0 +$output v_color0, v_color1, v_texcoord0 + +/* + * Copyright 2011-2012 Branimir Karadzic. All rights reserved. + * License: http://www.opensource.org/licenses/BSD-2-Clause + */ + +#include "common.sh" + +void main() +{ + gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) ); + v_texcoord0 = a_texcoord0; + v_color0 = a_color; + v_color1 = a_color1; +} diff --git a/src/vs_debugfont_dx11.bin.h b/src/vs_debugfont_dx11.bin.h index 43006030..0482e352 100644 --- a/src/vs_debugfont_dx11.bin.h +++ b/src/vs_debugfont_dx11.bin.h @@ -1,180 +1,96 @@ -static const uint8_t vs_debugfont_dx11[2823] = +static const uint8_t vs_debugfont_dx11[1475] = { 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0xc0, 0x0a, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, // ...u_modelViewPr - 0x6f, 0x6a, 0x09, 0x00, 0x00, 0x0a, 0x40, 0x00, 0xdc, 0x0a, 0x44, 0x58, 0x42, 0x43, 0x49, 0xc3, // oj....@...DXBCI. - 0x37, 0x49, 0xa7, 0x55, 0xe6, 0x4d, 0x05, 0x66, 0x2d, 0x74, 0x33, 0xa1, 0xec, 0xf1, 0x01, 0x00, // 7I.U.M.f-t3..... - 0x00, 0x00, 0xdc, 0x0a, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xcc, 0x07, // ..........4..... - 0x00, 0x00, 0x54, 0x08, 0x00, 0x00, 0xe0, 0x08, 0x00, 0x00, 0x40, 0x0a, 0x00, 0x00, 0x52, 0x44, // ..T.......@...RD - 0x45, 0x46, 0x90, 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x01, 0x00, // EF........h..... - 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x05, 0xfe, 0xff, 0x00, 0x91, 0x00, 0x00, 0x5d, 0x07, // ..<...........]. + 0xc0, 0x01, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, // ...u_modelViewPr + 0x6f, 0x6a, 0x09, 0x00, 0x00, 0x01, 0x40, 0x00, 0x98, 0x05, 0x44, 0x58, 0x42, 0x43, 0x46, 0xbf, // oj....@...DXBCF. + 0xfc, 0xa7, 0xce, 0x2a, 0xea, 0x90, 0xbc, 0x31, 0x32, 0x0a, 0x66, 0x1f, 0xa2, 0x34, 0x01, 0x00, // ...*...12.f..4.. + 0x00, 0x00, 0x98, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x88, 0x02, // ..........4..... + 0x00, 0x00, 0x10, 0x03, 0x00, 0x00, 0x9c, 0x03, 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00, 0x52, 0x44, // ..............RD + 0x45, 0x46, 0x4c, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x01, 0x00, // EFL.......h..... + 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x05, 0xfe, 0xff, 0x00, 0x91, 0x00, 0x00, 0x18, 0x02, // ..<............. 0x00, 0x00, 0x52, 0x44, 0x31, 0x31, 0x3c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, // ..RD11<....... . 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, // ..(...$......... 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x00, 0xab, 0xab, 0xab, 0x5c, 0x00, // ..$Globals...... - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x0a, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x18, 0x05, // ................ - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x04, // ................ + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, // ..............@. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x01, // ................ + 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, // ..@...@......... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x05, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x31, 0x05, // ..............1. - 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x04, // ................ + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xd7, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x40, 0x00, // ..............@. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xdf, 0x01, // ................ + 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, // ......@......... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x05, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, // ......=......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x44, 0x05, // ..............D. - 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x04, // ................ + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, // ..............@. + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x01, // ................ + 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, // ..@...@......... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x05, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, // ......O......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ......`......... - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x84, 0x05, // ................ - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x05, // .. ............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x05, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x10, 0x00, // ..........0..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x05, // ................ - 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x05, // ..@............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x10, 0x00, // ..........P..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, // ................ - 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x05, // ..`............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x06, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x10, 0x00, // ..........p..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x06, // ................ - 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x05, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x06, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x10, 0x00, // ......>......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x49, 0x06, // ..............I. - 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x05, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x53, 0x06, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x10, 0x00, // ......S......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x06, // ..............^. - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x05, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x06, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x10, 0x00, // ......j......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x78, 0x06, // ..............x. - 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x05, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x85, 0x06, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x10, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x93, 0x06, // ................ - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x06, // ......@......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x06, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x80, 0x00, // ..........@..... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x06, // ................ - 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x24, 0x07, 0x00, 0x00, 0xc0, 0x09, 0x00, 0x00, 0x40, 0x00, // ......$.......@. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x30, 0x07, // ..............0. - 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa4, 0x06, // ......@......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x40, 0x07, 0x00, 0x00, 0x40, 0x0a, 0x00, 0x00, 0x40, 0x00, // ......@...@...@. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x51, 0x07, // ..............Q. - 0x00, 0x00, 0x80, 0x0a, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x06, // ......@......... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x52, 0x65, 0x66, // ......u_alphaRef - 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x00, 0xab, 0xab, 0xab, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, // .float.......... - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x04, 0x00, 0x00, 0x75, 0x5f, // ..............u_ - 0x74, 0x69, 0x6d, 0x65, 0x00, 0x75, 0x5f, 0x72, 0x67, 0x62, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, // time.u_rgbdispla - 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x75, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6c, 0x61, // cement.u_interla - 0x63, 0x65, 0x00, 0x75, 0x5f, 0x7a, 0x6f, 0x6f, 0x6d, 0x00, 0x75, 0x5f, 0x73, 0x74, 0x72, 0x65, // ce.u_zoom.u_stre - 0x6e, 0x67, 0x74, 0x68, 0x00, 0x75, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x00, 0x66, 0x6c, // ngth.u_center.fl - 0x6f, 0x61, 0x74, 0x32, 0x00, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, // oat2............ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x05, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x65, 0x73, 0x68, // ......X...u_mesh - 0x54, 0x69, 0x6c, 0x65, 0x55, 0x56, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x00, 0x01, 0x00, // TileUV.float3... - 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x05, // ................ - 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x61, 0x74, 0x44, 0x69, 0x66, 0x66, 0x75, 0x73, 0x65, 0x00, 0x66, // ..u_matDiffuse.f - 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, // loat4........... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0x05, 0x00, 0x00, 0x75, 0x5f, 0x68, 0x69, 0x67, 0x68, // ..........u_high - 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x75, 0x5f, 0x6c, 0x69, 0x67, // lightColor.u_lig - 0x68, 0x74, 0x44, 0x69, 0x72, 0x00, 0x75, 0x5f, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6d, 0x62, // htDir.u_lightAmb - 0x69, 0x65, 0x6e, 0x74, 0x00, 0x75, 0x5f, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, 0x66, 0x66, // ient.u_lightDiff - 0x75, 0x73, 0x65, 0x00, 0x75, 0x5f, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x70, 0x65, 0x63, 0x75, // use.u_lightSpecu - 0x6c, 0x61, 0x72, 0x00, 0x75, 0x5f, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x75, // lar.u_fogColor.u - 0x5f, 0x66, 0x6f, 0x67, 0x41, 0x72, 0x67, 0x73, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x52, // _fogArgs.u_viewR - 0x65, 0x63, 0x74, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x00, // ect.u_viewTexel. - 0x75, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x75, 0x5f, // u_shadowColor.u_ - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 0x72, 0x67, 0x73, 0x00, 0x75, 0x5f, 0x63, 0x6f, 0x6e, // filterArgs.u_con - 0x74, 0x6f, 0x75, 0x72, 0x41, 0x72, 0x67, 0x73, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x00, // tourArgs.u_view. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x00, 0xab, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, // float4x4........ - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x06, 0x00, 0x00, 0x75, 0x5f, // ..............u_ - 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0xab, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, // viewProj........ - 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x06, 0x00, 0x00, 0x75, 0x5f, // ..............u_ - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x00, // model......... . - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x06, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // ..........u_mode - 0x6c, 0x56, 0x69, 0x65, 0x77, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // lView.u_modelVie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // wProj.u_modelVie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x58, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // wProjX.u_viewPro - 0x6a, 0x58, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, // jX.Microsoft (R) - 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, // HLSL Shader Com - 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, 0x2e, 0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, 0x2e, 0x33, // piler 9.29.952.3 - 0x31, 0x31, 0x31, 0x00, 0xab, 0xab, 0x49, 0x53, 0x47, 0x4e, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, // 111...ISGN...... - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......h......... - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x71, 0x00, // ..............q. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ......q......... - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x77, 0x00, // ..............w. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, // ......POSITION.C - 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x4f, 0x53, // OLOR.TEXCOORD.OS - 0x47, 0x4e, 0x84, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x68, 0x00, // GN............h. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......t......... - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x74, 0x00, // ..............t. - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......z......... - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x53, 0x56, // ..............SV - 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, // _POSITION.COLOR. - 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x45, 0x58, 0x58, 0x01, // TEXCOORD..SHEXX. - 0x00, 0x00, 0x50, 0x00, 0x01, 0x00, 0x56, 0x00, 0x00, 0x00, 0x6a, 0x08, 0x00, 0x01, 0x59, 0x00, // ..P...V...j...Y. - 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x5f, 0x00, // ..F. ........._. - 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, // ..r......._..... - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x02, 0x00, // ......_......... - 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x67, 0x00, // .._...2.......g. - 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, // ... ..........e. - 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, // ... ......e.... - 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x32, 0x20, 0x10, 0x00, 0x03, 0x00, // ......e...2 .... - 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, // ..h.......8..... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, // ......V.......F. - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, // .........2..... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, // ......F. ....... - 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, // ..........F..... - 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, // ..2...........F. - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x00, 0x00, // ............... - 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, // ..F............ - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, // ......F.......F. - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, // .........6.... - 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, // ......F.......6. - 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x02, 0x00, // ... ......F..... - 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x32, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x10, // ..6...2 ......F. - 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, // ......>...STAT.. - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................ + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x40, 0x00, // ..............@. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, // ................ + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ..............u_ + 0x76, 0x69, 0x65, 0x77, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x00, 0x03, 0x00, // view.float4x4... + 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x01, // ................ + 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x75, 0x5f, 0x6d, // ..u_viewProj.u_m + 0x6f, 0x64, 0x65, 0x6c, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, // odel.u_modelView + 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // .u_modelViewProj + 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // .u_modelViewProj + 0x58, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x58, 0x00, 0x4d, 0x69, // X.u_viewProjX.Mi + 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, // crosoft (R) HLSL + 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, // Shader Compiler + 0x20, 0x39, 0x2e, 0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, 0x2e, 0x33, 0x31, 0x31, 0x31, 0x00, 0xab, // 9.29.952.3111.. + 0xab, 0xab, 0x49, 0x53, 0x47, 0x4e, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, // ..ISGN.......... + 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ..h............. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........q..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, // ................ + 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ..q............. + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........w..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x03, // ................ + 0x00, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, // ..POSITION.COLOR + 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x84, 0x00, // .TEXCOORD.OSGN.. + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........h..... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ + 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ..t............. + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x01, 0x00, // ..........t..... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, // ................ + 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ..z............. + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, // ..........SV_POS + 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, // ITION.COLOR.TEXC + 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x45, 0x58, 0x58, 0x01, 0x00, 0x00, 0x50, 0x00, // OORD..SHEXX...P. + 0x01, 0x00, 0x56, 0x00, 0x00, 0x00, 0x6a, 0x08, 0x00, 0x01, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, // ..V...j...Y...F. + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, // ........._...r. + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, // ......_......... + 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5f, 0x00, // .._..........._. + 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, // ..2.......g.... + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, // ..........e.... + 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x02, 0x00, // ......e.... .... + 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x32, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x68, 0x00, // ..e...2 ......h. + 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, // ......8......... + 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..V.......F. ... + 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, // ......2......... + 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x06, 0x10, // ..F. ........... + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, // ......F.......2. + 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..........F. ... + 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, // ..............F. + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, // ........... .... + 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..F.......F. ... + 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, // ......6.... .... + 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, // ..F.......6.... + 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x36, 0x00, // ......F.......6. + 0x00, 0x05, 0x32, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x03, 0x00, // ..2 ......F..... + 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00, 0x08, 0x00, // ..>...STAT...... + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....... + 0x00, 0x00, 0x00, // ... }; diff --git a/tools/bin/shaderc.exe b/tools/bin/shaderc.exe new file mode 100644 index 0000000000000000000000000000000000000000..9073f7df85966defb526fddc9cdcc02f3444056d GIT binary patch literal 1117696 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%0Da05 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
  • >Q?%W6&A<1bsB^1kgzSgYtzuc^(a2daSxbMc*g{uSC23*TO)rG4YSD)?o zF6=X?R?Hy>jepAXeq;68W0lORaC)Jn&4m~;^38W^GuicjG zE|g3nR~vBaNB#t0x8s-H3k7DbayJa!D{ylau9>*5#5D)kLKwu?!!W)K_jlvEAJ+{q zp09+_JBN&4{IgoE!j7h`?nZ5Wz%Z@T;4;|Isw3}0N8WCLkz11(Tt*;6gcl~u~E_;37chgE+Uyv8_a5yc&~GmfxF6fjf3g6Kk&>P0#QRRr$15!?y}MBl)i#&CSVftwlI&C~q*qD!6Tm77+H@n&98isVl{iO5%cyPC zPU0-e*8z$c>C{$xSua{_M0r8mrJ&9VTy4rqWu4NhG~@0jOhnwqREtRFvvZ=jchfE` zeGCriWErFWiJ`B09egRc*iId~C%U$whe^T`c0anJWLoG4(WxP2sfBn`Q6 z+_{rFq-y*U<=b#=K|RF7)H7G0o<3XziST!(6Bh2?fMtswAfBYYCJiEZTLrI08N)98 zQjg9>PU_n(K(^y*a74E&h1$F&+TKPk5Zzx2>_|gInEz7@SHKc9i{d@$ifwv3!_mc% z?P{H#ZOTTb0#W8lTtrXOmqKm{A9_Qy>%m*1RTR=?ZyDX^>jkSelHsi=?_XO_B*k=S z!wuC<|2nxBh2FC$L$#7N?+2!IFKClOTVlYr4XqQrLwX{LHwJeJnB(wczv!*~neOSI z*E?WlKzh2jdMk~#J@5sCPCgrnFE;7s0y>Y2I|Ck=|y<#2k zT*#A+ve~1+PeC`f!~5H0hO|_2g4<#3ke|9?W^xt^&rG%@qA7|HDGKbwHW==RRKV10 zgPn|6juCr_fa=sg)N9n^Ru74Bp%dJYVD0BjC;Uj)+^qNZCWfFw2CV$5hkj52OYj$m z;1nY)N1la15a9&!J1C+c{GVR6o2`Gpyoo4+R4`{jDg;DSM1VTx#CyBRmDde$Kqb0> z7D}v_{*t^>t4aP4&orwi0wOdfOx+0iCL+pVc{#|Q(@wX2V5h4Ww?`5QSlSFcktT&I zs_cruET{ITErPHQ7VU>O-@Q$tm~u3dWSv948N<;vGW(^%#wUL-w}xve>c*i6vZ7~$ zYv8}&4je!uA?d9IIDzaG3Nq#6%H+Kq|+ttQ_&gY?3reFqnZE%48I@ zPsGZcK!r0C0qge8L9{EHh_$Pb;RuHp1YR6tGT|^{%ycFo46nYhb-d8YOK)9qt2%G) zyc*(36Ql@bz%^!7LB6&PG;0ggH<$Rl8oaiJ#EmSPSZ@-+-dKAKqhvB8Jw%8<{~a3Li^@xwHgr~ND~ZR zl>@Wn&B9?#c11ckh5{EpVyOg*39z~Vd{IEybsHYPNooCK_yN~hI^ChiJ;ne}o&Ud3 z9@ok1<>7eM^DOXr0{HX|0}kQG@t0o2MIi}Li>WRQ2;feR@<9W^`Pa3c&bLHkifO4P zC)uQh1HpaWG2OxDJ}~m3983;UYVP756;nMMBM4VHfH0qV=3W#}cX#mE5CdO;U!fR@ zwJ@x40wPox;k~C7lI5<5omJ?=B;>4NpT}c*Sg9vy;x<_pu=2bwgdU^ zShm8f!XPaICzwKtZi>Q!zBM3yBO>Rba}dT!Vo~@6V#VAR3qKid!EH}pEurzwnUf3KxD5+u`)#stQBiktWcyBs_>D(AJ zGgLMy+DISd5&aJZv#Gmn38sw~)4Ua6i21ABa>?9+JjCXf&H<$$q!H!GLx@7#jV+7G zq$S1!gKdeniJAyhh5bTkreELjpnq4#&eBW9_9HVM+u%c}4?pHbvvm&X`8l z0Xd-1v;Z&?fLu^Gev0nF)CggOH4M4EwSk6y>N3XG*>9aR*G~q3UNIx2ZqWN+Q5>Eg zHMB3*AMI{yM@G05rba{iv3McY+m`Nw?6-ACI|&7QS;9xBmyI$;Z$XGm1*#fT?uwn> z79DI|1Ad175PFC7o=JbIjq4LZcy70?9EunvH^h1wbZ=^wK3BFeNFemB_8XT zWm!e0Oy?Sf$ZPsETwhm&{FvT31OPf5#!0Uj=*R{K6Cu%fZB7o`Z8-*FVM@5LhXT`v z>xRrlp*+dr2P4H{`$8O2vEDSfHOfY~LNvF(p(6&lM&EIS-&HWD*O6afI!kaoP-GWu zHdSLb4`dd(h)_losV+y^tvrLvLp!zD4nS`jk%T~C$bg>cjL-xyW|Z1vP2rgbOeEf6-f&-c<2BZ29)oJv(-RaYMU^E;DjZymc^*cRA@=8XK>~Zp}m5TL*iAx?Z^G%!MWv z)HE9$RGHr|Csi@0i!1=!fXdV0wzVy)kR>$=%d9;mJd9zw{PcG44eVyJxr}r+n0DA=L^hLNfz3W=YYdi#uj z3x!{=Gq_Z*#w#(KPuh;Rk1aN@zQ!={P6^6Pf9=m`&a4pG`bW4L2fH|-=gnXh%4 zs_-ieHK%q#_OL*T;-tcWfSZVwOr}1^2xR6J+1N5g>%Ggo_Q;0wWi>TO$1^Kye{1ltkPseK{>JAp8ta3a#*s!K1;d zG@=Q0B#Ds)RSag())>kRL)4a&;N`$TaWf-#xnb$rn9CZCP(Ixo1HpSpFL97puiOGl z7&%PytMJCOso|^Xt_fhd%jzQ-^1IXYnrWOd6b94}nZ?~OT$vb1u}K^2L5c%9@^CBj zWCTtemg78;Zn6eohehrYAwXhJEXJWVjc}r&$dDcDT=6J;OfCg`oD`cLXCO|1QI4^Q z#x^_%x_Mz~j;a%63xmM^IldjV>v?$SF-04^L%Y9ee58zk{wy-GDX(GVapUcR>d$df zRN><$rOFa>!TCo|>MH@`@N=U!PhX!OGRX$9C8wU+hj@=kE>S1h#8#+8{A2lQ*4#ih{1nnt(4)i} z2CD2qdPuimJ)s1knLHq}#=v}nvH`>?DnQVl770@DAM1^6$YDQ0PhZLy=XexDURDs6 zw(f}}?t$o-jy-0)ykZ+Lt1wYWgF#?;(*G0*jfsG0L{z13}=q7QiLl&Pzn~iCn$emfVXV3f3XSda+=Yg@x1- zjR0(6n2?i>JbKWC0x0~R+F%ADtN{g0?L<5cGkrX=aptS_Q9Gi;1^&_0n^=NvOgL&yt9&s2u4 zcrrz)Wb%oSi$DXKn^z~ZaVxq`X~tdx%pdZ)Zhh8|yOsS+3148nswj8jqLWhSoQJn@ z(MDl9%7jj6ptBU{)B`$ugiZ;eGd)h=qQflc*a_PDOPh3QOYJmVGjPquMO(NR;#!RB zR$R1?`7T@?xahQi`*D2+7aa@mG_L1xy^M=?#-6}+1{ZDNq^+8?C6;!%(zaFFhuVjW zw%yW>SlZ)Cn^tKTD(%tzCNAS&)6pj7jlXG9SZMGv4by|tD5_7t@XN`Cqu)CHm)tmI zqn<#<90ffS5HGpkI1Vzw|z>zo%b%PrvjYT+i_7w;u`oiv;}E^&^FTkxe{{_x1Yw zdObgZG3>K>i>>=w$Ne1?2{QB5+0quJH)2hrm^z-fcm>Y^8_%__XM*F*L*?~1Cj5De zZ=_`v=5uY%vz~4iv+Cn=*87-=7-*^AQ^SmVYKU>q4M7`?X9Ef2*+3#~gK69oOyizl z8utcF;a=?}7aRw<%c7T-abAl_;>3TMA;zQU-6FB9+JwAK|&@UnVbJS{B8X}x8 zrhuxkf%=-7YZ|YvGm5j)$@iz47feQyu#KxtHG-P?A9bQlhY=4*_A6yo{TskphKqkl z^h4>PK=f%F`tZmf5`9^=X08rIzkY<#Hw42zERau-84yT;usoS=*m7`S=xgf35@NKWHNK%{b8&T^K&;hgMhH@|f@ zn_o$_nsZjq^J{dm1<|9?b*gWp>r}5svq;4;E~i5JdH|%P>%FjoqjATVg4UVexuf?rUPs zTwx4}n}pqB;%1|+`7Rv3di(Ahfrdy}Kqk^&4e@$cq{iv3-s;(EeSop^Tkp2f;WwHH zG|i>FUe^dQ)QD6r%LI8U*ZU&Z4u)Ns(;*`>++Q(qf^OluM{07ytf5 z@WP7Q;gyhEb3P13%^vNVQ!}@AUj5ZI^X8LR!tL{*ieA4I2A=+m7cD$9x+z~Xw`Ts; z4Od@%O)b$UPa#*AT#+ZIN8?;H^sd8=8E98iH?O9)v7y1Fol3oL{L3B2$ovv`1xA|K zQu8;bIg7V=agv;Lan_K+Wz_7HEm5hLXqk0@va*uJWpca5Em)kb0J-9F9%AKLty`*W z)p|53NT}?UJ7vnddQXP5iO=SMxdD2VaJ`%=OlDs50vaCr>${S?XK2Sp5PUV_il!j zkSDWpnd&_`*+u#*^9&)bjx9i*2whJs3P!(3@>Fb3IIldx;gyvqc)_9N32w57JP9wG z*(|5KMIGVf35K~n@SIPc;Q5Oh!`OY0L%j(uj&N7Y;B$3{QLQ&)_!@oo%4Mqe&rUCmw#*IT%+(fX;1F+g&yL{re}b>TEW|pjJBCR_lni5i>gH zXNqm8c!U@WjH|jDjls#@z4m*1SF@>buEteejV@MP75jH`IzN0|Wm_8^P}t_-{@LdQ z-2#enfP)vtl!pn&NN^QNB=6PJJOrMGEfJ9MPzGk2#U8oUkqo#{p&)|})IA;|#$x;% zuJ3Fj<65YZhlWDhb?n@D8woZNa)~??DujN*2$yC-5TZ`a zPe0)hxEYX(k##4MJZR*XHVpm?Wg8blKVk8OpMI2xuumcj&9y zw#G^|7FlgGVtt;e{UTNTt=3IHE2jY@VFJMkt#&2GvnJQuO-6gFcU0FuH-=0PeHNWF zpQfE{O2Y&8Hqv>j(F!O{v5iNqrkQXBsxr47@NfAakVLAD44%NS@6$w@5b=X%g9S!JtMawn)mn_-4$9;#wW*ssuYO)b zBVyY4S9mR$XP2(Us>Zsrh-G47Bw9&swoPv8HL~U52Fl^VR!*0i_{wa%JZWvlpQt9c z2aR=1hT@HbOF<#lln5(eOSmsn=OL10VtU9%bOnpIJU{ks@Qi@)2D_zw^ zzdF^_xn7BRiHkAZ=oGW%PR*6S<+eouIW4!PI9qP?-v|=dsNz1zm_^|Ht*}k~=d{9> z;%tR%|An(TjDB$UU%h?JpHnzsLm1^g=s(&1GgxG+B#YSAN#s;vOOap^$T;Mjf=u{l zUta;MpeslGEt^YrWxGwr4F+|MydH*5&0LxQr4iiz&uyY0W&!;P73BhYm8&#Ca_7Ua z?;4HBb~2>YY=9jRPe@)1L~|g~@aCyhi#~~KYZVV<)xi|yd|m|QgkXAdHaj^*#aJ5{ zj+$J|PE2n&d1)DHfHJ$c+O#rktc035bY*e~zmTJ49gZe)GbaO(q9w=Paw;x_md=&S zq5-*Z^3pQYU=c`5j)>Wtgaw6Cd|985mi4L>EqSSAPQ|%22-FuKopTvAzo2lXgTHlJ z3Y}`xr|r>L?gGj1>QpR06R3J}tZ)XYE(@u=Yu3Lt8b^@r%R~|}IWh$==QF$oV zmZ`ixZ{?ojD^76g>7$;snb!p}gu%K_16;5IFrR0RqwOZDK(J?_yHpBc*G zGshzUJDwpc_~+qNgl9wVHZueIG}%b^Z!zb}ZLoM*r1pmA{JiburOEla7)Wz^V0-IS zkM`nak=h$x*z&fQ7q9xXm(v5=Tkq9gyev|CL-Dg%_wL=`VhQmWW9d<9@>t^PQEKu? zGIjyGT)nwk-vpaaiuGiFA*M{ZI*Z>GLxgD;sH_ZgUccToGvsYAODBe{fEIfSv4CC_ z#YLcGM<&i2)N0?c$%GKxYPTGV!bNMf?D$00@&Hql$EGqf`1Q5K5GCNa_?xRQTC0o4 z;bK#J-ZqQm;C`-kOSItmV###zxVuO#K8HBFNG)~`P&%&{qmSv#7ct}n&QDNQKmBE- z=VNLk-Jh#DSFRX~mqlqWiHB^1S(Mn5^&XY^U>hPy-X$4UpT=fjL9Lc>q68dQSA!Nsa-*mM*>Q^V`f@h`3u?8*I3+6bYITvEDXO4&9InfJ zUIy3G-&g!yv^KlPD(aju$=yY3vwO7CIldt6Z3Y7Eap58yAA|3ocSj|HcsP>77LOB! ziV=_tte%7z=ikZJE^DSS`vo_iv&q*kt7HKd8d9e12o2|HyUr0#ei-x9uKM;9+f12= zQ{jchUo;)$JvYnQT!nk1IL5^`?aHxYcC%~|a$+ROk)N{K*C=?*KXVrQ^fSMZo0FrLVCBj!DocV;@)0;KH;gGxHzS~Nb#!XHqbpr}VC8a>piY$~K`0>&B*8Fd zCOt_|FGT`9my-nb`A9&j!mcM0@nn)j!6_Y~SR;}rioxBp(RV=MEOQJ;!Z9_(NsubB z674?Qx~mAy2l4Cs`fUr*P?L#Ben^fY7Nl+V3J4PYGnTa2=+&{Lqd$jS;iudB3`Biq z%BUiX`%!}M$*CD63Z=&U>m_KaWVNCABe2>!*=j?HYhbnY-qnK6Vi}WNPC%F3gJMRk z-)%fSn*A@9t{7`#riT5sl_*$nagy0TW$4`AEHOjWd_9Ex;1CQFX&L zb8)c8HS=p&BMe(51meY7p%`d|VjUT@9NPg4rdBA{l0l1&0K)*4L`!Eq`#6J-4Mgx+ z?i`IDp7HwfMXUrr^qyARmfn#16HTO%l>dM)k~v~ZmaC|-Bq40zKSp;`^T5PE&MB&t*W zNQBh9Btn`8iR|mj-8AAQfMx?+Jw8ThRPRe8q~@g&(!6M7Us>%Y60hw$3q)cKV%Hz> z)UZ_tD=)oUb5`yP_C^L9^*lUdkF!{)JQ~Py@IK!V0%Y~*f3c7i1EGzN@#*eJ?t)i7=5th;LmVu6ooxr9 zEN@WB@RpCa(8=)z*QgeXYj|@gFRl`-LAcfzjH|5gD|*jILzo%-RfNb^C}m~2fNJqo z5oU&9Z0ic9tt=l9GQK*(%n*$2$a4a%5zs$X;mx*YhG1-K3#P3sClE5eoM2`M#&+a6 zfspa#1T#Z0wj<98JRux3wau&&jP1yCf|w!o(O_nVU~EU86U5wR0Jg;)9o%+9f01@Y z1Y0)nBppVgh|CN(R?Fn`tDIGtbltK#$5J@~b>~da2y{IxdD05Lf;%5`RN?nmy7w9|)~ zw?+~j)Sts*i{&~?0E`)cvcAT3vv2Bhe00D<(7|ftkZ5badwiG6APo8 z!&4r4$}y(0gbO8(K7^}NeF#^lo-2gQnY;JlxKOIZhj8_NgsVSi2$wVCZxRmDs!wOy z$3pr5WSJXIJAVu;#9$zovRQF|RJZhZXN z4E+1GJrqOB)Lx&zcIFCOoDE-iZcpWO2X~%ie{kM_by6Y^*JKd{i)xB6pad?>sikjN zx7%i8^41%Q2LkH_14z~zs`mryMb~@Qi+-o|Kc>Bs?v2scsqsX`E+e%dO+ctY#@hJO6Kub)<&BViNOuy1?YOsNCmG+b1K1ka*9y zx)-;iChL;UQn(T5X2iqWjd`*e1kTuLiTSyYh(Y`bCz6;`DMtq`vQ_{c_>8? z*m62G)Yea~&H}=S_0hTQwjSh{;ai>`kX*~%B5I)Sp#cJ0PUn3Fv>a}~yX9WXvkC{~ z)pA1<*z^Ea`$SUF#L6z$amf_O4sV?p2)hU;9b3HKQhPk+J0214^B6sOhCtLTV@UbN zm<3-3P4se&YJsSRVmGEiUaCq*6$?aFmH{Z%UA&2g0+E$fVCFPJzIk3VgG_X}KxAc^ zz??scB%3dB}cW0>PYK8;~!kkS|hVk^rBMIJc{#8#FQiac}_ zh^;Iqm_tK8PB1f!1x_gP;2}d>9zAS+MywZKQb|VnGkQ*+JABkFFcc_a3izUh!*{6h z^c@QFa{PiGYza%(Ez59#s=F-#b@P`zaIFWl(@tfsJR)FKQQ1>!2JD2hB@6o{>?rZC5Ye44_{Af+h^#8#FMiacTzh^;Iq z6nV%f5L;PJFo%SEoM2`c3!G5oK|_YNhJ#@rH}EwRrv?t=zzMHM(#_;A5eGWCWUC4l zDKk~7o3(zP85_USb<6S^ph~!|oJ+cHSsenX5*{h%%2T&Tyd%De$!;5pN0Jdd7l`LD zA{sCJ^Vo<;A`#ivh6VdpJc>?AFjw2tF_FC19`!jF@9<~Z zJ&HTNW@;6$_Q>k^RH>QOXoKyWtd!BCyc<&tMwbr*Q!egRlN(dY3QWzVaE3Czk6*hx zSylqjk9B^XOka%5)5&$JS0@vZq-aMma~JLSAR3S2Bht&#sCss@JgVWlnT5*EkkY8) zpxoh5m5Y1zpPM5oYZ#7{Rg2(A`jTZ{wNsy;BkR36l8zbi;3>B_d$J@SLgZ0=WLQ!f zS5Kal$F&$dDUGWqQ_ABSo+;h(BaJJ4PuiuHnOG?hmmXzqlmiI}k@(+gdPLMa(yCRhp%5DpzhwA~49P;o@>5H)S1;bbH!v@|cDnbj}?;R4}HVcAGp+N6>Do3!^cS*-v9qa$W(V zL@xpQKx2ZWUTVUY?mB)c-4LXi!{0>wdA|I}Imq7{k>ii52FjkK`HVoFR`Fny6k zq$i5a+evRRr^z!Pm8B>9D=f-X5CiZUCs{<9&-_p|G6W!7IKT25rV!}*DlN$cQ6gKx z)Rkpfs>WAwnHhqqTPV*`$AqA+zw(k}+|lHP;footEl_!J?}eakz3;#vP1^!Ffxh7@ ziLCLZ;Jk~?q;R#qBpg=J^4dIET$$T^G#CRTHu0A+k*y$=Kt*MTT+Zvqv}T52bPHr# zszFwRao!+wS;YmTTPWXB2Zv$?Uwq|Qmzipmn4vi6jv6x*2VGfaU}w^K4g$W&P3$oI z<$Qvv0Lig(OVU8s{Yn3?>Ov?e5T1i>2!>`p^igg`y1(=ZZY~g2SfIje80QT_S3-jcI0aKT95eXhD>e2Kx&^8*DjJR% zii7T`F+*|Cl~rP%{^V%QPX;)gm@F1Kd?qljbnN>P_O$I&9qcN4WWgtA%{@e-Q1!gI zHT)0Dxy{3_QC!Se+x8ZD)iKXqX0-fVZyK_E3G97H$hn*p-4!aG znt-DvzVZab(eSwpm@8fMwQZaH7K4DfRY((Xv;|Nep=^4;(2OLT@+evu zs-Zf+IH=YYNYzl?UmR5B7{E|p_U|!5e|3^oSl|K*{rj+9Cs4%Gsmt}`m^BKSt1FDO zl**$Mmx+`wlWp)@bo9a(lSq)>!%e^u5rX385Qbjq$B9@l4 zs#RwHyrkmPn1P?;kRVR-Ae7xY%%PMhB0(rS40%d1csSCb2qi1SL@4jQQ_NGGnwL;@ zsu!W`hMb#HC?i8DJCIPMs#C*~N>+yusl4|<8lVnAA`e$(XMLyzRzL;nP?n{$R56K}t~`C_ z8AhPR#I%K0Y;u6j4rdfe6Wcn02+O^1J7Lis>#kS(bWExRtJty_gH*&EU|i$ZMz199 zQs^NApy8U>$CHTH(3V4KU}l2%g0ayDhHYG9C4pFNMzVL#S?EVYPE6^-!j8*@z0@c07JuK*63WvV`T7(GTG}M^-0V&IYU1Z0Z}T!)thaUktJB zMH}PiH8jx3K92|adGoKP5&xP-bC~y|d+uQfHaQUMB~_uH^VJK zVI+_+FN|;vu{o(>!bs?+ya?FHYMF?hl%SBa4P84WY_D^JVccCIqG5iP2^hx;a-nBT z4m0qz2gID2&9mSvzOtLj&dm6bK`t8hc)K(6Rx5L^WsQsi5Pk}gT^ZAQ%*bw?imuKj z8)VnsWp2?e%z_(64sR<-5yFa77|{uZK6) z5yvOz43CUkn)Arxlkiw=R79n+i@zwVR4a1#5!FBs+1$L5X@%^%EVM%3L>SN)xtn=L zpcTyOx$D+@|Mkz(?GO(cN3h%nZTU zjyxw2GQON(W(dYsk`uh`2Q2rGCR!8mj&ysjVMkw|7NiXHU|46QjUaiBd&7xaP(6Q@ z#IZqzKXBb+l(S8Y!6x_kG-MB6n=>wSW|H`dwcUK@%4}{*8bw^&sL9#TnWTU^(IZZm zA#a`b{nqw6bEi{!IFT^2`94G&>F)*sg*vss4!}2qyt;tqHwx|phm#ee52P#g>ICmf zhu;aZ>K&a>UvMYj>?seP%=h&xIZ1FhiD7zyCIzMX-m4qDYaMPk$bYGo#nDF=aQ1*9 z{<+GCzS8Q|4YK5*Sd1f@kXJR>&VB$k20qptZa>ZV7Tg7n!)DBm&({UUB(r>-bPk1F zJMCv4*xTu$0w<~U?iqKitm8M{0FrG3dmhAYG4xP7K|e ztLy1YxL%zvt9QMm-dpbmOTBEJUPA9(XRy%A*6G#l-gV~dc8l3$>lB|6v_<9fj-&RI zSOUfuPdy|5Y0jYW#h2B7Gfix(<419XDWFm>cJm(AhRtsBdd=6B@MAVlttPMLz4V&5 znh(}%^0j(tHt$-4HJf~`Ub@Y@)?nQxU#l0pdDj|_-Jsya2?w_Q?S1jBIVN?1Gt+`` z5uq>_Han)S(SJH?nzTRYOHJ{85#dyg-9+V1g8?CL7!5ITMkNSfn>u99|A)Ra*p+n{JCc z3SO?RnOigOn)-&i+Q!-jW?Yx=N{kembNx_b&MXpU;TbgmGsk#29GZpa%K*$As#P8{ ziwzxo813wixCRQj7;zO+ZU}E9W zsW8NXDhfd?k-NCWf_ysGFD9a$iO4AEGjH(~IwhJikB)H!X+-KhhUi;UbqFIEjA^Fo z>cN9r-siT15QeVwC}SIC2|Ft*be&sOTIh((4A`A7KO#CN?jl#HtU^TNypl~qU}3m< zuWMmLWBMVSQ%u*^dVR4@M{D_j?uAx0_n=C1I#wT0U={&}(c6GyEoJr2%CxmIxp1}Q zOM(bQehWVv89Yd55!Rh}rIjex;naa{Fg7mArL%tp$$JyF^|JR6MQNDje`YTmW9zUD z&zRX?PUnsXHw;=v#g38p1JTt@C%so(j2j@jjup{4++lUL2UGbK92N0pwjlpU6~dlh zf;p$30CNVLlt{_1C}h#dEq6r{UtdaF^?OPFum!l72Hyt)oT7tNbH^VXV`S5-ZZ3L1 z3otgn>H;hy#CDg!t?nR?4(DH1h;?7U4Nwd%?*kz&rX%u!5Pu-V_!f?-#2|I`4k4Bi zWV^fSmOBPnz-X-dscwMhsvu)n$ldpph^Kpt^u-R{p!V^3xU#nBmZ<&XN29ybFDwe7 z>=h2e`jLT$l&~m-(zY@v)T{m|7;NH*4-=m>qvuFp+g9_kCnu^Nmt(6u zt7%L5q@w-eV*qAc!2sl5INyp@pEw6pPq0miQv&&(9%25GZH{OSB+Vl>u`w1&dNsIz zV{sa65=^g%+s`_|qn~d~BqH02(Af-UqtgAu5QNO5zFc-i?eP7E+7b5~WG#i_I1VA( zGa?#Fw#BBr$m*lo#l`U-bU3oZd7-1#wj9^c@)>hREYbC*0pr2v#nQn=VGjzQsD3Kg z$WWM7D9t`5{}ifkYZn(o*A|7QB8pY0u9YTP9?hC({I6YH6uVHKKm|)$u3;=c*o?N? z4IFO^HVj=%AWsBSk~}rBhdwH%T^N!*yoW49<>Yl$jSNN7Ng-%!5;sUq<)QQF>Zm~e zESioAK|)`(<+h`17vJGtoDK#E8EXh zCi4(3Z1^Z2eTy^}h9T}*8xOtX_d+0wtNTNfV{GtR2<26f{*P@M{?w`Y0S#-K%e6ey zd5$hh;Gf6zRjBDw|9W{KmaI0^6lq|!b*f~wvf~5|DFGj1<}5PR;v6r**@5%obmEtP zTPcTBozxeywQ|1&)XRBfYnJU?adu&F&2rt#XA6dCb5IA1vkE=iOp-*Nm3_R94PUGy zy_>qDfSogg?IGIsbu*$+5u`h~dYuboYnSB%fW;Y?fsN;ENqhm>)Vq2a@3x1Mb*b9x zA$#7n^QfB34_(xe!&)NaFB&4Ufc0$VnmO?XD_^l=S8x%tlKA6Z0F0IE*mU834~Da7 zOgQ*tb1`Rcbd#enjXMGx8!3p9Bt?~Z&YuvR#ZCu)AwdSt=cWR`4kUt=%SHo!DNBM- z@)1Y^UZZTX0ubRf&_SHQ`8-Kbr^=8(&*dZmc410#K`0>&BmwV)wv&KYkV=q%*Nx`L z0w_~2MFKsSlLXjX=}iJs74~tXCmv6AB~#J9VQY(M$EIkFDfeD0hA788-yAj)n=6it zFS4YJlAaqC%~V6>xb;d;q~E^L&?h4XQ)4@rkt^rd4gD$)O@>_&MudSr2WZ?2O5ugA z&xG!@6%fR772@4MImkF3UFw+kVR#mEWi>V&34r-e8nG>6rf)^Nnh})lv0J2$c8hp} zG9^kMUwBi!MVORO@xxK_0`Tw{m{qSg|8kPapcebm8I%T3n8`+G+NsI_B-mHv3&*`& z#>u?=%EpTC6W--!(0j_O5u*`c{ej9X{-`)rDrFi}m;v@tH7Hzv!u zIGZh4@p4T)p*gosb#X2>Q(3sZe>m5%1uRGDGVy#Fn~9Rkk8YJ~0LsmoSL1p_bYxAc zBC)Q+jdrqby*KOHzsPFxb{?&Z^Gl_87x_Z-ZoQj#VF$h+d6(^COIX&diX{f8z{!Il5R@gwbp6-yFV#(NQQ%57(w(N}PKvJw^=-7fZ|97w85= zM*LY?Wbk3>(XcMuyllM5;b~!H7>WMBuA(kA9m>{VVxD_E9cWqjYH_AeuJZL%)8Pyc zL@HeSpXor89D{`I7cnXaPTdJxM{-N6^Y9c=h+^b9^`p;28AO4#6F^nI@=#-!Oy!uz zbDaC+*YZ$WMy7I1-sGvABC_svlEsS18bMRfEu6OTI`27{8*4pIDZAeGCAVB3TZH3= z!A+KDmF;&BzChF4S7xbT;E7&bVIa+H4EA z{Ax3L%yO)}g;-XOWXK*iQ1m_|yK(-#GXxg8lWj}*i_yul`bwsg!x}vwbaH=RBAQIb z;=L-L;Yiw%^@e088!Y9FOoe7C+vbmAuvDnQpH-o*2Xls+v#qUjHMpU*M_6rhwKi4m zsTwAfY zI-iMb8wVu0PWMP{>q1hI(OXaG3{40N#cQRT$AH)#Pg)Zu)^fbz`?4~t0c+h8IPh;h zmgqSU=ix8}-m>O9tAD9=gq{IT8NBP%5O{~uTT*y?PMFEyU7sIscD|i_KRW9suQH4! zGmd8u*$E+VuZz>o_u?*)l)ywB7V5?jD}OBcgVA|TEY1 zTiG5lPY??@Ban8_;CLc~BF+`El$dV^Y-ir%t_=DBY>lOe1ssoPV5mJRqtGm|$Hk1N zS|=lhY*#u&Z>2|}U5t;_9|gB7M6>idY8MAFAz;>?gKRjm4Lh5RII=A}d#qR|!-~AQ z{T$PXBipdE$%-S}va`pE^A_{@PVZCII0~&hn@l+h%{zOXsh=1o!I|fxrW}RVolVXh zh2|B`nH<@2tt-KCH41?ug7fy@WQJ$`Up0;Msdd0^Dtm3@5uBq z3_#|KvFI!fiyAT#VYXhL9L$LVvB2eMMfS0VMGhGWDu5hk(KYiW2fKGhue#!Lss6Df zEk*NuhDnhzBr#)!Bx6Quisq68@krgdGRBM*ii{zt87m|iGg4DrpUGEr&L!ilm{EXX z5oHX?&KP2qF(W?3b?kgO<=nE@WCchjSTRhpj3E&kQ|wYSA+iDp&iT?*IuWJ58`-dd zSm_e>Yc7s?Lmb;`e8b0yF0+nczd%j&uvpHj7G!9L`l19q9(1 zeHI<*7M^Vu4G{r3SDAF=n|SuwbmZH3wiz{CIObgC)lq5X*=N^LY3AAH*l-b|bCqL9 zrIlx&V@IW##pPIbQUzND&ifY@A1sh(h4*ZFP1Y1ds0gB2K7VMS01AW*D2@yTWJ8W4 zLxRu|$PprfY>aYbs8C4Aa)bzBMIn4+wIf4^LSmdFM2EZ#krM^=B!u7ku6c_I<8ya~ zSNP!ByrA9cLPwvq5HIzXdmWxGlSSyPVNXcQM+b`)lMjP(fdVMsC_fR)+i$nVJ4U(d z{OFMH_?d3G<7b@H6Si%YrlRqp!_q{gvBfVi3p8GhfO&D0+OUWc#!<18!G5Yd)7*P5j~xU_suXu3XjoJU z8nwfM-Pow0DFyy+0N=EAQUkydKDy(#Ua>; zSo9-Ku!7{VP=Xl_wU@n5eQoxXiu){!;?SH1{ ze2w889hmk`suU=`;PffxjvEnaPAIUNVbH@5Ty65caYG`_`fMR#t|jxU`8$qy=o$0{ zKt*jNb{pwalK6tsue#0J6j{Dhhe+vHB-@#aw?pj1le7Z;%1@W=YI{;Z#`|wt1n)Q&WGuJs`p~MgH2RRa3IV+v3K6 zc?>2D^)}3vk^@Bd0iZr4<@bn4VzXIA3)`+7U-*1Zgt2vnfy5oV_gu)-fQBgIvu&HQ z^tj=YCQ1e1mDlJbPxF#yQ3c>dIs#Uk&`wqwJYU9Gmm*?~#~B3?ZGxOJPq^%y(GOmE zIb)u9**T*vUh+CZ+7~|5+P< zGMi_AVCRgs{Q*Cm%*z?`#LLbZZShj~pGDOS6~WE6U}l>7#}6`Cb<)cO3&%u1mzE3c zM9}iMFd?fW7FbIyO#?!jcw#d%)xqF1@mN9r8k5o~3`|307l)dQeGd=q2pN4v&-@*P z*vixMZ>Xuu+T-sTzd^H@LenbGZP=d$1~*I~z{zm)^sE5~8jTP}GkcV7kWFiS73p!! zp}B>>=48E^HAiXp@z~kN`-;Vua!g zPM>)@<3>a}g3tPZO@y==q>mdC=^)(}5*7oq`P9suk1@C-T(%=o0T}V2#4vjl{ssBu z%$%285(9vB;+4u6%*!=DK(|F4|Ezn6L9&Ey?Xd4pPWO=8xzC)_5u&(@P|bIs zos4N8VhrIB!+dMR$#7Ll{2dH4I^l_7ZQy(iRiwne$FuD)(;6_8se01 zPcwc@qxwu^CULBUM^8_lG);-gq7s%>y6X-aY$zgdK z$;5dLrUt2=Bj8q2o4g)p+=xt|*NhvIiSrugJRQvbO!J%ZV={rBGk#De&UbulMdqBE zOkTG$5wJ|42TcSn6X!%eR&hH6`=E({WdfaOB5=vsiD=!=tYol#?(p$?qjN(4=7VAg z#OjUg`5j}Qeu-dsg>0bAE*L%wOi%nBO$kZsYf0$?inwJgxoI7w0WSP0ruzL`l zbC8-xWixZq0yB~ZVogmk+rl|w>rhLfb9HUJunqctEOH7b-C*`Mi1%3FCeq~66FE`Q zjXnSuKc6|UwA5?5zbjX4={?(_EOy$x{sLL}vDNO^InE$o?i45ETwIp5#w^Cud9pd=t)eD zcuu~zpJoPHtiM}4G8@CQS*4BYdUwsEHU1f{s3teY$CHIW(p4g@kFFZ5QxAV94D9hd z)KntwXxo#G_jsO#D)Dx=@YI8PsfpV^L=8mm>HB!c(a%Fa_EsW8Ik~x;d==LCeMZ3| z1&LQ2`L~d0+A(0VTJP3Zn*Cv(AtT{#$Wb5bc>og8b((41%ai0Lo^bX9BOS&=7Q;7Y;hT9iB1U$2sW*nojY+}ovrz5Rs9=swD7rF40zEA12yg zFb$%&*KnCqXV6aju1wTW8v2n9^-=CKXsCU!Bx-1(^}9qXHHq6K7_LLz$*7^@x7?yy zI&RZ-sDSVqRaL|$!E}pi==e>ysFse~bY0603HwzhS(9MB1-5nk23%lc$8E!|qx*yn zpBCwZTcyXSwd1$rLY3>+k}Zk~&b63?c6ISsGw9_fPKm~HqEd@!EMS3yb8#hsgWjh# zNLbcRJVD{7T9UxS(JnlqVLnLoKj_cajmUd@%pwN+6c5JhQ{85Nt=q0m_1BNump_J% zl-vY)600GWz}WW~2xMq{9((!35*ho>1%ZsYE9Edaw*-dBKI&~oCI7f;4=?8q5lB?} z6G#2}(&QjBan3Y3&`g*&tNB<2~JS4p%5M<7X8KF;pMqIl#fel?kGMwd3P z0%uGq+am3b+#5q9IkPtH^e^CedA8ly2Xr`Fh5nOkc#R_4^2e9TPlF@)bJ z7actaU_n{Z6r9IUr6aqTc>Mv4V&sjnGc#Ok@-j1dYwXMn*BWy(!xT>CZPA!nY8l-) zoZ;GHV`pxy(b<_(b8HOFtvNbFb83#o;1oZqmm8eXSX^drGzg|z?`et&egJOWMr82D zHqty~pa*i6qh57T8TD#x6)M?K4^bqri7+iMqSIo^BKF^KQMy z?j?P_Rr75OKkw#i4Buz-^RavvuUF?elD1oUeO{LD(t10~w`zV~mhaMhJIl9fzPaV2 z$DO&PIww=%O*V|nE$HXne4Xk0Y`=}|=iPpt?fYzh{&fmVAIPneffxZ;fMQtK$OjZ; zpC~GQ2vL!(M@*h~@9x$cq!qG}3d9*ae3qGv_I0qq zO9B{_6>0j=R;8hNcm>2}Cu=5c8$p?V$6<6vVa(}(UR){X^nuw&(C~wEUO{6r%-KiK z@Po5?(7@C}6q5vL9-`_2;|p{lgI*Ws1s2akQ+eMoV~9zzE-*DTIWr5u%FwLGSravi z1llHSoIVDv2^&QM4OU^8Y+ztkMCUjxNOO(&g2{**exft=EM!h+{QhOu>&Xx$hOq#g zy~GVaK<5=VCc~h;#0@_{o5zg;irBYBWx9i@08;rL+J~Gtqk6#?RgozgW9bO-lpy529GJcCj{BO6V-Er%sjKf0EUb0PBx~_`cZfll@3h^Vm`dm2C}@ovH&CV;gvR!nR_K> zoQbO|DZLT|o36!uo5eGRbX1Rf!I-3Uo?m>SH1^wcmlFe;#x?Up&Biw;1~rX$=7(B7 z?&%?(72}>Z5iKwGECe(!?rDQsUhY{4YF^ya1~qf{^jEUc^`6REYr3(f{j9ZIy3dJ0 zP3NDfl9*(WZewaT4mvTg=^Qja*et4O9%qlamxMIcHmlJmw)VzX)hv+oU60g-Jk5YX zgC#DDOZzSsOj^iHz7O85w|lFdUXwH`QM_EK_orDqwS{nUX>A1v0|lTl)o3m**SpOc zRIuo&{@_e)s^06hj;E_9nqBirf2VOplFLxr*hpQ)>%<~7)vY+ZQE zitv_L77LEsM;t*B0wJ*+;YAS9?OxhQgv_=P&C#Nb1CCSOCafL+8jQQwJ{2TuJ2UGh z*0Vk%w;!NX+n5%F_L6B(!oW+Q2Pkzjg#2A^$_E>WIuL1(%#`%APwEwW0- zzJ%O9=%KM$rI_QrIcAk4KxU&InxjP<2ORNPrGbygJ!GT$2fE+#)>Cc-k3_f80@V!^ z15$l6I_g-UY8rKB&H83#mR`mlO~uDTpJkS=t)p4=&EnWoe6&Mzw9nFQV~<51Ify;B z94++d$kD$HYu$rMq9JxXiHspvG5Yd*kj=(Vvgu6#G;Lk zUSiQkF~<`*jwp#MXGfH1juveka70If8M8>Bd`_`ZBSAT??DdCFEG=wS9DC4t4{>Y5 zr$1tj8zI`E+h~F628yq#{1qM1El@R$=q8z+Jg+Nbc{xtEnSCOTtms&N8uuRPHd>7D z#HgZU`DvV;quXc^S;hSonxlmt#T?PShlL&oy@zdoW#NyG94++d$k9TN1CEkW7Oaj2 z{{r~p<{82cG^u%FCQ~`tq{({s7#P9eDd3QObA7ejgopaDy$!pp-vwr)NowpaG7?P* zK;9lfK2oGFnrPY6s|>hfANm8`nHq*WJYT@K9h)iv_gNHo$eLu_0erBBb4MEy!KUXe zn0gBECuW_FEFwGWbTqFtv6oHrShv~i4NPK+X*fZT=z}U)M~*74p{K?ahM)#p-s!0^ z1t6%+3aEiKkI)=2b3=2W5>IF%s2QM%pk{z(mKuj^Hl_8Oayl zhq8V>6{SZKMXkMh`Vc_|49y2v14})Gw&SO@= z!!)*@T>@FyUHVCg6awa$7xrWX$6b0~;eD zFERQyjjBn~JSDSyUrA@ejI4xAn3X0~$XQwMmEAsX8>N+zUDNpNhJ&othFqoBERmB9 zfuzP(KiVs8&8QO~@AsFG89@f|tJ5tpGs0}K*;+0kGlFcXTVE`DPP1fVh3;_Wl+l8f zk}tmSMpG7Uw8k5=X}W96#3&cGWnwfMvt?pXY>^M3r`0NPM+@{i=0d=V>ys@BdWBdt zaf>rjMWy$%0SwanxzWu^eVvETd_0I`%d_zkqf3kCJ4T9!eTZ?7(1&ab)&TNV0COHC0{LnnD*)$~y?)cN-)%OIHC5mz zE6px_s+QcI?x(GgAU_tIVAMzFl>J(ohYeAz>tuggS&m5bq8nmt&@;mcxr_Kzn8>AGsXtyhJhd zeh+#XnW#jN(FJlzJUgX>BwlngYO;eQ3ddeMFcT#?%1++cKiS%J{I8p4iOP6l~z6CpNPxHgGb@hU>!` zoxUxI)M}u&r`iw~K;)D4j7*M%FCiDIDo;#^gUFbuo;Db@ggB3kiDKU2Vz<-l!F>s@ zf~MngDRQBLE8jHEHrk!;N`1L?ucJT9BOy^AMMIYlQavl_7-7LwAe;$nG;kWx;c#23 zFE*Dt-4pe0gV!0}RG4q=7uyOuxmR^^KP)>Sjgw}uON5{*k;p*L=|nKlm|TRJnp}jL znoa}*Wy?jFRfsT~7J;)9(9v?!buxjZ{jmX!Oq4f8GaHaFVS3)G;9;O-IS){ziid#~ zm^GZ9$cu-jVS z*;!e=b#1v1G!h*(*}I2Q)pc@olOIWXK+nk&9XO3s0=ZC@4A65*9ypYNjx^1o=aM`) z7?)x7fg{J$FKiw)i&YW?sg)-=^I9TIa1fFUWf0PHY9=@gfshnKdQQy*XK-ZqJ85do zPO91903(#7h_RDuHaN%#B`Id?WRi{0@aA8+R!>ccEUhmywSXU}Wc{eLzSKNLjrGCW z8+CZOxQu+{bzGGf({o8DE^UuM<`Vf5wpRwfsnP%wi7V;(^6z?^WtUr8T@hAi+gH#8 zP?qqslj<%Bmn9QQ(kz*sRI|akDxoCJlG({58!k(3clu=?QT7qZ;s&)C@GPi!tg2Ud zF-%fQZza8gi?`O>CsQDHI%I6CR~6x^nlW(Hgb;~ovI4OYAriGlgt)*|UrrC&O(Z<6 znhG&ErB$LVKWZgC5So%wucVVfQ&K3l-&}`%vYXR$e4Ekad+-Lpa#2ySBZPk;Da&ksL#O7ePb9e5-&J>T&Z1F7PR^nBXJMb|I zc#%X_vUBZd>M6dd4-pDlFN*OS#c4NujF=iBw3V)_oLKpFu#_n;FZDu7SC`%}e?_cS zi;LAXA|a^Z;x$k!*U`8z*;8o57pq7SSdD7AWzEawdvsW9S_849IG=X@Ddi@szZOErv@zX>&6_xAg(mE`+4tXXdaEO)b=$ax{uA@s3 zOU*>m8X4&&5>I1IJ0f|P2AmCgASE4xu1877D9VjWTAW{&tHByuS-Fm`W-F1T(Q?LC zuA^%j(aLpnjolMMez}gWVaHjnqib$v?(bA3<0PN9oT14^xsL8&s-$#i%O1leXRu`q z!zk;6yU7>-3Iu|QQK~CsLQGgaNHLVXyOw$9Q*C34T%&_Qk9o=}&_cUV7Sa+R+b(ZVs zrn)cYY~?z-;#AZE7rxIb*U=R&2IR??<#? z+|tj=qT&e%tnI!kC}cfOF&~m@aW8IUGBE=kE7|y)v!P_ezpapI4Q`~w&{y*Df*OL4 z7uXPdc-(k9FW1psu6LWYQJSgrOGAf|tfon`Ok#oZRb#!F291A&k6ey&9bHjjqS z+*YET(FJlVQ8;$FjxKB%EA08HS0ufh3y9@9y1YZsSXHj03xhv+Kao#4sE1M$)4ibt zAd;LyW{#?d4Mt3)&t|9=-DqWdV<(Iqac zTg28N9h5I(Tdt$KR~%1R29#VIHe>3zAs-FD5+?MVl81qkEDu|*qZ?NO%5`*Q?uuV^h-4z@ zRFRMDbQK&_P#{YiNmFZfQl9n_HaN#8l%&ZuJE>-ab8bROiWxhZWW)Jyynu7LOjumY zlOjn`P6An4ADP_eVtt9VOl`pgtw=qYo>OZK=g2@v>c{k)nhDO0flz6Cuyzz%Lk%6r zrI=|VU&8jv;8zB}*U^oKxMh;ku9F2W^Gi}nZ!Oo+9ZfEYqt>Xf!VTZcb#&>=UYa$Q2#BiL zS>(J~Uo}!k)?IOPN%(~$P$||l*<~GF&ccR*Y@9`F#qHnMN$m}qqb{h5 z#g7A)JIN)F#i9~b6(MfCcr04n+>IHr_O2elu`RtT(k2ncS(m<6<;`G67v+V8d8f*C zdC9^REHy+226AC7yJj$F27}YQ=iq1Fu&3eK)oOWqAc(=!R0K6#ZwhQ@1S{!gWW#lN z6wRz`9Gd02ysoRtmh1AmBIvxFXL`-rjK3K8vX+*CCu?aL_;H#R=f&l^yqfHvhC(%j zr60TcaoyRGC9fH>K3h3i)4;JSbAxjr9X;vz=vT|Ks63J4lsHh<;*X1qO<=tAN z8F6flmOjh!=xi42&*tWnK4kIb zx)!o<9==kp%PV{g;U2#SogM8o1(|WVE^oOmFNXlByUM*3F2KL^-1i+*V>KAoI&0lG*`v?F~!*0B}cN4YL9DaV)V z@{$ZPg#zc*-R9DAbFt6cAU>SXD`ktVvXja+a}6FP?3D&BvZCu~RwmyR(*0rGNwdJR ziid&A%G*KKWF565ttR(59}>>7nkY=^LK{1&S&`P87VSmwreu2&yx9O+1kOatb$JtW zwaayRM}Y*)DUn~$RY<6XAw~}PR58m07Zk{HdeYRIos>WC#;@W+C`prRc2dm-=iG#n z6f<@*$%gaaa$R20D?P$kNKsA#Sz2GYF7IGkyxJ^qZmja+()NTd=@R+Mb$QcScWHom zuer!|z2&;R@hmNA@=}I9A7RfnPa%n}G)rbD)%_lBcuezYS#_A5RI|Z#uY{7+(Adc& z8_reBb$L^-BMZ&4^j0A(hDl24t>wDBqsb+4)EX65xWH7d%S&F#)76v+h^i?%ZmiC0NsDBwjBdC-ib2hHd`D8|m0g&44O#m3!( z5W@O4X9JdQ_>66lb2s1ewUW6ii|HM&H##TWQ@q2JjylnUPRh57ZJ#q_Y-vagCih<4 zP+DJ+Xu43Cw$HhTBeY_D2PI?1juzz(6h!-X1r=k6dIcSo$ zB_R!JXo28D6=)`ObeNGK%VUNMy9ms1g!Gu9>1Z%R)6ro@Iusr=To;4D3`aP4AB-!4&fCGHH|)vyi@^{> zOAFnT!pb`BW6RA%)|QdWpodA*;=H)r*9o&kw;ICIk6rz^+}CNiHn4opC4V`moClwe z@=*sr=wunYV5=jZAj!w!2#gB!J_v94BQ|0(h_D!P20>Opj*GM9zD|?4Rxqcca$hIv zi=vmnB;_O6a)@4A3LqPzt&^%HAE|o0zbsDWmLiMQJ2+7}^4J8}Z zv<(t%sG@P1zLJk>HJ(-?UYYgYeKuGGx z^qiUr&W(YP)QjmkH51&xhGdU18s=%b@l33cpMYK{HV5`%vm0Lr_6TPG^Tv{Et8TsPpNg9SdTUU*D)DX(RPO2jU zuCE}JqOn}eC=noEYC35K22lX&WZzX?7Kz@q#5((Oah7gBoWA+ zwPM$lM77v{oNXPwjg(txi!IDqUi4m0KICOK=qxiD<5=l-@i@lV%b*2~vzyH2zC4Oa z&x*Q6xi1eXSfvN{blfT}@=?r4eJU~63GTpEtXRz;N!yYT9qs#}qpF~x8-~D)RN{Ed zaJ4xEW;jB6%+Pc+n4#%pe6!q_$IeKo{WY2}jif2v!hUd?H$!S&a0u9H9!D@c%GGZZ@++4ToU4FOMsN<-RSV}$k6kDaa1*^!lt%qa6@gWg)gg!bf09tORS zoQJ=hQ_h3WNBJJvw0{?DRl^fB>*6uwOmIeQ^JCD_3#8+Es&ZeRa$g?A7{hBQQHCS~ z+fLHqjJn*HhmIRX?<`3Q?y&b0>2DHc5YwodR0dDUESxIo7{pN}9ZyD9LIx&dU}fdL zJj5@JAS?IfDfi_m_vI<~<>}T}l#Za9j}9I1Bz2tSzC6agK)Ejuh0LhuEcfLZuDBst zmW@3)O1{pPN!*PRWw@Js@fjh4i9w}H(h@p6RW`&Z016vIqNsZBA9t{Thhm{TSW%u= zkog!**s@YZDVwEgkeeE>B3>oL5-G^Kr?%um*?Nfxg}B=@f{D99XPIz?nsQ&BNvuAW z7EQvi#Q!xGUGB>hFV|4+%OmPl^!v~F>OL&?pUF7BuU^K7EWSD;3t9L+tCjCwax{Ao zXVJ=CQQYl@rX=!bu+!t*76xQ1_vIO<0$9JNv_N+c1ud8R@+4Mqa0$rDjbHrD*-)}k zP1_*RhQ>PGNQqgVl8=|_CxVX`*bsbp+_>(iSMJMG?#t7Z??JmUiQ9nP`KeR=HO6>GG5FiUf>$(uS2vIgDDs#2+|o;J*xuF3e&+}jtM85J8i z>8UldDmHL3$%ZraMyKzlEp%Hyl$+|% z&LrLU4F<@4WwFV?ljRB^O12lln+>2v;39sxsgCWYI($?D9H-ZD=EN?QrBj2m@~n+s zfU_EQsge_)x@FolvyO|kzzHr@a3W`wZJJp}w+Sv)a?-SE7T+egRKbayRkmpsZxL{* zk`q5`h;!l28te)Q3)(c+7W)|m;?zg8)J1U=qvyKPu99e;h8|QlFXsU-_^Wu}j00qa zwRWWKm{s$@Ixx+}q?roX!L>&4Vt!S5W_kvaDjER zkT%9SD&6#SwbM(DN=cMPc@VjSa@v1eO0Uf}v`kW)H*py$-_qKtfrp*ahSJ^&+>q+>01Qq87N+be@#8T^tfDijm^ z%KZXMt1HCnY`a#PPs<8s?4&w~<2qMDN!nMilWI1&zJgGa=6394k`0%ql=}si`vsQ! z1=4VR8hC5DUm$t6TeB)9(W7e8jL{y8Bz&`C?G*f<>TgW;SR?^@L?|7DQ-nzi;E;#5 zk{$?6N!eJ^$)G7IT07jOk8d-YywiSx#qp$2iDwlYZPlgga1YUO-`MGN*~2hjoe)>j zZ?u3SEV<1V%Ija*MmMc{wO-+&u_^PrL_Cf%wF> zQy|N@m3WopZY41ac#%XNG?tzG+_3SpM;^k1W<2cZi4Zncq%U(eVCiN%W80O_&3=4s zy{EFEc<(efNzt2n#o@`92^llCG^BVtF*lgd`-u65$(XSdOk>`y&`n2Zi;AP66I5f~ zM$ru_v{gAm)!5Z=Tts6vF`&=188?2XqZ1_^+~^(Xz&mv+d2nNQG79JDa7hzDc9L%> z{zWsExGP0G6CqnV(Q5RMm!OH(AxatpXJ_S>m3FToms?hfN(MBhDT=SHUXujb#J&S0 zn!*u%`IQB=ByCGVz)@AQMhiqP1@?MJh_Ir8)fHgH65!4yOUHJm?C^FvTG05nUD>naAP`PQ4F zncdBir)P#Hf|>!E2xa!?z3Gr>Vg!$My!6uB2mN;z~LOww6Vxo zVOH*2Y1|8x`&LrOjLfXux3b)~vR&_!hF#hbDi^YMw~s+bDB}-v1ynC5cuOdR{F!Ac1;|$c z2m$idKvn?GEqnc@<6~0!&WMb4@^K^R$U5nl^8o|&H(^7`#^0O`B^$mxZwVShU&+S{ zY6w1FU_YfF zJQxj}m{F1;IF}bL(XCaMVAoIH9Lbi5Z?uJv zNGxO9D-N#gq;gwIgF=gh360=N9tO1(IgfJd%Tb`o1SM};q`^&GRBo1AU)K9I9tF;m zVdJB2Ykg;DW%bszZ6=gZ6X_E zDmfYKRYvwbledYS)o?=FcDePXdc#PZ!IM-My)9uj*dcc+rK2|a=7*Z?BC#$-QxrKD z%|?#c&HXfpY1)EyB~4q(tuOK2ta^J$EFImpiC8-PmWkFLHRwLnZ7a9F9G1KRFVbNs z@hZ2zY}VqLNUH3RZY_hdcN!}t=>R<^PX_324k#vUk2eXI4YdJWx%H*!^<8R2>A`Mk zeL`4>yGVx$>}1kqxq)%H^<`q?NfnNz?d55E<<^&RA1-y|(g3|1V7c{WX?4lzjrbhd zu*(I@P0XUiXUX(RS!s@)O!n+qHn_qZp(L%;vXg2yxUvDupX#Rj@?ayq7}BE*fgg%&q=V~&-HmPiz}#Z%=WD;tWqF1%_U$@3@W#F?ra+o8Z$2rI$WIb+ z_;|h1IpNx`$M)lF>*#GV-9lSzVb1cR_p0q$)aclD3H7<%%%t&=M@f3#)+Gw_|d;5_M!jrTu2?0k^ULIwu_H=`Ir%gaK_v`VAcc~Ne*8`HiKiStncsXt!U*Ii=ESl5`G|8CkMlA@k8?~(;-I#1P zgp-ZfYzQA4vDu^(-H`3xpk_|G$&ILQ*b&qwmJ723*wEEB#HZ-denCbK5%{y@$XkJ8 z=@8vPmK<4jASRdWBw%Mn8#rT9hINWjN5$WWKuF9Hfkk{{vemFT;s$Ir*+p{$Hk<5( zxdEF^cC*}o%}(q{xdB@byGm}5Rwp`;RvQd`wcf3-(9JkgogXWUlXLw<6r zs?TEQrCe3L*6%xB5bemZOYtum3Mzt?j2s@u8C^s5%hYCP;UPw`5G~^BygzUVKV)8jf!d1u} zs(zoH&r+0XncQI0XeB|LHuD6zj;g-y*!OEA zV#pmftu8w%YBaVXo1!i>8rzsnZB0s1Wi*7NAiH6Qr4&_0!%)eXp}N0Uc?tu?kf2SQ zRNh-xwZb;QPNk?U5)ZcFjvwhK5(JH}($g7`=ut60cB;Nk_u__LIXg*Hr4+cE z%{KcP!U8L$N2TmwadZ_sl??-7@?691r$|cCXDiyNxSy1V1a+WH$ zAS6|O!Omw{I_S{`R0no8fLgM%9~O(1N9oB!8tZrE9w_UVsmdiB**U3Gu%21XQs5Nq zHaSa`Q;>UAI%MZF7RnCGS*o0Z+^cd5c0S8e9^DX{RJjFVD1z0Ap$({J47rhi%jd{n z*iYBJJPRNN2C9G23n|kz855QI#M+}rMNDR-OjIfZaRmW$I(;S?(hu{`e5(;|`sg^5QOTAP(nB%w%5QH!^P zBC%XCMU^!&tw>1H^=|=Tvr&$cq+Pp}B$Ey2jB2IR=^wW@t*gbhMX=f~K4qhTq1k2F z4bNn_xm%=&*-TB?G+<_@G`Mk=k`ysxXGASasuMqwA6ZC-+vt>tovV!-va^G7)C5Cz zNidVXvD|DQ>-&07h)Ji3tU}*F+$jMJai^^9jaCm{l3IkFwnnRI=*Y42s}l5Aw~HdL zjwbcuEJ=3Qmf}oJND&U(Qk)f2gu^3>Nz-a{`sT=H@*xJEu$GF#HA9fXYDFO~?y+B&L+N(%s||&5V|$RS}C7h)TQl~ zan$BbqZ^ZLU#c%Qmpa`O^{&N~y!~k{GTrYLAEvw0o2O_L%?u}cG{cBp3tQcb0uqH! zsTQ*Ld)6*zY9c;xt(=cm86rNjLO!!RpQP@9|8jHDBHU!!!}PXaf|@FUR_Q@PPCI7E zh(|RilTM4Zh#a6glr9Bnx9%0vlsz$|$?oo!o*-(?bk=Tle5{pV*dA-`X!#`72AivP zTkAVJE33DzEprY5XH@1(PiHzKdQ{k1!Wk8E^t6baq_2eQRRGb`B67*DGLgo?^<`NUtF(=+Y@Oxuj%!c_mS{JAKLyfGFFSUf@3ToJLZz)x4ajeBRi0b$*FySb|xZ%WaD%(LA9w$@sl@L?NC5a z++?|gY7>=8D94cagWTq&63UxQ%vniLY&1y;leXUP*4w?+PLIpkHHJ=4ugG+)kd9is z>_!z%a3ee=l5kX;Dd7omM|QK?BuPu@X5(UeR+}FYTESUuYLv6Q&1$ovoXH;PVzJdG z1UD1vqnnfF5^qeM97eJ|tCTh=n9xCeN!U@c-JF#4^yAV*Z%%iAQdlK*!c1RAk4oiJ z^#ig8_4X|$6a`IYhov&A9E#j3=)l=wDMeMQWlv)5TP=IkO2LrIsA@H#C}=f1JfbKv zc)A&JY4viiB&H*9b9Q)yZOSiIeHpp6w0h{6$#Zb#3{o6DTYX{&_|oP}o99O~#1sXd z&JIg0RORW+xHDbw*lfNG_Eg2C;cp1Tr#s%4VZOBXGuGNuNvCQU!v?dNu81AB>fG3H zR!A{ffK17#O6b^tR!A{fCQc4x+MRycsg<1?)U|u5`t%u;&81vu1G;&=eUj_QI~`aK zO1gGo9P0#CLbA`i=1wv+x4V;+VB$NIL8`vYEnbC?K{EdXai@RjA;fanYod(`e7IFL zT#9>?7{ip^W4ey`)+GFc&Fzzo06|pLvfJ6Gf(v_kesHMmgruz0C^ycQ3vm+ERD!R$ z5ZBNikWOrHodN~!pRPG!VnZ7Xi4AQWB8d%;vxv;NA!0)ti--+v93tG#z}_*jqmD(z zjyekna<3oyWolnrG&o2Gnf*w8Ga&G2+b}COdYtiWpWD&x)=v(%{>`?)G0Ipoz?zUX z0~|opT7Vpbjx_@;K-LV9UNBIA)=nijA-N1%q2=P}4KhbyQXYg%hnttf4j*mRd--N3 zMr^T$v3<^KYq9<$V+!|^SYy;wZ2qUsM~t{)0rtxkhp#rzFls3lU%y=`hhrpbWLB34YjnP6#2jbXxID^;F*bVSz#41b zIk3jTjmye%fjbA*Sh#awjr3}hELD%XpyCBnz3=u}^#U_;9(rj~t+;-dD5zl-DbF3{ za^oCBNm-KJ;{%NX5eaQCh)8JT5K*R)l2H{F5gXcAL~Lk#KtzJI7epkqy&xi?jYCA4 z3QH(s5wW3-MZ|_SI^x?F3y=&DiJ}B~oKBUIFt?$yU#?g?@XOT$zC?5SJRs3?V!cV( zQe&=O@HOU&!&e*sbHUdyS1i7Mxq86YSf^O~RkqZas~3EYx#IBE_D#9iuV1cMeEo7o zcA$tNkFjcztdV`Uk%n`J{mQfl3--+yi?MIM9#9r(wg{9h_XxE09<(KjK%=~@cx`!<$BVW+ z%7fFEQ?HzhzKW9wtFhuF@}M)31p(P%=2*PWyh`LnXI>@3>C7o($VF$xNrcr|aS|bu z9_M_^NO4G^JY-^eu>{ZM_wn1CK_$s?5K{<-G z-w|G~OtI*CWr_n=8IJ@N8ZY2_Wr_vYD^nb}w(}t!ZPznfEWn=GGE4LI;*PL8kl>8u zjOe6H9SCPu4)YKtEyh;`FmC{vV2w2{|82%$?Jx<^5o`aPu~_@(jPxkyd6!AZ1?k-Z z`e@AO#7ow&Oopc}N8-IrHUrU$Emr-;Ii9+;SU;1s748=#dAh1A7Gu+tOUD-rvTwdP zludIW(%RggVF)@&9bYWUzT1nAW7^q-qDGI3#DdAzNY-{qiO#BV)@9X4tAhs-Otq}S zXw3$T#6-;+YhyXITGQy^dJnobi;N6t59_1?Gs6OIl_TiP3=4TK%#jY}kfW&W4X1RM z&RLk37ydqS0tF+1u*OjsLO6vvb@WC6;a%4u)iRO@tFq!S!s*N@Z7@OztFz)H!s@Iz ziO_-BG3hc=98xF`>6npNIQw=@S&T%&ns}i?VXeGSp>WD`PkwSyU%_Hw6XRoHS)V*{$ZGn+{0!GSV=Ttr8RLM~^jZ1Y zv3JH;p#3lwcX<9E`Y1c0RKJ|4b~seqEW0NoS+Ke)LKdu_$O;*nSd_*E*!ii679$T< zQ`ViYAwD>5S$9|hY4Uw0r3tWx@?f=96h1g@xpjSMh(^N}ry!_&-eKtTN|CTSD-b1| z+T1$QwA#GIMXll#dAXrbSk>i^R4N_muXUUIIt~Bn2&*|{MvUw*8QG)}RGL0+f73C}RB6hPh!lu>*5fJ=G(a^ZfzzrWJ>1kl+3`{y2BAm^629Lk zPA05rYtlHcIN>yx%uaGPC9L8K6bY-h0!2c`fPp2&PoiB_m-RTHxU|+@?6*4Y+F<)6 zvY0F+mOiI7>nz@B6la@=2$*6GMV=g5v=ryTN|u6`b4LkxTY<|fvZd& zmD!pDxL%oJ!S%}21GuL8#9FShou*8^fNRPW2d*-UHf4zg*DF&jxL%o}yWhCyt*@*u zH@kxV*A!zUXD<17;4JUo{TGhFVg+y3j5?x%>qcJ1!CI-Z$MlB|E;uNKQ5tUXs`4j} z7ghNa2d64!f2GVo(yF3n?_Mt|Odzbf3KPhK!i=n^2!;6+$cw^!3WQUbef}WuuzVjF z(*_w7(%^cPKv;zph7d9b8Z9Mcns=o&maTgvW|1PL8D(Uy(uf>hkf-hL*1Z;CSUV+V z)i~H#Pq&NR0B25)VPPS2fv{#S&x$-Fgo{hceoc@uQtJ_+6Q6L>Rx#3GRaJ~MI6Wz& zqaZ^Asxvi-p6CfDJryGjR!_x9gVU4wvO)Q3swjD|x++Q@WVbr%=YLm1%78|;#k!cC=yn21&V|W1gS^DCIM>bV0lGNIu*k*N?}8%WTfO$&K3`RWFsXR zcqh|j2JdRP4xZ9vnHGIXC)wKv>mOt=H5LJ}K`tvEjbR!1SY*rSmL1NjmLB(0Wlh6Z zgnU@_k^$H_I}MGsP#j3*C{XI+_8BSI{dO36?A_;MR zG8|h7nG!r5U1neFhrnZad!vCmT?khnr1eL)$#Zw#Oio_5+Wl_ zYGj8~wUs-If(=s00g8&KEqJuc4A0OWhe84nqB+XGpN~-?Gvk5*zGHYi=2sr9m&l)v z`IQH#Au@cWGy+2#tF}DK<3(E@<-uu7`M6HnO$l6!ni`adoeIIlNQ2c>G17R@lfY_X zbw~nuo_g{ojTb$6lLn_J`fZ1o{GT+nG_)&VhRAV?W~YOjRvmLX9NPF z418UYm-(#5Q;B4GStcY6K+O(v}*DOK`hK$_)cbV@zPupox@)UgPMRq9xTb5g3n-kA0#L8yv!y-37*(+f_x_TC!?`&lXdJb89dKEKlmwHAY>J zrbjDDv`Wucs724~ZY0fCC=prCEndPvC{SLDfhe?-l&L`FB-sj}fUM0}7?SCU++?lj>+IH~FUh7!9PPUq;Q32(i%GxIsLvyFR<@y^X z4cFhOY&QfJuHC9Yqi(nAPG!3_H_F?sxl!3}h>KjiRdG_?Zq=R2c57~ww_9@~-|nqJ zP@783Du*?gV9vh$7Rv2L^36FI!z2H_PAf!#p>t2OyI`GmYwp+Mqvo&eXfphheGP;ci(#iV7P1?)AjodiwtjSDve^($He$0O zd~C#KlTLI)wtIt`d3}T0`D*8c`S2+-znt}o!q-AETnv5Kx zJIIooO^{1=63z8h8#u*}=(JhYsG~|`D73Nif*?IDyAgp!ENZgV%bjBzu+^Yzt`dt& z4Q0@uPRibh&F;Oj+uwjj-fF`@rq|q{t*;;LZ4jL&IuNoxro8_kXN570yjr9RV(h&1 zR#mS~Zj}u0wJ$Wmt;wN$vfCmLRZ8_vHJXddb$F6E)oO38ok8k_{D-~gorDb6x_W(E|~o2kj@ znHf+_Z#F?M8G%=9=3j6KkhD|nLT9*%CdOXW5afd|u|KN8GczB(GR(|JLk~07On6^B zLJ`(-u>;UFJqoInq6)rvTq>X_sW)SXs{)G2l5@ghY+DV(c&}|%(NmcWLnIRrh+zoj zTT`11J)NOOkBZ4@JdUhMG7SZfltS2HDMgjhkXuPHLqJhtG}?7hfFh}J2q;R7hKVna zGwghpqFgJqQEGysMk@)b%!Xm2laTAE>J~3YWEiMpZP`%`%1C0bQG=&)8nMr)>8Z>| z>@f;@>Zn7`W=utD+qNN_f+~zTgrW*Qc0Ma1y-i9{1)wZ!Q(&bORsO+H$;v3}2yEM| zqG!`$8NITj>h^>^QbxrrmJ5w$BX(3!jbE{vMUX<9MKc(m-Ckc#=LUmw^>uPCex#qs zDru;ZcjxqUMvwHUm>)Z(Vy6mUaJL|Nphu)9+k42RkKqCJ|HZ} zFdemL4yPkSb3k1fT6V``^$}unV`2T0+!tj17FDZ+Av-6vPus2y$b#7m9iEX?w^F4- za=*YS*kL(Km0OT|Rer(FXQB+%mbi^tJ*vEduoFZX7j`y)k~Ubh&OX}^bEEX+=3?6~ zQs`?3XuS$pPypSarzEF$o7XQG?%@muQ8y7WA?2qOUi4a7OH|zf z+$czs=+O)lmRiWT_`*xg#TQ^{E=kMo^_vzWg=XVeGp!cJML0W)LM+dJ=xGtjfx^V2 z3#|?$6iE*)rl`eRLXl)OVu~tjWOzwP5<3->R5e>k(yrY~lF5d1MzzxE^pD${*41L$ zB3Nw~pOT@aQozvcGVF$DGThuPQp9YgCTtoovr`(}I7>;2n6WdWmL=7RAIXm_B*SfV zO2p39#tqroK{;xIA-g1)N#9s*wvX8?x+Ao3CY>g-+TJMv48c>@_C~7*FG(#zg@3df ziH;mQzbZk0b-O4`>S$6g&XQz@Z7IU4R2d?j6Cocl%`Cm-L(U|ki``DIm&BARROxSefs+i{o$g9~xpl9F zO9D%Q$NDrqPYbwlDR&ur$vSAdo_sqZemE+@1BsCfs+T-nE#myB{cV z6V{p4>=hs0-)+iv@Yd!Q8BSC?8AkM|f{!ZWqk0kXnW>5R%+wToIM`Dd0iW5Lh|jE$ z4_uqXEvY*=zTC8#dYWku)7ySg2S6d!xIu;<(}RSZRtX|<0Jnsk7HbhXq5+XR0Hk)a zc{5C6NK@Kphns!ba9HaJ8Ab!F4f$9r!H|!&cC>twp0HBycU$W_J1eWVt}XYIF%ZtE zAf=}>-55P8>}KJN3ORaOL{8Gn!u2YE=xGtTWG9+cH4%}U9s zeLyPTw3MLQR4Gy-3FQq|JCwA^atYNYDwR-9peOd4*4CsUFeRmKZ9!m}sIjcPL`JRy9@ZdRKlX(@yc+0AP6BSI@Ut4)n^ zmbY1LR+O_`Y_$o&&4l`>%}H}vZuWXdj`J%L9;I%fNo_L`nBF7|>V%#)FpB6U<9Q;^ z5_&4*qNhdlBt4m~y|PFA_AQn@#iu|?F;umgP!x3F?68!gs`n$$fCarbJ1nKB(lfbL z&~>xJQi`fplUoI?W`{=4mofc>Fp+S*=xUy z^eHd0?9<(Bz6|!%g5@b)8SGPLdO8RDW|`WQVII~)OI3dSnEMK1&CpJGbmmL5WE z@_{J>*A9FLRG1z`)NE=!=4%NcHPi-sgu~{(lHJ1DQ~HA<9kEiQT+)^c zaW?#u6JK*7jsr!xjr?@Y2@@OISV(MW;}B8q@IB*(hz)HlA~v*fh-mlQcCr#X>R43l zsI!0|cg&$*YIj4H7z~mDVz*j11_T~$8)n5uk29X_b33}-`bk;n1tN}7#+m`vgsd6h z0GieUBvCQ8YqDm51<0BK(hCL((Aud4CnT3aE3{l3y+P&(Ov;0hXbPs-9&Ocy8){-r zK%e>;vBesOXSP^>l0iI(HAYRvBCO3vjJRR}_RAHAuQtyxYAF_9zg)5S`sIql7m=~# zg0OGCSd4x1MTYzBbJ|Ex`V%9lk*twfT^_8_`JNGToMGegC?m$$=#c|!ta<0a8V5Hn zE6WA$99U!F&Ve=3t4*?0J?hDVtF9r)$y0bioI;_)@+>IGk8 zt~h+P@jn-Q{c^?P>zAtse2sOAjStF}8guo6uQ68~zS_Pi7yI?g6^pN5uE-7)QRFdJ zEs`~|?>5pf&Zf`Kt^FCj~8uu#0RG>r(W3zAFRHLlL)J^;w18*Gm!<+urwI^6t6R{5_!>?SBY>s zbIKTU(OGd4VRcrVM98GaIo~o;98xF`nV4QI!E^b2{Kn`wvzMnPthJe3i5*_SC2LqF!&8?d@!lqzfoR1RtA67gPu*IqpUK(^_Y0Cdf?@7Y ziY)kIK{ieGbnV5VY?=cRuDL(M5Ok6{zF3rfw-+79w6h6CjUE+=1(U6jtnHE#Kh|Z{ zN2`Me5lpqx(X%&W<%Bv8#7YhyXITGQykE9+L>v`*7lz;j`ag*+GLNC$JsQPlQ^ zQ@Ts%oHBpb;QSsGGWx3A$VecpaTJCSPGL?Ry%9io*L6s>j3mOUtT>EtI&(@Jj1a== ztT>6VIx9{hbYON&x{MTu6v{(7W+WEQzFkumBayHsUZ_x5D=$euvl0H z7AzJrEM$|&^qgw21@#b7uf$XVthv0a*Fv-(96T48>dtiySIt<01o)=cC{qbWzM z6U%Zi5-vq`CxF@!Re6?W&J&BPPo6kr<#`EdrNpNkk@d+Fi>yzcIAk?_p}7%}J3JJ3 z%o$@b_TFMmgK>qO{OnlMS(-D(0_}&fxWn`R&_~%Nr21uYZJuvr`I7~!E6c9Z2p6oM zSazamS%6)>&yqAD%1|DxrmQ<(LwRu8vhJ`1(&YP0N)zV{<-uyJD130*a_joi5P1rM z%4a-=KBg22tFr=8!l})zBTcK#TU^vCPLY=z3WZf&{z#?L5wg<#zD~n`IwE<_!VZ&> zO&UR^=@U1?CFQct*RMQSeah1kzw&6{8K&?ubf`~diY9VpdGo=71j6b|o}73_2&XW4 z?+f<}qLWf#`KBkH1;Q$BJk5eB)=<1M#d)xjrQqe1=lN658#^W6B`zk?KEZT1zc06IB=C&v?)t0xL%oJ!S%`%-TlTr zZ+&HTx!D!;zor-?IdjRs17~^v?!RyZ7Au%(FzSd3t{Zt32WzFuZrUF@xZt1^MrpXk ztID4^UR32z9Gt3@{gpBUNvn#Qz565L!UV#qt1y8)D9p%uicpwOfxIZpr$9J`+2;=e z56itGYl@FbAgsa)LkO7zjg}HJ&AZYX%ho*-vq+KBj50D;X+#b$$kTRr>t2g6teukj zY~x@fvzI)(0nVHp!@@%50%6Tuo)vjU2p5->{hAmOt=H5LJ}K`tvEjbRz(vdEUvEjyf5Ej{k1%9@6+ z2>Gz;B?GW=$Ojl8=A)5ehd?@UzXfA1k#^y*P`j#v8n!lJz@2 z39%X;pM>aaCQcV{iXNme8BZP@&$==z{fhcvq=cifAWlLWzJ;L%GMub@^m6D(L=xis zWH`1E$S0^DdPEQ#2gfHN)=$PKAx_7`VTeG-;_eQNE#oB2G|g-ftK;!Wh}H4W~ERJoV&F8ZUbCCJjzc%Ezi=S;qCq*_$+2Jr#ouGATkl#1sHz+gTxn8Vy{f&jx_2fHcd?=#+YnVL=S*sbdiitJJXw=cH7Dy)o@gf>QGp&QYoP3Wrmw zG@GYn!$M7BQZ?37$08h7sbdiinca<2PC=bepj)f1Ris&@e533WC!bkBp;vc?;t4WQ zNIDYci1QSZsEBiA*677frz_lK*C+YZy9a&GYw210>|S$P&JVOd(43RI2;3dq`wg&~=qIG!Xh zh~dwNx)5PqG?|{WizdqU&I~*S`V@g zCQ6x<%1O#ppl*_E1*(C>(pVUhj7oz^jDfXtp{QG#;f!T4QA!j$Mn3J0sav+!%I%cR zjnyj@NNa1>Zl{z<36e%8IxWrE1K4D?{CogOU#J9Kmr7_`*@cTxGA;Cu*BhM^b|a*C z;zxdJ7>#VTJj_(Vnhkx4vE_{hvs#g?Ba#6Rn`Upf48sU*#F4|M(nr@%YYK`5w z=?JaIJZzf2-7W`2D8#BuiapRO5+a~-5Q_PSm0$?8lsZ(0X=c4vf*}yI60F^6^_tt0 zVN_QXWarn1wT46l*4;{n%C>jT)NJpZP28Ex;Az{ZlWnI0%9oc`G+lG2yyf~EB@Nf# zsBHI4s@?GSYQ0-uY4)4lo-jTM;Rh*HcPiVhxl!J3&5g=-!%W3q>sY%^_FSlec&eF; zYJIEjRJL1lqrBak8~Ju`4cOPzxtS@qv@1EcmPP`Oz_F1P(7)kGqq(?T2ehVI?XB^^ zHBny|UdEssl!Xc1G#z#UiI-a$U-*CPxguEyV;;CFr8#z=A9<<548_e|qBx?{hS~y1 zYe#OPCTcc9QEb2y>3Y~d<}PlWT?m^aGR@p2@}lb*k|Vl_nkWmB^K1W^++HvR>SD@p(g(Vx}zVx8#Bwgi3*jCnE&{rHVsZ1daqCK+D_T-B{h)d?V zsNse2hdhx)z(4KBmQcx%q%Bk}a!ZO&pVZ{UEKl-cNQl;ud7wh%V{s*liBBh6<7P$( zVWnmiOJg9cIBoF)J1WbP!#;R5M5YybItjbDC8R$nsx>OT_-GADt-Q1anWN>Tn>c;* z(iC)hA@%TK*Cz3r;d!aC#SQXiYv@KvEp8~ZW23zFC+NggZghhcw`2iNJu{os*IV2{9AHn>Qg_B@GZ3dU8zxh(@()$jz`=Jo9c> zNPqFE2QDW_Hp{bdA)Dq|V_O4Z-P=njz}3DbalpOz84iuTDN5HMRa~=bk6R2th%2=w zD{(nj83tl6wuBhckcFR=9lIotiDR?0-ygQbn;{`u<1>W0nGr%*sTsxCIzm6=rzBC1 zCgZ1*pqFwqIb30h_3GYgsK}mN>f!FOH*S!(fK`qrGY{rnLmSgkIhyPV`|QEIf8@9; z|E`~mro4F*vQ^RmVPSf%DL^@zq|a3NIX)J8;8Nr`1ms{`$Uew(;zs6D3C5Gm-U~6o z_-!pV5}1-qmSO@Ce=bC*cp}J1s6yDrPs2xSrPk*|9;C@-!H`PjOF>Am?`2sRUNWMDq*2vM|5vz1zq4|$N*b4J-U%r~3A!YzSxIk#;XHP+L^v2APR4-zGJ8=SG#jktmm%&KxKp?#r#oR9I1f zJ>7jn;1`442HaFL+&5$JUbL{^rImqnmRc-dp;Nf5k*{c#?e$NI~*q{!f;@6ayet^J^UyvlSw`~(TA^> zH+D7F`HqBk*wlD*FC4S3eKqk)1W$>iBq%~OcTv)r!P1$jDe25&>CAF;I8y}3PVx;c zA!G0BC!yycTRPEd^pBUIrRt4f_Zd5bF}7eFF*C=5NA5(K^5Cg9Y95l`(Srd?+7fXw z7BO&O?DIcn*VZoEHuLOWZQHhO&%A@tgSJXQ9G`rBNo(MW?{aR-U_H=F6S6Yj;mF7yPd$QJQ z*N!bOuC6XL+dWta=V0 z7LY}FytdYE;N)0Xgr@dmK|lnJ+zX`11F@;VN9zqhiL_$WxWPpy`^_G`21j#vxm<>m zCl`)2`wQ*ndOs;ctGx zvA))84pj@k_iBgcpFh9zNU&7z*Oz%Ftu`!f)P|$fZmztt*=`WE4|uJ#dOZ*UabLSr zt1nW;E_Fb8L2xN0cv+9gufY#2abP>E&2GKl>5_X^yUo>ZXR+DqfgLaOJFjTA1F$># z3n4nRr26vkVCEQHclTQR6@(s;TdprQSDNkq!g8zEC&${I_Cll8h525vp#%I)Tpmug z$?vTOT-jP`fpyc%!IHZ~m`<2RJ@7v(AU4!5E?xKIt>-O$S9%t9i@1NTnUpv3= zFp-a5JHL+{X1~K-Alt%$Tb|GTz3aC9J7b>Ye{#!6${=93%>_FT+K6kfP#qc=?KK~6S{w4VQEqoq^&u_x#m*DdteBK0~SHWi)K6k-q z`1QPNue}bwuD|{U?(4=IZ<2i7eDjVSx9r?GH#a{&ziZd--FwK_UiBAn3xlvy0WC(= zv(Ap9uv(44kRoy{%6t(Miz-ni41-Eg39E1)d?UUHo64|h@XIa1&e{20&H7ynFW>*N zJMVb$OJDM$+Yi3*z>(YbKL7Bc#oc>euw?GM^w{9q;4v4Tv;D~zKjo=Ut3Ca) zXIygWGq-G=y5d=vPhS(98=SWZNM8S_VCK<5aOzYgm<^sCJco!Ed_SC+4|>79!3%*Z~IQYh?Yl0htcLZNObzSf~!EM3q!Ha?!dS>O6&+q3}Vrmx$@%PH9 zpQcCes@xR3p|T0MuAKS;{Yid1ukr@?J`%h*_|Wj)PY-^JDX9KmIdy&T5}>aGFJ zm%(2zAJYF~)XR0c*hUk!H2SULo9nx z#CdO$^W%QxwoT7J|9<^-FAO#vJU`H17X+J5Ag?b@O~CMt_hw?@PVH98Q>SD$vk6*jE?@EVPMx|CB*p4OF5hO_UeacaubEwqp-4DyLwLC^ z3aDd*Dt^c#i#XnlA`iItwE>@YL&rjr?qm;1x`9FeIQ#79T=U%PuD@Z&?mc_YzhKMM zl~-MT<4v1y*}Z8~b@TkLJ)1Xg-nD7dCOEW*W|y0@gf?HfbN8kzH_vaL+dT)DZ_8$( zo3`D&dDG_2JGX7$wt43!2tmD*?S6fol^L#p`VNebVcgwp)SyIgMUDMMDpsUoP=g8< z`Jc3WKIp=C2R_$A?45((+7Na7@cS!h#5)1M9fzaj|33U*gBaL_sMx00kRz{vSlNbX zcnRrkAcyNh{JaWc=Q8}hJos%9?po!3zY_kg!?iuQds}dl-dls8m+gJdY>WKA7zCHp z8Xc&vv^)LUF{mKa>a~07%dJL@t6kJ+$%5A1E~!B=taeFou-=2B+%fo#)Z!q&sV{ar z&|;|QEHBrN*L#4^(fV?|y$JZgV!lv`INpRh4yoO3x%AR4r1C?U)>l`X^=_>WMW7a3 z(S=$Nt=`mYE0iLwL6DLK+&E9_g4YgC0IOE}9;m4_YA4{%+GULz)R5LlaRe5+9;pVl zPXm_Fx6}bMqJ=A=7i$3~3()(l0ji6Datn?_Q3SqNJD^|)pwPM=X(VNE$?km%(0Z6; z2St=-_nu~h00IY9_bdo*2@W;s(3=$zp;Ee;Dl3tF1%6wm(i7{s z0lsU&e#qAM!8g$Zm6VjKE^RHH3-v3gR4(zy7UCks!UBMzv${ch{%!g6O3u7d*7;QUgzevH!>K;;af}#?m0kb+6 z236>VdbeArMhN%LA0F|D&yylny?tz%l&)g>jc)zKpv>3{h6UNt6OLG z*`rp(%qLkAgZeVFX;yfv)t8`NSi3X`8m)U;#I$NhPu8v`wabywgZGX|+}i}xUgFzjH4s5H0M1N*C1NjoOcU|!l>PUs7;AC~Jtm+>j^RT67PrvgwmGttzUWV|9+UAA`ZWouKHt!=%QZvriI zUR#r%KT+?tK}@&;YMS6JU9dVBw8GCG#H~8bVY&Xb(&PVVOnT;CW(qCP~SJBM-W zO0Z}`uLXA9f^lgRuDlaylIS+Niv7l-+nsRzDo}^O1z)$3!tY88R(*#cKrNmgh9Bp_ zH~IS0;FFLSZ-$@z_j+*8;K;-9|HH^{LhF;kp8)L(;OF@?<9saSpB0EC9cWb-e6tR5 zGL6z4xk0ZS?`0-{m?V52CoE;uQK5Jbm6s65*~dR>?tjs$=@I({dyey zyca%9aw0dO@&x+x=YsbNc+`T|4v)^!-`)_seRw1-!&`&*55`96GqS&5AABpN_T&^z zHqKh0N15#8=Slka#e?zH!@;ZJ?~8_azB_mzco6>jHu(GijOl(P_|f3Uf}eqr-aCVL z4X(N=_`$(%Y*Z(cD?a|V!PW8K?Elx$qdx^>!YiN`BFCOK6!I78-#<@(J`7c*w*(&; z{Lb!uZq`e>03h$z4AQInwt8FAx4#@SVeJ7`2CoeA(aM z1>@HE4Eg_;gI@`LHF4yp6Th?TUY9s>GyQ!B{2YBf4Arrx1m7F{dhi>;Zzirya(Os- zli-IVBA1JaKUA{c%1RLEby7JMI6M7JCc-x)GHqjZl!0TDh>U|%i`0CJ4RT>G#?HQ46cJ>EPVZ8@Ug-5@qNVqRUbl!oKN0Me#hRgqMbfRc*S2kp`QzaU$6dJ^*5>yRp)|-sy|YFu=@Jo zf$D36*9ET$-d+7Z=mB0GysP>axb8KOdEO6w>)Rod`ap1h^?~4bAd`MI^rH7v-wHkF zC*bdo1%DH~y85x;v%%+qTD9^}^~b6g!OsBxdZ_wX_$~eYH8^uBcw=x$Wrm(5vOQFN z$Kbjj7~I*do~W)?d)51^_f=QmxBEe&d#bJKQne4CMfh%2{|fro#cI2{P;J6rcf+0a z>T>nM$}8ZCL)E_xZm%|~FR6YZI9z>P<*w?{>cQ&1>XGUTtGlWPs{a(+T0LCd4}Z;9 z_f-E5vXHYXhv4@^)w3%vpt2mQyrA+TknsBI-s;WO7gS#iK<8P*L{@U@h}_g1>(o&i+Z|!}K_z_G@t6??oSuJ{Wx<`b_12 zS3U?=k>lj+1MnO9{1Tk|x#-si$A2FF|LMW+>^k=ISEA2XewiNsrRe9Q_=+EozF7H} z%D+|K7riHXfAk~K1JTb!?}G35!*B18egdxlaX9*(=xx#4;pmS=?}ndmfur9Sy>-ar zEpRpn-VBm`H$C^d=*{r=YogZ-t_*^IuaNuR8QmA%3uoRGy)kj`%qP_6FCwg9VRk#bz?2fLBu8p1p=U*5djIN5d!LftU z0r>g6=z91$4Pkg&G#5TpeF6No5blBBg5X)v<n@L;6g@Gz6uxJo>1ca&UbHzn7QQNcX826F{=De1(PN?~z&%fnE`sYe zM`uUR1j>*_MURTY=-eoP|Idyd37@m0{|x^ltirjAq6^_?HF~J}ERgCuK)xRiH^J3k z2`g~@m&4D8Uk?8v{AW1+PvIBCuZ4df{$u#{@N?l;!+(V{UxMHN1QJ2|p435!~@b`1$$pW8oje-$C#faMfqvs^1Sk9sXYU5jgf+;cvq6-wi(qKR*+G zH2huoKL|boKYtHC9}E8we*R+k>*3Fb9}jMe; z3r~a%_`WmzjmmxD&EZYqW#JPcs}Ep=_qECt;BtR>fZq3EnBwt2!FiQB99s%+4=<`* z3^sPKa%Y9ny&Gu$Je>Qk$}hmrcU0aD@_c9b#_%sIe_i=N_{(tYq3Z91AA;6D9w>ek z@Oe1=6H1x1d}maFPZZ2WbJ0%i_dHxNkNnP3+a;yH8_w*B&Id`@_ulA&;qT-K;fv>t zmC)?EST_Fu=Yw3VU3;jEYuZ~+lWaqz&l){!*Qes;g`QH~ynLj61GlZjFqd=)CF}IX9veUl|`` zf0Og0GqT@EFO>c!eG~a&GhZGFm78GE-;teGb%XE`%D*6BOT1gmc;X z1>}zG3?WhtX0%BC`r6>q=-T0Ip=qeAWWQ(O*s~Mg&ly~E4OClX-`k~UWOtC`+o48t zbMTDl7O2G}zYjpo?l!2`?1Wt6MwqE|0xGSe?>%%@((O=rCpFS_czUomcs`)tgnH>x z@KUHElG&1XLT&m!7=IoMz7dl13&B_6NzYxh_Iwnc_}mY7{43Pu7vbtx!Ly)!z^4J# z$mI8{;Tg(1;EBt%!DZ18!f2Mzc?~=R`XQ*_-whSi{qR)iyI`z)R`f>tB#E5w!PBwV z1|Np%^IC9u^kx|MzApH77z=+7T>bjsL8!ey2;<=Ig=+d6g118L{0D&g2jTPMP)Ged zJQa9b@af>o!B>L6gevX3pvwN<;Ln102Y*G+e*vB*{3!QL&hHBT4eHRz@2>^lge>{9 z!G8o-MDGjUN9F#hAo=|_!IjY;(RO?S>exhXQV;(m$Z<8al(g@`V0-i+$LmK)c?2fg zMyc7hNxDA;d0tdGyYkN9F_p(x&aZ5*Ov7mXUBRuD>FAR1-O#>G(KEuwRvv&6@l5ot z;L`B%(b<)E2baN2-fHDJ(F4IFD#>r2_L0hMmD?+el}4pmX;(Ux)yi2ZS@=IMj?Svw zQ#nytuRJe$dFADmr$p}w7Anc_B(FzQu7&gbk$WrmRqn5Rd*$^oZvV;3dn@m&yf;N5 zNo}F>%;>$rZ&rS*@=)a?Fk1eD%9bdqe6;e1m5)_^yYf4gk5~Sv@(CC@ey#HL%DLgA z!bgYy1Zdq9eOq{Q^o`2DSLTApgpUokhcN9PMkkwLhU@5iHheZ@*gL{k)1Mbd}0DaP&PFCclq_w?W3e6dntY(|gHX^Wo0$Mf9&0P?(B-BDf@aMYx>! z9#Ol6UiZvsXZY{oInlp|QxT!CCHiLA4!_B9nhQJO_a(lc8a*|7dQ^*6siaSfo(3bl zbE2*E{u`nv!)WcQ=&j+~xbNisgwIwOBhE(G&=K4dV0?Bx-0|$_xeM{~i8UNJfF*fHB0Sd@y`~j_%$GBfB38e=vMU_yghF!|xBj z2gY#U9li<1S>FYttv7_<5x$;|?7lVpmhgTU-Q63W4A)_dcTcz$_QPJ-4PP1F9X4Ua zw-_D`>)~DDLiqCVWibAGY50=x#o-;{;qXxS!tfxB(e{V8hWo-7gwGH6!nl1mjBw{+ ze0XDcLwJ37U3hKyyzsfMe72&hO%b|WS6>foX`P0K%__Xk;;Zwqk z!zYJN3ZEE0A-pKOAUq$&f1ASd!pDV=49^MA4$lf75mw<{fe_vT2*Oj9|Ec`H%70h> ztMZ>PL;RbSf31AA@|DV$p<46Ll`mEPZ{?pVU#xtg^7+a?R{o*#xys*H{;u+WDt`+V zqQ9wp7RH%>Rr$-xUsOI*`SZ%3RX$z$ROL@Ae^U8m<>AU7SN=bHUji3Z)&763-~wr3 zS-Ix8kl=!dyAEDxkWuS;vCHPUM7HEESpA+3~Nl~zd0rB|evv0AoNS|U9!JtsXYEtZ~bJ%NG_>Zx&!Mnc4?e+yJV9Jq_I-Ilq;E~9BB+@(W9hWrCX$ItUG34WpTKaCZ$SA zSckkxN|c64L!|^MUW$`qr5Gt%ijrh$h!iOqrNPo5X`nPf>M!+^`bvGIaH*#hCiRfI zOWmZdQm7Onb&+nAf~C$;2-?AN}--o`%fTiEY?1G~p-vER6wy@oy53bqof z$t&1$?5jTtnT98*EA!^k{xf#s1M&I%pLiNzFY$W60Gx=y zp!PrUG{X*NOFxnb*FPjZ-ik|#w}#BlHLMdr|IlfVR**+%jfXg2@*9eM%QhU^ay!Y; z2V)=d2JnI8-xi!$JN(bV(+>NZ!H6*%{_Wt`1$N@b+v)gm;><(f-V=MFJy~nNp4gWZ zZtcNGhr{)D*xO?Vvmt4M=l-xx^bJ3*>3^&2*_zfV5hSi%%OOPBGp0Q zEC+Eu_yMHb9h~jMcqYR&96VkE?BTExpG^LG4!tk;9|qo1&jpfwKKT7R@xQZQBDg&A zrMLFn3C^|z@+VJ#Yc1jaCEx=Iy80~uANVBrz-~48z$M^DU%*3e?IBK6d&vJ4q`L;P z9_!J&>3IS?cn`mG5^%4{@K`GZ6lsd|+pcft@ij(v!}g zhTtdlk0&44#;+kpZ+d3%r;VQp<2ya%_7H#G!q?<2e1+)w23+Y7zcCGDKXM!DM{bSr zeQS)b>o@S#9&)=D&u!pW3LCWbBMxy6o^x=y4R-QVAB}q?Q&;{(;tL!JjxLIGJMjqH zm2-}f-~-!Z{qj0+mikA}2NG9#BXT&2+=vex*I*p%C-G(f)r${|hmZDL13r*=v3Sm3 zk}VV~>Fxc9*E9Mx2Ok*f#eLd!T;yENABJG3peNSvRsL)cVvxNiA7}(07>V76XuqbM za~#Y$IkLyOpLjm&Pr#~Y0^gIk37p*rZyms&Xb=L+*}bj zb_aMm8|DUMF-P#^?QX#wVFYFmnLao=nR9W(!}V>@2lJH(%v)4muA7^W3vSREr}R2< zevY^~jgKQP?#c$uFbBG#K_GZJJtwE}alcBxV6Jo)bEY44e4L((BOZ?UHsaY-eob&| z8!_j42XnCv;MfGeM%$a7W-m@GL*c?wq-4&A zT`UjQ8#Cr!;KICluukB;RL)EAT-RWRE%>f0ym+qPF#jj6>nv6Ve#BZrl?VTI66*}! zJlGNJ!ym>f!$HoA?Zp~|;KoSO_9N`qf9S=RZNcitdsw&d=FZk}{!Hc0Ud4LF(^$n= z2<~hiU-g)Ub&-d#W-nsIW$;s!ExOtG)HDf*JHmvlF#(K}KSOv<)N>K*n!unvf>qch43fk3JVQY#Nx5kjA zYWP3H1;%2}uvWbkCY)d}o5tE*_F5I4Tuj^=%1PM8<>{@Y#8XF!4mmGHB^QO0P=MlA zRw8tJa4B{}54YA3pBhJ4q9STf`bBW`LOsf1D03ED3^~Crk})ep%P2&>ci=Ma+W882 zVTErH+6kT3p-?1`PUkXihndcixZpx-c64@UEX*}!-*b7(EBEQAp69s~xp+GNV*(cH zIiF(K=)?#~>6?K|7;vTE<&w)6`PY==CmDT`)u$h6JjIC%I_{I_EG#0GFop@%63Fk5 zb2!VOM@RUVOenJA7!P*(OC4Mf3l5_|Lj^x3L+3oWk{7t;L0ODAgo3nhFD)!0-905- zEehf~i%qE161|&Sr-~EGOYoyGl&(IE4axIFb&h#vm(^r9=UVMJbA>ZNc?CL8q~o&M zN$(0Yuz2UF_tTKmPHlLlqoOa=v_LORVG(Jd(L$LVPH5aILtk+gSxMiJD6Xe7i-J&N z&A7nDR#;@WYN-(o+-bn9BdJFqPJ5gN!}%A4FD}h1aZ{fwxT)c$;P2&5$A!G(6VbR% z8YQd?C+WDR8o~`{Tk`n99Mc`8$et9~uw1jtmS>_SVseK?@g3@+qS}0FxSJ?-=*jU& ziSTpcD3eu}qY_3#f#Db%&V`|&2t0H?LZ41?k<%{PkmhAKPr#6-C2O)-m=8CFa;%0Q z(IdaqZlB;TwuR?T?xa=-^{T5r!UOGEbwN8<^#pn0?xrE7qxorgYi?>{yc%_3Rd=E5 z$lYfPptcM3s7JGf6q6x)UC6>xC{Lp^d}x@SK8%&3_e?Ok$)?zK zk&!0adx6tpqEnqFrD}b+)u>)yVK9d28h}^YW35o)X3Nvsg{HhpbMwGL_npwW*Tkfj za9-HB+a6C##l|}>>QxZL6DO2K)u*MWUXjyPl5Z>5R|m#6TOmXP+tS==!uDFEh|e%OoG}o@KDjoX-V{V-hF{x$4x!6t4UYW?>RxhNfonLqbp+ zce9F2=CH&Jijx_SdVyv-ZoVZgo)o*qr(`9QJu5}2m!#+n3LKr0%#xySNmUD)MhAnV zO^GQZqSF(jaX>gaiQ}udr>12lCZmc>sR;?Jh8yZxaf?HL8Oj484^Oug&^Hr=rSgCt z3DL2HXnblCbisjIFstPy8iDNGO;uy(KCg^$8ChxZ>1n7poLt6>CCA4lW+kVwq|}jQ zMfyr1c-R;dN{l*0{ieH(EL&%R20gcj(EF#x08XS6P_ZVbYT=^eG;>_y2sH>x&cb1J zB|pj|6&NWm(*4Knq&ANbjUO)FLlryP5qFP^kL8BM6!8`~aW8=njL`I#6lcnaPeL~# zO2wq6CdH+O1LLQ-n9-V=HTO?v%-nP@wDhmpfXqa2Z%s5XDJ-}J0l z6xT^ z*jC+@q-(gl2Vf<>ih>%CP;f_b=ixbS;RbN=5mNj)+KQPE+U|JNUd7nPKLW|onSHYR zpncOD0~LQ`pu)Si;@(?v@0~5&BNX=t#XW-DGm=xGQWE1A1_xw;u?77nBaK=P4ciR8 z$}mcA8b;|&!zjyAJm^gx^d=AF z#>Z)TlRLf1Jw|b-H@VZB+%bMdXC-Aad?WanmN7ChGZy7YkI&44szVl+m=PPDj_(vk zVjvD(lOkLkMo6^%%*2!|9xn#^I{Ehpoj{ZVc`HWV7ZgY8L#jXTJBlSb6N)!uvc$j& zycp@~tLwK5p1VJ7ux0DN-rxDbj*qmU`wo1(|C7C%y@qL9gYA22IO-e@es<_Xo%O$C zlxo*Y>8&D1)gi}qG9(bLZ?e)hTNmn?nZ#bqzO{L1nbudb|E z_1fw+YhPct{*5=^+VJ)}?{3`m-e#&rrq`RfYzcH$0_Fhj1xyAM0SW-40oi~wKoVdW zAPO)55Do|d7yvB+L4YOz1~~UTbY%ig0xALf0lNV^02={o0LuYO01E(f0Mh~GfFeKv zAP0~QNCON5L;(f>!T})w1E2+<3E=#5$PZ8n*bUeKSPobSxEEjtE zrT_*w`z&;a0`>s505$+B0LuWRBXj}Y(*flGJ76>*319^D0fYbyfR=zDKobB1oLdas z04D*JfIWa6fDM2Oz!JcGz;wW5KoP(K$OfbVh5@1g0|4CtodGQYL4YOzf55qCkO!a= zunVvrumms@FbyynPy(<6EP&B~G{7)`5zq$^0%!{e0{8>YKMk4yP67@Cb_2EmHUKIB zO8^T1a{$u;(*WgwB0vEk2apX&0}KNU0E7Tq0Ga~)0p}J0Z@_WDVZd&{4#0Xq1z;Iq zF<=2;CSWqa4#)vy0)_#MfbM{{fFOWB;M_v!Mg<%O>;h~6EC(zG%mGXT*a6vqB!H@u zRn@~v`d3LW>r4RYa8-4+>UFv9hWjqSNx*5q8Ne{46-Pj3fU3`xbhw7Yy*r>Kz#nk( zDfA1#7QiyVe84n-9gqze1_%eV1e|>mc>&e{76WDi3IK6{a6nr?Q^1)gP-egmKm}kS zU?!jhFd7gC=niNBIKKdN2kZurF4+xuR{$0QrUME9*?=fO2%rVv+~a6tfL(w!fW?4& z0Y!jpfDzCg&=SxDaON?T5wISx1TY6s4zK`{00RKs0WAPc0B0XX`hdfLEr2C}`GCoQ z0zeXA%c*!a0PpUAmH>ai+4+bE*bP_@SOO5g!#I=rIV6(4fLxOLd+CYBnKk>A~erY?%tKEQ|)Ao@4=zymqo=%YD2*z`x$J2#NyM;pPtt*~x zc)H{1ft}beNX7MpY+Nrc%^blcntMZ9t`B79`a*I}efmR=u0N#dAXeqiNF=cVL=sUq z4N*7Z=ZCt02P{Hjk?S}{FmMV0?g1~7J5c_Vx2{?n!mRs|B4mFg*uc-PK|@HXLdP-v z{75k$@+H04@NR%?)p(Q>z0b*@Zo8l5O7&nZi%8oBbK&kM?7C`yh6?52KeK;k}&tHuY=j(_aGv zk}Z6mODUe@_-Ow=h8%uJ2!wQy$jyb_YKEQb8Q9%^2Bw9O=wAV8#MfY64H-5ALcI+6 zrx#%-Z5%Bii-iw7K+}XunmQbC=_K8O)Skjwg{f>Bb^%HI6n1PO@pct<${BXh>BIno zq@(zKhZkh=aUOv|vdj0cB|k&biiIiOLYGe@Yl88@U%D0&a{VCX))7*3^a}xyri>U! zPY%Ngh%}ZCDd`c|RlgOxp0{E5onee(DC0Stb|;BW=t$-x5{*U|xbCdU*u`hq&8OdZ zNM;VfZY$~X2*P;BF!r6sNJzTK7$gC3LKmX|UigtzgD^G6n>5!#3pTkk19!d=5_(iG zp^%j`W9Q$3T}n*{t(E1#m$ZLe>@NWQv9VMJIfF?&%0u{n77~D~xUC8!_v4UOfTk3T zZ7qS(4S*o&dDaYXp(}-9mzi{3)#E`$P?1}6FO6YwH!#KX5cK# zNXRIRLTGGDLgs-%`T=LU0Y3n)=PAR$f0EP|vVGxP^T}GS?}VJ`1PQ};0~%Wpx+%u* ztMK;2Xxu>R138FtNK@cEIiNL0X6S^G9$?pCgogukoRYk!A24WymK2CO75!4e4dk7l-rH7RS+g9E3c6+p9mT9>V5c_*eDZ z3r7L5tXZ?U7sT^B?DaoQ5c}_Z-sQO-RZ{KEzN|i8-H7+sJqkXAVPf^i)yJx@W+UM? zlb^x5SHb%vTs~CHu}UiUHruVlZ3!3Em#`Kg7D#07uPe#D&352~)Z7cFtG};KslHzE zS=D6jg<)_X(rE4l%FiD)z8ooE!LDST{6o-M+p+GAyRk0eJ9*R$v* z&RTw|iP8|IyqNzY)(D5IT5^eB3#qF>Q_?uBIZs!skH=)r&R za;x~{bALPP^fo2rSD@4%{-M0hXmnP?&%I#bxC!c!EA=xCzquEF0|s+1yvP6R-Sy_D z;5)l|UiAajo2wgQdh{%imQln>$2WTgz9wY5lBXNT*75i2 z)xTE1%}qbS_hsnkCw%r^NMz>fc^9_9R#9Dr5jK;@y}(0ic>Dra!X8>G(84ERBpiSd zo?(nXhp$eYB=n7!v8%wzHs$=>w=5c?V>aY)=VPQNJ><_yqk!4NY>;#}zF_mfnVe=Z z(gJ*~?qI|R7ULWItTdYqmZ~sv&%jq%!dJfo|9(Dz??5oPmq?tnXpFD-AkOO&k4wC# z;5$2Ve)}eAEY5vqNR!y(ICn8wNog*=<7Zep&TdQr@0_~O%-YPKXwG)L03%r9auOZT&p5>6>f-&I?r)758K zp>p=lhLb2~@J)&YM?DTFQ>>7J9E+1FV!l)Re-mZ0T-aMGB{;zA zMCi%CO`SMQG+-cvmkI1ZCia6;xlbv#b^O~q-OdvFG45ahFG;dIW!IIXh) z=X9RHxt))ymq>4c!&!>^BjRzM=LMXkS%H&)bS9@vI>ltzD{w}qTsnbMj%Ojk7>^S+ zb3J#l8NiW#Y5cp)jepZWk*@e(caq*=R6YE}qdpIwdnxdK z0emZQ*2KXscb`Z0eIo(!L7sOK(1~NAE7SW<0#&D^b}IqhauNrwlei{2n{X4xh*I!R zAicHV;SG$LNg_pi3{YN6Fy5obmJJzk2|&1gqo{OaQ^ z)Ntxs%nDSS@Ato3TIdZ#!r53wpxdne-O@5$X?^4C>H4eA`hTyqm)e$Z*3CLDrnEZZ z{6(YMmj7aOuV}vbWZxr%SRUVOZrbc z_omzBXy=pvp}9AiJ?xi*<|2dtMmxU_wf+C+c>dp``6K^d(A<+(ycE9Wa`B3nI$zPc zeeEmV!y&stcMH*d;M&(qi>a9|=IbTKmcNH%pwj+TjJ&zDzYimg9_n0F@ABU^>&Ny0 z>>kpskz=qkvlKfsPeD@UTiA&o|Gw^nru~@%*q1KC ze;1o7QCN{uF7~Xy#s1xJDO%bJ>7gBv9SM+r!~UC-r}!v#SDRzE?N-Fz$|bk9!hNx{ zkNe&O*HMtXS|)8niaP)^d5ONoZtZD=-^y?Iqml_aJcZrOMQk8)+6pN^qsT4@XRhDqkHC*=KTuXUK@Vxy$}d>6PgUO9YZMAnh*>fK1L2?3Qj-FrpL>U^n?5=@j;6_oLhgcnJ=$2bA5)Ex>XMa{o<{ zSEKX}u%{p~w-2s|0DFLC9`-u7C?&X3w?lh1G@_2cj^wA1a3fi*0|>tzDQ-h=OGCV= zFzts6x$cC03v62virlutw3W?)L{1W$C#A4QQPS;ffz%YfeXwKNUz!Dp*2Tc4FUoa4 zWW5rlG}Of@)(<*ehhxWEl18KDTnW8}!%>6T*y*G@jV1n{On=w!0iNQ67m@BluQ1g9 zJ?|f1AvJ@ffc|Sx+ek<)xVrl9-QOhHFfp3Zy<{|26OE|%)=w){ma4kiQETW)wffYb zz8Yc?(s<@?NJpf%MVFE)nW^UF`4-ZdHEXQ8`kxx}q?EVqpBmH45d71}Nc!2kjR^Zc zeatsq>UaHb_OXA)#QN*UJH+L$FMX|Oxl<2QZ7phDm%SXkMRoP%=PguTN-d%1ySDOb zq10OWJ7#dz)my+zscF~8Td3jGx0n^EHs9}mx3tyOqP%}kX{)QX()z~N)Af*>Hr3Vt z_ey)IZTV75>q)D>VpH4lUx`~YjxRpBwh=~)U0aV6v-iJy_VV|PFdFvWrvH`Mi`MUb z)kjys3g2?Mc*RSduV^%{eWiOm z^uw3qoZm#8-_|$=Ev9C=7>+@-^S_5nqtgCWjJ#Xe--nS#4|Oi8clmFd1^v}sRwviK zLT9(W#7@TX%7S>cjJu9et7 zCG9NNVHfiNk98FBNWV%e?CQ0ajzSv%oiIHJH?omlmH?dhz5-{_^*dZQ<8-IG+eAA} zTihBl#A>k6enGlxNNHtYb?j^$3A6KsGmzILMbLo32rWha%s@3g;7yW*t5fcBDw76aNT9fN&k z%J~p-KFSDVu~SO=S~@`s0__QtZyIYM-OM^;$G11iP1x;2oA5_n_e4!~!?{&|#6Q9H z`;cxQC_VuO^pI8`(&!`f`3Q|ZdRjtz3i8~}8X`a1d2I-~Y+*gQW*I8yQNSU%lg1OZ z)cX*M!ipG#&sN|chC0}f^RcuyP5BG|PQcF}ZcP!o6G8?{4xG&#f}T~3UHS3c?0|{x z9x&kMgh>2XwJ!W`-J3x7B9!1%X#vKDqMxJL;+auw_qk~36N_SJ@Ls$>iW!{6hF}+T zvrKT5n9B|Pa*6JSQU~-lL+8KMLZ00X!Ui?$JZ#!;(JW|L6w)T`6?V{q#t@=|c8A3O z=KT>ad;<%CvlCdGbogsDI#UtF2i6dToPgS<5p@)Fy+lCj+JL$@DCRMss{`p+P`v0E?nHQtK~<=4 zL4cu9N1Gl)D!!q29qRbaB_+kST$4Mv(Eo4Hw0-l7M+~@e*yOxq#N`+#2 zs~XOYqlTQdu&88$LA@k^h)p*d1S&er4LMX7#Wq|D5CRSLp)TEV^*mXalHwmSsi&cuErn8QQa!^tIHp1nN5nnnzY>sbiCsF z^s^M3%W%&Lp__+V6~AS2FwQ7y~2~`tVaOZB7I(9`VNpzta$*V2+!S#E~FFdQ2-hV zhzz|TRwr%%D5mDm)P_&yQgN3J3oacLTpAKw8ahaPGX@!$-mT1B?7-)OT%n^^x&Owk z&)<-1EijL_Vbq~Ms_F1o#s`PH`6`2yXc;Wl?4ZVt=88UmZ<2C50D3QDaA6jki>?=7 zRtJAEWiVre425yf6%aIl(G?K}lnY}XUd&bKbYcKO*=!gd3(1M)p=%dAG5EnucQxUK z@z4MeHuS~`^gSeZG47R?P@3+33NydQ1MgA?1{@3B2IO#BC=kBI^bMYZ9yke*Z??Ov zjP4*Pr56j%H-MG^rM(oztU!Un+VTyQ9ZUNonpGT$qC14RJrse< z3UH;7@MadLfmI?*(3dC&B8dBK2$M+^odvs;A%*h~C_Y@nQSPGWqS!RxU2zb2Bk$e2 zqgW?1F1W$C!EfFP4)25J#|(c)Gjrm+w}6d)T=1egxk4LAv4 zQ`1;WKsaC+AO}zmm;+b_2zHGME*(Sk9fkjR7b*54n8ODU=}`Ci`Si{=7c++y|L_}Y zH^tHCE}cGoX=deuAIzd~4+u3ntHXjiH1h!)+=0thG6C(x&M&<|+yv)XT_llSl5K23 zNm{Yff(w&)A9SJ9SYt&b#NqzQXz_MkAWwG<4}20aj+fZ-qD#=NOF6$mc-w7M0#8TY zukb0;C9zIdY-x#;7oOV{3z_4~i<}PhX-bpqao}?JomQ|HnCYVwF3C^fbxG4Mmv+xU;LkX}4s6vjPq-ypql3;%#&A zw}M-m6PLT_5i50>=|ZjIn9}@wD@upq)x+*(RmW#@ULNRTz;#x3ix|;y0UdgH57EQH zHW+$x`*=?CF!%RCTsbp{#|Z;ccB^A7#$~#x24g2!qEfU=;t%;{SYfKah-N4;kFyf@ z1K+Ww#HYEmG-zIC2G4Kjvp2fM&5AKa?XhB>WPOByXq%|;_PFnD z;zW$D!{gu=Iq`3=Nii~q z)5gDLmIMpu9q{I3Ql8U=+v6})fJ4K5UT!no$kN z2P@8l9XD%HICHKG0m}dj0doM;0n-5G1i+yLPz1083IM|ZMnD`O z3Xld!0@x8g2Vj9Y2QV6t3CIQv02n`tXMOMRed~O%{R3I&iVrNQC(_a5UROMCzd4{+5!zajSH0-d)0@5HtM)Xd{(aGlN}ls5>ZKMi465Bv zA7>ikUn&@$K-p~ccEvh$ z2)Gw=H)AC;l=CyhznHLA=@~i%zBT7e`k9h2|NHYL!Nuf(gCVZTirJVtJF2_>!iQeI z`cpbt6g8ot*Zzv{0{tqL_nGJty6+FnKJmn0zG-QM-k1YfF_Th%O`^owfN%w$!ow9? z1&4w+U5v{E4_uV~T*4QR$i-$0R_R={W?(H=<~wI&b6?1tk zg(BWniOTRBDU4V@`|0bEQ&dxiDGhn@4Dsz3xJRJJfLke%pZW4Iv=>y zc|Ztos9Y4|o(JgX1ea>QeEo~|Vd>s^`eLdpd-V0Q;VWo^s}ufOpR+s5iVUd7LaW7w zE7Zxz3b1fRCi-sDAZ36Vg9DayO~Dq}#flpAEQQiK8(&)GYpn2M*e?t38G<+=p)3TR zVrl3o>JPu zVZHd8-tw(o`Ui*gK;`ookDr74VvO6*!0mN}UlYTo05JpTrCUGd_;hkF?_+hN*6k<*b|3g+zmGV+ zx0LiTJoBKf%$i$J`tVrO<`2=X18;kOtuASEH5BFUj(5~{@Z*5Wt>87cfS#K{BR~`& zZ4<`OjW7ckVE4PACt&g0hy%#k0GhrDdcF~Zb{a*^LA$qHSh+iWw++~;A-qHQ+L?i9 zF6?TdLJe5wDa3vvHZ}}cC!8SKHeYMS?i!p}h}fRw`vlZ#LWk1TO2|QP_Tti?*l_cc#)^Tle=(Sxf^W}V?UCDAqe`Q z2pl3VLg#LwJoe@MzU#-I+D0ApSM*luJR$00HLwezl}r?nyNgX3&{T9-LOz5#B)!o= z`CI9UASDY63qvK86kvlFDbhaZpg;o#E-tWv&7nkxK}YRDJRRDLqWyciVV*X8DNR%X zSXQgWU?kTe*we8(@GS<{ip{KCGd6+9-GCKa(NM(g^zMB>O_D%KkXT6@mU1CZcQ>ByMi*jq=j9p_s^D)h zI?RREA)(l>2ZvgWy+5^l`o<>8N|ZP9Ti_j*A(|=FlLjudG3-_;;fN5Na2|BZx8c^v z8bK~PZ|Znz-Ke+H*Qg&K_zUE*O`*fyFv?w|G5U0sbzKc7vq3Zl#bYoeK}u0hDx5|$ z-WiQb5aa?03wtS%mysLQiw7M_3ak({$h{pcinkbI>XZ&zZ&-(DVAPo@EN~GuXaSzs zA;CT_Cy72q-XfI<%5cHr-Sw>vMh0{iqJ^$Q05gji*9)1 zDH=kIBxOLmlo-K=a5u_^uOIVa59T~)somn}QiAOdP#3ehJZuz=HE4;`M^%Ry#rL48 z8#zOXQwvBV2lisA#`qutKcW~fkroP-snsP9C%OkP=gI1D<_RKiY^k^fM0o$iz8W6_ z;O9;Y`$E>Sm~!gf9HoW1!buB8@!V=V@zv>)S(1g2+Vh3y|LEgt$g%H8Qr0WjPWXm!DugV(J+SpD3pjnba%H(MWDz~M5_cO zCE|gHCCxGcr8b0MH%zHNZ~t;He|O3uh+J-<6hgg%c;=Cm8pr+daZ-k@n*O;q%$o%s zxxVlqw$)jNiYi1mx8Vb!rO4}2|BWvycG7rF5-=9qcxoAxFwdRBy7A{ifo6vR4hqla zi5C}wvw_{yC4f=agFeazv6cfLmOaC8cEgPV4-oGjlWPvR>URs6nM<67eDS~|Pj_pe zwnLnhpsKrEEueDinOV=u+*mt0!041p@4))A89ZseA=l}&^Y(+Vyy9s^%{?w_{XbYp*n-dW5spVhHV|;L zyZAH$neyf{2vdsSBAQqjs2PzJKgFfQso32v?&gItyeJU$C}b?0s7+N$S;%jNV2z`g zuYfoZrVw>cdlN!lihM3-d!v03JMy>S4S5`08&h#o zlB;4ghz){d6s?z1ztwsKZ=QAZEAM))I|n)oqMim3J+8j=y~}&K)2F_suM-pMhtAy4 zC`zl~SZmgeq!ha5c;-!$`qR{p0cwpjYMN&Vy9#g(OII-(XY z6(8D-FT`jp_OS(Z#Xh?Bt-5#$*Or=|wij2v`ulOsbiCVXUA1RmH{vl|La(YTwYtma z3$IIS-}?4gcg#zzf8XPl0jEbM*GU~;Wvac-E{#5y-n;8g-+L_ZPG6-irJ~VKbyY+A z93q@?Wbn1RZ|~|bGsP;6HcPug0rOYFl9lHatiF?r+!B+uHFCjoYZ{O@?SdM z2`EP@i&ijK)4Lpa`=ZZZ$6KG8R)3cRZ#{)n`lxuTEkbp#KmW_$K4MUxsi;-@sd%aQ zUV8h`r>3P>e>uG=qhf$GicQKAz99+|GxwQIoSQPx*++-fZlHryH0j4;AT7_(NQa;ied#Cds)F)v3KDBq1d~kb!Dqn*?%fF@kMAv z=qb)kxfi#QDD4#G;z%UV7Sm9kFAwhyC8obPLBZG2d7{9LhatQO>9S%cme<8BRdJ%BNF-$AYVc>M7RjVJb3ih#$ zA|!7pT)pX7oL1#@0X7M3`4iAy+zmlQXDM`!!@bRmmZMqt1|X_Hr76#t^29m@S|Jv( zXtj}B0$Bn?`T3b*zKJ0gdvTmb9A@PKaVQKGtlKQnLW1t@_*(wR!)tSex89Vjq$F(r z@FQ@voWhq+m={8Xow~-NV90#s;fbPXeD3mkAV`A)e$nnVcd^DoZ8T|EhJFcO>5?u* zlz~nOmIS(Yj?xiW2q}To6LI_w{S66pr^DFr3q^5sc~H`5-NCNzhFo-0ZIzu|!$CJX z?`6h<3(huWViOsA^~qfF5bKmAQ<$j}i>whw?^#Ry8gYmQ2#fP${GG}-3)Adohjlo) z>+I=X_DnB(2HE2$Se3{kUDckh7*Y=pJr_->BD#@=+!Rk^7g=AOy&{1US z5!O3Fklj~49&wap$ZZ5avYi-5W@;zGF491oh$U?WJT3%_ZRh~pp}+7aVPm&jKOb&= zeYo}U;nv%STZ9icwe9KiRob1PkBH+{h6JcyaF>Jk3t{7Q5}x9yDwUJ>!vu34_T2>? z>0G07{E__AbVodyAM&H$F34-P9F)rKO<^Y)&L*%o;J(5??iCDdJ18^ZdROb~V1gVkev^{~bzt6raLxQ0x?b3+xq&oxA9g*x&khiFl^zz9pZwMIGZni^AERP-=cm}c>7}PX#U*`RBzJof`B7eEAN^ZA z+v8>5=w)B5vl|h9j?PZ;OT6saUiLm-_Lg4ubNxN>+3jUt?q#3uWzW{xiN3>h_65}` zY=F*A?a|<6Z=$nPeV*uR_MR1Qpcrs_gd|ELZVP+4Ayh30uQp_!2o{w}Wyg$sDa3}NG zzBo6jn2*C;shIb`d|okcfw|>$5q=HKeH8N&n9~&Ve3|uson}66z)_f`xP^_mthYHcdGmKika#)WTtSZI$NNasXaBBCETfPlq+Vc_mhg5 z>NNXd5vClt?NH1)Fb|k5+~Z(grkD*dx11x~seMj|nfe2@g%-e{=tlJ(u9&ILlN2-6 zcY$I?FpuBm+yC`Gr=;!q5&|Z^uI<8_zX|I@rI=sg3^M+cgf#6O+ps4<^QS`CNfw9p zu13LC=u;AVi|QOq+qpx1y7$w(H8lyI##~OH5t5C`5?VlnLI4tZ;@?hlxxzXo7MjOe z5e6y`@GZendYswGCBd@V{KcoNrmvdr2%$-&Mt&lmH#Q0f z4;sk)U9Mq{sr)>CeWSxAtK=9trXF&4fx&o<`5Js-OJ zeEF$sHW#ZWhV~|DosP;$at%a%I)g%TECoQPEw`hW z%efRY$>Llp5Z!#0iCQ4lxGz7#`Alob5&=~FD%)sga%1(BC#ZcaJA*iSd<}@Bw|kqT z5J#N%>j|I;ePxRP_5H`h6`eH_?+-ESMMGYTBN; zcz%Ctp3A0hHE||dX+6JZTB@Y&mpF`4l%AyXNG=JyEQ-kyJ(b}}32yy$VafJ+_z8%!0zGth_C<^&!&`E92xx5vcL0$3l9;?p`72nO> zcozY}6+49sQp^fk0`3BGZ_RBp^ z2)P+O_SDy$D31%Yx8bIMiM%Cgqlj<%t2Dio_g~WIkdE(G~jo|Gr`4C4F=A8M;~nmbST&8dqn6`8Rt2vAoT^7||FD#`%80NQMh<|riD zFMgMk9^QG9EI56QNpH@G<~Tn%CxGG^RCzj+|KJ@8WY#;v+2x+l7avTiSia5OeLCe2%1ZcESxh zayA0!%>dr|a@g&$3ZfzE8X}eL*!`2#=!iT06_Br9IW>?yDWu=Qhs9RWyjk z4m|41L-nt$1K;}c^yP2BkF;h$NfIQ!N+27AwSKG6*>AScxqY0sqCP>V%Y}LkIyX3u ztRw{mAttnc9)dSy6;EI9-4pAkb&=xl3(xx8eC0=OH2&w@AIo+F)G*|x0=cot!f%?_ zcu|+#fH>qIj<=X$P=8hLYaz3kv(j2D?JW_%D|#vM@pQ66oMyP3{m^?ZB)D)oqelB% zG#k|Vg2~2J61izabor~GryH9l=(KSvzVQI^D^lM2aA)p}BIH zZuTJhiSliw{G)Vc6`wh9t1a)^zRS~)R()_e`w6X|t7n77Y83U>BJ@$x^CfnL^?l`H z=&#bFuD5snSI&y9mw#G}Fl;8xPgTC(^V_fOzvVDcS9L8xm!(&95z4WTUR-}{VL{aW3AqA+C|i}cNl$qGKW8|r5*Gb#`Q-vdm8+T z02|>>ZIHkKfA2KIeYkmt$xIbI>d^G)gv`X0p=29dY|bw+(3cwwV(tXGDueaFKU`lz zpF?~Hc?j;V=fTt!F3+0Mhq%1_7`1L_EW$TvEKFu_lr`HleGf?DfxcYCC(&x9xD7*$ zyRkS~k^)G_IT`w0j{Zovk?wrr)ac7ZKjI#J?Qf}Tm|bfPf%c7FG7<4 z*VVqGNp9%#_C8Zit1rcT2U*a9c7RFQeAM%3W6ug$j5k3AAjiv{!fXUgQ`{+>8qaV= zKr>~9Iz1VNkh}tG-Z;Yqnn~b10$8^KtIOshQEil* z_RqDQU*dqttpt1roxm%AiRzkUUuaF4)?W3is()Yo(*8Ng*{FNyq74?pUI15G@1PYy zRrj!3@8U+32##X`>R7u)LD+~+^!rcXS=a3>goD6{sHqRBotG7^)b{9BI11;xM4CUf zdTMpFRxj2TH40ID&7bne{RQTdKIJ4XE6lyid%MkW<^FKtZ!A(~#%IT-rlxawmYAgY zl(>=ci9?5FGHy;xiA#*d5&{MnJGQ$D`ckhNPd*e zlpe_fl9|#YxlA%sdL+Y{3YkUqM`_TH(xo&A=tu5krnD%3vJ(!Jo@%E&C{5KK1T%%9 zumqg}gsW zLs}KFtP)VP3TwT99zA+cHL&2`7Oqq&7H5|R1q#DiOi zYsP1AHym@yv++PeLn?2V&{NsTmXD(?N%N5fx+R5PWW(20IRA zVO#l;3PJG! zCc0s4RIp`?Au>?tOJ!_Ylu~AjI-pz>UC_ZGoQS3)xiUt^a&fqW6m7eD!5_C}dr6 zA_jQJ39K`Zi13=>)w|(}pr;$_7KI?K+yUiEFrye2;@xsfZFcA|-d)ZKyMOKMXQ4(efpU86zU05m5hSRr&@hERHHb44(BROkk#rh+!< zj*cFt^85yo1lnByI#eHn?z94O${1l%hx)`na8HSjrJ&4V&a+b+#JzE) zG#AjvO-vPe+MLKwmu7TITzYC^9LERx66xAU4}3V?1#N4(tMx&7>FUaZZngPQ`Mhvc zXzGEVLN5%APD5%mgQEFFI!rVdCFyIDqA>880L|gXau?c7 zHXxrOW%Y_?^6Df1YgT)l@w#a40IuK{y8eAqIRQZq7y3tubAzq0@6I|_B*u@%=4%aY4BJ^=UI|ivyw%f*8kvb6o(*c~A zCFKD)hK+CASfUi+#HSdXRSxNyXD<%bv@dWx%^FgQQVZ-2;*WdA+3m^Trg+(@+!0i6 z+VHmGlH;)j80K+l5GNPi)DCW2M=(9TdU?^yU3T#2RC(!{C=cje0^K7}3ZDlR3>Qrg z%7<_Zr#vVn!cWVoZ`aB(i05_FX(^8yvL1KuYnX#D>t7E z(PS3;1dx>&4}B$CScOJzRk%bMeeVPwy*Pbz3X%)ypmqr^kws5LD;Vb;zIM7Okt{g% z1r(ZzD%Ul2-swqwwb1%OEhSwUWH76PY6M(0%C!q~1vO|nrH)b;5wOhsH+FfHIh@nb zXS=sLP-{-EG8<)}u$+cI!@94X)xLtr32Mih+idtm)+ zBdyEPuN}6{GtYvV*3Ibmu+BVNXP%=oKcX|w)tTq%%<&kfEmnSH-%1iDH{;8m zjvWh}CdcWl2=HfdFmcwE#o_hDvfOf&`)aM=ijhV<0b)tS2S&QS&s^$Ab~-Xkts`+7wV*Vi*p^`?iO-wNjs$CNGOp1sDo!>} zxT(}}Q>i_=bZmyTC^fGn#W@~?r!wT_xmZ?aLXQD3)4Nx{B)&kKm68~n8W+z%c!j?i z$!BdDw04H8t>K>KvK9+nE{WPlbtKY(Uy|8X63sP^r#XvCi@2Mxi)2_bW*s)zw3z6I}{Q&f)|szl0%8XthFso8!|{;*)w~ zWgTm#!_wGN@La@qscTO9_1AmhzZZUauEI(*7x&K(CPTw{t=tYC209QzzX7q?&whSv z*YC%Ttk;Ra4IL}w>%07X|M|gNjcoJE8$Zvjke}#&!?>~Mzc;cDEpMuRu0q~&w>7iZ z_g@;>qFxg^9;=Xl51Kgh{PkZOS-YV137uBSBW7Lq%zNh3M%H;ppgnJu-0b;zd&*y{ zG_p?|rE{NOCFgxMzVElKU_a67{2Rws$>ERx*(#+q?C*T>+|f?2$pM=-b!^gkzmetc zD{N|cO`bV+_?a9oRjm z^J;laRy%`y)ea*Y@KDyfmeum)DN}xWUjEF;`kubJYRPK(&TdaNIs7BiYk7S$!->^$ zX!wwoF)KbWvKPAyOAlTnztU>sU5PiYHnQ6W?YPgnMjq1P{fDo9|D=(*?2o*;bd7A? zoR@p&9UmFlp+hg8Ik84Ap7-+M_ouyQWC<@`6>{TR`PN^abohVyiIH{repgQZTDi|& z|Ngfh-DqTMcOQH5g|%`w+v@6otj$Jt+L^ugtF>~%GgVXF2r%p7FtTM9n zlfj!`S}*^Z-+q5o^-?42Ixi;ZoAt7J#m)m|8@@5Jp+Ek3Th}+_m4zYmjK6+mWOqdj zUU~Z)^5RB6r7ey>Vq^>MYA?O=hHTv1^PXjg5q{8>OESNGLry4}{m%6-zGTD@_2En1 z-jq}Bw&hMtL;cTv=4obsQ?57#KX_~Uo$bNAotv>yx{Ktlc zPYw;(U}Wz%?R8a;w`B9-Q&XP}0lrx+KC&0SCEGFszLOt8`)dAH*Ig^#l1Ci-sO!Gp zUpKO{{=<5F|CYSsx>?zy64n@5qfOoBgl&+sA2wV&&Vlgpa}Jz!Y>*FSz7#U68|c05 zNY<#88|1w++U#kx5dEdg*Go26ZIEv-?a*iaqrm^V6Yuv3e_P&r{jy)5t3vx4e(kO& zir$tRzIo#QcON`zWUsDW-gwp9@&gTCUoh$Lw`hM2?ZP_$(+3^Kub{g4ZvF%Rv zdPnXur@^-0Kb4Fu@wK(1i{Fty{_fSdUH*A!fAfZX^4dG{_EWFy{bUpBv#jfe#Gl@g zUt2oQ(WNu$tMaXg&As21C%*XH)#v*kFtSmzUKmpHuH0}$k7(N-w6D!4+H6?!uG~21 zwYbb&;CDl_#|QuXuAI^QndxCO(B3i|rB`>|D2J{}-}2QHpBh<2<+*#uZIrt&58i*^ zA(XfH!pB!G-zc}ph;1PUer{yLp8kH}>5cNOtp;ZoGi}?b)|URh#68S1ycd_|k7iHfPfA zr9I!1J1-m1^2ghLHnK4V-=`G4C+D`^kll55wUPa_bm#es_vDw_PI=t)(K|-=<~G;L zAKsIHeX~i?`z2?MY(~L_{D{r+y5~Btl}2E^I?`uSC)Z{G-4cMtp-7BvU?Py0S$*!V4SO2DBL z_y2_cvcAKN8`f=+k2Spg-L=2`WMt>Zhy4EQ7J21@iQiw>5%p>NzTcq%TV*yw?(p{8 zzZ;qH(QTV1Y?X&D|I&HGu`_7j_n%tv=2m%gxiw+OuSoyc$yLw%u~ptP^tbBFgJ>U% ze(LqOahp8itAK;kT7e$lpPDp($~JlFlPALOS&s2#WxMAde`lL~;Qc?%QTKoz4Xa*X zT)j6omxsPo!vcy|D(Ns*>cx*`QBw==GIwAzr(8d%J;U* zixMAQHvKHdr;oq*Q1ag)|F(B~z`A1}8`;L&pAC)QA*Z&uux9zD3uu2$KOK4h4teB) z@XxKGDDT4$m(JY2L%#6b{I3HucNp1AA3U|a$xivRk2WolXPiU*uE-9!X{X$waawBs zf#;3vLeF=HKeSW+d2qW^*-KEKo5mbnylbaCVvu#vo*#aM|M1U#Y4*NcHL`Ho;T(*o zxr1NHNPS=KlWDoW%L}N_!0fVhbKaMCPrK!apM>;UoJ;EX$@{Y9jkBM>l!5rBDf0Yl zK9JXCwp`Sx9O1W(%59eQf&BdFuP1i8>sO55t#;0O>;t*ihAXdm{2kQys+0$=-T#4n ztjv7h_3J^O-(IL#(rTCd=QlsJNg0Upnk%yhkJ=?a`SzS!x{NtyWKp~39ay+aZoOhh z+wbEMe?)5O)FZp(4jGSco|cXLuF7rR!|egI4cF|EN6TJn{0sWW%9@|9ZlK`W?7>)CZ^kC7%j-X!7yfwqyL>u;h)f zkK}uXI9uPo9Q`${!cq0nhNf4UKi(}5J#kfoB@w)>j|;ST=u~vup1@w3p{iEmyYtL~d{XJm6Jp<4E@C zy9qftpU7AD{Jqt6`IKKL>Bi?jkss}wQJC2W;YZ&8Jp1YsIeqQKb}OsiFfzl(51tA6 zR6cs-`q#$ag7&%baEo8YeJU4K-g4!)VOK=57bYxjzVcJ~z5%PdEVv8(@8;53u|Iw) z-+um@`Nm02BU!{^U8-Y`D91)^)n8^Kk9c|-iAH$i@~!; zogLUDk{xZn^2h2u^0@S%PZMV0`@Oqg+>^1N$y=WZJiOcley8uU*|$FMnY`oK8RHsu zMfe9lI@kMy&*WKMyOrBQ@cmjf^yH0K?Umo(UL0tj;2+5b9pBzNW3N21xnJM|xBrRp zV10v8kMEUNJ<;W^69>@#26t$<=+IudalyUM%-e?artUEQ-hQ7vh^OY|rVf;PW`AquE1M=YqmxacB0Q?tp@;~tL0eSoH-)`F6 z65sEtlX+9GKPbzFWf$)J80~H8+}R0Z4$2!Ay?Eo=qgO_<1pxs)pFb!M>@&Z`#(40X zav5acyoL6zQb}Gb3%juZ-Bldn%zF@hR@~snJe2qIRWEA`WJUsT0fVQ$MiV8 z+X{Z5^Rfn`R(vk^KKArCD}Kdz_T^jm{(1IudEwdNw>po5{*Kcx>@XgYd-VuR{H6S` zk>x)b@bY-gnSboEFlz(-n_MNZ&LVn0Gb>fWu=x_5w z4GYG6A-{O{6JHf+WTfjfG?fCqmS1aYGLSur8UT+o2LeozU|Ef|xeP;EfcYgQ*{B6>^3&X#Zf0(;2 zYj-<*AFr`|nKJ21`Hi>s=I!Z)^5p;d%(!h|%C^)s_e-HIBH7Z_g}*dED$lwhaOatH zv^V>x${)uZm2cS9dFw)3P$Vnsx!UsbQTd&7?bgTM1N@#0*_rz5QMvT)4ZV(kPWJnH zu8%t=H@w>LW~&?9MY44d7@nJZOtxK!?RCW%;1h3aboH0V6 z-_m&SsUJ>&{_PB79-DexzTv^=Un=|)_1Ah)#hQc6u8HoM`3oN-;h zf1UWYZ6v!QGHlBoC**E9Ge7e`1p5EhWYfmYC*-@ge;VAOFYx`{xuoE_ujHu*C#>7@ zHNx9g41dq|l{|iH|0iDC26{F8=BYhzeSc2g^4e{^R?XY2WQ&1QSh%gc*{4}o|KPHUG>qsei(lmOZPT) zoRmvH+`T|v4SEF69oK66N%_|JUwM6B^BW@B zqzx`ttJCs`5jXyP{Z!EVV5i;V?mR7zdZNkVfY#`*PaX9?d;GLKKBir>KVJOI$ol;< zy;Jgc@{jYHpXqQA<452PK`qvOC*NT@SJu1}_^G!ZKlo+G@8wTcJ@H)narCFVS6#Dw z&iC@TR*@^)$0EP0*Tp=_s^p;Qm8OO7V>~L|`pM?vD*49=`&!I?0p*V?TbKKFm3%&= zdwFvQ+Ox4^o8djr$Q!FS-Esbo&`5S_rgOCYjC>^YkEJIvZ;WKDzxl_PVGp|h+N6f) zUwh@r{k}aT|5S^IsJyx_i`?}y<%q+jTi7rv{KyBl8Z z-WKoq*Du*W`*f9@JnPIf3Gde*E)Txr+ba2)t%hw!zNwOXmVcOg6W%+f=l-$!RF(W) z>E_vO@D924)Ao0rtddWETk^_r;5})|gAoaM?>ztWnx$V=$)=wcMEK!7gW?hAMpOVU7EXS(khp%|=*7Zk`UQpXN0`MN0_+j%~zO0g4v|3|% zp|VQeKk3y~KYURoPj2$$xj}eeeWNJ(uAA44gRc3{(tPfc{o+w8$Y~-P{`OwgeXO(P#x}*RHQ)z(L@?F zAc{ui7*Zrj10qu?%`~gi*@xy*nKG0zh6au)8Is@Hd#~f^+xPoi?|Z%1_5Sm|?dy4b z`mB2m_nOz*Yp?q}JhMr5Ly-UkZ)SatE);;?xI6dn7YHELD|&x*z5v+0S7%8eOnO}X zYkZyn3hhO&&Uqt%8RVzM8(#|`;MuC?{jUU|eBUZKIadH1{ntrny%a#`!BdCcyb!>T zmYYQFa{-)KePDCPGXbm_TKjS!LZ?p&W0ao?z^~pVYJayb~Y;KK47!?0?@Dx+{)z%z;u7ONd_0CBg%dle@_5s z3&m6e?h3%nbTWI{Z2{Dt(w?AqQvf?+bjp8ZqIOUfu<+hB0hG`74)eVtfR>9!LE4v) zJ{?_C^3nxhHKO&Z&pFf{`k-RaSpjT6DDpf$MF5wB=55kS5jarW5+6z?|fOO;as zkaqigARBcWTK7#^lhlU zKN={@@<#Ew3^vgB6o79?WyP>fsNRDlM|G`7_4u~;WBwY{en%URPjwYQ?oh=a8&?Y8 zMhG!${4xO?GICU`bQHk3s`V=(7o+^b-q9xZ0;n#1@0dRqwF|ii1J>ILz)xI z9?7Q{{Hz3Ec$1aXY$<@#<6i!Bn}+JQF__FX6TrchTWa-81R!gFctfZGDi7(mHpLSK z5I1#lkm`5=*p?lWUojTd@5I+_N5=@@OUB)?q^bbs%c`BN86f~I$w!;}lm)=qvU-<- zf&g@t(x0oy3LxPYIFBAAfLCo#w1y2t{R#@lNemD`)63@7O}$OfIc3+4yFZ#>in7d< zMS><68(qKXSzQy%x^|{!oR{wo*($6VzL?b}sX4 z0@oF6e&?np7{7A%6Cc+m7(DmDn#T@JaCMHKciWsMnBkoBs0W(hE8%4J(WD7R)h$Up zHNFY#tfbx;jBWyL>$cO$3QgeQaR1}yflY8{rome2o<^{9o!sZ_F((^AS0-hiLs%o^ z?!GAgWltjvsr4vw@M?rX3-tnHT^qsj=ZJ#LMUCKi!a5?wx)HW4P1xpc+6WFU^>akW zHNtR9ve0)#BN*j|yuLrE5dsZex=VV#ftIe3^7C(KzTm{XkNofr=HD-o9RK~0gCZMVLFZNaX~&%(dJ*Z~(mSh#!vf%uFSuZ_OIvjyqL{lvdO zv1j%@{gTfx^w+#6?dLy3_(a(B##u7nqJW}9VdR{~E*Ufj>C0x~m$#w#882%a71;&+|=0NtWl@!a@w zxOmvV@Y#v?Fj0e7zcBb6e4P|4o8wjn_KwCq>S!M$!CM^G)Km;I-qno_C*Fc%;Ocu< zHHzTgkR=`}M+(5+=j$ewf;^D?H8|h--YbyzmTNvc@j1jPcxV)dJ%lyRH^RQ3x{cm< zDj92^JIWfaXT79nOc&-UT!u^W8F>npOR?$K=I9+hMhZG9yS%?4!SCw}_)Sj#(}8{- zlg9LOgS_MU{p^za+r^VZpaY^S?bh3fMnrZAGU#=?CCc z9Q8y1l{R{q^iaY~y29@#DuLm0gkVbdFDv~}HbIm;FmjWW#{T}$vzaoljhorh~+c?h-EX_{6}1jEA#j7dBflHhQH?xf6p8Ko;UnGZ}@xO z@b|po?|H-D^M=3Y4S&xY{+>7dJ#YAX-thOl;qQ6F-}8pQ=M8_)8~&a*{5@~@|JQi~ zeoM~z?QQx0JWmjw2MEszgy#YO@17t0-#$0M@BW(un6rYueiWXoU?dmO8F>rB{BFNE zD_YAo2QEib=NZq*@Q=pM`7`f;rgQM9r#@Wrh1Z>??{b+C7dvgxl*}6>ajs^PZS6(a zV5cNDOyw%c8yU7XMJ)}?4c|Jb4ofFfQ&nun%#MMVtp_zW+(n(uNQGF6^P7y3ZF%dJq5sJN^YA?k;h73C;Q!fKi}38FxsOS= zG61K~z(0RE=;#W`ILIF#As-?Aa9*_9`k?>+d6a9ywXH426}E;yPooi zF5wwc_gOr)xYJ07{?|XvVCd;NOh0QIIq~Lr?zv%EfV@@?*RkX>L7JgwqmszLE62#e z=QgtLc0Qxz{1KjR{qkiRr;mLZe2yHL^j3f1@d8Soe7L}`U;gIA=Fk-X8|0b`SI<@N zrOUapaiV*_e3wG^whdExut)k^0 z#vbaI_oiN2{7dE)S*$8Gwry@LE#D-upw) zIZb9h;Iv#f|3=9+US8rh1voSn=acjGKTCKg`XqUv59idC0nycv5?8{+Yw*J0O%k zyJPP`oIao8zdgeC|Bn+65C0OL#OcGoq)%e~$$!zG#QBGR$v=t95B{b6NL>Epzmz|T z>yP}G`Xh1ulmAlxByKA{l8!SNBg7XRR72E zSN_?4DLK{u`@{dy{^|Hp|L+g~NB^PYNBtkm^Zx9Aba>SN`{jT1UrJ8(f1Ey_;=et@ zdGH^nKgN$g!~Z${{Fy%dF@90<%HQ;dKgK^g{BQaHbNr;_zn35UG5*r=|5pBgj^A|r zzttc7G5*u?-|8R!m_KOwZ|w*En15*bZ|x8Mn7?TGZ|xWUnExm_HUHuIX@)=MPfGrK z|M_$NrR2Z&zdz@1I{x4Kukbq+${jtGq&)ouV)rx{nJj|-(h&W)%8fSBPx%T}~Ek^A^<)AF+nEZ-!)e-Na$x z^%5}Qh2P}}=b>hjk^k5CIGjKH_c6S=4}C&I|N9?gB>gKTn*Q@W3nMka{xu<@pSP1cxWPYZvTp%nvyB@7e9|NcHoAy$NG}u!`X%YL~+o`|9dvB$hw zd&%RotO~sgS5H}q5Vv8G+v0^6Si2YQW!>E>LXe9UAtLM$%kSluuglMf5H6FZTK@QU zight-gW-W95#sQ}bJo+hgtLkx+zw6~IDj~wo?g=%d6H%B=I6EBd;rl}uNFIDHiz}W zzk1!w%>xL-OH!UyKZ00QAJx8}P8>ko7$m(l$m|enuxRbM{RIPv+m|xt`OOPvDc><1 z^lP9fF{iU|<&+OcSbam+UYBHv665y{&yARr!g_IGs@ZuTQR2|5L)*p|oM&|;eKL7} zUX<{ht9#xiX+KNDL}Bi^kD`Ql^y#s)?xwTG>;D)tXs8&Wa5=}dam@^tUf60^$@yZ$ zF42^CRk>cQJXZFt)KD=Zz&Rm)7e|Z38^J2)m3YvSmT%2e2};#PE6*nols|V zoMkiSit?6vabi$Jb6ki*GAqPkYQ{b-bk)Cn8*!jHj-{pH5M=H)knnLxmYH`rj+INV zF9#B#vtNg1O-N(uk6g#PUNMlkB(p_5TKx=bo6ENbKQ#&B-1%XV8mp68&)lsXzq&{e zp-H1>UA9hTg^GOLrj#N}obKk3&=mcr|~abaU6i3*Wt zN=j-cSl^NdkEDnP`lp;sJmXnw zKds!eUV0G0iM@NuU*`mC#aPShq7H+I8_TwNg=`FAk-fVdHYW}u4j8|T-Z3(Qb)|4w zTvEdz;-sox`FgEXR=4tkyQ#*5iL2r#GWF$CShH63v~CX=OuYKwGN`1_msOB$7d1L} zFmXfrn!#1CZLEYv`#;2wkR~oWOXVM_3}M;jFV$~xmnJrhi1wJc*`2j9N>HwTN1C`1 zS79pUeT=myOk$3ngbZaRs7IilD+F4mbQvKp|?!!oy z&a%}_qq=2@rv3Sb7uJTe*fYJBZ?_*poPKq5-n6hCtkS5&!0huwaK9IhXaCpxab~>x z{aZb1Y%*ZISi4k=`k#>xA%r-De%o-wN{DC-r$hn$Xikk=bztEB^w`oieKamJ4-@{M zze0Bgh58EdKcz??JbnvNxNmI^U~CxtgAR{nq+-$jTyeBIO6(2kxA*P5#}1Fl^VBvT z?c*2k4vj_c4M2rXqLTcd=?BsK7J?9>B<4blruRhzAw=|jH64!-uhRP}f)Jt==0Yr` z_ho1>#klnkl*L?#m%lRc3voW?LTsh?fdnDMSj>fJg}D&FeP-el;wj99XoI;ByXk!> znvyW0?~dvG3egR7Ar8k}i0C_H+P@IPF&E-2%!N1rb0Ox?`(%O;Vi4v+w8C7712Grk zi%(4YLX5;*h>n;GaWv*atfTkw1R=x>%!Rlcb0N;cT!>1T3$eO}(MO2aF&APG=0aSA zxe&E57h*>>6Q2-YU@pW&%!TNSxe(`IE<|S( zF&Cl&=0g02ze5({3(SRh4s#)fU@k;A%!O!$xe(Pc7b1aqKQf~N^Ou#G&N~8%^Y>-y zJpYKs#+^gscPBwf{V1I>T`e@e*`W8Pg0b2u_iIVhJB=ZFh!f++?BfuF{2ZIZ!59zKfWL;^S=DdT7BTxEViT#@P!mcnW6*))jKx(7iskSn?_R=kR3myyfnr!Gg$>a}4W1 z_v9yt-TS)S48?cq<&VR;;59n(yHyj?M}70|1G=waq~w7eftuzPgh7*6>76$)qepYZ z8#UxVW6x)?v^=nu-dK0s0O=e1@~X=Ed^og8LYh#~L-!g5J%Qs3Anxady}PdsL-AE{ zt3MY&j_P3rX#mQwN9bOyQ$o(*)kX01)wJMwE+{>=+%Z+vw-A{i zliHmz*@9?JdZe2777AB&M_gj-SP-3awTAC6h7m1?Iwx%%XF*7o6T?|0z~8>)$9r{S zq|aG6_!-@UZk^%Ybq(d$AS}EvwiK358ZEKD1C@`f=s2-CWnjHIB7<9x^xr_XYqpeu z8oO0lJ(&G(3kW}4uyXhC2RTtiicP`y`N};>bpwpV$lca9oek6u+#{}x6`e_ z_aktZ9&enP^$Xcu(f1f4R{^DMW~X<&o{026mGJCx1$aD_m6Nd?it6imTF}@^h^UI4 z?=exsf+%ONkll*zM?ePQTaC)gd~*FFvJwgp6efh-LibMR>L-4cs)G8#mgC*up?jxA zcMFXjs^DQ^M!HHYYA z&w3lLfj?1r*7MPcJE~z<{N!!Mi%|KfgmjH3tKr+7!qw*C=w7Gv0+Xc@HDJ>0=GYKV zwciuzoVhjdz~u7JV{BCmBKOk=c61HgaJuv5{V`M?OGa)!RaygNjbT3(owWG?6yN_`zcA|(4!ZwGj|q5Pz_DgHUjn;lm@Sp1f_6NKUxWXW3FGjpBV5?(}*9Dx%cpVUj z(UU>`bc{n8BY`iXDU%?!&3;6B~=g-9MS_~4R7^|6io|DZW8{K1~^x*{J`QME}zHnWjh2`Q5 zvg?_7p7R{f_m>&u3)cl(8P0aV@+lZqvAYQ7cwNAM!OZjgYYeha;CX)!c6Y^mHiH~J z%!TWM9%f!=<8=Y&Ip&#ozK_E^kU`Ey>@HjvOv7BbE|9_g@VbCqiRX3Uy5J_m*?3*R zKZyA@jH@u(Vl-ipuZH__F>T(e{F<$O4^Pi(MU44VHl3Zl|x6u`=&&kcU@NN#`Z z%F_1*V3`xH`P~HB6(ElDoO}x5V|$HN{!mn287|f#1B<}(XOCS<{46y84o@jMRRn3d z1GbsHqRLCYdb!?Pu(LckWNq+Nl>Z?28uBeH+xx|0g`X|r+m7#BSPYNcr)rD~NA)Qu zh}NkthAC0|WVIHc^#_q3Q0h|x@4X5QuZ54bAiT$KK17tl_Ocfdcg4|s@0#W`HL?^c zeDs(0#i%2FHzwwfDg*Z?9krJCQGLkqE-gTe(5VtC_3k80$< zdGeL7J|Cg#L}aDZP-JI>ZC!Yy<0Et{4b@wIgN^d%n`pAT0@RO|1$ui??J*+JqqhQ1 zZw%F+>5l9yHSgMY0V<*C(1Ln}RcL)TZpmR^P9?k_^m^yCh-s+2-q;V#u7tEj@?RGX zL-oPQ)Rq*f0;d9r@aJbx`8Le?kjt)u?1FtG-n~HUaT{NYHJmD#zPnOlm;;*MV3c zUoz&R{7hCkedHavICjB;?_#qa5E(UB2P(fKIT6?2AM3MzKp3Qj*PbdPzxP@YC0?=* z2=$7kQ^u5$0WgZcX}Beli-l`kC?$hS55H08+CCuo3rR17Qu3s@jhFVbnGcAl0P(4J zOURjK)=59wCqE#Pf0~_}UP8(YZ%%3-%YHzxFV@GsEGBh{^KX|;nErssTioz{NilhT z>zoMUDN3JRc(kwLEqUTzRN?$3fa2R>9Jl!`xwZbDAzyXM1A+)%nbc84&bn$>;Mr!5 z!p|7v8eBvg?lL;%oKVRn*fQZ+az&)BSi?BhCS~M*U~TZ}Lefzzd&bZJ6ug1ETq;q{_Vl(&(Iphr|gpl)vOFt+oZ^f|Iv?N$u1{;iEj*W%;BL|GZ_% zER?^D1%;D0=96bb4x2n#I0mH;Q>A+H$g~+!#O2EqQ2g&AoFekbl!~1TCO(~k!na3g zsOFK=KPf)jx{-y-!)M<`mp5egqQ~mnl`T;DSxD^*eNFOz_O+ecVv6$b`OE(DD^g1R z$o-JDC_av5Lu_F#IptY&?W^zN4~WX;sw;lJB+YMG$wr0fARgS4to@R_vr+AH-10dn z{`<=s7rY?Vp15(mVvxQZ>*|?%pOXV#Ik>M;LFJ!pBX#A%GtyyM>)Lx^bCG@;XVu?6 zB`wk<^Q9L!lkE8Sd(15o;!yHh42&Yf?c5=y>>;s~zlTmwPcXS{6c8|1{{c`E0B2~T{ zZLhD&B4?MxUGLUG^~*_~eyr#Y>2UD}x3g(J3V-Y(YyNHWh2?0`f{TVo{-t2{lbht7 z1uNtq&G?GiQ|j>vRyWAuHSSYwN1^<%m%Z`hW|A?%iHg_vB7HdJo#|6E$Z<=qeI8?o z+8gIcd!*MDlDl&ILe_ZHK8Xz_ye$_=trGwD>s6@w49f1^d7d;{e62Oy%mm3DH1q?` zlCL};ADd-`+8f6-%{C~7v|C)^A~OoLS3WBO4=ukuQ$r7}*#JjC?UH$H>M=VC0KpIYu@{0waF_mSbdNBrx(t zupA>BBY}~R>>SYbkCBZLjTy8%CHwD(<3HYh3^=Sd=#Y{cV}azA6O2tjwcV&PVxbh` zeAgr%fY~(ZrQGLeJ%oO}(=2T!gkIBGO^ikBDT4oU-ex-})=lK9xuNwNVKDT0tUc&T zUYYo9H(JjUa%%_pF9x37g(W%_X#I>9l#5&(;hU0MOjt8o9}(WG?pZlQcv1JS_Lt`nqm|PU@BI3p!xdB%?z~;EX^VJechUwoSYQ-2 z%*GYHPa~2~AAYw6))~dzS^dip@#dn?x$D4)7eo$Ngw~%#Y|0_tdYIl}Jo2y$S`VWa zjtK@EU^zF~XydvCh-dWPN!9P}ni$)@}-eiq;dtGr>0Ni?-Tk$gO6%64dy zU)pd1D1BHGfvwwNLa1icY-dUzn~`;wc7Tt>3{KcXD*VA;_Um?nfx=+z_t9v5N;uuj z9=!`554iQnoKQwwiDh283&so^x5wg@4dUu2ZywzZ_ts9Ft(I+tcu|h2-5w}7-TGyw z6czvR9G;jz?BE$6G_0rE*Ub}idHz6lu99=oqv}7FRk>p?7^p-gj@eI@fAXDOhWo%@ z_D}@sA!W(9MC;%=kk)Ji#Y34 zu`dVS4$M8gb1>CDWQ{WOIk3a|jpNwq==~w_^Jb)eAna6|u+1!oDqnNWEr$XjdtIU6 z^m>Xn`!8w;1UvC&+XP4r8h_)Ige3ay8U*sHPm9%RV;n_pYKsr8<{w(AHFGWrKcJ|_;X?}-MU z*6PjVg&POY&(DxY+%on9KZzOkxU)^_cG*!OO=B_s1NG?B8 zc6s+KYCV|eK9aM6+{|h#WSdjwRL6 z$`m?C@dLiR;L{SqskIOP`Lod0|A|TC&Y$1vesS9^&@bO!U{1Lm%Eq zA8AU}7yD9~-x@ORqu39l&s2Npe6r_(8(DK}NzT#-Xgy814j3iwMpo({-`ci!DB?~l z@626IzA~NnIB_f5FA;eq_QzexmRHlBq{&j@y=z|IaUm~km;J)x=uvWqj#;b7x9vAi z9-2a>pD}QF@e1<6A@MW0sdW8(H(s}#Jow@M`OTJSKS`)-&S`fhm9!?4;2 zJCUBhN=^3LQu_(E**b-#q{@p0y~(MQsQ6Sjr8toBH*MoQda3xLrf)P@LIy7N8GO-? z(kD69ja)?55B2wKm`ar=pY1q*AqoDob9ig1`gAorcy9q|e)F|SX&Y4^ob^tnbIH`* z5v5jURQ)E)s&?3t-Xi0npms0V&J_|OqCMRWyD;^$0$=PLN z7fdI!vZl9A(V*mUN+?#1= ze@1ZRzbfgF`^^`9C_PT)hnO}(c^LUi_mI)b!eJEu^I^|c{z0t|_%j(~TQf+^V30E% zb2jFd46-d4J6L5?Wq1288r?^9yxqnAPUPt3b9?_!YXWRTN=`FG6Q7-Y9H$Zy76fO#Y4 z-xwsmGRXOic?0Hk46;8l$gjb?8uLm9ITZ{NA2Bb-{5|Gn46;iZjsVmU_kek>2c@?b2-$O*#kf!G}*o5OHU0G98=a*XV~ z*xetyV`T4PIA=GO@4|A7?44M?1IxEF$i~R=!|uKe5*XRr7|z*>B!iDnII zze6O85YH_2%Wr!ut)uow6wkNZ^#0HVHwkJ#LlB}wiDlf=Rkm|SQu`GmLyY)fdFIu) zjUn39{)gBg%Biw+ultZ>uS19T79(mc-__}k&+oCOQ8%gIwFSJ{}DD)M5E=xU7zp!U8VN>MDrkyz*0P6O-fdv9>pUDvRf<{g?vakJC)l1 z5O*c`t(H|o-DWvZm_ z+Rt}sxt0v4)3T_yYRc=<1(ZBjmgu&$;;PTTdy1Av$Z>isb2cSt2lvwHDJk%OT2_j2 zUg@8q_OEEi%>HF5?&@)D>rJ}+B!}|*EXPC&8a%d9?0|;f<(g-|88(pOzogkB z5H6=)EbmF@Ut5+K0Eh27_y#T1qU26P_yfRxqgCXdRdo8XavV{Zy}iV&>!cASua#$u zfzMTsst(Ty6d#~iDF$QC>TfdZnndxnO3C6-AU9Y2K_nf%NZEBDeD(ZUT_Q#Mw;!f1 z0h1S~tsNUDMfpEDoG$@22e&r2_aM9EXahEqBMG`MY}{8T)9F1K#g>9gGwvmf&ZX;j zt12-F-hbZ~Son216<$}3KM0~n&R(+d8qHJHT?a#$UDDe_>2!T>)lip)I&1Iiu0D#C z|G8R~((to&-}863yI@*7c4qF!9d@ULla++>GMdOJfpkv=G9`NEj zrQgR1{2{RZyGc&w8ajVHL)miRvs5(SYY(-*CMt$S$$`LqhI-;g>ir4PF}zt0hRZvZ z*+tXwD~+_5huPCIWg8Z0P;#?T8S;>9{yNZ@HJ9S6Rpb;v=EBxl1qbaYzDm_q0R%4M z4$sx-`Z_+EuK+pI0+xhVq3@5-21ZR?5sFU9KWTl5e%FB@#g&oHnOdw2zitpz{ z{!p+M+!&(pi*Dc3^yP+uR=!(y5TQWHd6T?{f&2Jz%l)0u_jaiN8RiXx%a-nrU7e~F zFEKJ04vGstTD|I|!|R%GhJ%~^QL*Wr!Bl=9Pp%vefwEWDoex3h>jbghj6DMUm+uMM zr%RWo?3CmY@GEUZU0D`gpT1L@N5Jfr#nruGbp7eD>_QY_OcWFv~$68$lZdv%{ zs=uQ9=aE?)70BJFeW6v4dcQ?@*i@=O$@eY1-Uzxr`)mzV!FGw3+3kfi|7;hf3VEmB zy;`xKdcQ`L&TCc$1K+$Dk#f5Izg}QJ8U|JCJb123>+iQPc{H5;Wipn1l^(ygFDBGL z_sSrj9o=;M-sj+|26pO-RW~2d{qN9Hz8cIbu=kpFm}(E4HxuR5;q%Irfj*WC>SKW0$k~;qh0gN{j zXWp(%>U|%laOwsPaGRm{?lhlnzeUrcG{8^flWNT(N{)WXg0BHa;l<@U_EO^k$J(-4 z0|w->$Mu-f;R8Wk6WVnWVye>V^di_cnqXo)G=!9)IOp~Botoe`f3L1sB-Q>oN;A?m zVLWfEne$faeHmw^b*Uz(ibm+$Sr6rm23|S+Vk?Jg9~}NH11&JNFl-85Mvu=5 zHm+K*!T*rtBMZ8|+-;+@pz2Hch52n%c@X3rz835^S(iLGhwkr{b`4t4SFkqw|~Y=%fv8 zi*mk&+0y!sb~=dUs{A2Rigf#palWe!q9N|jbQCE42*u?M+90E3-Kw#QZvS!xLxzz} zr;Ns*eWCRL$zK;#3?!z{Orciu987Pwq^)81DF46KGWopW#iTha7 z`ZPK{?RNqta$a=8w9Nfqaq!MX<(XelNh!w>H-XBpS4IlXpwR)*U@$uy@O61}D zR|h-ybaD~TFQ24DwjGN+Gf{0SCExj>Pm#>me;d3iM~~vFAKxgFZGp*x+i$7&O+@&| zYl@@<*;;hE)Ry9U6#(l6%%x$df1az747jq|0CA(=~ZA(=kr) z!HX`RW1j-#$%PJbt2%t?^t9?0$dmGlcLqKTX{E~JdYzg)`HnD^$OCb`Pa*L@CIUdqa&Ey*NU@-wZ9QkRiwT>zgRO>7wMi z?~-K5%G)7(gAUU2(eFWqoUO6RbC4zaegPdAlvhZTp}G~>SECnD{AYQ9G-)8Co;o#& z<_#azq{*cCD@Jx!X5Faa#YI6)uBG<@4%AgO^!T;ZIif4I+nJs5BKh zPPbp(Dsm8cKlEDbxr|wqd|3u@iS9mQ*kwXm=R%~$iMCHfnQ-vh?us*fI`zKvL+I0bv5~?#Aq-^VeLbCP|hQ zTz)e0yb2Zn?RwN&cUG!S+8}L4ar1@%33Be~r`uN!pGooV1~myX&N23b^nE(~-OuDe zQsjo!K>l`G|E*tK29ot_Qoh$^(&_1b?GqJSk zbou+YxC|f%yKWY*4W!$*LTjH0IaX)ud1)(J-*c@=BBT^|$?>d_bp8jnxrmVR3QxKR z%%yf<8*sn@rCT;-L|oM zFj{#s<=^#d-!Go)$FKMF4e9Z1#W(oHTbO=bQkJCkThbWN%lp7`w65%-%fq^f{K=d5 z=KAKT4s`#nMZem?Q&LWxsB>cg72h*KKo9Tkh7%>P9O(9w-b{A$9O6=+Jd36KM@UOw z7tc59fGE3xPT#2&x_HCePMk=7L$^<@wt!AvXl2-%;x;<|Z*Alc-mZ##nMtv9`Ce}C z>)<_=@Eu&Tgs$HW-=Tx|dBpV5FUQm6Q~90z&fEPdW6hiN`IJ7#JNnvrdqTVN^$t+y zEd=WawDV?%YH~oH*01tMKpXGeUcDVoe4qDSx_x*42>8nL{9rEEV@SuB*V*@(r;{3fuFjLzKe;QQffrX- zo6!7@ZVwx}`|5ahpPQTw`1JUu-V^YNmz(7CDDR6JmHxAyz8c<@?VqjIucP~e!Oy;G z-q;b>Pa8d@^Y`p$Ko#$G+OV0I66yIZxx24|SK^vxAzMMu7s)++<-C_Y@-r>`2T}2H ze)g5|{3;aZ9pp$*oZZ`3%!|7^rS=S;ZvV}_eT6)c*WLH0WSi3dfA!_@HV2k^mxSi)%TQlzq5LO)mpkd&_%;+-Z_QYrF?fff9$@#J3N;Sc`{?g zX?-|-edl@7vXP4y-=fDCq{2VX(7QL>iUJ-%)6%sk&pq5_x#s2}-P!iHNQvniXU)(r zCK;dqd|xoxxaWe!&}O*v>h7uWtK(U#>3iMHuu^jQ;@~JB?*0I;2IU#e;PrgR2$eHY zT;`s4GpxJmceZ-lVb;fv592p`H-k1Sv%2DF1edw@-3)yp*X?+rt69NqPhMCiHpArA zhQoK-9L4v*n_7lCn_|yJ@r;_P`GlfK_QeCRrW3~;BG6N z8EIZzK4?0Zxwqa5MbqCenLQwi8J5od z={=?m{KbYx)+dDHd+lwI=4=`=M&}r-B`MnFv11#In>Bw$(~3jfm-IdNHng6$BEL*M z$z5M6?s+w$4Y*=)tivY~xj*Q8?`=^1eRZ*EtsnPOy5d8~4d$F2^p-ycn)7eJ{Qpc19bhY;0S_jY+pJ`)=3{vAbMqK0FQN zGWX=$;SEP1wmaU2wUkh8oW7|Ywui6Hw>zGI@6ESEvs={dGuhi%9}7#GbY%*s^d?dEWYM6Y~tcHwt8^{G*iu;DP5xp$A`$5cfo-j8GT zK8-0-IQ$*zRZlIiIuV5L;UoF%S>khzPO|RIat_yi{vA?7HwKQfW8r)G-(h7P$Dr$6 zJWHy4dsdZr2h9HH7;ja5jJuz{r{4i5Z?gAg2Os0AKg>0mHKPNJ!cP0KY$CX0>3jPf zV65VNK~S2Xz$&n4dt_EX?@fb`%#cgL`; z+)4Dk{tmc!kcG@vZRUm?U)Z&`uLC+{L&pwb9pw7b_xyiA-0p*+v%LbjzJX~rr{D)n zd%Mn~EIo?*oWA$}0}4G2mpW@jabe}h1sgd(VB*jLgYK@6WgVdH0Q`VSabit7ltZ{i z*#;tw*+1azyrKDX6_T)BfFH1Lm-4*7K-wiD0^B}U3c zs&h|suRPV9HF9<*^t_sWCZzZvw~@9R&e%x6BrC%D)=;B2op7<{v(c)z-dx76Kqq*_)TAor?q@yeJ34r|QWt2Bb<*Ee ze46`-wlmNL_xIfjeCp!P9kS@zOY3D_Fr_)|q`%#Eu03scpbPT$kMdtW{51ET#0&41 zR*^dAK@}~47wpOccsazlo;0f+lR+X$o7C%EobickMZ0d z+O9zlNR)&atm3$Fr#gQ+yw$k}YCP}VukcCW&Zg}g^uW~1OZF{r^5f1Km|~ET)&u(E zm&g|WOyn|l4|*UZQEzviMG#ABbjk9Z)*jfJuo+(TCUO}&2tVP2jeXcUxj@$Lygrvp z?4K~`NpPjv%y?`U;V0@}HhuFBMze0!4?OO9KjFRY=lqwVeyr|? zD;)+`{DiHigBDLKJ!tPx&%(w~M)-V~#1Cx4T$Ntkkdu&c~89NHSFwksy z$$-WnR&4O|p*5UdXsBpBls)<=m$9qR3r4p*Hxil&EZ3VNZDR_1A!m5=&ZY07SuV7l zg0H+;dXw4>bdDc_Z5Y5#(gO1lGfZpUyLy9>YINbUtrSYj|Mc<$4lg}Z-2)nVxu z8gHXn?`S&=zu?%ogkhQqiQE?VNIjc3zaZj@{LQvw30%f5!!O9VeKxfH>1kHXz0GD5 z#`eLCNEtFMMAk zzqjSm^7iUgV$l<^c61_22AG{uRRIBIsL~!EpqA{ zYP5r}y~2O&LJK`r?p2nx@bm=6u3`3n#Z%)qVW#Q3rJ!;zWz@ZtOaCQj;`!%&k1$># z#=Fdz9}Fk@!_A8HVtw(A@8|M<%ipcJvLE6HYnD6tWx+wSm)eqw2VuYM&+X53i{YN+ z{T=)L{a}or*6q>enIJt(!}-K~KhU$8bs#t(2Mm^r%O9;-3+ijuTT0cPftq)pWhzA0 zz`z%(YFE>*L8{*Ji2J5lkoM!?eDS?bxSupb*~(+-)gOZU^$_ZNCQ)aZgvrHz_wIFi zGZu@S@8<(%jSLfro`%k}iN$3*UZD3DE;rVt#z41|(Ts&}N8Z+u&sA zQ2E{OIVd%NbK!UWetqp9e-st9I@_;@P+!Z%O2-~Y-tTwMGrcI)UU<8o_v+j%x1W*; z_cL~vt}=cLX$^y32i>>?+J;KIrr-MjMdK#8v@A*k&ylUpmz4A1#NHf@kk83*@kvsZ z$I?8oA3yO(EZTujY`wvEJN_8%o(&$Za{D;2LxbV2>_aGDvtqL3rb4iYd#yUp+mkwf zKujo{tp==d|Y-+kc}$BSb{p7-;W{<0Rv;*UW;zA?TGy&&~} zRPSQnnhl@EW}hr;M8Cs(f50-I6+BR%Xc~G)@*Olzwzjh>%z~qATe}DHWx#VhKb(l~gYRn7E$M#I$fxA+~?Ma8c`^(pChIH(Rj>r9a2=x{D zB$_*<bdJ%%V6-8nT}oP_mD5$ zP|Q0MQ36U`gURTYS}>?zJkJ%`10tdhfpJ_dNKU$2t!q>SlhaL|tI)mec$FuaJvRzK zJao1oaa|RBGm#u|XJi$88GHMconvHw`PK~En$coI+Y1+}N@Jew#0d!>Tl@8kM}*rWO2)W?PH+e+SiogwgWHS|O_Ij_%#n zpP*%Lg8Jihp&jmKc*6CbUW)7t{fDxMESq=fsn#k68Gnt~v^hTqarTrE zGfhsan6WQiq@F=+X8g5aGvlv3TTR{k{OkKx?19TO#Fu9%vzhUCHk%oLN8xz?YrGYv zNBsE|-nCiK^~Jb9A6uM$NPoGj-d_*$VPo^!?hPV8C)H|3EW1SNYb@4Nmg%ruczo!X z>swQRJ8$g$TZL7;$Z1{g-#-l@2d}v)zSj7a<@qb8nzW|)LQK${U0HYT@M3-_SAL(q zl60IivbJaC8Ow#KIklHkZGoulTK3xZH95k}H^TMqXbYi!Z`Rn1Iv!Ml^MV5_2soVi`GsNAwB&K&koynjvS)r9wdJAtL137QInR>Oak-P z+=asyzvW%dGHY+LbCKs1tUYMPSqHLqXIX{X z?cRCba|2>;GF{$F$hJPE$tq>nl=z@N|xtM8CchbbYtY z5pU!jm>J@vsGET96>V_PK2u^@++y6+j^=@bvE}Jg!bslTTSXUV{n$#T2nHMtI+AYr zW<2-ZxFC19do3*5u|0~{cvH>yOxrAS&H8`~Z?`@Jck>oe(!O?$}n8m3*(rf9o4#r#w<*vwXk42HUOl$k`(O`aV-P&njA5%^QB-<9@`Y<7D)_ z!v_yJ=2`j=+2$Ib84L0~nYH#^*Ll84Z!}(w*-V~mhB=A0NtUmJC-jzFTnpE>?OEe* z6U-awtnn$D4Xr+3mSG41MGo}hEr*jUX&WZCHOanqHaSw22I zB4g^Q7+73gF{#i$jkm>k{nCs6tI3DfQm)1ShrKTWtm*3Z--)Ooh&c$ZISB4N-@9+f zgpeQzf<$s7A(ITm95Y1)(S|CahO{+RwbdGOscN)AsG_PGQ)#IN$rVHS|Mt1(#7*RS zecyZkH+=6qC%^1-*4k$eYp=cc+UpE=;2LB3hs9g`kB_74_pX@u{`IuOwOxWP4}L7m zH(!78?p>!Sqwj`=`(wWDMTx2S>bSx^`LnYoIvrf!u%f(AE`IUrC$nEI@3!{4M_=e# zdRQo*-`0a~%-sB_qP**lG)ysi9y@IOA#qLV^=bJj_0#XQ%KFM!*5};H#*f~n@oi$1 zwG&q#p0heBEMK6k+1N>*Gz3Y@X~N&-9P24 zryT133SUUaHom`FUS7Tx<#QlkBQIa-K)yy^zSMzyjl6uR1Nl;3z7_i5NWQ%OR@Bph z{u+7xr4IDh$m=h4pua|5f2jlgrM&)D=z}Bu<;RDL@;VqFjQsdO9gGh~ete(~#s?!m zK2Qha1Lenuit;)dANcXNqPz~qUn4*MQU~L&ksp7lgYnnMkH6Hx_)Gcmx1zj`#$SGZ zt0=F7`OV1BZ`8s3X5{BL>R^5|^79*YFuzfLeyb?2qxp@uA1cc0zdk84(v0^+h^2)eP-nCGwQ%TGxGKsbzq-S-ab1d zjAxGQGv5BS2=N@)zXIRl!2Y%H_OHc({cGXvUyB3#H($t~4^36hD^B_Kg+(AZSYKH9 z^+mpe^@W9BU*tPjUs(9{g~h@8BA;Jh@as*->kEGUR#86(>$iM<{g&@w{g%(K-|`)- z-}3qOTfT$!TRy*jt5|P3TEFq@*IU}>*IWWeVp%LeVos)kMkX@kMsHU zF)!Z|>S%q;`yVRG>%jkz&-)+p9rz#edH+Mc1OG!l?|;a5;D5;H{SOuLb>x5G{W}%q zb>QF0=lwhR4*Wa$yniR(fqy5T_wVF8@bBdF{+$Z>I`Z%E{7u*~1kPhLw^ zyg5(n$Nk{UZ`$25j?d3iY#sBAyA>~tmwcFM3t#>&jqN;F(1+Q4Jn}|n=EBT5i0)ov zVdlcQnN4ce^z-vuuwX$=dX6}?q!v+$#UUY!ajnQJb8#lFA`!6> zv9YnPuC+3flcyvnySm~771(Pb7p}dzd!fG`3o0+y!6xMpRfEd7@ zm>8dsn3OyzB{eO5@|29J(?*4l9y2z=F@O4unX_j9ch~>FJOBT%{C#@&@%8f$2<+Rh zf6#z|!6AbN4+$MQY)*hK7LDmF4;K(FZN zUO2!OGJp^tz}FmQP8erSVYGoslPivcqtcQXd5AeVO(6QDk55lc!%MK~@mw1H(i6?> zI-lf}xOjvEB2%Jb5&E0QrKCru*y2Pca)-!=rB9G9OOqfimJX1J>!z|a*!ApM(l0WR z42eujPl*PDrI!-N9fiiGr=;?<;pXT>Gk+4AZaW%~l*n<1r1N298oQR@I)eBF@d)A& z@L95K+duTLjr6@Ky*qu}{}0|y%!Qpu_KhmrO})NT4*YZcW1hZ;(K~wF`_s)Ms7q+gqbUFj2?0!>pR-s+TOk9>Lxs$yPsU1KI$}G@l&_+^$MJMdJ&7CTekEJ4fs}kWa(Hh zp3dDjl}{P>J>Btj+?X*`pr2#$b9RbVL>&&Grw&du${)337hvuBx$XxH_lT6FSeQKW0{ho(9CgE3FV{iKeS7Upg&iyXP zvF+p*9rgAteboFeJe~V}k%JRg+@kICoNhM#z7tR9ewSolQH$I3=Ow0?!8?TXx!*T= zR<`jr-M1|C(29I5AOBA#Ppq4Mqq5H18v56D;_2Ldojj8J8`aOevV!^Jn;{DVR7RD!!iUpl(G2U<=_56CCgi= zlUjQ7<>BbQKX<%GYeyaG^<^DFAFM3CNi^dg%`VGO&B&AR@j3d8AB*l$&+|XF(YQ9^ z%g=qsELqgyPr9tH&+?_|20lJVFRGjRCtaLDe%#kU&c`oj=_h}T-?1@A$K-cD!S|y~ zj_%zU-{H+)6mwwDHXlCzV-`O)zgr2Ne81M0MOH!n9KGZCfq3uBFMNOfqW*mRCoKN4 z#*<2DmoZme&-C@<%fr!qPpvAU?{4fIx#4IaAO9(fAGGn461uc=|CH8){Q3AC-FwCN zCG_VGy|#3@E%e`KEdIr<5AeQQ*vTm87kq!rU~~WivFSB-i=-;y=)J3F1P zuZ5$B{+W#T;)cZZ-8@9lXJ?jv*r^2%Xm4fLCz5ygeqrM1<+61TsPWRAEr$=O`0{gf z*N(d$&{VIQTRhkD^|Eku)8-=&=&f-eJyUsY-(lOcS z!*4yHzkJhUZoly&K7Ee9IQ#JfdhmJs$V(x-9$GkhMnc_()O*O11(&u6!h(aG~359z6i-p!9T2u?R+$-nx z!Nk#bkZTXA-}&UP>&+5eCI{CbHez*J(qOs zYu8fRV=ZlV;A_5|CXODWZdyvSz2Yr1e&pqr$%Mg{}#2Tly15?``rC~3R}HQ99{pNZz+BBS>xlG7X&H=$WCTN~xyPX|jBsQ2shB{h|RerL@H-*Ry*S3;NH|vztvSr3b%S)%waG z!nnlIUG_{brSe~wo|gvj@hu!ZsMW$!`qkVIo?o5OiDn_hJ+40uve7d+x+Uz}QW})BdGWH(dHcj-qi1}Nc0AYW zbnaTgKB>pj&rQYqnM(h@zO5)vH*s`zzni6W+1if|k53iS=jhRY{ZUFAHqFVM>dxDT z7LI;~w@Vp4 zwd;#PH_!Fp<-^gBS$mdIP2G0;^6m-x!_l*sDa&Z9o?A|w{!P$Ncb2~E8^$u)Q&MZ? zz$jk-MI7A{&n|R znH*hxd1M)_Q!sb?q>psAa^`aM9Yv94bYN?1uLYxc{kL#*uO0XTL9-=>EuIOy+=@B6 zI4P-&t_*ZnDcTOOr9&FB@&~q@Tt-7aKi;#+<_9<|^(Q`k6GzYN zHm{8S(Lp}{fV8hIegsF)&RSANlUl9#;YJeQuQP4*;uU4Ip?w>%^2>wrQ2rHT z+toQNl%J!!%Xi^D-y8F^9p2*G(Ztb%T=$jHN#ozrc6Q~<8Nty5Pkd2E6+s<)Ua;`? zRVGIdpORlj>$W>2amnW8naj~{H~PAax*a)k`-@S+IKa_;*MD0^cYUeOG8dXrQx7UsSoA9Jp4KO-IWrT z1%{Tq{%~|lj~Z6`)vhbyZ9n1XSrbQhEvsdvHNX4o+i(LfhX{^dveV5lKlcw8>{!y2l|OBI2P=KC^}=o!Z$bVXU3|TZl`ipHBN{!2?~f*q?rrq8 z(p7h_ETm2O`6z;;=Pnal>4DvGeJ3>#=2MP-?3CO}e~pcNcwnc{e>r-Ai^fVHFZan> zc9Pd~3rD}v(_p2ATl)LInDUI*ACB%jz{g5YK5=RNDCZjQ2WZC1?-Ai=rIE=i`-*q* zc8iFk=Zx=brCZi&-@Et~Kfakb`rW7jR=V{;r>27%)wjtff}@*;4zkjqsftVMl7#Ye z^a9;bE1i64e6Dx}KdN=GoGHy(aF-uR@!|*S-rTo z1^waZrux&Y^v<~Zy}KBAeJkeZ5sPP9=}6ZTH%{IV#!nAc{>6_otyHqBWJ%6yo-X3( zmm}v}>ELU#nl8U^!`5CVj-Ga8k(CY_7+U+oyS%9E=^L!{&$l1MC64Cfn>hOV)tjueQ}$b{ zkI49OBZ8xce7MC*$GmmWzx^;?4w)Q1^Na0Px?twJGV#nFw({h1bkmU!t#r{W|JqZt z__TtOW(Qkjb$4Z~%g%_zJTzUOz$;wZ5eu91)J$~QXM|?UW zj@~5aGb_ES8!~y1iLaN5qw8mU0e$$rpzWjid^saHdiDssJw9XRI}LUD!n&BFdyDg} zben#%+tX|OJd(@NJCdX5r@QC$O8%<7tvnWvzU;&?D_#BcMYxxzF#d4#8Oy%0(ov}$ zKU!AC%Z;>R<#+G;=) z7q43B(`h~4@o^IDc8=a;F$F4#?hn89$Tr-Gu~?ai%%z$qtEaC%u4gdOrJb^4R5#Pa`b{XpF^KbBfeWRo0qeN zqnl2VM>KR%{NANmg8p#ya<>|f=#)0{#1=IK|4$oMeiBgg5q&#p;5x&4LH{{=?2KBE z=<}en)7$Rk$88fw*YB+Ti1u#0G_g&(pg$aa*^hM}(ZBYdi&*I0-6pq8jvnn){}Elc z?`GYa$NBiV9Q|BJ_eV6|>ErV)L?T;!3rD}vrxCs%GQ0bjcNX({Qq0kJjKTNQ&xG{1 z4Duzm_@pf>zju1GM|8~e+YLIT@%=)?(Pu33cto#{k@r9I9iP65qvx(^`G_vKC*K@g zhaaCKIC|bj&qp-O@6zh6B0>K-`j)M29#OAv#-ID*48QKq<>)!vMUU_u%pR!?k_G$6 zM&H{05ehzUI`Zl(=M`O+>vTQ_XxNpOloyskq3V_AYj_Dk*s?{w1cS zrKEF&IEaleYy=-?@;Fwe*Tuv$F@Gn$=&6a32`ExznmHpbO%!de$Q94Xh?satgb*h# zF)l4GGCppaIYq>CBh0ZvvH#5?*~NWr!K=!{u1t24K)GI#TeTu15y|n9xD#hiWYuFj zFlw|YDn2PSJ;iLRUsb*xHzFw^F;0Z0i%*Rk&)Qu`f$2@6dCI8KD2J_WCkj*DlF z^0F8e*;I~$HXj@s+Ly`JFOWo}N2iHW%(y9+7?+4lB3_YBMKZ)rhJw6b=4K}yyLi=# z&yH_jUb_@fw#jiRY3b0~=(yCEB1(u%h8zUldR-xeIMo(_)xAPLtE~cwNQK-ZQ*0uK zWbBla*GqFuWO{sB^%8%XKG$T`U2iM=%i^(mLH)T#VCAdSXZg;`=xONRNinuEOlG=) zHk&+-YkfwH;5C6A_b_$?2w{4{>kg+kV3Dz7(-YB~#wX(b>DaL;tmnl=u`zFKa$1T~ zjxZ`dg(c6$jfqT6vz?3`n-&|#WCO<7v8id%6>*Xy8QGRL9(Ra}2cHcT(O!(kHnm>} z5d$3o55Nr|K&fvCxeF8n=YZg^{KyVd2+0Cw0O5cMC$ z0KPyV5C((-;XpJH0qj8fxj+uE3`hfFflxpWGyzKcpq{`!APYzXLI5$~3f%1-LM{Ur zfg->HtOv4z#XtrS4(Nd95I2kGvjfsS*sVF%q6+<%ayI9~$tg+f3Cq;*)HIYYT$U1@9GQ|fHGJIon2hkA~eqr<1fCCa2@C#Ooq zVs-eqxWw?(*vM#eO4MKs&QR8#$_Jp^ zXad-EMc@gWJui&EmhsrNv3BVR@ma{Ow~xzcUYpR?Rj$v&`5vCe_`+tNr~NgIfB6Hn zyInf0ZY4N>1_*UyajL7E{dFv@XNczw9S}CwE_$2?0ru&!cq|{b*_X}!TE_GI5V~9? zy=6FGUnM;jue$W?uVv|(5UrubTcRT`Tje zUZ38*GXG+g{C9X)=2yKwtk>)LJH)T&uaw&O;aXc58f4Si2!t~Lwy`mUZ73Qyez@WI zEk3?5hS>8uVVrf;9@hrHzC3lqUe9kf^7Z`B##H7nvy9cgl`R5K* z=3A_Ya&%3^r)2W)z z#8H*`_U&-R>_?seY|Dbp$+qx8A%xip@dy_K!dS>`1hxs|9a})Sy=S|Y*&|hXXJN0h zP0WYINQ+&2Ww#$`UvqT}HmC0ct-6izSQ$#Hl!4h5Y_l&zSCoOBJMDRyuG?V8=?eN- zRbN6jRF+d!{$$wGY*Qob4G8Jj%d_oPtXBXN7t{9djcvB_u`{9E0-M#7VLi&rWWwy9 z9XMvRgH`IlXlxVm-G{{N&yCw{<=ch)J_m$&_WIE213%Igu)of}{D;9i%JVN{-N3f^ zA+~uj1EHV`%qC--P#-ogrtR`0-b39vI{O!h>|$&Dc|X(^0vsYy!gXzfS26F1PR z+oBPF7@wvq;$?-olZ80X0rG%-fCab+lmK;xxf2h-3s3_7Ksb;LWB_jhIlw;PEN}%V z1?mrXC!GNkFbqfr<^tKk4&Y1RIB*WQ0$71JP!>->4)g{>fC<1fU<053od1Oj0|EHDem0yYEtfTO@! z;09m?*d~W;*jA7D%6!9^<1;SaJcL_gk!V?ThGwi>)-#%U54aeE%`x#dnEEjlPJ(dG%msHlj@H; zup_dCOLef>mhLi_;YiZl2R^r?c=K>_ft81g3m*;9ajB$52co?3C{Y>X4oHelk2kY8 z10xe~33>dIYKsV3JC`BxW^*zTu@pj5lA?T~qv4@}E84}$4~|ksVy8xzp^33v>d}6} z(jG~3e(t6&L-5w2BldDz$yqr_>B|xbuTrj*+m9BV%Wrs#u)+GVOq(Of*OL zO^iz6ytVjA7gh>8?b^x8+b2CG1;PmBeCU0nF?QNtjh7*Wt2c6*(g&_~RFw>O8D?{5 zayf?97?f^KnHpkF;a&wzjDiZGnz%g?!|E9t7d4Tu_lI_Q@~w_cd$@#}Qxf75k+h%+ z_j(#MZCr-VR(P;e3|l!TW`AJPZjXfv;*^SD%O`V2=DSz~t&)kRHw zoc!a{Q)8K?^iGe7F{eN)M{%)2Si_LP?AV80+nCiQ*lz$k{s|?4+~cDAAdwKu{or97h(c8!2=EziNhLxpm>qE8@LsReD$HDoh zXc6I7K^5)rNsJzn9G7SlZp#`Kx)_=yC@6l|b1?3Xa2oM%gAa<9BlO^J05S#9?0{W1XEN8#O=-?Pz%{s6Yc->)R zCVXpz4Ze{n=8Dn}txQ2KMYdEbhJ;~}DRJzsgAeKNH+Z055Z+zpMs{uj_$T_u-dket zFR}NSZ0|Eo<=$^%?>Vveo!EO%?ENS99u#{YYW^`lk_pTJnBSTCpE-XtLgsg7erx8x zX8vgAV`jc)!G|sQq?tdO`K1N_vlz$T0P|6c01u!E;10L}t^fg?oJnM4TwL6U5k4AC z-@b#eNxHUc*CH8PM%~6-t2p6*IsC!Q1}sJBg77Xv=3~8q&>i7rgd&9J5SkDcBFsc+ zK`3l`(ts2a33tlgjdsD6&iK#Zf~(no+sae|C@_-B=1TX+u@{$z22Kgmk-Czfgcq&(A~ zxX#1*0)Mi9sXr-M3EFDV-bUP={-odl()t!@UqpT`0ff{FAX%;fWKa75lFAO!&dBr^!@Gstlp zW_}+)0x!R8OHt!MB5Glig}8SB@$yBx4@CF_(m9Xz{~h{q7dr5tsIQqx|26W+^S8+) zq`yrrmJnVxL;nr={A81n`W7!IJDuU=^0FZSz5K*UEE3Sb%L_5M=##h> zeFBL(GLVSV0!ilLKvJ|bkXQ;qyBbI`9)nh=FX41IfIW4Dmvi`W?%&%Uf2SS(Q9b^@ z*bdCLV*11ED>i;J8;gzK%+89y_-$`%G2LMH78|db%@vFBnzOqw$J^UpB8=P2{$k@c zv%%QhpEC^hS{UXDH|R$FSI?Pk5L;%m5BAit*$5$Bp--4Ag?WKJh=Y?jfI^!itRr;XK6GCY5*=kO`sdl$PQf)OGG-5 zc39LnaVfLZyAYN-Lo3pnv?XnbCzm=)yFIRGjvY%Gr1%C<3s<%ThjE3lK6lmtD=9{8 zNE#D2(u{QE&YI$^9%*8#OKM|1)kIW>>rL$6%P&(obFyIaVEMd(cy+MWsYmJ~#YUtF z@^6VUwc*O%871llx%DJsA|-O7Bx<51I-(~AJPeG_G7}%thxid#v!oyCPlCt*GLQt5 zL1YLCB}2(DGQ7$jMn;g4WE2S}qbv3?B!Y~qc8?}8mG<$(evcz@WCEF3&7MFKNFqtX zp3Lu)$Rv_R(#d4(Q}{gtK9CGD75g+Yo!@5=w$J2toA8`C>Dlg$RCmnQ$n5?QTek|R zF5W*vV`#A3O$@7Q40qz}EH+0inE& za9kajr{Et!6T9o0+8wj}g>tZCmNq+Y1_=2#$FT>{0%!@aIBbpg$&R@q9;;?kt#&nqd??M8d0-XGvybpmB+ikrij!Rjf1vwd<`XcsVqC&bIkU~4BHcri*THwDF z*Np^k48X?yc+400LN|}hjS#oFlN(AmgEVw%guT8~ZKnpfwyu+_ z(;H4ToLrn9W8^L4%5@@+m(ze(6-`uTLqt;ZRgK~kV(w(&SoHHSuks* zAx81W0JAZgLK4kjX?S2HZ&|UosyKQ{vp@30*e=4J4S99OI9?y)dOM8e-J#h%uy=;m zv0X}JuvmJ*Qjrh^Y!)4?mVU5J79&P~AOQC=dcs2K1->4ZOJBt7%Ei!u(;u7xh!YC? zhQ$qmKC>D!i-*N!R?jHJ2!icH$rut%dcy_^=Jv6~49g}M{La{Iv|tfU)~mdC zz#Le4XC++%*(@XrxKei}D)g;6B$LcWsa4$Wi}As>&*VdY*nE}ufw25$05A6_@^YUJ z8w>Y6uurY@P1O}-1#B?(U)Wc|LQ99OmP%5{O6+T3xvk;$Wc2JrSa$KS_~J+`Y{3{< zjghb(N5cjk3Cl7J*5)u+pRB#ui0DT&2<5P0yTX#~0xHwR2C#P>>+C} z!$HuPmH5vz`)%yYurCFT?KW*^+RgSUxRUAgo1E4!;q-a|^vjUU}b)k$4jDa(^FV zv9L28eIMiJ7HBH_FYH^%R%k8zFYMbYbl8kBb{j_4Xn^fDogRy^WpssB55;&i1e)!O zv8Fdh9ur0r14b_$`ezsPdQXg<9vEL6Vx+AH{buXGTK~yfzP8f+7k2Lj6J`aCEmW9o z^2!D}vx%zPhAp+NovP#gi}v3q0W;c#*}VT#wwi3w_^<7MoCHj>LSQEZbLC>kX)o}S zGq&=XA;incMrX$&yJHW#V;8&Q+k84Kexcp*4!iVy?b6rV9n0;G#dgPD{BhNCX4s_} zZc!GoY z$HoNVI(r_A#>R;1cuaTMm{A>1=$o;2`3N#)b!R$g&l6eVHApT9$dQ;mv;yZ^3JL3tz)q^cvpcDm*qnPOzg1 zhpY~4zMLo!s)TI*td7UpUF?9z+TF_m&!(SvQnyMz_NOawl50=Eu^?;4+w>Ym zyh*lfD*oHcTHp!!RmT(ZtBxn+R~=8t&|cP6^Q(?0Ucta)$tgOZPm$IkY{x~A;0Q)LVotV6k9eG|LtWh@Pz!T;|cjy#}o3ajwfVjFYBuL zRmT(ZtBxn+R~=8tkA*_}Rn4zDo{(R4JR!g8c#Ouj>SQg*vpSxTUv)eoKYN}q$JuhL zoS(p}EA=S=_!qao2mu2dLMK)@VRIJ_UWTlE_EBDPY)3-*tJ42<{x1nQl7J8HHl<>9lY-tE z2MaQhh~R68#Bn^R(YRkC!d;S7tm7EnMtw<%2PF~l7$ur}7RMzSeE=v=3MT0}groxY z+g1L1Bu*eU0|cFA{h1xZwC0|3sfn;20Q0@#Ss(UHk1N1J_M89<>j2EhUKbE}EM0aj z3mX6|UDll#ts&5e2cx$G7+nFdb07Y^4}Z>jC%a}aPandE!x6IdM*u8u<_}`&Bmg2H z8DP)kuyK`@mDPjA&jeVR=kVcNgp5BAVEp+2OJ^m}71+R^Z$ik*w*_GNZ3kGq&jD7x zQvl;%02to`LSgb@U~&;QHm1pEppCHgq&~y&J*u&h>`h=3zE@^4RpM2Ar;6vXYa*kP zQduZ$k*RT&+(GR7j{=W{RiYDoV$z7 zjgYm093j&!cZBS@svDDoIbGg?um#TNBV^BR1tDb5ZZ$#3bmVS&FzzqnJu-ys*{xWF zB7|au?GUQdg1Kk7a#Dl2HT`^qZ2g{wkolUT5k5m0fslQSAOs<+2kRHi2f)h8z7deg z4*tQ7UC%adTACJ2N~YR$h$ZL5rzwO&7Q(p@I-)z`|9j&L=?I~4{XcK$?r^i!S>$m0 z=a7lxABVKn&+(5J{&Uoy)xx0)a9tI%k;CnuM+T_L|8i9jt%d#X?Bcow19!ySsdL-$ zjkE0++rg%-ws6kIVm8#{ep)6M<{|!(_b#!-GLjJCHHdskDjw~RxNAsmX~>Cw8e2p+#~LUd%&QFAb%F0g{-aFTq=~t{x~z) zmTt*?8$V=7s1WTR3PXJVW7kJ)#5Y?3VOufMkNh17@&C7mFW;xH{;2BP^ELRbYJCMC zg1ybnK2tn44qpU;z0Gfy7cUe?W7}=M)Zhg7+kGIHP*)dMR|ewZW&@}-g%7N=3!U9b z{C!_?8({YB*9Zj&=T+@p7FUSR>|V+YQTr_`?(Ma1vvO*fTwsdF3LK}l#PZmec;X5v zAb;XZTwvP20uK%onry^UN17E^oi^#e$egAJ;S4 zXfIyWGd)uFam#68UBmryBFM$GhV8@iwkS?b$jZN7=6~inOP@B!KXf`5&J>36%N9%| znZoM@;1TUtc#O~erYOP^en=|OF)C{hTUgA8FJ3&KEpO^av;YPCfPO#-FboI>#sRZ{ zdB9p=1MnsAEpP?62h?xoM;Ze?04XpShyi8+tAM@0=fD}@JYWUtG{;xg03|RC7zLyQ z(|~orF5ozD33vj$09ttXkv4!47z|7RW&s<3_klyeQQ#V21?smz9zbs(0Eh%)fQ7(1 zU@stSC9{Piwq9am-!zQtY|HBsLbd?8z%a2#5erpb6j#5TLxXEq)2Y+dwgJ4k!dHz&>CPumi{imI0YSZ77N`rn51- zC(3`BjoqLB+nCL7Yz|;)uxnY!#`ZP{nG%fz*m~?8;8Wln@DON-h+<$MkN^nRXu)It z1-3GN8`uYY4?Fc~pCc?m$b2EU5wb2^jIcez%LqFl zyoj(P!gB~aAuL3QDiRAq+a~B^ITIzeKY9IRrRKIwA#}$;0r9adlfAmZ9Wy<6h7lP= zR&EpU0(MX)!Z}Edm67>WL;y>eedAB~&L2)~TduRoc7Xo{HD4Y-ajiHut#_+94*9A< z#c{{dM#6FC+d0jIW6{CGEo{dw`6pVvC1=N*{wO@v>ge|aO`?(wpC)(D+xhi-ai*ft ze|5Uq@~z+&cjlQUy?tR#pZYbIcip|g^f*7)_m4S^R?M0Eg(+YE!?x2e`nJtD`n@UX zc=58|GEW42xjN71;DU)myJ(g_N-mz!`{2)SU3vW8(>t?19MosiuamDAKIqzO{+!Of zUhd65EZ^mR{p({-eD7>O_wdo3tNo^}IqhdI{AOkSZM$+?Tz}ucp1HYO`kaO7lTQQ= z2yzevuny6?#*hu7_$Uui!>blFedhnY9 zwf7j<-#qTGc`J6mkv+5FjUHDvo;q9L^7FQfoOejDSE~96;kS#68f#`B6RhwC+S@eo z=EU)7v6Um(^OMrk#wNv#O^Hk#Zx#}$ng{bmR_AkM?f$Rrf3^fLWMXsT#&3*|ncOM< z33N8DVt9Rp&gR@e@WP7R$w)-HVY`6n@ykEvgmLjxMHvb4iK&M6_z@OuYE-N_Au_cG zeitVtDK#l3tw&T+f;KWWq32{tdl5c<85e^e>llU)@8KJkhW3)4;`YXRbwnaPey}Gs zjeSY)Z>A=*U56`E%~9$2kmXb^9p*{Vr(nNDgdr^9vPZaxBrJ;RHWPGZ*y;0w*BJIi-SEO$jah1xLn^$kf$-kC&b6sx9`A!urU7MKXT3tfoQbf6!8ji56LOX1gV=WL-vWR zT&`5yQuru`D#MlUD8E(yrF2mZR2^1*rTRftPpww_Y6G=F+7NAycD*)NyG5I)-J#v1 z-KX89+pjySE7YCW%`G)wx9w6UzEY>g~iu~@lGnWfBD<|x-IbCp|^dCDEiJ<5H`{mRSAV&x5G zp{huAPIXarSyimMp}MWQt13~Is>)Tdn$_Cry7zS9h6qEnA=VIYNH(MyG7K{enTGj> z#fD{uEJL;-$FSazYuIAQGwd+zG3+z!Hykur495%whC)M;;hf>3;j*FFaKj)mzHKZq zT8%ZRidyJN`a5MEfyr#NI7z%-GFVz5E0S$hj#B-h8mwNV&Q`yx-l4v%Dc0Q3+}7OH zlxP-cZ)ltA;&fTMcXfgKAbp5FR3D~~F(eprjO&fL#x2G?;|}8<<38hlqZ{o*2QZnL z*fY0)c#n9Wc)$3d*djhAE)W-ri^S)|7sZ#w#o`;{+v2<85^<@xT>MN-BrXzHiJQb- z(nR7RsS9~(q)((Tqzhzk%GC1d@(<-7%Zud-<#J`LDqfYWN>gR1W~hEweXcH1KT<2S zKH34=47;}U)P1A>Uf<9lHw-nbfK0xJH0~SpMw8Lk7-$SKI?)sKdwPkLHH5!^CT=9| zCGIUYi{r&J#OuXLvdOZV@*>4K#YM$sMX@49c}nS_KCk{+-AdD5b4*j9Dby5c+_di6 zCfdE)_jNz(R_lGxPJbFo4K<7sBSlUb#+k-t##P3*=plNPa7Y;y`x&Mx}|EWZmHI( zP3n#6v+4`#u9}{j;hJ#GOwC+PuJ(?$L>sCbfwo$s`&9R(?rr_M`fv1w`iJ^*eV}1L zg>DdIO=DMMPh)~H1+BN!c*S_#*p#-U>u3RVqWFz%dwN^tlX3Ydmu4b#|gyxi{nYNWS zUOPz}rW>u>pnG3;T6a#@Oy3IHM+`L$a}A3OR}9x7Ygc10<4WlHm&SbK4dZXdI8D%_t@}cGSouKtNa?M5qViDBRs z{GFsoVwO&jN@XfpeR*T~LwN&*La{)xUG<6Ttct4pt7Fw^>Oq>(kk1UwHqBnmNzIR% z$C{d2FRdJ7S(r8(+J8p-v-Y9(h1NsYQ76?IbxFGEkeE{6TR%`gQXi+!(y!O&>%Y_A z*Z-wg8TvqmZ(*dkXe7C|=T)L5v66U6vLsECA(edpHb`cX4VB-KKR^#?qZp$&rRb&%!WjCg zvaYI$>P_`t^<%ZOX1ew*?HAfY?S1V?T@U>mhP#G&#?DkpN6&roNo=c^a1m#MQbI_9X?t8>*Rw0kD%droO;K z9eGo^NZwtpl~a^{kGzJWuOdV-T(MoTA2Kgg{Gsqv4pi<|ex^LAysjL9G4L(b3DtP@ zT(wnQU(-&bf<}I*`BF1Yds|yy*G;!Xw*~XrV_lm5L;YQSkYOWch5ANUN{aDZIm%%a z|03Qhjgb8z8zGOEFP48TKaFUjXDo`~*HBB{FwMn&2 z^)0mWPs~?M)Si%_k2+Evr(U9d3vKkd`X_a<+C@`a(?cWG4AYF#%+}1;!NF-3(y7YqI7AxS-PdV9Nkvkk9v)9w(*XU zl;AmPlvg1MlkAmvN+YD(WOd~0uazJGx5KH&O_%3z3iy-(s}E|I=N1*)9Xw+UtORsNEf0D)rIN8brHH~U92u%myA+m z=w_g0=j#^hmSIHAMv2zzav{+?-45Lz-M$L_E`Y^Qgt6(O?v}1x*G{j-963Y3O#hkw zg5JZxoF!}w`bnH8*&*2@*@v<7AnXWcLlBHf-cp^kpLB#YRyswxP`XCCMf!>K8)>2R zvb0!wLwZ|!S6U)1m6l7N;q`hKnXAlA<}PajD`&PWUA{>Eu6(!rq`afTOW~~$E945b zLa%tBdZap`9*?o}uy!!&ldfB&Ypf5{N9ZT%7wX#>_8Gr0qCg@i&i3twSx+a96=#T- ziZ_W5iO-5}VLo<~?2=1VJ5;A(o4BbTs-L1~w?-Sa(sj}e(MMtg*=g8o=*Z*?=aDCD z=Mr(5SS=YU375=~Y?XW{xhiRnS#7X1QMyjLM|xGtX0v&U#fq+~o~r(;fx5A}sk*t4 zXFf)VySfrxDP;EypEz>SyXxKa?)oNr551>er0=Nr(tGR0dO75(*PHadsEJ^OgriQ; z`dEFuK3Sip&w$i3_4Du>09qi>YxOEE`2!_4Aha5cCY+zm|(9tKZ?$k5T?W$-qLVM(YBdV|T}YX~$1 z8A1%9hA@M@jkd>d!tmJ8$fz>vjUO1J>2FLnCMP!KlL&Dl=Fp|$_r)KJ55NvOC%!7K zEom$1B9TdaB?Bd+B;zsW_LeS@otBj;JTOaMR*F;^>LSf0O?_Qw)ZU~YppQcPO-Jpr z^_x(Od#pobIoW(+nvXR_xt(B1y0kn=xo3*W|EQ3C6% z+<;$-H@d)Xa5K6an;1Qeo<@#!zFJG29qoj5fv^rjG4yy#>KGhvW(froLB7NgGP(-n6bcEXe=_GGhQ@aHWtG&xox})TfEd*ZhVH1 zc)3tl>PFpZ6Y2qL1#P*li(=CRvKqUxo>&rHLLI;A?S?yg&nk;#IVF4UJ8o*0MIa2iKHp2Cv%xYPV>;SBvlk)b8Kv2GW^h`~)k2r>I#dokV}4+?|RdCuZu94q`9y z2yv=-tN26lAL0k%4iW?M{Xo(UmTweBJ{MVS*>>1redPn?e_;M!qPPOfx3jXla=vnj z@}%;tvb##GTA|8TmBIcRtsbZTN?oA7t^PwD0gG`HY@xH7mRJGo)!x(UbqN@s@94br z)AVc6*E<>f48zgtZpLOtQtU)>ag$)Z_?~!$^e{$Nk*pK!)vsg)vbu72d9XZGJ|F9h zoAR#|1&WDW?t7FcVEG?X9aUX}_1#I^O?zB>0W($^teg(I-v5Ew;$OY87%SBOxxLbp zir`80qTWT&Y+oeK3zY7|!0 zYp~Wh1`EoOXTqeOs9p*C?hTEnMxmLiSplo=fToUCsU4@Cquro=AN}tLRv>q^&+xHA z7oDrFyKb;^cW$B|K}uiJA2Cun zlTwJFt#~$8oiD^D$q>m1tV{Y!L!`T<`(R1@DxEEx&#f^_Wsha6riqo)+y_LO{ z?NweXwpI>RjZiI6Emdt+ZAZ^7P}Nk|RriLKKNpt#0kuVaTwRFu^F>&yH!zOeRo{oj zT2CX=BxFoOQKyYz?G>T{#Z*U#nZE-vt|EjA1p{B8Lz`6u!(Gdb*{FGm zx>Q}RPStEdYwpnO(a5yX+F00*$*9R>%qL>KCvOGC8}P$7Tsaqsw@Nz03THO!d$3qF zSoO!s;$_LQG+3rHWSO#yvY%xSWKHFs@^WUxw5IMy{bFfZYwPL1F8$E*6L1b3D#qI@JQ`Z?^9n^_t1_qRGq8GV@A$2 zo;QlnQ{{9h-Noc7cE-1E@I1A+uXrTZ*KU%A@LT*SxhA9xo0Y(c2T>k-PG<_?{v^~*BCUrG+$`G(!^_h z^#1yd@Wr(^b}X5Y3gETH_!x{g3netbMMT)FU}KdBu2>!Nw(yL#D$yptWtMb zmMj}{?t0E&G8!vZH$_9N_`(&J6!(=@rJKqfYhPPybyQ8jOn*kzSnUCQougT(`A%CK ztNbr@dkozu3329Z!A{D}su(pYAK}bBuYFr_S5X2_M!Dh{KFZ~ybXB@3-IYz09!fzo zyp>|595vS~O{l%iz6e!@!FL*=jK(TIUYV>+Q)Vbw~6F)EFHIR7KFD`y$!8E?W9IT-fR63i4Rd@hU=jQ?73 zxOlGkp|~E_2%WG(2$w9z+Ho)DfP0c!Qcr0osW0?rigdfwBCR27E|bbkvJtWb*+SVS z*owzs%@o3`D}oOpUOrd85i`O`xmGbm@g_V8MT#F_M?P1yLECz&B&sQ@w^h4TKVdCT zFha(vQ`O7i<@gT%t?`;9tldAr7;n)$tf-9^qr-BHd*`%nuz$wF!}Kxyd+vJ~n)9s0rIp1?zAkdg)B#LgNZp%UiHM`qKD4JR=R^w~3_bbOn0t zNz8*}k26uD{&mGZ;u!Ht*o*d_<2#rKpNb`t{t~m~6Uhbmr)(a0=Gp58-`*r{{rtJ~ z3Ve}mA&)WWRp(^)WnOY`xmYfjFOwgYpOBwN59_GtuFyd*!W3f_F^U95nqr~iL&XJ! zMma>eNVy4?^{>jB7$JQyFQz~`pQx^=+QCm0qn@VTr2Y_Ij)!U|O)X6bWHeWkgK_g) z%`fnn|EZ~m7ViKXQKD6Asn#Dh=?M6x--o=;z>nTeN8#U?tXl~$!d2Z1T?hE)60n-f z*I&i@(*x_vMTSod$Klts8k#|4`eNlV8CvqL@gw75j4JnFU)xp;p0Git(3!9@_AsBm z#hJTD@rJl3EQj&pMdG)iJ#{4=FmKM1JeD+uXK}uCnRJ8nQ}`Bsf@i^9<|Xr%iDh!x zPi2 zvQ*g$Bes_+2z@I@^`0sZ{aubZHUV?&7WFUcmhelj&|K8i#od+xm^JTdyTDq0AGWzS ztbmX7xAZ;Xk^0);YLvl8e#-c}u?HPQ^XVP<$(*@oRYdT`Uld;x|0(u@XJMoy4?cxe z@Q?JCO^~mJU#}C|Z>ge%Ql>Ox4tYm;LHS(S8TQLlHPJNHbkS%u{ozeMs;Q-QLyIW2 zP2j6r3U5t4_(FH+y$qv}dwpYntm@u{bYXuLJCph7h91cCme^gQg8a5gN+iM3iPH7( z$&^a9vKV+?R${HPN45{Wy%=7YT8f^E5zwHeiiVI*igJo_1H7W;${-tS!gF26_`KwO_?=z*CSc zNk?gRO9~_>C1tq()CzZ=`bmSOY^}Inx=C6fJqd5oeW{16H9XtQPDnu8u0$yh$u7&T za^84v_~XOmqhTw~k>_D%E|i~vxAiZ%r=lIV-iudEQsgM!Q|wY4R(z%S9X@b(WmBv- zhbrHM)mVt0!MxzDU^|#peyUV>Ah)PKzpC zPd-?)5%$Gl^pex)C-*R#xM-VeJ<%fnuf21R&$;gZ_{Fw1g$*mG$>e;h@A-6nuj?9? zLn+g}GMS8!P{yqqt(qckrxtPwErc@Kozrs2nTneww945?l13|%@_T;2o83yc+u^?N zet)b#`m0C2*XQtlzfSLu=2k1Kht=B}#i}eu*F9hzv8s7%dfRyK_x9(eOhR*W6rv;E zU9&azTSD@e=w1a(Re2si}fhIfPj=hQ-_C9@Kzpu1E)L#=`Z~L2F zGlzc|#Qr|GoWtM=a%)m;VLbZHJHl$=oKT*coFMk5Upgruaz-VW5G5Q%p(4gM~v+gzOgTFhQ-OLp8C38NQZ9UrRPv);?q*ask zY-@D^vA$+a#nW729YzcO8Jr+`HFVAn-WO0bC!wwW!@C2W;CpX%G&b38#*KIqWIhqK zY&rVaUi&y|SQ%e6Uww41*1m^*{phyi!L3VtALFH+#&?PE-$6%<@wf9of|Hc$ALXC! zUr0Be1kc$R@I(ahUJr9+LM>u%{`sV_)! zzO);Zdr|E)^yd0`DP?{<&l}=#(HT3p!=$=ifq)fEWG+9N_e*~mCoF4S9vRJvztrk7;^`>Yq@l_YUraF7P#@Oh(dM~2dp7x%> zJ=u;{dEPGNYv#KL_RybQnCuHjxAKD}x}ZwE1(y1n-VhPEH83RbGQD&W>f>qW+k_zA zKjrU17OH_&nh75W>xILx3(l|928=XZ`dHd7RhFaNdXXhBaqC2o5=KpPRyI{lQ-`A2 zj#ev!78T9Z+G%C<^7_;Iv-)ymCZ)pyS$+&w~6>mId&7Dh(g+tZkCP1 zRE}?TP}Op(JC9wtzE4w8a%=iT@pW;zcvAWv7o?W!9=o(^H98+RJ=W!}#SbBy^Y$S2kNrgx6(MEY>m`k*@} z_&WPW;xT^&s%;i%8R&-=;7JN{XD}0lO1RnUso3#S7rDDUnBEbB%hOZoqs&z@m6fpa zqiQ&4JX>3(9oN2db*_{8_j;I7&iDkk`2xK3nE9x;k9Q)c@dNLA@26V2=m-?Ha zL3C!nM}eb*T)xvsNM?7x6{>+7JBp8ppKzNlpswZ0<+w9R%9F}d$_sFva%vQJrYpO9 z7rS~7yE+9|wvPU&{(?SKpRX^2eH{iZccPY$#P!NDYT@O)h~w?(U&E|&pcmVI%U)nd z`l|X``tJ3;=9}tk&fQ1ZObc=~@15ut?Zt=072+CcqjW!d#TL1h(pE`U99?mpy4m$t zUj%PO>9zE1y|I}>660;F!1~E5i^|`|)_h)H7cvk(_|N$V1_lMD1ZFsAIz7n62AzeO zAn#ve2NxqT`2EZegt$cZ(0$}5p5s`1KSsXJ?xFBF>_{VvEqQ(F#C+oQEL22lOdjY;Ss zCk)9$rfl6v07I!WLI;l`3)zkmDRy| z3>SS24)!7|0$jA$TaDW_()Q#R-s^M1Q#kccDxWI1;!OtBPU>TLDJ+8uD#p77+G zsqb-mlIsPg>lu0$j4_8~O}<_R#(syfx9@AZ(+XMTt$}^e>5{#gE1B z#18bZ-O_i`n%3sK9l^*Icx>7Exxu9#hjk?iSe~vpgk}St;{ayM`h!JkIG43}W z>2+r{>p)R0XYx|v*wy+&1&hx6fbcX-DhK~DOWa7#pc|gtVZO4P{3NLGTe%0? z;WzA$$7p4IY@9OFtl`|lEX%|Po$U>W+4aO>OScz+*uS-ZvSU!NvdJ2qhSxqw?_c2$ z4KxjSqJupvS({s6u18Vr#*=NSE8R=dqBLBio%|FmBac6=E+=vW_cK*(t=$LT>VPNT zReMb9qxDCb9PDZgBek(^a%zS)Q(FP*G|}|>v1aM|6!vx2rL z;hDxtT!9=ky&nwKY;N{7`;(Oz0``ovI-}wpvc9%%@m9pmo#)-+-3OlhD`#xGe<_)$ zV7E`!78;?z{Y8k9_M)XphH132;;l!>pk&}ve~wdq5^ZmX_oVk7dp~~R1v|9JEA;su z^$jV;@{^0wStpC#rk?)(xJBcOyrQ*u+BGiImPZ!r#%}M93HIc&o)V~OGab9C*jQ{X zz9>lKX$j8$Zd@{CB+Fk8TKyO}f1hqE{T$Wx$`@}$)U;0UksZTB5Q3HzIW3Y>K*`bNILbf7|@I_lgZ zC!s;!D%izK5v~jRBdMZAxZ$6P?cu27rO9Z#eUuNh@%jv-5;vi@^@f#gt+qB7DXhO( zwY|+QbLwO=HZZMAaNbdJ`@eJ96W}u3`sIfEQ(ed)b=str;4vEU+RN3{)Hk8<}(KzSQ z(bs63v@I|uA8XrD?+#`fj)V0&$%$GdPkNFf8iSg!jx&3XWKTzPiaE>Nf{IYrdXTk# zpI?2*`pOFPmLtn!z+Btm<@W)cZXbSK`TU$_^q zuM5n5v@lLsDC`4qo}yCTCJqqWx@$L-mHPpfT2~fj6P|h>TxpQ}vNA@QtXk-f&ujar zmu2-1Rx9r(IP!IUBvw40v|yJ{T$&S%5~HcV0kMKqU1}h;fDLz(#&C+JNNo!-1kv5rvCX~&M$UNlGXWvWQo6`PW_(8`4p7dZB-vpsGwibqw zY@JK(4u=1ilLkoj7Dn6*|pp(*i-h4oQ~J*IlfM)oTYG}S>KFcCuZXrMfPzwd-g3_Td-K( zy#pQ49tMkJz*)z{8j=8-UL}RFYw4ib3Q8Rke(jZxN>?RCc@<4zDTrsI^0D$cDaMAX zrFK^Dz_Xr2Vo4%Dbbxe97`!0?u64pZZJyz)8=?>;(RC(+g=V=rz$R-OPEsBzuL@*N z?)9Fsf3>Ii=92e2;fsKUMd8-p38Q!f{__;d;!9MV9Gvz%|0(=+58ir2plaZbz?}gL zP33;lVO?>;2XM0g7MSEXZQ!e5SL-Q7f9xVWAq>WAn~L6;iN4fFp3VM$jqCn{{ImRb zB~^PH7x-(fJ-O3~B#l1933ifCUUGSk8@(3x___H3ny7BKvk%*oeP8jNr%>^3@~g14 zk?5W~{hyNpI6?;Cls}1Y>F0dInqXd*ceI{J7@CvBX@&2XD0CD0f?BMU#iEAb|996{%K&dV3%veh+|2Vt%pDyV!JpyV!EWw7@yI8P^(-x%{AxJF$R%MsQFZzQU~2=X&qT%GI< zs=y(XMv|ci3j2J#(3KT?4dwn*VJK`qOI$-8-z9dGdPq-5gGhs3kV553a!pQbFL^O% z;vki=jhdw<(9uWfqe;>&FqXh}ca!S7*}TmhNUvT%&CfOOwjM&icoQD(BpQ!e9lbqZ zd;3rh&v<3K8|vWzde3fj(xbkSXoqviA8+%2;Xmp>?Y|wLwl$b7312n^KQ^7pwJoqa z;N~v#gFShy_boy_K}Wk!5W2&dQpqT<7q*aaJw`6z0+p%;zaRGO;YU>2{dOW`ovaA_{6VOj<4cAS$gAklvKBty{3#%phA^U2Pw($1672-d^& z-#R%B-~i3^S$Z34MGvDt$+-!}+vtRq%$n$g`%S~To8NuX`qBE;@{=j;0}g!MdlTrZ zEP6};-(s=vSKnQrih2HxoUA;*h!%X#Ia5r%OK;SHfTxsy&Eg{1M;FAous^Y5c#VLtI`gg6gIV&2SE$5NGiF z!=(qMPSRuO00ojR`{c*vtyHU@luBwV^=VQr^4>B5NJ)?`~^9d-c8b3;6P0D(*1vao-v0)SV=TUiaS{crUOYj2YtkaTP^@ zZ0$HQa!bW8#oMHMAd0TiGSu53?#f_z<081j$K)HM_;sW3c#n{YX{`2EQ{d}kV0}x_ zWmsv zpJk22*Iw-X+*#+i5dO9oW-*0XFyWuXgL1f5Nvo_?*J^6DS zm+d`%Pg01h12q>qlMMPBZqIokM0$$OeGA@AZ}`Dj&YR=xUr=SeAx?0fvB~Vh`iFvu zYM`I*^gd%hK?bP-iSJo~x1F<;9O7yZ_X_Q)PNmRZT2qnUqV|O1|A!lujLJrJqoz@t z-E54qD&y&NCbzoI*lsK|SD7uWHrD+h{!ZwpsotaZ5B3+ngTBuASF5SpR=|@M!rx~@ zmQ<*XrrA??m)V7P#G&{q3-FUoxwHJZue|de=^<_p?r? zMUidiTj5(re&!qBeA0%gAU6Koj1b;R^LUPnHxd0WZnXdv zJDH5f$cm@HeMiuDrlaOA0LiZvH{nw5W-{P7ipWo}l`>Lg9Lol7_P#ASvqV;*m+M&! zhrdjc=Ae--s&&;+K8_7iR+$!Cl^q+!ayXI(GKe?j_TSHWbzP>Rv(nFXYo8 zFX>7rx%-&*`dx6?F3LZ5BmvD)?oZGiu{aoG84g4O( z`6l$cs+{zOobvYI*Um866zw^bt+Dih>CFDTtt~=vSq+BB(ROM3aTmWKeREzbrB`4I zqA3Z!HaLy_^&u$#6Hx}{x#)5$OkoeHvt#;?`pV+uN(XX9U z%Q$f69CVFkoaW8+)IG*gG@a8pVIgJ(5<9g_!PHFKY-zS7lbwXO>-5`Ksn&Dw5SHPR zZ6=?+$2{tyGLIEvRluRCWeK=6F*uoRt%vaydRzUh=gIhww#G3#H4~L!iM1YXoNMjF zXEZ!MXvXMm-OTEA1JH=SCixLqf!i>fjs|rT`4ZR$`P`5O7;&ed2LL6Tvy% zm0n~eJQ?LZsno=4$+_gBqdN0^$Fvh#KA!m5D|Y+=tO z(~1S=S@XQpIQ>`_4jy@xQzzVu{PHeVjZh=iD)=+eq*M~= zKTa~sLyAanIdTf$G>^<-E`L@S3BzeHv^*vl&Z5CJU``>1`2;7`G~tp7(KTqbY1fcf z=UaGbBRbgQ`B(QO8CNca3_%)c=@EDf>2%e}$}~FbY*Gc8xOI!+N|*W`J1b{S->Y1<0d;5rMoYDS0BDwK-lBnxSu3vRZ9nQ{6JZ?@sSO^o!qEto- zRfH%Znsj7qxON=b^#pXRB)EJpSVgihkomGyAx#)6j6fGo7bXak(HS#@*`#7KuX9Q~ z3iY>+*Z>DsKpQheTZ|!>(^_mR#)*H76t4LL?it7)I6ckjXL0aWr;jC*Rd@QA)4MWIg0s+5os7DZPj~v1 z)1y43^PS!l%`~LIBxDRzka0{vCgCt7Gx?ZCMkt+$#|-?xEI9re5?DF#?E|pVe9{LV zrt~6E6QY^U6PV14!LN_wU4SH#S;mUnUzmj(jKE#{fNv`Ao z{PzSiU1yo-3TB=wf>cZtvs?|BwgGzf0wqM}t$ieQ6R+T`M>(+Tx7Iqa=b_q8)OXG zt`GA&mGwrjg;ROMu4_IzjOwy@_?{eTqpMgC5YPY!qA8tjf@+P4S+ zI84>)y;a=K%YPFS;f(fru8t>N`8MYiGo?JxB#{mG>Q-HHk1B z1uEKovm@Spqa&5KInr^?oZ66uBH?Heg3I42U@m zRJ?}wkxrnwH*oQ69I9ub=9w%GMeEF94kC+JBsLVG%>pqDgc(KNHQ7at4py9pcbV(X zc~l|YtH_3{v?ZakB{QR!in8WOitrThfTmD9$rO7X*nKB&Ipy)K1-LiCyx){il()S) z6ua2X;;!L6o)7un9BC)tyyuGVUO2xdTCP((y>jJVo8rzQ{yAFWf4^@l?rR@cuaW%! zz55@M2*_b(@b?wqY>AdyqNTc%%K34SN&3Tx(CoRH#&-tud!Nc4a_#9=$(N!E(#nDt8MI`~}tvkM3GB4Gn zlFJxDCvrTu4BYKZw;!!^)euJuag-282XRyoM+0#b5J&%Tv=2x5h+#sbE&a;r77n&? z^bSYuaI_Amdu1@Kk;&vtHooxhyTdVF?TCPBwZ=0_!v)S}#xq|oi@y_#kCTcHy_lT+ z36NMF=FAh(iL=mvkEy}T!P~gA19?#_lhkV-xtu86m}GpGdAc*PxCZoa*6^f9xcQkq z#cvcA{N{zi7!;-m*H;phER^P)B3w7^cdtDDliBCt3>8qxg2@0y@@LjT^;K|zVsU`t zaeunw{0wB`d?;Ts!JSKL?TaDTlg$e&|fx&kxq2gqOMUwknF&p*P|Bs{`D zwYWlEEDf~a>{5EMH#!^S;Oy06_YJD!OcS3Levc4pU4Dt zY56AkX3~-s<=c4G@^<+S{P;#pw@I=lTVyAjlkK{PS+@sp=N~3R*$s!jH>vUgyq!2$ zeqMf&iR6)FD#tO=GgY3!M8q6kvsp-@WU0Jd{($!@Hj#AMMlx+TY59HfA^E6$oUF-d zW>L?{k$87k>)c&ix6S>{djw~T-dl{oLC9oBSK=FN1qts_^T5Cbq^5(JnU5rCQ-?Pu z6i!hrdB%9=