From 41b1ee58a041131ff97582c8b02c53ba9179ca6f Mon Sep 17 00:00:00 2001 From: Robert Konrad Date: Fri, 27 Sep 2024 09:32:17 +0200 Subject: [PATCH] Fix 06 to 15 --- 06_render_targets/Sources/main.c | 4 +- 06_render_targets/reference.png | Bin 0 -> 21737 bytes 07_multiple_render_targets/Sources/main.c | 25 ++++++----- 07_multiple_render_targets/reference.png | Bin 0 -> 23075 bytes 08_float_render_targets/Sources/main.c | 19 +++++---- 08_float_render_targets/reference.png | Bin 0 -> 21737 bytes 09_depth_render_targets/Sources/main.c | 12 +++--- 09_depth_render_targets/reference.png | Bin 0 -> 21740 bytes 10_cubemap/Sources/main.c | 12 +++--- 10_cubemap/reference.png | Bin 0 -> 23800 bytes 11_instanced_rendering/Sources/main.c | 5 ++- 11_instanced_rendering/reference.png | Bin 0 -> 22613 bytes 12_set_render_target_depth/Sources/main.c | 12 +++--- 12_set_render_target_depth/reference.png | Bin 0 -> 21740 bytes 13_generate_mipmaps/Sources/main.c | 28 +++++++++---- 13_generate_mipmaps/reference.png | Bin 0 -> 20432 bytes 14_set_mipmap/Sources/main.c | 49 +++++++++++++++++----- 14_set_mipmap/reference.png | Bin 0 -> 31724 bytes 15_deinterleaved_buffers/Sources/main.c | 13 ++++-- 15_deinterleaved_buffers/reference.png | Bin 0 -> 26309 bytes 20 files changed, 120 insertions(+), 59 deletions(-) create mode 100644 06_render_targets/reference.png create mode 100644 07_multiple_render_targets/reference.png create mode 100644 08_float_render_targets/reference.png create mode 100644 09_depth_render_targets/reference.png create mode 100644 10_cubemap/reference.png create mode 100644 11_instanced_rendering/reference.png create mode 100644 12_set_render_target_depth/reference.png create mode 100644 13_generate_mipmaps/reference.png create mode 100644 14_set_mipmap/reference.png create mode 100644 15_deinterleaved_buffers/reference.png diff --git a/06_render_targets/Sources/main.c b/06_render_targets/Sources/main.c index d6964e7..6fbe49a 100644 --- a/06_render_targets/Sources/main.c +++ b/06_render_targets/Sources/main.c @@ -16,8 +16,8 @@ static vertex_in_buffer vertices; static kope_g5_buffer indices; static kope_g5_texture render_target; -static const uint32_t width = 1024; -static const uint32_t height = 768; +static const uint32_t width = 800; +static const uint32_t height = 600; static void update(void *data) { kope_g5_render_pass_parameters parameters = {0}; diff --git a/06_render_targets/reference.png b/06_render_targets/reference.png new file mode 100644 index 0000000000000000000000000000000000000000..bfde23a14e396b91f2e2a7c8de14fe1f5909fc6e GIT binary patch literal 21737 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 ZUO%0T$*6v~)dBy-yf!@Q^N9E*{|}W!|Fr-B literal 0 HcmV?d00001 diff --git a/08_float_render_targets/Sources/main.c b/08_float_render_targets/Sources/main.c index 9640c0d..f9d18fe 100644 --- a/08_float_render_targets/Sources/main.c +++ b/08_float_render_targets/Sources/main.c @@ -18,8 +18,8 @@ static kope_g5_texture float_render_target; static kope_g5_texture render_target; // intermediate target because D3D12 doesn't seem to like uav framebuffer access static compute_set set; -const static int width = 1024; -const static int height = 768; +const static int width = 800; +const static int height = 600; static void update(void *data) { kope_g5_render_pass_parameters parameters = {0}; @@ -143,11 +143,16 @@ int kickstart(int argc, char **argv) { } compute_parameters cparams = {0}; - cparams.copy_source_texture = &float_render_target; - cparams.copy_source_texture_highest_mip_level = 0; - cparams.copy_source_texture_mip_count = 1; - cparams.copy_destination_texture = &render_target; - cparams.copy_destination_texture_mip_level = 0; + cparams.copy_source_texture.texture = &float_render_target; + cparams.copy_source_texture.base_mip_level = 0; + cparams.copy_source_texture.mip_level_count = 1; + cparams.copy_source_texture.base_array_layer = 0; + cparams.copy_source_texture.array_layer_count = 1; + cparams.copy_destination_texture.texture = &render_target; + cparams.copy_destination_texture.base_mip_level = 0; + cparams.copy_destination_texture.mip_level_count = 1; + cparams.copy_destination_texture.base_array_layer = 0; + cparams.copy_destination_texture.array_layer_count = 1; kong_create_compute_set(&device, &cparams, &set); kinc_start(); diff --git a/08_float_render_targets/reference.png b/08_float_render_targets/reference.png new file mode 100644 index 0000000000000000000000000000000000000000..bfde23a14e396b91f2e2a7c8de14fe1f5909fc6e GIT binary patch literal 21737 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 literal 0 HcmV?d00001 diff --git a/10_cubemap/Sources/main.c b/10_cubemap/Sources/main.c index 2b397dc..22d1715 100644 --- a/10_cubemap/Sources/main.c +++ b/10_cubemap/Sources/main.c @@ -19,8 +19,8 @@ static kope_g5_texture render_target; static kope_g5_sampler sampler; static fs_set set; -static const uint32_t width = 1024; -static const uint32_t height = 768; +static const uint32_t width = 800; +static const uint32_t height = 600; static void update(void *data) { { @@ -160,9 +160,11 @@ int kickstart(int argc, char **argv) { kope_g5_device_create_sampler(&device, &sampler_params, &sampler); fs_parameters fs_params = {0}; - fs_params.fs_texture = &render_target; - fs_params.fs_texture_highest_mip_level = 0; - fs_params.fs_texture_mip_count = 1; + fs_params.fs_texture.texture = &render_target; + fs_params.fs_texture.base_mip_level = 0; + fs_params.fs_texture.mip_level_count = 1; + fs_params.fs_texture.base_array_layer = 0; + fs_params.fs_texture.array_layer_count = 1; fs_params.fs_sampler = &sampler; kong_create_fs_set(&device, &fs_params, &set); diff --git a/10_cubemap/reference.png b/10_cubemap/reference.png new file mode 100644 index 0000000000000000000000000000000000000000..d04e2e33a0b17f8733ab5a29d2ee2c3f88ba5128 GIT binary patch literal 23800 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 G7XLqnQ7h{J literal 0 HcmV?d00001 diff --git a/11_instanced_rendering/Sources/main.c b/11_instanced_rendering/Sources/main.c index e2330f9..a90f67a 100644 --- a/11_instanced_rendering/Sources/main.c +++ b/11_instanced_rendering/Sources/main.c @@ -17,6 +17,9 @@ static vertex_in_buffer vertices; static vertex_offset_in_buffer vertices_inst; static kope_g5_buffer indices; +static const int width = 800; +static const int height = 600; + static void update(void *data) { kope_g5_texture *framebuffer = kope_g5_device_get_framebuffer(&device); @@ -54,7 +57,7 @@ static void update(void *data) { } int kickstart(int argc, char **argv) { - kinc_init("Example", 1024, 768, NULL, NULL); + kinc_init("Example", width, height, NULL, NULL); kinc_set_update_callback(update, NULL); kope_g5_device_wishlist wishlist = {0}; diff --git a/11_instanced_rendering/reference.png b/11_instanced_rendering/reference.png new file mode 100644 index 0000000000000000000000000000000000000000..19608189104af54d24866790683eedaac59a3877 GIT binary patch literal 22613 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 nk|R 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 literal 0 HcmV?d00001 diff --git a/12_set_render_target_depth/Sources/main.c b/12_set_render_target_depth/Sources/main.c index 436db5b..2dbf9c0 100644 --- a/12_set_render_target_depth/Sources/main.c +++ b/12_set_render_target_depth/Sources/main.c @@ -20,8 +20,8 @@ static kope_g5_texture target_depth; static kope_g5_sampler sampler; static fs_set set; -static const int width = 1024; -static const int height = 768; +static const int width = 800; +static const int height = 600; static void update(void *data) { { @@ -106,9 +106,11 @@ int kickstart(int argc, char **argv) { kope_g5_device_create_sampler(&device, &sampler_params, &sampler); fs_parameters set_parameters = {0}; - set_parameters.fs_texture = &target_depth; - set_parameters.fs_texture_highest_mip_level = 0; - set_parameters.fs_texture_mip_count = 1; + set_parameters.fs_texture.texture = &target_depth; + set_parameters.fs_texture.base_mip_level = 0; + set_parameters.fs_texture.mip_level_count = 1; + set_parameters.fs_texture.base_array_layer = 0; + set_parameters.fs_texture.array_layer_count = 1; set_parameters.fs_sampler = &sampler; kong_create_fs_set(&device, &set_parameters, &set); diff --git a/12_set_render_target_depth/reference.png b/12_set_render_target_depth/reference.png new file mode 100644 index 0000000000000000000000000000000000000000..f9fd95209790d9f686aaf193f37e463f433c603d GIT binary patch literal 21740 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 literal 0 HcmV?d00001 diff --git a/13_generate_mipmaps/Sources/main.c b/13_generate_mipmaps/Sources/main.c index 81c2345..47f8bba 100644 --- a/13_generate_mipmaps/Sources/main.c +++ b/13_generate_mipmaps/Sources/main.c @@ -20,6 +20,9 @@ static kope_g5_sampler sampler; static fs_set set; static mip_set mip_sets[4]; +static const int width = 800; +static const int height = 600; + static void update(void *data) { { kope_g5_render_pass_parameters parameters = {0}; @@ -100,7 +103,7 @@ static void update(void *data) { } int kickstart(int argc, char **argv) { - kinc_init("Example", 1024, 768, NULL, NULL); + kinc_init("Example", width, height, NULL, NULL); kinc_set_update_callback(update, NULL); kope_g5_device_wishlist wishlist = {0}; @@ -176,19 +179,26 @@ int kickstart(int argc, char **argv) { } fs_parameters fsparams = {0}; - fsparams.fs_texture = &render_target; - fsparams.fs_texture_highest_mip_level = 0; - fsparams.fs_texture_mip_count = 5; + fsparams.fs_texture.texture = &render_target; + fsparams.fs_texture.base_mip_level = 0; + fsparams.fs_texture.mip_level_count = 5; + fsparams.fs_texture.base_array_layer = 0; + fsparams.fs_texture.array_layer_count = 1; fsparams.fs_sampler = &sampler; kong_create_fs_set(&device, &fsparams, &set); for (int i = 0; i < 4; ++i) { mip_parameters cparams = {0}; - cparams.mip_source_texture = &render_target; - cparams.mip_source_texture_highest_mip_level = i; - cparams.mip_source_texture_mip_count = 1; - cparams.mip_destination_texture = &render_target; - cparams.mip_destination_texture_mip_level = i + 1; + cparams.mip_source_texture.texture = &render_target; + cparams.mip_source_texture.base_mip_level = i; + cparams.mip_source_texture.mip_level_count = 1; + cparams.mip_source_texture.base_array_layer = 0; + cparams.mip_source_texture.array_layer_count = 1; + cparams.mip_destination_texture.texture = &render_target; + cparams.mip_destination_texture.base_mip_level = i + 1; + cparams.mip_destination_texture.mip_level_count = 1; + cparams.mip_destination_texture.base_array_layer = 0; + cparams.mip_destination_texture.array_layer_count = 1; kong_create_mip_set(&device, &cparams, &mip_sets[i]); } diff --git a/13_generate_mipmaps/reference.png b/13_generate_mipmaps/reference.png new file mode 100644 index 0000000000000000000000000000000000000000..d295a89f5466e5d381000d9de09037be117eb434 GIT binary patch literal 20432 zcmeHPdr(t%7QTrYyg;G>T!jRc2xZ+?D~o~p+BOn4KwT_8+GVC{gQeSRkxF-1%TlcY zF^H4!sI%2losC}V`l=J%cB@XUsi2khv5AUOI@=L-cM-9RJ9M-UWzX+Ea_BX#z| zq9rfp8jW}Ukq~0g8?`d}p%5qDYW>a-{&ksk$9|VGQc=P@U}o$*G0|dn5V-dT>`037 zgJFra7kPh;`@86>ZM2jeTkUE{R!K=sg13hjNmS;rUfxql>!-*JFY62ozV6k8f6^v2 z52Oj%hS)!_XrWKFp%E{2x{PW!QjrQtVv4aa_#$y2iuWQ5Bn7GMdEBy6XNdTsw~yi= zhUaP(-jRk|AU~>%+zMbd^$J#DXo+jYNn$DAErhyk5T`aOqq?i$d)-D=$2;1esxz(Hg&&!%ui6IlPYYvieKjzT&4->Fh=ZLkl`$&lja{S+f|M-VgkbW@17^S%3HbC+}y{$;wXd^EYgV#Ac-OgZ*Lp5GO=YI|3dw8v z+RKJT;Dhy_<&f8N-Kh{8Cne|D4H5Njpgp_^^9AP@jV$Wc`L6B2!lcK^l3%K%vXq!Y zZ5fxyCWe%_9?2$y2{(WOLT1qWL0#|zHIsbq&WpUEU zcfzNU6E;BqturHRq&7pF7qgAyr*~8IojkWiQOE> z^&lgn${P?0(@WaD?2U^7aYfrqJ=>|0ZX;XS_EsN9sgWDo1D%}q+<>ns|wS$lMnO}!-THBF4GI%M& zL3S#odm0mBmus(4CB?iNw>MHeI%s?RIKWO5t9{%1QxTSGgKh3IMzYy``im^ z>s~jb1C;=#9+P0|v4R3p2jVFV%%#zuT#pqG0xrunD<_V#nmE7?=t1f0pq$LSh$hG_ z?sr*~9+)5xj#4W+T;@-9bz70hw>gh2dCEOw&|OkyXKv4jsmE0Gny!i7s>ouCi~9#z zPAyuE2Y!9P7sF#mqUs`r!G+M0D=r5wD!Wj*O{3l$2I#;xMsR^2r$V1(Dq|j zK$nKogWbl}eq1#CYOpJ(HknO%q)V`F96JrByKT4at_z7O=~|HR(Te2p9yQ~EiS&Rg z%|014F-o%>DJu#=ysD&e>%awzU=vLVy%|!Pxh*!96*IpfngxBLn%{pxr5{Y-dfTj- zu&b=?Y#~Oms{)J|>ePalt0P$t5V8v0OVT*!MK5&odz+aE^X{{Va zyv}h$0 zw7-166(w8!&?`}t^Wh%vfW?9I_ZFk|DSCqI;c2FF=qsY-yXg^lOy8xbL9qHL&M1wt z;_KZ+L--irdqEdIbeXtw9E@awMv=dV%~JW8a_fnyE?Q>ZALt|oJ4Iwij7Ntyl6o*c zh{+B#+^t*&Z=r!2yLaH(oIJqcjebZo$b^S{yjj!)2mZnJ?sWNz%*0u%^R+o1Z7<_& z*xS(kF5OvXy_^*dXXVeN@ROfFx(XE366e<+F4ER`KUIqT2@O2rD&VjSsC*3pFB2en zWn_8h#W+{QB}2sL9%X}hD$hbk*1ojogg=j*_VZW!PEvd^*BAM61YeloNL+LboY2)v zMNkHpIK!eBP+$i9345xsUEcbBhI#EiYkaL2zK5#q38=QIN7pIN+0j>moY^sy<|0v= zll0KY2XxYN#JDN@}TK+0DtB;gb(0*PiRaNZ6A%aPG7zw`~Ne z-&}>(nVb9WgQD9S;w04%z8S~3t$fplv;}9qR}B~nEe6I{ZN81x3M>LH!beWDLmPM> z^bZrzTEU-3eF1CCEwIMywdbHDsxFiY$CztcNfg|E4eY=NHyqZRRM)a_mTEfRrv%Pc zpD0VYet8c9>om0iDR`IpHBlEBBszg1GsxUsS9GI=c$C-6dP<)XBidXZMePl2?WH0s z#1R=B8nXBT?$zk<6)De*vu^1PDqt`%Q|Xgdy=Th+`HlxHv~G3fJEIStf^X`>GJZWb Jbzh3H^#4=W3f%wz literal 0 HcmV?d00001 diff --git a/14_set_mipmap/Sources/main.c b/14_set_mipmap/Sources/main.c index 539436f..562c294 100644 --- a/14_set_mipmap/Sources/main.c +++ b/14_set_mipmap/Sources/main.c @@ -21,13 +21,16 @@ static fs_set set; static kope_g5_buffer image_buffer0; static kope_g5_buffer image_buffer1; +static const int width = 800; +static const int height = 600; + static bool first = true; static void update(void *data) { if (first) { { kope_g5_image_copy_buffer source = {0}; - source.bytes_per_row = 512 * 4; + source.bytes_per_row = kope_g5_device_align_texture_row_bytes(&device, 512 * 4); source.buffer = &image_buffer0; kope_g5_image_copy_texture destination = {0}; @@ -39,7 +42,7 @@ static void update(void *data) { { kope_g5_image_copy_buffer source = {0}; - source.bytes_per_row = 256 * 4; + source.bytes_per_row = kope_g5_device_align_texture_row_bytes(&device, 256 * 4); source.buffer = &image_buffer1; kope_g5_image_copy_texture destination = {0}; @@ -90,7 +93,7 @@ static void update(void *data) { } int kickstart(int argc, char **argv) { - kinc_init("Example", 1024, 768, NULL, NULL); + kinc_init("Example", width, height, NULL, NULL); kinc_set_update_callback(update, NULL); kope_g5_device_wishlist wishlist = {0}; @@ -102,25 +105,49 @@ int kickstart(int argc, char **argv) { { kope_g5_buffer_parameters buffer_parameters; - buffer_parameters.size = 512 * 512 * 4; + buffer_parameters.size = kope_g5_device_align_texture_row_bytes(&device, 512 * 4) * 512; buffer_parameters.usage_flags = KOPE_G5_BUFFER_USAGE_CPU_WRITE; kope_g5_device_create_buffer(&device, &buffer_parameters, &image_buffer0); + // kinc_image can not load images with row-alignment directly because stb_image doesn't support that :-( + uint32_t *image_data = (uint32_t *)malloc(512 * 4 * 512); + assert(image_data != NULL); + kinc_image_t image; - kinc_image_init_from_file(&image, kope_g5_buffer_lock(&image_buffer0), "uvtemplate.png"); + kinc_image_init_from_file(&image, image_data, "uvtemplate.png"); kinc_image_destroy(&image); + + uint32_t stride = kope_g5_device_align_texture_row_bytes(&device, 512 * 4) / 4; + uint32_t *gpu_image_data = (uint32_t *)kope_g5_buffer_lock(&image_buffer0); + for (int y = 0; y < 512; ++y) { + for (int x = 0; x < 512; ++x) { + gpu_image_data[y * stride + x] = image_data[y * 512 + x]; + } + } kope_g5_buffer_unlock(&image_buffer0); } { kope_g5_buffer_parameters buffer_parameters; - buffer_parameters.size = 256 * 256 * 4; + buffer_parameters.size = kope_g5_device_align_texture_row_bytes(&device, 256 * 4) * 256; buffer_parameters.usage_flags = KOPE_G5_BUFFER_USAGE_CPU_WRITE; kope_g5_device_create_buffer(&device, &buffer_parameters, &image_buffer1); + // kinc_image can not load images with row-alignment directly because stb_image doesn't support that :-( + uint32_t *image_data = (uint32_t *)malloc(256 * 4 * 256); + assert(image_data != NULL); + kinc_image_t image; - kinc_image_init_from_file(&image, kope_g5_buffer_lock(&image_buffer1), "uvtemplate2.png"); + kinc_image_init_from_file(&image, image_data, "uvtemplate2.png"); kinc_image_destroy(&image); + + uint32_t stride = kope_g5_device_align_texture_row_bytes(&device, 256 * 4) / 4; + uint32_t *gpu_image_data = (uint32_t *)kope_g5_buffer_lock(&image_buffer1); + for (int y = 0; y < 256; ++y) { + for (int x = 0; x < 256; ++x) { + gpu_image_data[y * stride + x] = image_data[y * 256 + x]; + } + } kope_g5_buffer_unlock(&image_buffer1); } @@ -171,9 +198,11 @@ int kickstart(int argc, char **argv) { } fs_parameters fsparams = {0}; - fsparams.fs_texture = &texture; - fsparams.fs_texture_highest_mip_level = 0; - fsparams.fs_texture_mip_count = 2; + fsparams.fs_texture.texture = &texture; + fsparams.fs_texture.base_mip_level = 0; + fsparams.fs_texture.mip_level_count = 2; + fsparams.fs_texture.base_array_layer = 0; + fsparams.fs_texture.array_layer_count = 1; fsparams.fs_sampler = &sampler; kong_create_fs_set(&device, &fsparams, &set); diff --git a/14_set_mipmap/reference.png b/14_set_mipmap/reference.png new file mode 100644 index 0000000000000000000000000000000000000000..a2a53322a21c855b3a0f6f9066f1700aa313c47e GIT binary patch literal 31724 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 literal 0 HcmV?d00001 diff --git a/15_deinterleaved_buffers/Sources/main.c b/15_deinterleaved_buffers/Sources/main.c index 23a65ca..37c821e 100644 --- a/15_deinterleaved_buffers/Sources/main.c +++ b/15_deinterleaved_buffers/Sources/main.c @@ -26,6 +26,9 @@ static kope_g5_buffer constants; static kope_g5_sampler sampler; static everything_set everything; +static const int width = 800; +static const int height = 600; + /* clang-format off */ static float vertices_data[] = { -1.0,-1.0,-1.0, @@ -252,7 +255,7 @@ static void update(void *data) { } int kickstart(int argc, char **argv) { - kinc_init("Example", 1024, 768, NULL, NULL); + kinc_init("Example", width, height, NULL, NULL); kinc_set_update_callback(update, NULL); kope_g5_device_wishlist wishlist = {0}; @@ -334,9 +337,11 @@ int kickstart(int argc, char **argv) { { everything_parameters parameters; parameters.constants = &constants; - parameters.tex = &texture; - parameters.tex_highest_mip_level = 0; - parameters.tex_mip_count = 1; + parameters.tex.texture = &texture; + parameters.tex.base_mip_level = 0; + parameters.tex.mip_level_count = 1; + parameters.tex.base_array_layer = 0; + parameters.tex.array_layer_count = 1; parameters.sam = &sampler; kong_create_everything_set(&device, ¶meters, &everything); } diff --git a/15_deinterleaved_buffers/reference.png b/15_deinterleaved_buffers/reference.png new file mode 100644 index 0000000000000000000000000000000000000000..098602d55f3ce4d06e875b1fff04d85358c6ba16 GIT binary patch literal 26309 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 z zI#a>d_u5%#ksq-+`P$P}##>*9j#KjaWlwDCKP|8L$8kOuB8?x^zlSI`l0R?Sm))oCT$TqVlC| z^W?hN*)|h**REX++|$>9eSZw`pi(P$q|H!dulM2^d_kYC0)05Zf>=0#KaPv=?pJy6 zQLEOR8MGsgqrDZLbZP#vP8%lEtAEOZ^a+U`>g=bqm+=|HdeDm|LqOWBsWy^vQ?L% z+bM%yWEEwW=O|mOHXHMlQKBO%pAetOPi|j!-qQ#!EmW8OHS>wc~YbFp5Uyhj;E`h z_ibMs5NDA&n^e%$fOOPF4VD5;S`mT{-D=-g0>iDFd>>47 zWOi+Ii_d#vG?_?@W88R{zizvz?U6B&INX;gHvFCU5oqV%D9c8AqwZ=i(p5uywEPu& z7VBK)Sy0AePK>0?)O|97{)kXBnf-;3?)#f;;nwt1jJw#qn4X1g1y%XhzQz2h!I5jf z*tCY)7>t~kV7V~LWqts>KKv$5Q3t%f4Vcnf-|E7Q5QaS?XNxLEP?Db!1I)8+VrUfQ z1g|bW;$2N1{LqH+eQ_(STOdtbbXMLl#hH{8PT}3jAjwx%iv8pYrINM=L zk(FD^uG~gx4uIHGsa=f}X;R4iJPP)aj;Wn%S!ABgnRnuwW`Cxy>lFY+Y=*6g>kujX zQ4wjXpbY$;akFf7T>~$c9o+jB(T*puBEuq3spw1%lp!j}=v0j0li6p?oSD*l#zrm8 zlUqt@b#MY16n^2@_%uzC25SXQ<6B7&VdsB~trzgeEe`xz_Z+#z6gV{k@=1srQ&2Pp zjphC5HGI{vC`)4B6#u*kK!5 z<__i_L`!b1C5lUDf*H$ig^T822)iYh-kf@RgN&w9E!DO@6v#VbV0>G90VgiM4Cvex zUBVDIpKqYi`b{BkU7zb2xijh3HAFMcXr*-n;;%+^xxyqc$qJh04Or0?P<%PKRsz~l zarH}YW@L-n8tsW<1pd!!U+Dw&H$+wRpfdt($FzR5Eg`xL{-gt=DWZi3l@I9A;(mXf2eb2 zRPC=|uqEpNm=Z9;SL?P~=br5(lMAw`R97{V>98gXc!ISbHPR+uMs3#adv-mGL_Qs) zD0?Yv-S*c^xe-anetuO3tpI3@saC|A*MOF2Yy^(9E5SaSGwjf5WKj5%ZXsnn0(x;n z`_MEX;CNc)RJ|c_vNvw?hiFB(1^QQQt5diQtV^fOza9zT{HJf%A!*LIf}FzWc~983 z7ZL40t+8_vXr`j#)n*!2!p&F;|1Q0WL%i&3H1 zg)qWZo8T0}UV5Xp6A=rlF+rsFxXlP-w`dumhB?+9ZDxRh2{hZruv&FgTPNW&PD|;3zr9LyNAA}=l8;dCqNO|@BI7bGgXy3n8bpc$Z%zVj&~RDQ_Fpf| zCXWJ?KO~b;eriootl{S;txX)HP)iHY;M-NZQLcuY-_03J-_NoSN0n5g;(X9ZLpmpS zzEeaNGw5;*eExp?)2nDMDuE4R~@`#0!wE`+G@V96|OpR z7s`M;+O1dwHqct|jY3_mAu7PsLL7%T$yzpVCF+cj9~kh87yzCQbQ&9IkC+W!$_-Me zy|YzaS|9zl?|6vZt1>#Yb_PO*l%&|!f#OaUI z`YtdPR|oC1SYxMDB7^-W;3@H)s!Pj3u<9jT1&c9YsU3Lm)@6kF(^|m-8=nJHtR}7Y z$tdjCDPQ{g4~%-8i4cdrm<0!}jzQSEswHkuD#pVZC2l2}C4Ns8k#_*Te;`!MU{A9T zM{=5BKODOp9;^L8Cb@w^Z#+RQcux)N)9RB24sQZ%x=O3`;P)rNHzluzv94(K7jQZp z1Q6rG^m2aR&jO=%Qj5FH26aS$B`(Gdo%|N8