From 11cdb8b2095d7782c215ab4093d54b3290dc124c Mon Sep 17 00:00:00 2001 From: Michel Pollet Date: Mon, 13 May 2024 16:31:58 +0100 Subject: [PATCH] Version 1.9: See Changelog for details List is too long... Signed-off-by: Michel Pollet --- CHANGELOG.md | 34 +- Makefile | 59 +- README.md | 16 +- contrib/mii-icon-64.h | 584 -------- docs/screen/v19artifacts.png | Bin 0 -> 36753 bytes docs/screen/v19mega2.png | Bin 0 -> 293979 bytes docs/screen/v19ntsc.png | Bin 0 -> 301119 bytes libmui/.gitignore | 8 + libmui/CHANGELOG.md | 15 + libmui/LICENSE | 21 + libmui/Makefile | 117 +- libmui/Makefile.common | 73 + libmui/README.md | 55 +- libmui/contrib/bsd_queue.h | 860 ++++++++++++ libmui/contrib/incbin.h | 379 +++++ libmui/doc/alert.png | Bin 0 -> 20342 bytes libmui/doc/control_demo.png | Bin 0 -> 52250 bytes libmui/doc/standard_get_file.png | Bin 0 -> 40064 bytes libmui/doc/static_text.png | Bin 0 -> 45306 bytes libmui/doc/widgets.gif | Bin 0 -> 392966 bytes libmui/fonts/Charcoal_mui.sfd | 113 +- libmui/fonts/Charcoal_mui.ttf | Bin 55172 -> 55256 bytes ...ple2e_original_font_MotterTekturaRetro.otf | Bin 23032 -> 0 bytes libmui/fonts/typicon.ttf | Bin 100352 -> 100484 bytes libmui/fonts/typicons.sfd | 71 +- libmui/mui/mui_cdef_scrollbar.c | 366 ----- .../mui_shell.c} | 269 ++-- libmui/mui_shell/mui_shell_plugin.h | 42 + libmui/{mui => src}/c2_arrays.c | 0 libmui/{mui => src}/c2_arrays.h | 0 libmui/{mui => src}/c2_geometry.c | 4 +- libmui/{mui => src}/c2_geometry.h | 0 libmui/{mui => src}/c2_geometry_inline.h | 0 libmui/{mui => src}/c2_geometry_poly.h | 2 +- libmui/{mui => src}/c_array.h | 0 libmui/{mui => src}/cg.c | 62 +- libmui/{mui => src}/cg.h | 0 libmui/{mui => src}/mui.c | 41 +- libmui/{mui => src}/mui.h | 277 ++-- libmui/{mui => src}/mui_alert.c | 0 libmui/{mui => src}/mui_cdef_boxes.c | 0 libmui/{mui => src}/mui_cdef_buttons.c | 22 +- libmui/{mui => src}/mui_cdef_drawable.c | 0 libmui/{mui => src}/mui_cdef_listbox.c | 53 +- libmui/src/mui_cdef_scrollbar.c | 517 +++++++ libmui/{mui => src}/mui_cdef_textedit.c | 137 +- libmui/{mui => src}/mui_controls.c | 87 +- libmui/{mui => src}/mui_drawable.c | 0 libmui/{mui => src}/mui_font.c | 39 +- libmui/{mui => src}/mui_menus.c | 91 +- libmui/{mui => src}/mui_menus_draw.c | 49 +- libmui/{mui => src}/mui_priv.h | 16 +- libmui/{mui => src}/mui_stdfile.c | 230 +++- libmui/{mui => src}/mui_utils.c | 2 +- libmui/{mui => src}/mui_window.c | 33 +- libmui/{mui => src}/stb_truetype.h | 0 libmui/{mui => src}/stb_ttc.h | 0 libmui/{mui => src}/xft.c | 0 libmui/{mui => src}/xft.h | 0 libmui/tests/Makefile | 19 + libmui/tests/mii_ui/Makefile | 39 + libmui/tests/mii_ui/README.md | 4 + .../{ui_tests.c => mii_ui/mii_ui_tests.c} | 84 +- libmui/tests/mui_plugin.h | 33 - libmui/tests/mui_widgets_demo/Makefile | 24 + .../tests/mui_widgets_demo/mui_color_apple.h | 110 ++ .../tests/mui_widgets_demo/mui_widgets_demo.c | 600 ++++++++ libmui/utils/png2raw.c | 108 ++ src/drivers/mii_disk2.c | 42 +- src/drivers/mii_epromcard.c | 4 +- src/drivers/mii_mb.c | 171 +++ src/drivers/mii_mouse.c | 20 +- src/drivers/mii_smartport.c | 123 +- src/drivers/mockingboard.c | 1217 +++++++++++++++++ src/drivers/mockingboard.h | 141 ++ src/format/mii_floppy.c | 18 +- src/format/mii_floppy.h | 4 +- src/mii.c | 236 +++- src/mii.h | 27 +- src/mii_65c02.c | 36 +- src/mii_65c02.h | 31 +- src/mii_argv.c | 2 +- src/mii_bank.c | 37 +- src/mii_bank.h | 7 + src/mii_mish.c | 106 +- src/mii_slot.h | 3 - src/mii_speaker.c | 7 +- src/mii_speaker.h | 40 +- src/mii_vcd.c | 2 +- src/mii_video.c | 1027 +++++++++++--- src/mii_video.h | 93 +- ui_gl/mii_emu_gl.c | 140 +- ui_gl/mii_icon64.h | 524 +++++++ ui_gl/mii_mui.h | 7 +- ui_gl/mii_mui_1mb.c | 16 +- ui_gl/mii_mui_2dsk.c | 94 +- ui_gl/mii_mui_about.c | 8 +- ui_gl/mii_mui_apple_logo.h | 9 +- ui_gl/mii_mui_gl.c | 412 +++--- ui_gl/mii_mui_loadbin.c | 124 +- ui_gl/mii_mui_menus.c | 36 +- ui_gl/mii_mui_menus.h | 16 +- ui_gl/mii_mui_prefs.c | 0 ui_gl/mii_mui_settings.c | 35 +- ui_gl/mii_mui_settings.h | 7 +- ui_gl/mii_mui_slots.c | 7 +- ui_gl/mii_mui_ssc.c | 64 +- ui_gl/mii_mui_utils.c | 70 + ui_gl/mii_mui_utils.h | 23 + ui_gl/mii_thread.c | 290 ++-- ui_gl/mii_thread.h | 10 +- 111 files changed, 8441 insertions(+), 2610 deletions(-) delete mode 100644 contrib/mii-icon-64.h create mode 100644 docs/screen/v19artifacts.png create mode 100644 docs/screen/v19mega2.png create mode 100644 docs/screen/v19ntsc.png create mode 100644 libmui/.gitignore create mode 100644 libmui/CHANGELOG.md create mode 100644 libmui/LICENSE create mode 100644 libmui/Makefile.common create mode 100644 libmui/contrib/bsd_queue.h create mode 100644 libmui/contrib/incbin.h create mode 100644 libmui/doc/alert.png create mode 100644 libmui/doc/control_demo.png create mode 100644 libmui/doc/standard_get_file.png create mode 100644 libmui/doc/static_text.png create mode 100644 libmui/doc/widgets.gif delete mode 100644 libmui/fonts/apple2e_original_font_MotterTekturaRetro.otf delete mode 100644 libmui/mui/mui_cdef_scrollbar.c rename libmui/{tests/mui_playground.c => mui_shell/mui_shell.c} (75%) create mode 100644 libmui/mui_shell/mui_shell_plugin.h rename libmui/{mui => src}/c2_arrays.c (100%) rename libmui/{mui => src}/c2_arrays.h (100%) rename libmui/{mui => src}/c2_geometry.c (99%) rename libmui/{mui => src}/c2_geometry.h (100%) rename libmui/{mui => src}/c2_geometry_inline.h (100%) rename libmui/{mui => src}/c2_geometry_poly.h (98%) rename libmui/{mui => src}/c_array.h (100%) rename libmui/{mui => src}/cg.c (98%) rename libmui/{mui => src}/cg.h (100%) rename libmui/{mui => src}/mui.c (93%) rename libmui/{mui => src}/mui.h (83%) rename libmui/{mui => src}/mui_alert.c (100%) rename libmui/{mui => src}/mui_cdef_boxes.c (100%) rename libmui/{mui => src}/mui_cdef_buttons.c (93%) rename libmui/{mui => src}/mui_cdef_drawable.c (100%) rename libmui/{mui => src}/mui_cdef_listbox.c (88%) create mode 100644 libmui/src/mui_cdef_scrollbar.c rename libmui/{mui => src}/mui_cdef_textedit.c (91%) rename libmui/{mui => src}/mui_controls.c (79%) rename libmui/{mui => src}/mui_drawable.c (100%) rename libmui/{mui => src}/mui_font.c (90%) rename libmui/{mui => src}/mui_menus.c (92%) rename libmui/{mui => src}/mui_menus_draw.c (85%) rename libmui/{mui => src}/mui_priv.h (89%) rename libmui/{mui => src}/mui_stdfile.c (70%) rename libmui/{mui => src}/mui_utils.c (94%) rename libmui/{mui => src}/mui_window.c (95%) rename libmui/{mui => src}/stb_truetype.h (100%) rename libmui/{mui => src}/stb_ttc.h (100%) rename libmui/{mui => src}/xft.c (100%) rename libmui/{mui => src}/xft.h (100%) create mode 100644 libmui/tests/Makefile create mode 100644 libmui/tests/mii_ui/Makefile create mode 100644 libmui/tests/mii_ui/README.md rename libmui/tests/{ui_tests.c => mii_ui/mii_ui_tests.c} (68%) delete mode 100644 libmui/tests/mui_plugin.h create mode 100644 libmui/tests/mui_widgets_demo/Makefile create mode 100644 libmui/tests/mui_widgets_demo/mui_color_apple.h create mode 100644 libmui/tests/mui_widgets_demo/mui_widgets_demo.c create mode 100644 libmui/utils/png2raw.c create mode 100644 src/drivers/mii_mb.c create mode 100644 src/drivers/mockingboard.c create mode 100644 src/drivers/mockingboard.h create mode 100644 ui_gl/mii_icon64.h delete mode 100644 ui_gl/mii_mui_prefs.c create mode 100644 ui_gl/mii_mui_utils.c create mode 100644 ui_gl/mii_mui_utils.h diff --git a/CHANGELOG.md b/CHANGELOG.md index 5867fa0..1c7b91e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,10 +3,40 @@

# MII Version Changelog +## 1.9 +#### Video + * Video driver now only draw when the apple II video *really* changes. It keeps track of touched lines across the screen, and only updates when needed. This saves a considerable amount of CPU time. + * Redid the monochrome video rendering, low-res, double low-res and dhires + now have luminance based on the color, and not just a fixed value. This + makes the monochrome rendering a lot more accurate (and attractive). + + * Added 2 other RGB color palettes, an alternate NTSC and the Mega2 (apple IIgs) one. + +| NTSC Palette | Mega2 Palette | +|--------------------------------------|--------------------------------------| +| ![NTSC](docs/screen/v19ntsc.png) | ![Mega2](docs/screen/v19mega2.png) | +|--------------------------------------|--------------------------------------| + * Added AVX/SSE/generic vectorial versions of some code paths, for speed. + * Added some more 'artifacts' color frindges to the HIRES rendering as well. + +

+ Artifacts +

+ +#### Other bits + * Fixed a bug in the floppy stepper motor code that was preventing some floppies (demos, but also some prodos disks) from booting. + * Reworked the SmartPort code a bit, should be more compatible with some prodos programs. Also fixed a crash in block reading code. +* Joystick can now be plugged after starting the emulator, it will be detected. +* Changed the way the 65c02 core emulator is interfaced to the rest of the emulation. It was made to be 'pretty' but was also quite suboptimal, so I made it a bit less pretty, but it is now easily twice as fast as before. +* While before the emulator was using perhaps 25% of a core on my current machine, now it uses about 9% CPU for the same task. +* The 'floppy' and 'hard drive' file selector dialog now has a small popup menu with the last few directory used, so you can quickly switch between them. +* Added support for 'pasting' text in the emulator. Paste your pet BASIC programs, it works now. (Control-SHIFT-V -- not in a menu yet). +* There is a non-functional Mockingboard driver in the code, it's not hooked up to the UI, it still needs work (mostly make the audio output work). +* UI library got a massive overhaul, since it was released separately it had to get a serious cleanup. Some files are duplicated unfortunately, but that is needed to be able to use it as a standalone library. + ## 1.8 * Changed the floppy disk view. *It now rotates*, and the heat map is now a - 'trail' of the head, showing where it's been. It's a bit more useful, and - looks cooler. + 'trail' of the head, showing where it's been. It looks awesome!
New Floppy display diff --git a/Makefile b/Makefile index ae9296b..cab5d32 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,11 @@ +# Makefile +# +# Copyright (C) 2024 Michel Pollet +# +# SPDX-License-Identifier: MIT -# GCC is default -- simply because it's faster! +# GCC is default -- simply because it's faster to compile! +# From cursory tests, clang doesn't really add anything in terms of perfs. CC = gcc SHELL = /bin/bash # This is where (g)make looks for the source files for implicit rules @@ -9,16 +15,22 @@ VPATH += ui_gl CPPFLAGS += -Isrc -Isrc/format -Isrc/roms -Isrc/drivers CPPFLAGS += -Icontrib CPPFLAGS += -Ilibmish/src -CPPFLAGS += -Ilibmui/mui +CPPFLAGS += -Ilibmui/src -OPTIMIZE ?= -O2 -march=native +OPTIMIZE ?= -O2 -march=native -ffast-math CFLAGS += --std=gnu99 -Wall -Wextra -g -CFLAGS += -fno-omit-frame-pointer +#CFLAGS += -fno-omit-frame-pointer CFLAGS += $(OPTIMIZE) CFLAGS += -Wno-unused-parameter -Wno-unused-function LDLIBS += -lX11 -lGL -lGLU LDLIBS += -lpthread -lutil -lm +# better/faster linker +HAS_MOLD := $(shell which mold && echo 1) +ifeq ($(HAS_MOLD),1) +LDFLAGS += -B/usr/libexec/mold +endif + VERSION := ${shell \ echo $$(git describe --tags --abbrev=0 2>/dev/null || \ echo "(dev)") \ @@ -50,6 +62,13 @@ ALL_OBJ := ${patsubst %, ${OBJ}/%, ${notdir ${SRC:.c=.o}}} CPPFLAGS += ${shell pkg-config --cflags pixman-1} LDLIBS += ${shell pkg-config --libs pixman-1} +# this requires 64 bits ints, as it's used by xorg +# This uses tinycc, which is handy to run that sort of tools +ui_gl/mii_icon64.h : contrib/mii-icon-64.png + tcc -run libmui/utils/png2raw.c -t "unsigned long" -n mii_icon64 -o $@ $< +ui_gl/mii_mui_apple_logo.h : docs/Apple_logo_rainbow_version2_28x28.png + tcc -run libmui/utils/png2raw.c -n mii_mui_apple_logo -o $@ $< + $(BIN)/mii_emu_gl : $(ALL_OBJ) | mui mish $(BIN)/mii_emu_gl : $(LIB)/libmish.a $(BIN)/mii_emu_gl : $(LIB)/libmui.a @@ -63,7 +82,7 @@ $(LIB)/libmish.a : ${wildcard libmish/src/*} | $(LIB) $(OBJ) $(BIN) LDLIBS += $(LIB)/libmui.a mui : $(LIB)/libmui.a -$(LIB)/libmui.a : ${wildcard libmui/mui/*} | $(LIB) $(OBJ) $(BIN) +$(LIB)/libmui.a : ${wildcard libmui/src/*} | $(LIB) $(OBJ) $(BIN) mkdir -p $(OBJ)/libmui && \ make -j -C libmui BUILD_DIR="../" CC="$(CC)" \ V="$(V)" OPTIMIZE="$(OPTIMIZE)" static @@ -81,23 +100,33 @@ clean : # everytime a file is modified. watch : while true; do \ - clear; $(MAKE) -j all tests; \ + clear; $(MAKE) -j all ; \ inotifywait -qre close_write src src/format ui_gl test \ - libmui libmui/mui; \ + libmui libmui/src; \ done tests : $(BIN)/mii_test $(BIN)/mii_cpu_test $(BIN)/mii_asm # Just the library for mii, not any of the UI stuff TEST_OBJ := ${patsubst %, ${OBJ}/%, ${notdir ${MII_SRC:.c=.o}}} -VPATH += test -# Base test without the UI, for performance testing -$(BIN)/mii_test : $(TEST_OBJ) -$(BIN)/mii_test : $(OBJ)/mii_test.o $(OBJ)/mii_mish.o -$(OBJ)/mii_test.o : CFLAGS := -O0 -Og ${filter-out -O%, $(CFLAGS)} -$(OBJ)/mii_cpu_test.o : CFLAGS := -O0 -Og ${filter-out -O%, $(CFLAGS)} +# Base test without the UI -- this re-include all C source in one big +# executable, ignoring the existing .o files, just so we can have custom flags +# for the test +$(BIN)/mii_test : test/mii_test.c ${MII_SRC} +$(BIN)/mii_test : CFLAGS = --std=gnu99 -Wall -Wextra -g -O0 -Og \ + -Wno-unused-parameter -Wno-unused-function +$(BIN)/mii_test : CPPFLAGS = -DMII_TEST \ + -Isrc -Isrc/format -Isrc/roms -Isrc/drivers -Icontrib \ + -Ilibmish/src +$(BIN)/mii_test : + @echo " TEST" ${filter -O%, $(CPPFLAGS) $(CFLAGS)} $@ + $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $^ $(LIB)/libmish.a + +VPATH += test $(BIN)/mii_cpu_test : $(OBJ)/mii_cpu_test.o $(TEST_OBJ) +$(OBJ)/mii_cpu_test.o : CFLAGS := -O0 -Og ${filter-out -O%, $(CFLAGS)} +$(OBJ)/mii_cpu_test.o : CPPFLAGS += -DMII_TEST -DMII_65C02_DIRECT_ACCESS=0 # Assembler for the 6502 $(BIN)/mii_asm : $(OBJ)/mii_asm.o $(TEST_OBJ) @@ -126,7 +155,7 @@ compile_commands.json: lsp lsp: { $$(which gmake) CC=gcc V=1 --always-make --dry-run all tests; \ $$(which gmake) CC=gcc V=1 --always-make --dry-run -C libmish ; \ - $$(which gmake) CC=gcc V=1 --always-make --dry-run -C libmui ; } | \ + $$(which gmake) CC=gcc V=1 --always-make --dry-run -C libmui all tests ; } | \ sh utils/clangd_gen.sh >compile_commands.json -include $(O)/*.d @@ -142,3 +171,5 @@ avail: mkdir -p $(DESTDIR)/bin rm -f $(DESTDIR)/bin/mii_emu_gl && \ ln -sf $(realpath $(BIN)/mii_emu_gl) $(DESTDIR)/bin/mii_emu_gl + +-include Makefile-extras*.local diff --git a/README.md b/README.md index ceca601..9336478 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,10 @@ # MII Apple //e Emulator -Note: Changelog has moves to [CHANGELOG.md](CHANGELOG.md) +*Note:* New versions and Changelog are at [CHANGELOG.md](CHANGELOG.md) + +*Note2:* UI Library has moved to [libmui](https://github.com/buserror/libmui) + I know there are many out there, but none of them were ticking my fancy, so I decide to write my own. To start with it was "How hard can it be really?" then it snowballed as more and more things were fixed & added. It's been shelved for a while because well, it lacked documentation, headers, licence and stuff, so I spent some time cleaning it up for release. @@ -30,15 +33,16 @@ I wanted something: ## What can it do? - * 65c02 //e with 128K of ram. + * 65c02 //e with 128K of ram (RAM exensible to 2MB). * Support all known graphic modes: * Double-hires in mono and color, with automatic switch * All the other modes in color/mono - * Color, Green, Amber rendering - * Simulated 'scanlines' to make it look vintage + * Color (NTSC/RGB), Green, Amber rendering + * Simulated 'scanlines' & artifacts to make it look vintage * Speaker audio. ALSA For playback. * Adds a small 'attack' filter when playing back to soften the often annoying 'click' of typical audio effects from the apple II. * Mouse Card -- mouse isn't captured like in some other emulators. + * Super Serial Card -- can open a /dev/tty device, or a 'loopback' device. * No Slot Clock * Joystick Support * Smartport DMA 'hard drive' card @@ -66,6 +70,7 @@ I wanted something: * For more details on development, see [Compiling](docs/Compiling.md) * Then just type `make` and it should compile. * To run it, just type `build-x86_64-linux-gnu/bin/mii_emu_gl` and it should start. + * If you want to install it, I suggest 'make avail' this will install a symlink into /usr/local/bin pointing back to the source tree, so you can run it from anywhere. ## Command line options If you run it with no options, and there are no config file, it will present @@ -158,9 +163,10 @@ There are just a few keys that are mapped for anything useful. List is not exaus ## What it could do with * The main window is 1280x720 on purpose, so it could do Full Screen. - * Port it to Raspbery Pi. I don't expect compiling issues, just video issues with GLes + * ~~Port it to Raspbery Pi~~. This was reported to work on a raspi 5. * Make a tool to 'flatten' overlay files back into the primary image. * Make a UI for the debugger, instead of telnet. + * A mockinbird sound card emulation [In Progress].
Total Replay diff --git a/contrib/mii-icon-64.h b/contrib/mii-icon-64.h deleted file mode 100644 index d22b188..0000000 --- a/contrib/mii-icon-64.h +++ /dev/null @@ -1,584 +0,0 @@ -/* this file is auto-generated by icon-convert-tcc.c */ -#define MII_ICON64_SIZE 4098 -extern const unsigned long mii_icon64[MII_ICON64_SIZE]; -#ifdef MII_ICON64_DEFINE -const unsigned long mii_icon64[MII_ICON64_SIZE] = { - 64,64, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01000000, - 0x01000000, 0x039e9ea1, 0x04bebfc1, 0x04c9cacd, 0x04c9cacd, 0x05ccced0, 0x05ccced0, 0x05cfcfd1, - 0x05d0d1d3, 0x06d2d3d6, 0x06d3d4d6, 0x06d2d3d6, 0x06d4d5d7, 0x0778a88e, 0x07499b67, 0x07499b67, - 0x07499b67, 0x07499b67, 0x07499b67, 0x074a9b67, 0x06499b65, 0x064a9c65, 0x064a9c64, 0x064a9c63, - 0x064a9b61, 0x064a9c5f, 0x064b9d5e, 0x054b9c5d, 0x054b9c5c, 0x054c9c55, 0x044d9a48, 0x01000000, - 0x01000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x2ff1f3f7, 0x7bf4f6fa, 0xaff4f7fb, 0xd0f4f7fb, 0xf2f5f7fb, - 0xfdf5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, - 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xffc2ddc8, 0xff5fba4f, 0xff60ba4e, - 0xff60ba4e, 0xff60ba4e, 0xff60ba4e, 0xff60ba4e, 0xff60ba4e, 0xff60ba4e, 0xff60ba4e, 0xff60ba4e, - 0xff60ba4e, 0xff60ba4e, 0xff60ba4e, 0xff60ba4e, 0xff60ba4e, 0xff60ba4e, 0xff60ba4f, 0xfe5fba52, - 0xf65fba53, 0xd35fba52, 0xb15eb955, 0x7c5db85c, 0x315ab663, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x51f3f5f9, 0xcef5f7fb, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, - 0xfff5f7fb, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f7fb, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, - 0xfff5f8fc, 0xfff5f7fb, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f7fb, 0xfff1f5f7, 0xff70be68, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff60bb4b, 0xcd5eb954, 0x515bb75f, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x13edeff3, - 0xb4f4f7fb, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, - 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, - 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f8fc, 0xffbad9be, 0xff61bb47, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff60bb49, 0xb25db959, - 0x1358b361, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x20eef1f4, 0xdff5f7fb, - 0xfff5f8fc, 0xfff5f8fc, 0xfff5f7fb, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f7fb, 0xfff5f8fc, 0xfff5f8fc, - 0xfff5f7fb, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f7fb, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f7fb, 0xfff5f8fc, - 0xfff5f8fc, 0xfff5f7fb, 0xfff5f8fc, 0xfff5f8fc, 0xfff5f7fb, 0xfff5f8fc, 0xffecf3f2, 0xff61ba52, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xdd5eb953, 0x1f59b465, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x14eaecf0, 0xdff5f7fb, 0xfff5f7fb, - 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, - 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, - 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f8fb, 0xffa2cfa3, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xdd5eb954, 0x1256b062, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01000000, 0xb4f4f6fa, 0xfff5f7fb, 0xfff5f7fb, - 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, - 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, - 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xfff5f7fb, 0xffd6e6dc, - 0xff60bb48, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xb05db858, 0x01000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4feff1f5, 0xfff5f7fa, 0xfff5f7fb, 0xfff4f7fa, - 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fb, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fb, 0xfff5f7fa, 0xfff5f7fb, - 0xfff4f7fa, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fb, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fb, 0xfff5f7fa, - 0xfff5f7fb, 0xfff4f7fa, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fb, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fa, - 0xff75bf6e, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xff60bb4a, 0x4959b460, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x01000000, 0xccf3f5f9, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fa, - 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f6fa, 0xfff5f7fa, 0xfff5f7fa, - 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f6fa, 0xfff5f7fa, - 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fa, 0xfff5f7fa, - 0xffb3d6b5, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xff61bb46, - 0xff61bb46, 0xff61bb46, 0xff61bb46, 0xc85db854, 0x01000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x2ce8e9ed, 0xfff5f6fa, 0xfff5f6fa, 0xfff5f6fa, 0xfff4f6fa, - 0xfff5f6fa, 0xfff5f6fa, 0xfff5f6fa, 0xfff5f6fa, 0xfff5f6fa, 0xfff5f6fa, 0xfff5f6fa, 0xfff5f6fa, - 0xfff4f6fa, 0xfff5f6fa, 0xfff5f6fa, 0xfff5f6fa, 0xfff5f6fa, 0xfff5f6fa, 0xfff5f6fa, 0xfff5f6fa, - 0xfff5f6fa, 0xfff4f6fa, 0xfff5f6fa, 0xfff5f6fa, 0xfff5f6fa, 0xfff5f6fa, 0xfff5f6fa, 0xfff5f6fa, - 0xffdbe9e1, 0xff60ba49, 0xff61bb47, 0xff61bb47, 0xff61bb47, 0xff61bb47, 0xff61bb47, 0xff61bb47, - 0xff61bb47, 0xff61bb47, 0xff61bb47, 0xff61bb47, 0xff61bb47, 0xff61bb47, 0xff61bb47, 0xff61bb47, - 0xff61bb47, 0xff61bb47, 0xff61bb47, 0xff61bb47, 0xff61bb47, 0xff61bb47, 0xff61bb47, 0xff61bb47, - 0xff61bb47, 0xff61bb47, 0xff61bb47, 0xff60ba4c, 0x2854ae62, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x76f0f1f4, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, - 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, - 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, - 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, - 0xfff5f6f9, 0xffc8b863, 0xffcbb440, 0xffccb540, 0xffccb540, 0xffccb540, 0xffccb540, 0xffccb540, - 0xffccb540, 0xffccb540, 0xffccb540, 0xffccb540, 0xffccb540, 0xffccb540, 0xffccb540, 0xffccb540, - 0xffccb540, 0xffccb540, 0xffccb540, 0xffccb540, 0xffccb540, 0xffccb540, 0xffccb540, 0xffccb540, - 0xffccb540, 0xffccb540, 0xffccb540, 0xffccb541, 0x70cdaf48, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x01000000, 0xa7f1f2f5, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, - 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, - 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, - 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, 0xfff5f6f9, - 0xfff5f6f9, 0xfffad0a0, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xa2f9b325, 0x01000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x02000000, 0xcef2f3f6, 0xfff4f5f9, 0xfff4f5f9, 0xfff4f5f9, 0xfff4f5f8, - 0xfff4f5f9, 0xfff4f5f9, 0xfff4f5f9, 0xfff4f5f9, 0xfff4f5f9, 0xfff4f5f9, 0xfff4f5f9, 0xfff4f5f9, - 0xfff4f5f8, 0xfff4f5f9, 0xfff4f5f9, 0xfff4f5f9, 0xfff4f5f9, 0xfff4f5f9, 0xfff4f5f9, 0xfff4f5f9, - 0xfff4f5f9, 0xfff4f5f8, 0xfff4f5f9, 0xfff4f5f9, 0xfff4f5f9, 0xfff4f5f9, 0xfff4f5f9, 0xfff4f5f9, - 0xfff4f5f9, 0xfff8e3d0, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xcafbb425, 0x02000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x04000000, 0xdef2f3f6, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, - 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, - 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, - 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, - 0xfff4f5f8, 0xfff6f2f0, 0xfffcb625, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xd7fab425, 0x03000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x05000000, 0xeff2f3f6, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, - 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, - 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, - 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, - 0xfff4f5f8, 0xfff5f5f8, 0xfffbc376, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xe6fbb526, 0x05000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x07000000, 0xf8f3f4f7, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, - 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, - 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, - 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, 0xfff4f5f8, - 0xfff4f5f8, 0xfff4f5f8, 0xfff9d4ad, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xf3fcb525, 0x06000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x07000000, 0xfdf3f5f7, 0xfff3f4f7, 0xfff3f5f8, 0xfff3f5f8, 0xfff3f4f7, - 0xfff4f5f8, 0xfff3f5f8, 0xfff3f4f7, 0xfff3f5f8, 0xfff3f5f8, 0xfff3f4f7, 0xfff3f5f8, 0xfff3f5f8, - 0xfff3f4f7, 0xfff4f5f8, 0xfff3f5f8, 0xfff3f4f7, 0xfff3f5f8, 0xfff3f5f8, 0xfff3f4f7, 0xfff3f5f8, - 0xfff3f5f8, 0xfff3f4f7, 0xfff4f5f8, 0xfff3f5f8, 0xfff3f4f7, 0xfff3f5f8, 0xfff3f5f8, 0xfff3f4f7, - 0xfff3f5f8, 0xfff3f5f8, 0xfff7e2cf, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb726, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xf9fcb526, 0x06000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff3f5f8, 0xfff3f5f8, 0xfff3f5f8, 0xfff3f5f8, 0xfff3f5f7, - 0xfff3f5f7, 0xfff3f5f7, 0xfff3f5f8, 0xfff3f5f8, 0xfff3f5f8, 0xfff3f5f8, 0xfff3f5f8, 0xfff3f5f8, - 0xfff3f5f7, 0xfff3f5f7, 0xffe7e8eb, 0xff88898a, 0xff939496, 0xffeeeff2, 0xfff3f5f8, 0xfff3f5f8, - 0xfff3f5f8, 0xfff3f5f7, 0xfff3f5f7, 0xfff3f5f7, 0xfff3f5f8, 0xfff3f5f8, 0xfff3f5f8, 0xfff3f5f8, - 0xfff3f5f8, 0xfff3f5f8, 0xfff5efea, 0xfffcb726, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xffc58919, 0xff82540b, 0xffd7981d, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfcfdb626, 0x07000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff3f5f8, 0xfff3f5f7, 0xfff3f5f7, 0xfff3f5f7, 0xfff3f5f7, - 0xfff3f5f7, 0xfff3f5f7, 0xfff3f5f7, 0xfff3f5f7, 0xfff3f5f7, 0xfff3f5f7, 0xfff3f5f7, 0xfff3f5f7, - 0xfff3f5f7, 0xfff3f5f7, 0xffc9cbcd, 0xff616162, 0xff616162, 0xffd9dbdd, 0xfff3f5f7, 0xfff3f5f7, - 0xfff3f5f7, 0xfff3f5f7, 0xfff3f5f7, 0xfff3f5f7, 0xfff3f5f7, 0xfff3f5f7, 0xfff3f5f7, 0xfff3f5f7, - 0xfff3f5f7, 0xfff3f5f7, 0xfff4f6f8, 0xfffbbb53, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb726, 0xff784a0b, 0xff653b08, 0xff9d6912, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, - 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb827, 0xfffdb626, 0x07000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff3f4f7, 0xfff3f4f7, 0xfff3f4f7, 0xfff3f4f7, 0xfff3f4f7, - 0xfff3f4f7, 0xfff3f4f7, 0xfff3f4f7, 0xfff3f4f7, 0xfff3f4f7, 0xfff3f4f7, 0xfff3f4f7, 0xfff3f4f7, - 0xfff3f4f7, 0xfff3f4f7, 0xffc9cbcd, 0xff616162, 0xff616162, 0xffd7d9db, 0xfff3f4f7, 0xfff3f4f7, - 0xfff3f4f7, 0xfff3f4f7, 0xfff3f4f7, 0xfff3f4f7, 0xfff3f4f7, 0xfff3f4f7, 0xfff3f4f7, 0xfff3f4f7, - 0xfff3f4f7, 0xfff3f4f7, 0xfff3f4f7, 0xfff9c88d, 0xfffdb626, 0xfffdb626, 0xfffdb626, 0xfffdb626, - 0xfffdb626, 0xfffdb626, 0xfffdb626, 0xfffdb425, 0xfe76460f, 0xfe65370d, 0xfe9a6414, 0xfffdb525, - 0xfffdb626, 0xfffdb626, 0xfffdb626, 0xfffdb626, 0xfffdb626, 0xfffdb626, 0xfffdb626, 0xfffdb626, - 0xfffdb626, 0xfffdb626, 0xfffdb626, 0xfffdb626, 0xfffdb424, 0x08000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff3f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, - 0xfff3f4f7, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, - 0xfff2f4f6, 0xfff3f4f7, 0xffc9cacc, 0xff606162, 0xff606162, 0xffd7d9db, 0xfff2f4f6, 0xfff2f4f6, - 0xfff2f4f6, 0xfff2f4f6, 0xfff3f4f7, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, - 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2bcb3, 0xfff86c3f, 0xfffd6e41, 0xfffe6e42, 0xfffe6e42, - 0xfffe6e42, 0xfffe6e42, 0xfffe6e42, 0xfffe6e42, 0xfe723618, 0xfe653113, 0xfe974425, 0xfffe6e42, - 0xfffe6e42, 0xfffe6e42, 0xfffe6e42, 0xfffe6e42, 0xfffe6e42, 0xfffe6e42, 0xfffe6e42, 0xfffe6e42, - 0xfffe6e42, 0xfffe6e42, 0xfffe6e42, 0xfffe6e42, 0xfffe6e43, 0x08000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, - 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, - 0xfff2f4f6, 0xfff2f4f6, 0xffc9cacc, 0xff606162, 0xff606162, 0xffd7d8da, 0xfff2f4f6, 0xfff2f4f6, - 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, - 0xfff2f4f6, 0xfff2f4f6, 0xfff2f4f6, 0xfff2cdcb, 0xfff56240, 0xfffd6542, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6744, 0xff72311c, 0xff652c17, 0xff973f27, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6745, 0x08000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff2f3f6, 0xfff2f3f6, 0xfff2f3f6, 0xfff2f3f6, 0xfff2f3f6, - 0xfff2f4f6, 0xfff2f3f6, 0xfff2f3f6, 0xfff2f4f6, 0xfff2f3f6, 0xfff2f3f6, 0xfff2f3f6, 0xfff2f3f6, - 0xfff2f3f6, 0xfff2f4f6, 0xffd1d2d4, 0xff606162, 0xff606162, 0xffe1e3e5, 0xfff2f3f6, 0xfff2f3f6, - 0xfff2f3f6, 0xfff2f3f6, 0xfff2f4f6, 0xfff2f3f6, 0xfff2f3f6, 0xfff2f4f6, 0xfff2f3f6, 0xfff2f3f6, - 0xfff2f3f6, 0xfff2f3f6, 0xfff2f3f6, 0xfff3e0e0, 0xfff36140, 0xfffc6542, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xff8d3c27, 0xff65291a, 0xffac4931, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6745, 0x08000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, - 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, - 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xffd2d3d5, 0xffd8d9db, 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, - 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, - 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff4eff0, 0xfff0603f, 0xfffb6442, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfff16646, 0xffd35d42, 0xfff86847, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6745, 0x08000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff2f3f5, 0xfff1f3f5, 0xfff1f3f5, 0xfff2f3f5, 0xfff1f3f5, - 0xfff2f3f5, 0xfff1f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff1f3f5, 0xfff1f3f5, 0xfff2f3f5, - 0xfff1f3f5, 0xfff2f3f5, 0xfff1f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff1f3f5, 0xfff1f3f5, - 0xfff2f3f5, 0xfff1f3f5, 0xfff2f3f5, 0xfff1f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff2f3f5, 0xfff1f3f5, - 0xfff1f3f5, 0xfff2f3f5, 0xfff1f3f5, 0xfff3f5f6, 0xffef6b51, 0xfffa6441, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6745, 0x08000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff2f3f5, 0xfff1f3f5, 0xfff1f3f5, 0xfff2f3f5, 0xfff1f3f5, - 0xfff1f3f5, 0xfff2f3f5, 0xfff1f3f5, 0xfff1f3f5, 0xfff2f3f5, 0xfff1f3f5, 0xfff1f3f5, 0xfff2f3f5, - 0xfff1f3f5, 0xfff1f3f5, 0xfff2f3f5, 0xfff1f3f5, 0xfff1f3f5, 0xfff2f3f5, 0xfff1f3f5, 0xfff1f3f5, - 0xfff2f3f5, 0xfff1f3f5, 0xfff1f3f5, 0xfff2f3f5, 0xfff1f3f5, 0xfff1f3f5, 0xfff2f3f5, 0xfff1f3f5, - 0xfff1f3f5, 0xfff2f3f5, 0xfff1f3f5, 0xfff2f3f5, 0xfff08f82, 0xfff96441, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6745, 0x08000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff1f2f5, 0xfff1f2f4, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f4, - 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f4, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f4, 0xfff1f2f5, 0xfff1f2f5, - 0xfff1f2f4, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f4, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f4, 0xfff1f2f5, - 0xfff1f2f5, 0xfff1f2f4, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f4, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f4, - 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f4, 0xfff2f3f5, 0xffef9f95, 0xfff86341, 0xfffd6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6745, 0x08000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, - 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, - 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, - 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, - 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff1f2f5, 0xfff0b1ab, 0xfff66340, 0xfffd6542, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6745, 0x08000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, - 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, - 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, - 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, - 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xffefbab5, 0xfff56240, 0xfffd6542, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, - 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6643, 0xfffe6745, 0x08000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff1f2f4, 0xfff1f1f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f1f4, - 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f1f4, 0xfff1f2f4, 0xfff1f2f4, - 0xfff1f1f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f1f4, 0xfff1f2f4, - 0xfff1f2f4, 0xfff1f1f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f2f4, 0xfff1f1f4, - 0xfff1f2f4, 0xfff1f2f4, 0xfff1f1f4, 0xfff1f2f4, 0xfeedc8c6, 0xfdeb5a41, 0xfdf35e43, 0xfdf55f44, - 0xfdf55f44, 0xfdf55f44, 0xfdf55f44, 0xfdf55f44, 0xfdf55f44, 0xfdf55f44, 0xfdf55f44, 0xfdf55f44, - 0xfdf55f44, 0xfdf55f44, 0xfdf55f44, 0xfdf55f44, 0xfdf55f44, 0xfdf55f44, 0xfdf55f44, 0xfdf55f44, - 0xfdf55f44, 0xfdf55f44, 0xfdf55f44, 0xfdf55f44, 0xfef56046, 0x08000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff1f1f4, 0xfff1f1f3, 0xfff1f1f4, 0xfff1f1f3, 0xfff1f1f4, - 0xfff1f1f4, 0xfff1f1f4, 0xfff1f1f3, 0xfff1f1f4, 0xfff1f1f4, 0xfff1f1f3, 0xfff1f1f4, 0xfff1f1f3, - 0xfff1f1f4, 0xfff1f1f4, 0xfff1f1f4, 0xfff1f1f3, 0xfff1f1f4, 0xfff1f1f4, 0xfff1f1f3, 0xfff1f1f4, - 0xfff1f1f3, 0xfff1f1f4, 0xfff1f1f4, 0xfff1f1f4, 0xfff1f1f3, 0xfff1f1f4, 0xfff1f1f4, 0xfff1f1f3, - 0xfff1f1f4, 0xfff1f1f3, 0xfff1f1f4, 0xfff1f1f4, 0xffe0c5c8, 0xffc6313f, 0xffce3341, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03644, 0x08000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, - 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, - 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, - 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, - 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xffe5cfd1, 0xffc5313e, 0xffcd3341, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03644, 0x08000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff0f1f3, 0xfff1f1f3, - 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff0f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff0f1f3, - 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff0f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, - 0xfff0f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xfff0f1f3, 0xfff1f1f3, 0xfff1f1f3, - 0xfff1f1f3, 0xfff0f1f3, 0xfff1f1f3, 0xfff1f1f3, 0xffe5d0d2, 0xffc4313e, 0xffcd3341, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03644, 0x08000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, - 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, - 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, - 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, - 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff1f2f3, 0xffd09da0, 0xffc4313e, 0xffcd3341, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xfed03644, 0x08000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, - 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, - 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, - 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff1f2f3, 0xffc9a8aa, 0xffbb898c, 0xffb98587, 0xffb88386, - 0xffb88386, 0xffb88285, 0xffb87e81, 0xffb6696e, 0xffb62d39, 0xffc5313e, 0xffcd3341, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xfcd03644, 0x07000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, - 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, - 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, - 0xfff0f1f2, 0xfff0f1f2, 0xfff0f1f2, 0xfff2f1f2, 0xffa42934, 0xffa72935, 0xffa82a35, 0xffa82a35, - 0xffa82a35, 0xffa82a35, 0xffaa2a36, 0xffb12c38, 0xffbc2f3b, 0xffc8313f, 0xffce3341, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xfbd03644, 0x07000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfff0f0f1, 0xffeff0f1, 0xffeff0f1, 0xfff0f0f1, 0xffeff0f1, - 0xfff0f0f1, 0xffeff0f1, 0xfff0f0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xfff0f0f1, - 0xffeff0f1, 0xfff0f0f1, 0xffeff0f1, 0xfff0f0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, - 0xfff0f0f1, 0xffeff0f1, 0xfff0f0f1, 0xfff2f2f3, 0xffae2b37, 0xffb52d39, 0xffb82e3a, 0xffb82e3a, - 0xffb82e3a, 0xffb82e3a, 0xffba2e3b, 0xffbe2f3c, 0xffc5313e, 0xffcb3240, 0xffcf3341, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xfad03644, 0x07000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, - 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffe4e5e6, - 0xffedeeef, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, - 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xfff2f3f4, 0xffb92f3b, 0xffc3303d, 0xffc6313f, 0xffc7313f, - 0xffc7313f, 0xffc7313f, 0xffc8313f, 0xffca323f, 0xffcc3340, 0xffce3341, 0xffd03442, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, - 0xffd03442, 0xffcf3442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, - 0xffd03442, 0xffd03442, 0xffd03442, 0xffd03442, 0xf8d03643, 0x07000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, - 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffdadbdc, 0xff626363, - 0xff919292, 0xffebeced, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, - 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xfff2f2f4, 0xffbe3241, 0xffc83245, 0xffcc3347, 0xffcc3347, - 0xffcc3347, 0xffcc3347, 0xffcd3348, 0xffcd3448, 0xffcd3448, 0xffce3448, 0xffce3448, 0xffce3448, - 0xffce3448, 0xffce3448, 0xffce3448, 0xffce3448, 0xffce3448, 0xffce3448, 0xffce3448, 0xffce3446, - 0xfe892439, 0xfe461832, 0xffb83145, 0xffce3549, 0xffce3549, 0xffce3549, 0xffce3549, 0xffce3549, - 0xffce3549, 0xffce3549, 0xffce3549, 0xffce3549, 0xf7cd384c, 0x07000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffefeff1, - 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, 0xffefeff1, 0xffeff0f1, 0xffeff0f1, 0xffe3e3e5, 0xff6a6b6b, - 0xff5f5f60, 0xff949495, 0xffeaebec, 0xffeff0f1, 0xffefeff1, 0xffeff0f1, 0xffeff0f1, 0xffeff0f1, - 0xffeff0f1, 0xffefeff1, 0xffeff0f1, 0xfff2f2f3, 0xff933e9a, 0xff953d98, 0xff953d98, 0xff953d98, - 0xff953d98, 0xff953d98, 0xff953d98, 0xff953d98, 0xff953d98, 0xff953d98, 0xff953d98, 0xff953d98, - 0xff953d98, 0xff953d98, 0xff953d98, 0xff953d98, 0xff953d98, 0xff953d98, 0xff943d99, 0xfe672d75, - 0xfe36193d, 0xfe391c41, 0xff823f8f, 0xff953f99, 0xff953f99, 0xff953f99, 0xff953f99, 0xff953f99, - 0xff953f99, 0xff953f99, 0xff953f99, 0xff953f99, 0xfd92449d, 0x07000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xffefeff1, 0xffeeeff0, 0xffefeff1, 0xffefeff1, 0xffefeff1, - 0xffefeff1, 0xffefeff1, 0xffefeff1, 0xffefeff1, 0xffefeff1, 0xffeeeff0, 0xffefeff1, 0xffd6d6d7, - 0xff686969, 0xff5f5f60, 0xff878788, 0xffe2e2e4, 0xffefeff1, 0xffefeff1, 0xffeeeff0, 0xffefeff1, - 0xffefeff1, 0xffefeff1, 0xffefeff1, 0xfff2f2f3, 0xff953d98, 0xff963d97, 0xff963d97, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff933c96, 0xff632b70, 0xfe2e1b49, - 0xfe321e4c, 0xff783a85, 0xff963e98, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xfe944099, 0x07000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, - 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, - 0xffd6d7d8, 0xff6d6e6e, 0xff5f5f60, 0xff6c6c6d, 0xffc4c4c5, 0xffeeeef0, 0xffeeeff0, 0xffeeeff0, - 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, 0xfff0eff1, 0xff953d98, 0xff963d97, 0xff963d97, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff86388e, 0xff4d2564, 0xff281c4f, 0xff332055, - 0xff7a3b89, 0xff963e98, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xfe944099, 0x07000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x08000000, 0xfdeeeff0, 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, - 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, - 0xffeeeff0, 0xffe0e1e2, 0xff868787, 0xff5f5f60, 0xff5f5f60, 0xff888889, 0xffcdcdce, 0xffedeeef, - 0xffeeeff0, 0xffeeeff0, 0xffeeeff0, 0xffeae8ed, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff8a3991, 0xff632c74, 0xff2e1d54, 0xff261c51, 0xff442863, 0xff843e90, - 0xff963e97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xfd953f99, 0x07000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x07000000, 0xf9edeeef, 0xffeeeeef, 0xffeeeef0, 0xffeeeef0, 0xffeeeeef, - 0xffeeeef0, 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, 0xffeeeef0, 0xffeeeef0, - 0xffeeeeef, 0xffeeeef0, 0xffebeced, 0xffb7b7b8, 0xff666667, 0xff5f5f5f, 0xff5f5f5f, 0xff7a7a7a, - 0xffb4b5b6, 0xffd6d6d8, 0xffededef, 0xffe2dde5, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff953d98, 0xff8e3b93, - 0xff7a3485, 0xff58296d, 0xff2e1d55, 0xff261c52, 0xff302057, 0xff67357c, 0xff904097, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xfb93429a, 0x06000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x07000000, 0xf0ececed, 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, - 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, - 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, 0xffe2e2e3, 0xffababab, 0xff676767, 0xff5f5f5f, - 0xff5e5e5f, 0xff5a5a5e, 0xff5b5a64, 0xff7f7888, 0xff71377d, 0xff7a3584, 0xff7f3688, 0xff82368a, - 0xff85378b, 0xff83378a, 0xff803688, 0xff7a3485, 0xff70307d, 0xff612b73, 0xff492464, 0xff2f1e56, - 0xff261c52, 0xff261c52, 0xff332159, 0xff623378, 0xff893f93, 0xff963e98, 0xff963d97, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xe7934199, 0x06000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x06000000, 0xdfebebec, 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, - 0xffeeeeef, 0xffeeeeef, 0xffedeeef, 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, - 0xffeeeeef, 0xffeeeeef, 0xffeeeeef, 0xffedeeef, 0xffeeeeef, 0xffeeeeef, 0xffe7e7e7, 0xffc0c0c1, - 0xff939394, 0xff5b5b5f, 0xff514f5b, 0xff444057, 0xff362f54, 0xff2c2352, 0xff281e51, 0xff271c52, - 0xff281c53, 0xff271c53, 0xff271c52, 0xff261c52, 0xff261c52, 0xff261c52, 0xff281d53, 0xff35225a, - 0xff552e6f, 0xff753985, 0xff8e4096, 0xff963e98, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xdb924098, 0x05000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x04000000, 0xd0eaeaeb, 0xffeeeeee, 0xffededee, 0xffeeeeee, 0xffededee, - 0xffeeeeee, 0xffededee, 0xffeeeeee, 0xffededee, 0xffededee, 0xffeeeeee, 0xffededee, 0xffeeeeee, - 0xffededee, 0xffeeeeee, 0xffededee, 0xffeeeeee, 0xffededee, 0xffededee, 0xffeeeeee, 0xffededee, - 0xffeeeeee, 0xffe8e8e9, 0xffd1d1d3, 0xffa196ad, 0xff6f3d80, 0xff623577, 0xff583071, 0xff532f70, - 0xff4f2b6b, 0xff532e6f, 0xff572f71, 0xff5e3175, 0xff6a357e, 0xff773986, 0xff853d8f, 0xff914098, - 0xff953e98, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, - 0xff963d97, 0xff963d97, 0xff963d97, 0xff963d97, 0xcf914199, 0x04000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x03000000, 0xace7e7e8, 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, - 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, - 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, - 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, 0xffbfa8c6, 0xff953f98, 0xff953f98, 0xff954098, 0xff954099, - 0xff954099, 0xff954099, 0xff954098, 0xff954098, 0xff953f98, 0xff953f98, 0xff953f98, 0xff953f98, - 0xff953f98, 0xff953f98, 0xff953f98, 0xff953f98, 0xff953f98, 0xff953f98, 0xff953f98, 0xff953f98, - 0xff953f98, 0xff953f98, 0xff953f98, 0xff953f98, 0xff953f98, 0xff953f98, 0xff953f98, 0xff953f98, - 0xff953f98, 0xff953f98, 0xff953f98, 0xff953f98, 0xa78e4398, 0x02000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x01000000, 0x7ee2e2e3, 0xffeeeeee, 0xffededee, 0xffeeeeee, 0xffededed, - 0xffeeeeee, 0xffeeeeee, 0xffededed, 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, 0xffededee, 0xffeeeeee, - 0xffededed, 0xffeeeeee, 0xffeeeeee, 0xffededed, 0xffeeeeee, 0xffeeeeee, 0xffeeeeee, 0xffededee, - 0xffeeeeee, 0xffededed, 0xffeeeeee, 0xff8aacd9, 0xff4f8bcd, 0xff518acc, 0xff5289cc, 0xff5289cc, - 0xff5289cc, 0xff5289cc, 0xff5289cc, 0xff5289cc, 0xff5289cc, 0xff5289cc, 0xff5289cc, 0xff5289cc, - 0xff5289cc, 0xff5289cc, 0xff5289cc, 0xff5289cc, 0xff5289cc, 0xff5289cc, 0xff5289cc, 0xff5289cc, - 0xff5289cc, 0xff5289cc, 0xff5289cc, 0xff5289cc, 0xff5289cc, 0xff5289cc, 0xff5289cc, 0xff5289cc, - 0xff5289cc, 0xff5289cc, 0xff5289cc, 0xff5289cc, 0x7a5b7abd, 0x01000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x38cbcbcb, 0xffedeeee, 0xffedeeee, 0xffeeeeee, 0xffedeeee, - 0xffeeeeee, 0xffedeeee, 0xffedeeee, 0xffedeeee, 0xffedeeee, 0xffedeeee, 0xffedeeee, 0xffeeeeee, - 0xffedeeee, 0xffeeeeee, 0xffedeeee, 0xffedeeee, 0xffedeeee, 0xffedeeee, 0xffedeeee, 0xffedeeee, - 0xffeeeeee, 0xffedeeee, 0xfff0f0f0, 0xff3da2dc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff129bdb, 0x343579b4, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x0b000000, 0xd3e9e9e9, 0xffededee, 0xffededee, 0xffededee, - 0xffededee, 0xffededee, 0xffededee, 0xffededee, 0xffededee, 0xffededee, 0xffededee, 0xffededee, - 0xffededee, 0xffededee, 0xffededee, 0xffededee, 0xffededee, 0xffededee, 0xffededee, 0xffededee, - 0xffededee, 0xffededee, 0xffe1e7ed, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xcf2295d4, 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x03000000, 0x62d5d5d5, 0xffededed, 0xffededed, 0xffededed, - 0xffededed, 0xffededed, 0xffededed, 0xffededed, 0xffededed, 0xffededed, 0xffededed, 0xffededed, - 0xffededed, 0xffededed, 0xffededed, 0xffededed, 0xffededed, 0xffededed, 0xffededed, 0xffededed, - 0xffededed, 0xffededed, 0xffc7d8ea, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff099cdb, 0x5c2884c0, 0x02000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0e000000, 0xc0e5e5e6, 0xffededed, 0xffededed, - 0xffededed, 0xffededed, 0xffededed, 0xffededed, 0xffededed, 0xffededed, 0xffededed, 0xffededed, - 0xffededed, 0xffededed, 0xffededed, 0xffededed, 0xffededed, 0xffededed, 0xffededed, 0xffededed, - 0xffededed, 0xffededed, 0xffa5c6e5, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff019ddc, 0xbd2093d2, 0x0d000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02000000, 0x2ca4a4a4, 0xe5eaeaea, 0xffececec, - 0xffededed, 0xffededed, 0xffececec, 0xffeceded, 0xffececed, 0xffececec, 0xffececed, 0xffeceded, - 0xffececec, 0xffededed, 0xffededed, 0xffececec, 0xffeceded, 0xffececed, 0xffececec, 0xffececed, - 0xffeceded, 0xffeeeeee, 0xff66acdf, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xe41798d8, 0x29216392, 0x02000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x06000000, 0x3cb1b1b1, 0xe6eaeaea, - 0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, - 0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, - 0xffececec, 0xffe3e8ed, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xe51598d8, 0x391d6ea2, 0x05000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x07000000, 0x339f9f9f, - 0xc4e4e4e4, 0xffededed, 0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, - 0xffececec, 0xffececec, 0xffededed, 0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, - 0xffececec, 0xffbbd1e7, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff039ddc, 0xc31994d3, - 0x301e6290, 0x06000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x05000000, - 0x19020202, 0x73d0d0d0, 0xdce8e8e8, 0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, - 0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, 0xffececec, - 0xffededed, 0xff84b7e1, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, - 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff009ddc, 0xff069cdc, 0xdc1697d6, 0x712084be, 0x18000101, - 0x04000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x02000000, 0x0b000000, 0x1d000000, 0x55bdbdbd, 0x97dbdbdb, 0xc4e3e3e3, 0xdee7e7e7, 0xfaececec, - 0xffececec, 0xffededed, 0xffededed, 0xffececec, 0xffececec, 0xffededed, 0xffececec, 0xffededed, - 0xffe4e7ec, 0xff069cdb, 0xff009ddc, 0xff019ddc, 0xff089cdb, 0xff0b9cdb, 0xff0b9cdb, 0xff0b9cdb, - 0xff0b9cdb, 0xff0b9cdb, 0xff0b9cdb, 0xff0b9cdb, 0xff0b9cdb, 0xff0b9cdb, 0xff0b9cdb, 0xff0b9cdb, - 0xff0b9cdb, 0xff0b9cdb, 0xff0b9cdb, 0xff0c9cdb, 0xff0d9cdb, 0xff0e9cdb, 0xff0e9bdb, 0xff119bdb, - 0xfc159ada, 0xe31598d7, 0xc61794d3, 0x971b8dc9, 0x572378af, 0x1c000000, 0x0b000000, 0x01000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x02000000, 0x07000000, 0x10000000, 0x18000000, 0x1e000000, 0x22000000, - 0x261c1c1c, 0x29424242, 0x2a4f4f4f, 0x2b555555, 0x2b565656, 0x2b575757, 0x2b575757, 0x2b575757, - 0x2b484c51, 0x2b06304a, 0x2b05324c, 0x2b07324c, 0x2b0a314c, 0x2b0b304b, 0x2b0b304b, 0x2b0b304b, - 0x2b0b304b, 0x2b0b304b, 0x2b0b304b, 0x2b0b304b, 0x2b0b304b, 0x2b0b304b, 0x2b0b304b, 0x2b0b304b, - 0x2b0b304b, 0x2b0b304b, 0x2b0b304b, 0x2b0c304b, 0x2b0c304b, 0x2b0c2f4a, 0x2a0c2e48, 0x27082134, - 0x22000000, 0x1e000000, 0x17000000, 0x0f000000, 0x07000000, 0x02000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01000000, 0x01000000, 0x02000000, - 0x03000000, 0x03000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, - 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, - 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, - 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x03000000, 0x03000000, - 0x02000000, 0x01000000, 0x01000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - -}; -#endif diff --git a/docs/screen/v19artifacts.png b/docs/screen/v19artifacts.png new file mode 100644 index 0000000000000000000000000000000000000000..8c41fbe61420077f9878961d391983a083307d28 GIT binary patch literal 36753 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 literal 0 HcmV?d00001 diff --git a/docs/screen/v19mega2.png b/docs/screen/v19mega2.png new file mode 100644 index 0000000000000000000000000000000000000000..762b96e02f404c4bfd1ec1d23d30d510035fb1c5 GIT binary patch literal 293979 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�En_~ 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 ?S0A5<4%<4bz_}j)shT zr~2NvLNL$(e@X6XTR)n5{eAf}0@9QHKMv#T0RZuodHMaN%L0g4e=hp`lvl~3br>%k zFxH)*SKOxWwjNLHr*?R-4=?_L_0=~@NsRc_?&oBG|2Vr7c;!+3vd63G>geA2-kk%* zK@R(HGd(;%e9guPaJhe%b;w*-6y0B_$Y3<;n$+9+v)H4<#_9pvU%vD9;{@CYIlKCL2_WljaD7+bRjH0EsY}3>l@#_mRT=#Sa5cx zZxn_AgjCD^%%nFaSj-pe+o_H70g_nhua%QPMH|Or@91)ufKcM)i&*PI3G`H4CL#bH z^&-m!AVMu2m5BrZA9k3s0Z^=@{fZC@fN<9x-N_&YJb}?w9SCD(l*a%;=3;UB@Zh~> zJYv6QP{Dj8j%Q!HFmZ7x?*?^BFpah5jnK%8cp~qe6^MaOgRIptYiI!o%wTt-A;mj; zGL#B4#@-9`6rRBP&%(1tpC~Z7ktXZ;vS8Y?u6=2|%^t+(K(~ zpJ+q{BS{gEP%_k8ObGzLoz1S#=Yuo=nQ%N%APE3jiIy6Ttdv`+rZ1v&8WWQs0t2qr zi4`A!ka{{S3lIaY+K<)Y$OE#!R*|s)Av5kwtJ#d3k)d$b(uyud%AbxoXy^j~x>V=f ziYC?lGyUA*8!z}Q`7KatIy^kvJ}y`QOvt8?QUSn?VY?%V4N@s&G}yNFmtQ^9*i4Pq zK&Ra8A; zcF%pu3{y`gnHj(j)K||}TtyWMjx2N@ov|}cK}xg&{co&6(;J4H?PbYF8FWGT-<$gS zpmSr~!+UNk+gE{007GPz)PogaDgZ(r`sqFZN<_-5C_)7gOaH)3XR!jws6xyQDyc{v zj^V}v#XH%Oms4)w2xL@jIpy%iK^oT5<8DFR#Gyb^rS0T{)uY&GL(08I;>pIC-FyjQ{s{lZA;LkDV z0cO5*yRX9qzWo;FCeQ?sLgAOCv50ROU_byr#r$4*DvVBFJOB7jr+6nQFE|ZIKClj8 zx2wH)qCD#CCz73s`p7{&VbX5T7y7{$-R|MfyNSd%K@5=4K{`!@m_G_4Bnj4EN2ksJ z6~}r1!%$Q(W2?_zj{!0bo||V?2QzlB^6E_nQ!2v;ABS#%fi@^}rZ`cn0PxM={K2cX z?h|OaJ~zEO4It9u#=*X4hRzW7DvjLWmL5TF0tC1{zHx%1kcfEkelE^|0N=rIi-Q{y3c!pNUObD(_am`z_S5)&l?QzWAX>cK%S~@jLqT1S&(HO{W*}O;Fi1~t zOoP!$C6}h1X4Yw#P>F+dbIzm8dsB zZvX(A#s?qew<2|lM;?lFhk_;LTGKbDRe|?CX6F}nycoWN8?SQUgNWyk^89`f_CUqC zHGcHBG3Nq4_~(g^j!#mYG;{9B?r!@Vr<1R;P*r}if`7x90brms$2XG&-FOc{NOp7X zHM_fe;zaU%K!W(_@%Ddz*g39&fb9e?Go0HurlYrE-`+w5@EJ}H^K+vnwfpWmSG;xI zC?zD16xi=#74)Ay_nUJ0UlY@<*B5WTQBhM%M^&xx_-bEoyL7`IOJ;yF03f5_nF7)Z zR#q3k`PyW<{|VK8z<%a>XX;k{)_P#e*k`N#xYd3*{gKPc{93E`S8lJ?x-cbU0pi(* zI;DL)o%-xOH|JMmP@2g?md#G1?^e{ug_M~$1>U6iQ zM}uInwZkky$WBZek)wv{8n89u9k2}O0ALkLshI*1$sifLv>R80yO3u^ z<(J0a|GDlj%>_9H3|w`UTlj=-EN?Wdow$1&lmuEtjko@%6=?f*NReO+R;H$}9?S-* z$uaLe&z}BL;Mx-QMrE*`ds}=nvrhg%<85vINk5lVD_{aiWxk1TXsAy+`duf1RMA|}?)C54(sBkj}5Y*V1Yv$stkiy%^iYt?O znMzynhdy@k`G6atVh#m*#s=;JrD^z)3O*X(rP_$*`U zR@11_TGReA^PawvVs~*Oh6!L3ZHe)oI<_}4NJ-Spuq>oVJ4&&yQv&B~^YRJx zra4Ib1lNHCP$>Js31cP&qPQOpzOy3-2?R3l8#ni7K$Q4#p|SHL2P0iWeFA6W@xew$ zMsjd#H;w`TW+s2&V0pqK7HCbw_Voj;Sv^tjjFbYJNb&|$20QTE%8&sj?q}^-`=Rry z)JV1W=sy)y&n zySzEM++C_{{;D}g>Zi`FBsY7`O@M_^D)|Qma*hqxU+dVnz(2!Ffs;#b~XpO%N(-k)WAt1U|&(OuP$F%ouAC$tFwCJ8bCfOwr(*SuTXioRkUdQ3ACH9LJ;c50iKGTOD{ z`Uz|4-fX&@&B~O3TGjdyL18FftoBoG*9vZ_)<8%%F#8?1>&aC`OEFK%C~W&ukzS-; zgx(jdWB8*yoa*>#Mb=~S5@cUMgLj}GOuHbUli+1gTL3`9BR4Dfz=geUW%waGnT|jN zPbR78wignSLI6mkfCp^HsO@Fc!-U=-LkKI1RVlUHC=|Y1PTNbowN6tqsR|#Q4YNW3 za5!4;w&H|{_~2wv5CVXQ@zyS`*io5$G)8 zP7T(l)|i--z4j$biSvSlAj#Npd(DnRq!uBU3{6oIDdR1FP;K~NWU}(m0yH5QXax3V zCuG1h<+2j0=@tOr?NgA+RV}1p4k1b{DX}Y+l{J%@RD}=k3(DqRJy`2QxQZZ!81)Dj zk_gQADu645P$kfc%rj&WSxAVal@}_A422a!63J_Br`1;&m@=Y@5JX6rZaJN9Pkrl% z3kbpS(3d?$Bsx2auM9j#^-mT`?<;9Rr!c;%WG`Ghm+}KagoSc2VL&BtghWa|T~8Qm z1MS<}CP#?RxqRjBbx7=$Z`03AkOFxE3jFdQoc2M0Eho;&k}516!6YkFeLM2mm-6+5 zZVC{hN4=GDb43sUawr$3<<^u86cBsUgUzXR3ASRReB+4bDj@h{?&jPo6RVosBOrql zdWVcpp+UaRz_p`YDmG zv|{Y}kMB*HkI?V&D4TwZeu{LY%{vKVu!KF|Subvbkc(3jH;z!K6Ch`#m+MF*c6aZY zD;zHhp%R$LQTv`c9ObZ%Mx7D>ti?=S0LY}}LENTacnAF;4Ivol#KVnl0<=f{e$;(P z|7&C78Q%Xy%7C8NdClwmUBlJCqnD283lC)z4IG~%CDxU47(6OOS_Ny;Dj6nZxaDGl zW3W6RAiX`GH#LEk=tzi}6Gnn4QMf}Gb*tnF>j7*6fOUzL7zvO9)<&ypfujs|`(~m6A{>sO0YEuuMJ5RNX$?so&eDL!HJZkN2 zo`2LqD?u2l&uHQqV>}v`|I@dZ{wiuaTFo4De&*qwPg&#ajeYHf1Aoynu<|SEIb-4% zPY5$Su%++c(FF(fn_oSBbh~q5|ADnB#q*eWqr6+wn*Q0HkIlGw3(b9aeXbN-uW-!H zx!SW8yOKeF65n6SZ@n?j3E5{G{;eJWwPY6FH$#R3#_(L*edz~06th4cdp5aEAO;BL zdkWdd$448CR!I(gusV_R6@UmIPUGoJF%0uxdhY(O)${6&U&-7Pj{WROCp_I9Jl8xw z>FlH!Py`HP@7_5IAzWQaR85ijT+kJq08xaIRk~)yA9%9*&*y@)z@wuGKA!@fD`?u`;h5Zo3c zG9BtokK4t3F8tA-IsF&Xu0>+Fli$6V57byu<BjE*z_;$1~%_ zpVRe{uEX`Ow)=ltKVNCDW*HC!)7<;iWe#-H^GzZoffk-VbZGs6mZ))zZMD0T>I&jw zF6gT=z5^712^0Uaf|*f!MIgQw{%9uiBtTvEs@?w-MwfM>Y4Zc6+(!T!aJ1d~Tc^KO zJ2@G-31Lt<*!#7I>W`)XpyuL#Yhx#dS11+r82Tpk(y1_s^CKssQY@e)UW}@*zy6@YI}A(7_0{{$KXqGtAPX zJQKdF-hA>oox7)ddUBFRSsF<3?kSpY4HBjgpD1`u`5O9=E$&be5ZLNV0p;9H;n98hz2u*_| z;d$!EN%hQtxttJyo(cM|T$Y}%ev%P(U9@UYnF!im$QGyLp~Pg34PLpLOYZ4Q{}QEo zC`DEGv6lIR(vd-@rUQ^EHnFaajR92>x4ilEquJ*PMF@H?swRf&Ac$A#D}6`I*hzrUZC*Cl-__o#_5jMc0H5_PG?F(E5RRbQ{I=&Gk%4R{*@xh*smx{CU+`m*Tdy9E{IT}u zPF`1jYZ^CpqO1a6tRo)+1lJh2B?St20{1jfDB+@e=s;cGX#^CcKDG64Pqe<_mVdTq z^Wl_sq`2y4qA<~{wQ9>`q3ERjMip4?S3=)K&BZv@GJ6z)41w*)6Ql z)pQ^$sWj`0IT8d9%sk7jM_UqYTej*x0T8Q;*dj}%A*rBg2oGkX5eBB*j`c_}uXzSb zQtNEXQ*FvMLCeG4qLVjbaV$pQKo}}IiOG`e0u7Vdvfpti8cd6;!-JmGTbG+b(Bw-C zD^8)xi=+r5l!Q+u0U#TZTvZ2w;BZ-~tq1@~PI5JkN`QbLRU1mj$&aqOLS+>KUdt-l z&hvLJp=iufiN*u&MGK3}N{T=*S5&R;vJj9cU`mu35a3qWloz-Fq3Gpo3sYl_au7zV zP2G*S@U9YpMS83-EJcyuvQ!}`A!4)Vk8-3Xc$^(?wO5y#QYe9-I#ep^Dn) zF*jl86od#b9t_L88z_X{!FJ6H2Q-o%47Iqh!)Qf_XdM<_lxd+Z8THC|k|)GuMbep8 z&ZEvG>iX4MYzamRX$lH(UtON!2qN($3WvGX64p;zFcMKHWRT~pA79f+5LCkDiVXn7 zAtW%A&b3eE`*cVIYKn(RDQYVKaYVyID?v2^N(5RSldFILQ<#-1dy+?hb{N#Ek}QdZ zSr$57DM6VZiOkYsAUF^@3JWBFP>JiYSet7SlOm5gT9YVkMdI0XI}a8LL_&&W1u_9( z1bViqX`Tv#wrG-Ai&BwGniVOu#q-pUld7Mt0FX5(H6sq42%`DcvRY6sjD8 zyR>BIH~=95rsRaqQnN^)0Rq0R`BzC=i*!3dRPX{`SQhf4rpQ<>c$ql%61cKUa|?4G z5d;chn*|aCJ`JW~i_?NIKy#^7H9)`v(y*$om6H99v1~FWQbE)5>xIZxIBS9Dsa(ri zK~G2h1PZm#71IT~W`*^k_#CKEE5^AnW=m~Cc|9KV$^*Pv07#LAeq=*HCP>MU2nbNL z!!fo%N=jt5qR{SjHg729&_&=_~3V1Yq3Vb!?f z{meb+6$$eY@l!KQhdutOJ0xg+fH@$lCg9BcSMv;UEOnl3Q5Ezm1p)4{Kr%&(t z>+cN|i+9GW*9`ss5xQxz+WLIEST8-(D=|VSwqH^Gqn+)IRLSRu|N3h?j#<|y$KE;e z!Ljt!FM)S6Q1wCdpg-waqaAtRA+$k>@oAio`9w`mSW>*c;1+!`G}Pldrj~^_DHux`_Pd zse6LTlg~0KpUUID!(amaDg4fB@U}k0_kg|yk^%`30#QU6AR^`5?B>6EVB@juBBWr? zmE}L)VUDT*aMr_LwcrU-JvF%D;DuQ;1;8|%Q-d=BjVQ>T+OAz2KKRyislf}6o|X$| z+)qBb1@k9!3|!Xu$h8G6<3YeKrV2-U1P7JH;FTq#+Xmp){qW zTVFXi!2C5(buM0z0EzA$X3vf)6<~o}d}hFE$pT1^+PxPRLBT^>I5Ol^Q~-$qum7@D zA_)RyB>eX*MpZeVAO4Gf*mcZ&MST2MhJNR4>gw@Y>z~ZV*wRyjp-Vw9vbXhzmsPKf z!EB}f?(WOKi?T0;061ZsoF`N#Oq9T_Nl*ftl#3+i001BWNklF`6Y=5E-+ziF$7`+6H0RXDScVG7I=}Av z)empnb2L_f3cgAbiZ2h0lXqzT0&AS<2d^Y^dc?bMQ@tTR1BmFES5-@a0Ej3&- ztmv|DicJk%AA<~H&TaklGv4Q0%RGW$G<@N_zWDG%lE2iiZFyPs<0fl(;+r+d4exUi>{ z>F)M!`SpW$OVu(%dnvnmA}7|8Ckf>e0fE5AcF#z)U)T6A|N8Oo<>tpCxV4v3zn1Pl zwtM^hW(DNdw@puMKm9{rgtoGBXehKL5Oi%fb34i)V7|Qi^q|+&)`C|;NltzwUcGwb zA0Admr>e~_vr~47eR1%lGviOI)S{qdefio`tstF%3D1I-43v>v9c@KZyM2n*_ z(^H*HL97KBmBtO}XFl5hOXb10A8%R@wav%!hc-Ah1qgB@&TqYAdABc{h$U`}~^wiUr+#hV=zn4S53;`T<@#!|0K$7Ca8EjNQLyY_QL<1v7vG6JS z&J`iYLCe0<}Y-qT)scAOOST%aA#i+Lf-Y)&>0! z)9P{}S~yiM31&*v+OgTbPy;2%rNzl=Y)-wb#j?(hr0krnu&+?J(9Rcu5)UP>l%dY{ z%Bk)BUTvVCpmn-`e$j0&2{8~Kx@4GLkxUD(HIbX03GyrX2B zSJF0T$S47U?^yOi1prYfjI^_q4W#Drg=hT5sLP00D_zVYhMe z6odw?p=iU}mJQaZ1_A_}j|FM2URp*v*kvS=D^4)qsw5t%Z|-ZoT8_)D3zjrd2>p{Z zU1)9AA}hfI+Ne=WG#NM%SdCVr(&N2KHmgo7(0nanhq@wkH_K%9d zw<1$D_vzuLB+DnHs_h*QNL$)44-NtZjihUK0|+@I{fiU=0%1LoD)$+Y3LvDcM$>Bh zs`$osMk%_%Bom9QZ%NH{Cyc$RjGR^WdcnNw&-$Th`~9)z4O)z6rKNx``~G;VntW(N z%>hl@V?*P=pb9A=C8felsTf5SiTlH&3s)&n2$J1ctf5?jV+B)Qxn)#C8fhul=yKxv zc|v(dA>0X%#LWv-WiS9*+>gBDoVTZKe7DXCxFG1!@y1Tgh>u6|Bf7d{O3%r=1CKuJ zm}z#bpeer6zEjg1>0L$JpA4eq#rgCDOGyLB*RB2?=Pns~m{yk)-omNX5@YQSQ{WyA zLXe5Y;YlY7Xb|#f^T_07x*$a;W0}(vQo#wwkDypb5s)Bw)t)K`-uf=^a*KrK6n*Pj zouAwOvFaC4Z759!C&^sODo9iz z^`LGsr)ov<6Iw0a?E*pQsiSiO5R5p*bmYqb)OcX`G%J~=Ld5>*U@6({0s#x@;6euu z?R@p~`sYg`kOX~drB(8}U5Frr<=WicWVEg_Hng)+(G4bDf7uNI7d7b0O^dC=0}07w zPf31_ome#TZLRedg?c@^m%MP<4JIn(#6z_guBiy(kc0USh^d4dbb#V)Bt7hL-@00( zxzwdg!f%?+*IC20o~$a?F!g^UnO)X;tCo8-ApH389yt4yU=!V)Z>6gp^_z3?U>gwp ztg?LZu68QX@*|^oa^xGDB|*qpTkCP(D8uvB*|S66BDO-foO1m>`$i?~+`t|!%*p0M zkV}TldI!&4p_5}%8y^gVI1MEuWCQKj>T9$rM+-R30Kk)Ry@oVJ7fH{`?nLDMY_0kA zDSkl$8UafRqYpHI5U2z9t_PNWD~4-y5TL^FafTHRX;bxAcH^elmkEK%u-ZnQA(q2U zgW{Ltpn%Kqf9%|X@j5xx6&uD5?~M7X|JDgp3c&Z3x#^fRyKm_SZ|#5G- z?r{K+K@xVw<|ieH!uZ&9*Gi*z19%Fvuab|<#5`N_XNXrYJImJ$aqkrF1)wS0OWN;k zwf4lV0nOUYz*i%?zJw8xf@YM(eaoO+?Do7d&Z;sEt&UnL7 zEk5ar6+>=s$p`@mK~_%a`6UAa@m#R^>ZYU$0OhlK-`UabMh1YTyIyRgcHo1t&3Qd> zDsY)3EspFEio79{yqOXm5Rvl;VRI5SG;dq{;QL~f>G4A%I_Qb18szUDRWdj%Z>BK%=eO9Ph z&fPK4dE@e!emMaIYZ0CYZ=VCEJ5?J5AB|(10su21{?^~2#NSA+B*P*|?fYk|b$Is4 z0Y3MZT!>P8*ZF6PnpmDIF2w-HB^O5T+H^rZ)egxQ~;kE<>lm2O9_=#$} z6l>fC~U1Cx{ z71r?5xedz#IIGTxtr4)S<7bh;I*jNcI_ zJ9gZDkakZruK1tz1$OS(NaE<9#p_pX`}ou9$Yi5E)66%&aX9(?GjER1zHa-UAB_)A z60r={J_now01>}@=_5&OQ&23X{^HA{f1F(mB)0pa@J~0o7i(yS$xj>{{j^tT-K*Ok9vgQi1?heau_vM9+4o^sIcTKx`op_nDOtXB3EEOk$G?7U5hO zUs>K`7xoNh>jOEFV*}gg1`L}7xEd-N>Y~2%@E?`Tf#(Hhg+(_sm_o(UZC3WFxUuodM^8 zqzCcp6}sr}zGV!lLcP7>RaI*tF2u4B#dbv+&TrFaUa4fkuU;x9CIng1yDIPOxBC@H z3Y<93S>ON#wk6T40zfmu*)}+bx0*X!NG%I6hH4eWyfC$TTmLH?gE!8!orR82ksT5; zsb||a?k>MFv5R8B73BVwzr;=g<|Qg#pIpmO9JkZZ-YCnN7I4b1)vb!X67vd)c7!vkg^mHYZi@8}7V6pD_Df))39>IWbL3<~fwWbv`?BHEGaa~5B9 za_77iu_*ZA?n6!YEbM>HD(Sr#vmw41JcBqe!Ho>?0W?gj*)JsAP6ByE2>Im z03Hj?CC}-Uz zHP+Xax=}auWEz%x+H#+4HbmHA?)40*-b*+UM6hg~#7qDpP^D@g;Sva6k zr3ZlDa$fGA62NhnK84pC+7ji7d(d-eUacTCt`PjCFy7g!n zol66|0a;+Bl-nwaZSE`GR{x__XZ28vg=)|gBe0vrgzfi8mU+vueLP>pcFM+77Zu4#K4q=TJe zKkBdhc7XvI1Ry#FM$TFzXBn^}Vr}W&-L=6Kh=_z^AI;~QoI>Ql0@7|fZX*!I5MKiE z03iBRM{MN)crD62h^-M61=1}DFJ9Z9oE9sevxA6++#9Q5tP@6_{Bg6u5k|~&ZM34b zl#?#Bg?Q2}4BICM#_OZTk)3~{QbP&ofD6efh`-};BLOwk~bgF2ERRjGEvB@3}ny`Qyayg z043-KHl#IM8IWj?XCjO|1cWiWkghgc>4e+ABij|rR(jHRR~Dn0@m}?b*C(1gwM#99 zgz&%PnC9F{LU0Peh%~(t#?*ttM)h=UeB>OF#C84Q_82xu05EOiX&(Wg3bL1r0U02K zadF&-DNt&9i_27SMhF9yWy`?+?THO_yWvIAR7a>vQ|2I>grBy>ARDI`cLWR%go6O7 z2!jliAP{&o(58X`N_zw+A@hZQf2%GpEDh<8yfvea?7p_G_qbB(iDP;3<2k;SU3=X138daFwwJ~-%;lf6CyQNNecjArfwci-P@*3FrfOcUnM1EPhm>{ zA|reY=6W2z67gCn?%}8c1i>$Q*i9h7O@{jfmH`lUv+wV*Kp_#}XYDEztRBY=BvN;d}r_CqF?7$}k;pPjR?wnz0{W2XAf+)(8l(@S*AI(j~g&>+H z_6)Nf3ep4usO$7J>6PVSfN;5ii~gZqE=(WmlE?NMCw6Yz62?bZ*M(oT8ne^SWHI$_ z}bcA-Ys=$Cay8=5B%% zmj>)Yj9XFj@qA+?6dY&)g`a8`v?~)^-WUJK_2pZVf&v!D-3=^9aD8Qaq~07G5a!TB zM+d%VN@DR>j6OAY`w>@+)y;c>=c+j_RPgRB3<62T_kHr1Gpsj~?ZZ8hE&B>FW1S^i zC31V)p27$E)tt3QGWh9K^B>I`6BX6R`%)N?K_x6xe7^+-s043GOB=KiK${QnMQ@Xl z*cbXF@T2PDal2vK1(`Dsq#Pe;y=Qmzif9jsGInqC(~ebQOYP<4@-y9?Bv;Bw+>J|& z#`?Xtykhy5ev=Xi72mV49CqrJaZ?&p(8u;)`q&(2T3b$p7w*g7+7~Gx2cFvdnL|l) z^*wQE)A0L_aAT>uc*?B{w=O>?)UcbAAjy~(c+><3Via%7pr_+h@m?rYrPA~H2euql zml!RjMjP+n*1W*qOGUia-T0JkwfHg%`0XmLh=CBqW9X)!dGH^=ieLep$@z)RUo5Ov znDtx{Ua3>*3jm1ZhN+DShyRff@PYy9F0rYpM{o<={j5RJFyz`VgI$LRe z&G#3d#l+7V_&_%{X(*R^KY7p2RVA6OkB`bvo^34g}&K@XpLZXG``EydMscC zaL$kO4+Ci+4C(wztO#AK?9_&X_{KI!S@3$h1!kqOv`6XX$*oP08bqbtLS!3Q+AF7N zaz~R$%@I{z%>{uDqbfW3Uz^8v?fG@lPc0$q$NSjsz=cZRpCTJh$RcCb1b$HBM?o5 z96b?oC8VloGlVI`GcP8~ zs+Yw|69jO8X4H{1lt}3Kt3+wrW>jsXak`!wh{-DvG;T2ExkD5cl3-34(1Rgk0e*LtR-Fz8i*2Sfeb8Y;H?u2+%4aDZl|GGK(><#YiXBB$gB)(7L!p z1G@$a_&}S(1Q?@5Pb=jOIm*^%j7hh#f>J^ba&=bmRGp@+k{TkYR$G?UO09%Sx2MHU zIkshoG)^H=Z70RRXFYf@e;(jzZxtE2O`+kZ=I1!&a)S*WGj&I*&F zj2U`nU}}^L)yw$Z**f~`JjgWs!6MgGmB|315pn7nwI%_iB)QXiBSb`Mh_5DDN%d4e z+#RMe@F^HEUES-HT&V#wI!O1S@9KHZ2_=vi0|cY+RjU=3v&$;wl!c_WsZdN-0Gu<| zcp)}sqKvB$APms(i;hnK^m{z#DgnRbG%C}i!>n`(OJ;t>>!^-NM~!V+;xwJ1yHzvAbb*=kJ+A9}&bb$Lvd(-xzZ1a1OLZ>2Sb;Jx zdiVeBCIlz%`{u`%c6^kq%hoZwdlbAsi#P=UZGDs+@YVzW>RSHM`h!Z~_abuPQ;?fL z_dq9WIF}LN0|JNyzTECwq<398zByqNQk$NjpFVqy?U1#XQXmeHPKsL+uZThM(GKu8 zb<7L2n(4x^9?l7sc<*H;EoTAn8}ah7ejXC%SfjPS#>4ZV%>N~A?QDKS`4^I+vr)V2 z&p6@IZ?IpC$M(6tY%{A|y5FkR%40beMZj~sK6*MB-j`2mQRlw$YiV3!z-*^K`Nc~g zYHl{pe6Z(DmA+p**|Z!LB*+>B#Oq_YB?SUF9G`1oCIo<27`QDB3IqaQY2u_0 z02ga`XGT$wc;wMbK6f&1&%Qqv8{F_;53$5}we78IpLs{-&MD=p@pAj0gXn~=pj*4X zEB(eGRO~3KR39{(Q{^*VfdfM9>_+oH+ zToWw%_r$`8K~927R3GRWc~^GenrbF~{S}2*b4{fPR!{8OzPPCa7d4+P zlw&Ocq(Xg1by(&SfaP>~MXjnoD*np0Mj|C@TXFQY2s-YTh*nMvxiuX?ywB;rXth%W zUp+JE6k-Cmtz40?0l|vHYWs;RMvZW zK~1@x6?bb4Z_-lCOMm@)d%s>ykh333@1eu*d)nbg8|`~4r+UTg=I)dK%jnDGe*3U3 zpRSc3Xv`lhfp(+4I%{$Pi6SNmBmuy-oWkrpi-5ck)qg#}O<>v5yzQpMiVWJb?hjfQ zeh5Y0m~NC3Mc)n4WGOnd-FtAevEDHdrNZ27k zfE0?|&&;rMG^#hFwzfQ?pCRS_?p&>=mbkk^kw(?gQqz|zwVB9PBZmmlU{O;|6fRD4 zg&>_0?Up!F2LXJ7Ze^|Z)_k#01nCeh6A(gYrR{w!C*DvEYyfww2mt}41$Hxt61qZ| z1pYjtlloE;~sYBRxVo2|aY>HFWeIfxtpJWN(Awj0Y6i#Ev2#P*_yQD2x1nR|YA zsotcN(XcI7QL4&y06`Q_S(+5df(X-SD2k(NscJdi@~l>j1q)DM7)*x{U0P)#=eIay zBC(YuArJy~%c}V{1hRhA%h+}!B0!~Y=?Eu<2t1-*BgPp85t{BR@eZd4VI_mgI)Ko2 zz04d0B#E%9&RZz}R15QI_b6#IW-kbBbGM@Ao(P*p`QWN65$fJbqPo)`PQ?x@c4Fx4 zJk?7=SP{zGd&6!CiiSSMPpu%9M^p(*HjPLW_<`eatL6LcyydaRO9OlpLerGy`ue1} z;!uZ4E{K3&JoG}(6}BZpGw=CcrTs$Uk)O90&18y_uHIfLX$0~@`m*z!%!s9{|7(mAp6o8hzz9zHnliXs74Cec;uP=H7hngXx*%+YbnWhdg}Mg%IeH z@a{CaB?#bY51+9R3FIjLTN*<$0G#s4=fkUF@f$!0Uj;jq2pvv%)f5W8OrYe-h%pcBiw#FPD2SA|7!QQlUXHLjK*eAZw5>Ev1EqURo zOz27=7}(U#ZS@Ecdh*i2tk;%7(7napz0V~CETqd%XYHB-g6yz+yx%)P1i&&k&VDp4 zHr)2%#l_LT_}aFq_Uq$gw{83%r&5w3|v5asRZ?DfvI z-9aa5cqt$g{4!bHc4|6x8m&_JmaEU|E< z@U8j5L#)+xwJ&P~a>j{oY^Jr2n;y+|caW?iV}Jlmpy_5~+I3Wl6@kOPW4W?ZG@_O?k^l;H_j;Z=)|@Ks+NY&Y4y0Gm}v67(K8{+el3 zb##PMfj#TNp8~M39ueBT4lKX6{VqVPuKkt;+Cn*V*sHK-U1I@o;JNe@(d>D;C>}*s z{6DBMeZZA#4o5nJs~hN#BkGgN?@p<^TSVdj8g-cMH7?EeLN^N~0I@E6NR21#l!&N3 zA15lPL;!>iV9Tn^FT1onmG$aCNPI`B2?B6fD>>iP0T?>293WTuSLx!A3DOFAx05yuoSegJF+>&cd3IQbIc-0UtTUWn^4Z+Z8CYJK4 z3*|j1Tscks@vMpV;Q8ujgvsl9d_aJzOdqZ0GAurc)+ciRbWnPd-8L||{jNKep0tDV zbk$}H=F3gr03k!0HzO0btYcqX&5wWi0BMCc8?o2E>z(QayE&=MxVAmjMD+8s`A=xQ zz{sXe$fZ5GHNv*-N~nuB^06~#L8oSyp6;3*OyLSZsQ?dyFn|D|;uL%DT{KUN2&n(Z zo05q-ChC9+V*#((hf9IfT2PyO7h60YdZ00n3%A_D-L1a|cs~#aIPd`QEkFRHz=s4f1OnI( zd>!CG5Ab1ueqg4NeDFZ_tMy9~r{1*d&rWr3OKa{)>pY>ZxTJF1HfPr*p8>EG;c*)d zkj~%+1D9(6P-OTkA7y|7?*guQ0qGFI05JHx+u*u&=D;HG*xKlc6|Wua{Xex@W*%I9$IoDhQPv2fc}Op60ReHrIY3n8GY*tQQ^3IdP_HW6G)Kml9elfYSk zWUSZqTDQhl!GHLTZ(Y9sh+#c_dwOGT`!xrde%f*$FH8hqoY4hnJR#mTjNcZB3F06( z2|V?z7N~IyU)r3#SKltv)cU}H@%^!u+ zwgmHd53^D<>Q`qHNrfz#II_`#^x&|NiPpq zzT(t9F(X5~BZZwB2vCdgL=%Ak0WL{ks{sPE8TL2fa1dZ;3>U^h0GH$O7TOU^TkCd> zS81cv+C+xy_Yrd{oQfiQr;oQLArlyJY|z$X2Odzw8d3I96AK;$kdkpj8U_V`9G>No z0{~HhcpRb=a^bW%zwt|@$_hIV%qqW*L=PZT8nwhzyct6L2hkq`%3gF0fJ&gi)kE0Q zi%7@#l~^Tfgg$WtzuJq74G4ikP5SCWcRiH6Qe2$v&+wR`vDe))_OMo*kHF1%l5){OctU#?Kt*ijR@&YiNx#g`gQ%nJ*+wN{dy(8e-du+b3^@8 znsX*UvqFrn8I`ODE`5j-h*q!!K#;JY&o1$AM&RH;<3Gccc-#!_pjzo*^MeVm{GMF| zB!EmH1bmL^2pmWdTo-sUJtY8{Lyy1&bO|}Q+1w8SG@CFY5CMrm2_bg^&K&a*ECCAa z4j@wy0wS;!q9#Cq%>m+82do;U5KA0{`dgF!fO3+=Px=9j00svE`XmfQkN`Ac0;T{W zK&&}WI44aX$08wsjTF~6)=u1w=c|RtLp;77FlV$e5j(l4Jn^#YIsA{NR4&59Yl(Cc z0WO5v51Itsh-5bi0Ex&9QccJb2tkrFxu*mHmneK(&#oBM5NS{JCJ`twU4N`m^BE|` z&JA9-0ZQP6VMVFA*#_x4>4K1IpR)gLsbosNIz|ez`BcZE#++1ZF(WxC;l-Ha zcyfbrp;9K=k(8&DfX!om)*m0LQi)$}`L8KMrVv2LaaL&5P5=awk{TJ4%<1XlaWdDZ z{vf$^bJEzBOe!jq5O|m&uw8hbJ%uO=9p7s=8xD0U{=!5%UpamZA(se|WEqscRGx|u zoQFbmqMd#an5~vuuLl0|g0pgB>I8~5B}Af>$ns04xo{qW^N2$T0wPmF6y>GADL4~6 zVjWf>D3lUe26?IMna(%)+Nfkg=*y1(CmNLJy;LTYDlz~rSj0qUga2{Q7lI2Gu8%|_ zM3N*((o4^zETzbMf8#vNZ4Q(GfBn`Itdt}1pUHDY44PJx?fyY$Q0|l_<4bKs3JY(Z z_*5<&)_Acvc=va=e>7GA<-HeG@7mM2O9KH`LfqYeD?ou?N_lTLzG<1c&wuU0ABv(c z_2x$P_gzuEE+Ht;V)#-6Wd;D(#qhUDP{85%#|9Q70JvPoC)P6*?``6~004HX_}`he zlB;jG@I4OzHp=+JEMgQKc*MltH~`Qq;X_%ZB>>RZec2rN=y?gI@%3x%?_%w?rL1R& zt~Cezn-Corwjk!xXmiXz>8)~L95{yOnAV@ye4w=c8WAz?+@c8apRzH5N2YLS4nl%G zhDZSjjGd{WcWB?;QGSf9m1{I~07%6`(Ld>h^F9@irrr1SphpH{(KB1yf8Rm`bnE!9 z-Povradu{l^#$+7SmIS6M6jT8<7e%9b?!`phat#Nc5~yCx36A$+n-sj+*f|MX}{NJ zOn<-U`pS-XoN8DxU#E-z$#4sXAnU1NM5SM&Q_B9dD&TnnM5vf$Oa0io9GDs@C~zJ?oS+ zYPxEborl5fK#MFP^0UI^5P;SB`A^mS|IByahL1*P0$S^nYM8MZQ}v%mDM%D5 zXC*ln$y!$;$e>CpwZI7%-9%I->lybU=I!<3EP{>H6n;s76r(_rR@C?m)1)DlNCbTf zvs!#!%sWo8=DJzhAk_&z?=&adQIt^qD?PMk4abiPIl;?CX*R!8VqL7eRZ;9xv?4^f z+{Q%Jq%b2uqsn%^OE_+q;7#}u8TT9^D7FCr62Q48V)FNywADkKIg^Q#>9*V3=TGSiVJ~+1X5B$s6Z-8Xwz1z zi<%!$sTFCZRDJyDOKMX^N}+9n)D#p#l1fQhmC)j}j0whI^YCNr89&A|{)o5vi@B?I*NXoAA04};=YrV?7mv+6@#?+j5~s7zi3!gw|LG2g zzFa(LutS3IRD*^RY5DX(zj(9+R|6RSrH#LfL0{yRQ|He;vmYV9#H%ENP|!`+c1o3s+uN4~6}R02Goa~??UqVqx38Bqj=i`r{^K9K zg7Nwu&;R`WpUM5g-DYdi7j@_sz)Z_777B&FJ}Wvm9GrS~=&(FIzQxJy-E&Lj;m=tj zD>cf@Z~*9rRmkNkeSHpV4F|(tKYlX)(UFqn{r1*@-rw5mxK3Cv>E;5!G{d~usoC1d zx6h8xKKlyz6;BVDw#m&svg_vZul=e`G#!*Q!v%w8Sb5K@^!D0j6x2()nFC|GZuzcT z?&)<3`c&=2Go#~+&mCCBJv%k}^bnfKsz}TF1iK96 zxN2t+UtH+K5HDnGg0^Y;=J8^eUaTt`7j`hwrvHec0mR_ixX0+Yp)Zbu5sjoXTL$^h zl^1jq-3AR+p%cK+Ht{JF(BKl%MFh(v;!iOUg9XTXr_l!PW*`O~U_mD>ngMq*NCpPj zO$5!g@LEDmEZ4Unh{QWnH^)U|O*F?_!0<8?B~Hi2!-k;b3h=)!9{`+#_~k@`=t6t( zP-xDv0H@^nv=9I(PvYx%W!rTFMix)bdPkEI{k)5k-q|+&sIC|(V#wS0tbr(YCeChn zUi3NbTdd8s^PA>WdLon6MW`Rguqip0PHh~R+f{i%3(n@^@wew@pxTj*Lc!Qc?gmq#d+Fpw|Kn< z=o`K6dw1W4>$4J&<^8Z;S7{^SZKw<&k@0pIqF&RodW#1i;wP`Zo<7~L1E%N2VLRq=BW)>>0Howfr-C#{cq`)^*_ETuj4Ra+ zTTZQJ=s_!OE180zL>47UGpHGM(&TL=5)dhwMQPd!>M?VLS@>x0HR7H;Me`$3{q%`R z)T33WoFeAD)o3I^F4es4rK_&}_}wenRiwl^nqNK+26J>v_`X=GvpSM$-;=vs_jc`0 z3{Y5UPGqt^L7k!v4#OY#*lq$0;~D-^p+PV|Tz$;Po+UD$z@IlUr=SCSJ>2E4K=2Ye z-UQqPtmbC{C<5EwfuluW;61^WgN}kmJHL{d?va<=KTMnN1B=^0dwuwSI&vEGr)eGp z3@w-UyUwupeljZU`el<>54^eU_`+54zC5lm0AQHouYr_cGknR%b_?@q;VVDc@>k)_ z&Vk?A{McCUwqs1=;MGOoJ4?j>!MWeuiM!mVG=`eMWD^YuzYD*#Nj&(mZ!z|*P~xji zEDA7Sn~jHkXbh>sKj6Xv{j0bUx0(229`>b%S^zc!lxJZaqmwwFsYN7pU9Th=~fhHludW9M>)at*@<(*R}|hGRQ+E^o5J9X`W7t6qVW zf@j4Jm<}*qHyqn`y_}JFcIqgmgNOmPX}Yo!>+Uic}y7j(bMAL24a&tKgsgpTOGnN`H({#L?ZE7xem}Yhw4b$;*mS6GF zvuPW!ja2*OzXfN`v|6+Z&6%cIhT(di?UxFy{EK;D^JQ`K^{I4a8MM`-cvGtRq1QGJ z)ssjk)8BCGjkEWalnzMXNDD7FI}z#_&;Uhvp@lbF0AL&V^-^aJ^sR-$OYv?x0-9P5 zdc^s+Ckp$L>HkY$LjXsC<-24l3Qnb=23pU+_*s)#k^cMeu=Q<0tUX;jqN4ry+Hwv= z4HyF?paWkADnJwl2ag}0N6wr+bj!Ky=3%FP!8o}U`7$0Vz`JOE1VzYc_>EGhEKD`U zKP~`(&TwY|_ZuMK0>?KNJEgjJ7VrrJ49EcnL5+i!_j59{$0qvzwOvi;B)z$CBs7)v z?)y5nyuo}QP`K7}jFfCmz0zEmI(!as)~%bj4sLaK?$9rtR0INJEZ6s8H~;(hUXMG4 z0d%{rWg4{R8BQ8Zw9X$Gou-?PWw)W05SdB=wrNCg*-790%#G|)9{ zM9Nd%$nKd|{d}&`R}uLS(MAmhAb|Y|UXx&*8yBGgAT~m@bT#(18t#%S$&j^o8|>qt z*E^#wnr`)A@tO8a`vb71^|a`pQE3AEr>8N!sxZyyTF;%ixGBS&rqz{w+N@gc36f*n zD8Vt&zn1y+EZg0Tz{@ElP-3`Epu=%(!9eKw;+&k(04VXz9L5THUEssH~GWa77eR zoOkr=Q7TeW0stw=vn+`sA>*W@AEaa|vN#HbnbgI(1GUM}%(y8E_4LiY( z|HkGPZgpXRwW?SD^J)G=K1;wDa0W2mbLpO0MH9(ti(wdI-Jf2U|7A>G9Zlo;ef!uO zZzu|98gIaGar%npR|l%gH5e|SQwgpKOacVxz@IIXSyvW>>P2TU44dQAE3`LFH$2tRepE}g49UZNK$fBV{dvw;bQ>9yK*=@ z@9_`q`kr^~^HcO+rhn_~`lm5>bFOaU9}@JNQ}BZeO;9RfWRiNIM+e5DEuGh2SEB2K z*2mS+^!&Q@rM1spSo^#?%QvTM6FWLjQ3%)iq8wn*L+ zxIK?fUVA+H`0Du;<=>pSoA?LC<~k^^r8G(s$U*F=hEg}x-)o0BR`q63i9&>|CuAWR zu##X9>pHe^PWRfRhh1s2Gm#QrDCBiYSBhG(@>t$Lb7kuyMH$kyTteiync-TtLx9Nj zET!on05Lcak_`<*=`Pm#-IQ&f^VaWZVLK| zqhtS@`Ag=ZLCztgO{R;#l731OCt3ezty{Lo9RQZ}>ThM9cPTble8f3?ST788=Z5a7 z|2G~}fV-CeqqCLYX-_KLJm>uV!_K|*v-|q)qVCe0ZgIBsfMA!Kg+F=m(Iw3B$Fv4M(H`r@J<7 z4_eSEK?P}N$Z}K4%Uxe7$trUsd#l=EuQ&W^bbo z+67^|eTCRIH(xB|Ak%1Qk)F_Vb^?IV9p%<^SEn1((_(5yHd<}wzcqE|=%hYd^g9uD z=pvsrJCkN;>Pkzc%{Qg?DR45a%GFdw!*|iY+R=5)?B00b z9>4E;Fo_77fB-=V2m!!y?LxjYm5j){A=x}uvFkZl+~}VUMzdG<%cUsanoGfVZko_* z0V$Q^#Vy1t2D5HO3xk!abo=I=)VXR#zZi6C<>CBUT5^SiK$4C9ez(cmb^B&24`lqe zrtXYxIrwt+3v+I+Xcz07f+hBhD+}r?&f?!ApNyvC&~E)6tIOEZRWtGy zm*Ov17B*CP(+2-;Rw|dT?Hphs{!adFI*l-cC0!#^7wWq5_C3*V=$o{j?T8G6;YAI% z?FTo|Y3mhiE=cH_o||s=>(`b?F0Y7&U%={3Hh--^M7k~vUBp6z=oygfiHWcImybWU zoIHymf^lb|JZ64YT#9fJ!0S}+uK50hG5|0DUEsvQ?5%hoU$=M$z$*91bBQyT2>>H* zWFB9%AHu@lqd1YNWA8BiFmFXbsQ7))SB+ZETY=}^!N>`5ytp)_5Xx}j_8 z2KBTMNE4bS^msMDyK!WIpd{{L?{~!crJE^SuK}A2(lw#$#6%z++MA<2@3w!aV@uFZ zHcxtID#lZ$VZJ}uzBBA3CP$0Eke^~A0*?Fr`-2_=+9LW!YNjp%0``U7C*1zV{?X!S z?xEC`lHNij?GNPtef!4=6p{SzscYx;Du6?A$2*+u25SoZNNV;OV}pU6GV?%tXV*$I z`Hi(NU#|Q&clI?1E!kT5;J$^on5)|MF1r9zC+#J5M)70mV#d1Nr1UyQ#-*5uzg=G_ z{8^>Z1u2qoVr%0A&QOM@$|dug&03}F{;t%!^F6hv(!3U*WW;xPLwn+^ZqU}f-p6+h zhUoWeiN_|qKWt6OoBs5_Mr>fu0r6vl1KW&3@%G(8F7;O*&@$og(hjx=|bE#!UnV3itw9DZe%>L!U^dCzv$ zp+U6Be?p!;PwRr|gVBk-ahK@mcDggCj4Mx3jez&5zC-b-fCvyhW6XwB1JKD`2cr=S zhEjZ9Uk$W6gR@8WYYue+>z0x2d0MP%6(HVmOZc_e;03rqqP4!vLAsO0RV$LE| zlH?}Uwkdc{Ueok9*eEEKmsko_GhXfd##))VNICBvo$}q-X7U16gj!p1l5e++L8szA zPLnUFXEk!hC0D_n|mn3Ci*lvv{&7r-6 zvZw1iOaiqzV>NO4)XPWAT6nEfn!Nb>-{g z3K(ye<0ry?3px?&Bs6GH09dk;B&Fc#c>c56DG5Hry|+ibf>SIwNUc1hJrP1Jx%oFl zy@4+qZp#k^-%yM5GTvnje>8tQO@;)2-kn|C{+2>+djK`ro_*@V?}SnHCeMCzMeS2z>HOYB(Z2HovxO_uf=RjI~`0%}V zm_HHjw^=uI6bvMZkk8{KmzN^`c4Fb7#4H18WxT67nwJ&>m+k74sZ|DSrM;sy+7l<7 zw)X4{Un=Y~yIwcmTk_MhPep%RY^_@7heyLsjVQUJ@xlC#*PHK3T!@?X#-q-&&lSEo zcW2>sUjLq;lNfa^_;Pl>Eg}MrdEK{oy~Gd@eaL4wT7^$O_w|RvpRYXIz5z27Lm4)j z%?P>#udBuxUd*Kp=%Q`ZRi}X>ZXP$k58#6BCH25;v+i`oX3#cQv<3q))T*;k5oHRL zRB=PK9MO&|n5!Cd3}zbfvinshgJRa5ggdD@>!dVOt?Sh0O1L3c7IQ1yf>6V$wYO&m z1d=RRS*5kwWDKQ6mW)OSNdO_W&Tm|*BEZTJDjgalS#*4R=91;chURIboFk0^J@&Ya z*ae{L;LH|1Z4gKYr{HvGUf$~L+ZnEr%M5l6jszlwQXBGbWJx5@nH7D)L{gV_+?CY& z5;+1%N0o#tNineEtglutORycLV!0#IRM_^TW|=L=m6cMNedY#AZJLFNRbC@Nheq73 z(}wiPYxsF@H36`Q%29g}E|F2S^tHHELW4kIYFH$VM%HmVyv&aD&WMbXTWhOT>HWjp z4V|{$tq)LQGx^7(Xiawk2B<$yCNgQHC~13EHkF|Q01v2hTZS$-wM~9tU9GlPR_L-~ zE`$YEyESc4XiR?ld}E@GW?zthOSE0nhO{=xW_iL|apY8GnKP_4;JEEdwAfjSjkHWi zRBHo`$!IoSPrIJGUT>{6i>o7RvB+yM2_S^k*6ij=9pEDx4G~B%g(_|~T))22a`hYM zKG^qa^M6-3ks?EZf3J1vw=*mF>ATREW0rDi1)q8vp1jGnuPzKhKY4t|2keifj*Q9z zOmo88_z&slT*w5(FF1GJYdmP5imHv;SDN2^wEr(&d|j7f4FLOwdwNK3+X7?=yc2^* z7wiVO|H?DpQhSG?cfODtxt>3>vSzDP|5Vn`Pe z6DM|6&EZDElSlr1AysTLp>(+O!W#w@GyoiG&e?w1G(l_*w+eg9HW>hV+5Uy*@xCZc zAx`Pbzn(npGrKPiL~AKj9Q?saEH(colacMf2VS50nZzje?kK+HsBUN`bO1Hs{aW_q zv}g+8J;AnjIOC8sF{S^Z?-aLwpg)(`-?O@i(=W&`dKbH+m6T*p%X{xSC_fw?vshE$ zKTThH*j!>@Z_x37w2r5gxxS`-VY&DimB^L{kJf*V4;7Tnz!UcTXOfdL40^-FFEsBM zS&KVAbM~RfgMU>%<^01_e7eAgj*tB#`=f~?qj8>r33KCP>62~9G_-%yzGF|+OQu*% z)IOV2JIx0KX^P`>@#hzvbI$XFamyq^YP9)NBb|5qqcWx!FKeGh)ZF@kt$FO~U73g< zz8HShIoF?TjAutbytz^fIDJO`rFW?-UQS8&80yxj>qDtGA1mL|Q7)YyI`?qpzdrdk zXSC4wGtHxxqS)ZCrl!7V%_v|@rGK`0{1qz&?&riWH}4!gx}OKUaR{#?|QrtsdT3yeZFLZDr0J1-|3?x(pQ|j6^%!Q;lON*AX*e zD~d0QvhAg6b1B!V@7;63VUo3IZn*$5giKlzh+KWKVVQuTp=;UOs1_S&311os0VXhH z&1wf401Dj&-MA!NVwx+dVy#?9n+&CQ___eVVX^Kv+g`{E^?WL2LRXC#?S)G0m;ey# zyq<*@!|}tbiyK#GL5#j045g-xt#t${60_xY9Ztxsan&ezCi&TcxVQ@SKNAKcdE;RE zXfoR?le$K^KCBwBlF&R}i(6&Q1>kVd(Q*&53`0?M!bvkvdiRFjG810ic*1iN(TjSW zR~o!(HN87Am}d*Vo-TP;?TP_Sfz?LqppsG&wc|$AFfGu$ds07nFLs^&jc%QjB)hdZt=lR(}sungwBhufB`OiZ^B5wm7>Z?x6mH z@WSO}%{L_j>#BZB)nMoZTG#8s(1=lXn%xaeaLM!ZnZTR2O$R&sMN%dF6*cQso3o+O z2}dc+k+)3&@@%SMH5_L}Uv}lXETj9C8-r( zJ#UnPK7B4Zd)cioHJ5dAFY-VVCWq{K%>z;bu*jd)zh|Y8M$8u}=KHz)SJ5veo)u{_4*C8(Qh{^}l<2$rR14I^b5QU|aTgTKV@1u(Ou zePVs)KhW2a4eS&1yApTYxBQWz=NDNfQvi}w@U7!z7%@Qpm42St9x_er3zH}2DG>so z`5vC>1``O-fE2Ld;kV{EkPsUE;kd_ht<~lDH%jI5xw$Qf1?WK6;f)VwM|a6yfT#40Urs$%qAM5*o7U){6quJ9lM8>0Qu)FYQg(*XT!aP*h`2Z#w^5UgaitH-)K?cI$|R#ckk z`;`VStL49k@fm^px0&w`sKWsuK(7z?{A2g10C^PsKj|kP(pCugp?KRbI`1-|#gM<7 zeC9tHXBc=>JopRF-3gvrE^41%UTbZCSD|C<@K`An*BbG!w-&9>T*PO17N$IUOXXMf zyL#j`CVtwQdDK2-$%4$J;7VS4sNU^d8C@ViUt~TD3g!-?skx z*}DrwBmkgu3h^)D+X|e3_^5x!j|F!SXhXChWO~f)<;W;*tUMGi%->Yz-w#NsLa0b7$snxj?H3a361+aF)(XWG z9H~@rB{|F0Ct4SKxweZ7dvZT?e_Jumj1pdO6{S5xOgXM)l^kr znbP@VY%6(aWk+giF?Dq^LNboF>W9aZHt)-nvNwe ztjf$jBh^vcAMT36i}BN85Ii~MmU3H-L|?jNwG*x#J{+@m7OOI$17s=fc5g6i8H>kv zKuR!Yr`N)ZvHHO;)Me}R_MKzL^mnR}lrkASVU-_Etf*nXLyO*3+m@F$0N0=|C$54> zvE13r9gz7T6vd6?m+Y*OJy^&!NJB^1sPoz!s$WS=o2+jb*45Z`tKW*^^XF|ZX}JgV zH;O`n4mEq!vnUFEC-+nJ_aa5gQyeKE879WBdAjxTtbznpke zvz>~(u(WJvD2#yXUXn4Deou5_ARMRVhAqvD?zQEeemg^NtPj0K5dg;uzGP2!3c`d+*r2Bj4`yy`rzwigl6?#UnC%Q1*k+LU@ih zN|0!nXmkT0U8%$K=&S=!wH(daEVa$$zm8aR%?<8XyA5azwI-$~sDYUB3;lc5-UJ&A z)fDsRqLMyY>L{$FGgRAa(}`UubZ`DJq?R+g)!t4{GP5Z*PEt{U?UnoOq_w&IdOfXon1Ouu8=g*?2uTaB)_&3qr_o+QHrWcmg zf9CpPrek|b-;+rt)U`PJ%raCCV_W3EOi&lP*ymWqUk)x0|M7AecsUWJ6NJ!O{bKsc zx_VE6hR}fo$B=&-FXX;5>wImym9@HW4Q(Mcl8?s-9>LVtF$rK7=l06CrxJM_IY0m@ zj$1NTCH}$R76QC0+j*~ggR#GZlL~C=lix6BLtamF_U>r+pvp7wTs-@KMUOa;1DyDn ze8-sTZh7>Lx%PkVidDMnSd{A0lBRq?^87S5rtlausc2BfJy@y6)o7vX+JHE;RsB=l zu(?}ps9B{Jir`O%PclO_I_1m=RQLCq-{e+~1q7=DOF{R%hs)=8-~vbo5r7C1*vvrf zRo$np8eX&az#`Px;mkPATxC(d5VIkqBxR=l03B7o>`0ByXge zn6D6J?=-f2Z1BhRcfGs$VCrP|;-{={t;)JNQIM|dPCaY<&hxF}%_!)r9tFjRPvn1` zZt2ZtVFT!l%wtZ6P-1n>_)>lCtY`>RCb#%PX8^%cc5tbGG|^)_ns&JCC*){lXKtaM zZ)e+$7tbHAuhjddTdogfbbE;%H4w9cw_?YR4nRxB$swNvz`(VxcdqX0<1~N@`7dfU zo?II(&C_6`kq9U68g8u)k9q}dwmLXFli1p<>+ZEZS*JQ6JR>aE3TuZfkd1N@HLu(Guy~JH)n1o2S&;DeFv7)y(Ov!^;j<0SK5K*lp&7 zwX^PPs}9fN!j^Z=?cW^KI<>#3Ex1DF_mzICtN&1VT!q;S^Z0_o!Cas><`v!7%_`?JQLOz?Wc$x(0NYHzqGt%|#^Ufbte&ynoFGoKRo)$yP z9^Ly-db<0!?yUxD`FzLY(JJ}`MCIBN7B?bZz{(AER(nYaDsf=PNKD-E$xFOeO=pUR4TUBTV`l`tZIxw<~#URY}HKeKGt5END?n|-UGh#(&?WS zXo5s+Bo=y{rpDm7$BXjU&CgyPcdM2Ht3ntRW^9cCSiaTE$A-}ZhA*Kv8Unr!y-Q{W zRUZMM>gm>F%V@JVp!|LaP?f72#pe?>6 zCAzkwo~&GW^U%WVxN4fXTEu^O67EfH{%T=toc`&N?zd21^=-E_5A;L3t|qRTwa=xe zB2pZRA8+g*k2*nWFdkt`9r2JRsArr1xq;`;YE{{^j$9hQ&)+IQail$hm1)stAcCqR$H&@sLX^id7q)DV<~k6{;GuKsatTUc_ki}6y{0Xon4Y+FBDb2$>4;@z&VTk% z_44hZbYjcxhyM58!TgT>m6|(wa{Sw+4%){`+{x) zN}Bse*@?Oc1@Lxv>+Rky$mFFd?f1E{w&hJ*GuT_G&dDby^yE_bjbfG9Nb z(l(&s1&S)@#e9u6|MUV=bn8m`sI!1Yp-Q*1hR$)tbcaP zz4sd*j`nICg$eaoYT?`VDg%8o@ng+BS!FT!bYktR$$1rv_KQ7>)hL8CI{oC%8U%yM zz0?~O(=fAUM_f2mR7Nx88c+59@ciLXnM)*C-&y<3!gCdh{H1KLkOm+umD*nxb__tS zr{8jQ@4>i_fOd#K6Vr3#zifU4@+0vVG&4bM66!7^dtW@N5%ukGA03^TFlwr0b)6Zz z+a1tZF!-dtaaFVc1dyv}D=2HYZI3hofOw~7{cQVqUfB#jm00^)a$W&l%Ko|L@zJ%Y z<5SOl?cwm}%QxihAs=d9R;g6Qi#S}&ccl}%3au^e_4yECqwZ$7;ofB3R|hHG8_3sk zS{Cc4H*FKs>(wqz*v=Tqg`U1fEI!Q(o)Jy_-0FQ zt;)qPAt_AglmLT$(P}44>}whs`9P1HAvkD}wyMg~r&ge`FU@PLHS2jR^h_|&4ia&Y zvY^5^NKvVlF`HDgJm%$mHR4z`(#r44b0naYT;A|Bf?~bN6`A(~Ac&f)J}aaX!~k7BJE z_EmI)VKu|Hftt_PC9HM=001BWNklb8M0f6A=IZj-^ z2qPQhF>zQd8PrO$rF;w3&Pv#}t+b)X5^YiotvFhkCuXl@q>YA11&NBPI-;&h#d@mG zg2906v=iku1x~`u=tjae+?=%b*avoQ6ZJM0f-9}onhL&u_S2UVW41^|((+wnX>Cng zHg~1XExL?@pg51kHrFJ&>O2Mr6^drj54p@zX!Evc6Ch)+-LzIV*<7?(M;hU}toa*L zOVAXU%!PD)!{1;lnM9(~b(-r<_C+<&eFXqf>@2Ra8G<3o-Hmm>#2$e>L>-8dECEua zO7Mv&O#6|sp;H?SKR^XdjVR$oa3^BbqED6QFR6t5=vxZp|Jo|v)or| zbSfJ_j?!%{6wny(-Bw~_oxui@A$zSx=vPZEN54U}`OCZ~U?zH;8aOgw{fj+6eI);*{vn}ho{+zpKKZ1+PQaU^Egy7_>PnlN(f?p$ z@!M1b_!wt@DBfW~SByu+{6k`c!FxFM5%Zqg?Z{o zG!qWWj$drukx|yhy7u|m>NiH-nC;wmd*22d^H0g&bx{=nBT}()&ke^LNr1q>OV#)? ztbIuC8Rjg2C2Ib@HqjKaYhUT3UAqs5gP|{;eo=iQVftI&cc9>J?I@j>U%2K!=baux zyeB#Kf$^N$+f|;5zd9+u4k2~YHV^VY9PapG=YRkKFrW!0NGTO!R{1km@#&S1pP&0< z|NGXgmGIzx`y+XCqzZxxE%${jx^^PB^+)#?{Lzk$^UtbI!qm3qC^D1B>bX(%N_nGfl8Y5@$^$OqOE~`(%<)HZ(M*jUFV67dj6Bo ze&dnopI2^3zxj8vDj1QkP}t|)QgDv!^Q=8<8&3vTR&VCCyjoB)_TA|yI%{#3`a($M zZBufw9kgdQI-k{(Mq<2`Y$pfeo_MLrjT-6~03DjF8K}l@;S3mx=v?}0(`}?z+g`e; zT(S4c?rjxB%2}fGvx#ALa;ykI3)%$~bFcwkLn}l}b=b4k?y`ZX5xEb|>{gz}S~KUZ z?jCbuO9ry>*wPM;4c6PXUphJ(hY6Od_~@!EDR>r24%`Sz!Dn1t;8K+V)P1x=uv%-p z7^id|HEvBN$LpinibJXR8EZ*{kWi_re2?q^K!RSdRt?e_%=O^iafg)Dtffv1kxK9J zM2tZ*mpfN6XU<-+D5#aF6(e}rXKZlI?s5PqUmINO+${^l#DqCfDWVCW0@sHFQeLBV zIky%NM=Yj7<4}+hr87MqHT^1CyjvYaM~4qFoBGBoYjKIomCCerN=)q;1 zGc-sbiLffCV&Ubbz0)s*QK)=Z#;?9lGG~f=wir7C(iQq7jEeM}t>Tts+={KkBQwxWbkM@o^$=>XXet+6fApm|7}~^J;{M=eBR;ZHQhu*wwp$J^-k@y?_r~zjyD-m0koA zpKsvw)mIEeG9H`%p24lHoL=kV=3ecA%$;|s+rfBIU-{S8H_M2+V0>KNe~<ybQE|kJsNyw?;}ly%_z58EuU3J=`sK=7u`u=PUjn%&cuywItC0ot>&H?bw3W zwE+Ot?6&HTHwHU5>#Y8THu)S?zGLvjk!AdWbs@reD0{zg`2DTH#I@Oh(fGN(GtI<( zJz_t0Qj?cfqmS27sSzs(g59Ii?^AbNPv+C-K4bH!*iA$sH=m2YRN^ZS#5>02ou;lU z%@8rY>N_Q$#G3}S*B8l*H%pwF$dBmnEzmaPxT2<)<6kSIT_zBO7Nlr(lp8hx2AsFM~}9fKsnWG#giVY z{~dFGff)vNbLQX6w|45fWtfI0Z=Cw(fBi@Wa1Zqj4;{zxf}6$*sFo^^n5X^f#!cRR zb#QdR_=R2fAL0AM*Clx@AoZ2hwNu(7K_m7~kFef{+(;)Vfw+X{1Ju8>ey!y0c7G>Q z1n5j-GHEm;v+B&J%gcEymCjq^jo55e*DuR6#ffKfiUn>R%MN$HRSp-}038UBA(UNwhjFVASKQ_N@uk0ou z278*OK@<5PGuRprcGzlcWzG1SyL^tGRO#A}Y{`Elyxk~P)q*<_M9skMdUAT^S@~NV z7yphr)X~;0_nU8jXUB2MrfL&-w7#W~JLm z1{9&1L-fji2AWEYH?&j)Aokg-YS$Y<)Y9;+zsd>wP{@0l{oHKtme#6SEa!PG(P>xH zN<(QxbbCGb1tT_VOjs2`oqg@p!cd{!$cKF$cWEg?!D&0KN*BCFDy-77Kf5%*s+j=` z05<4taH~Yzx4?imZMeX#B?P&oX=XET7Da4; zz=F#W;>R4Zz|Aatm!bvK7Aj0HbzMo(OLhF2F~Qf1Tkb&mHnlHl8QkAFPjrqKm0#BN zYa-R^v7_#DEz5-GYJi_3yEHPeU=X21pPyvN~@U(f$U60_tIaF9&Oz z19*?x^Pc#1Ia8-RDuFf03t=S8CPIkM%q$rH2|n~2Q7?32>{Fr z{K|d?N-^^#;jj}Hrq3Pr>!wBeiA24>BMuV)xJ*gr0hLZF9ZD6o>N9G=T%5qha$n#0 zu$?f%1lRJ5tEW$&I5{2fRbd9g#5xG!X5|J8TCYkDBAd2YB-@`epDrVm%`IxNi;zMx z2z#c<@&Q<}w$h}Lu`zv zr?aD2&#)i0zjaP7_)r?g`*30mfZGyC$Ab3>tlJ>r1!H)XMYGmzIJFzS^7zj}ff~a9MCRNz(T-}SJD1)pB?iw%tO0;7k?=tP1HSdLAU({vAF*F|uyUx= zFD?#UJ=gro3&+*ebnm-Bbare~OQ zAZS|~@6(6-W*w!XuX7VPwqK(9NKAj=XEgq>)^$t*!6cfh=+RFn7ML1X7QJNeYuw_D< zeB)?wb)?V9>T}iM3zvI$`rSSE738ojRIKW&^>0b#gV~Sk7v7$o@b*N->y3);;EsFa zEdmrnJ*}^=kf&>)L@+IC5-PF9HM@NPD$tzijM^*}2aF-xiIgy9@4m)6)nG;$47`{q zJ!h8~oM-DptwY0WLB}Vb`})Jt4O-v)CSEgyQM^$v&aU`ECnfZik+^9JQtW$9b{1L; z5L#PASOCCY;Ff2hhX8S7K!nlemSfKdl)K5BF~#7RoFJ)7Q_~W9Mszc&R)|*9RZ+uO zs=u=8l@~I{tb^T9wy3ovbzQad)n=4dC59iPq`@OV!4KdzH}74e{Ze7ul?LW&@FZ-F z5kz*q+X_t9sD>`pH=yzY#6VLEA}9dl#%uM-2r(i<#e=#^#Q~zKQ%x1)j-{vuyG9Ky z^5ZB~HD>%qo0~e-?$oy$+)IE)G747O*x*K|s0>|a^C0euEdvC=2UTd(x$&LsZwbL# z)7Od{?P$K{o?qK|e#>g5x|=<7^ML{zNoYjS9A4Lhh#0YmL)FZ!yQ*Wk7E|<;( zk|qG;tk?*Yu9FV(D*k%8UA`vaK(MeS2&OMhzex-w$V(b=O$P&EY=%wS1Y)Jac6&XR zHELN+uWt=??Rwfz?WMzEr{kn&AS76*Dp1ctD$Na276XXdRj(4YViBd;8C#W3N<=z5 z-`^0eD3*!How=shsTrga4cV%Axdjq%M8OLcJkMWVTyN{H3Un5zEwy4*NB#P`#IOSP zHzOQ%D$Tt7g#Zu&qZ0BOzzA)Ww~5f$WOG+3joUC{tE;3ZhD}%umae;o%L*JKzm)iYp2bJ=*N!VpB#9j+^PxmjeDQl^2|xSD4TZsY%fOwgv6eTHP8ZB zI;L}`PX!tX_V&6xS_fG9#^C9l@2?+7!C>&SV)=_|!TQpqg&)5S-Dxl| zRmA5`Aylt0pIBXgC8^QR-LdyawSS`@>z5e-1~dx>0H31Y&YV7_ZxC=-)c=9@0bPmt zS>v;%)w5KmOnBFU;KSju1SQv(jXz%9`1a@<^Z6~e_iaSl?8)#G%@x6uy*3*JC~ymb z0vr8qa_6bo5!Jg()%&76^jFLGMpDZt1_vU!2LmDY=*e zAG{sA`v5=?EMe$K!2}RVcuFd;mJd?5tOz6Ce!f2P&1F&?rOos2+_^NrRXI9Mt{*)A z?6%#kZ0*up#}?MNsiw&qq%NSu_wIdC&|b>Jks4T_;tYQAMNeiPqk2!Z}lN+(l=o~@#h=x{|l+Nc+t zM%^g+^#;``G~S}v7swhcN^}lu_-bm z$*5zo4RT6GS{M0X-D_1^j;z&CkKsp&QoS#$h|o&ciqz{ldKk&-$=PUGBGRzoV*e<> zAi~Tl)(ilscsMW&FeGDY9Tm?qy862hrn8(Wc&%tRi^&-})>+SUUC@fBtS&C}Q-kxo19kyMO z%XO~4Y`CiBHYe*Kh9VJI3z_*Q5-Jp>YJ5!T088*SYHjND4jB8yKyT2KAZ@+Xn2WEi zq)o2n;F+7TqGgl}C__hKy8)#FF*IJb+b3`{&R;rcK%%rMCPIF~mO&JNz=q>7w zZntatQ;wIG7qup@*HJUl?mj)=p=>})ieSd57Ex5~nI-pc(5|R6ft`KO2t=@2$Ru{qDt@j;qikcRjIy9(Ig4P>rW%hJ#3xh9{lsP`7YR<#YA< z<=%*l*b0*R|6uPu!z{h7GSPSKFP>a=D(9-M(79XPtyT`UWyx4bPGE$6G125?Ff#)e zhReek?##VhuHh2wVQ?5595Bw7gDljNrB(;EI*01&uAENJU*3Dok5iIcGGiNN=HX)d z`&YZ_sj7AMUh8}JTJL&SzB3utEihxFhNceywvM4rXadZXZ}bZ{WmYlpQMWJHMK zxq2!!pKvoOl#OX~DH_t7RJqcM6|eWUx;RqRZL}hXou&q_pr?q^!Aj65ASR1(1i~p( zdDV%U&Wn8jH(Z#|z9i}$fgXzhs8Dp2l9Mv6f#Qj1DOF$6JeE;&uFSdwU@$GB)`2<+ zv@+HHx|`(?KvS<@6=eeH5MyCl)m_!fCA;-Uy1EpjS+bw46jr~Zr`3NCoBvBbwvBsU zLxV#zd#8TP)Kd&zEu47lmZwh3UD!wg5M5sU@Ddr48199ka4`dh$OQ4*7KIgp$(!p7 zX1lam+vh(J=fr$(cE0=eecC!RWV zlcSkfczEcnu{&H%qvGN}KZAt|0Q}H?ykZ6fI3Yf84Cgli;K7}EXg7!uMEK|_Ji9#D zd)qDhe|BtAY}-*?$UpIwSD)4-S|^2sA0DMW9$BHQMOqZkDhn` zyla3)AHK7@+LtPv2;Z|>zuY=D4p)0Y&m1p`I#Oy+V)7^UbVNI{rHj$WXZedSekOkA5 zRjs=LASxyAI)3;eZ@VUFc(?O6<42CRt{?p1vR&{YX#Ewv&-L%|=R45~vwwT+&Z$j1 zPK8^#PVCy_T<(D%B|moR?*5fz29-UT6SwTHUm8Tj_|#c^bq)Xy4&rUMB4$9b_La+b zdl!59;SSm-AKsb2G{J!oN9S)}e|~TTLDo3+rX8!-rr>HgyLR}(vGFO6lG@oHnps?) zRt*z?wyk3CS|95JVh1xNZzq0haaH{-Xzfz}an)HZtRXe(ITzTUTYv zbdHU^uv0JWksaNBxcYnIo-P$v;K%H%|EGP-2hVWw51RK+tjpeyJ*GJx0A`WD)c4yL zXFnURelMDT@A+SGFCuaOj^XW@Ow1nc-KA^RfJzM1y!GBqbHI2yzPaYt#xHH^oy!oa zG@e~gj-izRpp^2wsLlL03^GjvfMWK%ur0Msjrji3_%JdAc!*9SS4D_~i=OJ17g(C6 zX>dbpwwBGM1XDR!@3Lg4mIwvU+f-fZ;7Fj_Lga6`Pbvl50D!uSzy$!QaCRN*PAt|p zboj2`H}$=0CN^Ab<^~H+7i2tP34_6I=*GMNfFf`#J8s>f!o;P5_pG&XHO-k#J66|A zX=Uo#b{RTqb2d8R6|5JlaQ$rFWzJZA`+CzT4-_6VzgU%5yp@b{bpVeC>4 zvwS{1cLF6M*fFC=8=TZ{7SI^H7@f({LSJw5VPjWYl+6vCm>&YLVBC(GbW`EVRgNS9 z>A4N(G2{2HT>E^q{=H1g_n!X+k0I2y&gHRg0Ozp^i3fOaGBLT`=^L?~h5or*ZK3OW z!K_FK_^*lh);wnbKsDodZW5jjVxGy%fdvI--{R+{(6rjI_Y8_>@Y3n>HRA<+b5;iz zDO&@fnN62Z^&k{@x-nI_*wYWc$5?*d1UkFnYd90&Ll*!>ZwxeJ=;ef} zaQLU2g+aMKqHq71-b{ZsThqlkjy}b17Mo@pfpxI9w-t-eFZK;b7kW-N=&TAgtaYLi z0|5gyHNHTCS&HPDojW&o_ae#QIVycnTn=tT!py7G_}ls!5HPWB4CVv~t_>w2Wjm`r zp*r?(pQ)p(uYA6%memg#NHA1ceM$zOSXrA?OFo%^31UD3 z2=d8~=F31CDeu7^@7L8UvuZ_??gc;b)o*z!m=SBL{?(Tl#YsTTiP8sfIb6G*J9DYG zADun=;_E~qYVTBt56uIc=#2$Gb^Clz0t}kv-CvvQnJmf}<=#BBnCs-4jU^o)nuS+} zA@I|;VyYVeHXHHJU+M{bVW9E4?khYZb7_=aeEd4rt^wdj_HS(K*&v`9bboxYd)vHe zf$vPsPxNdo^ni)#p*eFM2^S1r>BamY6t+s`kXv@qH-JdfQTqum(9HjxQxw*REO%1zXGRy-8Rm2(2udoiB)F zm?|;ikr1Qo!q{^cW@aQbEZxyJ zZ)77!2Y^sNTpPMO91;~@3;m~KOS4{~a{8RyFrWm+da=EKE2(mF9!(bjY91D9U?6GW z&4-42dmfS#NjsLg3H!Fw0Cf;3guISTkAr4IKes9>9k&>r2giF0>#?h6!t<>LyvrFU zD%N@4YQ^8+%nYZtYeuXE_tV0SFtK zyKc8{4|)J+K$yQHH5F!KtOKaQUqJKgzT5P=j-1~&?e%u-8P48GNncvdLh~O^+@v;V zXWI970wJUa8vpx@CvOL7mqhtdak9yqUA4>`ys5V2$hvT^ zckMAd4@~!#nz5y0;iqbxd-1QuAbz5?YclMBkmb(GsZ?1uYqVb9S(zGdBzvEnUH*sQ z|5`h@^x`nRm`-oqAAdk<$pDrfS{ZjU_7bDYLFSpu12fH%URm1~%VAKf#HH(fi=7(C zCJqfJW5iKZIe$4^3J~h(O5?y7Gy%mpyNrAl0MZHTw((3xC+7OxynD3-*Fwz3E!$ul zV5aN&{dTUmpF)dfw`ZeVABCFR0e@#;b%g*_M9zw>e1VnH)S0UjeF-+i^}7a_DU=;RjZ~eI1nN}tfu363bSc`#_G9PK~=vMI;i~QLqPdo1`{mzB|zbMiFOJZ{( z&CpYt2HlWSxsi;*0Q|4EN=yXXqzq{=M7Tw1`?j8tRFgsm2uQJMNa(H53s6(xKj)>d z0LMk6(LQkSqdX(ejLjuHw*m$RQ-vu7QXrrxPKQ53Yi!hyf}wRe+5kS$Z67bh5$lfi^=DK7Pv|62u+Hi!H{0ZDxnS# z*Sl$bv_0@hM$U4Z=mUhr42e+ctTYYW@M*KEgsTtAgeAz2E9ly~8TD^)t=_JJGO&SG zi3NaqHMWbp8A}Y7l+#g3!Aw9Vm=e$!5aeI$ER)^Rd|}G8r%Dd4eEre|vxj$%8d)Nt zIdn2OvWiNqOS`FK=ZM=KKY6C^OXJ29BfuH*x@(kb0N_H1#W64;kWo~-f*Q(B-_jLm zzNRA@HOppJg%)nysfljt5zqk_@EvZyZu`luv+Kv*_CNB{)i=BPb#C=M&Znn9vh znTfFOs9E-6*qoMrtB#9p#4p(=lZ`HS*zWG(EPxg7;#Zo_y6`8^@rtOwO}N)t*h*CD zEvH!zWcZzp55KKQHq?8^fn7f`JfVgstIN43)(S^XJ)<^P{TVEdtH zJO-V?r?tW}qQKxzn6Hn<)1fZh;Hp*l1TBVNyL3xzC7acpf%x8{R28D8-cup6X*Ep@Ip72di2rP^(PaDx=RHD3z{MOC=JsbycT~t0Su1C+z z-RfNF8-$-R&)zv!T^QC?EM_L`9c5#<=0^1vME%58ZA}9`BFA>C9sqR;KBF&I5D@52 z)pJ1h5XeRJd3|w%JOGDO_72)cMod9|R=;|R7Ss*Ib^->qzOLc7cV>F_46Q8E>0{vs zC4z1wJ3W2d2d`XwPyO;nAYZgJZQvL0!H)D+%a7C$8c>WcU&1rj0mg8bc;kL6ZGbsE zIUgOFMW~@W{lZQGF)eme!yK-HSrxf;qF*^WEX~^O+LI-KxguL9`efb2Y6YJZt0i1_BX_l6%S{@m>4%AJE8PRu`hrEvVy$8SU2gA2#2r!*0NP zE_!rUKCXfKkv5?d@PI$|rsj^mC(b$_DF4>EOP>zDle^o$Eo|;al>*P%*+hRQr5f?B z_~fpg*f#MJB0#KIHyTd+e9BPERrq{Z{U49_u_ShMSiP{^zK$qv|4+#b={jO*)GTSo zITN!X#5eh22`=ew2+2T*aM}+PlnxcxK{ch-y9$*(@tuZ}81qBMQV!DFN?#;x*d_?5HL%|9%?S`Up=Urqu8PZx0Kt#^K;&0? z3ZeG$;}!UvB6vM}!>}$MkC@wNMR{OF3CXsm0f&NA*Ah0N6|4hbR~z&aY3KkF z@Jpz*jf&9Pi3ngb&eyGGi0By$U|76Tn;V)Wyk`@ z2oylpXi=fH700!-W_EWN0a<*VFPL7|y#R;38p^O*14i9;Ok)GtD4|m*GZuzAK!C2n z^{{CG1V2R8fnqSD=Ab9tE|{zJf?L!8M%fn=NwOl%lpR4)v|FECG%jv5)>iBO%Y{t3L zsRUImZZ54skKlTVg|3cb4+qlIQLLn_2G!DN^fsiM1QQ(Kg>F>|Bm%t`798kMHPnFs zU}(V^)Sc{_VV{}T1FyY#`&j9y_M}TJc!pf0(qtXFvVBef_T#y~Wqv-I^Hq z<~H!RvEE)3qRr?P-#nB9Xo}$fPCb20D-iI8VB*JG2Q((1fazoGLxKel@Ly|w(>H~xzR0EdR~!#B4nVtD)t zK6eSs*wKR@yA4ST3>;g)N1umejHdBZcZ!|_02a_m{CG68OZ5;?B=-Z_rF9D0F!PY= zCr|_ahxE(W$OXV)217D|+o~lHbf4^dP)-SjKt-R_W{=g^@&0FVy$nJ4fxWnU8iL>i z`0xpw-vkIR?tQ04zj5bnZ^UoY9a$Muz!S0Se-=9%fk##BcbfMMM%h|L`|Rb$hX!Vh z{=4qzEoWl+XXSfKyeI&MR2;dN2EwHb7$OxU4zCI;Vurfb_m(TS?vnqwQHFu;{nbAm z{D%vo8s*Z?nZ9*Z=WjbAK1UW8uW5R}J9x`=AK`TLg0es}=mk zQz-keH2l=<*x3&P@(ujeGgxmz7x;-ov7a!EfqJ?g9{A{rUGm%3&RtaJj;SrL+$uk| zc`^L;4C9U47uV=l?})!O(mNeyjy4nSsUZ%5$FJbCm!KFsd-UJfmwZJ*=yK*ndF1gN z6a^i|^RM5rIzP^yhI8vTUpPKKMKYnCef`wZ>Xd4lAh4j9^2*!lLi9Q{bgvu}AQ#a` z^(*J7LBM^g=e2UO%_aS`Hg`-^0NkcJ-yo+=Xd~197p9MW(!3@eqjhpvIVQn);g?2a z1-IQ?`)#_bTc(P6{qN>V9~Rf75$?IU_CiMcn~l zD`ThMWiSA_Vl+041^|<_9e%g1bO1S{xn$G<4rDZ#!y8lw07LUnSZe|lvFa$QH^@!^ zn#RwW>sn8a4wScfgWXyuglMT?)+$A$6nH+$c|j#~{2gP)kMwoLSTL}txohe1gxwEN zB%M4i))wa$Yl0Q9kcU!WpjgMrIoLWFs7HA1?lvOE`6Xou0O(4}k?uLlxsf9l%4WLR zXUvw^bpI%aotJ8;K#Mq;g0pPeoEOy;BL2)T(i3>>Wv-Y zwSJBS+yKXBL4Yq&s6p{d-i(UjIHkIGD!HD9%|NBzc&L<7Otq?ghUHRn+>gi`Snumt zShK5_<}KUxHc)Zlk8o_a>J|`cGjp*Pu8^nvuyIjBS73;uJLlwFcmNs*>ZmD147!dy zBQhd%t$UkgzYZm2)9Mrez$9|!&V8vqLAouUe_S4L$cokS?3;@#;ve?Wt%ZbBxj zRyIINM)xPL7qdERjUqhTzo{`5Q`ETS1*) z?xi=b_=-<2wX8A{O)${xz+wZEAf@rMVAlKimdwT`wWf@i4s!Yny*k>Nq zmI3^5G&93@87xAQU$rlORKE(~wQ}U&sQYXd68x-v?LQmm6mXa9`(5=woDBt>vsV5e z>v#y>uR4BTeP2?U48CsW-eo`KfyX%hhy2=6nFVmlSpMzUV|B=0Hvc1k-;Sssz!iP- zH)CJg+!3aC#Q(s%xjz^spr)1oBz9z;8~`RLChS;D+cmC!GO{wz891uRa}x)9d-ee2 z`sK5;*VnFGTznaSE$`tIm$yE`w;aIj;~=2vm`u_Fwapm%DwK7#v|q|@v4r(tP!$Bylt_JPTfe)aff z_(zMyQMHi)GC*d6d+t};+tVr>^U4Ypzy=n#y;vSTVithH4O?w8@GQ#DqTHsi0fPW& zsHW{-QbIv$spn_z45s=x3BoKD&%%k8>ci#peS_rn>XkRlT)H|1Ujwn0+0;f?1tHjD zUp}@C?auxx9neSjaUVbxxbM@>t&j)c&1(D(HAx@`;hJ{7Obr0js^-wsyCaIR<<|1EPTn3;ewH-e{km;WsE!XMXx_mNX?}NAy#TfUIxDOVa!*fphk1nh~ z{?f>D%P<}}2up`zJbDqIz61cfd+~2}>341jO%5EXRQ|YBz5pLL6kh)sk7Rsl8DDzw z>nc!%PWYL_+K(o*zA6A!32=NHLT#O}zUu`Ku40$yxX;*Wjq7Th9~0Lv`pfB$RVIe6 z#FJF&Om2?u4qB-;Jnv%r9y#5K7{KSm=KI7Pz+G(ojM~@7Nr10X>Al*eua^*DBIB;? zy|!XrVkZB}u)5X-Od}EKx6NnclhgWx8cb&C%MaDm=@sDjafAUgM(^yr^>zMU0@dOD z2m8xk({cj%nQ-3}-=gi`&HHx)(5f|i=}A-P_UrPym7)0RspLCG{@vu*{lRtuS|a>X ze4(a!#I!r;KI{z;;E{YRu~5()fTn_uyW9~0gruH`Ew37N0K;MWmF}p)|9EnPfs^*e zMYG7nBzefuEF~DoTVc~85aP;sO>0}HvKY8-R-U$36)_mSElNoZKt+$rZS@gG)QF&GA@wf{oYK21P07`O)dH^hx{rz?owCQ{|0Ce#tIPcVZv~07An=KVl}p zDAbX!fEgsTiN3x8Ti4(EN#@NR_q$sK+mLeI| zoaE{G%y?r>&u{jKn(Q_kF&X$?>B^4IbXQ`gzvB=xF2|c|wP#w+0t&s5dUZ5$bzpd6 zeW(Ws02+%?X`3tnDt$+3~)oj((AUwRrryG}8hAQ7BuEbo@w40XXD7rB0otoTljQ(QW&}E(kP4@T@xb zj94b%hvdFPQLljT5k0RieNkKm@LDxY2cR>xF}?yKQtcG;oLc;le?o%y$-W1I z2eX`D;wR+gzY2~7P}?|jOW1952ZL8-{-fa$7qXw@zZX6{&fNemMr-erU#KC>!1&$p z`**7$0E<-oko?>xIWcIz6}{%L94F8QRX?FVf1PS3#IHv8-Xf<6R6*;H)s=ZYWpGMz zCwMmGe+Wr_no5e9tDSc&-*$hvT_YNa1s{)p^-FD|F#Y=QRTgvwbx9rlxObL;JJskz z;R6X+3cRKoQoFLz&AnZ=6OLP)U~of=&gxILje4{3&_LG&gIk(T;!L9Cd$tf7Gnkl_ z0vNbf#q}Bh3?^`R4A~eMXf*NkG9pISk_U#@Q*i*uxiiOG@yQ08M0;E0+ro*1z$Cb> zYMs#wq=A5d`N@cK>*jQnaP|IVPo``)t|r`kD2}hAwUvB+xwmI6wL?VHHGqL?%IUi) zn9L$wtkJdQ&5!UksfXJ;H{Tq;Zy;E&*68|Tr8=}t*gJ*k>3Uh|p9=kzP2bFg4FGY7 zxAKlL&Lj-Blb#-13g8GD>-BbwaR&hwEGmrQ5V_ch)t|z2dBnj9aQLqjQqKaT2(PNC9#vTWuI}y zr7KJhCr;B3@_*D2DErwvMfuR8@U`wi-2!<%^OpNcA zMb{}+mfU)Hl_^2gn%4Smk=qE^(5jzP=fY-71w=x?*3cKja2y0|MELv$)dQG(xVDt`)=}20&K$S>~!}`CuWQp3M_5bIC5n^G_|d+o^OCu7fZMZ0GQI% zHV%icLytgY@^qgc8{-T~l^2aK(L%MfwtM#MPz$jH@uA+FHpDH9nK)12t<0VaoP-NN z01xocDEA7$Lv(_cFHwVlySaCir-VX;=)91E9M-7a^9-<@+2HPV0PMwhecJQfRXi=Y zpv9NBGC6GB6ijq-qFAN5rTj;+Aa%K;W8>e)Upc@X3_d9r|0?>j3pv2?Tf^=i-)Oik zKhVA-Q!U>%Hh*9`_0I9%oE*L1pJ^w#iUzuINSvuug4Vh6Q_mfoZ%(8iY>afv7z6WW z?TN&O0_!YZ(;6BIlK|F?=9d#|5h)GyBduM#f*t^yTJyi8&NV0?;7+%1r#@@^1jxP#zK;MJh8TD zGy(KSvDY+5EY=kGnZ(9rvj!lm%m*7|aiuf(RIG5?E-{c)`oqoXUb(GNwZ6L4`fN`( zbxt1c&)atXRQS<)R7|>=ZcY$GEOjoHy)t|)6%OvLP8wMO5};SM2DSwm0*adZh17~q z@KelFLmI5pdA!I_Uo6M%h(r)uQ*u&R%V84E@d0nNRz^Pk49_4vc~TH^f&j zq1pm~hL4=n24EOU!qNd?qQ|^JtYR%!~*#lG6xgJP1o}9hKTIuM5 z+hLyFHB_GMGmuD}t|U(^8oF%68r~cCH%*%vxUh~-o`HPnE#aY^sdo(h+*tQPe?Ug! z@|^yRNQa{R z1RvA$E97VbTEf3d

JC)$ga1FaQc5*WgGffVyFIzyv4({gu%`l63&{qJEN!;>p?F z*1GCy)H~?H-l1Tzk0SCeF6>n+J>7<%&@UbsbXNv!B$9Tg26`|W8ECPTK~cD$(5@Ai zH^$d5jE~sT(q>;hww@m!Xmsch1nf~AyJRN;KFK56MukEE(<*gPb`ualeL5qJQdI`HN~zeQgda zB>))gG#(j_?I{c5=~LB>FXvY)p%%begj@aR4RWMddN3OA?}+K6h;%2%3xz_H7U6x1 zUuFu7#n9v*+YX~ET&bb(`UC& zH?MWJaljy~AB-m3!&K)*{iIf6z=C*1G|ao?bn*L#TS>iL z3-Q+DLCyjoER~pUkSPHQ@|L$6f1y!J-+?X@n(A`y=(TV21_*GH%||;HUKS_>XaJq* zir@Xdr@!{7{H5H{;&(4L_x!L}_B*mZ`vg*8U5opUElNYxC^x(5oLoE0vGhY~B+fAg zi&k;HdQn1IFmxV_BL+Z6W3zVIN2o!pb9VbO^XOxwK?`$k+ zG=ml)Qf3Y<2Z+n2tOVKlOg@65(5*SuNNSg zwDin|YF2MN_pTQe%SO5@gKmy2v+l2o%5vZQP|F-^a+Rc~{8-sosyCWkS5N?i4>ZW} z1#iu0B!yPQK0`>T096-N06|GfiU0;&pF<5AfC$VKAc%}02ulvII-umwMWuK>UgBB$JHE)ZmE zB@E6;Kp=T$w+$b(-WfUA+G?29--sKMVAZQsI?j`&1g9)a%*nO*S9q5 z3nQYK1pq5>Iu~L3V4yf4O4?Qlj>DQN=paHxWV&LaPk@x8Ro#~d3Ie2(t-2dki}j|V zzN@kMYi3fvvF*1ehwt~M2~-j8pLMJZnQt>yQgU=T{POesN!F2sr9lwzYJd1G%{>C- zQ}q7i+2dv&z^y^=Pd0BdSyNCSNnZS_wF+Q&)cNy`LkVRl@D~zSKV>f{=CL64j{0q# z$}SbfXBH}75F2dB$%Ey0YJ2--f`R9)jrSzZMZ{?~-q|=j8fE~#Y?eNo$;=q9C5SrL zkB0AGYh3qEj3m4`5z;f&U+Eh@==T#Sr#0V~sZU#P(aCZVoDM%V>p$r{H=J_!rYGJ$ zn#T5?jVt`b`RH-?bRSoT?TNRIWb8u&8ykG$x#%M*LR+9&Hm%mFUJf)6V!Mmk5yv2n z9iw()pynthwkE4x(>059024C#EA_)2%4YCWv8DeSyCRAEl>KYgAaYh;M zY#bg7Gvwof$o*mb*}>jrSZbj!Cqv@&h`LWMjdr#%u`@F0Cb!@)N z`t_mSovpi!pY9bqLWu&eeNDZ;xi0*3edfUH6J2}n>MI!5`qALMb$(%ztRm;!K)A6r zaYh4K&r}&{h4F8?r9hn zt>4jqx@VVM>@r$W$KM^lZ6+_`QGQ?c`N7Bpg{puJ5__p3xQE&T&4f0{YzLb;cFYD)>ptfhm*Eo+mpoA(=U7SJT3 zGr`9e)k#g4DOiKoTk-#Q@#!xIzAf;hw__{|0P8h;@M(B10O5lDe*zvijqI)W{qN;p zc+DI3dOswkdhTyy|KkoJT~_-12MEqj~Qg+@A# z4xw>9Q_I#GK+*B-B{x{J%s}iLjp8uF4edza8~&QgW8RUM!+gkf4%4SL{rKe|sM4Cl z8)3sxo(=%6jeHWJ212x189~_1G4ic^P!DbH_DAjO2-0EZ*>Z}@k6*-s6 zg(+u^;|Rxac?0zT06b3?EB&i}OqC^kHEKtdE|}X?k^q1=MA?s8+GagWHTtwUD=o_L)M_iOaRi_a&q0-CSWXWv zHWh1JJi6Sclo`gtn3nHMZZv3?HIZwXnq%7YgHG9*N-etG!b9#%&5N#cDUDXxT6LDZ zKr>KIH^KvXVY{J_jlF8l=`osAyXqMAYu$}HORkOZsvNYMqIu1u;L1q72BJ!@T?>;O z2zX(lRP9YO2(=!o$(aQ&T|+!cP%G8V^;`>5)C0{P?7$|d8> zrrnQ*xiHU**Or^|8+CXYQNDJ;x%T+QAoC=GbmkG{i8tjJ1Ic=YE&4ybq10bpEQqy%EKvb;P{VkuWbu{O-{FYCZ zznM>20CUi)N3vS1xAgCBY<~ZA^4G_HYjWZ(_S=*8wmPD};By}d|FDTXW2+Zslw%`haYa89*PQM z=JYR*b!2Yq&*k~VvG6aQi+$nBus!w5108*L4&-Wd{+aOI&AHCtN*9RE?tXF;~`PDUYgM}XNLNA!ej^ej3sg%Qj0eXjb@L_ik0S)25 zEBW|Qt)Kxv>F@p#=a2xo6#h~2$uH?^03Hb@f5Ev!XAueY7xANC3FfxHXYu*J_L?{5 zT6$vmg?llOd1>KV#y)ZC-p<8LCu%dPWB2T-UKmCMv&j7%-PW<#;=!k6%sc75g1o*(SIJXG`zJEvNSBL(O(W$$F2^rF{v-~IS#YOVt zWA%5=^gitE;)u?i7k?5}mS%o(GGiR*$uFxT&xapwof(YQQtf~372N#>xkCp<;7@6@ zPqtRN|MuveJBwC~Ht*;;Iljl8>;8tOF9Lv2#y;`*mq1XC)jBrLEgcs(4xBtXy;I4UIQPi(we{^>voT-T z`PkR?-W0Jxmw#~La&4z9#<5YK{PdFt4tT<#Yp)+ZuXcy)sh4!g2)1w9Fo(+^$cF7a zJI1blLu3|hC3=zY+9K*i&_mwyvGr?zUR_`Mr+IJR2!83F%ui`UrV@?$zW?<6>U+J} z|M^i$BfRaP{c~|+q>^YxhyUwxe8XkJ<{dpJCiZ%BU2ww8M^4;5wjNKRbfELtO?z6G z`oREW9QIE}d$X_^I4d^)TFf!H8^+H?`}&b!U{;jgD=vp$r!L>%Q#X97A{oSQUlj2G zjFMA*=NM36Er-rl zI^KOC3Sx_;@Mt_&PZ%>%6sPEFHVh)8YbDl_3!6BaGPF0S>A~#nEIRUee#+d;rNx+( zJt|y?P8H-@uctrEyKR^a-477-ruK+LpH9(Z@!5;w(|%q0>#6nuvn*ZLGysv5ey{~C zO;a;;9f0(7e<{Tgfsojpd&5ZgIQ1Y9n=AbH!Idf^Ll)GW)EJjpIRGZ-5i>;@J^+fa+9Sg^Vp zilVAkLv=3-Fa>yFy9^jx7D(8VY}v9crId3<4iOm{^Y|j(Jm2}Av-?M+CR<(ze)THd z-!J05efQn_etVy9f4jYo82m;`$JYpspV?^Y*&4?}I z*RWo8{=r;{Ibo51qEM zF{XEM@RAv9)RSS=fUaOqc1(|-l-)h~R_8|b887#|TgAm3N-h}i&OPR@^t^W}b+7u4 z2z9R%!!!QM)$n;Yu5^IMcx!7UO$Gp)K`_SG zsvT}EpV=w0`c@3_Mp}`)6;w^V*{!CermP>zma7@*DJZrEx3>m*L5y+{q1$OKQ2zx+ zSw6mh6J-aS;R6Tp6J1Ez2trJ+;ARHC3Q{@;k{xkK5@oSAVkAtiTS{0mj8rp0MCD+8 zz%*mrbh+4xsHsMhft4p&m8W5w0C+Sshg(b`0G{WEf_59(5mW0{hDMcRoN-BVRa`2G zoa6dLK)HeWc}QXseV0%>2gi9M&2bz)%-^5x>m~!C*0y-rod+aUdY-Ge=h66)&#RMD z?{gly1HdbuV%UnwNGq)h z#qPv*f9zysWL%~Ign*^&GN>S>OztXw0BsJX?VIyET7P3%*)C4S3xl@~Hl?fft#zO9 zdsMJ=Hn`HWc|~nVDP7OMrRo1tOhJ*ooy|wW;TUNIc)A)j5=z;5Z12=Fu|Y9;|_ zq?~m6y30Z4%g>aSX`1Si&?>|pU)wnol-^{W79x@%NeNj5N`hO}@JXB36|jS{_YrwJ zB)^uY&(-E;&_Y-HlUd{a@&Lz*$HEKZ0*Oz=F$hpmPG1v$BD^$yk_ zCv!W;zPz&ec`U;SPGzgVqrRkcZsNI2;9!Lg7((yHsZ2+KJf?XP;kb{GcY>J)=7^oG+ z#so+K;D_PY!>h!IT+?5lfSm;cjhDs9+V1){T%1JH1R#fM&vq_-mn~4J1lto-O#lh% zX`Sg=d5*6E7^293l8=nZP5{?s?svpfRfHW-e_y`qusVR-vC7NeGFGB9fpVIN08ili zKZ5I`s`&JsYr`F2K&~D>g- zCC#I@^pEvT|FHx)2mKgLm|EqE|l=zZZ?cg7A2jF$K(!sW7S5C zvg=y}n&YJk%K<$RsQYDiFA@M&srJ`w*3GZpv30GtA6*$Gci-sBS|>Rwo0UhdFL#d? zMU3a~9Hd4J(m>rwTwdy)l4P**2m99Q8Cj1a*BF25jTzN&a7jn`rT#@JfpP*)fX6m* zV`aDWEKhcqIfEBQAK%G#ti|J~AB?QrvA1xu8zJdWmb2PwDvkD-zItL$alRXZ!^TS_ zTR?YZ{{~b60?mzJqXPiqj=WV z((H`AJ$Ui#(F0DG#_WUXo&Fdx27p@8uJysA)UPu>oC&S|m1%8N+6FF8!q&h*6J^oA zwhKf%W#_|mv_nP-ct*_qx8S=zlM^!eyYi8KnI_OVx%#`|Gi}I0itLf^>6BW?-E3Fm zVF1Kit@w4s&Z0zbE^PkrWc=4hersa*VQ()3^AIj!$3p;M&9Iguwgjvuzppls6(-am zmo49nwF%(BaeLsT`pL)*R<)aFA3N>EH>w9!`}8#4HF=kKH?5Qj3YYWDiH#R>A~By)Z3kL1_VrAj@Mg? z0FVjP+pP31neR%hUeiJVaiQGaPDdLYTlj{${2Vq%p3W^j)^1dQJBIL~t}~+AHhU%_1BFsVLrcIGsq0P$GGGBk_gH zb76fI?kmsBBm3f?>HoRm^hy6tCCtvP@ke+fd-%jZv`z`cT%2b>Lk5D&R;*=r)ny%^y%w~KDCsP9Q9rv_;CmhD~LAi zM1)94=jP4BX)hMltdz1a*sbhjA^$m}Jb|SeJOR$|kt60Odh|XULds3szT6=l1>1Gp z*aQ(2&X12}hGMD$zf!MXoug_DjIqPRnemjSB5YWZjq7{+V_fB1cXs8*m1#6x({zo^3Z4X?A0)!mqzt|NWmEK*BrsnIDMh zJ+|qI!E^1K&xf`T3}h3x4MZc5LFnI{J<VP;oGILDkN zrA2^%TtTDldofYzK3ZlfSs7HT9YHCw8&kc5G@_(9F{7MVsWn$&aZN-AJ+1+OS5v&Q z4g%9<@4m(z(LNJeSTCJ`B{Xob)(NU2SW-xc)nK&^Xc!IRhg;p0UHdH9ur!U?&4WCLFhO1!@3*Y9lPy2?8Ran_Xkl3!4Gmuo)Pc2#0IbXrUDX zfJLm%0Wei~>22^P03IO4j*p5S4(7mr%DZ-ftux>)a_@+o(x3!Fe#e^sCw_w%J*bSm zFMKGX>2i#+d_Cef;&COFinVl~r8!GdNI)oIxwizY_o{(Tbq+{E5#+Zi#i)-t2Q;5& zA-SkAHgA*fpeIDJR(I?=70}3o3b&3$;+h&|Dd>zrsaajIfnLZ^RE?77^SaY<%w?)0 zVjf91ToM*rZ-yLDI6_5&2?ofJZIG=H0ECPrB&4uZav4Zcdm+X?Lf<;vgm} zfVc&K?SyIrfG~0zl`0g69Odl^(+x5ZOx^Va$pUPWWsmKI%m*Jx_$K*`fuOH5s@EyPM6~Vq znuVrTBMzVoW|T4sXaMancLiI!d@P#@0Cop$Mk`PR940qYyKBT{!YOpl7hZ}fnd@Z4 z5eeMv8l(q+8vSgm7sQxB)okfZbd!Toq1)aZRGFbbmB1NP0(jhOd@Pk1rKw$pq9VBu zhOYkIW-e!+*z~IvIi-X67UpB!h!3nT63+(+svwi?@1@RPj!_YW&JFB!rO?5 z#jMizj(B?HuFi^7H_v)sXqH4|vA?(bqtWc)V}1Fiv3NT8e2a=HMDJ2RFs9t?1*|0M zFS5tV&1QJHo5zo8z4zYUUFlAguLVz+T4n2U59#}~{0DZ6>*;fJs1heKk!iEk&>vDPz*RnhY zAWG^dTKfmWI04Ig{mb$BfXJQi*xF)k1WG*UJYMS6qYO*|`>-`}$nDZw$ocI*jGq;` zYW$0ZOQ!{CD&Bt#Lm2?rX-;0ceDFxfRJL?a@0vR$E>^} zW;=YUhh+D9v5)%uvJ^>lgq1^Ue-@wi2+5-su$nSPI$&~;rV=^1nBId_M?auGKgAdcHd@W2!}gD+yw%-lUziY3t) zj$hh4(Y)D(kc{u$yt_M>>VVY~xpI8mTIz*leiY%$8;m7~r$Yi4*6@w%kc3Q3{nWwi z+Z)^nLmj@ZAg%&R+b(TdOK!UViYn>PgQ!lrU zGZ*LSFLM9!(()JGr8gNicif;Hzau#9{-x?XaLxDx;-Hz3Pc= zxJ^`4)75w@LK=WJ3pSO80HHE6*&I*1JBmW~lGx@}TlFFpN;`T(Y_!5~eT|cB*Jvkf zQco+ANUU;K&n-|DqM@Zo0qO26mA6p@Scq1gZaCIRYiwK64sBH3McN!g z+~m>qye~!FEzo+2UJ#bPyO0<4P?ZdBkpfX!+6v5}Bnwo8fWL!!leS)ABiJ#e#drTo z*eV75he#K$R`t9h00cT~C~BaAp=s9|`7!_qg;^0*8ekBOW@~*1AV|(?Otm9mkg#$$ zb2&y}=rMUy9Zpe%1Zs}6fW;OBEA%oer4lIcN(=dt5`rP3%evm#rVLY<9SM2^*JuWb zZM|N0msAVI3X}i(L~qAM%k?5gsi-oJ>PjVG5tP!f1DGnhlK@b& zZ)I~LlD31;iUkDTY^$g$S zjfg2+6%uIJaV^vo1hyS^$Aqeafz=z)G8rmfW7O(PMkx%Ln4_3w?rM!Tv7M6?T1dsMxx4@WbIIMLj`~mQmW>2 zK_J*cwKW_eTZN_|U&8u2bXNsj50($tL*=UQ771+#Kmd%1hP&Qs++16X&%;aXtgz`9 zHm~Wca#M^Xdsr+NLbzePLe@@u*>{^erA&UiC|dwj4P)KvC?a7d9*HGup;Ge0NL5na zzF|AX^=jkV;%2Z_pyC@;rjA92*w|RI2NNo1t%9~$EEmM}pds5K+5kXZfwNY0yEmBT zRoBdDKF%bBPR*6gNXyvuR4Wo`Ikgh$yx|JfA$3XUZX;&a99f3R03RYw?tX--LP0E8 zR&07zOfiLcJlK`*^$Vp=*G)j@zQ(JmMQI0&WV75;u4l;vkV3-dfeK9qvh6i<#ij!X zU>@34DtPKv(o{?tX8?z`!AAmw08COkLQ~Y5qF#0b?{<|Cw&b3%&ku=)P6(ny z&Cg79KjI%GpBf+3h?D&q^V>2*Ok2cTu3!lIcIb75R>Hvgg*yjhyRls2GtHj2uoN)k0 zMdmk}_w+7T6Q7&;;`5E)Z%qsKl4|y;A@-5mSww*(^{JVA)x~T#vj(CU-nOrDV;BLW z=N9SFYmmT12A{YK=?Dmz-oO{nBP8_4`ETACe{WrnNCv2q|C)9CJ^ln^ti-MVl>GiY ztBUQ+yDy%+D;(5R)_b(^x&9wqQL14%(Yo9#g#-ZNoH#1>(4)_vIND?eHr~>AHL>5{ zOrh;{e)Y^<`>T3{<%wL<^nG@2oz3O;=go9bc=ly8oG zlmtVn8XWubs$LJku<@3@E3y6FMhb1O`)gb@NYl8??L^u5zSnAD*5>*PCqR^TX?M$IJ@;* z+4~N$hxUOna$n=A3r7#OZ}hN$Vvk+EKf4;spfQ;|clUwDjR8mnKo7K^5BGIbESV9_ zV=Mn9dD z`{JQSn#^pxA7@vyuRz(J-%u?M;v+L^;*`8D9m|=6ZTA zVpq|CF6teXx7O3U4APul7K-#4R?^|yDb493wzaJ#cPpAC<$(h+g>-9G%=&I?elgO4 zG7;7c`RPyLO2>R~B;JhZ%{4LYP-7F3i`eAE*F9~!RV1>QF7#dp3IXsd zmeX_qFp`>HVjU^~VL8p~yYN%!ysUO;0Hmb`CG)k4`v^m)sfOSZfaX<pvdD?wUI4sij1hfO1MD{$>qo0Jd$+CJ(w1Y_IP&enXqyA~Mg zcJH8?Wa@4~P-q`6XFAB#gvu2De5PzO8C0xFGXTI8%6AtpsoT*=jqWbjCo@0iK9E{0 zv}S^DRJQW@8l9gfRRJL+ww~NqX7CDL@ZF`ozRih4ly*9)nkQ7-xV((01_IVk{+S|~4q&m!f9XHe48WbjYr4;5@+YJcT@Ybx7PEZxro%3=vs{#*g1@+dgGHAEV z3H|Dxp*bz&K=o494dzivA&{-!u0_3D1sXGr^wxaF?~qcKPN>V?luo?0(2i8+M%)S! zl@Et&-X4P#d(%<8`GbB7gvyk&;Z2sM>K44(Q;Txb-aR|TJNE;CslxaATIwN@$-3Ee zWdB(!H{EPudKpO*1hfM@w0HL%t}bnl1_eWhL*CX$2K{^l1in!mQ>&%{KL{H4^vruv zMkxHC(3n{T;Je0Rb5vz20o6S75*{2Ip|B41u1y)LCL=}LYto-}(bdriyJt%aZf(9}Jh=1d(6~6MC{(-=xwJOF6kMrZ4X!-qH##0i zm~CCB*}0XHVbiPRxndf7U`U?|m?AS|b>tRysfVxjlv$k{zU8T4$(uAtu^VWu`gY%DKX6C%|w%0&tCjFbK zyatU)UMYn;t9BV44{O@3Ktqz02fUtyG!YVN{*4GFc%O$5*0>NG4mCWH_PwBKInrwS zq5r=OHh;s}Tv51ba6?r%XJ8IWOfL0``5}NI5-4}B@|X)SY;=a#r$7w4P)@D!lm#Hn zXV6Uk@F-rOVI{TO*W<@>YF`e3Y(|6TC_Lr0AJwovzB>oOC#&kAZ7?EVW9P=GVS*7K zZm73yf)PR`xHv}TmzImG1cj94`tbE?S2wf!dHv(8-J9RV{mSgfor`ym$xJLx#_c;Z z={W};E%jkx2*eNxmit!!L-hMJ4t<>cmOK7YdouI*i-k>RrdrFdRoQ{{B8fu5I4xzL~aa? z;oVGhUTd6Z4csE!^#OgijC%DJC_`)AJ2AV9K+mq>Z>IrZFz$Tno*UU12)Mp|`n~0nC`gk9A0A$)j8QFut@`9wPfs1GK*hob25x$LL@|zH z8=u=oc?JMJc>>1=!PxHNpkeBGINUd-c8+SQ;Qp0XjUHdP^~2t|7w_J;yYt@o+Vr@y z8Bem>p?LA#`~4dO2ub^=>!UYrq%y2E9=Y)DeKT_-2!QVpo+txwrs6j~If=M&%SH>( z2|BYM99ldTay=NkCY2Zdg^JpO@a&p}wI^`-H3Som@gerJ-R5w%Yx9w}TwBeo`53*P zAANkG-kkaCVDWYSRfOZ7k&c0Zw}`_N8_vPinWw|`_V9`JM?QM!r1nV_=Hla#)|1a{ z${%c=Z~y7pB5tWDzRs03**k`mca*pubX{vre0_~cgs~s%sm02eteF5%#eS{#0XfD2 zhlPL3XRosc0$>Heo?8!x4lqDySdHJBK|NGBJ$#lJq;0t8#$b(tK}=S^(s%Rk*c^GP zn;S=C2p|kMl%t!wg=jCuf7U+PFH-@K95T8@fump>XBR z*J*iZBL117-<%kIIGEbqkvNT22R;E+UB+X_vuv_Zrz_s}h2ZI?SD&bN+)g75XeO<3 zGP0o#HEj0OYB2x^wxj1t#TnGNA;u@X`}GMOYO9TODLxQAM0%!}H5Lg32V^rcZMUXb1Cj9H9r+Kiu?VRI6phg1=zR3@)}PnExlt?b zN#lVjXbM2eR{79?n@qvgvDOuflru~KGr5l9T0G7Cgtm0YXmzWT0*<93zPs?6Z50f7 z*WT!__I_x@+!u5*!5eksYsOlEd0{nj`|8MkkySWS!`73X^K0A@O=JJk(6O+agZYrp zE88pWTF0e@eItRQqLg9FPBth-;DyOT@xYYOG}Mx;Xk;Rdm<+>aX>lrLnyT80A(u!; zs|k{_UR>T2=TTj^O>ATm(Mp<#8m0BoNSHJXSI0s+)?CeyV8~U`Xahjp!2MI*vE*Lr z=$PJ2f9dL_uso9r@b1G%M*yJG9@lF9gCLIe9*vrvs;|0Mv$(ZJr4+z;U$%QBW~lHT ztB_lgg)}5XR|Z`P0C4<{YH{BlQZ$tIr?&Pa0T`a>dv0fGeZ!R^QGjv|^*5|$%NU;= z`#0i|w@nhyH*7quH6XrK!xqe#VK{=UQcx*-J8#a8-e`_UVf|0m{Irw(*=L{A`ywpVa|c5_qv9##IC z4!fz~WCup7P(;!kNp}u0FezToQw-%%9t}Dlc1GjS2&nL&%6vY(HDFYW$$TwM3x@`p zTj^abHUs>fVxXHM0E*0cTFH5kNLh&601zrDr?FcEzZ6r9Ba)%4-n&nIK#dTk+8bhe zJ-DW?cD=Q|KM9kif>?iJ+}jhyq|f9xqD$wMZv|+)FP!{k>+X&V^YoXS|M|+sm;IGD zS*Ilw!ghq?3n3Yp%J^}N-|Cx-q zw-%@Vp;jOYm9Ew&dy;pFak$%aB?`-PAs9pA<%}ct=Xkcr0J5XX)*j(;Fo=ml(47MV zc?NCoLE8WzhpR#F8W>TaqPT}OA^@nj5%euHP9!+dB=h69s$luj%WvBN3=j~vMb9GB z0%A<^5xAWIASB;i8_6I&1?A++aO;+)w98OU0w7g{9V;@{1VOqP7K}nLWYr=iK|oFG zc~Xn5`-+YRcl_+;6>}4SbYuHBPrT1LVnC6g4dyB=01G;7c0!v-k|{w?iECe?7pCmy z26-igkTNhFhps>pTiS^(Y{t{zgQ|COxFTW*7*otHmB%CSG7?ihsZn?;>djYP_q*#W z86X9-oxSex-C_>|it+YS`ionrQmd!apBxn_O=SZy^~G2@VB6$&boirVVVVo_S$K^L z-m} zAme#0YHr8lpgo#B7OjXFLZ}z?Xt2F&6rC6*iXmXwF5|^5NWy3ew-1#RRH%ty2g;Tt zLe#`S6rC{u%y*3Gt++!n!r1Z7oHj@;6V(vka$vP!D)OT}#f~@_;6Z*bKzR!q!%t>0 z90vnxj&`9EgQe(bj8sA`N(@>cB5QT!YXa?8fClFZG0r(LV0Ue)AbLH`5N0OQ-l3`J z(fE`qlj*#1cG?OI9n1seO85r=uyEt->y^=*0i1DUBl>7^m<{arJC8m+)74lJ(Y7Ge zc$X8PR+#mlm}vv6|DuH93Y@Os1%UD9!$xyB4$k1co~MXWjb#Z#GLa?&QhL1bO)ODv z;r3uHlSXta^YN<%#RhQ5OW$iB)MR#fMg1GUvNUjeUsOMwsu$(;YvGg3v=8Y+ zcWFNxV_g=!%ksjd;8EeJ@C^Xu@&3i$_u7*tlx%OXIPOql(xn)dz8 z_EX(GYI@|3R8vz+7yZ9)G~20_?(y{d&5lz;$&#aQo(aBEqn($_dD@Jg=`% z)s!C{v%mofXRb3SMG#7*?j&?#Aa8zizcSm?hajQN-nXwlx3AYta4-gTN_39Mgl@{j z@%*#hYYrC-IN@|2b~>~oyLM6eqP@CNF5$a#2tqK%?wg8Db!aLR^>*UQh1ZX@JXn%Ylt}qI=D+BA-Cq^QqvBl%ra($S!^|0LNoSWW1ZbHH8(aerJ z%o-6`hc!0I;XmxMwVC zG77@>3)jP?HbMnMS=>7bRe>b^-14dZQZmh~4(-~W!P-I>g$$S1F}DK{(lO=j`x6diV-(Wx%UH|R>*@m8{|t)kir}YC?(OJ#Z#X_&un$(3`}*A|>1NShyFvfCFr61I z^0bnz{PX(euY2{y@RKKziGm0#Wt>?8(d&CkXA5r~-l~rEHq+WpyZ6l1p#ye9v0m+| zTaTZ{w(jbkSH`;vohDQOE<_GCF)}CXdVdQHsrOyBdcB!?r#mWq9FC8&pk#M|*(5zZt_E3y;%Z}C#Zs*(<3(J-6Xp~2!C`Q^$vlLG> zq+4NEwCy0ddaxp6;BCe8xgAsd0JcL7y*^1*B5-Ch!wv$mW|2eX0bc6d9gdc6uzSeK zRLOJ+0E%!^n}}HesM3jzVGtuOo%jy(>Hw&brn-h#A9%LBuqLgUxT?Y8ZQi||DtY9F z%x~LUL8vp!ERd?EioL{`9Z^D|zJl&wzG^Sw_N>)TEHf@4Iawk1lK?2j>Yf4uv$>l~ zS|th+aMx1+iJ*F*!?9xlGI#+?L~J2YpMMjyeK6C=hmiZQi4*w6yJ8ClCQTn zCWE$uAk=&-)azxyiK?N;0B`_;1zzY%mAC5EmZRFfl?|MU0^B$Y6|#M=$SgYy64ah3 z)ayxjD#||UI-~?b@*U}dF_7c=WyL}$HCW^MMm>@c}}`CnX?@|2R)MYs;Fg)~&LrS)R4c*BDb^j}!t*sjgtQ!qyBH1l!2ZbE@;Mr%FN^#vpmsqhAv3r31XJ4&<3u2IM-P&psbmEMZ0 zs)}myTZv*ub!`7c`u;dY0j3f6gkQAns#1g@6(YUK(^jtvyg9J>Eq(K$huujI zCP5B-2}!_tGxzz}Y)F(0_1|dTH9%eMmio+`{e{kcrSJYbd&?d1(k1`z%CrGM!Vk%I z=exYs)NW$sp=v;7fXUeVF?fKonnvlP)xYRHx6K_$e8k%O4tKvKZEjBe^RTut_QA1~ zdRtd%181&;PdQh+Wx3xR`&fS}exiS;NS7~!|5FMwrLKZYOSdlfHa$TgbFyxX)WJZm zW?dK%y9~wAW@KLxy9~uEJ))swx1%D|TR2}4yDJJI8HDo69V38<1w!G(2y|`pj@;$J zVIIV_tM8iFULPY{rJMOfH_lB?aS>5w-nVCEdr~y@AMXkYMSuaEVn@nqrv*SXBG!d| z@;O4GNXa;0c^&_F_Rjqc-DHIm-IsJvf4h3Y)frR{0DHUHPv4=$HAbKp7w@uf^z?HOTE+1BZwb5g+Q-CD z!5J9v_Pwe9ec=BX9=zKd76HF_P5CotVPh?~|G5_r90{TEn;#g-jmLKhL82VL_u|oq z{Bah@kb+0G`RUqr&o^H@aoAOLws~*Q_2}MUD@m3o{^l$#*1#AZ+K0DHfit*4>ha6> zOctYYRQ9JY9oXm0cTph36IbZ$CM3gc1N?)>l!yW%@$Fgpy(NUe-X8qq9f)eXT#lro z|Gd~c)iiH=?8fT$&TrMumZcBCLnyi;`1oDuii3dp0{-?qe2JuvpSv3aDG;zx#h1>& z3Sg@E*ePYIi!q?k48M39B_ArsPoBWRJ}`hWr7w)%vCR}Qb*9w%zc=PCzCvD^7&hyF;&Ky2~7>97Wz7fupX_5RPzYu*z=O(>}-3Gq*C44dWU#6G;uBXC(^Hl5|O=g4$rFS#qE@Xb3r;Kl2 zxu-LiOta=_;^K+Dt($!mlJcF|dyM6dP7X=+9dYKn!gGNb?s`z`>E~Y7oc^iNR#Ll# zx|Xs(vvT{C>;SQn@V=}pR#~VLJ|ssD%1%v3@@VVw$$Y5b`Vc2rft))tSxQLl5=6v zlNAvprwd-|UE`}HJsuGNNabP8fMkrba#t6nd|{&D)Pi;w**ZXF zb4YEGw5j^ST3;Zw!1SU@F%=8j1|;!fvsd>G4S~sv9WlRVfEcSZ65djzs}yQVInk$T z09VpgKVA(0h#<7av<tH}2T~pum`VB&B$x*!J!KOum zs{LW>WIuTdbS`ghNQHp_N8s=f0H_=bo6tGH&=K>~@pTlbrOM*U&Q`HWEqf$^fy{0S z#_A4A8USoG(DES&B(a=BqXqyq4^zFj0PIe=Ct@2q0?REPPx(a?1e9u+yES_vHk@W< z0gA|9r(owbJj8~xNn1bQ=Y~&n8uRAa^p)aGDp|!Ud;pAjg~oMjsdL6jJP$WsSi$Pz zQe97G4n_{`>l%~?6@}H-jQQNwX83|v`q6Y8kB&t5-)2mxM-4@9?-+}#)m8DFU1;rg zfnR9_-y-m(GC1B99i%9TwaWVWu(4fyv30d^eqLcR&*#?MT&d)^<y4tK}vYc>^l zzPFL@9$;W-4aEx4jMG$opt8_%V=o;6t{CLP>;asE{b!}%$-L$Z-6UKt>1nB?*UcIK|RmK@(ePKN5vwX8! zZ!5csIoTd0Gfb+iGM2Vl2@3cwo*9#gZi)i%A?J9_VXx-kliKYvGt}KMe!W>*mQw!z z8Jj=6C-LhezjiY z*&i+)nfb%$IWJ_H3saxYpX{V)rYkHTTljcdj!t0Kr@A@oshkV9_vo=eiPiLGX=A^GE;yAOJ~3K~y)g?zJ8eW4egmxuK+O z5Q2Q#xzrEIm?|SDw$#oR7(^v*pBti(gOhoDNAIhFK{O)v*^%8nDdyp#K2ioFX&Ls} z5ou|!++Z(^fA!-1y_@kAY6sKjP91E{_8}zWAFn{{-Q>u1LHP#9OPe0XYYV@kGm z={M}-a{LZ4plj51y!JTpdr z*!Ej`F7_O9S2M7DeBtcN`sVs)`;C1C36QT2o;~n$mD`gr2)M|%zli*O;4>edSS;@oH4~dP{K*f{@S!sN^1V3N2LQzu{_HvAEimBc zPu()A?%@Ap?mdGfyRI|A@7(9oo60QjO;=a7?*_VI8y<9^=$%AzG&>qm8j8|r#976} zXh%y)G1`cYnbl}UiqXiBT1wQCA_>rl1|UEXM5ED-Mtf7$Wx9M-R(kvVyJvr7b;A%O zLG3Db^H)X2i>!Cvx#zrd&;7pd{M8Fss6Y@tcn}Zl0<}fkPvKJT$FBMN#_++z&=g1x zeeL3Xk@-|d+f#eWSBKaKo}9tguKd%)rF!(XPr1MOFAm?Y{cBw@=D(i!vwwKzN&hzr zr)sYs&P=-}-k1GXpH99f^VJY=899Y62e+#_dopbz+o2}U4P%mHEY_>N3q=) z{>t;WA2t;oOON$m(Dr!i$sa-817MhL>i;@*d}2Esq5QGTOVj(zna&+C^jo0d;aYhA zMtd7QDx<&Oe6-I`0Q{o9@(0o9EpRu7{;>JTn4baovbOa*(Pt~^kOm~!ERyOvicWkUy`Fnv^x-Y)xzQ5WuCE0^cVd=>912p!!} zI~$q2JM>?cPkq62{r^8_^M}SFzuy1vCPp6drU@|Np1@2C4ggQnqDGvVHu4-RD-kIW za^1d0U-Upm?Aj{xX{&gqqh(7qvlg*}l`Z^`Zx#$h2t@6fQ=< z0?8;BGwaKuV{A1Vn~jXM(p8?XO~-05zljB(8Tk&hLI4nQ(Nk)>Q&&}0Qvs4Pa2&V2 zJTyhoG)?t+~Ql zsZL;8>c)`PDTwmAC%r_-*1f=~#b!r`T}2^BcDVVzpcL|@SE1!mJ);VxruYpJjx{4v z!^X6dX!YJ>_v@?xXbK1+6oIZDzor!lGQwI#bD!3?dY)P?ePOk<1@y&n?=BcB7}RL) z>JL&$cqBK%h}V;f6m`FttC=V#;03Sfo4;ijJ~D(%qYb-EZ}lE^2SX(%zPj!9mRD$d z^OjKwtdAR0rQv;kMyxah#Pa0$C9T0jbijW2dHY<2;0Rh8M@bDBeQ2;O zf-n#ZgMg-kXJ=7;g(I#ivGINHYdti5$FP0Gmva6E?fLvu3#Dh>tvAWb?Cv|_K76#R zH}N3+L}Lceo?f0ao{+g89S@XDPlWEfSDoy7m}HN;f|Jje&MS|5xyq~ZzHZ>2gZkTy zo(QXOjk0OA++|2%ZT9?wSz5xIX15Q<#V3y%ha{;I#g=#8^|r!4&Qk@sGH67@ieXW( zt!v3f9L%L)y~ogEO4xzi3X5bd0Z?Teb-m+(`f!H~0VtFG1Et_XDxl*s+vA3m`Kl6b zozu6Do!bQU$&+QFlRV;u!PjZjQ4k86#G*|W0 zR-v+U_CQ+fP$)jOdve7{Y%kSM7#C`V(raM7?ax$@c%U_y-l(c4s^415pK!PTzw5Ms zAtg%&Gl8Pe--?6n_vrI-{ttp@Y{-#p^bcb19F`ddpT+9ur8$B@q=b^})Pp~+w&oXC zCg7?-*DJpoaryQ|gd8x$THpAMseQ6X*O56?{y#F`nxQHHMXI;)C-)RGDXV0=l|}pH zGe+E+9fjY8yxKLos2N0e$CpN?H;6%t{`{{E2x(z&z;;oCA&1L+%k$lMe3LFBRn7m;gWw|xwcf+ z@Yx&KSO5`!=)l%^_ZAUaPUg$2U1K{&VPqONI$`;FoU0-fnhvAG}!x5pQpv#owH*0M~!orM1dJ?duBw zKK~QqT*Gh&KNJlT46l%U;uXiJW_GEQWu-MUo){wUH(8T;~H+%&S;*K&Uy9PM{#=5ATl6jY;3bBhb zyObvdd`tnE@ct-x z<|$qV=mWg_SNXUG1ptA-R-kyIE7z&`jRSINB(`~@6P6!;e512xDI6s&5nk=v_2gUwr_;4{D5841$wv~EjXToRWS7CiIBYxL*| zZ?r4nJkd3V9_ahmE%x6fdHAO3ti%+s=)+TaG$i zyHla?{z$XNH!gWk-r^jy2Xn)ao&eZL`xDu43Skilu@O7xY&YO(T~=tclAy`nYBX{w z{%%3SBx51P-O**&-54|?Sg043o@rb=xRznxdTHsvP}sKp=^fDyG3wnc#S z22>jWoEWNU9j(agpM&8d-r6y*5rf-4QuB~#f{-Y3y0fBY%|Jytr8gEb>?r_;Iz25F z7)~(tY%W}~8C02wUmF;)))H`o&~vj#x+>8a>S=YMr%TPH5wJNwzc+5iBbpgg=7u`O zRtF?C7M9HUGAte8kalb|ozVzvu5FA3xz1F`H^kgT%FlO`FYK*CUu(HP6A41f{5=D; z?ZHtiqe1`}kg}WH?vM~{Z{=%O zmQfEwQN(Sd9eoi+VW&{3UcQb>6hdJCFtTv~sI+i#89@LdOb?(p1rQn*&M&pGn7C(` znChLNM5^j%{_^}+2I^@ByeB|iU2b% zuc1%{fOtfGv?si`M#Q5FX6YGceVgF~m@mWS(ZRPw-}B+@as3zKM!K~TzP_59!MAGH zywV(BDa_UVd00O}6w>zX|7X?*9yxN*dzYffh406|ap}3U_Mg_S{74y26C;o5@B2XC zUFt`on!a&5{_Pj8zTp4o!o|u@8(1s^2Gf{Qp#kiK*Q@F!H2yKkV<>@7-ic9wBo^~{ zY8ka3>nU+yI6WL!Re05UZ1dW#-WUm59gkG(UeOHs1}a_Zk!Jrre!l?u;45mi)@(+f zpBWl!6!da_Z)!F*(!bT6L_c0oZvK9~1dUs(qKHjBF z5@2!tg7*zmD~`m}N$Md$Fdb~g)4mR1TeGi4noLkxyvN)%YQ?;z+{?4hpU9PbZtF*u zADkHKy?B&+re%g$wCeh|Rkzmjj)4SEb{5w3r3H1v`o8-|YgZR!^Pj9X zH*MZ7%S2jAGtg8PucY)iLgUoSK#QF3+81+*VsONj;Rfc{`FpfAK;^z5c_^%Q*k;tm zmd!Uo9$&guT6p0mN`6wwkCpPzZaP zve{UNnQyv=ta#M$i4j-OseuRY(Mmh!EVYjP0ta3*%uU&p7{~hIY?eZpmqKLL3yuMhFjwH#A zWMisqc36sd!z*FJTpCKZ_g3?m-rjKK;6 zG2$fI3{Et|NlM3{b@s5YZr^5oxnsX@PeOMzrWeqoWjb1`_<3vAHQGe-+ttX z*_XM+)Hxm6_*~>_0FJZz&l~#&{h?Mve|p~jLOM;|$BuT?(vkAZ_(r~23eI(TuH#ZA zv%B(dQ{(&HZZK_1`#;6bY?JG5M6IPbK%@n+{bdpH0P^x-b3O?sFodgTIhs(yTHIET z11DkI5JVwx-EcZOK+a--8rS4s2U>`fZ0)-XM5YH zl=@I3yt}CS^1ydDQuB3y>m!MCN2e;YT?n9k@7mqQjgBl@z0q^`?Jmvs?g(t@JE}lR z%!}?VlNJDEEhXHIC`lMi2p<3ki`%;w&y9^~(onA5Kd_Y_;iev}mqsq0ncl6iN^{5i zR~w^T4aq{i=j5padq}9XbXWI`J?3slQ8D{|aPG(n9)0ob=swF-y}9FkZ(!8j-HZO1EJS6sQ6z1>46rFJZX|00#!~@DvmQKfsgMFtZ5&ySnlAeb7}%#&dHx zy8qAxOgZrcJ4V07xMfh&Qob6yA+IO$ZFV6(8O4OsA>dVok~>iCN}&A3T3M)!Xt0# z_}C{?kH!8~QcG=~PJZPZv)}grH(!Z<_}8`f_WW9wdW)B0PkeRl8_w@6oxc*){vU1T z1);-$B0z*YMsd#sh~RjMr!L(&S&qi2JQh1UI?=qIfhR-HT)Sr=mq?=CA3eW+++OTL z0Oz@D!AmRf6pVG^Be#bl;Ux4nv;STGP_G{mrn{}yzo5-mLy}bOW6tEbOamy9{dIM@ zNr3tBUpWha?uHc=)z=P&q3ZgS}%3qpuS7}x6Z2iJy=)Kmo067$V zF+RJXHV8QAb-brJp|BuO3X!NKJHK}E>_51l%Du39toN2tuPnb?G35#4TbFL{+@iE! z-Q9oXu>qk84^;EVJ!WKEH(Z=ugPTpq?Q`6jbtk1+>xGtIs=;PMzN1J2aKe$qP z-2BYk<&%El|ApF|t)M;=oNrtYjCHwtK#7SAhuWKZw_ew2U4jMlmKdud*JyFG)tu7% z;cU@5Hlg)xU9R~q6I*)8GK&DnHH1qPs35q- zqQgZ1p;Mk{c<@LYG^CJ9riRhnVXQ*7IJ($~B4E=i>o zQ=6o-t00gh%OPb(=&l{o{p~4i2oBh*n;nK!h#jZi3K<2LnFGJL8ZU>?3ZYi_*W7$l zvWi;wk|9F68TDJHt%nLZjTBUtx1(yP!%X;|>!wi1M-_$2%Vm+=j8;?9_Wh7jEW}iW z%8>^98;Pf)FqQf9Fdnv0Z>Fz<}fIv|l1R*hvM{%SLqDj@T_rZWWtaPH7hV0>3wlS`#y? z?SG2eO;|!iLpBZ&1fg6(dvadcL@El&5XA6X^(tf&zK7Lqo*6+v-fHu8W8Zz>!qzH) z)gOtVcnZ_eP!g|b{`k?b)tLZ+B!}{Kdp)>h*IFEeBAD#g4j}$xLb2@R^qE$DRqmww zUax@GjJY~6ukf&$FXlG3OTvoijycO)-h3Y9?@-`BLbPT!*0G6}kJ~wbBO2t^Sftq4lw1%w!J_nv(D#a`lt-xzUR=i~( z0BQk}={76@)mq4M(rgeQAZk?Ad{;EAW~d$(c{f6q8mcwNX9~V{t3}ajakIt6h9#TL+HSoM?iMX! zQ&L3>`%b3MGhAs`P_{OT>*hd*I_mjG&aQ=ARYlP)7Ps{D1`Voex}<8770cfg2rRX~ z75CQ?)#jL;&SdW7ThlfWDmQ~Q?`o@FX76Y0n`4I{O>v!m>z>;_sQm|VXIBsfAi)77 zfEKxb6hC=JEfVA1&e$)uZYQVr1~L0e>*ax<7}~jO!3054$*}T?V7f;} zq`)F-f2q!xkf0siJ`s0g$JWX4!LS#y&U^;|5%QyVtc!>Xz+FpQSF&KD;O4Vft4w_F z`2&Z1QtA3Thi0uQuMkDPG4!?PZ#!%&IxW9#;G#P1Zp2ZwdcSn?j)P@AM4QLEU+&y* z-$=pqI=*=7o?ZEH1o_)KF1@9j71G?`$P*ih`L^IcZ>`7|pWz^Y5yO3NQ&Jt&7>>Pk z-*n|#Kl`LSJ#%j`)73*}clhPEPUUBZ*cIZ`(w+J9{X^s?wX;9Bdvjr2+6rCXxNY|I z$OM9@a^XF@mRBcaUB^Ox|LK!c`y?CU%KIkfi<4Z5>>RR?l#oO+a%5AE0a|D)b0!f(1qjDS@V>*)l=g2zFbLSJ;lDqR zybS=7!Ebi#{ayEp-yIt~B$LED-?a9QZa;byLXaPHee0#%m+Vi^pFianr}xpPZ|i=C z>=bVpo=nBruHU;n|7BpVpYJG-`a{2)hKHG;tC56Wh7k)2tc*IWw zxT0_WVf18+f+#D$+d6)@lI;517cPA*_|>%+R^ULi2S|r+Ek9bw@4FRK?;cw$P6pKw zqdndIRRTGr5J=COAKk0{qI26$_N#4Q9RE;Xs^g9y$$r^%|D8Qs4Ke$I_a`oy1{wEi zzuGPKGEm~R=e_@GaaDm(AP@ute&l~?JkaaMZvxyo^TSKl=ga@$(#$vf^`8~f0%imZ z1QLywT@GBs@mOadubO2e9;GfD9yNwNxngr;8KE;+CD3XN!>&Jpi)f}=FY~-sw<8Y> zdLofk)}tr3mB{&RxL9qW;5Fda!e9{lnp)60GzJ3Gs$Fv12c|mZwX6;xFjcP*Vo3}% zAueHa4Pgcv>>TH4dl9Ow551aPGu*zji$mL|xCT-jkVgqe7x^ve*-ziTiQi4@!4O=iN>vpvu{5CO(t$ zQb8a~_llKFm!_f~MPsAo)x(O1#cF?e2N2TowpMo^A{Ho4bu33RA*tFMwtRMOx6>r1 z%1~>~87~K#TXgMb7A9Rwu&8HR8;$2}49eeM8<&C3 znyJ{O!voj-FuStw{jCuSLNa8>l&!ItRN65lLr&?wLPw_BVf6I54+LjW;$m%ZZZ;kx z-}g)R#^>E`g$cQ8erc0^Agtop*pA|>44m)GIOo@)2D1xIC#!=Csf)WbUs#jJk&GCUCVgS&{ zOU-OT5d6T&<*k+y1OX`PZ^ZxrAOJ~3K~w7T={~$_*J*o@ip=@ z^~-!^W~pFUkl5FQp$-tWJ%wAIdSq(HQ!{J4q;T6)#{hspf4?W&o>G=_BPfOpvR!BW zeSOYW7))ZLIBe7+VRFM_y+5^8R?bR8Y&N3Y)T1jCez|maWY*0pEGk=Y9qVvSWH|(& z3IAnLaY#C=mSZ^ph+R$1b#!zLDbos62Ib?I%KGZ%GASt6upuqyP&Bd6$q+GB^f{3) z2opfQRlUCw1)xBLAnlf0YE&DhBHK-XfZMtqxNrl@ApqR;^ZgS9;sCi7;n@}}2|z?W zt#6~N5ZXK3hv%{~-ejGb{Nq7A95?K^) zddWr!Ry{IZQ`g z#o%XGCLkhRQ^J~}DI!o9ykO+N8A%U_y#xwlB@Yb-k1u&92?jJ)}9AI3_;lIwo1yUM* zvrl<%we2anncZLCf44G3N5~}alDIOL+Zg@QiQW6J2n~zx?!Af~qwp6wtX~Cyj~>CD zBOpT4!RKDY^%4NQYY*PG8$_@@eBlhvZvnu=6L{BtC<0!9$1mXVWdOKi5Fa`MLv2I5 zlC0eq?CRzifa_HJ3vta?=OHfxKnZUk+MY6AW7Pk65dkBi;giQPkOF|EGXC@gY#&0w zr|w3#4gz!yLcGaXG2*yuQu$>yY}}lD!qJHH$i3Xv0YJa89{bAE@Y`oBnxXdyK?tBI zh=lYQhY9pr=-SPyez5s|0EoQ0U^kcgtS!25OZVrEKFP$uz`gJHK0f`fEFWsj8IPOg zjmBK5w%+b6fw$I9;ZII&16N*KbK+nx?id9D4F{h)h4~-vsfWh#?gLN=p46YXFlH~e zmtWx>)6UEgd{(}5ZTQNic1)GWc3-uVSKS3#UAVh^rMs6So!ZXwa}_X*7TuwZPI4B& zHZ|v!%XxUHccR`2>?Dd*qIXh#hlU8Vq~Pln{>zmeBnfFz+?6&yW=#vgg7=@p&pxB9 z0rWn9*RSGHjd%PgG%KQq3Xd}9~$3&_knFi0K6lM2J56UPzV<1gOhSC`A~Up z7ID|Ze9<`<5`KCt14I!NaN5EvO?@o_BT67*$yQbFNR5X$6c_C;?V1cc0-)#!C5ecb z;VdWo>W=tHFT#`PXzx$EI5Mps82pxFWmZo4XIJPX_s0PWbg_JAwvpP&>z>I@3t*5y zC<#Rq0Q{D8})8!8yY;@@*4}|sgxpUJ59|XqqjnV=a|*`$z(!RL^(kvB^|0q zWZ*aIGm{ey-9T+1xjZt&&4l9f_?cp)-~ecbd3#h%#)-huLNT-%g{@l#uco4rataca z;#z&fff<5OjPb7StV)D>C0ALmp%DQIZKSiOTNeUmy_A&so>)8(Sn1S6J*#+%-K^#} z*SWZ(%H1;<)>ODwlj!Q`XaGT*2fAB*$w#oetD)=PEq(v##yLOF=|tyPB5dF_M#X8t zO}n`Wya20t1U?ujnYdB_11TN9b~g^9J!Of^&_t!bUnc0~Rd20w8M&G&BNJWOv>@V2 zajm|-V-$wEpsQdYUq!6}03Kz|eySqMNft{0GND?5fT z-35g}grlSSVCE1y+h@N9D}BC3xt3ovPb!=9W*JXiMgFziNJGJ)?wx`?9L7Ml-6_Iq z0iFv0hM^vbg+?0$9$fRcFL0>=G(B9%!IM9sA$j1S_(-O=9}z`CZwlk_38m{Ukbn$O zK80Zeu_ypb2`W)y0tGUCZZ-F$@jowJJ~d9+4-fsyp4iXXeI3_UBWnc!UNTy|eV5c! zFeewbVmCH_^i-9b@vD}b|1mru>5H|6@Mp`p=DvgOp5EI94RHyx=bQ`f5A4cMf!rvB zpFd=LFso%8_<@|OS(g&*idQ@Zf&MI_1{kQB!&Dv|CP`T9RAeiwI;v|mw>Oq#J_QhU zrn-k?hW=AyN-0mo7vufA3;h{H0JPv;K*5F7x-Fx(1wuPfXnv-P?$kS28)#N>xgqE5 zrF78T>1Q9N&f8+|)Z=@5GNmiVrRV)`G`Ki{^c@&iAOz?^YiPg>d6(DDzO4MAKfAq> z!_(IhFk%|sz8@Wtwo%BJ0fr*zzOm3|E{tZ!{rM!dOj`Rk!29~^`7A#-x5p!9!s>CAV%pS?C`hT{fi;D>x)`T)8qm4yVB zT5tr;N1RWDkPVnsRz3Nwp9_C`t1P*&Q&~8q)HbU?6_5xB?WR5nQfQR_`zmhl0!YGFd2tt2q5!zF?)5D~1dxJhg1kh#aM@ya3pD^?h+m>Z$GQf42I7su z-h8Xvn0rnxY)VKsLUdQfkEjGNQBd#2jebai;>jZmh%}feush)xVB!uv4;=&)m7bG+ ze0)REQF&{uVD#{IoNHR<6yhTrs!pwY!{wgNU_B1gPkc|0t&kBS=XS^M-$GG9Y~TU_KiM5o%WUB*n)zRUNH+!*Z+>kvL2rFV178_<9{?=tTlT@7iFjI$v;xe5j*(ztsRF$2t~RB>`00i!pD zW5YW-tG0=+t-xmhPy|#30Jd#xuiYZn?)*`(QCI~4U0}S+?TntoIsqc!ySZyzj#Dz_ zC4;NNMcqYMd*vLjEk7SHUfOJjA|4vUXdL1u2>sj^0Ng#ud(!T{rXpo%qo$p+vHqrx zm*OGb8#gD~y=I46iB6>M1u2j|3Uhq+nf7)5zP-WWQwji&;C z%G{`WHciw=i8%2Nxq5-pwx$A82WKh>*?L-_=??HI`bsX;F+H- z;XPn-MyDSYThcfHc0j@^SWPHy-eGR(c zk96iTaS*{#`c4G#T|Yji`XWIha@A1<@6d64lEh4+7(`b=EPVslC*4M{ju(VeQ4%*m z3}5B7epF&a3V=(3uk<@w#JH{15qI}Pe$V6jEb0rq3LpV}zxP-V_dCPG`Ksl*2{;Yt z3Oq(c!(jB5QTWyd>;N&14|n>Zau92PNt#*Q7zPs*85~>^u?jJfmlDfkK|ml5_N|I& zQGkUXQ>}5Ywu<6vNu@G@peUgzy62=}NwBO8h#S2{UMvE`i0tQNMvP}xxhXc!(DDV% zZ;t0a6n?OmCm^BOOW*RZ1Tu&O;Un(wcuNbLOLaH=kE+do>+ah>Bt9eV?UFG7=ZxG} zBXa>b#LC+mBLl%Ms~P^`4d*KUsBx60Z?xSR9_x9wtx#@3Qv~IXMrY zSM1)WJ*F7UhCSmwwHjPtGlD9Yh^Zz$071hr zFK2H_DCP-uPMNUksv z)C|AeNL{(GXG|kitnN$BwT8Sx7Ix)y=8D?sw;YI*J$+tp( z@{+k=F#}x@Btig?2rG|H#j}P0+lyP~i}Pq1kP;gWIImR*NgMR(d!la-MAQS|<)hYY z2Li_97x2Bg9oS!A96|t$l8K4~0J?(yI1~W_4i96x2OwA;o}EF(1c0WEoZ0?;{QR+< z;XbbbK_s5MikH`3hu6lh+}p8d;Df>VaD}FxUYx5H{<^v3Gc%AwqvhM!Xuy*o!ds_s zY-FcD@Wgq{6#*crqcaK+n6cG>=>x$1WBBNP#63uke09e8#&Yl`#5aV3haXZt(?2vN zZ+1eo6vD$G0hTh@$lX6-cf<*Z78{+jIbsGgZnT zxDUDy)5YWGu@E2-uXsuj2IA0F5HON8j*myegg`b=UG=Wl;Hl_K;rK473Yc+b84KHB zARAL3nTjV>0>42_`NEFDGeRG*c8$uUVX!t`{Hu<0`f_>Xg=I2Yfv(KGWuz4EcwM3Z z2xeG_zG&Zv2NTMk?(I!&_L_1f3|8Scu^?gH=ktY0kMI~@9GI@a&sf%in}7bT-bWp1RaK^_DA#CxZ+DP4a)J zYI?pXSPd2`=QeH6|SjpAP>d#)AOXhmR z&3ks(c35YiE=uc_%K>DJBL;>vxn;(9bg44ZEMx=HJGuo6NzcI3dh$sJ-bxn5X?Z4*>FNN7*Z;>z3D1tVS27L zkXP+6m{3tfQvjf%C%v1cog2XR+faITt-uZ>AWe@t?w?b_*a> zv%+QsjF^kjM5h~7A>hD-S0Niw15pD2`~WMpHtY|RS$Gx*@H`aiSgr#=RKq|501Oq< zd5zpnJDcA`=0R7`8QH;Fm1?|Z09{mua;+dsxwT-i1^Gq-6)t=W1o%E~%`dLGsQn0f zuVG@b0#!h=x#7WovwPQOMQ-Z(2;T~>^;a6vk(kGOq!I&AcdE_BD+mIBMLj6j2R-S* zhgU#hA%BBR3}#q~0m5cuW9|%^EwCM=j|PK7OeEFlhAF5nAuagTpTZ0G^@git<8%;) z^pt|-=cM~H)aIo+uE#)tr{58H)j0ty&# z9aug9*e<)KZ>t2b={sdM8{R81<*QN(5)!@*M1+s9<@@DTKVP$!SSWg6z}~xUXQ~+v zt4vBMV{V6v2mmN>`;CO5H^Va0%0;WFHu))2^LokXf&w7Q*(72r1TleOHqGGrtanA_ zdI|l;&E*lmad(2kaW$A>jTo?9*V|NX4k~b?2vSf1grE`(LWsc%8og|5o)`95l}t@m z=UkQRT9~?Qp_eO)(R4hIn}Jd_!qu1_4yUE5)LkKT5}KyA8bM_lCB-T~==Ua-9s((r zRy|;fz`8{!WR}cf>!FS*@U<&uo z;^(fZRc3m~9Qb+jh#-AwLHn!P_T|xc_oR}?`nD=`^{n?*iGaaAnhfulpZ(3o@wiNE zZ|Z-yn)|xA5xlC4r}sA_Q$-Nir{=}(pgl2mM{2xXIPB<;D=8;-Xj>?9@=R&)*-c`0 zlg7EnrnVMG4a*Q$HV$5Yd2mvj82DI9A5w^0_U5(q&)rz7oqCoyq~qgvs$&@<@J40q zxfk{ykfhSwql0tyWKf83q2d3{3FK@j0`EVf92pRTxMpR)dGd~ZE#08aqn#HrQ|?NN zEjRh~(|1jj!x53+pFTG}WzT2X@x$LddryBZo}kJ^^5uiOTeIB=SpDv$dlM_E4nn}i zb^p{e()U1d-2IT&*)6QD@Yx3^i`NI?k~qC|`_}osL2{GYxu2WfULIjf)IpDJ~6?QJ7Vr3qOL@n&W8xfc%Xm!#6%yNB0yCm2WAOX84fcrBZ{9_7CpL|Yf3Hr)d{TC+xp`>=m^QM14sq|@7#+=rrY}F`0`m? z%e_8X+QH7N<=7BDbQ=s6lJV3v`r$%|RW*Qadk)Ly>$L`NQ7i-uajR4GlQ4SQ9{GqKrq7+o0ump~NED7=i^SD^~1DNOt_lnzLV%2nL>Yq0l|?@I=X#eoE@ zeEjcUvVOmM)_wEBAh$f#9mhYr6CLe&+#C4oQ}E|I#>a3~0|^4rZj4p!sce{=HU6Tz>ny|AJ+cp&;9-|0T%g>s|$0~0&thiyww|?e0e?l{Mvu1UieODBmCmvvf9J&gUi`-X|C_Zpjgl-Y&IG@E-{#Ms?;ale9+8o2<(^ep zdlgHu6bOn!AV8?KfTTw1BeeFM)6$4;X=cuu>6z})K?4#3T0$+FrC16C2&#bEa^EvD zGGpH(eBb@;@7nxu&& zTV8zG`=rIHy2Ny-49JMkM;k|b{0K3+sBM2rzdH8a_3Zz%b@g()ob^*86mMlMsn&3F zo~_$9sQ{|nF32VTo7`}{v5RciXD!oQl9;5Xw}quB0i^QQkwhgX zHl$V;>neef%925=7S#Q!Mm_`J26YdmcE`Qck`$(aK)!UV@+rk#t_5Hq)2YuE!9;cy z#F9Mh`b?-d<_0%CxU%KfH&YR>rt@eu*7D&7wpFig9nviC*e<&fY;GnhmLUMJF0($G zTy3aeC|oKeBspY9eACJAkGefwAjZnI^lA{+5jdVXs;!w(*4=O zr%&-%b1TL?f7ZMyx{8eqBBMz(i|5kr00*jAFQ zy5x9%>)c{r-RFVS(rdX)pX(`JJt&`DaW?^1X8Be@9z>0p5Z-dGQ3*T`NExM2W~By_ zsB~c~9Z0IHdo8Oum{@IS;K(nzRZ#>GR3VGL;0Qnrl?G;3!2ru|MIvi0L$*Kck4zHzF{Bp&XDcjtlqQJ`S$g%Fg zyjiImjH5RW26zExvS@h#kgMSOO6RIutfT1xK#zg3Os5LEkVnx1fNBFbR@;oV*e+AU zwO&1)hXIr6&@T0uk{OgHrJUF42T6vI3KNN@weAH?0E!figa;WoKrL&_@jJN)rDca^ ztMl8=MZZiPX2e)}?3lkhxhEcUI~HG?^XHw@)#8?LLSgLdSEmq_7`jYU^VK!HMoxpc zWc6o+q5_bbHF>VFVFv}b#b%akTTUr3Q3>Rk6FfVF2-AOP8A@uE{WZ9kf>zTmhKb_Uz+9}SkxP`0& z0*Wmh8vzK6VJ(YF1q3RYCB1j0MkG=3{FYyq(9%(JFxK5E7iP-{Y%rkd)?>-lMuKzX zu2duXQrL{&VN>hOu`5&|=gxaVL#a1et)1x5Hyg`VDGW8uX=|lcWyJs#MR=L2El}MK zYE*rl=YTOOD{|>NF$N%SR>w;wfh2Gu+ia=Z)nc_F1qjd^!BDCLOI_VYxqOFE3X02? zWY+dIGb$toxXfH&SqA1IFoeAa0RX|83&?pWCifKz;h;y|oisyyMN&{IY|gv08&=a> z%xAZ{y;P(7de9#VjcT$-p{gIcw8b|s%_`()iztXtWl&d#gBSxd0F4lGg_>`%Mrk8B z>z?r%**ge&ex|(n@7{mp=cSKH5A}!$fnL&<{&)SP4KYOe|JHotaFD21`8TGUf73lK z55DPv?s7VuKjr`BR&BXM1>UKe0RWG<#_^RA_$TMKX71Y{q~ zoE_V1&3D1{@wwBuusPiG$gu+-8kwTe9ku!VKRx%BnT^pf7#J}x8@Dd>!-xEjS0ClG zT^ZIK*3Z0oPx0CaxtzZ+_fX|>?*Owi>bZC9-ku#NTVm(ejxU}W8if~^FT8tdZFvVZ z70hfOI(K5nE(*f@%6ldkw|0tJ2unqL{6&}^LJ~gmFs6C{V7oT)wHFQ@bhygq-!V8H z?De*zC^ZMa@bbL}>axn#p6I&}+v~0-(XjF96Sz?TfT#B1i9KKpmW#hXgY%mJ@P-|D z>R=npr$2My(bP&jf!b8`)WdtL*9JQ`M7neHiSWZYeBlxROr-GP2ayPa2C+%W zpMih-Xa~%9Z5y9_1)e}cWqw{*)Bf! z8tR8HUBHV=0C4{>-gm6S!SKzi_||m**x!p^K8~;kBL2g_O^a~ukk_WFbA{X{paY5&r6#Oc*-09Nb7zXo%_AivbsL^@|CXzzqNg8 z_2(w>#O@y}RGSTvLci+oOCki|GS7ZiS_nYhr2KktPY)RYW?AV|(hY|P>f!BFKYye9 zk%KQZ)P`NG-ng;+nHyKF%V&W;1HbtQdSX0w&=~*Vfs{R&EM4h%zY$RjfgwCx|NR}^ zZ+G_G@`GBgocQZg-~OKW`{h&3A4w$s^xiz8u-`s<=qdVB_3<8x60nHeWvmcLFog8p z5#>JL312P4KLUIJ03ZNKL_t)Tuju)uxRlC~8DxOU(Pp4ZQ*J<_KI@;hs&KPm5Ca$JEwv{yON?tu2n--No)fgQpSFr@7X$|g znJS{D?9j-KAly@DQh>lzYaHdc0M=!{v=P^XWWPHyWtFFPBk+RC9^FkbH)t%gGjqwI z$t!zz`AN1^H-gr*p3RHuhQID_bwe-)rN3V{+N|8t>ZqEL7_UmcC3M3I2@w>fl@T?i zFuB3~8q;E}Fp(&*)gd*ean)qOvM*a35fD&sb_RU~ESiq=rWgZCwAH0aQ7P;~Y^z8# zVob0a6{4D-kRkzSm5a)Hj6BXvdpP4|GPos_usJNJKkoMTff%+GPqSi*FFS#0tJxtX z1IDtuV&(1-7{X0Id9t#!5Cj5%3M16cYe&hP9D^jI%Kg=b?iEAu1fJ2R=WuSSWniTJ(R^aWG(iH%1a*fB-^aC~~L6 z^W~+x`Ju<-*xLgR1cWPDtTpZ?4|#mN`?&U$GBp{wSC;h7`vZowTik05cKegasqg_1 z91Cs}5ReNP4I?CjLa0Tt*#r@I5hE%L)$?2C%nw4Jcd0p{!VAQ;k~0$~kHfUlo{3Ctd~v7U|Cah~$zE+9Fnr@CxKWsTm@#?Dw9zE3_k z){+mH{W_#@B*^#WU(oVF0B0j2Oa&mRr}@YM_W@}K2Mb7;Rz(&9fG0_jP?9soi5<3k z`|2$Aci*3Rmi%_IDzrCTz7iah@iSxUwwFr&Gy45d~=$9xC{ag^fn%tXoO@4l786SY0hq_q8x5iIq>mNB!PymGyNl-fekU0dt6>(vyE z;gQ(tp}km5!}9R?^O!CGz!Q^rw66o^dnSvo+5qs7L1U_zTxE>Nmm-Bd`x|`|OzfxX zDGI)UCI9YOM*snr^SGP`fWZiU`FIE08)7)Qe784Ws&#k`U*k+5a9~e5{#JS-a^xQU zZ4wXP{wo6rBmsS$@t9a8+yICp)Q8?!2l?J~umlK3N``gENK=BK5(LZ_BtRY823)ti zdEzTLfo}odx-AN8vvq=qNYJaiIdy_WMneO*|0o!PCTdHvp_{(<`S5VC=3SmjOJU9-&7c@3}wvI+evX6n$-_`#OIXD>jJIWf~{~ zpl%(Jj{4zmXW$dMLin}gtTze(i^cdWH`VW5eJE#8)v;B>-&{x4gUa#CN3pX93@9{> zub=MoEJ=a;meh3V=S+|D2v26I}#M^UXgM->EP!Ny?wmTY4!;baNkW zl+hk7*%iXC9Y;?T02Ye)%nWRSh>YQ`dcyr4Rsk^1pQM4K7-e7<`Cp=ISJB{lQyW~` zBfoo>xwmI7>G{^Rxi2nkUpx5{Sr)@P_hR1wSVu{^NIPWe`qCUB|lD&1Qr zX+`q?(M9QbDm+K?1ni*L9(poG5VzNg|LNE~s<4mVf8^clWAel8D(F?M@V)RVfw;iI zR#(4&fFU%mR=yW4XXJj?41124_P$dV+qb^MDameC0>Bjt_q$960Czj$ti=!=k|L3T zT~!vYROynl6}2z*ff$oW-&K~PE`Y#fW>y6O#85Zjs;F6+SElz)x{`w2f%IHx*v*Fl zKn@UZfQxVy(JUAsJl~nWzAuB2D%Vr;Ql?wUCX%5{^h{xQs-o%6de7F$ho zB}hBV>#u#m@k0RS{bJ~o!>QaFRPof~pCds4cuu!V`3SM1@gWEYCn z=_OPRNSq%SNezW%4!2T^dbP6PBxr2_?dWDLK!2T2Ev7)QL%-w{gmW}T6bUqAOxwKIP8b`&uj$J-7d ztaQp~&&@&*RE{0#PMxh{VWsvH^&U3Qz>Se>;o)UK%>#_V?uu) zBnbeDB~+_mvLcOlpV^k14xD^rpi$X9L=2MS_nf$!uFaLUe>V^rQ;ztrp!Iw zXBwR-(^-qTTLuDBYL$V5IY|$kD2f!d*P;L*xL!+4`e_AHSffU?e1#RkN$+!|5CLGS z`#LT9dTWdcwz;X^XpzqtkGS3Ajr~r96XReL=;<=0^ygl@`Ze*9?Ne(H^yA(!aKH<2 zX%!6%0J>t>H`pP4yRwe<;~h%j^}G6%NG~D`OeVH3h(}3=>aQiXzt4ldlTP@>c@g;K z@}g-r%Vh{Ky!(Ls*p9c0!C?^t&|v;dBq?{lVIW~?$<4E&E1RfjHxk0MDwtL?^>_Eh zk2`~mpg`J*{zSf&`0EqjdCvd+^6BQkLTpY1)AXvo8*)AJ2~=_lFSkzk5Xm6=M(@cU zDu7W|StBc@usuR>pBfHTEtvIlNCG9i?edAU>K|+OLnndZ4|ae5t5LcCFWPah^3=yS4#2~d5N0!rOx|zkw4+}hiwtr< z%5JENz2?d?m=Dqr^zm{(Nf1CC`8y0H<;F9Vi~(qtmz)bHAq44Rck)TnS~^OC@wOQB=@6MLP4|3l5Kn4I74$>-sT+q8>Lv&NJluELNIzbRC) z*-^^}6vQ|=6&3AaJU! za-(9}3jOQE<}sE1{(~KaqKE)6;WS{20CV%oSDLv3bELHW@GkLAd!I`2r6uKWE2}5j zqPT@SWTcNb)czI#vgPL0l&~c*(gw}YNCS+>`Ke zN)Za1eRN>6JSOT|Aj8!q@|4cW)Be#yW9T1GAKb-;GH)0#?q#m<18Z*UE7{h{iI-s7 zz(YHf2Syc{k>xtio)e385XX@bJURu&;Q9FWH0JXFu&Ymca*w7-ObF%M(?_)BSdtM? z&e4hIh3^4z6}k*C^v3zq2er7yK;ETQ@A(-x5)uZUK8!>dAk60Qt*a0OL&eiakck3> zl`@{a2u~m+;{*5ck**X|<<0ug56?~>uq?@4eCy!)WQ-V+dAt8FZk+p)?Y_EBIhw== z??X(-oh}Anzl@CvK(KvO-A>2NuRe(W1VGrR;;R?n22dn?;23ttArbc>*WtQ%-sr0) zp1FXk2_m$-4rJwDd_6i5`L`p#Ju>)o=>4(q*lny~R0?Z6hUo3MgaGH}FU}XSTm=XM zxU~!!9adUZ#?gL6G}FnpF8z=2mls+KF$f3M`c}pIz0%9)g9-r7)Z@qh(EQyG-v0>x zogzuspNai{-~Gq$x*si`uodxhZ&LnaW_*}JuRZT47K0>#p+3=@-#Nv_v_ayC?K zv=cYxyz=Rj_5WDAa62|vIJ)IjSWdGj`%&}c3~%3?`o+lahIdamaWtC{#E25h*{;j0 z5EO)z&4+h8u`qzxa<=FB3lJnUW$P{XTHOf%##Sl*_w%3sVe3z=S-U%_=}HfT?A9n( zX<94`kA6(G42A;6kO;q~`muK((FUR%9?APb~!00 zZ@+wz{xROz-*GE*k~@I3`ELcp!dJ<(!ZDVX@XGj_FE z%{82^IC%sGinx1p;tGLkqe;7{dvg@7&+So+bILYT$NRsM zfmk53GLsw)0J&V)QXASN8Gd_E9QjO`a{EoL2W^BLRA#kg5SWKrH7)^uRWz^8rOSeQ zvSU{2Ld|cv}_zY|XXmErj!13dvMm+Eg7~v22ml1Wk}pIJ z4k9z+mHf1Aa&o;^q1x5U2xxY5lfq<6kQmRGB7w|7sMqTi*Qyf&Ar*=#Im8)kR%;At zq9H@(D3%de0HM-EEDQoT!&+Y0ts;Pu$vjWllEC%yYPl{~2w-LCZd^>p5dg&o3MK%! z4)R5q+8vwj_~7WQzhR-~f&gEjSO#|iLcW1~3$}PnGKo^-~M?BRfO|kxn+NrNtPQedM0Fo5a$Hyf#(yL}Tanm$!cM@%QCQ%XF2rEz| zBH=qVsb&dBVoVpM2sepK!guOY*%TIIOqZlMLOv89s6*ZGWeLLK%Wi$4K~=yi!?9{j z-)C}s=qL?`Cv^0rs($snb2@f9Xhd==Y-MSos(K(2sFnOxvE@U0jZ3T~d462T5&)jm zcy)+z=DYrKIY*Te0LgYyG@7O$fN}J7@kv=%!9hR^z#XhI!jp0pF(Vpu!$_U-mr`M% z=hgwn*NSrCYC;Z$>_iak1JglpAeFe)t_DbTkEsHHS+Sd?T%!fotNH6yANYyjL57M{ z1Po9m6iTq00HIJuu7!XQcPUr2eG4FLH=!k<0-T{-h3o-9$wVZCum%QJtHo>36!@O) zL{Z3wIY(u=&}2Fl;@}(!y@MXHT*Y41>+6EEx|(G59g?F0AcyzZ;h4*15o38)YBZ}M zzqY*ArVwO8Vr59C4nRb3xbS+e)-fQI|f2QuC-+S=rd!&!?2YZA;z{{c4=b}@?^8G}tDJm~} zAFt4w#F)$^21EnpkDCwe^tu4dDus_lUaY{kXSLjv&2xPeFmQyAZY!BO7=miJb$Wn2sU58_1~i?n zFP^x6Pg&Dh_E_fp@Lp>%1C8i;StH6y`%-82?{3}bfg6OrcJYz)YAnfWld<#f z9`sb+hEAIo2ECk)TmzqYk!PDsk=VaE9y>Djp>|j$-K>=OAAg0d~fbJoF|LeJ?BYP}!Zg{UbpMvG#AI{?978vmO zBz|sxXH3sCm+;DRr_tuUhq)%VF)6p0`B(rF01;l8$Coa3G(`FlV(p#?KKvlMqX00o zjlX^cuIOOb7`sK6%$a)p;O~r#9Nl-UD(ksx%b&HqP7A&exO|%CuMyg$%6GknqU?|E zecKzfKjt48NxY7M69u`-3#PLSAf)#9rr*F7RbotnbX#dlHeTB9^y}Z3!BEr>TE+P< zB|i0?<_le+iAu41Twg})8*)3pnO5|3hq@n7xqvgSsWZ@8A3XX2<^5 z1tmhi@TSlo7-MNtUeoN{n(^IJ(ns?r8(ctw%=qn1;tcQF+x3yupLXpz?DjKB>inf0 zU;^Cr`@VfTw32P_l(ilGhm+QSsGj{P5Q^_Rg8RohY?uG-6lM#ZO}|yFzNIsFso%@X z0C3+h-gCG;k6ZorwTIQYbT?W9;WMw_U7i^tkI@VB^pz_JfQb}7^gtUR%P*|ow|Zu1 zOn5Qn(g()MU2R@c1S^^MUcGOB(1U<#%=)ZyZH3vlsK%KhjAL6;!UVxDM$8LsM?uDs zZN10jU<`PZJM^LE5rw2SKu&Ereb2lk<;#MI1T~h^e{p{Mh_aFN0!EtGFUunJc%JcVM%(V{u%GR+SVL*skR{Au*;k`KjVC!n%0PKu*{>k0j zvt!)tY;FJ|&LzW-9N*x&Ey#D4yX}@{s+OSkwaZ*;2-&|G z9yTEuIGM8+wp{=`2-Ii}!~o`()S#)r2^wSl3sOc7P@S&FHg1eKX(2@Mu(agtPz7(y zH$#=#A-h6^;_hJCoeT-dT(QJAru#F*7%TRq8r3N30h%U)KnTDWFwIuIHqAD(FaR{+ z-WM1wG)#}hW?6YnbwGaFboU3zl$}ngJFmF;GtDwxS;0oWP1Ri(oR}4WN7)y1gA#OK zcU`xBe`eMXGqBvryw{pVH3BE74ff4*CIz6avhU{h9OglYmG*Qm@VFfC>U7<@aRb>D z0-!5`Cw8@W2xsQN7y^NS*SEe%&TkZryS?c{G(&)U0e(ZiH*eUT)mJ`iNX5R6uG zrHvBqYIWG#qaO`F9_rl@JEHXUW<1j5bh%V+C)N~^j+b0GKA=_do5)1L03zf~SS|px zfHEKe228JG1AvEGs3MJHD(3NJRG(=+rv{#+dEx5DAxsEY%C^+6dTWZGhnh`E)^QBU z;7wEghF4TQOTtDDMY~*Td6Mf<*|nOL5=^V<)~d})!?P?`1o0Fe95Qwz#u&>uXqB7W zxcw09-n8AFBnB=?(S>|C)Bw;bSBiaM0yyX4g@Sp*z2sEA%}u&7bE&}skQBhId6l39 z`Y|Tym_7ZG-|XuVgk~}HgIskl0we|^ zpTw#$RTQwd9q;-19gfL~S9%+{r^ZEH1raVRL6rbd)!j@^wE_et@-t|~J37frt%X+B z^KHIbRU^%mvV>TW9W?~+^g5V}&96T$sm5AIY$fgAqrMnSHfqFiBhGvryZ z#x-+m!;+NEik+%XvXydQebXMT3)O9*xaf;&Q}`SVa?(+wUfcWCXKJ^-U%d$e9N);- zAF3vGk{MVAoC2!XTa8B3^L+TlNJYi<<-^zBeb2Y%!29L*D5zm^YPAz4@s&|2P95s>+Ag z+qgIX+!#u?n2c_IGC$O=J+YJ}A6;gOPsD(WESFlH!;9`P=G{44j0QwPo!rwEYRHtPA4-9AQ0=_xlS@1)ng{Kb`WC=oO z-|!A-^YJ8_WBQpVcTLX>lh5!R@azl#?Cfg%@_o}04Mf~rxwnu+`ZR(Kq(k`4htL}XfcXOc>crg)SF-ZgkOVyw8o@Mc8sOq8iA9=Wgcz}B+H>{&&& z@sqdpGeDK3iKaYM21o#bKz_g6V|b^>V9U6=h3T!kGws()xLyJPL&k4Bh_N&PY*z7! zmr-+}aPi^e3%h#(Am1GR!Ye!XO>>p4JlS1T_lnIpsun(T5=&J8^zQv@_fM>~eRKi0 z$g>5*3tAb-8<#FVnAsSKBDOD5In?dRi~#Z_ann(--iCZ|l}Q3XibC%*A07|V1YDK3 z{zU&?mH7#h|IB)0TIy#{Jkl93a&1YuJS$60L{vOFe$%G%_|!?}$is(TKQwU9Jx7~N z-o85b*^Tw>Z+wLUiDUdYc1OM*+CaTI{L(9j?lGrSw(?~6Rduhw83zFsKmsIy5g)6_ zBZap2^UsV?OX=)|%Gx>l(QwzVN{^*(v9<{j)-+r782G=qQ9l#E`MdC^%40nuLcqLQ zJ{8&yh)N|kTJMS`_61&eG3$Nbs5WAeoy?2Dp7mcWn^k);-tN~&yn%?>CY%e!8Iw2w zFR!~>1^_0D&}5B=0)Tv5IL%J;a462W!T|(z)n19-B)++&vL3oB?HO{K0a@n&6Sib8 z#>wL-S*c1r7KRW(t-LT93x#9_RjY9^U(X4WP(8@UNBY95iiTre&Q&%7Vkqxn4eEgv zf+S<8tHaKkt)OWFfT7{x9X&>LC%W2~+hm}`g#^H2A}_f{#q8Rsc!8$5%GiZ1XQT4B zjcaS&3{x3M3;^#=_6&zL1+HUex0XaM0b)qSI~i)*!)CF~eTsM_GZr^=1iqKe&U;%C z1QHA#eW^}lv|eb>JwQmqK)Mr~pIF3=JOE5~Mcy#km6Fqu{`i77s?~JEDHNv*`Nk{H z3)cm9rO^`w0~{Y$vYocceZ7eSP0O?w-D* z5{9Y7u3xZkQh`tGU>`k___>=*`T+b$xO8MkpeX>Nwut%)00AoMf#06@lu2V~5CC`F zIdZ z9zj~u*ueuZ3;-BTDsSj|C>7snB~n+`^H=>Z*4FCf0-au3*j94m54&%9WNM%Pgsfow zROI=Yb64CSBu41XZyY+n-WpP*t@Du|T)KAA`*eNQeE&V#hctPpq}f5=4~q-mOgN^5 zLJKnm5D-!D=6y(p@4CceqX^dp07b!I7uwSvHp^&p3`nv*(UnO_oKdyBRoyhv41;qF zWZFGDtkl>MZ)CdRhxqcr-eMsm9FC33*yc*#0ElC)OJa?*?8<V7$&8PEM~XpSV$d<3yveL%oI0=%r%X^3HXq?$HttItvCCLP8 zm90M2O6psWdR*BNh6=C)PUe8s zmHzfg{$lom+ib%3n%bFJ|8MJaKbkuKSu!oK9MKdM@&x%pVp}5rh2RG+iC!)Gj`-V# zf^4n9a%)wyXHbe9GjuzwltJGM*cK0T@;E`DsG_I>ps?%r%(IXUAgB(&kwFZa=ZDw0 z(E<>d-E3tL#2^QLdYMOS00K7!XB5GmCzTD<6YV)h!JbV-vj9jk5KJ;pMugSE@frZf z3x8jZc5Uln20<3Y#wJKW%ZbQ+TahRO$Rpa^f(RhC0OTPUrqXz56d?r!x9h;7u-C-1vYsv0d2Yie;fJ{R zrS9!?3;^;R&wHqBKxTMP3KOvo^7@4$wp-x9&+RF6#|jKEJ)GuP+5!V!KY{UB#|2+l zzKNz9#(1oQrkc6w9O6o|Kh{*G6>2E!bCy_5BmshJ616)`ZiQ5@ZYRm;n22|n^UmH3 zgV!5aZ~QnqSR>MvC?`i3bVW5c65pBj=lU@*#(PwxZ3u!Xp+evQ1t0=3m=!END{{VjZIlKRZf_Sd7DNLp z|0HrH_v(0%d7U?K1OqlwRb2m;D9^iBCcXHB!N}{->!7!RxfiK)-o3hmsfWbaqsUM& z+7viP-eME|o?S1T{myGrfd@XBmeWM@Rx}~vMldxcj4+7o^V9U=4f)@gd3Qy<9LA}0z+8Cu9$sayXNl0_3;xC8>)>RDgX#M5=QLHTna$V3ZAO~@UU<$ z5O6?v{g|;kJtXfOvNe8jy7-Lu{MO9X4(w7nkjT*Cdt&>;`=ua~$*X6tw*viiEbSfG zYup>(CnMQkS1(^?A{+uU9WST{s5I1;2w!mIQ(I1>!(0OZVFkkxbVu%HyS%oJQ|kb5 zv>%U6wDaaz$>WDBAYgZw_2B55u7H4RReX0HqJ*Is?i)o+0|2XK%&y1k@MD}Gbjj9X zDy-PluW!UH3UtPgbZr%f(9nqitGq`H?GQtXjDh{lv+;9_Y)g14wmJgA!Ko3eep5cf z0TA9A?0(99RDtAi|8MZ(xA}Df9uZ>?y1lmRyT0plLcnk-_p0In=Mt;7W~<@QcC;MC z>PR36r>Gf20KSql<~CwU$ODple7HOxg~xHDGErQQWtfwZ*kQrkut$ z14`&#W>hhRp*JOQ-lxT!i)Y*%17xtc|KMIX+43C4*xX})5dxuDfuVx^s5fUnL#8D( z6@L1y>YqdpMSJ?Q5AG?;b{_RWV0lG(xz%biUqqc<1LF0;9+&$2%0w`O0Doew@BS? zkNxDKz?f`tSq#qChhNAt0bgaahcflT04$lUl>5(|8yX|V;Cq<8O!YD`hRgsP-_0Pg z<;RB??J=(uLe<3guful17>o)7#bemjhGH1EEjQR5rUv8czicf20+-X;^jF60t9R~J5*L-8GTW3fOGc1 zj>uF}mKjPd|MO>>Yu1m=p{6vX!<_*UTMgL3zo;GIaIdaMV=-{<)oL5I?YCMWf+XYd zhvkoSAL%{(VZ8G|BrWx`ZibsUNGHI#Z8TlLN3(>S1&5<>TGaEkjWlNyv95QpQ5Ta1 zY`;LI>DpWht*)4UKko)6>!@9$%3NbB5tzxC{(zKHu(J+x0i`RAY}~0SXspOeBQ|Ps z%|NKTRgBw}SWLT5i6*h92HHmcq*>Db`&#kY!YgFuoQ6IVST$c zp8kg^@zdL3`(TkwOWPz%yvneJqg=Zh{`1WX>oLKGrAZ^+B@Aq4oo&2YC_T~_jP*w& z>L>!$E?{M=T$R>Bh8Q2zW1%sKkXyp)daWegAX8*Q7!uH2t{eIT$1FK~N3X8yBY5A@4%=m$r-g3P-?t0tuW3_z2g64PG?kI#HeS3OthopzO!jCGjD|xD zzVDxzKHOs(hFlwsUfnaPF7_oU#2Iu$EJ}q2JUQ-#N6j`PMN;!VV&601$1IbdUt(9# zBu3#K)i*?B3`>Wa>DJfO`L$dQU%Z5( z3U=G3f?6wj`Qp9_nM-_gPi&11vvOESXr%Z(cFz;um;&BC?7TQS{k)nLw$!@ZE&K?K zOk&uKjnquG>Y_XmL_XX&6cZr;DMT`eqEdlr0|-^>$!F%j_5I-YN~eBGgd$_;358O; zUl1L#)3 z&;XdNagSsYKVl0vha(EZF%!#B94jZR6(0hD25V=|wG)!9`hjC=y5(^ILBsSMKVS$n zZiY3}Q<#9|l@ylN6%ojmCE3Cj0E25Iu)u)8h3&x#z<_*>Hga1GuzgfFVVM9>sAD6S zWypd-SBAsJ0aB#8uY^ctN?)u$RI^ylT@|JybND7C8HE3zvp0>B>$=WEzkTjhx8~}3 zLU#j=#taYu0RkjQk)lXb6g82S=uz?{*-otJDNbxFwiBf2RDl3VkWyZ))qigHs;;{C?CO*P zO5~P&yYgw-McM6?g9jpJS`5jU=!n@#S5t~b@Ipvma@kFpAkx&N+EU;KV2XzZR0SzO z&ro-FcS1E|iAbyu6(z8+$XU1!xsq83KY|$vKL7^^H4b$~z|}?MUY1uUp*p2-5~hl% zhs7ycdz$CB0F$+e11t=NNmiXUF3W5`djs`NHVc(ua;u5l(^wwiQVIY?ol4g{G+j_$ zZuD@qw=ukjC?P4rZh+i#VJ?xoYQGZX!cK$rjiHc?)3Bmy5J?}6g0)QE4c9Uu!bYLZ zVB_>*R>naHJ!g4k0i_a%*pRZXuPNDg?P4yMt-_H$19qL)3#Fx-()^o}!4#AzK;QsD z8T^*^>iQe|rO`e)G@jJE;9^+^BkSbYlA@lCf}a*#@Yk7~hzMKM#$V|)ti%FH0*E7;2=B;n zN^5}&wX&ZJA@%6G(YLP)2>=QUk3Hd2Q&B8-A?+Kj1w|mD6BJ^Ds=g>mkb}I3oDM&P zknG!m7oiZL?F41AMIcnzBY8KH)Er16Vnv9CU`HV(=1a9+v1o=}11%D670uPARxq{o zF4h1fA<`U8Bia@>xzd9YYnvnaEq3bVrlrdNeJ?MR>5xxF>r3s0KgI(uhkDVe6) zmgK3sb~mO65JEhA>6me?t5>x8%~SVmD_kC7kMQz5p1cfZ45#r6N02hXj0>yyr!xo{ z-7$RRD0&lM#`FgM;Us*Cgn^IWO(U5oR4rt~3-1eujsydHemJk4&i<$Ji5Fx6rUF4w z1s=a0yM{o7vV||6z(xat@VW%QV&b=t-2b5VDgRJR>HvtuK;pjGISqLSt!yj&#`^s` zSyg+I$5L04Sh3&~G4ok?c|c&(2k^*Gt6NeLA%q%*DnMMf=7Z-xuYED^uJ)$}KCX55 z;m$0aE13VhwUn^tQt(>{0|W|4ff|8AP=TN&6eqPeuO)maQMa6^PxZ%A4@WZxaioaE z2CjXQ1C`q}d#?c}afq`L_qu=MK1em!zeqW@94t%l(emcAAiu2nA$h8Dwb$&fx@ zoB1Es`S4bE#4z#LL&onUw)C&)3RZQE~*?d;ou$OkM@kbLuTG26cX6YcoFuMsk7;SKY#kd|G(Koj~~R5%@Bm9i!YzV;+q=Ut)RnJynhn!+xN!hCkWB& zc4T(gLHRuc_{AfL>R`r8w}>gauzF@k3cCH8ibN|AKb|wb@pi>UkSdLy6}>=4&YGG z`-$4&{^@o7b4!16a`{iK%Qq17o~?NQK3!3DAN2Ke@|C3)Jl;2iM-Q}(A+;Y|xhFc` z)kkfhs7#N*C%im+)V|t3B;4-E*`FD=le!6wnEd&k%97ziw$YCw0RUa_r<~jFayAjD zsI)$lJe?J`0R5u9+R|&_WJBq$M@xc|}7F)Shm$ z>7bRDYr(pL4FwDt@fy)$rz+C$G{ptLlESLafq0#`xLiwwGe)Y4y0RLiP>lk}zq*mp zC}JlMwcyiTJ4IlM6hrIcrYKuc|3jmfLhpH|l>M48O?Q2vN$M@~C^P4IGNzq8us)u`}r9vTGTZ5^Bfl?DY20IIP zX&t2!0OVWPHqc4!X0u!)c15j0GN)o{sIA|;_puT{`C>VYL#mT++mQ#lmeqIel$53Vv=i;Rs3?06R(AgF@ned0LTD^JTKQo)B|&|T+N9l04B*k z!xvx#4O^_N)mCeTpeb)M*eZ{tW)gaLh{#4sY1sf|B;pKoLjZS?qKu||3f?%NS za0I7g7SF2c4E3_A08nd|UaGtuA_uCb$-BnQJx~H$oh|t1{4)Q<+XDhe(JR7~(0tyn z1<65#gp!51;u~*RvG!w@-woQUg_&hU+OB6U>>BLs95=;Op8CTo0!x-pEy^6=YB$G} zSl#FoRZWHGwCV$yrK-US3iEc&?R4h3p1`^()B#oR?>B8-wb#RCw^`3E7z?7ILdcj0 ztG1Ob04a{T?3PP4v9{`#8hwd9(O4?oV>30^AFKoZRAWy0*KcFQERrHg!a!$H$jpm0(SB8l-eI9o?WC?==MC8IQp=&V}G?zhO<6JXt9+9E_V1DmRC7nTIi*fQpTS}KUAt3dcsk`0FeFLxuBd6{jZN^o>Jb9ur zdU*qqy^MDHT{~9iCfHGLUUTky(ihseFq7Z&Rt`sFQGiaWw`1gn*8fA{=t z`!}G{^y6b!oIOE4hKF3hzXv@rFmPcFe{&qZM6Ze8dx-%->4idvD?wb*<|saO;u9+Kbk0mjE`j{(kS1 z;^i8GkXOG`yz`v3c?bk!_nn!~l69`%w6@rH51C!Uh}xxv=ab+5R_mE==?Opqk01i9 zJ&QG<{Zx2A0L0#wgteOP5a&i4iK8o^ud@`5lbgcwL~`@*Dq}Gm&ZGPiuKjKE>LzzK z$$;AJqz)~S_8jg}Y3FxFCkx>Vdz5U$Y%oJ>T z9K#QQ2z~=sK7%KpZ$nJ=zT2xG``On_@;XGYMAS&84c&Pi<9^@Z#>d8;iBY{Z(fi$( z&8bBI&X$q<2i_qy70g{f_)7fh6pRtv_9;ZV0mjC0T>D!f01$Mi)<66}kc??D$p&PMtlUU9F~DnF@uh=6EBJK*V?Dj_1;Z_joR{8x_PeWM`U98>)G{%b$A=h}^!I`@W{ihk|XerGkFL}gFv zl@ITJ_3{uHaN7Ptuibi~4L%eby6?8Waw@uU-22Q%weo`#-OqXp5E$5(|8L3t`~1P1 zpOl_VM_QSytJxF!(o=`5%uCC$FpGU=oF2dh9 zc6HYv2*}?I6oWIj53CXZgbkBVjKR6CacZ~5W03>hlfM_<9hZhA{+fCIQ^wO0*elcj zsrl}%Fv`Tw7&HIQe8vZlbM(J79_(#K`iG(;Df=PxGmDKY{eO6A>RWR4^=O{d#k;rc z+@am)k7zw{A(ft{5h9SGC>E54G-?PnVNY+F^@5G^)tTz)jn%M@(2%wh+Fsy=0z{BU zoG4)}aGO_4-c>BtpdlZ^u3E*XvR>@0-g1;{9@nKEgY(Anh_@=ewxB!|sQB=Jvemz` zHax%}Y#a$@oxOUXx&>Q&W9EQbC8FXU_nNyq=j&e6b^m^5V$@d@YWbN`(<>nd@9!Zy;bW zAQ_$y*98N<4`wjX3UPcE(`x`wbvpehLAZBw?-Bh2+O~<<;TviANK7&1W_8rDrDNCM z)NNxdRbl%8kTx-#0NAsf_?1RMz+Bz6E@(C-aVIwP&Z`kcZfz>szJgYa$s zvun$y)-v0U-XIh%Ay7etpcMxB>YkBMR{_MVX4lDC08&${TL*)P4ra&o1J?<{0H#V0 zO-$@j9}G8Te3?00+`TF?;9^X54{ipalae|$M?!#66XE*7aj0=Ewve8`On!*QRC6fa z8pr@pKg-Mes@n`DD}qNf1{2k&$neduf-JE&iMHYU0oD{SKb>f z??1qvxH+br{`A#>UR^_LsTp0rx>YTJXnj|z+HJJA{lHSawYXb5CW1So!ILPCgwM6 z*9ql~kWt%H50NtXNYD5?)erKK=ygek1iXOPS5?~?09+ocT-b8zx8B`V001BWNklQK}5t9Vf|g0WUSYme15T33>SeRfB+9GFWD()zJHE{->Hlf-#ml} z04fPo6R*=^)ZNsX`QaS_G-^E7Ki}+=&rvi z1I3`#cj4-;Ot6|k)9e1n)q&0PMugOXcy=_|nY!&7ygmWXK*lVkhsy*6GV+~Le|#yC zM15;y>F#a$sUZZ=o@wlo^IhElP>u45MR+bS%|I3aHmC8CL!G+$`7Hka3T!wy@Ai4f+vyE@oPshoC1KwGCubTngL7&Bi&YS@B^%(RmbzkQFK@(eDrp-_xW-Q zpFfG!1_a?ldvSQE)Aax1Da@2!XRZx`ye_kr+_`&!#0x7o%&Xg%Rl=U$%=`G^#2tIh z_bVdyx}f4WHBgA8H>5@#>d*EC2KACR~M=mqr*(KoC3`vMwUG5LOs z?!j#hs2#gRzA;Uz{jr&uNYycP5Q77_qXy$`(VQi&t<%cOC~k$N0?hRo>e05I8~c}# zS_NG~HO1$~;R|5sCIYL5#bNXwMC=2YurXZ4^d+q4>D&Z2_3PfAg||2jT>s(grv6}* zUqt1_&gUBF!_h+&Gr>%!F7wmR5;IaM47~@sCYeLYf+e@fMF+ZvAI77~q2Bpo;_Gu1 z7FoN7551d42LT|P=dXRA9EXL14?IAVV<19l0WW+PjRu6E+uuRAZ37Y2EqwL+D3;Ox z2qqrF=uw0&T1B{Pcss%1PYUC&8K5%*XA3yjd47Ngo=4l$y^S7G6?^+JkN^Yo2994t z5Z=7}uD=~Y6WGz+@i)KOmi5I2e0vI#u{n*89Hw*x3_8Eob@}Yj2!e!Ccytq%`(f!f z$5ilZM;ETg)V8Ot4ezKxqsGzh%6KP7p<;$|QB-D8nZ15fOp)Pj`+~>hs0PJH_*uO0 zO-wWJE{yF*?`xlEwRTc=DS2f@X`_kI6REUCZH>jjHjpY z%p3sh?rr|u=DDa2050P5>K?g!gj4Z^qyuX&#ZTJs;cY@i2MB>WyA=OlSOy`nrS$u; z$$KyvgyNO8;Llr^mSG#4s-MaXJVHkWs7}s*=ci64)|I39Xs~mSa~Q!H(Cbz#9X_J` zO3(06vS;4gY@gdDQM)&)K{jg@8x{2?ZrI#iM<0KSAQ+6@P2`xmb-ewCKJ-(ij0N7PqSK1zm(1$H! zQyl>NqBYemn<`pfv}`3!2BA7gj!eK;;RZ&bkue#}&BeuSdM%SMTvN=9WoV;^LTasM z$7Q}Z9r1OV-IA7tKJtaLksnkp4{m}ql-a`*x!LWqp<|^yF+DXl!7ONTOU!Bv2wU^( zjq-)7T#5liJBGWqq%;kvwES>q=nfq}&W zmI?sFmzXP~6@Y+aTX1+Bg5ZZZzl5gU-U2aKxjAMt$?co({}uO<(GLxTw^N#Wqv}w& zP3w=L7q6+y7OPmPg8@^+zP^stc(#H03K&oojP)U+bxaVmB``zQu)K`C0*ax31e+8P zqwqW~e;un5GJ(WI;Kdu&WF&Ei^ZxzjJ17!o)YkE>vshPAyH@X=t4l_MCA(X zI;x4ba6y8<(46_7&c&O%pj)=lN4E9dE;E9Viev2N<|k3*_Q}R*9{|k_`qr9CzyRu9 zdbKA8KncR0d3)}v`q}!7T`cm&!gM{DQQg>~)XzQ?`LuaRjYf+@aV8?kz1c>j6#{Tg zr7#?qLJ)KJdNbMxpe2!cC)S$?LsVxVE~7gQC5oPRVZ(**!>z*F=pbf%2wDPQSnJ6C zGvu3VYvgWZzVeFq9~*BsNzOC|cHHx^<_C5^GUgn1Y@GQXf3NuY>6K@a74eI^qeogo z4F?t)_;PmkEVCl8Edx`#G7V&wb*Dnvc5<&uLj@t^y>DwxtV$ZQYG!R;)zfN(1YX_+1vHp+13-KKfE;kZU1_u zMKP7Ws5NGq>CjwX*1zIjs3;*BqU}~lhA+D2h*|(-Z4e8??91wg(h)iMK~QV@wN{l} zdrkFo=8EH8s4bq^TD>o_XM1#*Fw%!EK%bdHUMCJI((9>QxG@lqWsfe7gsQVIz084ahy5!|IAC9b=~wNyJyGk1}} z17?{-ip$}Q;Cb7E7Y@b{CqxAppb!g{P6GZK@7pA#l{b1Zzjo|WqEV^Jos?6h@ zCP0wObS;1gu&~B!a~v|5P(3eeUE$PbXEYf$GxoYrRN|JD##S*bDN+nJso|bJNqX66 zC_;43gOYEw%M=0edQgtUklKym5UpI;3W7a7tZ9&3%g=+2u$6#h*df}(1q}i1_40cz zaXp9nb?d>F5;~S6C4(i<2wMDl98!T^YK$qq0HKAO3Dqow7ri~~9R`T&cIl}zRI4!p z@BU-n&=`n>)hd7Ysls=amn!F0`MN471eTh?87Ch(8QHNr*tZ=*KvLz@3+nVNI1D!r z2YVl2O#{oyl@s-g7h#NJ$0I@+CSu5{T=*wml+gOI^I@TnlE$c?mrLJdC4iE`j^7jd z7%@ZWXn6>20FZX)hP2IeEQF*Cno7vyQzRQGsS}mZA&etc?rwbNHZyD1rk?EZ!32qqy#hp25c8+);k`baSehX2$Map z#T4Z%p<6-+_o$UOQhl44a-t$s1wcWGsM=XGvfB>2mxX+XpizJV)I6>@ z!Q65g6<#7B0`0Ew-8*f^2RKqlM%ED!= z)?xcl1a=Q<-9iYkfH+kZdZ1|F3EPjvmK&@w2?Ez;C=?=b6Z%Ei73Asw(4td?>RGiO zSDb^YE=9t_s^jHnN@A520R2cl9K2_M)9oUgCxe>RYFUjSyx}QLV?Vg>Kc}|sZ>0L4 zo_qDF@Dm#^FWi?@nLrpA42$ z>;(EVr;m=-qA^jPNSxog)tm2zFX@Np@9fPdl1gJZdV2TP%2XdhX#X;OS8AoJ7p)KHGWw(Vph&cDj@+ z6@2pyyx=+$O>`rsPWIA=5AN6dj)jBN3S8g&raE`Nwt;^-jj9DfxOWE*jCL4`UwQ>I zMF5B@NEw}zVadI@A0@~*bjK&Hk3V|s4*%Dq{oQ7lj2W>Ta-DV|%fs|9RRRV9z?1zr(BFtzGW-$_4FysZ{NlQ&2sv`@Y1<&hQG1$ z;?isOs@)Og-yC`15$)6A{-HIi|CL!{fsvnvI*uTKQ^e92V9GXiedEwXeWV*gjWo5P zCod>17h$t>$8crmCMKbI=J1o3w3>ymRo&ZFJh+ufs4_PE%oROfM{E>B4?w73iRFJr z<&_(Cv{11EY9io3tX#_c-|J<5z$7sY&;Tpc<~=1e{t>4POSY+bNcPu9nb{2jn0#*y0F7e!v1rI zJL0&TVoLnZPqbH4P>CG9 zwCw?ZmyU!B`3-gERa#Us)(3afN9?^SL;(5C#N0)#48k72>tpo;1G9PMiz|O}YU$6^ z1^LmV+xi9`54J_2G5D-fcv-IVw=RSivL&{{tvz^nZ(H$qGfu3Alo`#@MwDg8G5Mf(^s-RHnScbJMZ0iFUs)BMEVG97NbtGe8h7c%K zKrR53EyT@Ebvsv;HLrjsdYDSt@d!$65|JNueXXW@b(5_6dW(rrs$$&$5u5-C13UY` zK;1_6O(Of0E+*pR(b%Rj3VK~LNLY=Q(y)O}N($TW;JyRY6od#v7mXU~l0!vNGNdRl zJxCWpGxP+9icnHQXo&h?7k*O)Bs~^Od693(hE8Io;vJV|L(WT)wL~t%UYvCWR*|c< zjqEB5_M$OvjVVZl+K@}Wlv>>mo7wAgirXfR?Ye)3&=eh0^{We={YMorwT_3P?IYk0 z7b2>4FyiJf6^+3Fh`<4w<=0JnXOH9E?F77q{Hl}9Hz>=^1vs~?Ft=))&6Tdfx+R+X ziMWg!&@5zHh{PcTz|v~TsskdoY5S#oxu%3tqB|nCm=n60R%0+IW;w256#Yh}yaGvx zRyEBNfrRbIe9n(K5CjsU+)s%N;Mvu}O!F#S2Sj9bi)sjxp0z&LxC*-o5LssXqVMMC z>r=2R&?3TvW(VL9#R`f`Z?2egsB%MvZ{f)%c!q++{`-W zUA`MuWWH!!&={^>O$FUO{YR4Tl*3$V!3z;MXsv`cmTKOjyeY1IiFNyp_s?;#Q9wim zGprU;@pkx#Vkrhq5FD=&cE_ZpLRC;K!MENJQ=(Ey$6QqboJO$T-0&n+R7b7~ThSB* zs<6C~R&FF86bU5{VVxEjjnJ~3uFzHj4N8E}trw_czvC)%8bwdt7aOSy5W?_IZ{U;ly9TaijlZ4$%;~kyL>Blr??rzaAk1vwvoD|( zc08Us+dS<&K%YJ|_&y93AGtHPt@nSWrc;q$jEXJ^c`Z2cs{eP*3;kG0s}KMJ$oAlH zFx|SW`Q{_qSUtKY2f^$s%~K;`(R@qJfn?FnQcqmFt8jLBl)RLF`u#iB<~Fmf;^OL| zsaM9gf(VW!kN-dx*TDo<2uz4;`1swlrH25lRVJT)e&7CpRGNP8_*G|nkdJY`G4{>p zZ$IEDIxYUx@Hu6tx0*z?h0nc=YZVB>WBYK=WQU>ng%h~60Rnz%2i~)%!%+O{X`EaJ z0e5Z2PalA$Ae8v#c|1D<0Eb5K(IXVm6$lbCdT3qr)skg*^PkSY@?4u6Vg{@h-UT2uYW!C%&U zw$VKsP!@Um&)qBbAXzVc7OzgjvzE3I25-}?^GAM77`kbB--&u1Zu4;`uP z90LGSJDZ9OLEN6%re4p@e{=1nr4LMW{hNXRG&p&OJ4yS=?mr%)|NE~-XV-|O zJ>HXh@10WDNOIqE=i(Qy5!fB*&VJyoFk%pM_bXRZC$AE-pGjmNy~j^P!JNLd(EX#c z#2m)V?4$R%-ARCwbGhE{zCu!hecZ~WKnBY4*}mVNI`<Sx0rOMGm1k5qwQ zID~_vAVRe@_>aer-d5EOT07Qvs&}_@E%R0}761C_cZ{qik^pmdNgn?J%Mf}J?|8S! zbfGbxc;&v`m5ZYyRIY0Vm;t5RPTsN7_6&|f{SS>h_xSy7d6CMLy0R4ce`o*XMD~Bj z7UXZ;M}sK^L^FAO_QkN}%Y=%L-;K>Z0I*uYU%r5<3q#;n@1k9U)J8Qy4}|@XgcAbf zL4HG>IZ0IzK+=ZS#H}36{CWC)y&i{pZ zJ^&AM^bhNI4~9tq0;Edn`Iqz7=SshS;p&atoJ*AhP96=EXbs^RXBchwK&oh3PL^8TrsRx@Ll?@R2`J z?u$&vgGA^D*?VKHtvwtP8a7T$gMdJyKZ*V{z>u@XQI2w>r$lEKmichy10maniL7RggBdgCZN)rWN#Or5AJ08;Vud^M|1* z*sc}zf03MUFX+On=<5eb5_ae%?G$UX?v#PBVdVBuNZ6rQl#6VvxwD4ks-Lr(gYoEt zM#LP9?wE|mlA2J9m3rqu#X!wL%>e)@pvTZ-c63rF3!Rcq?)o8(%aCOdz=R-*ZnFcO zuTF!wEobjsB#E;#or{?W5|PeB*=Tl}1W5zw2qSD&n{K^Yvk-FlmaN1Um&)}lcSg`c zNg#C_gbpyAEaq}%pnynfYICTIRRzpOrHK{yLbF+J)o}K5E~nL{hsAv3$;!pPFhujl z4wE#LZSj#rWXO#yC4gbQeYAoj5lXOJF$D%q0E#YSS97|ifw@#~WCu(DLZ#SD&NL!m zt{1EMK@$v8l=%F*nQK5v1m&(AZ3Rg*XW*{i;`;?kwHfiH&(cTe2SD&+n2JHmFIX*6 zZ|FJC(-z8b${;`z^cV({aC+e!X4~F;ls+kTV>E@B9)xx)e=%})ZEDf`k(-k@ap5{o zBxFoy;o2ae<=1nKSvOErR9acLM?oR;Rx#zqBiFP^BV<%twb|7$U?%dnjV$P~4WFDc zYP0TWHJAva1O(vAR4tGf25#ko10g}2OnaB2Yc2Q$ib-wK%b?L}G^&p0A|lbWxK058 z5#ZQnNC1qv9M+2+w~T{hZR(F$EpF0lrU^fyWQS7Ox^kKg0)>!K8Qcp4Kn>nm(Fnly zyk%D$03bWQx3@%ry_Z7^xLFpBJW0e{Jx(D1`w}a+Dp@c7%@I_tH((2@~?0+@x9u2c~d;L4tnostRX(K;7zO~+E7MsB}pJxCN z^U#^b_=y4}{G{T%XDICL&;)p~4_6Xkf)S{DRz<=FfNWQAekYhn4VA-7YNnW8cXu4m zs!a(6^9Ke>yj!jtu)_39b31l5RRb#z_MT7eURX|};r4#DvVHQ3ZeZiC%<0X$m*;w5 z2dT@=J16XD3;?aIaBdm!B%Zu3IXJSZ^!R~NTd?~i@4`%1H(8^`sh{0`>B>0!LcB0{ zXZce9Ae=s}@$-|d*$Frb&aU9^P9bd19y*4;I2f2($KRZQ*PcCe3?pd(SS;Z$Uq;i1 zso>*xVQX(Yx(T$C2Og9Y1ajAdM&Zio^4h{;9$^E5a9{{WHiLksi_gD;>EbQPW|{Q( z=(Z2?=;S~WNyKj?roM*-_l9pq1aKWp{eAdSk~rFU&G7fcw)_TdCG06<`CC|d z!a6bT=cC^CiNeqA*u0<3*lm5$-M6rj*Z}5y05BCCizBWAz;X*`{To7<$n}ES{B@Q2 z(HMFS04RHS*+n2hghNpbn*dM`@R9>pf`Glz_J{_wLaey30sz<^!KNf52yG*3m=QgE z8{24AqgXVOl(Ei7k8Z)Pk3mlXjO=r`_yjIo0TA@}xQ{;=>KZZ3BN+apV8^th%;=u4CBttJwPxSYqyrC_HnE*feMzGLU@4(%c{hRo?_8-499Qk*+FJfq#VXC45BIp{7 z2mov{u&E0Gf)HOnkFPJbfdY?rl>N$+S2kan>gt9yYE&n-U%8UH9Ly7tfbuc9dlRPs ztWa%ATy7vlc^H);02K4pJFdZW0T>YPb?&*x+X^5rn*TZa)U>FnpnvTi`h@#1f$HS^ zaqQVsB2U0a{XJW7C>k-?h$wVpiXrtsf9HSgI1#}F6K-2QY^yB z(NE= zh2a@Z^iM+s0CTmrI&1`~i0P`loHC--G=)^J=X=#gcQoz`Ue0JnEh9q3YL=2*>We2O z@p48{8{JBvAX|-Im`-&wtF&@>C|4hlO%0Ya5LPyCArNwD_->cx=)P;OZ(Ix4(_o@h zqIWzIjUe#7_556rO(GPCN70u82tkOo62hP}Pvl|&%uogP_jhIp=sJeFAOx6^E5o@_ z_8LQSi|E0DVH)e|302dPn5%9CjUOmEzgR<~2?qQS7uHd~^>F0j!MjI)>38_&CV#t& z?vyc_FQeuHfTp9n8zjJt#VQIdge??bh3%u3gln0L;@hl5T#f)ssngx8ol>Hjex<;+1g0i8teiA zkq9QYLf62Yc=d|>tCjzLe)&t@!jGYLkHqM9^PcXWtu%OJqw9$)4-VcoY~Jn;+_>1X zF*}DK00<*P=<5Rku8WyDcpeyW56M6yAOx2T-&YBGU)0-{p30MyvVOX>L-kUz_H3Q5 zb8{k;0A#3SFAV?Q{H1>h3qJ{(NA$j9hd(tmH2AK=ct>Qr-k-!+3Lpre2hafqY@h-# zAb<=Ifge`uQ(uYx`Lo~qQSj-;Df{gS@4ZpHYZqd#cM`ifrpyQiGHrW(qfpv40AfI$ zzY&^ISUS(D(bjSj66!{I_hvs9hn>;qwhwi!4Q&a##HHLI74w;VDd8_1>2Zy=YLbmq z{ZTPE5+n&oBX)=ag_QI*`SvTfoL$Hi#E`{hdXj{5H#}+zE#|f1%lu{*3_UaR0_$$*zJfENO zKt!4LzpMg{ZMHJp0+?+Riz(PT2y%15AG`(tzQ!}#P>+B?ECsm$q#$04gW&?p=}t>a zxm<}i=F&Z64~XFC$m(1QzJkTZ=C!4Cf5l4^9~oR*PQg*J;SOA$&upp%QKCC~v+HqK z2CCuK5a}4$;Pu^}sK=>pa<(3M_DWiYP*HquYBd<)Qk;t#KOZ2!3WfO5J^6t&0Ms44 zL|9paAUw1UlW7pa_HlZlqwbN{#U_Eo`3(?(fZK<$H4RljGUnHDVg(E^!A zFg-BxOT1@5B(Sy56lDWW*sRHCSKxQ7W^PFv5IR&t61Ak~*iF$0nQ{U05&*gaY-&Iy zFhDN+5NsfQCsN>k#`?>c`#XPrQ@EN2C`g+an1wnA`$d0wG+Y_Ma9&OYYoyT>~fJNiaKJAU#*gH`b|1AVTyyCyiVS|J*uDrL&j;Bb2b2`Otv2 zZS*%2{kwv$o5r)M*t+8;ih$oCE=_C`1O;#}%rt)Z9Hit#!vC4~g*_Pn?#zY8;!_Ai zjzogZkI11uF#MHl^UPKF9>DMw*LNkeP$F!oy22_;cpiMVncwWL$&i7xec5t7ttmoH zaS?A^_tFAh%evz?O;idH%2wdBEyK_dCYy@qvd=Ak3o&Y3!?ypAw>OWn<0|h(e|ztm z&U|{FTiq?GHA|LcOO|bHgKcIU8ypgH9UMqVZdT@GB{#!M-p%E`_1;}s_a-6J4G=IS za0y^11cCt%7;G%bnx~f3^K`mTpZU}|HCOHL{c(;aW0MCj@7AByQgu~V?Qeg>Z^$BJ zw3kooUtM2Q40zKxCbO-v3cs?FmK%u#!w!}9O^8GXLJ~{))bvU^&6IJ4_VAS;wjR{Q z+T1~FHrpe!1BOU8DZvR+LMEUd@bBCm4Y$f;PAp1iYuh`jF$uSc(+fDi(Z(VxyltrT zQ~emt0>GMSyl^=y!`B3g{#U~6mQ}7YbFvmF@pC?Fy~q75dk<~Xm>7+RU@*R9?C*KJ%74bL(mHL;0EW_YR(p#RL!(JLuJy zrDO;e3P%ojsie~A)~5bo@9~u`MDU)Oz9V+7BdgjO<-(tAt4#M&$Z#QtPaOjRDFcrj zKtczA*$sU9RS>~Y@xV^JHx2-^1$^l=0*RD{58Q$N3;=A@@wt--B?QA=+i>3w04O%_ zg;(1`7KUyn^?zpTdTlBD{JG6Ln)hmrwYMZMzxf_-Jps$ZQ>U?TtHe@=&OdbE;Qh+4 zsqfx4aTr~h9)=Wv%(Ygi>Eh}}8^>({aScHOOJ4~pO>?@FtP1Si*Rb2Ox2(3l(vJ$q;M5IrbmWYc+Xh&h|pu#7bZ*fj-;}Eh_SYBR{WY_ z(A6@QO#q0gc*{660Rq-)xKM4w%$Yz!ps|1x&)Cn#oP0;3?-BE%%^i0^)qtvnOGOZY zGwd2bHUDK!Mw_rX|P?N(En zt}Y~bGLcN1aaV8-2`z?>OtM#YUJt8YUuXW_JyKIZ=$fYTA*c;Y?88I#og%2jUxdV1)N z2S02-Hu-^Jf3HPSG!X2us5cvb;1Sv4R4M!?C(QY z4Cq3~2l3G#d)US{^NjfRKR3VD_-`{;js~w+5D0-p9LX36xU`06ryy@#Q_E#M`6?tq z74H4p&yMU996_Nv^qKQp$MO)E`%vel=6$T8hZ^jna>r+}e`9Q>JN=Fa zdOD<_jp*vR@LvMR&tN8tRRCMU>`ygz_AFGozOg=jdXd>z=vqG+hc@BC?cf}d#L-zi zdldlsv$;p_HIo8F-ZRs8#LsnPR6C0r$Nw>J`vSxyNAsmNHs%+x< z9!MB&B%}i%P?)dt8?XaE1ToYaVZnD*NeVfe=QK}^nTd!q*SO|NuE7d;Gh*;b&1o)q zLV?>`aI$IDXodN<8q^bBzp<_rlbQ>c@ zzY#~olmdB@oV4%uyWW;ULQOHoJ;ezEk30?`T8=p&Lg2v)Km-XyE?S5M9-u$j`trbh zz-h_R!3q&Z5FC*M(!m&*kB&Iv8W=;Zp=}f@q9{$LYAqWJkx-c1YX_+`h`$~_f$4g$ zOl6WCL7$NpRvA{U(vpY|WIMZQ5H=(vWE3#ZgGc06F@21R1Omh;duTYzT^8N9>sh)h0^oeig3o>9N76KiiRvx)V$bXW5FJT_f15Vm)86 z!*mLJN$Ye`*{Clun+$^#1pxVRsidH4ASzU5idQaxh`PF>$x&aA*)pu;N>M3a_Z$Kk zM|YC-F_km)hAeJZVyM4??}XYDszXTu;#diQpozx68O?(vo3@qn%2jsvo5D?_U1Y2{3>IEBQ9qw53xPLzhT# zBT^m52GK#>fgQeS}go<8*ia>#{Ak>J2>&{nB zm*G=!82N5afZ^xUxmWaDiA5X=kTeMv^1dRMP*A`a*lxPL8)FQt0k_;-SVob7O-gd2 zp<>On>lOcIgyP_-2mg=EzP-VaYm1krqCbl+Z7}otz=Ru7@=%T^d=R45j`yFx^KdxK z!0OEVgmQM8EThBHcjmzfsu(LxF_yo$0&9bk6{Dy7g0Uo~%p{!{_0N1^Lx;@Hr&i(2{P` zdDDmA{ClTyEY20wFHC&kAjSL<)^pzA5l8eqXV7ywHpSEMVjCmXACGoNv7I&c>!b0I{+;_^s324ZvCP z?wz$Qg8($s?tS{g%ioTEw{)WEG^r6)rSw6)gZSC|vOlYg>coYBF5cK3h9E;>la%-& zOXhq2e-NpIVN8GEPXcjU(d{cDadmn-jf{s!|a`L zt|YhC;-eNeKY?_+%W*e$?hdGbHbE1iOUKW@sqOMSSH$OEg%=^F;PE@LsS^Nl z^~slx?b#nNg-t&+JmXA8r5JI98h>-p|Bi5ig9VUZRpu`+lQTex>dYfXv28Vd$OIr= zrFpuK9792Zfe{eFBHcNBu<<+c_6`{%;N{rz=i}27)Ft&_GY|Gf2>>dDA=TdRoVPz+ z{@rtz{@Gu-mYe4{ys+s?%XJy^tlL8?00>x6noHaxH*8#~KndVDY`U_z(5X`$fQ`Up z3#5n6Hn@o@Kw#9BR9x5|#Q-#TP*;VHWR*#U`4VS~cKXs8VaZAjRYC~B_K+*a;{s5q z?%L+kYUFAlKnme8Rp^EvW=lRJKvE;?tq0xpim*f9dHGzngBU|2oq!*zBCQ0ntK#v9 zKx8TPqTUl!mC%y)(+fQfh)8iFvz+Q;RW)kJ>glB}hbw^w({vhg>4GFJDi6+OxuW^; zplKI(XTy>P02`GMF2Kc8$X~>hWBB8S920!E7<_fki?chmnazaxRTuJxyjy}cEJ;WC)#db7pK@8iR9S+jlOLuw&D-i(r9FYzt zz<{MSlvV)1C9I*{?LwBc1Ek4L_uh+eM5kanTGUVw{yxJBtBbcEQb zi;XTgI&{m7zC&grxU2{zEtF2Ae5gL$A_ZY!E2ykut{SZ~+jkwRSgc;DsU|fvv*s_) z+ROGvP|@NjRIE}g=U>OV2nDMZ!D3)=>-Ec_34|apnD;4sI&fDB`7}c*QBYb2;_9wdo-*#ctwN=Qilv`HOQR zFU=cHB~Beqy@4C$fEJqTm6P>pI+Ig7sKlpN!j;9MYX)Sg94xI{G)IvzSE`ZeD^b8Z z8PXmU0z8OH8|k0cp^2NLx$hTwrP`=hyzr*!q6Bh9BqYG#1h2EE{0MOk+xr2aYPUtz zIrDqFa<*E61BNo{NPw)N25t=wPB3L|}}s7kl-lrn11d8^ej^ss@hY*@9!M zs3)K*=uKCJI*$Yci$H>!ljJFaWZJ!;nIXu}Ra~>)5}g+gXHi?_a95bSErVZ>4B!F@IX)Y0lE!9#ONR5 zr~g4)4PDhfzFRglOc&_mFTG%`eES9mgK+04#_pi`5dcg?>cNt3#Pmob(4t!SpXsj6 z${~#KQL@&8zg{yJ&rFSyCxC;kZ`%hh?hg`oF7lX9#KdAxINt*T(<9^X5>J^!3-+$h zFLRGbVN;KfT`_lr` z9@|yBG=vEF+C}`$Nf2Rgf8~iImAJ-;=*4M#`5Yu+b0>c8Ze-&i!l`9^;?*0nC#~aD z9;frKm9En?WYSOsq=bI0t2sQiSiR{w3^+WR z{*~S*2KT%t@s7AY)LyY`Hs*>qlJ_)VS1|QI{1^P@x#4)3)ay% zeLDrbeZ|x*?l&v{}=FzVE}g5#~2gZ~=+g0E zUt68yTp6?1VnqyXhG+98DQXSSfXXbE{=#0&x-$c*(O*#e`tha$lCKBgu`8JS8-Fcm zo*j<&z2E5lrE3rMu^?Y={L`qOeP^P7H}0$;Tg1vghWSPFlNUs^skcXA^*jlbdx;#N9r3t<0)O90<5 z&pi8aJkLJI*cVzTZ`p?BcXVUh5pP744dV7vpF1;<3dYsGf%cn3&o- z3u-2r`2_%&=(uG~eezX=g#HA6;Z5jEg9uaW_}lNnmq=;;yZ2rg z=>WjyOFRDIXG#)Uo&N zJUKOl5cIDX@yrwm*fW5ix${gsJd61jLh&Qv&QZ!FQ<4s@d^G!f1%Z2YAe!3_0#639 zyOvnY2cUyJZcpCpk27F{H~&lWg&A%Nu>a`p|1a)OUYmzAy-?|U=0$G13?RvrM4u+| z*SB)E=c7Fz9XPyG9jb2`EXAWs@u*YTPGCnd_s!^AMW^7O*eshG$_}Q>c+DU>2qFFU zFA~%-TzM?Mw=2=j?&xs`D|#@R#({|86@9&;FDSmiMrS=J&WGpxq7ha#08m2=7NLe9 zpq55C)2{9Z3($ge1w%`o+Gha-)I^~Rj_y%Z0%e^PBPxr0c5EY+Vp1wmV<=qCP{eAi zv{9F+CLy64`beJ;91YZj;dYCRB+7F?>7U#<&1}&`wPWxVVA&ALQ&6k7H=4 zMJ+_Jgvw3QMqM4dGLQXO{PE-;3=Q4E4lrEPi?@K{HN3}i9cBQ(iu?<(7%Ev1h-r=z zi==~%bx8vci&{t=N$yh&5q7+%y|thWFv3~Cxe1Axdw zaBXDNKFJ^h`1N+&P?As#NnxWj6+gS;<#a_EHe!?Lvyf_{HYIJ#F2scG7K+{~-F=tY#{Nxc7F?N{PG84}lNpXTI<-ywR`pc*V1M%N#5-brLyq2id1-6h-79{u{qDc_5vrA9 z$9KcBhsdqPURp9=^w#O$@AA5i_l>20B{3F*(3qxcX-qzW&dum&P;XT%JCtrS1Fn5j zmVJ?b^;3<{R{wBj`nhQ1b*`S(aCoFGL7FphY8?c`1&)j&skO}y3x@F*Um#y_{H9YTw1>%cyZ9JTw@8fbSCEL{#-lEc5~N zAbme}scWUi3+2zOR6l>S%d;1NwKpHZ)R6&I*Wkfk4vKQU=QV*M8w)mVVqCEDM4~>B zxPuLLBCbn8ccF>Y1Tt{o}Co3#6qLKupt;eupj#d!5Hc; z{{93OYv2qI@5JHZHnV>&kAejTjAn4>$So>>1T0nXsbgq{-;V)c*X6(4e+qJ4%+1}z zCt){!mdOnFjNGkfhvQ6PEOz5}B&Z$OB~W2#G8i4S=}|@?No@5QEPaZd8)Nw-D8>31 z+c^&&F>vOLv6^;Wd7QNl&KWpk*LEZVEMT5N0t&-nh8FI$#BhQk0yuCG=wkp-XE+A< z03+-ri~urZVvemo#h&X!=UXr`$&x@a#QL+yUt(vru-IWX_C7Y@(x}O1pJeN=uoIgZ z+s7t$u`NX162+5P{W>m8FmF5G@*y^)&~6jCXV}u;v9n_=p9GTahZ0Mm=Wuz9z56z^GyBD=$h!>xYY!#p8Ynyh0L&E`XNAAa z^3nIrg9$%kg!ep{a|wzMGp_J$MGUQC)I*jSqnoeKh=bTQNpzs~W5yZdjB(C6C)NTG z+;S&1AK#q&zB(+z3ybX!^MNhw{$U6PKh(Z*ejr>+rdV}{v3h8-aAg<~Y0sE_>S89t zniJaEX!oqa=Kzu{xG)~(Q$Pxx&iR44i|ly-X()e$x9!1D>y2|T4D{FU9;_@a;yRj? zfVmPr^D3MONhSKw;l*oxb9{CY^=d0nu9=4n`<36`wf$~qmomTrPHdZ< z9u4+~ZtCnx^faAY$0amlaE#WJHNL&Vw5V^TIdZfJf>inZU4yyOfV33=Fg&Cz5OwBY zGyouISZeOdfwl->1gFdCHhqjBQsqF)CA$VaxoALYnjTqbz=U3qREjUqnPhTPq z3L|Is^3HB<=!)4P7CU>iLYjqAetWunbUg@w9ldy9N4r08bsa?$0OC6KjzARvFkeKj z0sxwVeWPvF@6{?63az0e_KYB@w|!Wq*Izq`Yr2@JzP8HQ+NFMA^E7U9k&DljQ&>_;8x>yE}clf{cCJ*TuNFUc ze&O%D*&FxNnZnM&RzZMEIn*owNXObn1q5Ygeczy&?qF_=&yI8`8=Z()b7f_sYreAw zK~kH(Ys?9|THBjf5x&Vm;40$%AyWx}5_2Ep1H1iRMzBS6DbWl#F`&=W#@#q0s1Q3a z+)=PHAAjYW&xOBLIsQ5>&*d6ktO49*tMd4@f zO+W&EfVnb=Fp@<^w9RMd!uH9YBvKq{1q7^1%$FevX#+<_(WQWZDq*pLP=bJF@ET2( zn+ek*ndPI2p&gkWY)n^&zybsf6pjyVAE$U+xk9{{IPAUXOKEwgaKBb zk?VRiI|yP>h1z7K^tizIYdSHkcNWU9AtF!^@M083KTKF> zL~c}DW|ws^X>Ag@Ua@)wM&Nie%y0n6Vt+I@;%yldegY{M$q3yMdWuk5K$mWepkJo4 z`hfa^SM*dBa0~%Mw0r1{u>B=#0&xKVDIHmHeNFM{vJ#RsShUBl`n`|}`AX(epqOP+ zA@`(<>R?0)iowuw2ZR0AOnmveyEI7l^sCl7Sdv?q0>K_8{a`5n_R> zosiu!+*WXtxfzYp?on7>Zixz8XBWB+p%!MfTU@_Ds6n zF!fbPj$93Ye-yS4q8qZsw+*PjciT@K)<59x*G7J#* z;?P~Oo*u>N)X&~EVa^UB;NjWD1C7fAgNmP2&%J3ZH#;I7fvb5ua~_fq*VtpX>q9BQ z5H1$COr4nAs*=Vp-#0wFF&@=4tk?0>DR=<{$Gi4nOD`BuvhdVNG+i);hjwB25Ex*( zc=|NT4KU!YtvECR4mbh6at6670PNp{`?s|<6#wZAPOQA{^61L!+WEfUvwv~VFK_kl zvz%)AJVm5%V_4a*T@2tws9wgxGw>sj40SX2wu4?gn@Vi&AAT!~^S0vXu^h_IP5R@6 z)o)SlRBgJOys>Qd$9cxa&Js$;Q9Mzb>-MV(oH9ZQUnS0$9vWfqNq6?@!vpWtjjp!E zj&hR?xPJ}izTUw3e0#mMPTCt-{G3~5joGeb$9rS3y|{fH9XAPb1U5nop#tB<@>hb2 zS)1;rkb@yLS&j8t07Z^kz0j*-M<(+iwp$pjVC|c-yjY#?iJB5_IW}meM%$%f?Mi20 zssM~$H$71UCq%3^+u@gW09uEinXED)LCl=bxEn2rE`Hf+{BilXMFD~G@M?(OfRcls zd3)k_lG`)tAQ%VZ=(`u0Z2*H;as7YEy?bw@tBk1k#q;))<^Oc{hQKrcF7VJp;-f@)r^mtU!UU_bV?5Q+}|{umaj;0zD%!QETFe@!V5Zqrppekh(hdt|VjO!3-i^6btn z-fRy6UJN~yc--I7g;=^HDD7GJtMqwal655;6b%4Mhu^oq)UPBMpc4N;b8>q<*8i2W zmtT;7Ql7DzCav2Wfvk3^`0zdGPq%G9|K%*g2&#fd4`8GNz|Dbzy?dXwqgUaG%FW*I z9^1c@gvyqVbg%A73jxVtOQUhNpFG~mN103}hda53DhZ#Uu)bxwia}K;?=Kx)BE+}_g*JAzqZ~2St@(W>rG|L z3hW?MN}*do(Zs?vb3mZlCF-)(F^_D4h@)Ibv59&B1`MW^HqQcc8FCfoN=%7$~A}SYSR*f~#bOui+;$RZByoeeC z01u?sAR`G$aI$)>7L%Uvno)CLF;)^RpuXt2z_N%g?K;f)h zj_bDI2&{$`#tJz_DyYq`$eIo_hO&d04owAPsMV1t0H}M=RHQf~EL?S*gNkj4R7Q!lO@91hF84^wuz_GYIg@`0st{)b;XTjCXA^owN*F;`~VZ+lEm7rsA#*1 z^>vg4m3duVfT6>bxA?~g9ztLG5qTDtuA-b{g;6F2F{<)BiWM-xGuXx^mK4R#F|xTV zhFDp`#tF7D%6uJ+s^uEQIv7!?$h<%;4uD1Vbz_N(UWN|xVo()W6{?&0wPnU7h_UJr zbJGBm5y}l~nXCd{U*aZ_#MYFSB~7SM3T&~tme2_hU>u?m#+cL;fU#yB3)KeHTIep# ztT=1MO3-Y{!;E!_A;dUCca5#_vZ5Q{M!TBv^KI7;Z2%(Pf}X%zYwwU+A4CcOq)$d! z)&giCN%?YhBft3CP@IfMF#`aLq*^l}f4JnGG&RU1TWPY=aHJ_%82wOJkP;OKm6p@z zx_22ljh9)VvLP(<7!p;ean|Xgb{KjQ1pZ)Ua-rG%p02 zK0L48dN)nvH^2Zd0-?R8Tvsg=;zlb_gzZ2O^^NNk-jJhI201Mw2P6zg0%xdHq4)r9 z2^7`3Q6x=4WV)UqN>;!Xs@dgIsX;A0UMI#YIwA#tbU8(CvvZEA*3yC>a9;;gH#9V` zBJ-|lDeGlBHmpG*kkc?B7Xgw;xU{2Q3GC9k*-(CPZk`dpcj#RYX}{qgiIb6ARzJP6 z`Zc~vH-&#~%#7_QfDr}4dUZIe8d#~~FTah72c6^R@4>DC04Ox@iI+shG8C0PetZAV zCjKb3XIs#3TjKc({$I*VHRj*?b#M^a)cXF@uWZ>Vr6JD0cgw=s)~K#yp|t(GFYVqJ zlFF|qNh(=GPrrP}zNV^yBD#E9PMskFx<}Yu zZx(utlg8@s{mnVKR$REaScTH&J6zfJR~sIfe+u+W|=c~W7>JWI-Xj`r;oyuZ9h-KVDFKw zkN;u##Ma*!qOgct|>_mOz}!7^L#%sIsMq?#KY;%?!;i% zyHur(NhAg)SX<}wJ8SJ0`5S#ObSvnR2o$x8Ht@C_4ZD7O66-Hv>C5I+pO;HOhH96S z*}KM+2*et*z3yTf1d;Kx`*U22z!Yn_+n(uw40$Zb9>|H955QT^HZOIz9jWNLayfys zWdHkPJx6d?5$QEt`Kusbsh=63fP+(dUqSCN0fbHCzMo{WF`Tixs0nHL)ZXQvH9oFwGUvh^O*h%MA!JD zGP-G7rB-5Ge&Aqj&t_s!O?&XE@2HhJei$&jJvowp$6=`mCS~6@PM1Gt{rc3IZ-*N{ zT9%(;{J(eHeV;xk;$imS&2OqdJ@m7B?_RuV16lV*q~Q#Qdohv%fVztpR+p{fmr74f zul>WhQ^A!BZNZ`&w9-~{rZi}z{MUA?e|5~qG*)QgLjYKeVu&|gUb5E(CV zM~-O`2+oy0e=ZBgc`{1hncI}ubx{2&0gZ^x`u{j9zY9hN;|z?0eaPAMPJ0_~r{3Hs z)Vec4)=`}NW*Z=9P)k*qiJ)!?MIqLErq5sz6v83{l%S@4QhY%&>{R{gxy1_>1! zumd!$b}u+2Os$|^2LRJU&50~&2_FrsQfgjO`UKw;in!Tn^#?ImuC}JwB9i?JP0f)2 z*~}?yAB;jnTC(^;ZiJ*3=}zEQcMn_*ViaL*78TnC5LBUg6M}$<^4}|a))mx}@MNvO zZ<_jrPgt+|UUBPg78$&{y=PXWh0p8f&GgEZ5wDXZmG@yj7*_+)xN2$DD+5ji5{1d2 zp4==Q0Y*46(+Q-E)!8O-34-c{O2z^}2v?EUudFax9Fy(8EL8Up?!ypZR(*I*UeSq($(U0 z^vy=jLgY26QmGc`+Vi?e#4bX_077ZjZlnU+1rS+&R4Fzq+_rq1$;}h|o_I%^RLww7 z6(vy!`nuen41~&zLUN-WN@!dHy>XH*gf%u0#&rM+{KV86IER$= z)%9wFLivML&C!|JuJ1pb+$s(kT&*t|7iTwSqHi=;9g>|x;2l+;1YYx|I$3FO9=$R6 zKm#xY`V#Fm)ijYaC53KbNt-KQ%~#In=N4D}Qcl7LQYwy&LswtRl)bpzYOIs#=X*9s zA*3ZYo?Q)!5o{e+i2dWO9fL3AM_Jj>nI9MHV+kp^4uFx;%-rJ2574p4Q}Uh>9@ zf#TIsnhFBF4MA3%lAg2y5d8S1U>kJ^uw+x4OVnnC1I^DAi+hUWT~q*+S=C$<3l7#h zNxjn_G)OQoQ>mX&RvDN=eA4esHQcCPwjBPtwX=tBe+j{Dp#&c1UpL=Zl z%IYLFbj%cY{?pOP?Hf{O^05)Kyam-5ay9(z_fYeo3H*k6%XC`QzR6;b!_}$d`P=*OKLag+H13^nvX>vzPv%D32aP%F*=rOo*7p&Z;1~+ zhT9t$vJn^PN+G3yfSQFlA7Ox*=Vbm^^UOG>+Y)0x%_iTB9W^X`kybBS=f_%13J{=j zWALuA$s@5IuE%dh+N?6nwp3~b?n)u90E7h#=WYf*5S#**{?c7ZdY1>|n?9`e4Wl~% z<*@v5KgXPlBeCHRXuV@N5<)9t^)q4K;%7JMy$>7xkK<4c9Yst{hk4sNGfAERM|{t^ z*1HNIa$@}S7HKPBFt!(s;T%BH*P3T1q^SYWC#tb+s{m1`G=qsq-UMVWUqt01X4;yn zpdKh_r*#{n?M;)QvudVyAolJLrQg%@M1uDhUP*lR^H=lH*+y|5j-n$OkEQ9lD108v zf7yO)g-6B%qzM94O-bl+RgD-R1h!AGU+9hxlYVVyVdfpTg}3hnW8B(Eed$>xUjifh z(B9y_gW!yN&E(VnqAlf+xg9%y0g3^VSojha{{%!x?!b;;g_;BrR-eI25s)xOvFqoc zcL9WrqnP?QrmjNm!Oq{t=KBDkd=}HIXxAJJuU&_bh7mk;F9v%6=*#)^Q_nI#06-yc zYJ;4KA3XK!?cbYx-bPybmza5{PY(tuH#g5V}*GGBk0{!&X7yK);v2d>pB?p ziE3>7I<|)Bxkl~p)^JDqTHl;N2&GNMsrc+y8_&uYE3ekCZ$&*xJT%#^cW)FFKK|hZ zE*8Lmw@$9TbLU!X7WE|u$FBek_iVzW`=AO)sebk1#N{j54m8GN_1pSfqus3Ug7LV0 z|3uUU;DWODpJUINEKHN~pPdJ9^E*0>7cXfz&I-%B`taa3Fa|e3-D*ek%Vk`t06*kl2)tm%viw1tinMlf6$>__*ndj9h!4hLp*GJexofId~bK2EE)}IX+jmzX8+i&mE zm1HcgsS*1@otBXl|E&XiAF$poM^zH_idv~Bbru6)!u}Sn))A;W(-H~*ikLf}k+y=S zhxuw7O>ue|=hklBDHxtO(D^gs$FoD*qX$)F*M;>|{Mag9^41eUDJBB+Ux8`?fNfXf zve2K%5XVZE^Jb?KD6Z2GL2e|Kgf~GmQIh|I8sKuzFq+`vvjKX?-ese0WD{4chjaVX4Pmz?h+TvJJ zjjNii(ySV@mNJmQMis8x=5`NsLJ@5?S__N$x<^{WLpza)0l-QXFI;6(*}D6E&M!Z3 z-~IOQ#BR@G=ms->p^B<|O_jSPdJZhtv0)=}Q92ICMKz1SMqs&K+^3{5_$KSo&dgQ> zQQ13xO#9cWU)1BSs*r}>5Zr}d_e0(B4OGss=6oV4gu?yqWM$tNDN4HUfyBZ6=xj~g zLQI$2{MA$%$%K?ay>d1&d&OHZ6fqWy4kF$}&rL3CZV{DJXzFMt;8iIKEiZ{sB-|K_ z1Dz3qI)%RNB`8u7uEBJU|A)2rjFRiR?mhqe+)z1o&W%QBL=pr@0wh6^N)#zdwrE+F zW$W3JEz7nnD>%qwdwHJi_tuPN*1TEIv-H7!dbXY=M+HhGO-YOv69|CFKnDQb=v-Yn zSKWBdo)1+Z08*qh>&>TL>#pjmd#ldbXP5(L0* z`mPK_;_uZ$DfCM?o5;Q5v|Za_0FWB;X?Qvah_#TccXtnk6dd#aYgu4MmcJxc+6VV* zlj*~xdc6$Jo~q7@r~Ois+r;T#9#oLYfIY}p~=r1 zeFw3vg0P1^6Nl2!snK56&b?-xb-q(t+pN#v#JP=S^BGmVE~<$dxOD&l{f#u?ffRx! z0MyzOp~lb%Snz6Gs{j+I8EPoxpOu?9*a$jJ`EIWhiC1~1(X1cBXS?6O=xPJO9%@~tZ^%y8WyJ8(bk2`O`} zBK~1@g&tZ-E5>GsDb&Fs`MswXQxgppLgx0~&Ef<%f>_1m(RONU69x+V znxw*-6Xtq5IG0IzF6mT#I7XwxS|N_IW&YdcB-*+`?RSNjlLK-ig_fIqP9#S+%m8_Z zf{T+q#pM)iKm3A`=-CW~iEl9%c5f?RNx@U*u}mVk8I6&)O~;*6S|kYxY~BL%AHsAC+2?rq@4ZVCax)GHnGRv-3h6$W+|s1n=%*dGi&Q_hH__JMta*(d?`r?+ znI*`B(9sT)9b~NwcmMz(07*naRAwc++auj4q1}WT=zgn`J6X99bj?+VrG%$E&v%^l z;`2)Y9(z+#BR#Zjrv<@+Iy+83F{bwHg{DI(=Lau0zqR(t@}-wl@p=J67p|g~@3aGk z+_{UxVSt@eGkEbwP>K^t`H}Z?G6AqRceVM0=RiSBAEEed2m*~I%zc?v6=Y)j7b$%J z0NNSM{2wf{o$`o#X>B}7trkW;Mxze_1h0wtub^=rMCgA%ralG|kPeEM z*}Dt^i~;n$2U-9u*~xpJl&%6m!3cKmmCQ=Y=5n>=wv-WwZrQGm9N5ysN8AmqeW88K ze}MyMuRUhHx`d~f06hAp1+rAZb5$}x;ke?h>vsg35eVNI^j5~8OV?{*#Dgy3_-MDG z!F5Vv@ul_?m6IFGFT0z<_8rDeQ>f|TmGw7%%s>bS#yWF~F8h(QYbgsVgv=woB0WKk zAg@+}FJ@A{f`P)%rZTNDu7(-lwQJ{6f}8Qilg5dTUF?H$`VsFP1~dQ~NP3p#yDl^U zYe1C06%bf!c3pEjhNS@w1oVY5oq{0v3YRlDz0ql`Y27#+qycck$_&qM8W#YP#c{dX15N{2RrC$4fDqy0p9FRsk=qH#YmNUM-@hu# z8pN-Ahu`hr(m7z$nS8HddyX%O-~JR-{LvjF4>flL(i(*0;NJ4sw3GHdI=?{w;4c;6 z3DbKxklw5Mh^g7qzl-IyTw(InGrM;C&}eCIaT!;FEJ@ZKty`&=>H6V)oWSD>DRF zb62xlN|(omgVGf9`}^wo5wdkJQygBKnVJZ(Mhp9UO4U(nnSQC(bLrg9EkPp4LUZP2 zXZ6`K4O@a*v6LXmB64w$M|T&dJS3 zhP_lM931G^w^G4jM=#drqEEkSpE70JL1QVDwj%=;2rQ|#5{5r%zT@NVUmNY+LO=ks zb!;>NAYx+YV7Db|wTw&+VEA=pi>MoDZJ>CnRfyTOR6PA*Bi)bNa*)ed`!_2aXs<@O zu_{zGG11f_CPG6_BihU+xSb)ln3!nkQ4Qf?uN|pplH4wmosEsP&6o$kx3v07MEM;n zq9D8gB7+D75C{Ak8mq7k*w+gwMrcaA_YwDJgQ+1d)lWC91puaz8cf~SDT;y_GX<f0i@U|u00!n?4=VwvOkl1>r>Ff;?Ji??$CR3@7!C(Lk?HM?z|hR5=1Kt7v1DZ|4M21Kp_xs? z@&GgjV#Td}AR)BD!K3SeLIZxY)!)n?+5t_FJ}_`HA6lG`DmdD zz>OH$-NVwiqs5W!ns((pIe|XXzPmc>4;5Ow~`%B@{&1f4lgd@v&Vh z#-7G21HHB`2%#P~GU#FZub}sqF0ybSh#@;*P#{jGutrw$t2{s@; z-rT*-j=QVXS5MRb>Cfdat>Zgq;4@MI{NkPHkAZocTep>)fZ7Z12e(OnNWp+gfc(b+&7kSQeQpxgQvYOmR@}ug`&@uYB{sM zWULB6gBIpwzvy*|Lax)_YR2J7MTRtW4w9<^!VZdZs8p2IrnNw%!QPVfk?dOAB!V!t z4ywDk&^}Smfq+1O4ArUSvDBc1XTe%^spvwmlW3~`h;#$&Dpc5Mx*{knSgqlp?t~y& zRh3in?69;)t@e~jP85=4L%Ma}Dk;0ywsz#C8z)cr4d2ZwtLAudwsvM6H$jf>w>)oM zSuIC~yBCEM^xK}d!M5ut6YU+F)pn8_VN~7tl5R;y5Tr8vppM}i3}1-gIe-Nwz`2eZ zkLZX8yN1qdjq47a0F&SJa*g(SZauUj+OY~F>q9{)pBxu1*eZ&-87|s#eW;f16a5iR zDYoijVU7z$xjHQ3(c+L~Ex;7w(!9UvksE6Wzip0$`oD& zL26;e+sF`lh?G@ncC^dOE;b|p#2h4T7@fMgkJZjS2Y?ZT8P*1>uc>^W$`96gj;N|~ zJ~=tMd`{)VDwl?1ld!7k6?iRF&!N(*mPf$^P1aItkag6~qn=V%C!hpK)e;*W=sLIJ za(ydY?HX35g=(1y6jEKujO(#ylM&_~Q^Y_~rY%y9c=Z7LWfp3Ly$yokRMv{e zX>$W0PHk6a0z$xVZj?^a<`Tdh99McArU9k0#W|Xt1(*j0)V}R7f?%1i&J?q!p!Xno zzlK3Dqn6>7r&Xu&6pkqE7B-Ur*vqNTQf(Td?h|_e%QgBVDMby-ce z%(n!Ry?IU%&>yi~+x7^a3}(n__#)(6uluBQN6SXpRlzL zAH5x66N+(k5igvFCNY@SK7SzcuBtG7X0k8$IZFv*n3@;6eM1X+!wdDT-(M$B^8@1I zgIm_JTUFiU)#A2eukP7Ptke7hly)Xg?b>Nw z?uD!TC(fu->yU)K!{WoY>A`M4o_Diyy8BR1&vtFDnts<1=aF0Rj_qAe%QueWV)h0> zLFBIc|E%`Kk34k9|J^`uLK%=?R>jI|!N>l||F*B{P zWdFzYp(t+8qj8?szSmevSsM}fZM|Qm_UFjt`u-jH!@F3JW?LiQeKELH0uuvvKGwLD zl7@EaqdQXX4kuH6BZD8*!=Y|#^2t1|)~>JSogv`AsYyk8P&TB1?_>EpvanQ{8Pu^S z(fbJPw6Lv&l}AKbrXJqsJfje{16{bMr%Yi@(@8ewdRK3_;TvXixNS z-n+LW<{NzWeCeOHoQZ_fWEb{ec61C;;Z3i!15V3nU`g`YC9= zV1?=xto}Vr0YC z0e}LP=E&2hb<1I*(&6dyj!_6^>Gm*V_ z9}Ci4fB31Bp|yOcZ^v2*{KKo(pHxmb|I>X*2~GT$^j-G_hqaKOyd|#(y=%iS&00u= z^yL1W(LaFgpFl7SFy~&#?<>@%20;iEOMQR)>N7v^emD2ZkLl!kt2t!|g!RtOl78hb zeLP8kS}pqjbQCp)so|II)OYj?g3=&^*8~}YqqpVy`lSH@&|$a#ND=9QfS($$u7ThN4Mk8_VBIKxReC}cW%M^_jVMD;qRZncW^zPqWVPirs((bB0R#@ zKKjMmji?D`K6>S_JvTU{*}cKj5AMud9%DxX0A1pBO^T<1353Mf`j>`B?{dZoD4LD0 zBu{09B|wi@Q}1a`4*&bv=%v*NLYjn~(VlpPzfd^Zc+1?}_f@%~HZ?<#0l`qQsy&7p zgCit2^>P@2ye*oQ`WDaC14+~1oL;Cmt=QGY=%&jGwW!tD-N%-OfQH3&m>QUoDIzC3 zRZf+y$5!*xA}&~P&R=wD8^V?FO3NkazF2~uA0!2(sq)#?q^%il&~3LGJ&Bc)34!AI zOhV}aJK{C%)mzlw)XlO+C3*VWDwhrWTAZr5h>b`qqHH-ssg^RGDw< z)vL)`AA7Rd&l~ODfFtS)cB8$ZR$7n@k1#dV+19DcYi{TKJr(I1#kms24v~hDDWd9t zfuN3kLojs^U|G1l3Ic2&jn>T>oNT(AjrQv1YG_Hc;vS>!fSFaXE`!*nLk6p!2cU?(S)_Q?d)<6#9-o0or`bTLr$JsSjm%_ zKza+0r1Zg_#z>O~vh4;@^JZRD-GM6sz!8uEhVZ;56^ke_TP+lE!)i z1m(I5?TV5O5W#AoW-|$Ly|s;ueRg@(ElHNDI&irb_~~1QqTz9K$L`R$w#O7&b2G5G zUS3nL+6516OP(zj40sgu%<$59II5En&9)E{3|OjsX_E^r59{u5+6+rmwe*rMOdafd z+0sUCv(_|kYDEj`*wO!Xb1EIeSh`~^&1*TYQ3HUog@FO|0|d&Idct2DcPWdKmZ*bwz{IqxoA%`De8xOP3c-7MqM3IxGZFg0u+?1V>LUWFh?0@KF_HBMXf_wvi^AfVH*I8`_@(R^3K5vu{f1?$4`7@&&KQ!d=5N*?%wchDou^a$ng*FIyo~2pZJ+M zJTU_W?Ch<6@~+d-Aeiac(p{TphR5Kgj8mW6advSVTN+)+9DMB97;L}Gi)!XG~{q;+zI0y)Q>TV48fq;Ai-?`ZJ@p=8BM&kI`K_o+9 z#_6>#i}^?uR1u_OKH4-wt42~&)G3H9a;GEzqFGOzrP*8HHmIToM%j6U3hyK}g{nG4{yPj(9$ z^#z{)D`z#*daf6WMew%R!Bss{1K{M-&2x8xi3}AxxMsu)0K7_~arzFH*EBq_n^EsK zi#c(%*GwP6JAYAqRFC&|?wa1%86z311!UR)&>zGD{j5{9amIM;o9g+NENzKT{INC> z#+`YTUgfzjw;mgG*5Y7>+#1!(8qr%VC!weq=t&KmeT9#_+aBr#5L(N{zIy6MFSq}) ze%kRRD|FPFqoeq>I};zGf$ID3sqda7kXdaEe(O1{)?}jEeFv+b{umSK?d;&U|Jlfu znYelPfzmr}V+OX`J~M z&ddRDhx>BB^s|02K+Nf57h{h;P0W5zBK!02^J5W!Lmc{mF-`D>6Tmbf=CXi)5BQ046HN;pFMN%ZlRg9^fN=}^;^7+1Q=Wg zBHaOR?#V|dtlQ0pQ?vy@SuMQm|CI~*KXCaQxB_68O8sf`p|lKl`|%X_#1iH5-oLqY z?qxp@6eJhq+v&}j*|ufd_m%JS^+J}CR4!?CrI(;n&7X1eb$B`>wQjE#xl)ajxkm^v zxbV!TU%ZHB2og9n)fL+<yG!_kL3@zN#kw*1i2 z_`XsEzUSw^wW=}}e2pcoPVH+%AtB38tWO(`NoFhHt$t#wlL> z7X463(>fkvqQ+pv+Y<`Kl<;M2uHY@}+{j{Gq2j@^zyx2muLzh103CL4JO>anm)3pR z$?Mw;%YhQtqy<4^?67?}7VSXW^G#%0V1}t-TM7YP1^X~q!qs;DYUk`LfuQcomYul} zxL9$jfuOldFZCk@Xf+g%`Wvuo0dNuL8zE8AMr1SfZRy0VV?orGkV6n`Ro*eOv?sXa4a5qSp4TJ*-*;ChQc5L22sN9jlZyb9^fv~>vOfSqP|yCNJPwB2nlcR2+V*HT8J+-$XBS$HilzPItD-!dgAP|&@=!|+bZlG1_PlG zGr?5=m!pBoo?$SQsTRf}3{I|Jm@83i9JBv6zQ^@L-YXvI_NU#}1&o0;03pxzT zb*ginPGt&)OL{sT9iJF&^rw~yWY=}Z*0gk~Wv4>xYpxf(iHQ4S=Tt<;J=+iqf&tIN zGZ(r^RbL#B+zJMKzyH+C&@h3JKj1Goy8=>o@>co3Uy#3x4*9@d5WuWo$!zsAp%9^Fd&0YTv>R6= zG1`9@+=N-!JABcL6R5mNt|>bZO%d?T(H3b8W?8kT%Y8ju3nJSfZ%!;!z(!KNJC>OA z69AaB7lW&&t^=6zQahYP+qNy+_N8*)wl=2UP&y9Ft zP{W4e&gU9J?j2a_sL)o*+n-t;-&ui9?MM2rHn*xu7}>`7lPhDp7laP)13fvOKsJtY z8(%+xjRrL0pWBz&J)R+;<=`K)xUv8uJh&sbcPvK)+mC;*I6Sx-5G z@z_NiTLplFBlx+k-Ad6@^LTOrVC?S4FTLrZ>K>k6ytz^1rdljbrUMW6-aonP{ehi9 zBYYiFP5?2==lI-r>EaYx+iB}=F&;o4qjnife=p|8R3;9NP!EZ{i=8HTx;jqF!vHAZ zh+7xQSjEb#^vW=<^nn46g8+?aT+l%w(%rQCns%D71o#Xh+(sA{AfPU=0Vp7`1Bva} z0(dRVeFeFzbaaYcz47ib@BWeSuq4YCulzf`5aXr+9wNR*L01~qhq{k7Q5BObAZDrI z;#L$Q*ZJV0`+72?V$WUl(LQY)B!I;h=G$OKP~dO^5gh>59GnNhFc<@jAc!3*o~G{} zqw~Ww(JT7FgwXf@q9xSrfgR0Js&QjbtP- z9(c$5Vh;_zFH9rFV<9VZ`3gTz>(z-w_9HL)% z2>m?(=<2%o-qYkuHVyjl`!F^H0GqS);tz#mvk>&o_h9=th^SZ<-~7I4wpb9o_g>s` zpxd?Aovnni5gr?PopH#3V#WD_`u6#mla0T!=Q<^(9~%lnp>+Q(_clIq;P8OD&&p^| z|YXt$?)#m z!&Vem@%r#%4pLwjoxFrMx6!?MPQ^?d97bOh0OoV}#!0ve2@{_@jFAKYESHlno)~xJ z8v+G?Z51U6L*Q5Yn%li^#Ey5wryo!|K21jwm}9J7f^`<FJ!cz8QBf-m*QFAh6vv5u-G!Y58cN*Dn;d>^IK)E=eH_k|ZOjj=D_5&Ubr&yY`( z>%#EBq+OZVvv|ukZW0y?)T(MT3d819@g4CUM`$ZR1=0A=;)j>1s)K%;4sEA6iEF|6 z?YB|gzvFT7hX+6KUgP(?d&4(4h$x9mjpmnw$JfdB3SoOW2EO4P^L0Ek3)cq-+lDX@ z2Y{x7nKk%6K$z^uNGA>SFu#QOCN#$0sqhDrcMbLoJCTtW3gyMtRaq)cg%=O@vViWX z9Y^!wO$$IXp)K|G8uEY!S91VE)3kkKJ;OmwgHx`QXBSb4f&_MsARPgKnuXc5F0_5E)^$LS z>e$``UEK6gO$Se&$7b`#ezOC8w-5Z{uLXX!_fJO?hp>}yO>&pFakKzmp|yl|9?d9h z5B1Alo0_$Fkb6Tkh%p=C2G)P**NcsU-f5JJq-7wg07#D-c}+3!_Fc!#?CYbqYyem zLuk~Xe1OoKKyO^JUoISrojzsF2X(P6s^5oH3qxh(UshtHkx7yoh+z*kvKX|`Tw<%z zs3d&bLGi2^w4=Qe05dfU!m|YcxCUx*FaeBs6G5i~uDe+9f8V`S-#x7jCvG85`gzRH zHkQOuS+j=%yB-Ss<<4FA_=8wnUpa&SmY*%l7Te*qihjmu;=_9<-);T}+TLTtFd67i z=~L*ZTppDg00c~ojl$5uK&gac2@Ks={hKY_X8_HpUg--lNK>kBvt_yrzzS)_fiM#Z z=H6^OXv+>iy)YP7LJ&BeZ%0}ZfM-yCC?YjM;AF{))qMbdIGDe4habMFi%N6-o>vx^ z&-gk{2aNy#AOJ~3K~!I@F0{%8KA*c%QFCa$O-iTh;n>tZXUD*_F2=b*>+}9>>%0o5 z?)lZ$2Y0`J!Z~QSaps5kVeuQ6*PnGVZ@~`0WDj;}&4jmbzQpz7QsoojD~|Dm~=rde^w4Tn2Qa5AI9v?J*7bt+uv4w_`A>X=3wW zdSh$6i^X$jGMjvdJElW$Gjzoj?SXekqP-IXn+sz0jQ0Z>uI-N`N00(wD%#x)2U!C! zg7mmd_kRC)=^L#-ymJ0We*UM(&3(z$hAL>1Y+ta_1OP!gK}3T}(=!foN)4kaZi?o$ z7FNroY-mEebx`&h%m8`VsG)8{5VrQB#{dC!g{1~o6a)c=dxv{QKX=8VofqxkhNlTv z^cW5m6_cS@WG!>q1+lh6clyHhYA+;ghg|sqkib6#+3_k5VcXP4@JVnrh}n0X0(BHk4%v$A}eo4k#!Nv0bm*NHny{6yzU0%8%B0GXzmSZ zQN3UmD63y9G21A-Nj2PhBLf4)HMR5|Z)H+d$K9zrMYsn;HVhw1B7>%K)Y`i9;E112 zfzcEt|MV3SUN?DCqI0sSoB?lTjM#+GVJZ=YGmxb52qu%zfe8bHI*8D!Va|r5zzT3V zT4(lcf7w0zw0b5bVs?9S3fmM1+q7~Xo2R@>6VP_sllw3^%6&GPM^XAWZ+;usLIBxA zZgb#@FC?Vq)pw|36aY(**EEEQkU@R~?Ff4=n!aVXT&GYwm!(zhjL?HhGa8P~Y(pVy ziDPzY^V}-t;h7tmu@gDE$mqiTg+Njmqt^Ct|1gpOP(c$m%y>700noT+5GcZ8Fl-R1 zwpDoXhoX>Yf_KO5?twilh#a?g{3&g96@b5cm%smB2qAsHeC7r1$`t@|>y&fwJ!~4J zxN`Yu^UPTQa%jlg_dX5Z1_B@XFgsvJ)>-$VAHp`KT+!aIFf@%*cGc){d*UI?6Dw z$yXFGTZCc|aDNcJ1_*E^DlMGJ0>GUkc1-t80mULCx`AR+_YZ`E-cVfXBsgBPwqszD zds}5*xl(`1pS4zUXw(3P5kX2v>gGVfH%$ME1Fu6ThiZD=qP0ed8b|`V;DlZa8A5;? zM(?aL8zo@?+Z#4_*IM?Xp^f1IcQ^o3foJu#*P^XhA|VlR5p%?nZ`Uu_+7;FSY(ekO z_z$HJ0idz)q+e||8|{{_pcu?MKK2Gmb6c)hl3zuTZoh8G`V! z{k@;-{e!;ATkU?Mg$yO)6gy>+(`I+pGpoUymMxiBhieCH%;Z4lwUoj5QKBD5SldK&o}K)7QIj%@D= zkDfS()gl1w8N~y;Aq0FGdgkJh(Of)9^^x$&z1u2t{gA*@GkEsW8wXp$M8p8$`a|86 zlSjno@4WwA=KrGq{PxkG5s`2N2>1%eH&Czupf7^`!(BtEK3-)-DCCABap z(0_6rk6TXBgjF=6?c{Vt=n9PbO2XRgDEvBn`RmK7A2((`wR`YAS}Hj_;@%@pmAc(Y z?oV^t#mFBojGU-!o75;in)pEAqyyJOZ62$Sf+d*Y7o--cTp52Za5Gzls zTp04}CII*vJTun!k#Nr~xO)>R2ZMb$GKLO;eLjzsYIkP305i%n*nGUck+8B6NK3a$ zsT~CoFrX(|*<>q|PQ)J$Bt~#Y9<+wl$J=?cv66&c5ojfMm5qo8fQ390$bVN~RRFvI zSO=q0;-MF(J~#R~_ZQw9e7^`M?ELbRiGP0T_*3q0W?$O;(2m|;@BM@Hw%h8d;m6O; zKk0sH<;0R|8#;yqhyY;nY;#$;-i<$ekE!>n2`wFf@e^j0!2a9B?+=Y`38vQX-Q~uD z9qKVcp>DOe)q<1&qM6Fj@dZ+fb&)x|qcxD|q{@g~1EaSscrJiItv&kkyk>g<&}`=~ zgugs@`4zc=fnI1gYdw`juIyB4nccVXpb%u2; z!ihFi2kL1i2K|9Vk4C-l(8%$oz2VFHwIq6K{Gowg{(SU9sn7Okz1fqoZ+~y`3FnWN zUc0QCQG@=n=imp!JC+r>Yhz)Y^|zLD(sf&wM0i#7_1orgoa_iL=*5GZtD!v5u{#Lrnf1z?-@ zza;0f&C2y_3W+P8oYat{(d5=qkRnD&tN48RBxOsnR!EUzj<4qd@kpb92ScinDYq_kvN; z4WXt6;%30EEfSZr9#*(rQF&Q0#@l+23V=~}u*$9n}pha zV1er5hVF;-R#?_8n~lP{MjFaXn?XGoZ^WhTGsS+}h&YTT8O z65$X4I4(Bx5CqA-%vT`*1!N@33U-_8kaipa1AaTxT9Cp*C}~9F!tqPC1JvLY zxiP_3s>8{V4V_<)<^<@2?UwMHp_Y=1wH)f#GN`r(UqMOcmKQNP5IDW%atlzJrX`>e zf*y)>6>51EpSiu5oe^sRO-fX*;_A!bYaTsLNG;lM4FEM&Bx4Q4>;=4Rge#%fjSMP% zB~F*Mm_cD3Y$3l0z0;lKV#5P7+&W7oT@A$*ES#WhAJvioU^w~A3UnU~l^y1_;o|n) z6!1}z@atGQLq(nPg8(38ZgaV8<~q38S(2x_4n6J8+SF{I-6|coE(_Tc$cc1?^;)4` zUoABPQYq9LTDG0ghEi74t>?IAbm)Vgj}`y*-O8JsiAt_t!XolNSpq^Z7%!(c*AjjH zP9?0KP*4+nj6kiWGTxPTv&{Z=DQc~O&3sp(XkFW9v?bcDZU`QU zcYPcQO$+%ou!hRwMyna*S_Hb#bk|B-HpU5L)nzunakg@G^h`Oos@S`E

91Xm1P@ z0fFtk-Lu|oH&8%u_o5E7RES3f7`EB2R1M!2mWNuoWH(}v8k!J6pE@XV+b%Ax&g&Bn z)d)huDe~1C9p|8&;FtyyAPL)sBEW*{R#xFvgH{V{NI#a%WXom8k?v2In_t8Eh6K^i z?TdeY_>Tv-A9BV$M;yJ#|J9jYqjqdd{Yw)g@3FTkU!1;3|4(cF3bnfjdVnAmzCEM& zw9*B8>?=#hzU4YL;PK4`R@yc7;ahfnbla`X!IA1*`OzOeQr(go`Mvtx5oKmKjIS?k zeph4|+*Q{zgzOUX1CO7*FSeNMp~gh?_AtSdTR z)i9~>>LxbYu(ECIUosEwQKn9c`=2|f{?V4D$>jKF^zjf5Wl(yRSH51qJZNvkz`}?* z$^9EbcfmJTX>MFUhyh4fubv+BE3bFqYthMHY5vxo@%M;O^z~N)igBiZD>b+cT>5J_ zo2#B4W(R;D-&+U{RH^e&r$>}^t@6$QX`Qo2K!IgwOD#5)Ct~Gmi)YhcymIQSUj*R2 zDfBW!Fh$4|k-$6OrT?#kqf;F4tNP2YhJI_~<(%%lh$;Fe@A0mW0Xzq{!A>O)^Qo`}OKF9&%Mr)oQ;}BtaH}K@C#r%^uU4%RD5`R8Dey2*Y zr_Y~CeSYD@X<5B?lNv%Hp^Fe$NC%eZDEzp7BHFX_m*cZ%R|^&nud3(Ju{wV^<`?GEuD_m15!d)U{i=SIA82tx1BYNP!>7w$cbd-5{2 zVOPJt@$j??nNa9CHtT&Y|L12e{j0NlQ;;>TO&{+~^_WxupSd67Dcms7pp<&-EM8cE z0``v>U)mGDyATutimbCk)l5hgo8qruQcJa)-fAL&Pv83!0>$6G0;?M+u%#CStW~C; zerf-0E)2T#!O2-`m!At?j~)OBkpo#{s0Mz>j;%E8K+zAw(5`RQ`=t~d}4X0$963U+WrGx`h> z?M+%E_F7RbJJrUV6Aq!QBwen`(H2HH03c8HoMuRqZuT3Pj%%A2cO-M}t7scnSVC>Y2jvnGl+9+=CP;a38X?DoX2Vq3_Cz2^AO zUE1n2iK#NsShdGXuHoj~(hn~4S_{60vV*&}bwlU*Wdt=aP<3%=Yxm;pDwcHssC&5m znrY%fMr8|cj0!9Hw+rP_gANZ*jp>JJS8~T5!8GJe)+_A>u4PP37v=UF|EmF%`KAJh zbbWuLH56e%2v5&-SDAfsd!0}ONK{2c%uI8O3L$+)zTea8s_V_H+X6A9R?3@}@7KHEAq}MWr{bfjK`RivzWlVE ze62mdbX9$GrP2q$iLB-NS}b`>I=dx0-y6~$EnKYBT127#k==J_yCZi*DALLW=I3jd zyk~2fGXG>y$<(B{JDiGyBE_-caxKUTiCi0jt8+X#2c4`eS&}W;#yEj&%L4oe2E#R(d(FFs z@fh&nak*R=@Ce4nHpZ5-Y)Q^mmQId+x=;7%++AJOmGh2kt@oqqL><{O-0}9WGpf(1 zU3=}d=K9w6%{jjcF=_V1*ZiH0hN5_)XD%NJm6$5*&WJhKJttL28B0|v`8vNY@hT-p zv(8%%_nm%rPw%#*vBm8Or;6@`{X#CgAlg$mSGice@TG#6{2GZK>k^%tNN2RFu%*M{ zzy!?eIVcjDCGm{CID;ics!239$2)vro~b%nf7ySgJ|>i~qDSgMWjK)Of~LXBRqD0+ zE@OE8*rQHY=u$R4%fH)Lb%cQZ`peJsaBdzenXC71Q*9*S$OZt2`P@vSaJJDBuc=Ma zLO$KKB0X+;2|@rHljx6w-WX8ab`2=d0*Z!L=oy^!0D<%ZIkJX22S5hbIxS*S0_IA& zk+lFY&(;iubOwNd4myb>_Y+r)EI$)m)k&2SjePZXt^rVqpVQL|R!LhLudP^80zzpn z4Xt|BA3Zy6wRkj52?jL3KkVP?(|UJyc$>5vGgZ{0pl8fM?tGby%unJ|h?`N>zXd=U!aJ-hJ0CoQWUA~Vh zALtGpp*AD$y5mmO#O!Or9SPiI=4zGP#@Fm^yM#|C5eUBE1)lmIq-@DQ+8en)&`b?F z^D%&ws1@2hPr3_9)^d++b^2MTu0+Ejs2b2TF=vAdxqQ^S!xMwun%WU|-_MRU;Bu^{ z#GV2E;E<|>!-y(JZP8fP-NEuS^ey{zQKhg_;z^)Lf$`0mj zI389fF#m6j$$mE#hD@lP{@{-JmWN_jbFt?naQ2Myfia@*7=L`k^soMKwU7x?!NqcB5v1CwU!Kh;RT=0gT}g! zH$SevXXLRcjh0UPKmVEKtUX<=6lLW{Kfa=1%X;?V&R|cnfAPTw$LFKmp>?NM`m%HX z)Ago#?SFSePe5TfFc{o3a*x=ysp8xJ)Txf4anil|kzM0Gds8c#Zo0QUb+#vYj`^JC zo~@Ick1WpXa}M7%KWXq)B6jQOWH_!qI(p}x#0RXsiRaHYi}_N)y@KX4n?8$Ao(H49 zf+Q&+gpfa~9J89iKd*s7`UCE}?wi>bG{aEce7sqW%JRjfJ}Yf#~ zYc*1IM~=CLbFgf}ZT&cS1t>my98*6bP#hS{zh_TDR{^y1Ha-AgT@7tdro}22<3nOL z0uZ96wtt>94?qCQyUi`PxkCV!mD0z9-%V3f2m2lK_76CR2*|Sf{}udRJ)DV2=kx_B z1OQLUIsOLr`qzB$_ARkrOZ-vajzjJ~!2_4l_**4A6W96({gN+vXVZKp0A&Zdeb7Wz zUs;kDW%-%}pkm>b8CWhrhy)Q20fdH)A5J1~-f*v;Ab$10z*hEvv1PrvC0=YSb}gK# zJXf=)S{rS>GdSD1xp{E_T&ic6w**U}5KL93g1%ri3V}*>rPs$JhTl=-tY5D##3Uya zYN$5>3C562z|a7RaubyrAVCaWG58HYqGq8~fs`OZB8rf|tzY==1T21QU0lzd{mI?^ zBj)~CG!l>Er$;(Rl-p>tn)6|$)=pP#NVJ*hDHEs4KfVs>)nT2(rhX_2s+V#0TUbrC zMu1y-V=3CwQu_U*=?Vdy%SM9>iRwty+%XUdgyIA5@P#5^F6@%koG5iA0Z{pDw76PM zg}z)~E14b0FmQ>=BnBGj>Hsvjy-2I@B{G zw*3_QlcBwP+)jCFX8hT}Z&&7vd-lkU$wP!5p23Ba^$YU*b|L=;OazCzama^oB+B;f z+|Us{EMtmhlxm^pD)pS*96Ps^=vZT_Xbg8RCWgvIU2*xy`BYaV&2-P~O)T|~6>S=ktlgebs$zPxD( zDdV25l!9N&u1qvby^|}NZyqYgz)-bkU7<*fi=K%!H(UEY(s_6T!}L?5iETW3ZSjY7 z><$g~7~9!Mjhsp&eB3r`&06f0#mRH-rz_LuYvx9>V^939w;6|mkAzvcG!uCBc>1LK z>FnillL%nbPj%fdFR*@6b7M5tC#kuJ>LOUHO3dLj z@)hGnbJn`_oces>o3m@rJDE4SFEYZeBoclANQ9J!27K$91lfP7TpC}<+BMxo`~-3> zhV7;f^oQG(>#i$6QE8%D10=xEc@-#3l&kH|u8Amu{`R1)i$kH74~#KfQ$h{^?g_iW zB?y2KU}}5LyIW%Jo19@)G7zdh-;nRl5bG$R`7LqmEdPO&?p;_nf+T^Y;9=A0Sg6JS zA@#i%n_sTa^Ec+GbF0{#b79%saXDXeZAz~=CEZrT?+*AW;;$R>5|^`8h*vNL3GQ{c z?l1&F2nG;A)|+yCRc0+Hgm>(~<^({fS~#w^(OjW+iclfcMRc}%cVyQ-zCSeSc8pHs z<|o$j(=GKN+sv`wQfwPsD$B(vTaHGkKBCSZ9L`O};gK?4+Sr`!=peI)vBQHb6o4tcA2`8ALGz^P55>C;^f`9~ci7pc@@nF-rg#r34LR_CT_G5_v ziPQuZ=Sj37Ni`Ijlh~4S<5>XQ4%$oWrK?xQ2CUtKp&@1~T%5H;k@H&Cp&!^A z_k%Ht1{&vA%U`sgTb?{2%GYjp>VIRb$bl4)!tv8M-VTn)*u8n3*yq1DROK}Fg7Z?3 z^H@2rgV9BykE5W0z~O=g93nU6H!9e5Tv& zG;+C@zlqcAy9()&DK=+ZN(E6x;fB&mYcrcmSJveXhczj&n86|dRC)_9{=yz#P>s9y z+?m}xnn?HbHrzdzn~BIW49DKwad~w6(vqrL-kv$PGrUB8(_KG0w`=?CoW@+Sa|J!> zG7B}mk)EYP+otAx;Mkhg2JK}QZSsNm>ftRDb0O|x!->VQ@hP?AJn!txzU7g*rI_nr z_+onKo3rJ{TWo<#$~)UXbIjf&gq0UH{d6xZAB5PBz0sUjyEt zsSe#D-gxJ>#BX%}ao^@c&X5#TZty(wc%Z9R)P9&MKTT&$TqlHeRW$t&QhjmyfRT!I zpczpwZ0s#gC#6dmPvKIk-PK{a3P*ql4{gT&5fH(4@xrvfWUte^;@dZB@9lLqWpdVv z)ij$IlA@-$Yo+A;g$*Mk*^O>&G1UK>I-LNK?fN2kA=5%>MD4x={t93=cuY^ zEWJK7DTnNI5T=9YrciByfb~7tJp>{+9$uP8zShobr)rP@5e7qToss2XsR|*XF}&xt z_NlGVz!S%jH+`XG@I42{J`n!>=)v1#Z`Whd_7FONb*1<)nMTuT69k(-jvWYsQ?{Ew z$Q&8unnG5t^VqB5$tyV@uD}eo5)t*Z&ng;jSX+48y3Q^BNN6a|ccR$Tbq^~qiKW!k zxbH7l&lJTJdb`@v+@R@Giek9ZCPr#2EDyY9n^<@ zF0@r82Gd7wG_>(&EAQ>?*l``*jtIU4bRYbHG_f#+V|kb=($CA>*|~|}?-Vn}u1CA~ z`F8H8DwUc1?9;qn%v`C65~wS7Pfuc>ZINYLbLpqE`5FH!y&uxH8>Fay`EB>oIeQ+Q zHL8L0vgzJA68>QSFLw9tZFcs)IN?j>0hmL{%=}Ma_6m ztxhCmG+osx2h~G3Xm|Ek8w?WRY|ZCop}7e7+@8U5U6B%@Lc?#Zk?z3Iz5c;+LlXjl ziWyATXHi>)6YZe)91cCI4|*Gha{D((BIfd*moBy*s^uuq=|kii&#VW-?}i!#B#LL@ zok2JV0Ius@u08vr_K~%hi{u?TqWo(2(5MJ7+(0W3ImuYFvOwoDK zcx@fEBf4$x-p70P`QEuxyR%rJsb`SmPzSKk55vPvEUkA{KPTQ={fmP;vymJ?lO(?OMQS z9PiqTfB`9Sb{S7!gpg1fh9hlG%PoOos1pZ9!5FykotWJ}Tnb02J`lWkf3MpLy#+NF z0$xpp1h|5Rznwe`n9$ncMHh^X=u(J`_0_w>!OiYg1;LEc`1|njC7MtnA2&Dev3ddM zP>0YNS;|NL;q(*FH9uB4VgE;CbBU(uWb>9@Go?*{#?c8#w~7LIW<|;(UC-_jp3ie5 zf+kr?bWVukOd-04~42ZT^gqhx@xQu zr{Xe5!qXU{z0ed-2``7Z>$s|8u1}ZDn5;`w9IU9Y958}s*IJ$4s&?msVtKZr!Rl_h z;V7U$x@g!a+aSQP+c$-WV!gd5U;orK2UlsY$zc2FptvBb9ZW(3@La3Ps~Njg=cB3e zG8GEA$(GLnmK@xaG8L{+(NYhSkjxfR5RnE_p$b?PSvu~T0@46v&UOp=mG;+4l3bC1 zRCLc90SuS3Jak_~t?Ohu|De1dUevgrYFpnki<}9twuktS7XJ3dxFk- z^H)e1*0u8Qm8+BZvSO)VfJM5?{AJ$hTa#d%k?Mm^20@V-Gz97r0Gtql0r-S0aX8cY z=71v{>6E=CqiT37t82?E1x1lpa_Jzjuwoz{_W4LrRB}|&kO4;~o7@0ISynyyqJV?| z>L5T9JXr7S)Q0U2-S3i81fcq2!9)bA3ND!8A>buOL+f3kmzvamJ8&#z*|jYQ&%<01 za{vl!z;(pI)^^^kP*0;vGeTUIz9w^32=JO~Qvn2$C>u@1W^i>BT@)AC6`5B91Xo8z zpt9Kd&;(2ZTwMxg7fM25kPytVBUT)UL)SC}OxGt;y4n*-wEWYds>D1S(giQWlEoT| zEZk0R_ywF!APPv-beWzMDg!`5Aa7La2_dB)9{#rPrvVF3j`VIVvR z1}L7C6}9OL+v3*tX#}Zr(^ny11wzQxh`clkkD3{QcnA^*Xdnk90f{R~IS7f04OO`r zD4JK$!?ILn8#;jtDVok=)ABRZZ8TQ1ZmY#F`NYa56vB{_xt3pPfZ(Xis}q3&Mh127&Q92 z{oRp(?Q?B*W@+yT#%}!TJ@Baz!1Gi1+m|7M!Fb`(JB~(m0=yIR;#=ooGjxXV z{)0#aAc2WA{@2^wrhK$ ziIHZIURu4Gw;%!CkL$lla*_Vd>VC!Si313(J~eBU7dwPYeG0;cuAH_l!BZ~S))XNnHNCP2c@!?Rttoc)pO zib&nP<1zQckL|jfK5S@S;aS%!0~8DG>Wth*L|jS|_`_zeNyx&}Xb?r4}sG+_) z`ycyV<2}8<*+o623w84{AbomIU&jLqGo+OH(sAFD|5kjW@duaAzWDko?(`sShZeY?SkJkj^P(}CI4Pjm`$W zTPqs}0O*xQ@^h!>XSmW}L_E^PhWq;0ix5eS4$|$|C?)DkiN8I)`VaNVA93_6S7wf# z_`B0**bfZNa7=i$Bn$jy&(7WEHf1n?eQA_W$mhRWo9nQ%y`inYRDQfSxf6;au~5Ny z4iYdFJlKzj-ZUfiqYwK(F&Uc8p+>hbo>2(FxX7%>nnb3GPrig)8j6Bvg4^Zq5?E_)f1IP@Yc-8%E^K$?HGw%fC z0tMaOdm4Y@{%laH0(d4k^HJY(5*QWX->w`=)&-(`+&1K37-Z6OdDqwKmd{KGwQv?ba1RGgLy&edfDQ2QFV}a0U%$+%rXoG z5@=c&?Sce!Cg)O4i({0pqrV#xP#G4}C}@yCu8yIOHZITQQF8#G(~qIHS2EH$IQ1Jc zPeNj?gwnNBjs!~PJXMd;a^J;F+H*Tt+CxJCgn){Wer2DxuJ1hrDNwRxHb}(4?dH<5 zxi&8CzM41+UUcUb$%>fDGO?-#ZkA%pdc@5JrK{Fb6=lwtFPqIqjZIuwn$TA5wcO2R zI`79;E%S|Od-av+Gl2a9*K{L^ZVJt<`y&o1M$)&aF0vnw`$%Ud4s6V+uCP zImkQ!kTpv$0xBRSU%>2QJ>95!x5zOuW+eJ{I~zLJMZI3`Av23v^L)9oVrP(U(G({O zGv8KT9R4n&IgczK37mn$pcy0@7t=~Kmk# zJ;;`_FzXjzG+y-#i?AXU!M33FM|?)w4aq z6ZqPBe1H1d4orZ?@c2RO>~H6_|K(+@RG|>wyBCK>K!m!De?5xn9EkA9Ry?q|O+5PC z37kp+z?(MU9XngfethLDUY>tVkx$+{ma0M@IxzSl|DVV1ypz4xc*SX(Ic$z%TMR_7 zIbK>r>Bgv5iuP1%q%iqcaEg!wV$xHqTNgVI(cgR98D zYMgt*o`b`=fb$<}97DvUs*%ccNQSH0M+PYEe+mz-#|61~okp^X3SCtJ^;*9o0+cH{ zDGt|_91d>L7$OoJ-Tl-5z4YPRe__;l*e>ITpOl|i{L|A5pS5S@)gP#+&=eI=K;VFE zy9Bla59z`6wj%Zy(IY)dKmtFsQ~y4C+wkDw?fa^}aBh6|Gp0S;<~NW6KvO%njs1Mk zmxPqX%GA`tr>Dlvb0-A9$!1+6RUs|nr{6fR?;Xm===KB;TziPC-l8pYMF3KCyl^&j zd_qd;CKH)=-^W9KNEthMNq%DGPfss=#-6=-O^prg@+GtHy3bC=0U4Z6cYfmqYFUEF zn|fS9Dy;CR4Z1_1S zIwZ&37m$Ae0K!|a@t2?mAO)75Lgty)^Vox3Ywx&A7&@frc=255-G8t0@&2KWGCe-u#s`w5&~1%P|j;~hImVQ{(p>RG%z4+-oa!h83^ zP$8uD?TdG^>5e2d2K>h#*j$_#k{**+w1Whu#GK&%}1WrU=1H z@_V(k|LkRb95pDiv)?{s^aY@ay4FmqitvaK?Q-p?1S4T8&6KWq9_Gt@xq6P}SF9?I z&bE_K+k3Gt*_H?jr@cyDKsDMQG81DfFf7Dl>ZVbRg&-j><(zX&G}Ifye9wU<+uRD$ z+WzBLKNNt}ps-d+2b#FDm#9z`wA9=xZ#&0w1ubK=auYAlwY%HAX1IE~Z_^%sxbL0v z;~m>JcspoSZ$lzC!JB|=vpj6TDWiPJsVa8a0KgRK?=qQKL+a~p)wA+JND#tHG<-%S=0|47dF9lwyXSoy{@(0MALYo8~k8Y0czfa%gzbC|kl_lTV^SKM& z*NO`T>ArDrk9FX#(co^x31nqMZdnJQ_<5kON{V=$x-B^szrE%MK&lK3R2AL3apz*i zRsT1#%ZsAo#*^{t{@7}F ziZ3+hpZ3sx_XgoU7JW=Pn7`yupNr zeq-Okw~GH$yFVd=KRV{b^bA%~08~;V(Qc-wfNa*wwT$vY(@HtD=($vCf`6qlUzfbE z2M@&1=ku%g99h3Lu}_J>YStPB36KzxnN_`11K>u2m5l>ZVFZK%al;>h;)60qXXaqL zFjwS&hv5M*9r^}3w}_?%a}DLwfB2WNW_88>zGrmGr+J9J3^9Vy>is}!lzcg z==|==__-m8oxM;90vOL=whREhA>1|sO@RcaGMHSu8Toc~VlJ4<-fCQX0zT3defbidG4;oS- z&_Qh2=yXQE`fT}y^bc!`P2tFTd_1K+E!V_W9Qtk=bKYPb!`QO-mVR>YY zm__M}Xh_wo4W^!rOcO|~CGJ~0e1{lQ8T$JgpXmM0QMM{d(SwlO_Nh3CoZ8v2zI|X+%NKIurwt zAlbHX#&a`xY8nz)pTPTWL&$)XII)bco`(SXLipf;D|zz_K6eV9M8d$&x6@&m$>TG} zVF?6PJbs{^H&0b?X0eUt?7E0dNCL$>)@#G}bcLfn=4ZM=BUk>sz%YI-aFYPcEapE+ zD`A>SLJ}D+?VhJV15z@xlg;--5Ol8WSx~~YtEn9c0+=i$Wh&D8o(wPi1EyOI)J02> ztuSIpbPjjj^|0}_{)d7zTs+|y>G>J{5>^XvZ{jGaujh+Qh(~byFncF4l4RLQuNs9U z7BB-tCTZ?#;H&*L?rPl5cS8{Ap1*&N1)5jxB>_lJ&D6Rtbthx3t~+(!hbk1PtP@0ZDHls&|$LZ%DFC}TSHG4uios6;4V*PW^r>Jou5Ns<^NrZ81iG*w$EVQHF6 z2wZoV?hfI|5PT|xglpr{+Ex3<_IIAo;@lbl421Fc!8ZyNKX-syK(ShhefQX~<3c6p z?VXpMF_8<&e7*mh%R`$lD>|?}URWR0sH;!e7e>D%nUiNv%D>@o7(kFJ*eE(5#T_9S zt<^>F2udT{{pFSHdG0_ICH`}nmTOm+pMK}yJ&&-D$-5)cSW7FPn_2rJEea-*G4svT zAC|hbwY8eI%$h{#h@w}KK1tHm3KeahH34wQc~pw7iRB7B0ST;@u$XHL+qMlLyQUP2-B|NeNBOM^1 z)WkQ=qGX5SL-flJ4!pPXj{;+dL-*=xxII?0HJmGfd&s;X%4^m6n5b9Ev8CFPzIaSy z9`87I*||{X4g+8WMKB>i011REP+b5{-S^5A|8o7JkdUPW%(g5t59?JFTkKj*jcwci zbJch3xo^z6hYY1OuT48gmvVFFB}`qc&*EjT(zp&Dbsz3OsQ*l0Fe260p}3$gj6MQ^ z&GmaySK|IJhnCyd2u;Y zjVR3>iC6~#z`}|KolvKhJKYOMpE%k1(ahw^#tnR|b0_9+=l(?A2 z52qm{3&aV$Nqd~*;)4~>iFh)eEcTv6? z6NN}8_GkzLFtJvmi{ZiQW1;@_ZUR6EzHJzYr7MZ^3y@L})?$HEGqFFnrZ1=0@Qrh? zBV+tYV)JY4|9aCc3s-X-sW>K=X0wY-0U53PyU`PcPfC+`N0&JAZF;b+akODxG z$4Q9mePgbmSq>^BkyKUK1b{dv&Remn;322l2TOw|Ep4sdu}CDP)ZM}+Q87TUWU~=2 zfTUCv=#^d_kb>M+PYp=HJelC0(Rye_XuY~(0^Fklzt*SCZ05{U&*2oFzj>aL=2yD| z);bBYC?dj7Xtmj9MZUUJ^JG=>R$!7K!=KNZK1$8Fa-h?vR*0DAnT?8DuSo(Lx>avf zi5TZ@v&!vS*wADsBn<0AMimx}6)mdjoM@Mz62xk_r`! zfuV2sI##0B-objh{oUAy4wbn?t394Z0Oy!p!z_SQ7U#092~YpWj_nceUVpF7P5b2Y zs%I&r+mAfR`-de+6qd8APgA{tfk!E^n*_mY$kcbFbpb>ma>owvz7a_ztYSX7WpDHDB;R$fTy>hKtFWcOO!O$yvHnIb9 zC~&Hwy|CuWOfDL=H$N<5QG%>jxno^vecn{-rr))zvEq_ed}9OJt4EH!`2YdVenQ9190)5i_Mb(_6N7$`!?+l`QeB#JdV2O+28;w z%=+iZg;mAm*}%3ln+~|$1hR-fqb{b&1Ym*}a9t&^Vs?My*n#bJ%}41S@w4Ie=3)d* z7f+r=y3}?ZD%$NG^+R`{KL!8`1$^oi)LjHr{MubTJGwt0HgeiH_&GK!U!FPa zU+C(A8Q0Go8e5y}lMdm`GG3U1l!ylK&b^2Q0N_#v-?;!G;n(r5+t3vTfcZS0ItPzK zQ}I)KFc`l%G5Xvz&MpFg%aOB4(Dn_FZrJjctw(Af=o{(}_2c%T_RN?m;ZzPng4J-i z8~zX^@wJASE@%oD>1R?~O*5K+px|mD{`tw;M5u*e72*6@`S>L-3s0$9$})ab=RYE* zhm&4kBCfI|Jl4n}RnIu0r9r=4P5xoxKt$04Ben2ofdJvL=2W+@W;Dj4srQZaZg!cJ z-LG7XOfJ3N`OS?5R~|m#hWwB+erdVu<%6_$BmZ*8y(M815b|63n0b2dy2M9D ze}Am!O^t#6XV3el3T5GONV5?9<_Y_cizh9J5f=E1o_FsqVQuID03ZNKL_t&<{D?MW ztR0&CR^!{N<>w@Xl)|y|Lbw1FHK6Np0F3mZ&PM`zkL#k^Se{P(+rmuk)Jsx^b^6Gm z{SRv&6}$Uantk6s$y^SCF!beA^nYaL7P)y9is+}db^J`=zZhGG+{i5gCCeW8&S||^ z2LQ{eUiANu zu^nqIr~8&d*bC^Xx9qm#p`bC)>+E6U1xN{%;c!1X{D6SlM9r$Za-n$C_w*CRuQdPr zrE@P|CCF+FA2@*ReeJ5)S5LQ3;k7H))&mhdexxmkd0n753r|2(=^cA~qj816*UAGY zk8a+UJ&Nn9U(6)AI_o;C_Kl7i9%{?v)C3}^dx~WQVPNv5lZ~#qM zx$^8Z@>Gcp*x@o%l4Mz;%rh&f-!xHsrS7YHekW?LXeF&t3>WQK3Tq}T4#D9w+T=R2 z+YG{D5vl_K#cF#;@&uN19-$&TNDU%vm}C!mf}~H$b`aeLYRO=xei@}szM!ja9gK2=ChN;suPWi3-%?x=AWKppOa zu*PMp*2DcqHwFhoofu*a&78JcEEUCNuXYszG!`Z;6bkc@)TO60pI>z?NRKi2Vy;dV zU20yrTwG0o;P}GiPt;YV!7Q_C@+t`_)5Y>yX8r~W1i=dgxZeOkwnt@;n*>SOv{hVL zV$7AHFfZ@s+>;V()#jRAP&ALERI7F7dH{s3x#1u@f?%v>Q&oUauepKFwHnlPM^Rkcld^3eSd*wZHl&CIwj&->G=qDNZ03bs zmF?+QDCjva;os)7?L3vCc#u-f+5F;QIaL^!#cMg4je(vM&O$6ASr;OP;irhW&QPss zPOmMa(C%5o^=`RI+lis8W1yLiy4p-t-DP1SYr9!YAp>~I9PQNkf*4p?N~!6KQ3@!c zkBc3U20XsfSV~pTLQ1e07pjy7AT85g%gjPb1OnXKBBcQUHelP=t#lQD({$_O=c~15 zopGLw$rishS74{lOr6vx-4*NVOY&gOS(o+H^J)%;CL;+D!88|^E*nlEB7!WUu<8Ja zxb3avv$-SEh8APa^v-N2pNu0ZOO;qab9Msi%RJn{b1t3%`G$p zK2YSVSgpem@GHm_^oXk}(%5mA-kRgx#g*Olq#nkjth70l*9gg0-)gIlgJ6p!OV z3IOihfOqU_w-ovEX&jrsSqJ3YiUkG^@BQt*!LA4Pxpy}kwXUQ2{TsnZ zG3}l&9dAAp;HH+{n=Cvw)Hmud*Y5qsar;T#t?1xV+Ty9k!k<-7dJqDrp`G|3Qugfp z75a@|-ufo>w*tC8`*iFR-+bX|_t!Ho=cNb0Z}c2`_>T)8x&P4}_Pbn5zWlGoKTZAh z(bV76FGf1?3lD^U$2S&|s+o?}#yh#8Oum0h;$dGfB>d?@?~^YpuG6ke++?CeEcd3p z%-IFXlHqbZfGS}^Y`lx??6`;n( zf%KaXN>u?Dy+1e|y0ipHtG_Gt*2BWkAY}5T^U+gNH?!y@Ri}Fza}gn-#+>-xWu|+O zR9)=&>yxX0Q@<##Ka&SwXe{6h(68*<@*edM>EQ5+-S?FjV7UTPa<+1z>%UHnzv|V% zn9$_<(RXedd&{Oh)o5p7V&QXjbNuQaJ#|4`I@59Y{{PnBKfG;!-t=ZC=KpDSx^nbc zDFwn^?D2;JzZY1qtshN4xUcn4J>NN1__yXqCvG&DRtZ6bn5GSPDZjh>?MDK?WZ$M; z4a_8PHKTQfcqOl!U7`7O_@Bl<^-}3iDrc_oK?w+uu2WF;;Ki%q}%bRrJc=W@wM=y%n8%J{n{7PusA8h!2@A0=7Z&L$ND?9)7 z=qJC{_)bjs-4pG5H*PCoXbm%;M*SR!5ZjNj$H4S!MbXyPAH?BaD99CG^?m7I3ZJdt z;!U-z(mC4giWI{8_uEpKt;GNC zME1{>DgKLhwvz+|M(jOe@D4sm0u8vIR>vnYtN8opk!}9uu{r0mQd=un#{$a%X%rc3 zU*ld^0(-2NlSJK|{1N;)fv zGdeo6yJuFM9UX}xMT!&+NP-dwfG~t_w6|4l%5?dv%u4S+9})W_vkgGd{+aJro$9W0 zGQNy>ao>CQ-MjPl1ybIi2BufxlK`OX;P6N@*32Z|;^VpkE_1+;%HjBxH6?$BB$I6eaaF2`mGCI^7E9FEU6ZGaRB z2S)&)YT?5A8^(Wbd0Ika@#s*r&C&y2t>u-gBk@Ee5f`eznA0z70D*1iQ_F$`p(>qnR-zxpT*Rb z#jGlYhTC`S364m&`P8;Zk}thjomHN&*XZIEF+Vp`w;Qy~a^70^rPOfP7>SFx1Q4aV zA)N?umDY2`<=LF-FTX)M-lx_3+Jz*6K+hJn%NqdUwzV8^`5u5lEz~V*ljQS4ruD8q zwo3>Prmq-U@N@%UY#BCd(*VfK@?Y5il_2me4y^v;8j>czi7_ zY$sPvTgLTwW0m;Dv$bz%7yVg74+KUMz7DP?U9-Gb9iJR)Gdsfzo0Rd!#Zb%ZujMkU zsRCZQI-k;BrMlc2l1H>*B^c$}Tc9V#1Dhqub^*A>!rG7=jI_On?++|z>$BdArOljh zP!~>JIFf;>RpsC96T#q;o}iP+*- za<$w>S5=L4ZM~Ol3GEGvu#r>dXX|tBi^Wv#r&zO!9O`M?9}KIpHh-zbq|%%*M@qsG znU#D#DFUYHKVR`F?z-ybIbX|GTNSMfG*nZq1z!VM2fCqNFK}rLYaS#BE}Mz1_S?Jz z2YNg6Q`)8E;;Q?qwaGov^oO|>u+OJJoMvok52G~#05<{!6A1g7F`-y*NhRa05E3bl z#g_b0&5_JJ%8PYgsy2vDO5D_Sxmy}jlo$$Xi4@QCivVFTvsg5+*uw)m+*V1b6jXy} znszdiD@~`T%#;@o@yOVv9SRrSm|4f#CIAF=(VtkRnkGO154>HF?rJb04qhgFdO|K=bHSw>faXAA*aAXt@ zPl6IS9&G!qFQ3LnUaR3dm!@!OT9NSEd-VxU+sX>SD}mWl;W>8^fFIxE zN%05iGaIZ9CK@w5RD#bhg?&M3V$8n(FeFM{HumIk?;i;(_#lMZ)$5-SO%h=v^XYDP z-t!Lb(;$TZ_;m2epFjxK5_KOv!omRv_^0N>&&@)Fcrf5Ta+ed20cf9FjXn7ja4s~} zd-PtrD*-@TO-CPp0j>*45)Z#k40QugGKJ{(o+qXSO3M%2!H*mUAQ!9Q$DXC-YV-T_ z*BZuY%+Ran$Al>Z(8sfn^wb_9VQwokR_jc)SV8?d-%#Mm<<+P0H{@}09sCjy2v3OR zTXgkADs^^q^W4-l{Cd~ny`S&wZk?R0lfz*W83&vrc= zoxyPkGBr1`xbUC0CB|u7Jo2{C1Kl4dP}7C@W6x2;Y(T2amCj1hTgzzI8Nut z2Y0si`TsJsJMMMe%4cjIDccF3Ih$&Ahczspom2NpfWZ z&#h!$!2d;lM7Ordf4KF-U7=68`zhXRQAC9Br8cFnF1Hf=wS4XS!M}gzxePmPrRxxHQI9yWfs-3ehT^9Vp(W5Hy8O#&xEygG zK7F{M1xDsGoyXH-6P#=G%KO6C@?)&z10afkP5=;@OItTXiRh&AfRD6*h;?@29Q!)~ z1_%MBAiUcf_?&sCCK}9HB6B;agf`awUrObdjSzuy-Zi9}(nud2&J)4)i1S$ocy z--Ja>-%zf%A2Ep_n($8Pvn!~<*7~wNBO*b8L|jn4LWKuMHnPz&1X<2^ls8MQxiqaT z`)F=0CTt1ShWTk;meaZ5>D&9*;2|8iyJ1tlwvZ0U%`?qr>`G&3LYBqE7y^C>AfG3TOAvrW#n>pq zAqb#cCiB-Cg!!1KG^~(a;T05H5CVaSC;OlR@B}N!Hm86P!PRVVF$p2Kt`@dUxOOMu z)W2B_uUtj23_#fG?Af+2RPy%izk$Oo55^F$uIs0cl}m1h?B_i`ldD=Z~)(dc$sa(27zEPetC!)$O z@y^gtr`}5L?(Lb7?{T{oT&GWX9+{m-tqwqEB+46>s-g(HSPdU{t6sShd~N;A73;gT zg_~r%77YiYJ9_j3WSG3gnHAVbixZhsdGq2MyH?Fdm&m)uhxW)1iT=Qi%02;x!rF*; zNE-~*IGLGi8L*H_QW=U+FE8{bWBR@%lQVf~Swz7NOV!**|1b`#z2Aax8= z3$Q#GN#tHfIfQzED^g*+OV;BAv?k12YbBBpvF?v+*^Z_}M~9Amu^aCg0OPglwIBHZ z{^{pm;9n@8xv3%A9>hK4O*hfGG)^o-2>4{|?to7L09{8S(hNkILc@<6sv7B!#v%lQ z7pu$t0nIO~MnYZQ9cOZ5Y!-IiBW|FR+^q#PwZB%Q3wfOI3G%Qx+|GgkY>C)Doe)An z?l8N1O&`0sbnztpug=_hwcLz;4Wk901^{&n#R?!m3HA^A+GD#&TT9C9_{Zbxxx!D7 zWxpCWces3Nvxh2&byM9Ltq$ybnqK+}f0=obvoT_nf*?U5u*8e&C;^};*w8_A2&{_A zs;B@6rKFGZt=%F*gxDbE7wP3{Zf)nnbVnJn5M6tuLu!c%Qx$WJzjOsgLokou1jH(B zY)1@*F%$=Yw2Gq?bwB`@^Ozxkgh36#0D^7 zp6gc9=byuQybQejR^LOVw1{UH0et^v!IAh04MC!$3AZ80;yNw~j^*{O#f{<7aGM-8 z-~XVuw-bO!W~<2zbu21mcVK{z4S;~2*Izy3oq3H4 zBHG*dqYv;~2e)kJ?--v9ipknl zC4V`0#&`zGQd}pu1-5K&f6&<-l$`3t^3i~Ql^K%7EDrm6^23|0 z%jb551ccxfIYh%xOHysF$Y;sZ;vDM^(5`Lwcgy>c@Dml3P(p~H7#nZC&c!w3@gKwU zpsMbp@6rx*-UGQ=&s7(i_y^T~1vNNkj?t zG)WKwfHE#MECAe8!cfmD~?b{n&1^boL;`Hl{!7jpiD2999 z#9KD~ol^WsNrqrt5aSl9am&nDum1?IB0oV4hWvT4`3lieLL~rvi>vnZs4$eup^nP_?ZH7} zDH_i*I2;79T^L3)X(0pzjGM0OnauT6ss|P7dcqNP!FgE4L<|89Lcpju$2%<#XOa!B zC*D4ctu0Nx?#rvVk_7<{^pyu%$`Xak^w(2S-+CwnMW`ZN5E=o%g^cxKFQ>2LBx$MZ zt=BY(t3VLiA$N3)w*#2t=`WI}%dj;e4?6d?i++1#Xw$G=Cr{_BX7mdw_(&JJA^@;j z#0ytpc+e$`wwo=!Ggzlyl_*IbGB^dbiLiwbza%yXC`D%kgA(L>w#%R2v9Cv(w4y}N zvPu3aaCw2&SuSwk(%62lQ=%k3Qu{&og=x9WO1g0=-f+yJKpz6WiWho*dStv>R?F!j z|3a{jW`e?U#kq@nx|ycYe2;IsrPo-Dz+rf58W)oQu&)>QPeP$!0w))-o`(Qz7b}(K zbkC!EFy0OVR4lwQ1H)-VbA)QpZG?h&@IXLm@8Q9q;fBiQfY;h7LWuh+8hc&Nkh$d8 zi^qLqwX|Z-9T{9M^s|bJR0ZEUNost@=tp`x_iUN0-5U->`K8=FgMnzEE3m62-G#*p z+&X6dKbBf9pXpcSeZj(>l|V-c1l*BlE(QL}>iI=(_;ic}&>|7^ z^&#K~0g0*dyQA+I3BSV_Xup;XW@`W(zq+}#(`)p>B4LDr4I&eAId}{Jf&oM$Z%XAt zYuUufIS4KkdGn4*GZB7s>$p&8IIQb6tL0?zmCMdojCr;r5`8E6q&hZG)jBVyno*`y zE?vYw%&nXfNion5RRw@@1?$P{eM4$i{FezK{X?ufIzrGQDp+51R{6AN)DCy+Uzqs( zj@C!b?X*y41-|AvC|Bc8Tsd~s`J3Fi`p;H%*Od6(`~P!ycmKBi1xYqcGcSY?Lab$9 zPUlY_e~E9di(6H*=_mH=d!PE}($)?sf<(NjAyFzdq@>iU(fRzend2#83W4HE^zW~% z{K#9!NFd%Swn*Lb&R*@e+CCWX+U~U8Lg_G3C^j2<@pzNmWjjchizdx-D{*SR_GIn< zo}W49W^WQ{-n*mo(ctg;Mh4u-jX}xid@_D|7D6zemU_o-I}!jyXf@aN`Xz7~?@<#_A=#SoM_1-xAda>5=>Lu#90Lc%>;PJhd|_H*{JBim$b)I)>;4nRe5BvP8II?wHj?_(v`zC@8WFT<8 zTfVa$t$vqPQkzeB8*62grnwbAzhFI4`R}vyFOw|#B9JK{P%x1;0H7m?5AH+E4*@LY zaCQ+KP$k?ofp`D{*eK!ne52J&Qk4jCWf^V=E&IvDc1k3&bZ2j}qfIaw0Fl@`w($YU z6}qS?_97#jPPI!mx>VuHltf*jmok2`Das+KAXixPbeBZMsJd1r7nTgJT2@Ql&?B-V z3)@rD!ZJ;v5=*b!Eq)Lc;7|$L0|1}^!~!TFU|A@bP2-E3)w=5@5zIuggp>gQ0U1FJ zkP%WbV%DRZv(2TF4k@NUCS{MpNMbRQOPA}}{=5(xEH}*&CkX12qWU{@pR0yB;-10pDVp45Q&!cZni}aOEpmq{ zg<6HwDj1>=wSY=VJ+IZtFB$}(N}!!5f^i=YafV7B1vlwBhTw!Cr1N&y^%G94GPTx0 zz)3h7@WlrraAY}eZxq4hke6adt+vu7?Wy{;T%GiKLBcinwJ+2(hZ z;`s}tIe$s5wSjA!-pkxWYT+%~BymL<@H&KFv6tl2_J+l#Z_Vxvi?46GG3p6J$hv4H z9S9H=vSP$yN>{iAb(0rZ(sj(A3hPWbMRQrH+1ae8=~R-!lnO$aQC2HyP9Oqd0B{{R z7C;2&R?#Zw1DeWxC|j~bR6#*~2>AfmOtIY(P^JXb^`e&4s)`9k603H7j=V1BgzQAG zCGWS1EBsuR8cO#7MKIp{K-bxXgbV7S$9ebw03ZNKL_t&w1bql`jp|I&y=Y%x&~=r9 zSuw;WT)<(-M*I`42t$=5g=m~e*}Oyx;9QadJrTc%M~M)mSfZo=!XTioWuljRYUTA! zyM%coDY^?Ha-(QNv-!f*8QC)wqVtY>gc=ouFiT&nx}?Bo&GasRaY)y1v9|RoBqiX`BG*{I!<$huMDExSH5RAQ|d+;oL7VzCM+-H z0CP-Qte4`8Pz9;QM9$%xPNjREB$&u}s1rgoLIh+E3Pe(4>I9YpXzyJb4x<#5OkiGzb4Jw5FtpP^2U2v zm^fZis(f9ZDNil$OP zkKtAjAXUaczScCQ3&_x=W&^tHLI_9%AKZh3*QL?Ea~kV6ts4T+b;tl1cp0X!nPj@M z3=p_caIUudcOBgFJ6#^G~(LYh&-}y(aq^EE>@S`8C|JePD=0QwHSg0R??xb&3xln;cv?qZ*~P`iWVC7NihUbsWy`sMM5kLN`JMyz_L-QHE~cZ z1V#DT3fvy@wYp7m@DPwmRJ6-MjS&>eH^l9PCuNy1-x5S8eDn_w-tmC)$KJlKrP5n2 zYRduXPjBma7`@ped&|R}O#os#u174v5@+VzZ)CrCaqe+@<)^PpMG48W;`5=a_0aB# zkM)ka-GjyXwI|Z07ns-N`z6=-@fQSVKuD$$(IJJDk#_m_w!U{)`2EJ#o5cz)VA~KJ z0*MO?v7=W_kGl}eRL`Cc{K49>b=^Jm4(W@-qr0_^byIxS-`K zAgGRZZyp#Ilu(y-KXXP~$kqkp5;1F$A6zxRT)%cR^7cpN&knzLXXFFMmX6ccA~S1{ zTQKw~kTAGFVG7IN#9K<|b82$o2*Dls^4ZWIEuEU-wO@WKNff^m9{>IDc8MairJ#2x zIQYkSXfJ{az~R}j824B@`CR1NkDJe`65Si=_)RilVx)ler+9X{bfukmTOu7Fqaz-6 zWFP^zccMGk(Bx}uu|oAyE_Y1W+~8a)SKGgR_UN0r+fca^}>?sLVAw{my~KjbT<%Z$>{=#>Wnk z(Y6SYB~Xcg$!?z8@{ecu_b=b71uFm2M1RxW%=klvgzKjnpHopc6;dj@m8EsZ)gb^u zVg)bBq89wZrNyc_Av^&=z_X;lVF5^^S{GH%<2frKvS4Liy0{#zQpr^;t6Ch6^0Ep- zXfl(KDvAWhsTa2RSRn#{q;rXYsmgFotFSxhzH2y0W1bx zL2m*8N_DK1>cXzS2_2x>=fEZa$BorWJfpNm2co_R)hZh>%hoDcs2M<#!vowpoSSe} zFj6s*$}Wg&ukmEZQnFeXO(s;;-b`nYi_0UYC`!&Oow|^l_BJakEBJXFvQS`vjE+V+ zu|@MG+Sl51!E{c#;H}eZ>)yt4-l_<|wUN(O7L{vqFz7_X4W@#csY;F%0+20LiW$}% zE{C5;d*pFER6O5P%-R;*kzn~O>a0BCoBbB`yQtGPNTCL7)g~ zn032c;O<+BN($GlxGqc+lq}6AU#Uw{#p0VO)T_7ogBGY!w-(Lfbx2zEcoj*MpdfHg zxM(A^)eZPOUA+YuNq|`AY(q1l3c|RS%PUI!P;bD37hYD+=2uesI=VZ;{qc6HLRFlw z|4mTVDj7vH561wUfWoRk@S>_6DMb&^{Fjv6dB3=tyw<_I2uwQ8dDJpo_C?iJ&@~O12{Bpt| zN0$(DKm{}zeg$B*S*zAk#PbntIj5ZA6_u?*UNcBu6`T{jln-77S5Xk4z~x135D-A3 z2x%Yy3?kZygn-0cZj>q+r>Z~*r1O}U-y%>LB{amY$~SjTAdE;0frNT*AVor@I;|H_ zP8GdU0D_>(>dDPatRh1aK&e`4Nf$V{W2tFoXr9kX8RgZA%VsOJe0hlSS`?ZrY*Q|i zLGG8VK-8Hirt1~eC|q1&ISF+gITIZbaDafUY$l|tD#KN2F`)^M$U=nWy5SdA_1D1W z_l*YssQ(MYz4zKco!Ymha-|EN z(0+9BuHaI%1=aq*se2}hS9*mDJU@dcE<*@xX~icFA*4Y7$CvQ^^I!tqVf^;tX60*Y z17AJS)PecgPkUnTmf!j_^OM^?-_4GQ7`c$ga-E>*JOv1(Ph$D&H*ktq(~qAH{Nd)w z9IHYQ>kZqP5LtyLD}VwQmdhEew^IGSbu?+$j!)zBpP6`@_6I)Mzx+(-t4|(#p8co% znX*%dD@-9c(AI^|+!OkY+~e)rUbt(QAcWdZ`x8gC^>m|=Wo$&hezNx0)eA1fZW{e> z(c3#EzuH>~ZrLD22u4$v+W++G<>$N<{#QIb1LSjuqaUH2xAyToL#v+c=cbaptF!j8 zp3Xjx+D`iuuWB2c6cTykqMCnmsL%JuW52sS@d0yt>r3Z?Q`aDb)76@O&)rPdAVkZt zOU_p}|IZ88zUwUi{IV9MG9gf8|AC#K@9o;MZGVZ=^~;N2U0KQ;d-3`h>GcycI!XU% zU*bKqtMtx8)hz>Wp_D5G0LidAzW<_}E^-JVV63)&>3rrZ##Mj2^x?aMpZ9gstz+5y z_KTm+jT*E|A>uEcZ7!-ak$(7YPuIBMvE!HAe@_49#cSVlR-h27LZ=FO_hj_5u|IE} z-0So-QiSXMK=P(f4V&==JUVICTZY!5h$3M4n>dLP&Jv2B%e*ZxHH%SK-q(0l_q9BdL6N|2iGBltvmflXbxJuVpU-Um_w2%@ zUjv&jWR33`r`wArEt9QnV#1v)1Sh#}=0aC$zH=xGDvWtD+7WU057jl{qO&)lKUIukOd)tO3U_3AK53n4NG$(%i=a@km}*A{1y z%0m!OQ?4bp>MHDvReo$WY|;iR|s9_P@`p+WC%Uwd1ZX0PXBNm3Cdl17tea}$kPsO9Tf<<&wa&C0NS z$y7_utJiM~`~jLD2gbBRQk=ENQ}M2HQK5`?&g9%oG+ zMG(R{+l(q+unmA(tgDNL%~K)#yEa6GQSrr!$@3W`J0mL+ywyPILx$I z&2bz_QKRZ1snd%-Ad0nxa&2yPfme!vKz5Bk?Pb>F0!I7w0eYJfk238BIPzu6{&WdK zaOQ1v1X!yEK+jd^yy-e_oeL}Hy?&-7DP=Wfg}At_E!a!^)&4dou?%^Nq2E4T}TIGA2@{&nM(n7yi`$j-L-ki3tz-k3@yT!fd?O3i{C zg4a_H9s*;i%)?&NW7Z?z0&b919I z9A~=PSX5vs)r2{=W;%Y!-#)PW17vsP&ajBp)9Uoa>Xh?DZY{~*oR6wX%TUkV9c`K% z;1#z<%9r3*X|GxvSw_r+({OAxQKAB#ZQA9U>CQuV1Yim;shytL@~ojIPvvp8_TonNV!no>vk0gy zdQZ2xE4IHY7&Y>hOXhWhz zl4m?21OeGdiPiE(omF{%+vQM)L`C_0sm(VNAz`l2jnS5Di68aW6-a<^Z0`ZL4THBC zv8|`2OqJQK=dX5j0tDHe?t(q0aoM&}xD2L%2rQM_?RN%!zu{ zK6zkiBmoelEBNO%R9^HZc{mpXNH&0_Of4!{;NCaU8 z`+Lw4h7efDVQP(dQd|F?>U$oY*r~iv3C4;7r^;}zkNPwkRzd(mh{gaA^@^>p%o;y* zOMoG+$9qB`0hEwXknHN0KBCHGcmLe@?TbsYWV4;+t5z;~mZY+TLn5-IcJ%Hv-u?d3 zz1sUF?pt`$mn*%nBwpOSQ2*AIf{Z1AaF2N0 zy#JkOjdKXGxQd)EdOt!wLT*l~0R)p1 zn4ADWawX}pXGpaM034KbQ%W>Sga8v@LSQQAUcz^fCGCFl`@7%XN4JrCWN4ruAjI?N zg=xC5g3vB9@gN2dK?p4W8?2Q;SMFg52#FO#&nMN_Sh7wCC8UYu2?!AoB~rUWmrg(k zM1th@2W~8iuI0d4LynOWs)Rb)58lr|Fm`W5Y^`3=zMsu3nCEi&6!9PvNZAEIt<9n}2ZdtTgC1e1HIsCv zszveK0ze|YJpU8=1lW3QYXw3twc{hs#4S{E+_1Rz$M$T6i0<>6JiwdgB|jslWX zzkH?TW@T3)e{it<1NPxaryrVWA(9JjGh+m>i1+=#+?-TnRdsx}|DfGPbEf7PCw=P+ zPTpI)vZc*0%QTmeH`O+^6yUC#o4e|6DDWi2L!oUQp#Tw#6|T+Ns{*cqs*RaExBwv- zZ)r~V_;qaUhAcq{EM|}`1AygWCI_2=0R0iP1)2)QvpLi~5a7@N_6>j#cnnuIU|0YU z4Jh|S`~$|p@J9yikpY*!mv)9-1tq+pE$7vde9bA+c8|!BzQ5De*`fus=myJ}*LXH*dQ;~S$9UtZQb-uTijWJtJt+})G zh1^1=I*W_*sg#->xP!d=H~MeGdv%qrpA0>Fdg`?EKk}Ci!rpd|^cP*-W88PcU7$YH zRhaAt0c9e-VXx0=UnwqBiaA_ZU&xb-sOkZH@QC^+!JfEK;Ap5t00@p+j=B~Fpy(o) zU`?z0U1$~)ATbW-45GvX7y#C$w^m#Kat}av;q@%28fGZ%M4sPA8wMi;(8!K)1 z1$0QzEChZ9{X9f>A#ngk048DSm+IYCutT8|Y5`hI=m01aiHxZ^XlNmsC+lB7QTs2o zi*G^eB#3L5$`u)AGJ5tE`w8!_rWYRTtw?{e`@MH-zvtbq=c{6= zHfwoBr=ECie))Cx?=~-OHvOzgOUrmL5J|Km7VaMHd#I%i?Y)(HJ!2T9YE{(D>T2fM zY$iK(N-zeDMzs;|PTxQzl8_!A+&ZD&Z}-c&0&;l>A$hztZ7CiA)B?2Nk6p8P)-@8x z=GTw9UrJtH=T<0)onf>~lDvI<_rchEeQjDxOLot&kfb+O(=Dv6!Sf&xon7~zE6vz; z8IETv(^urb%U!yeFewx}q8+_rzci!_x2q4g-xrThS}kO49fkopq&owNa~s5CqCS`3 zrkU+g0BX6Ocx54%CyS`@j!;qd9j!Rkpzjwhs`*X1EPiz1+B4c8Y|d_ z0oN{Bv+SalNZj*L=bgQeba=zHjB@Px`ir%HT3ubA9F2Z#^pU->_m*QVXI~>PRGnf7 zi9K>y5B67RY!G)I!DJK!@CsO7MNYNMqH*VG}Ia>K~b=WA&6Sz02}M(-(qL$&yT5zAEAD8@(QEx}#cUu~2=nE5T+K$o zMRn!cc+d^`6r)w2yS?30X#-(eIqDfy&Y9uApDIlm@~<4txe#?TpDVs#uTelIQ^{y3f}Ym<{^On zdNr(7DIgf;rKZ%l!<%G8A+TI(P7)2pkx-z?5WtLsQyX|=Ed(1?pl(ACDOUleO9P zg_ANDkzlwB!>wVyrOP)G>y~(nzM{Nhmn~Tl5Cmq8=gXyxFs?^);%dWg&j1J^wo`od zC%GrYvCO4eaZ?n5Gt?_yju)Ab06Xe=s!@_D+p3V<--Ra$L_iJ#Gq#Y%;oqJ_u_ zsVikqs=}|sFUo;{ZLGVV3y<+q)y~>=Vll;!Er9_-h7DW0GOy}tOKXrjby{O3j~5Cv zg#uRB&>G(Xp6nxXAm&mU2nIvJAWXBEFKSf@ss_&kR!Yt_{Dfb^NQ_Pz?`!ehjy6RL zp)V{EBGt{@(Wgi{-B^^jb7FvyLEF)0uLU$Uo(MRupjCFZ&P~Cz+AL$zfj~4eIP4C0 z3FW%}c*F5XP}0!{2nbPLFV&^XaleQQz|kF^Xjh~F1ZSkcnB#JsEo`2}6XYz84EgtE zcBorMd4#leHO>)Ry~b9bg6lw%?bth6PcHzj=Ce2pzcDC4@}jw1&i9h z*V(fbloHD>kolTfckOcV;w!j_qqj;M1v;e87QSU98p61vOY=(AL&)WMYo#I~D+k@! zp^DFsT!pVoSh+~TrfFV7&%2O6fV4vz$#J+FVc{|2In;ix;;pws5NMv2SRukhWsc`t zyoDaC=iO3Uzew1KZ~$c41r;EGUIeQ)u`4AYa9z&p7OPcV&$)%_kx3>q(M7^tupmkM zL%FEbIBPtup%#K5f;x`7NLU2`ue4&W9}GAn;gu{zLmp0sPXZ-~sc2I{fQrCo1(_NM zL3^kg*6I`xBrr?VTwc{6h00#5wpx=mZLY7+E2W$kaODYF-x4TSRd|A~Nh;E6khrew ziV}mQg922^4py^%R^;U(;r!RY=3y0|yQ_Cg+lTmQRA`ZeSJ=Atn z8aQ2c&FAQbc>UTob1BeOuSam<@IYm$2M%?wtnJ8O?&(%szch7c-`Y|iH)PCb@XRzg zhpOO_-OVBX8~WzDgijvANE-lTs`$5aFdYb>Xf{ojZx!2nbQksyf&eue-#m%=Tr--- zd?0{Nr61aH_=xVdx`uX(h zrJrUNQi6AHkK8@-J7i>s8Jawn+E~f|dHHOmR`ciUX;|s&?rxN-N?SK?4RujOgh{eV zFU|6y;n8=0!T9Lprv|M3Mp-`bwEdj<|E|nmF_*>0X01Y(giR#ed$07@-9r;Rc+>ey z*AWahPie-OIu`to3nwn!A~5X_;Uf?D{`b&O;`%(dkZAgCyDB|B5L7GHS|7VuKO5A8 zM?x)c$G!~OGFbi&lmZ&q&@f9=!M{1P{P)I;xFrkOyPtk>bo4Nf69}j_enxf0>WXjN zyN78q1lmr{MyD4c;Kal058USYRS;i%w$gHXkqG7~rS*62aw2{RL{_tH=U0djOqDkd zk6Ez*fZ%F2{EelryjJ?l^4Yh*<|-wh-oO1r`d_Krdl5x2*pOUlJ$A+UO8U>v&wj^U zLAM%?pr5wVJBR(Bi2sM!;5Iu!Du!#3qHse?>A=4(e)Ux5e^#$Fczcwpet+ARU3BMd za$oy{iSSkcmR*=${EA_(HpD17$Mk8wa8*F2=vJc<+DjAk?W3WOMn4-KnXqE0)fy6m zZ&=i!@oF$!-(U0(-DM5j zJm;>9x&a8nMd#VY;Cc}dR!eZ>&=^xC2(+D;tAD%prx&mM8(;rw8{N6Wy#m+(8i&7Re{srknNk?b-Xej>*VF``9}wbvpkTDsDsm-Zhlc zOp6*i!r%WPyibm`-9n7AHtHw-srB*Kh%Eu&E-lWs5N|x%{t?>Gu_cGhah{tlFT}as z7j6BR)Jw5z6Ow>>y+s&OakvM%RIbf?&;Nt?^4edWx%M@4{?;v}s?anD2}TE+%4w4$ zxOXSG2AAQ9i&&jQ!!_5DQTIUr1+&R(+}e)cx~=JLbaDx&79j*;K|Hb>VI2bG^2TlD znVx>QerfuyzWiDrEZI@P|r(_62oC_4oND}}kngE5Y0Dxq_)gXKo=?tMX)6N$-XUn&*;&k?|ImMK-fkjJmg$U}TD} zuuoRogx}{%k$jcQ)vAT^YO*$)EjsH?NJ$Q?(z=TRLptlx#RkzrvK*G{Fzh!^ z16ozSURa$IY4TR(a25>k#(b%vkSc>ML5PideZwh22v~wt89V`Dq;uCcOXnd30zp#s z8n;5eP|GFf!8vrD6bEb;EO^fUPurV^Np@Xzg1>X$7JEcSMDBZ5*1nfYRVwY0Wy!K- zB;$R-;KppmU~CxZ`G)BRx|!x1hM{Q&OgCUm8*B?(UStVdNY*abUZtw6B`Y&4_socl zeSiBs^G8H25;AURI{u6=Ga~N0=bd-%Ill$#HLNZao62srivbsM&aYY5h07$PQgPQ^ zFR|4X(sS*0HeYQtoIqXM7ToLi85@o2y1Xb?8HZpZK05qRIiH}ui+J|=J~~JC9s4LMRYYxan@Cj zRg1w4$xFE$))&AGx0h-Y&;^(`N>#I&kH@{+IKWjZtg_rH~|C zElHt>5-X}=2FsjZYZopm1W8%)3e|FEp(B0oX{azMg@RaM$KbN0jWT7{x#%*qV)qp| zA(VUwAfR+k_KuIadFb%{H7-`X;)ZFPPzVDtXi8f`)ycOU2M~mC6pji2s~#?HbSx*U zEwmDy{z;|*t^+`C7`?H!28miOMx{z%Q#7nFv86&X3PqSYz^K)0MKuTZgIpV3R!W9& zbk>Eh>rJOpW}SdKY~Atunrfub*U&9fwJSTy4!TCYq~QtJP|2!NLlG3S93!9aD{XX_ z)Nzjdi)!;_O#Fm|n=`<`4kDtQXm5#pob%yB+e=0#2LB03heZMi#*SGW5Lc^YYaqx-P-y`_-y(_08{Uri%Q$2k=@(W8pn3dPi?Og^wb z@Y}B`rp-d+AGoEmbr=M_(ir;YYihm8M5Wtz6%T9%L2cSY-+oOmR6tbSw>fvm&d#E~ zd2;qi?^m*?maVGN@O~|F>$^hZ1Qew8>%~`(`Zo+c^_ckahqQm6+>-7aTzm9RFQ|8l zX9*vy)>^$^I(FhI?-w&a$b4u=_b;dZV|wQS=bHHoBQ~=V{X zar^$yjSb(r#l<4Wcl|g`w^o&_BER^Zg2^GCH`&c0Sqd_)jcHKV&reD=WIZ`VI#9qPZF3H;^!e?GVN z*X9h@EzhCq53^BtYgDMQX^ZmNJJKIPH~D^TdcaB&0~KV{`|S-R0<3c@Dm5t)UXZG&0L~>sV|!TU@)~GcV&^ZK*|kc=z~2N zkKa&L2UnZ3-n0LW|J(9^IDPetJvsi_yO9oqfpe?)iyy$1=nmmi_h29n24-{kt5;$9 z2x<7~J28>&=&1bZizwSL1b*&L>=*z68}+d#Up=_rRCUZhH2Au*!&!}@V&V(0VWkW~ zcw{%-yHyChA^Y8uKCx}5J>8=*0T|)nPk7s7QU~)XW&JD4qG$NKZY}?oI5gl#88~6A z{z2rV1DS^Yf7I{Tn%8>&>i8>9d;k2}-12a4f!Fh_g!|$rQtC$ z*)Np zwAVwXy|JeFRxxvnKeAa3#gs@KltI=oT@+hwoB);?b-?!EB;gwXqqTeWKW zcHoV%T4@EQ=K4mOy%3>Vxv-vpd1E2(*Wd=SnZByDF&w9f?yVf}L8xbm``yg2s>e&V ztK@CVyy>%8I!%*I2gwMVPiXD3Q@O>M!vS9wVETnzM%oooAtoObr8XEi9#hDVB1Gi0$gsG zR4ti~4L~!ndsN#i;wnTOaPzHIm~W}dfw@ee#Q>;WSELL-XMnYmH1Yk3(CV{#V(uq~`Du#}7| z>y;mn=Y_Ln;rak7`Es^b2QzsxJYUo!-aEI%OoW|=aW30D z*QoOGxnL^r{jHEN1z_+{JZQ?LS~2o|x=&w}JfZw0@~@ajkXQE&h|4ou#x2 zS8J3R72*kDPHoc4u0s*Rm?l2T`+&ow7Uaf4oHmWAh%pqa`K-tC} z6CLrKODkB+06@*bo{`R*vl(Oy0MK-?cewNBasky^J3W@WyJuXGME+PM6_^gYG2ihv z4h77?G4=_yR?qZwG(yt%Z_a*!?BzZy&w`30;d(fH5lRrcY$=73dzcLfU%#xL3)dFm zQ^3o_3I|IB2thofAE+nC!C|L13ON8)=|L5L^!?cBS6u&(uMwWGPC&);@37uxgj zz@c6aGh>#De@$21<=NZH7rXm8(ygBPiA@)0C)rl$?8?EDXNN{s+?ewEhsQ53ZQ+)N z=`8=3T!Re@wYIn~MLD|I}60R(7*K5>isv6$LZjhEdWU#c5r^mp%` z7`h)I-?z^fpLpS2C(k5R08HU9iT7ED-x(MU=v^H`kZI!TH7P>|0zjY-yFUehSz`5j zSo(S^5LATnkD2F0prY0F()6C&*N!MF8dFp6dub~D*H(qml34HsXlI}H@Xp(@dB2t3 z|GkTY^|NYd9t?XVp>3$-T$7w`3%N1>qsIkODSFqQz(+*9O|&6ECZf)}AEK@(fZ*kY z_}_n@Bm*ohHDE*q2?8_&k#H~}qc_x3t95+$d4O0Em3Q4OH{S_BD^?R z#g5Nm+kIe0{xs%3kGVwvemvs7@9kb!^ae^0AgGaGFkpD?MfDA#e_J`hl3lfOu2-oF zF#7uG{riFs%Q*RB<5K@`&Nwf4b**^$BjeFY_t5nmssz+%FcdH#gdj~6!ts5!6CaF%juR zPqo7Nbyy~Fbggv)pQo%c7!#k}|KN!FS??~Rt+qi#Mi39&-QH(oel1aZ{vEyULx@XP zT{_phT5FXSiv0Q7(_-m+`Z;{^;N+O{+kx9-e#eZ4Zj#7X95epXF|}9$p?>>5?|tuv zAYt0EZ+t(g=l(ZD0JPS+|Dsf#YL)$OF3dg2|B;@cBO}3I9{u#T!69>d_}SyZSI-dO zjPyH?KE#Fw=J3mB!pEoDD&z=ZU$VIuF=ndG_5WT;nX4@Dmlw`{m8WQde1^|ZVh47- zqx|zfcK1&Cad`ClSByV9{W+AgBrz6$js(?!@#vci=sHAPAO=ub#r|84%%~2|TtN zg5df1<~cmM1ONwz@V@=fRWRebm+;hiFk@#=^`nQTLK+z2)w$cs7km3*b!+A)Hkq@N zuoZE3W%Tv4LnG|Ql-EBpetBsNnmVSlyPrC~X>-O8iVJV+-xvx!jYR^<_0&VJAHLt; zOF(PQ{fcsF4q3gg{_)=MuR8A*pcdRe3cvJPe9eDPs5#jE&(G%QWZP%~&Z@sdVThDKcB;Ox>(AauAA5?CMkLZ3>UfSrWE*Jsq?Ewgq zF<(K&hFeGegjFjNjp6ZkIuG1Fx!t=@QL%n1 z^wO1c7o9KH=e#%Aje%K8>0h5$ODP#(5P(K1+PHHEn1$yjPOma|yV@9NvJrC_Dd3itWbFtX`e-pK309YZ-ZElhR$me#sD>7km(L5^MQf=snraMpgP<_FE-k500hs+=)$v{s5wm33 zUK4NYT{|>-Cfcq0v4Qh>x6TY;B3XQ7aAkWWWA!Db*ZBfVhQlmK7+!t2-)$jRIq!X z9t{qT_PieqU)q_{t41KV|4946iq!>PTa^Ar1K+xI;XJ;iy4pyOc3%_` zc$%6$Fb>NG5cd7vqgMb($kIfwJJ|yun5!CVtjNZ`&H1^fTVI`jE~Zyt>G?~1 zVeVo}8J&F8e&F!-t?u1I;gu7im*!4ivLA0=^}#99J{H;Dtpv50yJgsoi2^a1711bk zxgjlga5#RTO9U(7@RQLO3!YHWcL+Ns5mZ$Xjdb1R4@Dq-6i&li3=NmiuK{o!zcig- zLAm|C#vV>36GO$$$5W5D(%@X=lXXgT=ah3k$p_{gmwz;cr(E^XQbp&-9oE_l1wEyMR5=j#gx z+SzYZE|2ZVw}MhbZcXjC0=IjEda^gPXKW=_xS~}y)?|OeeuPKEQez5kY_7g&6xb(c zF|xg$+{dY)*;2j2 zVJ-#B$ILqB0RZbw$~4D=c^A>rIlpILv{+! zU+6GD&tOOiylrf2=%e@Z9yMsfbQx1yWN*5EpWHD%SJ`>y zHEn2#!7j9NVepxZc0m9E4#d5keWR_rZtvX_yhHe*rIvAVK}h`xP&=CkAXFmFXV>;E z#kvkZmX6_hzHCEox>86a0kCab(*?(M+oTWQgJruW9BL!UnZ0n--?Nu>jTp|e$N7o8 ztc;7vG!2fSyN=>(j(bUZ3}Q4*`{>!i-;1x8&SY;g0Fx4qEnBd`0-dAH{{TZsP#YlP zj*iLgn?U53SIz9-Q>6+)&dxjJ{+%E~vt@n#dtxI8f^+y5Iou5*_N3*wj_WfR-NDL4 zdR1&%a{FWMv}~?37|CF5N4T}SM>_kQyzTfEW(i-iWwT{S-v?bweTs&C+mgV;%z@Xh z(0{G`@%ii*Q(5%wy?>03h#rlN>l*Hs=eh7jSc!P5u%#*41xtywHMAOjI^G=eINt39 zg6Uwe8-U|BH;NYpm(yJU`;z_gMw=1s;rWgE=P@sGc<1K$uK2jId(@BJsIDXNjwrn6 zS!-3bYvwip3}1wp0?(3g&gK2H^mQDQ+tbR}RC0XJgUOQDoBXZjtH`|?n4_QFw{5F_OK^LT6JQda z@7N*J*o>Z?aB9e%gS&b?o4cM(Bx4FO$dxd!J@AWz z`{beNgIS^Zsio@p6BlRB8?0;fdv~1e3kd;xHRpW$GHT0^jFlVqF%vsz%Ps+xu0Axp zF%oH`on2KoXZNtgbO4Ko0Kl)C)jv4H8zo3WsfC+x$(qm-T0A6rWJHa3g8(FYJBGXE zCZ=+2VSdsKNmopsO{@^b)KCtrxqt+p_Mz21he7E%YiK|!LHF!#` zwo!nG2e)a5#@{E$x7d+gmsUpxv)x9`kgkjbzIrD5UGoaFuqx$ZV)Ec4zaSqQ{&=6i z)hg-dzt#MG{;wNXa?N?nEEk$e+fJyL^xy0{JgP+l31>8#PpdboY(Ez9Lb?-D0mPPa zsZ+DW3}4EIEQZ1g31S3-NG6g!{Xapm%>cnEVdI;4?i7TI?t754b?+~75Y&Vbi1c3bI&fRtHemp7oyLc z0N@0)>|^(Oh5|-%wLJ372?Bgg$vk-23~2x%9MZxX0HJU)5-o;Y1p-s+Tcgc~Hy7@d zJ)wScsb5#-6ZSSa~_cH#R;ZAn?ByC$NKMLr&y7;|qZ%gfzk z&5sQYWyt-F#C;BK@yy;AF0Vb~{O;1ZEB-Yd72D_UT$w-P{h?M5_NUdK zn7nIi_~BMKSUnM4*?@GQ*P*0ue8qP8>zk9GLd&?H_)6cV{kr+x??6 z^{~DGUpLorWi@9iHdxcK>u#Qm*N515TT1onE|x@uo*~oN<;hJCjf97TON7SN8mRcm z$Ak#<4($r2`#UPlUBEb)WpVYk(3A7_^TKOr0HR%P()T6V&7xdi_cxqEBY53J zRgz~JtwvO|{ID(>M4nx&W;Xm6WScWn2La?7iXGQQiuLqrjcS+H^g1)V($M_6`=SpC z3Di^MSV7YcX)RAzq=lt3-V61m%;GVA105+~Ankj7zKe$0%&#?7PpT?wDnKk;w`#F4 z0CqF^>eOjS31(5JVr|f4pBb$huji_Zu@D9OL4d`)o|l;dNX6&@kxq~b_+_r1lyV6b z0+CmX`4t;PcFlCkxoTbWubr&BNe`1s#M~4$+mnQvQCIX;{3xpp8B$#>2Ezc0Tydp% z`XX4$bjaPc2}TIa`RZzM>NJ=+7I*hfawHCbq{N14OX=BGEt_4fu+1)-p1ay8iTMqz zDkchzL07skrMKkd_0@Tl6jN3zBaY`nN`KWUPHoJKmh6f8=_GD`>@a(kI?4spG2wWe zDKzI%(VD&xf}km+NLT6+?x7(>6x&psO3b`*Yx}-kD$N8|FgK;}*k(;Ogwmce7=Qt= zV+Jc3xGfGvI_xdm1cOm)*bB1i_LjJdbVaBzpg6fwZ=6G7Na$23KlcrC_->1R-HS5dg#VaH-Jgy2K4=3J6GrK^EFwxR%v%Ee;uiEJIfy zS<05Z)UZmz?B~{I)pw%sgkSO8qGOdjJ59~q#g?Cnd3vx+F=5rzrU}Um)1zt5Q>o;v zEDT9V!(~2Y001BWNkl2p5W4QnZZ0{`u4sRRX`0S*)zW{=x2%H=6N`ZEMMN)xe_4zAD{43pkAj#E(&dUW@ zH$M&rqsr%Q4cs5-Qud7ZZYD!%g9`A2^^QEcRFG7_5-Z=A+2ix)qQA3rZni!H4|P{u zgAbzFTD$c0f0oB0e=g|n;G$9FqMN<>fX1Mg7Y?YI4-Oah_%YhT=gw^ZjkRNW*@8D) z@^5sKOQkEd$Nw++Oy~~?5!k2{{3>VOsAHvS*ndBErR$^YgBa>Ch)PFx7WQod5fK@N z(K!ho+Kzpj+PJs=Cr>vQeXXbx5Kf5U{^(@uXdVA@wN7Bfp!`na@FAmDjd-d3nP{L%ZM>v1_M@Z1 z6L|Vnkb=HvyQF-UNVfJ(@`O zN5ge`qvLlrgK`m0vEM6g+p@QkNMFbHu*2b$rNjr6JrV#Kb$<0(SuX>xtTZptAL+}H zaGZYr!0vZwzv3SV#wM`sXRaxc=^e&aY!JWtiMCW$?@Jdti*j$cY~bktV?dn0+5A!d zT{Ro%Nh+V-d)J-DC+&UhzWx*A|rT#nR z)7QNWVHj#pI?$gCw1VQDx8uP>0E|jw@W~&j^*8&idrc!Biz-#+f6zFqr)%$R`+i|y zRGrvSTrV75+W7YB2}57KEw0A&lofxdK!bN+;B8PDvgwweTDxQ2i3VeV(cbdg>2eLe z<7d9Lc3;v;Mk9gYzT~}vRA!maEk%1$!TYjc8-SIM)u!*2ikN-h=IA>DiBxh(->x33 z!tp_bTY4}W@8oC|0N0xAB@>+L4eE8Iqxk7NkcxmAQ|tKRv5w30&)$XpIG8bCz+aqz z>qFP@p~P{(?`T^h+&)owKNO19NF-hM{w z6jK^H{I&?ahq?on$gX4g^v2pqDW6&BGz2*onc&Isu3ny01ZwO0VlKPxpLfe|Evnn{ zbC;X1<)_v_a6;>A1FJ1}y`!MsX6<0OPi$3!IxMg0EtTA9zxI~5gY>bn=+0DgEz*P{ z)sPKA$o7l1UJyw^PJ*Q(04S!Tl-zaOsauVUGxHl6)TG5gvnp5D^H&22YS%Ho4N>)% zo4yP(TeHg<;jF5vWTe=oj$4J}w|}Z#Z8^nksit|%0KzF&!!=^nhm)@?<+ZmyT>HU* zlZ>}HJ9??6m?lIJ!BNx*V7Pg-vLJ%nkok-gF0&#)#P$$7qEkEDPP=w44yrz8mni5F59YG@N~vZ04(hgjX=#&8cEQU>gzj2$~ zYHU=T75{9rTxCy6Se9HXUY3Ru=tavH0X->51<)w_UTHHkGyA5!+^jb{LWGu&HRRFA zM{S&)i3a>>BN+}vMX%9isBvk)@!I+!!tsq-ixj{Ojuky5P>dZKIWR&`k4YLIRgwdK{unmlcl zEPnI-(Q=Dx)l+`XNJZ30&PlKKgj~-R)tYp;*2*kp;N@+jj+Ck@jsc$vELv#zxoVNz zrVi=qo+GS)FhecVTc|9w&B*L#u~Nv(r8SaKRU3yH=2(pFl2gtj6Ze`}@)l4q-~j~8 zETcpqKoDXE1bJRYma2X!XWAA_2MZY#0|28~$Bw>Eg}RzUy#_FHP4vXu&gSrKt<{>~ zpzi2VWvr1iE25d7$^?aGv?5-^G82K-f+`f+ShLMQWwa6uu|j}Kt!2uqB)lTqR3CyR zTu(F`(`>tfr7x_e23N8OWO99hDjEv4l7-P`sLv0QA_J?1e7q(JRTDL(pylljrnuG*EP=Ev>QyqBz!oIzhP)K&msRg@IJZ1mdExVE9T z(=U;-b?YO}Fa6ZsyVXzYiZS<8?9ZQm{u%#sg=5vX@(g0em8T(~XVuJg{oQf<-_>p^j^3zly?({e5_{unTuocCJxiqcm|4Qrm3H4e`@Z|# zXcWxRm393u=DzZJ_6w~m(sF$dCYT6;2=#RL4o&n^ zJ#(i_(4bhzb!&4ft`vv9UfD8VALb%CETX-d(6E%}KdS$|PA@7``0#<=p9=m~{J>T( zePfxoY{UL-9|C{aw9}8jcKI9rXVy-h3O{@GZG*Rsl(#sW>AEcVmSOzb;604HrA&YK zWbw<*U%ztxB`? z6S%e`kraOF$J`Jy7QT( zlb86-UKaKG@|m+=P)Y2H?)Ye6Qc;dX_pKUYvt+ zdsuh5JXKGBt9<7+5=KwrX97mwHMAqOVWY*uTsWGvv)yoa$435**u~gYz{+=qb5G$P zK%sGLJ%Z4+;dc3&v{GEdWFG>e(XzaFm}6arRzbnSm(O>2Mh|btCvS%UEDv8fiSro{ zaMvdMnodcqHc%88+WrEK0l1GZ<6>lN?m z%k@hcD2$OoO;~5$%pz9+xbW|AlN43?zT~thEx0wDUPQhH0Gm_lok=xqLM5JPm`lEF zV_9kv4F{5y+3a|*84SYqz4E=?mz*#$@$yD)JtrlQZ{X!CX!lYU%bjMQFJW4K(^J%F zJTM6e5ZMiBuPwuDtH1#!LrSzPZq-|M?0U19*=Dq}XF8Vj{Vzox1UuvHg9{R@ddlGs@}8i>swG9o6j4=M0X}+q%1kI4D@?^Tyw}OOOsXl2dif z`ynS)66o3N2f}5A9gn^B8Ddgv!*Sjb3`C?5B6@ixq#6LQy56YPoQhp{9M!-WK7D%;vKz{wrqATVCZWOJ_}+0o}mCt(`^bPT>5R*6ZFBe5JA4zveeE z7%d;{Ti6!7>ZGF!g_dn~IE*&?HrL6fvx^fWGSL^0YOUHtudlx$+J(oKZMqIi_N8mv zX5F()&y)XnxJ!~P$9626Z)&eGOV@GcrchYPmsXBOcpb-?N*NT}*5f zz7H@8InFF`Ta=t#G~vRs{bt>5*`DiN&*lxH=B8BJWjm5B$7?;$*)#7xU49+;|T~hpRer#9Ur?{Hy?=upQ_rAUd85_362Ir0Lh| zuhi6(>{9fw7onZ8#{-9wfHySs#s%`XY2hT zClOWx$yi@lWF^|*-o6MD1_0c-K*GqZj9CM1)V8K&NamXc zf0`EU+kRK^Blp}oDj##Jbkq?`Gu1VD7B?txB+%1M@0?H$vI<9AIM?^;)t36_X3!b<@9>PvVT1YoeAM&3@k0m))v+51xFRYvC-|))k@DI-eU{$5Z9-#3-CZgOG!iv4o^_4TB-#4=^d%%hWFqp2~ z+uPXPL-s!9xs&3xs!&NKK|V`{&rByX-2oBkIVO_*Jn#+}>NUPrdv{2X5N$#ZwXYf7 zkU78ccOWJqgir-(LiGjt>@(VqLd(loS!qm7{X_o{_8(S82Of-%Ob`h{M1qWf7#jtH znOOiEE1ihz)C_cuW`6Da2|!l@_ut*_nTY3)Yp5kmae{XRH;;12yyRW9J!YX+%#$V1tM}POY2Y0;yd(3fWU27fdr9I zp|qvUC49-(h|tEg z{O!2df@jOszY@t_KbRmIRF!ce6_6x^qCg$Y09nv^G=L_vLiFGRm>4D{uJ}Qv;D8B& zFrZ*qyEfwj0M}Dk5Z-vt-#9M{f=;+)@LGx>A!vu}IUonxIx2rl7Z=DBz`HQ~-t=u- z$Hx>=dO7@Ber9&;*dp^R3yAH>oF06sxz=Vs-O9;Fu}yjDH$G{*3 z!7VMJwNg2A^tGJunF-5}8JAnPsix*On)N@q!npzxyCz~60{Hv^O&e~U`uNt$!+LNP#3BoW?fUEXo5*fPWI5F z`=allUKJt~#wHEH9|cA<`%{JeldK2=QX8evQUQRiQU1XLQV0UNO0Aw3&k^9Nl)HPc zuL=TUWk>(Y+*dN0i>*8^&Q&(loOG^3i4fIWKeqScNa{332eRhi`MiRRfAe-+E%ZHQ zZpzk2pj5hJ^0TAw^S1n0t(JW5>giL?pOi0JzMPtp|4$$j4ON3R+_yLWfReJt`YW3U znV_g5pzE6I6A0(m8vkGZoALZfT-J0P+@U>Ybc^m(VebSh1ce$0Cov#D>`i{4QcFBL zfBcN~XO&CsMp>KWSlGbXANZ~DDAoJ>Mw-zsni#szb#DXEFxS_L-yIxxyZQ)#Yh&t^ ztd)R^S@ZLirxNQ^>O9>y-hHR`9v+WN<9hTp_D(cLQvh_wA3SkIX-f*PZIo19xz?fT zR2Yf^T_;@;^dmgGy`Dtj$8NtSG);Io{Dws}ryWHhLlv6Ju~6xugK)jhPJQ+2jh!l} zd3M`3$jv2Ax@-5q10NM{?|EO6dn-$USH53-$^QJx^cBCpvBDc}(hQCWLaf)-MoR!( zn;Nsjyq?AM3z4CQ9(Ry97+If0Q3C?#(s6G$*hlqa;bIFl0qE$pF&Sa7scX7wILkwD z$D&;iivbT4MU+kjUtg-f!fX$!1EJ=veaT@E0Z||bU)s6KDc7q5Aa2D}!KyCa)aw%h zng&6zJ-jfDTnzxmyX75|C$#dSXX4d)XSq}lXt$3%nof%yqt4Zh@4mR(EL(kBs=>`8 z@A7?jMbuvqtJRm6w<{Nuv7i%CXATZuT@8NAU1~SHhW+@@ayNi7*-tAgHTZ5Z;o6!l zaVa?(dw)rUTssUV<4&c2m!DPy;$zM4bYH$Inq)ZlsH69pBLwn@Uy7|iqpku7y5fIL zHoqQdSIf9s27u8R4h$AOyNDuk8Jw7c&*%yALw(Mc8UhxW6U6W<1F6Pg0B{+Qq{|fA=0f{&kQLZisYRh zmupD?6!mh!`VVy31g|t|m%#vh7xk)}cS_CcpQamDs@oqP1YoMUoP8RW1x0a^DQ|eZ z{R`P)I3Ad5jh5Z4yS@uR0Vfr6lTy+^a9}!bDag`MWnm%!zS8RsjX_nxs9bope*Q8b zFjwYJG)|rYGxzp5yWYv65SVM(DgPg4r!Qx}=C8a#xGJD%Q1x)YNCq0= z$f_JrL_J91WbyP6JIK%s&Yf>dFL z+)KT6ZI>Db9dQPGK;)Tj(QGsYX!?2TD34qC#*2D zWecfXJH_&bc@pK5;brt$`zE~ygXu8nhEr&w8;NcJexa0m_B&Ls|Np$bXOyJJbtQNs zKAS$Xva-DEs;+j`7H!}?NEniUM1oc%MTydkMx?YHNtCD=Ni#BYMtd~7duFvWv!aF+ zNr_8u1d<>?5QZ>~wrE$~<-JSqGd~;g_D5D5Gynq98R7d?Cr_n`h!-zj+;`u7EvffL zqaV!g)Ho4r!K#q3Y_CwZ)n=0%#u?*K@CI(38yFb5_J!72_R`Q+54$?SJgl97O!l3|L6?K*3SijY^*KZ>p^eJQbXdoqAs7O59`-eYZ~ zwKJ95Xsl~>%~VwB#22|*0Zg)@US@zq0j%KES9ljg`1fh89h*hDHMH3PU?h+YP*pO< z;5QKwVB|FFcC8^dR8Y*04MNdi+VECz_JlX(l0(V^S^sX!Z#kkWPzAxY?KSetk|0QW zwTAR+PTW^1qFKZw3G#f`mDQSTQ6!d2n8||yx=Q8hJg?3B5-XFqu+bLXp))@w^+1B= z(sR$oUn{6{}Pdxj-PBHd8gEAoo(aVK$vA12nLm*wITtfaySp*#aJ~ z!^s6aP)_%Y$vO)+Knxiz-awBGYASkldS1yWEUozHsqDW&40A9G?$6w(j`Jl3+$Og& zygiS?(G`Ho0if=p-~d2x7@xWm0|qz&F#DQ;!J6vHeUGn1GFfn0?Tb&0?5a(+Ly+~{ zxPM_Co`T*sJhT_43JDyY#hJxT*ei3nXeh2DW&l7UtbA(Ud+ybK*S#%Bp;i{OJ92yI z98k0Y38#*V4VPo>Co*$l_I&uaXHFiyMwxGOPldORz58>GkMH~VuzhQzjAy^mIhc&dBNfwGoJ(8_U$C-iU2HDt+;m_?Ee23`NE8gmv&}XJjKjWugHCte# z2n3-(5eQgd1deTo1D$;afM#8sda<$4kOFWVv|L=g9l!R@@b8#g!dH5|G9Vg-t^;Vc zM>mdam8t@w&U1^= zE0I4vGxufd8ddHGc4>ES|F9h1ZO8YYm>=w3j0P0Vk>0%ag;Rw;t(;cF^uGH7pAHQN zdVACF+#d+2p=$;O-*=Y$CthH`m3gVEi2LqQf3IV>H`cNK&|x(Zhyctq(2^0Bgj(IT zc!|95VmkEIg)g1R{x?30Pv3aw!`h!~_mAOTWzvF>lzA?_w_b1cboYH!tft4R((5=e z-TYShKaEfP#9hCFzXd~yoA2g>BcairM}uZ303lr0ZMMkn^XVU_bH`tNN@mwzb?^ta zm>+u3_@l_aaCgu8-TS1bTwkDAuR{`uQfKC(Cl<>>xR8EBKXyw0-1_lslvpo@jd(N^ z=fARd*WKE`a`yyDdyBi%%$Aa$Kk=iVIG@QMttB<3OO9&EAiH`?K)E7Ut#y{zcJF6P zpS=COyP6MqzC7`D;~y6O=JeVZ>XUNwa5vP>e(H?$F~nq@W!BpA;ZMa6rWDicX?AWe zMwte|DsypB>y3B)s?rs}z8n++0L=#)UhVm{y9c~*AQ~9ysPACY1^BMW{BZ41)QN|J zMqhWw9o$ffWH$Ru^y_~Yn9PA0(2{m3Qe93&0(S+%+i)rv+`@O_ z-+Jcdmz}??U370qsqYUJy8MIkL%UwG^@?3-EX?G;IloHhE)p3!9=QP>VGyuXz~kp2 zBs3N8+K0Xb=Snau&99vc!m~xK^zofyw7*k^bZ`JWWb}5whg*WA_qZ{4Rw-LyeuJBO zk2j)$OVA7I#w4!*=%l~{e!mH&y~jPh{o=O+^S;OH7ZakPf&ih$+&~OE2igtg9@!ly zJ(BQiyVrgkS&$%uln>Rm^>|?b^Lj;no4mP@Si4LGj~f_D06<7bwaN=RV^CcYa5BtY zfKTN$?#zWCS+(Y6vEr{11W@qd8(@IztK~vCqB0^l)q1+-Ij>10w(3Cl&gysxhZq#%4XS}uT zXZf(m@IukeZP@PX1gwnlV7TA!Nwh~~iioONCEZ+W6c^<+jO8ZkbCqdvF^(xFv`TJE z)xZ9u1Zc8ViYkEmCYon&SV_+UU|E9*RKX;D^ymy zKL7wA07*naRP`r%Q5lg;g`~yR5?`9;iX^X7l(xe(L6k0(oMP7U901KKt<2V@^mQGK zt3Frd8~6ZIRQ6GjK&X_h^4c_ffS1&erjYgnS2sR-Lzj1 zHs%^>ku^vX(s|KqQ#f)tyw#b37^%{?WTnh~aZM|TTD4MJo`zG6s@6&*V(TVUuBvLN z#a60jsk}j&hC~VgYztN$Ac$3aIhpM%WjpdBe#u1fGg(MZ( zDnwXR2pqnlLeUlSltw{T+90T0UM=UC$SO>@N`6CnI)qubYV#{|fC5OTkuT@7*q8^I ziqfE3RF>RIu*iZHK!M<>)G#*>jS1<9)&?Y3=CjqwiOflT+FCAlGPa!29ntO8yYfx5 z(JYti`6XGas$c*yluBSW0F(j{RVv}QP&xChdNG;LmpD|0#adWfw-we1OUKi z6}Q?diL65}Q;Y%3k+o>!v~u2t?9w%x5BLZHaIbVFd;1>F@c#X{b6YFt#G@j7(<%?R zLzA^_-&I#jyV=UAuS7n7ws9d9Y5$1X zK8D-UzP?10e{FAg-+kHtgW@r36QpHa4^b=_UY8S3k%?@(}Hu;FWM6ZwUTt9RCYE`4S(jX7~uj04dVe~3t zzwOY95xjb`k*00@!tIT|6o6p5*!Gq2+UX>L&%A3m_;4^17htSavBHRwM=yC_$o%n{ zsjoW=jNwCpE&ncl(Bw*FEEni5zJV$WgQ~VDhRu{q$UTVi_du-st*! zZfS}4LQ!7z>xn=}zA{Z;NdMWXxi8ySo4+uP-ExQar^8zg$|yDY`042HEFN1HH4v*w zSfF48AAKP3xyY6z45%s?1813c9DAExJJHfN4|K9$erNFaL)-L`tsCz+Bvl3Eg9ERA3nNNBcfR?h z!spIi`o6n--AZu|T{qji)EndkBD5Yj*y_@#8-bzp?h>23-yp zdcynq0|S1she<17SRn%{jHm=RL*xx$rm0RQXWkt zJJnwEF5|d^hKJI{a@(=|k!_6YJ#F^}0^O}{&6l&fGMjxS^wlpr-%^;fJKq0EHY%_; z56-|Yb1YK<+};D7mueRZwG%DXFuh#q_~Ox@{mB1R`o+8|5CK#u6f+#jr4-Wh9@r-D z+bJ1??cr-DacLc3xMc(n?}NhNi{SUq-r2DnO`tLyIezo5(s&Pi(x1F|hdz_+K%+Nw z;+?ySv!B%S7U5_`!I|0=27%MXYn{&EBr$p19xXH2LDBH*Fs+t^@Sw-J0thV8_aA)PFlzE#YN4v`w~-0^&(NESTruIf-&N}(G_pe z7IVVSZsDOw$HVeqY&jpimzN!E@oP(n0JM|e0ddDROybX{X;|VbCSX7 z-1?IEnU(fIQbJ1jzFn`PoMD<=HI!3~aU$tdxo+PCz!QyX^P*k7S~%|sDY@AVciV0Vz~Xkho7@{QKW^$RRnjncOAS4#PLu-FuKRV!- zOvnKu=*l_=V|X3S@i!P510cy=Jo|lI_`%Z*&w(HXg!Ji6J|PnB8@~OQYQK8m(H?Po zb6t7-i_I_R{$ok5%C$HB&b}?wHB?NrE|SauGpwE4oCj_u&Y3SFKYq!4{v-frxX=5g zJEW#DqOH%I3_Uy98kScHpFU;$dGTaTco6V5$z*I`Z!@86=$qP6(d)CjEpKKT-UIhi zPYQssoJoBD8RmLWmBPb!$>ClAdbSw<_D^}!2IuUd+hl4Bz%;8Fed6T!Pv}1vP8NOl z%9mc2dS}?zy>|DGX>1Qzi378j46(r(zw$2(P&fiXB^HW?hKJpU?~uC2B!!9^A3zX!>;d3+U=NJCZ;@VVghQ6_I;oF#C%j_Ma zkxzI3VRCDiH_U!+2VlKgjsN6%-n3fao~L&yZ<)KS@X(gAhl;=Xp1a2Ary);xRwa-UsQr;!7jMDw&wGF=9Ujz z2e*c9WV(69R;ktq@|lIkmvcXun*Fi63SUavR4Uz^m5v}D+<{~W1YBIl-=Ey9?EmB~ z=!ybhv$>vQ$F}W|Wbljc?VBm?5TyXt$|K)?Y4=#3scib;?rCSIp9>>b@BijYyT`^A zoh|O^7}r9Nt*!j1vWh`=h~mEx*nT_uWgSnLb3bBp0F5E?0kJDEq|y*QuPk09o`|h3GfB`i48AKENuX&_`bDoI zw=75hopzW&Hi_@nXD3AE=ZvZ=btrPjgP}vl10f|?nh72~z4nUtmHbSBZ(;~2j^QDgCQ&3cZ%0abw>kcp=7=os- z*1-U36`&$l4?i>6BO_f(QjouT%XTn8)nIDZs!CnH##2j0-r1VWJkY%~8eMZb5^MSB zdKG{d2^4qslX^9`#sLm6lCM3qD@9y5A(OFv16{WzyX<(IV`_;jlyj1ZCfMOS84-lQ z>_u5A0*eLrYwpo!*BZRU_Vt8sH16fyZNj`lelPd7m2cY#5DXK##xB=aP-~>PtUt~K zgmi^3rF_%=Zf-zdKe83V2O&DMA;%>k-{O`QvN1pVqsBKDej3#)aJ1Y-c4^L#U4I-u z%vDNlsrML_5E{NGiqr8{^++&WHIuW{{&mL-H(m@8V}+48J75NamJ$xMou5~j!h#Up zJFvfNbBZ;F%bQntuC#p+q>u7kL=6lEqjxAFEpi_r&NQ)xaR|TRIv0xDlcaLUa#RTE z3F-K*f4PYmW4LJ$TRXr2U*hGtO;LMY$NLYqrqR5xw8N6R!5T4>lvxJL@}SRq3U8w~*BEqE<#N>staO-4XBJ&_g)uuY>4lG$ak7N4j*lNkZwvsI zigkSYft_g-!zFDvZ zZYkwiy%x2#6c71GmQ=E_x`Nde#)x#?fAk?a*bOj$J!^gIN6dDhDE@oiA+`-lK;}!$ zm(s5A=xR=osbHFb??_8^#OnogPJ6pNZ~&Y$*K;0wM$9b$@OF&Kcil;<3L%{*U!V&U z0Q|vz@!ofkvDxVuo|Htw^&76^`U+hu!WYu8BiY{8y-(~KnJNx{Z#rF{|GGDG)j={u zLpYH1ZpLPNJo3=YrjgIK;#vRUcZlsnS6m*1ge2GVUC)z5sCmZGwCaRWk`9-}7kIL0^ZY$p5CkHkB}g8J;8mKAR`Ks1fO7o;0tNH!uC8N7-Qhz zU?94Z1R-`g8DN;$w~q)UrBxQTpA|%J#r#@T)0tQ6n;VS%vC;Q{?BGn8u?i0_Sp-pR z^QHz!GNwv<@1hc4U}92KquzxzJY(zWs4vBDw{f)`j3&)E%5l5_;l8bGPl|B{+tdDWrA_35K@|3xa|cHA(tVJRqAg|-n zn!*HE*O9y_8*8IRzq)w)(9%>&@f3cvxh+54-jTCYeB}l|D}ouXP7E6O$K;MtYG*)J zH2#5)7n!GmJt{}Ws8i=?PwJ-R; z&le`oprRz254Xv;D+}5mQ+|C<=+-*ZB!W6p1lUpY5Aj!0UA3rjx#f_vpa3Gh`B!2^72<=HQCKZ<6 z(P>2k0D`4v=X91!BF3_#?e%1MGt5aQTdkwo&o0&~L0U?`3O4yC(u__mHuc6AIJ@r~PeyRp!#asi&-@!g|KUw3|M z?$j&cIvX`cW8r?@&JM=g@58Tax9rvLS63N?q~f{!&_;Ezqs3)Gwp?rQ4QVGPR`C7& zwJW9T@o2O+5@C_BwsXrzI@$-f>?$f+v)L>Hl8DywFQyAekNr%nEnf3e49!!wc@8$n-+sHkl zlLV_Q1$|2eV8pygUy}husICP4W>-A*5v4tV9c3tFM-8Pz*L1)a$Q0m9Xb~j3H|y4P z1&6v3F#r#ZB63Y~)O`L}_{kpz){2O1$F@%(7=THXJC@zmtoI~9j**#aJD&U5gnMOB z7ac1%9KrhzA*6!{lN-3W3IK+VJGUbm0EjK*_cRv!h9Go4b)dbL>E)K{Y~;JwE{^mE zNo6zp+Dhd<-q2f#xx>wlBYrn$KtMcU%+Kr1N}F>0IjwLuWvY^qc(-ofHBtD#dxF#u++7d@n@<;IS~42G+k8m=jEP1;lSO z_jHIL0dq$6RHz^&%btl(towBcrOg_=G5dDK<_byEZU)zx>ViONPOXE)F|iV5Hu-{> zlmQJy!tf)vgB2bQ8=Q5DuIz@N<1jcdl&CzvL4W$s*+H~l?!)p~$rL=HgOOKHdw%(|R zQTIa%Ybsp$wTkNcudUEJj~Y;8gxed5g5&v&Rd}7L>tH0a8K#3V$e|&B_o%C=j__+M z=j+dwCs&uBr^2-#W#~u>KP5e0x0|{3CCz<jrVJ+F!OCo8%vpCAq=@qt3FK z;sR=&xyZOOh%hmq&Bs3zQRab_r&FFNId?Kv$T&0GO<0IL^@(emw?H6Bd( zqrK!308+SY(R(~^tyV5@p>-R5zNcPrvu=J`%VKD3wCO$+R@I{5%ZehQr^}v^^W)LY z3qd%lhS5(UePvBF8v$2d0mNOmoX?l@c_>OyQ)cR}6Y2JYL2wpqp@7Y*UQWyFDX$V# ztveadjx;R_{CvpGtJcfzGC(Sk=BV*{w<>{xLj`9Xjqykt+t`7AFKcwj)oT9S%bN5x zZutFeQZoSf*@AuQ?8fuzi}uAP2tdFLx4+u_#Os;gt7ux6S1RoAd?mZUTqc5krQfZQ z@EwS<7M<5Qhvc%bm7499q|Z1bB|;ozGi)%%!I=p^2oPK#=Ro0LfW{DCL5OXlE((Y4 zIWbguhSg_?2g#|BBDgPEVZpZ?AtZ==0sG8_YX`MCt+3I8#atViIwTM?A)QUE+Oxgo zy5qtRQgfGI_u|YkWZm=UecP&$4r`lRwBl3?f-|NoJis+F8JNv{Pbkb{@inQFrIOE~ zc&h0M1r7_$2c+F_bk|PQ$<;DBE5qPwe4B_Xl+cI>q-&th355SsAISVlW zJm`lHWVqoEPS-{sTVaxXgOA@oIKMg~Dms=6J5QY&+bc+Alke!CDsA-(CNkCGXHV=u z;BpOfcXv>mniK34DZ~HLxYZx?;;wtF7b|6G0d z_W1q$N>^|H^5!d8cxfH3kJX>h^7ks|d)dYB)M@BW-L&;X zpA#P)`Baa;qcj)z$FCN@+4#eWvoHAB*HYKjP*S8Kan2GgQT4o&5wh_H@qVlgzjANv z_sx+osa7^pn@$K#nf~Cm_5Jc!zp;39MmDalR6)>hK{PHy{faJ!;VY%H(G9jFnv z7OG5iNaBn44e&=|$xf{|aJO;X+HBjqJ%O=yFu)Z!wuXuW1`I}Vpo2iU>@%USe#!YR z^J{_9-hqu@8tUEdcZB!HW}--2aEh4vTW7v_?VvURmV^$@z+TT$Fos*Us`qSH6$ZyM ze{}Me!D1-H3)`cw?A&fowZoI{<7ec#H3*KeUOalxH1sG`03lL8;BQS)5TH3;{zrAu z2N~dx`Xjv}%v^t6seD{hwEpCZ5100NlJt+EiiFO87VfMGw z*&=f_4o7wK@R%l}2h-hgrh^0QPN(;g+9(IJB>ngBsh6}I7~LZ~-mci(^F+E_y_jve z37&^)dt6d1TUYrMbi29ESL=~RfK;X(TRrxMM8Fh5x@aM2gS%VkyKI7;4){6fyo-{B;#(qn}Dix&-q31)|f9%FPABt zuqUdo%rYsK*!*&Rqw(76A+#j=>N(VNMQloh0pLtYwD0kTQ+;vKBc&`XD@%=;Qe#mF;w0W6*J?I}KkzE$k^^C`iO;PnX z?fl7@lT1iM1sK@|xg4$Bpm$lS+Y@ThE;U8gZ%$lTuvhb0_xDFLr2qgR07*naRMn~7 z?g(oS4^TMjsqyuiWm#waq7TAlFEfxMC%g49%v z6zTcZa?Y<42q=4^jAi7&yx@g~t9KBKxZ!{>_3M^x-Lm{PD{v%stG_j{S}v#M8K-pR z?&W!vdKKAarg}Z8a9LFhB3aH_l{A?q>mCFMwne2JASBIgRGxQdB3*U0oplDnA>J;3 z4%bitz+ARk&fAcCyUh_OzOBub?FG?5(esN~LIFXhob%^u-bERmJU_!GTJo!)TJlmc zawQr5&oIBtoV6azg`n`7tN47CUu4{AW<(t&Iim$jG0kwRqQIpruCG(sSG6Eq3GNc( zPSXnHLqf{s<|}SBLOxRzQ_uSF(_nzlP*dS?04UWkR|g|GXVe%E3mv04l?qD z6_y+2s8Qz?#qs5QJa0izHRxJB3353+-<)2I$2b`3aov@XRWI5^5I~-)ZKz8?0n4z0 z?>Bg4uGp-M~D^Kb`xB+1iF*y9J3rtM0!3eJ#9J zCx+aCwpX@|H6~MVMDY8kZ|hnMM|f#Rcvm!5M51Uq8vG)?```C;s|G`oA?NB%t!mwpk$7 zT3KIH6qB=7uFUcs3FnPZogS|L--+AC)TElQqx%>6n}z4nG_voz$L>yU9*6vTokb&C zivQh-C!cr!sB+q}9dfBb*NjwQ_|Of(n?^n(J6mgJ5-)SY?gW@;4~aNc@RFO=K<=S$B#<$o@Jyg`D9HR)AFjZ9;=-^KsK zz~HVxNA?%*bd#}w-k)k5;%BN5Qm%e8d#BbKRA4zB`J2<M7@%eC*cU{C5wh zevx&T@4vaWbMQKWc#tGP0^kiR_0^ZoKPG>B{n&Mby6ryR+jVH?@COvG12nh#lqp4P;XvWLmEK)yA3M^C?ttf4OOs!VeEz8)|J3{4 z>dE@A9KoI*For@MUw8@2)lCa*b!qL1;uE(Z83GX-Uq3i?YG^C@A%5-`hF4ZbWlhIy zcGvNjckCo-@QaTO&gQp^QUGhE(Wj2?-RCluO+C^-Y3)Qd!T|<$JGDO`MmRB#iSH{j zr>pB7-#UJ1tgIMf{nqv~9lM;x1e#v_JI8Ms&YMA&JJ@z|$1ZoWLm|dZ5je8!M;ZXU z^@MeHK=mb`+o{Fqu^gub&CN9dbPv45^-T_7%n2P z32XSJhFxJzSDkhTbsYfe6V=f2)F8_dA$KE|QeB3QW;<-xl8yrb^e1tj2?9vO&Q109 zbH=E!#mYW1Dr!2U#PJy@00A~|&#ujL_|yW5HVBx>K$T#CC$V0ZHLAe|F7Gjm?r&cTI@oadu z1H4`rAJ)}zh~0RkV-z=QDlbe0UYS{(7C)#jwSp$kuPiP+S$%x%*%vgM>gvi_nprq! zZ3;K~@=8V0Wnnu{zBO767(;4Anvt?Xf(*B6RY;L`ce2@=1i*X|onBL$7QmeLczv(~ z3}8I6l#Qk9VDKV=T7QZ-2T^!AZ_WG9)pFHR0jDp_tZIc8q3rt8fY{_(f85y?!H5$M zni)wBfxyr|$nI%NbW=c8F>IqL8dux!a$eio>qUbAREuQ1NRQ15GZ;$Z-={hHOZ zZPpM}W7xWt-4kg~kS<+iaYcEow&eJ7@sjx3>Oyxgs|2E>+Y|fMT#h&E(KZl4dc-t1 z0zggSwf$|eUj8u|j?8767re)Ft1BJ6d_&K|4rAVLi)0J2h7T}dYSp1md0p2!LAKlU zU4ET;G;5f8Mb^7{&@-Y57D-qJx|7EJ1oHi6zIw{DFT=b(Q5_9p@0b|`5Xag8X;>*1x@BKnjul;kv)!!O@Uwq-T9m zA`0-0Z3r54$c~#zC^T}nr`KlGQhJps3B1F(GC4W@Fmju7KCeuvh$jO}$HoU`utr7W?fK3Lwa;9)~klu zevTfM$q)J(8diMv0 zZw-G?XOWesf{oI#MfNOKi|_#mVXs_x9OFNJ9(ZAswEQYb(trNR%aQ7l!Hx};iY>iw zVyd!z8*bhQ#+dCW#ix|@4FG(22>0Fu#+c`+kNr%YUjiU^jIjPYzyV3>_>}kmHGVWd z@q(Xwqo2na6o8-0bcb?Vy9&c(Qo`hB8>(PHcLyFBRQ8hE>NeA&fm7=*P2)!nVW1lT z-^i)oev;V^6wV*Mm$iifFwPXt`KE$72D|b84s{5sY=lnd<1aMVbJAU3#~0TLs3%r` z`q5j={YD4hzZdu32+o0?s}({WNj#F=L)a}v?D3zR^ zzB)C{c=Jm8qfHuT#)>|*(pD_1O2xhZcC<$rW6W{XmyYv735+SX9%S7KFfh&(MNw3( zWrYe?7<-fZcQDxAbHh8TzkI`8o$?NAO?{%;SjsMD>a)1sn+svDoPQh_e*8Re6ktR_ z@V^N3->P);fEOH^SIjjAMwt|!*vbbUQ98%mBe{9?*`rfWtgohTJh@}9KFn3A?ps#k z8w^vZM)-?EO6UEwZ&VrON=U`vLpWAq4FSfmRlznD09?WehBCl_0frux7;%xTb}Ya}Kap&jWA&9 z6lMxw3=eGIIItzn8QDI*QNsDT)=UdX;;j_L??WEtV z40ccmzzi$=J)87aXAc)HrMjS}l;V4~%*<|qqw=$>2Tq;s=}UW2UipRo*_8om>R?bx zd@t+T&AS+(yfQG)#~X`l$>&atY%h@p_onvxsL3{OChVZt^F9&en6;RDPI=Z>aw^na z)blTiw5SZfa>)FoqV<#jh^B5$w~@!e$cRflLI9JF(lOb6Z*$P7`kh*Nar^v>!PP<+ zFRdkIv&A+sPzghlc5H56q!5Xq8D#Ta2|b%&61BCZEqXm3G980Wbwx{aN%9$6EsjM? z?H%wnHr*4>Ewq!%F`vheFK!lyzVXwMykXC~KC3@6@T*((TUjqlmr!ef1ndl^*H8+e zJcI1fW)V)415h+6QuY+DNKkV>3zb&?=YI1W>s*<~5 z#7Tr-b<|xus7M+6!($!6G1kwz5V_HPL?7<6%v8=%1i)BzYfojk699Z4^J~?-a!ED< zD>>uI%y%wjAG2HihhP|O?d_x6_b9veDqU?yB7p$_O*?;K=8Lt)M!nwho|w8IGb=5W z17qzN;f!w`8M(Fd(Rh11H*zV{*Ej$q+tAsu`JSa^*bacuTG9Mr`EO4Y|LR(#<+a;X z4aK${uy=NkseFj4Y-!xT&^Xbouiy=>_lVa1(a6pKSAzZZ-JNysb;oD zao;ZJDnOXeqF8OEp|P`X^TpL7(#6fs-`nyy}wAgYJ4&;?HggFm{i z#4-v4XJ)wB*4+#QRJCUymhH(bt0mD;XucCwV-t^Mbx7jtB^?_^6#k%M?Kg_GE(pff zRlQa++dy4h98$>YhNoa%>Qia6L~eq~gPm}@VQVOBSK&>aZ?-V?X|sdW)yuI{4OE-$ z>MF^s%<`OrwH8#-j&M6d1T{mY8NW6lRuceN+|oN%hgBEE1Vx1tXa!SoU&Nu=OaN$* z^xm>Bu9oKU%zO=4|7XrUXIdB`C8$7^E^pexr7Foc|9V2BDl>Z7B(czF%32}3=J4FbdPzSVSsMh&rDAb z(}P)>0UN|%jOE=jHnL>xC8_o;t12t^B_cBR_3rmO^CPmPDyeJ?Hu*C$;>L}8&pqGy z&UqK0S;N9L033_kAAGyaqyg^CEqTvBNkPD&u>HZe`$PR(^{5$04p;`|W~JTot-4d9sY=+b_*YidF9ZNQpwc~*)8R^^S!4%7>AFGs`mi@P$wDFDubuy%a`hU3 zVB55F=uNC?U0@>GUcl_OY`@uPSxT3A)T&Y2)SDbDqz9+=YjTgM0&vaz)#9VeCt$A|AuQ<6N(B| zK?7R8nC+vUo!qsi26LF#6RQ`Ozr9*{vVJA~5!cb610T4;cHs@*hO^ED6sp~MKAX`RPCD;UPVwQHNZJTXHU4#mF2u^RT zofBVnF2BNR4l5WiwxqM?Je(_l8Dl9N*AUaeKu+R(0g{o8;@E_eHo)L!LtZJsW+V(8 z8B@CU367>Nijcxm0rRSD#?G}ms5M9CPVe-CkV>?(<@uqDEt^3s@H#m##2Jc3JV=k) zHIiBZ3FaXVYoREI(gE2u+lpP#!u?e(6sR#R$Y={KEHI>?369(=_r-+HeaQ`?Ds{NT zMhPyMfgtN$NX%bQ<^T*L{CobprZ~&s%l5{^-~0UCIDCbc>}kGm0-@>2q)u z1PTD(RO{Dzq$h|F8*hdCEP$o06)$8<9oglTf3Y?9$DLXEuUuSr|AzbT9e@8P==~$V z+|Q$xtI=;fQuwO%zg|CgI;j4WpN)kvt|1J>`sw}m_Iyx`nFnV|cT9swasA;Juj>s9 zKx;I;xqp0%P9BeSmCmC1YVwi!uUu??&b%%+OMX7M9yqs0v(03bpFa9fa^QXb7Rw-FgWaa}cC5E}a?O9v-G zq&VL2chBiv@||UMX0^|}Q2uo5LN^N!WR6U~=aaz)Cw_4_*j8T*J^IDkmpi|6?ZOGa z^qOE8KkyU(q4~3iKfKL)z18ApK2LvF_;2SHAF-Eu2l0!?dw*5k7LsZwA2svo3D&S9;vGkP<>}-|04;p}FWRq3|5Q5IQE`kKU0jPp#1e_VKeD!O*#VQ|^2g0lX7e?h0+B)0){IK68A# zb!{Z$hXB$*5BVd590ic4&Ue&x53B$W2165moH|}z?fjiKS6W=3SvfmBVFV#%_AQfZ zg~`5VLV+OQPT6}f$P!?||9f?Ajw~nvLLR^noZMHQ$!cA?|Ad$LSE$X|4}yjVUq*=$ z*d5<5w*(s8v0Jf4s6Lp~wQ+O9X|M~R39~@!HF%^-(xl=A;j*jNI{^H!u&hvJS%boj zu?^`()OM7crqfa?%OHgtL-}S9;Yt!s2Q?kO2Lf6hd$VE_V0u_~u+q8}nH!*9hw1@9 zv-!$Mq(7qfiflxL(@=}mPMsHh^R+949W?6R zqF>dP+7xpujdHPCvAy7jYWTD*T($rpWAMRTb6#Cm>w|$wAo3l#kXuE$1OTBOWKL|= zp6#~diF)AjT8>Vhy?#cV36^i)6zUCA)W~uq912J4wq>`j1P!ZLuNF2dev1L2pf4c? zNEbk=g+i{Fh&Vy}AcqM+y>8Z4uObMbsx&j)C6chhp6`GNQs!6JT4!q;%NwV-Yc|ql zEum5L7lPHmb%TxF!g2sqbETlNX*w1H_Li)*6ZQ%HdHs$%F+QBo)sTm!LJk}209c#$ zYtvmoJ)pus6q=%`Uc01pv`%ufQn^~WE>7nuR+g%5fq2>9q;8ykrT9P{-RS4FWc1PSCmSr zRc?F!ZNkHsR^3~!w+B|2l+B>5)aukIM55juk&sU06oTu@g3d(cA=E`9eF@=ad)+Mg zYlSOI)q-hX_oO-_)ToGiZOwz-geSKwtc0u;*I{;q(u5V4WrtE(5g(8yWP=nXMnZw% zp&_tw1?)qKAl`uJ?|KVEts&Y1u^*T$GBCh0sQL9qrO@i!8hK8D)z;P$SgWI=f`Fz2 zPeKY1(C&m=6+?q`ynvkQ8fz+Qkt%Z}X$5csDePKKTDqur6iTwpY)QTjjRb zHhb5!nt%jZPNOEc$yTRj_01_czZM85q$m_>`mqQC08O+uXx&7hK{Pqk6@IF_uI>hz zj%wsHEq1K1+g#fSYB9g|dca zKRBrV#{)gbO9@5k4lp_#1Yp@R+9!wDRRBPeAyuQx6aib1Ol-{5Lo-F)lXw38YGSSd zLTy*-hee3-3_);n@+GEj|?%Uaz9cCZF6Ic0(S@?wUUVP+bgyJ&3eh!i$ zfldH^O>&7STgW7rw+i#PM!$aS(EHT?tiR)6`hA)j7DR#xXNp*C-V`H@;)}fa+2++g zdp!<@mU2@2b3zNiXf0>0r6e=dn3p<`Q$k*I|F(-~Uh^vXUCzF5msJ(rp@W4S9itvMh$4^HW^8i~DgSnqLDm9gu`yM;f_^ZZmUb^^g?-t?7VMYIc zdSAEK=+y>-)c%}MefU9RF7sbbul%Wbl>tLV3J_s+=h5h=W(M!ndh>6)+ZyP-F{^zw z>@rlW_5P0+AN@!7H>xL1p&L3y6;1e!%uM*>_oV)f7;N2ppn7QLHPl{-fPH4z?!cE{ zy#6Kc*Op$Kl`Q~5gpS?uiSgkBdyiIQ310|>h?wPS;hELqm!*{5_^p-ssqaYF0(3!1 zq!h!D0*x)dEsAM(9FP9?$nYK+l}(&|DgGO4CpM)CDH@Wk8xc$-D4akd6ayk~(P~JO zE6lg+s*})ToQi}6CEyFEdFNsN55wczWi&92=DAU_6e2{o*P_D}2qW-9^^1c}i=^*C zLa^2|^wDs3AMPu_Si#lLz}q4ob08YCgF$^FHTp}+Xat7~sGsDON1Ah4w=~o<{7dR! z5AMlBbMdkoWh8|AN4E^c=mtU&TPkC=TdALWIR3}aeg1o`Pt{M}9%N|<7y`h}i9)=% zd{6bl@F?7*cIIu{3k#FdQuy-5q3bVAP61)_3f~Yb5=cY)NU$rz;bgC0K6w5A zh`(e*W=Z|s_Uk6RG>B)l(!WA&?)rYARld+HE4Mz_R)|ZtZPDG5bU3KR-rr0x-IAurLL(xr>SvJhYj#1^&0^rx}Q@sEHAOJ~3K~zY$x=@EA!B9Iw zi8=rr^6N`=R(%$A(JsacLU=(?tiyEfH2Sw8t;T#KWdUF&rxFhAt!t9=J15-YYb)+@ z<7#vE>ow|ol;nVQg)UvqZEEe?HKv&*ck1Y%0W|)lH_&&uRx#I=0(w(+A_*c=ywH5P z?K_v8n!mCxUOWvM0N_BcE)K1?D}~$QEpHk}U~a>*oh$GgZKbxduv)9uxMALu`U8hs zHLI)^jN59rhJMB-1FCR+`1&<(9YAz}6>R$tBco^=hStckN>RE9;F@Ah_Ye#z5Y6i(4u0 z*6=XvFuOLH|HKwsx-Ar2T}^)?EH2P;!we}bJV#fHh$(JwWId}oB20lyZ4@J(N3j$V zQy>w5%CU>q_LiU4Kouo!8`nyHUGGBLG)EOtvLcU5C+^N_N~@)nCLtm`7%2=aBUwjB z;^xa{+c>|lW$zNvkiMmn709|%@0g8>X$33@y9ba813<^cr5rp70w%M_L~l+M0CUyK z8N(eLeh`!&Uvf7*cnWGxAw25Ykc`r@XEf}cR!oz<$>`yR)!y{mn=65^ti7GM;r7Im zhfK4RQ<{Yn81wp8}y%vu{S5=lhowG*O0|yP=>1fWDOonrT zH*}~B?%4Jbgu67bE0otsrHH?l$XUoUbG;J3?Bo&@O2vG&RXy4eUD(uuR<4o*VAHAp zShIPTmaPhSX?nJ*PcNPa=}9zNvWy$?jfa^ipgZ0_s)-}9%I{mxCggEsThKRx4> zj3-wtTKOi<5R)RM#4G3DjR{3XB&sFVMCi6=q{RvzeF6aMYUN!I$dP_*p%=Gse9=%S z2!$1)bkoa=%XIea4W`{L+It6qWGMCu z;L&oK#1CLGU~vV1xWWPenaoQ*F?}C6?)Q6iUly)^)u+10DK0Bq*%s0=O45lPSQdug zKC*9R;>h}{uG;>cD;H8bE{K6K?07en5Loj1SLE?^9vc8yA3K~_lIB7mB#|nk2iMiq zHPC|JjCD?o={;`_4}1vsH85axw_+gW2GIA$-};UC9uHwMb@Phv`P_==kx*3EZ3uw} zw&6yizKuCvrKYYMroL{G}OdJq8KP7x`)q0NM_!E&_&N2x*MBq6uYB=gy&x0nu`N>J)c< z^Tj)&(XhYKl5L@N=8`L3?diD_na3}4;1`Qa^@eQKVXE^N<+qD_`?FK=qx#)5g(R;@ z4V%8IV|NyWwz;aDKf@P%*%Fb?LqehG{SuuORL)v;YFCl~1W|On)`j%i9oe~-1OQ)! zN$hibGPb!R!vqn?p$nVgg53>5ucS7D9uNZ*O|_Mb3Bc>Tx%V*nODDoluRb%^`lhw|FOzVrm-!!0wld&IkX`Ug3rsu*LCKF+B)^ z@MX`%C9U28!S3s+?-~UGLg9F%YbvHU&DiPU*){8FyMU|n&aye@*8ueP(OY)Jk8&@8 zjC!0ZMx`%a${UFoMZ^6ma|jzPNFT))WxY*ZL945U)?e4Y+go46s)#mwU#C96<2}BS zePNCO2vOfYWTj&_aw~x#h`vzf42m>#^;K7kB{TVh zljg6F4mb$xdia@zcK1%b><*Y;g=f8bhoa~>a8!^07^@4iuy&h-<Xy`#qgE>^(f` z+!Y{Lc;0v>_rzTNJI?wKxJl8_(CCr(IQNe{*yl}I4dwiE&WZMy*48fgbpUs3*@vPN zDp72tvps1?!;Q`TqjN|}mWj1c=5o%ct1;tf560y1w2WA`f4V+32tldQZAmYhTnWKz zVd*@SR&0j?1~YexDi_Bhi3da|8oghF%YN{%H5c};$Be#X=CM>_96|ua4%S)#LshUn zjj##=B0%8ZItcSQU|$AOG8~B$^SGAVf*8Je4-^3ga!st1w_@(t3^V}-8Xf-Tg{>F& zkKynX0A!;C+~;S8IR?N5Kdt1tb}6ftaGw3uc`j zSw0kN2|?xU$($H`zL8H-E#xA#WZ#SZ0H;Lw!c6%xSI5s(jHU;mH5^&$8$7dF+912T zcHW1nDSv0?Vk7TeJZ(NdJ5gx|ble?`L5oE#TD_GqKG~MFDKYbJ#Yi0cTBvxSZ@AY-{PiT5MUQ0<&y(r{s=G4mEoZyN>R<->jsDQ$ z!2uSexNq{Lf*@YU2HjSb2^kTepOnsxyMZ9PSaZ<1&b zONPt08KDZ&lY`rW2VXxjqddU2dbzBfFV-Z!1^OX@Gz0-vCk+~b0-wC#)DljBF@FuX z_Rl0hDNr?1p%dVHX7^ol4rr4zH}IJ%@&`Zq9sV zE-H0n<^ef4We-gtSa9tx$blnJ6i2%gmr~gDVdil8I%EaC6#y(1@5+>HjEe2|i&XcS zdJgmduX}wsD2~zbU4F)}Gb99~<3dU>pae+Sh~G$7_AOH2Kr&9{x88Q3 zAIGO)Xkf;Z4Sa723{3an*d(F`m~qO+x0fLqLos}0jM9;=x3l60(=xe}v&5*7`LMi@ zC-)VnBIXXfXR*QrfZoO<2jrv}9kAfPAk=(W9sJI6cE^g)+1j2AwD3s}46uj0mU`bQ z_iH4^XMD3SH|s5?OO@!l2ZBgPWJJH{>zBC*U;>dhg|{CI?@3+eCB3(qTVD&6g^N9Y zrWfI!Kvq2W)8e}(f&qm8lmC-bGQ+@S&i$CCpoYM|yLafW{!h@IL!8jU!OH0J{~14J zfz7p$SJMF~;UGHI>29Iyyy27#5g=KF=79lcy*N_5GC3TTD$N~Dc|*D)5G$LbC-c;d z0UT^L&p+klR~UQx)Q|0q9&AEk#0;~P3L242wJ-a(=S9u5oJRhkROh}?5Ma9a=2^@$ ze1V3I^%fZDF~r9XAHHAv_sSc#;ciiA^oF%w(TDA0=!pP8)56sPf&grzQbYxCY!qK~ zn|`y93Slay@5c5fQZ=l8&9CMgD=}R^98bR)(;Z|RSbsFAtTZlX0#o%8n$;fx5GZ0} zPu5BqVIw^w?;5&li{6zfoT!XOgTG8`or1`Jf*dYEBVz1=3wy;m&$i+dyoF1pB}qk`Dj$vR-a9M z^~v*3dcRjVU19H^naZ^T`+nZ}H*de=sP|KvCg&eZJ#y;F=dDjy&f2$|jtT{De1r18 z4NuI3Gr0#3c!@9=iOpu@Mb9k6d_hZlV?B5HdPv49?Y{XkF{C0kkL@!1QUF5va?hWh z{MzHrCu=YJaRb2A41MBQ=0h}8KeD4fI)OkFmYcr3l+Zj9q58!3%C=EJ!dii6S+=n* zo#<*Y`lZ#+pDq2RITzX&|Ik~E-;N$KlBvS>K30@$;%K5Wh*ki%?pWW=9UYaL3NUJo zpcxX{>lAsn?BzD*`dDC+L`=aJ#Oq(Xhn%q8J-75ELV+was6}8 zHh!;p_WO0KMn&jTJx52>n4%&S-O4A;PVgtCi{EiJUONMiWw$vyh6h9HG+d>ziYuE- zEjbVS2UTK<5gpsm30xzU{K#`nh&KgmIe{L09SJ8xBxI5$DS;Mi}h1&dld}8kE|{v{_OPM zJ=yu~o2Q^r72~NbP2D>tF_{4Y4I9r~h3x^r?qTd20s*F%K6UlZJ&qnid3Vpn!RgFu zf6^AlKVF#`t+k`I>U8w{%(nJo3Z4u-e)(vo97~`z9Jz2{n=wC_9#NB>h%2kz` zl@B)_RhFAq7xy5SO&e}fyLjJ}wKOu~#RVu4#+p%C56qsnAKO(DA>Rp8qn>@s#REHn zUI1mIYn8hi}Yz06CNa7_S#P=kmnMnxzQ)eTP=rGRYT4CK-_SqO@aQgQ7X>NW^i zk73r{%I0T0EWR=hOpz8>vZUy#usaY+8jTp$qOB@gf|1;SBLJWwvFsvX$N(}aNq}lp zxxmF*Fh3^xdP~D9g_8&aUWLs?zc@olznqp(3|3;W>)e`?CbOl(V&sT@5yX_r?pR&d z;xR89ZoA6_B>~SyYtG-?20N%H7_34h5Cmw=1*J)uO9G%?Q%x@_imxywOr=M`SXg6* zbj8a;0yTK8@;siMUjx?u1%OhpCu|wFn@ZO8WZF>4sp>6FFyF4LqbZRz5^9eM)we~f z?R8{HzHDR7o?==_w~0g$xCvc>S<>4Y-I}U|K-{1NDI8XPTVHQ9G*)~q%0>b}%_`T< z&B>LFAJR(Oc82u?4Ak9L`@$&%J~Z7Q&v>lc98kVqD&dSrz+n$jw)c%z2sRaGz}kct3- z7^K8VFn|V{&048r`9EOMRT=44kfi{EskL>>6;CF8Wr#um90XO~a*tw`t>PStb1T5g zEo{#Or{dwTOn_iFMbl}zvUy_+8w5^s={%M&3(R(R13G#m${4FLNu6eMSzJ|^WNm^A zJ-voOe#wCq4(5Q9A!bpY^zoQHOI&QM3R!(hkT@MWPJ!Ct-H zu9n*7ts!d%*l2C>`1jg?4F=doxwDlhwq;bsRu!=7q1kcfJ5nPn*7Ai`EZLimuUF;` zw-E}FrPjTq5-N?bC#lkK8g(@)Y_I7I2)i6Km^_tI9J)s)G{g`Jc`!X6MpYF>a(mlW zmaSc)Q`6Vo1_7$zwg{NG8g}ZzCITBR5_wYUj>Z8%3fuzLs^sXywO#H&hwjv?J#N#k zS?$I4!l~-2wLS?cNXT}ge9>I!5+m>CZ9lHsT){6Lr#(YGq-h|PAT_T*4ilogD|&yY z+capM?PE^>2yd^4Mp_}uKlsRMG-m=--kZ4mV4tE86C9zm&I|=jT`W}eKYo_l9zqI! z;U4Y%GSicJqxn-s&q6XJqw2iO=8r=B zm-K^go&Hp4Y)U+ki^PN&?!mzU2tvR(lSiSmwKDktGxASy?uo{gY)~Ier9Y$$g>YvP znt)HaB8$nu=ki_7)Yx2a}oWXdI0uKy>@m;T1vMQ{g=%ve`e0g zAEi&GM$ng4qxt|?4_er)SRLAc_u4EoKJv!VpZ-n#1B1Vwp`qfr_#XAb>Ps=&$Z-O9{*Me6k7IiyO-4i+{LKYEHeoe|qHjo$mdv zYsQ~19-Zm(u!g>UGL)|Zfai4){G5z#+NzkXUx>U~ynPo5MBrp8=f zbv@)W1DN${zgc}|^ZRQ^C?ay#eZSTG<#)a5i2E}ng7beL|Ln;xKHd8L`f2xeU#e<& z>zlMsWu`}D*l&kAmj-oD5FxRn7Rt5(_ARY`u}?Y*2+_$#bhrsECbe+wT7O_^mFaZx z{i8$Eet+yx;%XQr8+HlT{v5SDd<6hY(YTgz%OL=I+DYy#k)}gLn@btDGLRbhd3B%% zcjuu85ZEfx4Fz`(BXI+vsDfE;)}CrvbKQPRbhViLvvYs@z1F8{H?fEA7{-SVBh>A* zT*ry)U|=wX4<1I;07INwzPoj0XcS&TJNw3|($YBFioBBBzkGUPLiHoc#fK*I>l578 zg2m$Y3oq{2p|UP!-#ofnp5}%T-zOmO3e+?U0&v0-i%Jl(3Jh{nN!~|R((rtpY4-fNSm+313dx-K$b)A^QYsi_Y66! z2d{lCvMK|WC7W!vWZTsMxmAVt3h}A--4lL_fjPbUqt)hdjb@T#34Kx>Hxgq$#aGc@ zmAL>uf-ZH7t+j$#YXE>1;f*kHkD_Ozl_0FO+jeo&a>IebK;7=t3LAl|K{ARaU+~c} zWW{o(QcBc;LWs1S%?>wdzFtu;FDb5D*etKNBTWt=1E>m?^9U(mpx#Dr0t^Ha%?g6R z&@(;pv1B~Zqw!{ZuH55DhZLddO$}>{TgLQli7p<@lW00%iE10Q2D?$HW<8ZhBn}tw zCA#1+-$b#@wUxlqnF&lvwU1gUfLOZawGGxh09U>0)wth%&2Ovh zh+CvqiL22v%rXFS4MiHHssN-ZdIE7=AAn#zDW1Mk*{+(-=U_Q#Xs zahdU5Y_7_+&Xsm^MgAbFQQIkOmR{sblcyAHbFPcUmGY+F30{FG`d$-jO%qu9{s-yQ z`RZKd8Kpt}J)ul;(9nhL%{Pm((*#JVM%2v~h@|VTnnh_<04OzuR;^7ZsJZ6s`D^v_ z?n*Ux9p=p~_`WRd&?8}10#Dhj@g=X$R(mRAcg*z$TF~v%LXj2Ui-u%YS3(jpA{!Qj z0kGY%IBwB_&`~)Z+H9CPdETyDx^NK8c4}GpTCQJ62Sid;oMZ&I!IuaCs^oU3EDJ03 zd~G&%robzj5@}n3h+Wm9#$ecpI>Gw&1#>RH?luBQSsh$xi61cD=t%cmWvxhM1ZE<< zI-p01NofV7BnV)iG}GCyWxF-Yf?vwT)tT$f;ABGXe zOs_V?VIpJ;My1shXp$3FT-}ihi0g%-G;3So=O_qNfa|4-^sA~mPONjyg_LH;=94Y+(A zUC$U@MN|XWaVw%yb(*~9nf^wO7Ur%ulz@P-6k?&RHDD>XHSp}1$Rxpls$gj=QE;tY z^5VfJ{HCm(Tej8-u1XuNikVh6IncRwemQCi#Wh^B)zo6^n;Pq=$J)*6*n5w#TAHM7fk?|AQ6{)yrnlTLpsq!0D=JRlSe zw{Q`Fs*Puh@Fh3^2ap61NCD9;*g3C*tAFGdmYQeA*ik?n-Bk(=R6z)Ay?Ji5D>DyC zKctAfKG=@!UMEGer1q6jcO&+ibirK*2_@kq4y*~?XNI-f-;W@mI@^Bwm|L;rqI!PLpC{O9Zc>CDpKcxyyLQ%PqQig)ms@!J!F2ROzZ znmyI?iPe)!K^sgK!~OoZiGT=%3L@eUMYjD)Y@Z?!+gC8M4FG;S+&DAp+M>Hl`=jQ? zzi{SmM+DLk4hdC6Acb$k@-6x5FWt6-e*JLoJCPMqw6BiHe4GF^Z724vks2^lXJNou zNxnM#*81#)f!OHB^}b0QDgDT=Dh-KI$LpPCuR_%UQ`fS2EpP(e1(uKqYz`4<8MNHI@7KH~)C( zi8D$mC?#Ka>hK%gDOJ$mp3dKnJ#$hm5a?cS_(!YFW#D_(HCgzw_Y75Mtz!6T%iKiA zxf#7y@W_OgxHE2q$C3>*(O6dnltBOhAOJ~3K~#%>dD-Pk#VujY@;YuI#=ZapwE%4o zzND$FwjaU>kX8fHZe11J6*xZMMkf?_92^|ldI;C+C^xqBvvv<-4*@`}gC}P}1jk3Y z4WQDTyMiY=6Nx=T)6vvOsAn=1jsu}av$+)}4CGr|W0o#oLf#xiFT?5><|f*!PSprH z2$gpTe;e)A$tj~Y+o+jcc?`jRC|(f>1t71XyXBBnMQwkNF-4(pB+lbvtpnMW_e>ye zfB?($3x#@W0Ol&pYls?Rqyr#uR3{hVfIu+%Ej8u=9B@!rl(H)j8#MJ{zuPmdtw>1< z05!07Zwr1CLoCV6$Gbfl1{U1LW6pZF5;UFC^4vGu-@_E1xU%EFe?cp698zl#22oe&ZExu&ByQUqvIp79ULc!o_wscsTKiP@NJ*LEU|V? zu9ewPAfy*cmlY@pN79^`D1ud`IoThCv|AFNWXH8V$77aQuf(7AQcX7@BURz&r_%sb zmEz}?g`zO1Gn{^v+9DXH?MU17rO(ps;tspj^8Bp%`TXKD0DP^w(Vz3|#t(t-WWZCC zBO~`ElE&abSaA%|oHtQ5ttJ5YmgqM^fdVGGX6&)kzpU>CPz~%yt>xwoE+tD39WMY{ zubzKm&kp5vMkWeXV=Z+pRsx6#MStsAV6SzZAwXa~XsUxQfNuB+eZ&awLr9}Tp-!gV ziRVFp55zSL#k$Zf1U8zt>=i7#AU5WL3vR5nv2!gwZYcxfIxkdRIOQ1XCivo>0z-Gq^+HJGuI(54-9KqfZC||@= zA=wK+Rq&%_b0Suhr__~aXoUmCE=y@97(X6MW+qd$8lBAr|9unQ zCcu!w31f8v=9U~Y1VI-#I;b4BMBD^iE=ayO1s{0S!jns2;J^Sra0nq4%y{BDzIqjs zG1H5W9Nq#Ry|juip5GE+VF0K%78-_@-`?}qkw6$9*7U(wN*}&aGHePI=+(8rt5DTU zXfI;n&;7X}E{v+vA6Eu@aioscSzLQOSn3NFh5?9}s~%huh69Go4~S}*!%Feq(SbLG zBgtOPIx0?C2p9r5oJ79?0_q-4)ZzKaJqddmgO#qJplHRs@&vmA#L7TJ>nnjE&9HZF z5|#>rvc0GcuYw>QU7VjnQwKqvtR0!E9)ZT5YPCiKH{8V|e^2C|#fA-lSbDYmiAV4P zzQuU-_M9UE2?z)RF+)n`SAZje^nr=H8XtW3-aX3Ckf+Xm$tXSb)iw7SC-45y)Foyt zt>e$YpaxET=cc)A_xnwp{q8OAzLEU8)f)ksG~P6=yqR^9!oD&RY{t5GQ^->H6Xi9< ztB#P`BYJH0z@kw746Wb<5kbacO8;AAIQ2@i1|T66p(r9C5SAJ}-)SY+Emaig-EYLy z2mzv4)xP*`VOlH{^{w~2=>)n)^f!1+iV&nILJ>j|B)@#o*7Nvme#`b5SbO!Q7J|BB z22z4q-gGa*;okAF*A0)xckB;q)uLE@3haS20Eh&b*yxgqwUv9{qJl~nhN2hpD=}Sa*FADWB@Du)(F)ofN z$F_^NY3eit0V_T#1O^O&Nex?~QVaq!D~jk|W&&X>g$F00Dv*qCUdFc;f7nFvr3(lc zBXNB6DAExCxRl4=oQ5aS8}fesp80_|0GcoD{Ps)JGZi+-xofCejgzNQ$M1QpFulQ0 zG5=n5ai<1CPYL@Uu4=707FgNcyQxQ>G;`exafH+F!VZlU3I2|_{w-SN09awhC;*zO zi0!KY*wr%i^l^7G&IW_eQtpdlQ3`*TQv4n9x*?gY3-L8k|7*VP3pu71eoq{m>GS%U+?(XU2CitR;%CIT$PtzNHPfH{pgK@fToT4jjd!ol0|{B7+%3LjcflaJht= zfd+mD`KSGc-Cm7xa~<_-(H>uqsfh0k5O1{-+}T9+QY7IUaR87$S|uR^0su3NW`q^d z+?|R}=&Gi-W24mred!UuC$>9Q520Pp`TR1@&k=5&1Ro*s@_B;~}JjX}4e=m6k0jQIt9QJPRVK2z(m zle~^`a+W_+z5E&kA&m^)_y5!Op3!n$*PZ8opPMR&SM{o14!}cxNCcQODTxZCWCaJ= zZpo6>mfN<*V|(oBw5Hq3AA0rlS~Kn$_q4nuOSUDovSf>FiIPZ>6iEak5qJ;rdWr`ouBVP z+leSSJZl}>JsLF*!_gaye0FK2pqxhi|8G{L9>Ak_>c0{ki?PO?P_h;uB9XgeM4L?q z143(dlg}*w=xqCsYNs0TbyT)sK#y})|nJL+t4*;E!RAv7- zh{$o%-+FodtM>oAa^ZrkM2aX26>$P7h z9!mR$1_nxHx!$>EyA8`szp%J;()-WFxu2r-BvSY7|FHGGhYlZf-z5~e{6ggEt1n;Z zeztkF*BVunU?y`Q8ZkaNJoXzhDH_+q6Lme_0pMGDYk7b@QQ4ca?-+?jRmJgAFD_M1 ziaE>lz!Ln7x&BRS`HfF^dWL>|*Wgi^Bq@~2z_dS-PChQ;Mq#x0O7q91+L^)?@kDj+ zs2Wk@PGm=&6z(lQryGeTpHRXBnCwE4<@C3n=|8EIjhPe#f$(z#imm=Ib2f>wf&L->+7?{5|DW#2^ktFPw_rH{ z5Di6VhvN}~KxLdFZt9)ZbhJZSp9G9TT~Ku3oFmaLdl(*W={bH?by1aRM5R9&9FPSgDnND+j}cQ%>m3_ z(9Q2+Q@=T)X97Yw-L=j#6W5NEiwAc{Lex}}ozft3KCA}Ke;?fqKw$EtNZbx0I8Ah( zfmvXs&^s1*?P-5)006};E4u>KCFq_t>}?G81w3pqs2U2d4yL3+iYud?ma1MQy+sU3 z15s=8undqYHR_UD2OveP>O~U@bwN^+`363h8VD*ohiTvFh=HkeQ#&g)R|(!cvoLdY zdk))k3&6syv5EAcFgQpA*AkX*Nq%d#E5UwYLZy@b^&!Fz6uB&}Y>e!u#BbogkvF zRetGv%GMSD@AwgSatMOpxV28Z<+%t`#8aswPqo<;fBJFMQ&p1rtf zYf7I33E%JLa%c0v_R>^C-=hel8@5$ci6G60yD`L$THckC)0x01`(3Mcsl;ydfMo!X z%-1|U3PlnN>f1Mk1q~~m8Nnnqr;%~2csa2Hpp%iU9!7y?Scl)!=0UNzOjnxpz#aH5Fqf zJzIO_G;ImcM~!2*izxxo^~2BC=U%2&0FTIBzj$sQR_T*>9(qFim-^cdrr)c?B6Fz! zmG=*G{w49lPS+Q$4h z&A4*ck+EML%bLTJ^{wiQ&F*p_0Km?Vb$B-$C{{K4t!wJdwU z$tBFKgMonv9zTqb0cM<8!?#|=8#;44MjtzP_*bWHw|-+sa;9{7`>v>!iU#%UNa8`^ zX#FPGTpne!zjW+d>zVAquE1ls+Rb597pm+xIUNo48(95Ddn?$<1;L~Q{KTG`qWb_k zxwyHIiVgm{k)AQ{T6;NkwWa!g!Z;Kh++A8M?si+lXT6+|g#rO<^-rX)*bq<`)n#L%GOWmtP0X@JMw$hCq8)m9`B>7h8y3Ff9b?CKkokf^4ZRby-qRu<#Ua{Y|Qz@cgEuXDS6kB5)7p6 z*i;k5PBfq-G(`nm*I99%eo1_)@N)ePBakDL^r?rEpAchuDAI0BbP5qyQx@+Z9K1tn zx`bgM5(WX1(QJENsz^7Gt0caB{o5y6|FM3-BaVkKr9uxGsoO?Aaya=;j8~2wu1^jD zKD;s_K`6JB=Ty@g`ohbv{)7L?^_SN8r_JvK!b9HlP%NZR!q>V*tmZ2%Wf|6+Zgd9P zBtk;Lp~sw04UJE72$J9gz~lw=wmIa~Bk)n|=0mTtg}Z009l}IfB6` zz*w!|hx70ybQK>urc9 zxv7Ucpf?zo>D697)eiuBoG@@?ZD0|5kS0K)&8J;Ea3-gMg99XoYPb$O(yOt zY!2itcmUD}j37oJU5XF2W`?~mfEBIzKa!iX?7CdFIhf8QSd6D6ty;*P_ z@)_PWMU<~qZPJ{mSx|tNw~h(sy1@ghVSW+ zqG?d2QH39dWXWE$YD-UcMHh{YsHMOY7MU(fb_uqJS`C&42AnR&Vqk{PD4Ou3<=3i> zh2%1ASenRf%j_t-!W7lz;sO~)U(izV-YgXs#}Dgd?u(n%9_%VJB~#7!w`UDUc#dQg1ncATc}+d`_M+Kx8rQ2{jNN`+M@KA1!k=@1_Y1*A_+lh)j}yL1^#{fUyFZxBhgy`1T+ zZEeLj$%)rnW_h#S(B7oLQxpV)PRMI%L~gC*ahV0&a6kz%5g@Y}Ne~1do>}P@*BZVp z!G3wT)9!zf%YLKP4!{F7^PyD`yG@-MLI}W@N?EgHd?snQkWN?Gu&p-xPKS%R=903i zL&&WTZ>8Lr-aH&mbb~?)=}FJCU!SE9AO=lQtA4AjnEk?d-NdT^y6)(9@k*>dMI|v7 zLev9+NqD~VCfcGfyBn24wW0byi)e3|dCcdlK=qat_7?IO+#(u+VU%eJTOPk*^VZ2* z-yxR=!9dt4hgQh2ZZ5xUhzanz`Y%JCLUap1$MM&9l%gt6{ zjayFd@Ff>_a(k*x*GY+D-6vHSA_!eV@e#BTUxYybP-0XG05l(~8wisxE4I^R_yEXp zHY??F-SwmgtBYzCs(@tFT3BklnGuw)V39yT-Rc)ldWU$2L4f~;?9E62Ly~CJp*R50 zYQbShhLqSS`JS~7KoJx%Cg8UaBEW&C!yH9N2=;Ziptwxj32!ZRD*(_9A2ijr7u6I+ z`qb=NP3oe`B>vZrY@Z~nZpMllF$fXaBq-ViQD00+obsb(cwDSGITg4MPg}DnSY`h}`%cTk3#0P_Smd zzNWUof)*bez3lFBauHNa{QXIkS`dWC58=*f5TR}1^CxkwM5L%{IIb!Gd+Pr8jQ^=I zx)b;15%Dk{!|^Nxf#0A|d}G_~LJ=#ipGVsR>4FKKi^ae93zzG!j>wJ%LU2btJXs-O zNYALxk4SfSeDq^9<1HS%a>-v|1wqAlNZAuhrEu3UGy&=1)f^U^a9X(W*XXQ3s>r+@ z6OTio*MFiEXx!kXFLc&p-L*_?@Hh4J6z&M)(Tu3mL zt_}XhrG>BCYa^5N2M;DbAx3owumB4Nq^1guK-50CqxisK7PoAN(0U>M*B8G0T>F-J z@nfUGKRNI_#}dEUIhZ|pH9Egc%uYJ7{l0s>P~c6udG?Dhzxr+ecQ<}UZvKmndMS9< zJJdfPp4uTpZx~o0b7{D{knA-Z`v=GV@+%WTI!gW0sMpYI2M2N=*)g`qCn?jXAllUycN`q}H_|I~N9^4p{NoZJ|kKv==k>_DFo}ceSA`?%jrU6{}x@bRi7P zd>rvzulJ~W9cqPe_b@U+$E#Q8zZn0o&$Umb&}%070xY2F5CR$nlWz+TzMbwUW26lN z6!Za^yA#+q(C@DbfVgAl^40Ilo4I-R+b7q)Vt;D!%sJE%RzL&>Oz$Vy{|1yk-`r=I z9vDyvzjh3F-x4T5g!dl6+x9^aEEiuri|cs+xN`>{KL|y@_3@9d;`}-Q93IE79McS~ zH}Vr_^*6jd84ksge)Gu6e~h2#GIuU#-R%e%O5Bbe%Y`%o$i6mMUygcU5q2YYZcxAl z;H)LP*9X8v0WW^X);1BG_*;xfVw zHkDNxU@Hh9ce>`73#doXvQcTH;evqW0u&zvxDuHtQV|B+ve~#%I<=LIz!pQl`@CD>O3?+1|MV(qR(R!#wWQZo2(7IsA3JT2R+Ud*tOu2b3Ph8%I}(kv_L}N~!nS>Y60630U8xh*WiFfeP z&}P+I@=i30rE*iduozIXIx@vpV=LqV4BeHc19?lO#Wn3>quMlufAeKVq-2JU*|Sqq z8Fz+BmKOADm23I#MYs0zw~nR6=7LX2ZJ?POL4a5=6T%SyUC*g5*I7s~ zX>COb!4AC$F@S=EyA3A{NRSHC2i-i`1U00C{rkGGg*6X;gI71I%{&Js7+`X$hO|RQ zXo4aNvZfteYG{_bs`*7-i%dCF!9WTmfJy`Bi~SOOIt)#Ce%Z2YMz0I%mKybX+x4V} zbPzL{URowr%ELxm4*-DG;rs>|z+_5IMfY(cZj1DCt=ctDI0bLD0PU7Q0RWbRbBiFr zlL+aU9qZrp^Gp3g98v#6Mc|bMSD^+GM&f=VdJXwJ0ucpbwY@{=k~!26i)tgU*z7s= zYqh%Y0aDto2uF2*g-18qyC|YU1lwvsHJ6kwli$42Xs8YVVRe;|qXQ69t(T6P;Sj3? z@`QO&EfC0sXXHD(*&{%q)-M*#h0u47JThKBG<%~Nj=5$wzIfLjZ&ED#Pn-TFhK$qr zVf8&hN&&nnPqn-Y@@79#wn8(n-1+gqyKk!=i*2>e51;?;;%8oXU#XVSeD)cUYr^utg2N}~=x?*`Vhn(iv<@9wJ*dT*$y^!!KO5Uiev5Ct2SNm<_r1IEdmni4 zFg{K`&3`@g=@-9QwdUOFEj>?q9gzLnKW{eCygX<`4(ozKvw1y}17UD|gEj#o^Vojx z*M13tgylrP{!;L~CrA)5F@cZojoiaA@>KKEl&l7u2NI=s@0pzS1@rD7oee#A9bk8O z(0%_qWYB=*(8)PJETm0?^Nwe=D%#(FRYgapK6cg8cES;J$A2r`#rrxQt7qGZeAq=il;_{ zp@0E#vvsV9@QwpdR6q5^BM0~+?BU{<1D`(qrD}WLt^ee11QFiCtY=1HS>f`YfSOd3 zRwTPZng^zCFk}ZI_^mGh03ZNKL_t&nV2G$2Ik+i?C$RfNP;{`*8(;As)-jyc)J)pG zi_UgvNdmy&5&OOFTIbY@i!a;G#)BN+=O+Y!UCo|0-D`!-3$s0eY-l#GXIDXg0}wU| zsrzvBPx~Npx;caeU@VB+l6_jn*(%l;9UE7!A?YEJ>*=Y@E0eN16xsP}VmyrF6;w`Q zQDJvi}B|G-R5J^I!8%ek$~PN{lg6Q?#Az}PK;0$(@- zS0WX}C+@+}O#|W2okG_~RK>^d##9Obw(9uo2{dfz3O;scdr12ZZ2=%353LM-!2h5^ zG`7$B%Ea?OP;-7Or?hbO$#$IpJ=SoR#nJG+yc z1^_YM(C^&p%?yqq`um-CjQBAIPV4LcA@Cy`G6mz`nU7BU0{|{-gylI%m~IKfi&yQDE1M#pXF@fa-JY6~ zrsgy{>bI9~3pWTT-X^yu4tsSCZ98%H`pzj=sHpB8STjbviUCjJ)G~Ti%R(ET^Z~!o z!4I!4toeVZ1q0zl^ zfom(XcFnN?h}!#8wSobLvEAO8GXdCPt$aMQy>1Y&j7ds5i zdFOHCAf~0OtS;++UtXxP3qZ29y7Gh0w{tH%XV`Fz>J^^9cD*fbiAv*f^*s~!jR)_r zhm#9=`&8$f8yj<8J&~s2y>=884b*L-Rg3$ETD)s0Hp4>UkVNM60ukVPveNWrfB|OY zSCO|v4J{#v!l{;$G4+TUT=J480ceCo^`6}TG^W(6E22lFUM+Mz`I_9i=PgJKSHkst z?=_<`kTo1{>>gtRF_KHU#7Y@}oru(TkCGs|i8AlS)#3*Kqf@yiYNBIIY;V0Sl86N( z)qUeqR{=ye%lvBR>2hhcQ^Dygm7-d?S+Me@xw8Dd_BYml^aH&OTQAS^l^gRNyw%8! zAf_hX=09@ZTao!Q&#o8ouKbeWB?zYWa{K&zL^Zg z9#sO7@I#Ew1}f(eYI`6I-VZ$i0KpNk0#dtKW}zr*{` z;CelAwetP;>gjR~Ke~pX+7A@A4+f+JILq3-a>$4e@q5P>sCFI|zLv-3%{~J3owE=E z1f(M&Ne}zk80!E`!9Nt6#K@GS-WqzGQ#uqmOy3P|bRpf2Y|r=H5l|g3yi9W%M8q*x z7MvzxAOwaQVnhINU9WvP){`w(Cc57XE+-HI;Cj|?Hg*w161@`4oj1w=T;EZD{vt~( zO2;yM*KmsVWm{<_huT^HgjsN{rEy;pD}&Lv|3G+hLKd6t(#CS5!fTA14n&PEo?Ojs z%>SdfBA(bA&xZcD?9pSf>FAf27ykiI7LEEN5j+-V;Yk3BCkHk;(g}3!?0i+&%qm^~ zfLvCSvKmIdHSvSR?A~S4$b2HnGvmm|Q0)Y6tYp%zqLX`@k9ZUt18Cd$(kd3KH_Lg{ z?_WQc+jtJ2#glkwE^vJKf6Y!$d;0|l9!L(@_Lx}l;V~0%#6}tbq2+^pl9F$Zu>cB1 z?#3nn=1R%UNdMv8AmVPpS$ftz8RfPPq-dsu^fCZ;HFs-9$^Z!5EAV-Uy^_Oe_JGdb zT=Adpiwu(+3|VTr-_IaWsy~y0B^S#c7>r@WhbjJg?shX9WEulntGN7acr|zg4>*6e zHyh*3>{xs7?JJ7`_}KsaV&-HX66TKR=1gMQ(f|k=-gWPwF(}bAo$WdA(x9{ykQDoJ zv+4RlK-$W+wfKK0)r7}@$Fi_?8f&NLfVqEa&7=ajJ-YX3>IwH)^tp50S4(F&IEQ-B z;9#omh-IJ2U7qq*)6SrgA3hkkP17{#URkoAd=|dX06T{3XM0fhS{-9y zTcBPv_k7=lM;*dyrYE0p_UB}J9e}h0?)r@12+>`(9FkUyFmQm*wz%xxJj42Bzk0Ux z(q{g<3D6-wJ;PdWmDvE8+)~`HOxU|05`zgGYNAH8@Q+{@GKthfh)lf3Y6p1$z=Dzv z;=Q!V!HSQbtwV34cphBWYa8B5w&y)$A71t1Ymk@ydd$1D1B36t$fMZN!H`Wv*z)@u zcBh9)yMN%3U>mOI_+CGnlP7J@b$y?~*fO!T+^dhvkKM63-ebbFChWzTlt&uORKcP2 z33n3;FpGP6@Ckp1Q9048n}5_h^2_dB z0@NYrFP&$e7i$DO=KuT*#e1g)e`oSfr!x=XIK>Bi6?M%>q;`@YxZ3T0#{2HP^OCn3 zKH3_Nz;HaQna(nsucsWIRNUs<_V}Nq$48x6RLfgx`Eu=h^HaIbmA(6#6M9e|*h8=G zy78p3;rnDRhyAXiSxA%s23U4qy?Qj(h(|Otsb1bQ%4>u0(VAbhuH|9r2nW@N_9l`# z5qB0g%uB227%+6)zZbDv0n@gNe|QyF3IH&m(;j^`p1ybJx3lSed-t^NkB)|8!`M3l zLDlAE?bOrql;fG1;KYYoZ%+))aI3qFm!6`h+fH>Lk^G>Vis48Os6%Zc83h5pM6QmO zg7!AnzTGXMoewe~6q%SZ)qw0wq;BjznA;4I&pS`7$FJ5^EgK#G4eyRn@XjJPu9PR6 z&B;MU367*5(AArW8ym18rCZv5KKX-}^hOua8QlFo?9VV{sc<6x%yUMm4YvjJI^HUx z2nO7NY_~&9)Z8_;+|HU!)o3|mb4AtdcgzAY7@=??^g*@Fm0fGkb)R1=KDD*jcz1dK zAuXdCGBDN1Yo-r2^U*I|EPbwhUH&XFEA|Cw%LnMeE#d{JKuxm~qA z9?AdGcxJ{WaCWH_shD8cA#Ho#kguu4oSs{Yp3QB$UKgI%(a*lB{(1gvjob$w7Joi5 zbx=lMU;WWAGJ^o5BJz7Oomdb+xMmJ5l&JRx-zu-a9Q~tf7oPJ9Z@k2G9Q$;HLIIlD z0ZjuliWPaSai!~Q!ukKw?F`4p{rx*)@xVUFpuNpkm&--v0=FeFO!{9XADq=vw?1MU zhU_}0G!(Wq zz-a^N>bc+#o^hXt+i6$v7Q$$n(HC2JCsQOx-uBVo*FvKs9tRrqfRIF z`kvB!7(fspKv!^V1W^OHyuYr2LWAA->ApK z41v}pED?vLBNfFHN0Q<2IEQ0xE7G>`VlM!5tV- zcW3a(u02TZ@?uo8+K%-tb!px3C>eN!Gk5yK0%VhaQZ2Q}0Wc&($GnsPc_dG(r7GE) zf{~E2pJOUSCM91Ox$&%CU?C40>Tk7YgRHTm{!rQej{bV|0{}-wrzibnguA`wwwCJd z-e=E<6afm0`&*eoHwYjE{pZfj71>nV)j+1nj$)Mo1SsOQJ!ZS(%NF@vKS%kAGqtkI z_G{BSs>jln%%qBdn()FQH>MbVQTWAl#jal2Dxb`hb~ zX26%I+0yeFK5HA&QO#}?-EnG7>s>PfkC5|m-2z(}X3w+A9Ulx7JzRCbHj+WShLlqT zRHZLLQg6Oxst%uY=E)Ybi^CHdh1IdhNMxXmm%`^|`7ihw}|w}$g1T0Z%$7;-_EJdPiNODE>3nfQclToQsaI3jWYV?gDMP|=+@}1nvlrJLvC@S}&V1lI6*>2}f zi?ww?!v81a6YDp6^jmAsyDH&y&E;sPJG`)lV!zL{sI(rpz8n?p(PNI;bg$EE7)eDgN}06m;-Eu*!J(k+6#Hg9Y;<`q{3DJpb9 z3WQu&upt13&t86HecS)O*E_B^`wZ)jEYvqws0vT@OS`xcY{g`af(auem~+J|%B4$S z@bHK`I|IW2b3w|Avj%2`S?LC1=Ago0pi!0!B1fnYK~qTwQHij86#xf<&W`sb74!r}z%QWTD=kR5gE8Rav6#p(#B8a9Zv|gr2cpw0S z>*dwfnTzg?;qvq}4O(Wgxr&v`S56l5wZUsUbs86%@1;sxkp=*6B)#nj`+|d18!V7f z6V5W#qyF`2kqlMFB>V_$#^yEIJqscTRc7z>yby$1sBMVt1bV#{yN;L%Vz;x_EWFHD zAZsB2BHO6Mmq83E{K`%?Q_TUNNU#!x)1kt1-s%X~##(!hl9oo@fyNNj_nOc=q_+?e z0Fd{vVnF)1k>|~&N^{(Mqun_JITO0o%OD*KrJfshQ-xsx7HmeYTnjg902C20v=192 z8Ug@R_QC`hijs_W72AfVZr3fdcA2*k8WTC17CTfJ1fi-5!GYUF-Bu9M;1kGWuR-}W zv;|>645}0pAojV<<&{20HF=N+HBzDhSMOFj&SeG^o=AJqFbpXXq^8+@J^BHFbou6X zrbZvS=XcH3=u$}#KnV`KOFo|AH~{5M3fZ6b=dnG;pH7b*YTv7UbVxlwptdZXbG~F2 zWbNW$BmK5O`slscQpm`ka6VV(T<>+V_e81kUkY2Rnfvzt(eP+$_IO#^tEb0KFUEI1 zy0mZ74Y;~2vGWaOr9+;sprzVXxTO1$BSj_b4y~Jszgm0cc~1%jA3Uz_PAh_Bp<#dh zWmF}Ez+KVcXuAJfPQuTGsxL?_sif3@|c)y(YI@PI*XBJVjAT;P9XuVR5i%u6(qP>a5&%if- znkqaPaAB|nNy&MoaUt7-&i6|WsL;PV^*$EmHq zY|p_|n(u&(OFf(rNSZBAwZ81?q(k1nZ}!-Vp&ncD6# z09w17{pz_>Px0?=y_jQ1Q!%U|2!zu3;6t&0u1$q{^Ukz8LuY;$NNF z`s?;p`R2P3xZ}=0ZvTr9J#e@CTZ+P$zZL)dsi&Sd|84b*^-p~NFzKJpeDMCMKh=hl zxO)rc99F&v_MilL*C)L6v>FgZfa7u3yXbCzKmXNSd7*q-{}Xpl++$;?mE2Jd_RtWj zi`OWop2mU-4%T`CTXyiu3~A&Bt$d;*m&j$8h%;U2TE^ z&A^@G{Yjic8|QQIeQZ35^`~KRk4s@yLyfB`NP;302g*j=ff}>h;l}k$FmO*Kem@%y86aZ5ke!`tLd>R_=zOd)Qlen?xD{GhkrcurV zhCtGYA{d6=tNK)6`um6Q!P`QH9)kuT%<6}{9cd265`O#e`e);pTxK~x^xn1EQ5gZS zCEDLsRvaOt2dn1Pwh0e_4l#tV0^zR3bJs%^_FjvA0GwQ`b14lbQf1_LUP*KTkdVLZ zP5yHGfB;$K{at)+L2Upy?q=1WB_GDvpt3^=LZfb_i{)yYszo%+u2@6mver>rh*@35 zUv5dP7Nw3_9qVm(J=zIp{ZL?4AJRvfGfrvvGUCZWUxduIU#OBD+^7$@h{B{AI%VV< z@I=rT0bgZAx6QVB!_(VZN%a~rP7(m*D^5?e+pr*FNHPd0*Rbe=fVKle$AAg|wI&uf z`?I;Kf`K>yR9cu@?&B8}!u}xuXj|B*gW+~+?$W~631=?4vqn3)5lU$sBMlo3G^zk# z6S^vV0#tMjbbWXZEE6G@hXlf{QhX7Xhnj_I1NACp>yFYDYTOBV^ID6FC0EXqs}6~v8`3$cXc}}GqdK7- z0DyqkV?Dc$sa6`~`RLYR3i!A3TBQSP6a14rqT6vM?hP^eZPm9$kM`Az?EbhKSdCH_ zUE989w$;I?@S&Jay)ofjF=GeADq?8AhSOOroZEltG^;W=V2H<*F_W*^$1IcTuxGXx+t}BWi z-_ih(UlBQv9HV0-xTGUW%yOgCl6nJxa6P5j_S@l~zHvO+DK;)uS3~nnW1Jh>;x=!t z7TK$L9juYHeyz5n0v&S?jAOg$9<<*WVIsg)(cqp`mSO=jPv9(=a zD=c;)!*#1bNhnbOHSP>Mbx9J1QkynS#R6d7sFhHA=HH$) z*EhM?0U$J44~6q=3Xl!gZI*PD0WhmSBR7u?;3E%*J{1_J**&Fq-2sINs_!Z1FVlbF zR&M8qXX11)RbGq1`@gn*{qyx=iRrd!yzdAr3Z%r7b9iYP3>+NBuO91L ziadKAKe!4B%%t#}cOue5qpjjw7vVETqWG=5F%SlT`E7jZ6}XInAU=Lmc(hQ&XI@6v z?;*D-z!S;a_k7^rSpV$6?~eM9a#CEZV66=R2_1K5VJKk6l^U)$!9a*{Ulsuk5Lh*F zsn$n1GeZ)Z%UJm9?nbz?kYjX%16Ti0Xw5OIKU(;#UDk# z{v~6*h}eG2e55~S{W^yeN$7Gn08^)LxI>I<-kK1QfUt?b>hb9=%`H z4UQ~qgg<+=b2-(!sOXUm4w(#C#pKstvHxB3{F|sOM9SfVzm4Dj?Y$2h|5HE>t~?$6 z+;>hqE&r%^s=}TS2oh8x1aE@(9G@+}!?$=t6XEb}^l$f#J|Gk9Db2ZYuNG+TOKf~> zW@6SC%&8w=h|DhmaI&ew6ZiT7gP4$ z;)=iV)W+vFw!c?+IrVJNsSi@4skbDc9^2>kWjXU5=P_6_M!1V989(t;1c!9#^mwxxgoJm`)73-d06RbTjj8$R<*{RY2L_RIt+ z2w+z=&yLHc0fIKx4D8DhG5bpA!kAwP0#JwAvBO(IMFEgt{a?2qnDUZ6&BRa5%?-uA zV`A%wvLUjOOqg6=p=Qg-1k`kS*iTC<7ya&5N4MAYDsMH>?fT7hgCAV8K^ zO({IURiqzCupfV^6)biZw2;UhDL=Z~lkWdZ+k1w|b)9E|?>RTrt(-dNMt1`Zpb-dw zV1k%QOH?u~t!yi6*7nHu>^$prni+d$cgMTy^?070$1~%RWm}eQ$+9HNl5Ck0sXz%N z0gxbaXrR&P+||{U)4g@$Ip6-M0tp6DvUlhHtmo*Vif`i)2TZVRdRi%X@3@+~NkU2Xa#b zCu!(4Wk3rn?SVCxl$?QT(ko1+0Vt{(pU-hs1yQTrE={I7y1`hbYJ2Ky@cpJMUs(2= zVIHp8c~ev^y`MTaRb2Nw?>IHqHqsUpuHMKcJKD5*!)&%ZPkH5wG$k=K`-pqz$e~_; zhwoweJY8rV-zr}T>S%fXn~L;bZtIRNYk}M%nh+~o#-xxNE{Kv z7i~8`uP@a7T4ORVGqqVtIN?~WIlYB+1OcFCkUB&&J@7NFzA_RK2tvC6YYjx;8hUr( zk_#Q(XKFan3FCp&2DLrE<+a_&fIY1x|){9*EbjflE z9^uZ(u2eOwglzXtnT+=}q~h7y!`Z?s0w7 zVuFL+?e~oZNd!te6n?I+T4w<>TKgM(Cdfc=Pl=xBtrfU0;nuEF4FMRrz1B;S%@w5u zAS=ReS*u>@2eOnl#P2uiL1}4(B!H<~b`mE3d~0$0 z#hWU_hYt;_>c3a++C_bq&%U$b{1-9bgaiQ!0UVKlP3O7cX0F@QKPWMQz`)h_hwbz@ z8V1&?__I@J1qdtn#9f%~?L>;Co;o$P$KC@DJ+Vfk$J7)3lR2PGLMUycQM_(KO0)eK5jfQO(*4Muks@$*!2NZQ!9T|Kx z*b?Y`+!lC|b*d4j70hY`#>+YN#Fymv;#@ndjei0=157t*qk?0`Ms>()v7U|Ez``kQ zdIca7ih5;7P>KLhhFaR}D)>6++uG&v9p$mPsbAp3$-?2)r|MsuUwvlf@5OZP@g4V) z_eo9N39bMe0WL8RhcXmbT9>jk7Dp`0E1hFU1ZI& zvN}#a2P1WVPU~3%Ag!oZoup1&VaM~5D+=d~F~*>9uB9y`S^$x+`ImN}Zgj>Z3R_oL zSI`=X^bQ?EF-a{D&ZSds7N_D=vhH=&hX5D<$T%`gv%K z8$!Edl}9a&vH0Z$Tmd*&-t!Q4jsc99>)Mx};id(~l*jMG+YW;<)-;v%A1M5_VtK!29(%}!c}!Dq)l$T?xxi7n%c7tMmT%%HkD_BE6S@qPbf9C|IymVjvX5nPk2>+ z+!MLgdOo=N=H|c*jIk~?l0Za1DzSnyfB=9%f4^Y1SnEcHN2WQ)Z7UV=&QFr3wx&k? zcaB6xxS<~#JF8+XKw}Z}i-c&PD3A=2us+t=_3C&{o7w;agyLVF>~6oome#w9`U%ut zR2Ifj9#^M+o)0B4U59py3mf>d{#|z87}5!@jce6GTw)-C#&EZaltw||duP?Fr~1zK z_e!0GCL;$|)PXv731|Q~`i`LQFm|!q`L(DnWBJpd09p@Xzk#(_mz^@LU{-rA3qTDN zu5y)k4hrnnzjQ2xho`!(Tefqnnp^n0g>D1)(IeP905DW7{KZSyXhC6k|9%`D2V<~Y zeEwxDRKS5JX7h)q@|?l(6JM=Q4Bm{ySmi*p{H~1PObck}tJ~h+m{txrGK`-(*d>xM zB$#$Do9L$~0gJ41mA70FiUU*x0W9fU8C;rIp9K(s@^8f>hiHTmTj#Z_+P56m4iWze zdEl6wVj3$>nm3Kb7O$&d_xnfRDd#w2&2c9e{!W<}SUKgN-$8RtE0lm9mEPmlr78Y)%vDq>)HQ~5h@=^8sJ9iSe6&3<$PwN-g!lt1Q9 z@Scbm50JNeI%Gw-1clu{g8CSnf|5#S|o(`SnTNN<|Gf#FmHRS}DsUYxSev+w}s<N> zB}ERDU3w{4S|`#~JUH8hUvhPvScH&}gqsxK92u+QLCsMJQ?miMg9S{Hm!axiFA*f<)9VHz+4m*SOI>G`gebzYIsfjG}%M#gkT* zT$=+>HH!C8=Xq)8W6oBDG~Sxa#KtruJQi~gBUr<51*H>c+(0XdK<$+MEm&)4lVsaV z(Ldf=-QB`)0Q$p$K!|em(yLDw3Oul(lo~xW`+BZ7+v9|+PJiO=NN6q)#eb21>C|I!Y zy~wwgp1$1pg0=Lfq##AZvAeVn#YVFf3M^e;?4J<{1|Zo&*nM@S(!1>0hcFcnM}(|g zD-CD7a0p&4di{9h8#Vh%4-wzfpWZU`{lm~ed^qwoT~ml7Q}n^ce}Bwh1EirD!yDnz6}7=SvqxIGF z)n>buJmX!vP7)0FOlf1i`;du11z42S9U{WO0?6mo+;v#c0%V%t5)6?M^TFPpL6+(e zBPK0fCq}?V*lXzofJ;nTnjtv>`H)vL2mmLHnQBxjEm&DhtvN(fSP9x(S#D7yvH_U*)0rwh?9SURCUiGS7e@ zcEt@{+YBd|m{jaTp|UlAfbmULZzG(IP_V^)$!%bKB+R0m8 z0eiK>unG39otGR%5+Fjpi46~Jfo2=?=hZ8%NZoJ`_N*S665@~xE?*5eJtG*`S2`-RR>@K*s@XY ztivdxqi-01D9DDPG7#WdumV7VaR4D8Nl=QY-SnDcVm$?bXKbhMCewTn^W|93?g4?n z&}tLho^X3Q&UVcqW@GyrtQvR~I(0^5IxqtuP%=Rx;Rctk9LE)$0#3cz=F%b&J~PDk z42vjKKi|3kFi&*d*y1B-L-6u+Clpkr)|qKkyC; z8<5n@opYXhvGcb{E82E?=nXkMIe1@24!}MO`|7bId1AsNje3Nw>&+v|ZHCSr^N zPg!AF8&HJb39xX=8ELd&Mmeog>-ZH2S3fju=7`wC0`pvhtDy%~9XG{dZ*$CD3==`9E#{z=s^C}x0gbY>7>OXAMPV;S2MRaHL zBXT+&7+`e9*!py2-ec4+^^)q!^$ z9I5Kr)f4`gHq4vWsWEA)Y_T|Z{lbnJk{Z8uY_L=uW2WYBRY$I!o1N03vc-G)a?J_W zFoJTk=ltn?(;8RV>e1|~Kgr5rp)fPS$P0l0hRB|pHqeUL!Q_|LEdbvBd%=Y$9l z0ida|y*obM+nc#(uXnd=nd!@={bQW#gV_foq26vrodCQJt+0%fE64?qOlXQ5*8xKQ zxOVdg=7qFuj;97cs*EW(m(Q>5PAB zseNj*MDO0(^T_BgHQqgyJ;Ltat%2RAz^2Ww z(f|1ScHYT;LSey;r&3=y`Q78r|6X~$Y5R|(s17HG{mK4JNF76dMp4zTdm(n2_;^*Z=dttY`V`=%&mdv z7VI-|;VLklh+2#env6mEyuO%%*qQ44ARm+1Sw;CY>hmxF1)|<}YZ+rKlkZ_g z2LuEH4HJ@}L=a0sX8;gVamR31#IFGQ?QwCi-9q!sXXBqfWzHu-;3_3|*0o3gz^R3r z%Lxz|M{=g2_hc~li|9{-11!LVhJi2uxB~MHI08(?)Bt9)l7f8gg|@TR;jAQX+>HFu z{C_)9`aSEC7>ahoLTw*;tLudRvAZ$V12B|Y_~s?JJ~+euv)I`OFx1=l<|UX87{k#W z*gpcs&~|%%aQV(TOE*|)XY4{|s=bnc6C}QW_3oXGaE#Sr3YP7GWff_Z^Cd!+kKopwCrnePx>k3^?ZZezdh;Ck46>wfhDw zs_m~OmK-J+@KAerpWOqny5jt8V#(w_1Mal@?zRURu{QU=nz&g}Tu}*cUydwFi#R3c zDziO$1Ui5@zxOSB^FYXI&Dj#J;RP(_G+DJ`U!t6=ws-XwDLllXkYKRd;p(Q&WJEO- zJ{MuVkQ}w@rTX=nY#8gicWm{?lnm#J&}t=-tLxW-ZDjMTDowk#64_Lks|B@syXMxG zxd@@TW3y3?z%)=W+c~Yq1ZmV9-}3#KVn)bpdrdToZKj}Q2Q876HUI{Tc&NodsxQ>_ z4LJG0CTp9-Rtzrl;-229#dVM`9Bv0*0Kw39G_z(H3_?2bAQ+2Lz@QKsb!glra_g(L z^^Mg|dC4_iTa2=fbF#lb8(}eOwb6S)L?q){Wn)lPOS(n|K=4FJ1)w0rDcLpfl7w0S zk|?&|*JL6^VX6-|5etDuyUI6}BQW4|v@DPbRG{UgH%|T_MXQ`ivyF=76qd}|wpT2# zUQ^Hdc5(eWOY*Ry$0)*-*DY*KV8ewENC(1`J}0-q7Z*`!$*o~{9{jd&6bR0hBvaMb zyy%qxu1P^49Ztk56>69LM1*g$tf=>Jkzk_1%qlAiu@NE37=vZFiI|+DkPLX;mU-#k z%Jbw#Y)JIQdJLJ663q>)dn>MMlK7E@(DiV`1Hyz-V|K&a2=8`F?%Lu7gLx5zG2Vkr zFMzfs7S|SFx4{_t6CyiQ7eUbUH@7yIs=D`P;vGdXwDd5`YOaQw-&QIWw?XT^-Qk}w zChKOwYHu{R5__1JY*N*bZ-X@W0jwfw=K+EgnCUY2U z8?|_6kbrOiYIV9`lr^{-7!a;PYY+n0-?LZPX%{LjBn=RB80BG58 z0yqMk!EB+fbw=N?eb@qw!LmZ_ny!I-Ur4*Y7HAq8k&5JzxF^UL1iQZBJ0Vu*MPK9C zwu=NOtolOjL`<}L8{En<$i}AWEV<~saaQszLu~;Ft2~=$9WEIsRi&(8At>-(9lAKo zEms$-uvBn^`mz*dU<6sOEpMUD!49y)93u>j!LK&f)~SSg%Gw^`6o8YR&TpBPP6`7C zG4 zo_~3EuaqG^|HRm0aYob(Y}N4>r(n4NV2N%&`(_WUszwz>iG~zIN~mo_!m64)y!%%N z2gcrZ*m+oxXFOYc+iq~BKmAZt8|$7)OEyk!BancPyL!+c12`HIC$KH^^`eR8gOas2%Ewmz4yUu(S>|DDiBGLL`4 z{g9Cze%%bw!SOtNfvsn0^O@#+zo?BQ2R^0@8#q!#^)y!hs&&23%a0_-KB*37a8Dk( zc$Kbx^K+sw-#9-aOqEnlG0rt6bp87KW_updB4IzgzM1;WW%H#zNHAR{4&`LLB>}e< z`_@bJ8@Gfu@yO&I@BQuiFWmd_Y3FgLiSPe8KD+t5=a;|WEd3+WM579iQxA`*yZZHC z-tob??33-?120^SU0(;m>q~9D{Z3)%j3{$<(f@M&|5&{FU1t+D%XL}xO{}jmG4kl} z$9`S^z{vm7!$wNyVqf~}^}ls~b?NMdTaqY6F({o>btMf_0uwc>?X%m1jow^6^!DGb z{?fxA*yBFwJMz@$L!VjrFQ>OYWnFvI{S=PjrynzZH8znUjWK8nRDc9;&X0J72mrmu zPV6bL;dfx7=ZZIwa{PZ-OU6f6l$mDay;Y%u(#6YVj9GFNF)#B z)u<080>+?nj68|#L4d(6WARg7T{P#1!kPElKl4!dF&<3-rjO^h(0=W0Mie|agt&Iw zgk6-jpN)U%EA}@-qOHPr!#&m5WCwd9qKX^8NeaQ->!Yn=|*BvY+*C)_2Z6O%lMDwp0lncJL_ zEuEH%v*%9D&T<*z^Y5KpEbkPxP*-rTNDwK1e?@-dI!S;t#8faq;rPH|92xFR`PG#B zz610xy?YFLO`jzo-CLw54XO%--SVXAz?a93)h|TmB`8bAuQcx(6fq*4R`b6fJ?${r z%ang-zHKr{1K{9q*_#VV&6Z!GhFZE&IYZ!!YAdg-+SrVeGU4?aqd)Q@~KtD;N;hP2|Q9P3GO*az4mqGO60;vR`*^>~}IGO}E(3W%QU{O(n z)^>PB_LHgkZBc(=ZN!y|RBY8M^=5>vOHbBLZVdZSh2}83Hkw+pL*!EFV6 zCVSDL8myJE)dGNoj@dz|90Y9DuvP~s2+SaW`^qV~?kS2JHlE#XWJM4z_?+wK;rf$W zT8(aPk1BdEQxw1?Bs53>A>`^PRRAF1h#Tmv^i~noEdUS3!bqsqW5(?p>bh)yx&5+|eLgxKp7Dp%dLI-Oun2JtLWP$=IYY4+ z6mp^`q!;$Ct7^+qOS>o(#dy?Bo|1@qiyCppKx#Bl^)~A3)XclBxHNU3D|nCwr}+q? zQ5iz5-rkO=#$AjN8Tp3W-eP0|2%1^H9lp&Yr=Ht-u5r3?@`}Q##^-N}_03JU@z$l> z2=ygr4zcOjz9_})nzpjkUJgz+i^Xt-zd-Z3dN1k9%M1Ma6%bMXu#9F9(m}*7-|(*# z7Yn8wJ>WhxIFs=o6oT?MlpEHCa$_;*5&|3T4J>~fKN$NS$E3f^uPj#cq9*LydQS&s z#{&vK_8TXVX0C9ue#Sk$s70xzEicl_&6W1+!{O3db|@Peps=D~%0gRIUQy*DJdRL5 zr3ay?Xf8W$v$9;LcA>2oF|2DLi-+9MQdRl_5{;WRJ-?;6O#sA$`dW?aNj)@8eiXwI zSR3S3n(H-$3_Uc+ViIW^)gru`0N^*_#VJq_OS_2%Jpsbr~K0XG}xF0FzQg^->1DKw$by+vR%2cHK9p0&#}P9;6}w zpmSVag~9Q zCe|__6}5IvuQzwq2SQMEUA9xLD{6ywl6+_kwgTJ7)jT`_&Tu^k*X}@3LDX4a6DN66 zzb%ScQ8AcRrg%g~!%j~^LVCBbJC06hE+tGk4Ua$?!;)4hF&jY1tsZF-2nu6sYOTcs z0P#*3&0BC<*smUa@Cp7~cpyPx3Hk?P{trVh2M{}D;@?`2^~qSJtbYAk?eka`s+c)k z`rpELjftLSgFkiE{A}MSA9>_xrkM$sUlyM#(RJ1xtp->a{qW*FJ7v}g$>^cN|DAbe zliA*SzdPRt0@H)=ovTXRCLkzeor^<|V2X$wT~kt4cH7P9XR@omv zb6~c8Z2-QcuU*86H2^p=iuWHxNQERkJ&$J=K)_r-K71!4IwawRC4BYr>m&=eAF%;& z))|hbNW0<;GsAW7+C3L~(Bxh5`a^ zwlLpBU}NErP&)_ethnNA^gBy~k+F}feUr_*H@{8aeR=uQ8*7bsT|D~!J^$MNu4azG~v>)9SC)PIr290vO|@a1L+~ zqy#~{aWwhbYh>`)=tqAYKQr||r?IPXCH$4Y-2P(wH@|r{Xz1X(|8@0~4}5S(@Ls>kPJE94@y-8qKKB`CkzQRi4&KSQq|Q%?w*pca7}zb3 zK>Fce%dI;FNI<^kPCG2w{Ri1^&i36)2@b{>Ud1n%f{Bl#{}{mG)^P0)#CF-dFiNB? zzh_!~e>U4I)MhjNS10Umr^!`8GQ4X$G*AJ9baeB=xS}43j(!lkJArm+izbUHAdcV|H9qj2bgNK8_Qoyed#OQ zv@!fsc;aWVBi?2Go-B9gnY-ecO@INOz{xUd9-23C?LXOT#-E&N{KxjyH(8^wf}gwh z6)H3S^du@aG>(tliMd-AAfJ5^n@wO3#@+A1xnAQ8?Ql7<`!k?Z*-s)~ezR0It001BW zNklSPc7LFD-pYMud)2IFs8&3g>?D@X2s2m5XQa6%dcnrE8}$P-8~Cc{yMt5zH4wle7G zU?lr$L0VP0=D4Wk`H(WrQj=~)ec9eVhi^G3Pg3NF>{p4WShya6qe@kB#bMu~>kast zrf9kb29gxB>AqkfOd46nN|l|aDxY7Uomz-y>;NI#8}-+ckf^#_eIdm4h|ee&=80yK zNi@7tN^?_sOfcFEBW9+!V5V0uR2x)D08o>$;Xz$fsO`7%jS>~pARrP&SO*v!57sR_ z&IluF01Tdwme~mnz-kQ(6%f!9#sj+$*1I{dCs%GS@!8~_$>F#44FvyVf8SvirM;}} z#vrrm$WiY|DBc4Gph6w9B=|neTDKlW5-`GDE74Z1tEe_&h(sZMY@fiDMc6*T&=*B! zn5<|+2H~p(t0r?n)v|iqhC_*3Dm8_}eW8px&9X*3g2@zdX0|uf=g-R%Lbh1cluThr z6Uc=Swv6~vBLA%7Rw7}YaR$J3Jhy{21u6>J+a{tslDt=q54byvi=nOZRJ`!sokw~T zQ!00c{3&E+@-{p#1)BDVOcJ7a;2gy`6&(U-FlV$rX zn*V5DLt|+4$dm5cOJDjF+@r3)L)iG`V@xLS#!TtL}k7@lOD3K`kCNKn$qzZIVy3GMxcVQdzJ+QJ60?o{cWZO;NZ7;H37k5Kjd(}R>pGq%lt}y` zHPk~H3GOrDBMGDkvIWVhnt=xF7?j8xSVzDB(7|{++pjbE>;p8o zUd_F7CjMf9i2$YNWpmBSC1nQ@HlwJd(X$8fehfoVf`|#G11TUmjzdG}Wsqi2`g+aZ zlnjyH$K#26nd@}DMB-_5===#F$q1rRnGZjGee0t5X6d4v`#|j2z3*}?|zt!LsbA`t@iYQm&!meTGdfoOOel*>5ONb-hN0%xiA@4 zN)<}G2l-jhEtY)Nh#uxc5oqB+Qyubz#eukDJRjLARjcVgxxDlPM+855CukZDjNqus z)bUB|-q|Vjipq9Ps1NEXo=VhahF+22I`Cg$*BfXvunF`Wq)86uAvncul+j{9KT_(C zJTa0_LXn-<;4Fq`F$|!J_V4&lU1ViNV?RH5XlKAcJIXY+!WhBRlV=X>uiX)c zP5|S%v$CWv)_Yd$L<;64Ek3N7K_3N7`F?BGypipNJ*ckVKe>FPmpsl-yA!!90|Nyw z!*frLuPpbHqv9&zOG^lf$Qr>vyL)XQ4gfb*d}$F*1yK$E>?kHO-D&4%=F#w=bA0Sh z%=Q65$;4+DP-wrV8H?+f>qXK40bIO}h!=@w`-kSHW>|d3fV=bzo%)`CaSC#do}Bad zQx~6!by(^^BfwP&Pl5pleDv`yYJW|@mSDiFk6srHNZ*a-9<&4iOc>Y`0h2-P1#kIl z>|2phe$beD6oYhQ*TMqUQEf%4#t@I8N5_B*6~0%JrSH&blj>9M^v|)87!Ed3K7pHm z?B5s()>D8YGYNP9O{V$)^HxWLPImCE4RNcOt6tBP=-=5sP+p6u+k=stv5~AB8>TRe zAH$FbyNKd>sO$Z`&9?(2d94!f_?!P@YiPTjZy)~(j^pb;vQUQN>757a@3?1AzkJ*) z@X)GzapOWzJA383xboc-zzO_+xGiaW6Z$1qv0Y+XZ*viVrE1W7H+ZVCTut+jK;ZA>o4Qtrf z0t1>7O~AE9bxpkYpfrp??{!xNmIMfh0(W}|^H+?Z2|?g)cpG1>9jCu3oL_;14v{~k zV|NzA$=BIS;;Ax@uL6Vv19;mM3>8FpwuNVwK!lkrKHOy}veWCSD@y}|=oAX{^}<$h zHJ`jZKhUHg#tQErUfar&83KT%SNIR2d1U!`Vvz{4nEi?Qd+!&ARF2{O)>8kqy0)H9 z`4^}{=mM*h!*2u##Vf#Y_F0H$zVnx834ubpVWJIi7bej zrurf)yG#JsAriA9$?L9!^UcumTD=foJim7|!WFhY7vBoTl&TT5+M)UL`$u(E<@ue_ zHGNDeMuhFvPoEb#Kyr-t;f`@I1~0%1H_$KvU?79Lc7SsTfm2H;)d3)rz`fJZR7k?v z6>OFPARfW7UEPVwODlN#TGu{eDg|8u2vr*!=ItjxO;4pBJJSF2L%%#W`7U`^?4pZJ z0zydjP#<4G^||UZ#rneb73JsTy%UokG#`!kPJwa2=qj)w0SjFOKUc$M1pqV^dxj9! zK|ryIl@g?n+&8fBJ=9gi_hI_O2#4ITK!R28P(66V7;G5RTfo+9TQu7{cRbY@`WeSh8d- zA8+{W@>F{D{ZmsDVmf&!$tDmm->X(GeY*GC&nk}J@qyXC+V^iRU;DbZf&Xq7=Xz{x zkGr#fN>RpPvHYUA-n#5KTR&P||Kr(0D@JU5k2Br3Q(+@8S?)%#U|)3G1^nnv%mDw* z{}pC~)Re;8_FJiekTyINc|y5VhbE|UzBE&Bj%GBj4T%x$*-d(9|0Amz-1W|w*tpT%m=QJ_Km4Sg%754=N?QBZDi;cOM zEg{m|O%Vc+HgI?lngSwRD`UL@0%AJu9O{PUhJe?SUoCsxKKYsOXD+o@q9Aack`tC1 zk{~#xsJWPpW!`I~cH(FrMiGUV-3DuxQ_OZ098fmZ8-9i7)W<@ z+EIYRv^NX&(?k*=)v5IT_3`7F>!JMfdB*c zPhzqMjG<}ch3jyA0GJ(#9~ca4OxW)2g(7-%JQ8B$`N74Dhx&qWSglXRFV0MvODPb* z2r(Oq0HCG((J|^{Q7)Ojnz+(x)(W-ge|@QS!zTJC?_mt5uuFxWNnv8F1HW(ucg(3D zi}pt|nf$%Gh4$uM_?v&Ks7NSW=PYQMK|wS_mV_YCrn&JvKP7x6y>Vb?vrmT+4WylQ zPd8fqOcR2cNSV^K8|BrN#AIQda@nrDIq+YRc`Ix{Lx>Sm zgj;0!A{-7jMk5-|KE8SA_<5!mJw^Awuv4 zmKZh~0MM5J9DsoW)Z19D13)|sxBvr5wAxszcW)jp5P%WdPWQv{4o_PE1VtdOccaCw zRq;dC&G+jiYq3=?ZYP49*su9n7Lg&SiYI8z-=zA|+S2;wi{-0Y-iaeTANa9qj)l0+ zmyI>A2)I+<{$}1Kgfa0;4(-RBpgB8 zwAEGuYA}_<;3*c<5b}xJzOvCSeGY~e(x0Jhi&D9H7#XK1!kc5Ca(5F}aoKtW+yj;Nd)+1u%{h04dUQ zo}MCb=DYc=vvgGjn{CY83zh^$&<0$;3y~`Vr8TG>9Z&#Mber({Mwe!Oo23l%0}>FT zEDKGZZ^=~y1VsHtW|E3)ga*Pn2N<9iHl5LzR*-ed-I z)P|o_^ztx>1sbDf_vj#;#(H9Tok>VVZckG+&dNdC{3loP?qF-9iVXn8If%h40j*n|7LPx&gk3vz_GPa{wK)`4eoK^-R-IS>=6c5 z6Tu%Q&Tnu_=Xggj`h>NY%gFT`>L0gmUO?br|&|40w64v@wGDu z1auAWJA&~Hz_3-vmruj-pm4nB5O(zg4CNNSbQ&!ioZ%<-cSQ${Hvar1mTNz}A5$>E z290PkG{8P|aQdCLC4uX@;#k1RA$v4dDi^IRv`#;6g$NaBvg<|UE-d{`qd^+)joGZWBf9CtSzbw?&@pAItBt8~-_yh7uHPuhdY2m~g z$_|(UH3r5&5*y!=g){Z5J)S)py7v?2M`D9hT!n&5MQk?VHE`q8{_BW&QAXuJlag7+T~tTZ{cpE(S0)?sZnGD+|yJO#fUr>8-Vb^}lS_ zGUi%OGX0T|I*ucGBmyX5C=4pV8SWauUcX8065xDtfbToR=oE>_bOlZ`Pal zgzKsBmf`p47945Rm{u<;u!2CTIQ=;UjKPYu^maZ?tsr1EC$)(t$<|sys`b)N5~>P6 z+FVg=;uO?3$E6n|O_-6&R%+e1B_l^GXDu@dRq=FY#h0b$GxE!|92EdCp$^+T&l3%3 z(&L3zWm|4@v@>K!eQCRHvzl{?IuQdgUR70Tb^4~_dI4Ml4C^6OB!ooSL?A#wxrt;P zL{K?$MVJi`P_z(_fe4(jLOBy@t11hec4J5lss< zz+Wz@fww4Y#)h|8Wz~{VbV}k}T@MF2R%xtzOJyomwMBnBIUnBpJY80b^B@UlTT?ky z6?!0G1|W%A6ScB%jV4t^M(}igLI?PsSV-s8e z;1!Sg9ta@6ytxV02f+0}33J5CaI2;*EXz_>W>O8eZL2q1D@*H6>|$~{7WFF)d%ehA z3CX~zp3hUW1psb1tis@PlI*$; z+~1Il51v3Tw3B1 zMT!I#1;=62q5%*i(YZcU|Yo zjg{Rp>&Xy}4pz6p2wXxZ94ijrC2PCT2vWfhkWLO0l^eS-G$=^Nt!iatUqbW>X2O1ZP`a=&eOjkBv-of|s1 zp*!I;_AN+KO!i`BBs!`Znj7K&lM?9v+oR`W1wfyp@ft+gYzEH;ul61y;C)LY|FZBO z$B#T1OheZdA%svsrKJ7EYVDhB7lv58r}1mr{dpN{)Yw;VbiTwkIaERzAK{Ay6-{Pj z=hWJ7C7dA$Q+5&oH4I3hBmRvM zC?bo;@7;~WLjv)=bmu~WD@DZP_igK02Y}y9^V(aPz z1n|u(`0g?kaIAozx(`tkO5uqWeErIh5*JD+fDt}$C*E)vL~sNA@pHITz8&$Mx%-oo zGfS^O?Y$>)G&+{SeFZRrQh1??ZC7{|dG)uIw?~p0WCBL_#<*9qr3kf5KY3!yG&I2M ztrgv!xa3?Z1p$L}nED{Y&SS>4pI#h&vz|_l7QFk}^KD24$)QAF^6$%=<#BuCp(C#| zQg=IB-R>o&l&-}`>5Tq#53YI{fbkw~e43Xxy5}dPuY*)`j6_rOms{O^&%Nt~&|+`{$W3-)>EVnGNlEuOe@Ka%P*1<{Cf&yOq4z*PK1 z*~+zfHo5*IZ@sdePDSTVHtx>uw=nI1=|dKTl29BHPz+4NE&k(}jRy{v-%Hg4f~-v=bk|?gstJ{PvdYNAe7qp>@#TeVKDs6z3h&0B0{4#_Qj{} zIqnQRT(4hN*DokV7@4Be59yW#CDi(Laq)Sja<=>z4=olZeughar2#3Q)px!u*Nv~8 ze|>&4nL_(;;_QP(&X zPn_5rk3xrISK86@=wP#2Xy1$%TA{7)2629)(JW$Bxp}rT3^#0n6uEQ z00nmk-5bi1S}vvm5@B@>ia5Z{u%eH2G(d%#w-*gLyCu>myIS#jT*;$2jlZjYb zFr{Ma4S$0tL`(19&8L#F5mJaJS`+B{5Tesq_jt2qNz+%S@;Q$hp5(_4P84FEz@F(9sbiO0gWEzWnR%RE_|pKEBW7q-)3Z91zG z3Z&B8?PxVbF9bj;=&k^o28FOHlz8p>zZ4;ykpF|K-#^HH@oSr_f9-s8?Qu(Ms0LlT z$~S9k!7WJ!Rcqhqo&RDfD14dJn7>LdU9Xn4)@?fjDMR$aS4)j+8kUY|4_PBI{Cx!| zy||pH6EVQdxJJweAi3sM&Usf*RYnsn)shpt|e+rLHP#5E_v( z3!WYyh^mYI4X#K5FnHS-4*^KX@>W1y!$O8Kgq-`TBrXBkfIV|iEif>afJPud<7hW; z`xE5{j&MC{wY^5a9r`ab`=x>}03hJt0m5LI(tO>*5MZrWv0n#(Kn;lxP_*Bgj&x&j zghDjln7PR(8Axq4syq8a05QWkGPi7-nx;_iNN4BhDJEmGlxsCa;%vBQL05nigm2+F zHg+j*+KNCeOSrI7*-f>-|?_IcLn6BXOCPc~Px|&-A^SzX^5#=z8xXy7@8wR;I`& z{`o=|GiIMc=1JSVw?NqK>n`x|o$?L7vMse4R8)^VM zM?7S=0f1|%bH`p^xi5#PQn<#dmvKX`wFP*_?5(>0Z%|G+p;iF1f2tF{e-k1?Bn|53CU)?!$yvYb6 zqMWp9*MU+WU%CE+6EzaW8|IL*0pQ#Y9(n0CWB>>XVyp4g_GDlm!+W&|+h`k)yda)0 zLK2z6ylX=n9mUcoVWyxI_Pz&i6XOl21_0s2`MKFavB5a8Zx*%z$i5vm=a_pNVhS<& z?H&3y0C@M8>i_IeY(anv{o0fCeLCD<)ZaaM40g%{VGNBJw)*fIy!jb=&mGFPAeC0T z$eycWZ^}6IOWJr2_chTyha2Bh>jk+o34kR6^W-|S`~xPGIV_@2mw__qJXJ^Xm&S8a z0}d+%($F1?ub*BDBRWa7SXocFdqY^}$FM$sz$lZ9wqISn`Tv%s4ua;^lYfpU@m1if zuXRGBb`5`i4Zx@VQLytWYVhI={anHW)1#RRbUcJKUPr?FX%y zpTIE>vn?!tUhY2=ePaGZ$2@^qbFLAY-y!;<;yQnBUeqJNs6N@Yj_zXqT^M`l71yDF z@-tZZJ9%>)yHke#iL40#Rp5DoP+-8l z21c#h2CTT~(9Lh)3r%b%1_{I=$DF|!Z<~eMaQU5^Q+*u-<7ma2*ajd2lV6ylTG131 z9Z@LKKTev96Bf;37yheGlS&6;OgoS=zje;-{a2bcPXgxo001BWNkljC@^cs-;$Bt$GRsPqw4+~Yd-vnB7F z^h}dhC$j8k#gRO>VTHAPvmTR!m&UjonF#L@e(K_`e9UgQGGmLnpELT`W7~BR#+MVC zuO<4u(dho$GO5Xy*C=*t3IESy*Y}wh)}!9$PhiLJg1%x3T-#}Uz?fb-jUVigLA={Qk@r2#q8}XnsodxrtsjZ@<94FAWQ;{RK5o|0wE+StBpfgoUUSGq?5(QK)!ueGY*_#h z7-%MkTe*~js1GPjM?5c?rl6=_j(Iz=+ke-~N5Yfoc$P>?T;Ik`29?wTm4B zBxlZg7JN3Ieg|dP?r3R4)fHeuJ0ap==Wo9In6S)L^zh^r)4p82-8c)~bya@S*^XT- zg-wK7EKDpk$dFKQ%keK>uYAqhQa^+z0+A@*e!uk-k*VlyScehP3C!t;yb=)gwljk} zr5P%olT3qBaGNY}X+V#P=Ov4bsKjBDfd(!D84fAj`ewt=GC^}$37DGAT zcnrl1h#)2Q2J-hnG=kBbVrX}7m{*?>*QE?{iTK+n!zyzdXPxiVul`y28~u0fo}AEQ zS}KemYB5c|#-KC>g?^hnhYbj6iM-J46cR^$KjwPzX#90%Y=#zVhy|~RH%GI`$A&s; zyH!XD0%p?~joDSe>YrNqFE8%=p}nbo^dvG-C}6XJ$1Z^@WGwv3Lzqef zzNG3#3vUZ%BT55dmw7D~0APydL^J{|o)q=D-7iNsLy3N! zghyt@P5uCbKzzU6h58j={V>+9{u-#r4|uy9CcHp~1TvuAjk!UO>DPnvk7!SDsAFp6 z9pQTms#I^%3#(NJC8k9p$^APM_Ou*PP%k;&r~Suz;3J6qX87Jk+3Y#3l?|tpiSyVS zpaq1k?Ea1Gp6#qJDAxq3^|{(xV~ewqqjMOo^g3S)F8I`tWgROv6e(ResnzFVR{$uC zaAy{hA&%0x$8vQ5vJ)z21fi}XsxlVVMjL=qZVcTXd;>Z#VG{r^WY2aYVbzXO|CHID zOjcbRp^RM9Bi2qdL3}}X?y{>r8v@`4JOTrv8pb2AO(=y;6O5n$m*ctJe<+oeGHD(Q zvm?i`U|dXLOLPZHahWM(ZacGI!S(+HZ)5mZQVYsixqGWOuRnw&166B)(w9Xv zV~V>4+%5~g>C#4HXwOCih2UCy`^C!sv3QO;Jn0!Wh@b<}30!s&4E7UQi~?Z~%`eN^ zjqv<}>g!;Zzf{+ZeLyK;2c;vbYl4)=oSxkPph6?qEt1N3i3KFJy=i?7p@NFQEcki5 z{oPa|K!jPka?%B7D)Wj!SZSfL8e(GF%T6nunPlo6=mCHL(FtJ~L=sA=!6QEKjT|Tu z4GIT;Z+i}g=9I5-L$rf6eoG>f=m#G=laSKHywOa84OA2l@;Ivdat4M5N#US0GPqML z*YieKNaFy7&YalDLecO}scYyw$#oorTn`HCr1t?5;b^!q0Rcp~pIc$N1CZdk zaAVF>t{zq~>O*v}{!Lk`1Q!nJqYw8c7m)Wc(!!NTWo+!7X? zR2UV*`6%^K=KxTU7_9=zGxoHN@2W=w)m!ivPhiU4=dDZS<>mFw9Z$R8@1_D`v7V>j zBuxM;bY{gy_F(y~lHo&vdsBREFsL9XtP@;xpB3e?@Y;-jctR^iG2sE?wgz{CXag>jpf4$xw_SAB9rrnL{@wso?hE7*IgNF)r`go=^tp z&a8}#qZx%R@YNC;9(1ODI#)^AAcBYD(;_mztDDfKVqz>$h7Bjso^0BpWmxE*u^Z!A z?%Pm=GNO=EG8ToQp!TWx6m3Xg3X#+Djx_9iLYC}ZuHW<}WO)JAL{O8pD#H&2hP*a5 z|KN#{PZWQBeDOhl3ZRPC`@`h<4)Y20pj*7VpC?d<1z%3Cb+jPhbh2H1OK+Ni`nLO( z%t}q~16c6W4?9x~6p(x@v9V(~Tw=7F{-Aq@VPvX1<`)~a=O^w-C35%YYJIFd8~#~u zUz^;X7%%?3oj!DQVrSR5`eg8h&W`S$8wFR^<5wOWyE!^GwJ`eQrb;T$D7Vh5s$qaJykQaZc>rki@Xd?x0ubT!0*;LVK*z(M zJcrHK?gN|}f78UzeZu<4=)a$^@53bd`Y-}jU7RgJ+!k$Q2(S8z_!Alsx2=iRRcwC+ z2N8^WTKi^N1`I%KvKKA7AV^sV<)33yd-j=(@`8C#D!yHU>m<6vLZ|vDV3s&Dg6Mu_6no3RLgud*9E5Lwff&-z8jYr{C077yO zxqA?r2skz#<@JqQgNjb}{9@B3E`7aqX_UlLy7(bl@Nl$(y>F|^bL*E&)x3AT%5o!oXLJzn=q8-Y-Zh!1OPq8(|48!a)Y-&61IgD zK?A&6qI+Wm3Z%=_iK-Fr0|;8t_SHNjfsi`XF;hMWVb5saOesMiBxbsi5f22Agy{_% z=tBd-1Rw*}T23={ELHdr&4f7A#NM}6?U!Tan9ml&UIs^I&%mB_RHvbep zZXcBBYXIzGKR(%mIRZTf8;FhKzMsYExuIy?^$JQI07zIkISxY`st6d6(%-B9tryk- zkm9L}SBy_@{O9L4Kjq(4lQEbBo!bCqcSt>$hz*;Yrt{|87Na(URK2G!hgT~IbrjNg z_&7`*3V41ES9Sn}bX{=>{9#D(JK|r(;Ct4ioK$GU@CT`t)+r=)f@lsS6}?17x@1_ z!R9^JD^+V|VGk()6|}co*BWr7V0ZB(DVqQ?d9A&+iv|HFa7x2Cfmly9dt2++2QZFB zhIs~J;GNFiIyL}gG0QNcd9L3gQ7vWDvk}d5_o>P}N38_qba^xC7~3Wc?(iPd+Op<1 zkaesS*EL_V>*;RYa6`pSt`It9uelvUnSkjP$r-PZ6C=)8*mn12+t$!=;bxOrnV^HLp9b8;HhDp@x(z`&%Eljsvukp z`c}LiI@e{$m0$qi#l)@&&j6{WRVB6q0HFz2!OS*dTN3(CKiqHlyZd3s(;DqIxq%S6 zW>a%+n^0(%h_OLI>43exFVGywHylt41kkxD+oP&60!4@f^~@R!4*=?8s28CK25)3G zs24I;mhEh?n-4VEZlx>-ebP4EhA5d3V2rd-flGv4Y@UO29$*;zAS_b~T?K-*dT6+^ zmm83m+g`xD4hRTL8;tbOPuIhEL{bW&(wpUo%L*~J1WR%zJpDjbh$U2zAWdm3t;Oc` z0uNsf_cn-CcwgJ&im0JQTLu&%^!@5SOb-BQa!A|;`hiv-Y8i7K1MfwxU4_ir3Mx9<)5dk_IhQ%M0i%;Xm=x|WR7TgYS8Ql!lrXiWml%K3@1q}dj6R2yHYgJiA`cUp5 zDWq6nqC;r*abW$S0#o)g=ocF>ous^3rQ-kA;S;?r24GCPt7nCcHk^8vnH#07S|~>%p)PWundEE z*RSBlB~;KFL3xT4L6dG`8%|5Bt8U+vc>^49JUHPG8=HUNg#F1v?r_^C9iT%Z`7b;7 z#idy-8(&&)Ji*E^`P|*jPteJni~@Mh+Wvg(ihxQh^Anx>CPWgzMYH_r__+`&sHvc#MLx*zjBFi!Xol87h8v2fo#&Az@$c=rWf*t3z_hq4j z< zGSu3a$0$6Wocslvm&?bmUQj#SU@^;j6VIC6Z|uMIsI;t1^i+0Z9IG7!U0nNJ^p*jD zSzz(*S|QjirV2l+7jigVfh7QdB!(n!f?(+F_VjOGSvtA7X))iu^V?Tvtjj#slTblD z)wxiFATm_y)LvpVqaFDbM6z5-zxtfod<3`JINgYQaZ>lS0Tl;gsCNNffD{PPL(SN9 z1q2!D?F&=9Z32i)IElkmKq@5(F>-YXnC=jz}Jop>_f5UjPeU zrs&<`+id0C)zRem$ISd39xNj!pqWF#LJDv?hmknI(2{t%1Sz2c+>^n03SeLdXQ~h~ zfMievpW*ou+zf`2cPDhu6m(zG2Hs=-9Or^yjXua_8<7&BZ4BS`aduzrKo$O z=$E4ajEtW=USb9V+1-tTx0e8*$Ai?#eU@Ls%=-@Lh6i_Qs3Ic4Bs7LIqbS$_LmPO$ zj8K9BcNH+67+$LOiU=g6zu)+#A65pTJ$+$S|MbRho!$DBd;K*Yk+g+heh5=(C}6XW zN1j8U!_x3m_v6q|Lvj8)&z?FNFoRa!Hg+XE8kS;c^zg^eq2fRzyz36_^sL4J#~=BN zXYV^wHzQPjAb)OVDOk^{ei;4Q3$L55MPsafB6If6W8t-8L}^4YG}WL$KpJCibg2xc zlwj_~BCpvb!F-6p)AYnLzI5^L6I=bK!sebA)EnjG&S0V=$X`=)F<5mV)SWwch)`rI zLBu8l3_!xce8ZDaF~C;C593gCO9BRXt3Oc0u-Va0Q5avxPgHeD#VP1Slpq4MRG>#V01)qNHPoQHr{C0776y@y(1`>A zb8CvO*HoaltxA0?V~mn+0DT2h2h#zCRshF`6mWMTJSd=jQ#DH5VZw_T<|3oC%BB$S zqr2g@TIE5OLu!UFnZ41o|4ulO=FO%-WgUt^-wnJ(m@+1E$cJvY(rVTM-6HBob2-iP z!6gKgAXrf~qIHHFfO@Y+O0NW8K$)e z9@A$Ma4YDSTKnxrPXW6u)-~b*HMh|zK?yJe@gvGitI=`ccEd=c6-fmyBO%i}ZQFE7 zQ#=#d%b9_S*+wy0k88=4vO{#%`%b&M)&vw3Gkk+05dZ<4ZfBdK6NnT6fJac9#?6o?BaMYUY$~jKNB(aSiQtFKjn98XyUf+7D43G3~=l z)7+p#j*HR;1}ehQaTqZGiuXBHy<7~$B34%4Zc$}G7Sv!yU=Rp!I;eDClj|Z?(097V zcDde=H-ffYUQ_FvtNm9R42>l)Gcv@T8)eiR0MPa^R~XcY*luk!(lsrhUI$4URb@;@=FOwLaUoyUyH>c1K}JsHnb^SQft|@nyWdtCAsWQVoMcGmvt-D z-)c{{GI<$cjLc+sHQH#CP+hlky$MoKr1f>fumLDyXj%{e4}R!*bKu98%zrgv&X*75 zx@h2tp(*-R@4mPAM;HjCw1H&mP=Qwg3W~I0NAREwr4$r_*n!aRtq&!sFW6_lY%D9_ zeo^?hy*I{TNu|DIUHrUxSwbzz%x?rgwa|YPo$aoMyI)9 zeDp!gjsU=J3xD|3Fo^#ny@x+|m`3)#xBpuGSKs;mLA#Q)yQN8 zq@-^+7iL7q0x4^@6`kJ)DHZC@r5RqcK~Opo)9mRF_J8S&{U(Y;Z@(&qs~z0zBJAP% z@58w^Bq>YbZj1#R6Y<$!){B#Pu#Vt5uK$j|9d)ngp@>Cz{H{$c=7Y4Ln(190QwK8U zdSoI#_fa-y;qJPse!sP}(OaBlS~SmIZ#)~k!qF!5aPtq*xdcWSc?gGp7EFWWa{H0J zhf){Hqx~L6H)^NOJ{O(Y1t|oqcX3+vkHzOc%H|kOHn96QYU|P7)rqhi2WfiIjUV48 z7Gj_rV2oht-yu2<1=KHg^G{qVp4!{d%|5^PvGb#aODqz)cP(B$dU|WqS{Qxc$dg5@ z*Z^C{)!z>G(YrJT2{L5-u5CTp8_pUdO#Kul-U={;U0nZtxT^qR^c|RaA3zWuu76sT zt~=-E^vHwJ$)BJTeav^k7;wzeJiiS9ubaX9PeRuq zmG#)A*G1RU895Ph1cHoy?ne*p zuN_vNPM7yiT{}BF2OiTdzJGRm_sGDZg)#OaF?Wv~Hw;xc)&8Brw=S_JucW;5<4{DJ zirl@UWxD`GGw!`GtwO^0SMcZ$8Jh!As*o$r2g_<)+VAMkN0d&$EE2=Lks<|Ubo!Z_ zyCjB8#AYS(jdr;v|MC34f;x|D4QxbAH9F&rYZF>N*P1IV_S3)AUr+#N_-5q7<3a)&v(ILL`Bc1qdI- zci_qbJPvmc^=I`|M?cKu$k#nH>%I_UA&)vgOKBB*yF~50ayHvL7HLz_#6x83v9~BR zuc+3VyA$U;45VaSHbVDGu-CeIwtj8rq3~ETt(sHC)L{?{8up|W%^+Z0dYIh8nd$@JTr_S(4C~%V z>;z_8NV}+CMEyDdsJ_MTKIBXmiL>sD$@D&FeVAi9?wf7TWPxnyIRtLwd`t!{?CJ)> z*g_2;Fe!~*aBFQ#1_4M7AV}h-Y#y5tmO)V&b1rD-ecsliod+~LXrGaYj)a*CQUnkf z;cx~qW7xC9Ly+orSB*=T#WIQ893w4j$%@R1$>t4feXIRax8vD+vDfPsTXt;Kv1d2L z$QJ{d4xXW-y;iQY^aj0mWYJNJdqGCinYue1$t4$e-<{9DDI1P4t=2LuIvM0ggRx#T zI(jGKs6nAy(p7mTns^h7SkX5t$h|=RiF+d|6pMA<%os)ADDiT~xRm@mfkD_;2zC*6 zpg5QU6b@$*GvI4l<86iQBmmWZscgmk@u;CkGm%5=;x3c~5vEeeL|)nRRqDE%3JMUK z-?V~2_z*&fTVXt5;LVFj+JHjO!?!LEUwe}o93CBf1s=aTcu9oG=<>wf5tGn%S?R{f z2LKI~JM-)Dv3=hReNTR6^X^EG5o;XgTl2?jeM?C0es$xd?dznq3w(d{Shr^jC0k!# zKM@H{X7q}Y_3_cm<$8;_E|J>xw`!(?q^41Hp-x0fDXnb0e&<+9S;{j@p7|tdLdt() zZ2p?jTq(|F5DsQ%RL0&d?nSivA6Kl>T*i=5*oC6MW{SOX`1guH1k_#g27y z4NO8ZROcX4a0C0PauG6Le2HoT-%yeUWbnJ?4TTIG*?w~o%6Vx9MlK_i3$ zU#Z~ft=HPSD9cI|Mwce0lE?0F%T06l_)62tF74bosgh9Gq0Y061zLz_AVs*p_Z02) zT1zZ6el7^+hM5+wuq#lL08kW|3!o8{!k&PT5E5KK@1oEh$P(}y^L#f61(kP$=~bG# z8*>kW7`ThpCTIt_&0(czXM(Sd;^pRi0RSxwY`A>d08;W$Sj01+~;L-z!F0=09fJcC#ju_|y=_AGvGff@Ju^B<;3fkR!a+*G@} z;=*Bwg&_JcjcQoxU~^w>eUDe>RZoQQp;(J|U*eVJOXoMwT|7~bj6U2K_XNQxhyaH} zDku%PHx3t9;|i|*7E~WBhGV~m`r-%yu0Z=j7;QtC$ec$09!wG3JzV}zXz!zafcMh- z2g@?a&(9-&7mK|OSr@rFuKqW4&jWuVuY(Tem*2)08QeG`2qi3C+;d#UY*LCp|D<|xn{Q2pM}Aq1j^bno zmK;Lv!M`IRQtDRQmxAI!nJ#`^{24^`z;%z9Hk+W)@!4({}?KBd>sSftPgU)n@-v9t007*naRQ1pBYcrxY8yxv%Hj%-p z4vd4V0u5;$x>VnI4kR|K}C-I3k+- z#Rs-$b09$L&IBt9c|iu;2jq36MLCJOJNBjZ;*nL|B>r%EGd<3?vvB;8zuYR$u9*?A zGl`A)rTx_c`eEYH-F$H)8bduET}v1jcdd)61_0XtQa}phZ8^IRQV=Y0;n*FelLZx5 zP|H+*ma0O@A9|*R@PXs0PZWP;yl{tK0ANC&MovF)xgsG8&#qRV_J6OjQt32sa~WJh zXL!%O;ndViBB<6o_|xZ6>q8^F|0Ir2fPjvNzkFdRPW#G+>6r|UFzCfRrY8m{KsRvb zarNeiP-Df?eaF&TGLIw_I;tKHaWdB7VAiS?P{;xT|r$odf4hh0poG@Yo~wYoyKqI zKQo_tc<8jI0QVpkwEI{t4Y9uign;njZXXz?47e^9`~VwY=FM7rE2^v<64UV+Cz5vH zToXONeJv*g4TM00J__L-h-y%KD+)eizWyVp zkE6Ryel`>%v-x59Ya)a3%&-*k!XBIuVF&$v zCunN%HWc9R&t^{o*MaSEoWn~0e1t9 z8{KLm>?M-yemxVx-TUA>Xsr&{dFB|bECBd5G;a(?nqEMp2rmM+fsIE&Ekydap^s6_ zd=PpJ03su}=NKlEP#mo-tha}qz%2*m5W++x55qzfV8C<|i@BHeyI+xkQ}y~2_Md+~ z{8R8+1b{W#Ps}$FDJVVHt|S}1uG8E@#LZ2$#+XHlx_fr$WRoL5t!L6$YQSB_&SSlj z-f!A`^yvD#k7e&c(zZwa2`Yt9fQrH~-7t8vclP?~Z&kNS$F3fGyEQ|K!LcDDNKC@k zk)kM@i|R+Q*g~p}@>$*u+Lg3r-4##00gDY3TX46BtIOHw#GbF6oF&aH7JeeS8-?Se zU+IOvAj8!DA{lYl!ineN5=*Zf3Odln+_(RrQkgHVJuuNqrqN65SC5QiGY0|p z`sxY2GLp8uIJq7w@Wka<;g-+m~`W0u2&hS zz8=KTO_=X?W>1Kmt|NJ*{Yde`I&*`L?ruk+KujfPyc3CudyMx-DA5DI!e4a0`-R5u zuB=`D;Z{NWo~+jM*3^v54T3!f7g7nG0@{@6;vnCuEj0_rK z8lWj@q?@|dE;FT~jd-uiC6u3Xcho)vM~7t1WL*hGN_uW*nGD~nhWb?>R}7Uf+S4H- z0Z4&+xLkoRZwul~*P@I;H;8PXCwf{&(`~cU-rnFB`&|YFbRo8loBKYxKDKXQ|DZ}U z5YE?_YIpn!I%aF9v;Fdeduy-Il-LP}Hkm>}4p7_e{ytEQpmix|s$Q9w=M`^*E;_+B z%k4vksvqV1N#$A44JX!RVI8^-E2SiXHQ{bRG!9^oA*u@yoXH?`YQ0SmG};!}695qB z$Zf$OD4@)-EdZrth=4;9U=YoLDKH7ip`_9Ys*1{A%e}Z*o9ZqcVm2u~0ko+0gsd=r za|)c37IZV)q&n2QE<0IqZPo~-Ng+!%Ds~^;7FI1{3QU785$g^mH5?y31=yfjNCg?9 z@;Itbhs#GuKhd5yK^Bya`qL==)o_a_IiymOKn5v`SF+00yCWu=+&_KO)w5EiR2kz77FMGSbrR{3yNT25yq&}7+9aY5=0IC+YnYX3poir zJKP1es<0X$zy-D=7OItorz;aqss0<>B<)~v-)mjIA;QQR3m z3a@I<2zfQ|`Us^brRsFrl~Sprb0wiOm>LL>z>Ve*041ZK07M{;wu>805MY^r57IzV zIsIUz5hUPGv)*Ad;0bWjN}ShQen$DD%w5#_JPEF;1`l_7e%=i;c=m|~u29#+a9TGX)4$7*YV_P#&q%`Tox30*p!9)Z)ptS|UPL+G= zhmFlYcw*$=jQz&gk<;Gvt^ba1S4JN{M?yj=)$*2~OaHq{Gj-ylii=_RE-|7c=?N4tj!IDlgIt_SY?7lT2SI%l7JXuZA^XC!;larzPG+^7l(Pp#lv*Wl@| zJtzXpt9Lx${igOahcoXOVskF>+#afZ04T(8*VvGu_+km$4*UjI{s=+y77A|P%!Tzr zI`flyF^+pHFeISBB$SKQN6@_vVIqAWX5SB;Kmm5XDeD`}O9j!D@Y=TkH5oEMb z|Hz@e_nwl5kxSj5v5yVOh#eo#?+z6umhzZM3*}cf9!vkp36>)YfG&g!|?az2R_YaBOEW^tG_S> zqeD11)z{-*s9>YrCtrOxe!)`l)FjecABy)N9NY`4ohx5X|M`Nml!FYJ-Oe8@smTyP z&`7jz4?r>~GIzADXMF%+$7nAMo9XA$gCE2r4UD-^OmGDnp>eI1eX;uRK@M{){j7cy zsuzND#2UqPP3(Mo_b*D-8`bmre;XXkhC&~81`pIMrclgVH^!uWAV2X1KBM4t5%srF z{6TwlFlybm{B#b*gbI+4)xSh{6#y~^vG1cuSfE%IzqNBFf$KOu z(Qo2s?}*1Acv{W^Ui#zktF?c%wtU_%QmNtDe3M1;r;g+4c`){Xqc9cZjb1qmKm91i za{#c}z}GG!jG-#{jEB*j>4Cv(oXJ(uL3( zrI}_Nx%OqM8S0iORvYz+YOD>S9iZ(X+CwZP%)YZzRcw{_SlsSH{bD$MCQ{^03}^15 zKRQ6C=k6EFkOYn6T7nHVk!k_3H1<^D@jQ)-RDu~8aP3*t(M>v?)GGPJC~g*~;U%R8 z-}Ks<6&a{*gi;iHKp3OeM$rX;tiewW@N}GIqq&yKy~r>WCwsk^&t#<*cNKNpW?E;5 zyM7dCJG`(ZnB*w8+SM>{LJ-vLVt&kE93VI@yntmAJAoe^~F>?+u2$cc9fj;nP*cP{E)zK!k>yGY45CBy0G<4Qc00o>uNnoo9 zvjG4NLPtOXkxh{wdkS2Smn@;E%FJ*x-{R~hs)9U~TZSlbO$Xy9LIpujUL!(=gEJvX zmP*{&m9e6*!MLue99+>LGH^nWL@Pj}A_EKDX=lq&HMl0?PH0JCs*Ewi_1MDgJ{w?F zL9kclwu64~Xlbz29tkAMTj;R+lPXczRvI1YFcOYj-)P^wp%e=skkX$iRh@*FAUy@Y zO+mX=ETR*r>Lh|BX-PZj*K%br2_G^pg;|wiu8^(9X>>D^sU@eus>!%3+QRmtX5h)X zUkNrVaiyB>a2X~Ey4UP%ZSE2y2!-l8!elMJ4ky8OVqWVgyN>Lb5bch7lj4lnWlT#_ z)?@=chAR)P3WP*780T7%h(NLK+Gv`9^qIfzIxNupg`Cwblx06vlG5+1rb3bkqc)KM zAZ1A_R)WQ?+ER6a*D;mDm;wg4K2~?Y*aMEj7yZqf2(eX$-vxkL7fA~yfisjFLGNg7 z`;M2|ElJKmO%ZxwD$j(@eKT3Cnw+D$Sm)UdtCN?U$pJ(3AU7OBs*$T8j7gZKTFSK1 z&O~meJXo_*qyrF;U>+c&pwm`2!3e~81B#o7Q3Ftr`na&nNTI~Q9lKMP(T^@R|K!nu ze=_{f$B&$|$40;Lnz3C0hy-~%sXu$m`5pUe43d(2AjUPun4&;vQvAvpIy??Alx_Up zE7*0QGW`5wcz6m7XnXjxcQwHi5J?b$0Uth$A3qBI;QOrA@$X*i_fx4H27wcRxmot# zKRWU$Hqm_Uar^Le$b7^aEib5F;D2@g?D+c@9(_8RA}(De{))12y}CR7_45xu z6sRgFmNzfT#p?uy(f!Jqr@5ws2+Ip{@%q4H@Bi(_fA!p_PDH<^jwH4Nyj24MD#sJU z7&JjZ)x(>WeqU&>Eaq2f;s1z=j(v5~9Q=4<_U%-)=oT2L{FI z4E@Dx-nTL`(4lIH`KC2(v$dZ~3YGyS5oW|09Am*(m?z90Q$#Hg&Os(s0h3EfV|HF-7eIz~ci`wuwJ6nY%`Z)w9 zp>doWLEZv5suA9(Knl72&Dx{Q?##HR4vs1xP+zwZ_YyS%k|A<%``<>DV&}?)k^OLT z@)PoO&}-u|Gsv{?(QGe)ch!WpZccV*W-S85L0O| z20O&7CAb0%IF`e~T;Fr?2eo@Bu9v@;{PI_VZyLhUAYyZ@k=$Qq?7o?r{uRET<3tU+ z-=VGl*S<9-TKh6HzphLsaJmMKfhpjC=tku)mVSIDPA5{v{zCl-yJ>?6#35Oe+~+&r zy}bSho6Fv(ub=oab%g0r=G2y%2pL#V%{Vtl`u8)*K^%$-&Y&=>@R3B}9DA&Zfhz9& zepIP+u1)CKXT@iKQu!E9<-j}-KPaLTQu~gbd!_!=F~-$l>q+a1#u_2OFqy(5L*N{- z#Kj6qz5A$%vwQsMz2t4|l$zg(M7tMs47_$d{KL{ezq<67Qyu)`6UbR0;L0}s@)BaY z=P2IsXuR(+9`7L(IRxSP8+c^}0FIBbfBXoyG!QA@U3|j7RTzOcW?uU7!}Y~!3OO#U zpQ&COpJZW9zw)`Mc8_C{5UdObck&;)wdJpcn?JhPe7S7@P2xD^)p`5P$riKS$_ z@K&3*sTcT302nrKd?HpA5U|=nu>~-M5+|o|ih;mt_SEuXI?ZAc?>?JywudQZ*lpq3 zE(owxoSj9=00EFVzle7bfY#i8pAKhuWU?>rWBc`6>)(w^HC_dobgOpv%-=v&TJco+ z@Ng~+Eo04H_1x}4sZ|p<)lFZ$Lv)|KQ_7l}jLv44^eodA_f~mLIF20zcGqlpp0yNI z70LKoBcs}x#O8e5Zap!$6eT%Tc|IHcKyeis~ye zrKkf5c`%dHjwjeKHxYSgdwpEQc)IV$iw^7nA%l4cg9673L6!x%A`BpmgumFCPDxEM ztvI31X10gG82qfKKZK(xCKLdEzU>G4G_O9fKkOKyg)u+0K#A2n_*AKowe0B^@&dG5!>wrKEWDSg_`V+L# z!e+19p<^lq0I7K;YGuk<2+`<#-%bul#u*{8+hQvsb^>g4c-J@cwJ>urG(vwx=iBuO zb04=77L{kO716dgzjWRW<8{llOEf3VD|&1MUrC<>=AEig9V z5A7(mX3Ori7+9FzGwRk>->BwTIG{qyd1F<@7M*M8(=B*+v05Ae;%+22?Wrsnl3G&t z^O@}|V02K&P`SSgHPoySc znqee%b}l8>TD|ut!JBmqcFIS#hW3T-^q8%K5oB{Kf|fHAk1%Gk6Z(Aw03I6GA$%|% zOzs8~yD%68hdGIS4u^*$zKix(<(p_K3etx#IEq09T@T*j%=Qo%_u=@~C?=8skODfb z{?#+1LD7WtJG3UZm+^r7S)_Q?dMvEx=A^5FB)z#JI0HyVa%1#J%|c{{!FSi@$mhg6 zL+);RUq>3kjqT?*#-;;Rfm2A8EtsRdHa#Ae5;EdFAH9rPub>o@oR!ur4AYXGq2>j> zE+G9KPnHA##faC2%de@M8EiW4#(LEL(Pdf)xK@j<;Y%pK>%-M|F-v9f!8sTzB;oIG z;TyLB!b8LO+@n329`@?$#EqLHW8@dK)~9Ekr8xu&u59CG5iuca;OTw$fJcAy<{qEl zyOE3>XQnVe1OTN@^VZJSZi=r#;QDLtxLF*Y{nY&YM-H9v{9*fh%ir56UOxX4Iq#)+ zkj+fZ>F4$>v3<;0-TZE``a=KEnon>|yQX%o#T|8d;hbC=Dj+dsT>Pnnw{GvFknx)G z_+WKpjQK;X_3_N@r8x=|c-yEIA%e}#?_$M$*-rf+d&-(S`tUgYR+>-3ym!kq_DESI zA@tyKSb5C-Tz~NIel7}Q`&)eW2qhDWK5y*Iv)gXp-OTi0oO_om8DZ&9WbrSf%LiCT z2d3@~harrI*OgQW>>97<2EwPbFsGr;Lp>N4H*6Zbo*@ZI)%Tx{+W{8pvt@Py%Wk zf?@m_j6Z`T=(8pEG=(sX3<7Q+*~! zw#D3U>T55vo*tfOq%I#g>1Zd}0b{Oi&g?R@DbmE%{fLhn2Y!*wF&yjMD+c&gEL?!U z4W?k)!vq6kKne$brav;(x3KhoV=0E3$D_ZE56vK@0tc}C)ym#W+yq5OwFOELQ=((GnmW)zfG<#qm7M!JH@_xqZ#N>I)WM znL#B5fQGtnj;~+fFCNodO{KB)UyvJ@{ioAEE9^55Sec;hcw{W`( z01u7gnL|)HBw@J(*XuQ0VtyQ&0wTP%jyKltM}wr((*pzh3I&!(h)U&_ZP&}?yP+x+ zZk?F_*+OA*=5PyYvmI<%7BXpSx$BFkc&#-d9W6+rGO9n`o<0>1@sg`b?=@>{$E%gM zZp%^@lHYGsd2=ByrXUpL)0i&wThx|z5yc~gCr3W=Px9yT|3hAR1gU!i-STm}1}OoC z(LtmV{n+zn6_Er3=JFU#L567DL^}d;z(Rf!gINFw1+G`&hUgYix!~0dzh@~ip0Uz7WhniK?xg#4 zjTVsZ|1-4q5SC`2m+Ev89=t?j0|H7x-E zaR9r{smH6{NwT1jKJXjr*hu5a^&jXrTH^_OuJ9b&cSsCiw~8R>vjVpnNTPN{wlW`{vV!Qy(;B4U9brcu4z}bOG$bdMjpPKMSG8DVU)@wuOukc7<>a&>q zARdUK3Dt{j?VFtg!%RsHkAGfoYKS6$A(O&T9t;q2Z>AUqEgT%YKSdtJtxD@VlH6WS zFTb$kUh==(*e*GBTv*)M&|YE<@!Vk?9O)N4my7)!`>s9pfTM^7mWl{M0I!*DI!9?W)D@+5)vD%uVJsETo9Vt7#HpiXUff;9`tWUOLkGNINBJXX4c zXinh6a(ti6Lb7(l_!jLp?`t$*Dh(d$982a*sFrJ_>Q*LZoFSWHf1h7nRJu$HpGfE* z_GTttD+Yhq{{8D4uZEQ$Ri@>Kk#+A)kIFErMTeVl#>RGJzSLHIA`bpgUZ%%Tvrv_I zzKpU5mEmXd)tm*+5M$_dY3|$645*_CIaL5R;YN75jfEN*!v_vv-0IIHNyHfIK#&dW5NPwca2iV zC)7i0&IzR?EEbkl_|0kDG(3SmEI z9r$nsnnf&sDc&f=D^tGYc4k2kFB>6auw-Jdb^|0)f?#gv91e?@1?2O>xF3 zOt-%Lz37!OiWyTWJka%Zr~m*U07*naR8>{fIv8Y-2{#W=*jsyoY28THxzJj!@5X*T zPOtHS<18EybyoDz5PMNa4|8&rw!RVGm`8X-89g4S6Osc2gg)E|fg>8<3lon}!s;rz zC|g*GKtNJrtO3qJfDGYAAV4sn(O1zFG2945P#Mq!Q=kFHG;X-m>nYB*DCK~=0o@Tl z_-6FVL@<@?j*rHP?gnkWe&>Z^@y^s6Gancq4`=pE$KM>_Sn1j{(w}&pF3j*Lt zTJ;-U`&NDB+MPQa4IEfACKZdP!*FDYX+FT>a6De03g@Sl%t4HKVCz)*w`f;T22|C1 z_$TA^Gyn<*Ykrrx9=bm3M)&z*1|qmYFrAAI9Ar#y!dJE>?4HC#7bBvtY~Gux9?wi3 z;JBN&lF|u}uax=A3vmoJ+V)=yeK0{f8Bsj}M)F_{h(V?-vvMTbr$yU;TKcd{_gQYJ@}^ zj6i^wVC|bzQ8|f7_UrouetF}Jx-~q;g0ynuu}ODh93l7b?0B!=f@{Fk@!{hbNC3cU z4L?|fl+aW>_Yg+Xeae&<7Z3{oC^@jBK169E-CxT3_Zy@6|6AVS*0M~)-i!%OX9G2IY<{5q}{RV}4``iabcJ^Me6jeXMkbjqCQpNInR z_cATF%Bc3BoF-0;K~+G6J(XC`=+KdxP)>%&nEgb|c6=!GLTqPnnYlHq)ni2(Qx=ag7%|;*k zr2m=3)G#vv=I=2(mb$o90uiDH9?2q;19SuimiCz9eIN#8jJS?m0-S?sm>tJNw$Bn| z0(?)FvWF%N1+MSH4*K}W;2wEyA5GXds`g^-n>9V+{A_K=7=$+Hlyc36?AldmZhpQxtZ9sxTS~g6Y-;9n?VkX0K#jkh8#rm` zIz!39hE z4RO~ordp!~KfzQPD6OTes+`CaKE)0Mm}#N%nrv>hHU?r>w1=I_XC_8wBStiOeKT3< z0Pr(b@sWK((*|@ow`(@O_&O>s0E}43m;mnWDFSYn@WwKT zVEr&haSS7wo})Opv~cJcLBaBwp`ty*I!0W#ofqGtnhM5o?jYued)IShjK|r)hvR*! zD_9)9sIOlMO4{oePwx}D&Z{Q|u8z-V*N0Qk0OZK{U_4=wk{^j~A71>jwGzkZ-pLB5 zhdfsEezE|QD>U_J^QVomVUZwUNpHTG+#db@dh>tZeEm{TL;MdYHjk*=X2opE2r{wj zP`9<=tZO70fO`beO^&+ByB?EdMuHK65R=<2`)!X0d9wHIbSf4?6;&T41r#9$oDQ@I z1auvALP&xk;n=Vw0CXML5h4M?y_9-P=tO<>AAj$UB8J_8)Ify5yLaa2EvOs}Fu*jw zpr{F|BZeC%$~uaI0zbuV!)5l^#PEKWvdzN+zB*Z;yVft-g$OPpcbPhK|t6=c^xW~GLl6P zC4tD{wPkVGBC?uZ$=kL3_xBhyN#d)fb5)Xs?4l%e*>!$^)8if#A7j~(-A{Q?YF^jo?u*&TI^EE57*;3 zHey{WTgvT%?8X5LBH_j{m7>z_R&#s1)n2w+ovg(y4A_-qkAs0x;{fUz04#KCxfLie zh{@)DYKCak`#&^p@y;&WVjHz6hLncFI8Q)f4T2v-0!jvLfZ71y5UTG|A!37l`fLVd zs!$v6j96lcNQMw164;30ymzUFNXEk3Gir5v`)cEsUaw1oS!~3vB$vPiB&W>-sAm*_ zW!!ddtF5ep7n1|7k zsKtl@4phtiyuKuaLXZqeU?Y~BQ8B8Q?v$&QooqczQA%SP{J8Ab!9al_-8>A`jQ|>h zl7d&G=3BBjOSaaw49CYnq%)G+DU~g*PD%2qXEBHSBSB-(r+%S0W|{z zm@z6_u-Fe7G$CXF5CKALFn2c&s3RgOS2h-IF5lGOL@}H;km!*qy7zLRWe;T!045^X z?cRX^w~J1Mp3u~LI|>ID^&Ev?joPaM3he#6L6}nPq_ADqWYmtq8M<9`+F$@@Ols0V zh(V$9m=K0i_gJ!&7SitML1&;6sHtv^2`B(`SRQhS_y7;Jd{wGfe8oid5bq>xBz+%b zU!D{#;cN^-x?)QQM2Z{042=0K*55;@m74;6?bW zOIWP}z>~9h?nob(_Vp{cxeEZNrtq;7{k-`%ui>R-0C;#D|M)SODv0pnBA#CW5jaCi z?Fa1M9%JoP2ETl+f26BC|4`?*hYvg&PBKDCb$%!PMw$E3R<3z7ACP34NS@hMGT!ix zf9$U|6<-i%%g>G9>dr@%1ZvLo3l|ru5SIo*0T4> zJCA;R;(s=?hn%w;FDT!CYyFRQHk`9>@B5fC&UlzUzMD>m3bCM-ux}2NV2o4xSk=gP z!4NrS``QRaJ?Mzi_hP*YasF(2|7You&Xs-F?ij7Dr{{9{+-EVKluF-g3&Ptalw1H9 zGV$nGU+4F|8H(T8vjZZmw&k_jC9$zijeFz&uE+H%w>G|X*C>csM$9Bd0Rtzf0-*Oc ziXnZtZVuUC6uWx+`j~1w&OY%o^3!^Dh%>3;?FyPcx?5fRU4N!>Po-1)`>XdpQTv{} za*y$qUM=qUwKwIu6r@Uimd)g)E~SKI7AXt>e~=U&N}oSn0fYxBAUL`ux%|7Nxr)k2 z;pGpU>P`&d%Bs>I0*9A=%-ds&4?@uMMbgy zSiMzOW3H&b5X~Qv1pp2BUsmrlmv@f5eR2Ooo@Yc0pPnvFWIzmHaXIsWOQ+r!&oIDO z!*6ISJIqxI{zs0nf8-riLcYA9{6Tf?jm|FqsYL5YJNAp*uDo3;#j)GDJ#ir&f+_V75kcSpckT$pJGoUtO-VNV05(%)xY=zaNjDBNk)+WK zyc*n+U2e#h3xG$4s;W#;07M;4I9ji5RUZt3sOkSwru z-EQYrN$Jp_*t8Amu}sE|cU zMY4!0@78-tBPJ3$U=fBiWdvMl+iu6+1t2MM{c;}z3^E%I@A_Lxtk4LrC_(HdnWU_t zWX%ps$=E{8LoA!UtVqV_Z=agiZ{O1hc>@fPI_fSWfl#7TMpy=8NX=2RpeKd_kZqN+ z(})F9DeP3xC<1`s;AVfQt4(yv{pB~9c<=-zFRaDF0|DsrZcW?mtaXB7XtOtNc5Z~5 z?aGdB;Og4FJ=>$3PU|>5-Tz~;h0Rt!k2*gBT?GKg!}Ybk-%lBRpYWcJg0tkx#=sy0 zkzELP;*myI@wUV0;_7raV3M^5?e@dN(p8~x^~ze(+TdE;%_Te$Zl(r8q$y_Y2KM{L z3^WE-W1U+}0B{kFNHG*yX>GRF>{hjI?T+kp_WEX8vTQdO^?j;duq;PWlP$R(x}Ei< z)D7lwVq1DJlnFm7^~6xFQq<4;mFPbw#N|IKHlG|lcl!7*P9Ma+gPrB_cV7IlJ1ey# zqGv zTfa0pgD9h1{ltOowR!1kxK+j}OjilTe2z;_FAQ{;qL3j(OqI zp#Y1mw!~hz`6OE&7(#c#y7dwZhL$Gu%| zVzt|c>pnRIQvm@>9V~P}fTiH6A*56gVbjKyHbf-1|DyJ6CLA6xw2^}QD7)xD5)_WJ z1q_){-0s}|%hd0F-+f~kLNX;zo!n7#4uH6waxPC%#QuMl#2!bzgd`H?Tq7}4;!L4f zx35k|EuBb!z-TYa&PcH))BAsw&FFZzf%5mU{-y5i@o+ZYMmJZQ2ec7Z)Gew^96Nuw)4c+Yl-XSsr1I9b3egzXOMnCmigT;+lla6^==AI zK)fNBOMP+>sx=pHum8#Fjqul(o_t&%zW>|iT*KN|0w5#RxjGX!4I-gWw^MUFoG}vI zxjqwD?@DhoYwTm@$op`%i4pI<)Y;ou{ylejINX^?@B4LSY!qi}FbJIYPaU1($pUgZ zhyV%B?>8e7?P}}0QucJcY2c-|*p*vfOo-&%=S(d(!v-Hw4zS}n97r?9;0nB2MK=b3 zLunkzf&rn#`6`+b0PIWP)BqR|6W*+$62RHU!oNY>1XHm8*D(5cKinSFab^G-2RLrF z_m-df!1BBG;PSgKXsUN!^@3i53?MvnCzMd-#qc@?lA)@ zfxfG(y}(KYIzp+>%A*OXg6MT+>u>m`;B;@*5o1uSiJwl6JpRN`!!(Mo$Ny)oUJu@$ zqF4pP)QQT!$UJhiksSEbmoNPt{bu<>iNYVTH%}zS#vgxb_)|lphrM!VX=$S5gaw2~ zrX5T!@AAPN0tGZ2?v6@Z3x)4sYsMVnU^P9C;ez?;=ZqsdsZq^1U*CQmWdLJF`ZS-^p`;>hE3SSY+fuM} zY4l7mWwqke$}T2atE^l!A{J!KPzzFQdrlY4K}d$JHcH)onBX}5A>=C3$v$w(cKYu> zo>iXA{KUY>Je_3qM1CmxF@9jYaEuM9{cqI)x8Hn&p}lK$b5C|X7H}H07A4^aB%~*Bw9;oExNuR_hJNJN4cPz zN6geim~A85M&(Te&Aa=~uO`B(2?94oa>izw1Q3RyA5$XrlxmD4PoNgcZ$vG4+i5HH zsFs?>!6p(eViA+(F^gI^S?z60Q&mj`AY$Q$VV|K&RW)7fRRP?f&wpmBif)+5KSJhE z8(Kw+Xykp(BN;wa)ZqZoq0I6D11f+zx!csHKC_u$uicEd{E1jUAybT)TQhdMbsw&x zi{wbx^UBTYLTxR1V0nC!67Mof^kdS}AOal>NOv*V0s{jjbVE@U0HUk8n<>i9A-@k} zjHir5@(fQKm~Nr*W;gz-liAOr!TjiFw32~z3>7FOFqsDHsSh?GA^^ymn9hPx$6fQn zS`V6|ch+)Cn_J}Ggd=X<+J0r_yqiu;K9U zccN7GV55N#x83)o$viX-VH2z0$5IIr7&wLF4yaCACTKpT}?-02(e{yp2FWVR+vh#&ci{K?JwECn={R z-NT99x2KqjOn*;Vfph2pX*#pjXw5f+ViJPxcNF>2R3XnnvJz~yD+XK>#L`3QkwMNF zHKN^u&N6BuVsgjiSv$kP+cT(4@43KG9V< z+EAr2V{=mg5FI_(P9cAgXQw6@(|BCV#Tmx-$FeCl*5oyFu=%mX>||Td{N5`!zJjkh zB@gmPoN000;xaC*j*qJo+ibGe!>|Luq;TX$Rq==vw)APbV-3h^3KeJaZ&yZ-EOQ;f zM+a`2lVT@_mXE(($NCBYeDYXnZnV?`^L=R>3#$O|+#DVm1!o9ie65JLb^zeXX*@Fv zO@WYjzJ~9wnVG}G506jmOB_DlEtavo@pf$oRRB2?Cx?+TKm-xutxXVth=jNkH*WEl z02VjKu{;bKWmZ&wZ28;CMG&Ix5qWzYGz!25y@(BT+6OM3KkCLKD(ie|_)fS_R#PCL zf<7d$6KDX_ktYE#}GphgoZiK(s#La5YC~;`?n+*qe6=r;9xc->=+1Q$AcMEq} zAbVd?RPOD}9?IJhxJ~c~3^*KPEbjAEEJ<_-01m{MjlqDShjF2edJF&)gt-WuK@heD zN(5-YVeC7M8NybJ*1sbb_K9Np9>MhRL_BdC54k8bu<#n})q5P6-jpb7AdnhHLtESk z0K~gv;?6`g`#z)&;dlpZ4L6>T0kM^g1`e>%Q#k3s+`)~16&G!Bd4^&RbtpcyiGd~n zVW-5~2Pja$DL%2whPMDnFA={zORfrr_;8sIF9S=`)7j;@QTDJkn`X9HJk+?2EdnK( zIl%3Gc5+OKx9H`2oj_Q z4;ZyLdf!z~0ECu_=4h`ED}H2+(l&s&nG+i()fQ1*#3H0I5Fa|iCl!oINEz>&qQ?$_ z8!>0>Er||60Erl5F&Gd@tVuKo044;+B5(*%C9&Ge8OnAudhzAmu<>o)3hvfWgBzJ&-5ic;rUms(YVC<5xHAg>0Y}k% zX11v*5QOI&`2H#YoE){EI$)a`Bq`ss4>^m4A$Viz=KE)t7e^2&2!Z8$h7{o!u?j#1 z`vp3Dl!gsP+0oj+&VO?momh^D?Vij~Ohdbr>4HG&05(lj7i4u|3t;B3p7=F0ogON* zB@xNzyA*#ZzL<&QSy8(}(SL4bx&L5no-_CtPA5O$k0ocG?7n}r)PU)2+vndnRbFdN z3tQKGDj5>PmZaDEkEx(Gp-$?|{t*wY`9pNkF~Qmt+zzOmVPg*S*xq`OcE z00IqN^MP>)VzcdLjR%b?7}p=$-&h%fAH$Pd80qwbU*AOY4t8H~ikjcl0HzosJL7SM0Jt^Xt?B^d zn#@kSie(`&N>c!5M8M!I|Jso8x0*pL`p+^7)reJsy zPfR1PAZlTI3ylcGpl5M#s?Rj10~X%Nbl;yTiSl=0Uvv=tty*n(?dFxGx8ICc7?&S? zq%}DdN`_ij|LY4m@-q2J{LHiFrw9L8a{lS`hjlIcAH<^V-Tdw+RgVF8kFIjHf`$VC zDHHRf{cN~}{$hO3<##v23rgkYn?w>IC1{TR?TgLD%D?7|Rruv?y8Jp380KHR*S z$7i7_kc7({{c=|-fhXqsaE6<^SSte$>?y2NaeEs?&{XA#`GL^{=M?N##~X_?BT1>U zJI4n$cgBUSq1>J=t{pr?;8=MmyIP%$+d3NEspaKkM7fjm@fwlzB6{ta{XV8fjJ(}lOb5&f^lOLdBWG_kp&nu@_>vJoXF zWH*zlv>;4%M~QL`azk19Efbm4HLQ?#XJU&K?i4W6hML^$EtFp2u9>v zQSlJECS!e|syhGxAOJ~3K~#FzXe;?OFrrwGLjwry9I>p4^e`Hrcr9)nlr;k~+g3;;$!*zMY%LaP$)ZV#3jh+t4ir%PUX_`Z`||d8 z@0lO@3Isq!>r3lns^E7zjM-v%bxc%*VUG z{{sw2syJ-H_WZzKTtx9FZHUXfQ{YrdDor$0Ss^`y3X@YAz$qqm8p4iq0xx@_py$kF)jjaciq=#JZ1u_hS!J&% zBxK9(`Nvlu-{)#NE1t;S>X{1G(qwzi-(8}m1|-LcU3lmIkfaq+cPp_^2K$q~N^WqC z7r&=(tA^Tlwxsr$`evp7zs_I#zV9>ce)fzwGzO`lX5uejMYRnAI$qd8H=b7h)0w^x zw1$lcCuYrO&rKhi5v7?ng9=Nc<>|i7Fp<9m~5AqCXGym)A%n}?1d_d-(7Ng7& zKJ))Zo4s2r^#An2iG!r5Z1u_hTiEMvCeXC;Hw@|x`(o0YYku)Yh1)~?Zr$5f&`&j%d zvAxuo&Iwmx4DpF(Y^Vi5dP?I?E-6 zrNu&={^#KigKZRs37@p`T$_7fp1@i>p|i8@Nw)N00Sx=eCu^|Y;cD69Kn%cF!sQndU6U+ z><)WDzjGCvH2^rVOZ~}P~N@G|2>ftG8E(bw);pVy2W+tO{2BTL_ zPnvUi1WcTtIm4FvbE?&=Uwe8_b8Z+O53Vhra<31LFh8YT|Ja^ZBHkSa?<{4V`E)mK zxX&R9sA5O?RaNwf#Q0|>d*zXl^~K<&+v4xZ?+*0^Blcl$^xw6Qa4=8vzLA+;v5G@~ zGJWGK_FU8Zx%zYUtyj)1TQd-TDi8tHR?KoBOaP>^+V*zKYldx;owU*o6;)ZUlwq~) zI;GcAszt<5nJx2}5pAWV?Rz>eY{ygumAOVczDC6?JON8XJQaQs&&;#P0PjuK^`s#Q z?Y7r;U0JhA9@ZTtFtNfC^>l^Ae9&$~GQwOH0lm{YD#2z+ za)S|zmV*xEwz#8%rK)DTv(-YImECHiz9Dr6*zi+u_mT$&51kEES;JNo8`@^PU2!yh ztE6xRmDzG6W~5tbY5UDS>H7%~&@}ypEuR6NfU0Av9{@TIwpt*-7uei}X8}O5-5ojR zdky$x>c)J)o!YDItCi6^%%KvA6@WO8t)xe&uP+mkJxsq(_JUx_aIj~yg)I{d2mn)r zH#;T@E8)ZzM}(b_9Se77!YZq!Af5&Q@~|);W}Ma~>Jq+%N|hR`fn_k3R@DJ%#h^#p zsRm0J5DXpz3lPyk44NjK7_(EJO>3QXw7L~+AC@9D4QbgLE@2{rR06IFQANjvYRc4_ z*Dt#aY1Q&rJ&=xv^=($&G2lE2ibXiqO<`+uqtep-Q zrPjiVxl@|<5J(a=T3l$Z->j|%Gk)!j<9F4<;#QcHDAiH0KtM#r?p`Py1k^gTV6C8x zK@+b#IiX!rMsM-fBld7qu@)o*#idcBla)O1;fHU~gXrZJfS{=0EdfG~&;*o^I-R)-FbhzaOc5)?Nl}x}U zt767|!5vFQMkpDgM z=Da_p{L$I;N7^iA3-T#EvqMPLygDZ85dhjyJ9?-HP9(T}V=ySk8G&`1GKlyq3uimi z1B1-%HLkpGa(jLPt|G6m(>JfcBlIWmnJ17-c0X2Cl~2pPAIp7Y|M>wixb__X>7}JV zTVJW1e^Gcs0tA)7h)FO9;W%uSLt){uF_58Z(kG5be=DjDH^2amKTQL_-+3}hnk0NP za_c+Byl^$^@`%-81b~<#m2M$>n2g^L`!i$^aGRIE#g_Pwrk_ye(|w{d9J&0CsoKmK z`RpN3#n}n!3PXPL3Ih2CC?eb~;>#DqF4lWm%!0xJl2HY}^&}>9V2p3u^p)4NhNDAt znWa{c$`w07HTBaifIAHvEoX`$q8tdxKa6M47Ae+E+`?auR{3B%SoJ4Xy`7%wF%c z7J9p& zfdkbWH2+_$g`BfAlp6nnHZX#7B?NPw*mIS)ABL*r;!nq~8Q6BffWa6}_lHxWE|;-k z!Y<>^|K%0T_LUJ5-4u%CMsM`V-*10mpm!e>7GS=HnHB&I{!!ex_@tzGX|}zVo2~QjK_}*;5W`7rb7~5Uch&5LJ}CDb45jj>Fmv6 z83W!unf$$x|7C2?FGqhf5gGm01n&SqZELC8KHp`*tCrRG*B5U6z4#A>O9jt_D;=T- zT7cd;iC;R}O)Ie|#m;UhDI1dft)zW*5X6{H(Z>sFUk3!S9kDKtkjL=K0-m`INf__J zr@IVAdi0)}DdE4p22UVm;B!y%(F_A8_0qYJJ5K`n}6bK)P)A3Nf6 zl`Xz+@UGk+6q8gl2fu&e)L~0Cu>K1JHxv8)^)xXi@3llRGWOPti5eJ5M;pC#@ZU9# z#YxSL1h)^}{9@!r;Pc+sr#@9Z*~1b5rj_!yMi1$^Q|I!PSfp^#|C4I9=3X8%0-Z6+ zAFKSQuR40Kn8C6PCyKh65BpHE?Hh;wK$TKjH5Bs*>rX_NcY=*?T0I3(}hsb5qN5U z$h}q2=gG&F@ey}4)pipZu~B)hci08>$LYz@P|{>^ z8}pSn#S%Vq>0CRO6EOy8TzOsJQkfbwwb_k!2`=pLx2_l0@w+v_km0GI;rI?xSoaBCBV zHUNyIaA-Ir8n2d7t^ts)#F2gv%-aFwy2aUF-Kdp;~T>PD+o(-Q%g)0QrezP}Wt)^qrR3c@=6eyG4p<8mYs{+!(T! z)45#sGeKHclxUI#nw%FJx1y|i=L2LK&$IPr1_r}Y+M?1v^u5SVaL&50@BqAXf=+(Jy4?XSc zGv|Fo1ll&P7qHR9Zn)-xsE)_;dr3$Ss0IaG^$t3CD9RA}F` zn{u@X0JbcTOwOu|K-({uMzq-|MP1)-o$j9#F~-<-iIE~s+liz|8WZOf&79}eN*TT* zj@$7pMO2Mgu5&(Gw3!r5vwbHZfDv^Ph1;>H!IU&tR~Fh$CZv!`y>r9eib3P?KxR9? ztR@&KnBjM2xsf;;6SOy{w?%1FF4RTkn&_z^5_cD;o4i9mU%{3~J<<>Ku}^08J*_?R z!)IS(vDJ3lEW8w5Egb9j7KT88E|k+NJY@nbC}rr{-Zz>FRR-6|T$rCcY^yq3`9SWL zekj;XqhaGKWh~zXfL}d=ckKzg2^fZu{7C%d8RLnbb^CVq*0XoNv|fJxwU<#Y0#8lg z#9pWhB*AmT(M7{4yn8aFmOl?HR31LNC`wX~d`vxg1VapLNvZs=#*Yfj_1c4Sp$|00 zqP}u^na3RvlN-5XjiV>UFaz4~{zAF6XcZ=3efjX=V6V#Pmj`FPy<$6o?at`mZcQG( z^G}1aef;Gm+};L&_f6q_`$E09Mkn;<6Ir}x2h;r8)X0MiBkiCR>|y z{53X!m*2SgwlRHh*Z*@o#n#BZKRL;B z@6{&xe&+8NCZ8#^Hu2S0vD5&7U-_r@)VHtU(gpxLHBtHK(Tb)(knxOr#8}MqptCD_ z>0?vVcgG<(JY=CgrS2X~Cvfh_GOPbcxnn`bI{d6UzMFbtF^cRf+)dvs!j(&Tni~ZH zQNMC}`3Lc35c4+rg4=_jz1;%)->Itr)B9S#x4-9CJ(uL{tpcvwWq`cZ{2MbAhjM53p8Qb$onB_V+-bCvn>F2aT)#6vwtV&7Bf?5` z0|mRngwFt|Q5oq0V<5@w#k6SXaDr&Dm5WLSYL+*~)OI!&^K{G&#H-7_z|*P3T@rD)O z!Hl88@X6!JFGSxxlF1`Yj#64sf8?*)kVaDKDFBcG*;OtB27p8`(b8HUISR@x6l>x4 z9~(eA3fu>ZfQ1S+O#sLmIMg4~9^M2h*)ySj?!CE>5B{fU|G^;fCZS)YH-0#}NMXS( z8^zw6KZzJRrfd;^&QcskqwH%hPs^fV3}z~Ky{3_@V5 z0?z{j;&BZ006=RNwFaaDXowCX-w(z>gi;lj4ZrQSu2e>HQc+Tjr|cLDRDeV6$IuW| z1pwBYSZ#&E21jy;YH%x9xQ5wn2!ZWaWNo#5ZGt(wliByMeJvc=gaRDOL+bpF_Z`A0HNGKy943)^-Ja9tkBdrV?9oc z`5M5W_u=61{j+e1f?DmR*J;y&P$83HA1!)T@C-iv>6?02n&<3_|4~!qPTO z3jkCNlY`I|5MjNFMh74$3U&`7s)2yH5}uoZBxDSH_!xR(AYiqMzrT&(!C)sJW2d5L zbJ_ju7%2HBTWY;QnZLSnJ_vp{9yczW-Mk(xxNdypCwk+jQcyMgt$CKonsbwx3{&{lW7!Qce5gK@gie4#d_u%Hm;|jTmdm7}qPJHh zNGQZ)J95=-U1m*E1bSQD;-?mu(F{MNzO9c>0L-GsP5;NPQ9GKB9L6vat2WsF=0GNO z!1tmvTmBE(m2GxAH`e(LV{CU#ANkti)o1)aF5PbaTQU?iBO3FQxm7tNA~Ormu2nA* z2w+y)aJ?<5Zvmh{qrwzxM8P2QO>bbatC}tSNoFTOaQY)_03`97y0Kl3^+U;VIz2|g zFg%qprdUp18oQ7rpv=r4x;HCpo49cW0U@p9?V}is0f2Pzw;Qkm7z+OV0ES~=KuO^H zTd27^Pb2m~Y)XLZ*)9K>#)1Tq6_ZO-%#ARHU~h@~HW-K~LhDoA+8O~fD9vCyd@}=M zFbAS0F-TIE^oX|}>jB18=gdUeiIUIxO+E4uC|5zPVcc1ZHONnKJU#>(hNZ*o;FUG_ z5-As@gqoeNk7e}z_17Hb(p<0+UkS=V$OOODoL*a-4 zy+@F;A$$~Wk=bxt~rfQe#ko{up{y0BD$4^I;RzF{HVqRYs(84 zcw_One&zU7&`QCJ;);z|*8$+*u0Rs*did!YKseZkx9vhygCwkNrsI;>|iWWU%T}1UF=Kr})f-_`wjKshgOb;*AF<*O- z*e>yUA>5Bok7GCrg(Hx-YU5%T)X<|rJvO`%^*2xfV+p4GraU}~42FAD*3?jU>UF%d z3PI?P;^bHe>i#`-bQr^-qtIU1h`9n9*pc2sbV$}?FvZx5ZfxHgQ=#mudn|I<^uYkI zbCesU0Tn!eyv?@Gvoe6knwgK%K?AA;EwK)|GCpmC0br10RlmOg{>z;01HiEr@S;nF z*P6IUGhmotiI2rTGUk_>Evzm#>T(4vu11@OvV#ZhMAVvVxtc-j-!wMY^i<-5C$qnu zOYUiRysB#j_O-n1s9pq}o}KroGCtK(;sJo5W<0sL=LvsA;piK2zd3kgrCB=ogAL6R z#ISxWy~-w7IW9U*`-RK0K$AW1I5_^1vB}QZfVJ8B$>m>k>sh4;Q#hVG6Lsb@@C06% zL9q@1Bfa75AwhU$4lCs_UAW$XB&Zx8KZyf_U_jl%*I&a{8w$gxPxk+A@(+4;P5He{ zvUT76e-hVfEO54B?p6$4UYccerTaMW5ixR1=2Vr^2by0UxV)g4K{@{9tpiW^L#pWy zO*OtfcKKGM-V%vpmyW&58RwkgH3w3` zBh-)XjpF2+)q<* zas?X=fDqAebQlpWJRmPt0D`9C$WRy@sX%1MKR7#mOv*h0ZoutQ-+WXzG1o*OQM*+h ztT#vd6(u$tJ*VI8zzYC|i7ZC5V1O6k<`yg$U>HneG6zQJ6mek*1qo(A&p_v)nsyXW z2>=2H`@tL&`LIg}2%Zil20a0TK?UL}&I}`_0l-QF(-jC$Z2!a7xs;oZ$Fx-5-p$t> z5TL|xcogXIu97Tb^ji{QXWcr@fdbZ6gmMb$~5v4xpBdf zb*ryOxBK)PZ<}-$Mh5&i2jgH*1p~tr2T)qdY3le-e{vnM&2&4Oo>D^=C;1)FGPKhWOA!Mup`4?Rm2t2Xc_*Kd5) zz1FgRuACP2jmK}V!BY~Pfj3(9PP@42l4&6lxGC}?@W3p|R00E(z)G(n-Ufj;`o#9A zM?&R{Wn@q;bgC<@l|bzf7&?P?LrqX6K-N8NGNX471^T~YI#0 zIe-p>FJU?142rA+vjvqw5E>oK)*j9kI~L3)7+^W!>5qVp=@)I4#v{-HW}p?TtxGtx zJyI_!CXbjA|ch<1V>Efyec>)hgJVX!ZoPmK!+S z6-1sdI=PF<@#42uxrg z0RmJ8s~yVTQV@ z4fuqj8AJ;*7YUfV-rQj2XxO0|ufk}60Un_e!0M8wYS8N;?UMSCq);=&^1{wWO9|l$ z3JE#gT#d>A20j2OcI?`Rh;s2b>!iQ_dG&HGxT!Sula+cNx?rb3eIN=r06fWfw5w!pgb z`X1_D_%5>r4)_u((4PPRFF?}`D=TROh8C8)9%X*KMP^{^_N?k>j z!;PpBzt5$N04JR(K#noEYEWYh?vWJCaF`BwffjW9`I?kKO!rz%&*BiI6-1{hkQA0< zTO$Q@3iv6@XhT-L~IaH z$@3B?6eX(xkPw_qA)73r8f0)V0aROSv)Gb^LI02@cXKcVO4Ht2Xf62LPFV=~ZtHcQjU3resS8gFexW?k@vG0XMG?h^7HR%bS^l z^(a#ySa3VPUExAX)d3@bATG{}=kCDg7);~ir;(0urmCu*K2nWNG+bfXLg`!?k*127 zBEEhJCPQ4uC(mLi4FGF3{M98mJ^*xrkl6PCqgDw=>vmPeiMp|Q?04h+qjm%;fI~s{ zbDhT`Qk9Z_D>D5pV^O%u@TGm9XdI3~%MJN=4&MD%bWR35b$#NOtNYWWlVo?O@dLgt z80iYtxD!Bvm>TE_sqj}8PIhK{hCH)Jx%ST8g}HHZ6{sAVa!(te>*Ls5>FDg$$te;M ze*67n8^uZ4(&bt;_{K%F2)cq_KaD+o08nb<>#w5aK;ih66XAiQX5uRsu-<~g@N36$ zW)~RHaq-_?#cU-c1*KV!rbqE8HgP1*{{5+`kEs7yfA3NGZhoZ^G89kcFr0XVia^&f z+5uiI!14iLPX_z4VVJ4B=^!TvuNFfw%fT2PA9#3BGKFF%5H9X)W6c79WDIA9!c|l5 zBU9d!8sBK+W(7ph6r9N;ZFKVkc&!9UP#B)bBNqjLnuGI21QPr{P%RJV3n9_|XcoKE z4}+S_U@8j+*d1KnM#~2nMtg8%r@KeJFMAj4{NwsIwmJaN8^PIpNV<5a6Nm6HsP5Cp z*(}w5LV*NGv6}tgyDn z!0tZ$+No}eoL^jg!kfttF{eil&CgMAa|3^O9fHsk!za&#$B5YyzI_>id|*$lRJ+Y< zh${HpIZXEd4D%cQ?uAoFJF3ps-#&OVdB9mq!Sr%Jc>V05rXE4*v7Re~`|ZUZ*a5zC z6>}v3czgoyKMc+gNIY{B*Vh5y&=5ZISU1z6y>R!b*mAaynfb_-r}kFv43p2_0M%<; zd*4)fepk#jy59Cz#Kfe`z!lqMepS6&R)uk(9obvaJaOQ!R%idbzP(9M8R8lkpey+J zX?1TOXQ1uY=ua*jJ0zIOm)@D56H`GcP8@;3&ISD+4ki_1g3*tZmFuhlV2TpIBz8xj z=h6SQM^eUK^0620$Nc$M-f*YoE&VqYUWK_67gXO;(93EQJVwH0l3S`{YoN zY`2tuoN>O74FHWma=*c3_GtC@6MOepjr`YMzx0FPkG5Vb{k$29oNIagP;`4Bv+AV{ zI5xFYF)8&*JKkz9DN0F+>HuV`)tae+0g@}OrYT03a#fivg8{@8OE4uG6QZ|bb3sJZ zj&&MG2V_S>LI-(0zPd|BI3ui!b*H{9O?9n3R0vd|+Ll>4k`r|u3|K3n-T;86gNfWu zmv9B!W*AUR4ulnz%{n$)4|@>H78SRj`#mxOKx5jH*3h8_rm|INwpf*XtzBy@IF$(0 zT0^d_*4J4<2E4bBShQ+!7yzxKR!2oLQZpV?ga(k$v(4nFh;yDYXm_#QYWS9UWp%_N zMXF{-ud#%%R0ydS8u@sjs$?r>J(pRrbm_?Ir7fqdz>1*hU}zA70D!FuoK83yU^pAz z+-^X+VJUyK7eiS9Xj__@Dv-olOBdfdAh>zNahQ>rha zOz>fSrG(;E7^G*T54&KGpfW^s0Prl7owuYZ3qZ>7l^qvX=R?1ri6ElB$*nU);$fzu zS`3@WA4$zIDGV4Dpi$Xri6SJmQ0Bf}3*D_rNT?zEezSz?R+xS0sLoWB+@g zs!iOg?8ux&!kdAI^441-B|z*TC5d7Y%0I;pC24zQDO>=ArqZq`1#7WmSDZGVUfM3A zAzYN3xU&MzAtiJLXC?q3qF`n{R2=dHObvyP?b-G2WOHiUrAXc};rl^oenK%L?b?Yx z(bB+yr6NiiK&aT*lMiFI`}fr0;qbvzsKK>eh0P77a{yZM^e zuLi6!XGUvF{bnx(vbtMZdY*g^DKWhY&LAZi!@eN^(3Hf=T5m50sGYM4USHc(or3RP zT^eosO!7{;wQcq~rsn&Bd43^pdEGtLG?HspT)+ollDFH{$6bkat03%>*D1`~R#$#5 z6UDB+koCJ+3G8rBHI3Y=3C6K~v!2wJqi!P5m2!Wg-qz-5n}ZVwWKWU=V8C7E6&1W$ zms`ut7ORp_)Id`d4S=k-nlr5>wq500O2!vjHNj#D3=pVJ#X4=}5M7}ugOA(L+-Qq} zpiEnCyR^)Em=|5^tlVxW4vC+8Y#!13pL+Zchen4EooZ+XHTDc`932xZxaNOt887d2 zxH4}e>rVHB7}G`c)Vh+g0QjY}b7KgSF;zxRY^d2zPuY9yFE_MyK%A|-ci@(Cz~4#% z44j>%>_^2u4GJ;&_v-xf_D1%bm(K30L}DnP=()UazdhFvN8oR+;nj68;He3G^jN5& z_;)w)LYK@pgio9bD?LH*zsURVSHCkF9}Q(@w= zJ5Wgi`}^>lXF>&{*H-Y2>kx#o6h8X|dgCC%tpdLKTG+Vw=;dV~0vOJXNB?l|?;RQV zobuW9Tt8MV0O-+iE(e`I!g>cw%;ixr6RX4=f*Fe;qeVV8HwK;e7`~UD8MHsegv~v7`Ya_S*89;*G&k z=BL%Gzcg7`nj}YIw+hGaUK-zxAgwHz7fWAMc0ik7r^x#Nd!RQ+|Uh17@2FPu#9M1kl{Kb!CHnStL;Wh@BM|=c$Ojn zT!uj5e7%uvSGTjpB5Q0KB4MT#p>%?VqBjP#EP*z(puCxuwhG&WZ-=!tHG-G{0ImO@Y-DHzSpcr^$Z2x|H4>NH&K0#G1D;yRp0kGx@OVnB4;C)y z6(Lx3E%Rh&I7VtLA?icr=OaY{Qe6M3AfJK`Ter7+h!nP1?G^Qn%vKq#O@q>%G?%Ou z)MAF6RZ|kQ1B!Qo=D!#e0Ink*4O5)9x$}I{kcfu*>86RUe$Q4roP8Wq@s54S#2$>D zrFwN`f2tOZGo)j!y{SQ-IfZk|c29qrMHBG*)XFa=29?w~98NW|tYU=;=v_UJNP_?D z%LXbt{;m(`ei6&ZN&`YtXSLnew)>I*RL9TE7OH`LjhhlwDWcN^GzF(}{gcYmY+s)< z!nRC+pm0oN!qVja`u*m|n3f-kCSy!Uf5TgG3%v*wkkUUC z&m@?nphBx-M#kWJhx<#u;cmnrfp#YxZYOy<7az!SfVTaOMp=Uyg=C3rVz7@hMzx?+ zsYM3F`GH;H{R)!nYUkO=`2v0#1^b}AYqYM7es%4}v%z0f7R;Y# zc&-8v!d-1&SRJtLj1-}Jj35?=#KHiG0Yh)N{fR2=S_UKXRb1JNdK3&a)R0G36v*CN z_1vo_2Sbc?1evBwT)w`bQ}ZU>(gbi`$*;)su5qhewc4E2Uo>UtAr4rQ@!0 z_@%|6Jrx;a)n6Z>Qa@S|tkm%5w_yut9A7w#y*smqzIbM!HOsslR$fT_#u0ZuFgyLosOigt#?QzMwBlUr7{F$K+rSB7HGY7&TusR(!#d z*Y_VSKGsih0_Iue%luBTxp1a@C!fbazq(lr$J5T zz<^>4e|{Hr7o6cUkK=GRacSYp^VsYFz{ii_@!>FU{uh@pS9`dAaHKzM-*|&J7GSfK zi&H8^AX9t2^U_OOKgAuU;K{cmn}z8rm;Hf{vB%ERps1!(P0wuhzfEzFK{K^PVtq#K7Tx45mQ9f`;=85I`XD$__vE@nO7e4-6HO*pKe^P0we0 znK`Ddy?-yw48mu4c@f{41AvLN^O=c-bQFY#%n!o@Fm=q7(wC-(_Rs_7w_Hm-KRsj% zXlVWFAnn06w&T zd*9GDXK?)Fw+jOUOR+eso`^4>*pHcEcmm(Oi3@98P|dgPX&Ndd;YUsUcpd-_lFI-%*r(*)BRtRcjn(1YP}IiCCcbzJ_JfDil8qlOgi4#A zeSBkb5DchVgWq1t?_bb#$Xz|_vFL^B7F;)b?b7L8^??XOKCwBH3B9>v;PNEe#+$vL zQ#TgzlQ*nE$*0rBcO`a>Q3)trmaBg$o)16~(%&f$9+HWKtfh&6m$(V>^Nr1QE&KSf z-|jy#y!%{1HAH7LQyCu>u5!nJZbQ!PWFg=;RJ#}ffhiOlbCjs)-F7EmUQr@d;;gi5 ztX$hAYI>lf)~7yh4*x&UfmwoSED0pIWAp4xO?l^05f!@ zHmEJ;hPBNU1)_Fy+F$eFsmP{qY61#}BwSrVxfzzxPVad*cx>4Co69JgP#8XSqVIPS zztc0a$Ik$$s_vCUT{8056Sp_4IqE?2cq=(6dsOhGfzhZoBqK~RtF2!~-DM)C!%j4> zpi0ElPJGJGMxla`qsY;qhc`X$yDvso=A3Odd*jHEp{cw)Zu~1i={Hs%A8sWxu+qw{ z@qxyC9|eTlo7kuTK-9q5Zr3X?U&3Mm0CWwfCy{)x?CA+yT14CGQn>gpOnm?&?}@*2 z|4Zpu-|G3u>lc;pT-iUkal4lSVlU12+*#6f1PRpkVVBx}hz_z=I#fOF)!FCA_npu` z$(|l+O=7+QBIpW^=Xd(`@2i5|ETLw@tzzrPP8B~|wVrVcOu?RmES?5@w3e`ZgQ&fV zz7~3W0KjoEGuL#zx$ZF6HY^L!IS!`=hj2nUsG5DKGse_i;~(tZGji~NbvBmQ2U0lH z|8R;U0L+~OK^*^l$%98+#SZRPAO%$~ln!${n|P}i8V$4Oxz+Qt&NuCiH=KtLQ~&|k z1tg0Y=n7i~xVzL`RW4A=d;1=o+YQFR8Tw+O_0DbM&t8Tl5LNN(r!bNMfNE!AeR+ffk1)Nsh~Gd;Yv0M`S6iT>2Fp_qZUGC%vy^kdl|7FAol z%G~IXy3qqc=H1z&$xbq^TWRI)?g75h#{_lemkz46Y}#<*e0p!LGT%=gd(iy$AQ=IG z)hh08bY~Lq(|fYRF_pnBS99AlyYfj=uy`=FQXCd74OJ6Y79k`U!=W*Z_H=t$2j>?L zAC!uQ&B^GjJK`0i4}co)Pd)Y~PxUy7^IvEdSf=I>fGk#A7WF!a2Kzx z0>FWOeCQ|)6-3JP=EbFaNUfS#O>z!9iRR7>5T;Rl z%;tuCv-iuz`j6|sq#;6})!@pke^G2iPn*L@M0na8+-03|dl(^LbSY7_%~tQ9zJBX# z!Aq@X@bhOVl3*@sR(va#&^WPtAv)r~x8OKfP`D(Jgb>X2dT1F2MAycYsw<4E#egf0)hZwEP=VH5B3^c%1Eaa!K@DgbcVQvM40s9 z9IUIjyXeSmNu4cBKNA$ObVGS2xXa@FM1v=j08xEgT)ztOR^f=sp>P-g0oR&^tMn`` z?5HzD9}9AWR!P&fTwK>pi;PA%x>@5)V+Q!W=$QR~yuE3VT-SLecZcDN# zYB43smPJw&K?1}M6i}#r$*RhIefjox@0}l+AV7%JbVsyRzbZ1SD(k%OyI-E+=I zC}~l=?LjQlcfZC2Ah;k*(EERYeW77OmZ1^oGE@$=<8~18%^H(JNbvVrb(#T};4yK7 zp;(1PFx>|=?8-6=CU#9wg27~)hBhbfwWjnHuwM2_xija3Svsh6an1aE#is zs>hSygcJp9wOATqmiY5jGSX1!JJT(G!=BBX5ymFNbvXn>Guf=3vW350;_vb74UA#Yk63O8+!+U|e`9|;+FLV$p9mmo3&0f}0Xb9cvIzqb#wBS&0E_?OV>w6)XDzp6rn(0n%ikYwUN)|kKG4~16BCG zVAKh8Nf02sx$}#l!j;1Q^~+O}3fJk)_l<7sPOz4WTz&4^mH9&)GM3&qwB4K*4ULss z-gn;=Re(}__;A;qqizqseEGytM^?$s$;>r%#@mUb?c;^ZC^p{#-_Y=>6LWn7UsN7H z&7K(C_SR-@ygcG*FD6FzD_&Fh?e;bCpAPohAf6@K+~ zZ|^Mh@{YN)Dz#F@02WT!eG8ZckObT)@AsmUdLf_vl{FGFF z#%_C(bnUXzZoJ2e@qO&pn>O9WyLnZ=7brtUO1ppM9UQ?2=euOSmlm*`2Y{)5>6s(C zAwdZC+O3E5TqYyi{o19|Qol?dyE5Bz}DD;e9nDMrt#$t1~mfYL5sw`RUa&z2!tgYK=rL9obi3%z_E!)ul%g zxlAvy`?V_%O|@5s5Fog)cG6$TW)&|fUwLdYzdR~D`mUhvSyR%@k4|kDrqZpL3_?I2 z=GjlCK62>IAvwDBQ~m54yIs7q=PNBi`>QstF zEYD?Li-)UCuf4vAP}p@*4soY~Fqzbe?CP@5jk@326N!Wx3a=E@Lbw8GpcN6OfRI3I zq(MTLHf+;qDWsrzt%hSrc^c}XvAEsdli@1Jo1h6q1!Rh16@d)_RBS{vs0t`WxegkD z01X$K(q$u++o-$u@50)aU$jD)flvT=$hM_}GRbfNA13-+Rb@P4(q$_YMge%av$ud_N0=%=D(~WIJKnO@wE|!u)Aq2#$wb#vjS%fjt%5v3~sjtXRD~v@sC}fIKRo84uMrd2M zh!hG`NN6nIO+SaKg(4*swUr`ObgdodZQqmRLQ(FdpO)N-w^G6l%}nS!5eUF?qNPH_ zfCyL+^GkJ2YojIG0o{sJd@$ijVWqBHHnEr=M7MgI90HzhRoki;64zx`W-C$w7^Tdr zwIf_m-{jWvcBU?oQ1VH$;mcBR1LkR-Cbf-7 z#ifPVI*FSkZU-`pk#rBI6GPsX)Ye7a+ZI*`w0*l}6gE{!My20t8oBNP&oS&;U*4~& zkOTx5_C5rJfEwYZVugf zKxvV&Qd>9cxt+Qc{0bO~05G1U|HFfc57+lc9zLo(2O)dhzs$d};aqp#8s?_NarYyI zsLXh9PfED`JI|bXN9|{HlY{`wUB!XG>(*&{$_j2&f z9KQ@efHAmiyY~}UPoH2ziXwWC)c@V!D>tQPP>eg*vRz|HL1odAPLg{-vF}RD=UTf1 z-+uGd!KR`k|8Vc(qZuMWbJ(%xccM8DKGJUUmqHH?tRFE2g9m-@1Bviijj&QzAhg-^x#P4WB{gurkD zzk3FmD1^Ym9{&710*<~2{;Ma*P*Q;;uU7FVZ*s>Eqe6V~VKLbQ06TSj>2+T7pi=zv zGdM5+5R^@P^$nD)u1CVL5fFlggRi}TwfcMJ%ZK)pj~*lvfgj>qm-(C9@6tc%bTWQ< zq&lTdA|USp>P}bZZC}W4_d}*c5gL){-99=6qj&%KyN+P#+;;L1G=%&MKfxG67K*Og ziT@JO-UCB;?&KXZ-@Ad5NLQ-*uAq8#{N7_2NCF_M<%1W`&CPSJ(OVxIU#-ltx{lq( z%unAqax{QUmOnbOg&im?}${>8Tjt`Q-_+W1`&$Y1-5WW2p}~?&O9MS z3{pCtxwLP;wbTobMZb6DvEkicNWUA8#x^?Xck!{=#^Q(wiS)|tGvQKymN@-)(~q3r zJYBvvI6{Jya{1Tx?XFG?P22`oH_;sd-b;kU!IRrSE{Z zl?K3N9OlXA!g-xb;QTdd^F_9;fA8`m1AFlVsUJvPc<_L=IH*98sM!Bt^?#C2WP^wh z;+&HEw~;rdUMZLULuKuzz)Uast`eq`T+0MG!Z*q{y+O( z-lBG}lX7nMcKF%GgL?zXk<-fWtB4ASRsQlq@RD<7Ff8dDzS3uX?vVOx?X%{Xr@#dCXMz1D8`hfxaBh&FZu zNmP;uf!3X7A`wVR009?hh9I=7P)y2Q()5+RE*WtohKI&FN($U6;YR5l%ZU>F=Ap#r zmERhknm`|b7Prg3o)J%5ZDqkWuaNK7v3M7MJ$0&ZU=kTwLT1$cLFD`<+M*T1UVn#Z zuYsQ6>6lOiK#7u}QGhV83)tOo8u8_wskw%v^2QX|?u)RtD*Kpx6IufTFm=;Su}s(_ zxTv(vo(ZtWqg^ec6(S(r0{XyES2kI)aJ|?qemX%!>XI&;JJD7IqH_1{)Dqq2FAKzE0B{2Q zd;?Vv1eoi`L{C?;bafk52LR@Kaby7Gosp{BxVYVwWu6%AY7vD%QUWD_Kr`&j*?KRr z%^gqzJ1v~efeWY-PK|dj+$wEc%5_}?-qjZB_z3#rT^-YfEx6%(=KH&Xde^U!1m=gj zm+-d>*s24-u>pMg_@ox!#}Z_z7Uo(Dv|4gZT-<{7j)~exDtKb5>n!+oq=bM$x>8s> z?AJ(t27>V2WT{cA&+`|e1J$4BHv&ec_M?Uw0f|w zS53)+{%53L1{;T>qlJlmVUjG>(q1bUtyX2T&|4j3Llm@W*@{PETxB%O_m=wkkPNBq zxWZvcu5-fodJ4T{KoyGZdcG56SVRz>PnS|suP$`Y_uH1+#|#irOqQc+(%^<4giXut z4-EoT5>-Wy#(69Z+1rJpX*76TPO>DEX<;H6YxSQA#}!C`Xb3y>UFk+Cp;~KtxvrXB zP=r(_4Y{9xMmo`hm;iP~b&c)pd!-@%ruBFE+*%KdJ~cTyAyZ14gL*+pv-bTQRSNPb z86J8{hds3Yq;YFo_%2R{o4L<@oeZuS6coB@^T)pr@YkT&S-+G zFkEBIp4Nv62orqO-$K1L^0mUvAF?0RbDrS;xSbXNAe1Qbyf*YXJ{sXGxrVf|v)7*a zSSm9$bD$PTYlZN2h*qZ@h(Hc5PKvtT0&dRU^-Bl zmHaesY1pXEefN#ILuDxB_OFjDx2JeDf`U2u{OhwvZc+tnpBTKwr^7-VRU2O}V&@h> z@R?(HXaWRi`}o@VuCo7`1NiW4*ZlVF*1>QR!^!Sl!gsFW^-TacJ&I2s@0!@Xw1^+v z0DwdN_^neg6bRt8HGJdx{mP?519)r-l)w&9tal6FtqN{c0Nfv`g&njxREjfWT`p^a+!YLdcdQaWWy`b)`hL2C)A@h~7u-k3-ze^SqoEpV}EC^6)V-alP>-{F!(5OBQU;`Nn|vcLA}<29`lDUKg6y<4Pi00L8K>+=uY zO6d?F-ps6bf=>=j4S;!(+K1A=!^j?`$TXx7Rz>_ILQqVY-i;L<8H7BO z?%SZmsgae|{2y0~KoP)4#Nda+56y3ECfl1iZmyMflRsaaVMJDuo9!znqs%kz+uCyA zHCk84M>3hIhZCbcQbr3_0!@V?Ll7urSW7=A@6Yn>ibLzGwGt@_X}a%$(&voPF`gE{ zC3*XQ)_-b(_Y3up#0L+`(WLUT%d+@6@&)++_!>)82tIo({YB$*nZEHbL4cOb+}P-da@w@$&35yx@E`WPoU@$b zj?~GFCwcEIPfL=BkGFr&yOfjMpsu-ViO$|!1wD?80TnL{GD$<LyQoXc%ASOptr5z<(>6B4ULWo9jb;b}eO?7mv_a}@} z8XWb~R%_QmI|50<^kBEgx>G~F)ondY4!}@5Eo|)pq7K?1;J(xawcEh?weF;`p+01y z0MN9ND|h)7*-Uq$P20m}q1(UcO<^$Aeep*(P-ue^JbMIB>;oZS9J%IQi>tS9p5HA} z%2x5{m>Y}3(Q!MIXsxFO1GXwKEdWU9cxkk_$+FpOHFgGJ4 z3Q=gTzuw5L3B=^|!vhBo%d&!MhL)7xNW)-3&@SITkTg_TY9z>ByvL}-I7Mlkq`dwQ zy5rHdP%G`7X!Vj@DvuJCXFlRgCWH#0Li`%_$o0KJQmdtlb=6)UjA^9|VbrYd4bet# z)Cgs)4H-(MmonP!K|LA$U~_UjjM1I8Q0-UM?P{wW^|rCn)n9DJvU_i&i#rG;M@{Uc2&b(9SbF>;=G35wY8t1L^>3w?O)zgS z<`-f}%_xb)=)N|zas_9JtvpknJLY8x5pGYjl8#PjPxzj;+;lF4Z?1(`X-#_Cn@Yi; z@jxGKj(Kv2p_ns5YPqQ|y>aue#EWLd!>?d(&bV-#wbtJEz2ZTdA&|M85YCSs`=xC{ z00JSg;viWwAUa}kAMiVTn2hKd=Sd1UyU`e}q2kCt@uRcbRE0E~ENKG_QE;jEbsm|{ zDJoh|#Q0z@Q4C=Rc(sAW3PAAG6h@<<1U|!CZE|rBAUHFEkw{mtn^XkeY1T}DUJWA# z0MyYvy$Zk&B-1*eA3n@S2(Upbf6Pkb9Z*U_NIVcL!ru>9g8%_~g*?vVszS0+^0J=y zNQu*4I7+8)?gQtEb?G1MI-Mdmm-jMzAVTm+)axB};}KQn+1?e(b3t3b zD(T5RBL@GV+8&FRy$C{~-d1$FWhB9;6z7Cqb|MG~wp6^d1qjS!@aQCB8U&E9;?*q( zf#DcVkCROIO+!)?+71W=SA{c!wuWj8uW!R+Fl2mwkc=82z-}PEvx~M5nc{c*FlrD2 zl!bV)fRY1B@R<}wqaZ+2f_~>o20m=3J107;-|dQYP6A#i-fH9G9sryf#c%|&1kTBV zt1oUD3GgX}ozO)PK}fI~;FT>vU|$+Xhru-nfqWCM+yQlJ3>kv}qNU%N2r6JZuw)1U zx3db!FKGV(5OBctVOfL_xUOIv9i#eQ4Z{%-f)<4?0R#f@eONZ3L^uIL*8Q8wJO151 zLtN>;7=~!u-Si8>?u(4UakoUcg(`@Ev>|KNjK*}?yT|b6j@9^J1Ze{RS}nY`4aSkt zaeM?>0{}cnIh!+FE;K@q_X&N7G!5(q>iJzG2q1$V%!uR=sTwE?`E0>pt|UPSC{z$Y zv_tvIPDCM!isqBC>OgPE4A?>PEvgUh=n>c_BlXc#$%{Y`REQz?D38TuRb(>-D(8sB z>LM=qu!#1EhyWZ?{vOu(?#ij=a;BH)Ly~uDyyQiMPwApMk*gR3!q3p~^hkk?2v30z zr9`qq8y6|kpQ;kOL2KobnR>l#>}v{*kmG%MZHPAv(h4SCb&R=I2UIZ}Vig0f82VXY z%x+T!(oC|XcMC<|S#C^j%PMI;5vvaNhRlEfN{9+E%Ht8p9N4DSSFs}?rbzT5ekiVJ zVz4I}BI?hK*dG$Nx>KlUx zqRIYKL-|17J|FzG?+5TSDHMl(noq8`0hpuFtH<|AD?_~^LI73JC)rTiR}$2Ak8OW7 zam|d1#_F)2i-QRjX8(f)s<7;OJ$tE696iwK%?Af|H;1_+Lz9tE0Rkb2W5*8VY1Hp8 zy0dT8Xb3^E`e4s$bv$fnD4O`IbEvrhFk~REfdD?owuz8KBKX{c^!+0TwOA4n8V$zg z+aLAkVtn{6sKmgjbTy#4^Zqw|I6a6Yp^=c%)%2oeT3`qz*xlJQ86iK%_VtQLG{MaI z+@BfCq)5>`+46wGnb(!!eAe)XcLC?Et6&0xA81ds?)dUwo?6?82CDUpVy z=!ptZ83f$C;pHQ61H5<@iw+pYct0N5*BKX}pIv@vtQJoYvtPYBGuBw@1%q;a{d7+; z-9zlOeC_Z^^>$V;il`bjwCBR<;m|JC?K6Q9)pOM%;n|bS8 z?(6l1_19kHjzjQ?!#FY4-TVLKCR!FiFgJt;C%Tp?_khx#oG~(Y z9_sYg$pJGz3|IEIiWB*plOqwX(c4dt?-j>~&6JXB3|zc5xZgHqYxVsj8|LItBdtLK zFva5!hJC~gAiS5fwI#D;T)ud0LXs4kKNw%vCQytC39S^J_j;cRrd1&cA}&hhb-%9t zcwzr&-HkS@W9qH3aj}&_@ShBdQ6~Y3MxJx$hC_oky^3mnM_z5N<+`Av(#;P{R&(RS zPFw;NKm|?}0a01{Sal?-%AjE}I&*XKV346LpAql->gtAOTM6lLXXNp4L?Y-tTz_HW zttBge=x=jMK@*_)(|tFMeSLeq1{9fMB%++)85Oj*m%ll>{6lSr`NUdDa98RS%6*7u z5hDuE9Bh0XQ*}cvU-18?N%MUXOd&ITu|9CM`FKDEeVJ^i zXJ1$Tm%WP>5&Yxt&BKt_>!L_B1v*-^MObymO=pE>6xR%fh$$)o>Hwrrm^%U4;1FmN z&l%4J4yg+Qft0VgEa}4tQj*VU$;#VpCaNlR0sx`m?AduD2WpWSivV}RII)gaxzr0u zAPh*$B8q?zD)SKRaNqQ8-rg0&mN-RwD$lG0Yy-ZHxZWK_R`alD-%k;%H2IQo12s@W zviyA+N0uiccKjw`rD7sEqAF?2)mnflwgS}Ko!w@rptui~K>@*t=KC>71SF|QoLV8_ z!Ur`S$6dAs7tKlPqyPxwSmjm70R)kDr@|fhf&%d2G*PmfWg}k&^<6EnX7a9;ptjCz z$KQp?9U+tUp;{}*CVfqFByA_|T5enN;n=WSAONKh-rEgvA|Vc01tCp~m9|@ITlh@g z7>e%o3y*nwf>i@>f{_q%2uc9X!_eAxg@JZx`$Jk(XaJb7?OjJ|5+^IHv4XH8U=o-N zR||#hLxw^^0w9FXP;2NJHJOmsP5w;yz3YWkw zia9;BEleo1h50s5dnpe;Fyp+2*9@8ylVy`jKZ4U z<5mog0>?(f0~62~aV?DziGmT!a~#p`uyjHy2T3Th5K_xl6-!Fj9KB$biPcukMY+0- zu(M8m7q$rk*df|JYIm&0Z4(stf$~}{j}nAj%?qm)2qS2RwmqZ~TLXh!_MB!*ioqEn z*0{`VgM=g$ew%5EMST@ks}NW*63EQ-oE$eTCyc_H$$M6ecq+48Z%3HE!*pU5wu4%< z-u9$=ODR@W&GV$7J-J2$xn$NjCB7#21;f6G6Oe$=Fd&Lcqq%q}Y+H8PeU6igOSTXM zB$Rom`P>C00pXEG)hlTAYK1pg#50w)osLMhEJA?>vrJz^f;RD5(+%opVoXZZHL0Lj z39p^Ct%(A+4Z4E1RE=vAiMU=-v5DLg z`8Hh<3Vfyn%WiPiFZqND2s`1|`-Bj`qP;o&!;_hhG>$|bJ)%6zx!h*nMgGF3x8z+M zWNn09-8Ud0d!U`k5E3w9MGjOtLL2AmkXDY%pp-x;VI3ZbFy<>t*6Q%{tt(j(NRki9 z@4k7ULvR^_fIypS==&;4z>fc5H?ds>6^+T%^+N}mi&=ys{JR_c+!h$YY!<(MXHLq? zxADVU_n*8qsY~R@Cg>j=&wRL^(G&s#M!#SlJ;5e}K)G~Fe96C+Bh|YPLSfNkB`NL! z2#bmLT|V|$I3`nM51RjRFZ4iB>`dzmggcAJ*JPS%2-E#b8l2!Y8S{MJL= zi9dh=`n%!G1WyryyxRD4d9ksueSGoq#Dv5m(v1&|Z*EWVwhD=KTkQhyLj{5mh zFq*+XeGpL%LePs_r_Eb~BM1`m)u*OPn-jv7_~Kspol9^D5)pj%6tW2jLDnntH!jZ2 z3$D_|500*tro)Dgy$1f{Td+LH6u(+;;lShxB|uz*YUa2 z9Z*=W;9D2qGw2FFb4r=a+#4xM!0hn)IkvMdgp9%c^!Q1&18Py44GS^RbbEeu?&JYm zQAz&6p6fkxK`se9h`o5>q3MPmA$KDM5@?v@@y`Ya5==o5UXu&oA)ENg^@roRRGONj zu}hEbH*b#^OaTyu^iRWm1I&OQ=A_17N=w$I^#>aZgF{k~RIhw=wy-`Kbu|JagM5;W z&9V&fScBSMmv7}ac4x1hpPQpxl@>oZx>cR#O`S{ND*d%!G0U+v%MoTSJM`>IJB_MUFx-Ka}fL$p($jteBKna;y zYYjwffS}3BW^GmI5`|gu3tl;g67eDu0+mt$;pJ;i!vX{eG+8KwN&?`XGTcrkp?18I zH)utHBp~u$+YdYuP3*do23S>?Wt-V91YpBKxQR*~x`5c_EiPQdRm=`T04WWY)f4h@ z5u*SBDUoInx^l4<#?3yut+@4CqL-K|4^S-z+;$K!1b2owb3qHuKHXOp_>S8iOl`MS zP*N_6P`I;JGU6xDcd(hTSE(uT_1?H2jUZHLrO$A!2slCA?(y3(10rPRDBBJCWRo^m z>~?uW?6wgK2nG9wJ0HyP?OY~JAVh1x%?G{Bmh1?>_11>i4!{Up4>N-Rpb%|qH`^}} z0xQ-m^NepQp~uY2+x-ram~0EPdZdpvRS-x!#Q{=RWVpm?W|Lc{CL~e0oDZuKtO!~j zMteH5fk>&|lW-#%0^4^+g#s-Ww?b@VzR5H8ep2 zLvkk4+qOXoN(;?cWYcgGp%*%%TF#A29;q$0Bk9dvD=k814%1z~Uk+(&)t1{E8PgJ! z)UpxVWg9`+u%I?uPQ08&u9@-kL0_{aJKKJoH!-CE03ZNKL_t*W=JJ4P6G2*idQ&7e zy@ZLVfT%NPhHIexBhiCqv{IGZ+VaZCZh%0x6H3E~=d1`pNI)#+5Bh39%cSI^?Uq%M zt=g4*hRbT8`w^*mD)f$A!wBe6Kaot&>yhSGq*C>pp;hym-C9?Mw~D9?NkA~0 zAMv7UbXvBoov>NIZK;i=UbDXg%CZa*cA2kUM<7mwoD#W+YPo83&vke$j?G5Dy1Qeo zX`?Q5D7+B24%8?Y#4gcNyBQFlfSAG?5+MhVM0h^l+Ll}qhV6|iZi1?2`(EcCsSe)y{g7l5G;`3yS17kw}U3Mr9T|nHB z3SXDjLUHF}5RiK9$cb%A+5Bs@q1P$|!tGVBe0Ic4DxJZ)-tEC)Jq>_HgUIPEs{7-M z?b#Q02^XPGZ~l|Xjr<&MYS^rbKRF9CL`1?D&tRtij)&se?#P?Bx8-xa_}z!PR^aD0 z@vSQzD{%U+PW;+a@*jkcM1;a2z7e_d*V+;X9teB>u>Iscptd}<0Rb-Vo;D=%nCSgDo0CC8h`*JVU$geI-+J@(Tt(4I;dJKm_`JK;+x>s< zn;{$U$oH;3n%YXF(A*cj@bLcD;)vh`6#Y>DS$HTbqTphQRR5eV20vdp(^?o9B5t30 z>0`6Sl_}v$-T$*U<_|HU zklUXaT`~8wnt^;v{K@MmyHE%|e;S8|x)W_)c=N>Jwya|3{r%Sx^L{QROt0_T=T6Vn zG@TSqXD*G+yKB90g2eNe9v;g_W2AZ{apC9zdvO2(7cX4JYg_lwE@g0`{N1fbq?Mjt zSR?v{r{-#l;|PfO`6|AB0|J;%dvW+OI=W(nA+K#;kH5+3rDV=pPm&g zLKl90VzbaqzqwbtpqBp0*i!2Ns~LB)LI50+h#cFK`&-GHKk@H#7r*Jb_Pd>Z3GnfG zd|<9Kw=?mbOAn9U0d-{FTFfHgk?&u7G`*cjp}8-1;o-T~;s_X&mu^0Sl}soDdACaW#{C^rQz{+M(TFq$mMg>vtSXr@Ttko{2XgV zuu++R<@E!H7+1*BCq|cB`@@=nLUZ!Pvqz8mR3>ZB4Bg`MK_TAx=N}h6&#+lVV06}f zVfyDUdn?Dku@lMrASgW4b7|tByVlvU;(&;Lj?EiF5rV%-b1(2s?fX|ANpB~Tq&XA2 z@W_GYt&xuApdZQ?!ufs?O(sM0`1=1Af7K$wT^I>+$@@I)HIRSCW@mX1geVc~tMo?c z_Rf(jZ-biJ$j|cDJ1i53!XqbhO3Lml_(%R~OR^ZFWbK)uTjD@aOaMemJI@^@U-VBZ zg08J9UoLF?j8p-f5Xs+Q`*lb|Q~t}d=l@z=WS-)@HOAX22$b=LvA=Rk`Mm+@I00$% z!W-fLWuZ(62qXYQO#j!`2S!;65SP`RKZ?9Q`Lkm6|1K|Gs$P@U1$ol^}r8IQ@g8 zho1I6qRp$2A%y8QVf=ml4dwTSvJgb% z)j+e8YACyD>`X=uR>tR8ngE=@rIOV4Bg=VdsI^RY%ZkT>nBi&x_v_NugxV(&sUZcf zh(zrO6JdpHj%z(Cky|v_a5X<41>=fq?Vp0K!y;i-R+45EK#^@X%Mn;Q7(p!Bxy7Yz zduEI$67a$HG^ETV6{J3aS~UGwW4zDTER9Ans$t(I|)jii%IYxbCYycUsEMxYAESD~i8UjfHg$ei(E<)=WpLUz5KYI45UfnLM%AQF)w`f5Defnn^*?5f#)J|vxH(k$2O}Q};rSjD zT&sG$U%Fkm;J?FPEUDp%xo)G(cF?*05>WKW=zyZguvlx?t%za|IFS@>bV$<_xXg0Z z!l=>*koN-hE|Izi)V+~vQ7zGqav6K`RJR8oafkIf(|78PWMfIL72XDALffo6iPnN# zF3rNGy-%3q_oSah3Htl^#rW+TUUl>u6bk^%VHA2357#D!coaZD5K@Vjt$4mew zII^HBQGR0V)=5a??I)wrlfg$Lm~=?^0jQEJbE(wv_68L}ED*{6B z!B6u?Pl(aZspRXpz6Kk>Gh*}nDyqkF(tr&>wB+o@ z)Jf-{N~H1GAQ*dX$=~RIxfFdX073Z_ZXJsI$^g6&-!9_f1^_%Vh9~!R3BNyBz^m)` z^UdcnI5Y?VH5*@j6FcqujLroYw^{8v`ze4Z=)d6~e27m40e-#}{J-vv;$0>`0hq|< zMY1gfQ0g7uo;xkZWMCv~-3JOp;8>0iKH1AI6RO+d(e?=4!#dw8nppohi4pojxv9rdsB1t-68a_9Qc5C$?*{@KaZ z^#M3C7Ra%)>%)_UFhQ3?2$Mdte9YZ|x3@uIdJq z)A7yuc`OgW4V4$J_ItarIO+!@n-3i*-X20I@V8aGx&Z)32k_if=Z1s4yxhBRySESa zkh1gs>6P1A1QJ5%O*$|7r{px|C-X3O>5ayMxC`pjV{5zpXloEaxqB27`&0a69SJY8 z>kt0Lw&Zdl5$o5pOa3G;$53jId}n>=;4)Q7@UfoUp;7Fm&~PGubAB*rD%v|h;p;nC zTmyg)&Xf-fl_`N28ZQ+4GwbgF#Q_ro(2nxKUPLnntB$#^Mz(w|#I;G}lU~i*&28X5 z23kzPu`D`V(uF*}@)iV;R)gPrWW7V8Us3So6|gFFiT(b=n-iH1k!JdbD?{@&DDMgC zmq#jfPoy^H=krSg5I_wBh&;fD<4H{<#U;ACMAl)7E~sb}2gNN~UL#9^Ez*$hO}{@A z3%=ke5EL|EXgvdD?#L}_WIyjcAo>7O74}zft=QO^yLfJH4ucx0-WOZ zuIGk(xk5OAP~w;Np&GS;m4Q2VeKt~eKqUnCh5WzrAJq_K(#jthzjh=Xc5L#~vitAC z8%+_QO21Iv{{ZjTbdh|Zd@*ymMp{(RQ~vzZoDrT37HZs^(`$%ee6gu2*84ugQtkeYDsyqT78AQ z<&p*OK!yKGJ0s_*H!qEg$L+}GL|;*R7ND+7&{@xB5Ynvglf zg3*pgpNx}{lF1gsjkkjD2BNF?5DeCi&RhyX;44FBdI&K}5RbD3HUD0q5K8G*YLX`< zkYp5_dU2IlRN>K4hbjON?8Tp6o1JAD02T?a$n^jWz$lMSvp4}<622&HZ4j3L5A*aH zHb_81h%0ifO#%S_A8&6KTvv8o39fza^zNJR9_AS!K>#E;=bTDqT2e|*jj57sNtSG> zEZNZ!ZAbW{yUShCUE#9J;c|CHw9DOPcX^V^4tbDNvTS9`8dE8ylq1RH43Z!KVg}wk z-}#=i`{RL3GL@>T?vMO^f#I#Y*Ex5ez4uwGjc^%l)%1FT&^A~Fp}Kkb#E@YaqB?4> z_l)VqGz-**#CXv6!SG`w^3~wlPPg{+>i=(~ZOZYIl$#;cf3t`&+}kc5KqkBl)m2Ou;>oT3N_B z)e+(8VUp^-20Qk?R+<+BjD|bDv3BIJ5*oJVlI3VjYb2zJ>Y#SY8GT1Ip@9_mvfikB zZTp8yQwQ2rt5P1-_d$g+Sh{kepKVKT9!M`eHmHb%REJ+IW?Ng(BQKNL8kqH0`dGqQ zUS3GFav9T0i#wp&w>F&R0-OXa(|CBMx8Eef-Jot9&hM@dv!~HcecsugI)FETYV;aU zwx>?YK>`9&7qps3v27yAw9ZjQ5hq7|Bdt<3fAmkUUH+OAhIi4=k8yStUH|~2eK z0z!#%x6ttbpg)V#Qy_w5oL@)14FEl<#KQ-283BHCQ2&1-Ws2n|#wz8>nNDA~&3K1? zcR&HC!@mWG0Sz>dY;wP&Xq||28d3j*|AUEZFBw(o>CV+Y4)^Ew4kDFD0)Wl>Y1wNz z>P_i){T;)3JvBmUNZ~GJZ`SDhGJl^RuAQ-r=HH*U21rj~MS#8gOw1(aLr?pAyB|ul={&qg23IOM18bBPOu*D^wpM<&A#VXoBzkg4=%V{2;ZXIJgU_K;RPxJ04YYuW~%r# zQrov8Ztd3yvs$d1dJ)p{cS^fgoO8Q@ai>b_fY$*iO%`WSO%sUozT3MDO@c`k5226) zlj;cyeM2;_&{?_GYl&6GL=pg0sPE0it%&b(b zb778}$*y+6t}5@M3;=B=!W%(VW~kT$CO|c1{R+1Tpf*dP2tYFO`_>FA07E#F$@ZZ% zYXB7DUE14)FMv@@q&Y``24#_N!Xdy$Ce0dwLdYtWuFzeotWvdg<$xeLd!1FIqAZGg zt;T3CL{2bK0T!YZ3mXP!tdQD8NyfTRW?f|v$67QdN(~exX{8kvZsjVFqrzJ-Jjw$C z6;|bz>Tk(@;oqk>^&wsA)HIA`7b6{&MsQr!L_a{>RzsIPHQ`E|f@4ul>jO0Q8N~=H z1^}V7v?3z*B{pkH3t6XV#%}0+42vUhQ5h;sE1|_;NJlGNbayjbiz05BcY^|@Z|Zuv z%t?;zy6aV?AU$Te0Ei2ZL78vBi+=UI9X002kJ=$BL4v4AF z0FmG*TOg|{B9(|j8(IkUI{j3PQXA_{5YU$rDJe98K&e(oE!F_wAyXuk&;??tJXc*U zfeFVbFk}S;@ZF&PzeGyb=#7yIPeyJld9CdN^alEsskjP95R|3>Nq|)18t*Twhj}2y zy*i0OWu~J>EN`%vHeEdmGzPPx4b|BM0XT?Ml6!4foUvl+)MMRTH*~ASX^vyzH>=w= zZ3Bw5*qdWFLkuvH5_(s_r->Ls0rzYa%N{AHj0jJvPCI$kbpV(GvveSh6!oN<(r{sR zd}XeY&B-)!hK}K!qX&Bq?ZE4`-0`#|0SY8HP+mlffcvX`M|oH$8cc>~?aSX3i|nN5 zI}fFTJ`1E20&ZSL0RUPYlOjSK`)ADcS4n|zg!@ye3?N-B+!rzi5QY-aCV^wmvy z5nu>Yqf93BEe(F$X=_pQ>ZokqqgF$LlM8h{=MxY&E$3P?&dgR}hAG z%I?hK?D|91Ya`3L`dZ9Lk)Oovo4r3CzxxIY|tI-W5C7IFN2 zbM3`o&-(tkho?FTTU6#Vm!}TJYrP1hc<#a@!?ko;YtClRot$qi4IpOg+gBgUZuR8R z8BSch|Dd}(3`z3kr3b}Yf4|`kBrd#bu6c8!H%y4L8^@~4*>Ts&@SA{&`-B@cHTUm~ zr9CqYQs|ngS{>*yfS(G=f94e~Nsz#M7LuPdjo~&4k}}h|Fv5X`FgD}Z(C(#QD2*^S zbq2vp(R7^sg=jv*=G~D};4*?3Yz(@|<0TRbgkBxL={z`F)<^!+#UKAu_%91*>KWRn zUr!Pry{~K5N;e9p3yV_+5!>SGJ0>3RphoWNgcF|Ak zg-JlhpeHdhu2Kn`wfXA*nLksZNUrt%+|sEx(2tm&P(#OLAGxtF{4X0z>&3$Or5BGK zi%G}IQ&U@0y-*r}xRJd7wS}Mc4+v01>i^MJ&x+hK44jtnXrz^3SYOWTYE51y?5a(?7c zmC^k}zXK5MYKeZ|)V`bv;IUCFQFWQv1%9`#LQ_xbJ-|6?RMe z8j4Yf+5UYw!0jet1puuGt*HB%!AAJ*H3OHh539bDCl>ft9znjaCZ)+>GdGPy)pMZo%)=0cJPt)`yBw!ysWaRePt_ zqIC`u{_a50_bg}(c-%^$4KTqhQ?mn|feI?S*i}F;j3RmhBp9fmwu?P^=V8TCZ#q3m zCLjoEjX)O#5xLZ?H>5K-5~PJg1a_!XP(sw*DB;A~&5kA8$%OKCC`Q9g7_qKHc3h7W z#e#r9eWjp@gyp1F+Yf|UDiLX@l^w_Kj5sM98rm@6m#Cq2Vl(!mL@5!LrN-rI!qidk zi`uzXzmv;^x)Jn?l2Pe64eCg-++T4a5r}rRW%vQPVdUjD?J7YbV6Wb?WhDHFTiZpy zn%s>A`Sn!W?<-K`iZ=lTjeth%w_-2wqJ4FJ=CI+~|3y%dZN@1A2tsk7@fw}UPF&rp{4H74?AUa5@4XwYC2Z2z|!K@%2rRu)Iuv#ZHGjmps|j|%5FAH zXud5Y*R!ZtFn?;KRx2WDTdf|YQ7jX#Zxp$qLog6}YQ)#AV2}%TIpI_jotU@nY6zlO zT0x{r@*YqC>(DFI3}E^?{F0lm)D**Lr1qrOB8ixECt<4u0ScmqtWK1)k?!?V%{p2m&zbF>&gDImKLDM zB|Y>HArbTY>iEUL&DshUM+pz{-vGE65TrO+vD zY?erYMW*dnMP8Fhqa0S7&6>VvCh|_QPJ<({3fwGp^rq=;Bsq%8ajQ960IU$bRnK-C z18|MHXt%6_2%*P8VJ~VBSP;miM1w*B@(>2?LWl~1EKX#UB^#k^v_ur+Et_c>dG#H? z-}~r$GM~2e{w?MGJN5i`ktfBV@=UoccBMU60033|;lE&t3j{>94;3Gpl~_ z^k>TV<&nq_#(O7j{(Jk(k?-yeTqpzVj3>{3eA2Uwt}KRkWi;B(++81|^P3NCoST?J zlrb*-;#6(GBJjlZcH$2)9N& z4yMmOe7JRElw;`MU3|N~(mO!TsD198^R*ij91GTvCgWG5g$d3A*rxVhYB!wo>kn?6 z8=X=?M!WdILpvJ>m20qoCd4nrhfc^rlH4T!uk^)@jh*=yUR*fF(CPXICs$hYam_}d zHT|s@PMwT|L90)VUQ>soLK+065mcV*0F_n^S!R6v_F5cCAFwy~LqzeO7=zEXN*JqlSi|6RrO^ z_QUg9Ev}^83&T(Z!KwT9GJ}4u8cqGt%Bz1JG#quWoTmT*M0o!ZdUBpLf*)o6;p}6R zrDU3_M|0e`Hcwo7_0T*?Tf6ennYG7koFNqofrzrDLdB}n`IvxFR_QKb! z73u54uO9wn<5&`g0>3JDzpm{l@B~}G6d%qji=|rBOMk7ch8o{d71#T{%&CH*0Zepd z{1?|B80SnXqxkgp@8_PcBj%;yUtE5u8>texf2m!sP)r0Vq=f7)G!5N47(IO_QYTyg zar7r5b*g9&xVc(9^(X6RzvPb(|J=f%56zxz4-Gf3)xY+mk2r_3h#=Vt~~3c$7|Of);~c9ju}!cM~Ko5$k-vsm6e5S1(oz6iEIJQ5acfW%gL%Bb53 z3Zii51O5JP5(?O>qtn?J$!mFU;szNhL;wL!Y>L*~Q`u3ORzkR|))~EF!D+@3Wjh}c zD~JQWN{e!*3_pfMcL!0##Q<#$fRsV*sy;_OU{ZUzYptj&ZaD;VLFF`vbT(eeHkLI< z#UfMaIUe?Pcli>vU!w?sgRmYnNFTq5001BWNklD>o*h z8W@#@XgxfbfbMO3$(w;~~065h8in$|EzH6niOU*X<0DQzJRI+;~U|qCV-~z}% zJEeNN*LpkTo~K>S;BnQSu8IkjWyju4saLdm?{=s2jkTgtYj)tj#+^4<<|TF9KaHdb z213a%-((_4_OjVqiJVE?zU3t9%i~cKjLL#~Q&3ysfhrq*If#C+dMNS*s5#u;4W?Uc zM)k=3-s)`Z3Fw_6t7P{sH8U-E0DKuA3(}-dW(Si^H21<*_1T?iNQ*5$tM3fv*J|CW z5@M(kPYfdkKvMV`6$D|Z7;U*;8zD(m?cKV}5D;Gk8`(HL)S&A`y^X||2XFW#86j6y^1K7L1Qt1P+&3&?Q8yC z5iOgL+UU%0^)hqDOEvrVE@>6S!YSxS-2}j?RJ_wyxvIBWQdqR(Q0tnJtijX)U0`@G z%G8q&K_tRNC&_1wss#Hx9k&=d9mvG6{3WNE-dW4P5K;n8MsH8dE!A_A>b$+DvsRF% za>6eC2;#CR=@0{PB%RI&T3G;s^s8nmNfv;j)A*T23Sfe`VU>2MLqMNQ&IUa#*9+ZF zB;UH+To;xlOi;8I1!8?ISdSMKW)0AT#?(;o>hehH$`6yKwL}nt*P!XpE$j3jO?bH@$8wML^)!@?mK%IpXeZku1}EJieTkIodh z>nKg3Id^OB{c=`-B9g9gy+Abp)0}^wJYteIIT3zirm}AAO4l0ej6T&qY_q}OA8PA= zL#uZUBi`dJpM&*IIor=k0E?ouNK5KgW7@kmFa&qRI`{GU#Ty3^Y5-CWy-h!Okn;fc zsQoA6O0&9g`pT;Z4q`5?`5!;Hv^C3Z6U*hJ|M>F!k)leF{Mgh=^^mG3u-%yb>I;XD zm&u@|kBr?2=4B}bfT}d74Za_<0u(|1y>{ajssea~dw)(IF=w>Nx$qk^FZ|HBAzky( zde2kFU7(_yiHom2F|ae4MfPas%=;D!*Tx{(dL}$+E$4cz&7EH&=T${I#yk>945yJM>!a$;c@h3r{dRv~JSj-glkvapaWly!H-^UBxxwmg>H=m&`0LPL2lstL|)Cz3_Jc#7G z<$RVc2F{7?zY(i2!Wnnd2UQd0_prwK!HTm;R*QxB(AuX1kZS@#G=&rNE3U zyZDP&p%}eZ_}@QqVXl@+)EeOQfuKrM796sy`|6)l7Y-^%X$tpeXR z_qs>aN7j0OPCjK)mwrF~l5rz;&H2u$Pqt1cp^uD2uN*$RWZj5EozEOV)9hw$XVE;1 zCV=5x>sRI5`Z<{&kkyknucj6~#qp&nUe9=-jR#!&f%T@b*WkUI*QTac-!?b$*r^&@ z)4RWIe`^N;S)-pZ9=k)o&uf?WD75VQzp^HOF?>KURfYR+65n}E)HKkqMW=sVJtZJI z6#Q?A??0#Q67ZSm$h>^SG7K_Jjl^45X&HXu?flfh?B76h70%tGRph1 z1d2#)Xg=?EKHV$aK(Rd-2eyGI@WRH8`JSAviPGVoTZ!?7%4iM=0%=T>v8^|PM9aOF zEZ*R9t8(LT#!l#ZD}%xzGn*n7s19lMrD<7Dz>U(yc3+Y~s7;`a3<48?mW>Y1M2ECq zFoN~ewQ8q;Kug9Gv;Mr%r!i$)$!l)uGT#FVKu#J1u}<3^7~YSq%}O>Z4q4nvgCTa? zLkKM$VG_l0<8))<{&+|TuXml* zNNd&X+qZMkE6qM-bjL<__5CT;oHPcM0gz8}OY^($^t94Pq$zanJ5{cYxTFaHdZ@-+ zef$U8&R=!@Z1L8asQS7a#vS^FF>dWaNdQQtFxd|x#1gj(`vP5wM9=(CE=~UhP(c3u z&VjtA>wE1+s`ZkwTN`EH$iBaGa4@j6owjFpeq?Ml>V-j622<%cAy)1ij!I)kgP$6y z(vbC7W9kj`1CUVKxU>iqk^G^yyGkz17=5j7sY+|4Pr5&aerCNmgMHTrf@!OTp4wt9%+Q5%On7)C96lr3*!Sw=klsE zdJFbS$V#mp#BL^L+Ujxji8dJ#nACC(8>!nfjv*LSb*!uFDTk#^cwlJ97~__WT5#xj zCpq7QLE=Q;UUF2`l5iBh8KS-cA@J!wj3+@rz3a|J0MKWmE9&j&u=V{9S6jx9;M}@U zO>PDgy{Qq6to4Xm0G@9ZJK_UF)K7w>DWzVBu+2mS0jVi<2!5uUqi@0ALLER7+UIy- zoO=LlqxpOk(>+anF22Iogudt;7&=cYGP9~;x0Bfv%Uf>>YbikfwQJZBWy0Dzhp zeqJSKH+2*GR3^6U^WMI|`bqRWrWUMJPNjGeax3ss=XAS&JDH;3v{j$)sdN*9$WX2a zk3i@Qr}pnwH2^4(4}eq7Mq+tgkHI8)M)^4a%Jg;hP0=dALlHm#K=qn?xIOPwpk8Rxsz(zvVOtkd^-!#Fn4$FxI!DRFCVbbEY1Qq=sqSau*a&}aGZH1_}~!}(Tpvw}zieUfLVcz}Qg{O^m^E%*RF z!c$W`U?`0F#vix8@e1t<&@Zd|9ts~$`wiFk`lNA>fZgl#3-MeX%Qb-TzFCYXAqakq zms+?~1PD(|wFZ+-O(2$u=X5){oy6-b=p@fcNmoG!GIe zfXvViD1ZkvQ@0JgaUT12F(*0q7$3EgIhEu^QkxWE?@p@1aPe zRC6V7=c0<&ZHVAKjY}yB2?j~d&PzR7AO~ofRlwAek4*iHYIJ*5>-;Mo!sDo~z zM%1`qZ%Y8enu{NJG`KGbgR6M8zWui%vQ6uu=76RxNcr^;jaR7gV=Muf;q>oDPfw`6 z?l+E=bbLSX-AKx}unT(joxj&}`gk-G`o^m(>JRzqCN_27_=G?Ip3GBo=X2rQ(sSA? z7tPC?6MYXY9iDYfHyt(=eJ$bF#(r+PKVF#JT$eB3h<_k_dnE3$plcn=U9qpJ7856@ zJ4QYPAYIK_$#N_}Y>&I{5eRQfvE({jBpxCz%>i}dkaq{Ba zyTT~}8a(LzaB^wYXseFVxRl!reMM}~HO%No6cl z{~^EZLx!8#-8H?Y0zGgB?=R@7FtVuOXT0S+n81LWKzz?xk91BRtLk|VK-|&Yl?*F^ zdm}ZwJn>%tpaH?Y{+uklL{$dnIrU+AunX#vsNEDT1~Sm!5sxHUXW)ufdPeLj@F0v& z#E0@oWOA}~WanGyO~q`i<(C_74Uv|LQis~q?I$nyhPx>+v~=8mvNmGc0%YuEcMEch zJt%^k=o+F5(9>%4cswAQVJQ5sTg%&4(8*};@+KaYqne<;+0IwSUc0O{Uk3#U&l(T2 zHVguWIPsVqG9U&ggEI$Ku9!9U_2$L=hUa(Zh(=&%Vc`xa=(+xAZ+`2!J#Kxak zWp=*ZHk*aH)JkTW3Tfp>;>?Bn$6_lXYDaRH4jjs^4rMukdn0vIYg`g_1`-hOh)24Y z_}4}ItX5Hg0s0v^+@})BjPw_F|1^8ag}M_d07>X$ND2r6JSh98RmQN`K2rUQ{@3*BgZK@%T_L5}90FJ+k@v^kTs5t)-)e1>hd~ZKcABbx+nsoSSa{THpA| zU?>i>%a@bi4oW^0z%>fWcAAV-1_1mvHqF8Ir>4_Sc{2j!QT*-fR!s{4JP;0jxIH)U z(qj1e;%{BN`POwo^$o`z@Y>XHl)hK)D}+X1-s{ zP%EwJuBkWuM7b52<&AU$?DDpXxY_l&Z|Ar)O;QlSPZa`L1^_orr5TDe5JIyQ(jEW= zHe4YBLyMFa%OD0vl4{CzBer7)UaKz=RZK{rps*(aiDUq;1F3--zK>b}1~d&`2Qa{Z z=b;vY84~b1FygMyi|g_w2_VAGR$`~nmxvM|4I;rxM@zN@MNpLaY@{Sn`ZAIB3%%|`d-*A{Q0)3_r_irK`~g81GLzT zyvjPf4ghWp`W{yqU~ni{5r9~gc976!pi_)i=0r;vYx3yN5lvs4o$_v3D(tx zB758zhd&?~%8ZI(3BrX(yf=c|r%r)52VDaRfyjs(B7#tUZ3D92jTDupNebK>DJ~7l z2m(-%RI^Fe45k5^S()x3BwWe8pTkh-OmuApT>5@gYz7j95BA&Y$Hkxq_fQ;dHAi_7$PXwI=#{|UW zh8>rE0b5ewBoqsRgcDZX_L^W5&hctXc9rf8dp#4g@9U8>xkhZ1TXiKUu=HF!5~&^n z#gHD=s_jx(t>)L9&rqB?!G3I1*olM4q)xW%XHrzxV(#ACd_7VwHEv>4fd^m) zoa>gKJZddtGX`g&2gpV&lwhM1n&Fn>IN7A88~LQb6b4$2+X4`v5Q&H_5yEh#QQb|T zW0!`kJ*!2sYXp{4#%=n^hKK;DFkF}I+kKHtj$2vgp+AQl|&E0>9m>ehTh zQC%~)K#a)X(k$FWH(SYakXAZ?6buMgLQx2^OD0D6DvLsXhCRZ77zeSp3<^?c$7Tn`*Nff9Vyp7^a3# zJctARAfVXB-=0CsgD&uq(>O8$0%|V4bQa|{1mV5M@W9mmQTNN|uvG(qK<>Lr4%p&< ze%oUoqW?iXkWrQ*e$HNdCUHvwePQx9S`YV&zGhAT)^h8M;(Dk#v!|;6i+SI8+|zFA z&t8qb!kZDXp>tFCA>ua$1tu*r(=fURHy3f(osco2E*;HL$DXT#m}B8w7?ZU`_X;I+ z2`~hb$0|mj13)(Iljn|oz?;=rNK)U`HZF>$AdoI=dYuBKrX}Dfp_sTB5K!AL2uH8v|+R8iXbw^{9aWf?o&Kww#ND919SVhik@g z8-Q|+&cz`PGyr#l8aq4xiN>)c8w@_D6`vCYMNr@lA_X=^I=SOzn{+462>um>e`r&Yh_J`OvGo!d1m=^LkH< zBhqE+WLeAly(NG6Pu9+U&y8bf4!8}a06|C_5O@Rq2EK9b;bToRf#Qk$`QdqQH4i_| z{?moG9V#c&RGZ6QI6UVq4}cLTXiTMkDO$)$gTnZRQT{UBihr>9sI}JHr#Yjk*WNkb zyfK-IO#n8FkIRFjGDSgL&|80{Ew!#}oGx4(pU|R|e)&Dqh0O!(=}HH5{gctmF**2O zjTC?Y(nH)W6r^D25E|i>mU*`v*Fd8OqGzVgeaGBVj&i!)vBpBZE zV7S%;KqRBogF7M-0SLBx{N-F%c{_coC{kgUoS*dRf8`uah?vaR-6+L%#IobJQ#EK3fM~*?7y#nPxm9H? zE^o5g93Taysrsee-cUE9L=d=@WBIsh0l;1jp}X(zKAOjH4g^%1Sc(9^i_o7zJ`DgZ z2TPj(;K!)8(Fg%xG>hXofM9Cu`K@Ya({80;G1zfiB}qrpBN z#&)>{e*m_sd!Zv0NiAw-nb>p8ia%@qtZZwbfx7(oftq= zt_OajTO#MZ41BY@8Yf}*bAkX3yhGI*jJ(OU?RJZ*5kqq{gKPlo`t6lU_Z=geWKaNr zgRs6@stW}GJBpk6+vjWTAg8-4zfP@HFaaF|b(9( z^+;Y3ElI4L!d!{-oPe)&LcWAXNF0~zW1h^zLL|&eyctwYXbdi(Tt}G&>$y-flm@Wp zRF+HoZ%`*9vJHTxh?{2D0!7P)A|U~=ycbkC4+iNx*dvds9-W0BP|NSEg3Jj0CC6-e z0~}h8-<0B}<}#FM?Va%LfdUWhWmP$O*00K$KFp^8Ac%0ih){wE+ZCj#E6L*8_O@f` z0qV=HzqgLPHX;=m#*Q~+Nwn8|iq?i(9*F7#wjV~DQMu*`v)*>Il>uxud;DTB&}r$u zjKWuL4!3;4qTOpYDZA-se0TsFp?^?WjQ&1(qTXybBEMb?f{us4=t?aYP_sbB zPKQ>|ewbtF=*2o;58IMdRH^Qzw!4eM#^5F&NWrS;AhY%En8BQ{%buj!Z;gXR){)K5 zYbD+uguThrA(()SGDjm+Tb;1o2;<;p&I*G3>2&s@E2nm&S0K7fP)W<0xuXRZOj;ePz{hxZGYudd_oE@EF*_;&B{Lr3xC zJOlv{X_>i|adIr(FgP!Tz*b$g(*w60aP) z_J7%DBdBR4|F!evfnAyVvsb?JZ2T|U=bXQ8|g zS9kf(&pUZp?rCN5@V?tc#mZk1hE} z;&O^h?a6<9@$^YgGsXIQhp!q7;Z9HYzdXwMkH~pL35NQnw)}lj`U$1`eXz5zKOG;< zz+~VxvHN#o?QQ{)d+9eG@22nk@;?2#LjSK*LUecVf39X1R6l?!yf5gByWL0$1uz*h z`QWzR;}Z}Tdfba6Q2geRdgE%jXQKe1T+=%{p`1I@y@q|@b3J|YZyPGJvG!v02d!QB zmqwv981nc7mESfV8BtjiBcQH)xxwN$y!)RF<_I9-gg!8od$$mY*UH| zJ&tE>HmvG=;CGXoFFFtJ$+UQX|I5||B@ zrM%_%)sAeQj(gsLd1Bfrs~@xroA5+JT9X~p8Gwv}hvU8>P8lq8=-)~1wn;`+D=OKD zm9btuI9IY#G0VU$gtspAGXpSTTixv*vA4g!v4La)0Kyp2?GKf{uL0o4c;O~WE&v?q z!+igKx5JQ_+=LY(-)}xN{K28oW0)i$;yCoUPrWPfQderhOZS3u;Y=fQ6hi{k8=5cj z@@3Q!7?XPwr{t&x!QiVXt)TN$+BkA@)cI%TeQEa~ilVCOR~xS`PVRamrl#otq>O@i zKf^UOv#a$iJuTQwLlOw)h^yy907}Uq3c8jShR_Ye0-z%5+30=58|lgk_=0rOx|dFM zDRqFs+thhg)RbThRgnw;2qMd{i3mUt`jX}C4--TJjId;P&qidbiK*y*W5j?at7f>T z+l=l#qZhPN12F-oxo1Z8XaebB@A=&3juyNQiqJRWeIk8y09gQ?*yW%@3?`73PU}ek zp7bNXDVUlYx#DKNdzscj_#$>4NWC{OhddCNRS*S=6#$KdW!NAva~S!O)lY!(x*sAi zu-C5{GgkK0fvl5HHrM3&sw_;##)tTr1*6`;PFW_HHH{~Rc)=Vrp$ihPXls8&uf;bv z2I}t5^V{-Gg=a6W+%&&Nh4{e{jAj79iSY6!+A#=taB|DOO|BGIDuuGU~s}Vo*~19Vc^05cZTr*GZ*e~!|(tGjJd`pIWW$0k}XSC=x#}! zyHAIcW1UmEYUjPbZ`~htS}n;o3~d+@<>y4>9tl^V=gPpWdUXqWgdgGaAd!9*Vv5ooZ&QnJ` zw!&u24BVL9KYL^k_odRv9N#=uINKr@Y6zP)1SJQH3wJjt8;>q<>7#Xew8k3Yr|-qC zeh^S@5Wxv?d3k#^pQ&M{_HyeV%BktXXZx=I zcbWlkl#9Q`4-fEa)e%dxwU-+8b(a_BfjKak!b?+F?E%sNmMK`q+{<-VzxhbS@>2fy zaTB=F#X+F}xPw-4fqOatxLU;X6OaO$!m(u@XaGPfi@}tgqQ_*9I5y6(H;PIK#0HC0AIr9vs_maSnu0T%lcg$ zpJPpe3EM`2dwkqA$7T#B1Y@Y0UAE25k-0}wR{(+T~(nJah#`xH5^=!mZr{ zadDWY?kncJp;WUhFTvZod1mMT=`MBGiyz@Vht-g2@S)K-m0$SdHLw^~%>P z@5fhOQcgO({w>CjcNA~C--pg%whjPq+=mk*5QHGMK6Z96ET^-m-H};5zQ25J1Prt= z4*M97_2g_E!X;6@CT_sxJ{U(aJdn=f5N?R-oS2D1h48lO)-t?h%mXk$KgtJob6?8f z?D*!X!kIRC+cCueP)GCybPKrjgKGLDPZ)&JVdv#|R%E1F0MD}CE{7-_%cO>Jgxh0FG{EQrHAG|q*bsc3xl$?Pc~5pIlQ zeh^H^L^v_asSu!Tqt>67wRo{_ZrIwti~o(0PIFp0s=5|ER(XEs`)lg}(NO27dUNmL zlY+_Xj~4Cc*gT%0AplTkSbi?JI`WaFI?zBac=*on$N0O_FcsKm_mrwAumI`X08Rcp zu6+jA0370;16<7V0)SCq6j|Wj7Y9EB%nIC9b*6v0N=x?i1NV-m`;m%L z`7`~9Wa`P8JNM3I3W=L9%x8CPTrRQ%E-aze27qh|$EUmcVVGIN#;qpjwJIV70FyZk zWC6f1aC{m$8w}js#HTJmzSKuwyF2}hlkeJdE(Wu~i}fSjA{}f2xEO#{yUTjx_sI(DJ3EwyS(TRfiJxTK0LrQbqiNQ6Lo3 z!H-A#Mv^Rm4I{Xg=`ev9``p}cYy+t2(Q>|j%6QNX#Dd>B6Mtb%-F#tLiJE$_Wo@%{ zjs=>n0K^^5FWcJ-LOYE}2SMxi(swSCuE6A9981=Q(}Qp6&*hH}m7CVa1#?bYP8%C$ z9W#m1OpgV^*xpl*BUeI7NReMHYN3wxmiOh^8(Zx~)#RlHDgglO?Z?AMwgIxI=J3QE z7?|wA_Z~yW1T)QV9ksUxhbT5_W_PhXKggkml^SlYgBhBp9iQ$UNoxW@7Ofuh^_}Sh zs`q7YYDlH`s2l+i_=4W>5Cdo-yonBfo4OW(b|Y7SW#};T!6|JcfHI4b-5+N62>C*C&RBo(n_?#aMlq>bFL@3DSs!-%Qum`|CI9-xJv&qn0Ub&% zYK;Wy#qQ@K{;a;ZiV#+eyx;w)NRI@1Mgd6LmOoSMqEKvnZUn7y8D>>$uO8Y0LeFn- zv?xicHk=N=z{}n4^UunMrqqy3sJfY4l(mhbGY)g7Dg@l{#u-Y!B>Q(L>Jng@dm zk>7Wd^cXB;ZJO3CFp!P?zBw{OFv7u$-^KDg4M71UunQE zz&w$>X{VYXBAu##9d6E(PRdZM`O5b(LmHbb0BG$IeR)JO!;oQdg+v=ns?$fylU+t2 zz~6?owH?2_MYR+{+QS$Hp<{?LJxf~}w!w%A_QEe&b4?P*EOH@8$9szA|UMy3xMff8J)AXezH z(_9BKp+8q)UxwIWa%Oacq8&U zv&-q_;kuD_k8bL=Hdx`mtmC3CM26nZv^#7_7~7KK+gRsdwi1d->IOwodd{tLLZAezEzN-*|0xxHR;0?Gsrx8T@2= z?QwfeF;ap3qwQlQeW24YzB2FpjkpwOt(|+_U)Jv&)keII@%U``H>Do#KXIbe97ubn z7mYtXXT(m+T{<^(VKG1P@ciM4z+{zF$onhpMrD3=&%(LsDN|Wu=E2eO)+9P+vR0qG z^z6Rf26Vddz|hUwj-+m(;^0$f;YSbxuRVypg8{p zHr{(526F&l3hS^paiCSAG=LsuzPoc|K#sQS#upac|2{aOl@8w1TTfYAXQB_+8ZGzS z;5Pczin~2`C}D+mFWUmJP1JO!fe1_pwlNj?>CP_!?mjco1q;GVx@_ViB{K(W!jb^V_3WGH4jq*JU}{JFIa+Q}Z0HC~e*^xDjS`yr zJ|6vkcfSCIlzcL`(U*BkntDCNSLCzL#ed6?J80xS<6q~*aERoFyml^rG+4+5^I4y( zY`ga!b$>27o@JAzcvN5hhz1DwRiwaiaDcMi?h(jS}u(3Q#`1v82P$A;7pB&Y>1 zPlXME{uBhg#QmB+K6MUl4@7uik9F6$p+WhP|G6`~0fgfd zc*CKB=z>{MVB?K)D$gc>>stLWQD$%o+MANeUQXo-N$c?PALP#l%-&3Yyq0-cB%2UF zEO+cuMF17@{!+hDMGPa^p0{AqLTf;!G!OwNRsS8bpFkePAJ=Z&AP<`A7Pw#Her?-5 zJIJvBA$_1`bcf?!a6f`Q;S7#NDHt5;?X&%xj#R|fgfqC?z1MvEkaj?U%e?+n`2RMy z67Nz!6hP=R`CYuLpVPUlYVFzhgZ#M{8>JPZ%&{^V5=_BTK3q$`%>BakOm~Q%OqD%Y zAIeVLWxm6J&EOmK^mUx?cG3cDki_?O_I!VIoJ3}EPX9=I;W?TYJ+kC98%#0)u9>w@W@bkpUm5$-`oqD)s52?j=zJs zc{SdWfmg39w_MLOnhkq%P2AW@lD3=Vw$j5Zan5%=kpLQleYX|yf?{Yvp`#9(rsi~1 z6trz_N7N3=)lSN3bEV_4Yo!2FbqI|2(1n_XdAXz${@Y1 z-Ys&muu#HKrmjSy66tw%nTH4f(n^K3)}}92S6j4U#;ZE%VKxh+FQ<;AxfOOO-L6gN zOk{hL6}8TO9h;t8?T^ioI1P}BcvbUSBq2$6LraAMP(VUqx9@Ku8mC;3%BMw?6QIQP zEN<2jcS0Z}Q+DN~A*8pqjecz;}=OUc6x-POMBhrxwSG}2|H-on+vw))}1wH zzGc~)!?3c@m?`Uxbs|U2H}LFg>sovZ3gv&>h|vUW8ydab{WO7;4I*^haCs~2D#^Jf zx|ElmpJ`N5DR3-1g)nYfECr-Qqh$)yW~19^tWzt539!R$3oQog&>LtgibBD%;`cP_ zlG$ve$};S_pY-%@p$xWk%v@b0P}Fvkeiapvm?pREU{l0kDA(AKt?ur0H$(*{fkGr1 z4tFBfb&gW;iWcz8+%F+04a8A(vnTda(6zuuBe%$rB#yUgD{>PA#0CXZq)ZK*G+S%S zTbF5TjfMdPho`JdMmP_iH*-B~`Bn zD%D;)!ikEQ?YJR)9c7t{*qJkMoM40`H#Ohkb%r0xOvn}iA&OPeidyS%(M)8q(YJHH zrMtSF7zx6lpn0wnRu>qo!E$NJAsb-N^}^bcTT2?EcQ#vZt5~m@o2|Zt)ps^G?|J6c z##l>o6#1riYDx<%L85ne<5!2L?+S*L#v6L)cXCg!3tt2Mgn#%Ue_AHu+*SI3iW)oL zJzb#vy_+}WmoG)1aW4!}B`-i`pa0hV`g@`~3HsbkUuccT}fOn>U^eIx6+0yTE$pF6(Kxi-WJ^XD$|WAjkJ z9V2+#o!bb-uU*F@Gf<2@eR%iDZGCj&)RC>+nEbBfCyzeqSxvvup1;2QA;sHh(;yM2 zzRuM$6XEFH^lJx)?$!G%Z+@jeHef<05Hk{HNkXwUGo$@+`}%oQjehT42kiF-#|0>a ze1G=TSBy2)whx^?^8Ma^1A@ViXmei^TMQiG+)vrBxyQe+|7K@q_r))4edw#-wQ*y0 zSJ2WyFvi=dLmMD)BD`}W-RU8Hz)K(9fM6){FAc@z3>aD|NFQ4#LxB-o8;F+k+o__` zUJhqZC7Bbeb|wKRS?%duDJ87Pll#ee2qFNO0xV2Et=>bu=vlJ{hkSza~%dU5OXw7~!~ zCr~do3cw^;|Dp5Xu*@^~Icx2|WuA|~MK*rDbN`NH0HDj}=5J*lZ;_v4?LW8=9FE3A zUw`~k^8TC^PQ3Y!k~>+bpO61)!GGR=c1$=aBFay-e{O2vp=j^kSyCBor#W(F- zT;8cVCIo4k_BJ)SjU}b%ue56mWV3VO5=0|=gO5%= z^{BBX+g&WF27-OCl9_A@2=7w_JodeRv-j&A<%#jkH63g>&n*&Z;7RFb}X zU8Exb@oK@p+9%ioGyuY$Nbh|2t^ytItE=UzHQ8<#`Rkqgr{bdP&{wYcf3D^{p@t4uf4yhlp=gXC7WKyaa$he~ z+XnrLd(Vk*oIqu*^E9}@3OUrGDr)??n8uZTZC^S#-(@V+;@`vu4q z(eLL@ozviHGDQxIyi23v5$qj4`^cqu{ z;lqQ*9tz#&^0|V%*}mLn2?!mp+PfXBXXmyB9-;)V+OvJ~!UA*x5r*=9ZydYH6@N)w zTpvz3p1)a7X|>#B(zFrF%B%~?F!SzEH}IC3D>FAi|Ai>Kby+`64hp|{$r z@>a1R7kt%PoXwxM(ne}3m1$GBq5BJ7&~B7gFBdeOMba=f+I5Bppbm8o*V`i0hmy^{ zrHi7y5jT)qFIm0gV!ud*a7z`Quf}WK?ja{*W{>u$aM+n|(n?v*3PZDt9zcpB=UT8$ zViz{;VhE6mL}4?3FfQpJ2Ihpjp519_*-5`Bd23l-kkZ$S$&}cg(@Thok<(aK7vi== zyP#XU4P$sbSTvlxyM5HOkv>CNk#d_%#w$ZK2h095?u zgDo4d09rBIDbr>%+a3r8?AmVseNL3qy(Avkmo=sBE~%Ne)46gpWudJYi)rsJ z)-~;H%CmwMXVq8;sg`DOe>jp?W)x|2?f4w(3}ga)S9-iZF!DDltE-hS%B7V#6`kfs z)Y3%&v9&orR1e({e{Vrk5RQ+dH}em>AAnYZhi;v`vJ6uI;7+p9w<`pcFY8}l+W}=L z)9*3Xdy9*W3^8}7dm3oQhzMAMk%2~l1o!*&5K;h$o`aPYT6>|{ zq#y?CapRla&kh^&eM>HC771g`udN3i#9R%~PK?YUo3fMMoK#!O@zmjr#BT@$Ae`0IwQA6!DjBNNTRY+C%srl~FM5fj4r$8oYaVd*{R{wGM)kAW zQ)Kl}uhfmsq(6bhr0S_t)Fy)Lbq9TZwMqfdwBR{&gEUH5X4-gVvpCj_@>=p)tcLgw zF6eq8m3fNlVwf#Hp>$_(U0LR-5Z_IfYwpPEs#fHGo+=o2_0I<=< zA3cG32m*fMUK|!uC=zP_u|6X9$h{21pP z_}h8<#wI?n31kzjEFC+s^qb~GS!pt1&a8YkU7XMkQGo_|BA+}L)q=;)3_aGDv&Zjz zAl>RsP4pz?D1BwEH2VqM1S7mYs^&{z6Tm9e2jUB$b2wTvc5mn;1Z)k}B8?u&u%{ugUf9*jKDY+U!=c7G~OFbZbg`+laUm1cx`O z@qdj|QEb^XcCR&b&(7XP#ws_H|0@crkIiQuOXeVW_>QgLEu7ewtOM)U^vy4(zYMa| z)4>l64c-+^5MfDc{CfI}3*;rK0k#Ig23d)Au-cQ~^CF`@)l#3VgFisauh8FOqX#%N zBK3+YyHNi(o=w06dPltLXYhK1wV31|r=Gu*8Y$2O`Y^68ug1SuE*Dqk$LyUyRVwY+ zcercRDQCs}=tcQao`Wfm-Cg@F-r{_E8c!o(8j%~i9Fm|Y( zEk3pK{HI1w)mF=pW#Gbg4jz0^#a9`WhxXgz)pteXp`^!+_Uq(fQ5iCV$tBw7rM+nC7wE)QHk5a>IrCfAFjVL%ex0@1 zoBAKm-h6^)kq_TE6#lY!O^S_`rvAa@r9Yrqq~Zq$JHMenlvnnx)$h;Zy?lo%{Fe7U zC*^Bu73~wVwSPx9q03#Rt=};pn3P2Zo;O#1E%j&%a)_D(R5b$<1cnvLflwzP5Nb2c z+g#6~91e5>BI1pVBuxV#B025vNMm0@{77oyY5j{a>PM2|!~RZ#g=(iBrP`U|;OJ&B zZiSXg4=)XruGYZpX{&4ZX8c|=Ox%sujn=xkb}7#iSlmPy0Dxv-dI-7(uvn=c9`cGs z3JtzFZG;8^;9@p(hvI4qoxu3;si96))8I~{(py3^k67W#CaNzTx6K*!Z%!V63%yT& z<$%foyoSaaa;BPE-OwLNsy{g@~o@!^7Ge!etJQJaPdw1VX!%26Cq*HsE zL)OT##vQ%u>y-1AE^7OR!h9;=U_A-qx*e~iom@txdk!0(u6viVn~AIE7BU^4t<$xk ziOvrjlS4AYvA*2lCo=Z9ag1_7l5%E}uT?tL?CHIS=^ndy|3Hru_N+deS=>UBpUWy` zbV`F0d4IB}wkcaqq($?Y(DTZ8MtL|{pFEm9O4&gJ>S=B10(~8Z^Qvs=HNm6+k{)Nh z1RhVL2Cd^Qw@Qyki* zg@bx9#5rtfh?)*c)%0kXB2Bsd&1znKyVcM0!CTfoKTCwD)ZQos z-PMmGIp*u#dD8~){pDJ6g@N;y*giBCMC2kPJYYhdOelCDhbBw-0)5cz(vl#5{*p|{!2zP)7ROv};KH=_2RIqN&s zdXd1u%b*1T041UzwSd$>u`@nZW2&$;w5b1}Qn`><*3^G?E0oMnV(RT_`=Dufn!cvI z4|i&v`oa{X29Ytct)qqUY3>7%&96OeS++QUNQlT|btZNewu1I!nU*nN9!lj#&2bLD z><3S@m-euBhsZrBe3<0=>Tl+w&&12SxtZ>&{*<6idXCt1d`bdwB_V-cF*@YmlkOFu z5IukBe(jUm4Ptz+-1Fx6)i!hq^&x)pFTxA#r?9XGehMHEgCdzL$FwD;_sM=zXe62c)c)KVQ32!UlM^T7JH@R* z6u;ik&OBA@I9+1K_U!oQudjZJ*Z)~jqF7wmOl2wE12t`^lRF6+P6!KSJh}(~yNmRS zY3_=~ZPxMV62KVE;=~k+X#ngwsS69)4#io)uPQDL8ePd#xn?7{1)Jd)O`qKQ7&4uL z2QWYnVPKL61t?~DUaUQfI(*#SF1=apHz1~VC#%`VzoK7cvXf*t2POzoRHO6?h!L5* zu^Sy5fEsH=!>gM1MuQH(r34kFz7%7fGaCc}rSbeulrsRh=tZM96FmWwTA9Xj0U*u= z(a1Ge)26nMSXUe)_=fL4(VpMMjtw#~;qKbOC+(5|)ye&uxoYS;4ax#c(Ol&IWqD}_ zcXk-ok0P5jY*)ljM!|=im2p*>FpMA1P_I#+)L_Kwvl7wgaJJhKd8ILaoX0ZW(t3rS zU084L`L3+CN4FftQquZUcN4W6llt`A()xbgat+#$?GJaV?fUGrHvC4*+^@BK!>cLz zScvu&v@T&0KoQ1&$~}BY_7X7fix0`quEWbf`}djGowUaYSPzW%sn6Y{mI?7o$%7}8 zU0tJoJAULGZE2vN%$zuBP6&{bWdCdPOHYUu0=-in{(<;@?FFCo9P(T@5{mgd+Xd}E z^U%-t>^Kq~%6Mvnntzl&v#6E*0`Eep4_N>OX?}NSJf$=S&ZerDQ*{Q?N`HN4tRPJQ zd8GT1C%~cTcXN+Ft#1F&flo+d88~_DHb$)ccDCz0svi0RIhiXj}?&<3>?_7 z2R*5yty`U|0~`ySU&5mca7{?YavS0Q0LC+C&@bM1*ITvsY4;7v36VLyVrY9|IkA?DvWF_;t%G|o!8ED!VfohKkV)npfK${T3o8=0f4bM z^IB(riiZ>8k7wtc^v*1o;9E7?cuqT`meXP}-NA}9+jmd%PsqD7_OM3ubZX^qQcrtv z!#zDI>)TV>eK7lAlg7n^t+(rA14$aXobRbTnJp`@&f-1_m%vqQgy~Svn1EW#gcU5+eQTw1o#>Ei^Zju76I55=I?Wd z2nb0%np=IbQMMXhTQxt{SbLH#D%*KzT7OS+w`~t-z?U+!pSDg#s=dE6_~Wf(88%@g zCEF;;^w2Xi#@g08HWMU4GyTL3?NPsRn{p(Ku&{)9`=v`Kb3FPnI%>MX*{@~ru59Y5_;@F$p`t+8ppE`>$CLEc-fl&}32*uPvE%$ITZTYPG;VFCd zv|elV@syGJez_~fda=OQCYL^unonYKFAd0+34$@;rT5h!7?Rv8FR)z(LkC-fdKygf zTJMRq$w8F@utmXB`lf`+q_AN&*5C_EW_EXkslW)g>|iYofOM7F-O*AKjJR%k%h@y! z+b98GBdbOp7|Y|}V0leFe?@+oJquC?KtjIKD7@9(uPJS9HuJGc=j!OgeLclHcP_eO z<$8P}Sk8ot=}x#9fBqY|>LbwrP&(Y5%MGIkK!oH98Up(SbO0V!0$xBXha`jIl&+aM zAjGDJ>u9GDW>K8dbUP13sJXcE;^B-Qqz+{h**mvC4GCV z(yOf|wgnyzRU{xn#KLLkMFoHd^`uxzNh=fMweq`5G9BA!YGLHft>K&rt*J69wL6vQ znKq|8ZL!j^Z(3mzdPeArz|~Dw1O>EQ3W%6sa+Mnh>QIWeQhX_eSi|KI=Ugb~AC-J@ zrxR78(DnnE3~o8K8SQKWRYWGGCQ5Z0_6g3?LaL#6_Ody*FvH}9o1EXGExkAeT z3cSbSodT-@67D5MhZ6LM3F=t!#B;P!(kp#XJ}eId&9v!dy)_2IyKK=lBi1wRQZ?`; zF@R8M9o9*(;jG(*{;ZY;YoZZfYn_W(T8aIdWIQ8AHD6Gzc{!P@qm#{+ALL_2^v8jb zihWD>+o@_R5|s_J#mi3esJ5}Y=agxJ-~<*M3Q+<*HjPMWT1>?avRRYRWh~78Fq5k)?P91~@FBt!0Ohou+B`@> zY3wKwW&tS2-KfuQ2niNxXV>w#q!>^X#?CxeJV-QeP0FW2uV)dK4-l%uVrvKt7>Qq8 zM#=$*YyD!=2zW8Tq5$<-V@B^ut(oq$`CK8`rR*J&IY3?&9oARXSj_$^%fAGa4Sr*Ko-5-6%Ly>w=a-B zB?x_2O5ZZ1Vd%n6QiRm@mA8-UFWOu8Rc_0(^`fx-sj`M!0!bxgZ=Ku(Hn+7}VFA{Q z@3{_d{g!fM4@$R$u)?id*xwv_x&m2s+&0Qa-rg20!j)SmHDvmb>7s_OqWaSRJ&Rrx zVSi_H^USjk4vYoe!TlJr4wu0e#J_d#zAG99NCRb&>h5HHL?L1Z1Sktzdx6_e@xYT8 zGglTIxZXg|#>21B>{JH!E!yHRfn@NkUjJ|buUNik;KF)J(tP8Qr{379_v&?c3JO30 zsT52A<0|u0onytw79oG#TKGWvyswGQrO~8e12B61)WIrgiWT`+`{POqH5VT`g=HTA zeEC0=kH7fH-^$I!eS<0sAVlmVV!)&LBe|9S)Z1+oy+qFP+2_^g!z+DqJsoqKUr720 zsr}V~@xX=wV6QCvXy=Z!GB#Juk1p1~Hu1VbareC=Wj2bnZA1PllfP)K&R`tQL&D{%DUo zp08hsKfcV*8M-V|T7U%Tt^V%&f^osrQ1S0&PhHbmg6W;%p6~Vc3y^F0A1s`^uC)kw zAR7KbcfVjUH*5S&tGzz`&QiX3sDFJ8=T0Yop|o&7>v_QV$sSAw39s_p)BLyoQaZj~ zOt{0Af8vn;zw(KqvXzieXBR)3x~aguZ2fHK*r3dQE29ctM?5wYe-f)Psm$K`&*ygS zi~B&lYS;fTcdkRR4tlS9;CQEZ_=~60>$My*#N=-lK61YGht3t*aS$iBkch%fsD*zy zu`XzYf(9$m^g{ZFPUPN6xdG#T=ZE$@(LgJzwr8F=^u+a^gYQ^4KBam9Yzp^d`n&_F z1K%qr_NWpVbqYSN&o<`P51c(SdBpR~c;@>j%OeFafhn$}y{mmtAdS<9D|#^iIBBN5 zOZ_Yfgv|b0VIVR{$hOsbZpeugzl?y;NV?@3YqD)mH$lvi=3W?-9Rmb&*iG%Nb&)FL zD*f-A`-fG@BF@AKr?fp?GZP~*E=^gl{Z!ds0i3mYH3d^TRa zIdb3epC2CS+j~b{Hx&No@sG{Tr)O-l-fqep<$m;N>ElUBV<8}l&{Dk3KN%r1g4k|2 z25;vnuB**NTek;QnZ@ZDx_kj(9vWB0X;{`bKWr71GDSBlgYNRWlF`kLwd?w9r+E8< z+bU8#w8(>Xq#3+Is}-6_q~O^EofLq$$4xeFLMSM~3%k(Bq8(u^*rqc7Cmf-qYpd3C ziJ9FY%%b0$V?vj04y1~0H=%}`P}!49D7SgeY&4I>BY9;4dRs&n^>zYQ?drf9kBgmp zOZFyqoNz_2t-vsh&MU-{29?@OZtCkDT8YsZmHE*m3&5giLvIIA02+R0wANv;PI^W6 zb7E2>(@WrZ@v54$o%B+$%ivm=aG9MWah~ODZ-W|6t0vZbESYSK#=Qm$0(G?Zvgi=V zMKE0P@*D%CwDz*76DSO0YrQ?eokWU`8!jLwrj@|S%Jx)pRdb4!id@n?&zve*9vSk2 zS~I1RZNrh9O`eBi9ZV($WC}`8H-hzSy$zccx9jb3*{`jV8{6mm)<>>%OW33o=X?&7es~y)tfD~F_7-RyFO{aaM3IY*3d2LOvL>#sgbl}|` z3yO=@EG;XyZuN^OH;TNkt(V2)a$U=X(H2&mcy2HZ_eUiSIyJeIYA&&;gv-mV#M6r* zw_<3_>_^oocH0e>->S+bgpo^6SeBm3hDoS`CMN+il8`$QTg)m-I(}GlI~@A|bCv%4 zJM>yEGijPeIv3IZ_UnJ#Gtj(P`}ku&*t{b@^>5t=Qfv}Kka!XQA*bip`#$|RNeO^s zec@dHFJ3$M3|C)Hv7u-wFTN8qzn3CgWwyW&iXem7}-4&ia+?WOjOb>rMA7 z)3{BI#SDmcOZ(gv=T9&bie&6a<+pQp?MeCpT-PiAG5fVT;xy6w{MWu-d#Cj*wd&0; zw7>f0-oL!?x}IMO@4Y|VNkkRl{ATv6*F;?h{d92bjlluI)E43IX21TdRuiCig?r!O z-yxWM5&uEvvX%OgEDb2|ihTA=@~7UF!Fag{7RZHfIu`tbyf4j`BL3^t*^gM471Uj_ z@7J7H{eSI!X|yHRRo=Hx&2^_Y&r{EHt4B#K$t{e86&oWw#0D8-a15-#GL9Jn&T;@l z>@b7?3uieb7A)f!94s4xB_mmuCAF-c=lS*PH_z|gd*2;vt~xtEZnwHEwc0i~39)qvV8CKcRw*Yd}6yVl3;V7j8@KbCr71#xhtD;#eIAX1@y&lFh^ z7~y1FFx&s_inN%!={&IS> zHe_uI+WG>!X>3Vz0|2~~Uzrb2&ecZZStO!9(=*34yteSqx7=2JXQzKVH~8+X@X+Nm zr~Jo_D=9~a`-Xb^0CZgx5U9sp@=ke5G2$5-Etf%l8*s_HzpZo*q1>O%frJ@zzpqhs-h{ zRX$-+lNbt-C`o*|a#nijXx?~AdL&h$^TASHnTq4``mWqVwLyawhOrn`o-@Y*1Tws@*!Bi)12BYC!(8bQ z4+fn(kp(b>thiRL2@+EE!`#@S5+#k9b1TNn)$(F;!vW)&IUKumEyF%hOLJYziT_=k z=;{kkXT-8fB3t9?)mjNg0vKjR8*%|iR}E%UjU@h+33@pjOl3FerkylRwMY3v za!AP(tyK{K=ENCM843VZ_|{;d;gfh1B-sR@P-G1h06@sB^xjhF$w`v|sU}}HMgf}Z z#_qDdUpphc^wLRr)ePd)dp2BGzZF@U7&V@yq5+j!e3j+<>O+GSWv3cH87EOv4`UIA zk*yB)fIK|*+ z`SS1Jt12Q1vS{~L?k2bZr9p=hHa=Og( zmw_|<8~_{Q6ZoO~cnyF#E`OAty3AD-^qc(Pn|K$2R>=7+{)c0nC(wtn=iS%`NoN=E zNpI=mrtYCkdUt1Y6Dkyc)w$63%Anr9EBRU3Z}6xD&+@?%#-xh=KKC8|K$;B+{sKGycZ?T~Q$oJ{MK`K`o&L)rc9y~wySNwX-S>k`bnkE@X z=57XCNAiFm>}b*IDw=!%&|@B$x%OO=9u!P4peFg=iN8x-WB{{WkIg@@NA?j=6~Sk5 zZX7PEK$XCKP$lo4L~9uUmvWdJ0uvbSV$T*&?o>kqPTT^-NY zYV?)ydZDcos~&A>bK0zxh4>WeOBau>z35MXklv90xV`m0^k(5qAUV+3Juw4lYg^ma zw(d63bLQ*BOlnj#{U#61PPGlC+wtlz?#OMPB&h4~{!cXT-WF^`RqSP0vkBuKdcnr+;*MQAz|*S3sp7~sGHh()r_mhbg9+frj+KQG;j zMulUNms_`#+fz_7P4V)Y*}t*JB8Io1#jXNCu@bu{Y9#XbV@**Zjogr`TCIRgHHWQh zH@B2KGR2GWvy1f^_vnz2o9y;S*7Z~ddgiVqFV1+w&apvRF#wnY)pxH|_XWM2(A11E z8YBQjbI>*5ZuZjzib!5e$9>i#YLc6+g=dwqbNZwWCRYGFAQC9wc8aWArr31M7@(-mWX7z(z?>SM)q<-^~L1N)yrdWRHyb6nbcaW6Ce-KSHlxiLRgfN zuzW;8?TPwAzgQU5Q#+w{$S@sJ-siEzb&ohxmd{&C^{Y`#s^><_j;}b5zcjZvJ$v-x z1DL@_L(`gc&k{VMK0JtOw+{ex-2rG`MmJL>dtZace)FSxSysLP`js z5)`5E>zv7wV`i2Kh=d?j2#|Q)Gr^oBAR<8;2?+6z^qiA#z9|V1F>}m~>q7{k-sbvJ z#>`SmFq0xQ5MJ+55Utk+^<4U9BBbM@uyVatABDa?F2nfy=lyv9p!sh%{Ni2h@A9?_ zkW100GpDYql_bH|ddJ)9>qye%9DTXAyhy&14YzLf-Vv=QATdB?9;nXJ|{%MnGQiKA#z>iHLxQy}rF( zS0lH$6`AWjHvK9*fCpCp0l{!0`ZN3VX|+U(d^0+J%-O1df>8Vqdz|dI zrbP#UWsDuCug9ZVIi2!(nJs7kdj8kR-L}@UvZVk0eDV3-?RIY9-qxa2W{-q_S<5Hc z(attbL6zAJ0F5ZZ!T z{m+?$3pArMKIrb;Q)%ma;_S#5!r%4O)!RNWxLyveFOSbXGrjQ4kpnWUY~Q=}1Kk74 z(1y}$O(!!KDi|J}dV+t;yWPqE@&8lL=%%jdmIC!6-&^}(*Lz70E8 zbn_NeRM%g=GW*wa(<{ecQg(0rx&EFV>vxn=+3;3=ntOHjiN(dSL(lV2$J;lqe)G`g zYHO$WTFWRo9-n_^F@OBnOVZ+dcW!=f@2aG4P4yoU_K6ek>g?YwE)5@kfqR?ZvU%;> zhBnq)I?H48Pc7w7A34A|eg9n>e!Oo@*fUgn?e&@EZ2sWf@^hz;NUyZGCOfk^XU3#SN(5X;J3fVu#s zxU+E(K!P|y3_u0F65y6d!Z^}up2gfq6^#S25U%)qgHR?ejVp)00hRzbuxE#R+}br| zm_=z8rEdq1!2eA$_&>MMx`fl%(AKXfwPX`{rdUib7R{To+X%>|l_q$K)*{>OdIWA# zBl7LoGozq3=g};HfK88C01-l?TtX#Q0FUBjk$3rJS?n4p_hqC8k5iSBZFIr3Oi9Ey4( z3`JF9S&w4Zb8r)Fkqh}+VKQ;b9CKI;7pi_-t@+ieTV71ODg!bUZX{fx5K$6Dl`!DI zhpD&dnx$JYL5Zq}>Jls>;RT{j3X|Y4szg!ZIncF?q2+Wl7D5T@6xNs%#3BepjTEUU zB8>}^lQvWLaHaiRuqx2 z6UUC{BEG5ng?cC0^lC9QwY5oa%^1EeKsxjfQmdOweeP{{7Bh2KbTTNk&2 z_^Mv`59ya{6dMq~?Cky7@WH?r2Pfoj#-jy_v#ZL#y0vd#xR-!}R{Mj@p()`A(EI$2 zf8zZ#0W}f+ar*E@rA(l=2dnOsZv8dy~RO8X}-Uj33gdE-4U zvryoib-5Pc>$jip0fJCtRIqFb{DV2U%3=MJ9BF2BSj^*`jNqmwykr1lk7MX|BVCr zpK!WSX5`_h?~}<#yB0Udk@AV~>XW6%Uwpf>Dbw3fKM8)qzVPe(;)afy^Lkam8*+MY z){>b_CDUqT1JW!KiIvfNGM1W7m*(To=9g>QC0nG-2tn|em;%9`M5Ly*&Yank$*lPC#Ki1p$FEjTAGGe<`OAGh1Dp4(WOMawhf;O~k+9XaoY9*} zl{I5&Z2o`E&CMKqPHbKM{k$c!O(mDp`!cDzom!chIxxR@=HPR( zJ@b|wn;u)W$?xnhXIk}aM5@6$QjI~S)0N4EL$gcI9epX8pSs;{lStXV{yiI3Z(Dy? zE!!%xZCWiNMP)ibjOnvEnSMz@Pl%fJ~B7g0oSj`rJ zI-n>_1kyp9>Usw(0(zjTEC{55);U@V7Jxx$8aH|i@Svl;5f*@+8wVjF!|O&?fHcQX zEtaoQvn5rk>PfHc-?AZLrAkN7!fh~3DV*;gT`BvxO{c3nru?7IKLBF+>asC1;bSv( zDza5O=bosIEsG>^oPcS|+KQ`c&Vsx+GoTMpZhM$%@XN-vLPdlCieBx$ss?VV*R_ct zl6J4Erz2%vt8|p*2?05RPJ`71G?Gc~j!Xq-?YdU?>+{+~D3_Xa{rbg!jaVwl8h@|60dB=}ZuIp4Hr_4#rvF18a-tpnNK85Wmeqh^1 ztRAcvtEVgFaBkui#tLE?IB~%ZY|r&%VB5*QwFBsFzhljBBZ@+nsaS>xgn;lU{$gs> zGJe3$wNf_*5?)RY`<(nKPByTFcgCy#jr&NW+~DKZ;Xl$&Fz|!9?vFSRr&*WaFPNu) zRev@C-y>T;hDTc1#!cMm4D9z}Kd#lyyEbt)ly}knuOwqNKz#+uk6`aj8Cti7F+ z>B3QWd1bApUOrcY> zj>nTByPv~wh|2`ry|wjY?weZVs04paAO4DYl3;ah_TTTe^d=Jw9M&eDvR)$CEo}ZI z9$cNYF>qd;`*r&Z#Z1^bsQs?@rnkoTHIkTKA(}i)cRj+JTFe7udORGmp`;BJhLPx& zYS<)HAXE({W2mZO#D=99DN?l8GlGh)qzpA}=!tGDqic?#`;D8DV3iC*$rzfa>!D#QhD{`( zkZvd$T}uoDtA_Ssh=@>k7tfDOOiwM(PvI3$Od-usGP-6NCU@H#ySq0v;_Q5VHttyS zTTR6)e=u}b9xrS20&GfzmU011P0EbU_dZ1A?p7# zbIE`T!1R?*RPF^}LbIUqt?Z~?_u9@+iTGMW-jyZmZ%c~{(*4K${K5)Ok6a79N#QQ8 zOn;w{k-oQNV&R1qXLznmnifnu^Tp}f2|Z9yCr}J|9+x640yvM_XAr9pg(9xjYCE=X zX>aof`l~)qFJ|)NTT<@~)@%ye2xLODpf!r^ZV1{w8r%aQ67uV*DG~yJh>~Bc?rrQx zUrx;(R2CX2-mg^m2qpq`Bcp^-`}s-L4H}B-mdt1JrAvN+PhG0aW2JRN&o?Xfb$0|z z)L2m85)WrW!?yA($>MbF!wvIGrIY!^czKq3+aGMn^>+? zjYDLbt+u^lXRcl6df{PW00b$crSkDgr93&pmOjwm{$NX&pKYl%yrtKsw}1P1{*8a9 zZ!#;5SPb8Esm7Via=Cn_QeT+7BCF;4!hES(M#_047PK&D8LtSsm zHKjWTt9PvVYjL|odS2xDVH`E`(eL7JLZMPGj!c%9IBaNFd_b3^w7R|9o@i`Z-KTag>vb@OXRo!z@l`e|H$a%)4cRg$KhV7 z9(PCn|BA>I3zv$8OXK6$4;;rCOrOE@tIoTE#Vc66j=bgiidQn-PHvZ{2Qy~Q;~w6S zwBPp{_3K7cqqu98{NIhAIZE>a^i#>sebGIF$))IzPOagd^-1N3^zsA=v7~geE zM@}e<4W*)Bw&%jR@_$Rl8sGNtsxYYqu?WL3^yAQF8AEauCbclq!!QVfByy8mR&D`- zk%Wm8Mph68fggoVBSBO~i4(;2APoGlJU;sJ^hE9aDRa+`O}#x$*^WR`6u2_>!OT(O zhH)*7d?TS;ZZMnWb_S6kL?8}>C~#%uvXqFWAI7yX3Vq+7o4zu?aQ5gyv^V`=xN!%J z#7qaFCqtK$1X77^8dMT_iTqaem6>J2ewfsPI1IutbYQvms%`6zQ%webcwhDb-p)W|t$(3;`b*j*fGRwnvzvxXgGUzM74@x`X&I^) zN9^Azotj}k20n+cKZ_IJ;-;RD$tlFLvF74h?jAyo{L$E`XQdE?_~t;#tNqCa2*A*LL_`c_O)i zrl`WSwKm&e%PQL$-D)CLCyES9YqJg2w#%#f_x5&f-n|XUO)h7#Iy{~K^6=SsX;QV+ zX4`1Bt(AyPyIIjJB2rAX+16Wat3;ZaYEsNJ389#3Q%Y;It&&tsyGb!hL_~&~v$b~H zEGt@meBsIE#p>l#= +# +# SPDX-License-Identifier: MIT CC = gcc -CPPFLAGS += -Imui -# for bsd_queue.h -CPPFLAGS += -I../libmish/src -CPPFLAGS += -DUI_HAS_XCB=1 -DUI_HAS_XKB=1 -OPTIMIZE ?= -O0 -g -CFLAGS += --std=gnu99 -Wall -Wextra -CFLAGS += $(OPTIMIZE) -CFLAGS += -Wno-unused-parameter -Wno-unused-function -# PIC is necessary for the shared library/plugin to work -CFLAGS += -fPIC -CPPFLAGS += ${shell pkg-config --cflags pixman-1} -LDLIBS += ${shell pkg-config --libs pixman-1} -LDLIBS += $(shell pkg-config --libs \ - xcb xcb-shm xcb-randr \ - xkbcommon-x11) -LDLIBS += -lm -ldl +LIBMUI = +MUI_SRC := $(wildcard $(LIBMUI)src/*.c) -O := $(BUILD_DIR)build-$(shell $(CC) -dumpmachine) -BIN := $(O)/bin -OBJ := $(O)/obj/libmui -LIB := $(O)/lib +vpath %.c $(LIBMUI)src $(LIBMUI)mui_shell -MUI_SRC := $(wildcard mui/*.c) -SRC := $(MUI_SRC) -MUI_OBJ := ${patsubst %, $(OBJ)/%, ${notdir ${SRC:.c=.o}}} +# this is just so we compile the tests if not a submodule +IS_SUBMODULE := ${wildcard ../ui_gl/mii_mui.h} -SRC_VPATH := mui tests -SRC_VPATH += ../ui_gl -vpath %.c $(SRC_VPATH) +all : static mui_shell -CPPFLAGS += -I../contrib +include $(LIBMUI)Makefile.common -VERSION := ${shell git log -1 --date=short --pretty="%h %cd"} -CPPFLAGS += -DUI_VERSION="\"$(VERSION)\"" +ifeq ($(IS_SUBMODULE),) +all : tests +endif +MUI_OBJ := ${patsubst %, $(OBJ)/%, ${notdir ${MUI_SRC:.c=.o}}} TARGET_LIB := $(LIB)/libmui.a -all : $(BIN)/mui_playground $(LIB)/ui_tests.so - -.PHONY : static - +.PHONY : mui_shell static tests +mui_shell : $(BIN)/mui_shell static : $(TARGET_LIB) - -ifeq ($(V),1) -Q := -else -Q := @ -endif +tests : | $(TARGET_LIB) + $(MAKE) -j -C tests + @echo " ** To launch the demo, run " + @echo " $(BIN)/mui_shell -f $(LIB)/mui_widgets_demo.so" $(TARGET_LIB) : $(MUI_OBJ) | $(LIB) @echo " AR $@" $(Q)$(AR) rcs $@ $^ -$(OBJ)/ui_tests.o : CPPFLAGS += -Itests -I../ui_gl -$(LIB)/ui_tests.so : $(OBJ)/mii_mui_slots.o -$(LIB)/ui_tests.so : $(OBJ)/mii_mui_loadbin.o -$(LIB)/ui_tests.so : $(OBJ)/mii_mui_1mb.o -$(LIB)/ui_tests.so : $(OBJ)/mii_mui_2dsk.o -$(LIB)/ui_tests.so : $(OBJ)/mii_mui_about.o -$(LIB)/ui_tests.so : $(OBJ)/mii_mui_ssc.o -$(LIB)/ui_tests.so : $(OBJ)/mii_mui_prefs.o +# +# The shell program is used to test the UI library using plugins +# It is made using XCB and XKB libraries to have a minimal dependency +# on X11. Also, allows partial updates to be tested properly +# +$(OBJ)/mui_shell.o : CPPFLAGS += -DUI_HAS_XCB=1 -DUI_HAS_XKB=1 +ifeq ($(shell uname),NetBSD) +# NetBSD requirements +$(OBJ)/mui_shell.o : CPPFLAGS += $(shell pkg-config --cflags xorg-server xkbcommon) +$(BIN)/mui_shell : LDLIBS += $(shell pkg-config --libs xorg-server) +endif -$(OBJ)/mii_mui_about.o : CPPFLAGS+=-DMII_ICON64_DEFINE - -# use a .temp file, otherwise the playground tries to reload before the file -# is fully written, and it fails. -# the ${filter} are there to make the sure object files are linked before the .a -$(LIB)/ui_tests.so : $(OBJ)/ui_tests.o $(LIB)/libmui.a | $(O) - @echo " LDSO $@" - $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -shared -fPIC -o $@.temp \ - ${filter %.o, $^} ${filter %.a, $^} $(LDLIBS) && \ - mv $@.temp $@ - -$(BIN)/mui_playground : $(OBJ)/mui_playground.o $(LIB)/libmui.a - -$(OBJ)/%.o : %.c | $(OBJ) - @echo " CC" ${filter -O%, $(CPPFLAGS) $(CFLAGS)} "$<" - $(Q)$(CC) -MMD $(CPPFLAGS) $(CFLAGS) -c -o $@ $< - -$(BIN)/% : | $(BIN) - @echo " LD $@" - $(Q)$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS) - -$(O) $(OBJ) $(BIN) $(LIB): - @mkdir -p $@ +$(BIN)/mui_shell : LDLIBS += $(shell pkg-config --libs \ + xcb xcb-shm xcb-image \ + xkbcommon xkbcommon-x11) +$(BIN)/mui_shell : LDLIBS += -lm +ifeq ($(shell uname),Linux) +$(BIN)/mui_shell : LDLIBS += -ldl +endif +$(BIN)/mui_shell : $(OBJ)/mui_shell.o $(LIB)/libmui.a clean : rm -rf $(O) @@ -94,13 +65,13 @@ clean : # everytime a file is modified. watch : while true; do \ - clear; $(MAKE) -j all; \ - inotifywait -qre close_write mui tests ../ui_gl; \ + clear; $(MAKE) -j all tests; \ + inotifywait -qre close_write src mui_shell tests/* ../ui_gl; \ done compile_commands.json: lsp lsp: - { $$(which gmake) CC=gcc V=1 --always-make --dry-run all ; } | \ + { $$(which gmake) CC=gcc V=1 --always-make --dry-run all tests ; } | \ sh ../utils/clangd_gen.sh >compile_commands.json -include $(OBJ)/*.d diff --git a/libmui/Makefile.common b/libmui/Makefile.common new file mode 100644 index 0000000..30f04a0 --- /dev/null +++ b/libmui/Makefile.common @@ -0,0 +1,73 @@ +# Makefile +# +# Copyright (C) 2024 Michel Pollet +# +# SPDX-License-Identifier: MIT + +LIBMUI ?= ../ + +# for bsd_queue.h and incbin.h +#MII ?= $(LIBMUI).. +#CPPFLAGS += -I$(MII)/libmish/src -I$(MII)/contrib +CPPFLAGS += -I$(LIBMUI)contrib + +BUILD_DIR ?= $(LIBMUI) + +O := $(BUILD_DIR)build-$(shell $(CC) -dumpmachine) +BIN := $(O)/bin +OBJ := $(O)/obj/libmui +LIB := $(O)/lib + +CPPFLAGS += -I$(LIBMUI)src +CPPFLAGS += -I$(LIBMUI)mui_shell +CPPFLAGS += ${shell pkg-config --cflags pixman-1} +LDLIBS += ${shell pkg-config --libs pixman-1} + +MUI_VERSION := ${shell \ + echo $$(git describe --tags --abbrev=0 2>/dev/null || \ + echo "(dev)") \ + $$(git log -1 --date=short --pretty="%h %cd")} +CPPFLAGS += -DMUI_VERSION="\"$(MUI_VERSION)\"" + +OPTIMIZE ?= -O0 -g +CFLAGS += --std=gnu99 -Wall -Wextra +CFLAGS += $(OPTIMIZE) +CFLAGS += -Wno-unused-parameter -Wno-unused-function +# PIC is necessary for the shared library/plugin to work +CFLAGS += -fPIC + +#CFLAGS += -fsanitize=address +#LDFLAGS += -fsanitize=address +#LDLIBS += + +ifeq ($(V),1) +Q := +else +Q := @ +endif + +# use a .temp file, otherwise the mui_shell tries to reload before the file +# is fully written, and it fails. +# the ${filter} are there to make the sure object files are linked before the .a +$(LIB)/%.so : $(OBJ)/%.o $(LIB)/libmui.a | $(O) +ifeq ($(V),) + @echo " LDSO $@" +endif + $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -shared -fPIC -o $@.temp \ + ${filter %.o, $^} ${filter %.a, $^} $(LDLIBS) && \ + mv $@.temp $@ + +$(OBJ)/%.o : %.c | $(OBJ) +ifeq ($(V),) + @echo " CC" ${filter -O%, $(CPPFLAGS) $(CFLAGS)} "$<" +endif + $(Q)$(CC) -MMD $(CPPFLAGS) $(CFLAGS) -c -o $@ $< + +$(BIN)/% : | $(BIN) +ifeq ($(V),) + @echo " LD $@" +endif + $(Q)$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS) + +$(O) $(OBJ) $(BIN) $(LIB): + @mkdir -p $@ diff --git a/libmui/README.md b/libmui/README.md index 25a8231..3670d3f 100644 --- a/libmui/README.md +++ b/libmui/README.md @@ -1,21 +1,33 @@ -# What is this? -This is a contender for the World Record for Feature Creep Side Project. It is pretty high in the contender list as it's a bolt on to *another* contender for the World Record for Feature Creep Side Project (the MII Apple //e emulator). +# What the hell is this? +This is a contender for the World Record for Feature Creep Side Project. It is pretty high in the contender list as it's a bolt on to *another* contender for the World Record for Feature Creep Side Project (the [MII Apple //e emulator](http://github.com/buserror/mii_emu)). It is a library that duplicate a lot of a Macintosh Classic "Toolbox" APIs. It is not a complete implementation, but it is enough to make a few simple applications, also, all the bits I needed for the MII emulator. +

+ 10 seconds demo + 10 seconds demo +
+ # Why? Well I wanted a UI library for MII -- something without tons of dependencies, and I didn't want the typical 'game like' style with "Arrow Keys + Return + Escape" sort of menus. I started with Nuklear immediate mode UI, but it both look super ugly, AND is very limited as soon as you want to do something 'custom', and I didn't see myself hacking into that codebase. One thing I particularly dislike is the 'layout' engine that decide to put stuff where it wants, and it's *never* in the 'right' place, like a hard case of 'computer say so' -- typicaly result into -something like Programmer's Art. That's why Linux On The Deskop is famous for it's Pixel Perfection polished UIs. *Cough*. +something like Programmer's Art, just worse. That's why Linux On The Deskop is famous for it's Pixel Perfection polished UIs. *Cough*. The other things I don't like with the trendy IM UIs is that they promise you that you don't have to keep a separate state around blah blah, however they forget to mention that there IS a state kept for you, based on hash values, and if you are unlucky enough to have a hash clash, you are screwed. I've seen that happen in real life, and it's not pretty to debug. +I miss the days were UIs were /crafted/ not just decided for you bad a bad 'layouting' engine with huge rectangular flat buttons and no sense whatsoever of 'design' or usability. + Also, I realized I had quite a few bits that I could use to make my own library anyway, so I started to do that. Also, I like making my own toys. There, happy now? +
+ Basic Controls + Control Demo +
+ # What can it do? Well, it has a few of the classic 'managers' that the Macintosh Toolbox had. Or the later GS/OS. However it behaves more like a modern system, it's not 'synchronous' like the old toolbox. Stuff gets redrawn even if you are clicking/dragging etc without having to 'do it yourself'. @@ -29,6 +41,12 @@ luckily, you only have to draw/convert the 'dirty' regions, so it's not too bad. It could be possible to 'vectorize' the rendering to vertice buffers and stuff, but really, it's not needed, it's fast enough as it is and it would fall back the 'lets redraw everything' behaviour of the IMmediate UI libraries. +
+ Basic text boxes + Some basic text boxes +
+ + # How does it differ from the original? Well, in terms of looks, it's kinda like I started with MacOS8/9, but removed all the grayscale bits. Bizarelly, I think System 7 'flat' looks has aged better than the 'grayscale' look of 8/9, so I went with that. Most of the 'visible' difference are really related to the dialog's popup menus, which are a lot more 'OS8' than 'OS7'. The Scrollbar is definitely more GS/OS though, never understood why it took so long for MacOS to adopt that. @@ -52,7 +70,7 @@ It can create windows, and it can draw into them. Has up to 15 'layers', and can I deliberately limited the number of coordinate systems to 2 -- like the old one; so you get the 'screen coordinates' and the 'window content coordinates'. I was half tempted to create a fully hierarchical system, but realized it was really not neeeded, and would just make things more complicated. -It's a 'smart' window manager, it keeps track of an 'invalid' list of rectangles, and clips to that when redrawing, so it doesn't redraw the whole window every time, yeah, like the original. None of that 'lets redraw absolutely everything every frame' stuff. +It's a 'smart' window manager, it keeps track of an 'invalid' list of rectangles, and clips to that when redrawing, so it doesn't redraw the whole window every time, yeah, like the original. None of that 'lets redraw absolutely everything every frame' stuff like Immediate Mode UIs. - It's missing bits like 'zooming' (TODO), and 'resizing' (TODO). - It doesn't do transparent windows. It is by design, it draws windows 'top down' to optimize clipping -- adding transparency wouldn't be hard, but I'd have to draw the windows 'bottom up' to handle blending, and we'd revert back to drawing a lot of stuff for very little return. - Also, you can always alpha blend the whole *ui* 'screen' to wherever you want, so it's not like you can't have transparency. @@ -66,7 +84,7 @@ Menubar, menus, checkmarks, keyboard shortcuts, all that stuff. Made to looks li ## Control Manager Buttons, checkboxes, radio buttons, scrollbars (vertical), wrapping textboxes, all that stuff. - - It's missing bits like Edit Field (TODO), and a Slider. + - It's missing bits like Edit Field (Work in Progress), and a Slider. - There IS a prototype version of a text edit control, but it's not quite right yet -- works fine for a one liner etc, but not for a multi line text box. Not far off tho. ## List Manager More or less hard coded to display filenames so far, but plain lists are actually easier than this so. Handle arrow keys/page up/down, scroll wheel, etc. @@ -75,11 +93,21 @@ More or less hard coded to display filenames so far, but plain lists are actuall ## Alerts It has the typical 'Cancel'+'OK' alert. - Could do with more types of alerts (TODO). +
+ Basic Alert + Basic Alert Dialog +
+ ## Standard File -It has the classic 'Open' a file dialog. Haven't needed the other one. yet. +It has the classic 'Open' a file dialog. Haven't needed the other one. yet. This one one of the primary goal of the UI library to start with, so I spent quite a bit of time getting it 'right', quite happy about how it turned out. - Could do with a 'Save' dialog (TODO). - - Maybe a 'period correct' way to handle previously visited folders... Currently it can same the last folder you visited *per file type*. - - You can use arrow keys, page/up down, and you can even typehead to the file you want, like in the old days. + + It has an extra popup with the last few used directories. + - You can use arrow keys, page/up down, and you can even typehead to the file you want, like in the old MacOS! + +
+ Standard Get File + Standard Get File +
## Resource Manager Nope! Not there; I'd need some sort of ResEdit and stuff -- and now that is *ONE* Feature Creep Too Far thank you very much. @@ -99,17 +127,17 @@ That's it, all the other bits I already had 'in stock' -- the 2D geometry bits I # How do I build it? It's a simple Makefile, so you just need to do a 'make' in the root directory. It will build the library, and the tests/demos/samples. To build the tests/demos/samples, you'll need: -* xcb xcb-shm xcb-randr xkbcommon-x11 -- this is just to run the 'playground' demo, which is a simple window with a few buttons and stuff. +* xcb xcb-shm xcb-randr xkbcommon-x11 -- this is just to run the 'mui_shell' demo, which is a simple window with a few buttons and stuff. ## Nvidia Driver gotcha -* *Note* that if you use the nvidia binary driver (I do), you will need to add a flag to your config, otherwise the playground won't work. +* *Note* that if you use the nvidia binary driver (I do), you will need to add a flag to your config, otherwise the mui_shell won't work. - Add: 'Option \"AllowSHMPixmaps\" \"1\"' to the "Device" In your /etc/X11/xorg.conf file. # How do I use it? -Well the best way is to hack around *mui_playground.c* and *ui_tests.c*. It's a simple window with a few buttons and stuff, and it's a good place to start. +Well the best way is to hack around *mui_shell.c* and *mui_widgets_demo.c*. It's a simple window with a few buttons and stuff, and it's a good place to start. -The cool thing about ui_playground is that it loads ui_test.so as a *plugin* and auto-reload it if it detects a change. So you can hack around ui_test.c, and it will reload it and run it again! You can code a new dialog insanely fast with that, pretty must as fast as you would with a resource editor. +The cool thing about ui_mui_shell is that it loads mui_widgets_demo.so as a *plugin* and auto-reload it if it detects a change. So you can hack around mui_widgets_demo.c, and it will reload it and run it again! You can code a new dialog insanely fast with that, pretty must as fast as you would with a resource editor. -A good trick is to use 'make watch' on the *libmui* directory in a terminal tab, and it will rebuild the library and the playground automatically when you change something, that with the 'auto save' of your editor, and you will have a constantly building/running playground as you hack around. +A good trick is to use 'make watch' on the *libmui* directory in a terminal tab, and it will rebuild the library and the mui_shell automatically when you change something, that with the 'auto save' of your editor, and you will have a constantly building/running mui_shell as you hack around. Have fun! @@ -134,3 +162,4 @@ Have fun! - nope * And Wayland then? Wayland is The Future after all! - nope +

Now, GET OFF MY LAWN!

diff --git a/libmui/contrib/bsd_queue.h b/libmui/contrib/bsd_queue.h new file mode 100644 index 0000000..2e16cbc --- /dev/null +++ b/libmui/contrib/bsd_queue.h @@ -0,0 +1,860 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright (c) 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * 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. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + * + * @(#)queue.h 8.5 (Berkeley) 8/20/94 + * $FreeBSD$ + */ + +#ifndef _SYS_QUEUE_H_ +#define _SYS_QUEUE_H_ + +//#include + +/* + * This file defines four types of data structures: singly-linked lists, + * singly-linked tail queues, lists and tail queues. + * + * A singly-linked list is headed by a single forward pointer. The elements + * are singly linked for minimum space and pointer manipulation overhead at + * the expense of O(n) removal for arbitrary elements. New elements can be + * added to the list after an existing element or at the head of the list. + * Elements being removed from the head of the list should use the explicit + * macro for this purpose for optimum efficiency. A singly-linked list may + * only be traversed in the forward direction. Singly-linked lists are ideal + * for applications with large datasets and few or no removals or for + * implementing a LIFO queue. + * + * A singly-linked tail queue is headed by a pair of pointers, one to the + * head of the list and the other to the tail of the list. The elements are + * singly linked for minimum space and pointer manipulation overhead at the + * expense of O(n) removal for arbitrary elements. New elements can be added + * to the list after an existing element, at the head of the list, or at the + * end of the list. Elements being removed from the head of the tail queue + * should use the explicit macro for this purpose for optimum efficiency. + * A singly-linked tail queue may only be traversed in the forward direction. + * Singly-linked tail queues are ideal for applications with large datasets + * and few or no removals or for implementing a FIFO queue. + * + * A list is headed by a single forward pointer (or an array of forward + * pointers for a hash table header). The elements are doubly linked + * so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before + * or after an existing element or at the head of the list. A list + * may be traversed in either direction. + * + * A tail queue is headed by a pair of pointers, one to the head of the + * list and the other to the tail of the list. The elements are doubly + * linked so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before or + * after an existing element, at the head of the list, or at the end of + * the list. A tail queue may be traversed in either direction. + * + * For details on the use of these macros, see the queue(3) manual page. + * + * Below is a summary of implemented functions where: + * + means the macro is available + * - means the macro is not available + * s means the macro is available but is slow (runs in O(n) time) + * + * SLIST LIST STAILQ TAILQ + * _HEAD + + + + + * _CLASS_HEAD + + + + + * _HEAD_INITIALIZER + + + + + * _ENTRY + + + + + * _CLASS_ENTRY + + + + + * _INIT + + + + + * _EMPTY + + + + + * _FIRST + + + + + * _NEXT + + + + + * _PREV - + - + + * _LAST - - + + + * _FOREACH + + + + + * _FOREACH_FROM + + + + + * _FOREACH_SAFE + + + + + * _FOREACH_FROM_SAFE + + + + + * _FOREACH_REVERSE - - - + + * _FOREACH_REVERSE_FROM - - - + + * _FOREACH_REVERSE_SAFE - - - + + * _FOREACH_REVERSE_FROM_SAFE - - - + + * _INSERT_HEAD + + + + + * _INSERT_BEFORE - + - + + * _INSERT_AFTER + + + + + * _INSERT_TAIL - - + + + * _CONCAT s s + + + * _REMOVE_AFTER + - + - + * _REMOVE_HEAD + - + - + * _REMOVE s + s + + * _SWAP + + + + + * + */ +#ifdef QUEUE_MACRO_DEBUG +#warn Use QUEUE_MACRO_DEBUG_TRACE and/or QUEUE_MACRO_DEBUG_TRASH +#define QUEUE_MACRO_DEBUG_TRACE +#define QUEUE_MACRO_DEBUG_TRASH +#endif + +#ifdef QUEUE_MACRO_DEBUG_TRACE +/* Store the last 2 places the queue element or head was altered */ +struct qm_trace { + unsigned long lastline; + unsigned long prevline; + const char *lastfile; + const char *prevfile; +}; + +#define TRACEBUF struct qm_trace trace; +#define TRACEBUF_INITIALIZER { __LINE__, 0, __FILE__, NULL } , + +#define QMD_TRACE_HEAD(head) do { \ + (head)->trace.prevline = (head)->trace.lastline; \ + (head)->trace.prevfile = (head)->trace.lastfile; \ + (head)->trace.lastline = __LINE__; \ + (head)->trace.lastfile = __FILE__; \ +} while (0) + +#define QMD_TRACE_ELEM(elem) do { \ + (elem)->trace.prevline = (elem)->trace.lastline; \ + (elem)->trace.prevfile = (elem)->trace.lastfile; \ + (elem)->trace.lastline = __LINE__; \ + (elem)->trace.lastfile = __FILE__; \ +} while (0) + +#else /* !QUEUE_MACRO_DEBUG_TRACE */ +#define QMD_TRACE_ELEM(elem) +#define QMD_TRACE_HEAD(head) +#define TRACEBUF +#define TRACEBUF_INITIALIZER +#endif /* QUEUE_MACRO_DEBUG_TRACE */ + +#ifdef QUEUE_MACRO_DEBUG_TRASH +#define TRASHIT(x) do {(x) = (void *)-1;} while (0) +#define QMD_IS_TRASHED(x) ((x) == (void *)(intptr_t)-1) +#else /* !QUEUE_MACRO_DEBUG_TRASH */ +#define TRASHIT(x) +#define QMD_IS_TRASHED(x) 0 +#endif /* QUEUE_MACRO_DEBUG_TRASH */ + +#if defined(QUEUE_MACRO_DEBUG_TRACE) || defined(QUEUE_MACRO_DEBUG_TRASH) +#define QMD_SAVELINK(name, link) void **name = (void *)&(link) +#else /* !QUEUE_MACRO_DEBUG_TRACE && !QUEUE_MACRO_DEBUG_TRASH */ +#define QMD_SAVELINK(name, link) +#endif /* QUEUE_MACRO_DEBUG_TRACE || QUEUE_MACRO_DEBUG_TRASH */ + +#ifdef __cplusplus +/* + * In C++ there can be structure lists and class lists: + */ +#define QUEUE_TYPEOF(type) type +#else +#define QUEUE_TYPEOF(type) struct type +#endif + +/* + * Singly-linked List declarations. + */ +#define SLIST_HEAD(name, type) \ +struct name { \ + struct type *slh_first; /* first element */ \ +} + +#define SLIST_CLASS_HEAD(name, type) \ +struct name { \ + class type *slh_first; /* first element */ \ +} + +#define SLIST_HEAD_INITIALIZER(head) \ + { NULL } + +#define SLIST_ENTRY(type) \ +struct { \ + struct type *sle_next; /* next element */ \ +} + +#define SLIST_CLASS_ENTRY(type) \ +struct { \ + class type *sle_next; /* next element */ \ +} + +/* + * Singly-linked List functions. + */ +#if (defined(_KERNEL) && defined(INVARIANTS)) +#define QMD_SLIST_CHECK_PREVPTR(prevp, elm) do { \ + if (*(prevp) != (elm)) \ + panic("Bad prevptr *(%p) == %p != %p", \ + (prevp), *(prevp), (elm)); \ +} while (0) +#else +#define QMD_SLIST_CHECK_PREVPTR(prevp, elm) +#endif + +#define SLIST_CONCAT(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head1); \ + if (curelm == NULL) { \ + if ((SLIST_FIRST(head1) = SLIST_FIRST(head2)) != NULL) \ + SLIST_INIT(head2); \ + } else if (SLIST_FIRST(head2) != NULL) { \ + while (SLIST_NEXT(curelm, field) != NULL) \ + curelm = SLIST_NEXT(curelm, field); \ + SLIST_NEXT(curelm, field) = SLIST_FIRST(head2); \ + SLIST_INIT(head2); \ + } \ +} while (0) + +#define SLIST_EMPTY(head) ((head)->slh_first == NULL) + +#define SLIST_FIRST(head) ((head)->slh_first) + +#define SLIST_FOREACH(var, head, field) \ + for ((var) = SLIST_FIRST((head)); \ + (var); \ + (var) = SLIST_NEXT((var), field)) + +#define SLIST_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ + (var); \ + (var) = SLIST_NEXT((var), field)) + +#define SLIST_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = SLIST_FIRST((head)); \ + (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define SLIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ + (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \ + for ((varp) = &SLIST_FIRST((head)); \ + ((var) = *(varp)) != NULL; \ + (varp) = &SLIST_NEXT((var), field)) + +#define SLIST_INIT(head) do { \ + SLIST_FIRST((head)) = NULL; \ +} while (0) + +#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ + SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \ + SLIST_NEXT((slistelm), field) = (elm); \ +} while (0) + +#define SLIST_INSERT_HEAD(head, elm, field) do { \ + SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \ + SLIST_FIRST((head)) = (elm); \ +} while (0) + +#define SLIST_NEXT(elm, field) ((elm)->field.sle_next) + +#define SLIST_REMOVE(head, elm, type, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.sle_next); \ + if (SLIST_FIRST((head)) == (elm)) { \ + SLIST_REMOVE_HEAD((head), field); \ + } \ + else { \ + QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head); \ + while (SLIST_NEXT(curelm, field) != (elm)) \ + curelm = SLIST_NEXT(curelm, field); \ + SLIST_REMOVE_AFTER(curelm, field); \ + } \ + TRASHIT(*oldnext); \ +} while (0) + +#define SLIST_REMOVE_AFTER(elm, field) do { \ + SLIST_NEXT(elm, field) = \ + SLIST_NEXT(SLIST_NEXT(elm, field), field); \ +} while (0) + +#define SLIST_REMOVE_HEAD(head, field) do { \ + SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \ +} while (0) + +#define SLIST_REMOVE_PREVPTR(prevp, elm, field) do { \ + QMD_SLIST_CHECK_PREVPTR(prevp, elm); \ + *(prevp) = SLIST_NEXT(elm, field); \ + TRASHIT((elm)->field.sle_next); \ +} while (0) + +#define SLIST_SWAP(head1, head2, type) do { \ + QUEUE_TYPEOF(type) *swap_first = SLIST_FIRST(head1); \ + SLIST_FIRST(head1) = SLIST_FIRST(head2); \ + SLIST_FIRST(head2) = swap_first; \ +} while (0) + +/* + * Singly-linked Tail queue declarations. + */ +#define STAILQ_HEAD(name, type) \ +struct name { \ + struct type *stqh_first;/* first element */ \ + struct type **stqh_last;/* addr of last next element */ \ +} + +#define STAILQ_CLASS_HEAD(name, type) \ +struct name { \ + class type *stqh_first; /* first element */ \ + class type **stqh_last; /* addr of last next element */ \ +} + +#define STAILQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).stqh_first } + +#define STAILQ_ENTRY(type) \ +struct { \ + struct type *stqe_next; /* next element */ \ +} + +#define STAILQ_CLASS_ENTRY(type) \ +struct { \ + class type *stqe_next; /* next element */ \ +} + +/* + * Singly-linked Tail queue functions. + */ +#define STAILQ_CONCAT(head1, head2) do { \ + if (!STAILQ_EMPTY((head2))) { \ + *(head1)->stqh_last = (head2)->stqh_first; \ + (head1)->stqh_last = (head2)->stqh_last; \ + STAILQ_INIT((head2)); \ + } \ +} while (0) + +#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL) + +#define STAILQ_FIRST(head) ((head)->stqh_first) + +#define STAILQ_FOREACH(var, head, field) \ + for((var) = STAILQ_FIRST((head)); \ + (var); \ + (var) = STAILQ_NEXT((var), field)) + +#define STAILQ_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ + (var); \ + (var) = STAILQ_NEXT((var), field)) + +#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = STAILQ_FIRST((head)); \ + (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define STAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ + (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define STAILQ_INIT(head) do { \ + STAILQ_FIRST((head)) = NULL; \ + (head)->stqh_last = &STAILQ_FIRST((head)); \ +} while (0) + +#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \ + if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ + STAILQ_NEXT((tqelm), field) = (elm); \ +} while (0) + +#define STAILQ_INSERT_HEAD(head, elm, field) do { \ + if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ + STAILQ_FIRST((head)) = (elm); \ +} while (0) + +#define STAILQ_INSERT_TAIL(head, elm, field) do { \ + STAILQ_NEXT((elm), field) = NULL; \ + *(head)->stqh_last = (elm); \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ +} while (0) + +#define STAILQ_LAST(head, type, field) \ + (STAILQ_EMPTY((head)) ? NULL : \ + __containerof((head)->stqh_last, \ + QUEUE_TYPEOF(type), field.stqe_next)) + +#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) + +#define STAILQ_REMOVE(head, elm, type, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.stqe_next); \ + if (STAILQ_FIRST((head)) == (elm)) { \ + STAILQ_REMOVE_HEAD((head), field); \ + } \ + else { \ + QUEUE_TYPEOF(type) *curelm = STAILQ_FIRST(head); \ + while (STAILQ_NEXT(curelm, field) != (elm)) \ + curelm = STAILQ_NEXT(curelm, field); \ + STAILQ_REMOVE_AFTER(head, curelm, field); \ + } \ + TRASHIT(*oldnext); \ +} while (0) + +#define STAILQ_REMOVE_AFTER(head, elm, field) do { \ + if ((STAILQ_NEXT(elm, field) = \ + STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ +} while (0) + +#define STAILQ_REMOVE_HEAD(head, field) do { \ + if ((STAILQ_FIRST((head)) = \ + STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \ + (head)->stqh_last = &STAILQ_FIRST((head)); \ +} while (0) + +#define STAILQ_SWAP(head1, head2, type) do { \ + QUEUE_TYPEOF(type) *swap_first = STAILQ_FIRST(head1); \ + QUEUE_TYPEOF(type) **swap_last = (head1)->stqh_last; \ + STAILQ_FIRST(head1) = STAILQ_FIRST(head2); \ + (head1)->stqh_last = (head2)->stqh_last; \ + STAILQ_FIRST(head2) = swap_first; \ + (head2)->stqh_last = swap_last; \ + if (STAILQ_EMPTY(head1)) \ + (head1)->stqh_last = &STAILQ_FIRST(head1); \ + if (STAILQ_EMPTY(head2)) \ + (head2)->stqh_last = &STAILQ_FIRST(head2); \ +} while (0) + + +/* + * List declarations. + */ +#define LIST_HEAD(name, type) \ +struct name { \ + struct type *lh_first; /* first element */ \ +} + +#define LIST_CLASS_HEAD(name, type) \ +struct name { \ + class type *lh_first; /* first element */ \ +} + +#define LIST_HEAD_INITIALIZER(head) \ + { NULL } + +#define LIST_ENTRY(type) \ +struct { \ + struct type *le_next; /* next element */ \ + struct type **le_prev; /* address of previous next element */ \ +} + +#define LIST_CLASS_ENTRY(type) \ +struct { \ + class type *le_next; /* next element */ \ + class type **le_prev; /* address of previous next element */ \ +} + +/* + * List functions. + */ + +#if (defined(_KERNEL) && defined(INVARIANTS)) +/* + * QMD_LIST_CHECK_HEAD(LIST_HEAD *head, LIST_ENTRY NAME) + * + * If the list is non-empty, validates that the first element of the list + * points back at 'head.' + */ +#define QMD_LIST_CHECK_HEAD(head, field) do { \ + if (LIST_FIRST((head)) != NULL && \ + LIST_FIRST((head))->field.le_prev != \ + &LIST_FIRST((head))) \ + panic("Bad list head %p first->prev != head", (head)); \ +} while (0) + +/* + * QMD_LIST_CHECK_NEXT(TYPE *elm, LIST_ENTRY NAME) + * + * If an element follows 'elm' in the list, validates that the next element + * points back at 'elm.' + */ +#define QMD_LIST_CHECK_NEXT(elm, field) do { \ + if (LIST_NEXT((elm), field) != NULL && \ + LIST_NEXT((elm), field)->field.le_prev != \ + &((elm)->field.le_next)) \ + panic("Bad link elm %p next->prev != elm", (elm)); \ +} while (0) + +/* + * QMD_LIST_CHECK_PREV(TYPE *elm, LIST_ENTRY NAME) + * + * Validates that the previous element (or head of the list) points to 'elm.' + */ +#define QMD_LIST_CHECK_PREV(elm, field) do { \ + if (*(elm)->field.le_prev != (elm)) \ + panic("Bad link elm %p prev->next != elm", (elm)); \ +} while (0) +#else +#define QMD_LIST_CHECK_HEAD(head, field) +#define QMD_LIST_CHECK_NEXT(elm, field) +#define QMD_LIST_CHECK_PREV(elm, field) +#endif /* (_KERNEL && INVARIANTS) */ + +#define LIST_CONCAT(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *curelm = LIST_FIRST(head1); \ + if (curelm == NULL) { \ + if ((LIST_FIRST(head1) = LIST_FIRST(head2)) != NULL) { \ + LIST_FIRST(head2)->field.le_prev = \ + &LIST_FIRST((head1)); \ + LIST_INIT(head2); \ + } \ + } else if (LIST_FIRST(head2) != NULL) { \ + while (LIST_NEXT(curelm, field) != NULL) \ + curelm = LIST_NEXT(curelm, field); \ + LIST_NEXT(curelm, field) = LIST_FIRST(head2); \ + LIST_FIRST(head2)->field.le_prev = &LIST_NEXT(curelm, field); \ + LIST_INIT(head2); \ + } \ +} while (0) + +#define LIST_EMPTY(head) ((head)->lh_first == NULL) + +#define LIST_FIRST(head) ((head)->lh_first) + +#define LIST_FOREACH(var, head, field) \ + for ((var) = LIST_FIRST((head)); \ + (var); \ + (var) = LIST_NEXT((var), field)) + +#define LIST_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ + (var); \ + (var) = LIST_NEXT((var), field)) + +#define LIST_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = LIST_FIRST((head)); \ + (var) && ((tvar) = LIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define LIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ + (var) && ((tvar) = LIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define LIST_INIT(head) do { \ + LIST_FIRST((head)) = NULL; \ +} while (0) + +#define LIST_INSERT_AFTER(listelm, elm, field) do { \ + QMD_LIST_CHECK_NEXT(listelm, field); \ + if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\ + LIST_NEXT((listelm), field)->field.le_prev = \ + &LIST_NEXT((elm), field); \ + LIST_NEXT((listelm), field) = (elm); \ + (elm)->field.le_prev = &LIST_NEXT((listelm), field); \ +} while (0) + +#define LIST_INSERT_BEFORE(listelm, elm, field) do { \ + QMD_LIST_CHECK_PREV(listelm, field); \ + (elm)->field.le_prev = (listelm)->field.le_prev; \ + LIST_NEXT((elm), field) = (listelm); \ + *(listelm)->field.le_prev = (elm); \ + (listelm)->field.le_prev = &LIST_NEXT((elm), field); \ +} while (0) + +#define LIST_INSERT_HEAD(head, elm, field) do { \ + QMD_LIST_CHECK_HEAD((head), field); \ + if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \ + LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\ + LIST_FIRST((head)) = (elm); \ + (elm)->field.le_prev = &LIST_FIRST((head)); \ +} while (0) + +#define LIST_NEXT(elm, field) ((elm)->field.le_next) + +#define LIST_PREV(elm, head, type, field) \ + ((elm)->field.le_prev == &LIST_FIRST((head)) ? NULL : \ + __containerof((elm)->field.le_prev, \ + QUEUE_TYPEOF(type), field.le_next)) + +#define LIST_REMOVE(elm, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.le_next); \ + QMD_SAVELINK(oldprev, (elm)->field.le_prev); \ + QMD_LIST_CHECK_NEXT(elm, field); \ + QMD_LIST_CHECK_PREV(elm, field); \ + if (LIST_NEXT((elm), field) != NULL) \ + LIST_NEXT((elm), field)->field.le_prev = \ + (elm)->field.le_prev; \ + *(elm)->field.le_prev = LIST_NEXT((elm), field); \ + TRASHIT(*oldnext); \ + TRASHIT(*oldprev); \ +} while (0) + +#define LIST_SWAP(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *swap_tmp = LIST_FIRST(head1); \ + LIST_FIRST((head1)) = LIST_FIRST((head2)); \ + LIST_FIRST((head2)) = swap_tmp; \ + if ((swap_tmp = LIST_FIRST((head1))) != NULL) \ + swap_tmp->field.le_prev = &LIST_FIRST((head1)); \ + if ((swap_tmp = LIST_FIRST((head2))) != NULL) \ + swap_tmp->field.le_prev = &LIST_FIRST((head2)); \ +} while (0) + +/* + * Tail queue declarations. + */ +#define TAILQ_HEAD(name, type) \ +struct name { \ + struct type *tqh_first; /* first element */ \ + struct type **tqh_last; /* addr of last next element */ \ + TRACEBUF \ +} + +#define TAILQ_CLASS_HEAD(name, type) \ +struct name { \ + class type *tqh_first; /* first element */ \ + class type **tqh_last; /* addr of last next element */ \ + TRACEBUF \ +} + +#define TAILQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).tqh_first, TRACEBUF_INITIALIZER } + +#define TAILQ_ENTRY(type) \ +struct { \ + struct type *tqe_next; /* next element */ \ + struct type **tqe_prev; /* address of previous next element */ \ + TRACEBUF \ +} + +#define TAILQ_CLASS_ENTRY(type) \ +struct { \ + class type *tqe_next; /* next element */ \ + class type **tqe_prev; /* address of previous next element */ \ + TRACEBUF \ +} + +/* + * Tail queue functions. + */ +#if (defined(_KERNEL) && defined(INVARIANTS)) +/* + * QMD_TAILQ_CHECK_HEAD(TAILQ_HEAD *head, TAILQ_ENTRY NAME) + * + * If the tailq is non-empty, validates that the first element of the tailq + * points back at 'head.' + */ +#define QMD_TAILQ_CHECK_HEAD(head, field) do { \ + if (!TAILQ_EMPTY(head) && \ + TAILQ_FIRST((head))->field.tqe_prev != \ + &TAILQ_FIRST((head))) \ + panic("Bad tailq head %p first->prev != head", (head)); \ +} while (0) + +/* + * QMD_TAILQ_CHECK_TAIL(TAILQ_HEAD *head, TAILQ_ENTRY NAME) + * + * Validates that the tail of the tailq is a pointer to pointer to NULL. + */ +#define QMD_TAILQ_CHECK_TAIL(head, field) do { \ + if (*(head)->tqh_last != NULL) \ + panic("Bad tailq NEXT(%p->tqh_last) != NULL", (head)); \ +} while (0) + +/* + * QMD_TAILQ_CHECK_NEXT(TYPE *elm, TAILQ_ENTRY NAME) + * + * If an element follows 'elm' in the tailq, validates that the next element + * points back at 'elm.' + */ +#define QMD_TAILQ_CHECK_NEXT(elm, field) do { \ + if (TAILQ_NEXT((elm), field) != NULL && \ + TAILQ_NEXT((elm), field)->field.tqe_prev != \ + &((elm)->field.tqe_next)) \ + panic("Bad link elm %p next->prev != elm", (elm)); \ +} while (0) + +/* + * QMD_TAILQ_CHECK_PREV(TYPE *elm, TAILQ_ENTRY NAME) + * + * Validates that the previous element (or head of the tailq) points to 'elm.' + */ +#define QMD_TAILQ_CHECK_PREV(elm, field) do { \ + if (*(elm)->field.tqe_prev != (elm)) \ + panic("Bad link elm %p prev->next != elm", (elm)); \ +} while (0) +#else +#define QMD_TAILQ_CHECK_HEAD(head, field) +#define QMD_TAILQ_CHECK_TAIL(head, headname) +#define QMD_TAILQ_CHECK_NEXT(elm, field) +#define QMD_TAILQ_CHECK_PREV(elm, field) +#endif /* (_KERNEL && INVARIANTS) */ + +#define TAILQ_CONCAT(head1, head2, field) do { \ + if (!TAILQ_EMPTY(head2)) { \ + *(head1)->tqh_last = (head2)->tqh_first; \ + (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \ + (head1)->tqh_last = (head2)->tqh_last; \ + TAILQ_INIT((head2)); \ + QMD_TRACE_HEAD(head1); \ + QMD_TRACE_HEAD(head2); \ + } \ +} while (0) + +#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL) + +#define TAILQ_FIRST(head) ((head)->tqh_first) + +#define TAILQ_FOREACH(var, head, field) \ + for ((var) = TAILQ_FIRST((head)); \ + (var); \ + (var) = TAILQ_NEXT((var), field)) + +#define TAILQ_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ + (var); \ + (var) = TAILQ_NEXT((var), field)) + +#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = TAILQ_FIRST((head)); \ + (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ + (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ + for ((var) = TAILQ_LAST((head), headname); \ + (var); \ + (var) = TAILQ_PREV((var), headname, field)) + +#define TAILQ_FOREACH_REVERSE_FROM(var, head, headname, field) \ + for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ + (var); \ + (var) = TAILQ_PREV((var), headname, field)) + +#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ + for ((var) = TAILQ_LAST((head), headname); \ + (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_REVERSE_FROM_SAFE(var, head, headname, field, tvar) \ + for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ + (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ + (var) = (tvar)) + +#define TAILQ_INIT(head) do { \ + TAILQ_FIRST((head)) = NULL; \ + (head)->tqh_last = &TAILQ_FIRST((head)); \ + QMD_TRACE_HEAD(head); \ +} while (0) + +#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ + QMD_TAILQ_CHECK_NEXT(listelm, field); \ + if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\ + TAILQ_NEXT((elm), field)->field.tqe_prev = \ + &TAILQ_NEXT((elm), field); \ + else { \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_HEAD(head); \ + } \ + TAILQ_NEXT((listelm), field) = (elm); \ + (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \ + QMD_TRACE_ELEM(&(elm)->field); \ + QMD_TRACE_ELEM(&(listelm)->field); \ +} while (0) + +#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ + QMD_TAILQ_CHECK_PREV(listelm, field); \ + (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ + TAILQ_NEXT((elm), field) = (listelm); \ + *(listelm)->field.tqe_prev = (elm); \ + (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_ELEM(&(elm)->field); \ + QMD_TRACE_ELEM(&(listelm)->field); \ +} while (0) + +#define TAILQ_INSERT_HEAD(head, elm, field) do { \ + QMD_TAILQ_CHECK_HEAD(head, field); \ + if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \ + TAILQ_FIRST((head))->field.tqe_prev = \ + &TAILQ_NEXT((elm), field); \ + else \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + TAILQ_FIRST((head)) = (elm); \ + (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \ + QMD_TRACE_HEAD(head); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_INSERT_TAIL(head, elm, field) do { \ + QMD_TAILQ_CHECK_TAIL(head, field); \ + TAILQ_NEXT((elm), field) = NULL; \ + (elm)->field.tqe_prev = (head)->tqh_last; \ + *(head)->tqh_last = (elm); \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_HEAD(head); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_LAST(head, headname) \ + (*(((struct headname *)((head)->tqh_last))->tqh_last)) + +#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) + +#define TAILQ_PREV(elm, headname, field) \ + (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) + +#define TAILQ_REMOVE(head, elm, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.tqe_next); \ + QMD_SAVELINK(oldprev, (elm)->field.tqe_prev); \ + QMD_TAILQ_CHECK_NEXT(elm, field); \ + QMD_TAILQ_CHECK_PREV(elm, field); \ + if ((TAILQ_NEXT((elm), field)) != NULL) \ + TAILQ_NEXT((elm), field)->field.tqe_prev = \ + (elm)->field.tqe_prev; \ + else { \ + (head)->tqh_last = (elm)->field.tqe_prev; \ + QMD_TRACE_HEAD(head); \ + } \ + *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \ + TRASHIT(*oldnext); \ + TRASHIT(*oldprev); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_SWAP(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *swap_first = (head1)->tqh_first; \ + QUEUE_TYPEOF(type) **swap_last = (head1)->tqh_last; \ + (head1)->tqh_first = (head2)->tqh_first; \ + (head1)->tqh_last = (head2)->tqh_last; \ + (head2)->tqh_first = swap_first; \ + (head2)->tqh_last = swap_last; \ + if ((swap_first = (head1)->tqh_first) != NULL) \ + swap_first->field.tqe_prev = &(head1)->tqh_first; \ + else \ + (head1)->tqh_last = &(head1)->tqh_first; \ + if ((swap_first = (head2)->tqh_first) != NULL) \ + swap_first->field.tqe_prev = &(head2)->tqh_first; \ + else \ + (head2)->tqh_last = &(head2)->tqh_first; \ +} while (0) + +#endif /* !_SYS_QUEUE_H_ */ diff --git a/libmui/contrib/incbin.h b/libmui/contrib/incbin.h new file mode 100644 index 0000000..1fb4add --- /dev/null +++ b/libmui/contrib/incbin.h @@ -0,0 +1,379 @@ +/** + * @file incbin.h + * @author Dale Weiler + * @brief Utility for including binary files + * + * Facilities for including binary files into the current translation unit and + * making use from them externally in other translation units. + */ +#ifndef INCBIN_HDR +#define INCBIN_HDR +#include + +// Michel addition: +// Allow the included file to have an extra zero, to include text files +// as plain zero terminated strings +#ifdef INCBIN_TRAILING_ZERO +#define INCBIN_TRAIL INCBIN_BYTE "0\n" +#else +#define INCBIN_TRAIL +#endif + +#if defined(__AVX512BW__) || \ + defined(__AVX512CD__) || \ + defined(__AVX512DQ__) || \ + defined(__AVX512ER__) || \ + defined(__AVX512PF__) || \ + defined(__AVX512VL__) || \ + defined(__AVX512F__) +# define INCBIN_ALIGNMENT_INDEX 6 +#elif defined(__AVX__) || \ + defined(__AVX2__) +# define INCBIN_ALIGNMENT_INDEX 5 +#elif defined(__SSE__) || \ + defined(__SSE2__) || \ + defined(__SSE3__) || \ + defined(__SSSE3__) || \ + defined(__SSE4_1__) || \ + defined(__SSE4_2__) || \ + defined(__neon__) +# define INCBIN_ALIGNMENT_INDEX 4 +#elif ULONG_MAX != 0xffffffffu +# define INCBIN_ALIGNMENT_INDEX 3 +# else +# define INCBIN_ALIGNMENT_INDEX 2 +#endif + +/* Lookup table of (1 << n) where `n' is `INCBIN_ALIGNMENT_INDEX' */ +#define INCBIN_ALIGN_SHIFT_0 1 +#define INCBIN_ALIGN_SHIFT_1 2 +#define INCBIN_ALIGN_SHIFT_2 4 +#define INCBIN_ALIGN_SHIFT_3 8 +#define INCBIN_ALIGN_SHIFT_4 16 +#define INCBIN_ALIGN_SHIFT_5 32 +#define INCBIN_ALIGN_SHIFT_6 64 + +/* Actual alignment value */ +#define INCBIN_ALIGNMENT \ + INCBIN_CONCATENATE( \ + INCBIN_CONCATENATE(INCBIN_ALIGN_SHIFT, _), \ + INCBIN_ALIGNMENT_INDEX) + +/* Stringize */ +#define INCBIN_STR(X) \ + #X +#define INCBIN_STRINGIZE(X) \ + INCBIN_STR(X) +/* Concatenate */ +#define INCBIN_CAT(X, Y) \ + X ## Y +#define INCBIN_CONCATENATE(X, Y) \ + INCBIN_CAT(X, Y) +/* Deferred macro expansion */ +#define INCBIN_EVAL(X) \ + X +#define INCBIN_INVOKE(N, ...) \ + INCBIN_EVAL(N(__VA_ARGS__)) + +/* Green Hills uses a different directive for including binary data */ +#if defined(__ghs__) +# if (__ghs_asm == 2) +# define INCBIN_MACRO ".file" +/* Or consider the ".myrawdata" entry in the ld file */ +# else +# define INCBIN_MACRO "\tINCBIN" +# endif +#else +# define INCBIN_MACRO ".incbin" +#endif + +#ifndef _MSC_VER +# define INCBIN_ALIGN \ + __attribute__((aligned(INCBIN_ALIGNMENT))) +#else +# define INCBIN_ALIGN __declspec(align(INCBIN_ALIGNMENT)) +#endif + +#if defined(__arm__) || /* GNU C and RealView */ \ + defined(__arm) || /* Diab */ \ + defined(_ARM) /* ImageCraft */ +# define INCBIN_ARM +#endif + +#ifdef __GNUC__ +/* Utilize .balign where supported */ +# define INCBIN_ALIGN_HOST ".balign " INCBIN_STRINGIZE(INCBIN_ALIGNMENT) "\n" +# define INCBIN_ALIGN_BYTE ".balign 1\n" +#elif defined(INCBIN_ARM) +/* + * On arm assemblers, the alignment value is calculated as (1 << n) where `n' is + * the shift count. This is the value passed to `.align' + */ +# define INCBIN_ALIGN_HOST ".align " INCBIN_STRINGIZE(INCBIN_ALIGNMENT_INDEX) "\n" +# define INCBIN_ALIGN_BYTE ".align 0\n" +#else +/* We assume other inline assembler's treat `.align' as `.balign' */ +# define INCBIN_ALIGN_HOST ".align " INCBIN_STRINGIZE(INCBIN_ALIGNMENT) "\n" +# define INCBIN_ALIGN_BYTE ".align 1\n" +#endif + +/* INCBIN_CONST is used by incbin.c generated files */ +#if defined(__cplusplus) +# define INCBIN_EXTERNAL extern "C" +# define INCBIN_CONST extern const +#else +# define INCBIN_EXTERNAL extern +# define INCBIN_CONST const +#endif + +/** + * @brief Optionally override the linker section into which data is emitted. + * + * @warning If you use this facility, you'll have to deal with platform-specific linker output + * section naming on your own + * + * Overriding the default linker output section, e.g for esp8266/Arduino: + * @code + * #define INCBIN_OUTPUT_SECTION ".irom.text" + * #include "incbin.h" + * INCBIN(Foo, "foo.txt"); + * // Data is emitted into program memory that never gets copied to RAM + * @endcode + */ +#if !defined(INCBIN_OUTPUT_SECTION) +# if defined(__APPLE__) +# define INCBIN_OUTPUT_SECTION ".const_data" +# else +# define INCBIN_OUTPUT_SECTION ".rodata" +# endif +#endif + +#if defined(__APPLE__) +/* The directives are different for Apple branded compilers */ +# define INCBIN_SECTION INCBIN_OUTPUT_SECTION "\n" +# define INCBIN_GLOBAL(NAME) ".globl " INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME "\n" +# define INCBIN_INT ".long " +# define INCBIN_MANGLE "_" +# define INCBIN_BYTE ".byte " +# define INCBIN_TYPE(...) +#else +# define INCBIN_SECTION ".section " INCBIN_OUTPUT_SECTION "\n" +# define INCBIN_GLOBAL(NAME) ".global " INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME "\n" +# if defined(__ghs__) +# define INCBIN_INT ".word " +# else +# define INCBIN_INT ".int " +# endif +# if defined(__USER_LABEL_PREFIX__) +# define INCBIN_MANGLE INCBIN_STRINGIZE(__USER_LABEL_PREFIX__) +# else +# define INCBIN_MANGLE "" +# endif +# if defined(INCBIN_ARM) +/* On arm assemblers, `@' is used as a line comment token */ +# define INCBIN_TYPE(NAME) ".type " INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME ", %object\n" +# elif defined(__MINGW32__) || defined(__MINGW64__) +/* Mingw doesn't support this directive either */ +# define INCBIN_TYPE(NAME) +# else +/* It's safe to use `@' on other architectures */ +# define INCBIN_TYPE(NAME) ".type " INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME ", @object\n" +# endif +# define INCBIN_BYTE ".byte " +#endif + +/* List of style types used for symbol names */ +#define INCBIN_STYLE_CAMEL 0 +#define INCBIN_STYLE_SNAKE 1 + +/** + * @brief Specify the prefix to use for symbol names. + * + * By default this is `g', producing symbols of the form: + * @code + * #include "incbin.h" + * INCBIN(Foo, "foo.txt"); + * + * // Now you have the following symbols: + * // const unsigned char gFooData[]; + * // const unsigned char *const gFooEnd; + * // const unsigned int gFooSize; + * @endcode + * + * If however you specify a prefix before including: e.g: + * @code + * #define INCBIN_PREFIX incbin + * #include "incbin.h" + * INCBIN(Foo, "foo.txt"); + * + * // Now you have the following symbols instead: + * // const unsigned char incbinFooData[]; + * // const unsigned char *const incbinFooEnd; + * // const unsigned int incbinFooSize; + * @endcode + */ +#if !defined(INCBIN_PREFIX) +# define INCBIN_PREFIX g +#endif + +/** + * @brief Specify the style used for symbol names. + * + * Possible options are + * - INCBIN_STYLE_CAMEL "CamelCase" + * - INCBIN_STYLE_SNAKE "snake_case" + * + * Default option is *INCBIN_STYLE_CAMEL* producing symbols of the form: + * @code + * #include "incbin.h" + * INCBIN(Foo, "foo.txt"); + * + * // Now you have the following symbols: + * // const unsigned char FooData[]; + * // const unsigned char *const FooEnd; + * // const unsigned int FooSize; + * @endcode + * + * If however you specify a style before including: e.g: + * @code + * #define INCBIN_STYLE INCBIN_STYLE_SNAKE + * #include "incbin.h" + * INCBIN(foo, "foo.txt"); + * + * // Now you have the following symbols: + * // const unsigned char foo_data[]; + * // const unsigned char *const foo_end; + * // const unsigned int foo_size; + * @endcode + */ +#if !defined(INCBIN_STYLE) +# define INCBIN_STYLE INCBIN_STYLE_CAMEL +#endif + +/* Style lookup tables */ +#define INCBIN_STYLE_0_DATA Data +#define INCBIN_STYLE_0_END End +#define INCBIN_STYLE_0_SIZE Size +#define INCBIN_STYLE_1_DATA _data +#define INCBIN_STYLE_1_END _end +#define INCBIN_STYLE_1_SIZE _size + +/* Style lookup: returning identifier */ +#define INCBIN_STYLE_IDENT(TYPE) \ + INCBIN_CONCATENATE( \ + INCBIN_STYLE_, \ + INCBIN_CONCATENATE( \ + INCBIN_EVAL(INCBIN_STYLE), \ + INCBIN_CONCATENATE(_, TYPE))) + +/* Style lookup: returning string literal */ +#define INCBIN_STYLE_STRING(TYPE) \ + INCBIN_STRINGIZE( \ + INCBIN_STYLE_IDENT(TYPE)) \ + +/* Generate the global labels by indirectly invoking the macro with our style + * type and concatenating the name against them. */ +#define INCBIN_GLOBAL_LABELS(NAME, TYPE) \ + INCBIN_INVOKE( \ + INCBIN_GLOBAL, \ + INCBIN_CONCATENATE( \ + NAME, \ + INCBIN_INVOKE( \ + INCBIN_STYLE_IDENT, \ + TYPE))) \ + INCBIN_INVOKE( \ + INCBIN_TYPE, \ + INCBIN_CONCATENATE( \ + NAME, \ + INCBIN_INVOKE( \ + INCBIN_STYLE_IDENT, \ + TYPE))) + +/** + * @brief Externally reference binary data included in another translation unit. + * + * Produces three external symbols that reference the binary data included in + * another translation unit. + * + * The symbol names are a concatenation of `INCBIN_PREFIX' before *NAME*; with + * "Data", as well as "End" and "Size" after. An example is provided below. + * + * @param NAME The name given for the binary data + * + * @code + * INCBIN_EXTERN(Foo); + * + * // Now you have the following symbols: + * // extern const unsigned char FooData[]; + * // extern const unsigned char *const FooEnd; + * // extern const unsigned int FooSize; + * @endcode + */ +#define INCBIN_EXTERN(NAME) \ + INCBIN_EXTERNAL const INCBIN_ALIGN unsigned char \ + INCBIN_CONCATENATE( \ + INCBIN_CONCATENATE(INCBIN_PREFIX, NAME), \ + INCBIN_STYLE_IDENT(DATA))[]; \ + INCBIN_EXTERNAL const INCBIN_ALIGN unsigned char *const \ + INCBIN_CONCATENATE( \ + INCBIN_CONCATENATE(INCBIN_PREFIX, NAME), \ + INCBIN_STYLE_IDENT(END)); \ + INCBIN_EXTERNAL const unsigned int \ + INCBIN_CONCATENATE( \ + INCBIN_CONCATENATE(INCBIN_PREFIX, NAME), \ + INCBIN_STYLE_IDENT(SIZE)) + +/** + * @brief Include a binary file into the current translation unit. + * + * Includes a binary file into the current translation unit, producing three symbols + * for objects that encode the data and size respectively. + * + * The symbol names are a concatenation of `INCBIN_PREFIX' before *NAME*; with + * "Data", as well as "End" and "Size" after. An example is provided below. + * + * @param NAME The name to associate with this binary data (as an identifier.) + * @param FILENAME The file to include (as a string literal.) + * + * @code + * INCBIN(Icon, "icon.png"); + * + * // Now you have the following symbols: + * // const unsigned char IconData[]; + * // const unsigned char *const IconEnd; + * // const unsigned int IconSize; + * @endcode + * + * @warning This must be used in global scope + * @warning The identifiers may be different if INCBIN_STYLE is not default + * + * To externally reference the data included by this in another translation unit + * please @see INCBIN_EXTERN. + */ +#ifdef _MSC_VER +#define INCBIN(NAME, FILENAME) \ + INCBIN_EXTERN(NAME) +#else +#define INCBIN(NAME, FILENAME) \ + __asm__(INCBIN_SECTION \ + INCBIN_GLOBAL_LABELS(NAME, DATA) \ + INCBIN_ALIGN_HOST \ + INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(DATA) ":\n" \ + INCBIN_MACRO " \"" FILENAME "\"\n" \ + INCBIN_TRAIL \ + INCBIN_GLOBAL_LABELS(NAME, END) \ + INCBIN_ALIGN_BYTE \ + INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(END) ":\n" \ + INCBIN_BYTE "1\n" \ + INCBIN_GLOBAL_LABELS(NAME, SIZE) \ + INCBIN_ALIGN_HOST \ + INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(SIZE) ":\n" \ + INCBIN_INT INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(END) " - " \ + INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(DATA) "\n" \ + INCBIN_ALIGN_HOST \ + ".text\n" \ + ); \ + INCBIN_EXTERN(NAME) + +#endif +#endif diff --git a/libmui/doc/alert.png b/libmui/doc/alert.png new file mode 100644 index 0000000000000000000000000000000000000000..a42ca4266a7b6c8214b4e0fc02fa98615f0dc23b GIT binary patch literal 20342 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 literal 0 HcmV?d00001 diff --git a/libmui/doc/standard_get_file.png b/libmui/doc/standard_get_file.png new file mode 100644 index 0000000000000000000000000000000000000000..8f284c621cba7e2eee76bf7b424ead0c9202c790 GIT binary patch literal 40064 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%0A88iS7K_wawMyo&o=% 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 EKSv1b9smFU literal 0 HcmV?d00001 diff --git a/libmui/doc/widgets.gif b/libmui/doc/widgets.gif new file mode 100644 index 0000000000000000000000000000000000000000..5ae84c83f0e0bb1567e071e409aa81d9fe76caad GIT binary patch literal 392966 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 RBKw+;<&uXMlV*w|k3vHkk!tz-O~SKtX3 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

gX%!$ZyrK+cE-3kVJ+=PyUA;*do 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 yF@oLPRj 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 DWxAUK diff --git a/libmui/fonts/apple2e_original_font_MotterTekturaRetro.otf b/libmui/fonts/apple2e_original_font_MotterTekturaRetro.otf deleted file mode 100644 index d94a9b61bfd2c8b7d7a664cf4b5acecfe2cceaa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23032 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≶ww3^2k+UYm$3%!5wy(>Qz-;-CqQS#by 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 EU$wJ}-~a#s delta 452 zcmZpf$ks4{t)79Afq_8)NU$(4xVeS+PX4Flz`)r41Sl%w?&9jkSk4#;buoeIFV_*>F0O?OFNYCx!s<38Y z;Fe)v;GCGASX=-U7XX^K2S{_I=Tz3G&Ho@0$G{+dhJi7jBO^62MN}=g6=(quP=Q$n zP=Gy_#RJH90rFKca!V=}-~10Wobd$%1FKg~esbcrGVU&*g(?gTOe=B|D+-u>nI{3| zGl1$9@)C1XmC8PpGccB20m`o|$S*D_pBdfBz*yP9z`$o&P-K)^Flphe{|pQw8-NiHn9zHefVo4+5!V44$0FD9d$6folhE^BwW+ zcf=Vvra+e~jDr)G!uuPq*!0lw%B<9@D|7$_#W00J*ts A#{d8T diff --git a/libmui/fonts/typicons.sfd b/libmui/fonts/typicons.sfd index 496fa98..2764bf9 100644 --- a/libmui/fonts/typicons.sfd +++ b/libmui/fonts/typicons.sfd @@ -22,7 +22,7 @@ OS2Version: 4 OS2_WeightWidthSlopeOnly: 0 OS2_UseTypoMetrics: 1 CreationTime: 1406487198 -ModificationTime: 1710318804 +ModificationTime: 1712598375 PfmFamily: 17 TTFWeight: 400 TTFWidth: 5 @@ -2630,8 +2630,8 @@ NameList: AGL For New Fonts DisplaySize: -96 AntiAlias: 1 FitToEm: 0 -WinInfo: 224 14 9 -BeginChars: 349 339 +WinInfo: 144 18 12 +BeginChars: 351 341 StartChar: .notdef Encoding: 336 -1 0 @@ -7504,16 +7504,16 @@ EndTTInstrs LayerCount: 2 Fore SplineSet -500 467 m 2,0,1 - 517 467 517 467 529.5 454 c 128,-1,2 - 542 441 542 441 542 425 c 128,-1,3 - 542 409 542 409 529 396 c 2,4,-1 - 271 133 l 1,5,-1 - 12 396 l 2,6,7 - 0 408 0 408 0 425 c 128,-1,8 - 0 442 0 442 12.5 454.5 c 128,-1,9 - 25 467 25 467 42 467 c 2,10,-1 - 500 467 l 2,0,1 +500 467 m 6,0,1 + 517 467 517 467 529.5 454 c 132,-1,2 + 542 441 542 441 542 425 c 132,-1,3 + 542 409 542 409 529 396 c 6,4,-1 + 271 133 l 5,5,-1 + 12 396 l 6,6,7 + 0 408 0 408 0 425 c 132,-1,8 + 0 442 0 442 12.5 454.5 c 132,-1,9 + 25 467 25 467 42 467 c 6,10,-1 + 500 467 l 6,0,1 EndSplineSet Validated: 1 EndChar @@ -54120,13 +54120,13 @@ SplineSet 667 210 l 5,55,-1 667 85 l 5,52,-1 EndSplineSet -Validated: 524329 +Validated: 41 EndChar StartChar: uniE151 Encoding: 338 57681 338 Width: 750 -Flags: WO +Flags: W LayerCount: 2 Fore SplineSet @@ -54174,5 +54174,46 @@ SplineSet EndSplineSet Validated: 37 EndChar + +StartChar: uniE152 +Encoding: 339 57682 339 +Width: 449 +Flags: WO +LayerCount: 2 +Fore +SplineSet +104 529 m 2,0,1 + 104 546 104 546 117 558.5 c 128,-1,2 + 130 571 130 571 146 571 c 128,-1,3 + 162 571 162 571 175 558 c 2,4,-1 + 438 300 l 1,5,-1 + 175 41 l 2,6,7 + 163 29 163 29 146 29 c 128,-1,8 + 129 29 129 29 116.5 41.5 c 128,-1,9 + 104 54 104 54 104 71 c 2,10,-1 + 104 529 l 2,0,1 +EndSplineSet +EndChar + +StartChar: uniE153 +Encoding: 340 57683 340 +Width: 542 +Flags: W +LayerCount: 2 +Fore +SplineSet +438 71 m 6,0,1 + 438 54 438 54 425 41.5 c 132,-1,2 + 412 29 412 29 396 29 c 132,-1,3 + 380 29 380 29 367 42 c 6,4,-1 + 104 300 l 5,5,-1 + 367 559 l 6,6,7 + 379 571 379 571 396 571 c 132,-1,8 + 413 571 413 571 425.5 558.5 c 132,-1,9 + 438 546 438 546 438 529 c 6,10,-1 + 438 71 l 6,0,1 +EndSplineSet +Validated: 1 +EndChar EndChars EndSplineFont diff --git a/libmui/mui/mui_cdef_scrollbar.c b/libmui/mui/mui_cdef_scrollbar.c deleted file mode 100644 index 58b301c..0000000 --- a/libmui/mui/mui_cdef_scrollbar.c +++ /dev/null @@ -1,366 +0,0 @@ -/* - * mui_cdef_scrollbar.c - * - * Copyright (C) 2023 Michel Pollet - * - * SPDX-License-Identifier: MIT - */ - -#include -#include - -#include "mui.h" -#include "cg.h" - -enum { - MUI_CONTROL_SCROLLBAR = FCC('s','b','a','r'), -}; - -extern const mui_control_color_t mui_control_color[MUI_CONTROL_STATE_COUNT]; - -enum mui_sb_part_e { - MUI_SB_PART_FRAME = 0, - MUI_SB_PART_UP, - MUI_SB_PART_DOWN, - MUI_SB_PART_PAGEUP, - MUI_SB_PART_PAGEDOWN, - MUI_SB_PART_THUMB, - MUI_SB_PART_COUNT, -}; - -typedef struct mui_scrollbar_control_t { - mui_control_t control; - uint32_t visible; - uint32_t max; - c2_pt_t drag_offset; - uint32_t saved_value; // to handle 'snapback' -} mui_scrollbar_control_t; - -static void -mui_scrollbar_make_rects( - mui_control_t * c, - c2_rect_t * parts) -{ - c2_rect_t f = c->frame; - c2_rect_offset(&f, c->win->content.l, c->win->content.t); - parts[MUI_SB_PART_FRAME] = f; - - c2_rect_t part = f; - part.b = part.t + c2_rect_width(&part); - parts[MUI_SB_PART_UP] = part; - part = f; - part.t = part.b - c2_rect_width(&part); - parts[MUI_SB_PART_DOWN] = part; - - mui_scrollbar_control_t *sb = (mui_scrollbar_control_t *)c; - if (sb->max <= sb->visible) { - c2_rect_t z = {}; - parts[MUI_SB_PART_THUMB] = z; - parts[MUI_SB_PART_PAGEUP] = z; - parts[MUI_SB_PART_PAGEDOWN] = z; - return; - } - part = f; - part.t = parts[MUI_SB_PART_UP].b + 1; - part.b = parts[MUI_SB_PART_DOWN].t - 1; - - float visible = sb->visible / (float)sb->max; - float thumb_size = visible * sb->visible; - if (thumb_size < 20) - thumb_size = 20; - float thumb_pos = c->value / ((float)sb->max- sb->visible); - float thumb_offset = 0.5 + thumb_pos * (c2_rect_height(&part) - thumb_size); -// printf("%s visible:%.2f ts: %.2f thumb_pos:%.2f thumb_offset:%.2f\n", -// __func__, visible, thumb_size, thumb_pos, thumb_offset); - - part.b = part.t + thumb_size; - c2_rect_offset(&part, 0, thumb_offset); - if (part.b > parts[MUI_SB_PART_DOWN].t) { - c2_rect_offset(&part, 0, parts[MUI_SB_PART_DOWN].t - part.b); - } - parts[MUI_SB_PART_THUMB] = part; - part = f; - part.t = parts[MUI_SB_PART_UP].b + 1; - part.b = parts[MUI_SB_PART_THUMB].t - 1; - parts[MUI_SB_PART_PAGEUP] = part; - part = f; - part.t = parts[MUI_SB_PART_THUMB].b + 1; - part.b = parts[MUI_SB_PART_DOWN].t - 1; - parts[MUI_SB_PART_PAGEDOWN] = part; -} - -static void -mui_scrollbar_draw( - mui_window_t * win, - mui_control_t * c, - mui_drawable_t *dr ) -{ - c2_rect_t f = c->frame; - c2_rect_offset(&f, win->content.l, win->content.t); - - struct cg_ctx_t * cg = mui_drawable_get_cg(dr); - cg_set_line_width(cg, 1); - - cg_rectangle(cg, f.l, f.t, - c2_rect_width(&f), c2_rect_height(&f)); - cg_set_source_color(cg, &CG_COLOR(mui_control_color[c->state].fill)); - cg_fill_preserve(cg); - cg_set_source_color(cg, &CG_COLOR(mui_control_color[c->state].frame)); - cg_stroke(cg); - - mui_font_t * icons = mui_font_find(win->ui, "icon_small"); - - c2_rect_t parts[MUI_SB_PART_COUNT]; - mui_scrollbar_make_rects(c, parts); - - mui_color_t contentFill = MUI_COLOR(0xa0a0a0ff); - mui_color_t decoColor = MUI_COLOR(0x666666ff); - - c2_rect_t pf; - pf = parts[MUI_SB_PART_UP]; - cg_rectangle(cg, pf.l, pf.t, - c2_rect_width(&pf), c2_rect_height(&pf)); - cg_set_source_color(cg, - c->flags.hit_part == MUI_SB_PART_UP ? - &CG_COLOR(decoColor) : - &CG_COLOR(mui_control_color[c->state].fill)); - cg_fill_preserve(cg); - cg_set_source_color(cg, &CG_COLOR(mui_control_color[c->state].frame)); - cg_stroke(cg); - - stb_ttc_measure m = {}; - mui_font_text_measure(icons, "", &m); - pf.l = pf.l + (c2_rect_width(&pf) - m.x1 - m.x0) / 2; - mui_font_text_draw(icons, dr, pf.tl, "", 0, - mui_control_color[c->state].text); - - pf = parts[MUI_SB_PART_DOWN]; - cg_rectangle(cg, pf.l, pf.t, - c2_rect_width(&pf), c2_rect_height(&pf)); - cg_set_source_color(cg, - c->flags.hit_part == MUI_SB_PART_DOWN ? - &CG_COLOR(decoColor) : - &CG_COLOR(mui_control_color[c->state].fill)); - cg_fill_preserve(cg); - cg_set_source_color(cg, &CG_COLOR(mui_control_color[c->state].frame)); - cg_stroke(cg); - - mui_font_text_measure(icons, "", &m); - pf.l = pf.l + (c2_rect_width(&pf) - m.x1 - m.x0) / 2; - mui_font_text_draw(icons, dr, pf.tl, "", 0, - mui_control_color[c->state].text); - - pf = parts[MUI_SB_PART_PAGEUP]; - if (c2_rect_height(&pf) > 0) { - cg_rectangle(cg, pf.l, pf.t, - c2_rect_width(&pf), c2_rect_height(&pf)); - cg_set_source_color(cg, - c->flags.hit_part == MUI_SB_PART_PAGEUP ? - &CG_COLOR(decoColor) : - &CG_COLOR(contentFill)); - cg_fill(cg); - } - pf = parts[MUI_SB_PART_PAGEDOWN]; - if (c2_rect_height(&pf) > 0) { - cg_rectangle(cg, pf.l, pf.t, - c2_rect_width(&pf), c2_rect_height(&pf)); - cg_set_source_color(cg, - c->flags.hit_part == MUI_SB_PART_PAGEDOWN ? - &CG_COLOR(decoColor) : - &CG_COLOR(contentFill)); - cg_fill(cg); - } - pf = parts[MUI_SB_PART_THUMB]; - if (c2_rect_height(&pf) > 0) { - cg_rectangle(cg, pf.l, pf.t, - c2_rect_width(&pf), c2_rect_height(&pf)); - cg_set_source_color(cg, - c->flags.hit_part == MUI_SB_PART_THUMB ? - &CG_COLOR(decoColor) : - &CG_COLOR(mui_control_color[c->state].fill)); - cg_fill_preserve(cg); - cg_set_source_color(cg, - &CG_COLOR(mui_control_color[c->state].frame)); - cg_stroke(cg); - } -} - -static void -_mui_scrollbar_scroll( - mui_control_t * c, - int32_t delta ) -{ - mui_scrollbar_control_t *sb = (mui_scrollbar_control_t *)c; - int32_t v = (int32_t)c->value + delta; - if (v < 0) - v = 0; - if (v > ((int32_t)sb->max - (int32_t)sb->visible)) - v = sb->max - sb->visible; - c->value = v; - mui_control_inval(c); - mui_control_action(c, MUI_CONTROL_ACTION_VALUE_CHANGED, NULL); -} - -static bool -mui_scrollbar_mouse( - struct mui_control_t * c, - mui_event_t * ev) -{ - mui_scrollbar_control_t *sb = (mui_scrollbar_control_t *)c; - c2_rect_t parts[MUI_SB_PART_COUNT]; - mui_scrollbar_make_rects(c, parts); - - switch (ev->type) { - case MUI_EVENT_BUTTONDOWN: { - for (int i = 1; i < MUI_SB_PART_COUNT; ++i) { - if (c2_rect_contains_pt(&parts[i], &ev->mouse.where)) { - c->flags.hit_part = i; - sb->drag_offset.x = - ev->mouse.where.x - parts[i].l; - sb->drag_offset.y = - ev->mouse.where.y - parts[i].t; - sb->saved_value = c->value; - break; - } - } - int part = c->flags.hit_part % MUI_SB_PART_COUNT; - switch (part) { - case MUI_SB_PART_DOWN: - case MUI_SB_PART_UP: { - _mui_scrollbar_scroll(c, - part == MUI_SB_PART_UP ? -30 : 30); - } break; - case MUI_SB_PART_PAGEUP: - case MUI_SB_PART_PAGEDOWN: { - int32_t offset = sb->visible; - _mui_scrollbar_scroll(c, - part == MUI_SB_PART_PAGEUP ? - -offset : offset); - } break; - case MUI_SB_PART_THUMB: - mui_control_inval(c); - break; - } - // printf("%s hit part %d\n", __func__, c->flags.hit_part); - } break; - case MUI_EVENT_DRAG: { - if (!c->flags.hit_part) - break; - int part = c->flags.hit_part % MUI_SB_PART_COUNT; - c2_rect_t test_rect = parts[part]; - if (part == MUI_SB_PART_THUMB) - c2_rect_inset(&test_rect, -60, -60); - if (c2_rect_contains_pt(&test_rect, &ev->mouse.where)) { - c->flags.hit_part = part; - switch (part) { - case MUI_SB_PART_THUMB: { - c2_rect_t nt = parts[part]; - c2_rect_offset(&nt, 0, - -(nt.t + parts[MUI_SB_PART_UP].b) + - ev->mouse.where.y - sb->drag_offset.y); - // printf("%s thumb %s\n", __func__, c2_rect_as_str(&nt)); - if (nt.t < 0) - c2_rect_offset(&nt, 0, -nt.t); - if (nt.b > parts[MUI_SB_PART_DOWN].t) - c2_rect_offset(&nt, 0, parts[MUI_SB_PART_DOWN].t - nt.b); - - int max_pixels = parts[MUI_SB_PART_DOWN].t - - parts[MUI_SB_PART_UP].b - - c2_rect_height(&nt); - uint32_t nv = nt.t * (sb->max - sb->visible) / max_pixels; - if (nv > (sb->max - sb->visible)) - nv = sb->max - sb->visible; - c->value = nv; - // printf("v is %d vs %d max %d = %d new val %d\n", - // nt.t, max_pixels, sb->max, nv, - // mui_control_get_value(c)); - mui_control_inval(c); - mui_control_action(c, MUI_CONTROL_ACTION_VALUE_CHANGED, NULL); - } break; - } - } else { - c->flags.hit_part = part + MUI_SB_PART_COUNT; - if (part == MUI_SB_PART_THUMB) { - c->value = sb->saved_value; - mui_control_inval(c); - mui_control_action(c, MUI_CONTROL_ACTION_VALUE_CHANGED, NULL); - } - } - } break; - case MUI_EVENT_BUTTONUP: { - if (!c->flags.hit_part) - break; - mui_control_inval(c); - c->flags.hit_part = 0; - } break; - } - return true; -} - -static bool -mui_cdef_scrollbar( - struct mui_control_t * c, - uint8_t what, - void * param) -{ - switch (what) { - case MUI_CDEF_INIT: - break; - case MUI_CDEF_DISPOSE: - break; - case MUI_CDEF_DRAW: { - mui_drawable_t * dr = param; - mui_scrollbar_draw(c->win, c, dr); - } break; - case MUI_CDEF_EVENT: { - // printf("%s event\n", __func__); - mui_event_t *ev = param; - switch (ev->type) { - case MUI_EVENT_BUTTONUP: - case MUI_EVENT_DRAG: - case MUI_EVENT_BUTTONDOWN: { - return mui_scrollbar_mouse(c, ev); - } break; - } - } break; - } - return false; -} - -uint32_t -mui_scrollbar_get_max( - mui_control_t * c) -{ - mui_scrollbar_control_t *sb = (mui_scrollbar_control_t *)c; - return sb->max; -} -void -mui_scrollbar_set_max( - mui_control_t * c, - uint32_t max) -{ - mui_scrollbar_control_t *sb = (mui_scrollbar_control_t *)c; - sb->max = max; - mui_control_inval(c); -} -void -mui_scrollbar_set_page( - mui_control_t * c, - uint32_t page) -{ - mui_scrollbar_control_t *sb = (mui_scrollbar_control_t *)c; - sb->visible = page; - mui_control_inval(c); -} - -mui_control_t * -mui_scrollbar_new( - mui_window_t * win, - c2_rect_t frame, - uint32_t uid ) -{ - return mui_control_new( - win, MUI_CONTROL_SCROLLBAR, mui_cdef_scrollbar, - frame, NULL, uid, - sizeof(mui_scrollbar_control_t)); -} diff --git a/libmui/tests/mui_playground.c b/libmui/mui_shell/mui_shell.c similarity index 75% rename from libmui/tests/mui_playground.c rename to libmui/mui_shell/mui_shell.c index 0f5fe06..543b225 100644 --- a/libmui/tests/mui_playground.c +++ b/libmui/mui_shell/mui_shell.c @@ -1,5 +1,5 @@ /* - * mui_playground.c + * mui_shell.c * * Copyright (C) 2023 Michel Pollet * @@ -9,18 +9,22 @@ #define MUI_HAS_XKB 1 #if MUI_HAS_XCB +#include #include -#include #include #include +#include #include #include +#include +#include + #include #include #include #include #include -#include +//#include #if MUI_HAS_XKB #include @@ -32,7 +36,7 @@ struct xkb_state; #endif #include "mui.h" -#include "mui_plugin.h" +#include "mui_shell_plugin.h" @@ -44,10 +48,11 @@ typedef struct mui_xcb_t { float ui_scale_x, ui_scale_y; c2_pt_t size; xcb_connection_t * xcb; + xcb_image_t * xcb_image; // if no shared memory xcb_shm_segment_info_t shm; xcb_window_t window; xcb_pixmap_t xcb_pix; - xcb_gcontext_t xcb_context; + xcb_gcontext_t xcb_win_gc; struct xkb_state * xkb_state; int redraw; @@ -133,72 +138,6 @@ _mui_xcb_convert_keycode( return true; } -int -mui_xcb_list_physical_screens( - struct xcb_connection_t * xcb, - struct c2_rect_array_t *out) -{ - if (!xcb || !out) - return -1; - c2_rect_array_clear(out); - xcb_screen_t *screen = xcb_setup_roots_iterator( - xcb_get_setup(xcb)).data; - xcb_randr_get_screen_resources_current_reply_t *reply = - xcb_randr_get_screen_resources_current_reply( - xcb, - xcb_randr_get_screen_resources_current( - xcb, screen->root), - NULL); - xcb_timestamp_t timestamp = reply->config_timestamp; - int len = xcb_randr_get_screen_resources_current_outputs_length(reply); - xcb_randr_output_t *randr_outputs = - xcb_randr_get_screen_resources_current_outputs(reply); - for (int i = 0; i < len; i++) { - xcb_randr_get_output_info_reply_t *output = - xcb_randr_get_output_info_reply( - xcb, - xcb_randr_get_output_info( - xcb, randr_outputs[i], timestamp), - NULL); - if (!output || output->crtc == XCB_NONE || - output->connection == XCB_RANDR_CONNECTION_DISCONNECTED) - continue; - xcb_randr_get_crtc_info_reply_t *crtc = - xcb_randr_get_crtc_info_reply(xcb, - xcb_randr_get_crtc_info( - xcb, output->crtc, timestamp), - NULL); - c2_rect_t r = C2_RECT(crtc->x, crtc->y, - crtc->x +crtc->width, crtc->y + crtc->height); - c2_rect_array_add(out, r); - free(crtc); - free(output); - } - free(reply); - return 0; -} - -static bool -_mui_match_physical_screen( - xcb_connection_t *xcb, - c2_pt_t want_size, - c2_pt_p found_pos ) -{ - bool res = false; - c2_rect_array_t sc = {}; - - mui_xcb_list_physical_screens(xcb, &sc); - - for (uint i = 0; i < sc.count; i++) { - if (c2_rect_width(&sc.e[i]) == want_size.x && - c2_rect_height(&sc.e[i]) == want_size.y) { - *found_pos = sc.e[i].tl; - res = true; - } - } - return res; -} - struct mui_t * mui_xcb_init( struct mui_t *mui, @@ -222,12 +161,6 @@ mui_xcb_init( ui->xcb = xcb_connect(NULL, NULL); - bool windowed = 1; - bool opaque = 1; - c2_pt_t found_position = {}; - bool has_position = !windowed && _mui_match_physical_screen( - ui->xcb, ui->size, &found_position); - xcb_screen_iterator_t iter = xcb_setup_roots_iterator( xcb_get_setup(ui->xcb)); printf("%s %d screens\n", __func__, iter.rem); @@ -241,46 +174,19 @@ mui_xcb_init( } printf("XCB Screen depth %d\n", screen->root_depth); - /* - * This walks thru the 'visual', looking for a true colour *32 bits* one - * which means it handles ARGB colors, which we can draw into. Also find - * one which color bit masks matches libcui & libpixman. - */ - xcb_visualtype_t *argb_visual = NULL; - xcb_depth_iterator_t depth_iter = - xcb_screen_allowed_depths_iterator(screen); - for (; depth_iter.rem; xcb_depth_next(&depth_iter)) { - xcb_visualtype_iterator_t visual_iter = - xcb_depth_visuals_iterator(depth_iter.data); - // printf("XCB Depth %d\n", depth_iter.data->depth); - if (depth_iter.data->depth != 32) - continue; - for (; visual_iter.rem; xcb_visualtype_next(&visual_iter)) { - if (visual_iter.data->_class == XCB_VISUAL_CLASS_TRUE_COLOR - && visual_iter.data->red_mask == 0xff0000 - && visual_iter.data->green_mask == 0x00ff00 - && visual_iter.data->blue_mask == 0x0000ff) { - argb_visual = visual_iter.data; - break; - } - } - } - printf("XCB ARGB Transparency %s\n", - argb_visual ? "Supported" : "Not available"); - if (windowed || opaque) - argb_visual = NULL; - xcb_shm_query_version_reply_t *xcb_shm_present; xcb_shm_present = xcb_shm_query_version_reply( ui->xcb, xcb_shm_query_version(ui->xcb), NULL); + bool slow_path = false; if (!xcb_shm_present || !xcb_shm_present->shared_pixmaps) { printf("xcb_shm error... %p\n", xcb_shm_present); printf("If using nvidia driver, you need\n" " Option \"AllowSHMPixmaps\" \"1\"\n" " In your /etc/X11/xorg.conf file\n"); - exit(0); - } - printf("XCB Shared memory present\n"); + slow_path = true; + // exit(0); + } else + printf("XCB Shared memory present\n"); _mui_xcb_init_keyboard(ui); @@ -290,19 +196,14 @@ mui_xcb_init( XCB_CW_EVENT_MASK; xcb_colormap_t cmap = xcb_generate_id(ui->xcb); - /* required for having transparent windows */ - if (argb_visual) { - xcb_create_colormap(ui->xcb, XCB_COLORMAP_ALLOC_NONE, cmap, - screen->root, argb_visual->visual_id); - value_mask |= XCB_CW_COLORMAP; - } + uint32_t w_mask[] = { screen->black_pixel, // Border Pixel; not really needed for anything, but needed // for ARGB window otherwise it doesn't get created properly 0x88888888, // if we found a screen of the exact size, remove the border - has_position ? 1 : 0, + 0, XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_BUTTON_PRESS | XCB_EVENT_MASK_BUTTON_RELEASE | XCB_EVENT_MASK_POINTER_MOTION | XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_LEAVE_WINDOW | @@ -312,12 +213,12 @@ mui_xcb_init( ui->window = xcb_generate_id(ui->xcb); xcb_create_window( ui->xcb, - argb_visual ? 32 : XCB_COPY_FROM_PARENT, + XCB_COPY_FROM_PARENT, ui->window, screen->root, - found_position.x, found_position.y, + 0,0, pix->size.x, pix->size.y, 0, XCB_WINDOW_CLASS_INPUT_OUTPUT, - argb_visual ? argb_visual->visual_id : screen->root_visual, + screen->root_visual, value_mask, w_mask); xcb_free_colormap(ui->xcb, cmap); @@ -329,29 +230,62 @@ mui_xcb_init( value_mask = XCB_GC_FOREGROUND | XCB_GC_GRAPHICS_EXPOSURES; value_list[0] = screen->white_pixel; value_list[1] = 0; - ui->xcb_context = xcb_generate_id(ui->xcb); + ui->xcb_win_gc = xcb_generate_id(ui->xcb); xcb_create_gc( - ui->xcb, ui->xcb_context, ui->window, value_mask, value_list); + ui->xcb, ui->xcb_win_gc, ui->window, value_mask, value_list); // map the window onto the screen xcb_map_window(ui->xcb, ui->window); // wont show unless I do this xcb_flush(ui->xcb); - ui->shm.shmid = shmget(IPC_PRIVATE, - pix->size.x * pix->size.y * 4, IPC_CREAT | 0777); - ui->shm.shmaddr = shmat(ui->shm.shmid, 0, 0); - ui->shm.shmseg = xcb_generate_id(ui->xcb); - xcb_shm_attach(ui->xcb, ui->shm.shmseg, ui->shm.shmid, 0); - shmctl(ui->shm.shmid, IPC_RMID, 0); - ui->xcb_pix = xcb_generate_id(ui->xcb); - xcb_shm_create_pixmap( - ui->xcb, ui->xcb_pix, ui->window, - pix->size.x, pix->size.y, - argb_visual ? 32 : screen->root_depth, - ui->shm.shmseg, 0); + if (!slow_path) { + xcb_generic_error_t *error; + xcb_void_cookie_t cook; + ui->shm.shmid = shmget(IPC_PRIVATE, + pix->size.x * pix->size.y * 4, IPC_CREAT | 0666); + ui->shm.shmaddr = shmat(ui->shm.shmid, 0, 0); + ui->shm.shmseg = xcb_generate_id(ui->xcb); + cook = xcb_shm_attach_checked(ui->xcb, ui->shm.shmseg, ui->shm.shmid, 0); + error = xcb_request_check(ui->xcb, cook); + if (error) { + fprintf(stderr, "XCB: Error xcb_shm_attach_checked: %d\n", + error->error_code); + free(error); +// xcb_disconnect(ui->xcb); + // return 1; + } + shmctl(ui->shm.shmid, IPC_RMID, 0); - pix->pixels = ui->shm.shmaddr; - pix->row_bytes = pix->size.x * 4; + ui->xcb_pix = xcb_generate_id(ui->xcb); + cook = xcb_shm_create_pixmap_checked( + ui->xcb, ui->xcb_pix, ui->window, + pix->size.x, pix->size.y, + screen->root_depth, + ui->shm.shmseg, 0); + error = xcb_request_check(ui->xcb, cook); + if (error) { + fprintf(stderr, "XCB: Error xcb_shm_create_pixmap: %d\n", + error->error_code); + free(error); + } else + pix->pixels = ui->shm.shmaddr; + pix->row_bytes = pix->size.x * 4; + } + if (!pix->pixels) { + printf("XCB: Not using SHM, slow path\n"); + pix->pixels = malloc(pix->size.x * pix->size.y * 4); + + ui->xcb_pix = xcb_generate_id(ui->xcb); + xcb_create_pixmap( + ui->xcb, screen->root_depth, ui->xcb_pix, ui->window, + pix->size.x, pix->size.y); + ui->xcb_image = xcb_image_create_native( + ui->xcb, pix->size.x, pix->size.y, XCB_IMAGE_FORMAT_Z_PIXMAP, + screen->root_depth, pix->pixels, + pix->size.x * pix->size.y * 4, pix->pixels); + pix->row_bytes = pix->size.x * 4; + } + xcb_flush(ui->xcb); // printf("%s pix is %p\n", __func__, pix->pixels); ui->redraw = 1; return &ui->ui; @@ -380,6 +314,7 @@ mui_read_clipboard( int mui_xcb_poll( struct mui_t * mui, + mui_drawable_t * dr, bool redrawn) { mui_xcb_t * ui = (mui_xcb_t *)mui; @@ -421,7 +356,7 @@ mui_xcb_poll( ui->xkb_state, key->detail); key_ev.type = MUI_EVENT_KEYDOWN; key_ev.key.up = 0; - printf("%s %08x\n", __func__, keysym); + // printf("%s %08x\n", __func__, keysym); if (_mui_xcb_convert_keycode(ui, keysym, &key_ev)) { if (key_ev.key.key >= MUI_KEY_MODIFIERS && key_ev.key.key <= MUI_KEY_MODIFIERS_LAST) { @@ -504,7 +439,12 @@ mui_xcb_poll( break; case XCB_EXPOSE: { // xcb_expose_event_t *expose_event = (xcb_expose_event_t*) event; - ui->redraw++; +// ui->redraw++; + xcb_expose_event_t *x = (xcb_expose_event_t*) event; + xcb_copy_area( + ui->xcb, ui->xcb_pix, + ui->window, ui->xcb_win_gc, + x->x, x->y, x->x, x->y, x->width, x->height); } break; default: // Handle other events @@ -526,10 +466,24 @@ mui_xcb_poll( // printf("XCB: %d rects to redraw\n", rc); for (int i = 0; i < rc; i++) { c2_rect_t r = ra[i]; - // printf("XCB: %d,%d %dx%d\n", r.l, r.t, c2_rect_width(&r), c2_rect_height(&r)); + // printf("XCB: %d,%d %dx%d\n", r.l, r.t, c2_rect_width(&r), c2_rect_height(&r)); + + // cannot update the exact rectangle, just window-wide strips + if (ui->xcb_image) { + mui_pixmap_t * pix = &dr->pix; + xcb_put_image( + ui->xcb, XCB_IMAGE_FORMAT_Z_PIXMAP, + ui->xcb_pix, ui->xcb_win_gc, + pix->size.x, c2_rect_height(&r), + 0, r.t, 0, 24, + c2_rect_height(&r) * pix->row_bytes, + (uint8_t*)pix->pixels + (r.t * pix->row_bytes) /*+ r.l * 4*/); + } xcb_copy_area( - ui->xcb, ui->xcb_pix, ui->window, ui->xcb_context, - r.l, r.t, r.l, r.t, c2_rect_width(&r), c2_rect_height(&r)); + ui->xcb, ui->xcb_pix, + ui->window, ui->xcb_win_gc, + r.l, r.t, r.l, r.t, + c2_rect_width(&r), c2_rect_height(&r)); } } pixman_region32_clear(&mui->redraw); @@ -552,15 +506,29 @@ mui_xcb_terminate( #endif -#include -#include -#include -#include -#include -#include - -int main() +int +main( + int argc, + const char * argv[]) { + const char * filename = NULL;// "build-x86_64-linux-gnu/lib/ui_tests.so"; + + for (int i = 1; i < argc; i++) { + if (argv[i][0] == '-') { + switch (argv[i][1]) { + case 'f': + filename = argv[++i]; + break; + } + } else { + filename = argv[i]; + } + } + if (!filename) { + fprintf(stderr, "Usage: %s -f \n", basename((char*)argv[0])); + return 1; + } + mui_xcb_t xcb_ui = {}; mui_drawable_t dr = {}; @@ -570,7 +538,6 @@ int main() mui_t *mui = mui_xcb_init((struct mui_t *)&xcb_ui, &dr.pix); mui_xcb_t * ui = &xcb_ui; void * dynload = NULL; - char * filename = "build-x86_64-linux-gnu/lib/ui_tests.so"; struct stat st_current = {}, st = {}; mui_time_t stamp = 0; @@ -621,7 +588,7 @@ int main() mui_run(mui); if (ui->plug && ui->plug->draw) draw = ui->plug->draw(mui, ui->plug_data, &dr, false); - if (mui_xcb_poll(mui, draw)) + if (mui_xcb_poll(mui, &dr, draw)) break; mui_time_t now = mui_get_time(); while (stamp < now) @@ -642,4 +609,4 @@ int main() mui_drawable_dispose(&dr); mui_xcb_terminate(mui); return 0; -} \ No newline at end of file +} diff --git a/libmui/mui_shell/mui_shell_plugin.h b/libmui/mui_shell/mui_shell_plugin.h new file mode 100644 index 0000000..ce3fec3 --- /dev/null +++ b/libmui/mui_shell/mui_shell_plugin.h @@ -0,0 +1,42 @@ +/* + * mui_shell_plugin.h + * + * Copyright (C) 2023 Michel Pollet + * + * SPDX-License-Identifier: MIT + */ + +#pragma once + +#include +#include + +/* + * Quck and dirty plugin interface for mui_shell, just allows a quick reload + * of a plugin without having to restart the whole shell. + * In combination with 'make watch' you have have 1s turnaround time for + * your plugin development, helps a ton when tweaking a dialog etc. + */ +struct mui_t; +struct mui_drawable_t; + +typedef struct mui_plug_t { + const char * name; // 'Human' name of the plugin + const uint32_t * icon; // optional + // return a 'handle' to some data for this plugin. + void * (*init)( + struct mui_t * ui, + struct mui_plug_t * plug, + struct mui_drawable_t * dr ); + void (*dispose)( + void * plug ); + int (*draw)( + struct mui_t * ui, + void * plug, + struct mui_drawable_t * dr, + uint16_t all ); + int (*event)( + struct mui_t * ui, + void * plug, + struct mui_event_t * event ); +} mui_plug_t; diff --git a/libmui/mui/c2_arrays.c b/libmui/src/c2_arrays.c similarity index 100% rename from libmui/mui/c2_arrays.c rename to libmui/src/c2_arrays.c diff --git a/libmui/mui/c2_arrays.h b/libmui/src/c2_arrays.h similarity index 100% rename from libmui/mui/c2_arrays.h rename to libmui/src/c2_arrays.h diff --git a/libmui/mui/c2_geometry.c b/libmui/src/c2_geometry.c similarity index 99% rename from libmui/mui/c2_geometry.c rename to libmui/src/c2_geometry.c index 02ce113..3e9e702 100644 --- a/libmui/mui/c2_geometry.c +++ b/libmui/src/c2_geometry.c @@ -298,7 +298,7 @@ c2_polyline_clear( int c2_polyline_get_segment( c2_polyline_p pl, - long ind, + unsigned long ind, c2_segment_p o ) { if (ind > pl->pt.count) @@ -444,7 +444,7 @@ c2_polyline_array_clip( c2_rect_p clip, c2_polyline_array_p outPoly ) { - for (long poly = 0; poly < pa->count; poly++) { + for (unsigned long poly = 0; poly < pa->count; poly++) { c2_polyline_t *p = pa->e[poly]; if (!p) break; diff --git a/libmui/mui/c2_geometry.h b/libmui/src/c2_geometry.h similarity index 100% rename from libmui/mui/c2_geometry.h rename to libmui/src/c2_geometry.h diff --git a/libmui/mui/c2_geometry_inline.h b/libmui/src/c2_geometry_inline.h similarity index 100% rename from libmui/mui/c2_geometry_inline.h rename to libmui/src/c2_geometry_inline.h diff --git a/libmui/mui/c2_geometry_poly.h b/libmui/src/c2_geometry_poly.h similarity index 98% rename from libmui/mui/c2_geometry_poly.h rename to libmui/src/c2_geometry_poly.h index c8b464f..e1e79aa 100644 --- a/libmui/mui/c2_geometry_poly.h +++ b/libmui/src/c2_geometry_poly.h @@ -32,7 +32,7 @@ c2_polyline_clear( int c2_polyline_get_segment( c2_polyline_p pl, - long ind, + unsigned long ind, c2_segment_p o ); void diff --git a/libmui/mui/c_array.h b/libmui/src/c_array.h similarity index 100% rename from libmui/mui/c_array.h rename to libmui/src/c_array.h diff --git a/libmui/mui/cg.c b/libmui/src/cg.c similarity index 98% rename from libmui/mui/cg.c rename to libmui/src/cg.c index 44a4e7e..4499413 100644 --- a/libmui/mui/cg.c +++ b/libmui/src/cg.c @@ -27,6 +27,22 @@ #include "cg.h" +// make this optional on darwin, where the is no weak linking +#if defined(__APPLE__) && defined(__MACH__) +#define CG_WEAK_LINKING 0 +#else +#define CG_WEAK_LINKING 1 +#endif + +#if CG_WEAK_LINKING +#define _cg_stringify(_a) #_a +#define _cg_und(_b) _cg_stringify(__ ## _b) +#define cg_weak_alias(_name) \ + extern __typeof(__##_name) _name __attribute__((weak, alias(_cg_und(_name)))) +#else +#define cg_weak_alias(_name) +#endif + #define cg_array_init(array) \ do { \ array.data = NULL; \ @@ -1431,12 +1447,36 @@ static inline uint32_t interpolate_pixel(uint32_t x, uint32_t a, uint32_t y, uin return x; } +#if defined(__AVX2__) +typedef uint32_t u32_v __attribute__((vector_size(32))); +#define VEC_ALIGN 31 +#define VEC_ECOUNT 8 +#else +typedef uint32_t u32_v __attribute__((vector_size(16))); +#define VEC_ALIGN 15 +#define VEC_ECOUNT 4 +#endif + + static void __cg_memfill32(uint32_t * dst, uint32_t val, int len) { - for(int i = 0; i < len; i++) - dst[i] = val; + // use extensions to do the first part, as long as it is aligned properly + while (len > 0 && ((uintptr_t)dst & VEC_ALIGN)) { + *dst++ = val; + len--; + } + u32_v v = val - (u32_v){}; + while (len >= VEC_ECOUNT) { + *(u32_v *)dst = v; + dst += VEC_ECOUNT; len -= VEC_ECOUNT; + } + // do the last part + while (len > 0) { + *dst++ = val; + len--; + } } -extern __typeof(__cg_memfill32) cg_memfill32 __attribute__((weak, alias("__cg_memfill32"))); +cg_weak_alias(cg_memfill32); static inline int gradient_clamp(struct cg_gradient_data_t * gradient, int ipos) { @@ -1615,7 +1655,7 @@ static void __cg_comp_solid_source(uint32_t * dst, int len, uint32_t color, uint dst[i] = color + CG_BYTE_MUL(dst[i], ialpha); } } -extern __typeof(__cg_comp_solid_source) cg_comp_solid_source __attribute__((weak, alias("__cg_comp_solid_source"))); +cg_weak_alias(cg_comp_solid_source); static void __cg_comp_solid_source_over(uint32_t * dst, int len, uint32_t color, uint32_t alpha) { @@ -1632,7 +1672,7 @@ static void __cg_comp_solid_source_over(uint32_t * dst, int len, uint32_t color, dst[i] = color + CG_BYTE_MUL(dst[i], ialpha); } } -extern __typeof(__cg_comp_solid_source_over) cg_comp_solid_source_over __attribute__((weak, alias("__cg_comp_solid_source_over"))); +cg_weak_alias(cg_comp_solid_source_over); static void __cg_comp_solid_destination_in(uint32_t * dst, int len, uint32_t color, uint32_t alpha) { @@ -1642,7 +1682,7 @@ static void __cg_comp_solid_destination_in(uint32_t * dst, int len, uint32_t col for(int i = 0; i < len; i++) dst[i] = CG_BYTE_MUL(dst[i], a); } -extern __typeof(__cg_comp_solid_destination_in) cg_comp_solid_destination_in __attribute__((weak, alias("__cg_comp_solid_destination_in"))); +cg_weak_alias(cg_comp_solid_destination_in); static void __cg_comp_solid_destination_out(uint32_t * dst, int len, uint32_t color, uint32_t alpha) { @@ -1652,7 +1692,7 @@ static void __cg_comp_solid_destination_out(uint32_t * dst, int len, uint32_t co for(int i = 0; i < len; i++) dst[i] = CG_BYTE_MUL(dst[i], a); } -extern __typeof(__cg_comp_solid_destination_out) cg_comp_solid_destination_out __attribute__((weak, alias("__cg_comp_solid_destination_out"))); +cg_weak_alias(cg_comp_solid_destination_out); static void __cg_comp_source(uint32_t * dst, int len, uint32_t * src, uint32_t alpha) { @@ -1667,7 +1707,7 @@ static void __cg_comp_source(uint32_t * dst, int len, uint32_t * src, uint32_t a dst[i] = interpolate_pixel(src[i], alpha, dst[i], ialpha); } } -extern __typeof(__cg_comp_source) cg_comp_source __attribute__((weak, alias("__cg_comp_source"))); +cg_weak_alias(cg_comp_source); static void __cg_comp_source_over(uint32_t * dst, int len, uint32_t * src, uint32_t alpha) { @@ -1696,7 +1736,7 @@ static void __cg_comp_source_over(uint32_t * dst, int len, uint32_t * src, uint3 } } } -extern __typeof(__cg_comp_source_over) cg_comp_source_over __attribute__((weak, alias("__cg_comp_source_over"))); +cg_weak_alias(cg_comp_source_over); static void __cg_comp_destination_in(uint32_t * dst, int len, uint32_t * src, uint32_t alpha) { @@ -1716,7 +1756,7 @@ static void __cg_comp_destination_in(uint32_t * dst, int len, uint32_t * src, ui } } } -extern __typeof(__cg_comp_destination_in) cg_comp_destination_in __attribute__((weak, alias("__cg_comp_destination_in"))); +cg_weak_alias(cg_comp_destination_in); static void __cg_comp_destination_out(uint32_t * dst, int len, uint32_t * src, uint32_t alpha) { @@ -1736,7 +1776,7 @@ static void __cg_comp_destination_out(uint32_t * dst, int len, uint32_t * src, u } } } -extern __typeof(__cg_comp_destination_out) cg_comp_destination_out __attribute__((weak, alias("__cg_comp_destination_out"))); +cg_weak_alias(cg_comp_destination_out); typedef void (*cg_comp_solid_function_t)(uint32_t * dst, int len, uint32_t color, uint32_t alpha); static const cg_comp_solid_function_t cg_comp_solid_map[] = { diff --git a/libmui/mui/cg.h b/libmui/src/cg.h similarity index 100% rename from libmui/mui/cg.h rename to libmui/src/cg.h diff --git a/libmui/mui/mui.c b/libmui/src/mui.c similarity index 93% rename from libmui/mui/mui.c rename to libmui/src/mui.c index f1d11de..edb5a4f 100644 --- a/libmui/mui/mui.c +++ b/libmui/src/mui.c @@ -178,29 +178,34 @@ mui_handle_event( break; } else { /* We can't use the REVERSE_SAFE macro here, as the window - * list can change quite a bit, especially when menus are involved*/ - mui_window_t *w, *prev; + * list can change quite a bit, especially when menus are + * involved */ + mui_window_t *w; w = TAILQ_LAST(&ui->windows, windows); - while (w) { + int done = 0; + while (w && !done) { mui_window_lock(w); - int done = 0; + // in case 'prev' gets deleted, keep a ref on it. + mui_window_ref_t prev = {}; + mui_window_ref(&prev, TAILQ_PREV(w, windows, self), + FCC('H', 'O', 'L', 'D')); if ((res = mui_window_handle_mouse(w, ev))) { if (ev->modifiers & MUI_MODIFIER_EVENT_TRACE) printf(" window:%s handled it\n", w->title); done = 1; } - prev = TAILQ_PREV(w, windows, self); - mui_window_unlock(w); - if (done) - break; - w = prev; + mui_window_unlock(w); // COULD delete window here + w = prev.window; // this might have been NULLed + mui_window_deref(&prev); } } if (ev->modifiers & MUI_MODIFIER_EVENT_TRACE) if (!res) printf(" no window handled it\n"); } break; + default: + break; } return res; } @@ -236,7 +241,7 @@ mui_event_match_key( return true; } -uint8_t +mui_timer_id_t mui_timer_register( mui_t *ui, mui_timer_p cb, @@ -245,21 +250,21 @@ mui_timer_register( { if (ui->timer.map == (uint64_t)-1L) { fprintf(stderr, "%s ran out of timers\n", __func__); - return -1; + return MUI_TIMER_NONE; } - //printf("%s: delay %d\n", __func__, delay); - int ti = ffsl(~ui->timer.map) - 1; + mui_timer_id_t ti = __builtin_ffsl(~ui->timer.map) - 1; +// printf("%s:%d delay %d\n", __func__, ti, delay); ui->timer.map |= 1 << ti; ui->timer.timers[ti].cb = cb; ui->timer.timers[ti].param = param; ui->timer.timers[ti].when = mui_get_time() + delay; - return 0; + return ti; } mui_time_t mui_timer_reset( struct mui_t * ui, - uint8_t id, + mui_timer_id_t id, mui_timer_p cb, mui_time_t delay) { @@ -267,7 +272,7 @@ mui_timer_reset( return 0; if (!(ui->timer.map & (1L << id)) || ui->timer.timers[id].cb != cb) { - // printf("%s: timer %d not active\n", __func__, id); + // printf("%s:%d not active\n", __func__, id); return 0; } mui_time_t res = 0; @@ -277,7 +282,7 @@ mui_timer_reset( ui->timer.timers[id].when = now + delay; if (delay == 0) { ui->timer.map &= ~(1L << id); - // printf("%s: timer %d removed\n", __func__, id); + // printf("%s: %d removed\n", __func__, id); } return res; } @@ -289,7 +294,7 @@ mui_timers_run( uint64_t now = mui_get_time(); uint64_t map = ui->timer.map; while (map) { - int ti = ffsl(map) - 1; + int ti = __builtin_ffsl(map) - 1; map &= ~(1 << ti); if (ui->timer.timers[ti].when > now) continue; diff --git a/libmui/mui/mui.h b/libmui/src/mui.h similarity index 83% rename from libmui/mui/mui.h rename to libmui/src/mui.h index 045ddef..73f0828 100644 --- a/libmui/mui/mui.h +++ b/libmui/src/mui.h @@ -18,7 +18,11 @@ #include #include "c2_arrays.h" -#if 0 +#ifdef __wasm__ +typedef unsigned int uint; +#endif + +#if 0 // only use to debug queue macros; do not enable #define _KERNEL #define INVARIANTS #define QUEUE_MACRO_DEBUG_TRACE @@ -38,71 +42,65 @@ * endianess of them makes it a pain to do a printf() with them, this is why * the values are reversed here. */ -#ifndef FCC +#include #define FCC(_a,_b,_c,_d) (((_d)<<24)|((_c)<<16)|((_b)<<8)|(_a)) -#endif +/* These are made to allow FCC to have a numerical index, this is + * mostly used for radio button, menu items and so on */ +#define FCC_MASK FCC(0xff,0xff,0xff,0) +/* number of bits to shift to get the fourth character of _fcc */ +#define FCC_SHIFT(_fcc) ((_fcc)>>(ffs(~FCC_MASK)-1) & 0xff) +/* extract the index number of a fcc of type abcX where X is '0' - '9' */ +#define FCC_INDEX(_fcc) (isdigit(FCC_SHIFT(_fcc)) ? \ + ((FCC_SHIFT(_fcc)) - '0') : 0) +#define FCC_INDEXED(_fcc, _idx) \ + ((_fcc & FCC_MASK) | ('0'+((_idx) & 0xff)) << (ffs(~FCC_MASK)-1)) -enum mui_event_e { +typedef enum mui_event_e { MUI_EVENT_KEYUP = 0, MUI_EVENT_KEYDOWN, - MUI_EVENT_TEXT, // UTF8 sequence MUI_EVENT_BUTTONUP, MUI_EVENT_BUTTONDOWN, MUI_EVENT_BUTTONDBL, // double click MUI_EVENT_WHEEL, MUI_EVENT_DRAG, // the following ones aren't supported yet + MUI_EVENT_TEXT, // UTF8 sequence [TODO] MUI_EVENT_MOUSEENTER, MUI_EVENT_MOUSELEAVE, MUI_EVENT_RESIZE, MUI_EVENT_CLOSE, + MUI_EVENT_COUNT, // left, middle, right buttons for clicks MUI_EVENT_BUTTON_MAX = 3, -}; +} mui_event_e; -enum mui_key_e { +typedef enum mui_key_e { + // these are ASCII MUI_KEY_ESCAPE = 0x1b, MUI_KEY_SPACE = 0x20, MUI_KEY_RETURN = 0x0d, MUI_KEY_TAB = 0x09, MUI_KEY_BACKSPACE = 0x08, - MUI_KEY_LEFT = 0x80, - MUI_KEY_UP, - MUI_KEY_RIGHT, - MUI_KEY_DOWN, - MUI_KEY_INSERT, - MUI_KEY_DELETE, - MUI_KEY_HOME, - MUI_KEY_END, - MUI_KEY_PAGEUP, - MUI_KEY_PAGEDOWN, + // these are not ASCII + MUI_KEY_LEFT = 0x80, MUI_KEY_UP, MUI_KEY_RIGHT, MUI_KEY_DOWN, + MUI_KEY_INSERT, MUI_KEY_DELETE, + MUI_KEY_HOME, MUI_KEY_END, + MUI_KEY_PAGEUP, MUI_KEY_PAGEDOWN, MUI_KEY_MODIFIERS = 0x90, MUI_KEY_LSHIFT = MUI_KEY_MODIFIERS, MUI_KEY_RSHIFT, - MUI_KEY_LCTRL, - MUI_KEY_RCTRL, - MUI_KEY_LALT, - MUI_KEY_RALT, - MUI_KEY_LSUPER, - MUI_KEY_RSUPER, + MUI_KEY_LCTRL, MUI_KEY_RCTRL, + MUI_KEY_LALT, MUI_KEY_RALT, + MUI_KEY_LSUPER, MUI_KEY_RSUPER, MUI_KEY_CAPSLOCK, MUI_KEY_MODIFIERS_LAST, - MUI_KEY_F1 = 0x100, - MUI_KEY_F2, - MUI_KEY_F3, - MUI_KEY_F4, - MUI_KEY_F5, - MUI_KEY_F6, - MUI_KEY_F7, - MUI_KEY_F8, - MUI_KEY_F9, - MUI_KEY_F10, - MUI_KEY_F11, - MUI_KEY_F12, -}; + MUI_KEY_F1 = 0x100, MUI_KEY_F2, MUI_KEY_F3, MUI_KEY_F4, + MUI_KEY_F5, MUI_KEY_F6, MUI_KEY_F7, MUI_KEY_F8, + MUI_KEY_F9, MUI_KEY_F10,MUI_KEY_F11,MUI_KEY_F12, +} mui_key_e; -enum mui_modifier_e { +typedef enum mui_modifier_e { MUI_MODIFIER_LSHIFT = (1 << (MUI_KEY_LSHIFT - MUI_KEY_MODIFIERS)), MUI_MODIFIER_RSHIFT = (1 << (MUI_KEY_RSHIFT - MUI_KEY_MODIFIERS)), MUI_MODIFIER_LCTRL = (1 << (MUI_KEY_LCTRL - MUI_KEY_MODIFIERS)), @@ -118,7 +116,7 @@ enum mui_modifier_e { MUI_MODIFIER_CTRL = (MUI_MODIFIER_LCTRL | MUI_MODIFIER_RCTRL), MUI_MODIFIER_ALT = (MUI_MODIFIER_LALT | MUI_MODIFIER_RALT), MUI_MODIFIER_SUPER = (MUI_MODIFIER_LSUPER | MUI_MODIFIER_RSUPER), -}; +} mui_modifier_e; /* * The following constants are in UTF8 format, and relate to glyphs in @@ -144,8 +142,9 @@ enum mui_modifier_e { #define MUI_GLYPH_CONTROL "" #define MUI_GLYPH_SHIFT "" #define MUI_GLYPH_TICK "" // tickmark for menus -#define MUI_GLYPH_SUBMENU "" // custom, for the hierarchical menus +#define MUI_GLYPH_SUBMENU "▶" // custom, for the hierarchical menus #define MUI_GLYPH_IIE "" // custom, IIe glyph +#define MUI_GLYPH_POPMARK "▼" // custom, popup menu marker /* These are also from Charcoal System font (added to the original) */ #define MUI_GLYPH_F1 "" #define MUI_GLYPH_F2 "" @@ -177,12 +176,12 @@ typedef uint64_t mui_time_t; * course, which allows the menu to detect key combos, first. */ typedef struct mui_event_t { - uint8_t type; + mui_event_e type; mui_time_t when; - uint32_t modifiers; + mui_modifier_e modifiers; union { struct key { - uint32_t key; + uint32_t key; // ASCII or mui_key_e bool up; } key; struct { @@ -222,8 +221,11 @@ typedef union mui_key_equ_t { (mui_key_equ_t){ .mod = (_mask), .key = (_key) } struct mui_t; +struct mui_control_t; +struct mui_window_t; -/* + +/*! * References allows arbitrary code to keep a 'handle' on either * a window or a control. This is used for example to keep track of * the currently focused control. @@ -257,6 +259,11 @@ typedef struct mui_ref_t { mui_deref_p deref; } _mui_ref_t; // this is not a 'user' type. +/* + * Window and Control references + * While these two count technically be a union, I've deciced for separate + * types to enforce the type checking. + */ typedef struct mui_window_ref_t { _mui_ref_t ref; struct mui_window_t * window; @@ -267,7 +274,13 @@ typedef struct mui_control_ref_t { struct mui_control_t * control; } mui_control_ref_t; -// if 'ref' is NULL a new one is allocated, will be freed on deref() +/*! + * Initializes a reference to 'control', with the (optional) kind. + * if 'ref' is NULL a new reference is allocated and returned, will be + * freed on deref(). + * 'kind' is an optional arbitrary value that can be used to identify + * the reference, it has no meaning to the library. + */ mui_control_ref_t * mui_control_ref( mui_control_ref_t * ref, @@ -276,7 +289,13 @@ mui_control_ref( void mui_control_deref( mui_control_ref_t * ref); -// if 'ref' is NULL a new one is allocated, will be freed on deref() +/*! + * Initializes a reference to 'window', with the (optional) kind. + * if 'ref' is NULL a new reference is allocated and returned, will be + * freed on deref(). + * 'kind' is an optional arbitrary value that can be used to identify + * the reference, it has no meaning to the library. + */ mui_window_ref_t * mui_window_ref( mui_window_ref_t * ref, @@ -288,7 +307,9 @@ mui_window_deref( typedef struct mui_listbox_elem_t { uint32_t disabled : 1; - char icon[8]; + // currently this is a UTF8 string using the 'icons' font + char icon[8]; // UTF8 icon + // default 'LDEF' is to draw the 'elem' string void * elem; // char * or... ? } mui_listbox_elem_t; @@ -316,39 +337,43 @@ typedef bool (*mui_wdef_p)( uint8_t what, void * param); enum mui_cdef_e { - MUI_CDEF_INIT = 0, - MUI_CDEF_DISPOSE, - MUI_CDEF_DRAW, - MUI_CDEF_EVENT, - MUI_CDEF_SET_STATE, - MUI_CDEF_SET_VALUE, - MUI_CDEF_SET_TITLE, + MUI_CDEF_INIT = 0, // param is NULL + MUI_CDEF_DISPOSE, // param is NULL + MUI_CDEF_DRAW, // param is mui_drawable_t* + MUI_CDEF_EVENT, // param is mui_event_t* + MUI_CDEF_SET_STATE, // param is int* + MUI_CDEF_SET_VALUE, // param is int* + MUI_CDEF_SET_FRAME, // param is c2_rect_t* + MUI_CDEF_SET_TITLE, // param is char * (utf8) // Used when hot-key is pressed, change control value // to simulate a click MUI_CDEF_SELECT, // used when a window is selected, to set the focus to the // first control that can accept it - MUI_CDEF_ACTIVATE, // param is int* with 0,1 + MUI_CDEF_FOCUS, // param is int* with 0,1 + MUI_CDEF_CAN_FOCUS,// param is NULL, return true or false }; typedef bool (*mui_cdef_p)( struct mui_control_t * c, uint8_t what, void * param); + +/* This is currently unused */ typedef void (*mui_ldef_p)( struct mui_control_t * c, uint32_t elem_index, struct mui_listbox_elem_t * elem); -/* +/*! * Timer callback definition. Behaves in a pretty standard way; the timer * returns 0 to be cancelled (for one shot timers for example) or return - * the delay to the next call. + * the delay to the next call (that will be added to 'now' to get the next) */ typedef mui_time_t (*mui_timer_p)( struct mui_t * mui, mui_time_t now, void * param); -/* +/*! * Actions are the provided way to add custom response to events for the * application; action handlers are called for a variety of things, from clicks * in controls, to menu selections, to window close etc. @@ -358,7 +383,7 @@ typedef mui_time_t (*mui_timer_p)( * the 'what' action (hopefully documented with that action constant) * * the 'cb_param' is specific to this action function pointer and is passed as - * is to the callback. + * is to the callback, this is the pointer you pass to mui_window_add_action() */ typedef int (*mui_window_action_p)( struct mui_window_t * win, @@ -391,8 +416,11 @@ struct cg_surface_t; struct cg_ctx_t; /* - * Describes a pixmap. Currently only used for the screen destination pixels. - * And really, only bpp:32 for ARGB is supported. + * Describes a pixmap. + * And really, only bpp:32 for ARGB is supported if you want to use 'cg' to draw + * on it, + * 8bpp is also used for alpha masks, in which case only the pixman API is used. + * (Alpha mask is used for text rendering) */ typedef struct mui_pixmap_t { uint8_t * pixels; @@ -406,29 +434,45 @@ typedef pixman_region32_t mui_region_t; DECLARE_C_ARRAY(mui_region_t, mui_clip_stack, 2); /* - * The Drawable is a drawing context -- currently there's only one for the - * whole screen, but technically we could have several. The important feature + * The Drawable is a drawing context. The important feature * of this is that it keeps a context for the pixman library destination * image, AND also the context for the 'cg' vectorial library. + * * Furthermore it keeps track of a stack of clipping rectangles, and is able * to 'sync' the current clipping area for either (or both) cg and libpixman. * * Important note: the cg vectorial library coordinate system is placed on the * space *between* pixels, ie, if you moveto(1,1) and draw a line down, you - * will light up pixels in columns zero AND one. This differs significantly from - * for example, pixman that is uses pixel coordinates on hard pixels. + * will light up pixels in columns zero AND one (at half transparency). + * This differs significantly from for example, pixman that is uses pixel + * coordinates on hard pixels. + * * It's worth remembering as if you draw for example around the border of a * control, it will very likely be 'clipped' somewhat because half the pixels * are technically outside the control bounding/clipping rectangle. * You can easily adjust for this by adding 0.5 to the coordinates, if you * require it. + * + * Other imporant note: The clipping stack is only converted to pixman/cg when + * the client code asks for the context. So you must make sure not to 'cache' + * the context too early, otherwise the clipping won't work. + * Bad: + * struct cg_t * cg = mui_drawable_get_cg(dr); + * mui_drawable_clip_push(dr, &r); + * ... + * mui_drawable_clip_pop(dr); + * Good: + * mui_drawable_clip_push(dr, &r); + * struct cg_t * cg = mui_drawable_get_cg(dr); + * ... + * mui_drawable_clip_pop(dr); */ typedef struct mui_drawable_t { mui_pixmap_t pix; // *has* to be first in struct void * _pix_hash; // used to detect if pix has changed struct cg_surface_t * cg_surface; - struct cg_ctx_t * cg; - union pixman_image * pixman; // (try) not to use these directly + struct cg_ctx_t * cg; // Do not to use these directly + union pixman_image * pixman; // Do not to use these directly uint pixman_clip_dirty: 1, cg_clip_dirty : 1, dispose_pixels : 1, @@ -439,7 +483,7 @@ typedef struct mui_drawable_t { c2_pt_t size; uint id, kind; } texture; - // (default) position in destination when drawing + // (default) position in destination when drawing (optional) c2_pt_t origin; mui_clip_stack_t clip; } mui_drawable_t; @@ -450,9 +494,9 @@ DECLARE_C_ARRAY(mui_drawable_t *, mui_drawable_array, 4); /* * Drawable related */ -/* create a new mui_draware of size w x h, bpp depth. +/* create a new mui_drawable of size w x h, bpp depth. * Optionally allocate the pixels if pixels is NULL. Allocated pixels - * are not cleared. */ + * are not cleared to white/zero. */ mui_drawable_t * mui_drawable_new( c2_pt_t size, @@ -606,11 +650,12 @@ typedef enum mui_text_e { MUI_TEXT_ALIGN_TOP = 0, MUI_TEXT_ALIGN_MIDDLE = (MUI_TEXT_ALIGN_CENTER << 2), MUI_TEXT_ALIGN_BOTTOM = (MUI_TEXT_ALIGN_RIGHT << 2), - MUI_TEXT_ALIGN_COMPACT = (1 << 5), // compact line spacing + MUI_TEXT_ALIGN_FULL = (1 << 5), + MUI_TEXT_ALIGN_COMPACT = (1 << 6), // compact line spacing MUI_TEXT_DEBUG = (1 << 7), MUI_TEXT_STYLE_BOLD = (1 << 8), // Synthetic (ugly) bold MUI_TEXT_STYLE_ULINE = (1 << 9), // Underline - MUI_TEXT_STYLE_NARROW = (1 << 10),// Syntheric narrow + MUI_TEXT_STYLE_NARROW = (1 << 10),// Synthetic narrow MUI_TEXT_FLAGS_COUNT = 11, } mui_text_e; @@ -644,6 +689,7 @@ typedef struct mui_glyph_t { } mui_glyph_t; DECLARE_C_ARRAY(mui_glyph_t, mui_glyph_array, 8, + uint line_break : 1; int x, y, t, b; float w;); DECLARE_C_ARRAY(mui_glyph_array_t, mui_glyph_line_array, 8, uint margin_left, margin_right, // minimum x, and max width @@ -652,7 +698,7 @@ DECLARE_C_ARRAY(mui_glyph_array_t, mui_glyph_line_array, 8, /* * Measure a text string, return the number of lines, and each glyphs * position already aligned to the MUI_TEXT_ALIGN_* flags. - * Note that the 'compact' and 'narrow' flags are used here, + * Note that the 'compact', 'narrow' flags are used here, * the 'compact' flag is used to reduce the line spacing, and the * 'narrow' flag is used to reduce the advance between glyphs. */ @@ -668,7 +714,7 @@ mui_font_measure( * to be used exclusively with mui_font_measure. * Draw the lines and glyphs returned by mui_font_measure, with the * given color and flags. - * The significan flags here are no longer the text aligment, but + * The significant flags here are no longer the text aligment, but * how to render them: * + MUI_TEXT_STYLE_BOLD will draw each glyphs twice, offset by 1 pixel * + MUI_TEXT_STYLE_ULINE will draw a line under the text glyphs, unless @@ -689,12 +735,12 @@ mui_font_measure_clear( enum mui_window_layer_e { - MUI_WINDOW_LAYER_NORMAL = 0, - MUI_WINDOW_LAYER_MODAL = 3, - MUI_WINDOW_LAYER_ALERT = 5, - MUI_WINDOW_LAYER_TOP = 15, + MUI_WINDOW_LAYER_NORMAL = 0, + MUI_WINDOW_LAYER_MODAL = 3, + MUI_WINDOW_LAYER_ALERT = 5, + MUI_WINDOW_LAYER_TOP = 15, // Menubar and Menus (popups) are also windows - MUI_WINDOW_MENUBAR_LAYER = MUI_WINDOW_LAYER_TOP - 1, + MUI_WINDOW_MENUBAR_LAYER = MUI_WINDOW_LAYER_TOP - 1, MUI_WINDOW_MENU_LAYER, }; @@ -743,6 +789,7 @@ typedef struct mui_window_t { uint hidden: 1, disposed : 1, layer : 4, + style: 4, // specific to the WDEF hit_part : 8; } flags; c2_pt_t click_loc; @@ -781,8 +828,7 @@ mui_window_create( uint32_t instance_size); // Dispose of a window and it's content (controls). /* - * Note: if an action is in progress the window is not freed immediately - * but added to the zombie list, and freed when the action is done. + * Note: if the window is 'locked' the window is not freed immediately. * This is to prevent re-entrance problems. This allows window actions to * delete their own window without crashing. */ @@ -807,13 +853,13 @@ mui_window_front( bool mui_window_select( mui_window_t * win); -// call the window action callback, if any +// call the window action callback(s), if any void mui_window_action( mui_window_t * c, uint32_t what, void * param ); -// add an action callback for this window +// Add an action callback for this window void mui_window_set_action( mui_window_t * c, @@ -845,14 +891,15 @@ typedef struct mui_menu_item_t { uint32_t index: 9; uint32_t uid; char * title; - // curertnly only supported for menu titles + // currently only supported for menu titles const uint32_t * color_icon; // optional, ARGB colors char mark[8]; // UTF8 -- Charcoal char icon[8]; // UTF8 -- Wider, icon font char kcombo[16]; // UTF8 -- display only mui_key_equ_t key_equ; // keystroke to select this item struct mui_menu_item_t * submenu; - c2_pt_t location; // calculated by menu creation code + c2_coord_t location; // calculated by menu creation code + c2_coord_t height; } mui_menu_item_t; /* @@ -891,9 +938,14 @@ mui_menubar_get( /* * Add a menu to the menubar. 'items' is an array of mui_menu_item_t * terminated by an element with a NULL title. + * * Note: The array is NOT const, it will be tweaked for storing items * position, it can also be tweaked to set/reset the disabled state, * check marks etc + * + * Once created, you can do a mui_popupmenu_get_items() to get the array, + * modify it (still make sure there is a NULL item at the end) then + * call mui_popupmenu_prepare() to update the menu. */ struct mui_control_t * mui_menubar_add_simple( @@ -1003,6 +1055,10 @@ void mui_control_inval( mui_control_t * c ); void +mui_control_set_frame( + mui_control_t * c, + c2_rect_t * frame ); +void mui_control_action( mui_control_t * c, uint32_t what, @@ -1034,6 +1090,22 @@ void mui_control_set_title( mui_control_t * c, const char * text ); +/* Sets the focus to control 'c' in that window, return true if that + * control was able to take the focus, or false if it wasn't (for example any + * control that are not focusable will return false) + */ +bool +mui_control_set_focus( + mui_control_t * c ); +/* Returns true if the control has the focus */ +bool +mui_control_has_focus( + mui_control_t * c ); +/* Switch focus to the next/previous control in the window */ +mui_control_t * +mui_control_switch_focus( + mui_window_t * win, + int dir ); /* Drawable control is just an offscreen buffer (icon, pixel view) */ mui_control_t * @@ -1100,11 +1172,19 @@ mui_textedit_set_selection( uint start, uint end); +/* Page step and line step are optional, they default to '30' pixels and + * the 'visible' area of the scrollbar, respectively. + * If you want to for example have a scrollbar that scrolls by 5 when you + * click the arrows, and by 20 when you click the bar, you would set the + * line_step to 5, and the page_step to 20. + */ mui_control_t * mui_scrollbar_new( mui_window_t * win, c2_rect_t frame, - uint32_t uid ); + uint32_t uid, + uint32_t line_step, + uint32_t page_step); uint32_t mui_scrollbar_get_max( mui_control_t * c); @@ -1128,16 +1208,23 @@ mui_listbox_prepare( mui_listbox_elems_t * mui_listbox_get_elems( mui_control_t * c); + mui_control_t * mui_separator_new( mui_window_t * win, c2_rect_t frame); +/* Popup menu control. + * flags are MUI_TEXT_ALIGN_* -- however this corresponds to the margins + * of the popup control itself when placed into it's 'frame' -- the + * popup will be placed left,right,center of the frame rectangle depending. + */ mui_control_t * mui_popupmenu_new( mui_window_t * win, c2_rect_t frame, const char * title, - uint32_t uid); + uint32_t uid, + uint32_t flags); mui_menu_items_t * mui_popupmenu_get_items( mui_control_t * c); @@ -1229,7 +1316,10 @@ enum mui_time_e { mui_time_t mui_get_time(); -#define MUI_TIMER_COUNT 64 +#define MUI_TIMER_COUNT 64 +#define MUI_TIMER_NONE 0xff + +typedef uint8_t mui_timer_id_t; typedef struct mui_timer_group_t { uint64_t map; @@ -1242,12 +1332,13 @@ typedef struct mui_timer_group_t { /* * Register 'cb' to be called after 'delay'. Returns a timer id (0 to 63) - * or 0xff if no timer is available. The timer function cb can return 0 for a - * one shot timer, or another delay that will be added to the current stamp - * for a further call of the timer. + * or MUI_TIMER_NONE if no timer is available. + * The timer function cb can return 0 for a one shot timer, or another + * delay that will be added to the current stamp for a further call + * of the timer. * 'param' will be also passed to the timer callback. */ -uint8_t +mui_timer_id_t mui_timer_register( struct mui_t * ui, mui_timer_p cb, @@ -1262,7 +1353,7 @@ mui_timer_register( mui_time_t mui_timer_reset( struct mui_t * ui, - uint8_t id, + mui_timer_id_t id, mui_timer_p cb, mui_time_t delay); @@ -1295,7 +1386,7 @@ typedef struct mui_t { mui_utf8_t clipboard; mui_timer_group_t timer; // only used by the text editor, as we can only have one carret - uint8_t carret_timer; + mui_timer_id_t carret_timer; char * pref_directory; /* optional */ } mui_t; diff --git a/libmui/mui/mui_alert.c b/libmui/src/mui_alert.c similarity index 100% rename from libmui/mui/mui_alert.c rename to libmui/src/mui_alert.c diff --git a/libmui/mui/mui_cdef_boxes.c b/libmui/src/mui_cdef_boxes.c similarity index 100% rename from libmui/mui/mui_cdef_boxes.c rename to libmui/src/mui_cdef_boxes.c diff --git a/libmui/mui/mui_cdef_buttons.c b/libmui/src/mui_cdef_buttons.c similarity index 93% rename from libmui/mui/mui_cdef_buttons.c rename to libmui/src/mui_cdef_buttons.c index a5de933..068036b 100644 --- a/libmui/mui/mui_cdef_buttons.c +++ b/libmui/src/mui_cdef_buttons.c @@ -40,18 +40,15 @@ mui_button_draw( cg_stroke(cg); c2_rect_inset(&f, BUTTON_INSET, BUTTON_INSET); } - mui_font_t * main = TAILQ_FIRST(&win->ui->fonts); + mui_font_t * main = mui_font_find(win->ui, "main"); stb_ttc_measure m = {}; mui_font_text_measure(main, c->title, &m); - int title_width = m.x1 - m.x0; - c2_rect_t title = f; - title.t -= 1; - title.r = title.l + title_width + 1; - title.b = title.t + m.ascent - m.descent; - c2_rect_offset(&title, -m.x0 + - (int)((c2_rect_width(&f) / 2) - (c2_rect_width(&title)) / 2), - (c2_rect_height(&f) / 2) - (c2_rect_height(&title) / 2)); + int title_width = m.x1;// - m.x0; + c2_rect_t title = C2_RECT_WH(0, 0, title_width, m.ascent - m.descent); + c2_rect_offset(&title, + f.l + ((c2_rect_width(&f) / 2) - (c2_rect_width(&title)) / 2), + f.t + (c2_rect_height(&f) / 2) - (c2_rect_height(&title) / 2)); mui_drawable_clip_push(dr, &f); cg = mui_drawable_get_cg(dr); c2_rect_t inner = f; @@ -65,8 +62,9 @@ mui_button_draw( // c2_rect_width(&title), c2_rect_height(&title)); cg_set_source_color(cg, &CG_COLOR(mui_control_color[c->state].frame)); cg_stroke(cg); + // offset for leading space mui_font_text_draw(main, dr, - C2_PT(title.l, title.t), c->title, strlen(c->title), + C2_PT(title.l - m.x0, title.t), c->title, strlen(c->title), mui_control_color[c->state].text); mui_drawable_clip_pop(dr); } @@ -197,6 +195,8 @@ mui_button_mouse( else mui_control_set_state(c, MUI_CONTROL_STATE_NORMAL); } break; + default: + break; } return true; } @@ -238,6 +238,8 @@ mui_cdef_button( case MUI_EVENT_BUTTONDOWN: { return mui_button_mouse(c, ev); } break; + default: + break; } } break; case MUI_CDEF_SELECT: { diff --git a/libmui/mui/mui_cdef_drawable.c b/libmui/src/mui_cdef_drawable.c similarity index 100% rename from libmui/mui/mui_cdef_drawable.c rename to libmui/src/mui_cdef_drawable.c diff --git a/libmui/mui/mui_cdef_listbox.c b/libmui/src/mui_cdef_listbox.c similarity index 88% rename from libmui/mui/mui_cdef_listbox.c rename to libmui/src/mui_cdef_listbox.c index 9b19824..8c2c206 100644 --- a/libmui/mui/mui_cdef_listbox.c +++ b/libmui/src/mui_cdef_listbox.c @@ -47,7 +47,7 @@ mui_listbox_draw( c2_rect_offset(&f, win->content.l, win->content.t); struct cg_ctx_t * cg = mui_drawable_get_cg(dr); - cg_set_line_width(cg, 1); + cg_set_line_width(cg, mui_control_has_focus(c) ? 2 : 1); cg_set_source_color(cg, &CG_COLOR(mui_control_color[c->state].frame)); cg_rectangle(cg, f.l, f.t, c2_rect_width(&f), c2_rect_height(&f)); @@ -60,8 +60,8 @@ mui_listbox_draw( cg = mui_drawable_get_cg(dr); mui_listbox_control_t *lb = (mui_listbox_control_t *)c; uint32_t top_element = lb->scroll / lb->elem_height; - uint32_t bottom_element = top_element + 1 + - (c2_rect_height(&f) / lb->elem_height); + uint32_t bottom_element = (lb->scroll + c2_rect_height(&f) ) / + lb->elem_height; // printf("%s draw from %d to %d\n", __func__, top_element, bottom_element); mui_font_t * icons = mui_font_find(win->ui, "icon_small"); @@ -69,7 +69,7 @@ mui_listbox_draw( mui_color_t highlight = win->ui->color.highlight; for (uint ii = top_element; - ii < lb->elems.count && ii < bottom_element; ii++) { + ii < lb->elems.count && ii <= bottom_element; ii++) { c2_rect_t ef = f; ef.b = ef.t + lb->elem_height; c2_rect_offset(&ef, 0, ii * lb->elem_height - lb->scroll); @@ -79,7 +79,10 @@ mui_listbox_draw( cg_set_source_color(cg, &CG_COLOR(highlight)); cg_rectangle(cg, ef.l, ef.t, c2_rect_width(&ef), c2_rect_height(&ef)); - cg_fill(cg); + if (mui_control_has_focus(c)) + cg_fill(cg); + else + cg_stroke(cg); } ef.l += 8; mui_listbox_elem_t *e = &lb->elems.e[ii]; @@ -173,6 +176,18 @@ mui_listbox_key( case MUI_KEY_DOWN: delta = 1; break; case MUI_KEY_PAGEUP: delta = -page_size; break; case MUI_KEY_PAGEDOWN: delta = page_size; break; + case '\t': + mui_control_switch_focus(c->win, + ev->modifiers & MUI_MODIFIER_SHIFT ? -1 : 0); + break; +#if 0 + case 13: // enter + mui_control_action(c, MUI_CONTROL_ACTION_SELECT, + &lb->elems.e[c->value]); +#endif + break; + default: + break; } if (!delta) return false; @@ -208,13 +223,15 @@ mui_listbox_key( } static bool -mui_cdef_event( +mui_listbox_cdef_event( struct mui_control_t * c, mui_event_t *ev) { mui_listbox_control_t *lb = (mui_listbox_control_t *)c; switch (ev->type) { case MUI_EVENT_BUTTONDOWN: { + if (!mui_control_has_focus(c)) + mui_control_set_focus(c); c2_rect_t f = c->frame; c2_rect_offset(&f, c->win->content.l, c->win->content.t); // uint32_t page_size = (c2_rect_height(&f) / lb->elem_height)-1; @@ -245,9 +262,9 @@ mui_cdef_event( } return true; } break; - case MUI_EVENT_KEYUP: { - if (mui_listbox_key(c, ev)) - return true; + case MUI_EVENT_KEYDOWN: { + // printf("%s key %d\n", __func__, ev->key.key); + return mui_listbox_key(c, ev); } break; case MUI_EVENT_WHEEL: { // printf("%s wheel delta %d\n", __func__, ev->wheel.delta); @@ -263,6 +280,8 @@ mui_cdef_event( mui_control_inval(c); return true; } break; + default: + break; } return false; } @@ -276,6 +295,9 @@ mui_cdef_listbox( mui_listbox_control_t *lb = (mui_listbox_control_t *)c; switch (what) { case MUI_CDEF_INIT: + if (mui_window_isfront(c->win) && + c->win->control_focus.control == NULL) + mui_control_set_focus(c); break; case MUI_CDEF_DISPOSE: // strings for the elements are not owned by the listbox @@ -287,7 +309,14 @@ mui_cdef_listbox( } break; case MUI_CDEF_EVENT: { mui_event_t *ev = param; - return mui_cdef_event(c, ev); + return mui_listbox_cdef_event(c, ev); + } break; + case MUI_CDEF_CAN_FOCUS: { + return true; + } break; + case MUI_CDEF_FOCUS: { + // int activate = *(int*)param; + // printf("%s activate %d\n", __func__, activate); } break; } return false; @@ -331,7 +360,7 @@ mui_listbox_new( win, MUI_CONTROL_LISTBOX, mui_cdef_listbox, lbf, NULL, uid, sizeof(mui_listbox_control_t)); mui_listbox_control_t *lb = (mui_listbox_control_t *)c; - lb->scrollbar = mui_scrollbar_new(win, sb, 0); + lb->scrollbar = mui_scrollbar_new(win, sb, 0, 30, 0); mui_control_set_action(lb->scrollbar, mui_listbox_sbar_action, c); lb->elem_height = main->size + 2; @@ -359,7 +388,7 @@ mui_listbox_prepare( mui_scrollbar_set_max(lb->scrollbar, c2_rect_height(&content)); mui_control_set_value(lb->scrollbar, -lb->scroll); - mui_scrollbar_set_page(lb->scrollbar, c2_rect_height(&c->frame)); + // mui_scrollbar_set_page(lb->scrollbar, c2_rect_height(&c->frame)); } else { mui_scrollbar_set_max(lb->scrollbar, 0); mui_control_set_value(lb->scrollbar, 0); diff --git a/libmui/src/mui_cdef_scrollbar.c b/libmui/src/mui_cdef_scrollbar.c new file mode 100644 index 0000000..21e407e --- /dev/null +++ b/libmui/src/mui_cdef_scrollbar.c @@ -0,0 +1,517 @@ +/* + * mui_cdef_scrollbar.c + * + * Copyright (C) 2023 Michel Pollet + * + * SPDX-License-Identifier: MIT + */ + +#include +#include + +#include "mui.h" +#include "cg.h" + +enum { + MUI_CONTROL_H_SCROLL = 0, + MUI_CONTROL_V_SCROLL +}; + +extern const mui_control_color_t mui_control_color[MUI_CONTROL_STATE_COUNT]; + +enum mui_sb_part_e { + MUI_SB_PART_FRAME = 0, + MUI_SB_PART_UP, // aka MUI_SB_PART_LEFT + MUI_SB_PART_DOWN, // aka MUI_SB_PART_RIGHT + MUI_SB_PART_PAGEUP, // aka MUI_SB_PART_PAGELEFT + MUI_SB_PART_PAGEDOWN, // aka MUI_SB_PART_PAGERIGHT + MUI_SB_PART_THUMB, + MUI_SB_PART_THUMBROW, + MUI_SB_PART_COUNT, +}; + +typedef struct mui_scrollbar_control_t { + mui_control_t control; + uint32_t visible, page_step, line_step; + uint32_t max; + c2_pt_t drag_offset; + uint32_t saved_value; // to handle 'snapback' + uint8_t click_hold_timer; + c2_rect_t parts[MUI_SB_PART_COUNT]; +} mui_scrollbar_control_t; + +static void +mui_scrollbar_make_rects( + mui_control_t * c ) +{ + mui_scrollbar_control_t *sb = (mui_scrollbar_control_t *)c; + c2_rect_t * parts = sb->parts; + c2_rect_t f = c->frame; + c2_rect_offset(&f, c->win->content.l, c->win->content.t); + parts[MUI_SB_PART_FRAME] = f; + parts[MUI_SB_PART_THUMBROW] = f; + c2_rect_t part = f; + if (c->type == MUI_CONTROL_H_SCROLL) { + part.r = part.l + c2_rect_height(&part); + parts[MUI_SB_PART_UP] = part; + parts[MUI_SB_PART_THUMBROW].l = part.r; + part = f; + part.l = part.r - c2_rect_height(&part); + parts[MUI_SB_PART_DOWN] = part; + parts[MUI_SB_PART_THUMBROW].r = part.l; + } else { + part.b = part.t + c2_rect_width(&part); + parts[MUI_SB_PART_UP] = part; + parts[MUI_SB_PART_THUMBROW].t = part.b; + part = f; + part.t = part.b - c2_rect_width(&part); + parts[MUI_SB_PART_DOWN] = part; + parts[MUI_SB_PART_THUMBROW].b = part.t; + } + if (sb->max <= sb->visible) { + c2_rect_t z = {}; + if (c->type == MUI_CONTROL_H_SCROLL) + printf("%s ZEROYING max %d visible %d\n", __func__, sb->max, sb->visible); + parts[MUI_SB_PART_THUMB] = z; + parts[MUI_SB_PART_PAGEUP] = z; + parts[MUI_SB_PART_PAGEDOWN] = z; + parts[MUI_SB_PART_THUMBROW] = z; + return; + } + // thumb rectangle + part = parts[MUI_SB_PART_THUMBROW]; + uint32_t part_size; + if (c->type == MUI_CONTROL_H_SCROLL) + part_size = c2_rect_width(&part); + else + part_size = c2_rect_height(&part); + + float visible = sb->visible / (float)sb->max; + float thumb_size = visible * part_size; + if (thumb_size < 20) + thumb_size = 20; + float thumb_pos = c->value / ((float)sb->max - sb->visible); + float thumb_offset = 0.5 + thumb_pos * (part_size - thumb_size); + if (c->type == MUI_CONTROL_H_SCROLL) { +// printf("%s visible:%.2f ts: %.2f thumb_pos:%.2f thumb_offset:%.2f\n", +// __func__, visible, thumb_size, thumb_pos, thumb_offset); + part.r = part.l + thumb_size; + c2_rect_offset(&part, thumb_offset, 0); + if (part.r > parts[MUI_SB_PART_DOWN].l) + c2_rect_offset(&part, parts[MUI_SB_PART_DOWN].l - part.r, 0); + parts[MUI_SB_PART_THUMB] = part; + part = f; + part.l = parts[MUI_SB_PART_UP].r + 1; + part.r = parts[MUI_SB_PART_THUMB].l - 1; + parts[MUI_SB_PART_PAGEUP] = part; + part = f; + part.l = parts[MUI_SB_PART_THUMB].r + 1; + part.r = parts[MUI_SB_PART_DOWN].l - 1; + parts[MUI_SB_PART_PAGEDOWN] = part; + } else { + part.b = part.t + thumb_size; + c2_rect_offset(&part, 0, thumb_offset); + if (part.b > parts[MUI_SB_PART_DOWN].t) + c2_rect_offset(&part, 0, parts[MUI_SB_PART_DOWN].t - part.b); + parts[MUI_SB_PART_THUMB] = part; + part = f; + part.t = parts[MUI_SB_PART_UP].b + 1; + part.b = parts[MUI_SB_PART_THUMB].t - 1; + parts[MUI_SB_PART_PAGEUP] = part; + part = f; + part.t = parts[MUI_SB_PART_THUMB].b + 1; + part.b = parts[MUI_SB_PART_DOWN].t - 1; + parts[MUI_SB_PART_PAGEDOWN] = part; + } +} + +static void +mui_scrollbar_draw( + mui_window_t * win, + mui_control_t * c, + mui_drawable_t * dr ) +{ + mui_scrollbar_control_t *sb = (mui_scrollbar_control_t *)c; + c2_rect_t f = c->frame; + c2_rect_offset(&f, win->content.l, win->content.t); + + mui_scrollbar_make_rects(c); + struct cg_ctx_t * cg = mui_drawable_get_cg(dr); + cg_set_line_width(cg, 2); + + cg_rectangle(cg, f.l, f.t, + c2_rect_width(&f), c2_rect_height(&f)); + cg_set_source_color(cg, &CG_COLOR(mui_control_color[c->state].fill)); + cg_fill_preserve(cg); + cg_set_source_color(cg, &CG_COLOR(mui_control_color[c->state].frame)); + cg_stroke(cg); + + mui_font_t * icons = mui_font_find(win->ui, "icon_small"); + +// c2_rect_t parts[MUI_SB_PART_COUNT]; +// mui_scrollbar_make_rects(c, parts); + c2_rect_t * parts = sb->parts; + + mui_color_t contentFill = MUI_COLOR(0xa0a0a0ff); + mui_color_t decoColor = MUI_COLOR(0x666666ff); + + c2_rect_t pf; + pf = parts[MUI_SB_PART_UP]; + cg_rectangle(cg, pf.l, pf.t, + c2_rect_width(&pf), c2_rect_height(&pf)); + cg_set_source_color(cg, + c->flags.hit_part == MUI_SB_PART_UP ? + &CG_COLOR(decoColor) : + &CG_COLOR(mui_control_color[c->state].fill)); + cg_fill_preserve(cg); + cg_set_source_color(cg, &CG_COLOR(mui_control_color[c->state].frame)); + cg_stroke(cg); + + stb_ttc_measure m = {}; + char * icon; + icon = c->type == MUI_CONTROL_H_SCROLL ? "" : ""; + mui_font_text_measure(icons, icon, &m); + pf.l = pf.l + (c2_rect_width(&pf) - m.x1 - m.x0) / 2; + mui_font_text_draw(icons, dr, pf.tl, icon, 0, + mui_control_color[c->state].text); + + pf = parts[MUI_SB_PART_DOWN]; + cg_rectangle(cg, pf.l, pf.t, + c2_rect_width(&pf), c2_rect_height(&pf)); + cg_set_source_color(cg, + c->flags.hit_part == MUI_SB_PART_DOWN ? + &CG_COLOR(decoColor) : + &CG_COLOR(mui_control_color[c->state].fill)); + cg_fill_preserve(cg); + cg_set_source_color(cg, &CG_COLOR(mui_control_color[c->state].frame)); + cg_stroke(cg); + + icon = c->type == MUI_CONTROL_H_SCROLL ? "" : ""; + mui_font_text_measure(icons, icon, &m); + pf.l = pf.l + (c2_rect_width(&pf) - m.x1 - m.x0) / 2; + mui_font_text_draw(icons, dr, pf.tl, icon, 0, + mui_control_color[c->state].text); + + pf = parts[MUI_SB_PART_PAGEUP]; + if (c2_rect_isempty(&pf) == 0) { + cg_rectangle(cg, pf.l, pf.t, + c2_rect_width(&pf), c2_rect_height(&pf)); + cg_set_source_color(cg, + c->flags.hit_part == MUI_SB_PART_PAGEUP ? + &CG_COLOR(decoColor) : + &CG_COLOR(contentFill)); + cg_fill(cg); + } + pf = parts[MUI_SB_PART_PAGEDOWN]; + if (c2_rect_isempty(&pf) == 0) { + cg_rectangle(cg, pf.l, pf.t, + c2_rect_width(&pf), c2_rect_height(&pf)); + cg_set_source_color(cg, + c->flags.hit_part == MUI_SB_PART_PAGEDOWN ? + &CG_COLOR(decoColor) : + &CG_COLOR(contentFill)); + cg_fill(cg); + } + pf = parts[MUI_SB_PART_THUMB]; + if (c2_rect_isempty(&pf) == 0) { + cg_rectangle(cg, pf.l, pf.t, + c2_rect_width(&pf), c2_rect_height(&pf)); + cg_set_source_color(cg, + c->flags.hit_part == MUI_SB_PART_THUMB ? + &CG_COLOR(decoColor) : + &CG_COLOR(mui_control_color[c->state].fill)); + cg_fill_preserve(cg); + cg_set_source_color(cg, + &CG_COLOR(mui_control_color[c->state].frame)); + cg_stroke(cg); + } +} + +static void +_mui_scrollbar_scroll( + mui_control_t * c, + int32_t delta ) +{ + mui_scrollbar_control_t *sb = (mui_scrollbar_control_t *)c; + int32_t v = (int32_t)c->value + delta; + if (v < 0) + v = 0; + if (v > ((int32_t)sb->max - (int32_t)sb->visible)) + v = sb->max - sb->visible; + c->value = v; + mui_scrollbar_make_rects(c); + mui_control_inval(c); + mui_control_action(c, MUI_CONTROL_ACTION_VALUE_CHANGED, NULL); +} + + +static void +_mui_scrollbar_part_click( + mui_control_t * c ) +{ + mui_scrollbar_control_t *sb = (mui_scrollbar_control_t *)c; + int part = c->flags.hit_part % MUI_SB_PART_COUNT; + switch (part) { + case MUI_SB_PART_DOWN: + case MUI_SB_PART_UP: { + int32_t offset = sb->line_step ? sb->line_step : 30; + _mui_scrollbar_scroll(c, + part == MUI_SB_PART_UP ? -offset : offset); + } break; + case MUI_SB_PART_PAGEUP: + case MUI_SB_PART_PAGEDOWN: { + int32_t offset = sb->page_step ? sb->page_step : sb->visible; + _mui_scrollbar_scroll(c, + part == MUI_SB_PART_PAGEUP ? -offset : offset); + } break; + case MUI_SB_PART_THUMB: + mui_control_inval(c); + break; + } +} + +static mui_time_t +_mui_scrollbar_click_hold_timer_cb( + struct mui_t * mui, + mui_time_t now, + void * param) +{ + mui_control_t * c = param; + + _mui_scrollbar_part_click(c); + + return 100 * MUI_TIME_MS; +} + +static void +mui_scrollbar_thumb_drag( + mui_control_t * c, + c2_pt_t * where ) +{ + mui_scrollbar_control_t *sb = (mui_scrollbar_control_t *)c; + c2_rect_t * parts = sb->parts; + + int max_pixels; + uint32_t nv; + c2_rect_t nt = parts[MUI_SB_PART_THUMB]; + if (c->type == MUI_CONTROL_H_SCROLL) { + c2_rect_offset(&nt, + -(nt.l + parts[MUI_SB_PART_UP].r) + + where->x - sb->drag_offset.x, 0); + if (nt.l < 0) + c2_rect_offset(&nt, -nt.l, 0); + if (nt.r > parts[MUI_SB_PART_DOWN].l) + c2_rect_offset(&nt, parts[MUI_SB_PART_DOWN].l - nt.r, 0); + max_pixels = parts[MUI_SB_PART_DOWN].l - + parts[MUI_SB_PART_UP].r - + c2_rect_width(&nt); + nv = nt.l * (sb->max - sb->visible) / max_pixels; + } else { + c2_rect_offset(&nt, 0, + -(nt.t + parts[MUI_SB_PART_UP].b) + + where->y - sb->drag_offset.y); + if (nt.t < 0) + c2_rect_offset(&nt, 0, -nt.t); + if (nt.b > parts[MUI_SB_PART_DOWN].t) + c2_rect_offset(&nt, 0, parts[MUI_SB_PART_DOWN].t - nt.b); + max_pixels = parts[MUI_SB_PART_DOWN].t - + parts[MUI_SB_PART_UP].b - + c2_rect_height(&nt); + nv = nt.t * (sb->max - sb->visible) / max_pixels; + } + if (nv > (sb->max - sb->visible)) + nv = sb->max - sb->visible; + c->value = nv; + //printf("%s nv %3d visible %d max %d\n", __func__, nv, sb->visible, sb->max); + mui_control_inval(c); + mui_control_action(c, MUI_CONTROL_ACTION_VALUE_CHANGED, NULL); +} + +static bool +mui_scrollbar_mouse( + struct mui_control_t * c, + mui_event_t * ev) +{ + mui_scrollbar_control_t *sb = (mui_scrollbar_control_t *)c; + + mui_scrollbar_make_rects(c); + c2_rect_t * parts = sb->parts; + + switch (ev->type) { + case MUI_EVENT_BUTTONDOWN: { + for (int i = 1; i < MUI_SB_PART_COUNT; ++i) { + if (c2_rect_contains_pt(&parts[i], &ev->mouse.where)) { + c->flags.hit_part = i; + sb->drag_offset.x = ev->mouse.where.x - parts[i].l; + sb->drag_offset.y = ev->mouse.where.y - parts[i].t; + sb->saved_value = c->value; + break; + } + } + _mui_scrollbar_part_click(c); + if (c->flags.hit_part != MUI_SB_PART_THUMB) { + /* + * If the user clicks and holds, we want to keep scrolling, + * so keep a timer around that gets disabled later anyway + */ + sb->click_hold_timer = mui_timer_register(c->win->ui, + _mui_scrollbar_click_hold_timer_cb, c, 500 * MUI_TIME_MS); + } + // printf("%s hit part %d\n", __func__, c->flags.hit_part); + } break; + case MUI_EVENT_DRAG: { + if (!c->flags.hit_part) + break; + int part = c->flags.hit_part % MUI_SB_PART_COUNT; + c2_rect_t test_rect = parts[part]; + if (part == MUI_SB_PART_THUMB) + c2_rect_inset(&test_rect, -60, -60); + if (c2_rect_contains_pt(&test_rect, &ev->mouse.where)) { + c->flags.hit_part = part; + switch (part) { + case MUI_SB_PART_THUMB: + mui_scrollbar_thumb_drag(c, &ev->mouse.where); + break; + default: + if (sb->click_hold_timer == 0xff) + sb->click_hold_timer = mui_timer_register( + c->win->ui, + _mui_scrollbar_click_hold_timer_cb, + c, 500 * MUI_TIME_MS); + break; + } + } else { + if (sb->click_hold_timer != 0xff) { + mui_timer_reset(c->win->ui, + sb->click_hold_timer, + _mui_scrollbar_click_hold_timer_cb, 0); + sb->click_hold_timer = 0xff; + } + c->flags.hit_part = part + MUI_SB_PART_COUNT; + if (part == MUI_SB_PART_THUMB) { + c->value = sb->saved_value; + mui_control_inval(c); + mui_control_action(c, MUI_CONTROL_ACTION_VALUE_CHANGED, NULL); + } + } + } break; + case MUI_EVENT_BUTTONUP: { + if (sb->click_hold_timer != 0xff) { + mui_timer_reset(c->win->ui, + sb->click_hold_timer, + _mui_scrollbar_click_hold_timer_cb, 0); + sb->click_hold_timer = 0xff; + } + if (!c->flags.hit_part) + break; + mui_control_inval(c); + c->flags.hit_part = 0; + } break; + default: + break; + } + return true; +} + +static bool +mui_cdef_scrollbar( + struct mui_control_t * c, + uint8_t what, + void * param) +{ + mui_scrollbar_control_t *sb = (mui_scrollbar_control_t *)c; + switch (what) { + case MUI_CDEF_INIT: { + mui_scrollbar_make_rects(c); + sb->visible = c->type == MUI_CONTROL_H_SCROLL ? + c2_rect_width(&sb->parts[MUI_SB_PART_FRAME]) : + c2_rect_height(&sb->parts[MUI_SB_PART_FRAME]); + // printf("%s visible %d\n", __func__, sb->visible); + } break; + case MUI_CDEF_DISPOSE: + if (sb->click_hold_timer != 0xff) { + mui_timer_reset(c->win->ui, + sb->click_hold_timer, + _mui_scrollbar_click_hold_timer_cb, 0); + sb->click_hold_timer = 0xff; + } + break; + case MUI_CDEF_SET_FRAME: // inval is done by the caller + mui_scrollbar_make_rects(c); + break; + case MUI_CDEF_DRAW: { + mui_drawable_t * dr = param; + mui_scrollbar_draw(c->win, c, dr); + } break; + case MUI_CDEF_SET_VALUE: + mui_scrollbar_make_rects(c); + mui_control_inval(c); + break; + case MUI_CDEF_EVENT: { + // printf("%s event\n", __func__); + mui_event_t *ev = param; + switch (ev->type) { + case MUI_EVENT_BUTTONUP: + case MUI_EVENT_DRAG: + case MUI_EVENT_BUTTONDOWN: { + return mui_scrollbar_mouse(c, ev); + } break; + case MUI_EVENT_WHEEL: { + int offset = sb->line_step ? sb->line_step : 30; + _mui_scrollbar_scroll(c, ev->wheel.delta * offset); + return true; + } break; + default: + break; + } + } break; + } + return false; +} + +uint32_t +mui_scrollbar_get_max( + mui_control_t * c) +{ + mui_scrollbar_control_t *sb = (mui_scrollbar_control_t *)c; + return sb->max; +} +void +mui_scrollbar_set_max( + mui_control_t * c, + uint32_t max) +{ + mui_scrollbar_control_t *sb = (mui_scrollbar_control_t *)c; + sb->max = max; +// printf("%s max %3d visible %d\n", __func__, max, sb->visible); + mui_scrollbar_make_rects(c); + mui_control_inval(c); +} +void +mui_scrollbar_set_page( + mui_control_t * c, + uint32_t page) +{ + mui_scrollbar_control_t *sb = (mui_scrollbar_control_t *)c; + sb->page_step = page; + mui_control_inval(c); +} + +mui_control_t * +mui_scrollbar_new( + mui_window_t * win, + c2_rect_t frame, + uint32_t uid, + uint32_t line_step, + uint32_t page_step) +{ + mui_control_t * c = mui_control_new(win, + c2_rect_width(&frame) < c2_rect_height(&frame) ? + MUI_CONTROL_V_SCROLL : MUI_CONTROL_H_SCROLL, + mui_cdef_scrollbar, frame, NULL, uid, + sizeof(mui_scrollbar_control_t)); + mui_scrollbar_control_t *sb = (mui_scrollbar_control_t *)c; + sb->line_step = line_step; + sb->page_step = page_step; + return c; +} diff --git a/libmui/mui/mui_cdef_textedit.c b/libmui/src/mui_cdef_textedit.c similarity index 91% rename from libmui/mui/mui_cdef_textedit.c rename to libmui/src/mui_cdef_textedit.c index d943d26..60569fb 100644 --- a/libmui/mui/mui_cdef_textedit.c +++ b/libmui/src/mui_cdef_textedit.c @@ -49,12 +49,39 @@ enum { MUI_CONTROL_TEXTEDIT = FCC('T','e','a','c'), }; +#define D(_w) ; // _w + enum { MUI_TE_SELECTING_GLYPHS = 0, MUI_TE_SELECTING_WORDS, // MUI_TE_SELECTING_LINES, // TODO? }; +/* + * This describes a text edit action, either we insert some text at some position, + * or we delete some text at some position. + * These actions are queued in a TAILQ, so we can undo/redo them. + * The text is UTF8, and the position is a BYTE index in the text (not a glyph). + * + * We preallocate a fixed number of actions, and when we reach the limit, we + * start reusing the oldest ones. This limits the number of undo/redo actions + * to something sensible. + */ +typedef struct mui_te_action_t { + TAILQ_ENTRY(mui_te_action_t) self; + uint insert : 1; // if not insert, its a delete + uint32_t position, length; + mui_utf8_t text; +} mui_te_action_t; + +// action queue +typedef TAILQ_HEAD(mui_te_action_queue_t, mui_te_action_t) mui_te_action_queue_t; + +/* + * This describes the selection in the text-edit, it can either be a carret, + * or a selection of text. The selection is kept as a start and end glyph index, + * and the drawing code calculates the rectangles for the selection. + */ typedef struct mui_sel_t { uint carret: 1; // carret is visible (if sel.start == end) uint start, end; // glyph index in text @@ -127,7 +154,8 @@ _mui_textedit_carret_timer( mui_window_t *win = mui_window_front(mui); // printf("carret timer win %p focus %p\n", win, win->control_focus); - if (win && win->control_focus.control) { + if (win && win->control_focus.control && + win->control_focus.control->type == MUI_CONTROL_TEXTEDIT) { mui_textedit_control_t *te = (mui_textedit_control_t *)win->control_focus.control; te->sel.carret = !te->sel.carret; @@ -152,7 +180,6 @@ _mui_textedit_show_carret( } te->sel.carret = 1; _mui_textedit_refresh_sel(te, NULL); - } /* Return the line number, and glyph position in line a glyph index */ @@ -352,9 +379,12 @@ _mui_textedit_refresh_sel( sel = &te->sel; for (int i = 0; i < 3; i++) { c2_rect_t r = te->sel.e[i]; - if (i == 0 && te->sel.start == te->sel.end) + if (i == 0 && te->sel.start == te->sel.end) { c2_rect_inset(&r, -1, -1); - _mui_textedit_inval(te, r); +// printf("refresh_sel: carret %s\n", c2_rect_as_str(&r)); + } + if (!c2_rect_isempty(&r)) + _mui_textedit_inval(te, r); } } @@ -370,9 +400,9 @@ _mui_textedit_clamp_text_frame( c2_rect_t old = te->text_content; te->text_content.r = te->text_content.l + te->measure.margin_right; te->text_content.b = te->text_content.t + te->measure.height; - printf(" %s %s / %3dx%3d\n", __func__, + D(printf(" %s %s / %3dx%3d\n", __func__, c2_rect_as_str(&te->text_content), - c2_rect_width(&f), c2_rect_height(&f)); + c2_rect_width(&f), c2_rect_height(&f));) if (te->text_content.b < c2_rect_height(&f)) c2_rect_offset(&te->text_content, 0, c2_rect_height(&f) - te->text_content.b); @@ -385,8 +415,8 @@ _mui_textedit_clamp_text_frame( c2_rect_offset(&te->text_content, f.l - te->text_content.l, 0); if (c2_rect_equal(&te->text_content, &old)) return; - printf(" clamped TE from %s to %s\n", c2_rect_as_str(&old), - c2_rect_as_str(&te->text_content)); + D(printf(" clamped TE from %s to %s\n", c2_rect_as_str(&old), + c2_rect_as_str(&te->text_content));) mui_control_inval(&te->control); } @@ -405,15 +435,15 @@ _mui_textedit_ensure_carret_visible( return; c2_rect_t old = te->text_content; c2_rect_t r = te->sel.first; - printf("%s carret %s frame %s\n", __func__, - c2_rect_as_str(&r), c2_rect_as_str(&f)); + D(printf("%s carret %s frame %s\n", __func__, + c2_rect_as_str(&r), c2_rect_as_str(&f));) c2_rect_offset(&r, -te->text_content.l, -te->text_content.t); if (r.r < f.l) { - printf(" moved TE LEFT %d\n", -(f.l - r.r)); + D(printf(" moved TE LEFT %d\n", -(f.l - r.r));) c2_rect_offset(&te->text_content, -(f.l - r.l), 0); } if (r.l > f.r) { - printf(" moved TE RIGHT %d\n", -(r.l - f.r)); + D(printf(" moved TE RIGHT %d\n", -(r.l - f.r));) c2_rect_offset(&te->text_content, -(r.l - f.r), 0); } if (r.t < f.t) @@ -422,8 +452,8 @@ _mui_textedit_ensure_carret_visible( c2_rect_offset(&te->text_content, 0, r.b - f.b); if (c2_rect_equal(&te->text_content, &old)) return; - printf(" moved TE from %s to %s\n", c2_rect_as_str(&old), - c2_rect_as_str(&te->text_content)); + D(printf(" moved TE from %s to %s\n", c2_rect_as_str(&old), + c2_rect_as_str(&te->text_content));) _mui_textedit_clamp_text_frame(te); } @@ -560,7 +590,7 @@ _mui_textedit_select_signed( glyph_end = t; } - printf("%s %d:%d\n", __func__, glyph_start, glyph_end); +// printf("%s %d:%d\n", __func__, glyph_start, glyph_end); c2_rect_t f = te->control.frame; if (te->flags & MUI_CONTROL_TEXTBOX_FRAME) c2_rect_inset(&f, te->margin.x, te->margin.y); @@ -602,12 +632,13 @@ mui_textedit_draw( mui_drawable_clip_push(dr, &f); struct cg_ctx_t * cg = mui_drawable_get_cg(dr); if (te->flags & MUI_CONTROL_TEXTBOX_FRAME) { - cg_set_line_width(cg, 1); + cg_set_line_width(cg, mui_control_has_focus(c) ? 2 : 1); cg_set_source_color(cg, &CG_COLOR(mui_control_color[c->state].frame)); - cg_rectangle(cg, f.l, f.t, - c2_rect_width(&f), c2_rect_height(&f)); + cg_rectangle(cg, f.l + 0.5, f.t + 0.5, + c2_rect_width(&f)-1, c2_rect_height(&f)-1); cg_stroke(cg); } +// cg = mui_drawable_get_cg(dr); // this updates the cg clip too if (te->text.count <= 1) goto done; if (te->flags & MUI_CONTROL_TEXTBOX_FRAME) @@ -727,18 +758,9 @@ mui_textedit_mouse( case MUI_EVENT_BUTTONDOWN: { if (!c2_rect_contains_pt(&f, &ev->mouse.where)) break; - // if we aren't the focus, make us the focus - if (c != c->win->control_focus.control) { - mui_control_t * prev = c->win->control_focus.control; + if (!mui_control_has_focus(c)) + mui_control_set_focus(c); - mui_cdef_textedit(c, MUI_CDEF_ACTIVATE, &(int){0}); - mui_control_inval(c); - mui_cdef_textedit(prev, MUI_CDEF_ACTIVATE, &(int){1}); - mui_control_inval(prev); - mui_control_deref(&c->win->control_focus); - mui_control_ref(&c->win->control_focus, c, - FCC('T','e','a','c')); - } if (_mui_point_to_line_index(te, te->font, f, ev->mouse.where, &line, &index) == 0) { uint pos = _mui_line_index_to_glyph( @@ -764,8 +786,8 @@ mui_textedit_mouse( } te->click.start = te->sel.start; te->click.end = te->sel.end; - printf("DOWN line %2d index %3d pos:%3d\n", - line, index, pos); + D(printf("DOWN line %2d index %3d pos:%3d\n", + line, index, pos);) res = true; }; te->sel.carret = 0; @@ -774,7 +796,7 @@ mui_textedit_mouse( res = true; if (_mui_point_to_line_index(te, te->font, f, ev->mouse.where, &line, &index) == 0) { - printf("UP line %d index %d\n", line, index); + D(printf("UP line %d index %d\n", line, index);) } te->sel.carret = 1; _mui_textedit_refresh_sel(te, NULL); @@ -785,24 +807,24 @@ mui_textedit_mouse( if (te->flags & MUI_CONTROL_TEXTEDIT_VERTICAL) { if (ev->mouse.where.y > f.b) { te->text_content.tl.y -= ev->mouse.where.y - f.b; - printf("scroll down %3d\n", te->text_content.tl.y); + D(printf("scroll down %3d\n", te->text_content.tl.y);) _mui_textedit_clamp_text_frame(te); mui_control_inval(c); } else if (ev->mouse.where.y < f.t) { te->text_content.tl.y += f.t - ev->mouse.where.y; - printf("scroll up %3d\n", te->text_content.tl.y); + D(printf("scroll up %3d\n", te->text_content.tl.y);) _mui_textedit_clamp_text_frame(te); mui_control_inval(c); } } else { if (ev->mouse.where.x > f.r) { te->text_content.tl.x -= ev->mouse.where.x - f.r; - printf("scroll right %3d\n", te->text_content.tl.x); + D(printf("scroll right %3d\n", te->text_content.tl.x);) _mui_textedit_clamp_text_frame(te); mui_control_inval(c); } else if (ev->mouse.where.x < f.l) { te->text_content.tl.x += f.l - ev->mouse.where.x; - printf("scroll left %3d\n", te->text_content.tl.x); + D(printf("scroll left %3d\n", te->text_content.tl.x);) _mui_textedit_clamp_text_frame(te); mui_control_inval(c); } @@ -843,6 +865,8 @@ mui_textedit_mouse( } res = true; } break; + default: + break; } return res; } @@ -988,27 +1012,13 @@ mui_textedit_key( } } break; case '\t': { - // look for the next window control that is a text-edit (loop to - // start of necessary, and set it as the focus -- deactivate this one) - mui_control_t * next = c; - do { - next = TAILQ_NEXT(next, self); - if (!next) - next = TAILQ_FIRST(&c->win->controls); - if (next->cdef == mui_cdef_textedit) { - mui_cdef_textedit(c, MUI_CDEF_ACTIVATE, &(int){0}); - mui_control_inval(c); - mui_cdef_textedit(next, MUI_CDEF_ACTIVATE, &(int){1}); - mui_control_inval(next); - mui_control_deref(&c->win->control_focus); - mui_control_ref(&c->win->control_focus, next, - FCC('T','e','a','c')); - break; - } - } while (next != c); + mui_control_switch_focus(c->win, + ev->modifiers & MUI_MODIFIER_SHIFT ? -1 : 0); } break; default: printf("%s key 0x%x\n", __func__, ev->key.key); + if (ev->key.key == 13 && !(te->flags & MUI_CONTROL_TEXTEDIT_VERTICAL)) + return false; if (ev->key.key == 13 || (ev->key.key >= 32 && ev->key.key < 127)) { if (te->sel.start != te->sel.end) { @@ -1038,18 +1048,14 @@ mui_cdef_textedit( mui_textedit_control_t *te = (mui_textedit_control_t *)c; switch (what) { case MUI_CDEF_INIT: { - if (!c->win->control_focus.control) - mui_control_ref(&c->win->control_focus, c, - FCC('T','e','a','c')); /* If we are the first text-edit created, register the timer */ - if (c->win->ui->carret_timer == 0xff) + if (c->win->ui->carret_timer == MUI_TIMER_NONE) c->win->ui->carret_timer = mui_timer_register(c->win->ui, _mui_textedit_carret_timer, NULL, 500 * MUI_TIME_MS); - if (mui_window_isfront(c->win)) { - int activate = 1; - mui_cdef_textedit(c, MUI_CDEF_ACTIVATE, &activate); - } + if (mui_window_isfront(c->win) && + c->win->control_focus.control == NULL) + mui_control_set_focus(c); } break; case MUI_CDEF_DRAW: { mui_drawable_t * dr = param; @@ -1081,9 +1087,14 @@ mui_cdef_textedit( case MUI_EVENT_KEYDOWN: { return mui_textedit_key(c, ev); } break; + default: + break; } } break; - case MUI_CDEF_ACTIVATE: { + case MUI_CDEF_CAN_FOCUS: { + return true; + } break; + case MUI_CDEF_FOCUS: { // int activate = *(int*)param; // printf("%s activate %d\n", __func__, activate); // mui_textedit_control_t *te = (mui_textedit_control_t *)c; diff --git a/libmui/mui/mui_controls.c b/libmui/src/mui_controls.c similarity index 79% rename from libmui/mui/mui_controls.c rename to libmui/src/mui_controls.c index 07720a2..4e864ce 100644 --- a/libmui/mui/mui_controls.c +++ b/libmui/src/mui_controls.c @@ -76,6 +76,8 @@ mui_control_new( TAILQ_INSERT_TAIL(&win->controls, c, self); if (c->cdef) c->cdef(c, MUI_CDEF_INIT, NULL); + // should we auto-focus the control? not sure.. +// mui_control_set_focus(c); return c; } @@ -219,10 +221,28 @@ mui_control_event( res = true; } break; + default: break; } return res; } +void +mui_control_set_frame( + mui_control_t * c, + c2_rect_t * frame ) +{ + if (!c || !frame) + return; + c2_rect_t old = c->frame; + if (c2_rect_equal(&old, frame)) + return; + mui_control_inval(c); // old position + c->frame = *frame; + if (c->cdef && c->cdef(c, MUI_CDEF_SET_FRAME, frame)) + return; + mui_control_inval(c); // new position +} + void mui_control_inval( mui_control_t * c ) @@ -297,12 +317,12 @@ mui_control_lock( } } -void +mui_control_t * mui_control_unlock( mui_control_t *c) { if (!c) - return; + return NULL; if (c->lock.control) { if (c->lock.ref.trace) printf("%s: control %s was locked\n", @@ -316,13 +336,16 @@ mui_control_unlock( printf("%s: control %s unlocked delete %d\n", __func__, c->title, delete); mui_control_deref(&c->lock); - if (delete) + if (delete) { mui_control_dispose(c); + c = NULL; + } } } else { // if (c->lock.ref.trace) printf("%s: control %s was not locked\n", __func__, c->title); } + return c; } static void @@ -387,3 +410,61 @@ mui_control_get_by_id( } return NULL; } + +bool +mui_control_set_focus( + mui_control_t * c ) +{ + mui_window_t * win = c->win; + if (!win || !c) + return false; + if (!c->cdef || !c->cdef(c, MUI_CDEF_CAN_FOCUS, NULL)) + return false; + if (win->control_focus.control == c) + return true; + if (win->control_focus.control) { + win->control_focus.control->cdef( + win->control_focus.control, MUI_CDEF_FOCUS, &(int){0}); + mui_control_inval(win->control_focus.control); + mui_control_deref(&win->control_focus); + } + mui_control_inval(c); + c->cdef(c, MUI_CDEF_FOCUS, &(int){1}); + mui_control_ref(&c->win->control_focus, c, FCC('T','e','a','c')); + return true; +} + +bool +mui_control_has_focus( + mui_control_t * c ) +{ + if (!c) + return false; + return c->win->control_focus.control == c; +} + +mui_control_t * +mui_control_switch_focus( + mui_window_t * win, + int dir ) +{ + if (!win) + return NULL; + mui_control_t *c = win->control_focus.control; + if (!c) + c = TAILQ_FIRST(&win->controls); + if (!c) + return c; + mui_control_t * start = c; + do { + c = dir > 0 ? TAILQ_NEXT(c, self) : TAILQ_PREV(c, controls, self); + if (!c) + c = dir > 0 ? TAILQ_FIRST(&win->controls) : + TAILQ_LAST(&win->controls, controls); + if (c->cdef && c->cdef(c, MUI_CDEF_CAN_FOCUS, NULL)) + break; + } while (c != start); + mui_control_set_focus(c); + printf("focus %4.4s %s\n", (char*)&c->type, c->title); + return c; +} diff --git a/libmui/mui/mui_drawable.c b/libmui/src/mui_drawable.c similarity index 100% rename from libmui/mui/mui_drawable.c rename to libmui/src/mui_drawable.c diff --git a/libmui/mui/mui_font.c b/libmui/src/mui_font.c similarity index 90% rename from libmui/mui/mui_font.c rename to libmui/src/mui_font.c index 05c0ffd..750cf6e 100644 --- a/libmui/mui/mui_font.c +++ b/libmui/src/mui_font.c @@ -15,6 +15,7 @@ #include "stb_ttc.h" +//#ifndef __wasm__ #define INCBIN_STYLE INCBIN_STYLE_SNAKE #define INCBIN_PREFIX mui_ #include "incbin.h" @@ -23,9 +24,16 @@ INCBIN(main_font, "fonts/Charcoal_mui.ttf"); INCBIN(icon_font, "fonts/typicon.ttf"); INCBIN(dingbat_font, "fonts/Dingbat.ttf"); INCBIN(geneva_font, "fonts/Geneva.ttf"); +//#endif #include "mui.h" +// "Narrow style" reduces the advance by this factor +// Not the 'space' characters are reduced even more (twice that) +#define MUI_NARROW_ADVANCE_FACTOR 0.92 +// Interline factor for compact text +#define MUI_COMPACT_FACTOR 0.85 + mui_font_t * mui_font_find( mui_t *ui, @@ -73,12 +81,14 @@ mui_font_init( mui_t *ui) { // printf("%s: Loading fonts\n", __func__); +#ifndef __wasm__ mui_font_from_mem(ui, "main", 28, mui_main_font_data, mui_main_font_size); mui_font_from_mem(ui, "icon_large", 96, mui_icon_font_data, mui_icon_font_size); mui_font_from_mem(ui, "icon_small", 30, mui_icon_font_data, mui_icon_font_size); +#endif } void @@ -172,7 +182,6 @@ mui_font_text_draw( IMPLEMENT_C_ARRAY(mui_glyph_array); IMPLEMENT_C_ARRAY(mui_glyph_line_array); -#define MUI_NARROW_ADVANCE_FACTOR 0.92 void mui_font_measure( @@ -203,10 +212,12 @@ mui_font_measure( int wrap_chi = 0; int wrap_w = 0; int wrap_count = 0; - - float compact = flags & MUI_TEXT_ALIGN_COMPACT ? 0.85 : 1.0; + float compact = flags & MUI_TEXT_ALIGN_COMPACT ? + MUI_COMPACT_FACTOR : 1.0; float narrow = flags & MUI_TEXT_STYLE_NARROW ? MUI_NARROW_ADVANCE_FACTOR : 1.0; + float narrow_space = flags & MUI_TEXT_STYLE_NARROW ? + narrow * 0.9 : 1.0; mui_glyph_array_t * line = NULL; do { const mui_glyph_array_t zero = {}; @@ -236,6 +247,7 @@ mui_font_measure( ch, cp, cp < 32 ? '.' : cp, state, lines->count-1, line->count); if (cp == '\n') { + line->line_break = true; ch++; break; } @@ -253,8 +265,9 @@ mui_font_measure( if (gc->p_y == (unsigned short) -1) stb_ttc__ScaledGlyphRenderToCache(ttc, gc); float advance = gc->advance * narrow; + // we make spaces even narrower (if narrow style is on) if (cp == ' ') - advance *= 0.9; + advance *= narrow_space; if (((line->w + advance) * scale) > c2_rect_width(&bbox)) { if (wrap_count) { ch = wrap_chi + 1; @@ -276,6 +289,15 @@ mui_font_measure( // g.x, g.w); line->w += advance; }; + if (line->line_break) { + // stuff a newline here + mui_glyph_t g = { + .glyph = 0, + .pos = ch, + .x = (line->w) * scale, + }; + mui_glyph_array_push(line, g); + } // zero terminate the line, so there is a marker at the end mui_glyph_t g = { .glyph = 0, @@ -307,10 +329,19 @@ mui_font_measure( for (uint i = 0; i < lines->count; i++) { mui_glyph_array_t * line = &lines->e[i]; line->y += ydiff; + if (i == lines->count - 1) // last line is always a break + line->line_break = true; if (flags & MUI_TEXT_ALIGN_RIGHT) { line->x = c2_rect_width(&bbox) - line->w; } else if (flags & MUI_TEXT_ALIGN_CENTER) { line->x = (c2_rect_width(&bbox) - line->w) / 2; + } else if (flags & MUI_TEXT_ALIGN_FULL) { + line->x = 0; + if (line->count > 1 && !line->line_break) { + float space = (c2_rect_width(&bbox) - line->w) / (line->count - 1); + for (uint ci = 1; ci < line->count; ci++) + line->e[ci].x += ci * space; + } } if (line->x < (int)lines->margin_left) lines->margin_left = line->x; diff --git a/libmui/mui/mui_menus.c b/libmui/src/mui_menus.c similarity index 92% rename from libmui/mui/mui_menus.c rename to libmui/src/mui_menus.c index 68b83db..04aec9f 100644 --- a/libmui/mui/mui_menus.c +++ b/libmui/src/mui_menus.c @@ -22,6 +22,7 @@ enum { MUI_CONTROL_MENUITEM = FCC('m','i','t','m'), MUI_CONTROL_SUBMENUITEM = FCC('s','m','i','t'), MUI_CONTROL_POPUP = FCC('p','o','p','u'), + MUI_CONTROL_POPUP_MARK = FCC('p','o','p','m'), }; /* These are *window action* -- parameter 'target' is a mui_menu_t* */ @@ -320,6 +321,8 @@ mui_menubar_handle_mouse( return true; } } break; + default: + break; } return false; } @@ -417,6 +420,8 @@ mui_wdef_menubar( if (mui_menubar_handle_keydown(mbar, ev)) return true; } break; + default: + break; } } break; } @@ -512,6 +517,8 @@ mui_menu_handle_mouse( } } } break; + default: + break; } return false; } @@ -542,6 +549,8 @@ mui_wdef_menu( if (mui_menu_handle_mouse(menu, ev)) return true; } break; + default: + break; } } break; } @@ -561,6 +570,7 @@ mui_menubar_new( ui, mbf, mui_wdef_menubar, MUI_WINDOW_MENUBAR_LAYER, "Menubar", sizeof(*mbar)); + mbar->win.flags.style = MUI_MENU_STYLE_MBAR; mui_window_ref(&ui->menubar, &mbar->win, FCC('m','b','a','r')); return &mbar->win; } @@ -643,7 +653,7 @@ mui_menubar_add_menu( } else title_rect.l = 4; title_rect.r = title_rect.l + title_width + 6; - title_rect.b = win->content.b + 2;// title_rect.t + m.ascent - m.descent; + title_rect.b = win->content.b + 0;// title_rect.t + m.ascent - m.descent; mui_control_t * c = mui_control_new( win, MUI_CONTROL_MENUTITLE, mui_cdef_popup, @@ -662,7 +672,7 @@ mui_menubar_add_menu( for (int ii = 1; items[ii].title; ii++) sub_count++; - menu->menu.count = count -1 ; + menu->menu.count = sub_count ; menu->menu.e = items + 1; menu->menu.read_only = 1; @@ -703,13 +713,16 @@ mui_menu_get_enclosing_rect( mui_menu_item_t * items) { c2_rect_t frame = {}; - + if (!items) + return frame; + frame.b = 1; // space for outside frame mui_font_t * main = mui_font_find(ui, "main"); stb_ttc_measure m = {}; for (int i = 0; items[i].title; i++) { - items[i].location = frame.br; + items[i].location = frame.b; if (items[i].title && items[i].title[0] != '-') { mui_font_text_measure(main, items[i].title, &m); + m.x0 = 0; int title_width = main->size + m.x1 - m.x0 ; if (items[i].kcombo[0]) { @@ -720,11 +733,13 @@ mui_menu_get_enclosing_rect( if (title_width > frame.r) frame.r = title_width; - frame.b += main->size + 2; + items[i].height = main->size + 4; } else { - frame.b += main->size / 4; + items[i].height = main->size / 4; } + frame.b += items[i].height; } + frame.b += 1; // space for outside frame return frame; } @@ -765,6 +780,7 @@ _mui_menu_create( ui, on_screen, mui_wdef_menu, MUI_WINDOW_MENU_LAYER, items[0].title, sizeof(*menu)); + menu->win.flags.style = MUI_MENU_STYLE_MENU; if (mbar) { mui_window_ref(&mbar->open[mbar->open_count], &menu->win, FCC('m','e','n','u')); @@ -777,11 +793,8 @@ _mui_menu_create( mui_menu_item_t * item = &items[i]; item->index = i; c2_rect_t title_rect = frame; - title_rect.t = item->location.y - 1; - if (items[i+1].title) - title_rect.b = items[i+1].location.y; - else - title_rect.b = frame.b; + title_rect.t = item->location; + title_rect.b = title_rect.t + item->height; mui_control_t * c = NULL; if (item->submenu) { @@ -875,13 +888,18 @@ mui_popupmenu_handle_mouse( mui_control_set_state(c, ev->type != MUI_EVENT_BUTTONUP ? MUI_CONTROL_STATE_CLICKED : 0); - if (!pop->menu_window.window) { + if (!pop->menu_window.window && pop->menu.e) { c2_pt_t loc = pop->menu_frame.tl; c2_pt_offset(&loc, c->win->content.l, c->win->content.t); - c2_pt_offset(&loc, 0, -pop->menu.e[c->value].location.y); + if (c->type == MUI_CONTROL_POPUP) + c2_pt_offset(&loc, 0, -pop->menu.e[c->value].location); + else if (c->type == MUI_CONTROL_POPUP_MARK) + c2_pt_offset(&loc, 0, c2_rect_height(&c->frame)); mui_window_t *new = _mui_menu_create( c->win->ui, NULL, loc, pop->menu.e); + // override the default style to make it specific to a popup + new->flags.style = MUI_MENU_STYLE_POPUP; mui_window_ref(&pop->menu_window, new, FCC('m','e','n','u')); mui_window_set_action(pop->menu_window.window, @@ -891,6 +909,8 @@ mui_popupmenu_handle_mouse( } mui_control_inval(c); } break; + default: + break; } return true; } @@ -907,6 +927,7 @@ mui_cdef_popup( case MUI_CDEF_DISPOSE: switch (c->type) { case MUI_CONTROL_POPUP: + case MUI_CONTROL_POPUP_MARK: case MUI_CONTROL_MENUTITLE: { mui_menu_control_t *pop = (mui_menu_control_t*)c; if (pop->menu_window.window) { @@ -933,6 +954,9 @@ mui_cdef_popup( case MUI_CONTROL_POPUP: mui_popuptitle_draw(c->win, c, dr); break; + case MUI_CONTROL_POPUP_MARK: + mui_popupmark_draw(c->win, c, dr); + break; case MUI_CONTROL_MENUTITLE: mui_menutitle_draw(c->win, c, dr); break; @@ -950,6 +974,7 @@ mui_cdef_popup( case MUI_EVENT_DRAG: case MUI_EVENT_BUTTONDOWN: { switch (c->type) { + case MUI_CONTROL_POPUP_MARK: case MUI_CONTROL_POPUP: { mui_menu_control_t *pop = (mui_menu_control_t*)c; return mui_popupmenu_handle_mouse(pop, ev); @@ -959,6 +984,8 @@ mui_cdef_popup( break; } } break; + default: + break; } } break; } @@ -970,11 +997,17 @@ mui_popupmenu_new( mui_window_t * win, c2_rect_t frame, const char * title, - uint32_t uid ) + uint32_t uid, + uint32_t flags ) { - return mui_control_new( - win, MUI_CONTROL_POPUP, mui_cdef_popup, + int kind = MUI_CONTROL_POPUP; + if (!title || !strcmp(title, MUI_GLYPH_POPMARK)) + kind = MUI_CONTROL_POPUP_MARK; + mui_control_t *c = mui_control_new( + win, kind, mui_cdef_popup, frame, title, uid, sizeof(mui_menu_control_t)); + c->style = flags; + return c; } mui_menu_items_t * @@ -983,7 +1016,9 @@ mui_popupmenu_get_items( { if (!c) return NULL; - if (c->type != MUI_CONTROL_POPUP && c->type != MUI_CONTROL_MENUTITLE) { + if (c->type != MUI_CONTROL_POPUP && + c->type != MUI_CONTROL_POPUP_MARK && + c->type != MUI_CONTROL_MENUTITLE ) { D(printf("%s: not a popup or menutitle\n", __func__);) return NULL; } @@ -1001,12 +1036,24 @@ mui_popupmenu_prepare( mui_window_deref(&pop->menu_window); } c2_rect_t frame = mui_menu_get_enclosing_rect(c->win->ui, pop->menu.e); - pop->menu_frame = frame; +// pop->menu_frame = frame; c2_rect_offset(&frame, c->frame.l, c->frame.t); - frame.r += 32; // add the popup symbol width - if (c2_rect_width(&frame) < c2_rect_width(&c->frame)) { - c2_rect_offset(&frame, (c2_rect_width(&c->frame) / 2) - - (c2_rect_width(&frame) / 2), 0); + switch (c->type) { + case MUI_CONTROL_POPUP: + frame.r += 32; // add the popup symbol width + break; + case MUI_CONTROL_POPUP_MARK: + // little tweak so the popup appears over the bottom border of button + c2_rect_offset(&frame, 0, -2); + break; + } + if (c->style & MUI_TEXT_ALIGN_CENTER) { + if (c2_rect_width(&frame) < c2_rect_width(&c->frame)) { + c2_rect_offset(&frame, (c2_rect_width(&c->frame) / 2) - + (c2_rect_width(&frame) / 2), 0); + } + } else if (c->style & MUI_TEXT_ALIGN_RIGHT) { + c2_rect_offset(&frame, c2_rect_width(&c->frame) - c2_rect_width(&frame), 0); } pop->menu_frame = frame; c->value = 0; diff --git a/libmui/mui/mui_menus_draw.c b/libmui/src/mui_menus_draw.c similarity index 85% rename from libmui/mui/mui_menus_draw.c rename to libmui/src/mui_menus_draw.c index 07dcf61..933b2a2 100644 --- a/libmui/mui/mui_menus_draw.c +++ b/libmui/src/mui_menus_draw.c @@ -82,7 +82,7 @@ mui_menuitem_get_part_locations( } else if (item->mark[0]) { mui_font_text_measure(main, item->mark, &m); c2_pt_t loc = title.tl; - loc.x += (main->size / 2) - ((m.x1 - m.x0) / 2); + loc.x += m.x0 + (main->size / 2) - ((m.x1 - m.x0) / 2); out[MUI_MENUITEM_PART_ICON].tl = loc; } // this is the 'left margin' for the menu item @@ -121,7 +121,7 @@ mui_menutitle_get_part_locations( out[MUI_MENUTITLE_PART_TITLE] = C2_RECT_WH(out[MUI_MENUTITLE_PART_ICON].r, - 0, m.x1 - m.x0, m.ascent - m.descent); + 0, m.x1 - 0, m.ascent - m.descent); } out[MUI_MENUTITLE_PART_ALL] = out[MUI_MENUTITLE_PART_ICON]; c2_rect_union( @@ -296,8 +296,51 @@ mui_popuptitle_draw( loc[1].tl, item.title, 0, mui_control_color[state].text); } + // up/down arrow mui_font_text_draw(icons, dr, - C2_PT(inner.r - 32 + 8, inner.t + 2), "", 0, + C2_PT(inner.r - 32 + 8, inner.t + 2), MUI_ICON_POPUP_ARROWS, 0, + mui_control_color[state].text); + mui_drawable_clip_pop(dr); +} + +void +mui_popupmark_draw( + mui_window_t * win, + mui_control_t * c, + mui_drawable_t *dr ) +{ + mui_menu_control_t *pop = (mui_menu_control_t*)c; + c2_rect_t f = c->frame; + if (c2_rect_width(&pop->menu_frame) && + c2_rect_width(&pop->menu_frame) < c2_rect_width(&f)) { + f = pop->menu_frame; + f.b = c->frame.b; + } + c2_rect_offset(&f, win->content.l, win->content.t); + + mui_font_t * main = mui_font_find(win->ui, "main"); + uint32_t state = mui_control_get_state(c); + + mui_drawable_clip_push(dr, &f); + struct cg_ctx_t * cg = mui_drawable_get_cg(dr); + c2_rect_t inner = f; + c2_rect_inset(&inner, 1, 1); + cg_set_line_width(cg, 2); + cg_round_rectangle(cg, inner.l, inner.t, + c2_rect_width(&inner), c2_rect_height(&inner), 4, 4); + cg_set_source_color(cg, &CG_COLOR(mui_control_color[state].fill)); + cg_fill_preserve(cg); + cg_set_source_color(cg, &CG_COLOR(mui_control_color[state].frame)); + cg_stroke(cg); + #if 0 + cg_move_to(cg, inner.r - 32, inner.t + 2); + cg_line_to(cg, inner.r - 32, inner.b - 2); + mui_color_t decoColor = MUI_COLOR(0x666666ff); + cg_set_source_color(cg, &CG_COLOR(decoColor)); + cg_stroke(cg); + #endif + mui_font_text_draw(main, dr, + C2_PT(inner.r - 32 + 8, inner.t + 2), c->title, 0, mui_control_color[state].text); mui_drawable_clip_pop(dr); } diff --git a/libmui/mui/mui_priv.h b/libmui/src/mui_priv.h similarity index 89% rename from libmui/mui/mui_priv.h rename to libmui/src/mui_priv.h index c09a123..a9ceb28 100644 --- a/libmui/mui/mui_priv.h +++ b/libmui/src/mui_priv.h @@ -31,7 +31,7 @@ mui_window_handle_keyboard( void mui_window_lock( mui_window_t *win); -void +mui_window_t * mui_window_unlock( mui_window_t *win); @@ -43,7 +43,7 @@ mui_control_draw( void mui_control_lock( mui_control_t *c); -void +mui_control_t * mui_control_unlock( mui_control_t *c); @@ -73,6 +73,13 @@ typedef struct mui_menu_control_t { mui_window_ref_t menu_window; // when open } mui_menu_control_t; +// used by mui_wdef_menubar for frame and drawing. +enum mui_mbar_style_e { + MUI_MENU_STYLE_MBAR = 0, + MUI_MENU_STYLE_MENU, + MUI_MENU_STYLE_POPUP, +}; + void mui_wdef_menubar_draw( struct mui_window_t * win, @@ -92,6 +99,11 @@ mui_menutitle_draw( mui_window_t * win, mui_control_t * c, mui_drawable_t *dr ); +void +mui_popupmark_draw( + mui_window_t * win, + mui_control_t * c, + mui_drawable_t *dr ); enum { MUI_MENUTITLE_PART_ALL = 0, diff --git a/libmui/mui/mui_stdfile.c b/libmui/src/mui_stdfile.c similarity index 70% rename from libmui/mui/mui_stdfile.c rename to libmui/src/mui_stdfile.c index 1293e18..efaa851 100644 --- a/libmui/mui/mui_stdfile.c +++ b/libmui/src/mui_stdfile.c @@ -33,7 +33,7 @@ IMPLEMENT_C_ARRAY(string_array); typedef struct mui_stdfile_t { mui_window_t win; mui_control_t * ok, *cancel, *home, *root; - mui_control_t * listbox, *popup; + mui_control_t * listbox, *popup, *recent; char * pref_file; // pathname we put last path used char * re_pattern; struct { @@ -43,6 +43,10 @@ typedef struct mui_stdfile_t { char * current_path; char * selected_path; string_array_t pop_path; + struct { + mui_control_t *save_name; + mui_control_t *create_folder; + } save; #ifdef MUI_HAS_REGEXP regex_t re; #endif @@ -56,6 +60,9 @@ enum { MUI_STD_FILE_PART_ROOT, MUI_STD_FILE_PART_LISTBOX, MUI_STD_FILE_PART_POPUP, + MUI_STD_FILE_PART_RECENT, + MUI_STD_FILE_PART_NEW, + MUI_STD_FILE_PART_SAVE_NAME, MUI_STD_FILE_PART_COUNT, }; @@ -93,6 +100,27 @@ mui_hash_nocase( hash += hash << 5; return hash; } +static int +_mii_stdfile_check_dir( + const char * path) +{ + const char *home = getenv("HOME"); + if (home && path[0] == '~' && path[1] == '/') { + char * p = NULL; + asprintf(&p, "%s%s", home, path + 1); + path = p; + } else + path = strdup(path); + struct stat st; + int res = -1; + if (stat(path, &st) == 0) { + if (S_ISDIR(st.st_mode)) + res = 0; + } + free((void*)path); + return res; +} + static int _mui_stdfile_populate( mui_stdfile_t * std, @@ -100,7 +128,14 @@ _mui_stdfile_populate( { if (std->current_path && !strcmp(std->current_path, path)) return 0; - + const char *home = getenv("HOME"); + int dupped = 0; + if (home && path[0] == '~' && path[1] == '/') { + char * p = NULL; + asprintf(&p, "%s%s", home, path + 1); + path = p; + dupped = 1; + } printf("%s %s\n", __func__, path); errno = 0; DIR * dir = opendir(path); @@ -117,7 +152,7 @@ _mui_stdfile_populate( } if (std->current_path) free(std->current_path); - std->current_path = strdup(path); + std->current_path = dupped ? (char*)path : strdup(path); path = NULL; // this COULD be in the list we are now deleting! for (uint i = 0; i < std->pop_path.count; i++) free(std->pop_path.e[i]); @@ -130,7 +165,6 @@ _mui_stdfile_populate( mui_menu_items_clear(items); char * p = strdup(std->current_path); char * d; - const char *home = getenv("HOME"); int item_id = 1000; while ((d = basename(p)) != NULL) { mui_menu_item_t i = { @@ -226,6 +260,82 @@ _mui_stdfile_populate( return 0; } +static int +_mui_stdfile_load_pref( + mui_stdfile_t * std) +{ + int res = 1; + FILE * f = fopen(std->pref_file, "r"); + char * path = NULL; + size_t len = 0; + if (!f) + return res; // populate + + mui_control_t *pop = std->recent; + mui_menu_items_t * items = mui_popupmenu_get_items(pop); + for (uint i = 0; i < items->count; i++) + free(items->e[i].title); + mui_menu_items_clear(items); + int line_count = 0; + const char *home = getenv("HOME"); + do { + errno = 0; + if (getline(&path, &len, f) == -1) + break; + char *nl = strrchr(path, '\n'); + if (nl) + *nl = 0; + if (line_count == 0) { + if (_mui_stdfile_populate(std, path) == 0) { + printf("%s last path[%s]: %s\n", __func__, + std->re_pattern, path); + res = 0; + } + } + if (home && !strncmp(home, path, strlen(home)) && + path[strlen(home)] == '/') { + path[0] = '~'; + memmove(path + 1, path + strlen(home), + strlen(path) - strlen(home) + 1); + } + int add = 1; + for (uint ii = 0; ii < items->count; ii++) { + if (!strcmp(items->e[ii].title, path)) { + add = 0; + break; + } + } + if (add) + add = !_mii_stdfile_check_dir(path); + if (add && items->count > 10) // limit to 10 recent paths + add = 0; + if (add) { + int item_id = 10000 + line_count; + mui_menu_item_t i = { + .title = strdup(path), + .uid = item_id, + }; + char *d = path; + if (!strcmp(d, "/")) + strcpy(i.icon, MUI_ICON_ROOT); + else if (home && !strcmp(d, home)) + strcpy(i.icon, MUI_ICON_HOME); + else + strcpy(i.icon, MUI_ICON_FOLDER); + mui_menu_items_push(items, i); + } + line_count++; + } while (!feof(f) && line_count < 6); + mui_menu_item_t z = {}; + mui_menu_items_push(items, z); + mui_popupmenu_prepare(pop); + fclose(f); + if (path) + free(path); + return res; +} + + static int _mui_stdfile_window_action( mui_window_t * win, @@ -290,6 +400,17 @@ _mui_stdfile_control_action( FILE * f = fopen(std->pref_file, "w"); if (f) { fprintf(f, "%s\n", std->current_path); + // write recent paths popup back in + const char *home = getenv("HOME"); + mui_menu_items_t * items = mui_popupmenu_get_items(std->recent); + for (uint i = 0; i < items->count; i++) { + if (items->e[i].title && + strcmp(items->e[i].title, std->current_path) && + strcmp(items->e[i].title, home) && + strcmp(items->e[i].title, "/")) { + fprintf(f, "%s\n", items->e[i].title); + } + } fclose(f); } } @@ -340,19 +461,32 @@ _mui_stdfile_control_action( _mui_stdfile_populate(std, std->pop_path.e[idx]); } break; + case MUI_STD_FILE_PART_RECENT: + // printf("%s POPUP\n", __func__); + if (what == MUI_CONTROL_ACTION_VALUE_CHANGED) { + int idx = mui_control_get_value(c); + mui_menu_item_t * items = mui_popupmenu_get_items(c)->e; + printf("Recent Selected: %s\n", items[idx].title); + _mui_stdfile_populate(std, items[idx].title); + } + break; } return 0; } + mui_window_t * -mui_stdfile_get( +mui_stdfile_make_window( struct mui_t * ui, c2_pt_t where, const char * prompt, const char * pattern, const char * start_path, + const char * save_filename, uint16_t flags ) { + float base_size = mui_font_find(ui, "main")->size; + float margin = base_size * 0.7; c2_rect_t wpos = C2_RECT_WH(where.x, where.y, 700, 400); if (where.x == 0 && where.y == 0) c2_rect_offset(&wpos, @@ -401,18 +535,20 @@ mui_stdfile_get( } free(dup); } + bool save_box = false; + mui_control_t * c = NULL; c2_rect_t cf; cf = C2_RECT_WH(0, 0, 120, 40); - c2_rect_left_of(&cf, c2_rect_width(&w->content), 20); - c2_rect_top_of(&cf, c2_rect_height(&w->content), 20); + c2_rect_left_of(&cf, c2_rect_width(&w->content), margin); + c2_rect_top_of(&cf, c2_rect_height(&w->content), margin); std->cancel = c = mui_button_new(w, cf, MUI_BUTTON_STYLE_NORMAL, "Cancel", MUI_STD_FILE_PART_CANCEL); - c2_rect_top_of(&cf, cf.t, 20); + c2_rect_top_of(&cf, cf.t, margin); std->ok = c = mui_button_new(w, cf, MUI_BUTTON_STYLE_DEFAULT, - "Select", MUI_STD_FILE_PART_OK); + save_box ? "Save" : "Select", MUI_STD_FILE_PART_OK); std->ok->key_equ = MUI_KEY_EQU(0, 13); // return std->cancel->key_equ = MUI_KEY_EQU(0, 27); // ESC @@ -422,57 +558,67 @@ mui_stdfile_get( c2_rect_top_of(&t, cf.t, 25); c = mui_separator_new(w, t); + int button_spacer = save_box ? margin * 0.7 : margin; + int listbox_height = save_box ? 250 : 300; + c2_rect_top_of(&cf, cf.t, 40); std->home = c = mui_button_new(w, cf, MUI_BUTTON_STYLE_NORMAL, "Home", MUI_STD_FILE_PART_HOME); c->key_equ = MUI_KEY_EQU(MUI_MODIFIER_ALT, 'h'); - c2_rect_top_of(&cf, cf.t, 20); + c2_rect_top_of(&cf, cf.t, button_spacer); std->root = c = mui_button_new(w, cf, MUI_BUTTON_STYLE_NORMAL, "Root", MUI_STD_FILE_PART_ROOT); c->key_equ = MUI_KEY_EQU(MUI_MODIFIER_ALT, '/'); - cf = C2_RECT_WH(15, 45, 700-185, 300); + if (save_box) { + c2_rect_top_of(&cf, cf.t, button_spacer); + std->save.create_folder = c = mui_button_new(w, + cf, MUI_BUTTON_STYLE_NORMAL, + "New…", MUI_STD_FILE_PART_ROOT); + c->key_equ = MUI_KEY_EQU(MUI_MODIFIER_ALT, 'n'); + c->uid = MUI_STD_FILE_PART_NEW; + } + cf = C2_RECT_WH(margin, 0, c2_rect_width(&wpos)-185, 35); + c2_rect_top_of(&cf, c2_rect_height(&w->content), margin); + if (save_box) { + std->save.save_name = c = mui_textedit_control_new(w, + cf, MUI_CONTROL_TEXTBOX_FRAME); + c->uid = MUI_STD_FILE_PART_SAVE_NAME; + mui_textedit_set_text(c, + "Fulling Mill Online Return Center.pdf"); + mui_textedit_set_selection(c, 0, 255); + } + cf = C2_RECT_WH(margin, 45, c2_rect_width(&wpos)-185, listbox_height); std->listbox = c = mui_listbox_new(w, cf, MUI_STD_FILE_PART_LISTBOX); - cf = C2_RECT_WH(15, 0, 700-185, 34); + cf = C2_RECT_WH(margin, 0, c2_rect_width(&wpos)-185, 34); c2_rect_top_of(&cf, std->listbox->frame.t, 6); std->popup = c = mui_popupmenu_new(w, cf, - "Popup", MUI_STD_FILE_PART_POPUP); + "Popup", MUI_STD_FILE_PART_POPUP, + MUI_TEXT_ALIGN_CENTER); + cf.r = c2_rect_width(&w->content) - margin; + cf.l = cf.r - 34; + std->recent = c = mui_popupmenu_new(w, cf, + MUI_GLYPH_POPMARK, MUI_STD_FILE_PART_RECENT, + MUI_TEXT_ALIGN_RIGHT); +// mui_control_set_state(c, MUI_CONTROL_STATE_DISABLED); // printf("Popup: %p\n", c); c = NULL; TAILQ_FOREACH(c, &w->controls, self) { - if (mui_control_get_uid(c) == 0) - continue; - mui_control_set_action(c, _mui_stdfile_control_action, std); + if (mui_control_get_uid(c)) + mui_control_set_action(c, _mui_stdfile_control_action, std); } int dopop = 1; // populate to start_path by default if (!(flags & MUI_STDF_FLAG_NOPREF) && ui->pref_directory) { uint32_t hash = std->re_pattern ? mui_hash(std->re_pattern) : 0; asprintf(&std->pref_file, "%s/std_path_%04x", ui->pref_directory, hash); printf("%s pref file: %s\n", __func__, std->pref_file); - /* read last used pathname */ - FILE * f = fopen(std->pref_file, "r"); - if (f) { - char * path = NULL; - size_t len = 0; - getline(&path, &len, f); - fclose(f); - if (path) { - char *nl = strrchr(path, '\n'); - if (nl) - *nl = 0; - if (_mui_stdfile_populate(std, path) == 0) { - printf("%s last path[%s]: %s\n", __func__, - std->re_pattern, path); - dopop = 0; - } - free(path); - } - } + + dopop = _mui_stdfile_load_pref(std); } if (dopop) _mui_stdfile_populate(std, start_path); @@ -480,6 +626,20 @@ mui_stdfile_get( return w; } +mui_window_t * +mui_stdfile_get( + struct mui_t * ui, + c2_pt_t where, + const char * prompt, + const char * pattern, + const char * start_path, + uint16_t flags ) +{ + mui_window_t *w = mui_stdfile_make_window(ui, where, + prompt, pattern, start_path, NULL, flags); + return w; +} + char * mui_stdfile_get_path( mui_window_t * w ) diff --git a/libmui/mui/mui_utils.c b/libmui/src/mui_utils.c similarity index 94% rename from libmui/mui/mui_utils.c rename to libmui/src/mui_utils.c index e5b86f7..7573e28 100644 --- a/libmui/mui/mui_utils.c +++ b/libmui/src/mui_utils.c @@ -13,7 +13,7 @@ mui_time_t mui_get_time() { struct timespec tim; - clock_gettime(CLOCK_MONOTONIC_RAW, &tim); + clock_gettime(CLOCK_MONOTONIC, &tim); uint64_t time = ((uint64_t)tim.tv_sec) * (1000000 / MUI_TIME_RES) + tim.tv_nsec / (1000 * MUI_TIME_RES); return time; diff --git a/libmui/mui/mui_window.c b/libmui/src/mui_window.c similarity index 95% rename from libmui/mui/mui_window.c rename to libmui/src/mui_window.c index 76b53c6..a13ce4d 100644 --- a/libmui/mui/mui_window.c +++ b/libmui/src/mui_window.c @@ -120,7 +120,7 @@ mui_wdef_titlewindow( if (win->control_focus.control->cdef) win->control_focus.control->cdef( win->control_focus.control, - MUI_CDEF_ACTIVATE, &activate); + MUI_CDEF_FOCUS, &activate); } break; case MUI_WDEF_DESELECT: @@ -129,7 +129,7 @@ mui_wdef_titlewindow( if (win->control_focus.control->cdef) win->control_focus.control->cdef( win->control_focus.control, - MUI_CDEF_ACTIVATE, &activate); + MUI_CDEF_FOCUS, &activate); } break; case MUI_WDEF_DISPOSE: @@ -256,6 +256,10 @@ mui_window_draw( mui_drawable_clip_pop(dr); } +/* + * Keys are passed first to the control that is in focus (if any), then + * to all the others in sequence until someone handles it (or not). + */ bool mui_window_handle_keyboard( mui_window_t *win, @@ -273,12 +277,20 @@ mui_window_handle_keyboard( /* * Start with the control in focus, if there's any */ - mui_control_t * c = win->control_focus.control, *safe; - TAILQ_FOREACH_FROM_SAFE(c, &win->controls, self, safe) { + mui_control_t * first = win->control_focus.control ? + win->control_focus.control : + TAILQ_FIRST(&win->controls); + mui_control_t * c = first; + while (c) { if (mui_control_event(c, event)) { -// printf("%s control %s handled it\n", __func__, c->title); + // printf("%s control %s handled it\n", __func__, c->title); return true; } + c = TAILQ_NEXT(c, self); + if (!c) + c = TAILQ_FIRST(&win->controls); + if (c == first) + break; } return false; } @@ -381,6 +393,8 @@ mui_window_handle_mouse( case MUI_EVENT_MOUSEENTER: case MUI_EVENT_MOUSELEAVE: break; + default: + break; } // printf("MOUSE %s button %d\n", __func__, event->mouse.button); // printf("MOUSE %s %s\n", __func__, c->title); @@ -513,12 +527,12 @@ mui_window_lock( // __func__, win->title, win->lock.ref.count); } -void +mui_window_t* mui_window_unlock( mui_window_t *win) { if (!win) - return; + return NULL; if (win->lock.window) { if (win->lock.ref.trace) printf("%s: window %s was locked\n", @@ -532,13 +546,16 @@ mui_window_unlock( printf("%s: window %s unlocked delete %d\n", __func__, win->title, delete); mui_window_deref(&win->lock); - if (delete) + if (delete) { mui_window_dispose(win); + win = NULL; + } } } else { // if (win->lock.ref.trace) printf("%s: window %s was not locked\n", __func__, win->title); } + return win; } void diff --git a/libmui/mui/stb_truetype.h b/libmui/src/stb_truetype.h similarity index 100% rename from libmui/mui/stb_truetype.h rename to libmui/src/stb_truetype.h diff --git a/libmui/mui/stb_ttc.h b/libmui/src/stb_ttc.h similarity index 100% rename from libmui/mui/stb_ttc.h rename to libmui/src/stb_ttc.h diff --git a/libmui/mui/xft.c b/libmui/src/xft.c similarity index 100% rename from libmui/mui/xft.c rename to libmui/src/xft.c diff --git a/libmui/mui/xft.h b/libmui/src/xft.h similarity index 100% rename from libmui/mui/xft.h rename to libmui/src/xft.h diff --git a/libmui/tests/Makefile b/libmui/tests/Makefile new file mode 100644 index 0000000..7491f12 --- /dev/null +++ b/libmui/tests/Makefile @@ -0,0 +1,19 @@ +# Makefile +# +# Copyright (C) 2024 Michel Pollet +# +# SPDX-License-Identifier: MIT + +# Check to see if we are a submodule of the MII emulator +MII_PLUG := ${wildcard ../../ui_gl/*.c} + +ifneq ($(MII_PLUG),) +PLUGS += mii_ui +endif +PLUGS += mui_widgets_demo + +all : + for plug in $(PLUGS); do \ + $(MAKE) -C $$plug; \ + done + diff --git a/libmui/tests/mii_ui/Makefile b/libmui/tests/mii_ui/Makefile new file mode 100644 index 0000000..e7398b5 --- /dev/null +++ b/libmui/tests/mii_ui/Makefile @@ -0,0 +1,39 @@ +# Makefile +# +# Copyright (C) 2024 Michel Pollet +# +# SPDX-License-Identifier: MIT + +TARGET := mii_ui_tests + +LIBMUI := ../../ +MII := ../../../ + +all : $(TARGET) + +include $(LIBMUI)/Makefile.common + +vpath %.c $(MII)/ui_gl + +CPPFLAGS += -I$(MII)/ui_gl + +.PHONY : $(TARGET) +$(TARGET) : $(LIB)/$(TARGET).so + +MII_UI_OBJ := $(OBJ)/mii_mui_slots.o \ + $(OBJ)/mii_mui_loadbin.o \ + $(OBJ)/mii_mui_1mb.o \ + $(OBJ)/mii_mui_2dsk.o \ + $(OBJ)/mii_mui_about.o \ + $(OBJ)/mii_mui_ssc.o \ + $(OBJ)/mii_mui_utils.o + +$(LIB)/$(TARGET).so : $(OBJ)/$(TARGET).o $(MII_UI_OBJ) +$(LIB)/$(TARGET).so : LDLIBS += $(LIB)/libmui.a + +$(OBJ)/mii_mui_about.o : CPPFLAGS+=-DMII_ICON64_DEFINE + +clean: + rm -rf $(LIB)/$(TARGET).so $(MII_UI_OBJ) + +-include $(OBJ)/*.d diff --git a/libmui/tests/mii_ui/README.md b/libmui/tests/mii_ui/README.md new file mode 100644 index 0000000..52b0737 --- /dev/null +++ b/libmui/tests/mii_ui/README.md @@ -0,0 +1,4 @@ + +### MII Emulator test plugin + +This is compiled only when libmui is part of the MII build. diff --git a/libmui/tests/ui_tests.c b/libmui/tests/mii_ui/mii_ui_tests.c similarity index 68% rename from libmui/tests/ui_tests.c rename to libmui/tests/mii_ui/mii_ui_tests.c index 8133c88..6d8fe33 100644 --- a/libmui/tests/ui_tests.c +++ b/libmui/tests/mii_ui/mii_ui_tests.c @@ -13,7 +13,7 @@ #include #include "mui.h" -#include "mui_plugin.h" +#include "mui_shell_plugin.h" #include "c2_geometry.h" typedef struct cg_ui_t { @@ -24,9 +24,8 @@ typedef struct cg_ui_t { #include "mii_mui_menus.h" #include "mii_mui_settings.h" - -#ifndef UI_VERSION -#define UI_VERSION "0.0.0" +#ifndef MUI_VERSION +#define MUI_VERSION "0.0.0" #endif static void @@ -39,8 +38,8 @@ _test_show_about( return; } w = mui_alert(g->ui, C2_PT(0,0), - "About MII", - "Version " UI_VERSION "\n" + "About MUI", + "Version " MUI_VERSION "\n" "Build " __DATE__ " " __TIME__, MUI_ALERT_INFO); mui_window_set_id(w, FCC('a','b','o','t')); @@ -49,8 +48,6 @@ _test_show_about( static mii_machine_config_t g_machine_conf = {}; static mii_loadbin_conf_t g_loadbin_conf = {}; -/* this is heavily endian dependend, as is the FCC macro */ -#define FCC_INDEX(_fcc) (isdigit(_fcc>>24) ? ((_fcc >> 24) - '0') : 0) int _test_menubar_action( @@ -105,7 +102,8 @@ _test_menubar_action( (char*)&item->uid, item->title); switch (item->uid) { case FCC('a','b','o','t'): { - _test_show_about(g); +// _test_show_about(g); + mii_mui_about(g->ui); } break; case FCC('q','u','i','t'): { printf("%s Quit\n", __func__); @@ -143,58 +141,6 @@ _test_menubar_action( return 0; } -static void -plain_test_window( - mui_t *mui) -{ - mui_window_t *w = mui_window_get_by_id(mui, FCC('t','e','s','t')); - if (w) { - mui_window_select(w); - return; - } - c2_pt_t where = {}; - c2_rect_t wpos = C2_RECT_WH(where.x, where.y, 510, 270); - if (where.x == 0 && where.y == 0) - c2_rect_offset(&wpos, - (mui->screen_size.x / 2) - (c2_rect_width(&wpos) / 2), - (mui->screen_size.y * 0.45) - (c2_rect_height(&wpos) / 2)); - w = mui_window_create(mui, wpos, NULL, MUI_WINDOW_LAYER_NORMAL, - "Test", 0); - mui_window_set_id(w, FCC('t','e','s','t')); - - mui_control_t * c = NULL; - c2_rect_t cf; - - cf = C2_RECT_WH(10, 10, 480, 170); - c = mui_textedit_control_new(w, cf, - MUI_CONTROL_TEXTBOX_FRAME | MUI_CONTROL_TEXTEDIT_VERTICAL); - mui_textedit_set_text(c, - "The quick brown fox Jumps over the Lazy dog.\n" - "Lorem Ipsum is simply dummy text of the printing " - "and typesetting industry. Lorem Ipsum has been the " - "industry's standard dummy text ever since the 1500s.\n" - #if 1 - "Now let's step back and look at what's happening. " - "Writing to the disk is a load and shift process, a " - "little like HIRES pattern outputs but much slower.\n" - "Also, the MPU takes a very active role in the loading " - "and shifting of disk write data. There are two 8-Htate " - "loops in the WRITE sequence. After initializing the " - "WRITE sequence, data is stored in the data register " - "at a critical point in the A7' loop. As (quickly " - "thereafter as the 6502 can do it, the sequencer is " - "configured to shift left at the critical point " - "instead of loading." - #endif - ); - c2_rect_bottom_of(&cf, cf.b, 10); - cf.b = cf.t + 35; - c = mui_textedit_control_new(w, cf, MUI_CONTROL_TEXTBOX_FRAME); - mui_textedit_set_text(c, - "Fulling Mill Online Return Center.pdf"); - -} - static void * _init( struct mui_t * ui, @@ -221,9 +167,8 @@ _init( mui_menubar_add_simple(mbar, "CPU", FCC('c','p','u','m'), m_cpu_menu); - plain_test_window(ui); // mii_mui_configure_slots(g->ui, &g_machine_conf); -// mii_mui_load_binary(g->ui, &g_loadbin_conf); + mii_mui_load_binary(g->ui, &g_loadbin_conf); // mii_mui_load_1mbrom(g->ui, &g_machine_conf.slot[0].conf.rom1mb); // mii_mui_load_2dsk(g->ui, &g_machine_conf.slot[0].conf.disk2, MII_2DSK_DISKII); // mii_mui_about(g->ui); @@ -264,7 +209,6 @@ _draw( mui_drawable_t *dr, uint16_t all) { -// cg_ui_t *g = param; mui_draw(ui, dr, all); return 1; } @@ -275,16 +219,14 @@ _event( void *param, mui_event_t *event) { -// cg_ui_t *g = param; -// printf("%s %d\n", __func__, event->type); mui_handle_event(ui, event); return 0; } - mui_plug_t mui_plug = { - .init = _init, - .dispose = _dispose, - .draw = _draw, - .event = _event, + .name = "MII UI Test", + .init = _init, + .dispose = _dispose, + .draw = _draw, + .event = _event, }; \ No newline at end of file diff --git a/libmui/tests/mui_plugin.h b/libmui/tests/mui_plugin.h deleted file mode 100644 index 75d0224..0000000 --- a/libmui/tests/mui_plugin.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * mui_plugin.h - * - * Copyright (C) 2023 Michel Pollet - * - * SPDX-License-Identifier: MIT - */ - -#pragma once - -#include -#include - -struct mui_t; -struct mui_drawable_t; - -typedef struct mui_plug_t { - void * (*init)( - struct mui_t * ui, - struct mui_plug_t * plug, - struct mui_drawable_t * dr ); - void (*dispose)( - void * plug ); - int (*draw)( - struct mui_t *ui, - void *param, - struct mui_drawable_t * dr, - uint16_t all ); - int (*event)( - struct mui_t *ui, - void *param, - struct mui_event_t * event ); -} mui_plug_t; diff --git a/libmui/tests/mui_widgets_demo/Makefile b/libmui/tests/mui_widgets_demo/Makefile new file mode 100644 index 0000000..4b5b91e --- /dev/null +++ b/libmui/tests/mui_widgets_demo/Makefile @@ -0,0 +1,24 @@ +# Makefile +# +# Copyright (C) 2024 Michel Pollet +# +# SPDX-License-Identifier: MIT + +TARGET := mui_widgets_demo + +LIBMUI := ../../ + +all : $(TARGET) + +include $(LIBMUI)/Makefile.common + +.PHONY : $(TARGET) +$(TARGET) : $(LIB)/$(TARGET).so + +$(LIB)/$(TARGET).so : $(OBJ)/$(TARGET).o +$(LIB)/$(TARGET).so : LDLIBS += $(LIB)/libmui.a + +clean: + rm -rf $(LIB)/$(TARGET).so + +-include $(OBJ)/*.d diff --git a/libmui/tests/mui_widgets_demo/mui_color_apple.h b/libmui/tests/mui_widgets_demo/mui_color_apple.h new file mode 100644 index 0000000..bab2214 --- /dev/null +++ b/libmui/tests/mui_widgets_demo/mui_color_apple.h @@ -0,0 +1,110 @@ +// Autogenerated with: +// libmui/utils/png2raw.c -n mui_color_apple -o ui_gl/mui_color_apple.h docs/Apple_logo_rainbow_version2_28x28.png +// Image with a W:28px, H:28px and 4 channels +// Converted to ARGB8888 and premultiplied alpha +#pragma once +#define MUI_COLOR_APPLE_SIZE 786 +extern const uint32_t mui_color_apple[MUI_COLOR_APPLE_SIZE]; +#ifdef MUI_COLOR_APPLE_DEFINE +const uint32_t mui_color_apple[MUI_COLOR_APPLE_SIZE] = { +28, 28, // width, height +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x481b3413,0x99396f29,0x270e1c0a,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x13070d05,0xb3438230,0xff60ba45,0xff60ba45,0x240d1a09,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x02000100,0xbe478a33,0xff60ba45, +0xff60ba45,0xe155a43d,0x03010200,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x5d234319,0xff60ba45,0xff60ba45,0xff60ba45,0x6425491b,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xac417d2f,0xff60ba45,0xff60ba45, +0x9d3b722a,0x02010100,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x01000000,0x260d1b09,0x3614270e,0x260d1b09,0x02000100, +0x00000000,0xbe478a33,0xbe478a33,0x56203e17,0x03010200,0x270e1c09,0x38162911,0x280e1c09, +0x02000100,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x57203f17,0xda529f3b, +0xff60ba45,0xff60ba45,0xff60ba45,0xe054a33d,0x8d356626,0x4d1d3815,0x4b1a3612,0x90366927, +0xe556a73e,0xff60ba45,0xff60ba45,0xff60ba45,0xdf54a23c,0x6225471a,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x86326124,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0x99396f29,0x01000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x6c524e16,0xffc3b834,0xffc3b834,0xffc3b834, +0xffc3b834,0xffc3b834,0xffc3b834,0xffc3b834,0xffc3b834,0xffc3b834,0xffc3b834,0xffc3b834, +0xffc3b834,0xffc3b834,0xffc3b834,0xffc3b834,0xffc3b834,0xffc3b834,0x933b6d2d,0x08030502, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x100f0b03, +0xf0edac24,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0x8d8b6515,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x59573f0d,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xe8e5a623,0x0b0a0803,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x89855713, +0xfff9a323,0xfff9a323,0xfff9a323,0xfff9a323,0xfff9a323,0xfff9a323,0xfff9a323,0xfff9a323, +0xfff9a323,0xfff9a323,0xfff9a323,0xfff9a323,0xfff9a323,0xfff9a323,0xfff9a323,0xfff9a323, +0xa09c6616,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0xa79f5214,0xfff4811e,0xfff4811e,0xfff4811e,0xfff4811e, +0xfff4811e,0xfff4811e,0xfff4811e,0xfff4811e,0xfff4811e,0xfff4811e,0xfff4811e,0xfff4811e, +0xfff4811e,0xfff4811e,0xfff4811e,0xfff4811e,0x76703b0e,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xa49c5313, +0xfff4811e,0xfff4811e,0xfff4811e,0xfff4811e,0xfff4811e,0xfff4811e,0xfff4811e,0xfff4811e, +0xfff4811e,0xfff4811e,0xfff4811e,0xfff4811e,0xfff4811e,0xfff4811e,0xfff4811e,0xfff4811e, +0x9d964f13,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x7f773b12,0xfff07724,0xfff07724,0xfff07724,0xfff07724, +0xfff07724,0xfff07724,0xfff07724,0xfff07724,0xfff07724,0xfff07724,0xfff07724,0xfff07724, +0xfff07724,0xfff07724,0xfff07724,0xfff07724,0xe3d56a20,0x05040101,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x4e441112, +0xffdf393d,0xffdf393d,0xffdf393d,0xffdf393d,0xffdf393d,0xffdf393d,0xffdf393d,0xffdf393d, +0xffdf393d,0xffdf393d,0xffdf393d,0xffdf393d,0xffdf393d,0xffdf393d,0xffdf393d,0xffdf393d, +0xffdf393d,0x79691b1d,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x13100404,0xf8d9383c,0xffdf393d,0xffdf393d,0xffdf393d, +0xffdf393d,0xffdf393d,0xffdf393d,0xffdf393d,0xffdf393d,0xffdf393d,0xffdf393d,0xffdf393d, +0xffdf393d,0xffdf393d,0xffdf393d,0xffdf393d,0xffdf393d,0xfddd393d,0x74651a1c,0x01000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0xb49e3335,0xffe1484b,0xffe1484b,0xffe1484b,0xffe1484b,0xffe1484b,0xffe1484b,0xffe1484b, +0xffe1484b,0xffe1484b,0xffe1484b,0xffe1484b,0xffe1484b,0xffe1484b,0xffe1484b,0xffe1484b, +0xffe1484b,0xffe1484b,0xffe1484b,0xab983d3f,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x3e240e24,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0x5c351536, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0xb86b2b6c,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xc8752f75,0x04020102,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x26160a16,0xf4a265a2,0xff5ca4d9, +0xff5ca4d9,0xff5ca4d9,0xff5ca4d9,0xff5ca4d9,0xff5ca4d9,0xff5ca4d9,0xff5ca4d9,0xff5ca4d9, +0xff5ca4d9,0xff5ca4d9,0xff5ca4d9,0xff5ca4d9,0xff5ca4d9,0xf7a466a4,0x2c1a0b1a,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x630b3a52,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0x670c3c56,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x780e4664, +0xfb0099d7,0xff009cdb,0xff009cdb,0xff009cdb,0xd90085ba,0xaa13638e,0xa913638d,0xca007bad, +0xfe009bda,0xff009cdb,0xff009cdb,0xfd009bd9,0x7f0e4a6a,0x01000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x30001c29,0x8a005476,0x8a005476,0x3c072332, +0x00000000,0x00000000,0x00000000,0x00000000,0x30081e29,0x87005274,0x8c005578,0x3500202d, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +}; +#endif /* MUI_COLOR_APPLE_DEFINE */ diff --git a/libmui/tests/mui_widgets_demo/mui_widgets_demo.c b/libmui/tests/mui_widgets_demo/mui_widgets_demo.c new file mode 100644 index 0000000..f809ef3 --- /dev/null +++ b/libmui/tests/mui_widgets_demo/mui_widgets_demo.c @@ -0,0 +1,600 @@ +/* + * ui_tests.c + * + * Copyright (C) 2023 Michel Pollet + * + * SPDX-License-Identifier: MIT + */ +#define _GNU_SOURCE // for asprintf +#include +#include +#include +#include +#include + +#include "mui.h" +#include "mui_shell_plugin.h" +#include "c2_geometry.h" + +typedef struct cg_ui_t { + mui_t *ui; +} cg_ui_t; + + +static void +_test_show_about( + cg_ui_t *g) +{ + mui_window_t *w = mui_window_get_by_id(g->ui, FCC('a','b','o','t')); + if (w) { + mui_window_select(w); + return; + } + w = mui_alert(g->ui, C2_PT(0,0), + "About MUI", + "Version " MUI_VERSION "\n" + "Build " __DATE__ " " __TIME__, + MUI_ALERT_INFO); + mui_window_set_id(w, FCC('a','b','o','t')); +} + + +static void +_test_textedit_demo( + mui_t *mui) +{ + mui_window_t *w = mui_window_get_by_id(mui, FCC('t','e','s','t')); + if (w) { + mui_window_select(w); + return; + } + c2_pt_t where = {}; + c2_rect_t wpos = C2_RECT_WH(where.x, where.y, 510, 270); + if (where.x == 0 && where.y == 0) + c2_rect_offset(&wpos, + (mui->screen_size.x / 2) - (c2_rect_width(&wpos) / 2), + (mui->screen_size.y * 0.45) - (c2_rect_height(&wpos) / 2)); + w = mui_window_create(mui, wpos, NULL, MUI_WINDOW_LAYER_NORMAL, + "This is VERY Work in Progress", 0); + mui_window_set_id(w, FCC('t','e','s','t')); + + mui_control_t * c = NULL; + c2_rect_t cf; + + cf = C2_RECT_WH(10, 10, 480, 170); + c = mui_textedit_control_new(w, cf, + MUI_CONTROL_TEXTBOX_FRAME | MUI_CONTROL_TEXTEDIT_VERTICAL); + mui_textedit_set_text(c, + "The quick brown fox Jumps over the Lazy dog.\n" + "Lorem Ipsum is simply dummy text of the printing " + "and typesetting industry. Lorem Ipsum has been the " + "industry's standard dummy text ever since the 1500s.\n" + #if 1 + "Now let's step back and look at what's happening. " + "Writing to the disk is a load and shift process, a " + "little like HIRES pattern outputs but much slower.\n" + "Also, the MPU takes a very active role in the loading " + "and shifting of disk write data. There are two 8-state " + "loops in the WRITE sequence. After initializing the " + "WRITE sequence, data is stored in the data register " + "at a critical point in the A7' loop. As (quickly " + "thereafter as the 6502 can do it, the sequencer is " + "configured to shift left at the critical point " + "instead of loading." + #endif + ); + c2_rect_bottom_of(&cf, cf.b, 10); + cf.b = cf.t + 35; + c = mui_textedit_control_new(w, cf, MUI_CONTROL_TEXTBOX_FRAME); + mui_textedit_set_text(c, + "Fulling Mill Online Return Center.pdf"); + +} + +static void +_test_static_text_and_boxes( + struct mui_t *ui) +{ + mui_window_t *w = mui_window_get_by_id(ui, FCC('s','t','x','t')); + if (w) { + mui_window_select(w); + return; + } + c2_pt_t where = {}; + c2_rect_t wpos = C2_RECT_WH(where.x, where.y, 566, 320); + if (where.x == 0 && where.y == 0) + c2_rect_offset(&wpos, + (ui->screen_size.x / 2) - (c2_rect_width(&wpos) / 2), + (ui->screen_size.y * 0.45) - (c2_rect_height(&wpos) / 2)); + w = mui_window_create(ui, wpos, NULL, MUI_WINDOW_LAYER_NORMAL, + "Static Text and Boxes", 0); + mui_window_set_id(w, FCC('s','t','x','t')); + + float base_size = mui_font_find(ui, "main")->size; + float margin = base_size * 0.7; + mui_control_t * c = NULL; + c2_rect_t cf, cb; + cf = C2_RECT_WH(margin, margin/2, 250, 3 + base_size * 4); + + c = mui_groupbox_new(w, cf, "Justification: ", 0); + cb = cf; + cb.t += base_size; + cb.b = cb.t + base_size; + cb.l += margin / 3; + cb.r = cf.r - (margin / 3); + uint16_t debug_frames = 0;//MUI_CONTROL_TEXTBOX_FRAME; + c = mui_textbox_new(w, cb, "Left Aligned", NULL, + MUI_TEXT_ALIGN_LEFT | debug_frames); + cb = c2_rect_bottom_of(&cb, cb.b, 0); + c = mui_textbox_new(w, cb, "Centered & Grayed", NULL, + MUI_TEXT_ALIGN_CENTER | debug_frames); + mui_control_set_state(c, MUI_CONTROL_STATE_DISABLED); + cb = c2_rect_bottom_of(&cb, cb.b, 0); + c = mui_textbox_new(w, cb, "Right Aligned", NULL, + MUI_TEXT_ALIGN_RIGHT | debug_frames); + c2_rect_t bottom_box = cf; + bottom_box = c2_rect_bottom_of(&bottom_box, bottom_box.b, margin*1.5); + + c2_rect_t sr = cf; + + cf = c2_rect_right_of(&cf, cf.r, margin); + // plonk in a separator to demo them + sr.r = cf.r; + sr.t = sr.b - 2; + c2_rect_inset(&sr, 80, 0); + sr = c2_rect_bottom_of(&sr, sr.b, margin); + mui_separator_new(w, sr); + + c = mui_groupbox_new(w, cf, "Style: ", MUI_TEXT_ALIGN_RIGHT); + cb = cf; + cb.t += base_size; + cb.b = cb.t + base_size; + cb.l += margin / 3; + cb.r = cf.r - (margin / 3); + c = mui_textbox_new(w, cb, "Synthetic Bold", NULL, + MUI_TEXT_ALIGN_CENTER | MUI_TEXT_STYLE_BOLD); + cb = c2_rect_bottom_of(&cb, cb.b, 0); + c = mui_textbox_new(w, cb, "With Narrow Spacing", NULL, + MUI_TEXT_ALIGN_CENTER | MUI_TEXT_STYLE_NARROW); + cb = c2_rect_bottom_of(&cb, cb.b, 0); + c = mui_textbox_new(w, cb, "El Cheapo Underline", NULL, + MUI_TEXT_ALIGN_CENTER | MUI_TEXT_STYLE_ULINE); + cb = c2_rect_bottom_of(&cb, cb.b, 0); + + cf = bottom_box; + c = mui_groupbox_new(w, cf, "Spacing: ", 0); + cb = cf; + cb.t += base_size; + cb.b = cb.t + base_size*3; + cb.l += margin / 3; + cb.r = cb.l + (c2_rect_width(&cf) / 2) - (margin / 3); + c = mui_textbox_new(w, cb, "Normal\nLine\nSpacing", NULL, + MUI_TEXT_ALIGN_CENTER | 0 | debug_frames); + cb = c2_rect_right_of(&cb, cb.r, margin/3); + c = mui_textbox_new(w, cb, "Compact\nLine\nSpacing", NULL, + MUI_TEXT_ALIGN_CENTER | MUI_TEXT_ALIGN_COMPACT | debug_frames); + + cf = c2_rect_right_of(&cf, cf.r, margin); + c = mui_groupbox_new(w, cf, "Justification: ", 0); + cb = cf; + cb.t += base_size; + cb.b = cb.t + base_size * 3; + cb.l += margin / 3; + cb.r = cf.r - (margin / 3); + c = mui_textbox_new(w, cb, + "This quick brown fox is both Narrow, " + "and Fully Justified these days.", NULL, + MUI_TEXT_STYLE_NARROW | MUI_TEXT_ALIGN_FULL | debug_frames); +} + +/* + * This demos most of the controls, buttons, radios, checkboxes, listbox + * and a few other things. + */ +static void +_test_demo_all_controls( + struct mui_t *ui) +{ + mui_window_t *w = mui_window_get_by_id(ui, FCC('d','e','m','o')); + if (w) { + mui_window_select(w); + return; + } + c2_pt_t where = {}; + c2_rect_t wpos = C2_RECT_WH(where.x, where.y, 620, 380); + if (where.x == 0 && where.y == 0) + c2_rect_offset(&wpos, + (ui->screen_size.x / 2) - (c2_rect_width(&wpos) / 2), + (ui->screen_size.y * 0.45) - (c2_rect_height(&wpos) / 2)); + w = mui_window_create(ui, wpos, NULL, MUI_WINDOW_LAYER_NORMAL, + "Control Demo", 0); + mui_window_set_id(w, FCC('d','e','m','o')); + + float base_size = mui_font_find(ui, "main")->size; + float margin = base_size * 0.7; + mui_control_t * c = NULL; + c2_rect_t cf; + cf = C2_RECT_WH(0, 0, base_size * 5, base_size * 1.4); + c2_rect_left_of(&cf, c2_rect_width(&w->content), margin); + c2_rect_top_of(&cf, c2_rect_height(&w->content), margin); + + c = mui_button_new(w, + cf, MUI_BUTTON_STYLE_DEFAULT, + "Default", 0); + c->key_equ = MUI_KEY_EQU(0, 13); // return + cf = c2_rect_left_of(&cf, cf.l, margin); + c = mui_button_new(w, + cf, MUI_BUTTON_STYLE_NORMAL, + "Normal", 0); + c->key_equ = MUI_KEY_EQU(0, 32); // space + cf = c2_rect_left_of(&cf, cf.l, margin); + c = mui_button_new(w, + cf, MUI_BUTTON_STYLE_NORMAL, + "Disabled", 0); + mui_control_set_state(c, MUI_CONTROL_STATE_DISABLED); + + /* Radio can have a mask, if so, they each UID that matches the + * mask will switch like radio buttons ought to, without having to + * keep track of which are on or off */ + uint32_t radio_uid = FCC('r','a','d','0'); + cf = C2_RECT_WH(margin, margin, base_size * 7, base_size * 1.4); + c = mui_button_new(w, cf, MUI_BUTTON_STYLE_RADIO, + "Radio Button", FCC_INDEXED(radio_uid, 0)); + c->uid_mask = FCC_MASK; + mui_control_set_value(c, 1); + cf = c2_rect_bottom_of(&cf, cf.b, 0); + c = mui_button_new(w, cf, MUI_BUTTON_STYLE_RADIO, + "Other Radio", FCC_INDEXED(radio_uid, 1)); + mui_control_set_state(c, MUI_CONTROL_STATE_DISABLED); + c->uid_mask = FCC_MASK; + cf = c2_rect_bottom_of(&cf, cf.b, 0); + c = mui_button_new(w, cf, MUI_BUTTON_STYLE_RADIO, + "Third Choice", FCC_INDEXED(radio_uid, 2)); + c->uid_mask = FCC_MASK; + c2_rect_t first_column = cf; + + cf = c2_rect_right_of(&cf, cf.r, margin); + cf.r = cf.l + base_size * 6; + c2_rect_offset(&cf, 0, -cf.t + margin); + c = mui_button_new(w, + cf, MUI_BUTTON_STYLE_CHECKBOX, + "Checkbox", 0); + cf = c2_rect_bottom_of(&cf, cf.b, margin/2); + c = mui_button_new(w, + cf, MUI_BUTTON_STYLE_CHECKBOX, + "Another Checkbox", 0); + mui_control_set_value(c, 1); + c2_rect_t second_column = cf; + + cf = first_column; + cf = c2_rect_bottom_of(&cf, cf.b, margin); + c2_rect_t lr = cf; + lr.r = lr.l + base_size * 3; + c = mui_textbox_new(w, lr, "Popup:", NULL, MUI_TEXT_ALIGN_LEFT); + cf = c2_rect_right_of(&cf, lr.r, 0); + //c2_rect_offset(&cf, 0, -cf.t + margin); + cf.b = cf.t + 34; + c = mui_popupmenu_new(w, cf, "Popup", 0, MUI_TEXT_ALIGN_LEFT); + mui_menu_items_t *items = mui_popupmenu_get_items(c); + mui_menu_items_add(items, (mui_menu_item_t){.title="1200", .uid=1200 }); + mui_menu_items_add(items, (mui_menu_item_t){.title="2400", .uid=2400 }); + mui_menu_items_add(items, (mui_menu_item_t){.title="4800", .uid=4800 }); + mui_menu_items_add(items, (mui_menu_item_t){.title="9600", .uid=9600 }); + mui_menu_items_add(items, (mui_menu_item_t){.title="19200", .uid=19200 }); + // popup needs to be NULL terminated, AND prepared() + mui_menu_items_add(items, (mui_menu_item_t){.title=NULL }); + mui_popupmenu_prepare(c); + + lr = c2_rect_bottom_of(&lr, lr.b, margin/4); + lr.r = lr.l + base_size * 3; + c = mui_textbox_new(w, lr, "Icons:", NULL, MUI_TEXT_ALIGN_LEFT); + + cf = c2_rect_bottom_of(&cf, cf.b, margin/4); + //c2_rect_offset(&cf, 0, -cf.t + margin); + cf.b = cf.t + 34; + c = mui_popupmenu_new(w, cf, "Popup", 0, MUI_TEXT_ALIGN_LEFT); + items = mui_popupmenu_get_items(c); + mui_menu_items_add(items, + (mui_menu_item_t){.title="Icon", .uid=1200, .icon=MUI_ICON_HARDDISK }); + mui_menu_items_add(items, + (mui_menu_item_t){.title="Others", .uid=2400, .icon=MUI_ICON_FOLDER }); + // popup needs to be NULL terminated, AND prepared() + mui_menu_items_add(items, (mui_menu_item_t){.title=NULL }); + mui_popupmenu_prepare(c); + + lr = c2_rect_bottom_of(&lr, lr.b, margin/4); + lr.r = lr.l + base_size * 4.2; + c = mui_textbox_new(w, lr, "Scrollbar:", NULL, MUI_TEXT_ALIGN_LEFT); + c2_rect_right_of(&cf, lr.r, margin/4); + cf = c2_rect_bottom_of(&cf, cf.b, margin/2); + cf.b = cf.t + base_size; + cf.r = cf.l + 200; + c = mui_scrollbar_new(w, cf, 0, 5, 20); + mui_scrollbar_set_max(c, 255); +// mui_scrollbar_set_page(c, 10); + + cf = second_column; + cf.b = cf.t + base_size; + cf = c2_rect_right_of(&cf, cf.r, margin); + c2_rect_offset(&cf, 0, -cf.t + margin); + c = mui_textbox_new(w, cf, "Listbox:", NULL, 0); + c2_rect_bottom_of(&cf, cf.b, 0); + cf.b = cf.t + 6 * base_size; + c = mui_listbox_new(w, cf, 0); + mui_listbox_elems_t * elems = mui_listbox_get_elems(c); + for (int i = 0; i < 25; i++) { + mui_listbox_elem_t e = { + .icon = MUI_ICON_FILE, + }; + asprintf((char**)&e.elem, "Item %d", i); + mui_listbox_elems_add(elems, e); + } + mui_listbox_prepare(c); +} + +#define MUI_COLOR_APPLE_DEFINE +#include "mui_color_apple.h" + +mui_menu_item_t m_color_apple_menu[] = { + { .color_icon = mui_color_apple, .is_menutitle = 1, }, + { .title = "About MUI…", + .uid = FCC('a','b','o','t') }, +// { .title = "-", }, + { }, +}; + +mui_menu_item_t m_file_menu[] = { + { .title = "Quit", + .uid = FCC('q','u','i','t'), + .key_equ = MUI_KEY_EQU(MUI_MODIFIER_SUPER, 'Q'), + .kcombo = MUI_GLYPH_COMMAND "Q" }, + { }, +}; + +mui_menu_item_t m_sub_menu1[] = { + { .title = "Hierarchical Menu", + .uid = FCC('s','h','m','b'), + .key_equ = MUI_KEY_EQU(MUI_MODIFIER_RCTRL, MUI_KEY_F1), + .kcombo = MUI_GLYPH_CONTROL MUI_GLYPH_F1 }, + { .title = "Disabled item", + .disabled = 1, + .key_equ = MUI_KEY_EQU(MUI_MODIFIER_RCTRL, MUI_KEY_F11), + .kcombo = MUI_GLYPH_CONTROL MUI_GLYPH_F11 }, + { .title = "-", }, + { .title = "Tick One", + .mark = MUI_GLYPH_TICK, + .uid = FCC('v','d','c','0') }, + { .title = "Tick Two", + .uid = FCC('v','d','c','1') }, + { }, +}; + +mui_menu_item_t m_sub_menu2[] = { + { .title = "Other Sub Menu", + .uid = FCC('s','h','m','b'), + .key_equ = MUI_KEY_EQU(MUI_MODIFIER_RCTRL, MUI_KEY_F2), + .kcombo = MUI_GLYPH_CONTROL MUI_GLYPH_F2 }, + { .title = "Other Marked Item", + .uid = FCC('s','h','m','b'), + .mark = "!", }, + { }, +}; + +mui_menu_item_t m_menu_demo[] = { + { .title = MUI_GLYPH_OAPPLE "-Control-Reset", + .uid = FCC('c','r','e','s'), + .key_equ = MUI_KEY_EQU(MUI_MODIFIER_RCTRL|MUI_MODIFIER_RSHIFT, MUI_KEY_F12), + .kcombo = MUI_GLYPH_CONTROL MUI_GLYPH_SHIFT MUI_GLYPH_F12 }, + { .title = "Control-Reset", + .uid = FCC('r','e','s','t'), + .key_equ = MUI_KEY_EQU(MUI_MODIFIER_RCTRL, MUI_KEY_F12), + .kcombo = MUI_GLYPH_CONTROL MUI_GLYPH_F12 }, + { .title = "-", }, + { .title = "Sub Menu", + .kcombo = MUI_GLYPH_SUBMENU, + .submenu = m_sub_menu1 }, + { .title = "Other Sub Menu", + .kcombo = MUI_GLYPH_SUBMENU, + .submenu = m_sub_menu2 }, + { }, +}; + +mui_menu_item_t m_windows_menu[] = { + { .title = "Basic Alert…", + .uid = FCC('a','l','e','r'), }, + { .title = "Standard 'get' file…", + .uid = FCC('s','t','d','g'), }, + { .title = "Static Text…", + .uid = FCC('s','t','x','t'), }, + { .title = "Text Edit (WIP!)…", + .uid = FCC('t','x','t','e'), }, + { .title = "Demo All Controls…", + .uid = FCC('d','e','m','o'), }, + { }, +}; + +/* + * This is a 'window' action function that is called when the Alert window + * is interacted with. It typically you will get an ACTION_SELECT with + * ok or cancel. + */ +static int +_test_alert_action_cb( + mui_window_t *win, + void * cb_param, + uint32_t what, + void * param) +{ +// cg_ui_t *g = cb_param; + printf("%s %4.4s\n", __func__, (char*)&what); + switch (what) { + case MUI_CONTROL_ACTION_SELECT: { + mui_control_t * c = param; + uint32_t uid = mui_control_get_uid(c); + printf("%s Button %4.4s\n", __func__, (char*)&uid); + } break; + } + return 0; +} + +static int +_test_stdfile_action_cb( + mui_window_t *win, + void * cb_param, + uint32_t what, + void * param) +{ +// cg_ui_t *g = cb_param; + printf("%s %4.4s\n", __func__, (char*)&what); + switch (what) { + case MUI_CONTROL_ACTION_SELECT: { + mui_control_t * c = param; + uint32_t uid = mui_control_get_uid(c); + printf("%s Button %4.4s\n", __func__, (char*)&uid); + } break; + case MUI_STDF_ACTION_CANCEL: { + printf("%s cancel was clicked\n", __func__); + mui_window_dispose(win); + } break; + } + return 0; +} + +int +_test_menubar_action( + mui_window_t *win, + void * cb_param, + uint32_t what, + void * param) +{ + cg_ui_t *g = cb_param; + +// printf("%s %4.4s\n", __func__, (char*)&what); + + switch (what) { + case MUI_MENUBAR_ACTION_PREPARE: { +// mui_menu_item_t * items = param; + } break; + case MUI_MENUBAR_ACTION_SELECT: { + mui_menu_item_t * item = param; + printf("%s Selected %4.4s '%s'\n", __func__, + (char*)&item->uid, item->title); + switch (item->uid) { + case FCC('a','b','o','t'): { + _test_show_about(g); + } break; + case FCC('q','u','i','t'): { + printf("%s Quit\n", __func__); + g->ui->quit_request = 1; + } break; + case FCC('a','l','e','r'): { + mui_window_t * w = mui_alert(g->ui, C2_PT(0,0), + "Testing one Two", + "Do you really want the printer to catch fire?\n" + "This operation cannot be cancelled.", + MUI_ALERT_WARN); + mui_window_set_action(w, _test_alert_action_cb, g); + } break; + case FCC('s','t','d','g'): { + mui_window_t *w = mui_stdfile_get(g->ui, + C2_PT(0, 0), + "Select image for SmartPort card", + "hdv,po,2mg", + getenv("HOME"), 0); + mui_window_set_action(w, _test_stdfile_action_cb, g); + } break; + case FCC('t','x','t','e'): + _test_textedit_demo(g->ui); + break; + case FCC('s','t','x','t'): + _test_static_text_and_boxes(g->ui); + break; + case FCC('d','e','m','o'): + _test_demo_all_controls(g->ui); + break; + default: + printf("%s menu item %4.4s %s IGNORED\n", + __func__, (char*)&item->uid, item->title); + break; + } + } break; + default: + printf("%s %4.4s IGNORED?\n", __func__, (char*)&what); + break; + } + + return 0; +} + + + +static void * +_init( + struct mui_t * ui, + struct mui_plug_t * plug, + mui_drawable_t * pix) +{ + mui_init(ui); + ui->screen_size = pix->pix.size; + asprintf(&ui->pref_directory, "%s/.local/share/mui", getenv("HOME")); + + cg_ui_t *g = calloc(1, sizeof(*g)); + g->ui = ui; + printf("%s\n", __func__); + mui_window_t * mbar = mui_menubar_new(ui); + mui_window_set_action(mbar, _test_menubar_action, g); + + mui_menubar_add_menu(mbar, FCC('a','p','p','l'), m_color_apple_menu, 2); + mui_menubar_add_simple(mbar, "File", + FCC('f','i','l','e'), + m_file_menu); + mui_menubar_add_simple(mbar, "Menus", + FCC('m','e','n','u'), + m_menu_demo); + mui_menubar_add_simple(mbar, "Windows", + FCC('w','i','n','d'), + m_windows_menu); +// _test_textedit_demo(ui); +// _test_static_text_and_boxes(ui); + _test_demo_all_controls(ui); + return g; +} + +static void +_dispose( + void *_ui) +{ + cg_ui_t *ui = _ui; + printf("%s\n", __func__); + mui_dispose(ui->ui); + free(ui); +} + +static int +_draw( + struct mui_t *ui, + void *param, + mui_drawable_t *dr, + uint16_t all) +{ + mui_draw(ui, dr, all); + return 1; +} + +static int +_event( + struct mui_t *ui, + void *param, + mui_event_t *event) +{ + mui_handle_event(ui, event); + return 0; +} + +mui_plug_t mui_plug = { + .name = "MUI Widgets Demo", + .init = _init, + .dispose = _dispose, + .draw = _draw, + .event = _event, +}; \ No newline at end of file diff --git a/libmui/utils/png2raw.c b/libmui/utils/png2raw.c new file mode 100644 index 0000000..64c4153 --- /dev/null +++ b/libmui/utils/png2raw.c @@ -0,0 +1,108 @@ +#!/usr/bin/tcc -run +/* + * This tool is made to load a PNG, and convert it to a C array with + * ARGB8888 format, premultiplied alpha. + * It uses stb_image.h to load the PNG, which isn't included in the + * repository. The tool isn't essential to build, but is useful if you + * want icons in your menus. + * The output is a C array, with the width and height of the image + * followed by the pixels in ARGB8888 format. + * The output is written to stdout, unless -o is used. + */ +#include +#define STB_IMAGE_IMPLEMENTATION +#define STBI_NO_SIMD +#define STBI_NO_HDR +#include "/opt/projects/stb/stb_image.h" + +static void usage(const char *argv0) +{ + fprintf(stderr, + "Usage: %s -n " + "[-o ] " + "[-t ] " + "\n", + argv0); +} + +int main(int argc, char **argv) +{ + const char *array_name = NULL; + const char *fname = "docs/Apple_logo_rainbow_version2_28x28.png"; + const char *int_type = "uint32_t"; + FILE *out = stdout; + + for (int i = 1; i < argc; i++) { + if (!strcmp(argv[i], "-n") && i + 1 < argc) { + array_name = argv[i + 1]; + i++; + } else if (!strcmp(argv[i], "-o") && i + 1 < argc) { + out = fopen(argv[i + 1], "w"); + if (!out) { + fprintf(stderr, "Error opening %s\n", argv[i + 1]); + usage(argv[0]); + return 1; + } + i++; + } else if (!strcmp(argv[i], "-t") && i + 1 < argc) { + int_type = argv[i + 1]; + i++; + } else if (!strcmp(argv[i], "-h")) { + usage(argv[0]); + return 0; + } else { + fname = argv[i]; + } + } + if (!array_name) { + fprintf(stderr, "Missing array name\n"); + usage(argv[0]); + return 1; + } + char define_name[256]; + strcpy(define_name, array_name); + for (int i = 0; define_name[i]; i++) + define_name[i] = toupper(define_name[i]); + int width, height, channels; + unsigned char *data = stbi_load(fname, &width, &height, &channels, 0); + if (!data) { + fprintf(stderr, "Error loading image\n"); + return 1; + } + fprintf(out, "// Autogenerated with:\n//\t"); + for (int i = 0; i < argc; i++) + fprintf(out, " %s", argv[i]); + fprintf(out, "\n"); + fprintf(out, "// Image with a W:%dpx, H:%dpx and %d channels\n" + "// Converted to ARGB8888 and premultiplied alpha\n" + "#pragma once\n", + width, height, channels); + fprintf(out, "#define %s_SIZE %d\n", define_name, 2 + (width * height)); + fprintf(out, "extern const %s %s[%s_SIZE];\n", int_type, array_name, define_name); + fprintf(out, "#ifdef %s_DEFINE\n", define_name); + fprintf(out, "const %s %s[%s_SIZE] = {\n", int_type, array_name, define_name); + fprintf(out, "%d, %d, // width, height\n", width, height); + uint32_t *pixels = (uint32_t *)data; + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + uint32_t pixel = pixels[y * width + x]; + // flip R and B channels + pixel = (pixel & 0xff00ff00) | + ((pixel & 0xff) << 16) | ((pixel >> 16) & 0xff); + // also premultiply channels with alpha + uint32_t a = pixel >> 24; + pixel = (pixel & ~(0xff << 0)) | + ((((((pixel >> 0) & 0xff) * a) >> 8) & 0xff) << 0); + pixel = (pixel & ~(0xff << 8)) | + ((((((pixel >> 8) & 0xff) * a) >> 8) & 0xff) << 8); + pixel = (pixel & ~(0xff << 16)) | + ((((((pixel >> 16) & 0xff) * a) >> 8) & 0xff) << 16); + fprintf(out, "0x%08x,", pixel); + if (((y * height) + x) % 8 == 7) + fprintf(out, "\n"); + } + } + fprintf(out, "};\n"); + fprintf(out, "#endif /* %s_DEFINE */\n", define_name); + return 0; +} diff --git a/src/drivers/mii_disk2.c b/src/drivers/mii_disk2.c index 31db0aa..4f525a3 100644 --- a/src/drivers/mii_disk2.c +++ b/src/drivers/mii_disk2.c @@ -211,7 +211,7 @@ _mii_disk2_reset( struct mii_slot_t *slot ) { mii_card_disk2_t *c = slot->drv_priv; - printf("%s\n", __func__); +// printf("%s\n", __func__); c->selected = 1; _mii_floppy_motor_off_cb(mii, c); c->selected = 0; @@ -247,11 +247,11 @@ _mii_disk2_access( int read = 0; switch (psw) { case 0x00 ... 0x07: { + static const int8_t delta[4][4] = { + {0, 1, 2, -1}, {-1, 0, 1, 2}, {-2, -1, 0, 1}, {1, -2, -1, 0}, + }; if (on) { - if ((f->stepper + 3) % 4 == p) - _mii_disk2_switch_track(mii, c, -2); - else if ((f->stepper + 1) % 4 == p) - _mii_disk2_switch_track(mii, c, 2); + _mii_disk2_switch_track(mii, c, delta[f->stepper][p] * 2); f->stepper = p; } } break; @@ -265,14 +265,15 @@ _mii_disk2_access( mii_raise_signal(c->sig + SIG_MOTOR, 1); } else { int32_t timer = mii_timer_get(mii, c->timer_off); - mii_timer_set(mii, c->timer_off, timer + 1000000); // one second + mii_timer_set(mii, c->timer_off, + timer + (1000000 * mii->speed)); // one second } } break; case 0x0A: case 0x0B: { if (on != c->selected) { c->selected = on; - printf("SELECTED DRIVE: %d\n", c->selected); + // printf("SELECTED DRIVE: %d\n", c->selected); c->floppy[on].motor = f->motor; f->motor = 0; mii_raise_signal(c->sig + SIG_MOTOR, 0); @@ -492,7 +493,7 @@ static const uint8_t lss_rom16s[16][16] = { [READ|LOAD|QA1|RP0]={ 0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A }, }; -static const uint8_t SEQUENCER_ROM_16[256] = { +static const uint8_t SEQUENCER_ROM_16[256] __attribute__((unused)) = { // See Understanding the Apple IIe, Figure 9.11 The DOS 3.3 Logic State Sequencer // Note that the column order here is NOT the same as in Figure 9.11 for Q7 H (Write). // @@ -625,8 +626,8 @@ _mii_disk2_lss_tick( if (f->tracks[track_id].virgin) { f->tracks[track_id].virgin = 0; f->bit_position = 0; - if (track_id == 0) - _mii_disk2_vcd_debug(c, 1); + // if (track_id == 0) + // _mii_disk2_vcd_debug(c, 1); } f->seed_dirty++; } @@ -694,13 +695,17 @@ _mii_mish_d2( mii_floppy_t *f = &c->floppy[sel]; if (argv[2]) { int track = atoi(argv[2]); + if (track < 0 || track >= MII_FLOPPY_TRACK_COUNT) { + printf("Invalid track %d\n", track); + return; + } int count = 256; if (argv[3]) { if (!strcmp(argv[3], "save")) { // save one binary file in tmp with just that track uint8_t *data = f->track_data[track]; char *filename; - asprintf(&filename, "/tmp/track_%d.bin", track); + asprintf(&filename, "/tmp/track_%02d.bin", track); int fd = open(filename, O_CREAT | O_WRONLY, 0666); write(fd, data, MII_FLOPPY_DEFAULT_TRACK_SIZE); close(fd); @@ -729,7 +734,7 @@ _mii_mish_d2( printf("\n"); } } else { - printf("track [count]\n"); + printf("track [count]\n"); } return; } @@ -783,6 +788,7 @@ _mii_mish_d2( if (!strcmp(argv[1], "vcd")) { mii_card_disk2_t *c = _mish_d2; _mii_disk2_vcd_debug(c, !c->vcd); + return; } } @@ -791,6 +797,16 @@ _mii_mish_d2( MISH_CMD_NAMES(d2, "d2"); MISH_CMD_HELP(d2, "d2: disk ][ internals", - " : dump status" + " : dump status", + " list: list drives", + " sel [0-1]: select drive", + " wp [0-1]: write protect", + " track [count]: dump track", + " track save: save in /tmp/trackXX.bin", + " dirty: mark track as dirty", + " resync: resync all tracks", + " map: show track map", + " trace: toggle debug trace", + " vcd: toggle VCD debug" ); MII_MISH(d2, _mii_mish_d2); diff --git a/src/drivers/mii_epromcard.c b/src/drivers/mii_epromcard.c index 3c54499..0dfa66f 100644 --- a/src/drivers/mii_epromcard.c +++ b/src/drivers/mii_epromcard.c @@ -115,7 +115,7 @@ _mii_ee_command( res = 0; } break; - case MII_SLOT_DRIVE_LOAD: + case MII_SLOT_DRIVE_LOAD: { const char *filename = param; mii_dd_file_t *file = NULL; if (filename && *filename) { @@ -126,7 +126,7 @@ _mii_ee_command( mii_dd_drive_load(&c->drive[0], file); c->file = file ? file->map : (uint8_t*)mii_1mb_rom_data; res = 0; - break; + } break; } return res; } diff --git a/src/drivers/mii_mb.c b/src/drivers/mii_mb.c new file mode 100644 index 0000000..c25aa3a --- /dev/null +++ b/src/drivers/mii_mb.c @@ -0,0 +1,171 @@ + +#include +#include +#include + +#include "mii.h" +#include "mockingboard.h" + +typedef struct mii_mb_t { + mii_t * mii; + uint8_t init; // init sequence bits + bool init_done; + uint8_t timer; + struct mb_t *mb; +} mii_mb_t; + + +static uint64_t +_mii_mb_timer( + mii_t * mii, + void * param ) +{ + mii_mb_t * mb = param; + mb_clock_t clock = { + .ref_step = 1, + .ts = mii->cpu.total_cycle, + }; + // delta is ALWAYS negative or zero here + int32_t delta = mii_timer_get(mii, mb->timer); + uint64_t ret = -delta + 1; + if (mb_io_sync(mb->mb, &clock)) { + // printf("MB Sync IRQ\n"); + mii->cpu_state.irq = 1; + } + return ret; +} + +static void +mii_mb_start( + mii_mb_t *mb) +{ +// mb_io_reset(mb->mb, &clock); + printf("MB Start\n"); + mb->init = 0; + mb->init_done = true; + mb->timer = mii_timer_register(mb->mii, _mii_mb_timer, mb, 1, __func__); +} + +/* + * this is a protothread, so remember no locals that will survive a yield() + */ +static bool +_mii_mb_romspace_access( + struct mii_bank_t *bank, + void *param, + uint16_t addr, + uint8_t * byte, + bool write) +{ + if (!bank) { // TODO: dispose + printf("%s: no bank\n", __func__); + return false; + } + mii_mb_t * mb = param; +// addr &= 0xff; +// if (mb->init_done) + switch (addr & 0xff) { + case MB_CARD_MOCKINGBOARD_ORB1 ... MB_CARD_MOCKINGBOARD_ORB1+0xf: + case MB_CARD_MOCKINGBOARD_ORB2 ... MB_CARD_MOCKINGBOARD_ORB2+0xf: + if (write) { + /* + * Once code has writen to the first registers to initialize them, + * the mockingboard is considered initialized. + * At that point we take over the 'reading' of these addresees, + * so the CARD rom (the mouse) can't read them anymore. + * It *still* should be OK as these address do not overlap the + * mouse ROM. + */ + if ((addr & 0x7f) == 2 && *byte == 0xff) { + if (!mb->init_done) + mii_mb_start(mb); + } + // printf("%s: %s addr %04x byte %02x write %d\n", __func__, bank->name, addr, *byte, write); + mb_io_write(mb->mb, *byte, addr & 0xff); + } else if (mb->init_done) { + mb_io_read(mb->mb, byte, addr & 0xff); + } + // printf("%s: %s addr %04x byte %02x write %d\n", __func__, + // bank->name, addr, *byte, write); + return mb->init_done; + break; + default: + if (!write) + *byte = mii_video_get_vapor(mb->mii); + break; + } + return false; +} + +static int +_mii_mb_probe( + mii_t *mii, + uint32_t flags) +{ + printf("%s %s\n", __func__, flags & MII_INIT_MOCKINGBOARD ? + "enabled" : "disabled"); +// if (!(flags & MII_INIT_MOCKINGBOARD)) +// return 0; + return 1; +} + + +static int +_mii_mb_init( + mii_t * mii, + struct mii_slot_t *slot ) +{ + printf("%s\n", __func__); + mii_mb_t * mb = calloc(1, sizeof(*mb)); + slot->drv_priv = mb; + mb->mii = mii; + mb->mb = mb_alloc(); + mb_clock_t clock = { + .ref_step = 1, + .ts = mii->cpu.total_cycle, + }; + mb_io_reset(mb->mb, &clock); + uint16_t addr = 0xc100 + (slot->id * 0x100); + mii_mb_start(mb); + mii_bank_install_access_cb(&mii->bank[MII_BANK_CARD_ROM], + _mii_mb_romspace_access, mb, addr >> 8, 0); + return 0; +} + + +static void +_mii_mb_reset( + mii_t * mii, + struct mii_slot_t *slot ) +{ + mii_mb_t *mb = slot->drv_priv; + printf("%s\n", __func__); + mb_clock_t clock = { + .ref_step = 1, + .ts = mii->cpu.total_cycle, + }; + mb_io_reset(mb->mb, &clock); +} + +static uint8_t +_mii_mb_iospace_access( + mii_t * mii, struct mii_slot_t *slot, + uint16_t addr, uint8_t byte, bool write) +{ +// mii_mb_t *mb = slot->drv_priv; + if (!write) + byte = mii_video_get_vapor(mii); + return byte; +} + +static mii_slot_drv_t _driver = { + .name = "mockingboard", + .desc = "Mockingboard", +// .enable_flag = MII_INIT_MOCKINGBOARD, + .init = _mii_mb_init, + .reset = _mii_mb_reset, + .access = _mii_mb_iospace_access, +// .probe = _mii_mb_probe, +}; +MI_DRIVER_REGISTER(_driver); + diff --git a/src/drivers/mii_mouse.c b/src/drivers/mii_mouse.c index ae13a01..54cd8c0 100644 --- a/src/drivers/mii_mouse.c +++ b/src/drivers/mii_mouse.c @@ -7,8 +7,6 @@ * */ -#include "mii.h" - // https://github.com/ivanizag/izapple2/blob/master/cardMouse.go // https://hackaday.io/project/19925-aiie-an-embedded-apple-e-emulator/log/188017-entry-23-here-mousie-mousie-mousie // https://github.com/ct6502/apple2ts/blob/main/src/emulator/mouse.ts @@ -170,7 +168,7 @@ _mii_mouse_init( // Set 8 entrypoints to sofstwitches 2 to 1f for (int i = 0; i < 14; i++) { - uint8_t base = 0x60 + 0x05 * i; + uint8_t base = 0x30 + 0x05 * i; data[0x12+i] = base; data[base+0] = 0x8D; // STA $C0x2 data[base+1] = 0x82 + i + ((slot->id + 1) << 4); @@ -212,12 +210,12 @@ _mii_mouse_access( if (write) { byte &= 0xf; mii_bank_poke(main, MOUSE_MODE + c->slot_offset, byte); - printf("%s: mouse mode %02x\n", __func__, byte); mii->mouse.enabled = byte & mouseEnabled; - printf("Mouse %s\n", mii->mouse.enabled ? "enabled" : "disabled"); - printf(" Interupt: %s\n", byte & mouseIntMoveEnabled ? "enabled" : "disabled"); - printf(" Button: %s\n", byte & mouseIntButtonEnabled ? "enabled" : "disabled"); - printf(" VBlank: %s\n", byte & mouseIntVBlankEnabled ? "enabled" : "disabled"); + printf("%s: mode %02x: %s Move:%d Button:%d VBL:%d\n", __func__, + byte, mii->mouse.enabled ? "ON " : "OFF", + byte & mouseIntMoveEnabled ? 1 : 0, + byte & mouseIntButtonEnabled ? 1 : 0, + byte & mouseIntVBlankEnabled ? 1 : 0); c->mode = byte; } } break; @@ -256,9 +254,9 @@ _mii_mouse_access( mii->mouse.max_y = mii_bank_peek(main, CLAMP_MAX_LO) | (mii_bank_peek(main, CLAMP_MAX_HI) << 8); } - printf("Mouse clamp to %d,%d - %d,%d\n", - mii->mouse.min_x, mii->mouse.min_y, - mii->mouse.max_x, mii->mouse.max_y); + // printf("Mouse clamp to %d,%d - %d,%d\n", + // mii->mouse.min_x, mii->mouse.min_y, + // mii->mouse.max_x, mii->mouse.max_y); break; case 8: // home mouse mii->mouse.x = mii->mouse.min_x; diff --git a/src/drivers/mii_smartport.c b/src/drivers/mii_smartport.c index 01b36fd..20465c2 100644 --- a/src/drivers/mii_smartport.c +++ b/src/drivers/mii_smartport.c @@ -36,7 +36,6 @@ extern const unsigned char mii_smartport_rom_data[]; #define MII_SM_DRIVE_COUNT 2 typedef struct mii_card_sm_t { -// struct mii_card_sm_t *next; mii_dd_t drive[MII_SM_DRIVE_COUNT]; struct mii_slot_t *slot; } mii_card_sm_t; @@ -79,6 +78,9 @@ _mii_hd_callback( mii_bank_t * bank = &mii->bank[mii->mem[buffer >> 8].write]; mii->cpu.P.C = mii_dd_read( &c->drive[unit], bank, buffer, blk, 1) != 0; + // if Prodos is reading a block that happens to be video memory, + // make sure the video driver knows about it + mii_video_OOB_write_check(mii, buffer, 512); } break; case 2: {// write block if (!c->drive[unit].file) { @@ -107,7 +109,7 @@ _mii_sm_callback( mii_t *mii, uint8_t trap) { - printf("%s\n", __func__); +// printf("%s\n", __func__); int sid = ((mii->cpu.PC >> 8) & 0xf) - 1; mii_card_sm_t *c = mii->slot[sid].drv_priv; @@ -122,8 +124,8 @@ _mii_sm_callback( uint8_t spUnit = mii_read_one(mii, spParams + 1); uint16_t spBuffer = mii_read_word(mii, spParams + 2); - printf("%s cmd %02x params %04x pcount %d unit %02x buffer %04x\n", __func__, - spCommand, spParams, spPCount, spUnit, spBuffer); +// printf("%s cmd %02x params %04x pcount %d unit %02x buffer %04x\n", __func__, +// spCommand, spParams, spPCount, spUnit, spBuffer); switch (spCommand) { case 0: { // get status if (spPCount != 3) { @@ -131,77 +133,110 @@ _mii_sm_callback( break; } uint8_t status = mii_read_one(mii, spParams + 4); - printf("%s: unit %d status %02x \n", __func__, spUnit, status); + // printf("%s: unit %d status %02x \n", __func__, spUnit, status); uint8_t st = 0x80 | 0x40 | 0x20; uint32_t bsize = 0; - if (spUnit) spUnit--; - if (spUnit < MII_SM_DRIVE_COUNT && c->drive[spUnit].file) { - st |= 0x10; - bsize = (c->drive[spUnit].file->size + 511) / 512; - } if (status == 0) { mii->cpu.P.C = 0; + mii->cpu.A = 0; /* Apple IIc reference says this ought to be a status byte, * but practice and A2Desktop says it ought to be a drive * count, so here goes... */ // mii_write_one(mii, spBuffer++, st); - mii_write_one(mii, spBuffer++, MII_SM_DRIVE_COUNT); - mii_write_one(mii, spBuffer++, bsize); - mii_write_one(mii, spBuffer++, bsize >> 8); - mii_write_one(mii, spBuffer++, bsize >> 16); - } else if (status == 3 && spUnit < MII_SM_DRIVE_COUNT) { + if (spUnit == 0) { + mii_write_one(mii, spBuffer++, MII_SM_DRIVE_COUNT); + mii_write_one(mii, spBuffer++, 0x00); + mii_write_one(mii, spBuffer++, 0x01); + mii_write_one(mii, spBuffer++, 0x13); + } else if (spUnit <= MII_SM_DRIVE_COUNT) { + if (c->drive[spUnit-1].file) { + st |= 0x10; + bsize = (c->drive[spUnit-1].file->size + 511) / 512; + } + mii_write_one(mii, spBuffer++, st); + mii_write_one(mii, spBuffer++, bsize); + mii_write_one(mii, spBuffer++, bsize >> 8); + mii_write_one(mii, spBuffer++, bsize >> 16); + } else { + mii->cpu.P.C = 1; + mii->cpu.A = 0x21; // bad status + } + } else if (status == 3) { mii->cpu.P.C = 0; - mii_write_one(mii, spBuffer++, st); - mii_write_one(mii, spBuffer++, bsize); - mii_write_one(mii, spBuffer++, bsize >> 8); - mii_write_one(mii, spBuffer++, bsize >> 16); - char dname[17] = "\x8MII HD 0 "; - dname[8] = '0' + spUnit; - for (int i = 0; i < 17; i++) - mii_write_one(mii, spBuffer++, dname[i]); - mii_write_one(mii, spBuffer++, 0x02); // Profile - mii_write_one(mii, spBuffer++, 0x00); // Profile - mii_write_one(mii, spBuffer++, 0x01); // Version - mii_write_one(mii, spBuffer++, 0x13); + mii->cpu.A = 0; + if (spUnit > 0 && spUnit <= MII_SM_DRIVE_COUNT) { + if (c->drive[spUnit-1].file) { + st |= 0x10; + bsize = (c->drive[spUnit-1].file->size + 511) / 512; + } + mii_write_one(mii, spBuffer++, st); + mii_write_one(mii, spBuffer++, bsize); + mii_write_one(mii, spBuffer++, bsize >> 8); + mii_write_one(mii, spBuffer++, bsize >> 16); + char dname[17] = "\x8MII HD 0 "; + dname[8] = '0' + spUnit-1; + for (int i = 0; i < 17; i++) + mii_write_one(mii, spBuffer++, dname[i]); + mii_write_one(mii, spBuffer++, 0x02); // Profile + mii_write_one(mii, spBuffer++, 0x00); // Profile + mii_write_one(mii, spBuffer++, 0x01); // Version + mii_write_one(mii, spBuffer++, 0x13); + } else { + mii->cpu.P.C = 1; + mii->cpu.A = 0x21; // bad status + } } else { printf("%s: unit %d bad status %d\n", __func__, spUnit, status); mii->cpu.P.C = 1; + mii->cpu.A = 0x21; // bad status } } break; case 1: { // read + mii->cpu.P.C = 0; + mii->cpu.A = 0; if (spPCount != 3) { printf("%s: unit %d bad pcount %d\n", __func__, spUnit, spPCount); mii->cpu.P.C = 1; break; } - if (spUnit >= MII_SM_DRIVE_COUNT) { - printf("%s: unit %d out of range\n", - __func__, spUnit); + if (spUnit == 0 || spUnit >= MII_SM_DRIVE_COUNT) { + printf("%s: unit %d out of range\n", __func__, spUnit); mii->cpu.P.C = 1; + mii->cpu.A = 0x28; break; } - uint32_t blk = mii_read_word(mii, spParams + 3) | - (mii_read_one(mii, spParams + 4) << 16) | - (mii_read_one(mii, spParams + 5) << 24); - printf("%s read block %x\n", __func__, blk); + spUnit--; + uint32_t blk = mii_read_one(mii, spParams + 4) | + (mii_read_one(mii, spParams + 5) << 8) | + (mii_read_one(mii, spParams + 6) << 16); + // printf("%s read block 0x%6x\n", __func__, blk); if (!c->drive[spUnit].file) { mii->cpu.P.C = 1; + mii->cpu.A = 0x2f; break; } if (blk >= c->drive[spUnit].file->size / 512) { printf("%s: block %d out of range\n", __func__, blk); mii->cpu.P.C = 1; + mii->cpu.A = 0x2d; break; } mii_bank_t * bank = &mii->bank[mii->mem[spBuffer >> 8].write]; mii->cpu.P.C = mii_dd_read( &c->drive[spUnit], bank, spBuffer, blk, 1) != 0; + if (mii->cpu.P.C) + mii->cpu.A = 0x2d; + // if Prodos is reading a block that happens to be video memory, + // make sure the video driver knows about it + mii_video_OOB_write_check(mii, spBuffer, 512); // mii->cpu.P.C = 0; } break; case 2: { // write + mii->cpu.P.C = 0; + mii->cpu.A = 0; if (spPCount != 3) { printf("%s: unit %d bad pcount %d\n", __func__, spUnit, spPCount); @@ -212,25 +247,31 @@ _mii_sm_callback( printf("%s: unit %d out of range\n", __func__, spUnit); mii->cpu.P.C = 1; + mii->cpu.A = 0x28; break; } - uint32_t blk = mii_read_word(mii, spParams + 3) | - (mii_read_one(mii, spParams + 4) << 16) | - (mii_read_one(mii, spParams + 5) << 24); - printf("%s write block %x\n", __func__, blk); + spUnit--; + uint32_t blk = mii_read_one(mii, spParams + 4) | + (mii_read_one(mii, spParams + 5) << 8) | + (mii_read_one(mii, spParams + 6) << 16); + // printf("%s write block %x\n", __func__, blk); if (!c->drive[spUnit].file) { mii->cpu.P.C = 1; + mii->cpu.A = 0x2f; break; } if (blk >= c->drive[spUnit].file->size / 512) { printf("%s: block %d out of range\n", __func__, blk); mii->cpu.P.C = 1; + mii->cpu.A = 0x2d; break; } mii_bank_t * bank = &mii->bank[mii->mem[spBuffer >> 8].read]; mii->cpu.P.C = mii_dd_write( &c->drive[spUnit], bank, spBuffer, blk, 1) != 0; + if (mii->cpu.P.C) + mii->cpu.A = 0x2d; } break; } } @@ -244,7 +285,7 @@ _mii_sm_init( c->slot = slot; slot->drv_priv = c; - printf("%s loading in slot %d\n", __func__, slot->id + 1); +// printf("%s loading in slot %d\n", __func__, slot->id + 1); uint16_t addr = 0xc100 + (slot->id * 0x100); mii_bank_write( &mii->bank[MII_BANK_CARD_ROM], @@ -304,7 +345,7 @@ _mii_sm_command( res = 0; } break; - case MII_SLOT_DRIVE_LOAD ... MII_SLOT_DRIVE_LOAD + MII_SM_DRIVE_COUNT - 1: + case MII_SLOT_DRIVE_LOAD ... MII_SLOT_DRIVE_LOAD + MII_SM_DRIVE_COUNT - 1: { int drive = cmd - MII_SLOT_DRIVE_LOAD; const char *filename = param; mii_dd_file_t *file = NULL; @@ -315,7 +356,7 @@ _mii_sm_command( } mii_dd_drive_load(&c->drive[drive], file); res = 0; - break; + } break; } return res; } diff --git a/src/drivers/mockingboard.c b/src/drivers/mockingboard.c new file mode 100644 index 0000000..522ab6c --- /dev/null +++ b/src/drivers/mockingboard.c @@ -0,0 +1,1217 @@ +/* + * mockingboard.c + * This is a straigth derivative of Clemens IIgs emulator mockingboard + * emulation code. The original code is available at: + * https://github.com/samkusin/clemens_iigs + * + * The original code is also licensed under the MIT License. + * SPDX-License-Identifier: MIT + * + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "mockingboard.h" + +/* + References: + - Programming IO primer for the A2 Mockingboard + https://www.apple2.org.za/gswv/a2zine/Docs/Mockingboard_MiniManual.html + - AY-3-8910 Datasheet + - 6522 MOS and Rockwell Datasheets + https://www.princeton.edu/~mae412/HANDOUTS/Datasheets/6522.pdf + https://github.com/deater/dos33fsprogs/blob/master/asm_routines/mockingboard_a.s + - Resources from + https://wiki.reactivemicro.com/Mockingboard including the schematic which + has been very helpful interpreting how the VIA communicates with the AY3 +*/ +/* MB-AUDIT LOG + Retry reset test as the reset functionality may not be working +*/ + +#define MB_VIA_PORT_B 0x00 +#define MB_VIA_PORT_A 0x01 +#define MB_VIA_REG_DATA 0x00 +#define MB_VIA_REG_DDR 0x02 +#define MB_VIA_REG_TIMER1CL 0x04 +#define MB_VIA_REG_TIMER1CH 0x05 +#define MB_VIA_REG_TIMER1LL 0x06 +#define MB_VIA_REG_TIMER1LH 0x07 +#define MB_VIA_REG_TIMER2CL 0x08 +#define MB_VIA_REG_TIMER2CH 0x09 +#define MB_VIA_REG_SR 0x0a +#define MB_VIA_REG_ACR 0x0b +#define MB_VIA_REG_PCR 0x0c +#define MB_VIA_REG_IRQ_IFR 0x0d +#define MB_VIA_REG_IRQ_IER 0x0e +#define MB_VIA_PORT_A_ALT 0x0f + +#define MB_VIA_TIMER1_ONESHOT 0x00 +#define MB_VIA_TIMER1_FREERUN 0x40 +#define MB_VIA_TIMER1_PB7 0x80 + +#define MB_VIA_TIMER2_ONESHOT 0x00 +#define MB_VIA_TIMER2_PB6 0x20 + +#define MB_VIA_IER_TIMER1 0x40 +#define MB_VIA_IER_TIMER2 0x20 + +#define MB_AY_QUEUE_SIZE 64 + +#define MB_AY_REG_A_TONE_PERIOD_FINE 0x00 +#define MB_AY_REG_A_TONE_PERIOD_COARSE 0x01 +#define MB_AY_REG_B_TONE_PERIOD_FINE 0x02 +#define MB_AY_REG_B_TONE_PERIOD_COARSE 0x03 +#define MB_AY_REG_C_TONE_PERIOD_FINE 0x04 +#define MB_AY_REG_C_TONE_PERIOD_COARSE 0x05 +#define MB_AY_REG_NOISE_PERIOD 0x06 +#define MB_AY_REG_ENABLE 0x07 +#define MB_AY_REG_A_AMPLITUDE 0x08 +#define MB_AY_REG_B_AMPLITUDE 0x09 +#define MB_AY_REG_C_AMPLITUDE 0x0a +#define MB_AY_REG_ENVELOPE_COARSE 0x0b +#define MB_AY_REG_ENVELOPE_FINE 0x0c +#define MB_AY_REG_ENVELOPE_SHAPE 0x0d +#define MB_AY_REG_IO_A 0x0e +#define MB_AY_REG_IO_B 0x0f + +#define MB_AY_TONE_LEVEL_HIGH 0x80000000 +#define MB_AY_TONE_LEVEL_ENABLED 0x40000000 +#define MB_AY_TONE_NOISE_ENABLED 0x20000000 + +#define MB_AY_AMP_VARIABLE_MODE_FLAG 0x10 +#define MB_AY_AMP_FIXED_LEVEL_MASK 0x0f +#define MB_AY_AMP_VARIABLE_MODE_FLAG 0x10 +#define MB_AY_AMP_ENVELOPE_HOLD 0x01 +#define MB_AY_AMP_ENVELOPE_ALTERNATE 0x02 +#define MB_AY_AMP_ENVELOPE_ATTACK 0x04 +#define MB_AY_AMP_ENVELOPE_CONTINUE 0x08 + +#define MB_ASSERT(_expr_) assert(_expr_) +#define MB_UNIMPLEMENTED(_w, ...) \ + fprintf(stderr, "UNIMPLEMENTED: " _w "\n", ##__VA_ARGS__) +#define MB_WARN(_w, ...) fprintf(stderr, "WARN: " _w "\n", ##__VA_ARGS__) + +// TODO: evaluate from sources this is cribbed from KEGS +static const float s_ay3_8913_ampl_factor_westcott[16] = { + 0.000f, // level[0] + 0.010f, // level[1] + 0.015f, // level[2] + 0.022f, // level[3] + 0.031f, // level[4] + 0.046f, // level[5] + 0.064f, // level[6] + 0.106f, // level[7] + 0.132f, // level[8] + 0.216f, // level[9] + 0.297f, // level[10] + 0.391f, // level[11] + 0.513f, // level[12] + 0.637f, // level[13] + 0.819f, // level[14] + 1.000f, // level[15] +}; + +// TODO: other interrupts + +typedef enum mb_via_timer_e { + MB_VIA_TIMER_NOLATCH, + MB_VIA_TIMER_INACTIVE, + MB_VIA_TIMER_LOADCOUNTER, + MB_VIA_TIMER_ACTIVE +} mb_via_timer_e; + +/** + * @brief + * + * The PSG here is the AY-3-891x chip (there were multiple models, the 8913 + * seems to be one specific to the Mockingboard but functionally they are the + * same.) + * + * To remove the need for IO ports, and to keep in spec with various + * mockingboards, we'll implement a 8913. + * + * For performance, audio PCM data is generated in ay3_render() + * + * Commands from the 6522 are queued inside ay3_update(), but AY3 + * tone/noise/envelope generation happens in ay3_render(). This ensures that + * audio data is not generated per emulated CPU cycle. This is possible because + * the AY3 effectively has no output besides the speaker. + * + * ay3_render() renders audio from the various tone and noise channels as their + * state is set by the queued commands referenced above. + * + * Since audio commands shouldn't be that frequent, we can keep the queue small + * as long as ay3_render() is called frequently enough (i.e. even if called once + * per second, we shouldn't be receiving many commands from the 6522 in that + * period of time... of course we should be calling ay3_update at something like + * 15-60fps to avoid latency) + */ +typedef struct mb_ay_t { + /* register reflection */ + uint16_t channel_tone_period[3]; + uint16_t envelope_period; + uint8_t channel_amplitude[3]; + uint8_t noise_period; + uint8_t enable; + uint8_t envelope_shape; + + /* rendering event queue built by application writes to the AY3 for this + window - consumed by _ay3_render(...). times are offsets from + the render_slice_start_ts. + + queue items are combination of register + value */ + uint32_t queue[MB_AY_QUEUE_SIZE]; + mb_clocks_t queue_time[MB_AY_QUEUE_SIZE]; + uint32_t queue_tail; + + /* reference time step per tick (set at mega2 reference step) whicih should + translate to 1.023mhz */ + float clock_freq_hz; + /* bus counter to detect bdir changes */ + uint8_t bus_control; + /* Current register ID latched for read/write */ + uint8_t reg_latch; + + /* mixer settings and state */ + uint16_t mixer_tone_period_reg[3]; + float mixer_tone_half_period[3]; + float mixer_tone_time[3]; + uint32_t mixer_tone_level[3]; + float mixer_noise_half_period; + float mixer_noise_time; + uint mixer_noise_level; + uint noise_seed; + uint8_t mixer_amp[3]; + uint8_t mixer_envelope_control; + float mixer_envelope_time; + uint16_t mixer_envelope_period_reg; + float mixer_envelope_period; +} mb_ay_t; + +static void +_ay3_reset( // + mb_ay_t *psg, + mb_clocks_t ref_step) +{ + float old_freq_hz = psg->clock_freq_hz; + memset(psg, 0, sizeof(*psg)); + if (ref_step != 0) { + psg->clock_freq_hz = + ((float)MB_CLOCKS_PHI0_CYCLE / ref_step) * MB_MEGA2_CYCLES_PER_SECOND; + } else { + psg->clock_freq_hz = old_freq_hz; + } + psg->noise_seed = 0xa0102035; + psg->mixer_amp[0] = 0x0f; + psg->mixer_amp[1] = 0x0f; + psg->mixer_amp[2] = 0x0f; +} + +static void +_ay3_tone_setup( // + mb_ay_t *psg, + uint channel_id, + uint8_t value, + uint8_t byte_index) +{ + uint16_t current_period = psg->mixer_tone_period_reg[channel_id]; + if (byte_index) { + current_period &= (0x00ff); + current_period |= ((uint16_t)(value) << 8); + } else { + current_period &= (0x0f00); + current_period |= value; + } + psg->mixer_tone_period_reg[channel_id] = current_period; + psg->mixer_tone_half_period[channel_id] = + (current_period * 8.0f) / psg->clock_freq_hz; + + if (psg->mixer_tone_time[channel_id] > psg->mixer_tone_half_period[channel_id]) + psg->mixer_tone_time[channel_id] = psg->mixer_tone_half_period[channel_id]; +} + +static void +_ay3_amp_setup( // + mb_ay_t *psg, + uint channel_id, + uint8_t value) +{ + psg->mixer_amp[channel_id] = value; +} + +static void +_ay3_envelope_setup( // + mb_ay_t *psg, + uint8_t value, + uint8_t byte_index) +{ + uint16_t current_period = psg->mixer_envelope_period_reg; + + if (byte_index) { + current_period &= (0x00ff); + current_period |= ((uint16_t)(value) << 8); + } else { + current_period &= (0xff00); + current_period |= value; + } + psg->mixer_envelope_period_reg = current_period; + psg->mixer_envelope_period = (current_period * 256.0f) / psg->clock_freq_hz; + + // TODO: evaluate this... if period shrinks, do we want to clamp or wraparound? + if (psg->mixer_envelope_time > psg->mixer_envelope_period) + psg->mixer_envelope_time = psg->mixer_envelope_period; +} + +static void +_ay3_envelope_control( // + mb_ay_t *psg, + uint8_t value) +{ + psg->mixer_envelope_control = value & 0xf; +} + +static void +_ay3_noise_setup( // + mb_ay_t *psg, + uint8_t value) +{ + psg->mixer_noise_half_period = (value * 8.0f) / psg->clock_freq_hz; + + if (psg->mixer_noise_time > psg->mixer_noise_half_period) + psg->mixer_noise_time = psg->mixer_noise_half_period; +} + +static uint +_ay3_noise_gen( // + mb_ay_t *psg, + float sample_dt) +{ + float dt_wave; + + if (psg->mixer_noise_half_period < FLT_EPSILON) { + return 0; + } + + dt_wave = psg->mixer_noise_time + sample_dt; + if (dt_wave >= psg->mixer_noise_half_period) { + dt_wave -= psg->mixer_noise_half_period; + psg->mixer_noise_level = psg->noise_seed & 1; + psg->noise_seed = ((psg->noise_seed * 3) + 4) % 7; + } + psg->mixer_noise_time = dt_wave; + return psg->mixer_noise_level; +} + +static float +_ay3_tone_render( // + mb_ay_t *psg, + uint channel_id, + uint noise, + float sample_dt) +{ + float dt_wave; + float mag; + uint level; + + if (psg->mixer_tone_half_period[channel_id] < FLT_EPSILON) { + return 0.0f; + } + + dt_wave = psg->mixer_tone_time[channel_id]; + + if (psg->mixer_tone_level[channel_id] & MB_AY_TONE_LEVEL_ENABLED) { + level = (psg->mixer_tone_level[channel_id] & MB_AY_TONE_LEVEL_HIGH) ? 1 : 0; + if (psg->mixer_tone_level[channel_id] & MB_AY_TONE_NOISE_ENABLED) { + level &= noise; + } + mag = (float)((int)(level << 1) - 1); + } else { + mag = 0.0f; + } + + dt_wave += sample_dt; + + if (dt_wave >= psg->mixer_tone_half_period[channel_id]) { + dt_wave -= psg->mixer_tone_half_period[channel_id]; + psg->mixer_tone_level[channel_id] ^= MB_AY_TONE_LEVEL_HIGH; + } + psg->mixer_tone_time[channel_id] = dt_wave; + return mag; +} + +static uint +_ay3_envelope_gen( // + mb_ay_t *psg, + float sample_dt) +{ + uint level = 0; + float dt_envelope; + uint8_t cycle; + + if (!((psg->mixer_amp[0] | psg->mixer_amp[1] | psg->mixer_amp[2]) & + MB_AY_AMP_VARIABLE_MODE_FLAG)) { + return level; + } + + cycle = psg->mixer_envelope_control >> 4; + + dt_envelope = psg->mixer_envelope_time; + + // this is rather brute force - there's probably a better way to do this, + // like evaluating each state and look at the cycle count within the if block + // but get a reference working first. + if (cycle & 1) { + // alternate cycle + if (psg->mixer_envelope_control & MB_AY_AMP_ENVELOPE_CONTINUE) { + if (psg->mixer_envelope_control & MB_AY_AMP_ENVELOPE_HOLD) { + if (psg->mixer_envelope_control & MB_AY_AMP_ENVELOPE_ATTACK) { + level = (psg->mixer_envelope_control & + MB_AY_AMP_ENVELOPE_ALTERNATE) ? + 0 : + 15; + } else { + level = (psg->mixer_envelope_control & + MB_AY_AMP_ENVELOPE_ALTERNATE) ? + 15 : + 0; + } + } else { + if (psg->mixer_envelope_control & MB_AY_AMP_ENVELOPE_ATTACK) { + if (psg->mixer_envelope_control & + MB_AY_AMP_ENVELOPE_ALTERNATE) { + level = 15 - (uint)(dt_envelope * 16 / + psg->mixer_envelope_period); + } else { + level = + (uint)(dt_envelope * 16 / psg->mixer_envelope_period); + } + } else { + if (psg->mixer_envelope_control & + MB_AY_AMP_ENVELOPE_ALTERNATE) { + level = + (uint)(dt_envelope * 16 / psg->mixer_envelope_period); + } else { + level = 15 - (uint)(dt_envelope * 16 / + psg->mixer_envelope_period); + } + } + } + } else { + // hold at level 0 + level = 0; + } + } else { + // hold doesn't matter here (see the state switch at end of period logic + // above, where cycle will always be 1) + if (psg->mixer_envelope_control & MB_AY_AMP_ENVELOPE_ATTACK) { + level = (uint)(dt_envelope * 16 / psg->mixer_envelope_period); + } else { + level = 15 - (uint)(dt_envelope * 16 / psg->mixer_envelope_period); + } + } + + dt_envelope += sample_dt; + if (dt_envelope >= psg->mixer_envelope_period) { + // note the !CONTINUE conditional it's effectively a hold + if (!(psg->mixer_envelope_control & MB_AY_AMP_ENVELOPE_CONTINUE)) { + psg->mixer_envelope_control = + 0x10 | (psg->mixer_envelope_control & 0xf); + } else if ((psg->mixer_envelope_control & MB_AY_AMP_ENVELOPE_HOLD)) { + psg->mixer_envelope_control = + 0x10 | (psg->mixer_envelope_control & 0xf); + } else { + psg->mixer_envelope_control += 0x10; + } + dt_envelope -= psg->mixer_envelope_period; + } + psg->mixer_envelope_time = dt_envelope; + return level; +} + +static float +_ay3_amp_modify( // + mb_ay_t *psg, + uint channel_id, + float sample_in, + uint envelope, + float sample_dt) +{ + float sample_out; + if (psg->mixer_amp[channel_id] & MB_AY_AMP_VARIABLE_MODE_FLAG) { + sample_out = sample_in * s_ay3_8913_ampl_factor_westcott[envelope]; + } else { + sample_out = + sample_in * s_ay3_8913_ampl_factor_westcott[psg->mixer_amp[channel_id] & + MB_AY_AMP_FIXED_LEVEL_MASK]; + } + + return sample_out; +} + +static void +_ay3_tone_enable( // + mb_ay_t *psg, + uint8_t value) +{ + if (value & 0x01) { + psg->mixer_tone_level[0] &= ~MB_AY_TONE_LEVEL_ENABLED; + } else { + psg->mixer_tone_level[0] |= MB_AY_TONE_LEVEL_ENABLED; + } + if (value & 0x02) { + psg->mixer_tone_level[1] &= ~MB_AY_TONE_LEVEL_ENABLED; + } else { + psg->mixer_tone_level[1] |= MB_AY_TONE_LEVEL_ENABLED; + } + if (value & 0x04) { + psg->mixer_tone_level[2] &= ~MB_AY_TONE_LEVEL_ENABLED; + } else { + psg->mixer_tone_level[2] |= MB_AY_TONE_LEVEL_ENABLED; + } + if (value & 0x08) { + psg->mixer_tone_level[0] &= ~MB_AY_TONE_NOISE_ENABLED; + } else { + psg->mixer_tone_level[0] |= MB_AY_TONE_NOISE_ENABLED; + } + if (value & 0x10) { + psg->mixer_tone_level[1] &= ~MB_AY_TONE_NOISE_ENABLED; + } else { + psg->mixer_tone_level[1] |= MB_AY_TONE_NOISE_ENABLED; + } + if (value & 0x20) { + psg->mixer_tone_level[2] &= ~MB_AY_TONE_NOISE_ENABLED; + } else { + psg->mixer_tone_level[2] |= MB_AY_TONE_NOISE_ENABLED; + } +} + +static void +_ay3_mix_event( // + mb_ay_t *psg, + uint32_t event) +{ + uint8_t event_reg = (uint8_t)((event >> 8) & 0xff); + uint8_t event_value = (uint8_t)(event & 0xff); + + switch (event_reg) { + case MB_AY_REG_A_TONE_PERIOD_COARSE: + _ay3_tone_setup(psg, 0, event_value, 1); + break; + case MB_AY_REG_A_TONE_PERIOD_FINE: + _ay3_tone_setup(psg, 0, event_value, 0); + break; + case MB_AY_REG_B_TONE_PERIOD_COARSE: + _ay3_tone_setup(psg, 1, event_value, 1); + break; + case MB_AY_REG_B_TONE_PERIOD_FINE: + _ay3_tone_setup(psg, 1, event_value, 0); + break; + case MB_AY_REG_C_TONE_PERIOD_COARSE: + _ay3_tone_setup(psg, 2, event_value, 1); + break; + case MB_AY_REG_C_TONE_PERIOD_FINE: + _ay3_tone_setup(psg, 2, event_value, 0); + break; + case MB_AY_REG_ENABLE: + _ay3_tone_enable(psg, event_value); + break; + case MB_AY_REG_NOISE_PERIOD: + _ay3_noise_setup(psg, event_value); + break; + case MB_AY_REG_A_AMPLITUDE: + _ay3_amp_setup(psg, 0, event_value); + break; + case MB_AY_REG_B_AMPLITUDE: + _ay3_amp_setup(psg, 1, event_value); + break; + case MB_AY_REG_C_AMPLITUDE: + _ay3_amp_setup(psg, 2, event_value); + break; + case MB_AY_REG_ENVELOPE_COARSE: + _ay3_envelope_setup(psg, event_value, 1); + break; + case MB_AY_REG_ENVELOPE_FINE: + _ay3_envelope_setup(psg, event_value, 0); + break; + case MB_AY_REG_ENVELOPE_SHAPE: + _ay3_envelope_control(psg, event_value); + break; + } +} + +static uint32_t +_ay3_queue_event( // + mb_ay_t *psg, + uint8_t value) +{ + return (0x80000000 | ((uint16_t)psg->reg_latch << 8) | value); +} + +uint +_ay3_render( // + mb_ay_t *psg, + mb_clocks_t duration, + uint channel, + float *out, + uint out_limit, + uint samples_per_frame, + uint samples_per_second) +{ + float render_window_secs = mb_ns_step_from_clocks(duration) * 1e-9f; + float sample_dt = 1.0f / samples_per_second; + uint sample_count = 0; + mb_clocks_t render_dt = mb_clocks_step_from_ns(sample_dt * 1e9f); + mb_clocks_t render_ts = 0; + float render_t; + uint32_t queue_index = 0; + float sample[3]; + float current; + float acc; + float noise; + uint envelope; + + // TODO: we can just persist tone_period + half_tone_period instead of + // frequency and trim back and forth calculations in _ay3_tone_setup + for (render_t = 0.0f; render_t < render_window_secs && sample_count < out_limit; + render_t += sample_dt, out += samples_per_frame) { + if (queue_index < psg->queue_tail) { + while (psg->queue_time[queue_index] <= render_ts && + queue_index < psg->queue_tail) { + uint32_t queue_event = psg->queue[queue_index++]; + _ay3_mix_event(psg, queue_event); + } + } + noise = _ay3_noise_gen(psg, sample_dt); + sample[0] = _ay3_tone_render(psg, 0, noise, sample_dt); + sample[1] = _ay3_tone_render(psg, 1, noise, sample_dt); + sample[2] = _ay3_tone_render(psg, 2, noise, sample_dt); + envelope = _ay3_envelope_gen(psg, sample_dt); + sample[0] = _ay3_amp_modify(psg, 0, sample[0], envelope, sample_dt); + sample[1] = _ay3_amp_modify(psg, 1, sample[1], envelope, sample_dt); + sample[2] = _ay3_amp_modify(psg, 2, sample[2], envelope, sample_dt); + current = out[channel]; + acc = (sample[0] + sample[1] + sample[2]) * 0.166667f; + current = out[channel] + acc; + if (current > 0.75f) + current = 0.75f; + else if (current < -0.75f) + current = -0.75; + out[channel] = current; + + render_ts += render_dt; + sample_count++; + } + + // consume remaining events to prevent data loss if necessary + while (queue_index < psg->queue_tail) { + uint32_t queue_event = psg->queue[queue_index++]; + _ay3_mix_event(psg, queue_event); + } + + // TODO: consume events until end of time window + psg->queue_tail = 0; + return sample_count; +} + +static uint8_t +_ay3_get( // + mb_ay_t *psg) +{ + switch (psg->reg_latch) { + case MB_AY_REG_A_TONE_PERIOD_FINE: + return psg->channel_tone_period[0] & 0xff; + case MB_AY_REG_A_TONE_PERIOD_COARSE: + return (psg->channel_tone_period[0] >> 8) & 0xff; + case MB_AY_REG_B_TONE_PERIOD_FINE: + return psg->channel_tone_period[1] & 0xff; + case MB_AY_REG_B_TONE_PERIOD_COARSE: + return (psg->channel_tone_period[1] >> 8) & 0xff; + case MB_AY_REG_C_TONE_PERIOD_FINE: + return psg->channel_tone_period[2] & 0xff; + case MB_AY_REG_C_TONE_PERIOD_COARSE: + return (psg->channel_tone_period[2] >> 8) & 0xff; + case MB_AY_REG_NOISE_PERIOD: + return psg->noise_period; + case MB_AY_REG_ENABLE: + return psg->enable; + case MB_AY_REG_A_AMPLITUDE: + return psg->channel_amplitude[0]; + case MB_AY_REG_B_AMPLITUDE: + return psg->channel_amplitude[1]; + case MB_AY_REG_C_AMPLITUDE: + return psg->channel_amplitude[2]; + case MB_AY_REG_ENVELOPE_FINE: + return (uint8_t)(psg->envelope_period & 0xff); + case MB_AY_REG_ENVELOPE_COARSE: + return (uint8_t)(psg->envelope_period >> 8); + case MB_AY_REG_ENVELOPE_SHAPE: + return psg->envelope_shape; + default: + break; + } + return 0; +} + +static void +_ay3_set( // + mb_ay_t *psg, + uint8_t data) +{ + switch (psg->reg_latch) { + case MB_AY_REG_A_TONE_PERIOD_COARSE: + psg->channel_tone_period[0] &= 0x00ff; + psg->channel_tone_period[0] |= ((uint16_t)data << 8); + break; + case MB_AY_REG_A_TONE_PERIOD_FINE: + psg->channel_tone_period[0] &= 0xff00; + psg->channel_tone_period[0] |= data; + break; + case MB_AY_REG_B_TONE_PERIOD_COARSE: + psg->channel_tone_period[1] &= 0x00ff; + psg->channel_tone_period[1] |= ((uint16_t)data << 8); + break; + case MB_AY_REG_B_TONE_PERIOD_FINE: + psg->channel_tone_period[1] &= 0xff00; + psg->channel_tone_period[1] |= data; + break; + case MB_AY_REG_C_TONE_PERIOD_COARSE: + psg->channel_tone_period[2] &= 0x00ff; + psg->channel_tone_period[2] |= ((uint16_t)data << 8); + break; + case MB_AY_REG_C_TONE_PERIOD_FINE: + psg->channel_tone_period[2] &= 0xff00; + psg->channel_tone_period[2] |= data; + break; + case MB_AY_REG_NOISE_PERIOD: + psg->noise_period = data; + break; + case MB_AY_REG_ENABLE: + psg->enable = data; + break; + case MB_AY_REG_A_AMPLITUDE: + psg->channel_amplitude[0] = data; + break; + case MB_AY_REG_B_AMPLITUDE: + psg->channel_amplitude[1] = data; + break; + case MB_AY_REG_C_AMPLITUDE: + psg->channel_amplitude[2] = data; + break; + case MB_AY_REG_ENVELOPE_COARSE: + psg->envelope_period &= 0x00ff; + psg->envelope_period |= ((uint16_t)data << 8); + break; + case MB_AY_REG_ENVELOPE_FINE: + psg->envelope_period &= 0xff00; + psg->envelope_period |= data; + break; + case MB_AY_REG_ENVELOPE_SHAPE: + psg->envelope_shape = data; + break; + default: + break; + } +} + +/* + Queues commands for audio rendering via _ay3_render(...). Fortunately + the AY3 here doesn't deal with port output - just taking commands. + For debugging and possible register reads, we keep a record of current + register values as well. + */ +static void +_ay3_update( // + mb_ay_t *psg, + uint8_t *bus, + uint8_t *bus_control, + mb_clocks_t render_slice_dt) +{ + uint8_t bc1 = *bus_control & 0x1; + uint8_t bdir = *bus_control & 0x2; + uint8_t reset_b = *bus_control & 0x4; + uint32_t queue_event = 0; + if (*bus_control == psg->bus_control) { + return; + } + if (!reset_b) { + _ay3_reset(psg, 0); + return; + } + + printf("AY3: reset_b=%c bdir=%c bc1=%c\n", reset_b ? '1' : '0', + bdir ? '1' : '0', bc1 ? '1' : '0'); + + switch (*bus_control & 0x3) { + case 0x3: + /* LATCH_ADDRESS */ + psg->reg_latch = *bus; + break; + case 0x1: + /* READ FROM PSG */ + *bus = _ay3_get(psg); + break; + case 0x2: + /* WRITE TO PSG */ + _ay3_set(psg, *bus); + queue_event = _ay3_queue_event(psg, *bus); + break; + default: + /* INACTIVE */ + break; + } + + if (queue_event) { + if (psg->queue_tail < MB_AY_QUEUE_SIZE) { + psg->queue[psg->queue_tail] = queue_event; + psg->queue_time[psg->queue_tail] = render_slice_dt; + psg->queue_tail++; + } else { + MB_WARN("ay3_update: lost synth event (%08x)", queue_event); + } + } + + psg->bus_control = *bus_control; +} + +/** + * @brief + * + * For now, port_a_dir and port_b_dir should be 0xff, set by the emulated + * application when initializing access to the Mockingboard + */ +typedef struct mb_via_t { + uint8_t data_dir[2]; /**< DDRB/A */ + uint8_t data[2]; /**< ORB/A register */ + uint8_t data_in[2]; /**< TODO: unsupported. IRB/A latch */ + uint16_t timer1[2]; /**< Timer 1 Latch and counter */ + uint16_t timer2[2]; /**< Timer 2 Latch (partial) and counter */ + uint8_t sr; /**< SR (shift register) */ + uint8_t ier; /**< interrupt enable flags */ + uint8_t ifr; /**< interrupt flags */ + uint8_t acr; /**< auxillary control register */ + uint8_t pcr; /**< peripheral control register */ + + mb_via_timer_e timer1_status; + mb_via_timer_e timer2_status; + bool timer1_wraparound; +} mb_via_t; + +/* The Mockingboard Device here is a 6 channel (2 chip) version + + Below describes the AY-3-891x implementation + + Each PSG has 3 Square Wave Tone Generators (TG) + Tone frequency is a 12-bit value that combines 'coarse' and 'fine' registers + Each PSG has 1 Noise Generator (NG) + Frequency is a 5-bit value + Each square wave crest has a pseudo-random varying amplitide + + TG[A,B,C] + NG are mixed separately (A + NG, B + NG, C + NG) + => A, B, C + => The outputs are modified based on the Mixer settings (i.e. noise on + select channels, tone on select channels, neither, either, or) + + Each channel (A, B, C) has an amplitude that is controlled *either* + by a scalar or the current envelope + + Envelope Generation + Envelope wave has a 16-bit period (coarse + fine registers) + Envelope wave has a shape (square, triangle, sawtooth, etc) + + 6522 <-> AY3 communication + a.) Instigated by register ORA, ORB writes + b.) 6522.PortA -> AY3 Bus + c.) 6522.PortB[0:2] -> AY3 Bus Control + d.) Allow reads of AY3 registers (for mb-audit validation) + + 6522 functions + a.) DDRA, DDRB offers control of which port pins map to inputs vs outputs + For Mockingboard programs this should be set to $FF (all output), but + for accuracy this implementation will follow the rules outlined in the + datasheet + b.) T1L, T1H, T2L, T2H operate two 16-bit timers (hench the L, H and 1, 2) + nomenclature. Timers decrement at the clock rate and on hitting zero + trigger an IRQ (if enabled) + c.) More notes on timers - timer 1 and 2 have subtle differences best + explained in the implementation comments + d.) SR [NOT IMPLEMENTED] offers a shift register that functions on the CB2 + pin - which has no use on the Mockingboard + c.) PCR [NOT IMPLEMENTED] offers handshaking control on the CBx pins - + which has no use on the Mockingboard (maybe SSI-263 CA1? - TBD) + c.) IFR, IER offer IRQ control and detection. For the Mockingboard we + only care about Timer IRQs (Handshaking and shift register is not + supported as this time.) + + mb_io_sync() handles timer, IRQ signaling and AY3 execution + mb_io_write() handles communication with the AY3 and setting of the timer + + interrupt registers + mb_io_read() handles reading timer state, port A/B data and interrupt status + mb_io_reset() resets both the 6522 and signals reset to the AY3 +*/ +typedef struct mb_t { + mb_via_t via[2]; + mb_ay_t ay3[2]; + uint8_t via_ay3_bus[2]; + uint8_t via_ay3_bus_control[2]; + /* timestamp within current render window */ + mb_clocks_t sync_time_budget; + mb_clocks_t ay3_render_slice_duration; + mb_clock_t last_clocks; +} mb_t; + +static inline mb_via_t * +_mmio_via_addr_parse( // + mb_t *context, + uint8_t ioreg, + uint *reg) +{ + *reg = (ioreg & 0xf); /* 0 = ORx/IRxg, 2 = DDRx, etc */ + return &context->via[(ioreg & 0x80) >> 7]; /* chip select */ +} + +static inline bool +_mmio_via_irq_active( // + mb_via_t *via) +{ + uint8_t tmp = (via->ier & via->ifr) & 0x7f; + return tmp != 0; +} + +/* The 6522 VIA update deals mainly with timer state updates + */ +void +_via_update_state( // + mb_via_t *via, + uint8_t *port_a, + uint8_t *port_b) +{ + uint8_t timer1_mode = via->acr & 0xc0; + uint8_t timer2_mode = via->acr & 0x20; + + via->data_in[MB_VIA_PORT_A] &= via->data_dir[MB_VIA_PORT_A]; + via->data_in[MB_VIA_PORT_A] |= (*port_a & ~via->data_dir[MB_VIA_PORT_A]); + *port_a &= ~via->data_dir[MB_VIA_PORT_A]; + *port_a |= (via->data[MB_VIA_PORT_A] & via->data_dir[MB_VIA_PORT_A]); + + via->data_in[MB_VIA_PORT_B] &= via->data_dir[MB_VIA_PORT_B]; + via->data_in[MB_VIA_PORT_B] |= (*port_b & ~via->data_dir[MB_VIA_PORT_B]); + *port_b &= ~via->data_dir[MB_VIA_PORT_B]; + *port_b |= (via->data[MB_VIA_PORT_B] & via->data_dir[MB_VIA_PORT_B]); + + // PB7 toggling not supported (unneeded) + + // Timer 1 operation: + --via->timer1[1]; + if (via->timer1_status == MB_VIA_TIMER_LOADCOUNTER) { + via->timer1[1] = via->timer1[0]; + if (via->timer1_wraparound) { + if ((timer1_mode & 0x40) == MB_VIA_TIMER1_ONESHOT) { + via->timer1_status = MB_VIA_TIMER_INACTIVE; + } else if ((timer1_mode & 0x40) == MB_VIA_TIMER1_FREERUN) { + via->timer1_status = MB_VIA_TIMER_ACTIVE; + } + } else { + via->timer1_status = MB_VIA_TIMER_ACTIVE; + } + via->timer1_wraparound = false; + } else if (via->timer1_status != MB_VIA_TIMER_NOLATCH) { + if (via->timer1[1] == 0xffff) { + via->timer1_wraparound = true; + if (via->timer1_status == MB_VIA_TIMER_ACTIVE) { + via->ifr |= MB_VIA_IER_TIMER1; + } + via->timer1_status = MB_VIA_TIMER_LOADCOUNTER; + } + } + + // PB6 pulse updated counter not supported (timer 2 pulse mode) + // The T2 one-shot continues decrementing (no latch reload) once fired + --via->timer2[1]; + if (via->timer2_status == MB_VIA_TIMER_LOADCOUNTER) { + via->timer2[1] = via->timer2[0]; + via->timer2_status = MB_VIA_TIMER_ACTIVE; + } else if (via->timer2_status != MB_VIA_TIMER_NOLATCH) { + if (via->timer2[1] == 0xffff) { + if (via->timer2_status == MB_VIA_TIMER_ACTIVE) { + via->ifr |= MB_VIA_IER_TIMER2; + } + if ((timer2_mode & 0x20) == MB_VIA_TIMER2_ONESHOT) { + via->timer2_status = MB_VIA_TIMER_INACTIVE; + } else if ((timer2_mode & 0x20) == MB_VIA_TIMER2_PB6) { + MB_ASSERT(false); + via->timer2_status = MB_VIA_TIMER_ACTIVE; + } + } + } +} + +/* mb_io_read and mb_io_write sets the port/control values on the 6522 + + mb_io_sync: + * performs the 6522 <-> AY-3-8910 operations to control the synthesizer + * the 6522 specific operations (mainly IRQ/timer related) +*/ +void +mb_io_reset( // + struct mb_t *board, + mb_clock_t *clock) +{ + memset(&board->via[0], 0, sizeof(mb_via_t)); + memset(&board->via[1], 0, sizeof(mb_via_t)); + _ay3_reset(&board->ay3[0], clock->ref_step); + _ay3_reset(&board->ay3[1], clock->ref_step); + board->last_clocks = *clock; + board->via_ay3_bus[0] = 0x00; + board->via_ay3_bus[1] = 0x00; + board->via_ay3_bus_control[0] = 0x00; + board->via_ay3_bus_control[1] = 0x00; + board->ay3_render_slice_duration = 0; + board->sync_time_budget = 0; +} + +uint32_t +mb_io_sync( // + struct mb_t *board, + mb_clock_t *clock) +{ + mb_clocks_t dt_clocks = clock->ts - board->last_clocks.ts; + + board->sync_time_budget += dt_clocks; + + while (board->sync_time_budget > clock->ref_step) { + _via_update_state( + &board->via[0], &board->via_ay3_bus[0], &board->via_ay3_bus_control[0]); + _ay3_update(&board->ay3[0], + &board->via_ay3_bus[0], + &board->via_ay3_bus_control[0], + board->ay3_render_slice_duration); + _via_update_state( + &board->via[1], &board->via_ay3_bus[1], &board->via_ay3_bus_control[1]); + _ay3_update(&board->ay3[1], + &board->via_ay3_bus[1], + &board->via_ay3_bus_control[1], + board->ay3_render_slice_duration); + board->sync_time_budget -= clock->ref_step; + board->ay3_render_slice_duration += clock->ref_step; + } + board->last_clocks = *clock; + + return (_mmio_via_irq_active(&board->via[0]) || + _mmio_via_irq_active(&board->via[1])) ? + MB_CARD_IRQ : + 0; +} + +void +mb_io_read( // + struct mb_t *board, + uint8_t *data, + uint8_t addr) +{ + uint reg; + mb_via_t *via; + + via = _mmio_via_addr_parse(board, addr, ®); + switch (reg) { + case MB_VIA_PORT_A_ALT: + case MB_VIA_REG_DDR + MB_VIA_PORT_A: + *data = via->data_dir[MB_VIA_PORT_A]; + break; + case MB_VIA_REG_DATA + MB_VIA_PORT_A: + *data = via->data_in[MB_VIA_PORT_A]; + break; + case MB_VIA_REG_DDR + MB_VIA_PORT_B: + *data = via->data_dir[MB_VIA_PORT_B]; + break; + case MB_VIA_REG_DATA + MB_VIA_PORT_B: + // See Section 2.1 of the W65C22 specification (and the Rockwell Port + // A+B section) on how IRB is read vs IRA. Bascially output pin values + // are read from ORB. Latching is kinda fake here since we're running + // step by step vs concurrently. I don't think this is problem - + // especially since the mockingboard doesn't really do VIA port input. + // :) + *data = (via->data[MB_VIA_PORT_B] & via->data_dir[MB_VIA_PORT_B]) | + (via->data_in[MB_VIA_PORT_B] & ~via->data_dir[MB_VIA_PORT_B]); + break; + case MB_VIA_REG_TIMER1LL: + *data = (uint8_t)(via->timer1[0] & 0x00ff); + break; + case MB_VIA_REG_TIMER1CL: + *data = (uint8_t)(via->timer1[1] & 0x00ff); + // if (!(flags & MB_OP_IO_NO_OP)) { + via->ifr &= ~MB_VIA_IER_TIMER1; // clear timer 1 interrupt + // } + break; + case MB_VIA_REG_TIMER1LH: + *data = (uint8_t)((via->timer1[0] & 0xff00) >> 8); + break; + case MB_VIA_REG_TIMER1CH: + *data = (uint8_t)((via->timer1[1] & 0xff00) >> 8); + break; + case MB_VIA_REG_TIMER2CL: + *data = (uint8_t)(via->timer2[1] & 0x00ff); + // if (!(flags & MB_OP_IO_NO_OP)) { + via->ifr &= ~MB_VIA_IER_TIMER2; + // } + break; + case MB_VIA_REG_TIMER2CH: + *data = (uint8_t)((via->timer2[1] & 0xff00) >> 8); + break; + case MB_VIA_REG_SR: + // if (!(flags & MB_OP_IO_NO_OP)) { + MB_UNIMPLEMENTED("6522 VIA SR read (%x)", addr); + // } + break; + case MB_VIA_REG_PCR: + // if (!(flags & MB_OP_IO_NO_OP)) { + MB_WARN("6522 VIA PCR read (%x)", addr); + // } + break; + case MB_VIA_REG_ACR: + *data = via->acr; + break; + case MB_VIA_REG_IRQ_IER: + *data = 0x80 | (via->ier & 0x7f); + break; + case MB_VIA_REG_IRQ_IFR: + // if interrupt disabled, do not return equivalent flag status + *data = (_mmio_via_irq_active(via) ? 0x80 : 0x00) | (via->ifr & 0x7f); + break; + } +} + +void +mb_io_write( // + struct mb_t *board, + uint8_t data, + uint8_t addr) +{ + mb_via_t *via; + uint reg; + + via = _mmio_via_addr_parse(board, addr, ®); + switch (reg) { + case MB_VIA_PORT_A_ALT: + case MB_VIA_REG_DDR + MB_VIA_PORT_A: + via->data_dir[MB_VIA_PORT_A] = data; + break; + case MB_VIA_REG_DATA + MB_VIA_PORT_A: + via->data[MB_VIA_PORT_A] = data; + break; + case MB_VIA_REG_DDR + MB_VIA_PORT_B: + via->data_dir[MB_VIA_PORT_B] = data; + break; + case MB_VIA_REG_DATA + MB_VIA_PORT_B: + via->data[MB_VIA_PORT_B] = data; + break; + case MB_VIA_REG_TIMER1LL: + case MB_VIA_REG_TIMER1CL: + via->timer1[0] = (via->timer1[0] & 0xff00) | data; + break; + case MB_VIA_REG_TIMER1LH: + via->timer1[0] = (via->timer1[0] & 0x00ff) | ((uint16_t)(data) << 8); + /* The 6522 datasheets conflict on this - the commodore 6522 datasheet + (2-54) and mb-audit state the timer interrupt flag is cleared on + writes to the high order latch - but the rockwell datasheet omits + this fact. */ + via->ifr &= ~MB_VIA_IER_TIMER1; + break; + case MB_VIA_REG_TIMER1CH: + via->timer1[0] = (via->timer1[0] & 0x00ff) | ((uint16_t)(data) << 8); + via->ifr &= ~MB_VIA_IER_TIMER1; + via->timer1_status = MB_VIA_TIMER_LOADCOUNTER; + via->timer1_wraparound = false; + break; + case MB_VIA_REG_TIMER2CL: + via->timer2[0] = (via->timer2[0] & 0xff00) | data; + break; + case MB_VIA_REG_TIMER2CH: + // technically there is no timer 2 high byte latch, but since there are + // no timer 2 latch registers, the contents of this latch doesn't matter + // as the actual timer 2 counter is updated in mb_io_sync + via->timer2[0] = (via->timer2[0] & 0x00ff) | ((uint16_t)(data) << 8); + via->ifr &= ~MB_VIA_IER_TIMER2; + via->timer2_status = MB_VIA_TIMER_LOADCOUNTER; + break; + case MB_VIA_REG_SR: + MB_WARN("6522 VIA SR write (%x)", addr); + break; + case MB_VIA_REG_PCR: + MB_WARN("6522 VIA PCR write (%x)", addr); + break; + case MB_VIA_REG_ACR: + via->acr = data; + break; + case MB_VIA_REG_IRQ_IER: + // if disabling interrupts, IRQs will be cleared in mb_io_sync() + if (data & 0x80) { + via->ier |= (data & 0x7f); + } else { + via->ier &= ~data; + } + break; + case MB_VIA_REG_IRQ_IFR: + via->ifr &= ~(data & 0x7f); + break; + } +} + +struct mb_t * +mb_alloc() +{ + mb_t *res = calloc(1, sizeof(mb_t)); +// if (res) { +// mb_io_reset(&res->last_clocks, res); +// } + return res; +} + +void +mb_dispose( // + struct mb_t * mb ) +{ +} + +uint +mb_ay3_render( // + struct mb_t * mb, + float *samples_out, + uint sample_limit, + uint samples_per_frame, + uint samples_per_second) +{ + uint lcount = _ay3_render( // + &mb->ay3[0], + mb->ay3_render_slice_duration, + 0, + samples_out, + sample_limit, + samples_per_frame, + samples_per_second); + uint rcount = _ay3_render( // + &mb->ay3[1], + mb->ay3_render_slice_duration, + 1, + samples_out, + sample_limit, + samples_per_frame, + samples_per_second); + if (lcount < rcount) { + for (; lcount < rcount; ++lcount) { + samples_out[lcount << 1] = 0.0f; + } + } else { + for (; rcount < lcount; ++rcount) { + samples_out[(rcount << 1) + 1] = 0.0f; + } + } + mb->ay3_render_slice_duration = 0; + return rcount; +} diff --git a/src/drivers/mockingboard.h b/src/drivers/mockingboard.h new file mode 100644 index 0000000..cf6046e --- /dev/null +++ b/src/drivers/mockingboard.h @@ -0,0 +1,141 @@ +/* + * mockingboard.h + * This is a straigth derivative of Clemens IIgs emulator mockingboard + * emulation code. The original code is available at: + * https://github.com/samkusin/clemens_iigs + * + * The original code is also licensed under the MIT License. + * SPDX-License-Identifier: MIT + * + */ +#pragma once +#include + +typedef uint64_t mb_clocks_time_t; +typedef uint32_t mb_clocks_t; + +/* Typically this is passed around as the current time for the machine + and is guaranteed to be shared between machine and any external cards + based on the ref_step. + + For example, MMIO clocks use the Mega2 reference step +*/ +typedef struct mb_clock_t { + mb_clocks_time_t ts; + mb_clocks_t ref_step; +} mb_clock_t; + +struct mb_t; + +/** A bit confusing and created to avoid floating point math whenever possible + * (whether this was a good choice given modern architectures... ?) + * + * Used for calculating our system clock. These values are relative to each other. + * + * The clocks per mega2 cycle (PHI0) value will always be the largest. + * Yet since most time calculations in the emulator are done with fixed point-like + * math, the aim is to keep the clocks count per cycle high enough for fixed + * math to work with uint 32-bit numbers. + * + * SO DON'T CHANGE THESE UNLESS ALL DEPENDENT DEFINE/CALCULATIONS THAT THESE + * VALUES TRICKLE DOWN REMAIN VALID. IF YOU DO, TEST *EVERYTHING* (IWM, + * DIAGNOSTICS) + * + * Based on this, care should be taken when attempting to emulate a 8mhz machine + * in the future - though most I/O is performed using PHI0 cycles. + * + * If you divide the MB_CLOCKS_PHI0_CYCLE by the MB_CLOCKS_PHI2_FAST_CYCLE + * the value will be the effective maximum clock speed in Mhz of the CPU. + * + * Ref: https://www.kansasfest.org/wp-content/uploads/2011-krue-fpi.pdf + */ + +#define MB_CLOCKS_14MHZ_CYCLE 200U // 14.318 Mhz +#define MB_CLOCKS_PHI0_CYCLE (MB_CLOCKS_14MHZ_CYCLE * 14) // 1.023 Mhz with stretch + +// IMPORTANT! This is rounded from 69.8ns - which when scaling up to PHI0 translates +// to 977.7 ns without rounding. Due to the stretch cycle, this +// effectively rounds up to 980ns, which is really what most system +// timings rely on So, rounding up. Bonne chance. +#define MB_14MHZ_CYCLE_NS 70U + +#define MB_MEGA2_CYCLES_PER_SECOND 1023000U +/* these are here for references - the actual functions are determined + by which bits in the address register are set on io_read and io_write +*/ +#define MB_CARD_MOCKINGBOARD_ORB1 0x00 +#define MB_CARD_MOCKINGBOARD_ORA1 0x01 +#define MB_CARD_MOCKINGBOARD_DDRB1 0x02 +#define MB_CARD_MOCKINGBOARD_DDRA1 0x03 +#define MB_CARD_MOCKINGBOARD_ORB2 0x80 +#define MB_CARD_MOCKINGBOARD_ORA2 0x81 +#define MB_CARD_MOCKINGBOARD_DDRB2 0x82 +#define MB_CARD_MOCKINGBOARD_DDRA2 0x83 + +/** All mmio memory operations can have this option - both onboard and + * card operations + */ +#define MB_OP_IO_NO_OP 0x01 +#define MB_IS_IO_NO_OP(_flags_) (((_flags_) & MB_OP_IO_NO_OP) != 0) + +//#define MB_OP_IO_CARD 0x40 +//#define MB_OP_IO_DEVSEL 0x80 + +#define MB_CARD_IRQ 0x80000000 + +// +/** _clock_ is of type mb_clock_t + BEWARE - these macros act on sub second time intervals (per frame deltas.) + Do not use these utilities to calculate values over long time intervals +*/ +#define mb_ns_step_from_clocks(_clocks_step_) \ + ((uint)(MB_14MHZ_CYCLE_NS * (_clocks_step_) / MB_CLOCKS_14MHZ_CYCLE)) + +#define mb_clocks_step_from_ns(_ns_) \ + ((mb_clocks_t)((_ns_) * MB_CLOCKS_14MHZ_CYCLE) / MB_14MHZ_CYCLE_NS) + +/* intentional - paranthesized expression should be done first to avoid precision + * loss*/ +#define mb_secs_from_clocks(_clock_) \ + ((MB_14MHZ_CYCLE_NS * (uint64_t)((_clock_)->ts / MB_CLOCKS_14MHZ_CYCLE)) * \ + 1.0e-9) + +#ifdef __cplusplus +extern "C" { +#endif + +struct mb_t * +mb_alloc(); +void +mb_dispose( // + struct mb_t * mb); +void +mb_io_read( // + struct mb_t *board, + uint8_t *data, + uint8_t addr); +void +mb_io_write( // + struct mb_t *board, + uint8_t data, + uint8_t addr); +uint32_t +mb_io_sync( // + struct mb_t *board, + mb_clock_t *clock); +void +mb_io_reset( // + struct mb_t *board, + mb_clock_t *clock); + +uint +mb_ay3_render( // + struct mb_t * mb, + float *samples_out, + uint sample_limit, + uint samples_per_frame, + uint samples_per_second); + +#ifdef __cplusplus +} +#endif diff --git a/src/format/mii_floppy.c b/src/format/mii_floppy.c index c0b6434..4bf4b7d 100644 --- a/src/format/mii_floppy.c +++ b/src/format/mii_floppy.c @@ -56,7 +56,10 @@ mii_floppy_init( for (int i = 0; i < MII_FLOPPY_TRACK_COUNT + 1; i++) { f->tracks[i].dirty = 0; f->tracks[i].virgin = 1; - f->tracks[i].bit_count = 6550 * 8; + // this affects the disk 'speed' -- larger number will slow down the + // apparent speed of the disk, according to disk utilities. This value + // gives 299-300 RPM, which is the correct speed for a 5.25" floppy. + f->tracks[i].bit_count = 6400 * 8; // fill the whole array up to the end.. uint8_t *track = f->track_data[i]; if (i != MII_FLOPPY_NOISE_TRACK) { @@ -632,10 +635,10 @@ mii_floppy_nibblize_sector( { unsigned int gap; - if (track == 0 ) - printf("NIB: vol %d track %d sector %d pos %5d\n", - vol, track, sector, dst->bit_count); - gap = sector == 0 ? 120 : track == 0 ? 30 : 20; +// if (track == 0 ) +// printf("NIB: vol %d track %d sector %d pos %5d\n", +// vol, track, sector, dst->bit_count); + gap = sector == 0 ? 100 : track == 0 ? 20 : 20; for (uint8_t i = 0; i < gap; ++i) mii_track_write_bits(dst, track_data, 0xFF << 2, 10); // Address Field @@ -710,8 +713,9 @@ mii_floppy_load_dsk( mii_floppy_nibblize_sector(VOLUME_NUMBER, i, phys_sector, src, dst, track_data); } - // printf("%s: track %2d has %d bits %d bytes\n", - // __func__, i, dst->bit_count, dst->bit_count >> 3); + if (i == 0) + printf("%s: track %2d has %d bits %d bytes\n", + __func__, i, dst->bit_count, dst->bit_count >> 3); } // DSK is read only f->write_protected |= MII_FLOPPY_WP_RO_FORMAT; diff --git a/src/format/mii_floppy.h b/src/format/mii_floppy.h index c7dbf5d..35b55a3 100644 --- a/src/format/mii_floppy.h +++ b/src/format/mii_floppy.h @@ -40,10 +40,10 @@ typedef struct mii_floppy_track_t { typedef struct mii_track_heatmap_t { // 32 bytes of track data corresponds to one byte of heatmap - uint32_t seed, tex, cleared; // this needs to be aligned, otherwise SSE code will die horribly uint8_t map[MII_FLOPPY_TRACK_COUNT][MII_FLOPPY_HM_TRACK_SIZE] - __attribute__((aligned(16))); + __attribute__((aligned(32))); + uint32_t seed, tex, cleared; } mii_track_heatmap_t; typedef struct mii_floppy_heatmap_t { diff --git a/src/mii.c b/src/mii.c index 7d8f8ad..c22f6de 100644 --- a/src/mii.c +++ b/src/mii.c @@ -19,6 +19,12 @@ #include "mii_65c02.h" #include "minipt.h" +#if MII_65C02_DIRECT_ACCESS +static mii_cpu_state_t +_mii_cpu_direct_access_cb( + struct mii_cpu_t *cpu, + mii_cpu_state_t access ); +#endif mii_slot_drv_t * mii_slot_drv_list = NULL; @@ -107,7 +113,7 @@ mii_dump_trace_state( static const char *s_flags = "CZIDBRVN"; for (int i = 0; i < 8; i++) printf("%c", MII_GET_P_BIT(cpu, i) ? s_flags[i] : tolower(s_flags[i])); - if (s.sync) { +// if (s.sync) { uint8_t op[16]; for (int i = 0; i < 4; i++) { mii_mem_access(mii, mii->cpu.PC + i, op + i, false, false); @@ -123,8 +129,8 @@ mii_dump_trace_state( printf(" ; taken"); } printf("\n"); - } else - printf("\n"); +// } else +// printf("\n"); } void @@ -180,15 +186,16 @@ mii_page_table_update( if (likely(!mii->mem_dirty)) return; mii->mem_dirty = 0; - bool altzp = SW_GETSTATE(mii, SWALTPZ); - bool page2 = SW_GETSTATE(mii, SWPAGE2); - bool store80 = SW_GETSTATE(mii, SW80STORE); - bool hires = SW_GETSTATE(mii, SWHIRES); - bool ramrd = SW_GETSTATE(mii, SWRAMRD); - bool ramwrt = SW_GETSTATE(mii, SWRAMWRT); - bool intcxrom = SW_GETSTATE(mii, SWINTCXROM); - bool slotc3rom = SW_GETSTATE(mii, SWSLOTC3ROM); - bool intc8rom = SW_GETSTATE(mii, INTC8ROM); + uint32_t sw = mii->sw_state; + bool altzp = SWW_GETSTATE(sw, SWALTPZ); + bool page2 = SWW_GETSTATE(sw, SWPAGE2); + bool store80 = SWW_GETSTATE(sw, SW80STORE); + bool hires = SWW_GETSTATE(sw, SWHIRES); + bool ramrd = SWW_GETSTATE(sw, SWRAMRD); + bool ramwrt = SWW_GETSTATE(sw, SWRAMWRT); + bool intcxrom = SWW_GETSTATE(sw, SWINTCXROM); + bool slotc3rom = SWW_GETSTATE(sw, SWSLOTC3ROM); + bool intc8rom = SWW_GETSTATE(sw, INTC8ROM); if (unlikely(mii->trace_cpu)) printf("%04x: MEM update altzp:%d page2:%d store80:%d " @@ -215,15 +222,15 @@ mii_page_table_update( } // c1-cf are at ROM state when we arrive here if (!intcxrom) { - mii_page_set(mii, MII_BANK_CARD_ROM, _SAME, 0xc1, 0xcf); + mii_page_set(mii, MII_BANK_CARD_ROM, MII_BANK_CARD_ROM, 0xc1, 0xcf); if (!slotc3rom) mii_page_set(mii, MII_BANK_ROM, _SAME, 0xc3, 0xc3); if (intc8rom) mii_page_set(mii, MII_BANK_ROM, _SAME, 0xc8, 0xcf); } - bool bsrread = SW_GETSTATE(mii, BSRREAD); - bool bsrwrite = SW_GETSTATE(mii, BSRWRITE); - bool bsrpage2 = SW_GETSTATE(mii, BSRPAGE2); + bool bsrread = SWW_GETSTATE(sw, BSRREAD); + bool bsrwrite = SWW_GETSTATE(sw, BSRWRITE); + bool bsrpage2 = SWW_GETSTATE(sw, BSRPAGE2); mii_page_set(mii, bsrread ? altzp ? MII_BANK_AUX_BSR : MII_BANK_BSR : @@ -342,6 +349,7 @@ mii_access_soft_switches( bool res = false; uint8_t on = 0; mii_bank_t * sw = &mii->bank[MII_BANK_SW]; + const uint16_t sw_save = mii->sw_state; /* * This allows driver (titan accelerator etc) to have their own @@ -403,22 +411,19 @@ mii_access_soft_switches( SW_SETSTATE(mii, BSRREAD, !offSwitch); } SW_SETSTATE(mii, BSRPAGE2, !(addr & 0x08)); - mii->mem_dirty = 1; + mii->mem_dirty = sw_save != mii->sw_state; } break; case SWPAGE2OFF: case SWPAGE2ON: - res = true; - SW_SETSTATE(mii, SWPAGE2, addr & 1); - mii_bank_poke(sw, SWPAGE2, (addr & 1) << 7); - mii->mem_dirty = 1; + // ACTUAL switch is already done in mii_access_video() + res = true; // mii_access_video(mii, addr, byte, write); + mii->mem_dirty = true; break; case SWHIRESOFF: case SWHIRESON: - res = true; - SW_SETSTATE(mii, SWHIRES, addr & 1); - mii_bank_poke(sw, SWHIRES, (addr & 1) << 7); - mii->mem_dirty = 1; - // printf("HIRES %s\n", (addr & 1) ? "ON" : "OFF"); + // ACTUAL switch is already done in mii_access_video() + res = true; // mii_access_video(mii, addr, byte, write); + mii->mem_dirty = true; break; case SWSPEAKER: res = true; @@ -434,8 +439,10 @@ mii_access_soft_switches( // IIgs register, read by prodos tho break; } - if (res && !mii->mem_dirty) + if (res) { + mii_page_table_update(mii); return res; + } if (write) { switch (addr) { case SW80STOREOFF: @@ -443,56 +450,55 @@ mii_access_soft_switches( res = true; SW_SETSTATE(mii, SW80STORE, addr & 1); mii_bank_poke(sw, SW80STORE, (addr & 1) << 7); - mii->mem_dirty = 1; break; case SWRAMRDOFF: case SWRAMRDON: res = true; SW_SETSTATE(mii, SWRAMRD, addr & 1); mii_bank_poke(sw, SWRAMRD, (addr & 1) << 7); - mii->mem_dirty = 1; break; case SWRAMWRTOFF: case SWRAMWRTON: res = true; SW_SETSTATE(mii, SWRAMWRT, addr & 1); mii_bank_poke(sw, SWRAMWRT, (addr & 1) << 7); - mii->mem_dirty = 1; break; case SWALTPZOFF: case SWALTPZON: res = true; SW_SETSTATE(mii, SWALTPZ, addr & 1); mii_bank_poke(sw, SWALTPZ, (addr & 1) << 7); - mii->mem_dirty = 1; break; case SWINTCXROMOFF: case SWINTCXROMON: res = true; SW_SETSTATE(mii, SWINTCXROM, addr & 1); mii_bank_poke(sw, SWINTCXROM, (addr & 1) << 7); - mii->mem_dirty = 1; break; case SWSLOTC3ROMOFF: case SWSLOTC3ROMON: res = true; SW_SETSTATE(mii, SWSLOTC3ROM, addr & 1); mii_bank_poke(sw, SWSLOTC3ROM, (addr & 1) << 7); - mii->mem_dirty = 1; break; case SWRAMWORKS_BANK: mii_bank_poke(sw, SWRAMWORKS_BANK, *byte); mii_bank_update_ramworks(mii, *byte); break; } + mii->mem_dirty += sw_save != mii->sw_state; } else { switch (addr) { case SWBSRBANK2: - *byte = SW_GETSTATE(mii, BSRPAGE2) ? 0x80 : 0; + *byte = SW_GETSTATE(mii, BSRPAGE2) << 7; res = true; break; case SWBSRREADRAM: - *byte = SW_GETSTATE(mii, BSRREAD) ? 0x80 : 0; + *byte = SW_GETSTATE(mii, BSRREAD) << 7; + res = true; + break; + case SWPAGE2OFF: + case SWPAGE2ON: // already done by the video code res = true; break; case SWRAMRD: @@ -504,29 +510,33 @@ mii_access_soft_switches( res = true; *byte = mii_bank_peek(sw, addr); break; - case 0xc020: // toggle TAPE output ?!?! - res = true; - break; case 0xc068: res = true; // IIgs register, read by prodos tho break; + case 0xc020: // toggle TAPE output ?!?! + // res = true; + // break; default: res = true; + // if (addr != 0xc00b) + // printf("VAPOR LOCK %04x\n", addr); + // this doesn't work. Well it does the job of returning + // something semi random, but it's not ready to be a TRUE + // vapor lock. + *byte = mii_video_get_vapor(mii); +#if 0 /* * this is moderately important, return some random value * as it is supposed to represent what's on the bus at the time, * typically video being decoded etc. */ - *byte = mii->random[mii->random_index++]; - mii->random_index &= 0xff; +// *byte = mii->random[mii->random_index++]; +// mii->random_index &= 0xff; +#endif break; } } - if (!res) { - // printf("%s addr %04x write %d %02x\n", __func__, addr, write, *byte); - // mii->state = MII_STOPPED; - } mii_page_table_update(mii); return res; } @@ -576,6 +586,7 @@ mii_keypress( mii_bank_poke(sw, SWKBD, key); } +/* ramworks came populated in chunks, this duplicates these rows of chips */ #define B(x) ((unsigned __int128)1ULL << (x)) static const unsigned __int128 _mii_ramworks3_config[] = { B(0x00)|B(0x01)|B(0x02)|B(0x03), @@ -625,6 +636,10 @@ mii_init( mii_reset(mii, true); mii->cpu_state = mii_cpu_init(&mii->cpu); +#if MII_65C02_DIRECT_ACCESS + mii->cpu.access_param = mii; + mii->cpu.access = _mii_cpu_direct_access_cb; +#endif for (int i = 0; i < 7; i++) mii->slot[i].id = i; // srandom(time(NULL)); @@ -732,11 +747,14 @@ mii_mem_access( if (wr) { uint8_t m = mii->mem[page].write; mii_bank_t * b = &mii->bank[m]; - if (b->ro) { - // printf("%s write to RO bank %s %04x:%02x\n", - // __func__, b->name, addr, *d); - } else + if (!b->ro) mii_bank_write(b, addr, d, 1); + else { + // writing to ROM *is* sort of OK in certain circumstances, if + // there is a 'special' handler of the rom page. the NSC and the + // mockinboard are examples of this. + mii_bank_access(b, addr, d, 1, true); + } } else { uint8_t m = mii->mem[page].read; mii_bank_t * b = &mii->bank[m]; @@ -751,7 +769,9 @@ _mii_handle_trap( // printf("%s TRAP hit PC: %04x\n", __func__, mii->cpu.PC); mii->cpu_state.sync = 1; mii->cpu_state.trap = 0; +#if MII_65C02_DIRECT_ACCESS == 0 mii->cpu.state = NULL; +#endif uint8_t trap = mii_read_one(mii, mii->cpu.PC); mii->cpu.PC += 1; // printf("%s TRAP %02x return PC %04x\n", __func__, trap, mii->cpu.PC); @@ -847,6 +867,73 @@ mii_timer_run( } } +#if MII_65C02_DIRECT_ACCESS +static mii_cpu_state_t +_mii_cpu_direct_access_cb( + struct mii_cpu_t *cpu, + mii_cpu_state_t access ) +{ + mii_t *mii = cpu->access_param; + + uint8_t cycle = mii->timer.last_cycle; + mii_timer_run(mii, + mii->cpu.cycle > cycle ? mii->cpu.cycle - cycle : + mii->cpu.cycle); + mii->timer.last_cycle = mii->cpu.cycle; + + const uint16_t addr = access.addr; + int wr = access.w; + + if (access.sync) { + // log PC for the running disassembler display + mii->trace.log[mii->trace.idx] = mii->cpu.PC; + mii->trace.idx = (mii->trace.idx + 1) & (MII_PC_LOG_SIZE - 1); + } + if (unlikely(mii->debug.bp_map)) { + for (int i = 0; i < (int)sizeof(mii->debug.bp_map) * 8; i++) { + if (!(mii->debug.bp_map & (1 << i))) + continue; + if (addr >= mii->debug.bp[i].addr && + addr < mii->debug.bp[i].addr + mii->debug.bp[i].size) { + if (((mii->debug.bp[i].kind & MII_BP_R) && !wr) || + ((mii->debug.bp[i].kind & MII_BP_W) && wr)) { + + if (1 || !mii->debug.bp[i].silent) { + printf("BREAKPOINT %d at %04x PC:%04x\n", + i, addr, mii->cpu.PC); + mii_dump_run_trace(mii); + mii_dump_trace_state(mii); + mii->cpu.instruction_run = 0; + mii->state = MII_STOPPED; + } + } + if (!(mii->debug.bp[i].kind & MII_BP_STICKY)) + mii->debug.bp_map &= ~(1 << i); + mii->debug.bp[i].kind |= MII_BP_HIT; + } + } + } + mii_mem_access(mii, addr, &access.data, wr, true); + return access; +} +void +mii_run( + mii_t *mii) +{ + /* this runs all cycles for one instruction */ + if (unlikely(mii->state != MII_RUNNING || mii->trace_cpu > 1)) { + printf("tracing\n"); + mii->cpu.instruction_run = 0; + } else + mii->cpu.instruction_run = 100000; + + mii->cpu_state = mii_cpu_run(&mii->cpu, mii->cpu_state); + + if (unlikely(mii->cpu_state.trap)) + _mii_handle_trap(mii); +} +#else + void mii_run( mii_t *mii) @@ -900,11 +987,8 @@ mii_run( // log PC for the running disassembler display mii->trace.log[mii->trace.idx] = mii->cpu.PC; mii->trace.idx = (mii->trace.idx + 1) & (MII_PC_LOG_SIZE - 1); - for (int i = 0; i < 7; i++) { - if (mii->slot[i].drv && mii->slot[i].drv->run) - mii->slot[i].drv->run(mii, &mii->slot[i]); - } } +#endif //! Read one byte from and addres, using the current memory mapping uint8_t @@ -951,3 +1035,51 @@ mii_write_word( d = w >> 8; mii_mem_access(mii, addr + 1, &d, 1, false); } + +void +mii_cpu_step( + mii_t *mii, + uint32_t count ) +{ + if (mii->state != MII_STOPPED) { + printf("mii: can't step/next, not stopped\n"); + return; + } + mii->trace.step_inst = count ? count : 1; + __sync_synchronize(); + mii->state = MII_STEP; +} + +void +mii_cpu_next( + mii_t *mii) +{ + if (mii->state != MII_STOPPED) { + printf("mii: can't step/next, not stopped\n"); + return; + } + // read current opcode, find how how many bytes it take, + // then put a temporary breakpoint to the next PC. + // all of that if this is not a relative branch of course, in + // which case we use a normal 'step' behaviour + uint8_t op; + mii_mem_access(mii, mii->cpu.PC, &op, false, false); + printf("NEXT opcode %04x:%02x\n", mii->cpu.PC, op); + if (op == 0x20) { // JSR here? + // set a temp breakpoint on reading 3 bytes from PC + if (mii->debug.bp_map != 0xffff) { + int i = ffsl(~mii->debug.bp_map) - 1; + mii->debug.bp[i].addr = mii->cpu.PC + 3; + mii->debug.bp[i].kind = MII_BP_R; + mii->debug.bp[i].size = 1; + mii->debug.bp[i].silent = 1; + mii->debug.bp_map |= 1 << i; + __sync_synchronize(); + mii->state = MII_RUNNING; + return; + } + printf("%s no more breakpoints available\n", __func__); + } else { + mii_cpu_step(mii, 1); + } +} \ No newline at end of file diff --git a/src/mii.h b/src/mii.h index 34c645b..ca5b423 100644 --- a/src/mii.h +++ b/src/mii.h @@ -97,16 +97,23 @@ typedef uint64_t (*mii_timer_p)( * principal emulator state, for a faceless emulation */ typedef struct mii_t { + mii_cpu_t cpu; + mii_cpu_state_t cpu_state; + /* this is the video frame/VBL rate vs 60hz, default to MII_SPEED_NTSC */ + float speed; unsigned int state; /* * These are 'cycle timers' -- they count down from a set value, - * and stop at 0 (or possiblu -1 or -2, depending on the instructions) + * and stop at 0 (or possibly -1 or -2, depending on the instructions) * and call the callback (if present). * The callback returns the number of cycles to wait until the next * call. */ struct { - uint64_t map; + uint64_t map; +#if MII_65C02_DIRECT_ACCESS + uint8_t last_cycle; +#endif struct { mii_timer_p cb; void * param; @@ -114,10 +121,6 @@ typedef struct mii_t { const char * name; // debug } timers[64]; } timer; - /* this is the video frame/VBL rate vs 60hz, default to 1.0 */ - float speed; - mii_cpu_t cpu; - mii_cpu_state_t cpu_state; /* * bank index for each memory page number, this is recalculated * everytime a MMU soft switch is triggered @@ -139,7 +142,7 @@ typedef struct mii_t { mii_trace_t trace; int trace_cpu; mii_trap_t trap; - mii_signal_pool_t sig_pool; + mii_signal_pool_t sig_pool; // vcd support /* * Used for debugging only */ @@ -172,6 +175,7 @@ enum { MII_INIT_NSC = (1 << 0), // Install no slot clock MII_INIT_TITAN = (1 << 1), // Install Titan 'card' MII_INIT_SILENT = (1 << 2), // No audio, ever + MII_INIT_MOCKINGBOARD = (1 << 3), // Install mockingboard // number of 256KB banks added to the ramworks MII_INIT_RAMWORKS_BIT = 4, // bit 4 in flags. Can be up to 12 @@ -355,3 +359,12 @@ mii_register_trap( #define MII_MISH_KIND MISH_FCC('m','i','i',' ') #define MII_MISH(_name,_cmd) \ MISH_CMD_REGISTER_KIND(_name, _cmd, 0, MII_MISH_KIND) + + +void +mii_cpu_step( + mii_t *mii, + uint32_t count ); +void +mii_cpu_next( + mii_t *mii); diff --git a/src/mii_65c02.c b/src/mii_65c02.c index 807ec95..b6413dd 100644 --- a/src/mii_65c02.c +++ b/src/mii_65c02.c @@ -26,10 +26,23 @@ mii_cpu_init( .addr = 0, .reset = 1, }; +#if MII_65C02_DIRECT_ACCESS +#else cpu->state = NULL; +#endif return s; } +#if MII_65C02_DIRECT_ACCESS +#define _FETCH(_val) { \ + s.addr = _val; s.w = 0; cpu->cycle++; \ + s = cpu->access(cpu, s); \ + } +#define _STORE(_addr, _val) { \ + s.addr = _addr; s.data = _val; s.w = 1; cpu->cycle++; \ + s = cpu->access(cpu, s); \ + } +#else #define _FETCH(_val) { \ s.addr = _val; s.w = 0; cpu->cycle++; \ pt_yield(cpu->state); \ @@ -38,7 +51,7 @@ mii_cpu_init( s.addr = _addr; s.data = _val; s.w = 1; cpu->cycle++; \ pt_yield(cpu->state); \ } - +#endif #define _NZC(_val) { \ uint16_t v = (_val); \ @@ -60,8 +73,12 @@ mii_cpu_run( mii_cpu_t *cpu, mii_cpu_state_t s) { +#if MII_65C02_DIRECT_ACCESS + mii_op_desc_t d; +#else mii_op_desc_t d = mii_cpu_op[cpu->IR].desc; pt_start(cpu->state); +#endif next_instruction: if (unlikely(s.reset)) { s.reset = 0; @@ -71,7 +88,7 @@ next_instruction: cpu->S = 0xFF; MII_SET_P(cpu, 0); } - if (unlikely(s.irq) && cpu->P.I == 0) { + if (unlikely(s.irq && cpu->P.I == 0)) { if (!cpu->IRQ) cpu->IRQ = 1; } @@ -104,8 +121,12 @@ next_instruction: d = mii_cpu_op[cpu->IR].desc; cpu->ir_log = (cpu->ir_log << 8) | cpu->IR; s.trap = cpu->trap && (cpu->ir_log & 0xffff) == cpu->trap; - if (unlikely(s.trap)) + if (unlikely(s.trap)) { cpu->ir_log = 0; +#if MII_65C02_DIRECT_ACCESS + return s; +#endif + } switch (d.mode) { case IMM: _FETCH(cpu->PC++); cpu->_D = s.data; @@ -609,6 +630,7 @@ next_instruction: /* Apparently these NOPs use 3 bytes, according to the tests */ case 0x5c: case 0xdc: case 0xfc: _FETCH(cpu->PC++); + // fall through /* Apparently these NOPs use 2 bytes, according to the tests */ case 0x02: case 0x22: case 0x42: case 0x62: case 0x82: case 0xC2: case 0xE2: case 0x44: case 0x54: case 0xD4: @@ -626,7 +648,15 @@ next_instruction: if (d.w) { _STORE(cpu->_P, cpu->_D); } +#if MII_65C02_DIRECT_ACCESS + // we don't need to do anything here, the store already did it + if (likely(cpu->instruction_run)) { + cpu->instruction_run--; + goto next_instruction; + } +#else goto next_instruction; pt_end(cpu->state); +#endif return s; } diff --git a/src/mii_65c02.h b/src/mii_65c02.h index f033345..d188476 100644 --- a/src/mii_65c02.h +++ b/src/mii_65c02.h @@ -40,7 +40,7 @@ * this will stop the current instruction and start fetching at new_pc * */ -typedef union mii_cpu_state_t { +typedef union mii_cpu_state_t { struct { uint16_t addr; uint8_t data; @@ -50,9 +50,20 @@ typedef union mii_cpu_state_t { irq : 1, nmi : 1, trap : 1; - }; + } __attribute__((packed)); uint32_t raw; -} mii_cpu_state_t; +} mii_cpu_state_t ; + +#ifndef MII_65C02_DIRECT_ACCESS +#define MII_65C02_DIRECT_ACCESS 1 +#endif + +#if MII_65C02_DIRECT_ACCESS +struct mii_cpu_t; +typedef mii_cpu_state_t (*mii_cpu_direct_access_cb)( + struct mii_cpu_t *cpu, + mii_cpu_state_t access ); +#endif /* CPU state machine */ typedef struct mii_cpu_t { @@ -87,9 +98,7 @@ typedef struct mii_cpu_t { uint8_t IR; uint8_t IRQ; // IRQ (0) or NMI (1) or BRK (2) uint8_t cycle; // for current instruction - /* State of the protothread for the CPU state machine (minipt.h) */ - void * state; - + uint32_t instruction_run; // how many instructions to run /* sequence of instruction that will trigger a trap flag. * this is used to trigger 'call backs' to the main code * typically use a pair of NOPs sequence that is unlikely to exist in @@ -99,8 +108,18 @@ typedef struct mii_cpu_t { uint32_t ir_log; uint64_t total_cycle; +#if MII_65C02_DIRECT_ACCESS + mii_cpu_direct_access_cb access; + void * access_param; // typically struct mii_t* +#else + /* State of the protothread for the CPU state machine (minipt.h) */ + void * state; +#endif + +#ifdef MII_TEST /* Debug only; Only used by the test units. */ uint8_t * ram; // DEBUG +#endif } mii_cpu_t; mii_cpu_state_t diff --git a/src/mii_argv.c b/src/mii_argv.c index be925eb..1f4a30d 100644 --- a/src/mii_argv.c +++ b/src/mii_argv.c @@ -136,7 +136,7 @@ mii_argv_parse( } else if (!strcmp(arg, "--audio-off") || !strcmp(arg, "--no-audio") || !strcmp(arg, "--silent")) { - mii->speaker.off = true; + mii->speaker.speaker_off = true; *ioFlags |= MII_INIT_SILENT; } else if (!strcmp(arg, "-vol") || !strcmp(arg, "--volume")) { if (i < argc-1) { diff --git a/src/mii_bank.c b/src/mii_bank.c index 30806c6..6ed2031 100644 --- a/src/mii_bank.c +++ b/src/mii_bank.c @@ -45,6 +45,23 @@ mii_bank_dispose( bank->access = NULL; } +bool +mii_bank_access( + mii_bank_t *bank, + uint16_t addr, + const uint8_t *data, + uint16_t len, + bool write) +{ + uint8_t page_index = (addr - bank->base) >> 8; + if (bank->access && bank->access[page_index].cb) { + if (bank->access[page_index].cb(bank, bank->access[page_index].param, + addr, (uint8_t *)data, write)) + return true; + } + return false; +} + void mii_bank_write( mii_bank_t *bank, @@ -52,6 +69,7 @@ mii_bank_write( const uint8_t *data, uint16_t len) { + #if 0 // rather expensive test when profiling! uint32_t end = bank->base + (bank->size << 8); if (unlikely(addr < bank->base || (addr + len) > end)) { printf("%s %s INVALID write addr %04x len %d %04x:%04x\n", @@ -60,12 +78,9 @@ mii_bank_write( abort(); return; } - uint8_t page_index = (addr - bank->base) >> 8; - if (bank->access && bank->access[page_index].cb) { - if (bank->access[page_index].cb(bank, bank->access[page_index].param, - addr, (uint8_t *)data, true)) - return; - } + #endif + if (mii_bank_access(bank, addr, data, len, true)) + return; uint32_t phy = bank->mem_offset + addr - bank->base; do { bank->mem[phy++] = *data++; @@ -79,7 +94,7 @@ mii_bank_read( uint8_t *data, uint16_t len) { - #if 1 // rather expensive test when profiling! + #if 0 // rather expensive test when profiling! uint32_t end = bank->base + (bank->size << 8); if (unlikely(addr < bank->base) || unlikely((addr + len) > end)) { printf("%s %s INVALID read addr %04x len %d %04x-%04x\n", @@ -88,12 +103,8 @@ mii_bank_read( return; } #endif - uint8_t page_index = (addr - bank->base) >> 8; - if (bank->access && bank->access[page_index].cb) { - if (bank->access[page_index].cb(bank, bank->access[page_index].param, - addr, data, false)) - return; - } + if (mii_bank_access(bank, addr, data, len, false)) + return; uint32_t phy = bank->mem_offset + addr - bank->base; do { *data++ = bank->mem[phy++]; diff --git a/src/mii_bank.h b/src/mii_bank.h index 6cfa9e0..92c3fa1 100644 --- a/src/mii_bank.h +++ b/src/mii_bank.h @@ -65,6 +65,13 @@ mii_bank_read( uint16_t addr, uint8_t *data, uint16_t len); +bool +mii_bank_access( + mii_bank_t *bank, + uint16_t addr, + const uint8_t *data, + uint16_t len, + bool write); /* return the number of pages dirty (written into since last time) between * addr1 and addr2 (inclusive) */ diff --git a/src/mii_mish.c b/src/mii_mish.c index 571b376..7461710 100644 --- a/src/mii_mish.c +++ b/src/mii_mish.c @@ -81,11 +81,7 @@ show_state: return; } uint8_t val = strtol(argv[2], NULL, 16); - if (val > MII_VIDEO_MODE_COUNT) { - printf("rgb: invalid mode %d\n", val); - return; - } - mii->video.color_mode = val; + mii_video_set_mode(mii, val); return; } @@ -389,44 +385,15 @@ _mii_mish_step( printf("mii: can't step/next, not stopped\n"); return; } - if (argv[1]) { - int n = strtol(argv[1], NULL, 10); - mii->trace.step_inst = n; - } else - mii->trace.step_inst = 1; - mii->state = MII_STEP; + int count = 1; + if (argv[1]) + count = strtol(argv[1], NULL, 10); + mii_cpu_step(mii, count); return; } if (argv[0][0] == 'n') { mii_t * mii = param; - if (mii->state != MII_STOPPED) { - printf("mii: can't step/next, not stopped\n"); - return; - } - // read current opcode, find how how many bytes it take, - // then put a temporary breakpoint to the next PC. - // all of that if this is not a relative branch of course, in - // which case we use a normal 'step' behaviour - uint8_t op; - mii_mem_access(mii, mii->cpu.PC, &op, false, false); - if (op == 0x20) { // JSR here? - // set a temp breakpoint on reading 3 bytes from PC - for (int i = 0; i < (int)sizeof(mii->debug.bp_map) * 8; i++) { - if ((mii->debug.bp_map & (1 << i))) - continue; - mii->debug.bp[i].addr = mii->cpu.PC + 3; - mii->debug.bp[i].kind = MII_BP_R; - mii->debug.bp[i].size = 1; - mii->debug.bp[i].silent = 1; - mii->debug.bp_map |= 1 << i; - mii->state = MII_RUNNING; - return; - } - printf("no more breakpoints available\n"); - } else { - mii->trace.step_inst = 1; - mii->state = MII_STEP; - } + mii_cpu_next(mii); return; } if (argv[0][0] == 'c') { @@ -493,6 +460,58 @@ _mii_mish_audio( } } +static void +_mii_mish_bsave( + void * param, + int argc, + const char * argv[]) +{ + mii_t * mii = param; + if (argc < 4) { + printf("bsave: missing argument \n"); + return; + } + const char * file = argv[1]; + uint16_t addr = strtol(argv[2], NULL, 16); + if (!strcmp(argv[0], "bsave")) { + uint16_t size = strtol(argv[3], NULL, 16); + if (addr + size > 0x10000) { + printf("bsave: size too big\n"); + return; + } + FILE * f = fopen(file, "wb"); + if (!f) { + printf("bsave: can't open %s\n", file); + return; + } + mii_bank_t * bank = &mii->bank[MII_BANK_MAIN]; + + fwrite(bank->mem + addr, size, 1, f); + fclose(f); + printf("bsave: %s saved %d bytes at %04x\n", file, size, addr); + } else if (!strcmp(argv[0], "bload")) { + FILE * f = fopen(file, "rb"); + if (!f) { + printf("bsave: can't open %s\n", file); + return; + } + fseek(f, 0, SEEK_END); + uint16_t size = ftell(f); + fseek(f, 0, SEEK_SET); + if (addr + size > 0x10000) { + printf("bsave: size too big\n"); + return; + } + mii_bank_t * bank = &mii->bank[MII_BANK_MAIN]; + fread(bank->mem + addr, size, 1, f); + fclose(f); + printf("bsave: %s loaded %d bytes at %04x\n", file, size, addr); + } else { + printf("%s: unknown command\n", argv[0]); + return; + } +} + #include "mish.h" MISH_CMD_NAMES(mii, "mii"); @@ -582,3 +601,12 @@ MISH_CMD_HELP(audio, " volume: set volume (0.0 to 1.0)." ); MII_MISH(audio, _mii_mish_audio); + + +MISH_CMD_NAMES(bsave, "bsave","bload"); +MISH_CMD_HELP(bsave, + "bsave/bload: save/load binary data from ram", + " bsave : save binary data to file.", + " bload : load binary data from file." + ); +MII_MISH(bsave, _mii_mish_bsave); diff --git a/src/mii_slot.h b/src/mii_slot.h index 9afc798..5ec2408 100644 --- a/src/mii_slot.h +++ b/src/mii_slot.h @@ -41,9 +41,6 @@ typedef struct mii_slot_drv_t { void (*reset)( mii_t * mii, struct mii_slot_t *slot); - void (*run)( - mii_t * mii, - struct mii_slot_t *slot); // access to the slot's soft switches. uint8_t (*access)( mii_t * mii, diff --git a/src/mii_speaker.c b/src/mii_speaker.c index 2a3af4f..fdad1e4 100644 --- a/src/mii_speaker.c +++ b/src/mii_speaker.c @@ -10,6 +10,7 @@ #include #include #include +#include #include "mii.h" #include "mii_speaker.h" @@ -99,8 +100,8 @@ mii_speaker_init( s->timer_id = mii_timer_register(mii, _mii_speaker_timer_cb, s, 0, __func__); #ifdef HAS_ALSA - printf("%s audio is %s\n", __func__, s->off ? "off" : "on"); - if (!s->off) + printf("%s audio is %s\n", __func__, s->speaker_off ? "off" : "on"); + if (!s->speaker_off) _alsa_init(s); // this can/will change fsize #endif mii_speaker_volume(s, 1); @@ -135,7 +136,7 @@ _mii_speaker_timer_cb( { mii_speaker_t *s = (mii_speaker_t *)param; - if (s->muted || s->off) + if (s->muted || s->speaker_off) goto done; mii_audio_frame_t *f = &s->frame[s->fplay]; // if the frame is empty, we mark the fact we are in underrun, diff --git a/src/mii_speaker.h b/src/mii_speaker.h index 4585701..1cbcb14 100644 --- a/src/mii_speaker.h +++ b/src/mii_speaker.h @@ -13,32 +13,32 @@ #define MII_SPEAKER_FRAME_COUNT 4 struct mii_t; -struct snd_pcm_t; +struct _snd_pcm; typedef int16_t mii_audio_sample_t; typedef struct mii_audio_frame_t { -// mii_cycles_t start; - uint16_t fill; - mii_audio_sample_t * audio; + uint16_t fill; + mii_audio_sample_t *audio; } mii_audio_frame_t; typedef struct mii_speaker_t { - struct mii_t * mii; - uint8_t timer_id; // timer id for the audio thread - int debug_fd; // if > 0, dump audio to this fd - void * alsa_pcm; // alsa pcm handle - bool muted; // if true, don't play anything - bool off; // if true, don't even initialize (alsa) - float volume; // volume, 0.0 to 10.0 - float vol_multiplier; // sample multiplier, 0.0 to 1.0 - float cpu_speed; // CPU speed in MHz, to calculate clk_per_sample - uint8_t under; // number of frames we've skipped - uint8_t fplay; // frame we want to play - uint16_t fsize; // size in samples of a frame - uint8_t findex; // frame we are currently filling - float clk_per_sample; // number of cycles per sample (at current CPU speed) - mii_audio_sample_t sample; // current value for the speaker output - mii_audio_frame_t frame[MII_SPEAKER_FRAME_COUNT]; + struct mii_t *mii; + uint8_t timer_id; // timer id for the audio thread + int debug_fd; // if > 0, dump audio to this fd + struct _snd_pcm *alsa_pcm; // alsa pcm handle + uint muted : 1; // if true, don't play anything + uint speaker_off : 1; // if true, don't even initialize (alsa) + float volume; // volume, 0.0 to 10.0 + float vol_multiplier; // sample multiplier, 0.0 to 1.0 + float cpu_speed; // CPU speed in MHz, to calculate clk_per_sample + uint8_t under; // number of frames we've skipped + uint8_t fplay; // frame we want to play + uint16_t fsize; // size in samples of a frame + uint8_t findex; // frame we are currently filling + // number of cycles per sample (at current CPU speed) + float clk_per_sample; + mii_audio_sample_t sample; // current value for the speaker output + mii_audio_frame_t frame[MII_SPEAKER_FRAME_COUNT]; } mii_speaker_t; // Initialize the speaker with the frame size in samples diff --git a/src/mii_vcd.c b/src/mii_vcd.c index 34f0ca0..07a207a 100644 --- a/src/mii_vcd.c +++ b/src/mii_vcd.c @@ -106,7 +106,7 @@ mii_vcd_flush_log( { uint64_t seen = 0; uint64_t oldbase = 0; // make sure it's different - char out[48]; + char out[256]; if (mii_vcd_fifo_isempty(&vcd->log) || !vcd->output) return; diff --git a/src/mii_video.c b/src/mii_video.c index 621ed2d..8191c0d 100644 --- a/src/mii_video.c +++ b/src/mii_video.c @@ -10,6 +10,7 @@ #include #include #include +#include #include "mii.h" #include "mii_bank.h" @@ -18,25 +19,40 @@ #include "minipt.h" +#if defined(__AVX2__) +#include +typedef uint32_t u32_v __attribute__((vector_size(32))); +#define VEC_ALIGN 31 +#define VEC_ECOUNT 8 +#else +#include +typedef uint32_t u32_v __attribute__((vector_size(16))); +#define VEC_ALIGN 15 +#define VEC_ECOUNT 4 +#endif + enum { // https://rich12345.tripod.com/aiivideo/vbl.html - MII_VBL_DOWN_CYCLES = 12480, - MII_VBL_UP_CYCLES = 4550, - MII_VIDEO_H_CYCLES = 40, - MII_VIDEO_HB_CYCLES = 25, + MII_VBL_DOWN_CYCLES = 12480, + MII_VBL_UP_CYCLES = 4550, + MII_VIDEO_H_CYCLES = 40, + MII_VIDEO_HB_CYCLES = 25, }; +#define MII_VIDEO_MIXED_LINE (192 - (4 * 8)) +// frequency of the blinking text, in frames. When that bit changes, we flash +#define MII_VIDEO_FLASH_FRAME_MASK 0x10 + +// this is the bank video memory is read from. This differs from the AUX +// bank as it doesn't change when the Ramworks card bank is changed +#define MII_VIDEO_BANK MII_BANK_AUX_BASE + /* * Colors were lifted from * https://comp.sys.apple2.narkive.com/lTSrj2ZI/apple-ii-colour-rgb * and * https://www.mrob.com/pub/xapple2/colors.html */ -typedef struct mii_color_t { - uint32_t rgb; - uint32_t l : 8, index : 8; -} mii_color_t; - #define HI_LUMA(r,g,b) \ ((uint8_t)(0.2126 * (r) + 0.7152 * (g) + 0.0722 * (b))) @@ -44,9 +60,14 @@ typedef struct mii_color_t { * You migth have to tweak this for performance reasons. At least on nVidia * cards, GL_BGRA is faster than GL_RGBA. */ -#define HI_RGB(r,g,b) { \ - .rgb = (0xff000000 | ((b) << 16) | ((g) << 8) | (r)), \ - .l = HI_LUMA(r,g,b) \ +#define HI_RGB(_r,_g,_b) (0xff000000 | ((_b) << 16) | ((_g) << 8) | (_r)) +#define HI_C_RGB(_r,_g,_b) (mii_color_t) \ + (0xff000000 | ((_b) << 16) | ((_g) << 8) | (_r)) + +#define HI_GET_RGB(_rgb, _r, _g, _b) { \ + (_r) = (_rgb) & 0xff; \ + (_g) = ((_rgb) >> 8) & 0xff; \ + (_b) = ((_rgb) >> 16) & 0xff; \ } /* this 'dims' the colors for every second line of pixels @@ -54,94 +75,131 @@ typedef struct mii_color_t { */ #define C_SCANLINE_MASK 0xffc0c0c0 -typedef struct mii_video_clut_t { - mii_color_t lores[2][16]; // lores (main, and aux page) - mii_color_t dhires[16]; - mii_color_t hires[10]; - mii_color_t text[2]; // text - mii_color_t mono[2]; // DHRES mono mode -} mii_video_clut_t; - -/* These are the 'official' RGB colors for apple II, - * Well not really, it is just ONE interpreation of many, we could possibly - * make some sort of color lookup table to allow switching them on the fly? - */ -#define C_BLACK HI_RGB(0x00, 0x00, 0x00) -#define C_PURPLE HI_RGB(0xff, 0x44, 0xfd) -#define C_GREEN HI_RGB(0x14, 0xf5, 0x3c) -#define C_BLUE HI_RGB(0x14, 0xcf, 0xfd) -#define C_ORANGE HI_RGB(0xff, 0x6a, 0x3c) -#define C_WHITE HI_RGB(0xff, 0xff, 0xff) -#define C_MAGENTA HI_RGB(0xe3, 0x1e, 0x60) -#define C_DARKBLUE HI_RGB(0x60, 0x4e, 0xbd) -#define C_DARKGREEN HI_RGB(0x00, 0xa3, 0x60) -#define C_GRAY1 HI_RGB(0x9c, 0x9c, 0x9c) -#define C_GRAY2 HI_RGB(0x9c, 0x9c, 0x9c) -#define C_LIGHTBLUE HI_RGB(0xd0, 0xc3, 0xff) -#define C_BROWN HI_RGB(0x60, 0x72, 0x03) -#define C_PINK HI_RGB(0xff, 0xa0, 0xd0) -#define C_YELLOW HI_RGB(0xd0, 0xdd, 0x8d) -#define C_AQUA HI_RGB(0x72, 0xff, 0xd0) - +// these are more or less arbitrary orders really enum mii_video_color_mode_e { CI_BLACK = 0, CI_PURPLE, CI_GREEN, CI_BLUE, CI_ORANGE, CI_WHITE, CI_MAGENTA, CI_DARKBLUE,CI_DARKGREEN,CI_GRAY1,CI_GRAY2,CI_LIGHTBLUE, CI_BROWN,CI_PINK,CI_YELLOW,CI_AQUA, }; +typedef struct mii_palette_t { + const char * name; + uint32_t mono_color; + mii_color_t color[16]; +} mii_palette_t; -static const mii_color_t base_color[16] = { - [CI_BLACK] = C_BLACK, - [CI_PURPLE] = C_PURPLE, - [CI_GREEN] = C_GREEN, - [CI_BLUE] = C_BLUE, - [CI_ORANGE] = C_ORANGE, - [CI_WHITE] = C_WHITE, - [CI_MAGENTA] = C_MAGENTA, - [CI_DARKBLUE] = C_DARKBLUE, - [CI_DARKGREEN] = C_DARKGREEN, - [CI_GRAY1] = C_GRAY1, - [CI_GRAY2] = C_GRAY2, - [CI_LIGHTBLUE] = C_LIGHTBLUE, - [CI_BROWN] = C_BROWN, - [CI_PINK] = C_PINK, - [CI_YELLOW] = C_YELLOW, - [CI_AQUA] = C_AQUA, +static const mii_palette_t palettes[] = { + [0] = { + .name = "Color NTSC", + .color = { + [CI_BLACK] = HI_C_RGB(0x00,0x00,0x00), + [CI_PURPLE] = HI_C_RGB(0xff,0x44,0xfd), + [CI_GREEN] = HI_C_RGB(0x14,0xf5,0x3c), + [CI_BLUE] = HI_C_RGB(0x14,0xcf,0xfd), + [CI_ORANGE] = HI_C_RGB(0xff,0x6a,0x3c), + [CI_WHITE] = HI_C_RGB(0xff,0xff,0xff), + [CI_MAGENTA] = HI_C_RGB(0xe3,0x1e,0x60), + [CI_DARKBLUE] = HI_C_RGB(0x60,0x4e,0xbd), + [CI_DARKGREEN] = HI_C_RGB(0x00,0xa3,0x60), + [CI_GRAY1] = HI_C_RGB(0x9c,0x9c,0x9c), + [CI_GRAY2] = HI_C_RGB(0x9c,0x9c,0x9c), + [CI_LIGHTBLUE] = HI_C_RGB(0xd0,0xc3,0xff), + [CI_BROWN] = HI_C_RGB(0x60,0x72,0x03), + [CI_PINK] = HI_C_RGB(0xff,0xa0,0xd0), + [CI_YELLOW] = HI_C_RGB(0xd0,0xdd,0x8d), + [CI_AQUA] = HI_C_RGB(0x72,0xff,0xd0), + }, + }, + [1] = { + .name = "NTSC 2", + .color = { + [CI_BLACK] = HI_C_RGB(0x00,0x00,0x00), + [CI_MAGENTA] = HI_C_RGB(0x9F,0x1B,0x48), + [CI_DARKBLUE] = HI_C_RGB(0x48,0x32,0xEB), + [CI_PURPLE] = HI_C_RGB(0xD6,0x43,0xFF), + [CI_DARKGREEN] = HI_C_RGB(0x19,0x75,0x44), + [CI_GRAY1] = HI_C_RGB(0x81,0x81,0x81), + [CI_BLUE] = HI_C_RGB(0x36,0x92,0xFF), + [CI_LIGHTBLUE] = HI_C_RGB(0xB8,0x9E,0xFF), + [CI_BROWN] = HI_C_RGB(0x49,0x65,0x00), + [CI_ORANGE] = HI_C_RGB(0xD8,0x73,0x00), + [CI_GRAY2] = HI_C_RGB(0x81,0x81,0x81), + [CI_PINK] = HI_C_RGB(0xFB,0x8F,0xBC), + [CI_GREEN] = HI_C_RGB(0x3C,0xCC,0x00), + [CI_YELLOW] = HI_C_RGB(0xBC,0xD6,0x00), + [CI_AQUA] = HI_C_RGB(0x6C,0xE6,0xB8), + [CI_WHITE] = HI_C_RGB(0xF1,0xF1,0xF1), + }, + }, + [2] = { + .name = "Color Mega2", + .color = { + [CI_BLACK ] = HI_C_RGB(0x00,0x00,0x00), + [CI_MAGENTA ] = HI_C_RGB(0xDB,0x1F,0x42), + [CI_DARKBLUE] = HI_C_RGB(0x0C,0x11,0xA4), + [CI_PURPLE ] = HI_C_RGB(0xDC,0x43,0xE1), + [CI_DARKGREEN]= HI_C_RGB(0x1C,0x82,0x31), + [CI_GRAY1 ] = HI_C_RGB(0x63,0x63,0x63), + [CI_BLUE ] = HI_C_RGB(0x39,0x3D,0xFF), + [CI_LIGHTBLUE]= HI_C_RGB(0x7A,0xB3,0xFF), + [CI_BROWN ] = HI_C_RGB(0x91,0x64,0x00), + [CI_ORANGE ] = HI_C_RGB(0xFA,0x77,0x00), + [CI_GRAY2 ] = HI_C_RGB(0xB3,0xB3,0xB3), + [CI_PINK ] = HI_C_RGB(0xFB,0xA5,0x93), + [CI_GREEN ] = HI_C_RGB(0x40,0xDE,0x00), + [CI_YELLOW ] = HI_C_RGB(0xFE,0xFE,0x00), + [CI_AQUA ] = HI_C_RGB(0x67,0xFC,0xA3), + [CI_WHITE ] = HI_C_RGB(0xFF,0xFF,0xFF), + }, + }, + [3] = { + .name = "Green", + .mono_color = HI_C_RGB(0x14, 0xf5, 0x3c) + }, + [4] = { + .name = "Amber", + .mono_color = HI_C_RGB(0xfd, 0xcf, 0x14), + }, +}; + +/* + * All video mode colors. Note that this is not REALLY a color palette in this + * state, instead, it is a color index in the palette that has been chosen by + * the user... The set_video_mode function will synthetize the actual colors, + * as well as the 'dim' variant use for artifacts. + */ +static const mii_video_clut_t mii_base_clut = { + .lores = {{ + [0x0] = CI_BLACK, [0x1] = CI_MAGENTA, [0x2] = CI_DARKBLUE,[0x3] = CI_PURPLE, + [0x4] = CI_DARKGREEN,[0x5] = CI_GRAY1, [0x6] = CI_BLUE, [0x7] = CI_LIGHTBLUE, + [0x8] = CI_BROWN, [0x9] = CI_ORANGE, [0xa] = CI_GRAY2, [0xb] = CI_PINK, + [0xc] = CI_GREEN, [0xd] = CI_YELLOW, [0xe] = CI_AQUA, [0xf] = CI_WHITE, + },{ + [0x0] = CI_BLACK, [0x1] = CI_DARKBLUE,[0x2] = CI_DARKGREEN,[0x3] = CI_BLUE, + [0x4] = CI_BROWN, [0x5] = CI_GRAY2, [0x6] = CI_GREEN, [0x7] = CI_AQUA, + [0x8] = CI_MAGENTA, [0x9] = CI_PURPLE, [0xa] = CI_GRAY1, [0xb] = CI_LIGHTBLUE, + [0xc] = CI_ORANGE, [0xd] = CI_PINK, [0xe] = CI_YELLOW, [0xf] = CI_WHITE, + } }, + .dhires = { + [0x0] = CI_BLACK, [0x1] = CI_MAGENTA, [0x2] = CI_BROWN, [0x3] = CI_ORANGE, + [0x4] = CI_DARKGREEN,[0x5] = CI_GRAY1, [0x6] = CI_GREEN, [0x7] = CI_YELLOW, + [0x8] = CI_DARKBLUE,[0x9] = CI_PURPLE, [0xa] = CI_GRAY2, [0xb] = CI_PINK, + [0xc] = CI_BLUE, [0xd] = CI_LIGHTBLUE,[0xe] = CI_AQUA, [0xf] = CI_WHITE, + }, + .hires = { + CI_BLACK, CI_PURPLE, CI_GREEN, CI_GREEN, CI_PURPLE, + CI_BLUE, CI_ORANGE, CI_ORANGE, CI_BLUE, CI_WHITE, + }, +#if 0 + .hires2 = { + CI_BLACK, CI_GREEN, CI_PURPLE, CI_WHITE, + CI_BLACK, CI_ORANGE, CI_BLUE, CI_WHITE, + }, +#endif + .mono = { CI_BLACK, CI_WHITE }, }; -// this is not an official color, just 'my' interpretation of an amber screen -#define C_AMBER HI_RGB(0xfd, 0xcf, 0x14) // amber - -static const mii_color_t lores_colors[2][16] = { { -[0x0] = C_BLACK, [0x1] = C_MAGENTA, [0x2] = C_DARKBLUE, [0x3] = C_PURPLE, -[0x4] = C_DARKGREEN,[0x5] = C_GRAY1, [0x6] = C_BLUE, [0x7] = C_LIGHTBLUE, -[0x8] = C_BROWN, [0x9] = C_ORANGE, [0xa] = C_GRAY2, [0xb] = C_PINK, -[0xc] = C_GREEN, [0xd] = C_YELLOW, [0xe] = C_AQUA, [0xf] = C_WHITE, -},{ -[0x0] = C_BLACK, [0x1] = C_DARKBLUE, [0x2] = C_DARKGREEN,[0x3] = C_BLUE, -[0x4] = C_BROWN, [0x5] = C_GRAY2, [0x6] = C_GREEN, [0x7] = C_AQUA, -[0x8] = C_MAGENTA, [0x9] = C_PURPLE, [0xa] = C_GRAY1, [0xb] = C_LIGHTBLUE, -[0xc] = C_ORANGE, [0xd] = C_PINK, [0xe] = C_YELLOW, [0xf] = C_WHITE, -} }; -static const mii_color_t dhires_colors[16] = { -[0x0] = C_BLACK, [0x1] = C_MAGENTA, [0x2] = C_BROWN, [0x3] = C_ORANGE, -[0x4] = C_DARKGREEN,[0x5] = C_GRAY1, [0x6] = C_GREEN, [0x7] = C_YELLOW, -[0x8] = C_DARKBLUE, [0x9] = C_PURPLE, [0xa] = C_GRAY2, [0xb] = C_PINK, -[0xc] = C_BLUE, [0xd] = C_LIGHTBLUE,[0xe] = C_AQUA, [0xf] = C_WHITE, -}; -static const mii_color_t hires_colors[10] = { - C_BLACK, C_PURPLE, C_GREEN, C_GREEN, C_PURPLE, - C_BLUE, C_ORANGE, C_ORANGE, C_BLUE, C_WHITE, -}; -static const mii_color_t mono[3][2] = { - { C_BLACK, C_WHITE }, - { C_BLACK, C_GREEN }, - { C_BLACK, C_AMBER }, -}; - - -// TODO redo the hires decoder by reversing bits line by line... // Used for DHRES decoding static inline uint8_t reverse4(uint8_t b) { b = (b & 0b0001) << 3 | (b & 0b0010) << 1 | @@ -163,26 +221,115 @@ _mii_line_to_video_addr( return addr; } -#define MII_VIDEO_BANK MII_BANK_AUX_BASE + +static inline int +_mii_addr_to_line_text_lores( + uint16_t a) // ZERO based, not 0x400 based +{ + int hole = (a & 0x7f) > 0x77; + if (hole) + return -1; + int group = ((a >> 7) & 0x7); + int gline = (a & 0x7f) / 40; + int line = (group + (gline * 8)) * 8; + return line; +} +/* + * check if addr is in the current text page, including page2 switch -- + * this also works for lowres (and mixed mode) + */ +static void +_mii_line_check_text_lores( + struct mii_video_t *video, + uint32_t sw, + uint16_t addr) +{ + bool store80 = SWW_GETSTATE(sw, SW80STORE); + bool page2 = store80 ? 0 : SWW_GETSTATE(sw, SWPAGE2); + uint16_t a = 0x400 + (0x400 * page2); + + // if addr is in the text/lores page, convert the addr into a line number + // and mark that line as dirty. In this particular, case, we need to mark + // 7 video lines as dirty obviously + if (addr >= a && addr < a + 0x400) { + a = addr - a; + int line = _mii_addr_to_line_text_lores(a); + if (line < 0) + return; + for (int i = line; i < line + 8; i++) { + video->lines_dirty[i / 64] |= 1ULL << (i & 63); + } + } +} + +/* + * check if addr is in the current graphic page, including page2 switch + * We don't have to care about dhires etc, as either bank would be same addresses + * + * This means in the unlikely case where code writes to the aux memory at the + * same address as the main memory for that graphic mode, we will dirty lines + * that don't need to be dirty, but it is a small price to pay for this + * unusual case. Also, this would just have a slight impact on performance anyway. + * + * Also handle mixed mode, when mixed is on, check the bottom lines of text + * for any changes + */ +static void +_mii_line_check_hires_dires( + struct mii_video_t *video, + uint32_t sw, + uint16_t addr) +{ + bool store80 = SWW_GETSTATE(sw, SW80STORE); + bool page2 = store80 ? 0 : SWW_GETSTATE(sw, SWPAGE2); + bool mixed = SWW_GETSTATE(sw, SWMIXED); + uint16_t a = (0x2000 + (0x2000 * page2)); + + if (addr >= a && addr < a + 0x2000) { + a = addr - a; + int hole = (a & 0x78) == 0x78;// (a & 0x7f) > 0x77; + if (hole) + return; + int g = ((a >> 7) & 0x7); + int g2 = (a >> 10) & 0x7; + int gline = (a & 0x7f) / 40; + int line = (gline * 64) + (g * 8) + g2; + + if (!mixed || line < MII_VIDEO_MIXED_LINE) + video->lines_dirty[line / 64] |= 1ULL << (line & 63); + } + if (mixed) { + a = 0x400 + (0x400 * page2); + if (addr >= a && addr < a + 0x400) { + a = addr - a; + int line = _mii_addr_to_line_text_lores(a); + if (line < MII_VIDEO_MIXED_LINE) + return; + for (int i = line; i < line + 8; i++) { + video->lines_dirty[i / 64] |= 1ULL << (i & 63); + } + } + } +} static void _mii_line_render_dhires_mono( - mii_t *mii, - uint8_t mode, - bool page2 ) + mii_t *mii) { mii_bank_t * main = &mii->bank[MII_BANK_MAIN]; mii_bank_t * aux = &mii->bank[MII_VIDEO_BANK]; - + bool page2 = SW_GETSTATE(mii, SW80STORE) ? 0 : SW_GETSTATE(mii, SWPAGE2); +// uint8_t mode = mii->video.color_mode; uint16_t a = (0x2000 + (0x2000 * page2)); + mii->video.base_addr = a; a = _mii_line_to_video_addr(a, mii->video.line); + mii->video.line_addr = a; uint32_t * screen = mii->video.pixels + (mii->video.line * MII_VRAM_WIDTH * 2); - uint32_t * l2 = screen + MII_VRAM_WIDTH; const uint32_t clut[2] = { - mono[mode][0].rgb, - mono[mode][1].rgb }; + mii->video.clut.mono[0], + mii->video.clut.mono[1] }; for (int x = 0; x < 40; x++) { uint32_t ext = (mii_bank_peek(aux, a + x) & 0x7f) | ((mii_bank_peek(main, a + x) & 0x7f) << 7); @@ -190,12 +337,11 @@ _mii_line_render_dhires_mono( uint8_t pixel = (ext >> bi) & 1; uint32_t col = clut[pixel]; *screen++ = col; - *l2++ = col & C_SCANLINE_MASK; } } } -/* get exactly 4 bits from position bit from the buffer */ +/* get exactly 1 bits from position bit from the buffer */ static inline uint8_t _mii_get_1bits( uint8_t * buffer, @@ -210,18 +356,18 @@ _mii_get_1bits( static void _mii_line_render_dhires_color( - mii_t *mii, - uint8_t mode, - bool page2 ) + mii_t *mii) { mii_bank_t * main = &mii->bank[MII_BANK_MAIN]; mii_bank_t * aux = &mii->bank[MII_VIDEO_BANK]; + bool page2 = SW_GETSTATE(mii, SW80STORE) ? 0 : SW_GETSTATE(mii, SWPAGE2); uint16_t a = (0x2000 + (0x2000 * page2)); + mii->video.base_addr = a; a = _mii_line_to_video_addr(a, mii->video.line); + mii->video.line_addr = a; uint32_t * screen = mii->video.pixels + (mii->video.line * MII_VRAM_WIDTH * 2); - uint32_t * l2 = screen + MII_VRAM_WIDTH; uint8_t bits[71] = { 0 }; @@ -236,43 +382,101 @@ _mii_line_render_dhires_color( bits[out_byte] |= bit << out_bit; } } + // destination pixels are offset by 2 pixels, so the image is centered + // with an 'artifact' on the left and right side, seems to match pictures I've + // seen on TFT screens. for (int i = 0, d = 2; i < 560; i++, d++) { const uint8_t pixel = (_mii_get_1bits(bits, i + 3) << (3 - ((d + 3) % 4))) + (_mii_get_1bits(bits, i + 2) << (3 - ((d + 2) % 4))) + (_mii_get_1bits(bits, i + 1) << (3 - ((d + 1) % 4))) + (_mii_get_1bits(bits, i) << (3 - (d % 4))); - uint32_t col = dhires_colors[pixel].rgb; + uint32_t col = mii->video.clut.dhires[pixel]; *screen++ = col; - *l2++ = col & C_SCANLINE_MASK; } } +#if 0 +static int _trace = 0; +#define TRACE +#ifdef TRACE +#define T(_w) if (_trace) { _w; } +#else +#define T(_w) +#endif static void _mii_line_render_hires( - mii_t *mii, - uint8_t mode, - bool page2 ) + mii_t *mii) { mii_bank_t * main = &mii->bank[MII_BANK_MAIN]; + bool page2 = SW_GETSTATE(mii, SW80STORE) ? 0 : SW_GETSTATE(mii, SWPAGE2); + uint8_t mode = mii->video.color_mode; uint16_t a = (0x2000 + (0x2000 * page2)); + mii->video.base_addr = a; a = _mii_line_to_video_addr(a, mii->video.line); + mii->video.line_addr = a; uint32_t * screen = mii->video.pixels + (mii->video.line * MII_VRAM_WIDTH * 2); - uint32_t * l2 = screen + MII_VRAM_WIDTH; + uint8_t bits[280] = { 0 }; + uint8_t *src = main->mem + a; + uint bits_dx = 0; + uint8_t last_run = 0; + for (int x = 0; x < 40; x += 2) { + /* prepare fourteen pixels */ + uint8_t b0 = src[x]; + uint8_t b1 = src[x + 1]; + uint8_t t[2] = { (b0 >> 7) << 2, (b1 >> 7) << 2 }; // prepare high bits + // just want the pixels as a nice clean 14 bits bitfield here + uint16_t run = ((reverse8(b0) >> 1) << 7) | (reverse8(b1) >> 1); +// uint16_t run = ((b1 & 0x7f) << 9) | ((b0 & 0x7f) << 2) | last_run; + uint8_t px; + for (int dx = 0 ; dx < 14; dx++) { + // take 2 bits, add the corresponding 'high bit' to it + px = run & 3; + px |= t[dx > 7]; + // now we have 2 pixels, we can set them in the bit buffer + bits[bits_dx++] = px; + } + last_run = run >> 14; + } + // now we have a 'nice' table of actual colors, without artifacts in bits + // we can plot this + for (int i = 0; i < 280; i++) { + uint8_t pixel = bits[i]; + uint32_t col = mii->video.clut.hires2[pixel]; + *screen++ = col; + *screen++ = col; + } +} +#else +static void +_mii_line_render_hires( + mii_t *mii) +{ + mii_bank_t * main = &mii->bank[MII_BANK_MAIN]; + bool page2 = SW_GETSTATE(mii, SW80STORE) ? 0 : SW_GETSTATE(mii, SWPAGE2); +// uint8_t mode = mii->video.color_mode; + uint16_t a = (0x2000 + (0x2000 * page2)); + mii->video.base_addr = a; + a = _mii_line_to_video_addr(a, mii->video.line); + mii->video.line_addr = a; + uint32_t * screen = mii->video.pixels + + (mii->video.line * MII_VRAM_WIDTH * 2); + uint8_t *src = main->mem; uint8_t b0 = 0; - uint8_t b1 = mii_bank_peek(main, a + 0); + uint8_t b1 = src[a + 0]; + uint32_t lastcol = 0; for (int x = 0; x < 40; x++) { - uint8_t b2 = mii_bank_peek(main, a + x + 1); + uint8_t b2 = src[a + x + 1]; // last 2 pixels, current 7 pixels, next 2 pixels uint16_t run = ((b0 & 0x60) >> ( 5 )) | ((b1 & 0x7f) << ( 2 )) | ((b2 & 0x03) << ( 9 )); int odd = (x & 1) << 1; int offset = (b1 & 0x80) >> 5; - if (mode == MII_VIDEO_COLOR) { + if (!mii->video.monochrome) { for (int i = 0; i < 7; i++) { uint8_t left = (run >> (1 + i)) & 1; uint8_t pixel = (run >> (2 + i)) & 1; @@ -290,44 +494,56 @@ _mii_line_render_hires( idx = offset + odd + 1 - (i & 1) + 1; } } - uint32_t col = hires_colors[idx].rgb; - *screen++ = col; - *screen++ = col; - *l2++ = col & C_SCANLINE_MASK; - *l2++ = col & C_SCANLINE_MASK; + uint32_t col = mii->video.clut.hires[idx]; + if (col != lastcol) { + uint32_t nc = mii->video.clut_low.hires[idx]; + *screen++ = nc; //col & C_SCANLINE_MASK; + *screen++ = nc; //col & C_SCANLINE_MASK; + lastcol = col; + } else { + *screen++ = col; + *screen++ = col; + } } } else { for (int i = 0; i < 7; i++) { uint8_t pixel = (run >> (2 + i)) & 1; - uint32_t col = mono[mode][pixel].rgb; + uint32_t col = mii->video.clut.mono[pixel]; + if (col != lastcol) { + *screen++ = col & C_SCANLINE_MASK; + lastcol = col; + } else + *screen++ = col; *screen++ = col; - *screen++ = col; - *l2++ = col & C_SCANLINE_MASK; - *l2++ = col & C_SCANLINE_MASK; } } b0 = b1; b1 = b2; } } +#endif static void _mii_line_render_text( - mii_t *mii, - uint8_t mode, - bool page2 ) + mii_t *mii) { mii_bank_t * main = &mii->bank[MII_BANK_MAIN]; mii_bank_t * aux = &mii->bank[MII_VIDEO_BANK]; + bool page2 = SW_GETSTATE(mii, SW80STORE) ? 0 : SW_GETSTATE(mii, SWPAGE2); +// uint8_t mode = mii->video.color_mode; uint16_t a = (0x400 + (0x400 * page2)); + mii->video.base_addr = a; int i = mii->video.line >> 3; a += ((i & 0x07) << 7) | ((i >> 3) << 5) | ((i >> 3) << 3); + mii->video.line_addr = a; bool col80 = SW_GETSTATE(mii, SW80COL); + bool altset = SW_GETSTATE(mii, SWALTCHARSET); + int flash = mii->video.frame_count & MII_VIDEO_FLASH_FRAME_MASK ? + -0x40 : 0x40; uint32_t * screen = mii->video.pixels + (mii->video.line * MII_VRAM_WIDTH * 2); - uint32_t * l2 = screen + MII_VRAM_WIDTH; for (int x = 0; x < 40 + (40 * col80); x++) { uint8_t c = 0; @@ -335,117 +551,151 @@ _mii_line_render_text( c = mii_bank_peek(x & 1 ? main : aux, a + (x >> 1)); else c = mii_bank_peek(main, a + x); - - bool altset = SW_GETSTATE(mii, SWALTCHARSET); - int flash = mii->video.frame_count & 0x10; if (!altset) { - if (c >= 0x40 && c <= 0x7f) { - if (flash) - c -= 0x40; - else - c += 0x40; - } + if (c >= 0x40 && c <= 0x7f) + c = (int)c + flash; } const uint8_t * rom = iie_enhanced_video + (c << 3); uint8_t bits = rom[mii->video.line & 0x07]; for (int pi = 0; pi < 7; pi++) { uint8_t pixel = (bits >> pi) & 1; - uint32_t col = mono[mode][!pixel].rgb; + uint32_t col = mii->video.clut.mono[!pixel]; *screen++ = col; - *l2++ = col & C_SCANLINE_MASK; - if (!col80) { + if (!col80) *screen++ = col; - *l2++ = col & C_SCANLINE_MASK; - } } } } static void _mii_line_render_lores( - mii_t *mii, - uint8_t mode, - bool page2 ) + mii_t *mii ) { mii_bank_t * main = &mii->bank[MII_BANK_MAIN]; mii_bank_t * aux = &mii->bank[MII_VIDEO_BANK]; + bool page2 = SW_GETSTATE(mii, SW80STORE) ? 0 : SW_GETSTATE(mii, SWPAGE2); +// uint8_t mode = mii->video.color_mode; uint16_t a = (0x400 + (0x400 * page2)); + mii->video.base_addr = a; int i = mii->video.line >> 3; a += ((i & 0x07) << 7) | ((i >> 3) << 5) | ((i >> 3) << 3); + mii->video.line_addr = a; bool col80 = SW_GETSTATE(mii, SW80COL); uint32_t * screen = mii->video.pixels + (mii->video.line * MII_VRAM_WIDTH * 2); - uint32_t * l2 = screen + MII_VRAM_WIDTH; - + mii_video_clut_t * clut = &mii->video.clut; + mii_video_clut_t * clut_low = &mii->video.clut_low; + uint32_t lastcolor = 0; for (int x = 0; x < 40 + (40 * col80); x++) { - uint8_t c = 0; + uint16_t c = 0; if (col80) c = mii_bank_peek(x & 1 ? main : aux, a + (x >> 1)); else c = mii_bank_peek(main, a + x); int lo_line = mii->video.line / 4; - c = c >> ((lo_line & 1) * 4); - c |= (c << 4); - if (mode == MII_VIDEO_COLOR) { - uint32_t pixel = lores_colors[(x & col80) ^ col80][c & 0x0f].rgb; + c = (c >> ((lo_line & 1) * 4)) & 0xf; +// c |= (c << 4); + uint32_t color = clut->lores[(x & col80) ^ col80][c & 0x0f]; + uint32_t dim = clut_low->lores[(x & col80) ^ col80][c & 0x0f]; + if (!mii->video.monochrome) { for (int pi = 0; pi < 7; pi++) { - *screen++ = pixel; - *l2++ = pixel & C_SCANLINE_MASK; - if (!col80) { - *screen++ = pixel; - *l2++ = pixel & C_SCANLINE_MASK; + uint32_t pixel = color; + if (pixel != lastcolor) { + pixel = dim; + lastcolor = color; } + *screen++ = pixel; + if (!col80) + *screen++ = pixel; } } else { - /* Not sure at all this should be rendered like this, - * but I can't find a reference on how to render low - * res graphics in mono */ - for (int pi = 0; pi < 7; pi++) { - uint32_t pixel = mono[mode][c & 1].rgb; - c >>= 1; - *screen++ = pixel; - *l2++ = pixel & C_SCANLINE_MASK; - if (!col80) { + c = reverse4(c); + c |= c << 4; + c |= c << 8; + if (col80) { + for (int pi = 0; pi < 7; pi++) { + uint8_t b = (c >> pi) & 1; + uint32_t pixel = b ? color : dim; + *screen++ = pixel; + } + } else { + if (x & 1) c >>= 2; + for (int pi = 0; pi < 14; pi++) { + uint8_t b = (c >> pi) & 1; + uint32_t pixel = b ? color : dim; *screen++ = pixel; - *l2++ = pixel & C_SCANLINE_MASK; } } } } } +/* + * This is called when writes are made from outside the 6502 emulation, for + * example the DMA froms smartport. Otherwise you could BLOAD an image in video + * ram and there would be now way of knowing if the addresses *were* in the + * video ram. So this call is used by anything doing DMA (curretnly just smartport) + */ +void +mii_video_OOB_write_check( + mii_t *mii, + uint16_t addr, + uint16_t size) +{ + for (int i = 0; i < size; i += 40) + mii->video.line_cb.check(&mii->video, mii->sw_state, addr + i); +} + /* * This return the correct line drawing function callback for the mode * and softswitches */ -static mii_video_line_drawing_cb +static mii_video_cb_t _mii_video_get_line_render_cb( mii_t *mii, uint32_t sw_state) { + mii_video_cb_t res = { 0 }; + bool text = SWW_GETSTATE(sw_state, SWTEXT); bool col80 = SWW_GETSTATE(sw_state, SW80COL); bool hires = SWW_GETSTATE(sw_state, SWHIRES); bool dhires = SWW_GETSTATE(sw_state, SWDHIRES); - mii_video_line_drawing_cb res = _mii_line_render_lores; if (hires && !text && col80 && dhires) { mii_bank_t * sw = &mii->bank[MII_BANK_SW]; uint8_t reg = mii_bank_peek(sw, SWAN3_REGISTER); - if (reg != 0 && mii->video.color_mode == MII_VIDEO_COLOR) - res = _mii_line_render_dhires_color; + if (reg != 0 && !mii->video.monochrome) + res.render = _mii_line_render_dhires_color; else - res = _mii_line_render_dhires_mono; + res.render = _mii_line_render_dhires_mono; + res.check = _mii_line_check_hires_dires; } else if (hires && !text) { - res = _mii_line_render_hires; - } else if (text) - res = _mii_line_render_text; + res.render = _mii_line_render_hires; + res.check = _mii_line_check_hires_dires; + } else if (text) { + res.render = _mii_line_render_text; + res.check = _mii_line_check_text_lores; + } else { + res.render = _mii_line_render_lores; + res.check = _mii_line_check_text_lores; + } return res; } +static void +_mii_video_mark_dirty( + mii_video_t *video) +{ + video->frame_dirty = 1; + video->lines_dirty[0] = + video->lines_dirty[1] = + video->lines_dirty[2] = -1LL; +} + /* * This is called when the video mode changes, and we need to update the * line drawing callback @@ -456,7 +706,11 @@ _mii_video_mode_changed( { uint32_t sw_state = mii->sw_state; - mii->video.line_drawing = _mii_video_get_line_render_cb(mii, sw_state); + mii_video_cb_t res = _mii_video_get_line_render_cb(mii, sw_state); + if (res.render != mii->video.line_cb.render) { + mii->video.line_cb = res; + _mii_video_mark_dirty(&mii->video); + } } /* @@ -489,8 +743,6 @@ mii_video_timer_cb( uint64_t res = MII_VIDEO_H_CYCLES * mii->speed; mii_bank_t * sw = &mii->bank[MII_BANK_SW]; uint32_t sw_state = mii->sw_state; - bool store80 = SWW_GETSTATE(sw_state, SW80STORE); - bool page2 = store80 ? 0 : SWW_GETSTATE(sw_state, SWPAGE2); pt_start(mii->video.state); /* @@ -501,37 +753,98 @@ mii_video_timer_cb( // 'clear' VBL flag. Flag is 0 during retrace mii_bank_poke(sw, SWVBL, 0x80); - mii_video_line_drawing_cb line_drawing = mii->video.line_drawing; + mii_video_line_drawing_cb line_drawing = mii->video.line_cb.render; /* If we are in mixed mode past line 160, check if we need to * switch from the 'main mode' callback to the text callback */ - const int mixed_line = 192 - (4 * 8); - if (mii->video.line >= mixed_line) { + if (mii->video.line >= MII_VIDEO_MIXED_LINE) { bool mixed = SWW_GETSTATE(sw_state, SWMIXED); if (mixed) { uint32_t sw = sw_state; SWW_SETSTATE(sw, SWTEXT, 1); if (sw != sw_state) - line_drawing = _mii_video_get_line_render_cb(mii, sw); + line_drawing = _mii_video_get_line_render_cb(mii, sw).render; } } - const int mode = mii->video.color_mode; - line_drawing(mii, mode, page2); + if (mii->video.lines_dirty[mii->video.line / 64] & + (1ULL << (mii->video.line & 63))) { + line_drawing(mii); + uint32_t * screen = mii->video.pixels + + (mii->video.line * MII_VRAM_WIDTH * 2); + uint32_t * l2 = screen + MII_VRAM_WIDTH; + +#if defined(__AVX2__) + const __m256i mask = _mm256_set1_epi32(C_SCANLINE_MASK); + // Process scanline using AVX GCC intrinsic + for (int i = 0; i < MII_VIDEO_WIDTH; i += 8) { + __m256i src = _mm256_loadu_si256((__m256i *)(screen + i)); + __m256i result = _mm256_and_si256(src, mask); + _mm256_storeu_si256((__m256i *)(l2 + i), result); + } +#elif defined(__SSE2__) + const __m128i mask = _mm_set1_epi32(C_SCANLINE_MASK); + // Process scanline using SSE GCC intrinsic + for (int i = 0; i < MII_VIDEO_WIDTH; i += 4) { + __m128i src = _mm_loadu_si128((__m128i *)(screen + i)); + __m128i result = _mm_and_si128(src, mask); + _mm_storeu_si128((__m128i *)(l2 + i), result); + } +#else +#if 1 // generic vector code -- NEON and wasm? + const u32_v mask = C_SCANLINE_MASK - (u32_v){}; // broadcast + for (int i = 0; i < MII_VIDEO_WIDTH; i += VEC_ECOUNT, + screen += VEC_ECOUNT, l2 += VEC_ECOUNT) { + u32_v s = *(u32_v *)screen; + s &= mask; + *(u32_v *)l2 = s; + } +#else + for (int i = 0; i < MII_VIDEO_WIDTH; i++) + *l2++ = *screen++ & C_SCANLINE_MASK; +#endif +#endif + + mii->video.lines_dirty[mii->video.line / 64] &= + ~(1ULL << (mii->video.line & 63)); + mii->video.frame_dirty = 1; +#if MII_VIDEO_DEBUG_HEAPMAP + mii->video.video_hmap[mii->video.line] = 0xff; +#endif + } mii->video.line++; if (mii->video.line == 192) { mii->video.line = 0; - res = MII_VIDEO_H_CYCLES * mii->speed; + mii->video.line_addr = mii->video.base_addr; + mii->video.timer_max = MII_VIDEO_H_CYCLES; + res = mii->video.timer_max * mii->speed; pt_yield(mii->video.state); mii_bank_poke(sw, SWVBL, 0x00); - res = MII_VBL_UP_CYCLES * mii->speed; - mii->video.frame_count++; + mii->video.timer_max = MII_VBL_UP_CYCLES; + res = mii->video.timer_max * mii->speed; + /* + * This is to handle the corner case where text has some blinking + * text, and we need to redraw the screen. + * We only check every 16 frames, so we don't waste time + * redrawing the screen every frame. Also, the alt char set needs + * to be off, as the blinking text is only in the main charset. + */ + uint32_t new_frame = mii->video.frame_count + 1; + if ((new_frame & MII_VIDEO_FLASH_FRAME_MASK) != + (mii->video.frame_count & MII_VIDEO_FLASH_FRAME_MASK)) { + if (!SW_GETSTATE(mii, SWALTCHARSET)) + _mii_video_mark_dirty(&mii->video); + } + mii->video.frame_count = new_frame; pt_yield(mii->video.state); // check if we need to switch the video mode, in case the UI switches // Color/mono palette etc - _mii_video_mode_changed(mii); + mii->cpu.instruction_run = 0; // stop current instruction run! + if (mii->video.frame_dirty) + mii->video.frame_seed++; + mii->video.frame_dirty = 0; } else { - res = (MII_VIDEO_H_CYCLES + MII_VIDEO_HB_CYCLES) * - mii->speed; + mii->video.timer_max = MII_VIDEO_H_CYCLES + MII_VIDEO_HB_CYCLES; + res = mii->video.timer_max * mii->speed; pt_yield(mii->video.state); } } while (1); @@ -539,6 +852,26 @@ mii_video_timer_cb( return res; } +/* + * TODO: this doesn't work yet. Don't get overexcited about this. + * Or, get overexcited about this and fix it! :-) + */ +uint8_t +mii_video_get_vapor( + mii_t *mii) +{ + uint8_t res = 0; + int64_t timer = mii_timer_get(mii, mii->video.timer_id); + timer = timer / mii->speed; + uint16_t addr = mii->video.line_addr; + int64_t current = mii->video.timer_max - timer; + addr += current - 25; + res = mii_bank_peek(&mii->bank[MII_BANK_MAIN], addr); +// printf("VAPOR %5ld/%5ld %04x->%04x %02x\n", +// current, mii->video.timer_max, mii->video.line_addr, addr, res); + return res; +} + bool mii_access_video( mii_t *mii, @@ -547,6 +880,8 @@ mii_access_video( bool write) { bool res = false; + if (write) + mii->video.line_cb.check(&mii->video, mii->sw_state, addr); mii_bank_t * sw = &mii->bank[MII_BANK_SW]; switch (addr) { case SWALTCHARSETOFF: @@ -555,6 +890,8 @@ mii_access_video( res = true; SW_SETSTATE(mii, SWALTCHARSET, addr & 1); mii_bank_poke(sw, SWALTCHARSET, (addr & 1) << 7); + // in case there is some blinking text, we need to redraw + _mii_video_mark_dirty(&mii->video); break; case SWVBL: case SW80COL: @@ -568,6 +905,26 @@ mii_access_video( if (!write) *byte = mii_bank_peek(sw, addr); break; + case SWHIRESOFF: + case SWHIRESON: + // res = true; // we return false here, so generic SW code is called + SW_SETSTATE(mii, SWHIRES, addr & 1); + mii_bank_poke(sw, SWHIRES, (addr & 1) << 7); + _mii_video_mode_changed(mii); + break; + case SWPAGE2OFF: + case SWPAGE2ON: + // res = true; // we return false here, so generic SW code is called + SW_SETSTATE(mii, SWPAGE2, addr & 1); + mii_bank_poke(sw, SWPAGE2, (addr & 1) << 7); + if (!write) + *byte = mii_bank_peek(sw, SWPAGE2); + // 80STORE completely changes the meaning of PAGE2 + if (!SW_GETSTATE(mii, SW80STORE)) { + _mii_video_mode_changed(mii); + _mii_video_mark_dirty(&mii->video); + } + break; case SW80COLOFF: case SW80COLON: if (!write) break; @@ -576,25 +933,23 @@ mii_access_video( mii_bank_poke(sw, SW80COL, (addr & 1) << 7); _mii_video_mode_changed(mii); break; - case SWDHIRESOFF: // 0xc05f, - case SWDHIRESON: { // = 0xc05e, + case SWDHIRESOFF: // 0xc05f, + case SWDHIRESON: { // = 0xc05e, res = true; uint8_t an3 = !!mii_bank_peek(sw, SWAN3); bool an3_on = !!(addr & 1); // 5f is ON, 5e is OFF uint8_t reg = mii_bank_peek(sw, SWAN3_REGISTER); if (an3_on && !an3) { - uint8_t bit = !!mii_bank_peek(sw, SW80COL); + uint8_t bit = SW_GETSTATE(mii, SW80COL); reg = ((reg << 1) | bit) & 3; - printf("VIDEO 80:%d REG now %x\n", bit, reg); + // printf("VIDEO 80:%d REG now %x\n", bit, reg); mii_bank_poke(sw, SWAN3_REGISTER, reg); } - mii_bank_poke(sw, SWAN3, an3_on); - printf("DHRES IS %s mode:%d\n", - (addr & 1) ? "OFF" : "ON", reg); - mii->sw_state = (mii->sw_state & ~M_SWDHIRES) | - (!(addr & 1) << B_SWDHIRES); + mii_bank_poke(sw, SWAN3, an3_on ? 0x80 : 0); + // printf("DHRES IS %s mode:%d\n", (addr & 1) ? "OFF" : "ON ", reg); SW_SETSTATE(mii, SWDHIRES, !(addr & 1)); mii_bank_poke(sw, SWRDDHIRES, (!(addr & 1)) << 7); + _mii_video_mark_dirty(&mii->video); _mii_video_mode_changed(mii); } break; case SWTEXTOFF: @@ -603,6 +958,8 @@ mii_access_video( SW_SETSTATE(mii, SWTEXT, addr & 1); mii_bank_poke(sw, SWTEXT, (addr & 1) << 7); _mii_video_mode_changed(mii); + if (!write) + *byte = mii_video_get_vapor(mii); break; case SWMIXEDOFF: case SWMIXEDON: @@ -615,6 +972,25 @@ mii_access_video( return res; } +void +mii_video_full_refresh( + mii_t *mii) +{ + _mii_video_mark_dirty(&mii->video); + + if (mii->state == MII_RUNNING) + return; + + mii_bank_t * sw = &mii->bank[MII_BANK_SW]; + _mii_video_mark_dirty(&mii->video); + do { + mii_video_timer_cb(mii, NULL); + } while (mii_bank_peek(sw, SWVBL)); + do { + mii_video_timer_cb(mii, NULL); + } while (!mii_bank_peek(sw, SWVBL)); +} + void mii_video_init( mii_t *mii) @@ -622,31 +998,205 @@ mii_video_init( mii->video.timer_id = mii_timer_register(mii, mii_video_timer_cb, NULL, MII_VIDEO_H_CYCLES, __func__); // start the DHRES in color -// mii_bank_t * main = &mii->bank[MII_BANK_MAIN]; mii_bank_t * sw = &mii->bank[MII_BANK_SW]; mii_bank_poke(sw, SWAN3_REGISTER, 1); _mii_video_mode_changed(mii); + mii_video_set_mode(mii, 0); } -/* given a RGB color r,g,b, print a table of 16 RGB colors that are graded - from luminance 0 to 1 in that particular shade of color. -*/ -void -mii_video_print_color_table( - uint32_t rgb) +typedef struct { + double r,g,b; // a fraction between 0 and 1 +} frgb_t; + +typedef struct { + double h; // angle in degrees + double s,v; // a fraction between 0 and 1 +} fhsv_t; + +static fhsv_t +rgb2hsv(frgb_t in) { - uint8_t b = (rgb >> 16) & 0xff; - uint8_t g = (rgb >> 8) & 0xff; - uint8_t r = (rgb >> 0) & 0xff; - uint8_t l = HI_LUMA(r, g, b); - printf("// LUMA %d start color %02x %02x %02x\n{ ", l, r, g, b); - for (int i = 0; i < 16; i++) { - uint8_t ll = (l * i) / 15; - uint8_t rr = (r * ll) / l; - uint8_t gg = (g * ll) / l; - uint8_t bb = (b * ll) / l; - printf("%01x: %02x %02x %02x\n", i, rr, gg, bb); + fhsv_t out; + double min, max, delta; + + min = in.r < in.g ? in.r : in.g; + min = min < in.b ? min : in.b; + max = in.r > in.g ? in.r : in.g; + max = max > in.b ? max : in.b; + + out.v = max; // v + delta = max - min; + if (delta < 0.00001) { + out.s = 0; + out.h = 0; // undefined, maybe nan? + return out; } + if (max > 0.0) { // NOTE: if Max is == 0, this divide would cause a crash + out.s = (delta / max); // s + } else { + // if max is 0, then r = g = b = 0 + // s = 0, h is undefined + out.s = 0.0; + out.h = NAN; // its now undefined + return out; + } + if (in.r >= max) // > is bogus, just keeps compilor happy + out.h = (in.g - in.b) / delta; // between yellow & magenta + else if (in.g >= max) + out.h = 2.0 + (in.b - in.r) / delta; // between cyan & yellow + else + out.h = 4.0 + (in.r - in.g) / delta; // between magenta & cyan + out.h *= 60.0; // degrees + if (out.h < 0.0) + out.h += 360.0; + return out; +} + +static frgb_t +hsv2rgb(fhsv_t in) +{ + double hh, p, q, t, ff; + long i; + frgb_t out; + + if (in.s <= 0.0) { + out.r = out.g = out.b = in.v; + return out; + } + hh = in.h; + if (hh >= 360.0) { + hh = 0.0; + } + hh /= 60.0; + i = (long)hh; + ff = hh - i; + p = in.v * (1.0 - in.s); + q = in.v * (1.0 - (in.s * ff)); + t = in.v * (1.0 - (in.s * (1.0 - ff))); + + switch (i) { + case 0: out.r = in.v; out.g = t; out.b = p; break; + case 1: out.r = q; out.g = in.v; out.b = p; break; + case 2: out.r = p; out.g = in.v; out.b = t; break; + case 3: out.r = p; out.g = q; out.b = in.v; break; + case 4: out.r = t; out.g = p; out.b = in.v; break; + case 5: + default: out.r = in.v; out.g = p; out.b = q; break; + } + return out; +} + +/* + * Takes a RGB color, and a base color, and returns a color that is + * the same luminance as the RGB color, but with the hue of the base color + * This is not an exact formula, and there are some chroma drifts, but it + * will do for now. + */ +static inline uint32_t +_mii_rgb_to_lumed_color( + uint32_t rgb, + uint32_t base) +{ +#if 0 + uint8_t r, g, b; + HI_GET_RGB(rgb, r, g, b); + uint8_t br, bg, bb; + HI_GET_RGB(base, br, bg, bb); + frgb_t in = { r / 255.0, g / 255.0, b / 255.0 }; + frgb_t base_in = { br / 255.0, bg / 255.0, bb / 255.0 }; + fhsv_t hsv = rgb2hsv(in); + fhsv_t base_hsv = rgb2hsv(base_in); + fhsv_t n = base_hsv; + n.v *= hsv.v; + frgb_t out = hsv2rgb(n); + r = out.r * 255; + g = out.g * 255; + b = out.b * 255; + return HI_RGB(r, g, b); +#else + uint8_t r, g, b; + HI_GET_RGB(rgb, r, g, b); + uint8_t l = HI_LUMA(r, g, b); + if (l == 0) + return HI_RGB(0,0,0); + uint8_t br, bg, bb; + HI_GET_RGB(base, br, bg, bb); +// uint8_t bl = HI_LUMA(br, bg, bb); + r = (br * l) / 255; + g = (bg * l) / 255; + b = (bb * l) / 255; + rgb = HI_RGB(r, g, b); + return rgb; +#endif +} + + +void +mii_video_set_mode( + mii_t *mii, + uint8_t mode) +{ + // used to implement cycling through palettes + if (mode >= (sizeof(palettes) / sizeof(palettes[0]))) + mode = 0; +// printf("%s mode %d\n", __func__, mode); + mii->video.color_mode = mode; + mii_video_clut_t * clut = &mii->video.clut; + + uint32_t base = palettes[mode].mono_color; + mii->video.monochrome = base != 0; + if (mii->video.monochrome) { + // convert one set of RGB colors to monochrome. arbitrarily 0 + const mii_palette_t * pal = &palettes[0]; + // base CLUT is using color *indexes* in the palette we picked + for (uint i = 0; i < sizeof(clut->colors) / sizeof(clut->colors[0]); i++) + clut->colors[i] = pal->color[mii_base_clut.colors[i]]; + for (uint i = 0; i < sizeof(clut->colors) / sizeof(clut->colors[0]); i++) { + clut->colors[i] = _mii_rgb_to_lumed_color( + pal->color[mii_base_clut.colors[i]], base); + } + // now calculate a new lores color table, with dimmer colors + uint8_t br, bg, bb; + HI_GET_RGB(base, br, bg, bb); + frgb_t base_in = { br / 255.0, bg / 255.0, bb / 255.0 }; + fhsv_t base_hsv = rgb2hsv(base_in); + base_hsv.v /= 2.0; + frgb_t out = hsv2rgb(base_hsv); + br = out.r * 255; + bg = out.g * 255; + bb = out.b * 255; + base = HI_RGB(br, bg, bb); + + clut = &mii->video.clut_low; + *clut = mii->video.clut; + + for (uint i = 0; i < sizeof(clut->colors) / sizeof(clut->colors[0]); i++) { + clut->colors[i] = _mii_rgb_to_lumed_color( + clut->colors[i], base); + } + } else { + const mii_palette_t * pal = &palettes[mode]; + // base CLUT is using color *indexes* in the palette we picked + for (uint i = 0; i < sizeof(clut->colors) / sizeof(clut->colors[0]); i++) + clut->colors[i] = pal->color[mii_base_clut.colors[i]]; + clut = &mii->video.clut_low; + *clut = mii->video.clut; + + for (uint i = 0; i < sizeof(clut->colors) / sizeof(clut->colors[0]); i++) { + uint8_t br, bg, bb; + HI_GET_RGB(clut->colors[i], br, bg, bb); + frgb_t base_in = { br / 255.0, bg / 255.0, bb / 255.0 }; + fhsv_t base_hsv = rgb2hsv(base_in); + base_hsv.s *= 0.75; + base_hsv.v *= 0.75; + frgb_t out = hsv2rgb(base_hsv); + br = out.r * 255; + bg = out.g * 255; + bb = out.b * 255; + clut->colors[i] = HI_RGB(br, bg, bb); + } + } + mii_video_full_refresh(mii); } @@ -656,22 +1206,49 @@ _mii_mish_video( int argc, const char * argv[]) { -// mii_t * mii = param; + mii_t * mii = param; if (!argv[1] || !strcmp(argv[1], "list")) { for (int i = 0; i < 16; i++) { printf("%01x: %08x %08x %08x\n", i, - lores_colors[0][i].rgb, - lores_colors[1][i].rgb, - dhires_colors[i].rgb); + mii->video.clut.lores[0][i], + mii->video.clut.lores[1][i], + mii->video.clut.dhires[i]); } return; } - if (!strcmp(argv[1], "gradient")) { - mii_video_print_color_table(lores_colors[0][1].rgb); - + if (!strcmp(argv[1], "color")) { + mii_bank_t * sw = &mii->bank[MII_BANK_SW]; + uint8_t reg = mii_bank_peek(sw, SWAN3_REGISTER); + printf("AN3 REG %d -> %d\n", reg, 1); + mii_bank_poke(sw, SWAN3_REGISTER, 1); + _mii_video_mode_changed(mii); + mii_video_full_refresh(mii); return; } + if (!strcmp(argv[1], "mono")) { + mii_bank_t * sw = &mii->bank[MII_BANK_SW]; + uint8_t reg = mii_bank_peek(sw, SWAN3_REGISTER); + printf("AN3 REG %d -> %d\n", reg, 0); + mii_bank_poke(sw, SWAN3_REGISTER, 0); + _mii_video_mode_changed(mii); + mii_video_full_refresh(mii); + return; + } + if (!strcmp(argv[1], "dirty")) { + _mii_video_mode_changed(mii); + mii_video_full_refresh(mii); + return; + } +#ifdef TRACE + if (!strcmp(argv[1], "trace")) { + _trace = 1; + mii_video_full_refresh(mii); + _trace = 0; + return; + } +#endif + fprintf(stderr, "Unknown video command %s\n", argv[1]); } #include "mish.h" @@ -679,6 +1256,10 @@ _mii_mish_video( MISH_CMD_NAMES(video, "video"); MISH_CMD_HELP(video, "video: test patterns generator", - " : dump color tables" + " : dump color tables", + " list: dump color tables", + " color: set color mode", + " mono: set mono mode", + " dirty: force full refresh" ); MII_MISH(video, _mii_mish_video); diff --git a/src/mii_video.h b/src/mii_video.h index 3d0d389..5038176 100644 --- a/src/mii_video.h +++ b/src/mii_video.h @@ -11,6 +11,13 @@ #include #include +/* + * When 1, this will draw a heat map of the dirty lines alongside the video + * This is useful to see if the video rendering is efficient. + * This has no real use apart from debugging the video rendering. + */ +#define MII_VIDEO_DEBUG_HEAPMAP 0 + // TODO move VRAM stuff to somewhere else #define MII_VIDEO_WIDTH (280 * 2) #define MII_VIDEO_HEIGHT (192 * 2) @@ -24,28 +31,65 @@ #define MII_VRAM_HEIGHT MII_VIDEO_HEIGHT #endif -enum { - MII_VIDEO_COLOR = 0, - MII_VIDEO_GREEN, - MII_VIDEO_AMBER, - MII_VIDEO_MODE_COUNT -}; - struct mii_t; +struct mii_video_t; typedef void (*mii_video_line_drawing_cb)( - mii_t *mii, uint8_t mode, bool page2 ); + mii_t *mii ); +typedef void (*mii_video_line_check_cb)( + struct mii_video_t *video, + uint32_t sw, + uint16_t addr); + +typedef struct mii_video_cb_t { + mii_video_line_drawing_cb render; + mii_video_line_check_cb check; +} mii_video_cb_t; + +typedef uint32_t mii_color_t; + +/* + * Color Lookup Table fro all the modes. They default to the color + * version defined in mii_video.c, then get derived from that for + * the green and amber modes. + */ +typedef union mii_video_clut_t { + struct { + mii_color_t lores[2][16]; // lores (main, and aux page DLORES) + mii_color_t dhires[16]; + mii_color_t hires[10]; +// mii_color_t hires2[8]; + mii_color_t text[2]; // text + mii_color_t mono[2]; // DHRES mono mode + }; + mii_color_t colors[(2*16) + 16 + 10 /*+ 8*/ + 2 + 2]; +} mii_video_clut_t; typedef struct mii_video_t { - void * state; // protothread state in mii_video.c - uint8_t timer_id; // timer id for the video thread - uint8_t line; // current line - uint32_t pixels[MII_VRAM_WIDTH * MII_VRAM_HEIGHT]; - uint32_t frame_count; // incremented every frame - uint32_t frame_drawn; - uint8_t color_mode; // color, green, amber + void * state; // protothread state in mii_video.c + uint8_t timer_id; // timer id for the video thread + uint8_t line; // current line for cycle timer + uint16_t base_addr; // current mode base address + uint16_t line_addr; // VRAM address for the line we are on + uint64_t timer_max; // timer start value + uint32_t frame_count; // incremented every frame + uint8_t color_mode; // color palette index + uint8_t monochrome; // monochrome mode + mii_video_clut_t clut; // current color table + mii_video_clut_t clut_low; // low luminance version // function pointer to the line drawing function - mii_video_line_drawing_cb line_drawing; + mii_video_cb_t line_cb; + uint8_t frame_dirty; + uint32_t frame_seed; // changed when pixels have changed for this frame + uint64_t lines_dirty[192 / 64]; // 192 lines / 64 bits + +#if MII_VIDEO_DEBUG_HEAPMAP + uint8_t video_hmap[192] + __attribute__((aligned(32))) ; // line dirty heat map +#endif + // alignment is required for vector extensions + uint32_t pixels[MII_VRAM_WIDTH * MII_VRAM_HEIGHT] + __attribute__((aligned(32))); } mii_video_t; bool @@ -58,4 +102,19 @@ void mii_video_init( mii_t *mii); - +void +mii_video_set_mode( + mii_t *mii, + uint8_t mode); +/* out of bounds write check. This allow SmartPort DMA drive to + * pass down the range it writes buffers to, so the video gets + * a chance to check if the addresses are in RAM, in case the + * Prodos call is loading an image into VRAM proper */ +void +mii_video_OOB_write_check( + mii_t *mii, + uint16_t addr, + uint16_t size); +uint8_t +mii_video_get_vapor( + mii_t *mii); diff --git a/ui_gl/mii_emu_gl.c b/ui_gl/mii_emu_gl.c index cade8bc..5695529 100644 --- a/ui_gl/mii_emu_gl.c +++ b/ui_gl/mii_emu_gl.c @@ -29,7 +29,7 @@ #include "mii_mui_gl.h" #include "miigl_counter.h" #define MII_ICON64_DEFINE -#include "mii-icon-64.h" +#include "mii_icon64.h" /* * Note: This *assumes* that the GL implementation has support for @@ -49,10 +49,6 @@ typedef struct mii_x11_t { Display * dpy; Window win; - XVisualInfo * vis; - Colormap cmap; - XSetWindowAttributes swa; - GLXFBConfig fbc; Atom wm_delete_window; int width, height; GLXContext glContext; @@ -155,6 +151,8 @@ mii_x11_init( if ((glx_major == 1 && glx_minor < 3) || (glx_major < 1)) die("[X11]: Error: Invalid GLX version!\n"); } + GLXFBConfig fbc; + XVisualInfo * vis = NULL; { /* find and pick matching framebuffer visual */ int fb_count; @@ -163,26 +161,24 @@ mii_x11_init( GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT, GLX_RENDER_TYPE, GLX_RGBA_BIT, GLX_X_VISUAL_TYPE, GLX_TRUE_COLOR, - GLX_RED_SIZE, 8, - GLX_GREEN_SIZE, 8, - GLX_BLUE_SIZE, 8, - GLX_ALPHA_SIZE, 8, + GLX_RED_SIZE, 8, GLX_GREEN_SIZE, 8, + GLX_BLUE_SIZE, 8, GLX_ALPHA_SIZE, 8, None }; - GLXFBConfig *fbc = glXChooseFBConfig(ui->dpy, + GLXFBConfig *fbc_list = glXChooseFBConfig(ui->dpy, DefaultScreen(ui->dpy), attr, &fb_count); - if (!fbc) + if (!fbc_list) die("[X11]: Error: failed to retrieve framebuffer configuration\n"); { /* pick framebuffer with most samples per pixel */ int fb_best = -1, best_num_samples = -1; for (int i = 0; i < fb_count; ++i) { - XVisualInfo *vi = glXGetVisualFromFBConfig(ui->dpy, fbc[i]); + XVisualInfo *vi = glXGetVisualFromFBConfig(ui->dpy, fbc_list[i]); if (vi) { int sample_buffer, samples; - glXGetFBConfigAttrib(ui->dpy, fbc[i], + glXGetFBConfigAttrib(ui->dpy, fbc_list[i], GLX_SAMPLE_BUFFERS, &sample_buffer); - glXGetFBConfigAttrib(ui->dpy, fbc[i], + glXGetFBConfigAttrib(ui->dpy, fbc_list[i], GLX_SAMPLES, &samples); if ((fb_best < 0) || (sample_buffer && samples > best_num_samples)) @@ -190,34 +186,35 @@ mii_x11_init( XFree(vi); } } - ui->fbc = fbc[fb_best]; - XFree(fbc); - ui->vis = glXGetVisualFromFBConfig(ui->dpy, ui->fbc); + fbc = fbc_list[fb_best]; + XFree(fbc_list); + vis = glXGetVisualFromFBConfig(ui->dpy, fbc); } } { /* create window */ - ui->cmap = XCreateColormap(ui->dpy, - RootWindow(ui->dpy, ui->vis->screen), - ui->vis->visual, AllocNone); - ui->swa.colormap = ui->cmap; - ui->swa.background_pixmap = None; - ui->swa.border_pixel = 0; - ui->swa.event_mask = - ExposureMask | KeyPressMask | KeyReleaseMask | - ButtonPress | ButtonReleaseMask | ButtonMotionMask | - Button1MotionMask | Button3MotionMask | - Button4MotionMask | Button5MotionMask | - PointerMotionMask | StructureNotifyMask | FocusChangeMask; + XSetWindowAttributes swa = { + .colormap = XCreateColormap(ui->dpy, + RootWindow(ui->dpy, vis->screen), + vis->visual, AllocNone), + .background_pixmap = None, + .border_pixel = 0, + .event_mask = + ExposureMask | KeyPressMask | KeyReleaseMask | + ButtonPress | ButtonReleaseMask | ButtonMotionMask | + Button1MotionMask | Button3MotionMask | + Button4MotionMask | Button5MotionMask | + PointerMotionMask | StructureNotifyMask | FocusChangeMask, + }; ui->win = XCreateWindow(ui->dpy, - RootWindow(ui->dpy, ui->vis->screen), 0, 0, - WINDOW_WIDTH, WINDOW_HEIGHT, 0, ui->vis->depth, InputOutput, - ui->vis->visual, - CWBorderPixel | CWColormap | CWEventMask, - &ui->swa); + RootWindow(ui->dpy, vis->screen), 0, 0, + WINDOW_WIDTH, WINDOW_HEIGHT, 0, vis->depth, InputOutput, + vis->visual, CWBorderPixel | CWColormap | CWEventMask, + &swa); if (!ui->win) die("[X11]: Failed to create window\n"); - XFree(ui->vis); + XFree(vis); + XFreeColormap(ui->dpy, swa.colormap); { char title[128]; sprintf(title, "MII //e Emulator"); @@ -276,14 +273,15 @@ mii_x11_init( !create_context) { fprintf(stdout, "[X11]: glXCreateContextAttribARB() not found...\n"); fprintf(stdout, "[X11]: ... using old-style GLX context\n"); - ui->glContext = glXCreateNewContext(ui->dpy, ui->fbc, GLX_RGBA_TYPE, 0, True); + ui->glContext = glXCreateNewContext( + ui->dpy, fbc, GLX_RGBA_TYPE, 0, True); } else { GLint attr[] = { - GLX_CONTEXT_MAJOR_VERSION_ARB, 2, - GLX_CONTEXT_MINOR_VERSION_ARB, 2, + GLX_CONTEXT_MAJOR_VERSION_ARB, 3, + GLX_CONTEXT_MINOR_VERSION_ARB, 0, None }; - ui->glContext = create_context(ui->dpy, ui->fbc, 0, True, attr); + ui->glContext = create_context(ui->dpy, fbc, 0, True, attr); XSync(ui->dpy, False); if (gl_err || !ui->glContext) { attr[1] = 1; @@ -291,7 +289,7 @@ mii_x11_init( gl_err = false; fprintf(stdout, "[X11] Failed to create OpenGL 3.0 context\n"); fprintf(stdout, "[X11] ... using old-style GLX context!\n"); - ui->glContext = create_context(ui->dpy, ui->fbc, 0, True, attr); + ui->glContext = create_context(ui->dpy, fbc, 0, True, attr); } } XSync(ui->dpy, False); @@ -303,6 +301,29 @@ mii_x11_init( return 0; } + +static void +mui_read_clipboard( + struct mui_t *mui) +{ + FILE *f = popen("xclip -selection clipboard -o", "r"); + if (!f) { + perror("popen xclip"); + return; + } + mui_utf8_t clip = {}; + char buf[1024]; + size_t r = 0; + do { + r = fread(buf, 1, sizeof(buf), f); + if (r > 0) + mui_utf8_append(&clip, (uint8_t*)buf, r); + } while (r > 0); + pclose(f); + mui_utf8_free(&mui->clipboard); + mui->clipboard = clip; +} + static int mii_x11_handle_event( mii_x11_t * ui, @@ -400,8 +421,29 @@ mii_x11_handle_event( case MUI_KEY_RIGHT: mii_key = 'U' - 'A' + 1; break; case MUI_KEY_LEFT: mii_key = 'H' - 'A' + 1; break; } - // printf("key %04x %4x\n", mii_key, mui->modifier_keys); - mii_keypress(mii, mii_key); +// printf("key %04x %4x\n", mii_key, mui->modifier_keys); + /* control shift V is hard coded! */ + if (mii_key == 0x016 && + (mui->modifier_keys & MUI_MODIFIER_SHIFT) && + (mui->modifier_keys & MUI_MODIFIER_CTRL)) { + printf("Paste\n"); + mui_read_clipboard(mui); + if (mui->clipboard.count) { + mui_utf8_add(&mui->clipboard, 0); + // convert newlines + for (uint i = 0; i < mui->clipboard.count; i++) + if (mui->clipboard.e[i] == '\n') + mui->clipboard.e[i] = '\r'; + mii_th_signal_t sig = { + .cmd = SIGNAL_PASTE, + .ptr = mui->clipboard.e, + }; + mui->clipboard.e = NULL; + mui->clipboard.count = mui->clipboard.size = 0; + mii_th_fifo_write(mii_thread_get_fifo(mii), sig); + } + } else + mii_keypress(mii, mii_key); } XFree(code); } break; @@ -487,7 +529,6 @@ mii_x11_terminate( glXMakeCurrent(ui->dpy, 0, 0); glXDestroyContext(ui->dpy, ui->glContext); XUnmapWindow(ui->dpy, ui->win); - XFreeColormap(ui->dpy, ui->cmap); XDestroyWindow(ui->dpy, ui->win); XCloseDisplay(ui->dpy); } @@ -502,6 +543,10 @@ static const struct { [MII_SLOT_DRIVER_MOUSE] = { "mouse", }, [MII_SLOT_DRIVER_SSC] = { "ssc", }, [MII_SLOT_DRIVER_ROM1MB] = { "eecard", }, + [MII_SLOT_DRIVER_MOCKINGBOARD] = { "mockingboard", }, +#ifdef MII_DANII + [MII_SLOT_DRIVER_DANII] = { "danii", }, +#endif }; void @@ -575,6 +620,7 @@ _mii_ui_load_config( *ioFlags |= MII_INIT_TITAN; mii->speaker.muted = config->audio_muted; mii->video.color_mode = config->video_mode; + mii_video_set_mode(mii, config->video_mode); for (int i = 0; i < 7; i++) { if (config->slot[i].driver == MII_SLOT_DRIVER_NONE) continue; @@ -594,7 +640,7 @@ _mii_ui_load_config( } // I want at least the 'silent' flags to be 'sticky' -static uint32_t g_startup_flags = 0; +uint32_t g_startup_flags = 0; void mii_x11_reload_config( @@ -602,7 +648,7 @@ mii_x11_reload_config( { mii_t * mii = &ui->video.mii; mii_machine_config_t * config = &ui->video.config; - uint32_t flags = MII_INIT_DEFAULT | (g_startup_flags & MII_INIT_SILENT); + uint32_t flags = MII_INIT_DEFAULT | g_startup_flags; if (mii->state != MII_INIT) { printf("%s mii is running, terminating thread\n", __func__); @@ -613,7 +659,7 @@ mii_x11_reload_config( mii_mui_menu_slot_menu_update(&ui->video); printf("%s (re)loading config\n", __func__); // if we're silent from the command line, we are *always* silent. - mii->speaker.off = !!(g_startup_flags & MII_INIT_SILENT); + mii->speaker.speaker_off = !!(g_startup_flags & MII_INIT_SILENT); mii_init(mii); _mii_ui_load_config(mii, config, &flags); mii_prepare(mii, flags); @@ -708,7 +754,7 @@ main( if (evt.xclient.message_type == XInternAtom(ui->dpy, "WM_PROTOCOLS", False) && (Atom)evt.xclient.data.l[0] == ui->wm_delete_window) { - printf("Window close requested!\n"); + // printf("Window close requested!\n"); goto cleanup; } } diff --git a/ui_gl/mii_icon64.h b/ui_gl/mii_icon64.h new file mode 100644 index 0000000..1516bcb --- /dev/null +++ b/ui_gl/mii_icon64.h @@ -0,0 +1,524 @@ +// Autogenerated with: +// libmui/utils/png2raw.c -t unsigned long -n mii_icon64 -o ui_gl/mii_icon64.h contrib/mii-icon-64.png +// Image with a W:64px, H:64px and 4 channels +// Converted to ARGB8888 and premultiplied alpha +#pragma once +#define MII_ICON64_SIZE 4098 +extern const unsigned long mii_icon64[MII_ICON64_SIZE]; +#ifdef MII_ICON64_DEFINE +const unsigned long mii_icon64[MII_ICON64_SIZE] = { +64, 64, // width, height +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x01000000, +0x01000000,0x03010101,0x04020203,0x04030303,0x04030303,0x05030404,0x05030404,0x05040404, +0x05040404,0x06040405,0x06040405,0x06040405,0x06040405,0x07030403,0x07010402,0x07010402, +0x07010402,0x07010402,0x07010402,0x07020402,0x06010302,0x06010302,0x06010302,0x06010302, +0x06010302,0x06010302,0x06010302,0x05010301,0x05010301,0x05010301,0x04010201,0x01000000, +0x01000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x2f2c2c2d,0x7b757678,0xafa6a8ab,0xd0c6c8cb,0xf2e7e9ed, +0xfdf2f5f9,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb, +0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xffc1dcc7,0xff5eb94e,0xff5fb94d, +0xff5fb94d,0xff5fb94d,0xff5fb94d,0xff5fb94d,0xff5fb94d,0xff5fb94d,0xff5fb94d,0xff5fb94d, +0xff5fb94d,0xff5fb94d,0xff5fb94d,0xff5fb94d,0xff5fb94d,0xff5fb94d,0xff5fb94e,0xfe5eb851, +0xf65bb24f,0xd34e9943,0xb1407f3a,0x7c2d592c,0x31112212,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x514c4d4e,0xcec5c6c9,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb, +0xfff4f6fa,0xfff4f7fb,0xfff4f7fb,0xfff4f6fa,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb, +0xfff4f7fb,0xfff4f6fa,0xfff4f7fb,0xfff4f7fb,0xfff4f6fa,0xfff0f4f6,0xff6fbd67,0xff60ba45, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff5fba4a,0xcd4b9443,0x511c391e,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x13111112, +0xb4abadb0,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb, +0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb, +0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xfff4f7fb,0xffb9d8bd,0xff60ba46, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff5fba48,0xb240803d, +0x13060d07,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x201d1e1e,0xdfd5d7da, +0xfff4f7fb,0xfff4f7fb,0xfff4f6fa,0xfff4f7fb,0xfff4f7fb,0xfff4f6fa,0xfff4f7fb,0xfff4f7fb, +0xfff4f6fa,0xfff4f7fb,0xfff4f7fb,0xfff4f6fa,0xfff4f7fb,0xfff4f7fb,0xfff4f6fa,0xfff4f7fb, +0xfff4f7fb,0xfff4f6fa,0xfff4f7fb,0xfff4f7fb,0xfff4f6fa,0xfff4f7fb,0xffebf2f1,0xff60b951, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xdd519f47,0x1f0a150c,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x14121212,0xdfd5d7da,0xfff4f6fa, +0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa, +0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa, +0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f7fa,0xffa1cea2, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xdd519f48,0x12060c06,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x01000000,0xb4abacaf,0xfff4f6fa,0xfff4f6fa, +0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa, +0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa, +0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xfff4f6fa,0xffd5e5db, +0xff5fba47,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xb03f7e3c,0x01000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x4f494a4b,0xfff4f6f9,0xfff4f6fa,0xfff3f6f9, +0xfff4f6f9,0xfff4f6f9,0xfff4f6fa,0xfff4f6f9,0xfff4f6f9,0xfff4f6fa,0xfff4f6f9,0xfff4f6fa, +0xfff3f6f9,0xfff4f6f9,0xfff4f6f9,0xfff4f6fa,0xfff4f6f9,0xfff4f6f9,0xfff4f6fa,0xfff4f6f9, +0xfff4f6fa,0xfff3f6f9,0xfff4f6f9,0xfff4f6f9,0xfff4f6fa,0xfff4f6f9,0xfff4f6f9,0xfff4f6f9, +0xff74be6d,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xff5fba49,0x4919331b,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x01000000,0xccc1c3c6,0xfff4f6f9,0xfff4f6f9,0xfff4f6f9, +0xfff4f6f9,0xfff4f6f9,0xfff4f6f9,0xfff4f6f9,0xfff4f6f9,0xfff4f5f9,0xfff4f6f9,0xfff4f6f9, +0xfff4f6f9,0xfff4f6f9,0xfff4f6f9,0xfff4f6f9,0xfff4f6f9,0xfff4f6f9,0xfff4f5f9,0xfff4f6f9, +0xfff4f6f9,0xfff4f6f9,0xfff4f6f9,0xfff4f6f9,0xfff4f6f9,0xfff4f6f9,0xfff4f6f9,0xfff4f6f9, +0xffb2d5b4,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45,0xff60ba45, +0xff60ba45,0xff60ba45,0xff60ba45,0xc8488f41,0x01000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x2c272828,0xfff4f5f9,0xfff4f5f9,0xfff4f5f9,0xfff3f5f9, +0xfff4f5f9,0xfff4f5f9,0xfff4f5f9,0xfff4f5f9,0xfff4f5f9,0xfff4f5f9,0xfff4f5f9,0xfff4f5f9, +0xfff3f5f9,0xfff4f5f9,0xfff4f5f9,0xfff4f5f9,0xfff4f5f9,0xfff4f5f9,0xfff4f5f9,0xfff4f5f9, +0xfff4f5f9,0xfff3f5f9,0xfff4f5f9,0xfff4f5f9,0xfff4f5f9,0xfff4f5f9,0xfff4f5f9,0xfff4f5f9, +0xffdae8e0,0xff5fb948,0xff60ba46,0xff60ba46,0xff60ba46,0xff60ba46,0xff60ba46,0xff60ba46, +0xff60ba46,0xff60ba46,0xff60ba46,0xff60ba46,0xff60ba46,0xff60ba46,0xff60ba46,0xff60ba46, +0xff60ba46,0xff60ba46,0xff60ba46,0xff60ba46,0xff60ba46,0xff60ba46,0xff60ba46,0xff60ba46, +0xff60ba46,0xff60ba46,0xff60ba46,0xff5fb94b,0x280d1b0f,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x766e6f70,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8, +0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8, +0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8, +0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8, +0xfff4f5f8,0xffc7b762,0xffcab33f,0xffcbb43f,0xffcbb43f,0xffcbb43f,0xffcbb43f,0xffcbb43f, +0xffcbb43f,0xffcbb43f,0xffcbb43f,0xffcbb43f,0xffcbb43f,0xffcbb43f,0xffcbb43f,0xffcbb43f, +0xffcbb43f,0xffcbb43f,0xffcbb43f,0xffcbb43f,0xffcbb43f,0xffcbb43f,0xffcbb43f,0xffcbb43f, +0xffcbb43f,0xffcbb43f,0xffcbb43f,0xffcbb440,0x70594c1f,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x01000000,0xa79d9d9f,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8, +0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8, +0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8, +0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8,0xfff4f5f8, +0xfff4f5f8,0xfff9cf9f,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xa29d7117,0x01000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x02000000,0xcec2c3c5,0xfff3f4f8,0xfff3f4f8,0xfff3f4f8,0xfff3f4f7, +0xfff3f4f8,0xfff3f4f8,0xfff3f4f8,0xfff3f4f8,0xfff3f4f8,0xfff3f4f8,0xfff3f4f8,0xfff3f4f8, +0xfff3f4f7,0xfff3f4f8,0xfff3f4f8,0xfff3f4f8,0xfff3f4f8,0xfff3f4f8,0xfff3f4f8,0xfff3f4f8, +0xfff3f4f8,0xfff3f4f7,0xfff3f4f8,0xfff3f4f8,0xfff3f4f8,0xfff3f4f8,0xfff3f4f8,0xfff3f4f8, +0xfff3f4f8,0xfff7e2cf,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xcac68e1d,0x02000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x04000000,0xded1d2d5,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7, +0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7, +0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7, +0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7, +0xfff3f4f7,0xfff5f1ef,0xfffbb524,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xd7d1971f,0x03000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x05000000,0xefe1e2e5,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7, +0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7, +0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7, +0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7, +0xfff3f4f7,0xfff4f4f7,0xfffac275,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xe6e1a222,0x05000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x07000000,0xf8ebecef,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7, +0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7, +0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7, +0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7,0xfff3f4f7, +0xfff3f4f7,0xfff3f4f7,0xfff8d3ac,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xf3efab23,0x06000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x07000000,0xfdf0f2f4,0xfff2f3f6,0xfff2f4f7,0xfff2f4f7,0xfff2f3f6, +0xfff3f4f7,0xfff2f4f7,0xfff2f3f6,0xfff2f4f7,0xfff2f4f7,0xfff2f3f6,0xfff2f4f7,0xfff2f4f7, +0xfff2f3f6,0xfff3f4f7,0xfff2f4f7,0xfff2f3f6,0xfff2f4f7,0xfff2f4f7,0xfff2f3f6,0xfff2f4f7, +0xfff2f4f7,0xfff2f3f6,0xfff3f4f7,0xfff2f4f7,0xfff2f3f6,0xfff2f4f7,0xfff2f4f7,0xfff2f3f6, +0xfff2f4f7,0xfff2f4f7,0xfff6e1ce,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb625,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xf9f5b024,0x06000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xfff2f4f7,0xfff2f4f7,0xfff2f4f7,0xfff2f4f7,0xfff2f4f6, +0xfff2f4f6,0xfff2f4f6,0xfff2f4f7,0xfff2f4f7,0xfff2f4f7,0xfff2f4f7,0xfff2f4f7,0xfff2f4f7, +0xfff2f4f6,0xfff2f4f6,0xffe6e7ea,0xff878889,0xff929395,0xffedeef1,0xfff2f4f7,0xfff2f4f7, +0xfff2f4f7,0xfff2f4f6,0xfff2f4f6,0xfff2f4f6,0xfff2f4f7,0xfff2f4f7,0xfff2f4f7,0xfff2f4f7, +0xfff2f4f7,0xfff2f4f7,0xfff4eee9,0xfffbb625,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xffc48818,0xff81530a,0xffd6971c,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfcf9b325,0x07000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xfff2f4f7,0xfff2f4f6,0xfff2f4f6,0xfff2f4f6,0xfff2f4f6, +0xfff2f4f6,0xfff2f4f6,0xfff2f4f6,0xfff2f4f6,0xfff2f4f6,0xfff2f4f6,0xfff2f4f6,0xfff2f4f6, +0xfff2f4f6,0xfff2f4f6,0xffc8cacc,0xff606061,0xff606061,0xffd8dadc,0xfff2f4f6,0xfff2f4f6, +0xfff2f4f6,0xfff2f4f6,0xfff2f4f6,0xfff2f4f6,0xfff2f4f6,0xfff2f4f6,0xfff2f4f6,0xfff2f4f6, +0xfff2f4f6,0xfff2f4f6,0xfff3f5f7,0xfffaba52,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb625,0xff77490a,0xff643a07,0xff9c6811,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726, +0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb726,0xfffcb525,0x07000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xfff2f3f6,0xfff2f3f6,0xfff2f3f6,0xfff2f3f6,0xfff2f3f6, +0xfff2f3f6,0xfff2f3f6,0xfff2f3f6,0xfff2f3f6,0xfff2f3f6,0xfff2f3f6,0xfff2f3f6,0xfff2f3f6, +0xfff2f3f6,0xfff2f3f6,0xffc8cacc,0xff606061,0xff606061,0xffd6d8da,0xfff2f3f6,0xfff2f3f6, +0xfff2f3f6,0xfff2f3f6,0xfff2f3f6,0xfff2f3f6,0xfff2f3f6,0xfff2f3f6,0xfff2f3f6,0xfff2f3f6, +0xfff2f3f6,0xfff2f3f6,0xfff2f3f6,0xfff8c78c,0xfffcb525,0xfffcb525,0xfffcb525,0xfffcb525, +0xfffcb525,0xfffcb525,0xfffcb525,0xfffcb324,0xfe75450e,0xfe64360c,0xfe986313,0xfffcb424, +0xfffcb525,0xfffcb525,0xfffcb525,0xfffcb525,0xfffcb525,0xfffcb525,0xfffcb525,0xfffcb525, +0xfffcb525,0xfffcb525,0xfffcb525,0xfffcb525,0xfffcb323,0x08000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xfff2f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5, +0xfff2f3f6,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5, +0xfff1f3f5,0xfff2f3f6,0xffc8c9cb,0xff5f6061,0xff5f6061,0xffd6d8da,0xfff1f3f5,0xfff1f3f5, +0xfff1f3f5,0xfff1f3f5,0xfff2f3f6,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5, +0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1bbb2,0xfff76b3e,0xfffc6d40,0xfffd6d41,0xfffd6d41, +0xfffd6d41,0xfffd6d41,0xfffd6d41,0xfffd6d41,0xfe713517,0xfe643012,0xfe954324,0xfffd6d41, +0xfffd6d41,0xfffd6d41,0xfffd6d41,0xfffd6d41,0xfffd6d41,0xfffd6d41,0xfffd6d41,0xfffd6d41, +0xfffd6d41,0xfffd6d41,0xfffd6d41,0xfffd6d41,0xfffd6d42,0x08000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5, +0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5, +0xfff1f3f5,0xfff1f3f5,0xffc8c9cb,0xff5f6061,0xff5f6061,0xffd6d7d9,0xfff1f3f5,0xfff1f3f5, +0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1f3f5, +0xfff1f3f5,0xfff1f3f5,0xfff1f3f5,0xfff1ccca,0xfff4613f,0xfffc6441,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6643,0xff71301b,0xff642b16,0xff963e26,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6644,0x08000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xfff1f2f5,0xfff1f2f5,0xfff1f2f5,0xfff1f2f5,0xfff1f2f5, +0xfff1f3f5,0xfff1f2f5,0xfff1f2f5,0xfff1f3f5,0xfff1f2f5,0xfff1f2f5,0xfff1f2f5,0xfff1f2f5, +0xfff1f2f5,0xfff1f3f5,0xffd0d1d3,0xff5f6061,0xff5f6061,0xffe0e2e4,0xfff1f2f5,0xfff1f2f5, +0xfff1f2f5,0xfff1f2f5,0xfff1f3f5,0xfff1f2f5,0xfff1f2f5,0xfff1f3f5,0xfff1f2f5,0xfff1f2f5, +0xfff1f2f5,0xfff1f2f5,0xfff1f2f5,0xfff2dfdf,0xfff2603f,0xfffb6441,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xff8c3b26,0xff642819,0xffab4830,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6644,0x08000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xfff1f2f4,0xfff1f2f4,0xfff1f2f4,0xfff1f2f4,0xfff1f2f4, +0xfff1f2f4,0xfff1f2f4,0xfff1f2f4,0xfff1f2f4,0xfff1f2f4,0xfff1f2f4,0xfff1f2f4,0xfff1f2f4, +0xfff1f2f4,0xfff1f2f4,0xfff1f2f4,0xffd1d2d4,0xffd7d8da,0xfff1f2f4,0xfff1f2f4,0xfff1f2f4, +0xfff1f2f4,0xfff1f2f4,0xfff1f2f4,0xfff1f2f4,0xfff1f2f4,0xfff1f2f4,0xfff1f2f4,0xfff1f2f4, +0xfff1f2f4,0xfff1f2f4,0xfff1f2f4,0xfff3eeef,0xffef5f3e,0xfffa6341,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfff06545,0xffd25c41,0xfff76746,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6644,0x08000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xfff1f2f4,0xfff0f2f4,0xfff0f2f4,0xfff1f2f4,0xfff0f2f4, +0xfff1f2f4,0xfff0f2f4,0xfff1f2f4,0xfff1f2f4,0xfff1f2f4,0xfff0f2f4,0xfff0f2f4,0xfff1f2f4, +0xfff0f2f4,0xfff1f2f4,0xfff0f2f4,0xfff1f2f4,0xfff1f2f4,0xfff1f2f4,0xfff0f2f4,0xfff0f2f4, +0xfff1f2f4,0xfff0f2f4,0xfff1f2f4,0xfff0f2f4,0xfff1f2f4,0xfff1f2f4,0xfff1f2f4,0xfff0f2f4, +0xfff0f2f4,0xfff1f2f4,0xfff0f2f4,0xfff2f4f5,0xffee6a50,0xfff96340,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6644,0x08000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xfff1f2f4,0xfff0f2f4,0xfff0f2f4,0xfff1f2f4,0xfff0f2f4, +0xfff0f2f4,0xfff1f2f4,0xfff0f2f4,0xfff0f2f4,0xfff1f2f4,0xfff0f2f4,0xfff0f2f4,0xfff1f2f4, +0xfff0f2f4,0xfff0f2f4,0xfff1f2f4,0xfff0f2f4,0xfff0f2f4,0xfff1f2f4,0xfff0f2f4,0xfff0f2f4, +0xfff1f2f4,0xfff0f2f4,0xfff0f2f4,0xfff1f2f4,0xfff0f2f4,0xfff0f2f4,0xfff1f2f4,0xfff0f2f4, +0xfff0f2f4,0xfff1f2f4,0xfff0f2f4,0xfff1f2f4,0xffef8e81,0xfff86340,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6644,0x08000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xfff0f1f4,0xfff0f1f3,0xfff0f1f4,0xfff0f1f4,0xfff0f1f3, +0xfff0f1f4,0xfff0f1f4,0xfff0f1f3,0xfff0f1f4,0xfff0f1f4,0xfff0f1f3,0xfff0f1f4,0xfff0f1f4, +0xfff0f1f3,0xfff0f1f4,0xfff0f1f4,0xfff0f1f3,0xfff0f1f4,0xfff0f1f4,0xfff0f1f3,0xfff0f1f4, +0xfff0f1f4,0xfff0f1f3,0xfff0f1f4,0xfff0f1f4,0xfff0f1f3,0xfff0f1f4,0xfff0f1f4,0xfff0f1f3, +0xfff0f1f4,0xfff0f1f4,0xfff0f1f3,0xfff1f2f4,0xffee9e94,0xfff76240,0xfffc6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6644,0x08000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4, +0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4, +0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4, +0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4, +0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xfff0f1f4,0xffefb0aa,0xfff5623f,0xfffc6441,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6644,0x08000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3, +0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3, +0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3, +0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3, +0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xffeeb9b4,0xfff4613f,0xfffc6441,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542, +0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6542,0xfffd6644,0x08000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xfff0f1f3,0xfff0f0f3,0xfff0f1f3,0xfff0f1f3,0xfff0f0f3, +0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f0f3,0xfff0f1f3,0xfff0f1f3, +0xfff0f0f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f0f3,0xfff0f1f3, +0xfff0f1f3,0xfff0f0f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f1f3,0xfff0f0f3, +0xfff0f1f3,0xfff0f1f3,0xfff0f0f3,0xfff0f1f3,0xfeebc6c4,0xfde85840,0xfdf05c42,0xfdf25d43, +0xfdf25d43,0xfdf25d43,0xfdf25d43,0xfdf25d43,0xfdf25d43,0xfdf25d43,0xfdf25d43,0xfdf25d43, +0xfdf25d43,0xfdf25d43,0xfdf25d43,0xfdf25d43,0xfdf25d43,0xfdf25d43,0xfdf25d43,0xfdf25d43, +0xfdf25d43,0xfdf25d43,0xfdf25d43,0xfdf25d43,0xfef35f45,0x08000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xfff0f0f3,0xfff0f0f2,0xfff0f0f3,0xfff0f0f2,0xfff0f0f3, +0xfff0f0f3,0xfff0f0f3,0xfff0f0f2,0xfff0f0f3,0xfff0f0f3,0xfff0f0f2,0xfff0f0f3,0xfff0f0f2, +0xfff0f0f3,0xfff0f0f3,0xfff0f0f3,0xfff0f0f2,0xfff0f0f3,0xfff0f0f3,0xfff0f0f2,0xfff0f0f3, +0xfff0f0f2,0xfff0f0f3,0xfff0f0f3,0xfff0f0f3,0xfff0f0f2,0xfff0f0f3,0xfff0f0f3,0xfff0f0f2, +0xfff0f0f3,0xfff0f0f2,0xfff0f0f3,0xfff0f0f3,0xffdfc4c7,0xffc5303e,0xffcd3240,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3543,0x08000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2, +0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2, +0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2, +0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2, +0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xffe4ced0,0xffc4303d,0xffcc3240,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3543,0x08000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xffeff0f2,0xfff0f0f2, +0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xffeff0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xffeff0f2, +0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xffeff0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2, +0xffeff0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xfff0f0f2,0xffeff0f2,0xfff0f0f2,0xfff0f0f2, +0xfff0f0f2,0xffeff0f2,0xfff0f0f2,0xfff0f0f2,0xffe4cfd1,0xffc3303d,0xffcc3240,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3543,0x08000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1, +0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1, +0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1, +0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1, +0xffeff0f1,0xffeff0f1,0xffeff0f1,0xfff0f1f2,0xffcf9c9f,0xffc3303d,0xffcc3240,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xfece3543,0x08000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1, +0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1, +0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1, +0xffeff0f1,0xffeff0f1,0xffeff0f1,0xfff0f1f2,0xffc8a7a9,0xffba888b,0xffb88486,0xffb78285, +0xffb78285,0xffb78184,0xffb77d80,0xffb5686d,0xffb52c38,0xffc4303d,0xffcc3240,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xfccc3542,0x07000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1, +0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1, +0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1,0xffeff0f1, +0xffeff0f1,0xffeff0f1,0xffeff0f1,0xfff1f0f1,0xffa32833,0xffa62834,0xffa72934,0xffa72934, +0xffa72934,0xffa72934,0xffa92935,0xffb02b37,0xffbb2e3a,0xffc7303e,0xffcd3240,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xfbcb3442,0x07000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xffefeff0,0xffeeeff0,0xffeeeff0,0xffefeff0,0xffeeeff0, +0xffefeff0,0xffeeeff0,0xffefeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffefeff0, +0xffeeeff0,0xffefeff0,0xffeeeff0,0xffefeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0, +0xffefeff0,0xffeeeff0,0xffefeff0,0xfff1f1f2,0xffad2a36,0xffb42c38,0xffb72d39,0xffb72d39, +0xffb72d39,0xffb72d39,0xffb92d3a,0xffbd2e3b,0xffc4303d,0xffca313f,0xffce3240,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xfacb3442,0x07000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0, +0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffe3e4e5, +0xffecedee,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0, +0xffeeeff0,0xffeeeff0,0xffeeeff0,0xfff1f2f3,0xffb82e3a,0xffc22f3c,0xffc5303e,0xffc6303e, +0xffc6303e,0xffc6303e,0xffc7303e,0xffc9313e,0xffcb323f,0xffcd3240,0xffcf3341,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341, +0xffcf3341,0xffce3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341, +0xffcf3341,0xffcf3341,0xffcf3341,0xffcf3341,0xf8c93440,0x07000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0, +0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffd9dadb,0xff616262, +0xff909191,0xffeaebec,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0, +0xffeeeff0,0xffeeeff0,0xffeeeff0,0xfff1f1f3,0xffbd3140,0xffc73144,0xffcb3246,0xffcb3246, +0xffcb3246,0xffcb3246,0xffcc3247,0xffcc3347,0xffcc3347,0xffcd3347,0xffcd3347,0xffcd3347, +0xffcd3347,0xffcd3347,0xffcd3347,0xffcd3347,0xffcd3347,0xffcd3347,0xffcd3347,0xffcd3345, +0xfe872338,0xfe451731,0xffb73044,0xffcd3448,0xffcd3448,0xffcd3448,0xffcd3448,0xffcd3448, +0xffcd3448,0xffcd3448,0xffcd3448,0xffcd3448,0xf7c53649,0x07000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeef0, +0xffeeeff0,0xffeeeff0,0xffeeeff0,0xffeeeef0,0xffeeeff0,0xffeeeff0,0xffe2e2e4,0xff696a6a, +0xff5e5e5f,0xff939394,0xffe9eaeb,0xffeeeff0,0xffeeeef0,0xffeeeff0,0xffeeeff0,0xffeeeff0, +0xffeeeff0,0xffeeeef0,0xffeeeff0,0xfff1f1f2,0xff923d99,0xff943c97,0xff943c97,0xff943c97, +0xff943c97,0xff943c97,0xff943c97,0xff943c97,0xff943c97,0xff943c97,0xff943c97,0xff943c97, +0xff943c97,0xff943c97,0xff943c97,0xff943c97,0xff943c97,0xff943c97,0xff933c98,0xfe662c74, +0xfe35183c,0xfe381b40,0xff813e8e,0xff943e98,0xff943e98,0xff943e98,0xff943e98,0xff943e98, +0xff943e98,0xff943e98,0xff943e98,0xff943e98,0xfd90439b,0x07000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xffeeeef0,0xffedeeef,0xffeeeef0,0xffeeeef0,0xffeeeef0, +0xffeeeef0,0xffeeeef0,0xffeeeef0,0xffeeeef0,0xffeeeef0,0xffedeeef,0xffeeeef0,0xffd5d5d6, +0xff676868,0xff5e5e5f,0xff868687,0xffe1e1e3,0xffeeeef0,0xffeeeef0,0xffedeeef,0xffeeeef0, +0xffeeeef0,0xffeeeef0,0xffeeeef0,0xfff1f1f2,0xff943c97,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff923b95,0xff622a6f,0xfe2d1a48, +0xfe311d4b,0xff773984,0xff953d97,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xfe923f97,0x07000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xffedeeef,0xffedeeef,0xffedeeef,0xffedeeef,0xffedeeef, +0xffedeeef,0xffedeeef,0xffedeeef,0xffedeeef,0xffedeeef,0xffedeeef,0xffedeeef,0xffedeeef, +0xffd5d6d7,0xff6c6d6d,0xff5e5e5f,0xff6b6b6c,0xffc3c3c4,0xffededef,0xffedeeef,0xffedeeef, +0xffedeeef,0xffedeeef,0xffedeeef,0xffefeef0,0xff943c97,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff85378d,0xff4c2463,0xff271b4e,0xff321f54, +0xff793a88,0xff953d97,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xfe923f97,0x07000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x08000000,0xfdebeced,0xffedeeef,0xffedeeef,0xffedeeef,0xffedeeef, +0xffedeeef,0xffedeeef,0xffedeeef,0xffedeeef,0xffedeeef,0xffedeeef,0xffedeeef,0xffedeeef, +0xffedeeef,0xffdfe0e1,0xff858686,0xff5e5e5f,0xff5e5e5f,0xff878788,0xffcccccd,0xffecedee, +0xffedeeef,0xffedeeef,0xffedeeef,0xffe9e7ec,0xff953c96,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff893890,0xff622b73,0xff2d1c53,0xff251b50,0xff432762,0xff833d8f, +0xff953d96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xfd933e97,0x07000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x07000000,0xf9e6e7e8,0xffededee,0xffededef,0xffededef,0xffededee, +0xffededef,0xffededee,0xffededee,0xffededee,0xffededee,0xffededee,0xffededef,0xffededef, +0xffededee,0xffededef,0xffeaebec,0xffb6b6b7,0xff656566,0xff5e5e5e,0xff5e5e5e,0xff797979, +0xffb3b4b5,0xffd5d5d7,0xffececee,0xffe1dce4,0xff953c96,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff943c97,0xff8d3a92, +0xff793384,0xff57286c,0xff2d1c54,0xff251b51,0xff2f1f56,0xff66347b,0xff8f3f96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xfb904096,0x06000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x07000000,0xf0ddddde,0xffededee,0xffededee,0xffededee,0xffededee, +0xffededee,0xffededee,0xffededee,0xffededee,0xffededee,0xffededee,0xffededee,0xffededee, +0xffededee,0xffededee,0xffededee,0xffededee,0xffe1e1e2,0xffaaaaaa,0xff666666,0xff5e5e5e, +0xff5d5d5e,0xff59595d,0xff5a5963,0xff7e7787,0xff70367c,0xff793483,0xff7e3587,0xff813589, +0xff84368a,0xff823689,0xff7f3587,0xff793384,0xff6f2f7c,0xff602a72,0xff482363,0xff2e1d55, +0xff251b51,0xff251b51,0xff322058,0xff613277,0xff883e92,0xff953d97,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xe7843a8a,0x06000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x06000000,0xdfcccccd,0xffededee,0xffededee,0xffededee,0xffededee, +0xffededee,0xffededee,0xffecedee,0xffededee,0xffededee,0xffededee,0xffededee,0xffededee, +0xffededee,0xffededee,0xffededee,0xffecedee,0xffededee,0xffededee,0xffe6e6e6,0xffbfbfc0, +0xff929293,0xff5a5a5e,0xff504e5a,0xff433f56,0xff352e53,0xff2b2251,0xff271d50,0xff261b51, +0xff271b52,0xff261b52,0xff261b51,0xff251b51,0xff251b51,0xff251b51,0xff271c52,0xff342159, +0xff542d6e,0xff743884,0xff8d3f95,0xff953d97,0xff953c96,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xdb7c3682,0x05000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x04000000,0xd0bebebe,0xffededed,0xffececed,0xffededed,0xffececed, +0xffededed,0xffececed,0xffededed,0xffececed,0xffececed,0xffededed,0xffececed,0xffededed, +0xffececed,0xffededed,0xffececed,0xffededed,0xffececed,0xffececed,0xffededed,0xffececed, +0xffededed,0xffe7e7e8,0xffd0d0d2,0xffa095ac,0xff6e3c7f,0xff613476,0xff572f70,0xff522e6f, +0xff4e2a6a,0xff522d6e,0xff562e70,0xff5d3074,0xff69347d,0xff763885,0xff843c8e,0xff903f97, +0xff943d97,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xff953c96, +0xff953c96,0xff953c96,0xff953c96,0xff953c96,0xcf75347b,0x04000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x03000000,0xac9b9b9b,0xffededed,0xffededed,0xffededed,0xffededed, +0xffededed,0xffededed,0xffededed,0xffededed,0xffededed,0xffededed,0xffededed,0xffededed, +0xffededed,0xffededed,0xffededed,0xffededed,0xffededed,0xffededed,0xffededed,0xffededed, +0xffededed,0xffededed,0xffededed,0xffbea7c5,0xff943e97,0xff943e97,0xff943f97,0xff943f98, +0xff943f98,0xff943f98,0xff943f97,0xff943f97,0xff943e97,0xff943e97,0xff943e97,0xff943e97, +0xff943e97,0xff943e97,0xff943e97,0xff943e97,0xff943e97,0xff943e97,0xff943e97,0xff943e97, +0xff943e97,0xff943e97,0xff943e97,0xff943e97,0xff943e97,0xff943e97,0xff943e97,0xff943e97, +0xff943e97,0xff943e97,0xff943e97,0xff943e97,0xa75c2b63,0x02000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x01000000,0x7e6f6f6f,0xffededed,0xffececed,0xffededed,0xffececec, +0xffededed,0xffededed,0xffececec,0xffededed,0xffededed,0xffededed,0xffececed,0xffededed, +0xffececec,0xffededed,0xffededed,0xffececec,0xffededed,0xffededed,0xffededed,0xffececed, +0xffededed,0xffececec,0xffededed,0xff89abd8,0xff4e8acc,0xff5089cb,0xff5188cb,0xff5188cb, +0xff5188cb,0xff5188cb,0xff5188cb,0xff5188cb,0xff5188cb,0xff5188cb,0xff5188cb,0xff5188cb, +0xff5188cb,0xff5188cb,0xff5188cb,0xff5188cb,0xff5188cb,0xff5188cb,0xff5188cb,0xff5188cb, +0xff5188cb,0xff5188cb,0xff5188cb,0xff5188cb,0xff5188cb,0xff5188cb,0xff5188cb,0xff5188cb, +0xff5188cb,0xff5188cb,0xff5188cb,0xff5188cb,0x7a2b3a5a,0x01000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x382c2c2c,0xffeceded,0xffeceded,0xffededed,0xffeceded, +0xffededed,0xffeceded,0xffeceded,0xffeceded,0xffeceded,0xffeceded,0xffeceded,0xffededed, +0xffeceded,0xffededed,0xffeceded,0xffeceded,0xffeceded,0xffeceded,0xffeceded,0xffeceded, +0xffededed,0xffeceded,0xffefefef,0xff3ca1db,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff119ada,0x340a1824,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x0b000000,0xd3c0c0c0,0xffececed,0xffececed,0xffececed, +0xffececed,0xffececed,0xffececed,0xffececed,0xffececed,0xffececed,0xffececed,0xffececed, +0xffececed,0xffececed,0xffececed,0xffececed,0xffececed,0xffececed,0xffececed,0xffececed, +0xffececed,0xffececed,0xffe0e6ec,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xcf1b78ab,0x0a000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x03000000,0x62515151,0xffececec,0xffececec,0xffececec, +0xffececec,0xffececec,0xffececec,0xffececec,0xffececec,0xffececec,0xffececec,0xffececec, +0xffececec,0xffececec,0xffececec,0xffececec,0xffececec,0xffececec,0xffececec,0xffececec, +0xffececec,0xffececec,0xffc6d7e9,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff089bda,0x5c0e2f45,0x02000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x0e000000,0xc0ababac,0xffececec,0xffececec, +0xffececec,0xffececec,0xffececec,0xffececec,0xffececec,0xffececec,0xffececec,0xffececec, +0xffececec,0xffececec,0xffececec,0xffececec,0xffececec,0xffececec,0xffececec,0xffececec, +0xffececec,0xffececec,0xffa4c5e4,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xbd176c9b,0x0d000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x02000000,0x2c1c1c1c,0xe5d1d1d1,0xffebebeb, +0xffececec,0xffececec,0xffebebeb,0xffebecec,0xffebebec,0xffebebeb,0xffebebec,0xffebecec, +0xffebebeb,0xffececec,0xffececec,0xffebebeb,0xffebecec,0xffebebec,0xffebebeb,0xffebebec, +0xffebecec,0xffededed,0xff65abde,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xe41487c0,0x29050f17,0x02000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x06000000,0x3c292929,0xe6d2d2d2, +0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb, +0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb, +0xffebebeb,0xffe2e7ec,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xe51287c1,0x39061824,0x05000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x07000000,0x331f1f1f, +0xc4aeaeae,0xffececec,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb, +0xffebebeb,0xffebebeb,0xffececec,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb, +0xffebebeb,0xffbad0e6,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff029cdb,0xc31370a0, +0x3005121b,0x06000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x05000000, +0x19000000,0x735d5d5d,0xdcc7c7c7,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb, +0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb,0xffebebeb, +0xffececec,0xff83b6e0,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb, +0xff009cdb,0xff009cdb,0xff009cdb,0xff009cdb,0xff059bdb,0xdc1281b7,0x710e3a53,0x18000000, +0x04000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x02000000,0x0b000000,0x1d000000,0x553e3e3e,0x97818181,0xc4adadad,0xdec8c8c8,0xfae6e6e6, +0xffebebeb,0xffececec,0xffececec,0xffebebeb,0xffebebeb,0xffececec,0xffebebeb,0xffececec, +0xffe3e6eb,0xff059bda,0xff009cdb,0xff009cdb,0xff079bda,0xff0a9bda,0xff0a9bda,0xff0a9bda, +0xff0a9bda,0xff0a9bda,0xff0a9bda,0xff0a9bda,0xff0a9bda,0xff0a9bda,0xff0a9bda,0xff0a9bda, +0xff0a9bda,0xff0a9bda,0xff0a9bda,0xff0b9bda,0xff0c9bda,0xff0d9bda,0xff0d9ada,0xff109ada, +0xfc1497d6,0xe31286be,0xc61172a3,0x970f5376,0x570b283b,0x1c000000,0x0b000000,0x01000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x02000000,0x07000000,0x10000000,0x18000000,0x1e000000,0x22000000, +0x26040404,0x290a0a0a,0x2a0c0c0c,0x2b0e0e0e,0x2b0e0e0e,0x2b0e0e0e,0x2b0e0e0e,0x2b0e0e0e, +0x2b0c0c0d,0x2b01080c,0x2b00080c,0x2b01080c,0x2b01080c,0x2b01080c,0x2b01080c,0x2b01080c, +0x2b01080c,0x2b01080c,0x2b01080c,0x2b01080c,0x2b01080c,0x2b01080c,0x2b01080c,0x2b01080c, +0x2b01080c,0x2b01080c,0x2b01080c,0x2b02080c,0x2b02080c,0x2b02070c,0x2a01070b,0x27010507, +0x22000000,0x1e000000,0x17000000,0x0f000000,0x07000000,0x02000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x01000000,0x01000000,0x02000000, +0x03000000,0x03000000,0x04000000,0x04000000,0x04000000,0x04000000,0x04000000,0x04000000, +0x04000000,0x04000000,0x04000000,0x04000000,0x04000000,0x04000000,0x04000000,0x04000000, +0x04000000,0x04000000,0x04000000,0x04000000,0x04000000,0x04000000,0x04000000,0x04000000, +0x04000000,0x04000000,0x04000000,0x04000000,0x04000000,0x04000000,0x03000000,0x03000000, +0x02000000,0x01000000,0x01000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +}; +#endif /* MII_ICON64_DEFINE */ diff --git a/ui_gl/mii_mui.h b/ui_gl/mii_mui.h index 6d4bada..f1d2c27 100644 --- a/ui_gl/mii_mui.h +++ b/ui_gl/mii_mui.h @@ -28,7 +28,7 @@ enum mii_mui_transition_e { MII_MUI_TRANSITION_SHOW_UI, }; -#define MII_PIXEL_LAYERS 8 +#define MII_PIXEL_LAYERS 9 DECLARE_C_ARRAY(float, float_array, 16); IMPLEMENT_C_ARRAY(float_array); @@ -51,6 +51,7 @@ typedef struct mii_mui_t { mui_event_t key; c2_rect_t video_frame; // current video frame + uint32_t video_drawn_seed; float mui_alpha; bool mui_visible; void * transision_state; @@ -69,6 +70,8 @@ typedef struct mii_mui_t { mui_drawable_t hm_read; mui_drawable_t hm_write; } floppy[2]; + // this is debug only! + mui_drawable_t video_heapmap; }; mui_drawable_t v[MII_PIXEL_LAYERS]; } pixels; @@ -113,3 +116,5 @@ mii_mui_get_video_position( void mii_config_open_slots_dialog( mii_mui_t * ui); + + diff --git a/ui_gl/mii_mui_1mb.c b/ui_gl/mii_mui_1mb.c index abf51b8..5be9dc2 100644 --- a/ui_gl/mii_mui_1mb.c +++ b/ui_gl/mii_mui_1mb.c @@ -117,7 +117,7 @@ _mii_check_1mb_file( fseek(f, 512, SEEK_SET); fread(buf, 1, 4, f); fclose(f); - printf("%s %02x %02x %02x %02x\n", __func__, buf[0], buf[1], buf[2], buf[3]); +// printf("%s %02x %02x %02x %02x\n", __func__, buf[0], buf[1], buf[2], buf[3]); if (buf[0] != 0x20 || buf[1] != 0x58 || buf[2] != 0xfc || buf[3] != 0xa0) { char *msg; asprintf(&msg, "WARNING: '%s' Lacks the 'bootloader' in block #1, " @@ -142,7 +142,7 @@ _mii_1mb_stdfile_cb( switch (what) { case MUI_STDF_ACTION_SELECT: { char * path = mui_stdfile_get_selected_path(w); - printf("%s select %s\n", __func__, path); + // printf("%s select %s\n", __func__, path); if (_mii_check_1mb_file(w->ui, path) < 0) { mui_control_set_title(m->fname, "Click \"Select\" to pick a file"); mui_control_set_state(m->fname, MUI_CONTROL_STATE_DISABLED); @@ -163,7 +163,7 @@ _mii_1mb_stdfile_cb( mui_window_dispose(w); } break; case MUI_STDF_ACTION_CANCEL: - printf("%s cancel\n", __func__); + // printf("%s cancel\n", __func__); mui_window_dispose(w); break; } @@ -177,17 +177,17 @@ _mii_1mb_action_cb( uint32_t what, void * param) // not used { - printf("%s %4.4s\n", __func__, (char*)&what); +// printf("%s %4.4s\n", __func__, (char*)&what); mii_mui_1mb_t * m = cb_param; uint32_t uid = mui_control_get_uid(c); switch (what) { case MUI_CONTROL_ACTION_SELECT: - printf("%s control %4.4s\n", __func__, (char*)&uid); + // printf("%s control %4.4s\n", __func__, (char*)&uid); switch (uid) { case MII_1MB_SAVE: { // save the config - printf("%s save\n", __func__); + // printf("%s save\n", __func__); if (m->dst) *m->dst = m->config; mui_window_action(&m->win, MII_MUI_1MB_SAVE, m->dst); @@ -195,12 +195,12 @@ _mii_1mb_action_cb( } break; case MII_1MB_CANCEL: { // cancel the config - printf("%s cancel\n", __func__); + // printf("%s cancel\n", __func__); mui_window_dispose(&m->win); } break; case MII_1MB_SELECT: { // select a file - printf("%s select\n", __func__); + // printf("%s select\n", __func__); mui_window_t * w = mui_stdfile_get(m->win.ui, C2_PT(0, 0), "Select a file (Exactly 1MB in size)", diff --git a/ui_gl/mii_mui_2dsk.c b/ui_gl/mii_mui_2dsk.c index b8439ea..581c934 100644 --- a/ui_gl/mii_mui_2dsk.c +++ b/ui_gl/mii_mui_2dsk.c @@ -14,6 +14,7 @@ #include #include "mui.h" +#include "mii_mui_utils.h" #include "mii_mui_settings.h" enum { @@ -31,10 +32,7 @@ typedef struct mii_mui_2dsk_t { uint8_t drive_kind; mui_control_t * load; uint32_t selecting; - struct { - mui_control_t *icon, *fname, *button, *wp, *warning; - } drive[2]; - + mii_mui_file_select_t drive[2]; mii_2dsk_conf_t * dst; mii_2dsk_conf_t config; } mii_mui_2dsk_t; @@ -188,11 +186,11 @@ mii_mui_2dsk_load_conf( mui_control_set_title(m->drive[i].button, "Eject"); if (check.warning) { mui_control_set_title(m->drive[i].warning, check.warning); - mui_control_set_state(m->drive[i].wp, MUI_CONTROL_STATE_DISABLED); + mui_control_set_state(m->drive[i].checkbox, MUI_CONTROL_STATE_DISABLED); free(check.warning); } else { mui_control_set_title(m->drive[i].warning, ""); - mui_control_set_state(m->drive[i].wp, MUI_CONTROL_STATE_NORMAL); + mui_control_set_state(m->drive[i].checkbox, MUI_CONTROL_STATE_NORMAL); } } else { config->drive[i].ro_file = config->drive[i].ro_format = 0; @@ -200,10 +198,10 @@ mii_mui_2dsk_load_conf( mui_control_set_title(m->drive[i].fname, "Click \"Select\" to pick a file"); mui_control_set_state(m->drive[i].icon, MUI_CONTROL_STATE_DISABLED); mui_control_set_title(m->drive[i].button, "Select…"); - mui_control_set_state(m->drive[i].wp, MUI_CONTROL_STATE_NORMAL); + mui_control_set_state(m->drive[i].checkbox, MUI_CONTROL_STATE_NORMAL); mui_control_set_title(m->drive[i].warning, ""); } - mui_control_set_value(m->drive[i].wp, + mui_control_set_value(m->drive[i].checkbox, (config->drive[i].wp || config->drive[i].ro_file || config->drive[i].ro_format) ? 1 : 0); } @@ -225,7 +223,7 @@ _mii_2dsk_stdfile_cb( case MUI_STDF_ACTION_SELECT: { int idx = m->selecting == MII_2DSK_SELECT1 ? 0 : 1; char * path = mui_stdfile_get_selected_path(w); - printf("%s select %s\n", __func__, path); + // printf("%s select %s\n", __func__, path); strncpy(m->config.drive[idx].disk, path, sizeof(m->config.drive[idx].disk)-1); free(path); @@ -233,7 +231,7 @@ _mii_2dsk_stdfile_cb( mii_mui_2dsk_load_conf(m, &m->config); } break; case MUI_STDF_ACTION_CANCEL: - printf("%s cancel\n", __func__); + // printf("%s cancel\n", __func__); mui_window_dispose(w); break; } @@ -247,7 +245,7 @@ _mii_2dsk_action_cb( uint32_t what, void * param) // not used { - printf("%s %4.4s\n", __func__, (char*)&what); +// printf("%s %4.4s\n", __func__, (char*)&what); mii_mui_2dsk_t * m = cb_param; uint32_t uid = mui_control_get_uid(c); @@ -257,7 +255,7 @@ _mii_2dsk_action_cb( switch (uid) { case MII_2DSK_SAVE: { // save the config - printf("%s save\n", __func__); + // printf("%s save\n", __func__); if (m->dst) *m->dst = m->config; mui_window_action(&m->win, @@ -269,7 +267,7 @@ _mii_2dsk_action_cb( } break; case MII_2DSK_CANCEL: { // cancel the config - printf("%s cancel\n", __func__); + // printf("%s cancel\n", __func__); mui_window_dispose(&m->win); } break; case MII_2DSK_SELECT1: @@ -279,11 +277,11 @@ _mii_2dsk_action_cb( m->selecting = uid; // remember which drive we're selecting int idx = uid == MII_2DSK_SELECT1 ? 0 : 1; if (config->drive[idx].disk[0]) { - printf("%s eject %d\n", __func__, idx); + // printf("%s eject %d\n", __func__, idx); config->drive[idx].disk[0] = 0; mii_mui_2dsk_load_conf(m, config); } else { - printf("%s select %d\n", __func__, idx); + // printf("%s select %d\n", __func__, idx); mui_window_t * w = mui_stdfile_get(m->win.ui, C2_PT(0, 0), m->drive_kind == MII_2DSK_SMARTPORT ? @@ -355,59 +353,31 @@ mii_mui_load_2dsk( c->key_equ = MUI_KEY_EQU(0, 27); c2_rect_set(&cf, margin, (margin / 2), - c2_rect_width(&w->frame) - margin - 120, - (margin/2) + base_size); + c2_rect_width(&w->frame) - margin, + (margin / 2) + base_size); c2_rect_t cp = cf; cp.l -= margin * 0.2; cp.b += base_size * 1.3; for (int i = 0; i < 2; i++) { - char buf[32]; - snprintf(buf, sizeof(buf), "Drive %d:", i+1); - c = mui_groupbox_new(w, cp, buf, MUI_CONTROL_TEXTBOX_FRAME); - - float icons_size = mui_font_find(ui, "icon_small")->size; - c2_rect_bottom_of(&cf, cp.t, base_size); - c2_rect_right_of(&cf, cp.l, margin * 0.5); - cf.b = cf.t + icons_size; - cf.r = cf.l + icons_size; - m->drive[i].icon = c = mui_textbox_new(w, cf, - MUI_ICON_FILE, "icon_small", - MUI_TEXT_ALIGN_MIDDLE | MUI_TEXT_ALIGN_CENTER | 0); - c->state = MUI_CONTROL_STATE_DISABLED; - cf.l = cf.r; - cf.r = cp.r - margin * 0.5; - m->drive[i].fname = c = mui_textbox_new(w, cf, - "Click \"Select\" to pick a file", NULL, 0); - c->state = MUI_CONTROL_STATE_DISABLED; - - c2_rect_right_of(&cf, cp.r, margin * 0.8); - cf.r = c2_rect_width(&w->frame) - margin * 1.2; - c2_rect_inset(&cf, -4,-4); - m->drive[i].button = c = mui_button_new(w, - cf, MUI_BUTTON_STYLE_NORMAL, - "Select…" , i == 0 ? - MII_2DSK_SELECT1 : MII_2DSK_SELECT2); - c->key_equ = MUI_KEY_EQU(MUI_MODIFIER_ALT, '1' + i); - - c2_rect_bottom_of(&cf, cp.b, margin * 0.4); - cf.l = cp.l + (margin * 0.7); - cf.r = cf.l + 200; - cf.b = cf.t + base_size; - m->drive[i].wp = c = mui_button_new(w, - cf, MUI_BUTTON_STYLE_CHECKBOX, - "Write Protect", - i == 0 ? MII_2DSK_WP1 : MII_2DSK_WP2); - // Smartport don't support write protect right now + mii_mui_file_select_t * fs = &m->drive[i]; + mii_mui_fileselect_widget(fs, w, &cp, + i == 0 ? "Drive 1:" : "Drive 2:", + "Select…", + "Write Protect"); + m->drive[i].button->uid = i == 0 ? MII_2DSK_SELECT1 : MII_2DSK_SELECT2; + m->drive[i].button->key_equ = MUI_KEY_EQU(MUI_MODIFIER_ALT, '1' + i); if (drive_kind == MII_2DSK_SMARTPORT) - c->state = MUI_CONTROL_STATE_DISABLED; - c2_rect_right_of(&cf, cf.r, margin * 0.5); - cf.r = c2_rect_width(&w->frame) - margin * 1.2; - m->drive[i].warning = c = mui_textbox_new(w, cf, - "", NULL, - MUI_TEXT_ALIGN_MIDDLE|MUI_TEXT_ALIGN_RIGHT); - c2_rect_bottom_of(&cp, cp.b + (base_size * 2), margin * 0.2); + m->drive[i].checkbox->state = MUI_CONTROL_STATE_DISABLED; + else { + mui_control_set_title(m->drive[i].icon, MUI_ICON_FLOPPY5); + } + m->drive[i].checkbox->uid = i == 0 ? MII_2DSK_WP1 : MII_2DSK_WP2; + + c2_rect_bottom_of(&cp, cp.b, margin); } - c2_rect_top_of(&cp, cp.t, margin * 3.5); + cp = m->drive[1].box->frame; + cp.b = cp.t + 2; + c2_rect_top_of(&cp, m->drive[1].box->frame.t, margin * 0.4); cp.l = margin * 4; cp.r = c2_rect_width(&w->frame) - margin * 4; c = mui_separator_new(w, cp); diff --git a/ui_gl/mii_mui_about.c b/ui_gl/mii_mui_about.c index 47ac979..12e7185 100644 --- a/ui_gl/mii_mui_about.c +++ b/ui_gl/mii_mui_about.c @@ -12,7 +12,7 @@ #include #include "mui.h" -#include "mii-icon-64.h" +#include "mii_icon64.h" extern const unsigned char mui_geneva_font_data[]; extern const unsigned int mui_geneva_font_size; @@ -60,7 +60,7 @@ _mii_about_button_cb( uint32_t what, void * param) // not used { - printf("%s %4.4s\n", __func__, (char*)&what); +// printf("%s %4.4s\n", __func__, (char*)&what); mii_mui_about_t * m = cb_param; uint32_t uid = mui_control_get_uid(c); @@ -84,7 +84,7 @@ _mii_about_action_cb( uint32_t what, void * param) // not used { - printf("%s %4.4s\n", __func__, (char*)&what); +// printf("%s %4.4s\n", __func__, (char*)&what); mii_mui_about_t * m = cb_param; switch (what) { @@ -134,7 +134,7 @@ mii_mui_about( mui_window_select(w); return w; } - printf("%s version: '%s'\n", __func__, MII_VERSION); +// printf("%s version: '%s'\n", __func__, MII_VERSION); c2_pt_t where = {}; c2_rect_t wpos = C2_RECT_WH(where.x, where.y, 500, 255); if (where.x == 0 && where.y == 0) diff --git a/ui_gl/mii_mui_apple_logo.h b/ui_gl/mii_mui_apple_logo.h index 8988e27..0635d72 100644 --- a/ui_gl/mii_mui_apple_logo.h +++ b/ui_gl/mii_mui_apple_logo.h @@ -1,8 +1,12 @@ -// Autogenerated from docs/Apple_logo_rainbow_version2_28x28.png with utils/png2raw.c +// Autogenerated with: +// libmui/utils/png2raw.c -n mii_mui_apple_logo -o ui_gl/mii_mui_apple_logo.h docs/Apple_logo_rainbow_version2_28x28.png // Image with a W:28px, H:28px and 4 channels // Converted to ARGB8888 and premultiplied alpha #pragma once -static const uint32_t mii_color_apple_pixels[] = { +#define MII_MUI_APPLE_LOGO_SIZE 786 +extern const uint32_t mii_mui_apple_logo[MII_MUI_APPLE_LOGO_SIZE]; +#ifdef MII_MUI_APPLE_LOGO_DEFINE +const uint32_t mii_mui_apple_logo[MII_MUI_APPLE_LOGO_SIZE] = { 28, 28, // width, height 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, @@ -103,3 +107,4 @@ static const uint32_t mii_color_apple_pixels[] = { 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, }; +#endif /* MII_MUI_APPLE_LOGO_DEFINE */ diff --git a/ui_gl/mii_mui_gl.c b/ui_gl/mii_mui_gl.c index a150a9c..e799af4 100644 --- a/ui_gl/mii_mui_gl.c +++ b/ui_gl/mii_mui_gl.c @@ -10,33 +10,26 @@ * This contains OpenGL code, no x11 or GLx allowed in here, this is to be * used by a native windowing system, or a portable one like SDL2 or GLFW */ - #include +#include #include #include -#ifdef __SSE2__ -#include // SSE2 intrinsics +#if defined(__AVX2__) +#include +#endif +#if defined(__SSE2__) +#include #endif - #include "mii_mui_gl.h" #include "mii_floppy.h" - -typedef struct c2_rect_f { - float l,t,r,b; -} c2_rect_f; - #define MII_GL_FLOPPY_SEGMENT_COUNT 32 - #define MII_GL_FLOPPY_DISC_RADIUS_IN 1.8 #define MII_GL_FLOPPY_DISC_RADIUS_OUT 10 #define MII_GL_FLOPPY_FLUX_RADIUS_IN 2.0 #define MII_GL_FLOPPY_FLUX_RADIUS_OUT 9.8 - -#include - static void mii_gl_make_disc( float_array_t * pos, @@ -159,10 +152,10 @@ mii_mui_gl_prepare_textures( // disable the repeat of textures glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - dr->texture.kind = GL_RGBA; + dr->texture.kind = GL_RGBA;// note RGBA here, it's quicker!! glTexImage2D(GL_TEXTURE_2D, 0, 4, MII_VRAM_WIDTH, - MII_VRAM_HEIGHT, 0, dr->texture.kind, // note RGBA here, it's quicker!! + MII_VRAM_HEIGHT, 0, dr->texture.kind, GL_UNSIGNED_BYTE, // GL_UNSIGNED_INT_8_8_8_8_REV mii->video.pixels); @@ -173,7 +166,7 @@ mii_mui_gl_prepare_textures( glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - + // here we use GL_BGRA, as the pixman/libmui uses that. dr->texture.kind = GL_BGRA; glTexImage2D(GL_TEXTURE_2D, 0, 4, dr->pix.row_bytes / 4, // already power of two. @@ -181,6 +174,14 @@ mii_mui_gl_prepare_textures( GL_UNSIGNED_INT_8_8_8_8_REV, dr->pix.pixels); +#if MII_VIDEO_DEBUG_HEAPMAP + dr = &ui->pixels.video_heapmap; + unsigned int tex = dr->texture.id; + mui_drawable_init(dr, C2_PT(192, 1), 8, mii->video.video_hmap, 192); + dr->texture.id = tex; + _prep_grayscale_texture(dr); +#endif + // ask MII for floppies -- we'll only use the first two (TODO?) mii_floppy_t * floppy[2] = {}; for (int i = 0; i < 7; i++) { if (mii_slot_command(mii, i, MII_SLOT_D2_GET_FLOPPY, floppy) == 0) @@ -199,8 +200,15 @@ mii_mui_gl_prepare_textures( 8, floppy[fi]->track_data, MII_FLOPPY_DEFAULT_TRACK_SIZE); dr->texture.id = tex; _prep_grayscale_texture(dr); - if (!f->heat) + if (!f->heat) { +#if defined(__AVX2__) + posix_memalign((void**)&f->heat, 32, sizeof(*f->heat)); +#elif defined(__SSE2__) + posix_memalign((void**)&f->heat, 16, sizeof(*f->heat)); +#else f->heat = calloc(1, sizeof(*f->heat)); +#endif + } dr = &ui->pixels.floppy[fi].hm_read; tex = dr->texture.id; mui_drawable_init(dr, @@ -233,26 +241,55 @@ mii_mui_gl_prepare_textures( } } +typedef uint8_t u8_v __attribute__((vector_size(16))); -static void -_mii_decay_heatmap_one( - mii_track_heatmap_t *hm) +/* Heatmaps 'decay' by a gradient each frame until fully transparent */ +static inline int +_mii_decay_buffer( + uint8_t *buffer, + int size) { uint32_t count = 0; - const int decay = 4; -#ifdef __SSE2__ - const int size = (MII_FLOPPY_TRACK_COUNT * MII_FLOPPY_HM_TRACK_SIZE) / 16; - __m128i * hmw = (__m128i*)&hm->map[0]; + const uint8_t decay = 4; // totally arbitrary +#if defined(__AVX2__) + size /= 32; + __m256i * hmw = (__m256i*)buffer; + const __m256i s = _mm256_set1_epi8(decay); + for (int i = 0; i < size; i++) { + __m256i b = _mm256_load_si256(hmw + i); + __m256i c = _mm256_subs_epu8(b, s); + hmw[i] = c; + // add 1 to count if c is non zero + count += !!_mm256_movemask_epi8( + _mm256_cmpeq_epi8(c, _mm256_setzero_si256())); + } +#elif defined(__SSE2__) + size /= 16; + __m128i * hmw = (__m128i*)buffer; const __m128i s = _mm_set1_epi8(decay); for (int i = 0; i < size; i++) { __m128i b = _mm_load_si128(hmw + i); __m128i c = _mm_subs_epu8(b, s); hmw[i] = c; - count += _mm_movemask_epi8(_mm_cmpgt_epi8(c, _mm_setzero_si128())); + // add 1 to count if c is non zero + count += !!_mm_movemask_epi8( + _mm_cmpeq_epi8(c, _mm_setzero_si128())); } #else - const int size = MII_FLOPPY_TRACK_COUNT * MII_FLOPPY_HM_TRACK_SIZE; - uint8_t * hmb = (uint8_t*)&hm->map[0]; +#if 1 // generic vector code, NEON or WASM? + size /= sizeof(u8_v); + u8_v * hmb = (u8_v*)buffer; + for (int i = 0; i < size; i++) { + u8_v b = hmb[i]; + u8_v c; + for (uint j = 0; j < sizeof(c); j++) + c[j] = b[j] > decay ? b[j] - decay : 0; + hmb[i] = c; + uint64_t * w = (uint64_t*)&c; + count += w[0] || w[1]; + } +#else + uint8_t * hmb = buffer; for (int i = 0; i < size; i++) { uint8_t b = hmb[i]; b = b > decay ? b - decay : 0; @@ -260,6 +297,16 @@ _mii_decay_heatmap_one( count += !!b; } #endif +#endif + return count; +} + +static void +_mii_decay_heatmap_one( + mii_track_heatmap_t *hm) +{ + const int size = MII_FLOPPY_TRACK_COUNT * MII_FLOPPY_HM_TRACK_SIZE; + uint32_t count = _mii_decay_buffer((uint8_t*)&hm->map[0], size); hm->cleared = count == 0; } @@ -287,6 +334,8 @@ mii_mui_gl_run( mui_run(mui); bool draw = false; + if (ui->transition.state != MII_MUI_TRANSITION_NONE) + draw = true; if (pixman_region32_not_empty(&mui->inval)) { draw = true; mui_drawable_t * dr = &ui->pixels.mui; @@ -314,11 +363,11 @@ mii_mui_gl_run( glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); pixman_region32_clear(&mui->redraw); } - uint32_t current_frame = mii->video.frame_count; - if (current_frame != mii->video.frame_drawn) { + uint32_t current_seed = mii->video.frame_seed; + if (current_seed != ui->video_drawn_seed) { // miigl_counter_tick(&ui->videoc, miigl_get_time()); draw = true; - mii->video.frame_drawn = current_frame; + ui->video_drawn_seed = current_seed; // update the whole texture mui_drawable_t * dr = &ui->pixels.mii; glBindTexture(GL_TEXTURE_2D, dr->texture.id); @@ -328,16 +377,30 @@ mii_mui_gl_run( GL_UNSIGNED_INT_8_8_8_8_REV, mii->video.pixels); } +#if MII_VIDEO_DEBUG_HEAPMAP + if (ui->mii.state == MII_RUNNING) { + int cnt = _mii_decay_buffer(ui->mii.video.video_hmap, 192); + if (cnt) { + draw = true; + mui_drawable_t * dr = &ui->pixels.video_heapmap; + glBindTexture(GL_TEXTURE_2D, dr->texture.id); + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, + dr->pix.row_bytes, dr->pix.size.y, + dr->texture.kind, GL_UNSIGNED_BYTE, + dr->pix.pixels); + } + } +#endif for (int fi = 0; fi < 2; fi++) { if (!ui->floppy[fi].floppy) continue; mui_drawable_t * dr = NULL; mii_floppy_t * f = ui->floppy[fi].floppy; + dr = &ui->pixels.floppy[fi].bits; if (ui->floppy[fi].seed_load != f->seed_dirty) { draw = true; ui->floppy[fi].seed_load = f->seed_dirty; // printf("Floppy %d: Reloading texture\n", fi); - dr = &ui->pixels.floppy[fi].bits; int bc = (f->tracks[0].bit_count + 7) / 8; int max = MII_FLOPPY_DEFAULT_TRACK_SIZE; ui->floppy[fi].max_width = (double)bc / (double)max; @@ -349,6 +412,9 @@ mii_mui_gl_run( // dont recalculate the vertices, just the texture coordinates mii_gl_make_floppy(&ui->floppy[fi].vtx, ui->floppy[fi].max_width, false, true); + } else if (dr->texture.opacity > 0.0f || + ui->floppy[fi].floppy->motor) {// still animating + draw = true; } int rm = f->heat->read.tex != f->heat->read.seed || !f->heat->read.cleared; @@ -410,143 +476,163 @@ mii_mui_gl_render( glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); - // This (was) the recommended way to handle pixel alignment in glOrtho - // mode, but this seems to have changed -- now it looks like Linear filtering -// glTranslatef(0.375f, 0.375f, 0.0f); - { - /* draw mii texture */ - glColor3f(1.0f, 1.0f, 1.0f); - mui_drawable_t * dr = &ui->pixels.mii; + + /* draw mii texture */ + glColor3f(1.0f, 1.0f, 1.0f); + mui_drawable_t * dr = &ui->pixels.mii; + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, dr->texture.id); + glBegin(GL_QUADS); + c2_rect_t r = ui->video_frame; + glTexCoord2f(0, 0); + glVertex2f(r.l, r.t); + glTexCoord2f(MII_VIDEO_WIDTH / (double)MII_VRAM_WIDTH, 0); + glVertex2f(r.r, r.t); + glTexCoord2f(MII_VIDEO_WIDTH / (double)MII_VRAM_WIDTH, + MII_VIDEO_HEIGHT / (double)MII_VRAM_HEIGHT); + glVertex2f(r.r, r.b); + glTexCoord2f(0, + MII_VIDEO_HEIGHT / (double)MII_VRAM_HEIGHT); + glVertex2f(r.l, r.b); + glEnd(); + +#if MII_VIDEO_DEBUG_HEAPMAP + /* draw video heatmap */ + dr = &ui->pixels.video_heapmap; + if (dr->pix.pixels) { + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_COLOR); + glPushMatrix(); + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, dr->texture.id); + glColor4f(1.0f, 0.0f, 0.0f, 1.0f); + // draw a vertical quad on the left side of the video to show + // what's being updated + glBegin(GL_QUADS); + c2_rect_t r = ui->video_frame; + glTexCoord2f(0, 1); + glVertex2f(r.l - 10, r.t); + glTexCoord2f(0, 0); + glVertex2f(r.l + 0, r.t); + glTexCoord2f(1, 0); + glVertex2f(r.l + 0, r.b); + glTexCoord2f(1, 1); + glVertex2f(r.l - 10, r.b); + glEnd(); + glPopMatrix(); + } +#endif + /* draw floppies. First the disk, then the texture, then the heatmap */ + for (int i = 0; i < 2; i++) { + dr = &ui->pixels.floppy[i].bits; + mii_floppy_t *f = ui->floppy[i].floppy; + if (!f || !dr->pix.pixels) + continue; + if (ui->mii.state == MII_RUNNING) { + if (f->motor) { + if (dr->texture.opacity < 1.0f) + dr->texture.opacity += 0.10f; + if (dr->texture.opacity > 1.0f) + dr->texture.opacity = 1.0f; + } else { + if (dr->texture.opacity > 0.0f) + dr->texture.opacity -= 0.01f; + if (dr->texture.opacity < 0.0f) + dr->texture.opacity = 0.0f; + } + } + float main_opacity = dr->texture.opacity; + if (main_opacity <= 0.0f) + continue; + const float angle_offset = 60; // head angle offset on display + { + glPushMatrix(); + // make floppy slide in/out with opacity + glTranslatef(-10 - (100.0 * ( 1.0f - main_opacity) ), + 200 + (i * 350), 0); + glScalef(15, 15, 1); + { + glColor4f(0.0f, 0.0f, 0.0f, main_opacity); + glDisable(GL_TEXTURE_2D); + glEnableClientState(GL_VERTEX_ARRAY); + glVertexPointer(2, GL_FLOAT, 0, ui->floppy_base.e); + int element_count = ui->floppy_base.count / 2; + glDrawArrays(GL_TRIANGLES, 0, element_count); + } + int track_id = f->track_id[f->qtrack]; + double bc = (double)f->bit_position / + (double)f->tracks[track_id].bit_count; + bc = 360 - (bc * 360.0); + bc += angle_offset; + if (bc >= 360.0) + bc -= 360.0; + glRotatef(bc, 0, 0, 1); + dr = &ui->pixels.floppy[i].bits; + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, dr->texture.id); +// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); +// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glColor4f(1.0f, 1.0f, 1.0f, main_opacity); + glEnableClientState(GL_VERTEX_ARRAY); + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + glVertexPointer(2, GL_FLOAT, 0, ui->floppy[i].vtx.pos.e); + glTexCoordPointer(2, GL_FLOAT, 0, ui->floppy[i].vtx.tex.e); + int element_count = ui->floppy[i].vtx.pos.count / 2; + glDrawArrays(ui->floppy[i].vtx.kind, 0, element_count); + // draw heatmap and head with full opacity + // otherwise we get wierd artifacts + if (f->heat) { + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_COLOR); + dr = &ui->pixels.floppy[i].hm_read; + glColor4f(0.0f, 1.0f, 0.0f, 1.0); + glBindTexture(GL_TEXTURE_2D, dr->texture.id); + glDrawArrays(ui->floppy[i].vtx.kind, 0, element_count); + dr = &ui->pixels.floppy[i].hm_write; + glColor4f(1.0f, 0.0f, 0.0f, 1.0); + glBindTexture(GL_TEXTURE_2D, dr->texture.id); + glDrawArrays(ui->floppy[i].vtx.kind, 0, element_count); + } + glDisableClientState(GL_VERTEX_ARRAY); + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + if (main_opacity > 0.8f) { + // Draw head small rectangle + dr = &ui->pixels.floppy[i].bits; + track_id = f->qtrack / 4; + glDisable(GL_TEXTURE_2D); + glRotatef(-bc + angle_offset, 0, 0, 1); + glTranslatef(MII_GL_FLOPPY_FLUX_RADIUS_IN + + (((35 - track_id) / 35.0) * + (MII_GL_FLOPPY_FLUX_RADIUS_OUT- + MII_GL_FLOPPY_FLUX_RADIUS_IN)), 0, 0); + const float r = 0.3; + glColor4f(1.0f, 0.0f, 0.0f, main_opacity); + glBegin(GL_QUADS); + glVertex2f(-r, -r); glVertex2f(-r, r); + glVertex2f(r, r); glVertex2f(r, -r); + glEnd(); + } + glPopMatrix(); + } + } + /* draw mui texture */ + if (ui->mui_alpha > 0.0f) { + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glColor4f(1.0f, 1.0f, 1.0f, ui->mui_alpha); + dr = &ui->pixels.mui; glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, dr->texture.id); glBegin(GL_QUADS); - c2_rect_t r = ui->video_frame; - glTexCoord2f(0, 0); - glVertex2f(r.l, r.t); - glTexCoord2f(MII_VIDEO_WIDTH / (double)MII_VRAM_WIDTH, 0); - glVertex2f(r.r, r.t); - glTexCoord2f(MII_VIDEO_WIDTH / (double)MII_VRAM_WIDTH, - MII_VIDEO_HEIGHT / (double)MII_VRAM_HEIGHT); - glVertex2f(r.r, r.b); + glTexCoord2f(0, 0); glVertex2f(0, 0); + glTexCoord2f( + ui->window_size.x / (double)(dr->pix.row_bytes / 4), 0); + glVertex2f(ui->window_size.x, 0); + glTexCoord2f(ui->window_size.x / (double)(dr->pix.row_bytes / 4), + ui->window_size.y / (double)(dr->texture.size.y)); + glVertex2f(ui->window_size.x, ui->window_size.y); glTexCoord2f(0, - MII_VIDEO_HEIGHT / (double)MII_VRAM_HEIGHT); - glVertex2f(r.l, r.b); + ui->window_size.y / (double)(dr->texture.size.y)); + glVertex2f(0, ui->window_size.y); glEnd(); - - /* draw floppy textures, floppy 0 is left of the screen, - floppy 1 is right */ - for (int i = 0; i < 2; i++) { - dr = &ui->pixels.floppy[i].bits; - mii_floppy_t *f = ui->floppy[i].floppy; - if (!f || !dr->pix.pixels) - continue; - if (ui->mii.state == MII_RUNNING) { - if (f->motor) { - if (dr->texture.opacity < 1.0f) - dr->texture.opacity += 0.10f; - if (dr->texture.opacity > 1.0f) - dr->texture.opacity = 1.0f; - } else { - if (dr->texture.opacity > 0.0f) - dr->texture.opacity -= 0.01f; - if (dr->texture.opacity < 0.0f) - dr->texture.opacity = 0.0f; - } - } - float main_opacity = dr->texture.opacity; - if (main_opacity <= 0.0f) - continue; - const float angle_offset = 60; // head angle offset on display - if (1) { - glPushMatrix(); - // make floppy slide in/out with opacity - glTranslatef(-10 - (100.0 * ( 1.0f - main_opacity) ), - 200 + (i * 350), 0); - glScalef(15, 15, 1); - { - glColor4f(0.0f, 0.0f, 0.0f, main_opacity); - glDisable(GL_TEXTURE_2D); - glEnableClientState(GL_VERTEX_ARRAY); - glVertexPointer(2, GL_FLOAT, 0, ui->floppy_base.e); - int element_count = ui->floppy_base.count / 2; - glDrawArrays(GL_TRIANGLES, 0, element_count); - } - int track_id = f->track_id[f->qtrack]; - double bc = (double)f->bit_position / - (double)f->tracks[track_id].bit_count; - bc = 360 - (bc * 360.0); - bc += angle_offset; - if (bc >= 360.0) - bc -= 360.0; - glRotatef(bc, 0, 0, 1); - dr = &ui->pixels.floppy[i].bits; - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, dr->texture.id); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glColor4f(1.0f, 1.0f, 1.0f, main_opacity); - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - glVertexPointer(2, GL_FLOAT, 0, ui->floppy[i].vtx.pos.e); - glTexCoordPointer(2, GL_FLOAT, 0, ui->floppy[i].vtx.tex.e); - int element_count = ui->floppy[i].vtx.pos.count / 2; - glDrawArrays(ui->floppy[i].vtx.kind, 0, element_count); - // draw heatmap and head with full opacity - // otherwise we get wierd artifacts - if (f->heat) { - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_COLOR); - dr = &ui->pixels.floppy[i].hm_read; - glColor4f(0.0f, 1.0f, 0.0f, 1.0); - glBindTexture(GL_TEXTURE_2D, dr->texture.id); - glDrawArrays(ui->floppy[i].vtx.kind, 0, element_count); - dr = &ui->pixels.floppy[i].hm_write; - glColor4f(1.0f, 0.0f, 0.0f, 1.0); - glBindTexture(GL_TEXTURE_2D, dr->texture.id); - glDrawArrays(ui->floppy[i].vtx.kind, 0, element_count); - } - glDisableClientState(GL_VERTEX_ARRAY); - glDisableClientState(GL_TEXTURE_COORD_ARRAY); - if (main_opacity > 0.8f) { - // Draw head small rectangle - dr = &ui->pixels.floppy[i].bits; - track_id = f->qtrack / 4; - glDisable(GL_TEXTURE_2D); - glRotatef(-bc + angle_offset, 0, 0, 1); - glTranslatef(MII_GL_FLOPPY_FLUX_RADIUS_IN + - (((35 - track_id) / 35.0) * - (MII_GL_FLOPPY_FLUX_RADIUS_OUT- - MII_GL_FLOPPY_FLUX_RADIUS_IN)), 0, 0); - const float r = 0.3; - glColor4f(1.0f, 0.0f, 0.0f, main_opacity); - glBegin(GL_QUADS); - glVertex2f(-r, -r); glVertex2f(-r, r); - glVertex2f(r, r); glVertex2f(r, -r); - glEnd(); - } - glPopMatrix(); - } - } - /* draw mui texture */ - if (ui->mui_alpha > 0.0f) { - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glColor4f(1.0f, 1.0f, 1.0f, ui->mui_alpha); - dr = &ui->pixels.mui; - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, dr->texture.id); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2f(0, 0); - glTexCoord2f( - ui->window_size.x / (double)(dr->pix.row_bytes / 4), 0); - glVertex2f(ui->window_size.x, 0); - glTexCoord2f(ui->window_size.x / (double)(dr->pix.row_bytes / 4), - ui->window_size.y / (double)(dr->texture.size.y)); - glVertex2f(ui->window_size.x, ui->window_size.y); - glTexCoord2f(0, - ui->window_size.y / (double)(dr->texture.size.y)); - glVertex2f(0, ui->window_size.y); - glEnd(); - } } glDisable(GL_CULL_FACE); glDisable(GL_DEPTH_TEST); diff --git a/ui_gl/mii_mui_loadbin.c b/ui_gl/mii_mui_loadbin.c index 16cc9ae..a8b69e3 100644 --- a/ui_gl/mii_mui_loadbin.c +++ b/ui_gl/mii_mui_loadbin.c @@ -12,18 +12,24 @@ #include "mui.h" #include "mii_mui_settings.h" +#include "mii_mui_utils.h" enum { MII_LBIN_WINDOW_ID = FCC('l','b','i','n'), MII_LBIN_SAVE = FCC('s','a','v','e'), MII_LBIN_CANCEL = FCC('c','a','n','c'), MII_LBIN_SELECT = FCC('s','e','l','e'), -}; + MII_LBIN_AUTO_RELOAD = FCC('a','u','t','o'), + MII_LBIN_ADDR_0300 = FCC('a','d','d','0'), + MII_LBIN_ADDR_0800 = FCC('a','d','d','1'), + MII_LBIN_ADDR_2000 = FCC('a','d','d','2'), +}; typedef struct mii_mui_loadbin_t { mui_window_t win; - mui_control_t * load, *icon, *fname; + mii_mui_file_select_t file; + mui_control_t * load; mii_loadbin_conf_t * dst, config; } mii_mui_loadbin_t; @@ -39,11 +45,12 @@ _mii_loadbin_stdfile_cb( case MUI_STDF_ACTION_SELECT: { char * path = mui_stdfile_get_selected_path(w); printf("%s select %s\n", __func__, path); - mui_control_set_state(m->fname, MUI_CONTROL_STATE_NORMAL); + mui_control_set_state(m->file.fname, MUI_CONTROL_STATE_NORMAL); + strncpy(m->config.path, path, sizeof(m->config.path)-1); char *dup = strdup(path); - mui_control_set_title(m->fname, basename(dup)); + mui_control_set_title(m->file.fname, basename(dup)); free(dup); - mui_control_set_state(m->icon, MUI_CONTROL_STATE_NORMAL); + mui_control_set_state(m->file.icon, MUI_CONTROL_STATE_NORMAL); mui_control_set_state(m->load, MUI_CONTROL_STATE_NORMAL); mui_window_dispose(w); } break; @@ -94,6 +101,19 @@ _mii_loadbin_action_cb( MUI_STDF_FLAG_REGEXP); mui_window_set_action(w, _mii_loadbin_stdfile_cb, m); } break; + case MII_LBIN_AUTO_RELOAD: { + // toggle auto reload + m->config.auto_reload = !!mui_control_get_value(c); + printf("%s auto reload %d\n", __func__, m->config.auto_reload); + } break; + case MII_LBIN_ADDR_0300: + case MII_LBIN_ADDR_0800: + case MII_LBIN_ADDR_2000: { + int idx = FCC_INDEX(uid); + static const uint16_t addrs[] = { 0x0300, 0x0800, 0x2000 }; + m->config.addr = addrs[idx]; + printf("%s load addr $%04x\n", __func__, m->config.addr); + } break; } break; } @@ -114,7 +134,7 @@ mii_mui_load_binary( return w; } c2_pt_t where = {}; - c2_rect_t wpos = C2_RECT_WH(where.x, where.y, 480, 294); + c2_rect_t wpos = C2_RECT_WH(where.x, where.y, 580, 294); if (where.x == 0 && where.y == 0) c2_rect_offset(&wpos, (ui->screen_size.x / 2) - (c2_rect_width(&wpos) / 2), @@ -144,42 +164,47 @@ mii_mui_load_binary( "Cancel", MII_LBIN_CANCEL); c->key_equ = MUI_KEY_EQU(0, 27); - c2_rect_right_of(&cf, 0, margin); - c = mui_button_new(w, - cf, MUI_BUTTON_STYLE_NORMAL, - "Select…" , MII_LBIN_SELECT); - c->key_equ = MUI_KEY_EQU(MUI_MODIFIER_ALT, 's'); - cf.b = cf.t + base_size; c2_rect_top_of(&cf, cf.t, margin); c2_rect_right_of(&cf, 0, margin); cf.r = cf.l + 200; c = mui_button_new(w, cf, MUI_BUTTON_STYLE_CHECKBOX, - "Auto Reload", 0); + "Auto Reload", MII_LBIN_AUTO_RELOAD); c->key_equ = MUI_KEY_EQU(MUI_MODIFIER_ALT, 'r'); // this tell libmui that it can clear the radio values of the 'sister' // radio buttons when one matching the uid&mask is selected uint32_t uid_mask = FCC(0xff,0xff,0xff,0); c2_rect_top_of(&cf, cf.t, 10); - cf.l += margin * 2; +// cf.l += margin * 2; cf.r = cf.l + 110; - c = mui_button_new(w, - cf, MUI_BUTTON_STYLE_RADIO, - "$0300", FCC('a','d','d','0')); + c = mui_button_new(w, cf, MUI_BUTTON_STYLE_RADIO, + "$0300", MII_LBIN_ADDR_0300); c->uid_mask = uid_mask; c->value = 1; - c2_rect_right_of(&cf, cf.r, margin); - c = mui_button_new(w, - cf, MUI_BUTTON_STYLE_RADIO, - "$0800", FCC('a','d','d','1')); + int inter_button_margin = margin/3; + c2_rect_right_of(&cf, cf.r, inter_button_margin); + c = mui_button_new(w, cf, MUI_BUTTON_STYLE_RADIO, + "$0800", MII_LBIN_ADDR_0800); c->uid_mask = uid_mask; - c2_rect_right_of(&cf, cf.r, margin); - c = mui_button_new(w, - cf, MUI_BUTTON_STYLE_RADIO, - "$2000", FCC('a','d','d','2')); + c2_rect_right_of(&cf, cf.r, inter_button_margin); + c = mui_button_new(w, cf, MUI_BUTTON_STYLE_RADIO, + "$2000", MII_LBIN_ADDR_2000); c->uid_mask = uid_mask; + c2_rect_right_of(&cf, cf.r, inter_button_margin); + cf.r = cf.l + 90; + c = mui_textbox_new(w, cf, "Other: $", NULL, 0); + c->state = MUI_CONTROL_STATE_DISABLED; + c2_rect_right_of(&cf, cf.r, 4); + c2_rect_t tbf = cf; + tbf.r = c2_rect_width(&w->frame) - margin*2; + tbf.b = cf.t + base_size * 1.3; + c2_rect_bottom_of(&tbf, cf.t, -margin/4); + c = mui_textedit_control_new(w, tbf, MUI_CONTROL_TEXTBOX_FRAME); + mui_textedit_set_text(c, "4000"); + c->state = MUI_CONTROL_STATE_DISABLED; + c2_rect_right_of(&cf, 0, margin); c2_rect_top_of(&cf, cf.t, margin / 2); cf.r = cf.l + 200; @@ -190,19 +215,10 @@ mii_mui_load_binary( c2_rect_t cp = cf; cp.l -= margin * 0.2; cp.b += base_size * 1.3; - c = mui_groupbox_new(w, cp, "File to load:", MUI_CONTROL_TEXTBOX_FRAME); - float icons_size = mui_font_find(ui, "icon_small")->size; - c2_rect_bottom_of(&cf, cf.b, 0); - cf.b = cf.t + icons_size; - cf.r = cf.l + icons_size; - m->icon = c = mui_textbox_new(w, cf, MUI_ICON_FILE, "icon_small", - MUI_TEXT_ALIGN_MIDDLE | MUI_TEXT_ALIGN_CENTER | 0); - c->state = MUI_CONTROL_STATE_DISABLED; - cf.l = cf.r; - cf.r = c2_rect_width(&w->content) - margin; - m->fname = c = mui_textbox_new(w, cf, "Click \"Select\" to pick a file", NULL, 0); - c->state = MUI_CONTROL_STATE_DISABLED; + mii_mui_fileselect_widget(&m->file, w, &cf, "Device:", "Select…", NULL); + m->file.button->uid = MII_LBIN_SELECT; + m->file.button->key_equ = MUI_KEY_EQU(MUI_MODIFIER_ALT, 's'); c = NULL; TAILQ_FOREACH(c, &w->controls, self) { @@ -210,7 +226,41 @@ mii_mui_load_binary( continue; mui_control_set_action(c, _mii_loadbin_action_cb, m); } + m->config = *config; + if (m->config.path[0]) { + char * path = m->config.path; + mui_control_set_state(m->file.fname, MUI_CONTROL_STATE_NORMAL); + char *dup = strdup(path); + mui_control_set_title(m->file.fname, basename(dup)); + free(dup); + mui_control_set_state(m->file.icon, MUI_CONTROL_STATE_NORMAL); + mui_control_set_state(m->load, MUI_CONTROL_STATE_NORMAL); + } else { + m->config.path[0] = 0; + // mui_control_set_state(m->load, MUI_CONTROL_STATE_NORMAL); + } + switch (m->config.addr) { + case 0x0300: + mui_control_set_value( + mui_control_get_by_id(w, + FCC_INDEXED(MII_LBIN_ADDR_0300, 0)), 1); + break; + case 0x0800: + mui_control_set_value( + mui_control_get_by_id(w, + FCC_INDEXED(MII_LBIN_ADDR_0300, 1)), 1); + break; + case 0x2000: + mui_control_set_value( + mui_control_get_by_id(w, + FCC_INDEXED(MII_LBIN_ADDR_0300, 2)), 1); + break; + } + // now check the auto reload + mui_control_set_value( + mui_control_get_by_id(w, MII_LBIN_AUTO_RELOAD), + m->config.auto_reload); return w; } diff --git a/ui_gl/mii_mui_menus.c b/ui_gl/mii_mui_menus.c index 16eb2d1..41d9590 100644 --- a/ui_gl/mii_mui_menus.c +++ b/ui_gl/mii_mui_menus.c @@ -17,8 +17,6 @@ #include "mii_mui_menus.h" #include "mii_mui_settings.h" -/* this is heavily endian dependend, as is the FCC macro */ -#define FCC_INDEX(_fcc) (isdigit(_fcc>>24) ? ((_fcc >> 24) - '0') : 0) struct mii_x11_t; void @@ -89,6 +87,17 @@ mii_config_save_cb( mii_ui_reconfigure_slot(mii, config, conf->slot_id + 1); mii_emu_save(&ui->cf, &ui->config); } break; + case MII_MUI_LOADBIN_SAVE: { + mii_loadbin_conf_t * conf = param; + // mii_t * mii = &ui->mii; + // mii_machine_config_t * config = &ui->config; + mii_th_signal_t sig = { + .cmd = SIGNAL_LOADBIN, + .ptr = conf, + }; + mii_th_fifo_write(mii_thread_get_fifo(&ui->mii), sig); + mii_emu_save(&ui->cf, &ui->config); + } break; } return 0; } @@ -123,7 +132,11 @@ mii_menubar_action( switch (items[i].uid) { case FCC('v','d','c','0'): case FCC('v','d','c','1'): - case FCC('v','d','c','2'): { + case FCC('v','d','c','2'): + case FCC('v','d','c','3'): + case FCC('v','d','c','4'): + case FCC('v','d','c','5'): + case FCC('v','d','c','6'): { int idx = FCC_INDEX(items[i].uid); if (mii->video.color_mode == idx) strcpy(items[i].mark, MUI_GLYPH_TICK); @@ -142,6 +155,10 @@ mii_menubar_action( case FCC('a','u','d','-'): items[i].disabled = mii->speaker.volume <= 0.1; break; + case FCC('s','a','u','d'): + // are we in silent mode ? + items[i].disabled = mii->speaker.speaker_off; + break; case FCC('m','h','z','1'): if (mii->speed <= 1.1 && mii->speed >= 0.9) strcpy(items[i].mark, MUI_GLYPH_TICK); @@ -269,13 +286,16 @@ mii_menubar_action( break; case FCC('v','d','C','l'): { // printf("%s Cycle video\n", __func__); - mii->video.color_mode = (mii->video.color_mode + 1) % 3; + // this is auto clamped + mii_video_set_mode(mii, mii->video.color_mode + 1); ui->config.video_mode = mii->video.color_mode; } break; case FCC('v','d','c','0'): case FCC('v','d','c','1'): case FCC('v','d','c','2'): - mii->video.color_mode = FCC_INDEX(item->uid); + case FCC('v','d','c','3'): + case FCC('v','d','c','4'): + mii_video_set_mode(mii, FCC_INDEX(item->uid)); ui->config.video_mode = mii->video.color_mode; break; case FCC('m','h','z','1'): @@ -296,6 +316,12 @@ mii_menubar_action( }; mii_th_fifo_write(mii_thread_get_fifo(&ui->mii), sig); } break; + case FCC('n','e','x','t'): { + mii_th_signal_t sig = { + .cmd = SIGNAL_NEXT, + }; + mii_th_fifo_write(mii_thread_get_fifo(&ui->mii), sig); + } break; case FCC('r','u','n',' '): { mii_th_signal_t sig = { .cmd = SIGNAL_RUN, diff --git a/ui_gl/mii_mui_menus.h b/ui_gl/mii_mui_menus.h index f79551b..e67cc40 100644 --- a/ui_gl/mii_mui_menus.h +++ b/ui_gl/mii_mui_menus.h @@ -17,9 +17,10 @@ extern mui_menu_item_t m_machine_menu[]; extern mui_menu_item_t m_cpu_menu[]; #ifdef MII_MUI_MENUS_C +#define MII_MUI_APPLE_LOGO_DEFINE #include "mii_mui_apple_logo.h" mui_menu_item_t m_color_apple_menu[] = { - { .color_icon = mii_color_apple_pixels, .is_menutitle = 1, }, + { .color_icon = mii_mui_apple_logo, .is_menutitle = 1, }, { .title = "About MII…", .uid = FCC('a','b','o','t') }, // { .title = "-", }, @@ -53,13 +54,19 @@ mui_menu_item_t m_video_menu[] = { .key_equ = MUI_KEY_EQU(MUI_MODIFIER_RCTRL, MUI_KEY_F11), .kcombo = MUI_GLYPH_CONTROL MUI_GLYPH_F11 }, { .title = "-", }, - { .title = "Color", + { .title = "Color NTSC", .mark = MUI_GLYPH_TICK, .uid = FCC('v','d','c','0') }, - { .title = "Green", + { .title = "Color NTSC (Alt)", + .mark = MUI_GLYPH_TICK, .uid = FCC('v','d','c','1') }, - { .title = "Amber", + { .title = "Color Mega2", + .mark = MUI_GLYPH_TICK, .uid = FCC('v','d','c','2') }, + { .title = "Green", + .uid = FCC('v','d','c','3') }, + { .title = "Amber", + .uid = FCC('v','d','c','4') }, { }, }; mui_menu_item_t m_audio_menu[] = { @@ -100,6 +107,7 @@ mui_menu_item_t m_machine_menu[] = { .submenu = m_video_menu }, { .title = "Audio", .kcombo = MUI_GLYPH_SUBMENU, + .uid = FCC('s','a','u','d'), .submenu = m_audio_menu }, { }, }; diff --git a/ui_gl/mii_mui_prefs.c b/ui_gl/mii_mui_prefs.c deleted file mode 100644 index e69de29..0000000 diff --git a/ui_gl/mii_mui_settings.c b/ui_gl/mii_mui_settings.c index f20beb1..fd8e168 100644 --- a/ui_gl/mii_mui_settings.c +++ b/ui_gl/mii_mui_settings.c @@ -161,7 +161,7 @@ mii_settings_save( else if (cl->ignore) fprintf(f, "%s\n", cl->line); else - fprintf(f, "%s %s\n", cl->key, cl->value ? cl->value : ""); + fprintf(f, "%s=%s\n", cl->key, cl->value ? cl->value : ""); } fclose(f); return 0; @@ -196,6 +196,10 @@ static const struct { [MII_SLOT_DRIVER_MOUSE] = { "mouse", }, [MII_SLOT_DRIVER_SSC] = { "ssc", }, [MII_SLOT_DRIVER_ROM1MB] = { "eecard", }, + [MII_SLOT_DRIVER_MOCKINGBOARD] = { "mockingboard", }, +#ifdef MII_DANII + [MII_SLOT_DRIVER_DANII] = { "danii" }, +#endif }; int @@ -230,6 +234,17 @@ mii_emu_save( sprintf(label, "%d", config->joystick.axes[i]); mii_config_set(cf, section, name, label); } + section = mii_config_get_section(cf, "loadbin", true); + mii_config_set(cf, section, "path", + config->loadbin.path); + sprintf(label, "%d", config->loadbin.active); + mii_config_set(cf, section, "active", label); + sprintf(label, "%d", config->loadbin.bank); + mii_config_set(cf, section, "bank", label); + sprintf(label, "%d", config->loadbin.addr); + mii_config_set(cf, section, "addr", label); + sprintf(label, "%d", config->loadbin.auto_reload); + mii_config_set(cf, section, "auto_reload", label); for (int i = 0; i < 7; i++) { char key[32]; @@ -334,6 +349,24 @@ mii_emu_load( config->joystick.axes[i] = atoi(cl->value); } } + section = mii_config_get_section(cf, "loadbin", false); + if (section) { + mii_config_line_t * cl = mii_config_get(cf, section, "path"); + if (cl) + strcpy(config->loadbin.path, cl->value); + cl = mii_config_get(cf, section, "active"); + if (cl) + config->loadbin.active = atoi(cl->value); + cl = mii_config_get(cf, section, "bank"); + if (cl) + config->loadbin.bank = atoi(cl->value); + cl = mii_config_get(cf, section, "addr"); + if (cl) + config->loadbin.addr = atoi(cl->value); + cl = mii_config_get(cf, section, "auto_reload"); + if (cl) + config->loadbin.auto_reload = atoi(cl->value); + } for (int i = 0; i < 7; i++) { char key[32]; diff --git a/ui_gl/mii_mui_settings.h b/ui_gl/mii_mui_settings.h index 4162803..0183531 100644 --- a/ui_gl/mii_mui_settings.h +++ b/ui_gl/mii_mui_settings.h @@ -79,7 +79,7 @@ typedef struct mii_joystick_conf_t { } mii_joystick_conf_t; typedef struct mii_loadbin_conf_t { - uint16_t active: 1, audo_reload : 1; + uint16_t active: 1, auto_reload : 1; uint16_t bank; // unused for now uint16_t addr; // address in bank char path[MII_PATH_SIZE_MAX]; @@ -92,6 +92,10 @@ enum mii_mui_driver_e { MII_SLOT_DRIVER_MOUSE, MII_SLOT_DRIVER_SSC, MII_SLOT_DRIVER_ROM1MB, + MII_SLOT_DRIVER_MOCKINGBOARD, +#ifdef MII_DANII + MII_SLOT_DRIVER_DANII, +#endif MII_SLOT_DRIVER_COUNT }; @@ -104,6 +108,7 @@ typedef struct mii_machine_config_t { titan_accelerator : 1; uint32_t video_mode; mii_joystick_conf_t joystick; + mii_loadbin_conf_t loadbin; struct { uint16_t driver; union { diff --git a/ui_gl/mii_mui_slots.c b/ui_gl/mii_mui_slots.c index fd89fb3..a3f2cbf 100644 --- a/ui_gl/mii_mui_slots.c +++ b/ui_gl/mii_mui_slots.c @@ -79,6 +79,10 @@ static const struct { [MII_SLOT_DRIVER_MOUSE] = { "Mouse", 0 }, [MII_SLOT_DRIVER_SSC] = { "Super Serial", 1 }, [MII_SLOT_DRIVER_ROM1MB] = { "ROM 1MB", 1 }, +// [MII_SLOT_DRIVER_MOCKINGBOARD] = { "Mockingboard", }, +#ifdef MII_DANII + [MII_SLOT_DRIVER_DANII] = { "DAN ][", 0 }, +#endif { NULL, 0 }, }; @@ -403,7 +407,8 @@ mii_mui_configure_slots( c2_rect_right_of(&cf, cf.r, 6); cf.r = cf.l + 240; c = mui_popupmenu_new(w, cf, - "Popup", MII_SLOT_DRIVER_POP + i); + "Popup", MII_SLOT_DRIVER_POP + i, + MUI_TEXT_ALIGN_CENTER); mui_menu_items_t * items = mui_popupmenu_get_items(c); mui_menu_items_clear(items); for (int j = 0; _mii_slot_drivers[j].label; j++) { diff --git a/ui_gl/mii_mui_ssc.c b/ui_gl/mii_mui_ssc.c index f9f1956..11880c3 100644 --- a/ui_gl/mii_mui_ssc.c +++ b/ui_gl/mii_mui_ssc.c @@ -12,6 +12,7 @@ #include "mui.h" #include "mii_mui_settings.h" +#include "mii_mui_utils.h" enum { MII_SSC_WINDOW_ID = FCC('s','s','c','c'), @@ -28,7 +29,9 @@ enum { typedef struct mii_mui_ssc_t { mui_window_t win; - mui_control_t * load, *icon, *fname, *select, *baud, *handshake; + mii_mui_file_select_t dev; + mui_control_t * load; + mui_control_t * baud, *handshake; mui_control_t * parity[3]; mui_control_t * bits[2]; mui_control_t * stops[2]; @@ -88,21 +91,21 @@ mii_mui_ssc_load_conf( } char *fname = config->device; if (fname[0] == 0) { - mui_control_set_title(m->fname, "Click \"Select\" to pick a device file"); - mui_control_set_state(m->icon, MUI_CONTROL_STATE_DISABLED); - mui_control_set_state(m->fname, MUI_CONTROL_STATE_DISABLED); + mui_control_set_title(m->dev.fname, "Click \"Select\" to pick a device file"); + mui_control_set_state(m->dev.icon, MUI_CONTROL_STATE_DISABLED); + mui_control_set_state(m->dev.fname, MUI_CONTROL_STATE_DISABLED); ok = 0; } else { char *dup = strdup(fname); - mui_control_set_title(m->fname, basename(dup)); + mui_control_set_title(m->dev.fname, basename(dup)); free(dup); if (_mii_ssc_check_device_file(m->win.ui, config->device) < 0) { ok = 0; - mui_control_set_state(m->icon, MUI_CONTROL_STATE_DISABLED); - mui_control_set_state(m->fname, MUI_CONTROL_STATE_DISABLED); + mui_control_set_state(m->dev.icon, MUI_CONTROL_STATE_DISABLED); + mui_control_set_state(m->dev.fname, MUI_CONTROL_STATE_DISABLED); } else { - mui_control_set_state(m->icon, MUI_CONTROL_STATE_NORMAL); - mui_control_set_state(m->fname, MUI_CONTROL_STATE_NORMAL); + mui_control_set_state(m->dev.icon, MUI_CONTROL_STATE_NORMAL); + mui_control_set_state(m->dev.fname, MUI_CONTROL_STATE_NORMAL); } } for (uint8_t i = 0; i < 2; i++) @@ -132,20 +135,20 @@ _mii_ssc_stdfile_cb( char * path = mui_stdfile_get_selected_path(w); printf("%s select %s\n", __func__, path); if (_mii_ssc_check_device_file(m->win.ui, path) < 0) { - mui_control_set_state(m->icon, MUI_CONTROL_STATE_DISABLED); - mui_control_set_state(m->fname, MUI_CONTROL_STATE_DISABLED); + mui_control_set_state(m->dev.icon, MUI_CONTROL_STATE_DISABLED); + mui_control_set_state(m->dev.fname, MUI_CONTROL_STATE_DISABLED); mui_control_set_state(m->load, MUI_CONTROL_STATE_DISABLED); } else { strcpy(m->config.device, path); - mui_control_set_state(m->fname, MUI_CONTROL_STATE_NORMAL); + mui_control_set_state(m->dev.fname, MUI_CONTROL_STATE_NORMAL); char *dup = strdup(path); - mui_control_set_title(m->fname, basename(dup)); + mui_control_set_title(m->dev.fname, basename(dup)); free(dup); - mui_control_set_state(m->icon, MUI_CONTROL_STATE_NORMAL); + mui_control_set_state(m->dev.icon, MUI_CONTROL_STATE_NORMAL); mui_control_set_state(m->load, MUI_CONTROL_STATE_NORMAL); mui_control_set_state(m->load, MUI_CONTROL_STATE_NORMAL); } - mui_control_set_state(m->icon, MUI_CONTROL_STATE_NORMAL); + mui_control_set_state(m->dev.icon, MUI_CONTROL_STATE_NORMAL); mui_control_set_state(m->load, MUI_CONTROL_STATE_NORMAL); mui_window_dispose(w); } break; @@ -283,34 +286,16 @@ mii_mui_configure_ssc( c->key_equ = MUI_KEY_EQU(0, 27); c2_rect_set(&cf, margin, (margin/2), - c2_rect_width(&w->frame) - margin - (base_size*4) - margin, + c2_rect_width(&w->frame) - margin - 0, (margin/2) + base_size); + c2_rect_t cp = cf; cp.l -= margin * 0.2; cp.b += base_size * 1.3; - c = mui_groupbox_new(w, cp, "Device:", MUI_CONTROL_TEXTBOX_FRAME); - float icons_size = mui_font_find(ui, "icon_small")->size; - c2_rect_bottom_of(&cf, cf.b, 0); - cf.b = cf.t + icons_size; - cf.r = cf.l + icons_size; - m->icon = c = mui_textbox_new(w, cf, MUI_ICON_FILE, "icon_small", - MUI_TEXT_ALIGN_MIDDLE | MUI_TEXT_ALIGN_CENTER | 0); - c->state = MUI_CONTROL_STATE_DISABLED; - cf.l = cf.r; - cf.r = c2_rect_width(&w->content) - margin - (base_size*4) - margin; - m->fname = c = mui_textbox_new(w, cf, - "Click \"Select\" to pick a device file", NULL, - MUI_TEXT_ALIGN_MIDDLE); - c->state = MUI_CONTROL_STATE_DISABLED; - - cf = C2_RECT_WH(0, 0, base_size * 4, base_height); - c2_rect_bottom_of(&cf, cp.t, margin * 1.2); - c2_rect_right_of(&cf, cp.r, margin); - m->select = c = mui_button_new(w, - cf, MUI_BUTTON_STYLE_NORMAL, - "Select…" , MII_SSC_SELECT); - c->key_equ = MUI_KEY_EQU(MUI_MODIFIER_ALT, 's'); + mii_mui_fileselect_widget(&m->dev, w, &cf, "Device:", "Select…", NULL); + m->dev.button->uid = MII_SSC_SELECT; + m->dev.button->key_equ = MUI_KEY_EQU(MUI_MODIFIER_ALT, 's'); c2_rect_right_of(&cf, 0, margin); c2_rect_bottom_of(&cf, cf.b, margin); @@ -323,7 +308,8 @@ mii_mui_configure_ssc( c2_rect_right_of(&popr, cf.r, margin/2); popr.b = cf.t + 34; popr.r = popr.l + 160; - m->baud = c = mui_popupmenu_new(w, popr, "Popup", MII_SSC_BAUD); + m->baud = c = mui_popupmenu_new(w, + popr, "Popup", MII_SSC_BAUD, MUI_TEXT_ALIGN_CENTER); mui_menu_items_t *items = mui_popupmenu_get_items(c); mui_menu_items_add(items, (mui_menu_item_t){.title="1200", .uid=1200 }); mui_menu_items_add(items, (mui_menu_item_t){.title="2400", .uid=2400 }); diff --git a/ui_gl/mii_mui_utils.c b/ui_gl/mii_mui_utils.c new file mode 100644 index 0000000..8a4fdd2 --- /dev/null +++ b/ui_gl/mii_mui_utils.c @@ -0,0 +1,70 @@ + + +#include "mii_mui_utils.h" + +int +mii_mui_fileselect_widget( // + mii_mui_file_select_t *out, + mui_window_t *w, + c2_rect_t *where, + const char *enclosing_box_title, + const char *button_title, + const char *checkbox_title) +{ + mui_t *ui = w->ui; + float base_size = mui_font_find(ui, "main")->size; + float icons_size = mui_font_find(ui, "icon_small")->size; + float margin = base_size * 0.7; + + mui_control_t * c = NULL; + c2_rect_t cf; + c2_rect_t cp = *where; + cp.b = cp.t + base_size * 2.3; + where->b = cp.b; + const int but_width = 100; + cp.r = where->r - margin * 2 - but_width; + + c2_rect_set(&cf, margin, (margin / 2), + c2_rect_width(&w->frame) - margin - but_width, + (margin/2) + base_size); + out->box = c = mui_groupbox_new(w, cp, + enclosing_box_title, MUI_CONTROL_TEXTBOX_FRAME); + + c2_rect_bottom_of(&cf, cp.t, base_size); + c2_rect_right_of(&cf, cp.l, margin * 0.5); + cf.b = cf.t + icons_size; + cf.r = cf.l + icons_size; + out->icon = c = mui_textbox_new(w, cf, + MUI_ICON_FILE, "icon_small", + MUI_TEXT_ALIGN_MIDDLE | MUI_TEXT_ALIGN_CENTER | 0); + c->state = MUI_CONTROL_STATE_DISABLED; + cf.l = cf.r; + cf.r = cp.r - margin * 0.5; + out->fname = c = mui_textbox_new(w, cf, + "Click \"Select\" to pick a file", NULL, + MUI_TEXT_ALIGN_MIDDLE); + c->state = MUI_CONTROL_STATE_DISABLED; + + c2_rect_right_of(&cf, cp.r, margin); + cf.r = where->r - margin * 0.5; + c2_rect_inset(&cf, -4,-4); + out->button = c = mui_button_new(w, + cf, MUI_BUTTON_STYLE_NORMAL, + button_title , 0); + if (checkbox_title) { + c2_rect_bottom_of(&cf, cp.b, margin * 0.4); + cf.l = cp.l + (margin * 0.7); + cf.r = cf.l + 200; + cf.b = cf.t + base_size; + where->b = cf.b; + out->checkbox = c = mui_button_new(w, + cf, MUI_BUTTON_STYLE_CHECKBOX, + checkbox_title, 0); + c2_rect_right_of(&cf, cf.r, margin * 0.5); + cf.r = c2_rect_width(&w->frame) - margin * 1.2; + out->warning = c = mui_textbox_new(w, cf, + "", NULL, + MUI_TEXT_ALIGN_MIDDLE|MUI_TEXT_ALIGN_RIGHT); + } + return 0; +} diff --git a/ui_gl/mii_mui_utils.h b/ui_gl/mii_mui_utils.h new file mode 100644 index 0000000..98bf9e3 --- /dev/null +++ b/ui_gl/mii_mui_utils.h @@ -0,0 +1,23 @@ + +#pragma once + +#include "mui.h" + + +typedef struct mii_mui_file_select_t { + mui_control_t * box; + mui_control_t * icon; + mui_control_t * fname; + mui_control_t * button; + mui_control_t * checkbox; + mui_control_t * warning; +} mii_mui_file_select_t; + +int +mii_mui_fileselect_widget( // + mii_mui_file_select_t *out, + mui_window_t *w, + c2_rect_t *where, + const char *enclosing_box_title, + const char *button_title, + const char *checkbox_title); diff --git a/ui_gl/mii_thread.c b/ui_gl/mii_thread.c index 5e5e92f..0d79e03 100644 --- a/ui_gl/mii_thread.c +++ b/ui_gl/mii_thread.c @@ -5,17 +5,17 @@ * * SPDX-License-Identifier: MIT */ +#define _GNU_SOURCE // for asprintf #include -#include -#include -#include #include #include #include -#include -#include #include #include +#include +#include +#include +#include // probably should wrap these into a HAVE_JOYSTICK define for non-linux #ifndef HAVE_JOYSTICK #define HAVE_JOYSTICK 1 @@ -24,6 +24,7 @@ #include "mii.h" #include "mii_thread.h" #include "miigl_counter.h" +#include "mii_mui_settings.h" static float default_fps = 60; mii_th_fifo_t signal_fifo; @@ -51,6 +52,12 @@ static void * mii_thread_cpu_regulator( void *arg) { + // ignore the signal, we use it to wake up the thread + sigaction(SIGUSR1, &(struct sigaction){ + .sa_handler = SIG_IGN, +// .sa_flags = SA_RESTART, + }, NULL); + mii_t *mii = (mii_t *) arg; uint32_t running = 1; @@ -65,7 +72,8 @@ mii_thread_cpu_regulator( uint32_t last_frame = mii->video.frame_count; // miigl_counter_t frame_counter = {}; - + uint8_t * paste_buffer = NULL; + uint32_t paste_buffer_index = 0; while (running) { mii_th_signal_t sig; while (!mii_th_fifo_isempty(&signal_fifo)) { @@ -80,13 +88,29 @@ mii_thread_cpu_regulator( mii->state = MII_STOPPED; break; case SIGNAL_STEP: - mii->state = MII_STEP; + mii_cpu_step(mii, 1); + running = 1; + break; + case SIGNAL_NEXT: + mii_cpu_next(mii); running = 1; break; case SIGNAL_RUN: mii->state = MII_RUNNING; running = 1; break; + case SIGNAL_PASTE: { + if (paste_buffer) + free(paste_buffer); + paste_buffer = sig.ptr; + paste_buffer_index = 0; + } break; + case SIGNAL_LOADBIN: { + mii_loadbin_conf_t * conf = sig.ptr; + printf("%s $%04x Loadbin %s\n", + __func__, conf->addr, conf->path); + // mii_load_bin(mii, sig.ptr); + } break; } } if (mii->state != MII_STOPPED) @@ -111,17 +135,27 @@ mii_thread_cpu_regulator( case MII_RUNNING: { uint32_t fi = mii->video.frame_count; sleep = fi != last_frame; - if (sleep) { - last_frame = fi; - } + last_frame = fi; } break; case MII_TERMINATE: running = 0; break; } if (sleep) { + if (paste_buffer) { + if (paste_buffer[paste_buffer_index] == 0) { + free(paste_buffer); + paste_buffer = NULL; + } else if (!(mii_bank_peek( + &mii->bank[MII_BANK_SW], 0xc000) & 0x80)) { + mii_bank_poke(&mii->bank[MII_BANK_SW], + 0xc000, paste_buffer[paste_buffer_index] | 0x80); + paste_buffer_index++; + } + } uint64_t timer_v; - read(timerfd, &timer_v, sizeof(timer_v)); + // this can be interrupted and return EINTR, but we don't care + /*size_t r = */read(timerfd, &timer_v, sizeof(timer_v)); /* long current_fps = miigl_counter_tick(&frame_counter, miigl_get_time()); @@ -138,113 +172,151 @@ mii_thread_cpu_regulator( #if HAVE_JOYSTICK #include +static void +_printf_once( + char **last, + const char *fmt, + ...) +{ + va_list ap; + va_start(ap, fmt); + char * error = NULL; + vasprintf(&error, fmt, ap); + va_end(ap); + if (*last != NULL && strcmp(*last, error) != 0) { + printf("%s", error); + free(*last); + } else if (*last == NULL) { + printf("%s", error); + } + *last = error; +} + static void * mii_thread_joystick( void *arg) { - int fd = open("/dev/input/js0", O_RDONLY); - if (fd < 0) { - printf("No joystick found\n"); - return NULL; - } - uint8_t axes, buttons; - if (ioctl(fd, JSIOCGAXES, &axes) == -1 || - ioctl(fd, JSIOCGBUTTONS, &buttons) == -1) { - perror(__func__); - return NULL; - } - char name[128]; - if (ioctl(fd, JSIOCGNAME(sizeof(name)), name) == -1) { - perror(__func__); - return NULL; - } - printf("Joystick found: '%s'\n", name); -#if 0 - printf(" %d axes, %d buttons\n", axes, buttons); - // get and print mappings - struct js_corr corr[axes] = {}; - if (ioctl(fd, JSIOCGCORR, corr) == -1) { - perror(__func__); - // return NULL; - } - printf(" %d axes, %d buttons\n", axes, buttons); - for (int i = 0; i < axes; i++) { - printf("coor %d: type %d, prec %d: %d %d %d %d\n", i, - corr[i].type, corr[i].prec, - corr[i].coef[0], corr[i].coef[1], - corr[i].coef[2], corr[i].coef[3]); - } - printf("Joystick thread started: %d axis, %d buttons\n", axes, buttons); -#endif - struct js_event event; - mii_t *mii = (mii_t *)arg; - mii->analog.v[0].value = 127; - mii->analog.v[1].value = 127; - short axis[2] = { 0, 0 }; - float reprojected[2] = { 0, 0 }; + // ignore the signal, we use it to wake up the thread + sigaction(SIGUSR1, &(struct sigaction){ + .sa_handler = SIG_IGN, +// .sa_flags = SA_RESTART, + }, NULL); + char * last_error = NULL; do { - ssize_t rd = read(fd, &event, sizeof(event)); - if (rd != sizeof(event)) { + int fd = open("/dev/input/js0", O_RDONLY); + if (fd < 0) { + _printf_once(&last_error, "%s No Joystick found (%s)\n", + __func__, strerror(errno)); + goto retry; + } + uint8_t axes, buttons; + char name[128]; + if (ioctl(fd, JSIOCGAXES, &axes) == -1 || + ioctl(fd, JSIOCGBUTTONS, &buttons) == -1 || + ioctl(fd, JSIOCGNAME(sizeof(name)), name) == -1) { + _printf_once(&last_error, "%s: %s\n", + __func__, strerror(errno)); + goto retry; + } + _printf_once(&last_error, "%s Joystick found: '%s'\n", + __func__, name); + #if 0 + printf(" %d axes, %d buttons\n", axes, buttons); + // get and print mappings + struct js_corr corr[axes] = {}; + if (ioctl(fd, JSIOCGCORR, corr) == -1) { perror(__func__); - break; + // return NULL; } - switch (event.type) { - case JS_EVENT_BUTTON: - // printf("button %u %s\n", event.number, event.value ? "pressed" : "released"); - switch (event.number) { - case 2 ... 3: - mii_bank_poke(&mii->bank[MII_BANK_SW], - 0xc061 + (event.number - 2), - event.value ? 0x80 : 0); - break; - case 4 ... 5: - mii_bank_poke(&mii->bank[MII_BANK_SW], - 0xc061 + (event.number - 4), - event.value ? 0x80 : 0); + printf(" %d axes, %d buttons\n", axes, buttons); + for (int i = 0; i < axes; i++) { + printf("coor %d: type %d, prec %d: %d %d %d %d\n", i, + corr[i].type, corr[i].prec, + corr[i].coef[0], corr[i].coef[1], + corr[i].coef[2], corr[i].coef[3]); + } + printf("Joystick thread started: %d axis, %d buttons\n", axes, buttons); + #endif + struct js_event event; + mii_t *mii = (mii_t *)arg; + mii->analog.v[0].value = 127; + mii->analog.v[1].value = 127; + short axis[2] = { 0, 0 }; + float reprojected[2] = { 0, 0 }; + do { + ssize_t rd = read(fd, &event, sizeof(event)); + if (rd == -1) { + // this is fine, we can be interrupted + if (errno == EINTR || errno == EAGAIN) + continue; + } + if (rd != sizeof(event)) { + _printf_once(&last_error, "%s read error: %s\n", + __func__, strerror(errno)); + break; + } + switch (event.type) { + case JS_EVENT_BUTTON: + // printf("button %u %s\n", event.number, event.value ? "pressed" : "released"); + switch (event.number) { + case 2 ... 3: + mii_bank_poke(&mii->bank[MII_BANK_SW], + 0xc061 + (event.number - 2), + event.value ? 0x80 : 0); break; - } - break; - case JS_EVENT_AXIS: - // TODO: Use some sort of settings on which axis to use - switch (event.number) { - case 0 ... 1: {// X - axis[event.number] = event.value; - } break; - } - for (int i = 0; i < 2; i++) - reprojected[i] = axis[i] / 256; - /* - * This remaps the circular coordinates of the joystick to - * a square, the 'modern' joystick I use has a top left corner of - * -94,-94, bottom 130,130, so we need to remap the values to - * -127,127 - 127,127 to be able to use them as a joystick - * otherwise some games aren't happy (Wings of Fury for example) - * - * The formula is something I thrown together, I'm sure there's - * a better way to do this, but there isn't many of these events - * so it's not a big deal. - */ - if (1) { - float x = (float)reprojected[0] / 256.0f; - float y = (float)reprojected[1] / 256.0f; - reprojected[0] = reprojected[0] + (fabs(reprojected[1]) * x); - reprojected[1] = reprojected[1] + (fabs(reprojected[0]) * y); - } - for (int i = 0; i < 2; i++) { - int32_t v = reprojected[i] + 127; - if (v > 255) - v = 255; - else if (v < 0) - v = 0; - mii->analog.v[i].value = v; - } - break; - default: - /* Ignore init events. */ - break; - } + case 4 ... 5: + mii_bank_poke(&mii->bank[MII_BANK_SW], + 0xc061 + (event.number - 4), + event.value ? 0x80 : 0); + break; + } + break; + case JS_EVENT_AXIS: + // TODO: Use some sort of settings on which axis to use + switch (event.number) { + case 0 ... 1: {// X + axis[event.number] = event.value; + } break; + } + for (int i = 0; i < 2; i++) + reprojected[i] = axis[i] / 256; + /* + * This remaps the circular coordinates of the joystick to + * a square, the 'modern' joystick I use has a top left corner of + * -94,-94, bottom 130,130, so we need to remap the values to + * -127,127 - 127,127 to be able to use them as a joystick + * otherwise some games aren't happy (Wings of Fury for example) + * + * The formula is something I thrown together, I'm sure there's + * a better way to do this, but there isn't many of these events + * so it's not a big deal. + */ + if (1) { + float x = (float)reprojected[0] / 256.0f; + float y = (float)reprojected[1] / 256.0f; + reprojected[0] = reprojected[0] + (fabs(reprojected[1]) * x); + reprojected[1] = reprojected[1] + (fabs(reprojected[0]) * y); + } + for (int i = 0; i < 2; i++) { + int32_t v = reprojected[i] + 127; + if (v > 255) + v = 255; + else if (v < 0) + v = 0; + mii->analog.v[i].value = v; + } + break; + default: + /* Ignore init events. */ + break; + } + } while (1); +retry: + close(fd); + // sleep a bit before retrying + sleep(2); } while (1); - close(fd); + printf("Joystick thread terminated\n"); return NULL; } diff --git a/ui_gl/mii_thread.h b/ui_gl/mii_thread.h index a7f5517..91fb0cf 100644 --- a/ui_gl/mii_thread.h +++ b/ui_gl/mii_thread.h @@ -15,12 +15,18 @@ enum mii_th_state_e { SIGNAL_RESET, SIGNAL_STOP, SIGNAL_STEP, + SIGNAL_NEXT, SIGNAL_RUN, + SIGNAL_PASTE, + SIGNAL_LOADBIN, }; typedef struct mii_th_signal_t { uint8_t cmd; - uint8_t data; + union { + uint32_t data; + void * ptr; + }; } mii_th_signal_t; DECLARE_FIFO(mii_th_signal_t, mii_th_fifo, 16); @@ -33,7 +39,7 @@ typedef struct mii_thread_t { pthread_t thread; uint8_t state; struct mii_t * mii; - mii_th_fifo_t signal; + mii_th_msg_fifo_t msg; } mii_thread_t;