From 1ee95e15888fbeb4c39601cebac2ad879dcf9dac Mon Sep 17 00:00:00 2001 From: ShawnHymel Date: Wed, 1 Feb 2017 14:59:22 -0700 Subject: [PATCH 01/34] Added micronucleus source files and t84_roshamglo bootloader hex --- IDE_Board_Manager/package_sparkfun_index.json | 51 +- sparkfun/tiny/boards.txt | 29 + sparkfun/tiny/bootloaders/attiny/Makefile | 98 ++ sparkfun/tiny/bootloaders/attiny/README.md | 145 +++ .../configuration/t167_default/Makefile.inc | 21 + .../t167_default/bootloaderconfig.h | 275 ++++++ .../configuration/t45_default/Makefile.inc | 60 ++ .../t45_default/bootloaderconfig.h | 259 ++++++ .../configuration/t841_default/Makefile.inc | 24 + .../t841_default/bootloaderconfig.h | 267 ++++++ .../configuration/t84_default/Makefile.inc | 63 ++ .../t84_default/bootloaderconfig.h | 265 ++++++ .../configuration/t84_roshamglo/Makefile.inc | 63 ++ .../t84_roshamglo/bootloaderconfig.h | 267 ++++++ .../configuration/t85_aggressive/Makefile.inc | 68 ++ .../t85_aggressive/bootloaderconfig.h | 262 ++++++ .../configuration/t85_default/Makefile.inc | 60 ++ .../t85_default/bootloaderconfig.h | 259 ++++++ sparkfun/tiny/bootloaders/attiny/crt1.S | 112 +++ sparkfun/tiny/bootloaders/attiny/main.c | 377 ++++++++ .../tiny/bootloaders/attiny/makerelease.bat | 21 + sparkfun/tiny/bootloaders/attiny/osccalASM.S | 291 ++++++ .../attiny/releases/t84_roshamglo.hex | 102 +++ sparkfun/tiny/bootloaders/attiny/upgrade.c | 176 ++++ sparkfun/tiny/bootloaders/attiny/usbconfig.h | 350 +++++++ .../bootloaders/attiny/usbdrv/Changelog.txt | 329 +++++++ .../attiny/usbdrv/CommercialLicense.txt | 166 ++++ .../bootloaders/attiny/usbdrv/License.txt | 361 ++++++++ .../tiny/bootloaders/attiny/usbdrv/Readme.txt | 172 ++++ .../bootloaders/attiny/usbdrv/USB-ID-FAQ.txt | 149 +++ .../attiny/usbdrv/USB-IDs-for-free.txt | 154 ++++ .../bootloaders/attiny/usbdrv/asmcommon.inc | 208 +++++ .../tiny/bootloaders/attiny/usbdrv/oddebug.c | 49 + .../bootloaders/attiny/usbdrv/oddebug.c.lst | 237 +++++ .../tiny/bootloaders/attiny/usbdrv/oddebug.h | 122 +++ .../attiny/usbdrv/usbconfig-prototype.h | 384 ++++++++ .../tiny/bootloaders/attiny/usbdrv/usbdrv.c | 670 ++++++++++++++ .../tiny/bootloaders/attiny/usbdrv/usbdrv.h | 746 +++++++++++++++ .../bootloaders/attiny/usbdrv/usbdrvasm.S | 391 ++++++++ .../bootloaders/attiny/usbdrv/usbdrvasm.asm | 20 + .../bootloaders/attiny/usbdrv/usbdrvasm12.inc | 392 ++++++++ .../attiny/usbdrv/usbdrvasm128.inc | 749 +++++++++++++++ .../bootloaders/attiny/usbdrv/usbdrvasm15.inc | 422 +++++++++ .../bootloaders/attiny/usbdrv/usbdrvasm16.inc | 345 +++++++ .../attiny/usbdrv/usbdrvasm165.inc | 452 ++++++++++ .../attiny/usbdrv/usbdrvasm18-crc.inc | 706 +++++++++++++++ .../bootloaders/attiny/usbdrv/usbdrvasm20.inc | 359 ++++++++ .../attiny/usbdrv/usbportability.h | 143 +++ sparkfun/tiny/driver/amd64/libusb0.dll | Bin 0 -> 76384 bytes sparkfun/tiny/driver/amd64/libusb0.sys | Bin 0 -> 52832 bytes sparkfun/tiny/driver/ia64/libusb0.dll | Bin 0 -> 157792 bytes sparkfun/tiny/driver/ia64/libusb0.sys | Bin 0 -> 110176 bytes .../license/libusb0/installer_license.txt | 851 ++++++++++++++++++ .../tiny/driver/micronucleus_bootloader.cat | Bin 0 -> 9090 bytes .../tiny/driver/micronucleus_bootloader.inf | Bin 0 -> 8168 bytes sparkfun/tiny/driver/x86/libusb0.sys | Bin 0 -> 42592 bytes sparkfun/tiny/driver/x86/libusb0_x86.dll | Bin 0 -> 67680 bytes .../extras/uploader/49-micronucleus.rules | 16 + sparkfun/tiny/extras/uploader/Makefile | 60 ++ sparkfun/tiny/extras/uploader/Readme | 26 + .../micronucleus-2.03-SFE-windows.tar.bz2 | Bin 0 -> 13465 bytes .../extras/uploader/library/littleWire_util.c | 13 + .../extras/uploader/library/littleWire_util.h | 14 + .../uploader/library/micronucleus_lib.c | 323 +++++++ .../uploader/library/micronucleus_lib.h | 110 +++ sparkfun/tiny/extras/uploader/micronucleus.c | 434 +++++++++ sparkfun/tiny/platform.txt | 68 ++ sparkfun/tiny/variants/tiny14/pins_arduino.h | 132 +++ 68 files changed, 13737 insertions(+), 1 deletion(-) create mode 100644 sparkfun/tiny/boards.txt create mode 100644 sparkfun/tiny/bootloaders/attiny/Makefile create mode 100644 sparkfun/tiny/bootloaders/attiny/README.md create mode 100644 sparkfun/tiny/bootloaders/attiny/configuration/t167_default/Makefile.inc create mode 100644 sparkfun/tiny/bootloaders/attiny/configuration/t167_default/bootloaderconfig.h create mode 100644 sparkfun/tiny/bootloaders/attiny/configuration/t45_default/Makefile.inc create mode 100644 sparkfun/tiny/bootloaders/attiny/configuration/t45_default/bootloaderconfig.h create mode 100644 sparkfun/tiny/bootloaders/attiny/configuration/t841_default/Makefile.inc create mode 100644 sparkfun/tiny/bootloaders/attiny/configuration/t841_default/bootloaderconfig.h create mode 100644 sparkfun/tiny/bootloaders/attiny/configuration/t84_default/Makefile.inc create mode 100644 sparkfun/tiny/bootloaders/attiny/configuration/t84_default/bootloaderconfig.h create mode 100644 sparkfun/tiny/bootloaders/attiny/configuration/t84_roshamglo/Makefile.inc create mode 100644 sparkfun/tiny/bootloaders/attiny/configuration/t84_roshamglo/bootloaderconfig.h create mode 100644 sparkfun/tiny/bootloaders/attiny/configuration/t85_aggressive/Makefile.inc create mode 100644 sparkfun/tiny/bootloaders/attiny/configuration/t85_aggressive/bootloaderconfig.h create mode 100644 sparkfun/tiny/bootloaders/attiny/configuration/t85_default/Makefile.inc create mode 100644 sparkfun/tiny/bootloaders/attiny/configuration/t85_default/bootloaderconfig.h create mode 100644 sparkfun/tiny/bootloaders/attiny/crt1.S create mode 100644 sparkfun/tiny/bootloaders/attiny/main.c create mode 100644 sparkfun/tiny/bootloaders/attiny/makerelease.bat create mode 100644 sparkfun/tiny/bootloaders/attiny/osccalASM.S create mode 100644 sparkfun/tiny/bootloaders/attiny/releases/t84_roshamglo.hex create mode 100644 sparkfun/tiny/bootloaders/attiny/upgrade.c create mode 100644 sparkfun/tiny/bootloaders/attiny/usbconfig.h create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/Changelog.txt create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/CommercialLicense.txt create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/License.txt create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/Readme.txt create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/USB-ID-FAQ.txt create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/USB-IDs-for-free.txt create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/asmcommon.inc create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/oddebug.c create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/oddebug.c.lst create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/oddebug.h create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/usbconfig-prototype.h create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrv.c create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrv.h create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm.S create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm.asm create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm12.inc create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm128.inc create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm15.inc create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm16.inc create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm165.inc create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm18-crc.inc create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm20.inc create mode 100644 sparkfun/tiny/bootloaders/attiny/usbdrv/usbportability.h create mode 100644 sparkfun/tiny/driver/amd64/libusb0.dll create mode 100644 sparkfun/tiny/driver/amd64/libusb0.sys create mode 100644 sparkfun/tiny/driver/ia64/libusb0.dll create mode 100644 sparkfun/tiny/driver/ia64/libusb0.sys create mode 100644 sparkfun/tiny/driver/license/libusb0/installer_license.txt create mode 100644 sparkfun/tiny/driver/micronucleus_bootloader.cat create mode 100644 sparkfun/tiny/driver/micronucleus_bootloader.inf create mode 100644 sparkfun/tiny/driver/x86/libusb0.sys create mode 100644 sparkfun/tiny/driver/x86/libusb0_x86.dll create mode 100644 sparkfun/tiny/extras/uploader/49-micronucleus.rules create mode 100644 sparkfun/tiny/extras/uploader/Makefile create mode 100644 sparkfun/tiny/extras/uploader/Readme create mode 100644 sparkfun/tiny/extras/uploader/builds/micronucleus-2.03-SFE-windows.tar.bz2 create mode 100644 sparkfun/tiny/extras/uploader/library/littleWire_util.c create mode 100644 sparkfun/tiny/extras/uploader/library/littleWire_util.h create mode 100644 sparkfun/tiny/extras/uploader/library/micronucleus_lib.c create mode 100644 sparkfun/tiny/extras/uploader/library/micronucleus_lib.h create mode 100644 sparkfun/tiny/extras/uploader/micronucleus.c create mode 100644 sparkfun/tiny/platform.txt create mode 100644 sparkfun/tiny/variants/tiny14/pins_arduino.h diff --git a/IDE_Board_Manager/package_sparkfun_index.json b/IDE_Board_Manager/package_sparkfun_index.json index 2634fe36..76b8c06d 100644 --- a/IDE_Board_Manager/package_sparkfun_index.json +++ b/IDE_Board_Manager/package_sparkfun_index.json @@ -472,6 +472,55 @@ ], "email": "ivan@esp8266.com", "name": "esp8266" - } + }, + { + "name":"SparkFun", + "maintainer":"SparkFun Electronics", + "websiteURL":"https://SparkFun.com", + "email":"TechSupport@SparkFun.com", + "help":{ + "online":"https://forum.sparkfun.com" + }, + "platforms":[ + { + "name":"SparkFun ATtiny Boards", + "architecture":"tiny", + "version":"0.1.0", + "category":"Contributed", + "url":"https://github.com/sparkfun/Arduino_Boards/raw/tiny/IDE_Board_Manager/sparkfun-tiny-0.1.0.tar.bz2", + "archiveFileName":"sparkfunboards-tiny-0.1.0.tar.bz2", + "checksum":"SHA-256:%%%SHA%%%", + "size":"%%%SIZE IN BYTES%%%", + "help":{ + "online":"https://forums.sparkfun.com" + }, + "boards":[ + { "name":"Roshamglo" } + ], + "toolsDependencies":[ + { + "packager": "SparkFun", + "name": "micronucleus", + "version": "2.03-SFE" + } + ] + } + ], + "tools":[ + { + "name": "micronucleus", + "version": "2.03-SFE", + "systems": [ + { + "host": "i686-mingw32", + "url": "", + "archiveFileName": "nrfutil-src-0.5.2-SFE-windows.tar.bz2", + "size": " 13465", + "checksum": "SHA-256:1873EA97B25F348850C4A045D250EA6143FACC93DE427D5B6648438DD6D636AB" + } + ] + } + ] + } ] } diff --git a/sparkfun/tiny/boards.txt b/sparkfun/tiny/boards.txt new file mode 100644 index 00000000..81cda9a1 --- /dev/null +++ b/sparkfun/tiny/boards.txt @@ -0,0 +1,29 @@ +# SparkFun AVR ATtiny boards definitions + +menu.cpu=Processor + +################################################################################ +################################## Roshamglo ################################### +################################################################################ +Roshamglo.name=Roshamglo (ATtiny 84, 3.3V, 8MHz) + +Roshamglo.upload.using=micronucleusprog +Roshamglo.upload.protocol=usb +Roshamglo.upload.tool=micronucleus +Roshamglo.upload.maximum_size=6144 + +Roshamglo.build.mcu=attiny84 +Roshamglo.build.f_cpu=8000000L +Roshamglo.build.board=ROSHAMGLO +Roshamglo.build.core=arduino:arduino +Roshamglo.build.variant=tiny14 +Roshamglo.build.usb_manufacturer="SparkFun Electronics" +Roshamglo.build.usb_product="SparkFun Roshamglo" +Roshamglo.build.vid=0x1B4F +Roshamglo.build.pid=0x0014 + +Roshamglo.bootloader.tool=arduino:avrdude +Roshamglo.bootloader.low_fuses=0xE2 +Roshamglo.bootloader.high_fuses=0xDD +Roshamglo.bootloader.extended_fuses=0xFE +Roshamglo.bootloader.file=attiny/releases/t84_roshamglo.hex \ No newline at end of file diff --git a/sparkfun/tiny/bootloaders/attiny/Makefile b/sparkfun/tiny/bootloaders/attiny/Makefile new file mode 100644 index 00000000..828d4647 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/Makefile @@ -0,0 +1,98 @@ +# Name: Makefile +# Project: Micronucleus +# Author: Jenna Fox; portions by Christian Starkjohann, Louis Beaudoin +# Creation Date: 2007-12-10 +# Tabsize: 4 +# Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH +# License: GNU GPL v2 (see License.txt) + +CONFIG ?= t85_default +#CONFIG ?= t85_aggressive +#CONFIG ?= t841_default +#CONFIG ?= t167_default + +############################################################################### +# Configure the following variables according to your AVR. +# Program the device with +# make fuse # to set the clock generator, boot section size etc. +# make flash # to load the boot loader into flash +# make disablereset # use external reset line for IO (CAUTION: this is not easy to enable again, see README) + +CFLAGS = +CONFIGPATH = configuration/$(CONFIG) +include $(CONFIGPATH)/Makefile.inc + +PROGRAMMER ?= -c USBasp +# PROGRAMMER contains AVRDUDE options to address your programmer + +# Tools: +AVRDUDE = avrdude $(PROGRAMMER) -p $(DEVICE) +CC = avr-gcc + +# Options: +CFLAGS += -I. -g2 -Os # -Wall +CFLAGS += -I$(CONFIGPATH) -mmcu=$(DEVICE) -DF_CPU=$(F_CPU) -DBOOTLOADER_ADDRESS=0x$(BOOTLOADER_ADDRESS) +CFLAGS += -nostartfiles -ffunction-sections -fdata-sections -fpack-struct -fno-inline-small-functions -fno-move-loop-invariants -fno-tree-scev-cprop + +LDFLAGS = -Wl,--relax,--section-start=.text=$(BOOTLOADER_ADDRESS),--gc-sections,-Map=main.map + +OBJECTS = crt1.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o +OBJECTS += osccalASM.o + +# symbolic targets: +all: main.hex + +.c.o: + @$(CC) $(CFLAGS) -c $< -o $@ -Wa,-ahls=$<.lst + +.S.o: + @$(CC) $(CFLAGS) -x assembler-with-cpp -c $< -o $@ +# "-x assembler-with-cpp" should not be necessary since this is the default +# file type for the .S (with capital S) extension. However, upper case +# characters are not always preserved on Windows. To ensure WinAVR +# compatibility define the file type manually. + +.c.s: + @$(CC) $(CFLAGS) -S $< -o $@ + +flash: all + $(AVRDUDE) -U flash:w:main.hex:i -B 20 + +readflash: + $(AVRDUDE) -U flash:r:read.hex:i -B 20 + +fuse: + $(AVRDUDE) $(FUSEOPT) -B 20 + +disablereset: + $(AVRDUDE) $(FUSEOPT_DISABLERESET) -B 20 + +read_fuses: + $(UISP) --rd_fuses -B 20 + +clean: + @rm -f main.hex main.bin main.c.lst main.map main.raw *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s main.lss + +# file targets: +main.bin: $(OBJECTS) + @$(CC) $(CFLAGS) -o main.bin $(OBJECTS) $(LDFLAGS) + +main.hex: main.bin + @echo Building Micronucleus configuration: $(CONFIG) + @rm -f main.hex main.eep.hex + @avr-objcopy -j .text -j .data -O ihex main.bin main.hex + @echo Size of sections: + @avr-size main.bin + @echo Size of binary hexfile. Use the "data" size to calculate the bootloader address: + @avr-size main.hex + +upgrade: main.bin + avr-objcopy -O binary main.bin main.raw + avr-objcopy -I binary -O elf32-avr \ + --rename-section .data=.text \ + --redefine-sym _binary_main_raw_start=loader \ + --redefine-sym _binary_main_raw_end=loader_end \ + main.raw bootloader_linkable.o + +disasm: main.bin + @avr-objdump -d -S main.bin >main.lss diff --git a/sparkfun/tiny/bootloaders/attiny/README.md b/sparkfun/tiny/bootloaders/attiny/README.md new file mode 100644 index 00000000..60593650 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/README.md @@ -0,0 +1,145 @@ +Micronucleus V2.03 +================== + +This version of micronucleus has been copied and modified by SparkFun Electronics for the Roshamglo project. The original micronucleus can be found at https://github.com/micronucleus/micronucleus. + +Micronucleus is a bootloader designed for AVR ATtiny microcontrollers with a minimal usb interface, cross platform libusb-based program upload tool, and a strong emphasis on bootloader compactness. To the authors knowledge this is, by far, the smallest USB bootloader for AVR ATtiny + +The V2.0 release is a complete rewrite of the firmware and offers significant improvements over V1.x: + + • Support for the entire ATtiny family instead of only ATtiny85. + • Much smaller size. All configurations are below 2kb. + • Interrupt free V-USB: no patching of the user program INT-vector anymore. + • Faster uploads due to new protocol. + • Far jmp also allows using ATtinies with more than 8kb flash. + • Many robustness improvements, such as compatibility to USB hubs and + less erratic time out behavior. + +Due to the many changes, also the upload tool had to be updated. The V2.0 upload tool is backwards compatible to the V1.X tool, though. + +The last release of the V1.x can be found here: https://github.com/micronucleus/micronucleus/tree/v1.11 + + +Usage +===== + +The bootloader allows uploading of new firmware via USB. In its usual configuration it is invoked at device reset and will identify to the host computer. If no communication is initiated by the host machine within a given time, the bootloader will time out and enter the user program, if one is present. + +For proper timing, the command line tool should to be started on the host computer _before_ the bootloader is invoked. + +Windows machines will need to install the libusb drivers found in the /windows_drivers folder. Clean Micronucleus devices without uploaded userprogram will not time out and allow sufficient time for proper driver installation. Linux and OS X do not require custom drivers. + +Windows 10: Installing unsigned drivers became more difficult in Windows 10. Please use the Zadig driver installer as provided in the /windows_driver_installer folder. + +Please invoke the command line tool with "micronucleus -help" for a list of available options. + +The bootloader resides in the same memory as the user program, since the ATtiny series does not support a protected bootloader section. Therefore, special care has to be taken not to overwrite the bootloader if the user program uses the self programming features. The bootloader will patch itself into the reset vector of the user program. No other interrupt vectors are changed. + +Compiling +========= + +Micronucleus can be configured to support all devices of the ATtiny series, with the exception of the reduced core ATtiny 4/5/9/10/20/40. + +To allow maximum flexibility, micronucleus supports a configuration system. To compile micronucleus with a specific configuration, please invoke the AVR-GCC tool-chain with: + + make CONFIG= + +Output file is "main.hex," which should be uploaded to your microcontroller using a program like avrdude. It can also be copied to the /releases folder. + +Currently, the following configurations are included and tested. Please check the subfolders /firmware/configurations/ for details. Hex files can be found in /releases. + +t84_default - ATtiny84A default configuration - 1542 bytes +t84_roshamglo - ATtiny84A for Roshamglo project - 1586 bytes + +You can add your own configuration by adding a new folder to /firmware/configurations/. The folder has to contain a customized "Makefile.inc" and "bootloaderconfig.h". Feel free to supply a pull request if you added and tested a previously unsupported device. + +If changes to the configuration lead to an increase in bootloader size, it may be necessary to change the bootloader start address. Please consult "Makefile.inc" for details. + +Other make options: + + make CONFIG= fuse # Configure fuses + make CONFIG= flash # Uploade the bootloader using AVRDUDE + +There is also an option to disable the reset line and use it as an I/O. While it may seem tempting to use this feature to make an additional I/O pin available on the ATtiny85, we strongly discourage from doing so, as it led to many issues in the past. + +Please "make clean" when switching from one configuration to another. + + +Devices using Micronucleus +========================== + +Micronucleus is widely installed on thousands of open source hardware devices. Please find an incomplete list here: +https://github.com/micronucleus/micronucleus/blob/master/Devices_with_Micronucleus.md + + +License +======= + +This project is released under the GPLv2 license. Code uploaded via the bootloader is not subject to any license. + +In addition, we'd like you to consider these points if you intend to sell products using micronucleus: + + • Please make your hardware open source. At least the schematic needs to be + published according to the license inherited from V-USB. + + • Your documentation should mention Micronucleus and include a link to the + main repository (https://github.com/micronucleus/) + + • Please do not "rebrand" micronucleus by renaming the USB device. + + • Feel welcome to submit a pull request to include your product in the + "Devices using Micronucleus"-list. + + +Changes +======= + + + • v2.0b June 6th, 2015 + This pull request documents changes leading to V2.0: https://github.com/micronucleus/micronucleus/pull/43 + + • v2.01 July 26th, 2015 + This pull request documents changes leading to V2.1: https://github.com/micronucleus/micronucleus/pull/66 + - Fixes "unknown USB device" issue when devices with <16MHz CPU clock were + connected to a USB3.0 port. + - Fixes one bug that could lead to a deadlock if no USB was connected + while the bootloader was active and noise was injected into the floating D+ input. + - D- line is released before the user program is started, instead of pulling it + down. This solves various issues where Micronucleus was not recognized after a + reset depending on the duration of the reset button activation. Att: This may + lead to a "Unknown device" pop-up in Windows, if the user program does not have + USB functionality itself. + +• v2.02 August 3rd, 2015 + - Fixes timing bug with Windows 10 USB drivers. Some Win 10 drivers reduce the + delay between reset and the first data packet to 20 ms. This led to an issue + with osccalASM.S, which did not terminate correctly. + +• v2.03 February 13th, 2016 + - Added page buffer clearing if a new block transfer is initiated. This fixes a + critical, but extremely rare bug that could lead to bricking of the + device if micronucleus is restarted after an USB error. + - #74 Fixed LED_INIT macro so it only modifies the DDR register bit of the LED. + (Thanks @russdill) + +Credits +======= + +Firmware: + • Micronucleus V2.03 (c) 2016 Tim Bo"scke - cpldcpu@gmail.com + (c) 2014 Shay Green + • Original Micronucleus (c) 2012 Jenna Fox + • Based on USBaspLoader-tiny85 (c) 2012 Louis Beaudoin + • Based on USBaspLoader (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH + +Commandline tool: + • Original commandline tool (c) 2012 by ihsan Kehribar + (c) 2012 Jenna Fox + • Updates for V2.x (c) 2014 T. Bo"scke + +Special Thanks: + • Aaron Stone/@sodabrew for building the OS X command line tool and various fixes. + • Objective Development's great V-USB bitbanging usb driver + • Embedded Creations' pioneering and inspiring USBaspLoader-tiny85 + • Digistump for motivation and contributing the VID/PID pair + • Numerous supporters for smaller bug fixes and improvements. \ No newline at end of file diff --git a/sparkfun/tiny/bootloaders/attiny/configuration/t167_default/Makefile.inc b/sparkfun/tiny/bootloaders/attiny/configuration/t167_default/Makefile.inc new file mode 100644 index 00000000..86103078 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/configuration/t167_default/Makefile.inc @@ -0,0 +1,21 @@ +# Name: Makefile +# Project: Micronucleus +# License: GNU GPL v2 (see License.txt) +# +# Controller type: ATtiny 167 +# Configuration: Default configuration. +# Last Change: Mar 16,2014 + + +F_CPU = 16000000 +DEVICE = attiny167 + +# hexadecimal address for bootloader section to begin. To calculate the best value: +# - make clean; make main.hex; ### output will list data: 2124 (or something like that) +# - for the size of your device (8kb = 1024 * 8 = 8192) subtract above value 2124... = 6068 +# - How many pages in is that? 6068 / 64 (tiny85 page size in bytes) = 94.8125 +# - round that down to 94 - our new bootloader address is 94 * 64 = 6016, in hex = 1780 +BOOTLOADER_ADDRESS = 3A00 + +FUSEOPT = # TODO +FUSEOPT_DISABLERESET = # TODO diff --git a/sparkfun/tiny/bootloaders/attiny/configuration/t167_default/bootloaderconfig.h b/sparkfun/tiny/bootloaders/attiny/configuration/t167_default/bootloaderconfig.h new file mode 100644 index 00000000..0eab4ee1 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/configuration/t167_default/bootloaderconfig.h @@ -0,0 +1,275 @@ + /* Name: bootloaderconfig.h + * Micronucleus configuration file. + * This file (together with some settings in Makefile.inc) configures the boot loader + * according to the hardware. + * + * Controller type: ATtiny 167 - 16 MHz with crystal + * Configuration: Standard configuration - Follows Digispark Pro defaults. Needs 16Mhz XTAL. + * USB D- : PB3 + * USB D+ : PB6 + * Entry : Always + * LED : Active High on PB1 + * OSCCAL : No change due to external crystal + * Note: Uses 16 MHz V-USB implementation. + * Last Change: JUn 15,2015 + * + * License: GNU GPL v2 (see License.txt + */ + +#ifndef __bootloaderconfig_h_included__ +#define __bootloaderconfig_h_included__ + +/* ------------------------------------------------------------------------- */ +/* Hardware configuration. */ +/* Change this according to your CPU and USB configuration */ +/* ------------------------------------------------------------------------- */ + +#define USB_CFG_IOPORTNAME B + /* This is the port where the USB bus is connected. When you configure it to + * "B", the registers PORTB, PINB and DDRB will be used. + */ + +#define USB_CFG_DMINUS_BIT 3 +/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected. + * This may be any bit in the port. + */ +#define USB_CFG_DPLUS_BIT 6 +/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected. + * This may be any bit in the port, but must be configured as a pin change interrupt. + */ + +#define USB_CFG_CLOCK_KHZ (F_CPU/1000) +/* Clock rate of the AVR in kHz. Legal values are 12000, 12800, 15000, 16000, + * 16500, 18000 and 20000. The 12.8 MHz and 16.5 MHz versions of the code + * require no crystal, they tolerate +/- 1% deviation from the nominal + * frequency. All other rates require a precision of 2000 ppm and thus a + * crystal! + * Since F_CPU should be defined to your actual clock rate anyway, you should + * not need to modify this setting. + */ + +/* ------------- Set up interrupt configuration (CPU specific) -------------- */ +/* The register names change quite a bit in the ATtiny family. Pay attention */ +/* to the manual. Note that the interrupt flag system is still used even though */ +/* interrupts are disabled. So this has to be configured correctly. */ + + +// setup interrupt for Pin Change for D+ + +// This is configured for PORTB. + +#define USB_INTR_CFG PCMSK1 +#define USB_INTR_CFG_SET (1 << USB_CFG_DPLUS_BIT) +#define USB_INTR_CFG_CLR 0 +#define USB_INTR_ENABLE PCICR +#define USB_INTR_ENABLE_BIT PCIE1 +#define USB_INTR_PENDING PCIFR +#define USB_INTR_PENDING_BIT PCIF1 +#define USB_INTR_VECTOR PCINT1_vect + +/* Configuration for PORTA */ +/* +#define USB_INTR_CFG PCMSK0 +#define USB_INTR_CFG_SET (1 << USB_CFG_DPLUS_BIT) +#define USB_INTR_CFG_CLR 0 +#define USB_INTR_ENABLE PCICR +#define USB_INTR_ENABLE_BIT PCIE0 +#define USB_INTR_PENDING PCIFR +#define USB_INTR_PENDING_BIT PCIF0 +#define USB_INTR_VECTOR PCINT0_vect +*/ + +/* ------------------------------------------------------------------------- */ +/* Configuration relevant to the CPU the bootloader is running on */ +/* ------------------------------------------------------------------------- */ + +// how many milliseconds should host wait till it sends another erase or write? +// needs to be above 4.5 (and a whole integer) as avr freezes for 4.5ms +#define MICRONUCLEUS_WRITE_SLEEP 5 + + +/* ---------------------- feature / code size options ---------------------- */ +/* Configure the behavior of the bootloader here */ +/* ------------------------------------------------------------------------- */ + +/* + * Define Bootloader entry condition + * + * If the entry condition is not met, the bootloader will not be activated and the user program + * is executed directly after a reset. If no user program has been loaded, the bootloader + * is always active. + * + * ENTRY_ALWAYS Always activate the bootloader after reset. Requires the least + * amount of code. + * + * ENTRY_WATCHDOG Activate the bootloader after a watchdog reset. This can be used + * to enter the bootloader from the user program. + * Adds 22 bytes. + * + * ENTRY_EXT_RESET Activate the bootloader after an external reset was issued by + * pulling the reset pin low. It may be necessary to add an external + * pull-up resistor to the reset pin if this entry method appears to + * behave unreliably. + * Adds 22 bytes. + * + * ENTRY_JUMPER Activate the bootloader when a specific pin is pulled low by an + * external jumper. + * Adds 34 bytes. + * + * JUMPER_PIN Pin the jumper is connected to. (e.g. PB0) + * JUMPER_PORT Port out register for the jumper (e.g. PORTB) + * JUMPER_DDR Port data direction register for the jumper (e.g. DDRB) + * JUMPER_INP Port inout register for the jumper (e.g. PINB) + * + */ + +#define ENTRYMODE ENTRY_ALWAYS + +#define JUMPER_PIN PB0 +#define JUMPER_PORT PORTB +#define JUMPER_DDR DDRB +#define JUMPER_INP PINB + +/* + Internal implementation, don't change this unless you want to add an entrymode. +*/ + +#define ENTRY_ALWAYS 1 +#define ENTRY_WATCHDOG 2 +#define ENTRY_EXT_RESET 3 +#define ENTRY_JUMPER 4 + +#if ENTRYMODE==ENTRY_ALWAYS + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() 1 +#elif ENTRYMODE==ENTRY_WATCHDOG + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() (MCUSR&_BV(WDRF)) +#elif ENTRYMODE==ENTRY_EXT_RESET + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() (MCUSR&_BV(EXTRF)) +#elif ENTRYMODE==ENTRY_JUMPER + // Enable pull up on jumper pin and delay to stabilize input + #define bootLoaderInit() {JUMPER_DDR&=~_BV(JUMPER_PIN);JUMPER_PORT|=_BV(JUMPER_PIN);_delay_ms(1);} + #define bootLoaderExit() {JUMPER_PORT&=~_BV(JUMPER_PIN);} + #define bootLoaderStartCondition() (!(JUMPER_INP&_BV(JUMPER_PIN))) +#else + #error "No entry mode defined" +#endif + +/* + * Define bootloader timeout value. + * + * The bootloader will only time out if a user program was loaded. + * + * AUTO_EXIT_NO_USB_MS The bootloader will exit after this delay if no USB is connected. + * Set to 0 to disable + * Adds ~6 bytes. + * (This will wait for an USB SE0 reset from the host) + * + * AUTO_EXIT_MS The bootloader will exit after this delay if no USB communication + * from the host tool was received. + * Set to 0 to disable + * + * All values are approx. in milliseconds + */ + +#define AUTO_EXIT_NO_USB_MS 0 +#define AUTO_EXIT_MS 6000 + + /* + * Defines the setting of the RC-oscillator calibration after quitting the bootloader. (OSCCAL) + * + * OSCCAL_RESTORE_DEFAULT Set this to '1' to revert to OSCCAL factore calibration after bootlaoder exit. + * This is 8 MHz +/-2% on most devices or 16 MHz on the ATtiny 85 with activated PLL. + * Adds ~14 bytes. + * + * OSCCAL_SAVE_CALIB Set this to '1' to save the OSCCAL calibration during program upload. + * This value will be reloaded after reset and will also be used for the user + * program unless "OSCCAL_RESTORE_DEFAULT" is active. This allows calibrate the internal + * RC oscillator to the F_CPU target frequency +/-1% from the USB timing. Please note + * that only true if the ambient temperature does not change. + * Adds ~38 bytes. + * + * OSCCAL_HAVE_XTAL Set this to '1' if you have an external crystal oscillator. In this case no attempt + * will be made to calibrate the oscillator. You should deactivate both options above + * if you use this to avoid redundant code. + * + * If both options are selected, OSCCAL_RESTORE_DEFAULT takes precedence. + * + * If no option is selected, OSCCAL will be left untouched and stays at either factory calibration or F_CPU depending + * on whether the bootloader was activated. This will take the least memory. You can use this if your program + * comes with its own OSCCAL calibration or an external clock source is used. + */ + +#define OSCCAL_RESTORE_DEFAULT 0 +#define OSCCAL_SAVE_CALIB 0 +#define OSCCAL_HAVE_XTAL 1 + +/* + * Defines handling of an indicator LED while the bootloader is active. + * + * LED_MODE Define behavior of attached LED or suppress LED code. + * + * NONE Do not generate LED code (gains 18 bytes). + * ACTIVE_HIGH LED is on when output pin is high. This will toggle bettwen 1 and 0. + * ACTIVE_LOW LED is on when output pin is low. This will toggle between Z and 0. + * + * LED_DDR,LED_PORT,LED_PIN Where is your LED connected? + * + */ + +#define LED_MODE ACTIVE_HIGH + +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PB1 + +/* + * This is the implementation of the LED code. Change the configuration above unless you want to + * change the led behavior + * + * LED_INIT Called once after bootloader entry + * LED_EXIT Called once during bootloader exit + * LED_MACRO Called in the main loop with the idle counter as parameter. + * Use to define pattern. +*/ + +#define NONE 0 +#define ACTIVE_HIGH 1 +#define ACTIVE_LOW 2 + +#if LED_MODE==ACTIVE_HIGH + #define LED_INIT(x) LED_DDR |= _BV(LED_PIN); + #define LED_EXIT(x) {LED_DDR &=~_BV(LED_PIN);LED_PORT &=~_BV(LED_PIN);} + #define LED_MACRO(x) if ( x & 0x4c ) {LED_PORT&=~_BV(LED_PIN);} else {LED_PORT|=_BV(LED_PIN);} +#elif LED_MODE==ACTIVE_LOW + #define LED_INIT(x) LED_PORT &=~_BV(LED_PIN); + #define LED_EXIT(x) LED_DDR &=~_BV(LED_PIN); + #define LED_MACRO(x) if ( x & 0x4c ) {LED_DDR&=~_BV(LED_PIN);} else {LED_DDR|=_BV(LED_PIN);} +#elif LED_MODE==NONE + #define LED_INIT(x) + #define LED_EXIT(x) + #define LED_MACRO(x) +#endif + +/* --------------------------------------------------------------------------- */ +/* Micronucleus internal configuration. Do not change anything below this line */ +/* --------------------------------------------------------------------------- */ + +// Microcontroller vectortable entries in the flash +#define RESET_VECTOR_OFFSET 0 + +// number of bytes before the boot loader vectors to store the tiny application vector table +#define TINYVECTOR_RESET_OFFSET 4 +#define TINYVECTOR_OSCCAL_OFFSET 6 + +/* ------------------------------------------------------------------------ */ +// postscript are the few bytes at the end of programmable memory which store tinyVectors +#define POSTSCRIPT_SIZE 6 +#define PROGMEM_SIZE (BOOTLOADER_ADDRESS - POSTSCRIPT_SIZE) /* max size of user program */ + +#endif /* __bootloader_h_included__ */ diff --git a/sparkfun/tiny/bootloaders/attiny/configuration/t45_default/Makefile.inc b/sparkfun/tiny/bootloaders/attiny/configuration/t45_default/Makefile.inc new file mode 100644 index 00000000..87c22a66 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/configuration/t45_default/Makefile.inc @@ -0,0 +1,60 @@ +# Name: Makefile +# Project: Micronucleus +# License: GNU GPL v2 (see License.txt) + +# Controller type: ATtiny 45 - 16.5 MHz +# Configuration: Default +# Last Change: Oct 9,2015 + + +F_CPU = 16500000 +DEVICE = attiny45 + +# hexadecimal address for bootloader section to begin. To calculate the best value: +# - make clean; make main.hex; ### output will list data: 2124 (or something like that) +# - for the size of your device (8kb = 1024 * 8 = 8192) subtract above value 2124... = 6068 +# - How many pages in is that? 6068 / 64 (tiny85 page size in bytes) = 94.8125 +# - round that down to 94 - our new bootloader address is 94 * 64 = 6016, in hex = 1780 +BOOTLOADER_ADDRESS = 980 + +FUSEOPT = -U lfuse:w:0xe1:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m +FUSEOPT_DISABLERESET = -U lfuse:w:0xe1:m -U efuse:w:0xfe:m -U hfuse:w:0x5d:m + +#--------------------------------------------------------------------- +# ATtiny85 +#--------------------------------------------------------------------- +# Fuse extended byte: +# 0xFE = - - - - - 1 1 0 +# ^ +# | +# +---- SELFPRGEN (enable self programming flash) +# +# Fuse high byte: +# 0xdd = 1 1 0 1 1 1 0 1 +# ^ ^ ^ ^ ^ \-+-/ +# | | | | | +------ BODLEVEL 2..0 (brownout trigger level -> 2.7V) +# | | | | +---------- EESAVE (preserve EEPROM on Chip Erase -> not preserved) +# | | | +-------------- WDTON (watchdog timer always on -> disable) +# | | +---------------- SPIEN (enable serial programming -> enabled) +# | +------------------ DWEN (debug wire enable) +# +-------------------- RSTDISBL (disable external reset -> enabled) +# +# Fuse high byte ("no reset": external reset disabled, can't program through SPI anymore) +# 0x5d = 0 1 0 1 1 1 0 1 +# ^ ^ ^ ^ ^ \-+-/ +# | | | | | +------ BODLEVEL 2..0 (brownout trigger level -> 2.7V) +# | | | | +---------- EESAVE (preserve EEPROM on Chip Erase -> not preserved) +# | | | +-------------- WDTON (watchdog timer always on -> disable) +# | | +---------------- SPIEN (enable serial programming -> enabled) +# | +------------------ DWEN (debug wire enable) +# +-------------------- RSTDISBL (disable external reset -> disabled!) +# +# Fuse low byte: +# 0xe1 = 1 1 1 0 0 0 0 1 +# ^ ^ \+/ \--+--/ +# | | | +------- CKSEL 3..0 (clock selection -> HF PLL) +# | | +--------------- SUT 1..0 (BOD enabled, fast rising power) +# | +------------------ CKOUT (clock output on CKOUT pin -> disabled) +# +-------------------- CKDIV8 (divide clock by 8 -> don't divide) + +############################################################################### diff --git a/sparkfun/tiny/bootloaders/attiny/configuration/t45_default/bootloaderconfig.h b/sparkfun/tiny/bootloaders/attiny/configuration/t45_default/bootloaderconfig.h new file mode 100644 index 00000000..ecd6261d --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/configuration/t45_default/bootloaderconfig.h @@ -0,0 +1,259 @@ +/* Name: bootloaderconfig.h + * Micronucleus configuration file. + * This file (together with some settings in Makefile.inc) configures the boot loader + * according to the hardware. + * + * Controller type: ATtiny 45 - 16.5 MHz + * Configuration: Default configuration + * USB D- : PB3 + * USB D+ : PB4 + * Entry : Always + * LED : None + * OSCCAL : Stays at 16 MHz + * Note: Uses 16.5 MHz V-USB implementation with PLL + * Last Change: Mar 16,2014 + * + * License: GNU GPL v2 (see License.txt + */ +#ifndef __bootloaderconfig_h_included__ +#define __bootloaderconfig_h_included__ + +/* ------------------------------------------------------------------------- */ +/* Hardware configuration. */ +/* Change this according to your CPU and USB configuration */ +/* ------------------------------------------------------------------------- */ + +#define USB_CFG_IOPORTNAME B + /* This is the port where the USB bus is connected. When you configure it to + * "B", the registers PORTB, PINB and DDRB will be used. + */ + +#define USB_CFG_DMINUS_BIT 3 +/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected. + * This may be any bit in the port. + */ +#define USB_CFG_DPLUS_BIT 4 +/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected. + * This may be any bit in the port, but must be configured as a pin change interrupt. + */ + +#define USB_CFG_CLOCK_KHZ (F_CPU/1000) +/* Clock rate of the AVR in kHz. Legal values are 12000, 12800, 15000, 16000, + * 16500, 18000 and 20000. The 12.8 MHz and 16.5 MHz versions of the code + * require no crystal, they tolerate +/- 1% deviation from the nominal + * frequency. All other rates require a precision of 2000 ppm and thus a + * crystal! + * Since F_CPU should be defined to your actual clock rate anyway, you should + * not need to modify this setting. + */ + +/* ------------- Set up interrupt configuration (CPU specific) -------------- */ +/* The register names change quite a bit in the ATtiny family. Pay attention */ +/* to the manual. Note that the interrupt flag system is still used even though */ +/* interrupts are disabled. So this has to be configured correctly. */ + + +// setup interrupt for Pin Change for D+ +#define USB_INTR_CFG PCMSK +#define USB_INTR_CFG_SET (1 << USB_CFG_DPLUS_BIT) +#define USB_INTR_CFG_CLR 0 +#define USB_INTR_ENABLE GIMSK +#define USB_INTR_ENABLE_BIT PCIE +#define USB_INTR_PENDING GIFR +#define USB_INTR_PENDING_BIT PCIF +#define USB_INTR_VECTOR PCINT0_vect + +/* ------------------------------------------------------------------------- */ +/* Configuration relevant to the CPU the bootloader is running on */ +/* ------------------------------------------------------------------------- */ + +// how many milliseconds should host wait till it sends another erase or write? +// needs to be above 4.5 (and a whole integer) as avr freezes for 4.5ms +#define MICRONUCLEUS_WRITE_SLEEP 5 + + +/* ---------------------- feature / code size options ---------------------- */ +/* Configure the behavior of the bootloader here */ +/* ------------------------------------------------------------------------- */ + +/* + * Define Bootloader entry condition + * + * If the entry condition is not met, the bootloader will not be activated and the user program + * is executed directly after a reset. If no user program has been loaded, the bootloader + * is always active. + * + * ENTRY_ALWAYS Always activate the bootloader after reset. Requires the least + * amount of code. + * + * ENTRY_WATCHDOG Activate the bootloader after a watchdog reset. This can be used + * to enter the bootloader from the user program. + * Adds 22 bytes. + * + * ENTRY_EXT_RESET Activate the bootloader after an external reset was issued by + * pulling the reset pin low. It may be necessary to add an external + * pull-up resistor to the reset pin if this entry method appears to + * behave unreliably. + * Adds 22 bytes. + * + * ENTRY_JUMPER Activate the bootloader when a specific pin is pulled low by an + * external jumper. + * Adds 34 bytes. + * + * JUMPER_PIN Pin the jumper is connected to. (e.g. PB0) + * JUMPER_PORT Port out register for the jumper (e.g. PORTB) + * JUMPER_DDR Port data direction register for the jumper (e.g. DDRB) + * JUMPER_INP Port inout register for the jumper (e.g. PINB) + * + */ + +#define ENTRYMODE ENTRY_ALWAYS + +#define JUMPER_PIN PB0 +#define JUMPER_PORT PORTB +#define JUMPER_DDR DDRB +#define JUMPER_INP PINB + +/* + Internal implementation, don't change this unless you want to add an entrymode. +*/ + +#define ENTRY_ALWAYS 1 +#define ENTRY_WATCHDOG 2 +#define ENTRY_EXT_RESET 3 +#define ENTRY_JUMPER 4 + +#if ENTRYMODE==ENTRY_ALWAYS + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() 1 +#elif ENTRYMODE==ENTRY_WATCHDOG + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() (MCUSR&_BV(WDRF)) +#elif ENTRYMODE==ENTRY_EXT_RESET + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() (MCUSR&_BV(EXTRF)) +#elif ENTRYMODE==ENTRY_JUMPER + // Enable pull up on jumper pin and delay to stabilize input + #define bootLoaderInit() {JUMPER_DDR&=~_BV(JUMPER_PIN);JUMPER_PORT|=_BV(JUMPER_PIN);_delay_ms(1);} + #define bootLoaderExit() {JUMPER_PORT&=~_BV(JUMPER_PIN);} + #define bootLoaderStartCondition() (!(JUMPER_INP&_BV(JUMPER_PIN))) +#else + #error "No entry mode defined" +#endif + +/* + * Define bootloader timeout value. + * + * The bootloader will only time out if a user program was loaded. + * + * AUTO_EXIT_NO_USB_MS The bootloader will exit after this delay if no USB is connected. + * Set to 0 to disable + * Adds ~6 bytes. + * (This will wait for an USB SE0 reset from the host) + * + * AUTO_EXIT_MS The bootloader will exit after this delay if no USB communication + * from the host tool was received. + * Set to 0 to disable + * + * All values are approx. in milliseconds + */ + +#define AUTO_EXIT_NO_USB_MS 0 +#define AUTO_EXIT_MS 6000 + + /* + * Defines the setting of the RC-oscillator calibration after quitting the bootloader. (OSCCAL) + * + * OSCCAL_RESTORE_DEFAULT Set this to '1' to revert to OSCCAL factore calibration after bootlaoder exit. + * This is 8 MHz +/-2% on most devices or 16 MHz on the ATtiny 85 with activated PLL. + * Adds ~14 bytes. + * + * OSCCAL_SAVE_CALIB Set this to '1' to save the OSCCAL calibration during program upload. + * This value will be reloaded after reset and will also be used for the user + * program unless "OSCCAL_RESTORE_DEFAULT" is active. This allows calibrate the internal + * RC oscillator to the F_CPU target frequency +/-1% from the USB timing. Please note + * that only true if the ambient temperature does not change. + * Adds ~38 bytes. + * + * OSCCAL_HAVE_XTAL Set this to '1' if you have an external crystal oscillator. In this case no attempt + * will be made to calibrate the oscillator. You should deactivate both options above + * if you use this to avoid redundant code. + * + * If both options are selected, OSCCAL_RESTORE_DEFAULT takes precedence. + * + * If no option is selected, OSCCAL will be left untouched and stays at either factory calibration or F_CPU depending + * on whether the bootloader was activated. This will take the least memory. You can use this if your program + * comes with its own OSCCAL calibration or an external clock source is used. + */ + +#define OSCCAL_RESTORE_DEFAULT 0 +#define OSCCAL_SAVE_CALIB 1 +#define OSCCAL_HAVE_XTAL 0 + +/* + * Defines handling of an indicator LED while the bootloader is active. + * + * LED_MODE Define behavior of attached LED or suppress LED code. + * + * NONE Do not generate LED code (gains 18 bytes). + * ACTIVE_HIGH LED is on when output pin is high. This will toggle bettwen 1 and 0. + * ACTIVE_LOW LED is on when output pin is low. This will toggle between Z and 0. + * + * LED_DDR,LED_PORT,LED_PIN Where is your LED connected? + * + */ + +#define LED_MODE NONE + +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PB1 + +/* + * This is the implementation of the LED code. Change the configuration above unless you want to + * change the led behavior + * + * LED_INIT Called once after bootloader entry + * LED_EXIT Called once during bootloader exit + * LED_MACRO Called in the main loop with the idle counter as parameter. + * Use to define pattern. +*/ + +#define NONE 0 +#define ACTIVE_HIGH 1 +#define ACTIVE_LOW 2 + +#if LED_MODE==ACTIVE_HIGH + #define LED_INIT(x) LED_DDR = _BV(LED_PIN); + #define LED_EXIT(x) {LED_DDR &=~_BV(LED_PIN);LED_PORT &=~_BV(LED_PIN);} + #define LED_MACRO(x) if ( x & 0x4c ) {LED_PORT&=~_BV(LED_PIN);} else {LED_PORT|=_BV(LED_PIN);} +#elif LED_MODE==ACTIVE_LOW + #define LED_INIT(x) LED_PORT &=~_BV(LED_PIN); + #define LED_EXIT(x) LED_DDR &=~_BV(LED_PIN); + #define LED_MACRO(x) if ( x & 0x4c ) {LED_DDR&=~_BV(LED_PIN);} else {LED_DDR|=_BV(LED_PIN);} +#elif LED_MODE==NONE + #define LED_INIT(x) + #define LED_EXIT(x) + #define LED_MACRO(x) +#endif + +/* --------------------------------------------------------------------------- */ +/* Micronucleus internal configuration. Do not change anything below this line */ +/* --------------------------------------------------------------------------- */ + +// Microcontroller vectortable entries in the flash +#define RESET_VECTOR_OFFSET 0 + +// number of bytes before the boot loader vectors to store the tiny application vector table +#define TINYVECTOR_RESET_OFFSET 4 +#define TINYVECTOR_OSCCAL_OFFSET 6 + +/* ------------------------------------------------------------------------ */ +// postscript are the few bytes at the end of programmable memory which store tinyVectors +#define POSTSCRIPT_SIZE 6 +#define PROGMEM_SIZE (BOOTLOADER_ADDRESS - POSTSCRIPT_SIZE) /* max size of user program */ + +#endif /* __bootloader_h_included__ */ diff --git a/sparkfun/tiny/bootloaders/attiny/configuration/t841_default/Makefile.inc b/sparkfun/tiny/bootloaders/attiny/configuration/t841_default/Makefile.inc new file mode 100644 index 00000000..47fd7472 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/configuration/t841_default/Makefile.inc @@ -0,0 +1,24 @@ +# Name: Makefile +# Project: Micronucleus +# License: GNU GPL v2 (see License.txt) +# +# Controller type: ATtiny 841 +# Configuration: Default configuration - 12 Mhz RC oscillator +# Last Change: April 27,2016 + + +F_CPU = 12000000 +DEVICE = attiny841 + +# hexadecimal address for bootloader section to begin. To calculate the best value: +# - make clean; make main.hex; ### output will list data: 2124 (or something like that) +# - for the size of your device (8kb = 1024 * 8 = 8192) subtract above value 2124... = 6068 +# - How many pages in is that? 6068 / 64 (tiny85 page size in bytes) = 94.8125 +# - round that down to 94 - our new bootloader address is 94 * 64 = 6016, in hex = 1780 +BOOTLOADER_ADDRESS = 1980 + +FUSEOPT = -U lfuse:w:0xe2:m -U hfuse:w:0xdd:m -U efuse:w:0xf4:m +FUSEOPT_DISABLERESET = # Not implemented + + + diff --git a/sparkfun/tiny/bootloaders/attiny/configuration/t841_default/bootloaderconfig.h b/sparkfun/tiny/bootloaders/attiny/configuration/t841_default/bootloaderconfig.h new file mode 100644 index 00000000..ed09e1d3 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/configuration/t841_default/bootloaderconfig.h @@ -0,0 +1,267 @@ +/* Name: bootloaderconfig.h + * Micronucleus configuration file. + * This file (together with some settings in Makefile.inc) configures the boot loader + * according to the hardware. + * + * Controller type: ATtiny 841 - 12 MHz + * Configuration: Default configuration + * USB D- : PB0 + * USB D+ : PB1 + * Entry : Always + * LED : PB2, Active Low + * OSCCAL : Revert to precalibrated value (8 MHz) + * Note: can use 12 MHz V-USB without PLL due to stable RC-osc in ATTiny841 + * Flash write time may be too low. + * Last Change: Mar 16,2014 + * + * License: GNU GPL v2 (see License.txt + */ + +#ifndef __bootloaderconfig_h_included__ +#define __bootloaderconfig_h_included__ + +/* ------------------------------------------------------------------------- */ +/* Hardware configuration. */ +/* Change this according to your CPU and USB configuration */ +/* ------------------------------------------------------------------------- */ + +#define USB_CFG_IOPORTNAME B + /* This is the port where the USB bus is connected. When you configure it to + * "B", the registers PORTB, PINB and DDRB will be used. + */ + +#define USB_CFG_DMINUS_BIT 0 +/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected. + * This may be any bit in the port. + */ +#define USB_CFG_DPLUS_BIT 1 +/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected. + * This may be any bit in the port, but must be configured as a pin change interrupt. + */ + +#define USB_CFG_CLOCK_KHZ (F_CPU/1000) +/* Clock rate of the AVR in kHz. Legal values are 12000, 12800, 15000, 16000, + * 16500, 18000 and 20000. The 12.8 MHz and 16.5 MHz versions of the code + * require no crystal, they tolerate +/- 1% deviation from the nominal + * frequency. All other rates require a precision of 2000 ppm and thus a + * crystal! + * Since F_CPU should be defined to your actual clock rate anyway, you should + * not need to modify this setting. + */ + +/* ------------- Set up interrupt configuration (CPU specific) -------------- */ +/* The register names change quite a bit in the ATtiny family. Pay attention */ +/* to the manual. Note that the interrupt flag system is still used even though */ +/* interrupts are disabled. So this has to be configured correctly. */ + + +// setup interrupt for Pin Change for D+ +#define USB_INTR_CFG PCMSK1 +#define USB_INTR_CFG_SET (1 << USB_CFG_DPLUS_BIT) +#define USB_INTR_CFG_CLR 0 +#define USB_INTR_ENABLE GIMSK +#define USB_INTR_ENABLE_BIT PCIE1 +#define USB_INTR_PENDING GIFR +#define USB_INTR_PENDING_BIT PCIF1 +#define USB_INTR_VECTOR PCINT1_vect + +/* ------------------------------------------------------------------------- */ +/* Configuration relevant to the CPU the bootloader is running on */ +/* ------------------------------------------------------------------------- */ + +// how many milliseconds should host wait till it sends another erase or write? +// needs to be above 4.5 (and a whole integer) as avr freezes for 4.5ms + +// Set bit 7 to reduce wait time for page erase by factor of four +#define MICRONUCLEUS_WRITE_SLEEP 128 + 5 + +// ATtiny841 does not know OSCCAL +#ifndef OSCCAL +#define OSCCAL OSCCAL0 +#endif + +/* ---------------------- feature / code size options ---------------------- */ +/* Configure the behavior of the bootloader here */ +/* ------------------------------------------------------------------------- */ + +/* + * Define Bootloader entry condition + * + * If the entry condition is not met, the bootloader will not be activated and the user program + * is executed directly after a reset. If no user program has been loaded, the bootloader + * is always active. + * + * ENTRY_ALWAYS Always activate the bootloader after reset. Requires the least + * amount of code. + * + * ENTRY_WATCHDOG Activate the bootloader after a watchdog reset. This can be used + * to enter the bootloader from the user program. + * Adds 22 bytes. + * + * ENTRY_EXT_RESET Activate the bootloader after an external reset was issued by + * pulling the reset pin low. It may be necessary to add an external + * pull-up resistor to the reset pin if this entry method appears to + * behave unreliably. + * Adds 22 bytes. + * + * ENTRY_JUMPER Activate the bootloader when a specific pin is pulled low by an + * external jumper. + * Adds 34 bytes. + * + * JUMPER_PIN Pin the jumper is connected to. (e.g. PB0) + * JUMPER_PORT Port out register for the jumper (e.g. PORTB) + * JUMPER_DDR Port data direction register for the jumper (e.g. DDRB) + * JUMPER_INP Port inout register for the jumper (e.g. PINB) + * + */ + +#define ENTRYMODE ENTRY_EXT_RESET + +#define JUMPER_PIN PB0 +#define JUMPER_PORT PORTB +#define JUMPER_DDR DDRB +#define JUMPER_INP PINB + +/* + Internal implementation, don't change this unless you want to add an entrymode. +*/ + +#define ENTRY_ALWAYS 1 +#define ENTRY_WATCHDOG 2 +#define ENTRY_EXT_RESET 3 +#define ENTRY_JUMPER 4 + +#if ENTRYMODE==ENTRY_ALWAYS + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() 1 +#elif ENTRYMODE==ENTRY_WATCHDOG + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() (MCUSR&_BV(WDRF)) +#elif ENTRYMODE==ENTRY_EXT_RESET + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() (MCUSR&_BV(EXTRF)) +#elif ENTRYMODE==ENTRY_JUMPER + // Enable pull up on jumper pin and delay to stabilize input + #define bootLoaderInit() {JUMPER_DDR&=~_BV(JUMPER_PIN);JUMPER_PORT|=_BV(JUMPER_PIN);_delay_ms(1);} + #define bootLoaderExit() {JUMPER_PORT&=~_BV(JUMPER_PIN);} + #define bootLoaderStartCondition() (!(JUMPER_INP&_BV(JUMPER_PIN))) +#else + #error "No entry mode defined" +#endif + +/* + * Define bootloader timeout value. + * + * The bootloader will only time out if a user program was loaded. + * + * AUTO_EXIT_NO_USB_MS The bootloader will exit after this delay if no USB is connected. + * Set to 0 to disable + * Adds ~6 bytes. + * (This will wait for an USB SE0 reset from the host) + * + * AUTO_EXIT_MS The bootloader will exit after this delay if no USB communication + * from the host tool was received. + * Set to 0 to disable + * + * All values are approx. in milliseconds + */ + +#define AUTO_EXIT_NO_USB_MS 0 +#define AUTO_EXIT_MS 6000 + + /* + * Defines the setting of the RC-oscillator calibration after quitting the bootloader. (OSCCAL) + * + * OSCCAL_RESTORE_DEFAULT Set this to '1' to revert to OSCCAL factore calibration after bootlaoder exit. + * This is 8 MHz +/-2% on most devices or 16 MHz on the ATtiny 85 with activated PLL. + * Adds ~14 bytes. + * + * OSCCAL_SAVE_CALIB Set this to '1' to save the OSCCAL calibration during program upload. + * This value will be reloaded after reset and will also be used for the user + * program unless "OSCCAL_RESTORE_DEFAULT" is active. This allows calibrate the internal + * RC oscillator to the F_CPU target frequency +/-1% from the USB timing. Please note + * that only true if the ambient temperature does not change. + * Adds ~38 bytes. + * + * OSCCAL_HAVE_XTAL Set this to '1' if you have an external crystal oscillator. In this case no attempt + * will be made to calibrate the oscillator. You should deactivate both options above + * if you use this to avoid redundant code. + * + * If both options are selected, OSCCAL_RESTORE_DEFAULT takes precedence. + * + * If no option is selected, OSCCAL will be left untouched and stays at either factory calibration or F_CPU depending + * on whether the bootloader was activated. This will take the least memory. You can use this if your program + * comes with its own OSCCAL calibration or an external clock source is used. + */ + +#define OSCCAL_ENTRY_ALWAYS +#define OSCCAL_SAVE_CALIB 1 +#define OSCCAL_HAVE_XTAL 0 + +/* + * Defines handling of an indicator LED while the bootloader is active. + * + * LED_MODE Define behavior of attached LED or suppress LED code. + * + * NONE Do not generate LED code (gains 18 bytes). + * ACTIVE_HIGH LED is on when output pin is high. This will toggle bettwen 1 and 0. + * ACTIVE_LOW LED is on when output pin is low. This will toggle between Z and 0. + * + * LED_DDR,LED_PORT,LED_PIN Where is your LED connected? + * + */ + +#define LED_MODE ACTIVE_LOW + +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PB2 + +/* + * This is the implementation of the LED code. Change the configuration above unless you want to + * change the led behavior + * + * LED_INIT Called once after bootloader entry + * LED_EXIT Called once during bootloader exit + * LED_MACRO Called in the main loop with the idle counter as parameter. + * Use to define pattern. +*/ + +#define NONE 0 +#define ACTIVE_HIGH 1 +#define ACTIVE_LOW 2 + +#if LED_MODE==ACTIVE_HIGH + #define LED_INIT(x) LED_DDR |= _BV(LED_PIN); + #define LED_EXIT(x) {LED_DDR &=~_BV(LED_PIN);LED_PORT &=~_BV(LED_PIN);} + #define LED_MACRO(x) if ( x & 0x4c ) {LED_PORT&=~_BV(LED_PIN);} else {LED_PORT|=_BV(LED_PIN);} +#elif LED_MODE==ACTIVE_LOW + #define LED_INIT(x) LED_PORT &=~_BV(LED_PIN); + #define LED_EXIT(x) LED_DDR &=~_BV(LED_PIN); + #define LED_MACRO(x) if ( x & 0x4c ) {LED_DDR&=~_BV(LED_PIN);} else {LED_DDR|=_BV(LED_PIN);} +#elif LED_MODE==NONE + #define LED_INIT(x) + #define LED_EXIT(x) + #define LED_MACRO(x) +#endif + +/* --------------------------------------------------------------------------- */ +/* Micronucleus internal configuration. Do not change anything below this line */ +/* --------------------------------------------------------------------------- */ + +// Microcontroller vectortable entries in the flash +#define RESET_VECTOR_OFFSET 0 + +// number of bytes before the boot loader vectors to store the tiny application vector table +#define TINYVECTOR_RESET_OFFSET 4 +#define TINYVECTOR_OSCCAL_OFFSET 6 + +/* ------------------------------------------------------------------------ */ +// postscript are the few bytes at the end of programmable memory which store tinyVectors +#define POSTSCRIPT_SIZE 6 +#define PROGMEM_SIZE (BOOTLOADER_ADDRESS - POSTSCRIPT_SIZE) /* max size of user program */ + +#endif /* __bootloader_h_included__ */ diff --git a/sparkfun/tiny/bootloaders/attiny/configuration/t84_default/Makefile.inc b/sparkfun/tiny/bootloaders/attiny/configuration/t84_default/Makefile.inc new file mode 100644 index 00000000..5309f79d --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/configuration/t84_default/Makefile.inc @@ -0,0 +1,63 @@ +# Name: Makefile +# Project: Micronucleus +# License: GNU GPL v2 (see License.txt) +# +# Controller type: ATtiny 84 +# Configuration: Default configuration - 12 Mhz RC oscillator +# Last Change: Mar 16,2014 + + +F_CPU = 12000000 +DEVICE = attiny84 + +# hexadecimal address for bootloader section to begin. To calculate the best value: +# - make clean; make main.hex; ### output will list data: 2124 (or something like that) +# - for the size of your device (8kb = 1024 * 8 = 8192) subtract above value 2124... = 6068 +# - How many pages in is that? 6068 / 64 (tiny85 page size in bytes) = 94.8125 +# - round that down to 94 - our new bootloader address is 94 * 64 = 6016, in hex = 1780 +BOOTLOADER_ADDRESS = 1980 + +FUSEOPT = -U lfuse:w:0xe2:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m +FUSEOPT_DISABLERESET = # TODO + + +#--------------------------------------------------------------------- +# ATtiny84 +#--------------------------------------------------------------------- +# Fuse extended byte: +# 0xFE = - - - - - 1 1 0 +# ^ +# | +# +---- SELFPRGEN (enable self programming flash) +# +# Fuse high byte: +# 0xdd = 1 1 0 1 1 1 0 1 +# ^ ^ ^ ^ ^ \-+-/ +# | | | | | +------ BODLEVEL 2..0 (brownout trigger level -> 2.7V) +# | | | | +---------- EESAVE (preserve EEPROM on Chip Erase -> not preserved) +# | | | +-------------- WDTON (watchdog timer always on -> disable) +# | | +---------------- SPIEN (enable serial programming -> enabled) +# | +------------------ DWEN (debug wire enable) +# +-------------------- RSTDISBL (disable external reset -> enabled) +# +# Fuse high byte ("no reset": external reset disabled, can't program through SPI anymore) +# 0x5d = 0 1 0 1 1 1 0 1 +# ^ ^ ^ ^ ^ \-+-/ +# | | | | | +------ BODLEVEL 2..0 (brownout trigger level -> 2.7V) +# | | | | +---------- EESAVE (preserve EEPROM on Chip Erase -> not preserved) +# | | | +-------------- WDTON (watchdog timer always on -> disable) +# | | +---------------- SPIEN (enable serial programming -> enabled) +# | +------------------ DWEN (debug wire enable) +# +-------------------- RSTDISBL (disable external reset -> disabled!) +# +# Fuse low byte: +# 0xe1 = 1 1 1 0 0 0 1 0 +# ^ ^ \+/ \--+--/ +# | | | +------- CKSEL 3..0 (clock selection -> RC Oscillator) +# | | +--------------- SUT 1..0 (BOD enabled, fast rising power) +# | +------------------ CKOUT (clock output on CKOUT pin -> disabled) +# +-------------------- CKDIV8 (divide clock by 8 -> don't divide) + + + + diff --git a/sparkfun/tiny/bootloaders/attiny/configuration/t84_default/bootloaderconfig.h b/sparkfun/tiny/bootloaders/attiny/configuration/t84_default/bootloaderconfig.h new file mode 100644 index 00000000..05748ad0 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/configuration/t84_default/bootloaderconfig.h @@ -0,0 +1,265 @@ +/* Name: bootloaderconfig.h + * Micronucleus configuration file. + * This file (together with some settings in Makefile.inc) configures the boot loader + * according to the hardware. + * + * Controller type: ATtiny 84 - 12 MHz + * Configuration: Default configuration + * USB D- : PB0 + * USB D+ : PB1 + * Entry : Always + * LED : PB2, Active Low + * OSCCAL : Revert to precalibrated value (8 MHz) + * Note: can use 12 MHz V-USB without PLL due to stable RC-osc in ATTiny84A + * Last Change: Mar 16,2014 + * + * License: GNU GPL v2 (see License.txt + */ + +#ifndef __bootloaderconfig_h_included__ +#define __bootloaderconfig_h_included__ + +/* ------------------------------------------------------------------------- */ +/* Hardware configuration. */ +/* Change this according to your CPU and USB configuration */ +/* ------------------------------------------------------------------------- */ + +#define USB_CFG_IOPORTNAME B + /* This is the port where the USB bus is connected. When you configure it to + * "B", the registers PORTB, PINB and DDRB will be used. + */ + +#define USB_CFG_DMINUS_BIT 0 +/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected. + * This may be any bit in the port. + */ +#define USB_CFG_DPLUS_BIT 1 +/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected. + * This may be any bit in the port, but must be configured as a pin change interrupt. + */ + +#define USB_CFG_CLOCK_KHZ (F_CPU/1000) +/* Clock rate of the AVR in kHz. Legal values are 12000, 12800, 15000, 16000, + * 16500, 18000 and 20000. The 12.8 MHz and 16.5 MHz versions of the code + * require no crystal, they tolerate +/- 1% deviation from the nominal + * frequency. All other rates require a precision of 2000 ppm and thus a + * crystal! + * Since F_CPU should be defined to your actual clock rate anyway, you should + * not need to modify this setting. + */ + +/* ------------- Set up interrupt configuration (CPU specific) -------------- */ +/* The register names change quite a bit in the ATtiny family. Pay attention */ +/* to the manual. Note that the interrupt flag system is still used even though */ +/* interrupts are disabled. So this has to be configured correctly. */ + + +// setup interrupt for Pin Change for D+ +#define USB_INTR_CFG PCMSK1 +#define USB_INTR_CFG_SET (1 << USB_CFG_DPLUS_BIT) +#define USB_INTR_CFG_CLR 0 +#define USB_INTR_ENABLE GIMSK +#define USB_INTR_ENABLE_BIT PCIE1 +#define USB_INTR_PENDING GIFR +#define USB_INTR_PENDING_BIT PCIF1 +#define USB_INTR_VECTOR PCINT1_vect + +/* ------------------------------------------------------------------------- */ +/* Configuration relevant to the CPU the bootloader is running on */ +/* ------------------------------------------------------------------------- */ + +// how many milliseconds should host wait till it sends another erase or write? +// needs to be above 4.5 (and a whole integer) as avr freezes for 4.5ms + +#define MICRONUCLEUS_WRITE_SLEEP 5 + +// ATtiny84 does not know WDTCR +#ifndef WDTCR +#define WDTCR WDTCSR +#endif + +/* ---------------------- feature / code size options ---------------------- */ +/* Configure the behavior of the bootloader here */ +/* ------------------------------------------------------------------------- */ + +/* + * Define Bootloader entry condition + * + * If the entry condition is not met, the bootloader will not be activated and the user program + * is executed directly after a reset. If no user program has been loaded, the bootloader + * is always active. + * + * ENTRY_ALWAYS Always activate the bootloader after reset. Requires the least + * amount of code. + * + * ENTRY_WATCHDOG Activate the bootloader after a watchdog reset. This can be used + * to enter the bootloader from the user program. + * Adds 22 bytes. + * + * ENTRY_EXT_RESET Activate the bootloader after an external reset was issued by + * pulling the reset pin low. It may be necessary to add an external + * pull-up resistor to the reset pin if this entry method appears to + * behave unreliably. + * Adds 22 bytes. + * + * ENTRY_JUMPER Activate the bootloader when a specific pin is pulled low by an + * external jumper. + * Adds 34 bytes. + * + * JUMPER_PIN Pin the jumper is connected to. (e.g. PB0) + * JUMPER_PORT Port out register for the jumper (e.g. PORTB) + * JUMPER_DDR Port data direction register for the jumper (e.g. DDRB) + * JUMPER_INP Port inout register for the jumper (e.g. PINB) + * + */ + +#define ENTRYMODE ENTRY_ALWAYS + +#define JUMPER_PIN PB0 +#define JUMPER_PORT PORTB +#define JUMPER_DDR DDRB +#define JUMPER_INP PINB + +/* + Internal implementation, don't change this unless you want to add an entrymode. +*/ + +#define ENTRY_ALWAYS 1 +#define ENTRY_WATCHDOG 2 +#define ENTRY_EXT_RESET 3 +#define ENTRY_JUMPER 4 + +#if ENTRYMODE==ENTRY_ALWAYS + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() 1 +#elif ENTRYMODE==ENTRY_WATCHDOG + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() (MCUSR&_BV(WDRF)) +#elif ENTRYMODE==ENTRY_EXT_RESET + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() (MCUSR&_BV(EXTRF)) +#elif ENTRYMODE==ENTRY_JUMPER + // Enable pull up on jumper pin and delay to stabilize input + #define bootLoaderInit() {JUMPER_DDR&=~_BV(JUMPER_PIN);JUMPER_PORT|=_BV(JUMPER_PIN);_delay_ms(1);} + #define bootLoaderExit() {JUMPER_PORT&=~_BV(JUMPER_PIN);} + #define bootLoaderStartCondition() (!(JUMPER_INP&_BV(JUMPER_PIN))) +#else + #error "No entry mode defined" +#endif + +/* + * Define bootloader timeout value. + * + * The bootloader will only time out if a user program was loaded. + * + * AUTO_EXIT_NO_USB_MS The bootloader will exit after this delay if no USB is connected. + * Set to 0 to disable + * Adds ~6 bytes. + * (This will wait for an USB SE0 reset from the host) + * + * AUTO_EXIT_MS The bootloader will exit after this delay if no USB communication + * from the host tool was received. + * Set to 0 to disable + * + * All values are approx. in milliseconds + */ + +#define AUTO_EXIT_NO_USB_MS 0 +#define AUTO_EXIT_MS 6000 + + /* + * Defines the setting of the RC-oscillator calibration after quitting the bootloader. (OSCCAL) + * + * OSCCAL_RESTORE_DEFAULT Set this to '1' to revert to OSCCAL factore calibration after bootlaoder exit. + * This is 8 MHz +/-2% on most devices or 16 MHz on the ATtiny 85 with activated PLL. + * Adds ~14 bytes. + * + * OSCCAL_SAVE_CALIB Set this to '1' to save the OSCCAL calibration during program upload. + * This value will be reloaded after reset and will also be used for the user + * program unless "OSCCAL_RESTORE_DEFAULT" is active. This allows calibrate the internal + * RC oscillator to the F_CPU target frequency +/-1% from the USB timing. Please note + * that only true if the ambient temperature does not change. + * Adds ~38 bytes. + * + * OSCCAL_HAVE_XTAL Set this to '1' if you have an external crystal oscillator. In this case no attempt + * will be made to calibrate the oscillator. You should deactivate both options above + * if you use this to avoid redundant code. + * + * If both options are selected, OSCCAL_RESTORE_DEFAULT takes precedence. + * + * If no option is selected, OSCCAL will be left untouched and stays at either factory calibration or F_CPU depending + * on whether the bootloader was activated. This will take the least memory. You can use this if your program + * comes with its own OSCCAL calibration or an external clock source is used. + */ + +#define OSCCAL_RESTORE_DEFAULT 1 +#define OSCCAL_SAVE_CALIB 0 +#define OSCCAL_HAVE_XTAL 0 + +/* + * Defines handling of an indicator LED while the bootloader is active. + * + * LED_MODE Define behavior of attached LED or suppress LED code. + * + * NONE Do not generate LED code (gains 18 bytes). + * ACTIVE_HIGH LED is on when output pin is high. This will toggle bettwen 1 and 0. + * ACTIVE_LOW LED is on when output pin is low. This will toggle between Z and 0. + * + * LED_DDR,LED_PORT,LED_PIN Where is your LED connected? + * + */ + +#define LED_MODE ACTIVE_LOW + +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PB2 + +/* + * This is the implementation of the LED code. Change the configuration above unless you want to + * change the led behavior + * + * LED_INIT Called once after bootloader entry + * LED_EXIT Called once during bootloader exit + * LED_MACRO Called in the main loop with the idle counter as parameter. + * Use to define pattern. +*/ + +#define NONE 0 +#define ACTIVE_HIGH 1 +#define ACTIVE_LOW 2 + +#if LED_MODE==ACTIVE_HIGH + #define LED_INIT(x) LED_DDR = _BV(LED_PIN); + #define LED_EXIT(x) {LED_DDR &=~_BV(LED_PIN);LED_PORT &=~_BV(LED_PIN);} + #define LED_MACRO(x) if ( x & 0x4c ) {LED_PORT&=~_BV(LED_PIN);} else {LED_PORT|=_BV(LED_PIN);} +#elif LED_MODE==ACTIVE_LOW + #define LED_INIT(x) LED_PORT &=~_BV(LED_PIN); + #define LED_EXIT(x) LED_DDR &=~_BV(LED_PIN); + #define LED_MACRO(x) if ( x & 0x4c ) {LED_DDR&=~_BV(LED_PIN);} else {LED_DDR|=_BV(LED_PIN);} +#elif LED_MODE==NONE + #define LED_INIT(x) + #define LED_EXIT(x) + #define LED_MACRO(x) +#endif + +/* --------------------------------------------------------------------------- */ +/* Micronucleus internal configuration. Do not change anything below this line */ +/* --------------------------------------------------------------------------- */ + +// Microcontroller vectortable entries in the flash +#define RESET_VECTOR_OFFSET 0 + +// number of bytes before the boot loader vectors to store the tiny application vector table +#define TINYVECTOR_RESET_OFFSET 4 +#define TINYVECTOR_OSCCAL_OFFSET 6 + +/* ------------------------------------------------------------------------ */ +// postscript are the few bytes at the end of programmable memory which store tinyVectors +#define POSTSCRIPT_SIZE 6 +#define PROGMEM_SIZE (BOOTLOADER_ADDRESS - POSTSCRIPT_SIZE) /* max size of user program */ + +#endif /* __bootloader_h_included__ */ diff --git a/sparkfun/tiny/bootloaders/attiny/configuration/t84_roshamglo/Makefile.inc b/sparkfun/tiny/bootloaders/attiny/configuration/t84_roshamglo/Makefile.inc new file mode 100644 index 00000000..5309f79d --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/configuration/t84_roshamglo/Makefile.inc @@ -0,0 +1,63 @@ +# Name: Makefile +# Project: Micronucleus +# License: GNU GPL v2 (see License.txt) +# +# Controller type: ATtiny 84 +# Configuration: Default configuration - 12 Mhz RC oscillator +# Last Change: Mar 16,2014 + + +F_CPU = 12000000 +DEVICE = attiny84 + +# hexadecimal address for bootloader section to begin. To calculate the best value: +# - make clean; make main.hex; ### output will list data: 2124 (or something like that) +# - for the size of your device (8kb = 1024 * 8 = 8192) subtract above value 2124... = 6068 +# - How many pages in is that? 6068 / 64 (tiny85 page size in bytes) = 94.8125 +# - round that down to 94 - our new bootloader address is 94 * 64 = 6016, in hex = 1780 +BOOTLOADER_ADDRESS = 1980 + +FUSEOPT = -U lfuse:w:0xe2:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m +FUSEOPT_DISABLERESET = # TODO + + +#--------------------------------------------------------------------- +# ATtiny84 +#--------------------------------------------------------------------- +# Fuse extended byte: +# 0xFE = - - - - - 1 1 0 +# ^ +# | +# +---- SELFPRGEN (enable self programming flash) +# +# Fuse high byte: +# 0xdd = 1 1 0 1 1 1 0 1 +# ^ ^ ^ ^ ^ \-+-/ +# | | | | | +------ BODLEVEL 2..0 (brownout trigger level -> 2.7V) +# | | | | +---------- EESAVE (preserve EEPROM on Chip Erase -> not preserved) +# | | | +-------------- WDTON (watchdog timer always on -> disable) +# | | +---------------- SPIEN (enable serial programming -> enabled) +# | +------------------ DWEN (debug wire enable) +# +-------------------- RSTDISBL (disable external reset -> enabled) +# +# Fuse high byte ("no reset": external reset disabled, can't program through SPI anymore) +# 0x5d = 0 1 0 1 1 1 0 1 +# ^ ^ ^ ^ ^ \-+-/ +# | | | | | +------ BODLEVEL 2..0 (brownout trigger level -> 2.7V) +# | | | | +---------- EESAVE (preserve EEPROM on Chip Erase -> not preserved) +# | | | +-------------- WDTON (watchdog timer always on -> disable) +# | | +---------------- SPIEN (enable serial programming -> enabled) +# | +------------------ DWEN (debug wire enable) +# +-------------------- RSTDISBL (disable external reset -> disabled!) +# +# Fuse low byte: +# 0xe1 = 1 1 1 0 0 0 1 0 +# ^ ^ \+/ \--+--/ +# | | | +------- CKSEL 3..0 (clock selection -> RC Oscillator) +# | | +--------------- SUT 1..0 (BOD enabled, fast rising power) +# | +------------------ CKOUT (clock output on CKOUT pin -> disabled) +# +-------------------- CKDIV8 (divide clock by 8 -> don't divide) + + + + diff --git a/sparkfun/tiny/bootloaders/attiny/configuration/t84_roshamglo/bootloaderconfig.h b/sparkfun/tiny/bootloaders/attiny/configuration/t84_roshamglo/bootloaderconfig.h new file mode 100644 index 00000000..e83e8531 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/configuration/t84_roshamglo/bootloaderconfig.h @@ -0,0 +1,267 @@ +/* Name: bootloaderconfig.h + * Micronucleus configuration file. + * This file (together with some settings in Makefile.inc) configures the boot loader + * according to the hardware. + * + * Modified by SparkFun Electronics for Roshamglo project + * + * Controller type: ATtiny 84 - 12 MHz + * Configuration: Default configuration + * USB D- : PB0 + * USB D+ : PB1 + * Entry : Jumper - PA0 to GND + * LED : PB2, Active High + * OSCCAL : Revert to precalibrated value (8 MHz) + * Note: can use 12 MHz V-USB without PLL due to stable RC-osc in ATTiny84A + * Last Change: Feb 1, 2017 + * + * License: GNU GPL v2 (see License.txt) + */ + +#ifndef __bootloaderconfig_h_included__ +#define __bootloaderconfig_h_included__ + +/* ------------------------------------------------------------------------- */ +/* Hardware configuration. */ +/* Change this according to your CPU and USB configuration */ +/* ------------------------------------------------------------------------- */ + +#define USB_CFG_IOPORTNAME B + /* This is the port where the USB bus is connected. When you configure it to + * "B", the registers PORTB, PINB and DDRB will be used. + */ + +#define USB_CFG_DMINUS_BIT 0 +/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected. + * This may be any bit in the port. + */ +#define USB_CFG_DPLUS_BIT 1 +/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected. + * This may be any bit in the port, but must be configured as a pin change interrupt. + */ + +#define USB_CFG_CLOCK_KHZ (F_CPU/1000) +/* Clock rate of the AVR in kHz. Legal values are 12000, 12800, 15000, 16000, + * 16500, 18000 and 20000. The 12.8 MHz and 16.5 MHz versions of the code + * require no crystal, they tolerate +/- 1% deviation from the nominal + * frequency. All other rates require a precision of 2000 ppm and thus a + * crystal! + * Since F_CPU should be defined to your actual clock rate anyway, you should + * not need to modify this setting. + */ + +/* ------------- Set up interrupt configuration (CPU specific) -------------- */ +/* The register names change quite a bit in the ATtiny family. Pay attention */ +/* to the manual. Note that the interrupt flag system is still used even though */ +/* interrupts are disabled. So this has to be configured correctly. */ + + +// setup interrupt for Pin Change for D+ +#define USB_INTR_CFG PCMSK1 +#define USB_INTR_CFG_SET (1 << USB_CFG_DPLUS_BIT) +#define USB_INTR_CFG_CLR 0 +#define USB_INTR_ENABLE GIMSK +#define USB_INTR_ENABLE_BIT PCIE1 +#define USB_INTR_PENDING GIFR +#define USB_INTR_PENDING_BIT PCIF1 +#define USB_INTR_VECTOR PCINT1_vect + +/* ------------------------------------------------------------------------- */ +/* Configuration relevant to the CPU the bootloader is running on */ +/* ------------------------------------------------------------------------- */ + +// how many milliseconds should host wait till it sends another erase or write? +// needs to be above 4.5 (and a whole integer) as avr freezes for 4.5ms + +#define MICRONUCLEUS_WRITE_SLEEP 5 + +// ATtiny84 does not know WDTCR +#ifndef WDTCR +#define WDTCR WDTCSR +#endif + +/* ---------------------- feature / code size options ---------------------- */ +/* Configure the behavior of the bootloader here */ +/* ------------------------------------------------------------------------- */ + +/* + * Define Bootloader entry condition + * + * If the entry condition is not met, the bootloader will not be activated and the user program + * is executed directly after a reset. If no user program has been loaded, the bootloader + * is always active. + * + * ENTRY_ALWAYS Always activate the bootloader after reset. Requires the least + * amount of code. + * + * ENTRY_WATCHDOG Activate the bootloader after a watchdog reset. This can be used + * to enter the bootloader from the user program. + * Adds 22 bytes. + * + * ENTRY_EXT_RESET Activate the bootloader after an external reset was issued by + * pulling the reset pin low. It may be necessary to add an external + * pull-up resistor to the reset pin if this entry method appears to + * behave unreliably. + * Adds 22 bytes. + * + * ENTRY_JUMPER Activate the bootloader when a specific pin is pulled low by an + * external jumper. + * Adds 34 bytes. + * + * JUMPER_PIN Pin the jumper is connected to. (e.g. PB0) + * JUMPER_PORT Port out register for the jumper (e.g. PORTB) + * JUMPER_DDR Port data direction register for the jumper (e.g. DDRB) + * JUMPER_INP Port inout register for the jumper (e.g. PINB) + * + */ + +#define ENTRYMODE ENTRY_JUMPER + +#define JUMPER_PIN PA0 +#define JUMPER_PORT PORTA +#define JUMPER_DDR DDRA +#define JUMPER_INP PINA + +/* + Internal implementation, don't change this unless you want to add an entrymode. +*/ + +#define ENTRY_ALWAYS 1 +#define ENTRY_WATCHDOG 2 +#define ENTRY_EXT_RESET 3 +#define ENTRY_JUMPER 4 + +#if ENTRYMODE==ENTRY_ALWAYS + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() 1 +#elif ENTRYMODE==ENTRY_WATCHDOG + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() (MCUSR&_BV(WDRF)) +#elif ENTRYMODE==ENTRY_EXT_RESET + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() (MCUSR&_BV(EXTRF)) +#elif ENTRYMODE==ENTRY_JUMPER + // Enable pull up on jumper pin and delay to stabilize input + #define bootLoaderInit() {JUMPER_DDR&=~_BV(JUMPER_PIN);JUMPER_PORT|=_BV(JUMPER_PIN);_delay_ms(1);} + #define bootLoaderExit() {JUMPER_PORT&=~_BV(JUMPER_PIN);} + #define bootLoaderStartCondition() (!(JUMPER_INP&_BV(JUMPER_PIN))) +#else + #error "No entry mode defined" +#endif + +/* + * Define bootloader timeout value. + * + * The bootloader will only time out if a user program was loaded. + * + * AUTO_EXIT_NO_USB_MS The bootloader will exit after this delay if no USB is connected. + * Set to 0 to disable + * Adds ~6 bytes. + * (This will wait for an USB SE0 reset from the host) + * + * AUTO_EXIT_MS The bootloader will exit after this delay if no USB communication + * from the host tool was received. + * Set to 0 to disable + * + * All values are approx. in milliseconds + */ + +#define AUTO_EXIT_NO_USB_MS 0 +#define AUTO_EXIT_MS 0 + + /* + * Defines the setting of the RC-oscillator calibration after quitting the bootloader. (OSCCAL) + * + * OSCCAL_RESTORE_DEFAULT Set this to '1' to revert to OSCCAL factore calibration after bootlaoder exit. + * This is 8 MHz +/-2% on most devices or 16 MHz on the ATtiny 85 with activated PLL. + * Adds ~14 bytes. + * + * OSCCAL_SAVE_CALIB Set this to '1' to save the OSCCAL calibration during program upload. + * This value will be reloaded after reset and will also be used for the user + * program unless "OSCCAL_RESTORE_DEFAULT" is active. This allows calibrate the internal + * RC oscillator to the F_CPU target frequency +/-1% from the USB timing. Please note + * that only true if the ambient temperature does not change. + * Adds ~38 bytes. + * + * OSCCAL_HAVE_XTAL Set this to '1' if you have an external crystal oscillator. In this case no attempt + * will be made to calibrate the oscillator. You should deactivate both options above + * if you use this to avoid redundant code. + * + * If both options are selected, OSCCAL_RESTORE_DEFAULT takes precedence. + * + * If no option is selected, OSCCAL will be left untouched and stays at either factory calibration or F_CPU depending + * on whether the bootloader was activated. This will take the least memory. You can use this if your program + * comes with its own OSCCAL calibration or an external clock source is used. + */ + +#define OSCCAL_RESTORE_DEFAULT 1 +#define OSCCAL_SAVE_CALIB 0 +#define OSCCAL_HAVE_XTAL 0 + +/* + * Defines handling of an indicator LED while the bootloader is active. + * + * LED_MODE Define behavior of attached LED or suppress LED code. + * + * NONE Do not generate LED code (gains 18 bytes). + * ACTIVE_HIGH LED is on when output pin is high. This will toggle bettwen 1 and 0. + * ACTIVE_LOW LED is on when output pin is low. This will toggle between Z and 0. + * + * LED_DDR,LED_PORT,LED_PIN Where is your LED connected? + * + */ + +#define LED_MODE ACTIVE_HIGH + +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PB2 + +/* + * This is the implementation of the LED code. Change the configuration above unless you want to + * change the led behavior + * + * LED_INIT Called once after bootloader entry + * LED_EXIT Called once during bootloader exit + * LED_MACRO Called in the main loop with the idle counter as parameter. + * Use to define pattern. +*/ + +#define NONE 0 +#define ACTIVE_HIGH 1 +#define ACTIVE_LOW 2 + +#if LED_MODE==ACTIVE_HIGH + #define LED_INIT(x) LED_DDR = _BV(LED_PIN); + #define LED_EXIT(x) {LED_DDR &=~_BV(LED_PIN);LED_PORT &=~_BV(LED_PIN);} + #define LED_MACRO(x) if ( x & 0x4c ) {LED_PORT&=~_BV(LED_PIN);} else {LED_PORT|=_BV(LED_PIN);} +#elif LED_MODE==ACTIVE_LOW + #define LED_INIT(x) LED_PORT &=~_BV(LED_PIN); + #define LED_EXIT(x) LED_DDR &=~_BV(LED_PIN); + #define LED_MACRO(x) if ( x & 0x4c ) {LED_DDR&=~_BV(LED_PIN);} else {LED_DDR|=_BV(LED_PIN);} +#elif LED_MODE==NONE + #define LED_INIT(x) + #define LED_EXIT(x) + #define LED_MACRO(x) +#endif + +/* --------------------------------------------------------------------------- */ +/* Micronucleus internal configuration. Do not change anything below this line */ +/* --------------------------------------------------------------------------- */ + +// Microcontroller vectortable entries in the flash +#define RESET_VECTOR_OFFSET 0 + +// number of bytes before the boot loader vectors to store the tiny application vector table +#define TINYVECTOR_RESET_OFFSET 4 +#define TINYVECTOR_OSCCAL_OFFSET 6 + +/* ------------------------------------------------------------------------ */ +// postscript are the few bytes at the end of programmable memory which store tinyVectors +#define POSTSCRIPT_SIZE 6 +#define PROGMEM_SIZE (BOOTLOADER_ADDRESS - POSTSCRIPT_SIZE) /* max size of user program */ + +#endif /* __bootloader_h_included__ */ diff --git a/sparkfun/tiny/bootloaders/attiny/configuration/t85_aggressive/Makefile.inc b/sparkfun/tiny/bootloaders/attiny/configuration/t85_aggressive/Makefile.inc new file mode 100644 index 00000000..4675ae94 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/configuration/t85_aggressive/Makefile.inc @@ -0,0 +1,68 @@ +# Name: Makefile +# Project: Micronucleus +# License: GNU GPL v2 (see License.txt) + +# Controller type: ATtiny 85 +# Configuration: Size optimized. Uses 16 MHz V-USB implementation, which may be instable with some computers +# Last Change: Jan 11,2015 + +# Enable unsafe optimizions. This will disable several safety features in microncleus to save around 40 more bytes +# +# Disabled features: +# * Stack pointer and SREG initialization in CRT +# * Client side reset vector patching +# * USB collision detection. Micronucleus will not work reliability with hubs if this is disabled. + +CFLAGS += -DENABLE_UNSAFE_OPTIMIZATIONS + +F_CPU = 16000000 +DEVICE = attiny85 + +# hexadecimal address for bootloader section to begin. To calculate the best value: +# - make clean; make main.hex; ### output will list data: 2124 (or something like that) +# - for the size of your device (8kb = 1024 * 8 = 8192) subtract above value 2124... = 6068 +# - How many pages in is that? 6068 / 64 (tiny85 page size in bytes) = 94.8125 +# - round that down to 94 - our new bootloader address is 94 * 64 = 6016, in hex = 1780 +BOOTLOADER_ADDRESS = 1A40 + +FUSEOPT = -U lfuse:w:0xe1:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m +FUSEOPT_DISABLERESET = -U lfuse:w:0xe1:m -U efuse:w:0xfe:m -U hfuse:w:0x5d:m + +#--------------------------------------------------------------------- +# ATtiny85 +#--------------------------------------------------------------------- +# Fuse extended byte: +# 0xFE = - - - - - 1 1 0 +# ^ +# | +# +---- SELFPRGEN (enable self programming flash) +# +# Fuse high byte: +# 0xdd = 1 1 0 1 1 1 0 1 +# ^ ^ ^ ^ ^ \-+-/ +# | | | | | +------ BODLEVEL 2..0 (brownout trigger level -> 2.7V) +# | | | | +---------- EESAVE (preserve EEPROM on Chip Erase -> not preserved) +# | | | +-------------- WDTON (watchdog timer always on -> disable) +# | | +---------------- SPIEN (enable serial programming -> enabled) +# | +------------------ DWEN (debug wire enable) +# +-------------------- RSTDISBL (disable external reset -> enabled) +# +# Fuse high byte ("no reset": external reset disabled, can't program through SPI anymore) +# 0x5d = 0 1 0 1 1 1 0 1 +# ^ ^ ^ ^ ^ \-+-/ +# | | | | | +------ BODLEVEL 2..0 (brownout trigger level -> 2.7V) +# | | | | +---------- EESAVE (preserve EEPROM on Chip Erase -> not preserved) +# | | | +-------------- WDTON (watchdog timer always on -> disable) +# | | +---------------- SPIEN (enable serial programming -> enabled) +# | +------------------ DWEN (debug wire enable) +# +-------------------- RSTDISBL (disable external reset -> disabled!) +# +# Fuse low byte: +# 0xe1 = 1 1 1 0 0 0 0 1 +# ^ ^ \+/ \--+--/ +# | | | +------- CKSEL 3..0 (clock selection -> HF PLL) +# | | +--------------- SUT 1..0 (BOD enabled, fast rising power) +# | +------------------ CKOUT (clock output on CKOUT pin -> disabled) +# +-------------------- CKDIV8 (divide clock by 8 -> don't divide) + +############################################################################### diff --git a/sparkfun/tiny/bootloaders/attiny/configuration/t85_aggressive/bootloaderconfig.h b/sparkfun/tiny/bootloaders/attiny/configuration/t85_aggressive/bootloaderconfig.h new file mode 100644 index 00000000..0af18f53 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/configuration/t85_aggressive/bootloaderconfig.h @@ -0,0 +1,262 @@ + /* Name: bootloaderconfig.h + * Micronucleus configuration file. + * This file (together with some settings in Makefile.inc) configures the boot loader + * according to the hardware. + * + * Controller type: ATtiny 85 - 16 MHz + * Configuration: Aggresively size optimized configuration + * USB D- : PB3 + * USB D+ : PB4 + * Entry : Always + * LED : None + * OSCCAL : Stays at 16 MHz + * Note: Uses 16 MHz V-USB implementation. + * Worked reliably in all tests, but is possibly less stable than 16.5M Hz Implementation with PLL + * Last Change: Jan 11,2015 + * + * License: GNU GPL v2 (see License.txt + */ + +#ifndef __bootloaderconfig_h_included__ +#define __bootloaderconfig_h_included__ + +/* ------------------------------------------------------------------------- */ +/* Hardware configuration. */ +/* Change this according to your CPU and USB configuration */ +/* ------------------------------------------------------------------------- */ + +#define USB_CFG_IOPORTNAME B + /* This is the port where the USB bus is connected. When you configure it to + * "B", the registers PORTB, PINB and DDRB will be used. + */ + +#define USB_CFG_DMINUS_BIT 3 +/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected. + * This may be any bit in the port. + */ +#define USB_CFG_DPLUS_BIT 4 +/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected. + * This may be any bit in the port, but must be configured as a pin change interrupt. + */ + +#define USB_CFG_CLOCK_KHZ (F_CPU/1000) +/* Clock rate of the AVR in kHz. Legal values are 12000, 12800, 15000, 16000, + * 16500, 18000 and 20000. The 12.8 MHz and 16.5 MHz versions of the code + * require no crystal, they tolerate +/- 1% deviation from the nominal + * frequency. All other rates require a precision of 2000 ppm and thus a + * crystal! + * Since F_CPU should be defined to your actual clock rate anyway, you should + * not need to modify this setting. + */ + +/* ------------- Set up interrupt configuration (CPU specific) -------------- */ +/* The register names change quite a bit in the ATtiny family. Pay attention */ +/* to the manual. Note that the interrupt flag system is still used even though */ +/* interrupts are disabled. So this has to be configured correctly. */ + + +// setup interrupt for Pin Change for D+ +#define USB_INTR_CFG PCMSK +#define USB_INTR_CFG_SET (1 << USB_CFG_DPLUS_BIT) +#define USB_INTR_CFG_CLR 0 +#define USB_INTR_ENABLE GIMSK +#define USB_INTR_ENABLE_BIT PCIE +#define USB_INTR_PENDING GIFR +#define USB_INTR_PENDING_BIT PCIF +#define USB_INTR_VECTOR PCINT0_vect + +/* ------------------------------------------------------------------------- */ +/* Configuration relevant to the CPU the bootloader is running on */ +/* ------------------------------------------------------------------------- */ + +// how many milliseconds should host wait till it sends another erase or write? +// needs to be above 4.5 (and a whole integer) as avr freezes for 4.5ms +#define MICRONUCLEUS_WRITE_SLEEP 5 + + +/* ---------------------- feature / code size options ---------------------- */ +/* Configure the behavior of the bootloader here */ +/* ------------------------------------------------------------------------- */ + +/* + * Define Bootloader entry condition + * + * If the entry condition is not met, the bootloader will not be activated and the user program + * is executed directly after a reset. If no user program has been loaded, the bootloader + * is always active. + * + * ENTRY_ALWAYS Always activate the bootloader after reset. Requires the least + * amount of code. + * + * ENTRY_WATCHDOG Activate the bootloader after a watchdog reset. This can be used + * to enter the bootloader from the user program. + * Adds 22 bytes. + * + * ENTRY_EXT_RESET Activate the bootloader after an external reset was issued by + * pulling the reset pin low. It may be necessary to add an external + * pull-up resistor to the reset pin if this entry method appears to + * behave unreliably. + * Adds 22 bytes. + * + * ENTRY_JUMPER Activate the bootloader when a specific pin is pulled low by an + * external jumper. + * Adds 34 bytes. + * + * JUMPER_PIN Pin the jumper is connected to. (e.g. PB0) + * JUMPER_PORT Port out register for the jumper (e.g. PORTB) + * JUMPER_DDR Port data direction register for the jumper (e.g. DDRB) + * JUMPER_INP Port inout register for the jumper (e.g. PINB) + * + */ + +#define ENTRYMODE ENTRY_ALWAYS + +#define JUMPER_PIN PB0 +#define JUMPER_PORT PORTB +#define JUMPER_DDR DDRB +#define JUMPER_INP PINB + +/* + Internal implementation, don't change this unless you want to add an entrymode. +*/ + +#define ENTRY_ALWAYS 1 +#define ENTRY_WATCHDOG 2 +#define ENTRY_EXT_RESET 3 +#define ENTRY_JUMPER 4 + +#if ENTRYMODE==ENTRY_ALWAYS + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() 1 +#elif ENTRYMODE==ENTRY_WATCHDOG + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() (MCUSR&_BV(WDRF)) +#elif ENTRYMODE==ENTRY_EXT_RESET + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() (MCUSR&_BV(EXTRF)) +#elif ENTRYMODE==ENTRY_JUMPER + // Enable pull up on jumper pin and delay to stabilize input + #define bootLoaderInit() {JUMPER_DDR&=~_BV(JUMPER_PIN);JUMPER_PORT|=_BV(JUMPER_PIN);_delay_ms(1);} + #define bootLoaderExit() {JUMPER_PORT&=~_BV(JUMPER_PIN);} + #define bootLoaderStartCondition() (!(JUMPER_INP&_BV(JUMPER_PIN))) +#else + #error "No entry mode defined" +#endif + +/* + * Define bootloader timeout value. + * + * The bootloader will only time out if a user program was loaded. + * + * AUTO_EXIT_NO_USB_MS The bootloader will exit after this delay if no USB is connected. + * Set to 0 to disable + * Adds ~6 bytes. + * (This will wait for an USB SE0 reset from the host) + * + * AUTO_EXIT_MS The bootloader will exit after this delay if no USB communication + * from the host tool was received. + * Set to 0 to disable + * + * All values are approx. in milliseconds + */ + +#define AUTO_EXIT_NO_USB_MS 0 +#define AUTO_EXIT_MS 6000 + + /* + * Defines the setting of the RC-oscillator calibration after quitting the bootloader. (OSCCAL) + * + * OSCCAL_RESTORE_DEFAULT Set this to '1' to revert to OSCCAL factore calibration after bootlaoder exit. + * This is 8 MHz +/-2% on most devices or 16 MHz on the ATtiny 85 with activated PLL. + * Adds ~14 bytes. + * + * OSCCAL_SAVE_CALIB Set this to '1' to save the OSCCAL calibration during program upload. + * This value will be reloaded after reset and will also be used for the user + * program unless "OSCCAL_RESTORE_DEFAULT" is active. This allows calibrate the internal + * RC oscillator to the F_CPU target frequency +/-1% from the USB timing. Please note + * that only true if the ambient temperature does not change. + * Adds ~38 bytes. + * + * OSCCAL_HAVE_XTAL Set this to '1' if you have an external crystal oscillator. In this case no attempt + * will be made to calibrate the oscillator. You should deactivate both options above + * if you use this to avoid redundant code. + * + * If both options are selected, OSCCAL_RESTORE_DEFAULT takes precedence. + * + * If no option is selected, OSCCAL will be left untouched and stays at either factory calibration or F_CPU depending + * on whether the bootloader was activated. This will take the least memory. You can use this if your program + * comes with its own OSCCAL calibration or an external clock source is used. + */ + +#define OSCCAL_RESTORE_DEFAULT 0 +#define OSCCAL_SAVE_CALIB 0 +#define OSCCAL_HAVE_XTAL 0 + + +/* + * Defines handling of an indicator LED while the bootloader is active. + * + * LED_MODE Define behavior of attached LED or suppress LED code. + * + * NONE Do not generate LED code (gains 18 bytes). + * ACTIVE_HIGH LED is on when output pin is high. This will toggle bettwen 1 and 0. + * ACTIVE_LOW LED is on when output pin is low. This will toggle between Z and 0. + * + * LED_DDR,LED_PORT,LED_PIN Where is your LED connected? + * + */ + +#define LED_MODE NONE + +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PB1 + +/* + * This is the implementation of the LED code. Change the configuration above unless you want to + * change the led behavior + * + * LED_INIT Called once after bootloader entry + * LED_EXIT Called once during bootloader exit + * LED_MACRO Called in the main loop with the idle counter as parameter. + * Use to define pattern. +*/ + +#define NONE 0 +#define ACTIVE_HIGH 1 +#define ACTIVE_LOW 2 + +#if LED_MODE==ACTIVE_HIGH + #define LED_INIT(x) LED_DDR |= _BV(LED_PIN); + #define LED_EXIT(x) {LED_DDR &=~_BV(LED_PIN);LED_PORT &=~_BV(LED_PIN);} + #define LED_MACRO(x) if ( x & 0x4c ) {LED_PORT&=~_BV(LED_PIN);} else {LED_PORT|=_BV(LED_PIN);} +#elif LED_MODE==ACTIVE_LOW + #define LED_INIT(x) LED_PORT &=~_BV(LED_PIN); + #define LED_EXIT(x) LED_DDR &=~_BV(LED_PIN); + #define LED_MACRO(x) if ( x & 0x4c ) {LED_DDR&=~_BV(LED_PIN);} else {LED_DDR|=_BV(LED_PIN);} +#elif LED_MODE==NONE + #define LED_INIT(x) + #define LED_EXIT(x) + #define LED_MACRO(x) +#endif + +/* --------------------------------------------------------------------------- */ +/* Micronucleus internal configuration. Do not change anything below this line */ +/* --------------------------------------------------------------------------- */ + +// Microcontroller vectortable entries in the flash +#define RESET_VECTOR_OFFSET 0 + +// number of bytes before the boot loader vectors to store the tiny application vector table +#define TINYVECTOR_RESET_OFFSET 4 +#define TINYVECTOR_OSCCAL_OFFSET 6 + +/* ------------------------------------------------------------------------ */ +// postscript are the few bytes at the end of programmable memory which store tinyVectors +#define POSTSCRIPT_SIZE 6 +#define PROGMEM_SIZE (BOOTLOADER_ADDRESS - POSTSCRIPT_SIZE) /* max size of user program */ + +#endif /* __bootloader_h_included__ */ diff --git a/sparkfun/tiny/bootloaders/attiny/configuration/t85_default/Makefile.inc b/sparkfun/tiny/bootloaders/attiny/configuration/t85_default/Makefile.inc new file mode 100644 index 00000000..ee7252d8 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/configuration/t85_default/Makefile.inc @@ -0,0 +1,60 @@ +# Name: Makefile +# Project: Micronucleus +# License: GNU GPL v2 (see License.txt) + +# Controller type: ATtiny 85 - 16.5 MHz +# Configuration: Default +# Last Change: Mar 16,2014 + + +F_CPU = 16500000 +DEVICE = attiny85 + +# hexadecimal address for bootloader section to begin. To calculate the best value: +# - make clean; make main.hex; ### output will list data: 2124 (or something like that) +# - for the size of your device (8kb = 1024 * 8 = 8192) subtract above value 2124... = 6068 +# - How many pages in is that? 6068 / 64 (tiny85 page size in bytes) = 94.8125 +# - round that down to 94 - our new bootloader address is 94 * 64 = 6016, in hex = 1780 +BOOTLOADER_ADDRESS = 1980 + +FUSEOPT = -U lfuse:w:0xe1:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m +FUSEOPT_DISABLERESET = -U lfuse:w:0xe1:m -U efuse:w:0xfe:m -U hfuse:w:0x5d:m + +#--------------------------------------------------------------------- +# ATtiny85 +#--------------------------------------------------------------------- +# Fuse extended byte: +# 0xFE = - - - - - 1 1 0 +# ^ +# | +# +---- SELFPRGEN (enable self programming flash) +# +# Fuse high byte: +# 0xdd = 1 1 0 1 1 1 0 1 +# ^ ^ ^ ^ ^ \-+-/ +# | | | | | +------ BODLEVEL 2..0 (brownout trigger level -> 2.7V) +# | | | | +---------- EESAVE (preserve EEPROM on Chip Erase -> not preserved) +# | | | +-------------- WDTON (watchdog timer always on -> disable) +# | | +---------------- SPIEN (enable serial programming -> enabled) +# | +------------------ DWEN (debug wire enable) +# +-------------------- RSTDISBL (disable external reset -> enabled) +# +# Fuse high byte ("no reset": external reset disabled, can't program through SPI anymore) +# 0x5d = 0 1 0 1 1 1 0 1 +# ^ ^ ^ ^ ^ \-+-/ +# | | | | | +------ BODLEVEL 2..0 (brownout trigger level -> 2.7V) +# | | | | +---------- EESAVE (preserve EEPROM on Chip Erase -> not preserved) +# | | | +-------------- WDTON (watchdog timer always on -> disable) +# | | +---------------- SPIEN (enable serial programming -> enabled) +# | +------------------ DWEN (debug wire enable) +# +-------------------- RSTDISBL (disable external reset -> disabled!) +# +# Fuse low byte: +# 0xe1 = 1 1 1 0 0 0 0 1 +# ^ ^ \+/ \--+--/ +# | | | +------- CKSEL 3..0 (clock selection -> HF PLL) +# | | +--------------- SUT 1..0 (BOD enabled, fast rising power) +# | +------------------ CKOUT (clock output on CKOUT pin -> disabled) +# +-------------------- CKDIV8 (divide clock by 8 -> don't divide) + +############################################################################### diff --git a/sparkfun/tiny/bootloaders/attiny/configuration/t85_default/bootloaderconfig.h b/sparkfun/tiny/bootloaders/attiny/configuration/t85_default/bootloaderconfig.h new file mode 100644 index 00000000..9b3ac638 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/configuration/t85_default/bootloaderconfig.h @@ -0,0 +1,259 @@ +/* Name: bootloaderconfig.h + * Micronucleus configuration file. + * This file (together with some settings in Makefile.inc) configures the boot loader + * according to the hardware. + * + * Controller type: ATtiny 85 - 16.5 MHz + * Configuration: Default configuration + * USB D- : PB3 + * USB D+ : PB4 + * Entry : Always + * LED : None + * OSCCAL : Stays at 16 MHz + * Note: Uses 16.5 MHz V-USB implementation with PLL + * Last Change: Mar 16,2014 + * + * License: GNU GPL v2 (see License.txt + */ +#ifndef __bootloaderconfig_h_included__ +#define __bootloaderconfig_h_included__ + +/* ------------------------------------------------------------------------- */ +/* Hardware configuration. */ +/* Change this according to your CPU and USB configuration */ +/* ------------------------------------------------------------------------- */ + +#define USB_CFG_IOPORTNAME B + /* This is the port where the USB bus is connected. When you configure it to + * "B", the registers PORTB, PINB and DDRB will be used. + */ + +#define USB_CFG_DMINUS_BIT 3 +/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected. + * This may be any bit in the port. + */ +#define USB_CFG_DPLUS_BIT 4 +/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected. + * This may be any bit in the port, but must be configured as a pin change interrupt. + */ + +#define USB_CFG_CLOCK_KHZ (F_CPU/1000) +/* Clock rate of the AVR in kHz. Legal values are 12000, 12800, 15000, 16000, + * 16500, 18000 and 20000. The 12.8 MHz and 16.5 MHz versions of the code + * require no crystal, they tolerate +/- 1% deviation from the nominal + * frequency. All other rates require a precision of 2000 ppm and thus a + * crystal! + * Since F_CPU should be defined to your actual clock rate anyway, you should + * not need to modify this setting. + */ + +/* ------------- Set up interrupt configuration (CPU specific) -------------- */ +/* The register names change quite a bit in the ATtiny family. Pay attention */ +/* to the manual. Note that the interrupt flag system is still used even though */ +/* interrupts are disabled. So this has to be configured correctly. */ + + +// setup interrupt for Pin Change for D+ +#define USB_INTR_CFG PCMSK +#define USB_INTR_CFG_SET (1 << USB_CFG_DPLUS_BIT) +#define USB_INTR_CFG_CLR 0 +#define USB_INTR_ENABLE GIMSK +#define USB_INTR_ENABLE_BIT PCIE +#define USB_INTR_PENDING GIFR +#define USB_INTR_PENDING_BIT PCIF +#define USB_INTR_VECTOR PCINT0_vect + +/* ------------------------------------------------------------------------- */ +/* Configuration relevant to the CPU the bootloader is running on */ +/* ------------------------------------------------------------------------- */ + +// how many milliseconds should host wait till it sends another erase or write? +// needs to be above 4.5 (and a whole integer) as avr freezes for 4.5ms +#define MICRONUCLEUS_WRITE_SLEEP 5 + + +/* ---------------------- feature / code size options ---------------------- */ +/* Configure the behavior of the bootloader here */ +/* ------------------------------------------------------------------------- */ + +/* + * Define Bootloader entry condition + * + * If the entry condition is not met, the bootloader will not be activated and the user program + * is executed directly after a reset. If no user program has been loaded, the bootloader + * is always active. + * + * ENTRY_ALWAYS Always activate the bootloader after reset. Requires the least + * amount of code. + * + * ENTRY_WATCHDOG Activate the bootloader after a watchdog reset. This can be used + * to enter the bootloader from the user program. + * Adds 22 bytes. + * + * ENTRY_EXT_RESET Activate the bootloader after an external reset was issued by + * pulling the reset pin low. It may be necessary to add an external + * pull-up resistor to the reset pin if this entry method appears to + * behave unreliably. + * Adds 22 bytes. + * + * ENTRY_JUMPER Activate the bootloader when a specific pin is pulled low by an + * external jumper. + * Adds 34 bytes. + * + * JUMPER_PIN Pin the jumper is connected to. (e.g. PB0) + * JUMPER_PORT Port out register for the jumper (e.g. PORTB) + * JUMPER_DDR Port data direction register for the jumper (e.g. DDRB) + * JUMPER_INP Port inout register for the jumper (e.g. PINB) + * + */ + +#define ENTRYMODE ENTRY_ALWAYS + +#define JUMPER_PIN PB0 +#define JUMPER_PORT PORTB +#define JUMPER_DDR DDRB +#define JUMPER_INP PINB + +/* + Internal implementation, don't change this unless you want to add an entrymode. +*/ + +#define ENTRY_ALWAYS 1 +#define ENTRY_WATCHDOG 2 +#define ENTRY_EXT_RESET 3 +#define ENTRY_JUMPER 4 + +#if ENTRYMODE==ENTRY_ALWAYS + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() 1 +#elif ENTRYMODE==ENTRY_WATCHDOG + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() (MCUSR&_BV(WDRF)) +#elif ENTRYMODE==ENTRY_EXT_RESET + #define bootLoaderInit() + #define bootLoaderExit() + #define bootLoaderStartCondition() (MCUSR&_BV(EXTRF)) +#elif ENTRYMODE==ENTRY_JUMPER + // Enable pull up on jumper pin and delay to stabilize input + #define bootLoaderInit() {JUMPER_DDR&=~_BV(JUMPER_PIN);JUMPER_PORT|=_BV(JUMPER_PIN);_delay_ms(1);} + #define bootLoaderExit() {JUMPER_PORT&=~_BV(JUMPER_PIN);} + #define bootLoaderStartCondition() (!(JUMPER_INP&_BV(JUMPER_PIN))) +#else + #error "No entry mode defined" +#endif + +/* + * Define bootloader timeout value. + * + * The bootloader will only time out if a user program was loaded. + * + * AUTO_EXIT_NO_USB_MS The bootloader will exit after this delay if no USB is connected. + * Set to 0 to disable + * Adds ~6 bytes. + * (This will wait for an USB SE0 reset from the host) + * + * AUTO_EXIT_MS The bootloader will exit after this delay if no USB communication + * from the host tool was received. + * Set to 0 to disable + * + * All values are approx. in milliseconds + */ + +#define AUTO_EXIT_NO_USB_MS 0 +#define AUTO_EXIT_MS 6000 + + /* + * Defines the setting of the RC-oscillator calibration after quitting the bootloader. (OSCCAL) + * + * OSCCAL_RESTORE_DEFAULT Set this to '1' to revert to OSCCAL factore calibration after bootlaoder exit. + * This is 8 MHz +/-2% on most devices or 16 MHz on the ATtiny 85 with activated PLL. + * Adds ~14 bytes. + * + * OSCCAL_SAVE_CALIB Set this to '1' to save the OSCCAL calibration during program upload. + * This value will be reloaded after reset and will also be used for the user + * program unless "OSCCAL_RESTORE_DEFAULT" is active. This allows calibrate the internal + * RC oscillator to the F_CPU target frequency +/-1% from the USB timing. Please note + * that only true if the ambient temperature does not change. + * Adds ~38 bytes. + * + * OSCCAL_HAVE_XTAL Set this to '1' if you have an external crystal oscillator. In this case no attempt + * will be made to calibrate the oscillator. You should deactivate both options above + * if you use this to avoid redundant code. + * + * If both options are selected, OSCCAL_RESTORE_DEFAULT takes precedence. + * + * If no option is selected, OSCCAL will be left untouched and stays at either factory calibration or F_CPU depending + * on whether the bootloader was activated. This will take the least memory. You can use this if your program + * comes with its own OSCCAL calibration or an external clock source is used. + */ + +#define OSCCAL_RESTORE_DEFAULT 0 +#define OSCCAL_SAVE_CALIB 1 +#define OSCCAL_HAVE_XTAL 0 + +/* + * Defines handling of an indicator LED while the bootloader is active. + * + * LED_MODE Define behavior of attached LED or suppress LED code. + * + * NONE Do not generate LED code (gains 18 bytes). + * ACTIVE_HIGH LED is on when output pin is high. This will toggle bettwen 1 and 0. + * ACTIVE_LOW LED is on when output pin is low. This will toggle between Z and 0. + * + * LED_DDR,LED_PORT,LED_PIN Where is your LED connected? + * + */ + +#define LED_MODE NONE + +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PB1 + +/* + * This is the implementation of the LED code. Change the configuration above unless you want to + * change the led behavior + * + * LED_INIT Called once after bootloader entry + * LED_EXIT Called once during bootloader exit + * LED_MACRO Called in the main loop with the idle counter as parameter. + * Use to define pattern. +*/ + +#define NONE 0 +#define ACTIVE_HIGH 1 +#define ACTIVE_LOW 2 + +#if LED_MODE==ACTIVE_HIGH + #define LED_INIT(x) LED_DDR |= _BV(LED_PIN); + #define LED_EXIT(x) {LED_DDR &=~_BV(LED_PIN);LED_PORT &=~_BV(LED_PIN);} + #define LED_MACRO(x) if ( x & 0x4c ) {LED_PORT&=~_BV(LED_PIN);} else {LED_PORT|=_BV(LED_PIN);} +#elif LED_MODE==ACTIVE_LOW + #define LED_INIT(x) LED_PORT &=~_BV(LED_PIN); + #define LED_EXIT(x) LED_DDR &=~_BV(LED_PIN); + #define LED_MACRO(x) if ( x & 0x4c ) {LED_DDR&=~_BV(LED_PIN);} else {LED_DDR|=_BV(LED_PIN);} +#elif LED_MODE==NONE + #define LED_INIT(x) + #define LED_EXIT(x) + #define LED_MACRO(x) +#endif + +/* --------------------------------------------------------------------------- */ +/* Micronucleus internal configuration. Do not change anything below this line */ +/* --------------------------------------------------------------------------- */ + +// Microcontroller vectortable entries in the flash +#define RESET_VECTOR_OFFSET 0 + +// number of bytes before the boot loader vectors to store the tiny application vector table +#define TINYVECTOR_RESET_OFFSET 4 +#define TINYVECTOR_OSCCAL_OFFSET 6 + +/* ------------------------------------------------------------------------ */ +// postscript are the few bytes at the end of programmable memory which store tinyVectors +#define POSTSCRIPT_SIZE 6 +#define PROGMEM_SIZE (BOOTLOADER_ADDRESS - POSTSCRIPT_SIZE) /* max size of user program */ + +#endif /* __bootloader_h_included__ */ diff --git a/sparkfun/tiny/bootloaders/attiny/crt1.S b/sparkfun/tiny/bootloaders/attiny/crt1.S new file mode 100644 index 00000000..1f68351b --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/crt1.S @@ -0,0 +1,112 @@ + +/* Copyright (c) 2002, Marek Michalkiewicz + Copyright (c) 2007, 2008 Eric B. Weddington + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * 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. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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. */ + +/* $Id$ */ + +#if (__GNUC__ < 3) || (__GNUC__ == 3 && __GNUC_MINOR__ < 3) +#error "GCC version >= 3.3 required" +#endif + +/* +#include IOSYMFILE +#include "macros.inc" +*/ +#include +//#include + +#ifdef __AVR_HAVE_JMP_CALL__ + #define XJMP jmp +#else + #define XJMP rjmp +#endif + + #define XCALL rcall + + .macro vector name + .weak \name + .set \name, __init + XJMP \name + .endm + + .section .vectors,"ax",@progbits + .global __vectors + .global __bad_interrupt + .func __vectors + +__bad_interrupt: +__vectors: + XJMP __init +; vector __vector_1 +; vector __vector_2 +; vector __vector_3 + .endfunc + + /* Handle unexpected interrupts (enabled and no handler), which + usually indicate a bug. Jump to the __vector_default function + if defined by the user, otherwise jump to the reset address. + + This must be in a different section, otherwise the assembler + will resolve "rjmp" offsets and there will be no relocs. */ + + .section .init0,"ax",@progbits + .weak __init +; .func __init +__init: + + .weak __stack + .set __stack, RAMEND + /* By default, malloc() uses the current value of the stack pointer + minus __malloc_margin as the highest available address. + + In some applications with external SRAM, the stack can be below + the data section (in the internal SRAM - faster), and __heap_end + should be set to the highest address available for malloc(). */ + .weak __heap_end + .set __heap_end, 0 + + .section .init2,"ax",@progbits + clr R1 + +#ifndef ENABLE_UNSAFE_OPTIMIZATIONS + out 0x3f,r1 + ldi r28,lo8(__stack) + ldi r29,hi8(__stack) + out 0x3d, r28 + out 0x3e, r29 +#endif + .section .init9,"ax",@progbits +; rcall main +; XJMP __vectors-2 + XJMP main + +; .endfunc + diff --git a/sparkfun/tiny/bootloaders/attiny/main.c b/sparkfun/tiny/bootloaders/attiny/main.c new file mode 100644 index 00000000..82211058 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/main.c @@ -0,0 +1,377 @@ +/* + * Project: Micronucleus - v2.3 + * + * Micronucleus V2.3 (c) 2016 Tim Bo"scke - cpldcpu@gmail.com + * (c) 2014 Shay Green + * Original Micronucleus (c) 2012 Jenna Fox + * + * Based on USBaspLoader-tiny85 (c) 2012 Louis Beaudoin + * Based on USBaspLoader (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH + * + * License: GNU GPL v2 (see License.txt) + */ + +#define MICRONUCLEUS_VERSION_MAJOR 2 +#define MICRONUCLEUS_VERSION_MINOR 3 + +#include +#include +#include +#include +#include + +#include "bootloaderconfig.h" +#include "usbdrv/usbdrv.c" + +// verify the bootloader address aligns with page size +#if (defined __AVR_ATtiny841__)||(defined __AVR_ATtiny441__) + #if BOOTLOADER_ADDRESS % ( SPM_PAGESIZE * 4 ) != 0 + #error "BOOTLOADER_ADDRESS in makefile must be a multiple of chip's pagesize" + #endif +#else + #if BOOTLOADER_ADDRESS % SPM_PAGESIZE != 0 + #error "BOOTLOADER_ADDRESS in makefile must be a multiple of chip's pagesize" + #endif +#endif + +#if SPM_PAGESIZE>256 + #error "Micronucleus only supports pagesizes up to 256 bytes" +#endif + +#if ((AUTO_EXIT_MS>0) && (AUTO_EXIT_MS<1000)) + #error "Do not set AUTO_EXIT_MS to below 1s to allow Micronucleus to function properly" +#endif + +// Device configuration reply +// Length: 6 bytes +// Byte 0: User program memory size, high byte +// Byte 1: User program memory size, low byte +// Byte 2: Flash Pagesize in bytes +// Byte 3: Page write timing in ms. +// Bit 7 '0': Page erase time equals page write time +// Bit 7 '1': Page erase time equals page write time divided by 4 +// Byte 4: SIGNATURE_1 +// Byte 5: SIGNATURE_2 + +PROGMEM const uint8_t configurationReply[6] = { + (((uint16_t)PROGMEM_SIZE) >> 8) & 0xff, + ((uint16_t)PROGMEM_SIZE) & 0xff, + SPM_PAGESIZE, + MICRONUCLEUS_WRITE_SLEEP, + SIGNATURE_1, + SIGNATURE_2 +}; + + typedef union { + uint16_t w; + uint8_t b[2]; + } uint16_union_t; + +#if OSCCAL_RESTORE_DEFAULT + register uint8_t osccal_default asm("r2"); +#endif + +register uint16_union_t currentAddress asm("r4"); // r4/r5 current progmem address, used for erasing and writing +register uint16_union_t idlePolls asm("r6"); // r6/r7 idlecounter + +// command system schedules functions to run in the main loop +enum { + cmd_local_nop=0, + cmd_device_info=0, + cmd_transfer_page=1, + cmd_erase_application=2, + cmd_write_data=3, + cmd_exit=4, + cmd_write_page=64 // internal commands start at 64 +}; +register uint8_t command asm("r3"); // bind command to r3 + +// Definition of sei and cli without memory barrier keyword to prevent reloading of memory variables +#define sei() asm volatile("sei") +#define cli() asm volatile("cli") +#define nop() asm volatile("nop") +#define wdr() asm volatile("wdr") + +// Use the old delay routines without NOP padding. This saves memory. +#define __DELAY_BACKWARD_COMPATIBLE__ + +/* ------------------------------------------------------------------------ */ +static inline void eraseApplication(void); +static void writeFlashPage(void); +static void writeWordToPageBuffer(uint16_t data); +static uint8_t usbFunctionSetup(uint8_t data[8]); +static inline void leaveBootloader(void); + +// This function is never called, it is just here to suppress a compiler warning. +USB_PUBLIC usbMsgLen_t usbFunctionDescriptor(struct usbRequest *rq) { return 0; } + +// erase all pages until bootloader, in reverse order (so our vectors stay in place for as long as possible) +// to minimise the chance of leaving the device in a state where the bootloader wont run, if there's power failure +// during upload +static inline void eraseApplication(void) { + uint16_t ptr = BOOTLOADER_ADDRESS; + + while (ptr) { +#if (defined __AVR_ATtiny841__)||(defined __AVR_ATtiny441__) + ptr -= SPM_PAGESIZE * 4; +#else + ptr -= SPM_PAGESIZE; +#endif + boot_page_erase(ptr); + } + + // Reset address to ensure the reset vector is written first. + currentAddress.w = 0; +} + +// simply write currently stored page in to already erased flash memory +static inline void writeFlashPage(void) { + if (currentAddress.w - 2 bRequest == cmd_device_info) { // get device info + usbMsgPtr = (usbMsgPtr_t)configurationReply; + return sizeof(configurationReply); + } else if (rq->bRequest == cmd_transfer_page) { + // Set page address. Address zero always has to be written first to ensure reset vector patching. + // Mask to page boundary to prevent vulnerability to partial page write "attacks" + if ( currentAddress.w != 0 ) { + currentAddress.b[0]=rq->wIndex.bytes[0] & (~ (SPM_PAGESIZE-1)); + currentAddress.b[1]=rq->wIndex.bytes[1]; + + // clear page buffer as a precaution before filling the buffer in case + // a previous write operation failed and there is still something in the buffer. + __SPM_REG=(_BV(CTPB)|_BV(__SPM_ENABLE)); + asm volatile("spm"); + + } + } else if (rq->bRequest == cmd_write_data) { // Write data + writeWordToPageBuffer(rq->wValue.word); + writeWordToPageBuffer(rq->wIndex.word); + if ((currentAddress.b[0] % SPM_PAGESIZE) == 0) + command=cmd_write_page; // ask runloop to write our page + } else { + // Handle cmd_erase_application and cmd_exit + command=rq->bRequest&0x3f; + } + return 0; +} + +static void initHardware (void) +{ + // Disable watchdog and set timeout to maximum in case the WDT is fused on +#ifdef CCP + // New ATtinies841/441 use a different unlock sequence and renamed registers + MCUSR=0; + CCP = 0xD8; + WDTCSR = 1<0) { + idlePolls.b[1]=((AUTO_EXIT_MS-AUTO_EXIT_NO_USB_MS)/5)>>8; + } else { + idlePolls.b[1]=0; + } + + command=cmd_local_nop; + currentAddress.w = 0; + + do { + // 15 clockcycles per loop. + // adjust fastctr for 5ms timeout + + uint16_t fastctr=(uint16_t)(F_CPU/(1000.0f*15.0f/5.0f)); + uint8_t resetctr=100; + + do { + if ((USBIN & USBMASK) !=0) resetctr=100; + + if (!--resetctr) { // reset encountered + usbNewDeviceAddr = 0; // bits from the reset handling of usbpoll() + usbDeviceAddr = 0; +#if (OSCCAL_HAVE_XTAL == 0) + calibrateOscillatorASM(); +#endif + } + + if (USB_INTR_PENDING & (1<= 0){ + usbProcessRx(usbRxBuf + 1, len); // only single buffer due to in-order processing + usbRxLen = 0; /* mark rx buffer as available */ + } + + if(usbTxLen & 0x10){ /* transmit system idle */ + if(usbMsgLen != USB_NO_MSG){ /* transmit data pending? */ + usbBuildTxBlock(); + } + } + } + + idlePolls.w++; + + // Try to execute program when bootloader times out + if (AUTO_EXIT_MS&&(idlePolls.w==(AUTO_EXIT_MS/5))) { + if (pgm_read_byte(BOOTLOADER_ADDRESS - TINYVECTOR_RESET_OFFSET + 1)!=0xff) break; + } + + LED_MACRO( idlePolls.b[0] ); + + // Test whether another interrupt occurred during the processing of USBpoll and commands. + // If yes, we missed a data packet on the bus. Wait until the bus was idle for 8.8µs to + // allow synchronising to the next incoming packet. + + if (USB_INTR_PENDING & (1<>= 1; + + if (step==0) // Enter neighborhood search mode + { + step=1; + if(xl <= optimumDev){ + optimumDev = xl; + optimumValue = OSCCAL; + } + } + } + + OSCCAL = optimumValue; + asm volatile(" NOP"); +} +#endif \ No newline at end of file diff --git a/sparkfun/tiny/bootloaders/attiny/releases/t84_roshamglo.hex b/sparkfun/tiny/bootloaders/attiny/releases/t84_roshamglo.hex new file mode 100644 index 00000000..ad0b0881 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/releases/t84_roshamglo.hex @@ -0,0 +1,102 @@ +:1019800017C00403090412011001FF0000084F1BD7 +:10199000140003020000000109021200010100808E +:1019A00032090400000000000000197A4005930C81 +:1019B00011241FBECFE5D2E0CDBFDEBF10E0A0E610 +:1019C000B0E001C01D92AC38B107E1F7A2C1DC0163 +:1019D0008FEF9FEF332715C02D912827722F229567 +:1019E0002727822F269526952827239522703217A0 +:1019F00077952795822F8927972F76952795972773 +:101A00008227615048F7809590950895E0DF8D9387 +:101A10009D930895CF93CFB7CF93C395B09BE9F72C +:101A2000B09B09C0B09B07C0B09B05C0B09B03C072 +:101A3000B09B01C0A7C0DF93C0916E00DD27CA58DC +:101A4000DF4FB09B02C0DF91EBCF2F930F931F931B +:101A500006B32FEF00FB20F94F933F9316B34FEFE0 +:101A6000012700FB21F93BE031C04E7F012F16B367 +:101A7000216028C0102F4D7F2260000006B329C0CE +:101A80004B7F2460012F000016B32BC016B3477F95 +:101A900028602AC04F7E06B320612CC04F7D16B34C +:101AA00020622FC04F7B06B3206432C0422706B3AA +:101AB00049934FEF0000102710FB20F916B3137065 +:101AC000C9F1297F91F2012700FB21F906B3237F99 +:101AD00089F2315058F1102710FB22F916B3277EF6 +:101AE00079F2012700FB23F92F7C81F206B310273E +:101AF00010FB24F92F7971F200C016B3012700FB07 +:101B000025F92F7359F200C006B3102710FB26F9F0 +:101B1000223040F200C016B3012700FB27F9243021 +:101B200028F64F77206816B30000F9CF10E21ABFED +:101B300000271DC03B503195C31BD04010E21ABF97 +:101B40000881033C19F10B3409F120916C001981D3 +:101B5000110F1213EDCF093641F10D3211F0013E94 +:101B600039F7CAE01AB715FD02C0CA95D9F7009334 +:101B700074003F914F911F910F912F91DF91CAB740 +:101B8000C5FD4BCFCF91CFBFCF9108952091740069 +:101B9000222379F3109172001123E1F43430E2F042 +:101BA0003093720020936D0017C0009172000130D5 +:101BB0008CF40AE530916F0034FD10C000936F0083 +:101BC000C1E6D0E00FC02795A8F45150A9F4220F28 +:101BD0000000F9CF4AE503C042ED01C0432FC4E144 +:101BE000D0E032E017B31360C09A17BB08B320E40B +:101BF00013E05F93012756E008BB279520F451506E +:101C000021F4220FF9CF012756E000003B5A08BB10 +:101C1000D0F2279528F4515029F4220F0000F9CF73 +:101C2000012756E0279508BB20F4515021F4220FDC +:101C3000F9CF012756E02991332308BB21F60C7F09 +:101C400010917300110FC651D04008BB11F01093D2 +:101C50006C0010E21ABF016017B31C7F402F4C7F4D +:101C60005F9100C000C008BB17BB48BB82CF2FEFFD +:101C7000B0E8A0E04AE0B1BF00008EE599E0B0997D +:101C8000FECFB09BFECF0197B099FDCF97FF03C069 +:101C9000BA1B819501C0BA0FA69539F4A0E428F4C7 +:101CA000281710F031B7282FA1E0415021F731BF9C +:101CB000000008959C01F2014114510411F42FEB2E +:101CC0003CEC81E0090180935700E895112482E003 +:101CD000482E512C4E0E5F1E089514BE88E181BD22 +:101CE00087E081BDB89A88EB9BE0ECE2F1E03197A8 +:101CF000F1F70197D1F7B8988AE580936F008FEFDD +:101D00008093600080B5826080BD8BB780628BBF9E +:101D100008951F93CF93DF93D098D89A88EB9BE0D8 +:101D20000197F1F781B7282EC89B06C0EDE7F9E1CE +:101D3000E491EF3F09F038C1D0DF84E087BB77241E +:101D4000332444245524C0EADFE014E686B390E04F +:101D500083709070892B09F014E6115029F41092C9 +:101D6000730010926C0083DF0AB605FE05C052DED8 +:101D700080E28ABF772402C0219741F7A895832D7E +:101D8000823069F4E0E8F9E1E054F04083E08093C8 +:101D90005700E8953097C1F74424552412C0803489 +:101DA00059F4F201329789E1E038F80750F485E000 +:101DB00080935700E89505C0843019F4CD2B11F4B9 +:101DC000EEC0332490917200935097FDA0C0809193 +:101DD0006D008D3209F099C0983009F096C083ECFF +:101DE000809361008AE580936F0080917700807610 +:101DF000909178008823A9F1992341F48AEA99E126 +:101E0000909371008093700096E074C0913079F4E3 +:101E10004114510409F46DC080917B0040EC442EC4 +:101E2000482250907C0081E187BFE89562C09330E2 +:101E3000A1F48091790090917A003CDF80917B0041 +:101E400090917C0037DF842D90E08F739070892B08 +:101E500009F04FC030E4332E4CC02FE3322E39222C +:101E600048C02091790010926A00992331F41092B1 +:101E70006B002AE630E092E037C0953019F42093E9 +:101E800073002FC09630E9F480917A00813019F404 +:101E900086E899E104C0823041F488E999E19093A1 +:101EA00071008093700092E125C0833011F52223E8 +:101EB00001F582E899E1909371008093700094E0BD +:101EC00019C0983019F425E730E009C0993019F4A9 +:101ED0002093750006C09A3021F42AE630E091E0A4 +:101EE00003C02AE630E090E0309371002093700048 +:101EF00001C090E080917E00882329F480917D00CC +:101F0000891708F4982F90936000109272008091C6 +:101F10006F0084FF30C0809160008F3F61F1182F07 +:101F2000893008F018E0811B809360008091610087 +:101F300098E8892780936100112381F0E091700077 +:101F4000F0917100912FA2E6B0E084918D933196CB +:101F50009150D9F7F0937100E093700082E690E021 +:101F6000612F54DD612F6C5F6C3019F08FEF80931F +:101F7000600060936F000894611C711C862D8C7446 +:101F800011F0C29801C0C29A0AB605FEDCCE85E106 +:101F9000B09B85E18150E1F780E28ABFD4CEBA9848 +:101FA000C2989BDE1BBE10BCD89821BE0000E6CCB8 +:021FB000FFCF61 +:040000030000198060 +:00000001FF diff --git a/sparkfun/tiny/bootloaders/attiny/upgrade.c b/sparkfun/tiny/bootloaders/attiny/upgrade.c new file mode 100644 index 00000000..698ed28e --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/upgrade.c @@ -0,0 +1,176 @@ +// Upgrade is an in-place firmware upgrader for tiny85 chips - just fill in the +// 'bootloaderAddress' variable in bootloader_data.h, and the bootloaderData +// progmem array with the bootloader data, and you're ready to go. +// +// Upgrade will firstly rewrite the interrupt vector table to disable the bootloader, +// rewriting it to just run the upgrade app. Next it erases and writes each page of the +// bootloader in sequence, erasing over any remaining pages leaving them set to 0xFFFF +// Finally upgrader erases it's interrupt table again and fills it with RJMPs to +// bootloaderAddress, effectively bridging the interrupts in to the new bootloader's +// interrupts table. +// +// While upgrade has been written with attiny85 and micronucleus in mind, it should +// work with other bootloaders and other chips with flash self program but no hardware +// bootloader protection, where the bootloader exists at the end of flash +// +// Be very careful to not power down the AVR while upgrader is running. +// If you connect a piezo between pb0 and pb1 you'll hear a bleep when the update +// is complete. You can also connect an LED with pb0 positive and pb1 or gnd negative and +// it will blink + +#include "./utils.h" +#include +#include +#include +#include +#include +#include "./bootloader_data.c" + +void secure_interrupt_vector_table(void); +void write_new_bootloader(void); +void forward_interrupt_vector_table(void); +void beep(void); +void reboot(void); + +void load_table(uint16_t address, uint16_t words[SPM_PAGESIZE / 2]); +void erase_page(uint16_t address); +void write_page(uint16_t address, uint16_t words[SPM_PAGESIZE / 2]); + + +int main(void) { + pinsOff(0xFF); // pull down all pins + outputs(0xFF); // all to ground - force usb disconnect + delay(250); // milliseconds + inputs(0xFF); // let them float + delay(250); + cli(); + + secure_interrupt_vector_table(); // reset our vector table to it's original state + write_new_bootloader(); + forward_interrupt_vector_table(); + + beep(); + + reboot(); + + return 0; +} + +// erase first page, removing any interrupt table hooks the bootloader added when +// upgrade was uploaded +void secure_interrupt_vector_table(void) { + uint16_t table[SPM_PAGESIZE / 2]; + + load_table(0, table); + + // wipe out any interrupt hooks the bootloader rewrote + int i = 0; + while (i < SPM_PAGESIZE / 2) { + table[0] = 0xFFFF; + i++; + } + + erase_page(0); + write_page(0, table); +} + +// erase bootloader's section and write over it with new bootloader code +void write_new_bootloader(void) { + uint16_t outgoing_page[SPM_PAGESIZE / 2]; + int iter = 0; + while (iter < sizeof(bootloader_data)) { + + // read in one page's worth of data from progmem + int word_addr = 0; + while (word_addr < SPM_PAGESIZE) { + int subaddress = ((int) bootloader_data) + iter + word_addr; + if (subaddress >= ((int) bootloader_data) + sizeof(bootloader_data)) { + outgoing_page[word_addr / 2] = 0xFFFF; + } else { + outgoing_page[word_addr / 2] = pgm_read_word(subaddress); + } + + word_addr += 2; + } + + // erase page in destination + erase_page(bootloader_address + iter); + // write updated page + write_page(bootloader_address + iter, outgoing_page); + + iter += 64; + } +} + +// write in forwarding interrupt vector table +void forward_interrupt_vector_table(void) { + uint16_t vector_table[SPM_PAGESIZE / 2]; + + int iter = 0; + while (iter < SPM_PAGESIZE / 2) { + // rjmp to bootloader_address's interrupt table + vector_table[iter] = 0xC000 + (bootloader_address / 2) - 1; + iter++; + } + + erase_page(0); + write_page(0, vector_table); +} + +void load_table(uint16_t address, uint16_t words[SPM_PAGESIZE / 2]) { + uint16_t subaddress = 0; + address -= address % SPM_PAGESIZE; // round down to nearest page start + + while (subaddress < SPM_PAGESIZE) { + words[subaddress / 2] = pgm_read_word(address + subaddress); + subaddress += 2; + } +} + +void erase_page(uint16_t address) { + boot_page_erase(address - (address % SPM_PAGESIZE)); + boot_spm_busy_wait(); +} + +void write_page(uint16_t address, uint16_t words[SPM_PAGESIZE / 2]) { + // fill buffer + uint16_t iter = 0; + while (iter < SPM_PAGESIZE / 2) { + boot_page_fill(address + (iter * 2), words[iter]); + iter++; + } + + boot_page_write(address); + boot_spm_busy_wait(); // Wait until the memory is written. +} + +// beep for a quarter of a second +void beep(void) { + outputs(pin(0) | pin(1)); + pinOff(1); + + byte i = 0; + while (i < 250) { + delay(1); + pinOn(pin(0)); + delay(1); + pinOff(pin(0)); + i++; + } +} + +void reboot(void) { + void (*ptrToFunction)(); // pointer to a function + ptrToFunction = 0x0000; + (*ptrToFunction)(); // reset! +} + + +////////////// Add padding to start of program so no program code could reasonably be erased while program is running +// this never needs to be called - avr-gcc stuff happening: http://www.nongnu.org/avr-libc/user-manual/mem_sections.html +volatile void FakeISR (void) __attribute__ ((naked)) __attribute__ ((section (".init0"))); +volatile void FakeISR (void) { + // 16 nops to pad out first section of program + asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); + asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); +} diff --git a/sparkfun/tiny/bootloaders/attiny/usbconfig.h b/sparkfun/tiny/bootloaders/attiny/usbconfig.h new file mode 100644 index 00000000..a181a33a --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/usbconfig.h @@ -0,0 +1,350 @@ +/* Name: usbconfig.h + * Project: V-USB, virtual USB port for Atmel's(r) AVR(r) microcontrollers + * Author: Christian Starkjohann + * Creation Date: 2005-04-01 + * Tabsize: 4 + * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH + * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) + * This Revision: $Id: usbconfig.h 799 2010-07-27 17:30:13Z cs $ + * + * Modified by SparkFun Electronics + * Date: 2017-02-01 + */ + +#ifndef __usbconfig_h_included__ +#define __usbconfig_h_included__ + +/* YOU SHOULD NOT NEED TO MODIFY THIS FILE! All configurations are supposed + * to go into bootloaderconfig.h! + */ + +/* ---------------------------- Hardware Config ---------------------------- */ + +/* All the port and pin assignments, as well as the clock speed and CRC + setting are now in bootloaderconfig.h: */ + +#include "bootloaderconfig.h" + +/* --------------------------- Functional Range ---------------------------- */ + +#define USB_CFG_HAVE_INTRIN_ENDPOINT 0 +/* Define this to 1 if you want to compile a version with two endpoints: The + * default control endpoint 0 and an interrupt-in endpoint (any other endpoint + * number). + */ +#define USB_CFG_HAVE_INTRIN_ENDPOINT3 0 +/* Define this to 1 if you want to compile a version with three endpoints: The + * default control endpoint 0, an interrupt-in endpoint 3 (or the number + * configured below) and a catch-all default interrupt-in endpoint as above. + * You must also define USB_CFG_HAVE_INTRIN_ENDPOINT to 1 for this feature. + */ +#define USB_CFG_EP3_NUMBER 3 +/* If the so-called endpoint 3 is used, it can now be configured to any other + * endpoint number (except 0) with this macro. Default if undefined is 3. + */ +/* #define USB_INITIAL_DATATOKEN USBPID_DATA1 */ +/* The above macro defines the startup condition for data toggling on the + * interrupt/bulk endpoints 1 and 3. Defaults to USBPID_DATA1. + * Since the token is toggled BEFORE sending any data, the first packet is + * sent with the oposite value of this configuration! + */ +#define USB_CFG_IMPLEMENT_HALT 0 +/* Define this to 1 if you also want to implement the ENDPOINT_HALT feature + * for endpoint 1 (interrupt endpoint). Although you may not need this feature, + * it is required by the standard. We have made it a config option because it + * bloats the code considerably. + */ +#define USB_CFG_SUPPRESS_INTR_CODE 0 +/* Define this to 1 if you want to declare interrupt-in endpoints, but don't + * want to send any data over them. If this macro is defined to 1, functions + * usbSetInterrupt() and usbSetInterrupt3() are omitted. This is useful if + * you need the interrupt-in endpoints in order to comply to an interface + * (e.g. HID), but never want to send any data. This option saves a couple + * of bytes in flash memory and the transmit buffers in RAM. + */ +#define USB_CFG_INTR_POLL_INTERVAL 10 +/* If you compile a version with endpoint 1 (interrupt-in), this is the poll + * interval. The value is in milliseconds and must not be less than 10 ms for + * low speed devices. + */ +#ifndef USB_CFG_IS_SELF_POWERED // allow bootloaderconfig.h to override +#define USB_CFG_IS_SELF_POWERED 0 +#endif +/* Define this to 1 if the device has its own power supply. Set it to 0 if the + * device is powered from the USB bus. + */ +#ifndef USB_CFG_MAX_BUS_POWER // allow bootloaderconfig.h to override +#define USB_CFG_MAX_BUS_POWER 100 +#endif +/* Set this variable to the maximum USB bus power consumption of your device. + * The value is in milliamperes. [It will be divided by two since USB + * communicates power requirements in units of 2 mA.] + */ +#define USB_CFG_IMPLEMENT_FN_WRITE 0 +/* Set this to 1 if you want usbFunctionWrite() to be called for control-out + * transfers. Set it to 0 if you don't need it and want to save a couple of + * bytes. + */ +#define USB_CFG_IMPLEMENT_FN_READ 0 +/* Set this to 1 if you need to send control replies which are generated + * "on the fly" when usbFunctionRead() is called. If you only want to send + * data from a static buffer, set it to 0 and return the data from + * usbFunctionSetup(). This saves a couple of bytes. + */ +#define USB_CFG_IMPLEMENT_FN_WRITEOUT 0 +/* Define this to 1 if you want to use interrupt-out (or bulk out) endpoints. + * You must implement the function usbFunctionWriteOut() which receives all + * interrupt/bulk data sent to any endpoint other than 0. The endpoint number + * can be found in 'usbRxToken'. + */ +#define USB_CFG_HAVE_FLOWCONTROL 0 +/* Define this to 1 if you want flowcontrol over USB data. See the definition + * of the macros usbDisableAllRequests() and usbEnableAllRequests() in + * usbdrv.h. + */ +#define USB_CFG_DRIVER_FLASH_PAGE 0 +/* If the device has more than 64 kBytes of flash, define this to the 64 k page + * where the driver's constants (descriptors) are located. Or in other words: + * Define this to 1 for boot loaders on the ATMega128. + */ +#define USB_CFG_LONG_TRANSFERS 0 +/* Define this to 1 if you want to send/receive blocks of more than 254 bytes + * in a single control-in or control-out transfer. Note that the capability + * for long transfers increases the driver size. + */ +/* #define USB_RX_USER_HOOK(data, len) if(usbRxToken == (uchar)USBPID_SETUP) blinkLED(); */ + +// Check CRC of all received data +/* +#define USB_RX_USER_HOOK( data, len ) { \ +if ( usbCrc16( data, len + 2 ) != 0x4FFE )\ +return;\ +} +*/ +/* This macro is a hook if you want to do unconventional things. If it is + * defined, it's inserted at the beginning of received message processing. + * If you eat the received message and don't want default processing to + * proceed, do a return after doing your things. One possible application + * (besides debugging) is to flash a status LED on each packet. + */ +/* #define USB_RESET_HOOK(resetStarts) if(!resetStarts){hadUsbReset();} */ +/* This macro is a hook if you need to know when an USB RESET occurs. It has + * one parameter which distinguishes between the start of RESET state and its + * end. + */ +/* #define USB_SET_ADDRESS_HOOK() hadAddressAssigned(); */ +/* This macro (if defined) is executed when a USB SET_ADDRESS request was + * received. + */ +#define USB_COUNT_SOF 0 +/* define this macro to 1 if you need the global variable "usbSofCount" which + * counts SOF packets. This feature requires that the hardware interrupt is + * connected to D- instead of D+. + */ +/* #ifdef __ASSEMBLER__ + * macro myAssemblerMacro + * in YL, TCNT0 + * sts timer0Snapshot, YL + * endm + * #endif + * #define USB_SOF_HOOK myAssemblerMacro + * This macro (if defined) is executed in the assembler module when a + * Start Of Frame condition is detected. It is recommended to define it to + * the name of an assembler macro which is defined here as well so that more + * than one assembler instruction can be used. The macro may use the register + * YL and modify SREG. If it lasts longer than a couple of cycles, USB messages + * immediately after an SOF pulse may be lost and must be retried by the host. + * What can you do with this hook? Since the SOF signal occurs exactly every + * 1 ms (unless the host is in sleep mode), you can use it to tune OSCCAL in + * designs running on the internal RC oscillator. + * Please note that Start Of Frame detection works only if D- is wired to the + * interrupt, not D+. THIS IS DIFFERENT THAN MOST EXAMPLES! + */ +#define USB_CFG_CHECK_DATA_TOGGLING 0 +/* define this macro to 1 if you want to filter out duplicate data packets + * sent by the host. Duplicates occur only as a consequence of communication + * errors, when the host does not receive an ACK. Please note that you need to + * implement the filtering yourself in usbFunctionWriteOut() and + * usbFunctionWrite(). Use the global usbCurrentDataToken and a static variable + * for each control- and out-endpoint to check for duplicate packets. + */ + + +#ifndef __ASSEMBLER__ + void calibrateOscillatorASM(void); +/* + #if AUTO_EXIT_NO_USB_MS>0 + extern uint16_union_t idlePolls; + #define USB_RESET_HOOK(resetStarts) if(!resetStarts){ idlePolls.b[1]=0; calibrateOscillatorASM();} + #else + #define USB_RESET_HOOK(resetStarts) if(!resetStarts){ calibrateOscillatorASM();} + #endif +*/ + #define USB_CFG_HAVE_MEASURE_FRAME_LENGTH 0 +#endif + + +/* define this macro to 1 if you want the function usbMeasureFrameLength() + * compiled in. This function can be used to calibrate the AVR's RC oscillator. + */ + + +#if USB_CFG_CLOCK_KHZ<16000 + #define USB_USE_FAST_CRC 1 +#else + #define USB_USE_FAST_CRC 0 +#endif + +/* If the CPU clock is below 16Mhz you have to use the faster CRC routines. + * otherwise time outs may occur on USB3.0 ports. This adds 20 bytes. + */ + +/* The assembler module has two implementations for the CRC algorithm. One is + * faster, the other is smaller. This CRC routine is only used for transmitted + * messages where timing is not critical. The faster routine needs 31 cycles + * per byte while the smaller one needs 61 to 69 cycles. The faster routine + * may be worth the 32 bytes bigger code size if you transmit lots of data and + * run the AVR close to its limit. + */ + +/* -------------------------- Device Description --------------------------- */ + +#define USB_CFG_VENDOR_ID 0x4F, 0x1B /* = 0x1B4F VID for SparkFun */ +#define USB_CFG_DEVICE_ID 0x14, 0x00 /* = 0x0014 PID for Roshamglo */ +/* SparkFun VID and PID for ATtiny84a Roshamglo project*/ + +//#define USB_CFG_VENDOR_ID 0xD0, 0x16 /* = 0x16d0 */ +/* USB vendor ID for the device, low byte first. If you have registered your + * own Vendor ID, define it here. Otherwise you may use one of obdev's free + * shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules! + */ +//#define USB_CFG_DEVICE_ID 0x53, 0x07 /* = 0x0753 = Digistump */ +/* This is the ID of the product, low byte first. It is interpreted in the + * scope of the vendor ID. If you have registered your own VID with usb.org + * or if you have licensed a PID from somebody else, define it here. Otherwise + * you may use one of obdev's free shared VID/PID pairs. See the file + * USB-IDs-for-free.txt for details! + */ +#define USB_CFG_DEVICE_VERSION MICRONUCLEUS_VERSION_MINOR, MICRONUCLEUS_VERSION_MAJOR +/* Version number of the device: Minor number first, then major number. + */ + // electric arrow - not compliant with obdev's rules but we'll have our own vid-pid soon +//#define USB_CFG_VENDOR_NAME 0x2301 +//#define USB_CFG_VENDOR_NAME_LEN 1 +//#define USB_CFG_VENDOR_NAME 'd','i','g','i','s','t','u','m','p','.','c','o','m' +//#define USB_CFG_VENDOR_NAME_LEN 13 +/* These two values define the vendor name returned by the USB device. The name + * must be given as a list of characters under single quotes. The characters + * are interpreted as Unicode (UTF-16) entities. + * If you don't want a vendor name string, undefine these macros. + * ALWAYS define a vendor name containing your Internet domain name if you use + * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for + * details. + */ +//#define USB_CFG_DEVICE_NAME 0x00B5,'B' +//#define USB_CFG_DEVICE_NAME_LEN 2 +/* Same as above for the device name. If you don't want a device name, undefine + * the macros. See the file USB-IDs-for-free.txt before you assign a name if + * you use a shared VID/PID. + */ +/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */ +/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */ +/* Same as above for the serial number. If you don't want a serial number, + * undefine the macros. + * It may be useful to provide the serial number through other means than at + * compile time. See the section about descriptor properties below for how + * to fine tune control over USB descriptors such as the string descriptor + * for the serial number. + */ +#define USB_CFG_DEVICE_CLASS 0xff /* set to 0 if deferred to interface */ +#define USB_CFG_DEVICE_SUBCLASS 0 +//#define USB_CFG_DEVICE_CLASS 0xFE /* application specific */ +//#define USB_CFG_DEVICE_SUBCLASS 0x01 /* device firmware upgrade */ +/* See USB specification if you want to conform to an existing device class. + * Class 0xff is "vendor specific". + */ +#define USB_CFG_INTERFACE_CLASS 0 /* define class here if not at device level */ +#define USB_CFG_INTERFACE_SUBCLASS 0 +#define USB_CFG_INTERFACE_PROTOCOL 0 +/* See USB specification if you want to conform to an existing device class or + * protocol. The following classes must be set at interface level: + * HID class is 3, no subclass and protocol required (but may be useful!) + * CDC class is 2, use subclass 2 and protocol 1 for ACM + */ +/* #define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 42 */ +/* Define this to the length of the HID report descriptor, if you implement + * an HID device. Otherwise don't define it or define it to 0. + * If you use this define, you must add a PROGMEM character array named + * "usbHidReportDescriptor" to your code which contains the report descriptor. + * Don't forget to keep the array and this define in sync! + */ + +#define USB_PUBLIC static +/* Use the define above if you #include usbdrv.c instead of linking against it. + * This technique saves a couple of bytes in flash memory. + */ + +/* ------------------- Fine Control over USB Descriptors ------------------- */ +/* If you don't want to use the driver's default USB descriptors, you can + * provide our own. These can be provided as (1) fixed length static data in + * flash memory, (2) fixed length static data in RAM or (3) dynamically at + * runtime in the function usbFunctionDescriptor(). See usbdrv.h for more + * information about this function. + * Descriptor handling is configured through the descriptor's properties. If + * no properties are defined or if they are 0, the default descriptor is used. + * Possible properties are: + * + USB_PROP_IS_DYNAMIC: The data for the descriptor should be fetched + * at runtime via usbFunctionDescriptor(). If the usbMsgPtr mechanism is + * used, the data is in FLASH by default. Add property USB_PROP_IS_RAM if + * you want RAM pointers. + * + USB_PROP_IS_RAM: The data returned by usbFunctionDescriptor() or found + * in static memory is in RAM, not in flash memory. + * + USB_PROP_LENGTH(len): If the data is in static memory (RAM or flash), + * the driver must know the descriptor's length. The descriptor itself is + * found at the address of a well known identifier (see below). + * List of static descriptor names (must be declared PROGMEM if in flash): + * char usbDescriptorDevice[]; + * char usbDescriptorConfiguration[]; + * char usbDescriptorHidReport[]; + * char usbDescriptorString0[]; + * int usbDescriptorStringVendor[]; + * int usbDescriptorStringDevice[]; + * int usbDescriptorStringSerialNumber[]; + * Other descriptors can't be provided statically, they must be provided + * dynamically at runtime. + * + * Descriptor properties are or-ed or added together, e.g.: + * #define USB_CFG_DESCR_PROPS_DEVICE (USB_PROP_IS_RAM | USB_PROP_LENGTH(18)) + * + * The following descriptors are defined: + * USB_CFG_DESCR_PROPS_DEVICE + * USB_CFG_DESCR_PROPS_CONFIGURATION + * USB_CFG_DESCR_PROPS_STRINGS + * USB_CFG_DESCR_PROPS_STRING_0 + * USB_CFG_DESCR_PROPS_STRING_VENDOR + * USB_CFG_DESCR_PROPS_STRING_PRODUCT + * USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER + * USB_CFG_DESCR_PROPS_HID + * USB_CFG_DESCR_PROPS_HID_REPORT + * USB_CFG_DESCR_PROPS_UNKNOWN (for all descriptors not handled by the driver) + * + * Note about string descriptors: String descriptors are not just strings, they + * are Unicode strings prefixed with a 2 byte header. Example: + * int serialNumberDescriptor[] = { + * USB_STRING_DESCRIPTOR_HEADER(6), + * 'S', 'e', 'r', 'i', 'a', 'l' + * }; + */ + +#define USB_CFG_DESCR_PROPS_DEVICE 0 +#define USB_CFG_DESCR_PROPS_CONFIGURATION 0 +#define USB_CFG_DESCR_PROPS_STRINGS 0 +#define USB_CFG_DESCR_PROPS_STRING_0 0 +#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0 +#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0 +#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0 +#define USB_CFG_DESCR_PROPS_HID 0 +#define USB_CFG_DESCR_PROPS_HID_REPORT 0 +#define USB_CFG_DESCR_PROPS_UNKNOWN 0 + +#endif /* __usbconfig_h_included__ */ diff --git a/sparkfun/tiny/bootloaders/attiny/usbdrv/Changelog.txt b/sparkfun/tiny/bootloaders/attiny/usbdrv/Changelog.txt new file mode 100644 index 00000000..79b52155 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/usbdrv/Changelog.txt @@ -0,0 +1,329 @@ +This file documents changes in the firmware-only USB driver for atmel's AVR +microcontrollers. New entries are always appended to the end of the file. +Scroll down to the bottom to see the most recent changes. + +2005-04-01: + - Implemented endpoint 1 as interrupt-in endpoint. + - Moved all configuration options to usbconfig.h which is not part of the + driver. + - Changed interface for usbVendorSetup(). + - Fixed compatibility with ATMega8 device. + - Various minor optimizations. + +2005-04-11: + - Changed interface to application: Use usbFunctionSetup(), usbFunctionRead() + and usbFunctionWrite() now. Added configuration options to choose which + of these functions to compile in. + - Assembler module delivers receive data non-inverted now. + - Made register and bit names compatible with more AVR devices. + +2005-05-03: + - Allow address of usbRxBuf on any memory page as long as the buffer does + not cross 256 byte page boundaries. + - Better device compatibility: works with Mega88 now. + - Code optimization in debugging module. + - Documentation updates. + +2006-01-02: + - Added (free) default Vendor- and Product-IDs bought from voti.nl. + - Added USBID-License.txt file which defines the rules for using the free + shared VID/PID pair. + - Added Readme.txt to the usbdrv directory which clarifies administrative + issues. + +2006-01-25: + - Added "configured state" to become more standards compliant. + - Added "HALT" state for interrupt endpoint. + - Driver passes the "USB Command Verifier" test from usb.org now. + - Made "serial number" a configuration option. + - Minor optimizations, we now recommend compiler option "-Os" for best + results. + - Added a version number to usbdrv.h + +2006-02-03: + - New configuration variable USB_BUFFER_SECTION for the memory section where + the USB rx buffer will go. This defaults to ".bss" if not defined. Since + this buffer MUST NOT cross 256 byte pages (not even touch a page at the + end), the user may want to pass a linker option similar to + "-Wl,--section-start=.mybuffer=0x800060". + - Provide structure for usbRequest_t. + - New defines for USB constants. + - Prepared for HID implementations. + - Increased data size limit for interrupt transfers to 8 bytes. + - New macro usbInterruptIsReady() to query interrupt buffer state. + +2006-02-18: + - Ensure that the data token which is sent as an ack to an OUT transfer is + always zero sized. This fixes a bug where the host reports an error after + sending an out transfer to the device, although all data arrived at the + device. + - Updated docs in usbdrv.h to reflect changed API in usbFunctionWrite(). + +* Release 2006-02-20 + + - Give a compiler warning when compiling with debugging turned on. + - Added Oleg Semyonov's changes for IAR-cc compatibility. + - Added new (optional) functions usbDeviceConnect() and usbDeviceDisconnect() + (also thanks to Oleg!). + - Rearranged tests in usbPoll() to save a couple of instructions in the most + likely case that no actions are pending. + - We need a delay between the SET ADDRESS request until the new address + becomes active. This delay was handled in usbPoll() until now. Since the + spec says that the delay must not exceed 2ms, previous versions required + aggressive polling during the enumeration phase. We have now moved the + handling of the delay into the interrupt routine. + - We must not reply with NAK to a SETUP transaction. We can only achieve this + by making sure that the rx buffer is empty when SETUP tokens are expected. + We therefore don't pass zero sized data packets from the status phase of + a transfer to usbPoll(). This change MAY cause troubles if you rely on + receiving a less than 8 bytes long packet in usbFunctionWrite() to + identify the end of a transfer. usbFunctionWrite() will NEVER be called + with a zero length. + +* Release 2006-03-14 + + - Improved IAR C support: tiny memory model, more devices + - Added template usbconfig.h file under the name usbconfig-prototype.h + +* Release 2006-03-26 + + - Added provision for one more interrupt-in endpoint (endpoint 3). + - Added provision for one interrupt-out endpoint (endpoint 1). + - Added flowcontrol macros for USB. + - Added provision for custom configuration descriptor. + - Allow ANY two port bits for D+ and D-. + - Merged (optional) receive endpoint number into global usbRxToken variable. + - Use USB_CFG_IOPORTNAME instead of USB_CFG_IOPORT. We now construct the + variable name from the single port letter instead of computing the address + of related ports from the output-port address. + +* Release 2006-06-26 + + - Updated documentation in usbdrv.h and usbconfig-prototype.h to reflect the + new features. + - Removed "#warning" directives because IAR does not understand them. Use + unused static variables instead to generate a warning. + - Do not include when compiling with IAR. + - Introduced USB_CFG_DESCR_PROPS_* in usbconfig.h to configure how each + USB descriptor should be handled. It is now possible to provide descriptor + data in Flash, RAM or dynamically at runtime. + - STALL is now a status in usbTxLen* instead of a message. We can now conform + to the spec and leave the stall status pending until it is cleared. + - Made usbTxPacketCnt1 and usbTxPacketCnt3 public. This allows the + application code to reset data toggling on interrupt pipes. + +* Release 2006-07-18 + + - Added an #if !defined __ASSEMBLER__ to the warning in usbdrv.h. This fixes + an assembler error. + - usbDeviceDisconnect() takes pull-up resistor to high impedance now. + +* Release 2007-02-01 + + - Merged in some code size improvements from usbtiny (thanks to Dick + Streefland for these optimizations!) + - Special alignment requirement for usbRxBuf not required any more. Thanks + again to Dick Streefland for this hint! + - Reverted to "#warning" instead of unused static variables -- new versions + of IAR CC should handle this directive. + - Changed Open Source license to GNU GPL v2 in order to make linking against + other free libraries easier. We no longer require publication of the + circuit diagrams, but we STRONGLY encourage it. If you improve the driver + itself, PLEASE grant us a royalty free license to your changes for our + commercial license. + +* Release 2007-03-29 + + - New configuration option "USB_PUBLIC" in usbconfig.h. + - Set USB version number to 1.10 instead of 1.01. + - Code used USB_CFG_DESCR_PROPS_STRING_DEVICE and + USB_CFG_DESCR_PROPS_STRING_PRODUCT inconsistently. Changed all occurrences + to USB_CFG_DESCR_PROPS_STRING_PRODUCT. + - New assembler module for 16.5 MHz RC oscillator clock with PLL in receiver + code. + - New assembler module for 16 MHz crystal. + - usbdrvasm.S contains common code only, clock-specific parts have been moved + to usbdrvasm12.S, usbdrvasm16.S and usbdrvasm165.S respectively. + +* Release 2007-06-25 + + - 16 MHz module: Do SE0 check in stuffed bits as well. + +* Release 2007-07-07 + + - Define hi8(x) for IAR compiler to limit result to 8 bits. This is necessary + for negative values. + - Added 15 MHz module contributed by V. Bosch. + - Interrupt vector name can now be configured. This is useful if somebody + wants to use a different hardware interrupt than INT0. + +* Release 2007-08-07 + + - Moved handleIn3 routine in usbdrvasm16.S so that relative jump range is + not exceeded. + - More config options: USB_RX_USER_HOOK(), USB_INITIAL_DATATOKEN, + USB_COUNT_SOF + - USB_INTR_PENDING can now be a memory address, not just I/O + +* Release 2007-09-19 + + - Split out common parts of assembler modules into separate include file + - Made endpoint numbers configurable so that given interface definitions + can be matched. See USB_CFG_EP3_NUMBER in usbconfig-prototype.h. + - Store endpoint number for interrupt/bulk-out so that usbFunctionWriteOut() + can handle any number of endpoints. + - Define usbDeviceConnect() and usbDeviceDisconnect() even if no + USB_CFG_PULLUP_IOPORTNAME is defined. Directly set D+ and D- to 0 in this + case. + +* Release 2007-12-01 + + - Optimize usbDeviceConnect() and usbDeviceDisconnect() for less code size + when USB_CFG_PULLUP_IOPORTNAME is not defined. + +* Release 2007-12-13 + + - Renamed all include-only assembler modules from *.S to *.inc so that + people don't add them to their project sources. + - Distribute leap bits in tx loop more evenly for 16 MHz module. + - Use "macro" and "endm" instead of ".macro" and ".endm" for IAR + - Avoid compiler warnings for constant expr range by casting some values in + USB descriptors. + +* Release 2008-01-21 + + - Fixed bug in 15 and 16 MHz module where the new address set with + SET_ADDRESS was already accepted at the next NAK or ACK we send, not at + the next data packet we send. This caused problems when the host polled + too fast. Thanks to Alexander Neumann for his help and patience debugging + this issue! + +* Release 2008-02-05 + + - Fixed bug in 16.5 MHz module where a register was used in the interrupt + handler before it was pushed. This bug was introduced with version + 2007-09-19 when common parts were moved to a separate file. + - Optimized CRC routine (thanks to Reimar Doeffinger). + +* Release 2008-02-16 + + - Removed outdated IAR compatibility stuff (code sections). + - Added hook macros for USB_RESET_HOOK() and USB_SET_ADDRESS_HOOK(). + - Added optional routine usbMeasureFrameLength() for calibration of the + internal RC oscillator. + +* Release 2008-02-28 + + - USB_INITIAL_DATATOKEN defaults to USBPID_DATA1 now, which means that we + start with sending USBPID_DATA0. + - Changed defaults in usbconfig-prototype.h + - Added free USB VID/PID pair for MIDI class devices + - Restructured AVR-USB as separate package, not part of PowerSwitch any more. + +* Release 2008-04-18 + + - Restructured usbdrv.c so that it is easier to read and understand. + - Better code optimization with gcc 4. + - If a second interrupt in endpoint is enabled, also add it to config + descriptor. + - Added config option for long transfers (above 254 bytes), see + USB_CFG_LONG_TRANSFERS in usbconfig.h. + - Added 20 MHz module contributed by Jeroen Benschop. + +* Release 2008-05-13 + + - Fixed bug in libs-host/hiddata.c function usbhidGetReport(): length + was not incremented, pointer to length was incremented instead. + - Added code to command line tool(s) which claims an interface. This code + is disabled by default, but may be necessary on newer Linux kernels. + - Added usbconfig.h option "USB_CFG_CHECK_DATA_TOGGLING". + - New header "usbportability.h" prepares ports to other development + environments. + - Long transfers (above 254 bytes) did not work when usbFunctionRead() was + used to supply the data. Fixed this bug. [Thanks to Alexander Neumann!] + - In hiddata.c (example code for sending/receiving data over HID), use + USB_RECIP_DEVICE instead of USB_RECIP_INTERFACE for control transfers so + that we need not claim the interface. + - in usbPoll() loop 20 times polling for RESET state instead of 10 times. + This accounts for the higher clock rates we now support. + - Added a module for 12.8 MHz RC oscillator with PLL in receiver loop. + - Added hook to SOF code so that oscillator can be tuned to USB frame clock. + - Added timeout to waitForJ loop. Helps preventing unexpected hangs. + - Added example code for oscillator tuning to libs-device (thanks to + Henrik Haftmann for the idea to this routine). + - Implemented option USB_CFG_SUPPRESS_INTR_CODE. + +* Release 2008-10-22 + + - Fixed libs-device/osctune.h: OSCCAL is memory address on ATMega88 and + similar, not offset of 0x20 needs to be added. + - Allow distribution under GPLv3 for those who have to link against other + code distributed under GPLv3. + +* Release 2008-11-26 + + - Removed libusb-win32 dependency for hid-data example in Makefile.windows. + It was never required and confused many people. + - Added extern uchar usbRxToken to usbdrv.h. + - Integrated a module with CRC checks at 18 MHz by Lukas Schrittwieser. + +* Release 2009-03-23 + + - Hid-mouse example used settings from hid-data example, fixed that. + - Renamed project to V-USB due to a trademark issue with Atmel(r). + - Changed CommercialLicense.txt and USBID-License.txt to make the + background of USB ID registration clearer. + +* Release 2009-04-15 + + - Changed CommercialLicense.txt to reflect the new range of PIDs from + Jason Kotzin. + - Removed USBID-License.txt in favor of USB-IDs-for-free.txt and + USB-ID-FAQ.txt + - Fixed a bug in the 12.8 MHz module: End Of Packet decection was made in + the center between bit 0 and 1 of each byte. This is where the data lines + are expected to change and the sampled data may therefore be nonsense. + We therefore check EOP ONLY if bits 0 AND 1 have both been read as 0 on D-. + - Fixed a bitstuffing problem in the 16 MHz module: If bit 6 was stuffed, + the unstuffing code in the receiver routine was 1 cycle too long. If + multiple bytes had the unstuffing in bit 6, the error summed up until the + receiver was out of sync. + - Included option for faster CRC routine. + Thanks to Slawomir Fras (BoskiDialer) for this code! + - Updated bits in Configuration Descriptor's bmAttributes according to + USB 1.1 (in particular bit 7, it is a must-be-set bit now). + +* Release 2009-08-22 + + - Moved first DBG1() after odDebugInit() in all examples. + - Use vector INT0_vect instead of SIG_INTERRUPT0 if defined. This makes + V-USB compatible with the new "p" suffix devices (e.g. ATMega328p). + - USB_CFG_CLOCK_KHZ setting is now required in usbconfig.h (no default any + more). + - New option USB_CFG_DRIVER_FLASH_PAGE allows boot loaders on devices with + more than 64 kB flash. + - Built-in configuration descriptor allows custom definition for second + endpoint now. + +* Release 2010-07-15 + + - Fixed bug in usbDriverSetup() which prevented descriptor sizes above 255 + bytes. + - Avoid a compiler warning for unused parameter in usbHandleResetHook() when + compiler option -Wextra is enabled. + - Fixed wrong hex value for some IDs in USB-IDs-for-free.txt. + - Keep a define for USBATTR_BUSPOWER, although the flag does not exist + in USB 1.1 any more. Set it to 0. This is for backward compatibility. + +* Release 2012-01-09 + + - Define a separate (defined) type for usbMsgPtr so that projects using a + tiny memory model can define it to an 8 bit type in usbconfig.h. This + change also saves a couple of bytes when using a scalar 16 bit type. + - Inserted "const" keyword for all PROGMEM declarations because new GCC + requires it. + - Fixed problem with dependence of usbportability.h on usbconfig.h. This + problem occurred with IAR CC only. + - Prepared repository for github.com. + +* Release 2012-12-06 \ No newline at end of file diff --git a/sparkfun/tiny/bootloaders/attiny/usbdrv/CommercialLicense.txt b/sparkfun/tiny/bootloaders/attiny/usbdrv/CommercialLicense.txt new file mode 100644 index 00000000..de1a2b09 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/usbdrv/CommercialLicense.txt @@ -0,0 +1,166 @@ +V-USB Driver Software License Agreement +Version 2012-07-09 + +THIS LICENSE AGREEMENT GRANTS YOU CERTAIN RIGHTS IN A SOFTWARE. YOU CAN +ENTER INTO THIS AGREEMENT AND ACQUIRE THE RIGHTS OUTLINED BELOW BY PAYING +THE AMOUNT ACCORDING TO SECTION 4 ("PAYMENT") TO OBJECTIVE DEVELOPMENT. + + +1 DEFINITIONS + +1.1 "OBJECTIVE DEVELOPMENT" shall mean OBJECTIVE DEVELOPMENT Software GmbH, +Grosse Schiffgasse 1A/7, 1020 Wien, AUSTRIA. + +1.2 "You" shall mean the Licensee. + +1.3 "V-USB" shall mean all files included in the package distributed under +the name "vusb" by OBJECTIVE DEVELOPMENT (http://www.obdev.at/vusb/) +unless otherwise noted. This includes the firmware-only USB device +implementation for Atmel AVR microcontrollers, some simple device examples +and host side software examples and libraries. + + +2 LICENSE GRANTS + +2.1 Source Code. OBJECTIVE DEVELOPMENT shall furnish you with the source +code of V-USB. + +2.2 Distribution and Use. OBJECTIVE DEVELOPMENT grants you the +non-exclusive right to use, copy and distribute V-USB with your hardware +product(s), restricted by the limitations in section 3 below. + +2.3 Modifications. OBJECTIVE DEVELOPMENT grants you the right to modify +the source code and your copy of V-USB according to your needs. + +2.4 USB IDs. OBJECTIVE DEVELOPMENT furnishes you with one or two USB +Product ID(s), sent to you in e-mail. These Product IDs are reserved +exclusively for you. OBJECTIVE DEVELOPMENT has obtained USB Product ID +ranges under the Vendor ID 5824 from Wouter van Ooijen (Van Ooijen +Technische Informatica, www.voti.nl) and under the Vendor ID 8352 from +Jason Kotzin (now flirc.tv, Inc.). Both owners of the Vendor IDs have +obtained these IDs from the USB Implementers Forum, Inc. (www.usb.org). +OBJECTIVE DEVELOPMENT disclaims all liability which might arise from the +assignment of USB IDs. + +2.5 USB Certification. Although not part of this agreement, we want to make +it clear that you cannot become USB certified when you use V-USB or a USB +Product ID assigned by OBJECTIVE DEVELOPMENT. AVR microcontrollers don't +meet the electrical specifications required by the USB specification and +the USB Implementers Forum certifies only members who bought a Vendor ID of +their own. + + +3 LICENSE RESTRICTIONS + +3.1 Number of Units. Only one of the following three definitions is +applicable. Which one is determined by the amount you pay to OBJECTIVE +DEVELOPMENT, see section 4 ("Payment") below. + +Hobby License: You may use V-USB according to section 2 above in no more +than 5 hardware units. These units must not be sold for profit. + +Entry Level License: You may use V-USB according to section 2 above in no +more than 150 hardware units. + +Professional License: You may use V-USB according to section 2 above in +any number of hardware units, except for large scale production ("unlimited +fair use"). Quantities below 10,000 units are not considered large scale +production. If your reach quantities which are obviously large scale +production, you must pay a license fee of 0.10 EUR per unit for all units +above 10,000. + +3.2 Rental. You may not rent, lease, or lend V-USB or otherwise encumber +any copy of V-USB, or any of the rights granted herein. + +3.3 Transfer. You may not transfer your rights under this Agreement to +another party without OBJECTIVE DEVELOPMENT's prior written consent. If +such consent is obtained, you may permanently transfer this License to +another party. The recipient of such transfer must agree to all terms and +conditions of this Agreement. + +3.4 Reservation of Rights. OBJECTIVE DEVELOPMENT retains all rights not +expressly granted. + +3.5 Non-Exclusive Rights. Your license rights under this Agreement are +non-exclusive. + +3.6 Third Party Rights. This Agreement cannot grant you rights controlled +by third parties. In particular, you are not allowed to use the USB logo or +other trademarks owned by the USB Implementers Forum, Inc. without their +consent. Since such consent depends on USB certification, it should be +noted that V-USB will not pass certification because it does not +implement checksum verification and the microcontroller ports do not meet +the electrical specifications. + + +4 PAYMENT + +The payment amount depends on the variation of this agreement (according to +section 3.1) into which you want to enter. Concrete prices are listed on +OBJECTIVE DEVELOPMENT's web site, usually at +http://www.obdev.at/vusb/license.html. You agree to pay the amount listed +there to OBJECTIVE DEVELOPMENT or OBJECTIVE DEVELOPMENT's payment processor +or reseller. + + +5 COPYRIGHT AND OWNERSHIP + +V-USB is protected by copyright laws and international copyright +treaties, as well as other intellectual property laws and treaties. V-USB +is licensed, not sold. + + +6 TERM AND TERMINATION + +6.1 Term. This Agreement shall continue indefinitely. However, OBJECTIVE +DEVELOPMENT may terminate this Agreement and revoke the granted license and +USB-IDs if you fail to comply with any of its terms and conditions. + +6.2 Survival of Terms. All provisions regarding secrecy, confidentiality +and limitation of liability shall survive termination of this agreement. + + +7 DISCLAIMER OF WARRANTY AND LIABILITY + +LIMITED WARRANTY. V-USB IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, OBJECTIVE +DEVELOPMENT AND ITS SUPPLIERS HEREBY DISCLAIM ALL WARRANTIES, EITHER +EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND +NON-INFRINGEMENT, WITH REGARD TO V-USB, AND THE PROVISION OF OR FAILURE +TO PROVIDE SUPPORT SERVICES. THIS LIMITED WARRANTY GIVES YOU SPECIFIC LEGAL +RIGHTS. YOU MAY HAVE OTHERS, WHICH VARY FROM STATE/JURISDICTION TO +STATE/JURISDICTION. + +LIMITATION OF LIABILITY. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, +IN NO EVENT SHALL OBJECTIVE DEVELOPMENT OR ITS SUPPLIERS BE LIABLE FOR ANY +SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER +(INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, +BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY +LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE V-USB OR THE +PROVISION OF OR FAILURE TO PROVIDE SUPPORT SERVICES, EVEN IF OBJECTIVE +DEVELOPMENT HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN ANY +CASE, OBJECTIVE DEVELOPMENT'S ENTIRE LIABILITY UNDER ANY PROVISION OF THIS +AGREEMENT SHALL BE LIMITED TO THE AMOUNT ACTUALLY PAID BY YOU FOR V-USB. + + +8 MISCELLANEOUS TERMS + +8.1 Marketing. OBJECTIVE DEVELOPMENT has the right to mention for marketing +purposes that you entered into this agreement. + +8.2 Entire Agreement. This document represents the entire agreement between +OBJECTIVE DEVELOPMENT and you. It may only be modified in writing signed by +an authorized representative of both, OBJECTIVE DEVELOPMENT and you. + +8.3 Severability. In case a provision of these terms and conditions should +be or become partly or entirely invalid, ineffective, or not executable, +the validity of all other provisions shall not be affected. + +8.4 Applicable Law. This agreement is governed by the laws of the Republic +of Austria. + +8.5 Responsible Courts. The responsible courts in Vienna/Austria will have +exclusive jurisdiction regarding all disputes in connection with this +agreement. + diff --git a/sparkfun/tiny/bootloaders/attiny/usbdrv/License.txt b/sparkfun/tiny/bootloaders/attiny/usbdrv/License.txt new file mode 100644 index 00000000..4460cfba --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/usbdrv/License.txt @@ -0,0 +1,361 @@ +OBJECTIVE DEVELOPMENT GmbH's V-USB driver software is distributed under the +terms and conditions of the GNU GPL version 2 or the GNU GPL version 3. It is +your choice whether you apply the terms of version 2 or version 3. The full +text of GPLv2 is included below. In addition to the requirements in the GPL, +we STRONGLY ENCOURAGE you to do the following: + +(1) Publish your entire project on a web site and drop us a note with the URL. +Use the form at http://www.obdev.at/vusb/feedback.html for your submission. + +(2) Adhere to minimum publication standards. Please include AT LEAST: + - a circuit diagram in PDF, PNG or GIF format + - full source code for the host software + - a Readme.txt file in ASCII format which describes the purpose of the + project and what can be found in which directories and which files + - a reference to http://www.obdev.at/vusb/ + +(3) If you improve the driver firmware itself, please give us a free license +to your modifications for our commercial license offerings. + + + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/sparkfun/tiny/bootloaders/attiny/usbdrv/Readme.txt b/sparkfun/tiny/bootloaders/attiny/usbdrv/Readme.txt new file mode 100644 index 00000000..970dc66b --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/usbdrv/Readme.txt @@ -0,0 +1,172 @@ +This is the Readme file to Objective Development's firmware-only USB driver +for Atmel AVR microcontrollers. For more information please visit +http://www.obdev.at/vusb/ + +This directory contains the USB firmware only. Copy it as-is to your own +project and add all .c and .S files to your project (these files are marked +with an asterisk in the list below). Then copy usbconfig-prototype.h as +usbconfig.h to your project and edit it according to your configuration. + + +TECHNICAL DOCUMENTATION +======================= +The technical documentation (API) for the firmware driver is contained in the +file "usbdrv.h". Please read all of it carefully! Configuration options are +documented in "usbconfig-prototype.h". + +The driver consists of the following files: + Readme.txt ............. The file you are currently reading. + Changelog.txt .......... Release notes for all versions of the driver. + usbdrv.h ............... Driver interface definitions and technical docs. +* usbdrv.c ............... High level language part of the driver. Link this + module to your code! +* usbdrvasm.S ............ Assembler part of the driver. This module is mostly + a stub and includes one of the usbdrvasm*.S files + depending on processor clock. Link this module to + your code! + usbdrvasm*.inc ......... Assembler routines for particular clock frequencies. + Included by usbdrvasm.S, don't link it directly! + asmcommon.inc .......... Common assembler routines. Included by + usbdrvasm*.inc, don't link it directly! + usbconfig-prototype.h .. Prototype for your own usbdrv.h file. +* oddebug.c .............. Debug functions. Only used when DEBUG_LEVEL is + defined to a value greater than 0. Link this module + to your code! + oddebug.h .............. Interface definitions of the debug module. + usbportability.h ....... Header with compiler-dependent stuff. + usbdrvasm.asm .......... Compatibility stub for IAR-C-compiler. Use this + module instead of usbdrvasm.S when you assembler + with IAR's tools. + License.txt ............ Open Source license for this driver. + CommercialLicense.txt .. Optional commercial license for this driver. + USB-ID-FAQ.txt ......... General infos about USB Product- and Vendor-IDs. + USB-IDs-for-free.txt ... List and terms of use for free shared PIDs. + +(*) ... These files should be linked to your project. + + +CPU CORE CLOCK FREQUENCY +======================== +We supply assembler modules for clock frequencies of 12 MHz, 12.8 MHz, 15 MHz, +16 MHz, 16.5 MHz 18 MHz and 20 MHz. Other clock rates are not supported. The +actual clock rate must be configured in usbconfig.h. + +12 MHz Clock +This is the traditional clock rate of V-USB because it's the lowest clock +rate where the timing constraints of the USB spec can be met. + +15 MHz Clock +Similar to 12 MHz, but some NOPs inserted. On the other hand, the higher clock +rate allows for some loops which make the resulting code size somewhat smaller +than the 12 MHz version. + +16 MHz Clock +This clock rate has been added for users of the Arduino board and other +ready-made boards which come with a fixed 16 MHz crystal. It's also an option +if you need the slightly higher clock rate for performance reasons. Since +16 MHz is not divisible by the USB low speed bit clock of 1.5 MHz, the code +is somewhat tricky and has to insert a leap cycle every third byte. + +12.8 MHz and 16.5 MHz Clock +The assembler modules for these clock rates differ from the other modules +because they have been built for an RC oscillator with only 1% precision. The +receiver code inserts leap cycles to compensate for clock deviations. 1% is +also the precision which can be achieved by calibrating the internal RC +oscillator of the AVR. Please note that only AVRs with internal 64 MHz PLL +oscillator can reach 16.5 MHz with the RC oscillator. This includes the very +popular ATTiny25, ATTiny45, ATTiny85 series as well as the ATTiny26. Almost +all AVRs can reach 12.8 MHz, although this is outside the specified range. + +See the EasyLogger example at http://www.obdev.at/vusb/easylogger.html for +code which calibrates the RC oscillator based on the USB frame clock. + +18 MHz Clock +This module is closer to the USB specification because it performs an on the +fly CRC check for incoming packets. Packets with invalid checksum are +discarded as required by the spec. If you also implement checks for data +PID toggling on application level (see option USB_CFG_CHECK_DATA_TOGGLING +in usbconfig.h for more info), this ensures data integrity. Due to the CRC +tables and alignment requirements, this code is bigger than modules for other +clock rates. To activate this module, you must define USB_CFG_CHECK_CRC to 1 +and USB_CFG_CLOCK_KHZ to 18000 in usbconfig.h. + +20 MHz Clock +This module is for people who won't do it with less than the maximum. Since +20 MHz is not divisible by the USB low speed bit clock of 1.5 MHz, the code +uses similar tricks as the 16 MHz module to insert leap cycles. + + +USB IDENTIFIERS +=============== +Every USB device needs a vendor- and a product-identifier (VID and PID). VIDs +are obtained from usb.org for a price of 1,500 USD. Once you have a VID, you +can assign PIDs at will. + +Since an entry level cost of 1,500 USD is too high for most small companies +and hobbyists, we provide some VID/PID pairs for free. See the file +USB-IDs-for-free.txt for details. + +Objective Development also has some license offerings which include product +IDs. See http://www.obdev.at/vusb/ for details. + + +DEVELOPMENT SYSTEM +================== +This driver has been developed and optimized for the GNU compiler version 3 +and 4. We recommend that you use the GNU compiler suite because it is freely +available. V-USB has also been ported to the IAR compiler and assembler. It +has been tested with IAR 4.10B/W32 and 4.12A/W32 on an ATmega8 with the +"small" and "tiny" memory model. Not every release is tested with IAR CC and +the driver may therefore fail to compile with IAR. Please note that gcc is +more efficient for usbdrv.c because this module has been deliberately +optimized for gcc. + +Gcc version 3 produces smaller code than version 4 due to new optimizing +capabilities which don't always improve things on 8 bit CPUs. The code size +generated by gcc 4 can be reduced with the compiler options +-fno-move-loop-invariants, -fno-tree-scev-cprop and +-fno-inline-small-functions in addition to -Os. On devices with more than +8k of flash memory, we also recommend the linker option --relax (written as +-Wl,--relax for gcc) to convert absolute calls into relative where possible. + +For more information about optimizing options see: + + http://www.tty1.net/blog/2008-04-29-avr-gcc-optimisations_en.html + +These optimizations are good for gcc 4.x. Version 3.x of gcc does not support +most of these options and produces good code anyway. + + +USING V-USB FOR FREE +==================== +The AVR firmware driver is published under the GNU General Public License +Version 2 (GPL2) and the GNU General Public License Version 3 (GPL3). It is +your choice whether you apply the terms of version 2 or version 3. + +If you decide for the free GPL2 or GPL3, we STRONGLY ENCOURAGE you to do the +following things IN ADDITION to the obligations from the GPL: + +(1) Publish your entire project on a web site and drop us a note with the URL. +Use the form at http://www.obdev.at/vusb/feedback.html for your submission. +If you don't have a web site, you can publish the project in obdev's +documentation wiki at +http://www.obdev.at/goto.php?t=vusb-wiki&p=hosted-projects. + +(2) Adhere to minimum publication standards. Please include AT LEAST: + - a circuit diagram in PDF, PNG or GIF format + - full source code for the host software + - a Readme.txt file in ASCII format which describes the purpose of the + project and what can be found in which directories and which files + - a reference to http://www.obdev.at/vusb/ + +(3) If you improve the driver firmware itself, please give us a free license +to your modifications for our commercial license offerings. + + +COMMERCIAL LICENSES FOR V-USB +============================= +If you don't want to publish your source code under the terms of the GPL, +you can simply pay money for V-USB. As an additional benefit you get +USB PIDs for free, reserved exclusively to you. See the file +"CommercialLicense.txt" for details. + diff --git a/sparkfun/tiny/bootloaders/attiny/usbdrv/USB-ID-FAQ.txt b/sparkfun/tiny/bootloaders/attiny/usbdrv/USB-ID-FAQ.txt new file mode 100644 index 00000000..a4a6bd6e --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/usbdrv/USB-ID-FAQ.txt @@ -0,0 +1,149 @@ +Version 2012-07-09 + +========================== +WHY DO WE NEED THESE IDs? +========================== + +USB is more than a low level protocol for data transport. It also defines a +common set of requests which must be understood by all devices. And as part +of these common requests, the specification defines data structures, the +USB Descriptors, which are used to describe the properties of the device. + +From the perspective of an operating system, it is therefore possible to find +out basic properties of a device (such as e.g. the manufacturer and the name +of the device) without a device-specific driver. This is essential because +the operating system can choose a driver to load based on this information +(Plug-And-Play). + +Among the most important properties in the Device Descriptor are the USB +Vendor- and Product-ID. Both are 16 bit integers. The most simple form of +driver matching is based on these IDs. The driver announces the Vendor- and +Product-IDs of the devices it can handle and the operating system loads the +appropriate driver when the device is connected. + +It is obvious that this technique only works if the pair Vendor- plus +Product-ID is unique: Only devices which require the same driver can have the +same pair of IDs. + + +===================================================== +HOW DOES THE USB STANDARD ENSURE THAT IDs ARE UNIQUE? +===================================================== + +Since it is so important that USB IDs are unique, the USB Implementers Forum, +Inc. (usb.org) needs a way to enforce this legally. It is not forbidden by +law to build a device and assign it any random numbers as IDs. Usb.org +therefore needs an agreement to regulate the use of USB IDs. The agreement +binds only parties who agreed to it, of course. Everybody else is free to use +any numbers for their IDs. + +So how can usb.org ensure that every manufacturer of USB devices enters into +an agreement with them? They do it via trademark licensing. Usb.org has +registered the trademark "USB", all associated logos and related terms. If +you want to put an USB logo on your product or claim that it is USB +compliant, you must license these trademarks from usb.org. And this is where +you enter into an agreement. See the "USB-IF Trademark License Agreement and +Usage Guidelines for the USB-IF Logo" at +http://www.usb.org/developers/logo_license/. + +Licensing the USB trademarks requires that you buy a USB Vendor-ID from +usb.org (one-time fee of ca. 2,000 USD), that you become a member of usb.org +(yearly fee of ca. 4,000 USD) and that you meet all the technical +specifications from the USB spec. + +This means that most hobbyists and small companies will never be able to +become USB compliant, just because membership is so expensive. And you can't +be compliant with a driver based on V-USB anyway, because the AVR's port pins +don't meet the electrical specifications for USB. So, in principle, all +hobbyists and small companies are free to choose any random numbers for their +IDs. They have nothing to lose... + +There is one exception worth noting, though: If you use a sub-component which +implements USB, the vendor of the sub-components may guarantee USB +compliance. This might apply to some or all of FTDI's solutions. + + +======================================================================= +WHY SHOULD YOU OBTAIN USB IDs EVEN IF YOU DON'T LICENSE USB TRADEMARKS? +======================================================================= + +You have learned in the previous section that you are free to choose any +numbers for your IDs anyway. So why not do exactly this? There is still the +technical issue. If you choose IDs which are already in use by somebody else, +operating systems will load the wrong drivers and your device won't work. +Even if you choose IDs which are not currently in use, they may be in use in +the next version of the operating system or even after an automatic update. + +So what you need is a pair of Vendor- and Product-IDs for which you have the +guarantee that no USB compliant product uses them. This implies that no +operating system will ever ship with drivers responsible for these IDs. + + +============================================== +HOW DOES OBJECTIVE DEVELOPMENT HANDLE USB IDs? +============================================== + +Objective Development gives away pairs of USB-IDs with their V-USB licenses. +In order to ensure that these IDs are unique, Objective Development has an +agreement with the company/person who has bought the USB Vendor-ID from +usb.org. This agreement ensures that a range of USB Product-IDs is reserved +for assignment by Objective Development and that the owner of the Vendor-ID +won't give it to anybody else. + +This means that you have to trust three parties to ensure uniqueness of +your IDs: + + - Objective Development, that they don't give the same PID to more than + one person. + - The owner of the Vendor-ID that they don't assign PIDs from the range + assigned to Objective Development to anybody else. + - Usb.org that they don't assign the same Vendor-ID a second time. + + +================================== +WHO IS THE OWNER OF THE VENDOR-ID? +================================== + +Objective Development has obtained ranges of USB Product-IDs under two +Vendor-IDs: Under Vendor-ID 5824 from Wouter van Ooijen (Van Ooijen +Technische Informatica, www.voti.nl) and under Vendor-ID 8352 from Jason +Kotzin (now flirc.tv, Inc.). Both VID owners have received their Vendor-ID +directly from usb.org. + + +========================================================================= +CAN I USE USB-IDs FROM OBJECTIVE DEVELOPMENT WITH OTHER DRIVERS/HARDWARE? +========================================================================= + +The short answer is: Yes. All you get is a guarantee that the IDs are never +assigned to anybody else. What more do you need? + + +============================ +WHAT ABOUT SHARED ID PAIRS? +============================ + +Objective Development has reserved some PID/VID pairs for shared use. You +have no guarantee of uniqueness for them, except that no USB compliant device +uses them. In order to avoid technical problems, we must ensure that all +devices with the same pair of IDs use the same driver on kernel level. For +details, see the file USB-IDs-for-free.txt. + + +====================================================== +I HAVE HEARD THAT SUB-LICENSING OF USB-IDs IS ILLEGAL? +====================================================== + +A 16 bit integer number cannot be protected by copyright laws. It is not +sufficiently complex. And since none of the parties involved entered into the +USB-IF Trademark License Agreement, we are not bound by this agreement. So +there is no reason why it should be illegal to sub-license USB-IDs. + + +============================================= +WHO IS LIABLE IF THERE ARE INCOMPATIBILITIES? +============================================= + +Objective Development disclaims all liabilities which might arise from the +assignment of IDs. If you guarantee product features to your customers +without proper disclaimer, YOU are liable for that. diff --git a/sparkfun/tiny/bootloaders/attiny/usbdrv/USB-IDs-for-free.txt b/sparkfun/tiny/bootloaders/attiny/usbdrv/USB-IDs-for-free.txt new file mode 100644 index 00000000..d46517d8 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/usbdrv/USB-IDs-for-free.txt @@ -0,0 +1,154 @@ +Version 2009-08-22 + +=========================== +FREE USB-IDs FOR SHARED USE +=========================== + +Objective Development has reserved a set of USB Product-IDs for use according +to the guidelines outlined below. For more information about the concept of +USB IDs please see the file USB-ID-FAQ.txt. Objective Development guarantees +that the IDs listed below are not used by any USB compliant devices. + + +==================== +MECHANISM OF SHARING +==================== + +From a technical point of view, two different devices can share the same USB +Vendor- and Product-ID if they require the same driver on operating system +level. We make use of this fact by assigning separate IDs for various device +classes. On application layer, devices must be distinguished by their textual +name or serial number. We offer separate sets of IDs for discrimination by +textual name and for serial number. + +Examples for shared use of USB IDs are included with V-USB in the "examples" +subdirectory. + + +====================================== +IDs FOR DISCRIMINATION BY TEXTUAL NAME +====================================== + +If you use one of the IDs listed below, your device and host-side software +must conform to these rules: + +(1) The USB device MUST provide a textual representation of the manufacturer +and product identification. The manufacturer identification MUST be available +at least in USB language 0x0409 (English/US). + +(2) The textual manufacturer identification MUST contain either an Internet +domain name (e.g. "mycompany.com") registered and owned by you, or an e-mail +address under your control (e.g. "myname@gmx.net"). You can embed the domain +name or e-mail address in any string you like, e.g. "Objective Development +http://www.obdev.at/vusb/". + +(3) You are responsible for retaining ownership of the domain or e-mail +address for as long as any of your products are in use. + +(4) You may choose any string for the textual product identification, as long +as this string is unique within the scope of your textual manufacturer +identification. + +(5) Application side device look-up MUST be based on the textual manufacturer +and product identification in addition to VID/PID matching. The driver +matching MUST be a comparison of the entire strings, NOT a sub-string match. + +(6) For devices which implement a particular USB device class (e.g. HID), the +operating system's default class driver MUST be used. If an operating system +driver for Vendor Class devices is needed, this driver must be libusb or +libusb-win32 (see http://libusb.org/ and +http://libusb-win32.sourceforge.net/). + +Table if IDs for discrimination by textual name: + +PID dec (hex) | VID dec (hex) | Description of use +==============+===============+============================================ +1500 (0x05dc) | 5824 (0x16c0) | For Vendor Class devices with libusb +--------------+---------------+-------------------------------------------- +1503 (0x05df) | 5824 (0x16c0) | For generic HID class devices (which are + | | NOT mice, keyboards or joysticks) +--------------+---------------+-------------------------------------------- +1505 (0x05e1) | 5824 (0x16c0) | For CDC-ACM class devices (modems) +--------------+---------------+-------------------------------------------- +1508 (0x05e4) | 5824 (0x16c0) | For MIDI class devices +--------------+---------------+-------------------------------------------- + +Note that Windows caches the textual product- and vendor-description for +mice, keyboards and joysticks. Name-bsed discrimination is therefore not +recommended for these device classes. + + +======================================= +IDs FOR DISCRIMINATION BY SERIAL NUMBER +======================================= + +If you use one of the IDs listed below, your device and host-side software +must conform to these rules: + +(1) The USB device MUST provide a textual representation of the serial +number, unless ONLY the operating system's default class driver is used. +The serial number string MUST be available at least in USB language 0x0409 +(English/US). + +(2) The serial number MUST start with either an Internet domain name (e.g. +"mycompany.com") registered and owned by you, or an e-mail address under your +control (e.g. "myname@gmx.net"), both terminated with a colon (":") character. +You MAY append any string you like for further discrimination of your devices. + +(3) You are responsible for retaining ownership of the domain or e-mail +address for as long as any of your products are in use. + +(5) Application side device look-up MUST be based on the serial number string +in addition to VID/PID matching. The matching must start at the first +character of the serial number string and include the colon character +terminating your domain or e-mail address. It MAY stop anywhere after that. + +(6) For devices which implement a particular USB device class (e.g. HID), the +operating system's default class driver MUST be used. If an operating system +driver for Vendor Class devices is needed, this driver must be libusb or +libusb-win32 (see http://libusb.org/ and +http://libusb-win32.sourceforge.net/). + +(7) If ONLY the operating system's default class driver is used, e.g. for +mice, keyboards, joysticks, CDC or MIDI devices and no discrimination by an +application is needed, the serial number may be omitted. + + +Table if IDs for discrimination by serial number string: + +PID dec (hex) | VID dec (hex) | Description of use +===============+===============+=========================================== +10200 (0x27d8) | 5824 (0x16c0) | For Vendor Class devices with libusb +---------------+---------------+------------------------------------------- +10201 (0x27d9) | 5824 (0x16c0) | For generic HID class devices (which are + | | NOT mice, keyboards or joysticks) +---------------+---------------+------------------------------------------- +10202 (0x27da) | 5824 (0x16c0) | For USB Mice +---------------+---------------+------------------------------------------- +10203 (0x27db) | 5824 (0x16c0) | For USB Keyboards +---------------+---------------+------------------------------------------- +10204 (0x27dc) | 5824 (0x16c0) | For USB Joysticks +---------------+---------------+------------------------------------------- +10205 (0x27dd) | 5824 (0x16c0) | For CDC-ACM class devices (modems) +---------------+---------------+------------------------------------------- +10206 (0x27de) | 5824 (0x16c0) | For MIDI class devices +---------------+---------------+------------------------------------------- + + +================= +ORIGIN OF USB-IDs +================= + +OBJECTIVE DEVELOPMENT Software GmbH has obtained all VID/PID pairs listed +here from Wouter van Ooijen (see www.voti.nl) for exclusive disposition. +Wouter van Ooijen has obtained the VID from the USB Implementers Forum, Inc. +(see www.usb.org). The VID is registered for the company name "Van Ooijen +Technische Informatica". + + +========== +DISCLAIMER +========== + +OBJECTIVE DEVELOPMENT Software GmbH disclaims all liability for any +problems which are caused by the shared use of these VID/PID pairs. diff --git a/sparkfun/tiny/bootloaders/attiny/usbdrv/asmcommon.inc b/sparkfun/tiny/bootloaders/attiny/usbdrv/asmcommon.inc new file mode 100644 index 00000000..5f269afc --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/usbdrv/asmcommon.inc @@ -0,0 +1,208 @@ +/* Name: asmcommon.inc + * Project: V-USB, virtual USB port for Atmel's(r) AVR(r) microcontrollers + * Author: Christian Starkjohann + * Creation Date: 2007-11-05 + * Tabsize: 4 + * Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH + * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) + * + * Modified to an interrupt-less driver for micronucleus V2. (c) 2014 T. Bo"scke + * + */ + +/* Do not link this file! Link usbdrvasm.S instead, which includes the + * appropriate implementation! + */ + +/* +General Description: +This file contains assembler code which is shared among the USB driver +implementations for different CPU cocks. Since the code must be inserted +in the middle of the module, it's split out into this file and #included. + +Jump destinations called from outside: + sofError: Called when no start sequence was found. + se0: Called when a package has been successfully received. + overflow: Called when receive buffer overflows. + doReturn: Called after sending data. + +Outside jump destinations used by this module: + waitForJ: Called to receive an already arriving packet. + sendAckAndReti: + sendNakAndReti: + sendCntAndReti: + usbSendAndReti: + +The following macros must be defined before this file is included: + .macro POP_STANDARD + .endm + .macro POP_RETI + .endm +*/ + +#define token x1 + +overflow: + ldi x2, 1< 0 + +#warning "Never compile production devices with debugging enabled" + +static void uartPutc(char c) +{ + while(!(ODDBG_USR & (1 << ODDBG_UDRE))); /* wait for data register empty */ + ODDBG_UDR = c; +} + +static uchar hexAscii(uchar h) +{ + h &= 0xf; + if(h >= 10) + h += 'a' - (uchar)10 - '0'; + h += '0'; + return h; +} + +static void printHex(uchar c) +{ + uartPutc(hexAscii(c >> 4)); + uartPutc(hexAscii(c)); +} + +void odDebug(uchar prefix, uchar *data, uchar len) +{ + printHex(prefix); + uartPutc(':'); + while(len--){ + uartPutc(' '); + printHex(*data++); + } + uartPutc('\r'); + uartPutc('\n'); +} + +#endif diff --git a/sparkfun/tiny/bootloaders/attiny/usbdrv/oddebug.c.lst b/sparkfun/tiny/bootloaders/attiny/usbdrv/oddebug.c.lst new file mode 100644 index 00000000..190f0713 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/usbdrv/oddebug.c.lst @@ -0,0 +1,237 @@ +GAS LISTING C:\Users\SHAWN~1.HYM\AppData\Local\Temp/cc2aJ1A4.s page 1 + + + 1 .file "oddebug.c" + 2 __SREG__ = 0x3f + 3 __SP_H__ = 0x3e + 4 __SP_L__ = 0x3d + 5 __CCP__ = 0x34 + 6 __tmp_reg__ = 0 + 7 __zero_reg__ = 1 + 8 .section .debug_abbrev,"",@progbits + 9 .Ldebug_abbrev0: + 10 .section .debug_info,"",@progbits + 11 .Ldebug_info0: + 12 .section .debug_line,"",@progbits + 13 .Ldebug_line0: + 14 .text + 15 .Ltext0: + 16 .Letext0: + 17 .section .debug_info + 18 0000 6000 0000 .long 0x60 + 19 0004 0200 .word 0x2 + 20 0006 0000 0000 .long .Ldebug_abbrev0 + 21 000a 04 .byte 0x4 + 22 000b 01 .uleb128 0x1 + 23 000c 0000 0000 .long .LASF7 + 24 0010 01 .byte 0x1 + 25 0011 0000 0000 .long .LASF8 + 26 0015 0000 0000 .long .LASF9 + 27 0019 0000 0000 .long .Ltext0 + 28 001d 0000 0000 .long .Letext0 + 29 0021 0000 0000 .long .Ldebug_line0 + 30 0025 02 .uleb128 0x2 + 31 0026 01 .byte 0x1 + 32 0027 06 .byte 0x6 + 33 0028 0000 0000 .long .LASF0 + 34 002c 02 .uleb128 0x2 + 35 002d 01 .byte 0x1 + 36 002e 08 .byte 0x8 + 37 002f 0000 0000 .long .LASF1 + 38 0033 03 .uleb128 0x3 + 39 0034 02 .byte 0x2 + 40 0035 05 .byte 0x5 + 41 0036 696E 7400 .string "int" + 42 003a 02 .uleb128 0x2 + 43 003b 02 .byte 0x2 + 44 003c 07 .byte 0x7 + 45 003d 0000 0000 .long .LASF2 + 46 0041 02 .uleb128 0x2 + 47 0042 04 .byte 0x4 + 48 0043 05 .byte 0x5 + 49 0044 0000 0000 .long .LASF3 + 50 0048 02 .uleb128 0x2 + 51 0049 04 .byte 0x4 + 52 004a 07 .byte 0x7 + 53 004b 0000 0000 .long .LASF4 + 54 004f 02 .uleb128 0x2 + 55 0050 08 .byte 0x8 + 56 0051 05 .byte 0x5 + 57 0052 0000 0000 .long .LASF5 + GAS LISTING C:\Users\SHAWN~1.HYM\AppData\Local\Temp/cc2aJ1A4.s page 2 + + + 58 0056 02 .uleb128 0x2 + 59 0057 08 .byte 0x8 + 60 0058 07 .byte 0x7 + 61 0059 0000 0000 .long .LASF6 + 62 005d 04 .uleb128 0x4 + 63 005e 01 .byte 0x1 + 64 005f 06 .byte 0x6 + 65 0060 04 .uleb128 0x4 + 66 0061 01 .byte 0x1 + 67 0062 08 .byte 0x8 + 68 0063 00 .byte 0x0 + 69 .section .debug_abbrev + 70 0000 01 .uleb128 0x1 + 71 0001 11 .uleb128 0x11 + 72 0002 01 .byte 0x1 + 73 0003 25 .uleb128 0x25 + 74 0004 0E .uleb128 0xe + 75 0005 13 .uleb128 0x13 + 76 0006 0B .uleb128 0xb + 77 0007 03 .uleb128 0x3 + 78 0008 0E .uleb128 0xe + 79 0009 1B .uleb128 0x1b + 80 000a 0E .uleb128 0xe + 81 000b 11 .uleb128 0x11 + 82 000c 01 .uleb128 0x1 + 83 000d 12 .uleb128 0x12 + 84 000e 01 .uleb128 0x1 + 85 000f 10 .uleb128 0x10 + 86 0010 06 .uleb128 0x6 + 87 0011 00 .byte 0x0 + 88 0012 00 .byte 0x0 + 89 0013 02 .uleb128 0x2 + 90 0014 24 .uleb128 0x24 + 91 0015 00 .byte 0x0 + 92 0016 0B .uleb128 0xb + 93 0017 0B .uleb128 0xb + 94 0018 3E .uleb128 0x3e + 95 0019 0B .uleb128 0xb + 96 001a 03 .uleb128 0x3 + 97 001b 0E .uleb128 0xe + 98 001c 00 .byte 0x0 + 99 001d 00 .byte 0x0 + 100 001e 03 .uleb128 0x3 + 101 001f 24 .uleb128 0x24 + 102 0020 00 .byte 0x0 + 103 0021 0B .uleb128 0xb + 104 0022 0B .uleb128 0xb + 105 0023 3E .uleb128 0x3e + 106 0024 0B .uleb128 0xb + 107 0025 03 .uleb128 0x3 + 108 0026 08 .uleb128 0x8 + 109 0027 00 .byte 0x0 + 110 0028 00 .byte 0x0 + 111 0029 04 .uleb128 0x4 + 112 002a 24 .uleb128 0x24 + 113 002b 00 .byte 0x0 + 114 002c 0B .uleb128 0xb + GAS LISTING C:\Users\SHAWN~1.HYM\AppData\Local\Temp/cc2aJ1A4.s page 3 + + + 115 002d 0B .uleb128 0xb + 116 002e 3E .uleb128 0x3e + 117 002f 0B .uleb128 0xb + 118 0030 00 .byte 0x0 + 119 0031 00 .byte 0x0 + 120 0032 00 .byte 0x0 + 121 .section .debug_line + 122 0000 2000 0000 .long .LELT0-.LSLT0 + 123 .LSLT0: + 124 0004 0200 .word 0x2 + 125 0006 1000 0000 .long .LELTP0-.LASLTP0 + 126 .LASLTP0: + 127 000a 01 .byte 0x1 + 128 000b 01 .byte 0x1 + 129 000c F6 .byte 0xf6 + 130 000d F5 .byte 0xf5 + 131 000e 0A .byte 0xa + 132 000f 00 .byte 0x0 + 133 0010 01 .byte 0x1 + 134 0011 01 .byte 0x1 + 135 0012 01 .byte 0x1 + 136 0013 01 .byte 0x1 + 137 0014 00 .byte 0x0 + 138 0015 00 .byte 0x0 + 139 0016 00 .byte 0x0 + 140 0017 01 .byte 0x1 + 141 0018 00 .byte 0x0 + 142 0019 00 .byte 0x0 + 143 .LELTP0: + 144 001a 00 .byte 0x0 + 145 001b 05 .uleb128 0x5 + 146 001c 02 .byte 0x2 + 147 001d 0000 0000 .long .Letext0 + 148 0021 00 .byte 0x0 + 149 0022 01 .uleb128 0x1 + 150 0023 01 .byte 0x1 + 151 .LELT0: + 152 0024 1600 0000 .section .debug_str,"MS",@progbits,1 + 152 0200 1000 + 152 0000 0101 + 152 FB0E 0A00 + 152 0101 0101 + 153 .LASF2: + 154 0000 756E 7369 .string "unsigned int" + 154 676E 6564 + 154 2069 6E74 + 154 00 + 155 .LASF4: + 156 000d 6C6F 6E67 .string "long unsigned int" + 156 2075 6E73 + 156 6967 6E65 + 156 6420 696E + 156 7400 + 157 .LASF8: + 158 001f 7573 6264 .string "usbdrv/oddebug.c" + 158 7276 2F6F + 158 6464 6562 + GAS LISTING C:\Users\SHAWN~1.HYM\AppData\Local\Temp/cc2aJ1A4.s page 4 + + + 158 7567 2E63 + 158 00 + 159 .LASF0: + 160 0030 7369 676E .string "signed char" + 160 6564 2063 + 160 6861 7200 + 161 .LASF9: + 162 003c 433A 5C55 .ascii "C:\\Users\\shawn.hymel\\" + 162 7365 7273 + 162 5C73 6861 + 162 776E 2E68 + 162 796D 656C + 163 0051 446F 6375 .string "Documents\\GitHub\\Arduino_Boards\\sparkfun\\tiny\\bootloaders\\attiny" + 163 6D65 6E74 + 163 735C 4769 + 163 7448 7562 + 163 5C41 7264 + 164 .LASF1: + 165 0092 756E 7369 .string "unsigned char" + 165 676E 6564 + 165 2063 6861 + 165 7200 + 166 .LASF3: + 167 00a0 6C6F 6E67 .string "long int" + 167 2069 6E74 + 167 00 + 168 .LASF6: + 169 00a9 6C6F 6E67 .string "long long unsigned int" + 169 206C 6F6E + 169 6720 756E + 169 7369 676E + 169 6564 2069 + 170 .LASF7: + 171 00c0 474E 5520 .string "GNU C 4.3.3" + 171 4320 342E + 171 332E 3300 + 172 .LASF5: + 173 00cc 6C6F 6E67 .string "long long int" + 173 206C 6F6E + 173 6720 696E + 173 7400 + GAS LISTING C:\Users\SHAWN~1.HYM\AppData\Local\Temp/cc2aJ1A4.s page 5 + + +DEFINED SYMBOLS + *ABS*:00000000 oddebug.c +C:\Users\SHAWN~1.HYM\AppData\Local\Temp/cc2aJ1A4.s:2 *ABS*:0000003f __SREG__ +C:\Users\SHAWN~1.HYM\AppData\Local\Temp/cc2aJ1A4.s:3 *ABS*:0000003e __SP_H__ +C:\Users\SHAWN~1.HYM\AppData\Local\Temp/cc2aJ1A4.s:4 *ABS*:0000003d __SP_L__ +C:\Users\SHAWN~1.HYM\AppData\Local\Temp/cc2aJ1A4.s:5 *ABS*:00000034 __CCP__ +C:\Users\SHAWN~1.HYM\AppData\Local\Temp/cc2aJ1A4.s:6 *ABS*:00000000 __tmp_reg__ +C:\Users\SHAWN~1.HYM\AppData\Local\Temp/cc2aJ1A4.s:7 *ABS*:00000001 __zero_reg__ + +NO UNDEFINED SYMBOLS diff --git a/sparkfun/tiny/bootloaders/attiny/usbdrv/oddebug.h b/sparkfun/tiny/bootloaders/attiny/usbdrv/oddebug.h new file mode 100644 index 00000000..851f84de --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/usbdrv/oddebug.h @@ -0,0 +1,122 @@ +/* Name: oddebug.h + * Project: AVR library + * Author: Christian Starkjohann + * Creation Date: 2005-01-16 + * Tabsize: 4 + * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH + * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) + */ + +#ifndef __oddebug_h_included__ +#define __oddebug_h_included__ + +/* +General Description: +This module implements a function for debug logs on the serial line of the +AVR microcontroller. Debugging can be configured with the define +'DEBUG_LEVEL'. If this macro is not defined or defined to 0, all debugging +calls are no-ops. If it is 1, DBG1 logs will appear, but not DBG2. If it is +2, DBG1 and DBG2 logs will be printed. + +A debug log consists of a label ('prefix') to indicate which debug log created +the output and a memory block to dump in hex ('data' and 'len'). +*/ + + +#ifndef F_CPU +# define F_CPU 12000000 /* 12 MHz */ +#endif + +/* make sure we have the UART defines: */ +#include "usbportability.h" + +#ifndef uchar +# define uchar unsigned char +#endif + +#if DEBUG_LEVEL > 0 && !(defined TXEN || defined TXEN0) /* no UART in device */ +# warning "Debugging disabled because device has no UART" +# undef DEBUG_LEVEL +#endif + +#ifndef DEBUG_LEVEL +# define DEBUG_LEVEL 0 +#endif + +/* ------------------------------------------------------------------------- */ + +#if DEBUG_LEVEL > 0 +# define DBG1(prefix, data, len) odDebug(prefix, data, len) +#else +# define DBG1(prefix, data, len) +#endif + +#if DEBUG_LEVEL > 1 +# define DBG2(prefix, data, len) odDebug(prefix, data, len) +#else +# define DBG2(prefix, data, len) +#endif + +/* ------------------------------------------------------------------------- */ + +#if DEBUG_LEVEL > 0 +extern void odDebug(uchar prefix, uchar *data, uchar len); + +/* Try to find our control registers; ATMEL likes to rename these */ + +#if defined UBRR +# define ODDBG_UBRR UBRR +#elif defined UBRRL +# define ODDBG_UBRR UBRRL +#elif defined UBRR0 +# define ODDBG_UBRR UBRR0 +#elif defined UBRR0L +# define ODDBG_UBRR UBRR0L +#endif + +#if defined UCR +# define ODDBG_UCR UCR +#elif defined UCSRB +# define ODDBG_UCR UCSRB +#elif defined UCSR0B +# define ODDBG_UCR UCSR0B +#endif + +#if defined TXEN +# define ODDBG_TXEN TXEN +#else +# define ODDBG_TXEN TXEN0 +#endif + +#if defined USR +# define ODDBG_USR USR +#elif defined UCSRA +# define ODDBG_USR UCSRA +#elif defined UCSR0A +# define ODDBG_USR UCSR0A +#endif + +#if defined UDRE +# define ODDBG_UDRE UDRE +#else +# define ODDBG_UDRE UDRE0 +#endif + +#if defined UDR +# define ODDBG_UDR UDR +#elif defined UDR0 +# define ODDBG_UDR UDR0 +#endif + +static inline void odDebugInit(void) +{ + ODDBG_UCR |= (1<len & 0x10){ /* packet buffer was empty */ + txStatus->buffer[0] ^= USBPID_DATA0 ^ USBPID_DATA1; /* toggle token */ + }else{ + txStatus->len = USBPID_NAK; /* avoid sending outdated (overwritten) interrupt data */ + } + p = txStatus->buffer + 1; + i = len; + do{ /* if len == 0, we still copy 1 byte, but that's no problem */ + *p++ = *data++; + }while(--i > 0); /* loop control at the end is 2 bytes shorter than at beginning */ + usbCrc16Append(&txStatus->buffer[1], len); + txStatus->len = len + 4; /* len must be given including sync byte */ + DBG2(0x21 + (((int)txStatus >> 3) & 3), txStatus->buffer, len + 3); +} + +USB_PUBLIC void usbSetInterrupt(uchar *data, uchar len) +{ + usbGenericSetInterrupt(data, len, &usbTxStatus1); +} +#endif + +#if USB_CFG_HAVE_INTRIN_ENDPOINT3 +USB_PUBLIC void usbSetInterrupt3(uchar *data, uchar len) +{ + usbGenericSetInterrupt(data, len, &usbTxStatus3); +} +#endif +#endif /* USB_CFG_SUPPRESS_INTR_CODE */ + +/* ------------------ utilities for code following below ------------------- */ + +/* Use defines for the switch statement so that we can choose between an + * if()else if() and a switch/case based implementation. switch() is more + * efficient for a LARGE set of sequential choices, if() is better in all other + * cases. + */ +#if USB_CFG_USE_SWITCH_STATEMENT +# define SWITCH_START(cmd) switch(cmd){{ +# define SWITCH_CASE(value) }break; case (value):{ +# define SWITCH_CASE2(v1,v2) }break; case (v1): case(v2):{ +# define SWITCH_CASE3(v1,v2,v3) }break; case (v1): case(v2): case(v3):{ +# define SWITCH_DEFAULT }break; default:{ +# define SWITCH_END }} +#else +# define SWITCH_START(cmd) {uchar _cmd = cmd; if(0){ +# define SWITCH_CASE(value) }else if(_cmd == (value)){ +# define SWITCH_CASE2(v1,v2) }else if(_cmd == (v1) || _cmd == (v2)){ +# define SWITCH_CASE3(v1,v2,v3) }else if(_cmd == (v1) || _cmd == (v2) || _cmd == (v3)){ +# define SWITCH_DEFAULT }else{ +# define SWITCH_END }} +#endif + +#ifndef USB_RX_USER_HOOK +#define USB_RX_USER_HOOK(data, len) +#endif +#ifndef USB_SET_ADDRESS_HOOK +#define USB_SET_ADDRESS_HOOK() +#endif + +/* ------------------------------------------------------------------------- */ + +/* We use if() instead of #if in the macro below because #if can't be used + * in macros and the compiler optimizes constant conditions anyway. + * This may cause problems with undefined symbols if compiled without + * optimizing! + */ + + #define GET_DESCRIPTOR(cfgProp, staticName) \ + if(cfgProp){ \ + if((cfgProp) & USB_PROP_IS_RAM) \ + flags = 0; \ + if((cfgProp) & USB_PROP_IS_DYNAMIC){ \ + len = usbFunctionDescriptor(rq); \ + }else{ \ + len = USB_PROP_LENGTH(cfgProp); \ + usbMsgPtr = (usbMsgPtr_t)(staticName); \ + } \ + } + +/* usbDriverDescriptor() is similar to usbFunctionDescriptor(), but used + * internally for all types of descriptors. + */ +static inline usbMsgLen_t usbDriverDescriptor(usbRequest_t *rq) +{ +usbMsgLen_t len = 0; +uchar flags = USB_FLG_MSGPTR_IS_ROM; + + SWITCH_START(rq->wValue.bytes[1]) + SWITCH_CASE(USBDESCR_DEVICE) /* 1 */ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_DEVICE, usbDescriptorDevice) + SWITCH_CASE(USBDESCR_CONFIG) /* 2 */ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_CONFIGURATION, usbDescriptorConfiguration) + SWITCH_CASE(USBDESCR_STRING) /* 3 */ +#if USB_CFG_DESCR_PROPS_STRINGS & USB_PROP_IS_DYNAMIC + if(USB_CFG_DESCR_PROPS_STRINGS & USB_PROP_IS_RAM) + flags = 0; + len = usbFunctionDescriptor(rq); +#else /* USB_CFG_DESCR_PROPS_STRINGS & USB_PROP_IS_DYNAMIC */ + SWITCH_START(rq->wValue.bytes[0]) + SWITCH_CASE(0) + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_STRING_0, usbDescriptorString0) + SWITCH_CASE(1) + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_STRING_VENDOR, usbDescriptorStringVendor) + SWITCH_CASE(2) + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_STRING_PRODUCT, usbDescriptorStringDevice) + SWITCH_CASE(3) + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER, usbDescriptorStringSerialNumber) + SWITCH_DEFAULT + if(USB_CFG_DESCR_PROPS_UNKNOWN & USB_PROP_IS_DYNAMIC){ + len = usbFunctionDescriptor(rq); + } + SWITCH_END +#endif /* USB_CFG_DESCR_PROPS_STRINGS & USB_PROP_IS_DYNAMIC */ +#if USB_CFG_DESCR_PROPS_HID_REPORT /* only support HID descriptors if enabled */ + SWITCH_CASE(USBDESCR_HID) /* 0x21 */ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_HID, usbDescriptorConfiguration + 18) + SWITCH_CASE(USBDESCR_HID_REPORT)/* 0x22 */ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_HID_REPORT, usbDescriptorHidReport) +#endif + SWITCH_DEFAULT + if(USB_CFG_DESCR_PROPS_UNKNOWN & USB_PROP_IS_DYNAMIC){ + len = usbFunctionDescriptor(rq); + } + SWITCH_END + + flags=flags; // Make compiler shut up about unused variable +#ifndef MNHACK_ONLY_FLASH_MSGPTR + usbMsgFlags = flags; +#endif + return len; +} + +/* ------------------------------------------------------------------------- */ + +/* usbDriverSetup() is similar to usbFunctionSetup(), but it's used for + * standard requests instead of class and custom requests. + */ +static inline usbMsgLen_t usbDriverSetup(usbRequest_t *rq) +{ +usbMsgLen_t len = 0; +uchar *dataPtr = usbTxBuf + 9; /* there are 2 bytes free space at the end of the buffer */ +uchar value = rq->wValue.bytes[0]; +#if USB_CFG_IMPLEMENT_HALT +uchar index = rq->wIndex.bytes[0]; +#endif + + dataPtr[0] = 0; /* default reply common to USBRQ_GET_STATUS and USBRQ_GET_INTERFACE */ + SWITCH_START(rq->bRequest) + SWITCH_CASE(USBRQ_GET_STATUS) /* 0 */ + uchar recipient = rq->bmRequestType & USBRQ_RCPT_MASK; /* assign arith ops to variables to enforce byte size */ + if(USB_CFG_IS_SELF_POWERED && recipient == USBRQ_RCPT_DEVICE) + dataPtr[0] = USB_CFG_IS_SELF_POWERED; +#if USB_CFG_IMPLEMENT_HALT + if(recipient == USBRQ_RCPT_ENDPOINT && index == 0x81) /* request status for endpoint 1 */ + dataPtr[0] = usbTxLen1 == USBPID_STALL; +#endif + dataPtr[1] = 0; + len = 2; +#if USB_CFG_IMPLEMENT_HALT + SWITCH_CASE2(USBRQ_CLEAR_FEATURE, USBRQ_SET_FEATURE) /* 1, 3 */ + if(value == 0 && index == 0x81){ /* feature 0 == HALT for endpoint == 1 */ + usbTxLen1 = rq->bRequest == USBRQ_CLEAR_FEATURE ? USBPID_NAK : USBPID_STALL; + usbResetDataToggling(); + } +#endif + SWITCH_CASE(USBRQ_SET_ADDRESS) /* 5 */ + usbNewDeviceAddr = value; + USB_SET_ADDRESS_HOOK(); + SWITCH_CASE(USBRQ_GET_DESCRIPTOR) /* 6 */ + len = usbDriverDescriptor(rq); + goto skipMsgPtrAssignment; + SWITCH_CASE(USBRQ_GET_CONFIGURATION) /* 8 */ + dataPtr = &usbConfiguration; /* send current configuration value */ + len = 1; + SWITCH_CASE(USBRQ_SET_CONFIGURATION) /* 9 */ + usbConfiguration = value; + usbResetStall(); + SWITCH_CASE(USBRQ_GET_INTERFACE) /* 10 */ + len = 1; +#if USB_CFG_HAVE_INTRIN_ENDPOINT && !USB_CFG_SUPPRESS_INTR_CODE + SWITCH_CASE(USBRQ_SET_INTERFACE) /* 11 */ + usbResetDataToggling(); + usbResetStall(); +#endif + SWITCH_DEFAULT /* 7=SET_DESCRIPTOR, 12=SYNC_FRAME */ + /* Should we add an optional hook here? */ + SWITCH_END + usbMsgPtr = (usbMsgPtr_t)dataPtr; +skipMsgPtrAssignment: + return len; +} + +/* ------------------------------------------------------------------------- */ + +/* usbProcessRx() is called for every message received by the interrupt + * routine. It distinguishes between SETUP and DATA packets and processes + * them accordingly. + */ +static inline void usbProcessRx(uchar *data, uchar len) +{ +usbRequest_t *rq = (void *)data; + +/* usbRxToken can be: + * 0x2d 00101101 (USBPID_SETUP for setup data) + * 0xe1 11100001 (USBPID_OUT: data phase of setup transfer) + * 0...0x0f for OUT on endpoint X + */ + DBG2(0x10 + (usbRxToken & 0xf), data, len + 2); /* SETUP=1d, SETUP-DATA=11, OUTx=1x */ + USB_RX_USER_HOOK(data, len) +#if USB_CFG_IMPLEMENT_FN_WRITEOUT + if(usbRxToken < 0x10){ /* OUT to endpoint != 0: endpoint number in usbRxToken */ + usbFunctionWriteOut(data, len); + return; + } +#endif + if(usbRxToken == (uchar)USBPID_SETUP){ + if(len != 8) /* Setup size must be always 8 bytes. Ignore otherwise. */ + return; + usbMsgLen_t replyLen; + usbTxBuf[0] = USBPID_DATA0; /* initialize data toggling */ + usbTxLen = USBPID_NAK; /* abort pending transmit */ +#ifndef MNHACK_ONLY_FLASH_MSGPTR + usbMsgFlags = 0; +#endif + uchar type = rq->bmRequestType & USBRQ_TYPE_MASK; + if(type != USBRQ_TYPE_STANDARD){ /* standard requests are handled by driver */ + replyLen = usbFunctionSetup(data); + }else{ + replyLen = usbDriverSetup(rq); + } +#if USB_CFG_IMPLEMENT_FN_READ || USB_CFG_IMPLEMENT_FN_WRITE + if(replyLen == USB_NO_MSG){ /* use user-supplied read/write function */ + /* do some conditioning on replyLen, but on IN transfers only */ + if((rq->bmRequestType & USBRQ_DIR_MASK) != USBRQ_DIR_HOST_TO_DEVICE){ + if(sizeof(replyLen) < sizeof(rq->wLength.word)){ /* help compiler with optimizing */ + replyLen = rq->wLength.bytes[0]; + }else{ + replyLen = rq->wLength.word; + } + } + usbMsgFlags = USB_FLG_USE_USER_RW; + }else /* The 'else' prevents that we limit a replyLen of USB_NO_MSG to the maximum transfer len. */ +#endif + if(sizeof(replyLen) < sizeof(rq->wLength.word)){ /* help compiler with optimizing */ + if(!rq->wLength.bytes[1] && replyLen > rq->wLength.bytes[0]) /* limit length to max */ + replyLen = rq->wLength.bytes[0]; + }else{ + if(replyLen > rq->wLength.word) /* limit length to max */ + replyLen = rq->wLength.word; + } + usbMsgLen = replyLen; + }else{ /* usbRxToken must be USBPID_OUT, which means data phase of setup (control-out) */ +#if USB_CFG_IMPLEMENT_FN_WRITE + if(usbMsgFlags & USB_FLG_USE_USER_RW){ + uchar rval = usbFunctionWrite(data, len); + if(rval == 0xff){ /* an error occurred */ + usbTxLen = USBPID_STALL; + }else if(rval != 0){ /* This was the final package */ + usbMsgLen = 0; /* answer with a zero-sized data packet */ + } + } +#endif + } +} + +/* ------------------------------------------------------------------------- */ + +/* This function is similar to usbFunctionRead(), but it's also called for + * data handled automatically by the driver (e.g. descriptor reads). + */ +static uchar usbDeviceRead(uchar *data, uchar len) +{ + if(len > 0){ /* don't bother app with 0 sized reads */ +#if USB_CFG_IMPLEMENT_FN_READ + if(usbMsgFlags & USB_FLG_USE_USER_RW){ + len = usbFunctionRead(data, len); + }else +#endif + { + uchar i = len; + usbMsgPtr_t r = usbMsgPtr; +#ifndef MNHACK_ONLY_FLASH_MSGPTR + if(usbMsgFlags & USB_FLG_MSGPTR_IS_ROM){ /* ROM data */ +#endif + do{ + uchar c = USB_READ_FLASH(r); /* assign to char size variable to enforce byte ops */ + *data++ = c; + r++; + }while(--i); +#ifndef MNHACK_ONLY_FLASH_MSGPTR + }else{ // RAM data + do{ + *data++ = *((uchar *)r); + r++; + }while(--i); + } +#endif + usbMsgPtr = r; + } + } + return len; +} + +/* ------------------------------------------------------------------------- */ + +/* usbBuildTxBlock() is called when we have data to transmit and the + * interrupt routine's transmit buffer is empty. + */ +static inline void usbBuildTxBlock(void) +{ +usbMsgLen_t wantLen; +uchar len; + + wantLen = usbMsgLen; + if(wantLen > 8) + wantLen = 8; + usbMsgLen -= wantLen; + usbTxBuf[0] ^= USBPID_DATA0 ^ USBPID_DATA1; /* DATA toggling */ + len = usbDeviceRead(usbTxBuf + 1, wantLen); + if(len <= 8){ /* valid data packet */ + usbCrc16Append(&usbTxBuf[1], len); + len += 4; /* length including sync byte */ + if(len < 12) /* a partial package identifies end of message */ + usbMsgLen = USB_NO_MSG; + }else{ + len = USBPID_STALL; /* stall the endpoint */ + usbMsgLen = USB_NO_MSG; + } + usbTxLen = len; + DBG2(0x20, usbTxBuf, len-1); +} + +/* ------------------------------------------------------------------------- */ + +static inline void usbHandleResetHook(uchar notResetState) +{ +#ifdef USB_RESET_HOOK +static uchar wasReset; +uchar isReset = !notResetState; + + if(wasReset != isReset){ + USB_RESET_HOOK(isReset); + wasReset = isReset; + } +#else + notResetState = notResetState; // avoid compiler warning +#endif +} + +/* ------------------------------------------------------------------------- */ + +USB_PUBLIC void usbPoll(void) +{ +schar len; +uchar i; + + len = usbRxLen - 3; + if(len >= 0){ +/* We could check CRC16 here -- but ACK has already been sent anyway. If you + * need data integrity checks with this driver, check the CRC in your app + * code and report errors back to the host. Since the ACK was already sent, + * retries must be handled on application level. + * unsigned crc = usbCrc16(buffer + 1, usbRxLen - 3); + */ + usbProcessRx(usbRxBuf + USB_BUFSIZE + 1 - usbInputBufOffset, len); +#if USB_CFG_HAVE_FLOWCONTROL + if(usbRxLen > 0) /* only mark as available if not inactivated */ + usbRxLen = 0; +#else + usbRxLen = 0; /* mark rx buffer as available */ +#endif + } + if(usbTxLen & 0x10){ /* transmit system idle */ + if(usbMsgLen != USB_NO_MSG){ /* transmit data pending? */ + usbBuildTxBlock(); + } + } + for(i = 20; i > 0; i--){ + uchar usbLineStatus = USBIN & USBMASK; + if(usbLineStatus != 0) /* SE0 has ended */ + goto isNotReset; + } + /* RESET condition, called multiple times during reset */ + usbNewDeviceAddr = 0; + usbDeviceAddr = 0; + usbResetStall(); + DBG1(0xff, 0, 0); +isNotReset: + usbHandleResetHook(i); +} + +/* ------------------------------------------------------------------------- */ + +USB_PUBLIC void usbInit(void) +{ +#ifdef MNHACK_NO_DATASECTION + usbTxLen = USBPID_NAK; + usbMsgLen = USB_NO_MSG; +#endif + +#if USB_INTR_CFG_SET != 0 + USB_INTR_CFG |= USB_INTR_CFG_SET; +#endif +#if USB_INTR_CFG_CLR != 0 + USB_INTR_CFG &= ~(USB_INTR_CFG_CLR); +#endif + USB_INTR_ENABLE |= (1 << USB_INTR_ENABLE_BIT); + usbResetDataToggling(); +#if USB_CFG_HAVE_INTRIN_ENDPOINT && !USB_CFG_SUPPRESS_INTR_CODE + usbTxLen1 = USBPID_NAK; +#if USB_CFG_HAVE_INTRIN_ENDPOINT3 + usbTxLen3 = USBPID_NAK; +#endif +#endif +} + +/* ------------------------------------------------------------------------- */ diff --git a/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrv.h b/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrv.h new file mode 100644 index 00000000..3fe84d5a --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrv.h @@ -0,0 +1,746 @@ +/* Name: usbdrv.h + * Project: V-USB, virtual USB port for Atmel's(r) AVR(r) microcontrollers + * Author: Christian Starkjohann + * Creation Date: 2004-12-29 + * Tabsize: 4 + * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH + * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) + */ + +#ifndef __usbdrv_h_included__ +#define __usbdrv_h_included__ +#include "usbconfig.h" +#include "usbportability.h" + +/* +Hardware Prerequisites: +======================= +USB lines D+ and D- MUST be wired to the same I/O port. We recommend that D+ +triggers the interrupt (best achieved by using INT0 for D+), but it is also +possible to trigger the interrupt from D-. If D- is used, interrupts are also +triggered by SOF packets. D- requires a pull-up of 1.5k to +3.5V (and the +device must be powered at 3.5V) to identify as low-speed USB device. A +pull-down or pull-up of 1M SHOULD be connected from D+ to +3.5V to prevent +interference when no USB master is connected. If you use Zener diodes to limit +the voltage on D+ and D-, you MUST use a pull-down resistor, not a pull-up. +We use D+ as interrupt source and not D- because it does not trigger on +keep-alive and RESET states. If you want to count keep-alive events with +USB_COUNT_SOF, you MUST use D- as an interrupt source. + +As a compile time option, the 1.5k pull-up resistor on D- can be made +switchable to allow the device to disconnect at will. See the definition of +usbDeviceConnect() and usbDeviceDisconnect() further down in this file. + +Please adapt the values in usbconfig.h according to your hardware! + +The device MUST be clocked at exactly 12 MHz, 15 MHz, 16 MHz or 20 MHz +or at 12.8 MHz resp. 16.5 MHz +/- 1%. See usbconfig-prototype.h for details. + + +Limitations: +============ +Robustness with respect to communication errors: +The driver assumes error-free communication. It DOES check for errors in +the PID, but does NOT check bit stuffing errors, SE0 in middle of a byte, +token CRC (5 bit) and data CRC (16 bit). CRC checks can not be performed due +to timing constraints: We must start sending a reply within 7 bit times. +Bit stuffing and misplaced SE0 would have to be checked in real-time, but CPU +performance does not permit that. The driver does not check Data0/Data1 +toggling, but application software can implement the check. + +Input characteristics: +Since no differential receiver circuit is used, electrical interference +robustness may suffer. The driver samples only one of the data lines with +an ordinary I/O pin's input characteristics. However, since this is only a +low speed USB implementation and the specification allows for 8 times the +bit rate over the same hardware, we should be on the safe side. Even the spec +requires detection of asymmetric states at high bit rate for SE0 detection. + +Number of endpoints: +The driver supports the following endpoints: + +- Endpoint 0, the default control endpoint. +- Any number of interrupt- or bulk-out endpoints. The data is sent to + usbFunctionWriteOut() and USB_CFG_IMPLEMENT_FN_WRITEOUT must be defined + to 1 to activate this feature. The endpoint number can be found in the + global variable 'usbRxToken'. +- One default interrupt- or bulk-in endpoint. This endpoint is used for + interrupt- or bulk-in transfers which are not handled by any other endpoint. + You must define USB_CFG_HAVE_INTRIN_ENDPOINT in order to activate this + feature and call usbSetInterrupt() to send interrupt/bulk data. +- One additional interrupt- or bulk-in endpoint. This was endpoint 3 in + previous versions of this driver but can now be configured to any endpoint + number. You must define USB_CFG_HAVE_INTRIN_ENDPOINT3 in order to activate + this feature and call usbSetInterrupt3() to send interrupt/bulk data. The + endpoint number can be set with USB_CFG_EP3_NUMBER. + +Please note that the USB standard forbids bulk endpoints for low speed devices! +Most operating systems allow them anyway, but the AVR will spend 90% of the CPU +time in the USB interrupt polling for bulk data. + +Maximum data payload: +Data payload of control in and out transfers may be up to 254 bytes. In order +to accept payload data of out transfers, you need to implement +'usbFunctionWrite()'. + +USB Suspend Mode supply current: +The USB standard limits power consumption to 500uA when the bus is in suspend +mode. This is not a problem for self-powered devices since they don't need +bus power anyway. Bus-powered devices can achieve this only by putting the +CPU in sleep mode. The driver does not implement suspend handling by itself. +However, the application may implement activity monitoring and wakeup from +sleep. The host sends regular SE0 states on the bus to keep it active. These +SE0 states can be detected by using D- as the interrupt source. Define +USB_COUNT_SOF to 1 and use the global variable usbSofCount to check for bus +activity. + +Operation without an USB master: +The driver behaves neutral without connection to an USB master if D- reads +as 1. To avoid spurious interrupts, we recommend a high impedance (e.g. 1M) +pull-down or pull-up resistor on D+ (interrupt). If Zener diodes are used, +use a pull-down. If D- becomes statically 0, the driver may block in the +interrupt routine. + +Interrupt latency: +The application must ensure that the USB interrupt is not disabled for more +than 25 cycles (this is for 12 MHz, faster clocks allow longer latency). +This implies that all interrupt routines must either have the "ISR_NOBLOCK" +attribute set (see "avr/interrupt.h") or be written in assembler with "sei" +as the first instruction. + +Maximum interrupt duration / CPU cycle consumption: +The driver handles all USB communication during the interrupt service +routine. The routine will not return before an entire USB message is received +and the reply is sent. This may be up to ca. 1200 cycles @ 12 MHz (= 100us) if +the host conforms to the standard. The driver will consume CPU cycles for all +USB messages, even if they address another (low-speed) device on the same bus. + +*/ + +/* ------------------------------------------------------------------------- */ +/* --------------------------- Module Interface ---------------------------- */ +/* ------------------------------------------------------------------------- */ + +#define USBDRV_VERSION 20121206 +/* This define uniquely identifies a driver version. It is a decimal number + * constructed from the driver's release date in the form YYYYMMDD. If the + * driver's behavior or interface changes, you can use this constant to + * distinguish versions. If it is not defined, the driver's release date is + * older than 2006-01-25. + */ + + +#ifndef USB_PUBLIC +#define USB_PUBLIC +#endif +/* USB_PUBLIC is used as declaration attribute for all functions exported by + * the USB driver. The default is no attribute (see above). You may define it + * to static either in usbconfig.h or from the command line if you include + * usbdrv.c instead of linking against it. Including the C module of the driver + * directly in your code saves a couple of bytes in flash memory. + */ + +#ifndef __ASSEMBLER__ +#ifndef uchar +#define uchar unsigned char +#endif +#ifndef schar +#define schar signed char +#endif +/* shortcuts for well defined 8 bit integer types */ + +#if USB_CFG_LONG_TRANSFERS /* if more than 254 bytes transfer size required */ +# define usbMsgLen_t unsigned +#else +# define usbMsgLen_t uchar +#endif +/* usbMsgLen_t is the data type used for transfer lengths. By default, it is + * defined to uchar, allowing a maximum of 254 bytes (255 is reserved for + * USB_NO_MSG below). If the usbconfig.h defines USB_CFG_LONG_TRANSFERS to 1, + * a 16 bit data type is used, allowing up to 16384 bytes (the rest is used + * for flags in the descriptor configuration). + */ +#define USB_NO_MSG ((usbMsgLen_t)-1) /* constant meaning "no message" */ + +#ifndef usbMsgPtr_t +#define usbMsgPtr_t uchar * +#endif +/* Making usbMsgPtr_t a define allows the user of this library to define it to + * an 8 bit type on tiny devices. This reduces code size, especially if the + * compiler supports a tiny memory model. + * The type can be a pointer or scalar type, casts are made where necessary. + * Although it's paradoxical, Gcc 4 generates slightly better code for scalar + * types than for pointers. + */ + +struct usbRequest; /* forward declaration */ + +USB_PUBLIC void usbInit(void); +/* This function must be called before interrupts are enabled and the main + * loop is entered. We exepct that the PORT and DDR bits for D+ and D- have + * not been changed from their default status (which is 0). If you have changed + * them, set both back to 0 (configure them as input with no internal pull-up). + */ +USB_PUBLIC void usbPoll(void); +/* This function must be called at regular intervals from the main loop. + * Maximum delay between calls is somewhat less than 50ms (USB timeout for + * accepting a Setup message). Otherwise the device will not be recognized. + * Please note that debug outputs through the UART take ~ 0.5ms per byte + * at 19200 bps. + */ +extern usbMsgPtr_t usbMsgPtr; +/* This variable may be used to pass transmit data to the driver from the + * implementation of usbFunctionWrite(). It is also used internally by the + * driver for standard control requests. + */ +USB_PUBLIC usbMsgLen_t usbFunctionSetup(uchar data[8]); +/* This function is called when the driver receives a SETUP transaction from + * the host which is not answered by the driver itself (in practice: class and + * vendor requests). All control transfers start with a SETUP transaction where + * the host communicates the parameters of the following (optional) data + * transfer. The SETUP data is available in the 'data' parameter which can + * (and should) be casted to 'usbRequest_t *' for a more user-friendly access + * to parameters. + * + * If the SETUP indicates a control-in transfer, you should provide the + * requested data to the driver. There are two ways to transfer this data: + * (1) Set the global pointer 'usbMsgPtr' to the base of the static RAM data + * block and return the length of the data in 'usbFunctionSetup()'. The driver + * will handle the rest. Or (2) return USB_NO_MSG in 'usbFunctionSetup()'. The + * driver will then call 'usbFunctionRead()' when data is needed. See the + * documentation for usbFunctionRead() for details. + * + * If the SETUP indicates a control-out transfer, the only way to receive the + * data from the host is through the 'usbFunctionWrite()' call. If you + * implement this function, you must return USB_NO_MSG in 'usbFunctionSetup()' + * to indicate that 'usbFunctionWrite()' should be used. See the documentation + * of this function for more information. If you just want to ignore the data + * sent by the host, return 0 in 'usbFunctionSetup()'. + * + * Note that calls to the functions usbFunctionRead() and usbFunctionWrite() + * are only done if enabled by the configuration in usbconfig.h. + */ +USB_PUBLIC usbMsgLen_t usbFunctionDescriptor(struct usbRequest *rq); +/* You need to implement this function ONLY if you provide USB descriptors at + * runtime (which is an expert feature). It is very similar to + * usbFunctionSetup() above, but it is called only to request USB descriptor + * data. See the documentation of usbFunctionSetup() above for more info. + */ +#if USB_CFG_HAVE_INTRIN_ENDPOINT +USB_PUBLIC void usbSetInterrupt(uchar *data, uchar len); +/* This function sets the message which will be sent during the next interrupt + * IN transfer. The message is copied to an internal buffer and must not exceed + * a length of 8 bytes. The message may be 0 bytes long just to indicate the + * interrupt status to the host. + * If you need to transfer more bytes, use a control read after the interrupt. + */ +#define usbInterruptIsReady() (usbTxLen1 & 0x10) +/* This macro indicates whether the last interrupt message has already been + * sent. If you set a new interrupt message before the old was sent, the + * message already buffered will be lost. + */ +#if USB_CFG_HAVE_INTRIN_ENDPOINT3 +USB_PUBLIC void usbSetInterrupt3(uchar *data, uchar len); +#define usbInterruptIsReady3() (usbTxLen3 & 0x10) +/* Same as above for endpoint 3 */ +#endif +#endif /* USB_CFG_HAVE_INTRIN_ENDPOINT */ +#if USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH /* simplified interface for backward compatibility */ +#define usbHidReportDescriptor usbDescriptorHidReport +/* should be declared as: PROGMEM char usbHidReportDescriptor[]; */ +/* If you implement an HID device, you need to provide a report descriptor. + * The HID report descriptor syntax is a bit complex. If you understand how + * report descriptors are constructed, we recommend that you use the HID + * Descriptor Tool from usb.org, see http://www.usb.org/developers/hidpage/. + * Otherwise you should probably start with a working example. + */ +#endif /* USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH */ +#if USB_CFG_IMPLEMENT_FN_WRITE +USB_PUBLIC uchar usbFunctionWrite(uchar *data, uchar len); +/* This function is called by the driver to provide a control transfer's + * payload data (control-out). It is called in chunks of up to 8 bytes. The + * total count provided in the current control transfer can be obtained from + * the 'length' property in the setup data. If an error occurred during + * processing, return 0xff (== -1). The driver will answer the entire transfer + * with a STALL token in this case. If you have received the entire payload + * successfully, return 1. If you expect more data, return 0. If you don't + * know whether the host will send more data (you should know, the total is + * provided in the usbFunctionSetup() call!), return 1. + * NOTE: If you return 0xff for STALL, 'usbFunctionWrite()' may still be called + * for the remaining data. You must continue to return 0xff for STALL in these + * calls. + * In order to get usbFunctionWrite() called, define USB_CFG_IMPLEMENT_FN_WRITE + * to 1 in usbconfig.h and return 0xff in usbFunctionSetup().. + */ +#endif /* USB_CFG_IMPLEMENT_FN_WRITE */ +#if USB_CFG_IMPLEMENT_FN_READ +USB_PUBLIC uchar usbFunctionRead(uchar *data, uchar len); +/* This function is called by the driver to ask the application for a control + * transfer's payload data (control-in). It is called in chunks of up to 8 + * bytes each. You should copy the data to the location given by 'data' and + * return the actual number of bytes copied. If you return less than requested, + * the control-in transfer is terminated. If you return 0xff, the driver aborts + * the transfer with a STALL token. + * In order to get usbFunctionRead() called, define USB_CFG_IMPLEMENT_FN_READ + * to 1 in usbconfig.h and return 0xff in usbFunctionSetup().. + */ +#endif /* USB_CFG_IMPLEMENT_FN_READ */ + +extern uchar usbRxToken; /* may be used in usbFunctionWriteOut() below */ +#if USB_CFG_IMPLEMENT_FN_WRITEOUT +USB_PUBLIC void usbFunctionWriteOut(uchar *data, uchar len); +/* This function is called by the driver when data is received on an interrupt- + * or bulk-out endpoint. The endpoint number can be found in the global + * variable usbRxToken. You must define USB_CFG_IMPLEMENT_FN_WRITEOUT to 1 in + * usbconfig.h to get this function called. + */ +#endif /* USB_CFG_IMPLEMENT_FN_WRITEOUT */ +#ifdef USB_CFG_PULLUP_IOPORTNAME +#define usbDeviceConnect() ((USB_PULLUP_DDR |= (1<device, 1=device->host + * t ..... type: 0=standard, 1=class, 2=vendor, 3=reserved + * r ..... recipient: 0=device, 1=interface, 2=endpoint, 3=other + */ + +/* USB setup recipient values */ +#define USBRQ_RCPT_MASK 0x1f +#define USBRQ_RCPT_DEVICE 0 +#define USBRQ_RCPT_INTERFACE 1 +#define USBRQ_RCPT_ENDPOINT 2 + +/* USB request type values */ +#define USBRQ_TYPE_MASK 0x60 +#define USBRQ_TYPE_STANDARD (0<<5) +#define USBRQ_TYPE_CLASS (1<<5) +#define USBRQ_TYPE_VENDOR (2<<5) + +/* USB direction values: */ +#define USBRQ_DIR_MASK 0x80 +#define USBRQ_DIR_HOST_TO_DEVICE (0<<7) +#define USBRQ_DIR_DEVICE_TO_HOST (1<<7) + +/* USB Standard Requests */ +#define USBRQ_GET_STATUS 0 +#define USBRQ_CLEAR_FEATURE 1 +#define USBRQ_SET_FEATURE 3 +#define USBRQ_SET_ADDRESS 5 +#define USBRQ_GET_DESCRIPTOR 6 +#define USBRQ_SET_DESCRIPTOR 7 +#define USBRQ_GET_CONFIGURATION 8 +#define USBRQ_SET_CONFIGURATION 9 +#define USBRQ_GET_INTERFACE 10 +#define USBRQ_SET_INTERFACE 11 +#define USBRQ_SYNCH_FRAME 12 + +/* USB descriptor constants */ +#define USBDESCR_DEVICE 1 +#define USBDESCR_CONFIG 2 +#define USBDESCR_STRING 3 +#define USBDESCR_INTERFACE 4 +#define USBDESCR_ENDPOINT 5 +#define USBDESCR_HID 0x21 +#define USBDESCR_HID_REPORT 0x22 +#define USBDESCR_HID_PHYS 0x23 + +//#define USBATTR_BUSPOWER 0x80 // USB 1.1 does not define this value any more +#define USBATTR_BUSPOWER 0 +#define USBATTR_SELFPOWER 0x40 +#define USBATTR_REMOTEWAKE 0x20 + +/* USB HID Requests */ +#define USBRQ_HID_GET_REPORT 0x01 +#define USBRQ_HID_GET_IDLE 0x02 +#define USBRQ_HID_GET_PROTOCOL 0x03 +#define USBRQ_HID_SET_REPORT 0x09 +#define USBRQ_HID_SET_IDLE 0x0a +#define USBRQ_HID_SET_PROTOCOL 0x0b + +/* ------------------------------------------------------------------------- */ + +#endif /* __usbdrv_h_included__ */ diff --git a/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm.S b/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm.S new file mode 100644 index 00000000..d9275641 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm.S @@ -0,0 +1,391 @@ +/* Name: usbdrvasm.S + * Project: V-USB, virtual USB port for Atmel's(r) AVR(r) microcontrollers + * Author: Christian Starkjohann + * Creation Date: 2007-06-13 + * Tabsize: 4 + * Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH + * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) + */ + +/* +General Description: +This module is the assembler part of the USB driver. This file contains +general code (preprocessor acrobatics and CRC computation) and then includes +the file appropriate for the given clock rate. +*/ + +#define __SFR_OFFSET 0 /* used by avr-libc's register definitions */ +#include "usbportability.h" +#include "usbdrv.h" /* for common defs */ + +/* register names */ +#define x1 r16 +#define x2 r17 +#define shift r18 +#define cnt r19 +#define x3 r20 +#define x4 r21 +#define x5 r22 +#define bitcnt x5 +#define phase x4 +#define leap x4 + +/* Some assembler dependent definitions and declarations: */ + +#ifdef __IAR_SYSTEMS_ASM__ + extern usbRxBuf, usbDeviceAddr, usbNewDeviceAddr, usbInputBufOffset + extern usbCurrentTok, usbRxLen, usbRxToken, usbTxLen + extern usbTxBuf, usbTxStatus1, usbTxStatus3 +# if USB_COUNT_SOF + extern usbSofCount +# endif + public usbCrc16 + public usbCrc16Append + + COMMON INTVEC +# ifndef USB_INTR_VECTOR + ORG INT0_vect +# else /* USB_INTR_VECTOR */ + ORG USB_INTR_VECTOR +# undef USB_INTR_VECTOR +# endif /* USB_INTR_VECTOR */ +# define USB_INTR_VECTOR usbInterruptHandler + rjmp USB_INTR_VECTOR + RSEG CODE + +#else /* __IAR_SYSTEMS_ASM__ */ + +# ifndef USB_INTR_VECTOR /* default to hardware interrupt INT0 */ +# ifdef INT0_vect +# define USB_INTR_VECTOR INT0_vect // this is the "new" define for the vector +# else +# define USB_INTR_VECTOR SIG_INTERRUPT0 // this is the "old" vector +# endif +# endif + .text + .global USB_INTR_VECTOR + .type USB_INTR_VECTOR, @function + .global usbCrc16 + .global usbCrc16Append +#endif /* __IAR_SYSTEMS_ASM__ */ + + +#if USB_INTR_PENDING < 0x40 /* This is an I/O address, use in and out */ +# define USB_LOAD_PENDING(reg) in reg, USB_INTR_PENDING +# define USB_STORE_PENDING(reg) out USB_INTR_PENDING, reg +#else /* It's a memory address, use lds and sts */ +# define USB_LOAD_PENDING(reg) lds reg, USB_INTR_PENDING +# define USB_STORE_PENDING(reg) sts USB_INTR_PENDING, reg +#endif + +#define usbTxLen1 usbTxStatus1 +#define usbTxBuf1 (usbTxStatus1 + 1) +#define usbTxLen3 usbTxStatus3 +#define usbTxBuf3 (usbTxStatus3 + 1) + + +;---------------------------------------------------------------------------- +; Utility functions +;---------------------------------------------------------------------------- + +#ifdef __IAR_SYSTEMS_ASM__ +/* Register assignments for usbCrc16 on IAR cc */ +/* Calling conventions on IAR: + * First parameter passed in r16/r17, second in r18/r19 and so on. + * Callee must preserve r4-r15, r24-r29 (r28/r29 is frame pointer) + * Result is passed in r16/r17 + * In case of the "tiny" memory model, pointers are only 8 bit with no + * padding. We therefore pass argument 1 as "16 bit unsigned". + */ +RTMODEL "__rt_version", "3" +/* The line above will generate an error if cc calling conventions change. + * The value "3" above is valid for IAR 4.10B/W32 + */ +# define argLen r18 /* argument 2 */ +# define argPtrL r16 /* argument 1 */ +# define argPtrH r17 /* argument 1 */ + +# define resCrcL r16 /* result */ +# define resCrcH r17 /* result */ + +# define ptrL ZL +# define ptrH ZH +# define ptr Z +# define byte r22 +# define bitCnt r19 +# define polyL r20 +# define polyH r21 +# define scratch r23 + +#else /* __IAR_SYSTEMS_ASM__ */ +/* Register assignments for usbCrc16 on gcc */ +/* Calling conventions on gcc: + * First parameter passed in r24/r25, second in r22/23 and so on. + * Callee must preserve r1-r17, r28/r29 + * Result is passed in r24/r25 + */ +# define argLen r22 /* argument 2 */ +# define argPtrL r24 /* argument 1 */ +# define argPtrH r25 /* argument 1 */ + +# define resCrcL r24 /* result */ +# define resCrcH r25 /* result */ + +# define ptrL XL +# define ptrH XH +# define ptr x +# define byte r18 +# define bitCnt r19 +# define polyL r20 +# define polyH r21 +# define scratch r23 + +#endif + + +#if USB_USE_FAST_CRC + +; This implementation is faster, but has bigger code size +; This version has been optimized in size compared to the original +; fast CRC by Shay Green, January 2014. + +; Thanks to Slawomir Fras (BoskiDialer) for the original contribution. +; It implements the following C pseudo-code: +; unsigned table(unsigned char x) +; { +; unsigned value; +; +; value = (unsigned)x << 6; +; value ^= (unsigned)x << 7; +; if(parity(x)) +; value ^= 0xc001; +; return value; +; } +; unsigned usbCrc16(unsigned char *argPtr, unsigned char argLen) +; { +; unsigned crc = 0xffff; +; +; while(argLen--) +; crc = table(lo8(crc) ^ *argPtr++) ^ hi8(crc); +; return ~crc; +; } + +; extern unsigned usbCrc16(unsigned char *argPtr, unsigned char argLen); +; argPtr r24+25 / r16+r17 +; argLen r22 / r18 +; temp variables: +; byte r18 / r22 +; scratch r23 +; resCrc r24+r25 / r16+r17 +; ptr X / Z + +usbCrc16: + movw ptrL, argPtrL + ldi resCrcL, 0xFF + ldi resCrcH, 0xFF + clr bitCnt ; zero + rjmp usbCrc16LoopTest +usbCrc16ByteLoop: + ld byte, ptr+ + eor byte, resCrcL ; scratch is now 'x' in table() + mov scratch, byte ; compute parity of 'x' + swap byte + eor byte, scratch + mov resCrcL, byte + lsr byte + lsr byte + eor byte, resCrcL + inc byte + andi byte, 2 ; byte is now parity(x) << 1 + cp bitCnt, byte ; c = (byte != 0), then put in high bit + ror scratch ; so that after xoring, shifting, and xoring, it gives + ror byte ; the desired 0xC0 with resCrcH + mov resCrcL, byte + eor resCrcL, resCrcH + mov resCrcH, scratch + lsr scratch + ror byte + eor resCrcH, scratch + eor resCrcL, byte +usbCrc16LoopTest: + subi argLen, 1 + brsh usbCrc16ByteLoop + com resCrcL + com resCrcH + ret + +#else // USB_USE_FAST_CRC + +; This implementation is slower, but has less code size +; +; extern unsigned usbCrc16(unsigned char *argPtr, unsigned char argLen); +; argPtr r24+25 / r16+r17 +; argLen r22 / r18 +; temp variables: +; byte r18 / r22 +; bitCnt r19 +; poly r20+r21 +; scratch r23 +; resCrc r24+r25 / r16+r17 +; ptr X / Z +usbCrc16: + mov ptrL, argPtrL + mov ptrH, argPtrH + ldi resCrcL, 0 + ldi resCrcH, 0 + ldi polyL, lo8(0xa001) + ldi polyH, hi8(0xa001) + com argLen ; argLen = -argLen - 1: modified loop to ensure that carry is set + ldi bitCnt, 0 ; loop counter with starnd condition = end condition + rjmp usbCrcLoopEntry +usbCrcByteLoop: + ld byte, ptr+ + eor resCrcL, byte +usbCrcBitLoop: + ror resCrcH ; carry is always set here (see brcs jumps to here) + ror resCrcL + brcs usbCrcNoXor + eor resCrcL, polyL + eor resCrcH, polyH +usbCrcNoXor: + subi bitCnt, 224 ; (8 * 224) % 256 = 0; this loop iterates 8 times + brcs usbCrcBitLoop +usbCrcLoopEntry: + subi argLen, -1 + brcs usbCrcByteLoop +usbCrcReady: + ret +; Thanks to Reimar Doeffinger for optimizing this CRC routine! + +#endif // USB_USE_FAST_CRC + +; extern unsigned usbCrc16Append(unsigned char *data, unsigned char len); +usbCrc16Append: + rcall usbCrc16 + st ptr+, resCrcL + st ptr+, resCrcH + ret + +#undef argLen +#undef argPtrL +#undef argPtrH +#undef resCrcL +#undef resCrcH +#undef ptrL +#undef ptrH +#undef ptr +#undef byte +#undef bitCnt +#undef polyL +#undef polyH +#undef scratch + + +#if USB_CFG_HAVE_MEASURE_FRAME_LENGTH +#ifdef __IAR_SYSTEMS_ASM__ +/* Register assignments for usbMeasureFrameLength on IAR cc */ +/* Calling conventions on IAR: + * First parameter passed in r16/r17, second in r18/r19 and so on. + * Callee must preserve r4-r15, r24-r29 (r28/r29 is frame pointer) + * Result is passed in r16/r17 + * In case of the "tiny" memory model, pointers are only 8 bit with no + * padding. We therefore pass argument 1 as "16 bit unsigned". + */ +# define resL r16 +# define resH r17 +# define cnt16L r30 +# define cnt16H r31 +# define cntH r18 + +#else /* __IAR_SYSTEMS_ASM__ */ +/* Register assignments for usbMeasureFrameLength on gcc */ +/* Calling conventions on gcc: + * First parameter passed in r24/r25, second in r22/23 and so on. + * Callee must preserve r1-r17, r28/r29 + * Result is passed in r24/r25 + */ +# define resL r24 +# define resH r25 +# define cnt16L r24 +# define cnt16H r25 +# define cntH r26 +#endif +# define cnt16 cnt16L + +; extern unsigned usbMeasurePacketLength(void); +; returns time between two idle strobes in multiples of 7 CPU clocks +.global usbMeasureFrameLength +usbMeasureFrameLength: + ldi cntH, 6 ; wait ~ 10 ms for D- == 0 + clr cnt16L + clr cnt16H +usbMFTime16: + dec cntH + breq usbMFTimeout +usbMFWaitStrobe: ; first wait for D- == 0 (idle strobe) + sbiw cnt16, 1 ;[0] [6] + breq usbMFTime16 ;[2] + sbic USBIN, USBMINUS ;[3] + rjmp usbMFWaitStrobe ;[4] +usbMFWaitIdle: ; then wait until idle again + sbis USBIN, USBMINUS ;1 wait for D- == 1 + rjmp usbMFWaitIdle ;2 + ldi cnt16L, 1 ;1 represents cycles so far + clr cnt16H ;1 +usbMFWaitLoop: + in cntH, USBIN ;[0] [7] + adiw cnt16, 1 ;[1] + breq usbMFTimeout ;[3] + andi cntH, USBMASK ;[4] + brne usbMFWaitLoop ;[5] +usbMFTimeout: +#if resL != cnt16L + mov resL, cnt16L + mov resH, cnt16H +#endif + ret + +#undef resL +#undef resH +#undef cnt16 +#undef cnt16L +#undef cnt16H +#undef cntH + +#endif /* USB_CFG_HAVE_MEASURE_FRAME_LENGTH */ + +;---------------------------------------------------------------------------- +; Now include the clock rate specific code +;---------------------------------------------------------------------------- + +#ifndef USB_CFG_CLOCK_KHZ +# ifdef F_CPU +# define USB_CFG_CLOCK_KHZ (F_CPU/1000) +# else +# error "USB_CFG_CLOCK_KHZ not defined in usbconfig.h and no F_CPU set!" +# endif +#endif + +#if USB_CFG_CHECK_CRC /* separate dispatcher for CRC type modules */ +# if USB_CFG_CLOCK_KHZ == 18000 +# include "usbdrvasm18-crc.inc" +# else +# error "USB_CFG_CLOCK_KHZ is not one of the supported crc-rates!" +# endif +#else /* USB_CFG_CHECK_CRC */ +# if USB_CFG_CLOCK_KHZ == 12000 +# include "usbdrvasm12.inc" +# elif USB_CFG_CLOCK_KHZ == 12800 +# include "usbdrvasm128.inc" +# elif USB_CFG_CLOCK_KHZ == 15000 +# include "usbdrvasm15.inc" +# elif USB_CFG_CLOCK_KHZ == 16000 +# include "usbdrvasm16.inc" +# elif USB_CFG_CLOCK_KHZ == 16500 +# include "usbdrvasm165.inc" +# elif USB_CFG_CLOCK_KHZ == 20000 +# include "usbdrvasm20.inc" +# else +# error "USB_CFG_CLOCK_KHZ is not one of the supported non-crc-rates!" +# endif +#endif /* USB_CFG_CHECK_CRC */ diff --git a/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm.asm b/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm.asm new file mode 100644 index 00000000..fb669343 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm.asm @@ -0,0 +1,20 @@ +/* Name: usbdrvasm.asm + * Project: V-USB, virtual USB port for Atmel's(r) AVR(r) microcontrollers + * Author: Christian Starkjohann + * Creation Date: 2006-03-01 + * Tabsize: 4 + * Copyright: (c) 2006 by OBJECTIVE DEVELOPMENT Software GmbH + * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) + */ + +/* +General Description: +The IAR compiler/assembler system prefers assembler files with file extension +".asm". We simply provide this file as an alias for usbdrvasm.S. + +Thanks to Oleg Semyonov for his help with the IAR tools port! +*/ + +#include "usbdrvasm.S" + +end diff --git a/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm12.inc b/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm12.inc new file mode 100644 index 00000000..d3bd0567 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm12.inc @@ -0,0 +1,392 @@ +/* Name: usbdrvasm12.inc + * Project: V-USB, virtual USB port for Atmel's(r) AVR(r) microcontrollers + * Author: Christian Starkjohann + * Creation Date: 2004-12-29 + * Tabsize: 4 + * Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH + * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) + */ + +/* Do not link this file! Link usbdrvasm.S instead, which includes the + * appropriate implementation! + */ + +/* +General Description: +This file is the 12 MHz version of the asssembler part of the USB driver. It +requires a 12 MHz crystal (not a ceramic resonator and not a calibrated RC +oscillator). + +See usbdrv.h for a description of the entire driver. + +Since almost all of this code is timing critical, don't change unless you +really know what you are doing! Many parts require not only a maximum number +of CPU cycles, but even an exact number of cycles! + + +Timing constraints according to spec (in bit times): +timing subject min max CPUcycles +--------------------------------------------------------------------------- +EOP of OUT/SETUP to sync pattern of DATA0 (both rx) 2 16 16-128 +EOP of IN to sync pattern of DATA0 (rx, then tx) 2 7.5 16-60 +DATAx (rx) to ACK/NAK/STALL (tx) 2 7.5 16-60 +*/ + +;Software-receiver engine. Strict timing! Don't change unless you can preserve timing! +;interrupt response time: 4 cycles + insn running = 7 max if interrupts always enabled +;max allowable interrupt latency: 34 cycles -> max 25 cycles interrupt disable +;max stack usage: [ret(2), YL, SREG, YH, shift, x1, x2, x3, cnt, x4] = 11 bytes +;Numbers in brackets are maximum cycles since SOF. +USB_INTR_VECTOR: +;order of registers pushed: YL, SREG [sofError], YH, shift, x1, x2, x3, cnt + push YL ;2 [35] push only what is necessary to sync with edge ASAP + in YL, SREG ;1 [37] + push YL ;2 [39] +;---------------------------------------------------------------------------- +; Synchronize with sync pattern: +;---------------------------------------------------------------------------- +;sync byte (D-) pattern LSb to MSb: 01010100 [1 = idle = J, 0 = K] +;sync up with J to K edge during sync pattern -- use fastest possible loops +;The first part waits at most 1 bit long since we must be in sync pattern. +;YL is guarenteed to be < 0x80 because I flag is clear. When we jump to +;waitForJ, ensure that this prerequisite is met. +waitForJ: + inc YL + sbis USBIN, USBMINUS + brne waitForJ ; just make sure we have ANY timeout +waitForK: +;The following code results in a sampling window of 1/4 bit which meets the spec. + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK +#if USB_COUNT_SOF + lds YL, usbSofCount + inc YL + sts usbSofCount, YL +#endif /* USB_COUNT_SOF */ +#ifdef USB_SOF_HOOK + USB_SOF_HOOK +#endif + rjmp sofError +foundK: +;{3, 5} after falling D- edge, average delay: 4 cycles [we want 4 for center sampling] +;we have 1 bit time for setup purposes, then sample again. Numbers in brackets +;are cycles from center of first sync (double K) bit after the instruction + push YH ;2 [2] + lds YL, usbInputBufOffset;2 [4] + clr YH ;1 [5] + subi YL, lo8(-(usbRxBuf));1 [6] + sbci YH, hi8(-(usbRxBuf));1 [7] + + sbis USBIN, USBMINUS ;1 [8] we want two bits K [sample 1 cycle too early] + rjmp haveTwoBitsK ;2 [10] + pop YH ;2 [11] undo the push from before + rjmp waitForK ;2 [13] this was not the end of sync, retry +haveTwoBitsK: +;---------------------------------------------------------------------------- +; push more registers and initialize values while we sample the first bits: +;---------------------------------------------------------------------------- + push shift ;2 [16] + push x1 ;2 [12] + push x2 ;2 [14] + + in x1, USBIN ;1 [17] <-- sample bit 0 + ldi shift, 0xff ;1 [18] + bst x1, USBMINUS ;1 [19] + bld shift, 0 ;1 [20] + push x3 ;2 [22] + push cnt ;2 [24] + + in x2, USBIN ;1 [25] <-- sample bit 1 + ser x3 ;1 [26] [inserted init instruction] + eor x1, x2 ;1 [27] + bst x1, USBMINUS ;1 [28] + bld shift, 1 ;1 [29] + ldi cnt, USB_BUFSIZE;1 [30] [inserted init instruction] + rjmp rxbit2 ;2 [32] + +;---------------------------------------------------------------------------- +; Receiver loop (numbers in brackets are cycles within byte after instr) +;---------------------------------------------------------------------------- + +unstuff0: ;1 (branch taken) + andi x3, ~0x01 ;1 [15] + mov x1, x2 ;1 [16] x2 contains last sampled (stuffed) bit + in x2, USBIN ;1 [17] <-- sample bit 1 again + ori shift, 0x01 ;1 [18] + rjmp didUnstuff0 ;2 [20] + +unstuff1: ;1 (branch taken) + mov x2, x1 ;1 [21] x1 contains last sampled (stuffed) bit + andi x3, ~0x02 ;1 [22] + ori shift, 0x02 ;1 [23] + nop ;1 [24] + in x1, USBIN ;1 [25] <-- sample bit 2 again + rjmp didUnstuff1 ;2 [27] + +unstuff2: ;1 (branch taken) + andi x3, ~0x04 ;1 [29] + ori shift, 0x04 ;1 [30] + mov x1, x2 ;1 [31] x2 contains last sampled (stuffed) bit + nop ;1 [32] + in x2, USBIN ;1 [33] <-- sample bit 3 + rjmp didUnstuff2 ;2 [35] + +unstuff3: ;1 (branch taken) + in x2, USBIN ;1 [34] <-- sample stuffed bit 3 [one cycle too late] + andi x3, ~0x08 ;1 [35] + ori shift, 0x08 ;1 [36] + rjmp didUnstuff3 ;2 [38] + +unstuff4: ;1 (branch taken) + andi x3, ~0x10 ;1 [40] + in x1, USBIN ;1 [41] <-- sample stuffed bit 4 + ori shift, 0x10 ;1 [42] + rjmp didUnstuff4 ;2 [44] + +unstuff5: ;1 (branch taken) + andi x3, ~0x20 ;1 [48] + in x2, USBIN ;1 [49] <-- sample stuffed bit 5 + ori shift, 0x20 ;1 [50] + rjmp didUnstuff5 ;2 [52] + +unstuff6: ;1 (branch taken) + andi x3, ~0x40 ;1 [56] + in x1, USBIN ;1 [57] <-- sample stuffed bit 6 + ori shift, 0x40 ;1 [58] + rjmp didUnstuff6 ;2 [60] + +; extra jobs done during bit interval: +; bit 0: store, clear [SE0 is unreliable here due to bit dribbling in hubs] +; bit 1: se0 check +; bit 2: overflow check +; bit 3: recovery from delay [bit 0 tasks took too long] +; bit 4: none +; bit 5: none +; bit 6: none +; bit 7: jump, eor +rxLoop: + eor x3, shift ;1 [0] reconstruct: x3 is 0 at bit locations we changed, 1 at others + in x1, USBIN ;1 [1] <-- sample bit 0 + st y+, x3 ;2 [3] store data + ser x3 ;1 [4] + nop ;1 [5] + eor x2, x1 ;1 [6] + bst x2, USBMINUS;1 [7] + bld shift, 0 ;1 [8] + in x2, USBIN ;1 [9] <-- sample bit 1 (or possibly bit 0 stuffed) + andi x2, USBMASK ;1 [10] + breq se0 ;1 [11] SE0 check for bit 1 + andi shift, 0xf9 ;1 [12] +didUnstuff0: + breq unstuff0 ;1 [13] + eor x1, x2 ;1 [14] + bst x1, USBMINUS;1 [15] + bld shift, 1 ;1 [16] +rxbit2: + in x1, USBIN ;1 [17] <-- sample bit 2 (or possibly bit 1 stuffed) + andi shift, 0xf3 ;1 [18] + breq unstuff1 ;1 [19] do remaining work for bit 1 +didUnstuff1: + subi cnt, 1 ;1 [20] + brcs overflow ;1 [21] loop control + eor x2, x1 ;1 [22] + bst x2, USBMINUS;1 [23] + bld shift, 2 ;1 [24] + in x2, USBIN ;1 [25] <-- sample bit 3 (or possibly bit 2 stuffed) + andi shift, 0xe7 ;1 [26] + breq unstuff2 ;1 [27] +didUnstuff2: + eor x1, x2 ;1 [28] + bst x1, USBMINUS;1 [29] + bld shift, 3 ;1 [30] +didUnstuff3: + andi shift, 0xcf ;1 [31] + breq unstuff3 ;1 [32] + in x1, USBIN ;1 [33] <-- sample bit 4 + eor x2, x1 ;1 [34] + bst x2, USBMINUS;1 [35] + bld shift, 4 ;1 [36] +didUnstuff4: + andi shift, 0x9f ;1 [37] + breq unstuff4 ;1 [38] + nop2 ;2 [40] + in x2, USBIN ;1 [41] <-- sample bit 5 + eor x1, x2 ;1 [42] + bst x1, USBMINUS;1 [43] + bld shift, 5 ;1 [44] +didUnstuff5: + andi shift, 0x3f ;1 [45] + breq unstuff5 ;1 [46] + nop2 ;2 [48] + in x1, USBIN ;1 [49] <-- sample bit 6 + eor x2, x1 ;1 [50] + bst x2, USBMINUS;1 [51] + bld shift, 6 ;1 [52] +didUnstuff6: + cpi shift, 0x02 ;1 [53] + brlo unstuff6 ;1 [54] + nop2 ;2 [56] + in x2, USBIN ;1 [57] <-- sample bit 7 + eor x1, x2 ;1 [58] + bst x1, USBMINUS;1 [59] + bld shift, 7 ;1 [60] +didUnstuff7: + cpi shift, 0x04 ;1 [61] + brsh rxLoop ;2 [63] loop control +unstuff7: + andi x3, ~0x80 ;1 [63] + ori shift, 0x80 ;1 [64] + in x2, USBIN ;1 [65] <-- sample stuffed bit 7 + nop ;1 [66] + rjmp didUnstuff7 ;2 [68] + +macro POP_STANDARD ; 12 cycles + pop cnt + pop x3 + pop x2 + pop x1 + pop shift + pop YH + endm +macro POP_RETI ; 5 cycles + pop YL + out SREG, YL + pop YL + endm + +#include "asmcommon.inc" + +;---------------------------------------------------------------------------- +; Transmitting data +;---------------------------------------------------------------------------- + +txByteLoop: +txBitloop: +stuffN1Delay: ; [03] + ror shift ;[-5] [11] [59] + brcc doExorN1 ;[-4] [60] + subi x4, 1 ;[-3] + brne commonN1 ;[-2] + lsl shift ;[-1] compensate ror after rjmp stuffDelay + nop ;[00] stuffing consists of just waiting 8 cycles + rjmp stuffN1Delay ;[01] after ror, C bit is reliably clear + +sendNakAndReti: ;0 [-19] 19 cycles until SOP + ldi x3, USBPID_NAK ;1 [-18] + rjmp usbSendX3 ;2 [-16] +sendAckAndReti: ;0 [-19] 19 cycles until SOP + ldi x3, USBPID_ACK ;1 [-18] + rjmp usbSendX3 ;2 [-16] +sendCntAndReti: ;0 [-17] 17 cycles until SOP + mov x3, cnt ;1 [-16] +usbSendX3: ;0 [-16] + ldi YL, 20 ;1 [-15] 'x3' is R20 + ldi YH, 0 ;1 [-14] + ldi cnt, 2 ;1 [-13] +; rjmp usbSendAndReti fallthrough + +; USB spec says: +; idle = J +; J = (D+ = 0), (D- = 1) or USBOUT = 0x01 +; K = (D+ = 1), (D- = 0) or USBOUT = 0x02 +; Spec allows 7.5 bit times from EOP to SOP for replies (= 60 cycles) + +;usbSend: +;pointer to data in 'Y' +;number of bytes in 'cnt' -- including sync byte +;uses: x1...x2, x4, shift, cnt, Y [x1 = mirror USBOUT, x2 = USBMASK, x4 = bitstuff cnt] +;Numbers in brackets are time since first bit of sync pattern is sent (start of instruction) +usbSendAndReti: + in x2, USBDDR ;[-12] 12 cycles until SOP + ori x2, USBMASK ;[-11] + sbi USBOUT, USBMINUS ;[-10] prepare idle state; D+ and D- must have been 0 (no pullups) + out USBDDR, x2 ;[-8] <--- acquire bus + in x1, USBOUT ;[-7] port mirror for tx loop + ldi shift, 0x40 ;[-6] sync byte is first byte sent (we enter loop after ror) + ldi x2, USBMASK ;[-5] + push x4 ;[-4] +doExorN1: + eor x1, x2 ;[-2] [06] [62] + ldi x4, 6 ;[-1] [07] [63] +commonN1: +stuffN2Delay: + out USBOUT, x1 ;[00] [08] [64] <--- set bit + ror shift ;[01] + brcc doExorN2 ;[02] + subi x4, 1 ;[03] + brne commonN2 ;[04] + lsl shift ;[05] compensate ror after rjmp stuffDelay + rjmp stuffN2Delay ;[06] after ror, C bit is reliably clear +doExorN2: + eor x1, x2 ;[04] [12] + ldi x4, 6 ;[05] [13] +commonN2: + nop ;[06] [14] + subi cnt, 171 ;[07] [15] trick: (3 * 171) & 0xff = 1 + out USBOUT, x1 ;[08] [16] <--- set bit + brcs txBitloop ;[09] [25] [41] + +stuff6Delay: + ror shift ;[42] [50] + brcc doExor6 ;[43] + subi x4, 1 ;[44] + brne common6 ;[45] + lsl shift ;[46] compensate ror after rjmp stuffDelay + nop ;[47] stuffing consists of just waiting 8 cycles + rjmp stuff6Delay ;[48] after ror, C bit is reliably clear +doExor6: + eor x1, x2 ;[45] [53] + ldi x4, 6 ;[46] +common6: +stuff7Delay: + ror shift ;[47] [55] + out USBOUT, x1 ;[48] <--- set bit + brcc doExor7 ;[49] + subi x4, 1 ;[50] + brne common7 ;[51] + lsl shift ;[52] compensate ror after rjmp stuffDelay + rjmp stuff7Delay ;[53] after ror, C bit is reliably clear +doExor7: + eor x1, x2 ;[51] [59] + ldi x4, 6 ;[52] +common7: + ld shift, y+ ;[53] + tst cnt ;[55] + out USBOUT, x1 ;[56] <--- set bit + brne txByteLoop ;[57] + +;make SE0: + cbr x1, USBMASK ;[58] prepare SE0 [spec says EOP may be 15 to 18 cycles] + lds x2, usbNewDeviceAddr;[59] + lsl x2 ;[61] we compare with left shifted address + subi YL, 2 + 20 ;[62] Only assign address on data packets, not ACK/NAK in x3 + sbci YH, 0 ;[63] + out USBOUT, x1 ;[00] <-- out SE0 -- from now 2 bits = 16 cycles until bus idle +;2006-03-06: moved transfer of new address to usbDeviceAddr from C-Code to asm: +;set address only after data packet was sent, not after handshake + breq skipAddrAssign ;[01] + sts usbDeviceAddr, x2 ; if not skipped: SE0 is one cycle longer +skipAddrAssign: +;end of usbDeviceAddress transfer + ldi x2, 1< 12.5625 MHz +max frequency: 69.286 cycles for 8 bit -> 12.99 MHz +nominal frequency: 12.77 MHz ( = sqrt(min * max)) + +sampling positions: (next even number in range [+/- 0.5]) +cycle index range: 0 ... 66 +bits: +.5, 8.875, 17.25, 25.625, 34, 42.375, 50.75, 59.125 +[0/1], [9], [17], [25/+26], [34], [+42/43], [51], [59] + +bit number: 0 1 2 3 4 5 6 7 +spare cycles 1 2 1 2 1 1 1 0 + +operations to perform: duration cycle + ---------------- + eor fix, shift 1 -> 00 + andi phase, USBMASK 1 -> 08 + breq se0 1 -> 16 (moved to 11) + st y+, data 2 -> 24, 25 + mov data, fix 1 -> 33 + ser data 1 -> 41 + subi cnt, 1 1 -> 49 + brcs overflow 1 -> 50 + +layout of samples and operations: +[##] = sample bit +<##> = sample phase +*##* = operation + +0: *00* [01] 02 03 04 <05> 06 07 +1: *08* [09] 10 11 12 <13> 14 15 *16* +2: [17] 18 19 20 <21> 22 23 +3: *24* *25* [26] 27 28 29 <30> 31 32 +4: *33* [34] 35 36 37 <38> 39 40 +5: *41* [42] 43 44 45 <46> 47 48 +6: *49* *50* [51] 52 53 54 <55> 56 57 58 +7: [59] 60 61 62 <63> 64 65 66 +*****************************************************************************/ + +/* we prefer positive expressions (do if condition) instead of negative + * (skip if condition), therefore use defines for skip instructions: + */ +#define ifioclr sbis +#define ifioset sbic +#define ifrclr sbrs +#define ifrset sbrc + +/* The registers "fix" and "data" swap their meaning during the loop. Use + * defines to keep their name constant. + */ +#define fix x2 +#define data x1 +#undef phase /* phase has a default definition to x4 */ +#define phase x3 + + +USB_INTR_VECTOR: +;order of registers pushed: YL, SREG [sofError], YH, shift, x1, x2, x3, cnt, r0 + push YL ;2 push only what is necessary to sync with edge ASAP + in YL, SREG ;1 + push YL ;2 +;---------------------------------------------------------------------------- +; Synchronize with sync pattern: +;---------------------------------------------------------------------------- +;sync byte (D-) pattern LSb to MSb: 01010100 [1 = idle = J, 0 = K] +;sync up with J to K edge during sync pattern -- use fastest possible loops +;The first part waits at most 1 bit long since we must be in sync pattern. +;YL is guarenteed to be < 0x80 because I flag is clear. When we jump to +;waitForJ, ensure that this prerequisite is met. +waitForJ: + inc YL + sbis USBIN, USBMINUS + brne waitForJ ; just make sure we have ANY timeout +waitForK: +;The following code results in a sampling window of 1/4 bit which meets the spec. + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS ;[0] + rjmp foundK ;[1] +#if USB_COUNT_SOF + lds YL, usbSofCount + inc YL + sts usbSofCount, YL +#endif /* USB_COUNT_SOF */ +#ifdef USB_SOF_HOOK + USB_SOF_HOOK +#endif + rjmp sofError + +foundK: +;{3, 5} after falling D- edge, average delay: 4 cycles [we want 4 for center sampling] +;we have 1 bit time for setup purposes, then sample again. Numbers in brackets +;are cycles from center of first sync (double K) bit after the instruction + push YH ;[2] + lds YL, usbInputBufOffset;[4] + clr YH ;[6] + subi YL, lo8(-(usbRxBuf));[7] + sbci YH, hi8(-(usbRxBuf));[8] + + sbis USBIN, USBMINUS ;[9] we want two bits K [we want to sample at 8 + 4 - 1.5 = 10.5] + rjmp haveTwoBitsK ;[10] + pop YH ;[11] undo the push from before + rjmp waitForK ;[13] this was not the end of sync, retry +haveTwoBitsK: +;---------------------------------------------------------------------------- +; push more registers and initialize values while we sample the first bits: +;---------------------------------------------------------------------------- +#define fix x2 +#define data x1 + + push shift ;[12] + push x1 ;[14] + push x2 ;[16] + ldi shift, 0x80 ;[18] prevent bit-unstuffing but init low bits to 0 + ifioset USBIN, USBMINUS ;[19] [01] <--- bit 0 [10.5 + 8 = 18.5] + ori shift, 1<<0 ;[02] + push x3 ;[03] + push cnt ;[05] + push r0 ;[07] + ifioset USBIN, USBMINUS ;[09] <--- bit 1 + ori shift, 1<<1 ;[10] + ser fix ;[11] + ldi cnt, USB_BUFSIZE ;[12] + mov data, shift ;[13] + lsl shift ;[14] + nop2 ;[15] + ifioset USBIN, USBMINUS ;[17] <--- bit 2 + ori data, 3<<2 ;[18] store in bit 2 AND bit 3 + eor shift, data ;[19] do nrzi decoding + andi data, 1<<3 ;[20] + in phase, USBIN ;[21] <- phase + brne jumpToEntryAfterSet ;[22] if USBMINS at bit 3 was 1 + nop ;[23] + rjmp entryAfterClr ;[24] +jumpToEntryAfterSet: + rjmp entryAfterSet ;[24] + +;---------------------------------------------------------------------------- +; Receiver loop (numbers in brackets are cycles within byte after instr) +;---------------------------------------------------------------------------- +#undef fix +#define fix x1 +#undef data +#define data x2 + +bit7IsSet: + ifrclr phase, USBMINUS ;[62] check phase only if D- changed + lpm ;[63] + in phase, USBIN ;[64] <- phase (one cycle too late) + ori shift, 1 << 7 ;[65] + nop ;[66] +;;;;rjmp bit0AfterSet ; -> [00] == [67] moved block up to save jump +bit0AfterSet: + eor fix, shift ;[00] +#undef fix +#define fix x2 +#undef data +#define data x1 /* we now have result in data, fix is reset to 0xff */ + ifioclr USBIN, USBMINUS ;[01] <--- sample 0 + rjmp bit0IsClr ;[02] + andi shift, ~(7 << 0) ;[03] + breq unstuff0s ;[04] + in phase, USBIN ;[05] <- phase + rjmp bit1AfterSet ;[06] +unstuff0s: + in phase, USBIN ;[06] <- phase (one cycle too late) + andi fix, ~(1 << 0) ;[07] + ifioclr USBIN, USBMINUS ;[00] + ifioset USBIN, USBPLUS ;[01] + rjmp bit0IsClr ;[02] executed if first expr false or second true +se0AndStore: ; executed only if both bits 0 + st y+, x1 ;[15/17] cycles after start of byte + rjmp se0 ;[17/19] + +bit0IsClr: + ifrset phase, USBMINUS ;[04] check phase only if D- changed + lpm ;[05] + in phase, USBIN ;[06] <- phase (one cycle too late) + ori shift, 1 << 0 ;[07] +bit1AfterClr: + andi phase, USBMASK ;[08] + ifioset USBIN, USBMINUS ;[09] <--- sample 1 + rjmp bit1IsSet ;[10] + breq se0AndStore ;[11] if D- was 0 in bits 0 AND 1 and D+ was 0 in between, we have SE0 + andi shift, ~(7 << 1) ;[12] + in phase, USBIN ;[13] <- phase + breq unstuff1c ;[14] + rjmp bit2AfterClr ;[15] +unstuff1c: + andi fix, ~(1 << 1) ;[16] + nop2 ;[08] + nop2 ;[10] +bit1IsSet: + ifrclr phase, USBMINUS ;[12] check phase only if D- changed + lpm ;[13] + in phase, USBIN ;[14] <- phase (one cycle too late) + ori shift, 1 << 1 ;[15] + nop ;[16] +bit2AfterSet: + ifioclr USBIN, USBMINUS ;[17] <--- sample 2 + rjmp bit2IsClr ;[18] + andi shift, ~(7 << 2) ;[19] + breq unstuff2s ;[20] + in phase, USBIN ;[21] <- phase + rjmp bit3AfterSet ;[22] +unstuff2s: + in phase, USBIN ;[22] <- phase (one cycle too late) + andi fix, ~(1 << 2) ;[23] + nop2 ;[16] + nop2 ;[18] +bit2IsClr: + ifrset phase, USBMINUS ;[20] check phase only if D- changed + lpm ;[21] + in phase, USBIN ;[22] <- phase (one cycle too late) + ori shift, 1 << 2 ;[23] +bit3AfterClr: + st y+, data ;[24] +entryAfterClr: + ifioset USBIN, USBMINUS ;[26] <--- sample 3 + rjmp bit3IsSet ;[27] + andi shift, ~(7 << 3) ;[28] + breq unstuff3c ;[29] + in phase, USBIN ;[30] <- phase + rjmp bit4AfterClr ;[31] +unstuff3c: + in phase, USBIN ;[31] <- phase (one cycle too late) + andi fix, ~(1 << 3) ;[32] + nop2 ;[25] + nop2 ;[27] +bit3IsSet: + ifrclr phase, USBMINUS ;[29] check phase only if D- changed + lpm ;[30] + in phase, USBIN ;[31] <- phase (one cycle too late) + ori shift, 1 << 3 ;[32] +bit4AfterSet: + mov data, fix ;[33] undo this move by swapping defines +#undef fix +#define fix x1 +#undef data +#define data x2 + ifioclr USBIN, USBMINUS ;[34] <--- sample 4 + rjmp bit4IsClr ;[35] + andi shift, ~(7 << 4) ;[36] + breq unstuff4s ;[37] + in phase, USBIN ;[38] <- phase + rjmp bit5AfterSet ;[39] +unstuff4s: + in phase, USBIN ;[39] <- phase (one cycle too late) + andi fix, ~(1 << 4) ;[40] + nop2 ;[33] + nop2 ;[35] +bit4IsClr: + ifrset phase, USBMINUS ;[37] check phase only if D- changed + lpm ;[38] + in phase, USBIN ;[39] <- phase (one cycle too late) + ori shift, 1 << 4 ;[40] +bit5AfterClr: + ser data ;[41] + ifioset USBIN, USBMINUS ;[42] <--- sample 5 + rjmp bit5IsSet ;[43] + andi shift, ~(7 << 5) ;[44] + breq unstuff5c ;[45] + in phase, USBIN ;[46] <- phase + rjmp bit6AfterClr ;[47] +unstuff5c: + in phase, USBIN ;[47] <- phase (one cycle too late) + andi fix, ~(1 << 5) ;[48] + nop2 ;[41] + nop2 ;[43] +bit5IsSet: + ifrclr phase, USBMINUS ;[45] check phase only if D- changed + lpm ;[46] + in phase, USBIN ;[47] <- phase (one cycle too late) + ori shift, 1 << 5 ;[48] +bit6AfterSet: + subi cnt, 1 ;[49] + brcs jumpToOverflow ;[50] + ifioclr USBIN, USBMINUS ;[51] <--- sample 6 + rjmp bit6IsClr ;[52] + andi shift, ~(3 << 6) ;[53] + cpi shift, 2 ;[54] + in phase, USBIN ;[55] <- phase + brlt unstuff6s ;[56] + rjmp bit7AfterSet ;[57] + +jumpToOverflow: + rjmp overflow + +unstuff6s: + andi fix, ~(1 << 6) ;[50] + lpm ;[51] +bit6IsClr: + ifrset phase, USBMINUS ;[54] check phase only if D- changed + lpm ;[55] + in phase, USBIN ;[56] <- phase (one cycle too late) + ori shift, 1 << 6 ;[57] + nop ;[58] +bit7AfterClr: + ifioset USBIN, USBMINUS ;[59] <--- sample 7 + rjmp bit7IsSet ;[60] + andi shift, ~(1 << 7) ;[61] + cpi shift, 4 ;[62] + in phase, USBIN ;[63] <- phase + brlt unstuff7c ;[64] + rjmp bit0AfterClr ;[65] -> [00] == [67] +unstuff7c: + andi fix, ~(1 << 7) ;[58] + nop ;[59] + rjmp bit7IsSet ;[60] + +bit7IsClr: + ifrset phase, USBMINUS ;[62] check phase only if D- changed + lpm ;[63] + in phase, USBIN ;[64] <- phase (one cycle too late) + ori shift, 1 << 7 ;[65] + nop ;[66] +;;;;rjmp bit0AfterClr ; -> [00] == [67] moved block up to save jump +bit0AfterClr: + eor fix, shift ;[00] +#undef fix +#define fix x2 +#undef data +#define data x1 /* we now have result in data, fix is reset to 0xff */ + ifioset USBIN, USBMINUS ;[01] <--- sample 0 + rjmp bit0IsSet ;[02] + andi shift, ~(7 << 0) ;[03] + breq unstuff0c ;[04] + in phase, USBIN ;[05] <- phase + rjmp bit1AfterClr ;[06] +unstuff0c: + in phase, USBIN ;[06] <- phase (one cycle too late) + andi fix, ~(1 << 0) ;[07] + ifioclr USBIN, USBMINUS ;[00] + ifioset USBIN, USBPLUS ;[01] + rjmp bit0IsSet ;[02] executed if first expr false or second true + rjmp se0AndStore ;[03] executed only if both bits 0 +bit0IsSet: + ifrclr phase, USBMINUS ;[04] check phase only if D- changed + lpm ;[05] + in phase, USBIN ;[06] <- phase (one cycle too late) + ori shift, 1 << 0 ;[07] +bit1AfterSet: + andi shift, ~(7 << 1) ;[08] compensated by "ori shift, 1<<1" if bit1IsClr + ifioclr USBIN, USBMINUS ;[09] <--- sample 1 + rjmp bit1IsClr ;[10] + breq unstuff1s ;[11] + nop2 ;[12] do not check for SE0 if bit 0 was 1 + in phase, USBIN ;[14] <- phase (one cycle too late) + rjmp bit2AfterSet ;[15] +unstuff1s: + in phase, USBIN ;[13] <- phase + andi fix, ~(1 << 1) ;[14] + lpm ;[07] + nop2 ;[10] +bit1IsClr: + ifrset phase, USBMINUS ;[12] check phase only if D- changed + lpm ;[13] + in phase, USBIN ;[14] <- phase (one cycle too late) + ori shift, 1 << 1 ;[15] + nop ;[16] +bit2AfterClr: + ifioset USBIN, USBMINUS ;[17] <--- sample 2 + rjmp bit2IsSet ;[18] + andi shift, ~(7 << 2) ;[19] + breq unstuff2c ;[20] + in phase, USBIN ;[21] <- phase + rjmp bit3AfterClr ;[22] +unstuff2c: + in phase, USBIN ;[22] <- phase (one cycle too late) + andi fix, ~(1 << 2) ;[23] + nop2 ;[16] + nop2 ;[18] +bit2IsSet: + ifrclr phase, USBMINUS ;[20] check phase only if D- changed + lpm ;[21] + in phase, USBIN ;[22] <- phase (one cycle too late) + ori shift, 1 << 2 ;[23] +bit3AfterSet: + st y+, data ;[24] +entryAfterSet: + ifioclr USBIN, USBMINUS ;[26] <--- sample 3 + rjmp bit3IsClr ;[27] + andi shift, ~(7 << 3) ;[28] + breq unstuff3s ;[29] + in phase, USBIN ;[30] <- phase + rjmp bit4AfterSet ;[31] +unstuff3s: + in phase, USBIN ;[31] <- phase (one cycle too late) + andi fix, ~(1 << 3) ;[32] + nop2 ;[25] + nop2 ;[27] +bit3IsClr: + ifrset phase, USBMINUS ;[29] check phase only if D- changed + lpm ;[30] + in phase, USBIN ;[31] <- phase (one cycle too late) + ori shift, 1 << 3 ;[32] +bit4AfterClr: + mov data, fix ;[33] undo this move by swapping defines +#undef fix +#define fix x1 +#undef data +#define data x2 + ifioset USBIN, USBMINUS ;[34] <--- sample 4 + rjmp bit4IsSet ;[35] + andi shift, ~(7 << 4) ;[36] + breq unstuff4c ;[37] + in phase, USBIN ;[38] <- phase + rjmp bit5AfterClr ;[39] +unstuff4c: + in phase, USBIN ;[39] <- phase (one cycle too late) + andi fix, ~(1 << 4) ;[40] + nop2 ;[33] + nop2 ;[35] +bit4IsSet: + ifrclr phase, USBMINUS ;[37] check phase only if D- changed + lpm ;[38] + in phase, USBIN ;[39] <- phase (one cycle too late) + ori shift, 1 << 4 ;[40] +bit5AfterSet: + ser data ;[41] + ifioclr USBIN, USBMINUS ;[42] <--- sample 5 + rjmp bit5IsClr ;[43] + andi shift, ~(7 << 5) ;[44] + breq unstuff5s ;[45] + in phase, USBIN ;[46] <- phase + rjmp bit6AfterSet ;[47] +unstuff5s: + in phase, USBIN ;[47] <- phase (one cycle too late) + andi fix, ~(1 << 5) ;[48] + nop2 ;[41] + nop2 ;[43] +bit5IsClr: + ifrset phase, USBMINUS ;[45] check phase only if D- changed + lpm ;[46] + in phase, USBIN ;[47] <- phase (one cycle too late) + ori shift, 1 << 5 ;[48] +bit6AfterClr: + subi cnt, 1 ;[49] + brcs overflow ;[50] + ifioset USBIN, USBMINUS ;[51] <--- sample 6 + rjmp bit6IsSet ;[52] + andi shift, ~(3 << 6) ;[53] + cpi shift, 2 ;[54] + in phase, USBIN ;[55] <- phase + brlt unstuff6c ;[56] + rjmp bit7AfterClr ;[57] +unstuff6c: + andi fix, ~(1 << 6) ;[50] + lpm ;[51] +bit6IsSet: + ifrclr phase, USBMINUS ;[54] check phase only if D- changed + lpm ;[55] + in phase, USBIN ;[56] <- phase (one cycle too late) + ori shift, 1 << 6 ;[57] +bit7AfterSet: + ifioclr USBIN, USBMINUS ;[59] <--- sample 7 + rjmp bit7IsClr ;[60] + andi shift, ~(1 << 7) ;[61] + cpi shift, 4 ;[62] + in phase, USBIN ;[63] <- phase + brlt unstuff7s ;[64] + rjmp bit0AfterSet ;[65] -> [00] == [67] +unstuff7s: + andi fix, ~(1 << 7) ;[58] + nop ;[59] + rjmp bit7IsClr ;[60] + +macro POP_STANDARD ; 14 cycles + pop r0 + pop cnt + pop x3 + pop x2 + pop x1 + pop shift + pop YH + endm +macro POP_RETI ; 5 cycles + pop YL + out SREG, YL + pop YL + endm + +#include "asmcommon.inc" + +;---------------------------------------------------------------------------- +; Transmitting data +;---------------------------------------------------------------------------- + +txByteLoop: +txBitloop: +stuffN1Delay: ; [03] + ror shift ;[-5] [11] [63] + brcc doExorN1 ;[-4] [64] + subi x3, 1 ;[-3] + brne commonN1 ;[-2] + lsl shift ;[-1] compensate ror after rjmp stuffDelay + nop ;[00] stuffing consists of just waiting 8 cycles + rjmp stuffN1Delay ;[01] after ror, C bit is reliably clear + +sendNakAndReti: + ldi cnt, USBPID_NAK ;[-19] + rjmp sendCntAndReti ;[-18] +sendAckAndReti: + ldi cnt, USBPID_ACK ;[-17] +sendCntAndReti: + mov r0, cnt ;[-16] + ldi YL, 0 ;[-15] R0 address is 0 + ldi YH, 0 ;[-14] + ldi cnt, 2 ;[-13] +; rjmp usbSendAndReti fallthrough + +; USB spec says: +; idle = J +; J = (D+ = 0), (D- = 1) or USBOUT = 0x01 +; K = (D+ = 1), (D- = 0) or USBOUT = 0x02 +; Spec allows 7.5 bit times from EOP to SOP for replies (= 60 cycles) + +;usbSend: +;pointer to data in 'Y' +;number of bytes in 'cnt' -- including sync byte +;uses: x1...x3, shift, cnt, Y [x1 = mirror USBOUT, x2 = USBMASK, x3 = bitstuff cnt] +;Numbers in brackets are time since first bit of sync pattern is sent (start of instruction) +usbSendAndReti: + in x2, USBDDR ;[-10] 10 cycles until SOP + ori x2, USBMASK ;[-9] + sbi USBOUT, USBMINUS ;[-8] prepare idle state; D+ and D- must have been 0 (no pullups) + out USBDDR, x2 ;[-6] <--- acquire bus + in x1, USBOUT ;[-5] port mirror for tx loop + ldi shift, 0x40 ;[-4] sync byte is first byte sent (we enter loop after ror) + ldi x2, USBMASK ;[-3] +doExorN1: + eor x1, x2 ;[-2] [06] [62] + ldi x3, 6 ;[-1] [07] [63] +commonN1: +stuffN2Delay: + out USBOUT, x1 ;[00] [08] [64] <--- set bit + ror shift ;[01] + brcc doExorN2 ;[02] + subi x3, 1 ;[03] + brne commonN2 ;[04] + lsl shift ;[05] compensate ror after rjmp stuffDelay + rjmp stuffN2Delay ;[06] after ror, C bit is reliably clear +doExorN2: + eor x1, x2 ;[04] [12] + ldi x3, 6 ;[05] [13] +commonN2: + nop2 ;[06] [14] + subi cnt, 171 ;[08] [16] trick: (3 * 171) & 0xff = 1 + out USBOUT, x1 ;[09] [17] <--- set bit + brcs txBitloop ;[10] [27] [44] + +stuff6Delay: + ror shift ;[45] [53] + brcc doExor6 ;[46] + subi x3, 1 ;[47] + brne common6 ;[48] + lsl shift ;[49] compensate ror after rjmp stuffDelay + nop ;[50] stuffing consists of just waiting 8 cycles + rjmp stuff6Delay ;[51] after ror, C bit is reliably clear +doExor6: + eor x1, x2 ;[48] [56] + ldi x3, 6 ;[49] +common6: +stuff7Delay: + ror shift ;[50] [58] + out USBOUT, x1 ;[51] <--- set bit + brcc doExor7 ;[52] + subi x3, 1 ;[53] + brne common7 ;[54] + lsl shift ;[55] compensate ror after rjmp stuffDelay + rjmp stuff7Delay ;[56] after ror, C bit is reliably clear +doExor7: + eor x1, x2 ;[54] [62] + ldi x3, 6 ;[55] +common7: + ld shift, y+ ;[56] + nop ;[58] + tst cnt ;[59] + out USBOUT, x1 ;[60] [00]<--- set bit + brne txByteLoop ;[61] [01] +;make SE0: + cbr x1, USBMASK ;[02] prepare SE0 [spec says EOP may be 15 to 18 cycles] + lds x2, usbNewDeviceAddr;[03] + lsl x2 ;[05] we compare with left shifted address + subi YL, 2 + 0 ;[06] Only assign address on data packets, not ACK/NAK in r0 + sbci YH, 0 ;[07] + out USBOUT, x1 ;[00] <-- out SE0 -- from now 2 bits = 16 cycles until bus idle +;2006-03-06: moved transfer of new address to usbDeviceAddr from C-Code to asm: +;set address only after data packet was sent, not after handshake + breq skipAddrAssign ;[01] + sts usbDeviceAddr, x2 ; if not skipped: SE0 is one cycle longer +skipAddrAssign: +;end of usbDeviceAddress transfer + ldi x2, 1< 0) + echo "$s\n"; + } +} + +function printBit($isAfterSet, $bitNum) +{ + ob_start(); + if($isAfterSet){ +?> + ifioclr USBIN, USBMINUS ;[00] <--- sample + rjmp bit#IsClr ;[01] + andi shift, ~(7 << #) ;[02] + breq unstuff#s ;[03] + in phase, USBIN ;[04] <- phase + rjmp bit@AfterSet ;[05] +unstuff#s: + in phase, USBIN ;[05] <- phase (one cycle too late) + andi fix, ~(1 << #) ;[06] + nop2 ;[-1] + nop2 ;[01] +bit#IsClr: + ifrset phase, USBMINUS ;[03] check phase only if D- changed + lpm ;[04] + in phase, USBIN ;[05] <- phase (one cycle too late) + ori shift, 1 << # ;[06] + + ifioset USBIN, USBMINUS ;[00] <--- sample + rjmp bit#IsSet ;[01] + andi shift, ~(7 << #) ;[02] + breq unstuff#c ;[03] + in phase, USBIN ;[04] <- phase + rjmp bit@AfterClr ;[05] +unstuff#c: + in phase, USBIN ;[05] <- phase (one cycle too late) + andi fix, ~(1 << #) ;[06] + nop2 ;[-1] + nop2 ;[01] +bit#IsSet: + ifrclr phase, USBMINUS ;[03] check phase only if D- changed + lpm ;[04] + in phase, USBIN ;[05] <- phase (one cycle too late) + ori shift, 1 << # ;[06] + +*****************************************************************************/ diff --git a/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm15.inc b/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm15.inc new file mode 100644 index 00000000..33bcf0e5 --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm15.inc @@ -0,0 +1,422 @@ +/* Name: usbdrvasm15.inc + * Project: V-USB, virtual USB port for Atmel's(r) AVR(r) microcontrollers + * Author: contributed by V. Bosch + * Creation Date: 2007-08-06 + * Tabsize: 4 + * Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH + * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) + */ + +/* Do not link this file! Link usbdrvasm.S instead, which includes the + * appropriate implementation! + */ + +/* +General Description: +This file is the 15 MHz version of the asssembler part of the USB driver. It +requires a 15 MHz crystal (not a ceramic resonator and not a calibrated RC +oscillator). + +See usbdrv.h for a description of the entire driver. + +Since almost all of this code is timing critical, don't change unless you +really know what you are doing! Many parts require not only a maximum number +of CPU cycles, but even an exact number of cycles! +*/ + +;max stack usage: [ret(2), YL, SREG, YH, bitcnt, shift, x1, x2, x3, x4, cnt] = 12 bytes +;nominal frequency: 15 MHz -> 10.0 cycles per bit, 80.0 cycles per byte +; Numbers in brackets are clocks counted from center of last sync bit +; when instruction starts + +;---------------------------------------------------------------------------- +; order of registers pushed: +; YL, SREG [sofError] YH, shift, x1, x2, x3, bitcnt, cnt, x4 +;---------------------------------------------------------------------------- +USB_INTR_VECTOR: + push YL ;2 push only what is necessary to sync with edge ASAP + in YL, SREG ;1 + push YL ;2 +;---------------------------------------------------------------------------- +; Synchronize with sync pattern: +; +; sync byte (D-) pattern LSb to MSb: 01010100 [1 = idle = J, 0 = K] +; sync up with J to K edge during sync pattern -- use fastest possible loops +;The first part waits at most 1 bit long since we must be in sync pattern. +;YL is guarenteed to be < 0x80 because I flag is clear. When we jump to +;waitForJ, ensure that this prerequisite is met. +waitForJ: + inc YL + sbis USBIN, USBMINUS + brne waitForJ ; just make sure we have ANY timeout +;------------------------------------------------------------------------------- +; The following code results in a sampling window of < 1/4 bit +; which meets the spec. +;------------------------------------------------------------------------------- +waitForK: ;- + sbis USBIN, USBMINUS ;1 [00] <-- sample + rjmp foundK ;2 [01] + sbis USBIN, USBMINUS ; <-- sample + rjmp foundK + sbis USBIN, USBMINUS ; <-- sample + rjmp foundK + sbis USBIN, USBMINUS ; <-- sample + rjmp foundK + sbis USBIN, USBMINUS ; <-- sample + rjmp foundK + sbis USBIN, USBMINUS ; <-- sample + rjmp foundK +#if USB_COUNT_SOF + lds YL, usbSofCount + inc YL + sts usbSofCount, YL +#endif /* USB_COUNT_SOF */ +#ifdef USB_SOF_HOOK + USB_SOF_HOOK +#endif + rjmp sofError +;------------------------------------------------------------------------------ +; {3, 5} after falling D- edge, average delay: 4 cycles [we want 5 for +; center sampling] +; we have 1 bit time for setup purposes, then sample again. +; Numbers in brackets are cycles from center of first sync (double K) +; bit after the instruction +;------------------------------------------------------------------------------ +foundK: ;- [02] + lds YL, usbInputBufOffset;2 [03+04] tx loop + push YH ;2 [05+06] + clr YH ;1 [07] + subi YL, lo8(-(usbRxBuf)) ;1 [08] [rx loop init] + sbci YH, hi8(-(usbRxBuf)) ;1 [09] [rx loop init] + push shift ;2 [10+11] + ser shift ;1 [12] + sbis USBIN, USBMINUS ;1 [-1] [13] <--sample:we want two bits K (sample 1 cycle too early) + rjmp haveTwoBitsK ;2 [00] [14] + pop shift ;2 [15+16] undo the push from before + pop YH ;2 [17+18] undo the push from before + rjmp waitForK ;2 [19+20] this was not the end of sync, retry +; The entire loop from waitForK until rjmp waitForK above must not exceed two +; bit times (= 20 cycles). + +;---------------------------------------------------------------------------- +; push more registers and initialize values while we sample the first bits: +;---------------------------------------------------------------------------- +haveTwoBitsK: ;- [01] + push x1 ;2 [02+03] + push x2 ;2 [04+05] + push x3 ;2 [06+07] + push bitcnt ;2 [08+09] + in x1, USBIN ;1 [00] [10] <-- sample bit 0 + bst x1, USBMINUS ;1 [01] + bld shift, 0 ;1 [02] + push cnt ;2 [03+04] + ldi cnt, USB_BUFSIZE ;1 [05] + push x4 ;2 [06+07] tx loop + rjmp rxLoop ;2 [08] +;---------------------------------------------------------------------------- +; Receiver loop (numbers in brackets are cycles within byte after instr) +;---------------------------------------------------------------------------- +unstuff0: ;- [07] (branch taken) + andi x3, ~0x01 ;1 [08] + mov x1, x2 ;1 [09] x2 contains last sampled (stuffed) bit + in x2, USBIN ;1 [00] [10] <-- sample bit 1 again + andi x2, USBMASK ;1 [01] + breq se0Hop ;1 [02] SE0 check for bit 1 + ori shift, 0x01 ;1 [03] 0b00000001 + nop ;1 [04] + rjmp didUnstuff0 ;2 [05] +;----------------------------------------------------- +unstuff1: ;- [05] (branch taken) + mov x2, x1 ;1 [06] x1 contains last sampled (stuffed) bit + andi x3, ~0x02 ;1 [07] + ori shift, 0x02 ;1 [08] 0b00000010 + nop ;1 [09] + in x1, USBIN ;1 [00] [10] <-- sample bit 2 again + andi x1, USBMASK ;1 [01] + breq se0Hop ;1 [02] SE0 check for bit 2 + rjmp didUnstuff1 ;2 [03] +;----------------------------------------------------- +unstuff2: ;- [05] (branch taken) + andi x3, ~0x04 ;1 [06] + ori shift, 0x04 ;1 [07] 0b00000100 + mov x1, x2 ;1 [08] x2 contains last sampled (stuffed) bit + nop ;1 [09] + in x2, USBIN ;1 [00] [10] <-- sample bit 3 + andi x2, USBMASK ;1 [01] + breq se0Hop ;1 [02] SE0 check for bit 3 + rjmp didUnstuff2 ;2 [03] +;----------------------------------------------------- +unstuff3: ;- [00] [10] (branch taken) + in x2, USBIN ;1 [01] [11] <-- sample stuffed bit 3 one cycle too late + andi x2, USBMASK ;1 [02] + breq se0Hop ;1 [03] SE0 check for stuffed bit 3 + andi x3, ~0x08 ;1 [04] + ori shift, 0x08 ;1 [05] 0b00001000 + rjmp didUnstuff3 ;2 [06] +;---------------------------------------------------------------------------- +; extra jobs done during bit interval: +; +; bit 0: store, clear [SE0 is unreliable here due to bit dribbling in hubs], +; overflow check, jump to the head of rxLoop +; bit 1: SE0 check +; bit 2: SE0 check, recovery from delay [bit 0 tasks took too long] +; bit 3: SE0 check, recovery from delay [bit 0 tasks took too long] +; bit 4: SE0 check, none +; bit 5: SE0 check, none +; bit 6: SE0 check, none +; bit 7: SE0 check, reconstruct: x3 is 0 at bit locations we changed, 1 at others +;---------------------------------------------------------------------------- +rxLoop: ;- [09] + in x2, USBIN ;1 [00] [10] <-- sample bit 1 (or possibly bit 0 stuffed) + andi x2, USBMASK ;1 [01] + brne SkipSe0Hop ;1 [02] +se0Hop: ;- [02] + rjmp se0 ;2 [03] SE0 check for bit 1 +SkipSe0Hop: ;- [03] + ser x3 ;1 [04] + andi shift, 0xf9 ;1 [05] 0b11111001 + breq unstuff0 ;1 [06] +didUnstuff0: ;- [06] + eor x1, x2 ;1 [07] + bst x1, USBMINUS ;1 [08] + bld shift, 1 ;1 [09] + in x1, USBIN ;1 [00] [10] <-- sample bit 2 (or possibly bit 1 stuffed) + andi x1, USBMASK ;1 [01] + breq se0Hop ;1 [02] SE0 check for bit 2 + andi shift, 0xf3 ;1 [03] 0b11110011 + breq unstuff1 ;1 [04] do remaining work for bit 1 +didUnstuff1: ;- [04] + eor x2, x1 ;1 [05] + bst x2, USBMINUS ;1 [06] + bld shift, 2 ;1 [07] + nop2 ;2 [08+09] + in x2, USBIN ;1 [00] [10] <-- sample bit 3 (or possibly bit 2 stuffed) + andi x2, USBMASK ;1 [01] + breq se0Hop ;1 [02] SE0 check for bit 3 + andi shift, 0xe7 ;1 [03] 0b11100111 + breq unstuff2 ;1 [04] +didUnstuff2: ;- [04] + eor x1, x2 ;1 [05] + bst x1, USBMINUS ;1 [06] + bld shift, 3 ;1 [07] +didUnstuff3: ;- [07] + andi shift, 0xcf ;1 [08] 0b11001111 + breq unstuff3 ;1 [09] + in x1, USBIN ;1 [00] [10] <-- sample bit 4 + andi x1, USBMASK ;1 [01] + breq se0Hop ;1 [02] SE0 check for bit 4 + eor x2, x1 ;1 [03] + bst x2, USBMINUS ;1 [04] + bld shift, 4 ;1 [05] +didUnstuff4: ;- [05] + andi shift, 0x9f ;1 [06] 0b10011111 + breq unstuff4 ;1 [07] + nop2 ;2 [08+09] + in x2, USBIN ;1 [00] [10] <-- sample bit 5 + andi x2, USBMASK ;1 [01] + breq se0 ;1 [02] SE0 check for bit 5 + eor x1, x2 ;1 [03] + bst x1, USBMINUS ;1 [04] + bld shift, 5 ;1 [05] +didUnstuff5: ;- [05] + andi shift, 0x3f ;1 [06] 0b00111111 + breq unstuff5 ;1 [07] + nop2 ;2 [08+09] + in x1, USBIN ;1 [00] [10] <-- sample bit 6 + andi x1, USBMASK ;1 [01] + breq se0 ;1 [02] SE0 check for bit 6 + eor x2, x1 ;1 [03] + bst x2, USBMINUS ;1 [04] + bld shift, 6 ;1 [05] +didUnstuff6: ;- [05] + cpi shift, 0x02 ;1 [06] 0b00000010 + brlo unstuff6 ;1 [07] + nop2 ;2 [08+09] + in x2, USBIN ;1 [00] [10] <-- sample bit 7 + andi x2, USBMASK ;1 [01] + breq se0 ;1 [02] SE0 check for bit 7 + eor x1, x2 ;1 [03] + bst x1, USBMINUS ;1 [04] + bld shift, 7 ;1 [05] +didUnstuff7: ;- [05] + cpi shift, 0x04 ;1 [06] 0b00000100 + brlo unstuff7 ;1 [07] + eor x3, shift ;1 [08] reconstruct: x3 is 0 at bit locations we changed, 1 at others + nop ;1 [09] + in x1, USBIN ;1 [00] [10] <-- sample bit 0 + st y+, x3 ;2 [01+02] store data + eor x2, x1 ;1 [03] + bst x2, USBMINUS ;1 [04] + bld shift, 0 ;1 [05] + subi cnt, 1 ;1 [06] + brcs overflow ;1 [07] + rjmp rxLoop ;2 [08] +;----------------------------------------------------- +unstuff4: ;- [08] + andi x3, ~0x10 ;1 [09] + in x1, USBIN ;1 [00] [10] <-- sample stuffed bit 4 + andi x1, USBMASK ;1 [01] + breq se0 ;1 [02] SE0 check for stuffed bit 4 + ori shift, 0x10 ;1 [03] + rjmp didUnstuff4 ;2 [04] +;----------------------------------------------------- +unstuff5: ;- [08] + ori shift, 0x20 ;1 [09] + in x2, USBIN ;1 [00] [10] <-- sample stuffed bit 5 + andi x2, USBMASK ;1 [01] + breq se0 ;1 [02] SE0 check for stuffed bit 5 + andi x3, ~0x20 ;1 [03] + rjmp didUnstuff5 ;2 [04] +;----------------------------------------------------- +unstuff6: ;- [08] + andi x3, ~0x40 ;1 [09] + in x1, USBIN ;1 [00] [10] <-- sample stuffed bit 6 + andi x1, USBMASK ;1 [01] + breq se0 ;1 [02] SE0 check for stuffed bit 6 + ori shift, 0x40 ;1 [03] + rjmp didUnstuff6 ;2 [04] +;----------------------------------------------------- +unstuff7: ;- [08] + andi x3, ~0x80 ;1 [09] + in x2, USBIN ;1 [00] [10] <-- sample stuffed bit 7 + andi x2, USBMASK ;1 [01] + breq se0 ;1 [02] SE0 check for stuffed bit 7 + ori shift, 0x80 ;1 [03] + rjmp didUnstuff7 ;2 [04] + +macro POP_STANDARD ; 16 cycles + pop x4 + pop cnt + pop bitcnt + pop x3 + pop x2 + pop x1 + pop shift + pop YH + endm +macro POP_RETI ; 5 cycles + pop YL + out SREG, YL + pop YL + endm + +#include "asmcommon.inc" + +;--------------------------------------------------------------------------- +; USB spec says: +; idle = J +; J = (D+ = 0), (D- = 1) +; K = (D+ = 1), (D- = 0) +; Spec allows 7.5 bit times from EOP to SOP for replies +;--------------------------------------------------------------------------- +bitstuffN: ;- [04] + eor x1, x4 ;1 [05] + clr x2 ;1 [06] + nop ;1 [07] + rjmp didStuffN ;1 [08] +;--------------------------------------------------------------------------- +bitstuff6: ;- [04] + eor x1, x4 ;1 [05] + clr x2 ;1 [06] + rjmp didStuff6 ;1 [07] +;--------------------------------------------------------------------------- +bitstuff7: ;- [02] + eor x1, x4 ;1 [03] + clr x2 ;1 [06] + nop ;1 [05] + rjmp didStuff7 ;1 [06] +;--------------------------------------------------------------------------- +sendNakAndReti: ;- [-19] + ldi x3, USBPID_NAK ;1 [-18] + rjmp sendX3AndReti ;1 [-17] +;--------------------------------------------------------------------------- +sendAckAndReti: ;- [-17] + ldi cnt, USBPID_ACK ;1 [-16] +sendCntAndReti: ;- [-16] + mov x3, cnt ;1 [-15] +sendX3AndReti: ;- [-15] + ldi YL, 20 ;1 [-14] x3==r20 address is 20 + ldi YH, 0 ;1 [-13] + ldi cnt, 2 ;1 [-12] +; rjmp usbSendAndReti fallthrough +;--------------------------------------------------------------------------- +;usbSend: +;pointer to data in 'Y' +;number of bytes in 'cnt' -- including sync byte [range 2 ... 12] +;uses: x1...x4, btcnt, shift, cnt, Y +;Numbers in brackets are time since first bit of sync pattern is sent +;We need not to match the transfer rate exactly because the spec demands +;only 1.5% precision anyway. +usbSendAndReti: ;- [-13] 13 cycles until SOP + in x2, USBDDR ;1 [-12] + ori x2, USBMASK ;1 [-11] + sbi USBOUT, USBMINUS ;2 [-09-10] prepare idle state; D+ and D- must have been 0 (no pullups) + in x1, USBOUT ;1 [-08] port mirror for tx loop + out USBDDR, x2 ;1 [-07] <- acquire bus + ; need not init x2 (bitstuff history) because sync starts with 0 + ldi x4, USBMASK ;1 [-06] exor mask + ldi shift, 0x80 ;1 [-05] sync byte is first byte sent + ldi bitcnt, 6 ;1 [-04] +txBitLoop: ;- [-04] [06] + sbrs shift, 0 ;1 [-03] [07] + eor x1, x4 ;1 [-02] [08] + ror shift ;1 [-01] [09] +didStuffN: ;- [09] + out USBOUT, x1 ;1 [00] [10] <-- out N + ror x2 ;1 [01] + cpi x2, 0xfc ;1 [02] + brcc bitstuffN ;1 [03] + dec bitcnt ;1 [04] + brne txBitLoop ;1 [05] + sbrs shift, 0 ;1 [06] + eor x1, x4 ;1 [07] + ror shift ;1 [08] +didStuff6: ;- [08] + nop ;1 [09] + out USBOUT, x1 ;1 [00] [10] <-- out 6 + ror x2 ;1 [01] + cpi x2, 0xfc ;1 [02] + brcc bitstuff6 ;1 [03] + sbrs shift, 0 ;1 [04] + eor x1, x4 ;1 [05] + ror shift ;1 [06] + ror x2 ;1 [07] +didStuff7: ;- [07] + ldi bitcnt, 6 ;1 [08] + cpi x2, 0xfc ;1 [09] + out USBOUT, x1 ;1 [00] [10] <-- out 7 + brcc bitstuff7 ;1 [01] + ld shift, y+ ;2 [02+03] + dec cnt ;1 [04] + brne txBitLoop ;1 [05] +makeSE0: + cbr x1, USBMASK ;1 [06] prepare SE0 [spec says EOP may be 19 to 23 cycles] + lds x2, usbNewDeviceAddr;2 [07+08] + lsl x2 ;1 [09] we compare with left shifted address +;2006-03-06: moved transfer of new address to usbDeviceAddr from C-Code to asm: +;set address only after data packet was sent, not after handshake + out USBOUT, x1 ;1 [00] [10] <-- out SE0-- from now 2 bits==20 cycl. until bus idle + subi YL, 20 + 2 ;1 [01] Only assign address on data packets, not ACK/NAK in x3 + sbci YH, 0 ;1 [02] + breq skipAddrAssign ;1 [03] + sts usbDeviceAddr, x2 ;2 [04+05] if not skipped: SE0 is one cycle longer +;---------------------------------------------------------------------------- +;end of usbDeviceAddress transfer +skipAddrAssign: ;- [03/04] + ldi x2, 1< 10.6666666 cycles per bit, 85.333333333 cycles per byte +; Numbers in brackets are clocks counted from center of last sync bit +; when instruction starts + +USB_INTR_VECTOR: +;order of registers pushed: YL, SREG YH, [sofError], bitcnt, shift, x1, x2, x3, x4, cnt + push YL ;[-25] push only what is necessary to sync with edge ASAP + in YL, SREG ;[-23] + push YL ;[-22] + push YH ;[-20] +;---------------------------------------------------------------------------- +; Synchronize with sync pattern: +;---------------------------------------------------------------------------- +;sync byte (D-) pattern LSb to MSb: 01010100 [1 = idle = J, 0 = K] +;sync up with J to K edge during sync pattern -- use fastest possible loops +;The first part waits at most 1 bit long since we must be in sync pattern. +;YL is guarenteed to be < 0x80 because I flag is clear. When we jump to +;waitForJ, ensure that this prerequisite is met. +waitForJ: + inc YL + sbis USBIN, USBMINUS + brne waitForJ ; just make sure we have ANY timeout +waitForK: +;The following code results in a sampling window of < 1/4 bit which meets the spec. + sbis USBIN, USBMINUS ;[-15] + rjmp foundK ;[-14] + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK +#if USB_COUNT_SOF + lds YL, usbSofCount + inc YL + sts usbSofCount, YL +#endif /* USB_COUNT_SOF */ +#ifdef USB_SOF_HOOK + USB_SOF_HOOK +#endif + rjmp sofError +foundK: ;[-12] +;{3, 5} after falling D- edge, average delay: 4 cycles [we want 5 for center sampling] +;we have 1 bit time for setup purposes, then sample again. Numbers in brackets +;are cycles from center of first sync (double K) bit after the instruction + push bitcnt ;[-12] +; [---] ;[-11] + lds YL, usbInputBufOffset;[-10] +; [---] ;[-9] + clr YH ;[-8] + subi YL, lo8(-(usbRxBuf));[-7] [rx loop init] + sbci YH, hi8(-(usbRxBuf));[-6] [rx loop init] + push shift ;[-5] +; [---] ;[-4] + ldi bitcnt, 0x55 ;[-3] [rx loop init] + sbis USBIN, USBMINUS ;[-2] we want two bits K (sample 2 cycles too early) + rjmp haveTwoBitsK ;[-1] + pop shift ;[0] undo the push from before + pop bitcnt ;[2] undo the push from before + rjmp waitForK ;[4] this was not the end of sync, retry +; The entire loop from waitForK until rjmp waitForK above must not exceed two +; bit times (= 21 cycles). + +;---------------------------------------------------------------------------- +; push more registers and initialize values while we sample the first bits: +;---------------------------------------------------------------------------- +haveTwoBitsK: + push x1 ;[1] + push x2 ;[3] + push x3 ;[5] + ldi shift, 0 ;[7] + ldi x3, 1<<4 ;[8] [rx loop init] first sample is inverse bit, compensate that + push x4 ;[9] == leap + + in x1, USBIN ;[11] <-- sample bit 0 + andi x1, USBMASK ;[12] + bst x1, USBMINUS ;[13] + bld shift, 7 ;[14] + push cnt ;[15] + ldi leap, 0 ;[17] [rx loop init] + ldi cnt, USB_BUFSIZE;[18] [rx loop init] + rjmp rxbit1 ;[19] arrives at [21] + +;---------------------------------------------------------------------------- +; Receiver loop (numbers in brackets are cycles within byte after instr) +;---------------------------------------------------------------------------- + +; duration of unstuffing code should be 10.66666667 cycles. We adjust "leap" +; accordingly to approximate this value in the long run. + +unstuff6: + andi x2, USBMASK ;[03] + ori x3, 1<<6 ;[04] will not be shifted any more + andi shift, ~0x80;[05] + mov x1, x2 ;[06] sampled bit 7 is actually re-sampled bit 6 + subi leap, -1 ;[07] total duration = 11 bits -> subtract 1/3 + rjmp didUnstuff6 ;[08] + +unstuff7: + ori x3, 1<<7 ;[09] will not be shifted any more + in x2, USBIN ;[00] [10] re-sample bit 7 + andi x2, USBMASK ;[01] + andi shift, ~0x80;[02] + subi leap, 2 ;[03] total duration = 10 bits -> add 1/3 + rjmp didUnstuff7 ;[04] + +unstuffEven: + ori x3, 1<<6 ;[09] will be shifted right 6 times for bit 0 + in x1, USBIN ;[00] [10] + andi shift, ~0x80;[01] + andi x1, USBMASK ;[02] + breq se0 ;[03] + subi leap, -1 ;[04] total duration = 11 bits -> subtract 1/3 + nop2 ;[05] + rjmp didUnstuffE ;[06] + +unstuffOdd: + ori x3, 1<<5 ;[09] will be shifted right 4 times for bit 1 + in x2, USBIN ;[00] [10] + andi shift, ~0x80;[01] + andi x2, USBMASK ;[02] + breq se0 ;[03] + subi leap, -1 ;[04] total duration = 11 bits -> subtract 1/3 + nop2 ;[05] + rjmp didUnstuffO ;[06] + +rxByteLoop: + andi x1, USBMASK ;[03] + eor x2, x1 ;[04] + subi leap, 1 ;[05] + brpl skipLeap ;[06] + subi leap, -3 ;1 one leap cycle every 3rd byte -> 85 + 1/3 cycles per byte + nop ;1 +skipLeap: + subi x2, 1 ;[08] + ror shift ;[09] +didUnstuff6: + cpi shift, 0xfc ;[10] + in x2, USBIN ;[00] [11] <-- sample bit 7 + brcc unstuff6 ;[01] + andi x2, USBMASK ;[02] + eor x1, x2 ;[03] + subi x1, 1 ;[04] + ror shift ;[05] +didUnstuff7: + cpi shift, 0xfc ;[06] + brcc unstuff7 ;[07] + eor x3, shift ;[08] reconstruct: x3 is 1 at bit locations we changed, 0 at others + st y+, x3 ;[09] store data +rxBitLoop: + in x1, USBIN ;[00] [11] <-- sample bit 0/2/4 + andi x1, USBMASK ;[01] + eor x2, x1 ;[02] + andi x3, 0x3f ;[03] topmost two bits reserved for 6 and 7 + subi x2, 1 ;[04] + ror shift ;[05] + cpi shift, 0xfc ;[06] + brcc unstuffEven ;[07] +didUnstuffE: + lsr x3 ;[08] + lsr x3 ;[09] +rxbit1: + in x2, USBIN ;[00] [10] <-- sample bit 1/3/5 + andi x2, USBMASK ;[01] + breq se0 ;[02] + eor x1, x2 ;[03] + subi x1, 1 ;[04] + ror shift ;[05] + cpi shift, 0xfc ;[06] + brcc unstuffOdd ;[07] +didUnstuffO: + subi bitcnt, 0xab;[08] == addi 0x55, 0x55 = 0x100/3 + brcs rxBitLoop ;[09] + + subi cnt, 1 ;[10] + in x1, USBIN ;[00] [11] <-- sample bit 6 + brcc rxByteLoop ;[01] + rjmp overflow + +macro POP_STANDARD ; 14 cycles + pop cnt + pop x4 + pop x3 + pop x2 + pop x1 + pop shift + pop bitcnt + endm +macro POP_RETI ; 7 cycles + pop YH + pop YL + out SREG, YL + pop YL + endm + +#include "asmcommon.inc" + +; USB spec says: +; idle = J +; J = (D+ = 0), (D- = 1) +; K = (D+ = 1), (D- = 0) +; Spec allows 7.5 bit times from EOP to SOP for replies + +bitstuffN: + eor x1, x4 ;[5] + ldi x2, 0 ;[6] + nop2 ;[7] + nop ;[9] + out USBOUT, x1 ;[10] <-- out + rjmp didStuffN ;[0] + +bitstuff6: + eor x1, x4 ;[5] + ldi x2, 0 ;[6] Carry is zero due to brcc + rol shift ;[7] compensate for ror shift at branch destination + rjmp didStuff6 ;[8] + +bitstuff7: + ldi x2, 0 ;[2] Carry is zero due to brcc + rjmp didStuff7 ;[3] + + +sendNakAndReti: + ldi x3, USBPID_NAK ;[-18] + rjmp sendX3AndReti ;[-17] +sendAckAndReti: + ldi cnt, USBPID_ACK ;[-17] +sendCntAndReti: + mov x3, cnt ;[-16] +sendX3AndReti: + ldi YL, 20 ;[-15] x3==r20 address is 20 + ldi YH, 0 ;[-14] + ldi cnt, 2 ;[-13] +; rjmp usbSendAndReti fallthrough + +;usbSend: +;pointer to data in 'Y' +;number of bytes in 'cnt' -- including sync byte [range 2 ... 12] +;uses: x1...x4, btcnt, shift, cnt, Y +;Numbers in brackets are time since first bit of sync pattern is sent +;We don't match the transfer rate exactly (don't insert leap cycles every third +;byte) because the spec demands only 1.5% precision anyway. +usbSendAndReti: ; 12 cycles until SOP + in x2, USBDDR ;[-12] + ori x2, USBMASK ;[-11] + sbi USBOUT, USBMINUS;[-10] prepare idle state; D+ and D- must have been 0 (no pullups) + in x1, USBOUT ;[-8] port mirror for tx loop + out USBDDR, x2 ;[-7] <- acquire bus +; need not init x2 (bitstuff history) because sync starts with 0 + ldi x4, USBMASK ;[-6] exor mask + ldi shift, 0x80 ;[-5] sync byte is first byte sent +txByteLoop: + ldi bitcnt, 0x35 ;[-4] [6] binary 0011 0101 +txBitLoop: + sbrs shift, 0 ;[-3] [7] + eor x1, x4 ;[-2] [8] + out USBOUT, x1 ;[-1] [9] <-- out N + ror shift ;[0] [10] + ror x2 ;[1] +didStuffN: + cpi x2, 0xfc ;[2] + brcc bitstuffN ;[3] + lsr bitcnt ;[4] + brcc txBitLoop ;[5] + brne txBitLoop ;[6] + + sbrs shift, 0 ;[7] + eor x1, x4 ;[8] +didStuff6: + out USBOUT, x1 ;[-1] [9] <-- out 6 + ror shift ;[0] [10] + ror x2 ;[1] + cpi x2, 0xfc ;[2] + brcc bitstuff6 ;[3] + ror shift ;[4] +didStuff7: + ror x2 ;[5] + sbrs x2, 7 ;[6] + eor x1, x4 ;[7] + nop ;[8] + cpi x2, 0xfc ;[9] + out USBOUT, x1 ;[-1][10] <-- out 7 + brcc bitstuff7 ;[0] [11] + ld shift, y+ ;[1] + dec cnt ;[3] + brne txByteLoop ;[4] +;make SE0: + cbr x1, USBMASK ;[5] prepare SE0 [spec says EOP may be 21 to 25 cycles] + lds x2, usbNewDeviceAddr;[6] + lsl x2 ;[8] we compare with left shifted address + subi YL, 20 + 2 ;[9] Only assign address on data packets, not ACK/NAK in x3 + sbci YH, 0 ;[10] + out USBOUT, x1 ;[11] <-- out SE0 -- from now 2 bits = 22 cycles until bus idle +;2006-03-06: moved transfer of new address to usbDeviceAddr from C-Code to asm: +;set address only after data packet was sent, not after handshake + breq skipAddrAssign ;[0] + sts usbDeviceAddr, x2; if not skipped: SE0 is one cycle longer +skipAddrAssign: +;end of usbDeviceAddress transfer + ldi x2, 1< max 52 cycles interrupt disable +;max stack usage: [ret(2), r0, SREG, YL, YH, shift, x1, x2, x3, x4, cnt] = 12 bytes +;nominal frequency: 16.5 MHz -> 11 cycles per bit +; 16.3125 MHz < F_CPU < 16.6875 MHz (+/- 1.1%) +; Numbers in brackets are clocks counted from center of last sync bit +; when instruction starts + + +USB_INTR_VECTOR: +;order of registers pushed: YL, SREG [sofError], r0, YH, shift, x1, x2, x3, x4, cnt + push YL ;[-23] push only what is necessary to sync with edge ASAP + in YL, SREG ;[-21] + push YL ;[-20] +;---------------------------------------------------------------------------- +; Synchronize with sync pattern: +;---------------------------------------------------------------------------- +;sync byte (D-) pattern LSb to MSb: 01010100 [1 = idle = J, 0 = K] +;sync up with J to K edge during sync pattern -- use fastest possible loops +;The first part waits at most 1 bit long since we must be in sync pattern. +;YL is guarenteed to be < 0x80 because I flag is clear. When we jump to +;waitForJ, ensure that this prerequisite is met. +waitForJ: + inc YL + sbis USBIN, USBMINUS + brne waitForJ ; just make sure we have ANY timeout +waitForK: +;The following code results in a sampling window of < 1/4 bit which meets the spec. + sbis USBIN, USBMINUS ;[-15] + rjmp foundK ;[-14] + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK +#if USB_COUNT_SOF + lds YL, usbSofCount + inc YL + sts usbSofCount, YL +#endif /* USB_COUNT_SOF */ +#ifdef USB_SOF_HOOK + USB_SOF_HOOK +#endif + rjmp sofError +foundK: ;[-12] +;{3, 5} after falling D- edge, average delay: 4 cycles [we want 5 for center sampling] +;we have 1 bit time for setup purposes, then sample again. Numbers in brackets +;are cycles from center of first sync (double K) bit after the instruction + push r0 ;[-12] +; [---] ;[-11] + push YH ;[-10] +; [---] ;[-9] + lds YL, usbInputBufOffset;[-8] +; [---] ;[-7] + clr YH ;[-6] + subi YL, lo8(-(usbRxBuf));[-5] [rx loop init] + sbci YH, hi8(-(usbRxBuf));[-4] [rx loop init] + mov r0, x2 ;[-3] [rx loop init] + sbis USBIN, USBMINUS ;[-2] we want two bits K (sample 2 cycles too early) + rjmp haveTwoBitsK ;[-1] + pop YH ;[0] undo the pushes from before + pop r0 ;[2] + rjmp waitForK ;[4] this was not the end of sync, retry +; The entire loop from waitForK until rjmp waitForK above must not exceed two +; bit times (= 22 cycles). + +;---------------------------------------------------------------------------- +; push more registers and initialize values while we sample the first bits: +;---------------------------------------------------------------------------- +haveTwoBitsK: ;[1] + push shift ;[1] + push x1 ;[3] + push x2 ;[5] + push x3 ;[7] + ldi shift, 0xff ;[9] [rx loop init] + ori x3, 0xff ;[10] [rx loop init] == ser x3, clear zero flag + + in x1, USBIN ;[11] <-- sample bit 0 + bst x1, USBMINUS ;[12] + bld shift, 0 ;[13] + push x4 ;[14] == phase +; [---] ;[15] + push cnt ;[16] +; [---] ;[17] + ldi phase, 0 ;[18] [rx loop init] + ldi cnt, USB_BUFSIZE;[19] [rx loop init] + rjmp rxbit1 ;[20] +; [---] ;[21] + +;---------------------------------------------------------------------------- +; Receiver loop (numbers in brackets are cycles within byte after instr) +;---------------------------------------------------------------------------- +/* +byte oriented operations done during loop: +bit 0: store data +bit 1: SE0 check +bit 2: overflow check +bit 3: catch up +bit 4: rjmp to achieve conditional jump range +bit 5: PLL +bit 6: catch up +bit 7: jump, fixup bitstuff +; 87 [+ 2] cycles +------------------------------------------------------------------ +*/ +continueWithBit5: + in x2, USBIN ;[055] <-- bit 5 + eor r0, x2 ;[056] + or phase, r0 ;[057] + sbrc phase, USBMINUS ;[058] + lpm ;[059] optional nop3; modifies r0 + in phase, USBIN ;[060] <-- phase + eor x1, x2 ;[061] + bst x1, USBMINUS ;[062] + bld shift, 5 ;[063] + andi shift, 0x3f ;[064] + in x1, USBIN ;[065] <-- bit 6 + breq unstuff5 ;[066] *** unstuff escape + eor phase, x1 ;[067] + eor x2, x1 ;[068] + bst x2, USBMINUS ;[069] + bld shift, 6 ;[070] +didUnstuff6: ;[ ] + in r0, USBIN ;[071] <-- phase + cpi shift, 0x02 ;[072] + brlo unstuff6 ;[073] *** unstuff escape +didUnstuff5: ;[ ] + nop2 ;[074] +; [---] ;[075] + in x2, USBIN ;[076] <-- bit 7 + eor x1, x2 ;[077] + bst x1, USBMINUS ;[078] + bld shift, 7 ;[079] +didUnstuff7: ;[ ] + eor r0, x2 ;[080] + or phase, r0 ;[081] + in r0, USBIN ;[082] <-- phase + cpi shift, 0x04 ;[083] + brsh rxLoop ;[084] +; [---] ;[085] +unstuff7: ;[ ] + andi x3, ~0x80 ;[085] + ori shift, 0x80 ;[086] + in x2, USBIN ;[087] <-- sample stuffed bit 7 + nop ;[088] + rjmp didUnstuff7 ;[089] +; [---] ;[090] + ;[080] + +unstuff5: ;[067] + eor phase, x1 ;[068] + andi x3, ~0x20 ;[069] + ori shift, 0x20 ;[070] + in r0, USBIN ;[071] <-- phase + mov x2, x1 ;[072] + nop ;[073] + nop2 ;[074] +; [---] ;[075] + in x1, USBIN ;[076] <-- bit 6 + eor r0, x1 ;[077] + or phase, r0 ;[078] + eor x2, x1 ;[079] + bst x2, USBMINUS ;[080] + bld shift, 6 ;[081] no need to check bitstuffing, we just had one + in r0, USBIN ;[082] <-- phase + rjmp didUnstuff5 ;[083] +; [---] ;[084] + ;[074] + +unstuff6: ;[074] + andi x3, ~0x40 ;[075] + in x1, USBIN ;[076] <-- bit 6 again + ori shift, 0x40 ;[077] + nop2 ;[078] +; [---] ;[079] + rjmp didUnstuff6 ;[080] +; [---] ;[081] + ;[071] + +unstuff0: ;[013] + eor r0, x2 ;[014] + or phase, r0 ;[015] + andi x2, USBMASK ;[016] check for SE0 + in r0, USBIN ;[017] <-- phase + breq didUnstuff0 ;[018] direct jump to se0 would be too long + andi x3, ~0x01 ;[019] + ori shift, 0x01 ;[020] + mov x1, x2 ;[021] mov existing sample + in x2, USBIN ;[022] <-- bit 1 again + rjmp didUnstuff0 ;[023] +; [---] ;[024] + ;[014] + +unstuff1: ;[024] + eor r0, x1 ;[025] + or phase, r0 ;[026] + andi x3, ~0x02 ;[027] + in r0, USBIN ;[028] <-- phase + ori shift, 0x02 ;[029] + mov x2, x1 ;[030] + rjmp didUnstuff1 ;[031] +; [---] ;[032] + ;[022] + +unstuff2: ;[035] + eor r0, x2 ;[036] + or phase, r0 ;[037] + andi x3, ~0x04 ;[038] + in r0, USBIN ;[039] <-- phase + ori shift, 0x04 ;[040] + mov x1, x2 ;[041] + rjmp didUnstuff2 ;[042] +; [---] ;[043] + ;[033] + +unstuff3: ;[043] + in x2, USBIN ;[044] <-- bit 3 again + eor r0, x2 ;[045] + or phase, r0 ;[046] + andi x3, ~0x08 ;[047] + ori shift, 0x08 ;[048] + nop ;[049] + in r0, USBIN ;[050] <-- phase + rjmp didUnstuff3 ;[051] +; [---] ;[052] + ;[042] + +unstuff4: ;[053] + andi x3, ~0x10 ;[054] + in x1, USBIN ;[055] <-- bit 4 again + ori shift, 0x10 ;[056] + rjmp didUnstuff4 ;[057] +; [---] ;[058] + ;[048] + +rxLoop: ;[085] + eor x3, shift ;[086] reconstruct: x3 is 0 at bit locations we changed, 1 at others + in x1, USBIN ;[000] <-- bit 0 + st y+, x3 ;[001] +; [---] ;[002] + eor r0, x1 ;[003] + or phase, r0 ;[004] + eor x2, x1 ;[005] + in r0, USBIN ;[006] <-- phase + ser x3 ;[007] + bst x2, USBMINUS ;[008] + bld shift, 0 ;[009] + andi shift, 0xf9 ;[010] +rxbit1: ;[ ] + in x2, USBIN ;[011] <-- bit 1 + breq unstuff0 ;[012] *** unstuff escape + andi x2, USBMASK ;[013] SE0 check for bit 1 +didUnstuff0: ;[ ] Z only set if we detected SE0 in bitstuff + breq se0 ;[014] + eor r0, x2 ;[015] + or phase, r0 ;[016] + in r0, USBIN ;[017] <-- phase + eor x1, x2 ;[018] + bst x1, USBMINUS ;[019] + bld shift, 1 ;[020] + andi shift, 0xf3 ;[021] +didUnstuff1: ;[ ] + in x1, USBIN ;[022] <-- bit 2 + breq unstuff1 ;[023] *** unstuff escape + eor r0, x1 ;[024] + or phase, r0 ;[025] + subi cnt, 1 ;[026] overflow check + brcs overflow ;[027] + in r0, USBIN ;[028] <-- phase + eor x2, x1 ;[029] + bst x2, USBMINUS ;[030] + bld shift, 2 ;[031] + andi shift, 0xe7 ;[032] +didUnstuff2: ;[ ] + in x2, USBIN ;[033] <-- bit 3 + breq unstuff2 ;[034] *** unstuff escape + eor r0, x2 ;[035] + or phase, r0 ;[036] + eor x1, x2 ;[037] + bst x1, USBMINUS ;[038] + in r0, USBIN ;[039] <-- phase + bld shift, 3 ;[040] + andi shift, 0xcf ;[041] +didUnstuff3: ;[ ] + breq unstuff3 ;[042] *** unstuff escape + nop ;[043] + in x1, USBIN ;[044] <-- bit 4 + eor x2, x1 ;[045] + bst x2, USBMINUS ;[046] + bld shift, 4 ;[047] +didUnstuff4: ;[ ] + eor r0, x1 ;[048] + or phase, r0 ;[049] + in r0, USBIN ;[050] <-- phase + andi shift, 0x9f ;[051] + breq unstuff4 ;[052] *** unstuff escape + rjmp continueWithBit5;[053] +; [---] ;[054] + +macro POP_STANDARD ; 16 cycles + pop cnt + pop x4 + pop x3 + pop x2 + pop x1 + pop shift + pop YH + pop r0 + endm +macro POP_RETI ; 5 cycles + pop YL + out SREG, YL + pop YL + endm + +#include "asmcommon.inc" + + +; USB spec says: +; idle = J +; J = (D+ = 0), (D- = 1) +; K = (D+ = 1), (D- = 0) +; Spec allows 7.5 bit times from EOP to SOP for replies + +bitstuff7: + eor x1, x4 ;[4] + ldi x2, 0 ;[5] + nop2 ;[6] C is zero (brcc) + rjmp didStuff7 ;[8] + +bitstuffN: + eor x1, x4 ;[5] + ldi x2, 0 ;[6] + lpm ;[7] 3 cycle NOP, modifies r0 + out USBOUT, x1 ;[10] <-- out + rjmp didStuffN ;[0] + +#define bitStatus x3 + +sendNakAndReti: + ldi cnt, USBPID_NAK ;[-19] + rjmp sendCntAndReti ;[-18] +sendAckAndReti: + ldi cnt, USBPID_ACK ;[-17] +sendCntAndReti: + mov r0, cnt ;[-16] + ldi YL, 0 ;[-15] R0 address is 0 + ldi YH, 0 ;[-14] + ldi cnt, 2 ;[-13] +; rjmp usbSendAndReti fallthrough + +;usbSend: +;pointer to data in 'Y' +;number of bytes in 'cnt' -- including sync byte [range 2 ... 12] +;uses: x1...x4, shift, cnt, Y +;Numbers in brackets are time since first bit of sync pattern is sent +usbSendAndReti: ; 12 cycles until SOP + in x2, USBDDR ;[-12] + ori x2, USBMASK ;[-11] + sbi USBOUT, USBMINUS;[-10] prepare idle state; D+ and D- must have been 0 (no pullups) + in x1, USBOUT ;[-8] port mirror for tx loop + out USBDDR, x2 ;[-7] <- acquire bus +; need not init x2 (bitstuff history) because sync starts with 0 + ldi x4, USBMASK ;[-6] exor mask + ldi shift, 0x80 ;[-5] sync byte is first byte sent + ldi bitStatus, 0xff ;[-4] init bit loop counter, works for up to 12 bytes +byteloop: +bitloop: + sbrs shift, 0 ;[8] [-3] + eor x1, x4 ;[9] [-2] + out USBOUT, x1 ;[10] [-1] <-- out + ror shift ;[0] + ror x2 ;[1] +didStuffN: + cpi x2, 0xfc ;[2] + brcc bitstuffN ;[3] + nop ;[4] + subi bitStatus, 37 ;[5] 256 / 7 ~=~ 37 + brcc bitloop ;[6] when we leave the loop, bitStatus has almost the initial value + sbrs shift, 0 ;[7] + eor x1, x4 ;[8] + ror shift ;[9] +didStuff7: + out USBOUT, x1 ;[10] <-- out + ror x2 ;[0] + cpi x2, 0xfc ;[1] + brcc bitstuff7 ;[2] + ld shift, y+ ;[3] + dec cnt ;[5] + brne byteloop ;[6] +;make SE0: + cbr x1, USBMASK ;[7] prepare SE0 [spec says EOP may be 21 to 25 cycles] + lds x2, usbNewDeviceAddr;[8] + lsl x2 ;[10] we compare with left shifted address + out USBOUT, x1 ;[11] <-- out SE0 -- from now 2 bits = 22 cycles until bus idle +;2006-03-06: moved transfer of new address to usbDeviceAddr from C-Code to asm: +;set address only after data packet was sent, not after handshake + subi YL, 2 ;[0] Only assign address on data packets, not ACK/NAK in r0 + sbci YH, 0 ;[1] + breq skipAddrAssign ;[2] + sts usbDeviceAddr, x2; if not skipped: SE0 is one cycle longer +skipAddrAssign: +;end of usbDeviceAddress transfer + ldi x2, 1< 12 cycles per bit +; Numbers in brackets are clocks counted from center of last sync bit +; when instruction starts +;register use in receive loop to receive the data bytes: +; shift assembles the byte currently being received +; x1 holds the D+ and D- line state +; x2 holds the previous line state +; cnt holds the number of bytes left in the receive buffer +; x3 holds the higher crc byte (see algorithm below) +; x4 is used as temporary register for the crc algorithm +; x5 is used for unstuffing: when unstuffing the last received bit is inverted in shift (to prevent further +; unstuffing calls. In the same time the corresponding bit in x5 is cleared to mark the bit as beening iverted +; zl lower crc value and crc table index +; zh used for crc table accesses + +;-------------------------------------------------------------------------------------------------------------- +; CRC mods: +; table driven crc checker, Z points to table in prog space +; ZL is the lower crc byte, x3 is the higher crc byte +; x4 is used as temp register to store different results +; the initialization of the crc register is not 0xFFFF but 0xFE54. This is because during the receipt of the +; first data byte an virtual zero data byte is added to the crc register, this results in the correct initial +; value of 0xFFFF at beginning of the second data byte before the first data byte is added to the crc. +; The magic number 0xFE54 results form the crc table: At tabH[0x54] = 0xFF = crcH (required) and +; tabL[0x54] = 0x01 -> crcL = 0x01 xor 0xFE = 0xFF +; bitcnt is renamed to x5 and is used for unstuffing purposes, the unstuffing works like in the 12MHz version +;-------------------------------------------------------------------------------------------------------------- +; CRC algorithm: +; The crc register is formed by x3 (higher byte) and ZL (lower byte). The algorithm uses a 'reversed' form +; i.e. that it takes the least significant bit first and shifts to the right. So in fact the highest order +; bit seen from the polynomial devision point of view is the lsb of ZL. (If this sounds strange to you i +; propose a research on CRC :-) ) +; Each data byte received is xored to ZL, the lower crc byte. This byte now builds the crc +; table index. Next the new high byte is loaded from the table and stored in x4 until we have space in x3 +; (its destination). +; Afterwards the lower table is loaded from the table and stored in ZL (the old index is overwritten as +; we don't need it anymore. In fact this is a right shift by 8 bits.) Now the old crc high value is xored +; to ZL, this is the second shift of the old crc value. Now x4 (the temp reg) is moved to x3 and the crc +; calculation is done. +; Prior to the first byte the two CRC register have to be initialized to 0xFFFF (as defined in usb spec) +; however the crc engine also runs during the receipt of the first byte, therefore x3 and zl are initialized +; to a magic number which results in a crc value of 0xFFFF after the first complete byte. +; +; This algorithm is split into the extra cycles of the different bits: +; bit7: XOR the received byte to ZL +; bit5: load the new high byte to x4 +; bit6: load the lower xor byte from the table, xor zl and x3, store result in zl (=the new crc low value) +; move x4 (the new high byte) to x3, the crc value is ready +; + + +macro POP_STANDARD ; 18 cycles + pop ZH + pop ZL + pop cnt + pop x5 + pop x3 + pop x2 + pop x1 + pop shift + pop x4 + endm +macro POP_RETI ; 7 cycles + pop YH + pop YL + out SREG, YL + pop YL + endm + +macro CRC_CLEANUP_AND_CHECK + ; the last byte has already been xored with the lower crc byte, we have to do the table lookup and xor + ; x3 is the higher crc byte, zl the lower one + ldi ZH, hi8(usbCrcTableHigh);[+1] get the new high byte from the table + lpm x2, Z ;[+2][+3][+4] + ldi ZH, hi8(usbCrcTableLow);[+5] get the new low xor byte from the table + lpm ZL, Z ;[+6][+7][+8] + eor ZL, x3 ;[+7] xor the old high byte with the value from the table, x2:ZL now holds the crc value + cpi ZL, 0x01 ;[+8] if the crc is ok we have a fixed remainder value of 0xb001 in x2:ZL (see usb spec) + brne ignorePacket ;[+9] detected a crc fault -> paket is ignored and retransmitted by the host + cpi x2, 0xb0 ;[+10] + brne ignorePacket ;[+11] detected a crc fault -> paket is ignored and retransmitted by the host + endm + + +USB_INTR_VECTOR: +;order of registers pushed: YL, SREG, YH, [sofError], x4, shift, x1, x2, x3, x5, cnt, ZL, ZH + push YL ;[-28] push only what is necessary to sync with edge ASAP + in YL, SREG ;[-26] + push YL ;[-25] + push YH ;[-23] +;---------------------------------------------------------------------------- +; Synchronize with sync pattern: +;---------------------------------------------------------------------------- +;sync byte (D-) pattern LSb to MSb: 01010100 [1 = idle = J, 0 = K] +;sync up with J to K edge during sync pattern -- use fastest possible loops +;The first part waits at most 1 bit long since we must be in sync pattern. +;YL is guarenteed to be < 0x80 because I flag is clear. When we jump to +;waitForJ, ensure that this prerequisite is met. +waitForJ: + inc YL + sbis USBIN, USBMINUS + brne waitForJ ; just make sure we have ANY timeout +waitForK: +;The following code results in a sampling window of < 1/4 bit which meets the spec. + sbis USBIN, USBMINUS ;[-17] + rjmp foundK ;[-16] + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK +#if USB_COUNT_SOF + lds YL, usbSofCount + inc YL + sts usbSofCount, YL +#endif /* USB_COUNT_SOF */ +#ifdef USB_SOF_HOOK + USB_SOF_HOOK +#endif + rjmp sofError +foundK: ;[-15] +;{3, 5} after falling D- edge, average delay: 4 cycles +;bit0 should be at 30 (2.5 bits) for center sampling. Currently at 4 so 26 cylces till bit 0 sample +;use 1 bit time for setup purposes, then sample again. Numbers in brackets +;are cycles from center of first sync (double K) bit after the instruction + push x4 ;[-14] +; [---] ;[-13] + lds YL, usbInputBufOffset;[-12] used to toggle the two usb receive buffers +; [---] ;[-11] + clr YH ;[-10] + subi YL, lo8(-(usbRxBuf));[-9] [rx loop init] + sbci YH, hi8(-(usbRxBuf));[-8] [rx loop init] + push shift ;[-7] +; [---] ;[-6] + ldi shift, 0x80 ;[-5] the last bit is the end of byte marker for the pid receiver loop + clc ;[-4] the carry has to be clear for receipt of pid bit 0 + sbis USBIN, USBMINUS ;[-3] we want two bits K (sample 3 cycles too early) + rjmp haveTwoBitsK ;[-2] + pop shift ;[-1] undo the push from before + pop x4 ;[1] + rjmp waitForK ;[3] this was not the end of sync, retry +; The entire loop from waitForK until rjmp waitForK above must not exceed two +; bit times (= 24 cycles). + +;---------------------------------------------------------------------------- +; push more registers and initialize values while we sample the first bits: +;---------------------------------------------------------------------------- +haveTwoBitsK: + push x1 ;[0] + push x2 ;[2] + push x3 ;[4] crc high byte + ldi x2, 1< jump back and store the byte + ori shift, 0x01 ;[11] invert the last received bit to prevent furhter unstuffing + in x2, USBIN ;[0] we have some free cycles so we could check for bit stuffing errors + andi x5, 0xFE ;[1] mark this bit as inverted (will be corrected before storing shift) + eor x1, x2 ;[2] x1 and x2 have to be different because the stuff bit is always a zero + andi x1, USBMASK ;[3] mask the interesting bits + breq stuffErr ;[4] if the stuff bit is a 1-bit something went wrong + mov x1, x2 ;[5] the next bit expects the last state to be in x1 + rjmp didunstuff0 ;[6] + ;[7] jump delay of rjmp didunstuffX + +unstuff1: ;[11] this is the jump delay of breq unstuffX + in x1, USBIN ;[0] we have some free cycles so we could check for bit stuffing errors + ori shift, 0x02 ;[1] invert the last received bit to prevent furhter unstuffing + andi x5, 0xFD ;[2] mark this bit as inverted (will be corrected before storing shift) + eor x2, x1 ;[3] x1 and x2 have to be different because the stuff bit is always a zero + andi x2, USBMASK ;[4] mask the interesting bits + breq stuffErr ;[5] if the stuff bit is a 1-bit something went wrong + mov x2, x1 ;[6] the next bit expects the last state to be in x2 + nop2 ;[7] + ;[8] + rjmp didunstuff1 ;[9] + ;[10] jump delay of rjmp didunstuffX + +unstuff2: ;[9] this is the jump delay of breq unstuffX + ori shift, 0x04 ;[10] invert the last received bit to prevent furhter unstuffing + andi x5, 0xFB ;[11] mark this bit as inverted (will be corrected before storing shift) + in x2, USBIN ;[0] we have some free cycles so we could check for bit stuffing errors + eor x1, x2 ;[1] x1 and x2 have to be different because the stuff bit is always a zero + andi x1, USBMASK ;[2] mask the interesting bits + breq stuffErr ;[3] if the stuff bit is a 1-bit something went wrong + mov x1, x2 ;[4] the next bit expects the last state to be in x1 + nop2 ;[5] + ;[6] + rjmp didunstuff2 ;[7] + ;[8] jump delay of rjmp didunstuffX + +unstuff3: ;[9] this is the jump delay of breq unstuffX + ori shift, 0x08 ;[10] invert the last received bit to prevent furhter unstuffing + andi x5, 0xF7 ;[11] mark this bit as inverted (will be corrected before storing shift) + in x1, USBIN ;[0] we have some free cycles so we could check for bit stuffing errors + eor x2, x1 ;[1] x1 and x2 have to be different because the stuff bit is always a zero + andi x2, USBMASK ;[2] mask the interesting bits + breq stuffErr ;[3] if the stuff bit is a 1-bit something went wrong + mov x2, x1 ;[4] the next bit expects the last state to be in x2 + nop2 ;[5] + ;[6] + rjmp didunstuff3 ;[7] + ;[8] jump delay of rjmp didunstuffX + + + +; the include has to be here due to branch distance restirctions +#define __USE_CRC__ +#include "asmcommon.inc" + + + +; USB spec says: +; idle = J +; J = (D+ = 0), (D- = 1) +; K = (D+ = 1), (D- = 0) +; Spec allows 7.5 bit times from EOP to SOP for replies +; 7.5 bit times is 90 cycles. ...there is plenty of time + + +sendNakAndReti: + ldi x3, USBPID_NAK ;[-18] + rjmp sendX3AndReti ;[-17] +sendAckAndReti: + ldi cnt, USBPID_ACK ;[-17] +sendCntAndReti: + mov x3, cnt ;[-16] +sendX3AndReti: + ldi YL, 20 ;[-15] x3==r20 address is 20 + ldi YH, 0 ;[-14] + ldi cnt, 2 ;[-13] +; rjmp usbSendAndReti fallthrough + +;usbSend: +;pointer to data in 'Y' +;number of bytes in 'cnt' -- including sync byte [range 2 ... 12] +;uses: x1...x4, btcnt, shift, cnt, Y +;Numbers in brackets are time since first bit of sync pattern is sent + +usbSendAndReti: ; 12 cycles until SOP + in x2, USBDDR ;[-12] + ori x2, USBMASK ;[-11] + sbi USBOUT, USBMINUS;[-10] prepare idle state; D+ and D- must have been 0 (no pullups) + in x1, USBOUT ;[-8] port mirror for tx loop + out USBDDR, x2 ;[-6] <- acquire bus + ldi x2, 0 ;[-6] init x2 (bitstuff history) because sync starts with 0 + ldi x4, USBMASK ;[-5] exor mask + ldi shift, 0x80 ;[-4] sync byte is first byte sent +txByteLoop: + ldi bitcnt, 0x40 ;[-3]=[9] binary 01000000 +txBitLoop: ; the loop sends the first 7 bits of the byte + sbrs shift, 0 ;[-2]=[10] if we have to send a 1 don't change the line state + eor x1, x4 ;[-1]=[11] + out USBOUT, x1 ;[0] + ror shift ;[1] + ror x2 ;[2] transfers the last sent bit to the stuffing history +didStuffN: + nop ;[3] + nop ;[4] + cpi x2, 0xfc ;[5] if we sent six consecutive ones + brcc bitstuffN ;[6] + lsr bitcnt ;[7] + brne txBitLoop ;[8] restart the loop while the 1 is still in the bitcount + +; transmit bit 7 + sbrs shift, 0 ;[9] + eor x1, x4 ;[10] +didStuff7: + ror shift ;[11] + out USBOUT, x1 ;[0] transfer bit 7 to the pins + ror x2 ;[1] move the bit into the stuffing history + cpi x2, 0xfc ;[2] + brcc bitstuff7 ;[3] + ld shift, y+ ;[4] get next byte to transmit + dec cnt ;[5] decrement byte counter + brne txByteLoop ;[7] if we have more bytes start next one + ;[8] branch delay + +;make SE0: + cbr x1, USBMASK ;[8] prepare SE0 [spec says EOP may be 25 to 30 cycles] + lds x2, usbNewDeviceAddr;[9] + lsl x2 ;[11] we compare with left shifted address + out USBOUT, x1 ;[0] <-- out SE0 -- from now 2 bits = 24 cycles until bus idle + subi YL, 20 + 2 ;[1] Only assign address on data packets, not ACK/NAK in x3 + sbci YH, 0 ;[2] +;2006-03-06: moved transfer of new address to usbDeviceAddr from C-Code to asm: +;set address only after data packet was sent, not after handshake + breq skipAddrAssign ;[3] + sts usbDeviceAddr, x2 ; if not skipped: SE0 is one cycle longer +skipAddrAssign: +;end of usbDeviceAddress transfer + ldi x2, 1< +int main (int argc, char **argv) +{ + int i, j; + for (i=0; i<512; i++){ + unsigned short crc = i & 0xff; + for(j=0; j<8; j++) crc = (crc >> 1) ^ ((crc & 1) ? 0xa001 : 0); + if((i & 7) == 0) printf("\n.byte "); + printf("0x%02x, ", (i > 0xff ? (crc >> 8) : crc) & 0xff); + if(i == 255) printf("\n"); + } + return 0; +} + +// Use the following algorithm to compute CRC values: +ushort computeCrc(uchar *msg, uchar msgLen) +{ + uchar i; + ushort crc = 0xffff; + for(i = 0; i < msgLen; i++) + crc = usbCrcTable16[lo8(crc) ^ msg[i]] ^ hi8(crc); + return crc; +} +*/ + +.balign 256 +usbCrcTableLow: +.byte 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41 +.byte 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 +.byte 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 +.byte 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41 +.byte 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 +.byte 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41 +.byte 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41 +.byte 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 +.byte 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 +.byte 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41 +.byte 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41 +.byte 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 +.byte 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41 +.byte 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 +.byte 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 +.byte 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41 +.byte 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 +.byte 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41 +.byte 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41 +.byte 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 +.byte 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41 +.byte 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 +.byte 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 +.byte 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41 +.byte 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41 +.byte 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 +.byte 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 +.byte 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41 +.byte 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 +.byte 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41 +.byte 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41 +.byte 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 + +; .balign 256 +usbCrcTableHigh: +.byte 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2 +.byte 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04 +.byte 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E +.byte 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8 +.byte 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A +.byte 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC +.byte 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6 +.byte 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10 +.byte 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32 +.byte 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4 +.byte 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE +.byte 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38 +.byte 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA +.byte 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C +.byte 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26 +.byte 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0 +.byte 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62 +.byte 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4 +.byte 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE +.byte 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68 +.byte 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA +.byte 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C +.byte 0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76 +.byte 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0 +.byte 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92 +.byte 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54 +.byte 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E +.byte 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98 +.byte 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A +.byte 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C +.byte 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86 +.byte 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 + diff --git a/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm20.inc b/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm20.inc new file mode 100644 index 00000000..5027eddc --- /dev/null +++ b/sparkfun/tiny/bootloaders/attiny/usbdrv/usbdrvasm20.inc @@ -0,0 +1,359 @@ +/* Name: usbdrvasm20.inc + * Project: V-USB, virtual USB port for Atmel's(r) AVR(r) microcontrollers + * Author: Jeroen Benschop + * Based on usbdrvasm16.inc from Christian Starkjohann + * Creation Date: 2008-03-05 + * Tabsize: 4 + * Copyright: (c) 2008 by Jeroen Benschop and OBJECTIVE DEVELOPMENT Software GmbH + * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) + */ + +/* Do not link this file! Link usbdrvasm.S instead, which includes the + * appropriate implementation! + */ + +/* +General Description: +This file is the 20 MHz version of the asssembler part of the USB driver. It +requires a 20 MHz crystal (not a ceramic resonator and not a calibrated RC +oscillator). + +See usbdrv.h for a description of the entire driver. + +Since almost all of this code is timing critical, don't change unless you +really know what you are doing! Many parts require not only a maximum number +of CPU cycles, but even an exact number of cycles! +*/ + +#define leap2 x3 +#ifdef __IAR_SYSTEMS_ASM__ +#define nextInst $+2 +#else +#define nextInst .+0 +#endif + +;max stack usage: [ret(2), YL, SREG, YH, bitcnt, shift, x1, x2, x3, x4, cnt] = 12 bytes +;nominal frequency: 20 MHz -> 13.333333 cycles per bit, 106.666667 cycles per byte +; Numbers in brackets are clocks counted from center of last sync bit +; when instruction starts +;register use in receive loop: +; shift assembles the byte currently being received +; x1 holds the D+ and D- line state +; x2 holds the previous line state +; x4 (leap) is used to add a leap cycle once every three bytes received +; X3 (leap2) is used to add a leap cycle once every three stuff bits received +; bitcnt is used to determine when a stuff bit is due +; cnt holds the number of bytes left in the receive buffer + +USB_INTR_VECTOR: +;order of registers pushed: YL, SREG YH, [sofError], bitcnt, shift, x1, x2, x3, x4, cnt + push YL ;[-28] push only what is necessary to sync with edge ASAP + in YL, SREG ;[-26] + push YL ;[-25] + push YH ;[-23] +;---------------------------------------------------------------------------- +; Synchronize with sync pattern: +;---------------------------------------------------------------------------- +;sync byte (D-) pattern LSb to MSb: 01010100 [1 = idle = J, 0 = K] +;sync up with J to K edge during sync pattern -- use fastest possible loops +;The first part waits at most 1 bit long since we must be in sync pattern. +;YL is guarenteed to be < 0x80 because I flag is clear. When we jump to +;waitForJ, ensure that this prerequisite is met. +waitForJ: + inc YL + sbis USBIN, USBMINUS + brne waitForJ ; just make sure we have ANY timeout +waitForK: +;The following code results in a sampling window of < 1/4 bit which meets the spec. + sbis USBIN, USBMINUS ;[-19] + rjmp foundK ;[-18] + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK +#if USB_COUNT_SOF + lds YL, usbSofCount + inc YL + sts usbSofCount, YL +#endif /* USB_COUNT_SOF */ +#ifdef USB_SOF_HOOK + USB_SOF_HOOK +#endif + rjmp sofError +foundK: ;[-16] +;{3, 5} after falling D- edge, average delay: 4 cycles +;bit0 should be at 34 for center sampling. Currently at 4 so 30 cylces till bit 0 sample +;use 1 bit time for setup purposes, then sample again. Numbers in brackets +;are cycles from center of first sync (double K) bit after the instruction + push bitcnt ;[-16] +; [---] ;[-15] + lds YL, usbInputBufOffset;[-14] +; [---] ;[-13] + clr YH ;[-12] + subi YL, lo8(-(usbRxBuf));[-11] [rx loop init] + sbci YH, hi8(-(usbRxBuf));[-10] [rx loop init] + push shift ;[-9] +; [---] ;[-8] + ldi shift,0x40 ;[-7] set msb to "1" so processing bit7 can be detected + nop2 ;[-6] +; [---] ;[-5] + ldi bitcnt, 5 ;[-4] [rx loop init] + sbis USBIN, USBMINUS ;[-3] we want two bits K (sample 3 cycles too early) + rjmp haveTwoBitsK ;[-2] + pop shift ;[-1] undo the push from before + pop bitcnt ;[1] + rjmp waitForK ;[3] this was not the end of sync, retry +; The entire loop from waitForK until rjmp waitForK above must not exceed two +; bit times (= 27 cycles). + +;---------------------------------------------------------------------------- +; push more registers and initialize values while we sample the first bits: +;---------------------------------------------------------------------------- +haveTwoBitsK: + push x1 ;[0] + push x2 ;[2] + push x3 ;[4] (leap2) + ldi leap2, 0x55 ;[6] add leap cycle on 2nd,5th,8th,... stuff bit + push x4 ;[7] == leap + ldi leap, 0x55 ;[9] skip leap cycle on 2nd,5th,8th,... byte received + push cnt ;[10] + ldi cnt, USB_BUFSIZE ;[12] [rx loop init] + ldi x2, 1< +#ifndef __IAR_SYSTEMS_ASM__ +# include +#endif + +#define __attribute__(arg) /* not supported on IAR */ + +#ifdef __IAR_SYSTEMS_ASM__ +# define __ASSEMBLER__ /* IAR does not define standard macro for asm */ +#endif + +#ifdef __HAS_ELPM__ +# define PROGMEM __farflash +#else +# define PROGMEM __flash +#endif + +#define USB_READ_FLASH(addr) (*(PROGMEM char *)(addr)) + +/* The following definitions are not needed by the driver, but may be of some + * help if you port a gcc based project to IAR. + */ +#define cli() __disable_interrupt() +#define sei() __enable_interrupt() +#define wdt_reset() __watchdog_reset() +#define _BV(x) (1 << (x)) + +/* assembler compatibility macros */ +#define nop2 rjmp $+2 /* jump to next instruction */ +#define XL r26 +#define XH r27 +#define YL r28 +#define YH r29 +#define ZL r30 +#define ZH r31 +#define lo8(x) LOW(x) +#define hi8(x) (((x)>>8) & 0xff) /* not HIGH to allow XLINK to make a proper range check */ + +/* Depending on the device you use, you may get problems with the way usbdrv.h + * handles the differences between devices. Since IAR does not use #defines + * for MCU registers, we can't check for the existence of a particular + * register with an #ifdef. If the autodetection mechanism fails, include + * definitions for the required USB_INTR_* macros in your usbconfig.h. See + * usbconfig-prototype.h and usbdrv.h for details. + */ + +/* ------------------------------------------------------------------------- */ +#elif __CODEVISIONAVR__ /* check for CodeVision AVR */ +/* ------------------------------------------------------------------------- */ +/* This port is not working (yet) */ + +/* #define F_CPU _MCU_CLOCK_FREQUENCY_ seems to be defined automatically */ + +#include +#include + +#define __attribute__(arg) /* not supported on IAR */ + +#define PROGMEM __flash +#define USB_READ_FLASH(addr) (*(PROGMEM char *)(addr)) + +#ifndef __ASSEMBLER__ +static inline void cli(void) +{ + #asm("cli"); +} +static inline void sei(void) +{ + #asm("sei"); +} +#endif +#define _delay_ms(t) delay_ms(t) +#define _BV(x) (1 << (x)) +#define USB_CFG_USE_SWITCH_STATEMENT 1 /* macro for if() cascase fails for unknown reason */ + +#define macro .macro +#define endm .endmacro +#define nop2 rjmp .+0 /* jump to next instruction */ + +/* ------------------------------------------------------------------------- */ +#else /* default development environment is avr-gcc/avr-libc */ +/* ------------------------------------------------------------------------- */ + +#include +#ifdef __ASSEMBLER__ +# define _VECTOR(N) __vector_ ## N /* io.h does not define this for asm */ +#else +# include +#endif + +#if USB_CFG_DRIVER_FLASH_PAGE +# define USB_READ_FLASH(addr) pgm_read_byte_far(((long)USB_CFG_DRIVER_FLASH_PAGE << 16) | (long)(addr)) +#else +# define USB_READ_FLASH(addr) pgm_read_byte(addr) +#endif + +#define macro .macro +#define endm .endm +#define nop2 rjmp .+0 /* jump to next instruction */ + +#endif /* development environment */ + +/* for conveniecne, ensure that PRG_RDB exists */ +#ifndef PRG_RDB +# define PRG_RDB(addr) USB_READ_FLASH(addr) +#endif +#endif /* __usbportability_h_INCLUDED__ */ diff --git a/sparkfun/tiny/driver/amd64/libusb0.dll b/sparkfun/tiny/driver/amd64/libusb0.dll new file mode 100644 index 0000000000000000000000000000000000000000..f916b089867ee05ae63cba8a375890d9244e3dcf GIT binary patch literal 76384 zcmeEvdtg+>_5TgYN&wdl>RMEyi!Klip@9en12qd9yek`tfQS`MLb8EKNMf?fqaX%1 zL6*y^t+v|MTH4xbty*72z*hnYK|~Zq@mYM--gUJ_Q4FH)@AH|NyV-=O{r>+;%g&vd zGiT16IdkTmGjp${KfOgu*EB5y{}KsJ+lZ8Z#p3t-f3ngv?SwNopP)T9VE3?%Y5v{A zW-X{~b~QFN%x|h({4{M1C(4zk z9nTI1rfC%}q{S#lqB%8fDAWJ-5BKkFkPH+UNL}@>i^B?V}qdpr9RN5O80o0O1jE#iN^=o2u|E#)>hEJ~NP}{1pqh zKwSd>D_8{{Xk>ThF>sSpn*IOBJ~*)D3t6bEbcRZ=QRxbm-lEd=Dt$<$qf~04E`!|i z?;4f1sPq<(DxIiO*$Tf3-v>&DUR3D@m9AImT9y7xr4=gmt8}bN&roTWN;6dY z`61ck0hMl7=?0blMWwf?v{j{zD!p2zvsHSrO2?~ogi42~G*hLYe zHSI(-zsITc@RzdYJ(a$o(kE5=kV@}T=`U2eTBVCsdbLU~ zQR!rrj#jBlr6;O1L#3Y`mi-@4>0Xt#tMnn2-l@`?RJu~7*Qj*1N~fxHtV+*N>G3N4 zTFLXrDt$+#u3mD#K=IA1((x)iSEWN$dZJ2?Q|Z_LmE-wbrA?~*fXctB(&tp#uF?%E zeNd%$tMoT2{e?=`sC21H8&z7Z(%CBYt8}tT3spKwrDv)16qRPG^dpsi%Y6oapQ+ST z=>e6#qSEJ7+OE=#DwVCj``7hq@po2Qdp)<1EATIKBL3y~1aCRcBMMyoWop$P*V3}O zWmOCI$n@1Mt8ZvI*=8##DQRnK!`_{r-%{4nf}JjBWMSFmEn0u={QUf~GH%zdoR&4H z!v0lJv0%Z1%*_5v8ylB2HfCb`%*6lta~tJfbD+Muwtl{Aejo^gs%k-?+Evw1UsF3j z)KnR)ZGc_XP!+6m)l}Bj1*%86mcYykG&MCeUEmttJP_?e&GX99w!B9pl-JfTuB@xA zc2x%!*H#5w3o7fY>jJLfjqHiU$B)(+5 z>R%G(3O2Zi3WXQ+q*1okG)1%`hjt_32MRix`=H-y2P1PNI0O3U2YPa5l&g|fXE4xI zQ;8A6Fl`Rj*45Dv4K)W`IaPI)wTlAP=a5U9R@D%yt9G$p^rjHGhF2d$?J)!@LdY+H zu{_yjFTA2Qg`nY>E{m%@W(VC4OrfW*c0Hz9^uzv}0(F7P=0Fb$y2qtz|7Qy1z<#KG zZ%Rl9=c}?V*n<(>c*tMW_Mqc}@8LvmI{I#3-;jb(O)Y2k`}_TIA2Tfbvt|a%udx9m zapf-^ot45z7-69cazgVK)q>@H(Q~Y1^`tjBNkZzNZv-wuNmJn3P@vhOrI&7z zSdO75IUd0$jLBkC5NoX=6qL#dP^{u`zqb>>aeP?gRe`#m<70VEQy^fK3OMkjsiCfX zQS*Gwnhy&=lvo3_^fKoGeYzF} znwu-3g1$=;lRoIvn%es6@_C`=<^Xgj(mZRMsc8t+S1X-KI_J(EJ-4nF5cBedh8^BK zJpa7vq+S+yq%Hy?{0TXyDg~ZT-8+D7;I>=$cE0&%cCftw^SvfwWeA9yRfBj z=ctCJTpVa>#ufv9RFAg)Zy{3SsjaUK3Jlm|gwRws)uNfzRIvk%dX^uH602Ia56lbA zchzAPSeu$8ko`3U02Pp1RQI~BoQElN1sc@~?Ioucz1{Ev%MZe{zbdHHrt$?)R;hYK zlw!lI3y%6uEOMSiPl~_2`8KBDg)?RxN4a;DdQCiR;B$z?MqmwQVlUv?34 z>`M(#JU0dA*ER>6ma#BYzp%bxNxfD*k5p*dlBRm@@!BN~QU!=Y{9GpCl7*JcL;ke- zhWda72g6}_v+K&?%~!cZ5%S4Qp0>mS)A&3IxjgYysnu#hm6vjpr!^+)8?`2_L0g0p z2}2}#T1~RPR;yPzmRAE8G0Q*Vuhs(EVw6@P%|lwjHft{EojqQ*L?KUedz=3rov z(5#`RfHm^e-tuben}Zl#peb+pn6VQICl`zxpEq@UNkQIu=ZzbeH(_eYl)Qoo1!K=2 zbDn4Fc@rjI2kxnLr&7hSJlC{9Q#~}XS7`N7uGw-&NZk+==acpeR%vsfiB84n(NHne z5sDn>B~dO~$WauGohv7#+1l(zqk;g+Z%Cq5ZN=VH>&mOP3@=G{wH9*aRkEzKvOWZR zKM2+|5zp}E(Zh*wbZvc&OE@Rh4d5mXeQw>AU~;8Px}?3g4vCHU7MLwZiM6V+Z}N=9!W}>!cQfFXT$XrOr1bMa{RX zvazwQRvMV(eoy{`1?BZ>>DC99K=wvc&5FOehDzaQc9(bW-2}Ld@!NougQ*QoWp$zX zp8D#ty2@o<;XyVlx7b^IS-m1hR!H=kw{}KDUERFOs)Z7VD(3zaYJ@3hQDV`NTAoVD zOu|oTXk0eEq|{emlXS+r=NAIV*%by2{KxvrdGJ^*|1%ZL;?G>tV%dcYDx0d8R5rn1 zl-5`i?DoZ&4vStjwqyxt{`pj=7Dba>%2r$B^Z+%|#RA}`mm z;QbWgdC!z3Q$%D!me)Z&s$yLP7X(|hDfDx!3P5_{vnKNZnHj8X3aWNQbZIEiv`pnu z7YwP53|-OgRyELHN`3=Nl|^rR(SR0Hwh}9=YB$R}(?*uZL?wX>OHs zu`Yl(QS*X8U0uOgZA!zUMObG3+WNq(22a!c#g~ijEd6q9^##M{5F&MdYpiTS^hla2 z3>c~-K!Ipc2mu`!Ahbi+kyNq_XDkUIN;bSsL>s&HXl2vP6Fc!Osst z`TtMwG%6&`s^2A5SbU4-H77@MY}|*CkXU5_r1HPM@$#PbSNFayf<>ga?|uKf%DXLx z%IZb%)#07NxL6#(8GY?yET#E@W@#q$kONG8b3>h6Q);?pWVA6*Ra;XVs2=UQ47Mu< zK1%+;I7UWb8rV01uAIfgL!+(#!&im11}narmYl13No^33Z5Tn^ck9t*BdFxIjfw@X zysAkP#YFx@L6UVL%gUfQiD?kqZ*m`(IK>vJxX6IAikattTIDZy@8_vlh+p`xN;u1D z^;x1XX3nnW?>pxgG;)jQeS?zf+ThrHk2b4vLBk>_iJ7xJvwTxHo8LWep?YpZ-Hr|R zT}3?E!#%TFaz{u;^Dv1`?9a!*HHWII;5F5R;Hp?~-!V-vaciMcs=q_dq?^v(rohak zP7b)PoO6|{io3mQUMLu(6Q!Io(bb~n+C}rBpDt>GeF@KLDqJ&GG=VRHYE-B{Nsn;U z%Ebi|5X^vjv)X56oL@#5pff~`kb@Ne0|eL5xy{eY7UHtc>5nj_Hmn z;;s+249Ka)1+E)dVDNDup51T^&CNlyOw@3}CZp=zFr!?Iy$VQTn}@$8_(!7Tvmh_I zzPlSDs8v57Y66t;;6(j3FRYbzQVJlcumD6oh#ZddG)mcz5q7VJ9&465uBtB*IoZiL ztBT|Y5cw66eMSh9!@}K}Cd3+&;n$>?bhn4MkD~x69d$sJ_Y*`EVF}QvLO&d{_)8tn z_tBd~)U(^~rMJ7ycM=?IXh2{B;TCIbYAD~2x27@gCsqT=aXFioG-+BAZ;}RySjm`V z>JRZ-+17m#Kg*(9!l=_yuDxp4PcZ9B{UaWU*l~SBX#N7I_mp#02{|zd*{x6dns`M> z_k_zqWA3`!@dURUfP|2SDbhVisUT;X7ci!slUzzXE1VBXWgGA^1#e&UbfdE*&zqD* z7cXL|v(UOgO;D2BO{cH|Qz(@fmXFJ?t{ykGAU|(jWnpFBm@(C3^5)fytIo^EUrk~D zxSDYV`LMy3pI2QlJ}_Z?bzY!g>^Q(x1prqyCNIA*KY#4Jz?l4kF@-5`RX+qbeqMF; zn3}5bd4*&0YuGO+2vnVK;TxMjVQft|zVpZa5We%z8&^5z{L1{i^FgV?H@+r-aa874 zO~|hqcYbvx@fD1(shSWNpPyHC-gq&NnmmkhJVI!Qp%sifkK+cM+_&LVV zRV{X|%V^@JPn<6|1s038Oi`ZTj8TcDlQ1g_<}XrB2ZK=HJHMqxRw%UlK7=yAJe}GO!SGM*Xl{O?~@L& z9>=UQ@LFEWW2~Ozv_c>lTW>m#S*NO}riKRKREL(pmjcHs7ph!m<4{|1|qLF7qd6?k&fw|Sy3(FT(E)2|t-PRZi z&aGTjJ^sApSx#fM@*a{MB_H(g$2o0#L&xie{o$81%^Y$%-aTN4dU#vT*5}2a9+~UT znys(;xUnC~4O`hZBn8{_NUOVoC2c!($%^$00EXqxHsb6NyCZJha!N zv)mPW?n`Ua)?^Gsv$WRs&>?i0E?W5A6$$5p*U)=gduXuVn39F6gZmQ+U${Lh{(v5? zcIN{Hz)A{sg0zCYJG|~346}H6yk8h5(aaK=_`<5XUqGQXLZLlP=5 zkC>Gl<10OUBoP{hdHGn7;rz9v<}ea-8K{sQubeP*NN`Db`A}`e0Kj&kHojN#8Vt|D zd{?_&T4a{nOWqVqHf_#u32qdV8|H0462l&8-guT6_SdqbC=xK)YwR!wqC4{+sKvWP8e72lMX>L2v>no%ZK(ksP7xo=VCCoF+Bvp_`V+;&KwTs zW2YL@fy>Hl(g-< zeu$i=lLZ~l;RHMY(&GD!DMQ=Zm#OM6B)X}r?qKzXzJ{x(is$hdZp7>MV!=ug{q$rp z^gQ!}Gui!=p;(=HqFei~fZl8D(E;x=D}moU9zU2*TV%Odf5!-@m`goU=g!h2LH7`@ zI+tfv*E#6av-XI`*smL(=|(J=x$0;s%0eTGTNBHMp~pjFB=!t+>~(C|VIBf8a+Y7! zG;P(<(ST;F8Eka|S}h%bR-d3%ymM0-KoZWfy%3VNc0F>OP`RH<-aP%X5S_mvXWm7m zpHt-+BR9jT7{UM`sdVrfZ?m3Fp3-P#hkinRlEa#3(99H5v)E+!^TK+=(i%u%DEj zeBG#X7wSgPU5usfvX*-BOmMCkTThA6$=!$Rdx0F#Cmd$fehmk-8@MEwc4I)gk*0^2 z<|IPYR+};I_={en7~<4^y%WqTlf;Z+!`sj>{w!*TqIMZsIRnM<1L4YIY-L`k@k?Fa zh%X1~QcpNv-JM7nQ;->C%p64x>W^NT?}sWXl;Q^YK;;ydKRP8-YC$0~3Fj}-5L$ms z!ueY~P5M_lA~J4sdA49qms|vYKtkrEfh6;OR4L|!w-sNRRD5EO7SbfQy0)Djql=6= z3q$>Yn1~J;D%)4MR855Wz1bES8m0K>Gz!Aoi**?%t637sW6yCY`&{ftdgJX+0+Y zDU2olvNO3#x$|d%}0T$l%67Mf1-hpELNxY{@3D~v^of?A@&O;RZ@Yxcr zD>*@a<1Jt0%1mEmVU{n_JmhlEEYD?>V6Snv`xfxa7p~f`g*y`^YdZ_xgla2k`@k2S zx!>#X9vC(k%4OS8a&u|3@uYi=n6k&*El532X<8cO8a9RTUr*6D9>?@gbmLX8@vQmA z*P=y%sFbYq7_XQwf5T#b)&8X?dvcF@(%`#wN@hb-0;UbX0Q=bo-d3VKlLF8QLu9}^^*B55TTu( z6xZ)>Lv3h2cWfK(?J2rb@z7P$+Ws^(oZpC*81H)4nmP;^;{`|L*CE1{M^ctR^({>b(qGC-rGoIr- zJEUH7=o7Bc9c>3hH(x>C^~jm#)29k?e^joPSx6}E-qRrN|3#It|I0UH4~iD;Xkig1 z1h`zZagL%0MeU~|XC9AsPf#Pruk#y<>f+v1TiUokb#O1Txr-#6r8|3*9m-2MFH$5A zk|b-A(sQT)~sWUBy9% z7lgrILnE>47+bvn^HX7zb#&Rn2hx!RO!&Z=c+i3AA&F_$+O6)E!~0K9g#VqfYDYeJ z7P}H#4EAM@(dlR%k7uz_N7cz25?ILf81P3k*p(hj3ZJZZr-GYob=DC+BLal&F0Wa%K&@gXomcV}C<4 z;qsOm+kD2W+;Stw>4pb7VQMB)c;%NsFHFrc8?n+$3J#YP?DfF0AL27gbM$Dd*b2SI zbF_}ImCSPIU|kun`C%%%%-R9M4j*IAg+Y$#OOtAHEz~>J)q6D4-wX|a=1({mVNIDW zD1mixDoRffrI(}BV{D7}2b;L*`lHy{e8!c9K4W3A&v@T+wa{p(ele)6bGwpDCK&_q zKMESUV;}_};XS|cX>>^%?5|>Awr?R_QQIygWJ$&51Z0x~NjM+ho=9x+V!0%oPvTMV zcE6*w9suCSM%FMSFy~gJ(wrj#D3TtL3xDL%EI<~odGrD#-9e0Nw*qCj3)_^*aqmhv z%h5^f2nGyfbNExnpILIM^k{ep+9#tI`N~bFDC)*;;LSM^O_BORUrHQmNW+`YqR`l#aQEWtOtu%T`7R+nLeKv~L_A8he zM@=6{2yahY^(`zV&9QDS>0iqj@#~2}Sq}N$L4WN}`?w=kPexn7;xAPmtS? zqo095&>0qVCglh=VZzz44MYRucZ9aOMdIoX0#YQpg7fq!w6mD*ZdU{mDd^nIx|s7l zoO9}Y>DPX0=R6N-J|DE)E_v3;+$DcYzKS^$bw+3zMD0yT5FcYG^53X1e}NxpyPqh5Fs9|CbU@Zv@wY-CH-}23CzuY2 zv>Mprf9*3|BYmO@`gX<}$-v-pF*;`pl}*%s83$PbRMOch|G^QGh~x-whT97-c%*s5 z31Wmlk|WfRh~Uyz)5Z}#gxaLHe ze2oSVLd#+ma{o)&6NN7O(=#X&>q6A@-t4+{*)N_XpwML@ds5S^_(Qzhuzd^DHD!8% zt~fj@MZ>ypv*w{K)ck7#-? z-N5i37%PJ6X~wmPl^xLyy<0{H$=-@(Z+73YH5gma1*QP90q zx(mm|(R=!GR=lFZYkX9&x70YG8=oRF2(7JmdW@L)z*_R-Nnx_nn>!lp7dcbS;ZAy` z3FmX0!9qIW*aSlT5yn9i&ZWJRIT>b{r795VL@x&iA^;4${Wf)o2u!UlL6}YJm zbGRU9kNIa&2Xp9oN-+W}!cFTI9nnWNW1ANGxIn+lT*#Ji>AKaPv^7%VA#C-G8{HNh z7D8LWK4`b^7k2x@LiIRbcnYOa`yu4a2Vqi2r+yxr2X^_59Wp5LE&@!3?cb=UJ>`kO zNVB~y+rA?b`{PJzJdxrI^AjM@jY*5KJ!7o8@tULc2@bUla&|84zTjAY^rx`PF3s{8 zTT63aM(A3b>ez66R!MFLO!aVk8e;jO7<{?lDY_vdZU{P0&IH-P3-m}%9DePk$n9l7 z63#@wc)D&NLY*)&m#6n-`y8!w;(bML>&Dps!!#5B(J@R{557ORowAF(&|AfC2 zwWAH2sHS|lu8kxaeZhzOF;-Hl4|iJ|`?XEt!ih}DGHgZSNoa@d!tpwBd-zmfOsm-u zJ`JhX4+ps0!|Y^$cg^3jks>(*$@cJ>_${vSM*c?Ei79<2wBwrB(f~FB4@gGJBu6Ia zAi+q4f--KD$(o5MBomKII6WXAoM44_&Amm0Hg4v);{#h-m`%gV1gwGyedO4%MnHAE zo1SnUeVqFY;)4Q#KXL~#D`}))3@bIjnI7FnPR693=nJ<~qC)TK#)ZD3ZyarBBQg!| zoU24PP0++Z&Bi7iP4#G>UhA^pZX>8;cYpw ziqEnOpkxlvFU&5I$QBhxJz&kuYyc2V_G>hwB$Vp_HD>7|pWZDo27$!5*eE%KB z(w7ZFKH>ao12j)(YV^%g>(I+0K3;0P1T&`4ga~49!o1#4ORX3p29bL1k4R($g5T%!8K3%${l-UrgbMOSoPZVw&87tKn@ho~ zwsyyw^~i*~GOioA@hD1SKS$Qfs{;l6fwD$pPsf2wZnt~9gW9_hoG%b8t!i1}9+MvG z5RLM^MeQs5Z~Pak;uja}^+sp(D=FHta=bTsHD+KJv5oZKt}O&taOL z^;Jpp)jF?X=n~2{c(!rr(6+rxZD!{I3c<9Tg!9}-$V)s~XVPM}{Qp4MxxMFx$^eyx znfEd>XM*88Wbn-P(2|4kwuy=c1ikKPodQxy3KHJJO1@`SmgGb8Xfk#pR{fMCHV zml)@b_8I=s*zb07t^V>cUTIk|dVm(34mDFaYjg%AXX)be3*Ph@-q8qt`O~?J1_vgb zwSYBHiEyKLbOxqC4{voAy-4^Kd+FDr2jU)(aQ+0KFs1eIv)Pl2x~W*vVo0JdHjc;P z?GQjs2C|VE;b#H6{rDo&8q~Tx$N*Pva*5GHFp;T?e9k?k$&a;$rc zr#gl~9wnSR0E7%RM#8ySWOi|-ddjUx+*McViQ(%}V;ulO@CQ7Q>c3!G4EsP7VbEj4 zv9zE&d?YP&ieY~Tp3JHv2d?f)tjtU}M*&CtRCq5Z!TgCMN@RNj_3{4nXM{tMyzTV7 zl&Ru`GxH%zjtsA4PrDB*#lXd(P5ca}XOo6~3#%)KQ9UXXSHijR?;OrnjG+5qmSU4| zK8+gasIlR$%;1P{*X6;}!d=UPCro-D>p$3E_)75~Z46>U;#nIJiPqu+Ho_Uu#348s zVoBxm&x>=!nOUXSBub%=fWFWdoifCa4b|v?_3y=Cgz@W(Ofk(ZzyWd!|M&J8Y>)ZS zMEe{5&+WItu-b%C$@Y``YM)AbsnH4YU4CAf;KK2vOMn zJ0wyEmZ5})7wt$L8)9DL$R@g=rADkM=9nIvkoO)Y@VWuvZ_*rXwEhbcdeyW3=k}qb z0goOXHx~&k*S0r<7qk>_Pp@mvl(1p8h%(6AaX! zXrb+B8G=w|uYpri+V(+E0sD-v75tI3;JNUm=b|1y>mnqAOhF(SmE(_8Qy6EW!}!^N z94jGb9s>!W(PBJC*V0kgdWttvmNDMk9o)04Uev300Cz?i?l%beU73;Ih3(Gv4B@~? zz3R*D-t)?|5W2}T{>t&sa+e`u?_-?z5ww}SJ!7;M$y>-e!#0Nr*fmN}99aS9C+fU) z6Gi}Kn*(R8*l+A&EYM@@fkT*h5svvu6Y|bMvlX~wfXPTW{r7W?t#fm_xj)QWO4N6{ z?`3|~Hp)ec_DGTYsI3$$A1-OZ-h!R6f8m;=rBa>;A4^i|cBa-9?DdH|Fln*7fLb=e z9RWxn*S%r$BA#bSpeT9WobXesvy=V?*A(*6;s^_m7UUPxFyuFM&6Ug1N@y1JJ(&83 z)zWL-oDK+T7Dj@(f1_XE3qL3({4J~zaLp;&*he5SYrhsXV?_~tgQ$H2pd>aT;Bqu? zA0Pr9XQIP9B#vPc$9u?`e?E#0pfeF4Va^2gkXZAHnKGT`!(1=V(Sifa!g4%T~H z_|aF4NRY{bM_}@z5VTwLPB*!T(+3167UIzAecZyZ4yz!VT>e9P>PhZW;QC#6B)NVN z(%`T92qp|fLnotg3}-$yj?xk2Wuea`J@-5y=<$-C8;=O-h|PdT1&un&63%(|0)Wwl zE^(cT@uWEPh4ZI)5azef0x)&l6ut#L1z$t`JW-FB+BvL8yh`Q?gTMnMeXuCEi*l$X zEc$=mBf1J55Av!2F0S38=@P4}cO-xxaVfNz6MT))pcgSXtoO|n8%XpH8A)=9KE6Q% zXcvcHoJn6qoDK{M;CghOXj!lqCo=sK&MHzP!i@(>A{ePz&2rdmKMWcgx(h&0f9NvE zk{Eq6+JU1E%E$u9p7{}$X?!R~a49uj)HziMko|1r%n@C*MnRA~r~DDx#tfcQA&wzd zfae)%0gkF2DP?|v$9PRHiGEh{TwW+xf5I96tLW`cF{`R}BcuY1-Y=@` zm7oBdTHD0}f$bN71eL!w7&Ugz?_)nGYQdh|9)yD(oc5kTZh>;tFr z(J_V!D(Khj#CSQ~Vopp)EAI&r$9mL@09HxC2MOo4zlcG#W`b`z%mRv*AGagQq}mk| z-ReHTTJ+1dm~QBc-PF87Vnp}OxeCv%5TceRMFX_BQ#?3YualycaJErO)BwbO{}u}{ zp{H}RM@eya zAwK>QWy>!!|DLs9%yl! z?IgGVbGKMD=Y+8vy11&6@ScqW2`1*pCB-)lJ$MkMu_hmtxZsv>?i5HIZ6^v><1w*h zy_kBx7}TSvwRV-%)g*Qotf_>vgAj0hsImM8PRz;pKVtRDrOdULa86X6T*Y$UIH*EF z3Fg3M4xR(U9XCKN?9Lo;&7AT%Sat@Wv8X}=&65$fH~)S(%RoBX@CRuf>sB+4x*|KWBtZETeU;ROlQ6#J8%Bn@8>YuX8C95u#RX-I~ z+hmnZR$U^iE)rFLWmR}m8ZwYS+XYC2(@@a09tBuS;Yo+Z)A@M%Ts-CB=`-0UUnc`0P3il9k zXAWk?dj$z|IKUx(t!vW+^IruD&&CTihsGtQ1H0IP&5+By=u?a)>f8nh%;zUactp7y zrLhUJ@gE*$<3ySR5{79#(Q3UvSWlm!Ootn!^QV|Uh5X6qPtInv$JE6pmxMT9gWCcRT+>{oj28->jRhpEWr85S52^%faP(o0l2rWx ztw7ajlB!(@0P*bnZ>W^^CVV!;PvEO%vN084;x0beJDJG%%Rhb(%WMbFiW*^t;ZS2C zt}ZQi2~#ZTZ0J19T7VgCL_~k-5Pzh?B`^D8LT5n(a6-=oo$#8T1x;{5w}Tjvb`KJ` zUa&>Y+dvjd{)LcB_k>?A2x;fVo}uRK{|bng0f7db>;ou?J%#bhS@toAhlxJNYIQI) zP>eKo17N7kT%vvg>ajV@#{CX=TJUWiJi6qRQ?H#ZYC|WOAO1)5R|Oj5<5g?aAB78! z)B!>ym2HR+7b*0j@yAlF#IO*V85J+WVjdj zj2$WAU?}nmYUKqCvv`t`K(&U{nX9YdP4gqDM{@dQ3>K^J%D)Tpp9dLOA8#Wu^CbsY zAvDy@<3o3{Z}9kFDBJw(6Va#v5NLF-7(%;*@ z+q@5WK*MXo#&<52G+ZIjb(-f8olTxdit{8MIJXiPd9z$R*u4U`hyjlIo%9ZPcnJRn zuNb7 zfgOkCB$sIr@vHVY-XXkA^|sF42yX-T=^+3B31tgYU6yXDs_MD8O|D=r-dj=F zmTi8{sfHL%S2w1EopV$%V>Jk{%0m+q5n5{2p>&^&VYR1BPyMBoYkm(6LO{>=hrw(SzfRgmm1o| zr3R@xpwf$>(u<4HDfK)5!PWa3_@GYC`4XN1=?R_*yf;g{CriAQ#2W-&G3hvKHC`1u zOK|0R(qrs`!2BHXWn`#4)+PPu;Wd&)%8!NuZw8yXS%lbcPY1e7_z$+LB1tX@pTV#_ z0Z-6_Bj-|_vb44Ps!Y6efIx;YutSTm$Zh}t1@|nl;vH;aSRcOzZNdtxL0t&C&lbW% z{72yHHg0p&87C1aVwOt( znp`5A+$fu@S54YwlLyemQ}pBOKKC16U<>*XW;EjahxG6sP`5KU1Tn*@P!Qy4Bj;+V z`Px}B6wQ5p23iYn1^R^11N8nRXz(--R(%Gx_$|1);K5wetDs3Rkd>Jc7HyA&I@@xnDWC#=Qi&4h#7P8}pG!Txb5!+ic2!I(s zik9$}nOp8?`$Xpch1_*`Ap<#H^?nFhMi(GzNM-PcN}z(3_oEOpzml6a%J3ewx)`L0 z5ZZ!;cN386gPHXzQ_KuDOi@$F3|5oKAmZHW7P}DI;1F5HrHH_laK3m4UDiR4wuvAS zjx8zlLV1uvI=X9+0+ioSQSp`&CDO73M3iaHdPp@_8MQODzY`B;oc(uGo9bs|-G z%*P{X!eb5|>38B01WgA)SlQ6>(MdC(NhAQwx^NZU#d3U>80Hg7mKhC(}NUMDZn=pfCWJ^8*JvkUys{rM> z07)}{Hya!}h~uflZHFCgFN(;Kvk=^feZ%J-n3JBckydK#rd4_jUWrr(QUrAmI@+$6 z2p>lb(qHu~wBFkYmR(|GY&F0B0DZiM>QwPB$IPV2bj}&wGW{aPXH82|rV~{t>`SJv z{uS9mna)EOKG>Q=ETQJ%;q*+}C+$F)aHazk8`aggy}&Todz-SrF`Ro61NCrM(9ix@ z3cYTwW0wMf3Jc_Ra;qjT&)W3KYcfvt;Q$ujG{7momzRM0`w+hy0@RMSYx}XSa{#yz zyA#i;Ltk-YkD=#fcMqL*mml{i8cW+g3DycZLb$2sv%d>@!8y`po{c=q#Ej6JocBvP zc98D4!7sYhalhkq49Fk7C|!CJK29CJlb~Q7H=GSX93s2(w`XK(u}{$DrqA$`aK2BF zsPl99zM|1ue6(Rp+8P{lwWqc23>}Ph04#MRdsp`uN!8Hqk?a5ylOqZAF_KGrjO32n zQbuwECm_m^TndVMj-)W*tW&U#8?FE#M^YFYgUwoe(E;ZSaug@1Q55zb1@_Osz#xmg zfWh=BQO76ozX=dam{P~x)YfC%3vv3yV_(RY-C8-|eSB@2(C+W3rDaB6Bg zg&gfNx?tazAr|oeRix7Ik=?13@cEaGhtpgV{aZ__wA{Iq8Vq7$r zu*X+07q$H!igHsi(b`s^f(91M*F|{5xy{cN*Kl-#y)8srp64Q%d7TVJ+z~l5=bw;* zQ>?yu6lh*`H5Uc^OT6I#w}F%lV&mAKb?)2+->Q=Ess_O`cXiS4I`Lg#N$`sU{E*qF?^GTi8RdkMI?MTI0W>C zCE&z4!UzNN`}>QAZKO?*&7~ihY_b4Z;NyG zi=zw&FeFt5r_TkaudnONh{?weVxcAD0&RO8t?P+R1|O}!3GQ|4(TmaXSEjEFwZ`-; zj(#w%dnTMex`p$JtG&BI|JB3uvsjHS%Bt=H%_-IR-j6XopVhdy^cL%k=@|Qbysae5 zI$0K;UkErXvCSek0vX0Muw-yd+8x-y{aYC{>%E{6_^!}#^#!k{KswOVbKnQvmSW*f zovd9 z@y60D<2jG9)swr^liOa@aUJIB>K=XFyN<3IfQeq<=T#X*i z;+9|MZh5K8=$sPGNEeS@qtn>&Yj5sOS?-BuoQv{;y)Sj;c0h7?SAv%$Fd+DW3Fk-X z)w;Z{0+P*;f)t;&=M)!*C*1_2K{Gyev_4A#Fzic^$DBA?|AGAG!6UhL7Xqy`WE`!B z2v$XR5TjeFr|-vp(SovE6hSFgb*?Vydj(b|ctW75Z5B6EXy7qXswGSYyR)dZ3#IS7uh)eTqWPjo) zlt*{e2z$&Au&_idJ%0J7FR*A5&UYe|sICN5H@311i(9@;3k})?#eupltV8KJ0^n>K z^u)EW}F^0a~4Y@Z}=HIfqJ`AvOYJu!WtmpugYysc-4Y=_hP1##iW zwna9*UMvB-7di9yphk~Q%QR2$W3rZKWH{RPfv5?&_`VnrgpMO|!7)UW2{fT}kMT8Q z7rV?auoQ5Wz4e1{u|P#h0aP7J_M#-=eD=oV!Bz(fz)Az|r}+z0JYUb}uVRACtdI?3 zIb zKauD)`YC;k{>x%H)(^k2MnBFgOI|?bVXes%Y~R+4U8w>qiD-9rB{e zwW1^EO@`=iCi|;@jpT_nQinByg;K%&dWDM4C%-Tr9`nJu>HYNFU2D_fuu-SMVLKE*3CgH_injZa(EwkQd(8$a_RrC5`6q(r-9- zd3RGD`bs!|2UMFzfB{Dj_d2NA$ORt z=eE>{M-F&qs!<3{(`S^ zzxuVYzu=ABH`HeJG@!xBd|IDg;{|;FMwqeipmSi}xS&6X4(|e^H8w3TF(EL6$Kq6E zCyJf#TEKFz_Hqj^w$Nf<0JTYkK>&%)ff4tokpn;~#}m$2tJ;_a&%2KcxjQe1jfUG> z$s6^VLkG7_u(Ouh8M){2NcD$q9)?WSZn(|vcQ&D z0Xo>3Mp#clP|(LZaZpavF@sJsW2+?wYA*7@8@G{NQd zGQN|bbE+EPf39HW7@)UlxTx?U3P;f%H>ttLhK_ngTc^2(*wBC+K&koNJ`ejImGUABT#jBf0-E&|n z#F_;BgzPV_V;^JKga-x}-yjZv6V5RhWvo;o-RfwYj7Kvcnl@G_3M1LKqh-8FkJwk^ z!N<>X7ziWU81ii4EXTfg9GM$x+iN{AmTz-7j4A<~F!65h}026-R9vs)QxLp)yv2}Es!yBD) zoX|=>`WN#+h>ss2g_M?+7~4I@s|n{-D4dW@Tg%bL+0{aZW-&)t+LE=C6*uB7aX zuJ_;^Q0yb`wFqItcY9D7AG&Ff=(7%pQXugi1b}&rlJiQ8()<#mWR%Ca3_~n+L3oQ@ z+VdLpQX&2!6hobY-5}v?1VTY-IlJZI?I0oRW74OvGsG2r(1%XMHFvLZ z5bF!M&BXvLZvDzQ2%L?<Pm#!K0Xs^B0M?fa1VsPjw2`h_;%jyx>>%h3SrEr$Mw z?UUVtY{L07u*z42ZzS91AP;2@YJA4w3E5YPYz=k5Gs5!VCZMBG+^RfXcFBX0%O_-y zLvb+I^Hd84hmPmLHb)$kCY13k*y}Pg(I=i!w-!XjohnZ71*b3SybEOreuyTV4wt$A z5R7WvnIiqX#OVg0@ftF^W3zb@bhnfb5uL;MrKki4sVh<+B0nK}{bI410e=nf2k{z? z^Ex~rPD*gYR)KomC@a*9UJjnfSTP)nuVkPwcQ;>5-=!DrLQD}~AB>KB6Bf8QL^$*p zJ$U&j{$i$^@lY?V+L=bz|8zNgdkot zA^S_XK%w`zL6izH3s zypR^k_F-r1Ftci~ng*+VogP`jc@LW4+(3MTOAv513TQ3S^ntaM?-Sq6YSwAYTJP+2 z+q6kPBIO<&KO=sClis!yRufspcPZyWXhei>CLh9+CP6&3(8-X!xj2AHI1euY?Gf8Z z3e%ItY#z054l-C>YHTy}breL#b)dk5mqxO9-ggUtKsV$&GU*mnn1cZ1kB%EE4uRw$ ztN210EQ2A-7+H3-eTg>VyM>Bmx*l0{WIKY`5-c02DXMhnP~yhh1h*l{%p{*K1bI(u zu)`6em5}$M4)?#7lI5ysKZ=Ni>M!A3fj)Um+KC*f_Ph7^fth?I4Ar8f%Nh$y+ePUN zAgw{D(~kvOe;cqwokuC3QTtNl%r|$4=R2GEDi@;wCtie6b&6>_00h#=<*k?HxII}V z{E(~h&Z4lgVT*_h@;a!%nZ?FxG=RZUNP84%KJ8N&2yjSkM-dC=9n5X3!NyH3TADhu z&gGcJ0jPLg<7>qEV^?4fF@0H}3Gd?)z|uYN0Im^C!ZcighxqA?-km}ltpe+g(=H#~ zgyN$VP=3MW9MpmjSOu>U4k%Ah*A{{GWWXEQPt$*j+HXc8nPHm>4Z1bP51Y!^g3h~| zy<>TN;}_8e7rwdxsq}T96MY)2w_j9F1 z^ICDrw09A&)8|cm&HI!@I*AvO*S_VJgZs`f!0Ga zG(M)~z1=MbcenftTI$B5q&-GUfiW;Wx>{0rlXz)@V$1goUFh>moJ(OmpxUfMOMmpH zp=gPU!#uE(W1Xppx#@d`ae6l~+qzqxYPI~HVZ7@|GT^@MmjB$w?#JU|tfOrL*NkyG z=c+9LaqSgmgFNJ?eilJ~w-~FK--5F*2F`@@-X=7|3gOkfAbW{AUlJ?Iz8X36;jLsh z@A5it5;VY>{H1IH?>~4N)*o}QiXb(eiI?%-PW#zV0_tYgM#SY^K$9F9I z3CbX`TI@Yh1|-knVTWx5${~*+4yH6!5Z**|p)sYs3=G$KEK$s#LjL6QCx<^SSd1<- zd<22Ws~SlqT2ut{c;bKyI(X)_i<3|z-iU&3gLuMv@bmqW&l^O*3fXnyV4Sgv1(VS0 zs%_-+){SrlwF%PQX>zZ6Qn){JPRHFJ45hgd!$y5fhZsa`3y_T;2m1wSxGUXp^B5Eh z6%t>csxNR)SbdT{U!9rU1mbvHLV2jz?1uA>|JcRGQ6K>C_p(mjbSZ%o&apJG$at+_ zC%w@dWPK39b_muel{>BbsHK>(K;FcKx-Jnd#fLwF+=8~{TZb(mFd2hU1gbOqV!cX! zoq!*nYQb>f8}0Yt2op9tRaM9F8DPzrwt6-u>n4KKBmn8z2nO=)23Y;SI!0`GzariH5-w zGg~k0LCj`BH;KWEsyO*x?M>f9qm{8MNyijLM;YmmA@;rk?0(}Vzp*oRBiPV#fj8LL za>3=n%9ab}1^q1-R0q#)xnN1?8c^g*!%rGLvzkGj_=Hm?zrNuMxA%+tQQ_%FkaW}z z>SQ*}dXf+EY<#%Gvj#gwJHOhI79ZkqJe~$DT707ipNI)}WC)Dy_$ud?w3Z9t9AH`# zrMWmZ?NF+sC(q<}j@0KhT(Aa93==VZf3%q2=gs8N62f*aAn`gL$6UY-f4`*YUn|cE zPx|T_Xn++%aC#Y`>_naK@xU_N0ka_=DuH*%W(4(# z{es?!X~AN=T`x#|0BQh@H>8k?|BeHQH1fWxh4-~#tA`((N{6Iv_2!!1^aJety0v^0 zZ3LcH48wRANF+Z862!eEkB%2OHUNhwHxU}Ahie9C;hMo(yn$axSof6JaqOdIONZ

fQ)uv(Z7PtpymFaZ#qv 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 NaH>~S$)DEx{{RRo=t=+p literal 0 HcmV?d00001 diff --git a/sparkfun/tiny/driver/amd64/libusb0.sys b/sparkfun/tiny/driver/amd64/libusb0.sys new file mode 100644 index 0000000000000000000000000000000000000000..0718dfb7c0a8b4161b2b06f14bbe91d6314becbf GIT binary patch literal 52832 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 POueD*h<=_{ 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

oAT=J?3n-GhDc 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 literal 0 HcmV?d00001 diff --git a/sparkfun/tiny/driver/license/libusb0/installer_license.txt b/sparkfun/tiny/driver/license/libusb0/installer_license.txt new file mode 100644 index 00000000..56bb2cda --- /dev/null +++ b/sparkfun/tiny/driver/license/libusb0/installer_license.txt @@ -0,0 +1,851 @@ +Copyright (c) 2002-2004 Stephan Meyer, +Copyright (c) 2000-2004 Johannes Erdfelt, +Copyright (c) 2000-2004 Thomas Sailer, +Copyright (c) 2010 Travis Robinson, + +This software is distributed under the following licenses: +Driver: GNU General Public License (GPL) +Library, Test Files, Installer: GNU Lesser General Public License (LGPL) + +*********************************************************************** + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + diff --git a/sparkfun/tiny/driver/micronucleus_bootloader.cat b/sparkfun/tiny/driver/micronucleus_bootloader.cat new file mode 100644 index 0000000000000000000000000000000000000000..f39e1be66f4c09e78d2473cb85ff66cf9995ed0a GIT binary patch literal 9090 zcmeHNdr(wW7(e&!-9=!*Z8AX9oi&42K{$6G++7lteIO7eLMTy+yo?=C$i=V-b2sym z`3OQyQ#UmuZE7mhjC|oEHMP|6F~-fse8yQMd+}(8FPP%U_w}rdq_2P52<7sh7YHq3VD2_j2$2+)UEze5gM;x zIL0l6F&?-20+7C-N=2BLsAL#UW&V0^e0IaC(epIl$VNX?cWZP6ucKz2nK$bUMqMF| z^sCNduY*ogH*=E9r9>cRLdA9UVv_shpIUbS? z_<%GkycHlvAtCn-Fm*{DMyPKm4J^xoXqi??tTyO^LU$-sfmlSLnPCXQS560NGSH3i zG{JBtD4C#?F4h%b=ydS|ko6$eQkvrT{S2Q#huy&bm?~gsiOBF07(EgA^cY;g-hXRJ z+?=OYaVj|7G;wkgPX(A>Pk8F^%^R1-gY*Gv@T2slaWYo!@o4_;5@}~s>oqGI>XWv{ zzPqBLNb|_$TY};fA<>J)w-?cu2Ea^)^^ed+a3f4jkVlA{A)zWYLb8ikLmXlY8$cRy zh;0o(LFJ3+7138oExt9U1f^=Ax*O1^>5jf4G86hkMOp^Bsw#-Wny0t$m-?AoAu0~!N}5%xkJ(1m*$;?V@SvP0P-q7tdNjpEK{77>RV zueAH&8$HnNVjVP)1Sn(6p6`W06b3YxZhvI*oQpdJRpx@M#a9^FVpXWKRoV-K;)9io z>+}C?$^;f4?t8e?2_lk`#k|RjBz%Y1w89+?S}a-Nj)}so^AUK;|8LKT0!ys z3*vjCEUkIBbMqJHKK*^nOCwqiojhGJDk#2QPN5vzEVhDbwG1=T0M#X|seKD=&xj}Fm-jzd7x<=rw{MebLrl~efWF>M7Vt5bD+ zs)W9v_{3HF|8^XL;)A2{-g|@{SbR1xH_$jiBLw|F^Z<>Z5Rsk^>d_3U)B<<3PSMvx zQw4oNRGEL-p%iMOse|=;Zn^}OXF%n7e#h$k33=zQuG!wCIJu2as_eUYyQDmW;_C&< z^Je1nxb{<58=dAKE8r&6Noo!Qu-+hPP65dw1)_PA08h-Lp_4$yL-fuG%ca=&)}JEP z5q$43hcr-OIo-yy(9!BJl0hbrOaM0T9W?>NuqEUn@+gc_1_4<#i^>4~aiqpeLH7o= z1R)+bdxW~#gK+U48OyM&YUY5)>&GYNcr zM;E=f_0bgVOsDF*?Sl4DY;L)0_R3Q=i#v9%E^t>Dv~C&sqvOe=Z6UAJt!#gO*{OLc zjyu{S;!p5f4-8Kg+V5I^vEaGu@dKWXuy3|M-nrrMrcoypgWtUT;^x?XwoXf|V@hO) z{Nv+qHD>C^F?~(HgwA;)qp6dXL1=${1Ffe~Ad5k<4D$!4q+yCa;CjjBAu<`&AU%ZZ zPowAFR#979laiEFZM1bsxt~{rq zAlbcc-hD$GC!SfgYuv)AcRRzbk#g0rIbYslt!QugAjYv%KWjI$;n&~7qTa8+bWcph z(>uzS7*;IV)p=;i+b_K_e`L)>tupl9V^6o7eXHT~Qbsdvo<7xD2l4a8pjw}SKX}l( z|74Zi1TbCyEAdoQl@GEkqvTomS3!&qPoXkC-0yEEbf90|a6Z!S?)1^C4M29cc$|p3dW1hWsKa(`H`P_tk^6<<} RUp^I|m4EJfl`HD`KLL`j(WL+Y literal 0 HcmV?d00001 diff --git a/sparkfun/tiny/driver/micronucleus_bootloader.inf b/sparkfun/tiny/driver/micronucleus_bootloader.inf new file mode 100644 index 0000000000000000000000000000000000000000..ea4bfee5dab46f3f902064f056a5136bbce1bcc8 GIT binary patch literal 8168 zcmdT}X>Z#`5S`Bj`X3fXl*T};%JLbcE#Nyw5+|sSd~gcFhwKQEB|(&9w?Y4U+xK=j z+NDUTQtbi?2ukE0vva(e*&Y7<*GqA7BTc!Go^+%ww|Htv1OKTca*no+^wH9hGr2^2 zPpTN*mMi&Qz7x*gLSI*YM^96(9v{?1P6C(w;$2Ey%JB2~+tDnW*Jh=6$?5f2qtTn7a*2Ey|`W z%dR|y2DPQ;b-!FfV-MO^I!fa!X1|aPTr098>-b#&ts1B;`=?#>Z{cY}*3h?sr){*b zZ5^Xl(7J?qoB01TTa8?w3U%9q98GAdo!RdYZ`XJ`gS6Bht;b6_c_JUsulBgZOb44B z$&-xg7IbrlR<_5N&K->~;?^*e7HI8(k0uZh`1qPhvkn=lm0d{u0@AKQT54tmxLxx4 zSb-+kyNcF2My_Mb4n|Uwt6m?}#Cyou@f@fJ8SmryR@-lRO%WFz=xrCA(mPdO)B5d& zr=^IZUw!fRQ7Z-M>9IfJUc;~YZ(W{a#YK329rr5kn#ZMDIano+VtTjw>;|-Z>1}czg@)8BwqBe=)#&FVjlJ`^RwXsbm_8eLe+k^#uFhkhee{QD-gtz#QLg^_Spg z_AYYAoH1J4R~f=nFUjmmp(u=VfW_=|kVh1485(?~RW&gAkiW-xX#gEGHr-X)Hhg^MyIh)kMKxYrv- z4|T41V1(4(K32Fv?yJj3SUcnp_14(tdD@0Av*UQ$!+I;Dm0%Cq!Ai3_s(jF^k03s{s$H6Z64o)(hHyoHb`R z3yjZY@y@~J{Ds<_U8%_3Db8X0*wY^)Cv5@^AMkeIJwL(DV+VVes^6Qdh3yO&GJ^VK zjHxm|8OB|Hj3V8T7!WuaXJL=@|MNJR9KkQ9mBn^<-@YVOc?B$~9L!fO?86&4*_7dh z{?i)l{S(v{?tJ{!^TgdcGBo4I|$Qzg0vQ)(67LTv4Ic&G!}2!99t? z+3g;8eCb&=A9oB7X>Pq~eK1Buo;%xH%_`>s8MDDRv*tT^HvPMYXRSk6oroux4tAyv zJJ?UypYq*mj&87Hb?Av}W(`oYUhYy!H@`!zqU8t_8#pC7?2onf)W%xrMbRw$q2jB36}-k)J?*K@r8`5Apg3hT(!A(2E}IlSF_ zeel_2AlE#Ru}!N-DhDymxzwI;A6yWulsdCszZ6LHdo<kueqtnDNA#v_c^C2z|ej9?_{ zWmx8SpN{8FGr!iG^Vw??=x2QBfv%3KfcLsoP@9OOSMlUMyC<*ln2uwV#_8FWL_N-7 zw@(XQBIa7g<(DT$Ia-f7*2xcO3DGyjyT(99Ypr21QZe^hzAelB=N<>K<>T*+#t-uc zXY<6Nxup2bA>KD67~4fon)mz7$!GA3#VzLQ8P?_#;g$!CBXV5#TGCRB2*78C4i!oQuExtG?H{zv#vYz literal 0 HcmV?d00001 diff --git a/sparkfun/tiny/driver/x86/libusb0.sys b/sparkfun/tiny/driver/x86/libusb0.sys new file mode 100644 index 0000000000000000000000000000000000000000..5322e5b978a964f0fb601ebb75fae4aae34bbd87 GIT binary patch literal 42592 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 literal 0 HcmV?d00001 diff --git a/sparkfun/tiny/extras/uploader/49-micronucleus.rules b/sparkfun/tiny/extras/uploader/49-micronucleus.rules new file mode 100644 index 00000000..bed33d64 --- /dev/null +++ b/sparkfun/tiny/extras/uploader/49-micronucleus.rules @@ -0,0 +1,16 @@ +# UDEV Rules for Micronucleus boards including the Digispark. +# This file must be placed at: +# +# /etc/udev/rules.d/49-micronucleus.rules (preferred location) +# or +# /lib/udev/rules.d/49-micronucleus.rules (req'd on some broken systems) +# +# After this file is copied, physically unplug and reconnect the board. +# +SUBSYSTEMS=="usb", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666" +KERNEL=="ttyACM*", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1" +# +# If you share your linux system with other users, or just don't like the +# idea of write permission for everybody, you can replace MODE:="0666" with +# OWNER:="yourusername" to create the device owned by you, or with +# GROUP:="somegroupname" and mange access using standard unix groups. diff --git a/sparkfun/tiny/extras/uploader/Makefile b/sparkfun/tiny/extras/uploader/Makefile new file mode 100644 index 00000000..e8aadfd7 --- /dev/null +++ b/sparkfun/tiny/extras/uploader/Makefile @@ -0,0 +1,60 @@ +# Makefile initially writen for Little-Wire by Omer Kilic +# Later on modified by ihsan Kehribar for Micronucleus bootloader application. + +CC=gcc + +ifeq ($(shell uname), Linux) + USBFLAGS=$(shell libusb-config --cflags) + USBLIBS=$(shell libusb-config --libs) + EXE_SUFFIX = + OSFLAG = -D LINUX +else ifeq ($(shell uname), Darwin) + USBFLAGS=$(shell libusb-config --cflags || libusb-legacy-config --cflags) + USBLIBS=$(shell libusb-config --libs || libusb-legacy-config --libs) + EXE_SUFFIX = + OSFLAG = -D MAC_OS + # Uncomment these to create a static binary: + # USBLIBS = /opt/local/lib/libusb-legacy/libusb-legacy.a + # USBLIBS += -mmacosx-version-min=10.5 + # USBLIBS += -framework CoreFoundation + # USBLIBS += -framework IOKit + # Uncomment these to create a dual architecture binary: + # OSFLAG += -arch x86_64 -arch i386 +else ifeq ($(shell uname), OpenBSD) + USBFLAGS=$(shell libusb-config --cflags || libusb-legacy-config --cflags) + USBLIBS=$(shell libusb-config --libs || libusb-legacy-config --libs) + EXE_SUFFIX = + OSFLAG = -D OPENBSD +else + USBFLAGS = -I C:\MinGW\include + USBLIBS = -L C:\MinGW\lib -lusb + EXE_SUFFIX = .exe + OSFLAG = -D WIN +endif + +LIBS = $(USBLIBS) +INCLUDE = library +CFLAGS = $(USBFLAGS) $(LIBS) -I$(INCLUDE) -O -g $(OSFLAG) + +LWLIBS = micronucleus_lib littleWire_util +EXAMPLES = micronucleus + +.PHONY: clean library + +all: library $(EXAMPLES) + +library: $(LWLIBS) + +$(LWLIBS): + @echo Building library: $@... + $(CC) $(CFLAGS) -c library/$@.c + +$(EXAMPLES): $(addsuffix .o, $(LWLIBS)) + @echo Building command line tool: $@... + $(CC) $(CFLAGS) -o $@$(EXE_SUFFIX) $@.c $^ $(LIBS) + +clean: + rm -f $(EXAMPLES)$(EXE_SUFFIX) *.o *.exe + +install: all + cp micronucleus /usr/local/bin diff --git a/sparkfun/tiny/extras/uploader/Readme b/sparkfun/tiny/extras/uploader/Readme new file mode 100644 index 00000000..329247ae --- /dev/null +++ b/sparkfun/tiny/extras/uploader/Readme @@ -0,0 +1,26 @@ +This commandline application for the Micronucleus bootloader is written by +ihsan Kehribar and Bluebie + +It's been tested casually on Mac, Windows, and Linux, and aught to work on all +three. To make and install, do the regular 'make; sudo make install' on unixes. +On windows just 'make' with mingw and do whatever people do with windows exes. + +Usage on Ubuntu: + sudo micronucleus --run name_of_the_file.hex +Usage on Mac: + micronucleus --run name_of_the_file.hex +Usage on Windows + micronucleus.exe --run name_of_the_file.hex + +Raw binary file writing hasn't been tested as much as hex files. + +Every now and then the program fails once it reaches the Writing stage - this is +a known bug - but if you simply rerun the micronucleus command immediately, it +will succeed the second time usually. Most of the time this issue is not present. + +To linux users: sudo is used above because the default configuration under most +modern linux distributions is to not allow userspace apps to communicate +directly to unknown USB devices. You can fix this by installing some config +files, or you can just use sudo. Either way you're going to need root. To +configure your system to allow micronucleus access from non-root users, copy +49-micronucleus.rules from this folder to /etc/udev/rules.d/ diff --git a/sparkfun/tiny/extras/uploader/builds/micronucleus-2.03-SFE-windows.tar.bz2 b/sparkfun/tiny/extras/uploader/builds/micronucleus-2.03-SFE-windows.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b6139e11d52faa2aa5dccec0fdf2df464da573a5 GIT binary patch literal 13465 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 z z=oRplPj~nh_I!=WUcWr><)#JbtCosMTJ0H0jZi`S`a~fUFhykjd=Be$`hds#M?ov- znp5qPk&uXY{x&gRyvT=l=40a4Q6w^iBrO95Ce76GjkepiRX*pFmR!(=X*I71IhF`A zV8lZdM;6b5hexzvq@(>#gpK_$eA)PZZ6BKKxlZgfHcsW(Pv|`4!aUKAuX(@0#^NYyk$>m&7DVfv_8JRlLZMx})P$}u2?P3A%mkX&5D~_mJ=+a?*;f|P% zd&W%wzf0bvkRt*Hc$qCZA|=AdL`ur07!gVr9*l5p!QBaR0xHbLj7)kY#SoYKvvg`; zn03oSSPWVZ&^QeAJ~D9FR)Pl8Wm=}Uu6i#!!C7BU5}cjmGn0IrdXk1Vo2;H$sfY~J z#6&`};toR*ofP4(^s%5=iVz@IZu->SF`X8T0iZmFjN;=&6z1*mMnp=4w$)CuYK2U7 z*nfTmy`9)YX$DEOCz`GX>wVza&0u2^-u|T8nVmM047L_SO9C?4()sW63|m~fl9g=v zRtyWc@(!S!g?XoUxtX5^;!RbGHb96|#QU?%H*OJb4zkw=S=t0P5 zVQJXUl~Bv=tG%=v*Zg_byFZEYU}I&Q85n50oyJZ-5t8#_Z$-ly{%*!W$A8-5X6!$N z|7v(kc=|Wp@hVDjfgU(IT?!F}_2GJouLmVQnjdQaVVtuG)X8Rt<{~Nk{vpkAIm?Xq z5x+P$sSev_>_f1w8W(xtdk@kLg0Kh~4j}8h-sa4eueF4XuE0?g^ zZ3WPTQ;>;}tE0~ZP;w_$44s)?BqjY!3X9SDt=*1n1Z~hhdtF86-LmEB&!8wpQ+!lr zU3O=<8M%@z5JU!fkqpupk_>lqGL{nipQ~Zcna!WY;QB7R(sgGqId>DAZINv1lonvw z12WP(bja2!(OMvMQ0iybtKz|8cu;zA^Zp&776Uu zUT{ZGhvBla-Wk2jI-u>q(~3hwu%upkV%rmguCc-+d4gm9KEqdgUYh=MhoCDBD)PwT zW8#D!)L)@Wuysf(2kyKOINQ48@7gbt%&1WaMUWUX%}W!I9PQ#(EuBM=LVPZC^t&v= zY;)FUGnH3aMlPc6dyC$^<1dGa(XS>b-MfImFf5nWZ20BVylVus3aVs|3C-(8%dmFxZK zR$1%1`zjg3aq^@z+>$-}nVF50XhjQ{DyWc`FrWU>x#D>!; z7~D@{MpG}zI;Wb@y{nlYn3(D^%$#m}gT~+9bE|`2Wu$}oE?N3Ris(|FId%CG8 zLXN4t+w=}$^~|DbWm)m&>Ai9d9?`2mP>?-Xd~7=dR$ww(`{hgZ>B@kO8Q|8?Y-2`i zz}fZM{6hk09T1@*2rRs6iaFlYIwGik@!GgW zNo+pS{!TEM9b3NGs9^mHMHt(Id@jzNp~|~<`e>L2IlWvJ6GmExsel|z1`z=<2M*|q zj%n(9%{+rKL%YWVQ^A*JxWjyU*uk7M_WTa3uiDhYKHvd*A~7IPtvH)osp;WZed`_x zfV+QP#2~K&TmQ^4dXQeN)q$d1FLRr3^&;2ZNs1DVGGcaau{n5vp+-~a0gPpCj z9wxg10*vBY@#Wk%58NU-(A80JnDs;vUm&`gWo(>W$0!JKyGuY*6#FH zG?UK4)5Z|ONuZZ@k@vG@!t^P+t(eZ(ks=x6A26l3pryZSHFceJ_5B8B)kq}Lw`Beh zEY47*P0u8e4}l@TV?`eR38$S*1)r?-h(Xz(m9i#s`XD#EMQSg|-mli@{co?#$oa>O z>;2{ym`1Jn4FSf_ag9tM{x69NVTVwG9kUW347QJvhX(2l6DS%ErM8#LV)hq4b}y+gm+PJW z`1=!Lzum-!8;2v@a~%Iu-&4!-{o=E^nuRAprmCI%F2iQ->P-8CdUT9GMvJhsnr4j( zHZs^gM}+hTn~X7b5am4 literal 0 HcmV?d00001 diff --git a/sparkfun/tiny/extras/uploader/library/littleWire_util.c b/sparkfun/tiny/extras/uploader/library/littleWire_util.c new file mode 100644 index 00000000..c34460c6 --- /dev/null +++ b/sparkfun/tiny/extras/uploader/library/littleWire_util.c @@ -0,0 +1,13 @@ +#include + +/* Delay in miliseconds */ +void delay(unsigned int duration) { + #if defined _WIN32 || defined _WIN64 + // use windows sleep api with milliseconds + // * 2 to make it run at half speed, because windows seems to have some trouble with this... + Sleep(duration * 2); + #else + // use standard unix api with microseconds + usleep(duration*1000); + #endif +} diff --git a/sparkfun/tiny/extras/uploader/library/littleWire_util.h b/sparkfun/tiny/extras/uploader/library/littleWire_util.h new file mode 100644 index 00000000..1f060c39 --- /dev/null +++ b/sparkfun/tiny/extras/uploader/library/littleWire_util.h @@ -0,0 +1,14 @@ +#ifndef LITTLEWIRE_UTIL_H +#define LITTLEWIRE_UTIL_H + +#if defined WIN + #include +#else + #include +#endif + +/* Delay in miliseconds */ +void delay(unsigned int duration); + +// end LITTLEWIRE_UTIL_H section: +#endif diff --git a/sparkfun/tiny/extras/uploader/library/micronucleus_lib.c b/sparkfun/tiny/extras/uploader/library/micronucleus_lib.c new file mode 100644 index 00000000..0569dbe9 --- /dev/null +++ b/sparkfun/tiny/extras/uploader/library/micronucleus_lib.c @@ -0,0 +1,323 @@ + +/* + Created: September 2012 + (c) 2012 by ihsan Kehribar + Changes for Micronucleus protocol version V2.x + (c) 2014 T. Bo"scke + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ + +/***************************************************************/ +/* See the micronucleus_lib.h for the function descriptions/comments */ +/***************************************************************/ +#include "micronucleus_lib.h" +#include "littleWire_util.h" + +micronucleus* micronucleus_connect(int fast_mode) { + micronucleus *nucleus = NULL; + struct usb_bus *busses; + + // intialise usb and find micronucleus device + usb_init(); + usb_find_busses(); + usb_find_devices(); + + busses = usb_get_busses(); + struct usb_bus *bus; + for (bus = busses; bus; bus = bus->next) { + struct usb_device *dev; + + for (dev = bus->devices; dev; dev = dev->next) { + /* Check if this device is a micronucleus */ + if (dev->descriptor.idVendor == MICRONUCLEUS_VENDOR_ID && dev->descriptor.idProduct == MICRONUCLEUS_PRODUCT_ID) { + nucleus = malloc(sizeof(micronucleus)); + nucleus->version.major = (dev->descriptor.bcdDevice >> 8) & 0xFF; + nucleus->version.minor = dev->descriptor.bcdDevice & 0xFF; + + if (nucleus->version.major > MICRONUCLEUS_MAX_MAJOR_VERSION) { + fprintf(stderr, + "Warning: device with unknown new version of Micronucleus detected.\n" + "This tool doesn't know how to upload to this new device. Updates may be available.\n" + "Device reports version as: %d.%d\n", + nucleus->version.major, nucleus->version.minor); + return NULL; + } + + nucleus->device = usb_open(dev); + + if (nucleus->version.major>=2) { // Version 2.x + // get nucleus info + unsigned char buffer[6]; + int res = usb_control_msg(nucleus->device, USB_ENDPOINT_IN| USB_TYPE_VENDOR | USB_RECIP_DEVICE, 0, 0, 0, (char *)buffer, 6, MICRONUCLEUS_USB_TIMEOUT); + + // Device descriptor was found, but talking to it was not succesful. This can happen when the device is being reset. + if (res<0) return NULL; + + assert(res >= 6); + + nucleus->flash_size = (buffer[0]<<8) + buffer[1]; + nucleus->page_size = buffer[2]; + nucleus->pages = (nucleus->flash_size / nucleus->page_size); + if (nucleus->pages * nucleus->page_size < nucleus->flash_size) nucleus->pages += 1; + + nucleus->bootloader_start = nucleus->pages*nucleus->page_size; + + if ((nucleus->version.major>=2)&&(!fast_mode)) { + // firmware v2 reports more aggressive write times. Add 2ms if fast mode is not used. + nucleus->write_sleep = (buffer[3] & 127) + 2; + } else { + nucleus->write_sleep = (buffer[3] & 127); + } + + // if bit 7 of write sleep time is set, divide the erase time by four to + // accomodate to the 4*page erase of the ATtiny841/441 + if (buffer[3]&128) { + nucleus->erase_sleep = nucleus->write_sleep * nucleus->pages / 4; + } else { + nucleus->erase_sleep = nucleus->write_sleep * nucleus->pages; + } + + nucleus->signature1 = buffer[4]; + nucleus->signature2 = buffer[5]; + + } else { // Version 1.x + // get nucleus info + unsigned char buffer[4]; + int res = usb_control_msg(nucleus->device, USB_ENDPOINT_IN| USB_TYPE_VENDOR | USB_RECIP_DEVICE, 0, 0, 0, (char *)buffer, 4, MICRONUCLEUS_USB_TIMEOUT); + + // Device descriptor was found, but talking to it was not succesful. This can happen when the device is being reset. + if (res<0) return NULL; + + assert(res >= 4); + + nucleus->flash_size = (buffer[0]<<8) + buffer[1]; + nucleus->page_size = buffer[2]; + nucleus->pages = (nucleus->flash_size / nucleus->page_size); + if (nucleus->pages * nucleus->page_size < nucleus->flash_size) nucleus->pages += 1; + + nucleus->bootloader_start = nucleus->pages*nucleus->page_size; + + nucleus->write_sleep = (buffer[3] & 127); + nucleus->erase_sleep = nucleus->write_sleep * nucleus->pages; + + nucleus->signature1 = 0; + nucleus->signature2 = 0; + } + } + } + } + + return nucleus; +} + +int micronucleus_eraseFlash(micronucleus* deviceHandle, micronucleus_callback progress) { + int res; + res = usb_control_msg(deviceHandle->device, USB_ENDPOINT_OUT| USB_TYPE_VENDOR | USB_RECIP_DEVICE, 2, 0, 0, NULL, 0, MICRONUCLEUS_USB_TIMEOUT); + + // give microcontroller enough time to erase all writable pages and come back online + float i = 0; + while (i < 1.0) { + // update progress callback if one was supplied + if (progress) progress(i); + + delay(((float) deviceHandle->erase_sleep) / 100.0f); + i += 0.01; + } + + /* Under Linux, the erase process is often aborted with errors such as: + usbfs: USBDEVFS_CONTROL failed cmd micronucleus rqt 192 rq 2 len 0 ret -84 + This seems to be because the erase is taking long enough that the device + is disconnecting and reconnecting. Under Windows, micronucleus can see this + and automatically reconnects prior to uploading the program. To get the + the same functionality, we must flag this state (the "-84" error result) by + converting the return to -2 for the upper layer. + + On Mac OS a common error is -34 = epipe, but adding it to this list causes: + Assertion failed: (res >= 4), function micronucleus_connect, file library/micronucleus_lib.c, line 63. + */ + if (res == -5 || res == -34 || res == -84) { + if (res == -34) { + usb_close(deviceHandle->device); + deviceHandle->device = NULL; + } + + return 1; // recoverable errors + } else { + return res; + } +} + +int micronucleus_writeFlash(micronucleus* deviceHandle, unsigned int program_size, unsigned char* program, micronucleus_callback prog) { + unsigned char page_length = deviceHandle->page_size; + unsigned char page_buffer[page_length]; + unsigned int address; // overall flash memory address + unsigned int page_address; // address within this page when copying buffer + unsigned int res; + unsigned int pagecontainsdata; + unsigned int userReset; + + for (address = 0; address < deviceHandle->flash_size; address += deviceHandle->page_size) { + // work around a bug in older bootloader versions + if (deviceHandle->version.major == 1 && deviceHandle->version.minor <= 2 + && address / deviceHandle->page_size == deviceHandle->pages - 1) { + page_length = deviceHandle->flash_size % deviceHandle->page_size; + } + + pagecontainsdata=0; + + // copy in bytes from user program + for (page_address = 0; page_address < page_length; page_address += 1) { + if (address + page_address > program_size) { + page_buffer[page_address] = 0xFF; // pad out remainder with unprogrammed bytes + } else { + pagecontainsdata=1; // page contains data and needs to be written + page_buffer[page_address] = program[address + page_address]; // load from user program + } + } + + // Reset vector patching is done in the host tool in micronucleus >=2 + if (deviceHandle->version.major >=2) + { + if ( address == 0 ) { + // save user reset vector (bootloader will patch with its vector) + unsigned int word0,word1; + word0 = page_buffer [1] * 0x100 + page_buffer [0]; + word1 = page_buffer [3] * 0x100 + page_buffer [2]; + + if (word0==0x940c) { // long jump + userReset = word1; + } else if ((word0&0xf000)==0xc000) { // rjmp + userReset = (word0 & 0x0fff) - 0 + 1; + } else { + fprintf(stderr, + "The reset vector of the user program does not contain a branch instruction,\n" + "therefore the bootloader can not be inserted. Please rearrage your code.\n" + ); + return -1; + } + + // Patch in jmp to bootloader. + if (deviceHandle->bootloader_start > 0x2000) { + // jmp + unsigned data = 0x940c; + page_buffer [ 0 ] = data >> 0 & 0xff; + page_buffer [ 1 ] = data >> 8 & 0xff; + page_buffer [ 2 ] = deviceHandle->bootloader_start >> 0 & 0xff; + page_buffer [ 3 ] = deviceHandle->bootloader_start >> 8 & 0xff; + } else { + // rjmp + unsigned data = 0xc000 | ((deviceHandle->bootloader_start/2 - 1) & 0x0fff); + page_buffer [ 0 ] = data >> 0 & 0xff; + page_buffer [ 1 ] = data >> 8 & 0xff; + } + + } + + if ( address >= deviceHandle->bootloader_start - deviceHandle->page_size ) { + // move user reset vector to end of last page + // The reset vector is always the last vector in the tinyvectortable + unsigned int user_reset_addr = (deviceHandle->pages*deviceHandle->page_size) - 4; + + if (user_reset_addr > 0x2000) { + // jmp + unsigned data = 0x940c; + page_buffer [user_reset_addr - address + 0] = data >> 0 & 0xff; + page_buffer [user_reset_addr - address + 1] = data >> 8 & 0xff; + page_buffer [user_reset_addr - address + 2] = userReset >> 0 & 0xff; + page_buffer [user_reset_addr - address + 3] = userReset >> 8 & 0xff; + } else { + // rjmp + unsigned data = 0xc000 | ((userReset - user_reset_addr/2 - 1) & 0x0fff); + page_buffer [user_reset_addr - address + 0] = data >> 0 & 0xff; + page_buffer [user_reset_addr - address + 1] = data >> 8 & 0xff; + } + } + } + + + // always write last page so bootloader can insert the tiny vector table + if ( address >= deviceHandle->bootloader_start - deviceHandle->page_size ) + pagecontainsdata = 1; + + // ask microcontroller to write this page's data + if (pagecontainsdata) { + + if (deviceHandle->version.major == 1) { + // Firmware rev.1 transfers a page as a single block + // ask microcontroller to write this page's data + res = usb_control_msg(deviceHandle->device, + USB_ENDPOINT_OUT| USB_TYPE_VENDOR | USB_RECIP_DEVICE, + 1, + page_length, address, + page_buffer, page_length, + MICRONUCLEUS_USB_TIMEOUT); + } else if (deviceHandle->version.major >= 2) { + // Firmware rev.2 uses individual set up packets to transfer data + res = usb_control_msg(deviceHandle->device, USB_ENDPOINT_OUT| USB_TYPE_VENDOR | USB_RECIP_DEVICE, 1, page_length, address, NULL, 0, MICRONUCLEUS_USB_TIMEOUT); + if (res) return -1; + int i; + + for (i=0; i< page_length; i+=4) + { + int w1,w2; + w1=(page_buffer[i+1]<<8)+(page_buffer[i+0]<<0); + w2=(page_buffer[i+3]<<8)+(page_buffer[i+2]<<0); + + res = usb_control_msg(deviceHandle->device, USB_ENDPOINT_OUT| USB_TYPE_VENDOR | USB_RECIP_DEVICE, 3, w1, w2, NULL, 0, MICRONUCLEUS_USB_TIMEOUT); + if (res) return -1; + } + } + /* + res = usb_control_msg(deviceHandle->device, + USB_ENDPOINT_OUT| USB_TYPE_VENDOR | USB_RECIP_DEVICE, + 1, + page_length, address, + (char*)page_buffer, page_length, + MICRONUCLEUS_USB_TIMEOUT); + + if (res != page_length) return -1; + */ + // give microcontroller enough time to write this page and come back online + delay(deviceHandle->write_sleep); + } + + // call progress update callback if that's a thing + if (prog) prog(((float) address) / ((float) deviceHandle->flash_size)); + + } + + // call progress update callback with completion status + if (prog) prog(1.0); + + return 0; +} + +int micronucleus_startApp(micronucleus* deviceHandle) { + int res; + res = usb_control_msg(deviceHandle->device, USB_ENDPOINT_OUT| USB_TYPE_VENDOR | USB_RECIP_DEVICE, 4, 0, 0, NULL, 0, MICRONUCLEUS_USB_TIMEOUT); + + if(res!=0) + return -1; + else + return 0; +} + + + diff --git a/sparkfun/tiny/extras/uploader/library/micronucleus_lib.h b/sparkfun/tiny/extras/uploader/library/micronucleus_lib.h new file mode 100644 index 00000000..b691fa46 --- /dev/null +++ b/sparkfun/tiny/extras/uploader/library/micronucleus_lib.h @@ -0,0 +1,110 @@ +#ifndef MICRONUCLEUS_LIB_H +#define MICRONUCLEUS_LIB_H + +/* + Created: September 2012 + (c) 2012 by ihsan Kehribar + Changes for Micronucleus protocol version V2.x + (c) 2014 T. Bo"scke + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ + +/******************************************************************************** +* Header files +********************************************************************************/ +#if defined WIN + #include // this is libusb, see http://libusb.sourceforge.net/ +#else + #include // this is libusb, see http://libusb.sourceforge.net/ +#endif +//#include "opendevice.h" // common code moved to separate module +#include +#include +#include +/*******************************************************************************/ + +/******************************************************************************** +* USB details +********************************************************************************/ +#define MICRONUCLEUS_VENDOR_ID 0x16D0 +#define MICRONUCLEUS_PRODUCT_ID 0x0753 +#define MICRONUCLEUS_USB_TIMEOUT 0xFFFF +#define MICRONUCLEUS_MAX_MAJOR_VERSION 2 + +/*******************************************************************************/ + +/******************************************************************************** +* Declarations +********************************************************************************/ +//typedef usb_dev_handle micronucleus; +// representing version number of micronucleus device +typedef struct _micronucleus_version { + unsigned char major; + unsigned char minor; +} micronucleus_version; + +#define MICRONUCLEUS_COMMANDLINE_VERSION "Commandline tool version: 2.0a5" + +// handle representing one micronucleus device +typedef struct _micronucleus { + usb_dev_handle *device; + // general information about device + micronucleus_version version; + unsigned int flash_size; // programmable size (in bytes) of progmem + unsigned int page_size; // size (in bytes) of page + unsigned int bootloader_start; // Start of the bootloader + unsigned int pages; // total number of pages to program + unsigned int write_sleep; // milliseconds + unsigned int erase_sleep; // milliseconds + unsigned char signature1; // only used in protocol v2 + unsigned char signature2; // only used in protocol v2 +} micronucleus; + +typedef void (*micronucleus_callback)(float progress); + +/*******************************************************************************/ + +/******************************************************************************** +* Try to connect to the device +* Returns: device handle for success, NULL for fail +********************************************************************************/ +micronucleus* micronucleus_connect(int fast_mode); +/*******************************************************************************/ + +/******************************************************************************** +* Erase the flash memory +********************************************************************************/ +int micronucleus_eraseFlash(micronucleus* deviceHandle, micronucleus_callback progress); +/*******************************************************************************/ + +/******************************************************************************** +* Write the flash memory +********************************************************************************/ +int micronucleus_writeFlash(micronucleus* deviceHandle, unsigned int program_length, + unsigned char* program, micronucleus_callback progress); +/*******************************************************************************/ + +/******************************************************************************** +* Starts the user application +********************************************************************************/ +int micronucleus_startApp(micronucleus* deviceHandle); +/*******************************************************************************/ + +#endif diff --git a/sparkfun/tiny/extras/uploader/micronucleus.c b/sparkfun/tiny/extras/uploader/micronucleus.c new file mode 100644 index 00000000..14c1761b --- /dev/null +++ b/sparkfun/tiny/extras/uploader/micronucleus.c @@ -0,0 +1,434 @@ +/* +Created: September 2012 + (c) 2012 by ihsan Kehribar + Changes for Micronucleus protocol version V2.x + (c) 2014 T. Bo"scke + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ + +#include +#include +#include +#include +#include +#include "micronucleus_lib.h" +#include "littleWire_util.h" + +#define FILE_TYPE_INTEL_HEX 1 +#define FILE_TYPE_RAW 2 +#define CONNECT_WAIT 250 /* milliseconds to wait after detecting device on usb bus - probably excessive */ + +/****************************************************************************** +* Global definitions +******************************************************************************/ +unsigned char dataBuffer[65536 + 256]; /* buffer for file data */ +/*****************************************************************************/ + +/****************************************************************************** +* Function prototypes +******************************************************************************/ +static int parseRaw(char *hexfile, unsigned char *buffer, int *startAddr, int *endAddr); +static int parseIntelHex(char *hexfile, unsigned char *buffer, int *startAddr, int *endAddr); /* taken from bootloadHID example from obdev */ +static int parseUntilColon(FILE *fp); /* taken from bootloadHID example from obdev */ +static int parseHex(FILE *fp, int numDigits); /* taken from bootloadHID example from obdev */ +static void printProgress(float progress); +static void setProgressData(char* friendly, int step); +static int progress_step = 0; // current step +static int progress_total_steps = 0; // total steps for upload +static char* progress_friendly_name; // name of progress section +static int dump_progress = 0; // output computer friendly progress info +static int use_ansi = 0; // output ansi control character stuff +static int erase_only = 0; // only erase, dont't write file +static int fast_mode = 0; // normal mode adds 2ms to page writing times and waits longer for connect. +static int timeout = 0; +/*****************************************************************************/ + +/****************************************************************************** +* Main function! +******************************************************************************/ +int main(int argc, char **argv) { + int res; + char *file = NULL; + micronucleus *my_device = NULL; + + // parse arguments + int run = 0; + int file_type = FILE_TYPE_INTEL_HEX; + int arg_pointer = 1; + #if defined(WIN) + char* usage = "usage: micronucleus [--help] [--run] [--dump-progress] [--fast-mode] [--type intel-hex|raw] [--timeout integer] [--erase-only] filename"; + #else + char* usage = "usage: micronucleus [--help] [--run] [--dump-progress] [--fast-mode] [--type intel-hex|raw] [--timeout integer] [--erase-only] filename [--no-ansi]"; + #endif + progress_step = 0; + progress_total_steps = 5; // steps: waiting, connecting, parsing, erasing, writing, (running)? + dump_progress = 0; + erase_only = 0; + fast_mode=0; + timeout = 0; // no timeout by default + #if defined(WIN) + use_ansi = 0; + #else + use_ansi = 1; + #endif + + while (arg_pointer < argc) { + if (strcmp(argv[arg_pointer], "--run") == 0) { + run = 1; + progress_total_steps += 1; + } else if (strcmp(argv[arg_pointer], "--type") == 0) { + arg_pointer += 1; + if (strcmp(argv[arg_pointer], "intel-hex") == 0) { + file_type = FILE_TYPE_INTEL_HEX; + } else if (strcmp(argv[arg_pointer], "raw") == 0) { + file_type = FILE_TYPE_RAW; + } else { + printf("Unknown File Type specified with --type option"); + return EXIT_FAILURE; + } + } else if (strcmp(argv[arg_pointer], "--help") == 0 || strcmp(argv[arg_pointer], "-h") == 0) { + puts(usage); + puts(""); + puts(" --type [intel-hex, raw]: Set upload file type to either intel hex or raw"); + puts(" bytes (intel hex is default)"); + puts(" --dump-progress: Output progress data in computer-friendly form"); + puts(" for driving GUIs"); + puts(" --erase-only: Erase the device without programming. Fills the"); + puts(" program memory with 0xFFFF. Any files are ignored."); + puts(" --fast-mode: Speed up the timing of micronucleus. Do not use if"); + puts(" you encounter USB errors. "); + puts(" --run: Ask bootloader to run the program when finished"); + puts(" uploading provided program"); + #ifndef WIN + puts(" --no-ansi: Don't use ANSI in terminal output"); + #endif + puts(" --timeout [integer]: Timeout after waiting specified number of seconds"); + puts(" filename: Path to intel hex or raw data file to upload,"); + puts(" or \"-\" to read from stdin"); + puts(""); + puts(MICRONUCLEUS_COMMANDLINE_VERSION); + return EXIT_SUCCESS; + } else if (strcmp(argv[arg_pointer], "--dump-progress") == 0) { + dump_progress = 1; + } else if (strcmp(argv[arg_pointer], "--no-ansi") == 0) { + use_ansi = 0; + } else if (strcmp(argv[arg_pointer], "--fast-mode") == 0) { + fast_mode = 1; + } else if (strcmp(argv[arg_pointer], "--erase-only") == 0) { + erase_only = 1; + progress_total_steps -= 1; + } else if (strcmp(argv[arg_pointer], "--timeout") == 0) { + arg_pointer += 1; + if (sscanf(argv[arg_pointer], "%d", &timeout) != 1) { + printf("Did not understand --timeout value\n"); + return EXIT_FAILURE; + } + } else { + file = argv[arg_pointer]; + } + + arg_pointer += 1; + } + + if (argc < 2) { + puts(usage); + return EXIT_FAILURE; + } + + setProgressData("waiting", 1); + if (dump_progress) printProgress(0.5); + printf("> Please plug in the device ... \n"); + printf("> Press CTRL+C to terminate the program.\n"); + + + time_t start_time, current_time; + time(&start_time); + + while (my_device == NULL) { + delay(100); + my_device = micronucleus_connect(fast_mode); + + time(¤t_time); + if (timeout && start_time + timeout < current_time) { + break; + } + } + + if (my_device == NULL) { + printf("> Device search timed out\n"); + return EXIT_FAILURE; + } + + printf("> Device is found!\n"); + + if (!fast_mode) { + // wait for CONNECT_WAIT milliseconds with progress output + float wait = 0.0f; + setProgressData("connecting", 2); + while (wait < CONNECT_WAIT) { + printProgress((wait / ((float) CONNECT_WAIT)) * 0.9f); + wait += 50.0f; + delay(50); + } + } + printProgress(1.0); + + printf("> Device has firmware version %d.%d\n",my_device->version.major,my_device->version.minor); + if (my_device->signature1) printf("> Device signature: 0x1e%02x%02x \n",(int)my_device->signature1,(int)my_device->signature2); + printf("> Available space for user applications: %d bytes\n", my_device->flash_size); + printf("> Suggested sleep time between sending pages: %ums\n", my_device->write_sleep); + printf("> Whole page count: %d page size: %d\n", my_device->pages,my_device->page_size); + printf("> Erase function sleep duration: %dms\n", my_device->erase_sleep); + + int startAddress = 1, endAddress = 0; + + if (!erase_only) { + setProgressData("parsing", 3); + printProgress(0.0); + memset(dataBuffer, 0xFF, sizeof(dataBuffer)); + + if (file_type == FILE_TYPE_INTEL_HEX) { + if (parseIntelHex(file, dataBuffer, &startAddress, &endAddress)) { + printf("> Error loading or parsing hex file.\n"); + return EXIT_FAILURE; + } + } else if (file_type == FILE_TYPE_RAW) { + if (parseRaw(file, dataBuffer, &startAddress, &endAddress)) { + printf("> Error loading raw file.\n"); + return EXIT_FAILURE; + } + } + + printProgress(1.0); + + if (startAddress >= endAddress) { + printf("> No data in input file, exiting.\n"); + return EXIT_FAILURE; + } + + if (endAddress > my_device->flash_size) { + printf("> Program file is %d bytes too big for the bootloader!\n", endAddress - my_device->flash_size); + return EXIT_FAILURE; + } + } + + printProgress(1.0); + + setProgressData("erasing", 4); + printf("> Erasing the memory ...\n"); + res = micronucleus_eraseFlash(my_device, printProgress); + + if (res == 1) { // erase disconnection bug workaround + printf(">> Eep! Connection to device lost during erase! Not to worry\n"); + printf(">> This happens on some computers - reconnecting...\n"); + my_device = NULL; + + delay(CONNECT_WAIT); + + int deciseconds_till_reconnect_notice = 50; // notice after 5 seconds + while (my_device == NULL) { + delay(100); + my_device = micronucleus_connect(fast_mode); + deciseconds_till_reconnect_notice -= 1; + + if (deciseconds_till_reconnect_notice == 0) { + printf(">> (!) Automatic reconnection not working. Unplug and reconnect\n"); + printf(" device usb connector, or reset it some other way to continue.\n"); + } + } + + printf(">> Reconnected! Continuing upload sequence...\n"); + + } else if (res != 0) { + printf(">> Flash erase error %d has occured ...\n", res); + printf(">> Please unplug the device and restart the program.\n"); + return EXIT_FAILURE; + } + printProgress(1.0); + + if (!erase_only) { + printf("> Starting to upload ...\n"); + setProgressData("writing", 5); + res = micronucleus_writeFlash(my_device, endAddress, dataBuffer, printProgress); + if (res != 0) { + printf(">> Flash write error %d has occured ...\n", res); + printf(">> Please unplug the device and restart the program.\n"); + return EXIT_FAILURE; + } + } + + if (run) { + printf("> Starting the user app ...\n"); + setProgressData("running", 6); + printProgress(0.0); + + res = micronucleus_startApp(my_device); + + if (res != 0) { + printf(">> Run error %d has occured ...\n", res); + printf(">> Please unplug the device and restart the program. \n"); + return EXIT_FAILURE; + } + + printProgress(1.0); + } + + printf(">> Micronucleus done. Thank you!\n"); + + return EXIT_SUCCESS; +} +/******************************************************************************/ + +/******************************************************************************/ +static void printProgress(float progress) { + static int last_step; + static int last_integer_total_progress; + + if (dump_progress) { + printf("{status:\"%s\",step:%d,steps:%d,progress:%f}\n", progress_friendly_name, progress_step, progress_total_steps, progress); + } else { + if (last_step == progress_step && use_ansi) { + #ifndef WIN + printf("\033[1F\033[2K"); // move cursor to previous line and erase last update in this progress sequence + #else + printf("\r"); // return carriage to start of line so we can type over existing text + #endif + } + + float total_progress = ((float) progress_step - 1.0f) / (float) progress_total_steps; + total_progress += progress / (float) progress_total_steps; + int integer_total_progress = total_progress * 100.0f; + + if (use_ansi || integer_total_progress >= last_integer_total_progress + 5) { + printf("%s: %d%% complete\n", progress_friendly_name, integer_total_progress); + last_integer_total_progress = integer_total_progress; + } + } + + last_step = progress_step; +} + +static void setProgressData(char* friendly, int step) { + progress_friendly_name = friendly; + progress_step = step; +} +/******************************************************************************/ + +/******************************************************************************/ +static int parseUntilColon(FILE *file_pointer) { + int character; + + do { + character = getc(file_pointer); + } while(character != ':' && character != EOF); + + return character; +} +/******************************************************************************/ + +/******************************************************************************/ +static int parseHex(FILE *file_pointer, int num_digits) { + int iter; + char temp[9]; + + for(iter = 0; iter < num_digits; iter++) { + temp[iter] = getc(file_pointer); + } + temp[iter] = 0; + + return strtol(temp, NULL, 16); +} +/******************************************************************************/ + +/******************************************************************************/ +static int parseIntelHex(char *hexfile, unsigned char *buffer, int *startAddr, int *endAddr) { + int address, base, d, segment, i, lineLen, sum; + FILE *input; + + input = strcmp(hexfile, "-") == 0 ? stdin : fopen(hexfile, "r"); + if (input == NULL) { + printf("> Error opening %s: %s\n", hexfile, strerror(errno)); + return 1; + } + + while (parseUntilColon(input) == ':') { + sum = 0; + sum += lineLen = parseHex(input, 2); + base = address = parseHex(input, 4); + sum += address >> 8; + sum += address; + sum += segment = parseHex(input, 2); /* segment value? */ + if (segment != 0) { /* ignore lines where this byte is not 0 */ + continue; + } + + for (i = 0; i < lineLen; i++) { + d = parseHex(input, 2); + buffer[address++] = d; + sum += d; + } + + sum += parseHex(input, 2); + if ((sum & 0xff) != 0) { + printf("> Warning: Checksum error between address 0x%x and 0x%x\n", base, address); + } + + if(*startAddr > base) { + *startAddr = base; + } + if(*endAddr < address) { + *endAddr = address; + } + } + + fclose(input); + return 0; +} +/******************************************************************************/ + +/******************************************************************************/ +static int parseRaw(char *filename, unsigned char *data_buffer, int *start_address, int *end_address) { + FILE *input; + + input = strcmp(filename, "-") == 0 ? stdin : fopen(filename, "r"); + + if (input == NULL) { + printf("> Error reading %s: %s\n", filename, strerror(errno)); + return 1; + } + + *start_address = 0; + *end_address = 0; + + // read in bytes from file + int byte = 0; + while (1) { + byte = getc(input); + if (byte == EOF) break; + + *data_buffer = byte; + data_buffer += 1; + *end_address += 1; + } + + fclose(input); + return 0; +} +/******************************************************************************/ diff --git a/sparkfun/tiny/platform.txt b/sparkfun/tiny/platform.txt new file mode 100644 index 00000000..c438113c --- /dev/null +++ b/sparkfun/tiny/platform.txt @@ -0,0 +1,68 @@ +# SparkFun AVR ATtiny platforms + +name=SparkFun ATtiny Boards +version=0.1.0 + +# Default "compiler.path" is correct, change only if you want to override the initial value +compiler.path={runtime.tools.avr-gcc.path}/bin/ +compiler.c.cmd=avr-gcc +compiler.c.flags=-c -g -Os -w -ffunction-sections -fdata-sections -MMD +compiler.c.elf.flags=-Os -Wl,--gc-sections +compiler.c.elf.cmd=avr-gcc +compiler.S.flags=-c -g -x assembler-with-cpp +compiler.cpp.cmd=avr-g++ +compiler.cpp.flags=-c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -MMD +compiler.ar.cmd=avr-ar +compiler.ar.flags=rcs +compiler.objcopy.cmd=avr-objcopy +compiler.objcopy.eep.flags=-O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 +compiler.elf2hex.flags=-O ihex -R .eeprom +compiler.elf2hex.cmd=avr-objcopy +compiler.ldflags= +compiler.size.cmd=avr-size +# this can be overriden in boards.txt +build.extra_flags= + +# AVR compile patterns +# -------------------- + +## Compile c files +recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Compile c++ files +recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Compile S files +recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.S.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Create archives +recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} "{archive_file_path}" "{object_file}" + +## Combine gc-sections, archives, and objects +recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mmcu={build.mcu} -o "{build.path}/{build.project_name}.elf" {object_files} "{archive_file_path}" "-L{build.path}" -lm + +## Create eeprom +recipe.objcopy.eep.pattern="{compiler.path}{compiler.objcopy.cmd}" {compiler.objcopy.eep.flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.eep" + +## Create hex +recipe.objcopy.hex.pattern="{compiler.path}{compiler.elf2hex.cmd}" {compiler.elf2hex.flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.hex" + +## Compute size +recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf" +recipe.size.regex=^(?:\.text|\.data|\.bootloader)\s+([0-9]+).* +recipe.size.regex.data=^(?:\.data|\.bss|\.noinit)\s+([0-9]+).* +recipe.size.regex.eeprom=^(?:\.eeprom)\s+([0-9]+).* + + +# Micronucleus Loader +# ------------------- +tools.micronucleus.cmd.path={runtime.hardware.path}/../tools +tools.micronucleus.upload.params.verbose=-verbose +tools.micronucleus.upload.params.quiet= +tools.micronucleus.upload.pattern="{cmd.path}/micronucleus" --timeout 30 "{build.path}/{build.project_name}.hex" + +# USB Default Flags +# Default blank usb manufacturer will be filled it at compile time +# - from numeric vendor ID, set to Unknown otherwise +build.usb_manufacturer= +build.usb_flags= diff --git a/sparkfun/tiny/variants/tiny14/pins_arduino.h b/sparkfun/tiny/variants/tiny14/pins_arduino.h new file mode 100644 index 00000000..1a5711d1 --- /dev/null +++ b/sparkfun/tiny/variants/tiny14/pins_arduino.h @@ -0,0 +1,132 @@ +/* + pins_arduino.c - pin definitions for the Arduino board + Part of Arduino / Wiring Lite + + Copyright (c) 2005 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: pins_arduino.c 565 2009-03-25 10:50:00Z dmellis $ + + Modified 28-08-2009 for attiny84 R.Wiersma + Modified 09-10-2009 for attiny45 A.Saporetti +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +// ATMEL ATTINY84 / ARDUINO +// +// +-\/-+ +// VCC 1| |14 GND +// (D 10) PB0 2| |13 AREF (D 0) +// (D 9) PB1 3| |12 PA1 (D 1) +// PB3 4| |11 PA2 (D 2) +// PWM INT0 (D 8) PB2 5| |10 PA3 (D 3) +// PWM (D 7) PA7 6| |9 PA4 (D 4) +// PWM (D 6) PA6 7| |8 PA5 (D 5) PWM +// +----+ + +const static uint8_t A0 = 0; +const static uint8_t A1 = 1; +const static uint8_t A2 = 2; +const static uint8_t A3 = 3; +const static uint8_t A4 = 4; +const static uint8_t A5 = 5; +const static uint8_t A6 = 6; +const static uint8_t A7 = 7; + +#define digitalPinToPCICR(p) ( ((p) >= 0 && (p) <= 10) ? (&GIMSK) : ((uint8_t *)0) ) +#define digitalPinToPCICRbit(p) ( ((p) <= 7) ? PCIE0 : PCIE1 ) +#define digitalPinToPCMSK(p) ( ((p) <= 7) ? (&PCMSK0) : (((p) <= 10) ? (&PCMSK1) : ((uint8_t *)0)) ) +#define digitalPinToPCMSKbit(p) ( ((p) <= 7) ? (p) : (10 - (p)) ) + +#ifdef ARDUINO_MAIN + +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = +{ + NOT_A_PORT, + (uint16_t)&DDRA, + (uint16_t)&DDRB, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = +{ + NOT_A_PORT, + (uint16_t)&PORTA, + (uint16_t)&PORTB, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = +{ + NOT_A_PORT, + (uint16_t)&PINA, + (uint16_t)&PINB, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = +{ + PA, /* 0 */ + PA, + PA, + PA, + PA, + PA, + PA, + PA, + PB, /* 8 */ + PB, + PB, +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = +{ + _BV(0), /* port A */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(2), /* port B */ + _BV(1), + _BV(0), +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = +{ + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + TIMER1B, /* OC1B */ + TIMER1A, /* OC1A */ + TIMER0B, /* OC0B */ + TIMER0A, /* OC0A */ + NOT_ON_TIMER, + NOT_ON_TIMER, +}; + +#endif + +#endif From 4e70ad67964673f623e76c64bab55f2af6d9d365 Mon Sep 17 00:00:00 2001 From: ShawnHymel Date: Thu, 2 Feb 2017 10:04:47 -0700 Subject: [PATCH 02/34] Added USB driver with new VID/PID for ATtiny --- IDE_Board_Manager/package_sparkfun_index.json | 8 ++++---- sparkfun/tiny/boards.txt | 2 +- sparkfun/tiny/bootloaders/attiny/usbconfig.h | 4 ++-- ...der.cat => sparkfun_attiny_bootloader.cat} | Bin ...der.inf => sparkfun_attiny_bootloader.inf} | Bin 8168 -> 8238 bytes .../micronucleus-2.03-SFE-windows.tar.bz2 | Bin 13465 -> 0 bytes .../builds/micronucleus-2.03-windows.tar.bz2 | Bin 0 -> 13479 bytes sparkfun/tiny/platform.txt | 8 ++++++-- 8 files changed, 13 insertions(+), 9 deletions(-) rename sparkfun/tiny/driver/{micronucleus_bootloader.cat => sparkfun_attiny_bootloader.cat} (100%) rename sparkfun/tiny/driver/{micronucleus_bootloader.inf => sparkfun_attiny_bootloader.inf} (92%) delete mode 100644 sparkfun/tiny/extras/uploader/builds/micronucleus-2.03-SFE-windows.tar.bz2 create mode 100644 sparkfun/tiny/extras/uploader/builds/micronucleus-2.03-windows.tar.bz2 diff --git a/IDE_Board_Manager/package_sparkfun_index.json b/IDE_Board_Manager/package_sparkfun_index.json index 76b8c06d..41bcb374 100644 --- a/IDE_Board_Manager/package_sparkfun_index.json +++ b/IDE_Board_Manager/package_sparkfun_index.json @@ -501,7 +501,7 @@ { "packager": "SparkFun", "name": "micronucleus", - "version": "2.03-SFE" + "version": "2.03" } ] } @@ -509,12 +509,12 @@ "tools":[ { "name": "micronucleus", - "version": "2.03-SFE", + "version": "2.03", "systems": [ { "host": "i686-mingw32", - "url": "", - "archiveFileName": "nrfutil-src-0.5.2-SFE-windows.tar.bz2", + "url": "https://github.com/sparkfun/Arduino_Boards/raw/tiny/sparkfun/tiny/extras/uploader/builds/micronucleus-2.03-SFE-windows.tar.bz2", + "archiveFileName": "nrfutil-src-0.5.2-windows.tar.bz2", "size": " 13465", "checksum": "SHA-256:1873EA97B25F348850C4A045D250EA6143FACC93DE427D5B6648438DD6D636AB" } diff --git a/sparkfun/tiny/boards.txt b/sparkfun/tiny/boards.txt index 81cda9a1..0ffd7028 100644 --- a/sparkfun/tiny/boards.txt +++ b/sparkfun/tiny/boards.txt @@ -5,7 +5,7 @@ menu.cpu=Processor ################################################################################ ################################## Roshamglo ################################### ################################################################################ -Roshamglo.name=Roshamglo (ATtiny 84, 3.3V, 8MHz) +Roshamglo.name=Roshamglo (ATtiny84, 3.3V, 8MHz) Roshamglo.upload.using=micronucleusprog Roshamglo.upload.protocol=usb diff --git a/sparkfun/tiny/bootloaders/attiny/usbconfig.h b/sparkfun/tiny/bootloaders/attiny/usbconfig.h index a181a33a..738c0e74 100644 --- a/sparkfun/tiny/bootloaders/attiny/usbconfig.h +++ b/sparkfun/tiny/bootloaders/attiny/usbconfig.h @@ -7,7 +7,7 @@ * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) * This Revision: $Id: usbconfig.h 799 2010-07-27 17:30:13Z cs $ * - * Modified by SparkFun Electronics + * Modified by SparkFun Electronics to change USB VID/PID for ATtiny bootlaoder. * Date: 2017-02-01 */ @@ -210,7 +210,7 @@ return;\ /* -------------------------- Device Description --------------------------- */ #define USB_CFG_VENDOR_ID 0x4F, 0x1B /* = 0x1B4F VID for SparkFun */ -#define USB_CFG_DEVICE_ID 0x14, 0x00 /* = 0x0014 PID for Roshamglo */ +#define USB_CFG_DEVICE_ID 0x14, 0x00 /* = 0x0014 PID for ATtiny bootloader */ /* SparkFun VID and PID for ATtiny84a Roshamglo project*/ //#define USB_CFG_VENDOR_ID 0xD0, 0x16 /* = 0x16d0 */ diff --git a/sparkfun/tiny/driver/micronucleus_bootloader.cat b/sparkfun/tiny/driver/sparkfun_attiny_bootloader.cat similarity index 100% rename from sparkfun/tiny/driver/micronucleus_bootloader.cat rename to sparkfun/tiny/driver/sparkfun_attiny_bootloader.cat diff --git a/sparkfun/tiny/driver/micronucleus_bootloader.inf b/sparkfun/tiny/driver/sparkfun_attiny_bootloader.inf similarity index 92% rename from sparkfun/tiny/driver/micronucleus_bootloader.inf rename to sparkfun/tiny/driver/sparkfun_attiny_bootloader.inf index ea4bfee5dab46f3f902064f056a5136bbce1bcc8..7ad6083a8e05344f77e1c4aa84ef2c11be637827 100644 GIT binary patch delta 395 zcmaE1zs^DR|37O61%_gV0)|9}B8F^+G=@@!Jcf86uLKA)f$U0#_{oKgq7zLrVnIrM z8S)uYfD&myoC;(qFeCw$C@=)Wjc@}Sp}^qEkONea3^b+)s3#AoJ{f3{4p6NdP&^4p z8-aO73ZvJbH~Kr%A)8Blo)s!xF+Ybi%t$;D?oC(43-S$KygbT%L3>^OQ1?)AZ-HF;{ueoU~t^* o&y>$7Pehnae#5LKZ^WPvG#W%gJqq@;A%h-J6o@yQvTT+H0NRpDg#Z8m delta 313 zcmb7pNCXyS-H)<~go!j*KumiyUQvi2D5j1<08GD3MpP2)mIV~Gvb)GUNu zEip_c>_2aNi7XyKaRrDGF&*^KLBcF3frlAMA>^4N&Dj)P#HoO7m);a%ey?az`Y=nX YhKDxAkm*zPm@R(MgG+MJ&u=ofeh#2L*Z=?k diff --git a/sparkfun/tiny/extras/uploader/builds/micronucleus-2.03-SFE-windows.tar.bz2 b/sparkfun/tiny/extras/uploader/builds/micronucleus-2.03-SFE-windows.tar.bz2 deleted file mode 100644 index b6139e11d52faa2aa5dccec0fdf2df464da573a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13465 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 z z=oRplPj~nh_I!=WUcWr><)#JbtCosMTJ0H0jZi`S`a~fUFhykjd=Be$`hds#M?ov- znp5qPk&uXY{x&gRyvT=l=40a4Q6w^iBrO95Ce76GjkepiRX*pFmR!(=X*I71IhF`A zV8lZdM;6b5hexzvq@(>#gpK_$eA)PZZ6BKKxlZgfHcsW(Pv|`4!aUKAuX(@0#^NYyk$>m&7DVfv_8JRlLZMx})P$}u2?P3A%mkX&5D~_mJ=+a?*;f|P% zd&W%wzf0bvkRt*Hc$qCZA|=AdL`ur07!gVr9*l5p!QBaR0xHbLj7)kY#SoYKvvg`; zn03oSSPWVZ&^QeAJ~D9FR)Pl8Wm=}Uu6i#!!C7BU5}cjmGn0IrdXk1Vo2;H$sfY~J z#6&`};toR*ofP4(^s%5=iVz@IZu->SF`X8T0iZmFjN;=&6z1*mMnp=4w$)CuYK2U7 z*nfTmy`9)YX$DEOCz`GX>wVza&0u2^-u|T8nVmM047L_SO9C?4()sW63|m~fl9g=v zRtyWc@(!S!g?XoUxtX5^;!RbGHb96|#QU?%H*OJb4zkw=S=t0P5 zVQJXUl~Bv=tG%=v*Zg_byFZEYU}I&Q85n50oyJZ-5t8#_Z$-ly{%*!W$A8-5X6!$N z|7v(kc=|Wp@hVDjfgU(IT?!F}_2GJouLmVQnjdQaVVtuG)X8Rt<{~Nk{vpkAIm?Xq z5x+P$sSev_>_f1w8W(xtdk@kLg0Kh~4j}8h-sa4eueF4XuE0?g^ zZ3WPTQ;>;}tE0~ZP;w_$44s)?BqjY!3X9SDt=*1n1Z~hhdtF86-LmEB&!8wpQ+!lr zU3O=<8M%@z5JU!fkqpupk_>lqGL{nipQ~Zcna!WY;QB7R(sgGqId>DAZINv1lonvw z12WP(bja2!(OMvMQ0iybtKz|8cu;zA^Zp&776Uu zUT{ZGhvBla-Wk2jI-u>q(~3hwu%upkV%rmguCc-+d4gm9KEqdgUYh=MhoCDBD)PwT zW8#D!)L)@Wuysf(2kyKOINQ48@7gbt%&1WaMUWUX%}W!I9PQ#(EuBM=LVPZC^t&v= zY;)FUGnH3aMlPc6dyC$^<1dGa(XS>b-MfImFf5nWZ20BVylVus3aVs|3C-(8%dmFxZK zR$1%1`zjg3aq^@z+>$-}nVF50XhjQ{DyWc`FrWU>x#D>!; z7~D@{MpG}zI;Wb@y{nlYn3(D^%$#m}gT~+9bE|`2Wu$}oE?N3Ris(|FId%CG8 zLXN4t+w=}$^~|DbWm)m&>Ai9d9?`2mP>?-Xd~7=dR$ww(`{hgZ>B@kO8Q|8?Y-2`i zz}fZM{6hk09T1@*2rRs6iaFlYIwGik@!GgW zNo+pS{!TEM9b3NGs9^mHMHt(Id@jzNp~|~<`e>L2IlWvJ6GmExsel|z1`z=<2M*|q zj%n(9%{+rKL%YWVQ^A*JxWjyU*uk7M_WTa3uiDhYKHvd*A~7IPtvH)osp;WZed`_x zfV+QP#2~K&TmQ^4dXQeN)q$d1FLRr3^&;2ZNs1DVGGcaau{n5vp+-~a0gPpCj z9wxg10*vBY@#Wk%58NU-(A80JnDs;vUm&`gWo(>W$0!JKyGuY*6#FH zG?UK4)5Z|ONuZZ@k@vG@!t^P+t(eZ(ks=x6A26l3pryZSHFceJ_5B8B)kq}Lw`Beh zEY47*P0u8e4}l@TV?`eR38$S*1)r?-h(Xz(m9i#s`XD#EMQSg|-mli@{co?#$oa>O z>;2{ym`1Jn4FSf_ag9tM{x69NVTVwG9kUW347QJvhX(2l6DS%ErM8#LV)hq4b}y+gm+PJW z`1=!Lzum-!8;2v@a~%Iu-&4!-{o=E^nuRAprmCI%F2iQ->P-8CdUT9GMvJhsnr4j( zHZs^gM}+hTn~X7b5am4 diff --git a/sparkfun/tiny/extras/uploader/builds/micronucleus-2.03-windows.tar.bz2 b/sparkfun/tiny/extras/uploader/builds/micronucleus-2.03-windows.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..74abe5e8979717a99c9fa44bdc046bad2ae49db7 GIT binary patch literal 13479 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 V1XIXL0#c9oyOJrwgokM^reNyf Date: Thu, 2 Feb 2017 10:29:01 -0700 Subject: [PATCH 03/34] Tar'd the board files --- IDE_Board_Manager/package_sparkfun_index.json | 12 ++++++------ IDE_Board_Manager/sparkfun-tiny-0.1.0.tar.bz2 | Bin 0 -> 369238 bytes 2 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 IDE_Board_Manager/sparkfun-tiny-0.1.0.tar.bz2 diff --git a/IDE_Board_Manager/package_sparkfun_index.json b/IDE_Board_Manager/package_sparkfun_index.json index 41bcb374..c236a4f6 100644 --- a/IDE_Board_Manager/package_sparkfun_index.json +++ b/IDE_Board_Manager/package_sparkfun_index.json @@ -489,8 +489,8 @@ "category":"Contributed", "url":"https://github.com/sparkfun/Arduino_Boards/raw/tiny/IDE_Board_Manager/sparkfun-tiny-0.1.0.tar.bz2", "archiveFileName":"sparkfunboards-tiny-0.1.0.tar.bz2", - "checksum":"SHA-256:%%%SHA%%%", - "size":"%%%SIZE IN BYTES%%%", + "checksum":"SHA-256:1C671C33E6B04E20696E13B43F94C385E903AA267D2F9EFCBC894DC38D2200CC", + "size":"369238", "help":{ "online":"https://forums.sparkfun.com" }, @@ -513,10 +513,10 @@ "systems": [ { "host": "i686-mingw32", - "url": "https://github.com/sparkfun/Arduino_Boards/raw/tiny/sparkfun/tiny/extras/uploader/builds/micronucleus-2.03-SFE-windows.tar.bz2", - "archiveFileName": "nrfutil-src-0.5.2-windows.tar.bz2", - "size": " 13465", - "checksum": "SHA-256:1873EA97B25F348850C4A045D250EA6143FACC93DE427D5B6648438DD6D636AB" + "url": "https://github.com/sparkfun/Arduino_Boards/raw/tiny/sparkfun/tiny/extras/uploader/builds/micronucleus-2.03-windows.tar.bz2", + "archiveFileName": "micronucleus-2.03-windows.tar.bz2", + "size": " 13479", + "checksum": "SHA-256:D8D15A43CEB636B2C76ADEC7D30112E69DD67C445ECC3E1923798838E9F95476" } ] } diff --git a/IDE_Board_Manager/sparkfun-tiny-0.1.0.tar.bz2 b/IDE_Board_Manager/sparkfun-tiny-0.1.0.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..c765744c96770a10aa3398cf2002e7f72fe4e0a4 GIT binary patch literal 369238 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%0AxOjLdrHJVzdinB*p@* z7hh*)gforg3w&-vspBP(+5lUAGE8JUczmWE50z1uc4H*F1SKQNU~hJIfDOO>^ZObw z4H~I-?xW!lHIM~fpY>MQw;~1M*6~nL$xE*-HU~3hA=&HgvVYYOO&?!Nv4bGGAtH;O zssTMxa=>-K*#J5JkqQ8jKOPYGjQ`62%eWSPdVkFa$)dmxNHJh2sx;DUV{J6w>GH#` z<;GTX9*^qMUWa(R2^W$X0!ZQB8{Pb3V+olb**Af>-`QlHGR~NV_E7)`Opks-nqmLM zPum{U+makPIwb*+iX>PdLsq-m`l9X-b2XXK-~0>u0hW3@nfNdIZs&VFvze^1o+mvT z9N~sZ4YV2PNNoLEP->w#3W8PrZ2PQrU0V}Z(mkwH)~}8%g^nm7qKFa39JYjn39$Xa z_gokj<11?k`C$l0`7``D5F2j9Yp@GDs$<_PH=s4xTEaN+39?LlIDv}!XPjKuT++O6 z;HV|?uK%|A|J{`=)+5hC8Z< z@3)FE;Qh&hPeQctF%b)_vqokav;R6BZ7jxP3Gk!?d4)9aoc`BVhX1Fht(8c3BktR- z4|nqatR3(GV}p_^6v!Bo5Wp3*KmER%^F7}4(;dvqO%cF(_dasl}qDoY~*54H=U`6I(x=h;E(2U~c=k2ch(4U`)dGweOLfHu*+IU|{f; zAV@V=hlk7a#0GAAfe?olKq^+8`!XU?U2gNz?k(a>6_jve=w)7FpYY_@w(Dmdmb71a z?to>wWa1!GVS%Q@BM*hjw=uO&146v+bzo3)nGrF&6(wqo1;jmILJ`%Hji<=-m9iVvrn??hN_g_CP8!b1zH{SK8(};K-%3o@^=Vzd9EV2!gHz;iY zJ3z$0DM;mdR4;|)F&-nA$>i&0hPBBf*_d=_clsB{-$D`iuH7Pj9b`J<9Ck{IS(<-=)tW^ZmwzC+fCR-#} zsJf$Ti%OzJQxi-P$rB@}GeeFhlNqNYDQFa8#5HrEcD>yOQXM@nCrxy%fy>RD^spF^ z^;4#GFus0y4a9#v&vL_1{%ACdAc!yg=u0F+|7%ZmAh0$RH%2h54;(5aUVHg-je|@@ zB3Knia<5N}&T1P!$MD^4wlXfsR=Hu>q(0sfgphUP8&4_CD>`AD)n{0}BqJ3bjsl`x z36%zWEgUkQsCLL-Vd-l(>C8#^fqvw=NmJ9H=lO_oPG>})mcIqc{h@&SJEvnwUP+cE zP^aFYN?tv$ErbWJK$K*FNAOWW@-B%*@iS5gDRfu^C8YumLz=7r%q01JFH=K9fa^&n zWw&j(aTyG98+1ZgX95k>#FWNE2X*;h@a*YSB|2o34|5wT4y!Sa;>!dEq0<2fhXmPR zlSrCpH{LvF_mgw7$-$BY(I!w%SU7_=-rX7C$kKWaY$68)SnK6ZAUo$oK zmq;-Ug{LVYNhzeSYk4rUz|j##a%E46PFWOJ0W%w6;6orK!ViD^4+oF8mUW#D6fOG}$@F0@<^ruW1|}eIK|?Xol`K` zw>GP&lF;N7vrK`tU6of$6#vnGgcq&G%8JGs?Rfs)WP?vn$C5DU3M0qSM2p{t%!B7} z88${7o?VlKhU^KjIK$~qd<4QSBv;0&1M_`4v`RVWtsjR)77MvEwcCZiX&fILdQxqH zFE96gf1Cc7;{E<#xV2B`7EU5o)k3Lp-{)O;;r_6`zJH#5yTn}$e$|(Lo2sC_S(N`A7e zeck!_$6?*{@=sG=;&U>${5X5Kb2^?I(b)N2MIS`g5%9yc>|_W> z>9iqcX+uD^*ufDjlnly-F@IeQVWc$;rT8maTk1FsLC{_2tLHqR+YKJ=xYxh(%RcHobPE@{|sJ@-$oNe!;i zPL6xg{fqp`l=kuRbrO zZ$lc92+CJqBw9?mxQFWA9C|!TV?7#qWKqPQD}HX>^!v&&(a@F+agL|-JKk^8(c~{O zkM7aVuZqD=6MOCEc$M_8?Bc9_0m?S+YIZzdKX)?T2ORM2i_8oK+sgf;%gw2s$@BE` zF;U0{LI=6cGMGpk7JRW@s%#4k};PGcHQ4~Zf@)pV%VplP`eL%T-&rVPB8NJ_W{qIHI)(=y} zqH=*Jq-UMTemOTdwN zA>#F(cq9ih%-U3;))Y|9j)aws4b7AdSdqi-6j#XLOUUs%&a=Ev27N~OUN?i>u>Xt2 zSb3zdZCBvo^H$^+dwkOKLJc}7JZN~46D2g@@;$MIWaK8_CdVq~A)hw&W*X>h;d4Jb zkR&k?Y!U1R*6{K@qCDEOEm;^r%GEe{4GK}wRjGH8agXYGT#rQcd?(2Bdpw*T8Ii2! zgynKZcj6?EH^Gd&Ur9$Gc|FAZ$~htwjruvTJ?bx!T%({L|4J{ArjY%|Lw&GsET{t| zKzbg<`=y3M$4oFv)00M@VT-!NIE;B$GF{KU=xxM;ZB-Vdo_WW7c#1FUcrrA5H_XvvMV#$jXG$ zj0G)Btaoz9KZMWNL9Zodv-oLX@hRo^aF{nzo}m~9Rx1WZooWoXm9aWu*7GX7ZaRA! z+5qLwjtFRMj$Nj*s*GrjHs1@ykuHXY514vFt0{+h0J#_HXzF%$x|rYae1C0+%f){D zK54{9&-rZYeq=?k1cR1tr2<6@&MFMx1l{hqiKo39{|O-Iwht;2nJp*aZRqjI>@zyf zqpj~SPX%W+=1Zz+BfeqNGitl4kt7dgaK) ztQqPjrmL87ZaMnf1d6`Y^*MuNbe+jx8jQhS*1vY?DHSgSN>yD1=0iJ)++q9OL>PGc z!?B%=tj3Mqzt5K+ERhdO;oo#;?-KRPjDn(xShl?HuiNN6zh&S~xu5@dU)N8Yrt$-Z z+#ILpm=UDlltMjQTP+o^U2VM+`A}$#@-uz6n)@|yO$JKwzecNs5l9Y|q4ViGbCV4I z!>^KA>4&L%Xsvw&vM8T#_GT|u7;g%EOm$msD^cjK4PdVYsw5t$EbanS3>Wrl_X>KS zpim_(ZCpCYMz*W}9*fn-XFV?(ZqUbjb`vH*m`ypH;I|)(V<(VG46eO4UHIWI6$|X0 zzP>G@ioOpkZ&WL2VRjs7KzdWzs|`OT`CpquH~Y{&27*`jOzc8@_oPu(BxGbh-$qzn z5bMAPx}gLBz={Lw!w=RV<&6kS!)KrGAnwM20xW1qtElMt`^66c><%TJmr>Zd!v1XH z_N5OAlT{Ghbb7y|8#L1^)JaL06ateHy{gY6$wp8)=5>5}t5BVld&13PDNR-=yHv1f z@IB^zc;?XY|4$F=82=Na|M=;3qjvBDYn}!U8$*dvt{7h3WeQDqd-UMMy7&F#+3PhI&RyOm~sR7Mh;(-&a&w^4VS$OVv>CE;Ora zBiJSuked{jP|XYFQs-8xJc$g-SPw%-GTZT&>pP{J>^?Z9<9%^J;IonuKzIQPYtFl* z8XV-u^{b_~wLm((p3jzu#Ss%IGTlWrreX6n1vsI$;jPF}HC zjBQNb5{cN8Qsom$h12IS*|bn+wS@yaoLR4X(pwVRdlvQPIK0L)*q?$#o~4}r|KO9U z*n|R&GeQPt)~bW_9u*34Jbkl0H)bx(h*`$!Fnog^a)dLH+T^GuEtq^J)mJ(QV051b zvF{wYdb$0j9BV0^!i(gPI$Kba7~Cm2gXwnEjD{-BjcANzXVWc^!`&JC(1j)RDpbZ+ z#`@kEW4AJ8HTq0-y2BBy4{w7`m<(K%WnV~q_Xs`+J0V1Rr=xhQ$Amx6+_j%O$ho5M zkMz;!vigjzzPF_(v285Ls@<}vGf=SsXy-gydNE3^6iWfYF=Y+KDpH<97^6%E#zPe85K!>W1#XrsH7$qQN$-sH zUWUn?iLjAgTKgHz(JjQ2^U$~-8X2RD1q>OF$v4uAC)Se)l%hlMD_G(f`GJ)9AM$k; zjW^FIiVS_)GgS~D8f`FhaJj{pHSLoEAms)Etd$qdwzI=Cap=;1qm8E_V$sn> znAncndFDCCJ}z2;rHLfIip`B;uPP;=pUBIL62ViIpwF3T#K^QRCWUQmyl!(b)jNS= zJB$+!Mq5;hhB2um)ic!T=M$q7>R=K!&7;+`3fYFR(7{zI&<^%wP>`XG<33&cPsm~S z`cDph$UG6;sci1(3{z1vGFs=Ho~C+&qBb((w5isOsb-vlS>rd?sOF)9)&$x(sKKt9 zNxG&7M8>(y&|((v<-OR9x+hIsr7MgU$-`gkmpxefsvGglhH&g{WhMcl5p847ZTd6@ zaCL;SPh%Q%W#&u1!+Gq}-lhvO03ozI&J#xJTb*{=vn^ojzO2+mwo6HOYlVTe(Q9cybcy-BOGkPKO&_$UKputyr#i=G_?()rS zSB#QQI?L4>@@hfVQam&3B#!;N^z#3;K0G>2IYDcv;miz+MKz<$Ysc}2z~k4$LHA-^ z)h!eY#dqTpZEu6`Y8!B0S_rp26D>pJw`u%qd5b>8akyG;qSJcYj&5MH)HT;5KuYqD zr^nciP5WtHcH(Z=)bh5oHHkU+wU_54B~q*9D57aPjb?3L2@~TQN(}YEYtDL$W9Y7g z-sNCphD7G%wuH$#`n`N2&B*3;d|J=ip{K*k$u?^8wwVkStcsFTU#-z zdZ(8BwKD=hFsL;~>@z}PVOkCj=6)j^Nc2_P;kcEZ{vYHbOxob?EO^M?u&23@@VqUabb+H^MjyS@|?;{o4 zOr19hM?q>jtG&&q!8Tnka}!Kmdu0o&r;rv72MEAy;rC#8fZW-^!MV4$-7{x^#p)*`WwZufL6H-W<`{@IM+Cg7q@y)%t5v2!iumfGl8=mi z;(T%FN|B-bZ@W-E%4SVRPqUq?snF}Yi@}F?J%IM5Hw%2%F`0}~xVjq4ukzo920?Y- z=WyLzYka(_4vs|;Ju4yBbQNWVy4Alsk3ahcQC=}pD!kmJx{cI{T*AlXnY`ky5zMHW zj_XgPkDKG>Q$+;6C@TSVO(hKo;sZ#``G?kladQy5#?2ojm)RUs+{rsm^@tRzRVZ34 zr3mU0Xodng1Jdmc53KMV(w?thaIbaL$QP`zZ0D zZUEvty&eJeJ^uvg^3HXAPa^5ln-*qy)tGDk77Te08K#t%nLsL|?vhE(a zw5^;aI+6*&SOXqDY`I+to$h@c&%kHN1{un*?GuZuBzge4RTL)=Kp^GXqZbZsvXvau zr!%N$CPIYOic>?x&CXFRBPg#J6f z%Y%bd2V=}*WQ(=#nYG<-Cc2;3k8jYS;KVn&yrq^P1Sbw}7Q>{`oVPM}m_-~K4qpX6 z7aKO&$YlE)yS!rA8XgfBTg|QfW)=oVBBUrSg{Iyo+0mh zVLI~r7UR*EUGPYI_hSBBAL{LF(j;M}sesS+J6dK}O*d(v+b@F5Zu?fd1HLofHs%%X zW=_qnMEaPHBoFZP)wv6_mU;V3u{>Jx2?{h=1TEJWt!6b2ruuWU8Y(9!VGuKXUW(bZ%$`fvPsQv=08Z;K;7eZ@rK4ETBHj0W-s z00=(#3JF?p5EX!ZAC^yCIJdQf*j7*PNTF!Z6~F~`>OW()QT5@xd#8k zq4O=>`2qP%X9rg9Ju9F@e16_y-T##WA_ zk$F=oyCZs|kz~*cg`@N87;O}`@CIX}k5yY*6I6`1j7(IQ7_BlRn68&Bd1WzV4-XSQ z7?_+re9RJ`kKJ> zj~_58hZP2Msuu@XvqftrX-x6F2E>gx?tPLKhM93}8t_=Rw$((9n8HwH3^o=On`NrQ z89ari$(yiwo+qN(0rXm%UfrXT+dZHE%9<)x+Y4m@LQ2zQsJv^LRmKBm%FH3fwEVEU%RS7_o;?)*h8p058b(k~)X#~#Zht6ug%CX4c4SiAS9038cZrP-^#WN8jRFSbW zSY^qZn-!N(+9hNlD=sffaK&h@j1{Aq%-QgItu1+09TXZO0utCbMiVm9I-MWJJH80u z&zqqT-wxvXWTrZ+viY!J4Q*plUoU`5RbO2(aIzaY2@hW4Tu|x*qrwAQXOm66qFhI} z9A8skE@=v+xDixclKTwt0+LP03B!_+B1X|Vl*4S;+ADzt zl(^rO1LINA(b2+^E&Q#er3Wx%5D}Eiy`a!p!N2MxLUk4ZUJNBn=3g)pKv;B2u@gW|V5{!-_4$iP0~FDyu*}u18}%;=42p_Bg1%AT z?r) zvcRvS@F_8ykaZFvay(?S=2f%aapHYDeH*#{l%$x*#BpXTXjp5-{)f-&=B##i{4SKq zj)QlYL}y0(u#IX|R%-`S)15?-)k~stM;gaOgalN&h&Tn~p=nV-2$us07vj*0Lo5-b zol=*;T4YqsMu3Zr4|UTUYz6(HVodCQ->aunq1yVn%|5RA(#{Q#Kz!S*3i?M|)`}cC zut73{R`VyNgFT@_LENIAZUX82;So z$nmK!g}`X)UPDR5r#TxT(y;I--SqGVf`DyH2yn$Apkq}cDU4J#Y74L2TAppUjIl-( zm08M~RGDJ}#1X};Ip;gRyNOXhW>awP^m+WtXweJZNz08v$S5#MWitv@Dr400>j5xZ z2M5*-5k@rAskp~ZaA`O)th=o3+B1u zPNQ65CGEKeB5eay!Qp@Mc6*n1A}5?Pw)IdGetS>T^XJdrtiHl^xN2-C+0H_ry)YM3 zRr@zJ-PaPLkd+FmVhIHZ4a4(|a4|qIj8!mx#pvm$dj>s-ZfYYC%-QVKXkn`RIBl<= zY9C+S>N8=t)xHz9i?0R6`ClL1*NHiP6XH?I^HIb;Q<&0>wAWSnpnMJRX}o4m)>o>O z5;OK5ot&Sc_ur)UzIpNaAB)WMue>8HI-iL^9Rm)<3$6&oy`TEG(Fq?;Xm|KmHaO_$L3wJwSK&kh2=24OK&fUC1?1?wWJ(4tEwcFv*<>H z+s?_V@y*WAdk(YGKF9d zqygcT9m!21+y#FqT!XYr<{&e*4zt<84=Vw*ZoXG%GD|=jLC|ZeFb3t~+92@?LJ`m+9SGW^yl;bcjj_$Gp6I(4XWaI6gT}N?vDJJSK&k1>}L3V zv(LG0i-pcz%{EJXcm{ieCDe2H1TC%V--I3%;g%FCm2HDmYB9&H5k*pKkn|@+U~B`E z^CIUAw3P>k9Mr?Au{*yeBU!c|(QJS=G1zTCdiDLvNLVp%zUD2L{w!$Pf&$G?($5wz z1@z=>uz`l<-MuJzyz-?DY!$RBWT^i@DCkH?$3lD*3jRWQcvF%eZX+CbQoGhO z=2Gg<)c?~E$He@p%wA5;Z9(aw8nNjZaOsB&a!?^^IVe+?nk)N~U?tR;rHMm-;GmkR zSW3)rQtQgW+Y6EfN zS|wLgPoTlpj_yn4Rp0hZjTn0PtHH6t^&c`ywsdrf^2bLlJufnQn8Ho>e*Q<|=w<9x zt>m@z* zHlg>)#!@Wg)L9Nyvyv#f)gh)`xisN9mTysLPkGG1o<A}t6lg?^Hh)@z~PSx{`FHk=L3Gc}Rq zS2$D6*x9SU=+ZILjj=00tJ_*jRw5kI<-~JeBh#W-NO&~`J&wEMLq~5~J`_0$6;KZG z>5{R6gRebN4#pM%uyAY~)M|<%A%uilMWrWTbC^dn&x6nlXSGsn+L>y9mpC}DG^8hY zWwZx&_|ll)B4?C@+Hzt1lP(8s`u_LO`Rz>_bZ$}TJMCQ+CVfHR1q|iY%jD?Kr6@C@ zC6F3Mf8(m?#yZT7%(tVju8n4(fS6(lS?E+j%&UGGsWQKE%~4dQm?1=?P?Q}}@R)0; z;eM^SLCAejgl1kE^aO^OXBaHRw?7xXrPUsU0Nx8|8Nw$eJK!~|jWSH6YxCDZmDHL# zr=mFLQz)I0tUs6I%8RYD+S?aXo2BP7QG4~7@U@3rSM5x(S$>@7EIf*%V8@Gu=%@-SZJ)dRs&0hXQQv82ZaeKcN8>K$2e9|d#J;r%#j7{oC4+hZ4?_c zfg(dTD+=%xQ*LA?f(3mQ1B&svCN_F>&to(I4FFm&We{aYu3~*mg@KzE^fN{@BgNjn z0|}}jC8%vq-mhCz+ikf;%x#C5?rl_esxZg2mRHyi?zl1Q>u0YgWdO~-d2hp;mcPl^ z$S9v))jS{Jte>&gWqxTf zF_i0y69#r}3O2e{KI*gbAhgWOQVpjJsl!z%D=kq7CE?W~PK3Gdk4s-!^k|lBDQJ6_ zgP~*}P6iAI&N8~XJuf&eQ;^&q>_;qcSq#?oblp#L5Hjsk8k>pNRb?-)dwt(&Jr^CG zo{M1p)mmGyVlslLZG6Ga=0mp|;sAj516!3b12u^8gK7arYmg0a@l;+w77*!_gmmEo z0HwE#YuWkse`YZ5SKG}%YJ4EFro5(mmJ(;3Yty|GJ2PjzwEbn_!}eT@rGG06{T?^z-xldOXo1DNL4KNV_?1s{ z;;B;7A&_D54J$XBVp3{F%#r-4f(!A)8C11`Ax@%EB4TC8WX&~}V>rwF4x7NA$Uvz% zu&8skMOaL8bTp%0P9iHL>1m|C-J51JNphSfJdi2^h}NTy@@c(Sjb=a2<0Rpg4yeMR zh^JNQlT02|9cMjELmfKZHln(~d1u^=(t&y-x+wvqfm3`fQjP(yH)mvbCt_YtsC>*< zX5m2eHFHf!OiM^$5tVX@TiG7AJ>edWZYGyh$e3vd56ix~)CWl&J$))2QSVNP2SneC zGE**!;J^_EkxHTqq#~~GxIrVtC4`VHQ-Bw2Ex}YggPpF6t{)Os1(lLSTDLSWxrLbN%On9;E0$p}a*!1a>VpCnj}J`&p1YIU z+y6Re-+I;c9zQbT%@g!7CdE|p3@S)gt5gds&j^jnj%`UaTrXY_8}&d<)%=E4&D>ly zkC+fHMw&Nvcze7vDV%SHa0wXB8sQaT*CrRq*?|FX49q-N_d!qGR)%~S3=H^m34=-G z0pq+0xrxl;JaUs2d|;dX(l3s2CP;heoVWBRcmY&wpU{74{Kl92iJa2QSaNf_Ri(rw z{6AyzxG%~ z7`hOT6!OR*qJ#OL8L2eAJ&>1VhN0~|dE7kd9yb#{s#Tks`B|*5l+~n8iO&(}g`|Vi z?x{@XUt>an^EK1(86@r=7-jM2TLlFskpE-PWHiVN1a}W5suA{Q6okz#+7g#7f!MIE zqVq@bu_J=d;?LEWf+lffL*~tp_WxbOV~qawE~uYv5k3SF&*7AX=O1g+v(Gbvr`f;) zq6Y+azz%XJUy_0KA=ZKt2Hfa=EO{f0PV@zM;&BnCfSfTva*`t=41x2aR1~}ujtlgWb&yZWkLuci#43b8nRk&S9=(MaD~6Dc zJ{S)}&V&+TH<~6~pm*Q^<+UbO`>2$Q7*UAWVk84oYWIT~McN>hbV?U>VW0;Irw~ne zb%C~W01Rd6q=1T6mzE*ffQDbA?usnPo_Y1uhr)`dfq=-q#y(xCRkV%PgTP>NddyuG zFzeYSbNYxrRoXXoeH&ss3gW}CWDPs>BMkquCFCR4GqqaeWEBzG_lJv2@O&_PnLCXC zeUQ`{CMY&@Nfz;OrRxUMVcCWN-tMb6TDaT8vn>2G&XmVB3Mk!u?!{GeXv(1@ApHMI z3Qa_9X{jUHK;VPN01ng;$_eVlPXtc1S5qWTsMHXWMHvBpdIux}=)I*OxH`Nh(d_9= zan~06s6b!94FIa%SWsy|{R8Ho|IE9cYqy|lvN~#ygq}5ev zS8*+_!n|0`71ii_d)Cq~_2Jp*sbz@aCL@!0Gc7>vP#XVP2)DE21>6QrHq@T;_H7{F zJd9mC)XT_><3oY03blkf5O9LCEJ_0fwDRDskaqVw#%Xe6kBf|%LxJAW`%)dq#pnNvpHF;?-_`?uEu^&HVj;M>((Q@4hc*|3?29Ee-nli19i1s=XV3TXPz2r8=*7ozr;TE~0~t+xj)S zZEkDZxZZAP^$*GPT(Zf6&v)Exyx#U~t}y(M`rY;RJ+^bArtbKDP4M`?Zhr@mqrh&p z?fCFLA5y(G8_D)OAG0+_W4H4(&+c}cd~JT;Bf0cH4=cIW;s2I8i;1jfy~g|a|8w`X z#`qqW0{h}r^Kq}(xqtIJ{W1{ge6J@phU4!%4ofvNul&E}pOfu3JN~q*GFp0mOX~dn z%br$;@BDhd6ItP(Z<&YQcOPAMHIDJ~8IH@TW-5{YqirAi`d*#)7w5>xa{lMz>uu_H zo&?PgKt{Ui{@KfqlV90&KOOJBA@>~<{jSj*!IsbbT5lt_$#IM4=|2DI zZQ*eFfBTWZGq>z|uahxH>~wl=gLA#c#`o~@uD5tkpN{t{y7_tRwCrt_EuVYLaBO_v zQ~7*dms9?))xIauzMMTN`SEZ5V(V`8Kj&wDw6^Uz%@#M?|8w6@U54g)E=yb2{+J#e zwyFy}AB^t$az_T%3*1ZhiK%sXwYT!WkL%`SHhBZ^^6B!O zH!REVRm=FlPDiq`>bEQ~%jK_eSsSf#PdYJj(LUdTr&$M@fx|@6C=9%;D3DduN8Mrr z9c!Ld2jPrlpGItabk2+ud;CSwu}IsAqa=&64}pVFvi(b*AUE=#`?9yiL$ z!hHU$WBuxn_{iddT{H{$#QP&?Eq(lQi}8I{Z#MlKJv+)Hd7&=6UK!hkI_|N5T7|k9 zy_~<6yY%<0|BRO#7ti-R?Ry`6WqllV{Zh>wMH>x-2LuJ&2S6xkD^K80x(BNq>;TYm;f z!F_`lCWJq{ebDYKL)e>f{Frff6Nn(OiVNSpBg;`KR54=%3 zAy5$$vL0<^*VcJ~Y_x-(g;C^(nOtcH#9T1PlcmB9;N)qTcDLqn!Ox;(hoeIry4Wgs z(jHA5$W4C$f7XTKxH|ixe4IG2ArmYY=lT!Ph>UssgjTRS1By@UQi+RiOG`^549>#l zDXr1p^1s5MGLBytgeehsR!R6b+`cnjF@|cGQZq?;6>H1Q8t!LxtZGD+|9&>R?tQMI zOGRE9I(eUEV-7|Fqez!CtM07+a4OjzxiVmM_L=Br(_FD7xHtmqkXpdfORVJ@2Q#5* zH1cPdddv6ZqgtI|U}uVw)Ck$%SiQ6*G;>^zNwmKkJd_W0_6%jYZy75>T*<^gHWW0b zNOiwST^|mvFD$gHO+oKFh9>n8yFmS5-=S!m;55!AlaQezWB_XcA`PPYC=Yps5g{qj z7CKB!H#1q09Rf*@>zn=fy$0rN$UGC1tPA3pFjTxLHsTBKXL#Qur)VIW2FqQKt>(jL zO+>k4BrFV{&jA)M*QX)8x;9|J89zeHrXO~G)cRZg3Q@>0L648jgf+~aL#TLjLy;Jo zFv!uB7)WPbE>QV=uC>qQVUF6!?4l*5^KOKJj;gyZexdvaHt#Q5a&ud!W{0D`D0eCLD{`Yow8__IX(+=t~-%I`)*IQ!6L`cPl z*qzhgd>?XS?fDQqK{F!MkO&Y11Dt{XXXa-0gA=0wBct;G#CH)!L_j`U0l)}`wSO3v z)nl{Q_&$45E5lH_-1{~XN~$|TA7B1gLCSRv5KQcSfbat|z~~IU#xAEYBJC6#(lx*= zXv)YDDJ!B!mlXk>lsh+zwP%&X?7eZQ^|(AYs2-Qi%WG?ip1fgYWsz@IzQRTBeS+2o z2+c?khWCaDfwX%@Z~)@4HHhyQj?H<}8j|45yZk+CS<8GAgEk*_34Y=bx&$Hv1LVeo zR-1Ar{7x4ck}O7ceZhBjn@tCP6Gs7B7tDcju~{p@;F%UATPU(Y z=TLsv{yz50B0YQR8KMTJo7#YdBrR~7kd)mi)E*HfwrxSpC${W$)eA2|*JaG~eyYjo zCwvUgq$H9OK!VS>YZO#iDyWFT5mkzeMHE#>?oz~zVxkJ4j^5;LCs-FRp>LEOSY-U_u7y{m#d_v zL4npYnd-g(hWZZA3OXuHz!8@!@QH(|G=onji4B37t4w%dK>>E+1$&#xz;^UKO}F73 zBoKDzaX#^;2y9FNpel$qIb!yJ(79o&T=Ugfi`Wt711Zc3i$JItFlo0?cUZe5R834; zCbxKa#!~{NX&K%Z9NIcq5(Jk?k{cYN28)J5N8Nkx{q_C7Js5X-j_JAHNEPMWoO^xo zqHEs@*#YT`OE`FcCw)fsP!H?CyLKM+Hk>Fph3&aLtg;pm#iW53+x$`xcmr;qpXdb4 z`1%Vd?L^T?8pG$~2v6__$SlLe9`*=Y7%`v0VytZ{TWxH=aXI|y4ls&Hkt7JP^I5zu z(rM*~U$^u8wF!THd*9Ya(8~6Y?&w?8VBfDY7v$ad7$%IfY!2=De+K_FhP(B0};b%lTLD!b&0?h zMWKSqnoGm^;o2F7KDv9oTDdkX#ElT21cIPc6Z{^L$?21Ul<@U=!TmQG>QiA1 z`_FG2S_wgTT#Aaf<1oh;YdB-%xvLbZbjN2IKokSD0aO)4qHeEBLLB;HiPNuQIU0U0Ug0OvH?A9TN|z_a?M5b$B|@ z38TKPFNnk5Fvn|Jtr9V_XD?wVddW0ru!b?tHT>+3r`Jb!^0l#ExY4fs7&d0~GQkh+hN;Y9b&+G_>ZdV+h!)Xg?3*ByRsdb>BStZevXkyK+2bJwBb^6ssrv z_`sh^BO6OLj~`rBt;*I_F#GUP8jt4_*`bJfhwq z%GYes_)r)bP=G_>5F!K6N)(b1Zwvttz(Q^EICx)0__&VegR*+?(=Rh;W^^R?)fkNf zVEJVOX@z9Q3hzG`(1|KlHJ`R7UINuk%DN`OaA6D3Mm2J=R2Wf$$sjB;2Vj7OJUM+s z4x871-b+)?#y8rq2rP=9PLDYYpwj!#`iD&*?~)Vhh$E_N%4Ni%b{hoc=AxcA>*YLl zg?cpx!P_wm@U0aPBtvQ@v{IhT3iKJn-UaBgu)!#WcySjaA6S4BUK`@C65NZ6nm)yy zJ6vYG>q~v_jrq4dQL0WIX1@Al56?5sFv9#GdE&zaBaFy8wbn?9B?1K~gb6U+F`N=w z#0=OZL8ddJ6edBoR9R=pLFQqOO~^lJe|}R*Be}`Ru!(JlG(ZTk$`;48aM5&R;K9kU zgJB(i+&6E-NBF4w&ZY1<6V+0+yWl`1MnXhm_*iE0n?Bph^);fdW4<=Qvu?QM9ayiT z2pO%&Q?g)=;M!#L`nrJ?gA%)sJN*s`MN!qGxW3at-0IbDt%Usu;2Riy!zre#5k@Q2 z{AV$RRw|&PkDV4;&M=~?3aE&npN(((t<|g;f->5R9(H_mF?w2}4^vo*F$G177*w&0 zVk$->6oRU#ii;GQY(G)dE_VnNuANW3H^ zJ`?P_7%yNdvT0;PrO`ee^+YoG*Y}6$9MErH)Od+>y2c`u8PE)4RdsBzZb@fRi*B-I@wXVE~UWBf!}g#tv{&q2i4u7?GOymNk5E2jffV{Pc(cE(^f&C zV~ni+F1&<~q?0rm+rHVp`XS!iTwi~jZiP*YziLUVS=TN%eAKRC3{@CnZd={dhs!=m zEpx^1zXIWVR)LCw!APQltcZ#%RRKt#2&l-#1%k-2Rw9amtQJGR_qU&LhokH}|5^Am z*tL*Y!39M|BNSq)A_%NhL|BNiR8e9mBE%LfWMajLf~t%}WMYb{3WF9S6$OflDk>;~ zL{(x75n_u4VyK9MDhP^-A}ENWDx#vGsH#Q^sG|i%SSmzOVu&${F+fHl2#UoKRx1=@ zh=Pg?ML`5aR0RexVxpk2RYet56hRbXh{RD5MTm-wMktE~5+73y_@K1-*RP3zM9M?R zh|l6{Kabq=Y6dO{dz>neZn?RECdlJr8rSE-srv|_{R58wtb44Ft(%eKKQ^9XjdAaW zVdGPd6S1Vn(ZGgt6a?KF8LTikbUQUI)yGunnd=%CMCG)t@SI1HATzS;{$VCLvYl^h zDdn;W0wmWSQrGIawFEjG*L83mWeyCBnIsRI%A}&=4rdlCWlXED#}+xR4=CQ5!M(}c z-&vu}bypa#;LDJ~I(>bPjVL-e2K6PSGm%9;rU`=v(xj)xvRWt3xl$#PJx6P{_Dio` z2e|X-`$%=kapMatX(_;C^~0~;(YD&J)J>oM-r)1GMzM{a@drrDXvYQfk}jn=&vLE{ z;_AW-tVd?i86mWhu*0bA;RhW(s3eC{ejkIGAq+)<2&)tp23h!N`0R$64Ecuh?td5H z@yOaS^DC~LaPdUjZgEMaIodPzl>A2q=<&I$b<%sE3xGdU*m64tS%zfsukGA|e68h9 zULb)&!;d}iT8Xka>lydn?xXYU=H5rQA2B4nr|@``;H^26XC4c~(ui~_NunMl!*q0r z{^xBQV}8N?2;GxRuujbY=TbM|5sx=uo*``J;gS3^JRR$yUBt)$_|irsEsj}azfjNTVC zqQA{nl1PMa-KUq9{4cUcOykv;6?bZ>|Fv!*qGJ>Oe9ou+_3=;NNAUmT)FOS40^tCb z%VpK;nTM&4RN~O$e|ubD4*qC|vC4k0iJ0p!b1!a-f~xjKqt2NH%@gqAH0V&c?tM9o{TUcKCA^gAPMzxd=X9< zE24c=HbEuw^O8Xm}R%gP9}O zGu?WqpfAU0FD&u{{8&x<@$srb31Mc~hEI6RMK&`sof#?+^RjxGU~@p`%_y#|fsKE& zt}?Km$_CJ06WHoFz&6M!Doo{PL<5p`pmECShA^FIa%LivhcblxMM}u4HEgL3{UVc3 zswRUQ-j3esWP0UTRN0u9(6kIc<^`M86|Y(uX9y0q~~x)3;ew2nlk=- zF>vjB)gtr+HrrbmAS*Y`WPdHvfqh55&ol2;EgI#X+X<%*a;WMPP-+3+Bh0NH-872; zLEb1_*oAdHdaZK@y}kTE?u)Vo{IAHpwQcR`KTnONeM6|znRHY<5dVUjMm-Vs9j{)0 z*Y;>@(sNC-7FafG7ZIu?4+sY!f=r__SyYeN&nrH!Q|D?e*Mg}^KjH0{wq!H%h%9Qs zU`xRlo>2<#S(S@zlxtIwf*m_i#R__mjwwP@mKwg_+(6O&Ct4ch%V>GGp9d=zcH!?H;T=+33z--EMMm z<0pBXAHez5c7XyY6e_0qGqYlZSKJTpiB%MQl$_;yFLYBD6VsXmP0`oBlmbUx?vJsIEL z$mKt!VD^ZEV2{R&HDA82u&+XXQLO&XvPT_4o`d8%Ju^Mq*1LAJoY~tO#7@6~K)&CoB_ z+uz3yqiM$JrA|&e%+z%=1Iv`le5~K9eWrgB3K1Cuhyq4PECdn^5(^_41~M>6F^ouv zD-c9cR8>S@s^9!?sHRW;RLEsJ!$AP2)$)i{w~qt$6d;Z|G&$5;0$)IYbB`D` zhdKbj?GIGykR9DVbiZ`~J3z$0a!aMK(hR%MUJZ!3pHZ&&-E^$urUcJJ;ljlfU!&Em z&;x93U)Xm3{gWRWmht}lJ(M00h%zRa8b*AM0-rCiTPb{U4ht)CT1YG*!#uwYFX_W^ zp!gZ=LTgv%^??7>7Ls0t%0K`6Ee`Rtm| zh;>R*ZGe|pe3O?y7-kIO0x)Z4^4%EejeW@r=4+nt>!vpFujeNF2o_xasuY4bI>|7%7I2een*}4>Q&@4mlY$xw+dsNFLV5ahPpT8CLxLEXWZnmWX@Z?+S(dPzYPpm{Y3u5E9G|d=Roha7ZikA z{+T+NKBjtQTEf2FIht)#ynQeU7v zq`tezqu_^slDLe~=C@uPEFzd83eJsbJE0Bvoo)ZguJb+Pl8rawdO7p2Mk&Vu{&rpszwUXv+XeyAm4jTRiSH@r_HyO~ z;)%8$Y3Ie=<5GO6EFk=fLY&|&Ga+=f9ALSz79toulZN( zxlN4UGv?*z*m2&~`&wW)+6A-s7QEAo-2Nl~iY5=u^lSY&%P4rul85|flJC=F;@xzH zasG$m)liqyb5MJzA*(QZX3@l#3wdgs+k1=eW{Cd%<2%NGbpAOX8;sf7HN8d$#6bf$ zk?N_GpNK8B4x%;IFmY8d3-MQ!9IKEnAS6qOy%vp;sO8bJRjK7sQg7^bCKn%LknVL{ zHzy~;qmHB@);k^_Wkszw#1` zL0wbl6sW0rxJnu4J2;g9sEkuxe}yr3Ou>V!!<*vqYa+T=mY;Ky4{ziV(e2?cA%J~C zL&(U3`t`G^`KeOy|b z;F@ZRhZ)IExuOyexd@&(LE6=<-Wet)#M&gzA6Ww7^xUp_F$?jzy-o|%0er?On-h>W zVm06n$(k)moKjlSn*nMxd>G()Kbb&W|4R4yI@$sMh8qoMFz_RCLdMX0=9lfX85&FH zsstIva#dnrPU7RqaRKCgMkrrZH-M+yo(2cE9H~@80R*VsxP|}EWnvREEk<4sg-{w;xsJFUc$XIv@D& zN?>Pe!XOdD+l|bqp2u;N?2Q_^Ho#cLzm!%#wVW5GN0Q@e78Zkz+$f~a$#~Bb5G_M$F#32^l|`u+Lx;24(7gDg;4KI* zlG1+~$cx2W9)w{P`Ys1eIOR<&NepZ!k8OW~8zbw%0z_mFs+@2Z(FeQaQl|_NYPtg; zA*28SxPJfm^k9A2DM*zBe8YK)1RzKMLQO#1O$+dm5C{<12k8Iv{Jod?c^W@kh39>L zbVNYtl>)bwH~IyTbxi9rb9NqH8pl)fWq8bOBq)R(_M&OL$Jg}L=l)cZr&gs3nA^lR zx))g9f!qhR1Vs80O9a4b{^P#WV&A~Peg*}{CuXAz8_s|EOgR)%W8$b{G5h#%_ zn)_!~n6LLM{=a*H)Xd{+11S1Wr|%!@jI8qG%k)jdQ$fwwv87dLRm0olVYI>Fg3cUpUDJqoeSfji@aH(`>W_!=ytdN;?QUcT#-dXBu^ZK6 zbGCOeD!chCf-=_+5?_br-dv-gx3;uxnyF}(`{}80@0GlZhw8MJ|6||s3%{Eg|1ZR= z%DJ7ZfB)b4uOiQkHo<9;$6-@zw8d5;C#~)JqZ-&tHo z=ttm`)%fiSRyWAmyl@jG|AW)$`;9P3r3h1Fc5AxJlCPz`%|_GR<*+@-TnZJ?<;jfoE>g#g>%a53&BPdI;r#gI>KPZ2 zv(C8z0!D$qH%py(eSa!=uY4LQyC3z{LdsY`Z*s4#J~u06hb*h?4IaLJ$1J2rGd@0F zq2rf7f$%y?Bbc2-Ie-M>w`cBf&5vmXfG)_LHBjk84P6;G8rt6KEozxN)o=p!l;WK z%*y9pu(7Uo9gT&PVN0k^7-Nbt+=P@ZpCCHx1tH)?=`?+6`r_G$Mq*V}zY{$+%Aebi zKXO^$vZJ>8&iTh~Y9>uZ^IdvU=ce-w`AXu%d5*aXIUJHjhsfkzzBmV46CuguJm!7d z?5EG3hmpMen}1r*f#v(32M5K7B6!LK`CQEIBTL}388Zub^gWA8`8mFugClRO&TTGr z9CrQyRn9ON%%cTXD6hFU@M$-itRD z<1X)H|80?CX!`24Q;%}-y^p%xJDT=1d(F-6*MGT#nCDsFW0{?!Wu^C>6?Rd5=&}0AAMb>7wp4rAShCP{_#>*#5m*n}#jzL74 zqrxM2TTjok$p1d4uYt+J(qvJ}Sln;3x$^pF9GdEPE>LK6VguV(1ju@hE#I1c(dG zUCp;cp6wgWL}DGcLdapn#K+0$HLn8OKtn9X7*4pz)#d@yr(-W{tixWOFM8*-8%4U0 zw5Pee$Rp~iudST7o5ET_PtWi`AU zdZ2Bn*kCV=%i|b`Y*#wD&K7~ba+H*GjZ0gr4i&a9w$kLe7)dwOZh1;8>()Sb-KOVC z;5wir1p`rs+lU6+&*JKP9bg_-=m;o)K@b!AFzV)rn@snnFq@(O@1$F#39wW-VI=$W zD$}=vpcFXewMGn ze2)t~*Tu2Ss+wyJlq#{zjH*t_09TI0$9Li2ykZ-Lx5u@Sle3lbP0FH*+{_#5Qq|D4 z#0jwv9-e-JiWV?9N|iCf1SBJuA?2!^t%mu;gexm7(h9BC_&{=Xy%yubkXs@)1IFEs5s((W=h68L25-+K>N^!iG6R*{}=Kf z1f`uk+V@jk$4CF#({UNJ=;e zM6(y*sqKKaqiw-YJyEtTz4u#Plt=KN`ut2tCD;~T3_vg5S5oNPzk?*?N`Q{nt`5oO z_#L6cxbHqp<@B?mal8|c1^I|O<|J-*W`Akh?bdgEUi#xlS)^_ z&4+n`Av%yg+UYl~o@usN;O1lDwOLYL#iaLeab<4qY7Y2==s;7V2$=1l1Nc!y*Lo5N zeAb03;V;-@IOI#~^G|YB!u7tit&FjcRjLE=9BW1)_c=opyBcMu|CA0>UI)YSDkeSK zb+ss4iZaR;(=P9$H5T?Gxekd3`mtm-ll^TbeKyd606TwqDr+n<-Q{ynfX6)9oM4ES zP>5&C2s_i>A1^mYyJ-PFdu^o`Mc#r1_@FY#FedB^hTgMKHQVj}U-*6vNl26yk4_;! zQ@^riiSfXyTfo{fcT3mqpG&&E`$Q1{om4;)(}m%;>{kUtloT6;{+|3!UWMWQX@R2q zW^?@KC)@I84){S2qY+LiAf{KnBBwnghp!XnTu1-U0@pGp5Zr$-Lh1}rN-5lWT#VTOYVC$PTX^maseR;wHx0(NuHisBOPXXdV5K~ZggUxC*En6Q)rl`kqPl2wfn zoHtm4s$p)!2Z1+0t7^(EWfh~gN8qnI&@2BHKWL6@1; zZfWBz^gUa?2G?W(SPLImptU|0P$iWGBv2Kvdgy^*@!sH2XifVos5Y#F)-oPFe=8VP zx#}E-%jD;UX`)ew_C5%v=5@k9m?@ z{w!654#9{(+DWt~#9+YM@V{$|qr04I;O%!f1(phM9|hqeZ-q-AAOwHmdO2nymTcG= zedl4kXcqKiQ#su2$!<`z=3v&lTUUBfa|;D_KD#rKf8z-P>6jE5S*>h5m1ax~uThV5 zEY%VY#fRJ6${m9Rb`jFRbA6H+VD2zwWYZd5E=7)PF2#n7Sm`sX+6D`SxD;bRI8-pm z00+CCwwCKfGiqm+rT7IHSeqDWyD|3yV%u$f+kiMq(X!B{Yb@rOx&)189GSYrm1%oI#uXI>U2!Y}k6cV@B3Z=Wk}K49?O) zvf0B}GMquPjs<1AwO$C`d{VCf<2bzxP^vt&ELlaKU6qCm)AV&a8|~&kiaHakPXtF2fEYIxz~lK(rC}r7&E3Z zt)067$AE3s8O(C_bJ#FK&9d9NEtBoGR=s3RjgHD#lBbx*n?*@3Bn5bf0EtOGKys(H zUyAc|To#47jy}WupQ-sC5%Hc0r!9_@@sFUUI-zH(Yw0Q|s;XcGee|mzwtzt7?rtJ9 z#^(6tk$leaNO^VPuB;v3?t;UiIvK#k=CT+v^cuUH89bK78|fRdFVK@mz>m1Vjjn4851aJ(q^1>)<}gi zYZF6yKi{*>{n?J=ft07_>e*M)XSAP=SA)j(d%q_w@Akhx zEB?C=L&pAIpYi5qKesQ5zx2OHciCEFNAb*nKY?go^s%=KqR;8xYl`LjPlLf}R#6ey zSVm}9L!fcEo87s-VD5cv;=ZUD<@~D-&NTlYH;!VTyAaEl)nd&NBSGr&-Kme!B2o)x z7JIU@PMNwQS%A`-AT_XLoE>~(4*;etKl}~BfOR}um|7;UTxN)M$Y!GfsWgxx_MD1Q zO&q-S1L9IuNHlU`G@mF~#L87}t<_z5koCtrXwh)5# z%3}Cj9qrc!yOpc$x~~p~y=f^aub1j-s$qjFr7M*#;42#V71i}`tSF>-WESo6+_#U` z^=zEJHJv{fQHHOQx4A%pcxDxzXha*7;%iBne#5S3cpi?rI`37nlz-&R& z<|>ak_fE8r!|rF%D9_Mg*OZ0euPhBgYFrp|_&JhtkfB-l^mR85)zPg}&ehjHVN^X< zL5~P>w+dI1M|W`RT^j21-4VFnk=}s?@4QnUGa*5uBcV8WZhJM@GTVKODLy1X0eCPB zXB?yv%Yk`0^)zRnC~71uZ43>_?~hM2K8zMolCHJ8`8?T6Vyk$ae6lr} z0~S0Si5hsP(twlVy;pIFCD9?Q2S#JJ487y=G;&t*$TAgp*isvv=m-Q9Y=hckg&z-z zZ9FZ*+fY9(WGUqO&g1t_dm3^^eQr-n21Ty0vC(pnL(873-jZCy>Rzs&)D`Metfzp< zvlbH*7DEa`)jwq7l0qWwz7HOX`CKHD2*IG>|IJ>%){*JCwHyuh7xS~-CkvAjkuo4X zin;vLu$lCV*6xPS3qs1zXNC?Fi}%Xx(*?8h-c_D>-CqXn4$dpNByB(teGItGY|-I$ zJpRY?YP@z9>m!Kpjg$@+-22VW-?glvI=elw(5G$*7I3s0biH zSr>7jqB{y|6L2x-dtTR>=cmQc$uZp29h=p}+-T+ET_&_*XLGu1Yv|Zm>jNZKwO<;Y zGjsZN8x0}K8^5tOP>mlJAtDfBl3;IQ6@^E*1f7N~FivKu^j^)j+JW5)r;A#TM0ZE4 z(4hn9U>=O}qu>0`#`raB9*?PiTj;XP5Id@}{zh-95n37Q$`KR0La{MuiZs#JLzj%JQ}v%H_A z^EP@;l#5wFUxWY_i|h<j;EhIN9{_pk_j*F;)Ma*yI^e zqryK-+XLmj=6er(7-6bn)xZ>LDrf6GX{w_8KD1mV(&n>>?Yilk_&0?Eo$O%t0~H>& z_Btx)qIIFOY`V!tS3)AFDf;&~Z8f5BS^KqkU^IfF%@Tx*Tg`i3*&)Gr9j>~d=M_aYXpR!yCEI8@qF52@_BSt=EWG7;1an=Bodw-3T?S!|2orY*Jns^b9j zag&OKLo;>%p+jtrGJ2u8g(o7*jPwlBWP3Eqy$96pDr;M zteeHyRslahTMCmPVjXlKo_J0A3JXvXldLq-QPwF=>!7%X824-o%Yn=g`G(BB=UUr5_|TJQ#b`pMTke}( zK=4n?89M?b>?ckbKG|3s!@{Z=Y}Kl?IheN13`+_2gxFZmJCbixEg_k^Aum^6k5O#5 zN#Q3Jqm|KwB##Nw!ZI*CR*}JBs>RD`BRakuj<4N7AN9xMdlP>eMO-lUBpsTAvYKrs z=eJ~>sKppE$oUNB52>D>ZHUm7UnK2Hh$UXO);>48FkiuH!H6K%V04}hQVZSY*-5Tj zD5|J+SI&EwtEPCEgt3zH>`tctw~*m}$zB>lDO83*mj}N4f&loUea-K)-z6_NwED-V zB|}6+EY$*;j!Wa9wd#;@tBbGU*D?K~ZmsAXBE5}hVw6IyM8GN&;>cSCSi5&2H}rTy z7RJvo{OtTr`S+t1j5#MyscgM(GaxOa9@HDE9bmTW@8EaY*^4BbmJR-1UmaN&!>(GG zJaxN^SY8gR8g=g!`;(g9=jWad>O%t$v>?W-!`#s4?=X)8;bc*-tD$+?6VE`qbK zh#-N0F=lkWgb-7T7!sYQE<9+A83=+rI6Ochq6m3ngb`6z0H}Z{0+K;di53h7F{T4d z5DhjAyJrDue7L||UO72AGGK!S_%dk0p%^exqclOH%^EULiV7%`Ci=++4H_^bb7NyB zvPpwRjRsB38KVYG7&L5IlFfu<$&kTD1Z1#s%~6s>WP;3@HZx{RFe5~gY-oc>er_EFS6qC|frpn+Q8Hoe2MI3^^-7^;zaja~M_Be77SR819Yv$f0FXWs2k{q98| z!vqX$XmOZ0Ac@E3X8Jq@CA>v5^v=X@9Xr;>07)}1wo=`>Q_fTnPW4hki33vj&-IGN z1oc5VS1%j5jOpxHaIKorMUkBA%un&;^bZi&fJp@ql$umH-r67THa=$W>i=*4cz!p( zz%g`xr)Ti2w^N^@Og!!^ff0>ry{Vs5FwVnbfvCtdiD*y|ATEWJ5a7~L)K0#oO1&M% zz=7y85?uayi^ZQVMPhp&_qUlJSKHki^~M7&Kx1C>X)eFJ#xb5FA2mLbn`?K0_7X{T zHpAooi2WJpX70tyUoqLB1kS1i3?n6ih#`Sd5TfApc$z(46S&fPlOcitlqCxQL<=Pm zG{B+)iWD~e-8KhneR|P{#W~i)KV3YkmkASn7CU2Gz{vY2+T0C;U9`Mr8e)v(oI1lEnYZvF1f2*pdF z@4y*09B6!sIXFJv+I4A+kzU3#ZQ^fp=diH~7XJa&w`Jmy0{}K5>r$cA^$s|F^rY9B zlsz4O6;>VBTX{AjfnBt{v|Z^bM75hJDk406;hyVo%W7W25yyI>O=n{@d>L?*0x#l(8i-2C5xywMr65_&~Jj5)LW9wCG^CE%W%#2^Y5KPmx&KuXH`!~<7H%;i@f zh0NpQAc^00f#ipdAK*Taa30d=G!f>sS{xQK`vSEZk+^c33F2Zg=7y^Fal#UgC_;)C zP+B72_5cU^KdgWW@c%Rpm=|kYxGbj*t*HhOw(Jd?;fNc?tBslzlj?m;`)~W+41ZQs$ zsHv0hCx!bilQ78N20F#KganwBujMdWFwwmd8?j^LS;lD(52-m*AaKwEcgj9Y#TyHX($aFeIX-HsDW>n zlkEGy-r2nhsey44Zv7pY2oqD8$7sUdA%y~}9qAAU34uEPeZjb95q$tqNDG4Q9u0xn z-2Yeq$oEcsP{S)WBMWp_9#{8i{2IQa>0(usAbM*ad#kIlpbv7Ei0e8GRU=lAeU>ob`Bqe*|Qo83VO)ZL$@ z_A`{t^FK3k&I~NLc_$ZUyz7vR9GR7qWXagEAP0V8z>5jPfZe=S#stv!uPVsh&Jd@W zi~}TxeV%_CnIJ|)d&FW8g*W5|2@uRo>GAhaWz<);`vUwjB{eX?h&|&M5drP8VY3bE z{h@7Hdh2+UMiDSU))NtCS_K5!7uzIqn1TMZS7k=+Vuphh$}awdQ-xm^N`f1-Dnyi! zF*3|E_ph<5Jm|`2ZI4^(&hxzxuYz`9iR(f^QZSK{Fo_^}x;l9C%=@kh{FL2G?yKN) zK^TR~U<)dUBEW*CIwk?(+$+I`$whvw)QM?XW$VzMd*SjwnBCxWboy>?BX0#6eWA1n z!^^|`8AS%Rq>S0LBd+99EYUegFr*9m@kdn7*yM4s{#78p{QRKHD8t<8B=!Nvz^^dl z4)bgs^IPNw1qWM^W<%>9Y2Tk-KdjNYJ7o)-Ex(pdi3k7cIaBA<=-#C{` zfbY2hT|3$$*co!#a-(~vX*E0*_7b4SXQI@U)+J|; zlKU+v(&C_iN?fBv61xP%3jAwo3a%~k6~dxdDK}Qa$}NVvNzw&nNjrgt(5kGS8iiV+ z5$dP@=T!U{7E;Kn5pW-uXFcQb{Z;pLCWanDJB^O9i|SmxfqX})m;~?YX-I|~cBjsQ z#283xfG9DFyYz-!vA)+^-%KS!3)0mX@smmldWLSortp}HCdA_iP_nnSt{7#~j@m-T zwQxTz66rGplsK>~+WgaPLhdS0muK(&#Nd`pfjOHyTBKLY`8o7MOa#VvW+#0o8? z@``!b8%DU@I)k7u+!bn-&qevU!j&fyOTPV{SJC~iUGl&2$4edJ45p|UG@3{+I;$Y~ z@lO;^c;feA<$H?1)%)T1R_Td^JXF+U8PSCiu|5q0(RNxE6S5G-p#w@Iwtc|$nK~{x zr|Z65M@`CREEp(hGVqfxriueA8eg;2@_IFX^|ghsT9CBq5*mf4x3+g1@}Vr5bgO%s ze`kFl4D1?3;QR`IM*M^O8c1{@*w^}lMrbo{y!q(9Zw>U{775v>e=UdA{u%e$_Sb3s znJZFYJ~Qmh?eF>2iVJJO)$**|^|kO_u?!p!V$WkOXe>ZP9;sc5hx1D7t<3hK+Nt-G zB)kZs4?}}}WeBJ`r+<3H<2Dai?LTn8a@9P%>1!Hoc-(*<3^4$hpb(&zXU#FkWGAl8 z$p^x`yN4;0YCa0DyR1ie-!RB@_G23*f>%UwOPanYG!Vlt%%F&ZMl537%gD-u5}C5} z?9@tQla;9KhgNNJoIZk?$TRf>S;ulL>iQQFmk~`q;D#GDt!`~zRQrEw!ggf0rfl=Q zm#WwQgOB(9H~p^sK3;9DIR8KZOS{V+c+Styz`oR?#rI*A3_YNDWo)X1-3M5SE?jj3o{wF8@pT__X}%zB;!f=rLC*r_E_f6nt0jjswLCK zRBaI&hu<>9>Wk5ZW^HuF$#A)N9ZudKuS><(x_JlxNM%=d&Dl|Zzxkyu?w&7C?D)C% zdlhsXeMGa7eMI;hGX? z2xv|TR;V6TvjZSb78yLVJFfAJhl#Xf2guJGyRC2&Z84F~*mL((4b0tGHaE|B`vWW) za>^sQeDFT^;UDY&9DHi^DWhwLE%uATX_wQ&teZSZoIT8{deW$roOiPh>LuqDwjJ(m z)?yy69wQGh8$*<$3x#npQ1I`zF(^*@r21LL#jB)jHJ}D94acb;(;x66J#Q`It;4_d zaqj+vU)yrjb^Y{)-`MMTz~l$=R>uo?5+VE@W4F8(O|nNuUI2G-Oj`)Pg{1+i#fWbg zs#!$M(WKlP)qMlpd&DaA{&aaU|DV^}`Z#SNsUkv6M~f}NW+N6<7n8j31Eji#8b_ym z`7eh})pMo-mvZzbv0kWZ|L$(DjL3Hsd_8YTn#oA0emzS{rDa!5b0m#^e9Bdmkx|4$ z6&9VM0r`vXpJ;RM{z{4b&&&MGVq&Eu^Bpeb8F^8%eY9PvTgQNdKk~t`!RLC{jX&tX zLidlJyD_MV#|q4(9#fF6Ve5UPHnET@F_I81jw^VBQojL?rU?G&TNPxUB-l4`A|n2n z;CEpgRTWV7`-V1_I!d+H*whWRH3WQritt1{e|hma{=XA}3QPhBhKx}W0EFWNE&P3N zUFf=j;wY0spp$c$P9r+o?@(YgeQhn2(R@HiUO-@qkRQLCNPy$1FKw#+{sktR&eu|F zIf{7kj)ah6&k)NJPeAUDOshY!i$B4MIWqEchTznk*)|wV0s=4+DuCZi0f1as+iFn& z^E$r1lK7axIRI*22>B#8w%N21S?4_0_P~cr!9jzB=uoXjlT?n8;eD!lhz%dIaq(mu zGLU0k^*{P--dRBRNIZGET0Cub`}h;G+M+p$A!pA35)Z}j9Bg5a67}Cq>AS80jVIhp zLIDqE&_n#MCr$4&ax77StKWCbLwI!zb3G_pTZP+WxSK6K2zQF28k)Xv)(Yn7-x(c+ zB|B~&v}Z1oc|rpHv8aB%yRJD&%D6yEVpNtgec{_Tk=hrd@4~7z@DNTJ4MBi3i}X`H zMiyxgGR9akg7jy42NGt^s)CXBtYugdx!SmKG!#%FT~Liw{KAJ6wbV&aM5)for7dm7 z8%1Yb(MbuTYHe&I40SaWV@&-zIBBD$MXEcOJxG~GTE3Kr>Qkye`-p&~9nCJ{bpe5g zb#Qs1RXe!ldr(6Uxy!4g)!G`F><_b=f-F8gs9Utumzw$T9zZANnv`l4V#ONGh^%&Z zYi%1TRR_JhT*1AIy4}ZL&)&~T=Vu_#oCVN{<##>()a=l1LVD<`Ndm5RQ@Pjxe7YOs_V?*?Y4UF5cDb;YGv$VK)S5yKWWgrEjV8gS ze{V?Pn|v^?>`3({_Gxe&HJ6(WnwhpcIjDSheIp{>DaekFmuj(`VBV{?$;)H%S<(E2 zyihEtp%YGMGcy{=HzNZKpcTi=FDvke+YT!|9e70+dwVfj{8+QQpd0lv#}grq<+4gZ z=$$Pi^Pl}6r=IUY=y<%Gi)L#(y#EUwI^kwj_*`Jyi-uBdWc?eryz!iiw4tzE;-C|5 zFh)w6;403hE-7;@TcnUrb`Y>lt`p z%gYQ2h{e{t>eelgE!xymPx4>S{^R7#p6%h)EIAa>Y8rXw2=c{ymVqU}0C9TQ)Z|^j!4u5oQcKOK)!>!sa7DDXo=83>9P+BDJPYP3pPY zWqNK`@ux%#C+3Hxp4-;g1y?myr@Jg>PezgIF)prGS@W`m8j1=T&+aI^5T8+A3%2F; zXCiZVkX9D3|4+TK?r1RYP@rTzOc|AiW6@x%_4@Yp^|FZdyEFp-_1seG0KEKIpeE4_ zYb}41_@32k(_`&u^cYVjD+kYYvtX&|a;pveGbFV@B*}q*t z0G%o+xci~wlf>xBvc-d1_ONOS3{y|c!+4eiaQ)eF0TBmM zJc?Snl=x=g$4F7JGZL&r1|7@`i45?Bme6kHjwl0R&|@I~Cjj*04Vv|yIMN1;=I>_p zJ%*QN%`-1x_0f5+KGhg_Z4zjQDtB0Hv(W}kOWcNuth;S!)W<{h;%ZT@7nHhluwB+c zZj3&wdwI^!EC??8P!KcqJHOEbRAsFqn;3B?C5(L!FOr0Cm_@A$Zz z3jyTc$ErML_nfP{j8Usr6x3K%jT)#cW(GVrF}GjcArGL%wWfx`ON}zwpsbDO^F7ss z|*tR#g~uXjkpZu6DjV(9$Ggf?c5| zr!{;y0wZb6E7N5(Hk(G;waZ)!wOUzNtydoexs4E?yv%ta3KPpuCIXzk^ZSj8%Gvn&xM@eGQ*gYq#;;)AZut1VURQ=E-+k=&1w<8$Trx4GvM z62bSBj}E+7jun+X>BW>aqztt}!4V0@9IR9vl@4!h`u=m(esrSwNc(xX5`S6^qc28u z#9ecD6a$sZvqF5?%W3}=`hYYTc;Mh{1kj`o{a4mN1NTNCrN4bXbg(END*xv68|455 zjSUDA0bhJf_nqZZTl{(t{0IJVk>*91V? z-bCT(%}z~LJ1ZJM5CGhERW%L(PkM!+(UnC3hdg4ShJ440bY%%xa%R}S7o#{Evj9sx z^E^@RicWT;S5uwmK$?FE$kUB-B;}SQ0O=7C6N>}KAmRunGQ2P#nNVOb3b*CR-CfZ{ z@bMAX%*DuxQDi{Lq=k8Shhs1&e5efKRpV3`vQ^gad#46Dpjy#0I-yX zh5at8b#iKgdRG({eNEuS4(~1Wy1hM4&s#$5Yk@%9TeqWPAWft;h525K&_^DZwnyTa zehbFS&ucMl@QgHU*{tnCS3!MT=g*zjAn6{L1JQD}qM}lAi`J=$NxAmp6^djB2O60A zdkZffJ#^EG^yjw(3+s67V~7Lu*yw9R0U8eBFGSZEfmcLCKqX@e8W1Ou9mUDMWJ4#;cb`*PRC2F} zRiCS=-1kPt(Y3bf*U^jGJ4Va(esc;k@?EJLjUY`piZTE!j8TXq1YdpV{O(wNm&x>f z4Cmdzc7y|%8^yRki*)(nzhCFSgY@+!uKNXwa>^3}FkJBfh~}ntxYf>dZr9X%4F9Yk zdGiZu&C5DNH`RjY%jx^|eFi-q0E864vjk3xsVU4A+dl^F~_1&3VDHLyz=hb+*D6~XX;$x~#{6QJs%p&3$X*dt=j)k*BNFHz1e zMX3^j68#mzCr=!uHK7+}5d|`>W#y6ap&W{fjoD=zH9eD8;ILJ6XtQp)iF9Fn>xewq zEtqy45wsK&6QkSr+wU(^&-*$*LTa{o6BmiTx~7vL<7{p4LyQ%bt#|3oQ@xOzHi||f zwcIq6n7F^@f^VRYq4PO}&G}jQ`TTFVmAom!d8(<3bzX0_ez(wgD+!$WJ#b*aphZWM z0)JX+IsZrn+JD(TC&GOdu6_@YBBH~>` z{#?d`#%P`$S?psUkl?%ceS{t5RUd5FES5GULlgfa`N+45G>+xMj{X2 z)kcK%hsviaF5%Q=5bBy*VktoilhT(tR)T zPy8sxo>EFM);h%pv6QU68G`i)Cg6FxhY(DC4pKF2j7ZK8=LU#c+QyB%_^ueHw4XV* zT*_m-u|ZyGJd6Tnx~9{`2+14F#RVvsY-+rk;tY z&qZ_?SkvRbv|^|?bFoGU+LCHSM^OsQgxt5?0`&stgVKUYdmk2d&gHVG=MV@C*fp3w zL=d}NkS~c2d$BxR)H%Ou?sH+^h^%(DhLYseTE-Y|Brs6L1t^;{Jk*$D!1OCs8^9?5 zOU=L8Mufplm0IRC{nP%jX&%@QUI$4)n3IPdMOJLoq(Px_sW={|)FCv(4~IyjCnN7^XGw(>nqLPw8$=5MJwmYa@A*T zg%QHhYIJjsWyI~FW5A_$Ws2);95nztDj>Z8=tYMB`hR)(Kb2b_{l4GssiD6AN}aLa z)#+_#73y2#6o;|!ry4r}n<_FLOqUyY)mb}F+7=h+8z(YPOt^t7PIE6sc3VX|t*g2> zs*gVXM*!`i5J$D_Gp{n*y7^C2fxSSfgAd8&@w`Wcdeqb zQKo!Yicxh=j4GD>RV&OYOu@~?glW;zoxGfzA+%U117?9s_axwGHq zROUV1Z&C66nq(ar)xn0HmyF+Rd|Aj0g`dmBi1nVPRP*N~vr$wiPE1iZAnBt$e4nbYok8no-w772*nn~k)J)n@_MAR3Rj!M3Ux<%VU8i0EKf}5 z3IhFENLE)1Bt!h7iXPIj1q^=b_W5b2eV~I%)ohbz#Z7n z*2mK#1S)t7`YZrUzQ0$k-kFP|eTtJoib}*}Ad%xs8Z|X=Xu@Rk8r2tzgYYb`=K6l| z$2wbKr!XJ@Qq_cWz0i7^Js;<>>gxN}+fb}cJjHGRLqNR0W@_E9F9`n9(fsfg3I$Y~ zn<~R_zXp6vj#*?B>~_8%lE-+L3aJLl*vhJLg+vfG5!;_2ucJl*ag{Sn!dt$W{4HeM zXbQ%)kFnX5CDhEBzE$AQ#4|I{r6^*(RddOAjiH85-6*Y{Z2wE{d4T@L1V18vLxq=P z)g7fo&ap}9$g{&EMJNTvVj|gcg!9;5xw(G2KIR*J8VR|*9RVN+`Ur$(R+-t!%6E<{ z9&t;}w^g8tNl39Ntm@E?q-JK(03v?`6aAi^Kog}BEMQ~q>zj<)0PeToKp=;{$Jd>K z;n$zaUyKF1qLIz~RdxybsfagQW?|vBj^AVO(WS!-*ajBoKH|?;vem0@(RdLu1VayR z_}y+@6ZXDdUp={1Hndm5%PuJh&NTJ_eWs;O_etqs|ZpO(Z3r}fyDoJ!IIMb&+^cd18I$<5Yjbe zenf}t)ytB>xL%)@gs>nr5Hln*<>l`WENJTOXanzK!8RLl0thUyx#okEjUqVs_+S|g z#w*(&sAkvlrlk#c1P+qaj4Jy+Ih z{K$8%Px(WzC*A>-@<6RVEs&$1;7hXno1Hp#!v|HS`=hoIA9AvO_fzogtzN42RP7D4!GmlVZt+Q-Im!2V4L-Y{ZZkF2 z&6gNkyH5(hZV6XZ(>`=JD8vOlM_8$x|L23ezF@@CU*q=5gzpBUIVWn=dSCs4u@r=^ zVdF8$5FI)PB9$)9+)^~TQxaP<1h}r*4NSYRF5|BsN`Ww!bO&jC7UaQZLN4Zk(B^nH zcWK`VbXm;Yeor^262|WRgBCh#@grwbpNi}!V5p0~pN-++I;%W31hYOWuhC{{;>ybC z&cPtsuCxYj0vfjgs1jr|l(UeIja@l3Y1MrcHnos$JuS3i2KdmhSm;|HR-AY(9~(IU zJ(tDj{^jo0_&!XYzSOyWj~2a5C6r6s7_e;(%}-U-)@T|{F1O?U{ymPu40%GQ8>D3L zzIJt(!Bo&OS0gJH+97^mp$>>{A*_p6W>GPxT>kL}GCIx&4@0$9T9F7^j$f2@00esR{2#ew-Ac$DZRsaMb^JH?ha(@E zGzw@R0RiwE+FEc&yC2P50M;81bTEB}a3TOz;g;6&zt9KTz? zn7dIB=*;4eemeJ2Qp1iR;?0B_ePbBaKbK|Ifd>C<*$A{Dm7K(m>y&&(on)Tgy+Q~Hmkj+A;+6?)D?_GNL1kd)n^yM(?apLL>ZDjeB*Cih%^ZOL7!PvLHdk((hlQHTmoTb) zix7o}3pbc=RxeAzlwJ5AjJehD`0%UPoh!jceS2=;LGmZ6XtNalmu$y{|~WM z6?2@xg~7ozpW2#uPD5mniFR}(%jvs0ZnIETbeT8*%Z=J^|4P6lG@CI77*40df5B)X z`v0%srP$C}KVQ@3;}+TuqYs%5iHxHIXedB{HBQuEUy6DjL{>sMCPFk-fP?D%$%m1^ z%C|U5WkOvCWuNMF5Ab*>ZuPDlI&c1@KOm;r;l1PaSI4f7d5n3Cz8*L=HMQ$z)M_*F zZZ@cN&t``Np4wejqQwXvV?LpaoCG?}Fc z-H%UU!vHfQ^31BjtUuGZ@9xWzvS~A5)znnqh}_kU-5d+Z0+zib~b99Jmb$L zcQ4?M-K<`pm)xE20g0tqokjygO{Xjk6$KM<3yZ?T_0Fp3!9NmTQdaX=iQC%|YrFuu zA9}9aAIseZ`0vNAaycR}phcRajH9%WaC`_4SO>|4tFHUzh^j!YThh?1>*p=Cf1@9#m*XGbdvm zGzwfQ3|=Gx%}w{gtM?_`&Y9mz;E)feW0km#Unxc1 z-kFce&c-5BMW98ut%U>+dE5X%z{yL!hB^NChIGf8TOXN&JEQ!ThcHJxGRAXzIv`1$ zzv#5i1BfaJE2sxF7wAM@E(T+|NVDuU8MxNG=9ugV^E#AZ24v=~?g~FG2XNVS8A%?@6TnSHvXJ|l zyk4hgZnZD~vw zqeM%^1U$1wPcc+lS~_Q4SlzY-`qYB`gwr%r;5!Y$R)D+aG59PPt2mo!?T|yKfF3mE zzkV2oZKk1;!Wxhk!d!`LY|p3QcTZMzzqAQjGIQ$#j2@1BjoOSeT}wC4>OJ=&8s+~0 z%g96aiH=v(!Wv0Z8&qem7q&MWl07)1j+PcG6ixEJckroJnx3oBZ-Gv&(X4k27((i| zb$>^3J;F`SXn_lc+ zHpI!>b^gJhq1fpBU*N3W`%W%!9=9%Rc;`e=aqHQnJ(zABC=$YA1%EmGUn6V%MWahD z^Q(y4|GyaZqm-}H{fIw$%!&n6QpPVtuaH`-XKmZIO7R`T8IdQYX>^CI`|w6{v}q7X z^a@4u+Swa}uMsN6j@206+ zUu~;uqGXHl{|-V);Pccj-!+rv(?PBZAqvFF=3hi}=>Ih^6aL=6#iV5_LIbFkDlj5O zR;_21tq?~oK8>UsAkerz-5c0jZL_CmY&|Fz?%$rMk3AA-5laFeF3x=e?R+}W)>wp_ zOq*)hi%e~Z?f2XYY^Uv*(Ic^w=)(`YNxmGG-EW4)V-8qr2n+yGMM@8bnn*!PD8yEg znqeZwC`$;vW&%u(VcQollsEh^61k!9r8*nS6nmTOmoYSAVH1SLvOf`|-dn7Duh%t( z<92JR=Gz4&4L&7^sIyct9^L2IGs z?KT3r?{ca!I!`Oi95FN^?Wqt>hA>!gLk~gotp>TisSpv6JjY3!IPcubR?0I;l&LNu z7EN4_>}c4SVHq46v-9mSPvSVD>Rdc*8q)4eG~8ivUZBKA4WHn{lEWH^(f8(9<}1&Y z7&ozM%u_;eD_jxb@As^)0LOc%pZxtof7Dzy{Di^wtOC{|=$ZtAKRw&-DMcOIz-^x^ zZ6cc@r&AyDXWUexy2i2^U}s|1;100Wm1Zcw9Z}vHgUT|8(soA7aVFzJVz16pGS!E)w^sfr}ZqD)oHP7fLmVweNF@HG8n9LnX+;t@TZ2kFWwI%M9 z=kajdvQET(Ph=d^vFFBK^snCP{n#9ae9+O#SU0AzM%6R?44f)rw!o-Q>sXJfszqhH_eM~(V^`2w)4%yPDi5Wz%cvIQ;sP`wr|GzPu?61*Unyd9lO;dBRoXJt1 zags0CS}F-Ds*0j%(I}<3OW3lYq z9uL3Cy{>_6rk_)tQ^CLn4c!Dz>N_2dew+3pbo+}mb#5fV!go z;&{%J6@EZ>aO=OFm@tbBV619}Dgx35k+0w13yMe5^V@yI`;QOq3}KCc#!;DBjgW8Q z1P?i*Rn>1u{HRF#_41indWP*bJ0DLdE|l*&eyfAWES-KDObP>&*H0wsb9~>i$F~OF zmqe~K@#wlRwWz$2jUO3)hB=!)@ia5#AWL%G0U4m+Zr(TvQb+C zx+H%QV8Q7hxfKYCs$DW2q%tGQk%fP_A;*iuJQcipD$Pj!FAis*+h65qMY z`nifa>->_I^HN#rc**(p74lhK%~K7AxLCpCwdr{SmEE#^zROjNV+i04M7zhmL!O1* z=0A3=05*o8FvB|;_L0rEk@-o}MfQiCNO74H8UG%omq!1nut2XeKVk>8>he5y31&F^ z?5(dr@O_r6exvKKztlEZnxhFc$pc%ZQV-eU8{*iX?YP+`krT^!o z6*PW(-AJS%f(AX;qoG-jyxVD$J8_JR*$bOjSSTnH%>KQvP})K&1B~i;a~jWTU<~4| zVM__;T87X^5`(+%h~f&&Yi5o0JAyN9I`j+;H9QIt|Ik@)`iy9V!aH3A9-26_RMHR0 z-UMX(uq~y~KPiwMxeUYCm^K?5CVD;2h?k+m-wfjN8=h@W3uJfBAnNw`C_{4N9sRv= zuy*?K?;y_L`JK~}<=F36v~V3r-i0#eGIL>C;^6Ndj0awsUIrkj=8YbrQ@cmQlDmU% zs%%2HmqOnAO)i*kYk#{&PPpbeEo*ZT4Oskj!QZt^%UvZFe+V5elISw2)ox39h22rh z;ADqp2tnOe-oR~}wSPwd^3@N~1~c7*NpAWz$RG>=_jkv(c4EP4jg;2eVHn4YxY3d< zc$CY&rJJdk&7mF)dC>9lX8TX?0DNSP_yZo-b!+}eh@PtMLq4UuP}VUPss-JqSkkubVpL?pF?tQOY?S#8+Z@mNB;3#PbGLFKi(W$63YG=(2 z1O5O?F2YLQBMpX~&AQ#*Q?KVocjnVZp?Lkwn`dhBUK~pqg28eF;f!bGjjO$#{hN{7z9wP8K@*CBjLa4 z`C=>q`k!pdS#Xu;8dO~QGkqf)bfQn&YRB;ijoRobNp|Qa&KDLkYu3cqWQ@E%ZgVx& zkpia$8vE)j0f6m7==qt&@(o<~L5#e?)QUDvSs_+@`Xd6%Ruz>f-3cQqG?=C7fwsoC zG0uCK(i-?{Uy=uo!BpCQEN04o+&hn?eU-RM82l|l_8s zVhND(`SIGAV8|vYrppq}drT$Sj`I>$C{#m{gdnd&2D`13e~N0RY?AsMNw*(F?V4fM z&4b+cW_Uf2RA&X58p_}K9n>|-$M06K5P{h$`&h2436~I!MjGWPZLoe7FDpz`bA8yc zc8XRLUO!^49OItk_~A#irljmvLu?Ae`@aWy{w#6rDy!A&#Id-k8tz}k_pOL{x63yh zG@qB&rp!GDWj}SO*%9JtiX8KDyV!uLispk*^Kv~AQ820{d$Q@Icfnbn)i8x_>FRE3 zlbJ~TGq2cbMR9KVZu}+G2sB>q!XK*!Z6x0in8>7EB*(s z=l@^RG!NhXQ1<-a3g!9^+Rg#jF{4yqz(hndGH}uj3}f@!HKp1ayY(KyV^B^neC?2b zNAzjsUY-Q^g}dCu%2_E912oae#EoHt!o-oCZ9u2Mz5ib5dUYKoFiJUOpMSQ)pS(GR zq28Jzn3^mKGEvL0xd+x;kql%)gw8nyUtQHNAib#<>$~{u@~K$whn#{X1Vkvkhx>10#;t9J z5EmOS`59#?(ySeUiVz?3#+H6YKa2}LB#-k;CiA9$#ypmMzRWMf>f|o5{TZgxK~gPa z_^Es}Sn{GW)O=bXjd*gpwWld+WFUlD!IAUMv?(L1GWdHi7ssIpFd0e@$S;Gl9E22G zGQ%~GpHud)pL+ed_J!wxwt*h(bQ(~`)Tw2qVNfasWcn=k&vvgi6x-h!XjC9Cw) zIt-wO>lH@&d2@t^LTAH(0lJQ>mQ!vbwg%b&Wc-5iH-bqxWcK#=aBp^$=|;W{oW zLwv4=qg~-dQ|mkLhcY4~mA{i4&Xo=Q9Y+KAzIW32Mv2gUUo@1u=La{kjolN&dSN@e z!Ykg57xAM1e>YCcw4Cl~*4p+%&f{3`Vs=>#Wn423<~m$9LbQ4FYNLyxu9!8+W>vC8 zIe6<(t(wITcm0#in=+AFk;YS1dw&)N|BJ*OgiZZxUcC-Hn6{CjAuRf~DCT%QMYs_%Jc|JGr8JbO zWwTVA_M@h27|?LDqf>z@PWLOh;`$6UXy=&H3qBzTGHMWvuvb*jqcVU7LLe7+7>@su z1!qBt;hGp8Yd1T3B^PT9k>6obLb93+N*2Ad=s|r9eh?q+nF943oHGX=bpYw6q#BY* zBuYI2Xd$Nk*5}QJLZ?PuaW-`R4|nb8tg8SLHt`RKQ9I%6<3`!#apP?G`bQ-jU6!=g z9j0H9-EVdc$x+fEwwqEpY{hpLo%awn2n>_1D?xyf`ADHMDhH7b0RHnj_9L%!CB2W? z(JwV(|8Q8Kz|rl0bK6mDw^qg;ot)Kl9I|glJ%6A4Pq$~id%{{CpddP+_l$B#r}gZ0 z{3X#^PGY)KCU)49w`2Fc8u~D&i%7AcAvD=bfLaG^=eKo{-!SkQg|4KJs2khW<`~VW zpL7RgKEaawZ!NnrTgc?&UC$1!*^Fmj-}h{k`aLm7zWN4AExm%W?~c`ycNp~iypA7m z{kXD1{{_>|{g;zM_^E^|IeCtVG5Nuq)IHO>v}b$+iPXxUT+tSK)3t#_r=(Q+t43tE zvd>@K;!3TABTtE#wPA~(T)#hnTJ8Gus|@x=FCUh|%Iz!No}q!58&5EiY6ZB4^|G@@p2U;PyFykf@UCCv_t#I^1~uIrg&EmV_)rj=iQdWC@bW)UPmRH;;QnBUAP= zrs}k5`^hN+%SHptiJ^%}VY&>mE*D{CxN-I)udpcLiL^fKi|ro|R>QN;Ufogau-6em z<2GAgKd_Yx3Ghx($jppDGoYg?XUj&;&Y2De;I3aqo5_Xnb$p`@wQ3mg8G?M={39*{ zM=n$qF(aL7h4tiEP|FIIgwYhDc(jRU_$-+<(Dva+#oTpdZY z%s8q16G7vAh5YD*?d4?xj`v&A;a@f4DmRABt}dHi(;Lk{6YuzW^gzYJo`;#}G&j1< z&0Z|SkRO~G=s~tOlUayHSLFUqU1TcH(fNH|fXmzSb)w#u&|BMu8NpD~CHs5u|3N=yE~czfwj^+giy5&hB%Z^*y?oCxAE3sH$? zrmmiK1iy=@BD>@x;v6y(OR48%sd5L@)PSoDPRh;j`D|TpD*ksC^tt!Iru_Z2&OXP` zVmVV1R-7Z;J%joh zAS2q#b9alzypzA^JgWzuEH(yWpg_a=#GBG591>7l@ zAAug#*83J{xMZc_`4g7B5lBPUa9jdfKJHUxU9P{Pk@765D))O+aNv}~rNuR7g8v5` zUni;{5>)<5z(fY13aJ08J~U^(=fq5KOyZ#;!MX`Hv{{@#5H+V^oQjE9q6i3*R5yLg z06_!^L(8egX}EgtK13QpU%K@a>RraIx_UfKtJR2G=2x`|XM1vmTP#D{0xWxB{u%+o zDhKz%ASkL}k_$0$FZucQ7`%>9Tz5zGm+Vu-43bFFf95*mVHA)Q7#=KugNvgA{7JyC zCC7cZJIqf81tLbZAmr`@b9fMB94>-aakd+Y&q~yC9-Kg#jKujR0 z1q>u$l~6k!t`{fD>E-Jq+Ias#fy_o_DrMd{>UzGrf6a>x{5Rpj*U13Eau5qJ^lI#HIZk*{V z4KJ|GpOW6#dF-tuzBU5C8e&MiF&#UofA|C)1Ps^*puh&Fb^_E@4cfitRUbP50PAHy zkct~Bl|GyziD(FxhrWV~XdPee|3b(Z!B+@~X@J;>S^$6xJL(j(6F{pPGEe~b9-5Dr z!P=E1M5YK6=j5R(A_&ojeO_3x41Uz>sQsN&AYIZkm6uP4duIwlSVP9Yp=Kwb;!r10 z$MXIa8Vc;oiGfa(PH&CD?z~_(1m+_h3<|~f8$<4$)G2U6K_ZSrF)jme_}*;<4h=XX z&3)h7J9A@|<^iR+PLHBQJ6qPUsy67~BCV}EPO+lfPmJwsZ!tWOPFQ{KZKLya%4WTR zpZ~rfWJ8l0-BD@+<_jdxVNU+2t6&J*A8yc4Ux(W6KxWsZ9J|Wj3eSOK)qTNk? zL-pYEYrDn)mDNnA$a1v`9@T)@mm&jt1Tc3XK%o&%TZp+AP-dcq* z1PE1`rN?jScpRIW@Mdqq5JL(ogf;}2()HrSixl$C2$WkW=gY4}ocnsz@DAK}TAzkKWr(YPjB>kOPJfrEdM#=2#IRZKib0j^C*oPvw$y|>8etvglVv-G z(3=)Do+7=Q1h-4A7n*L?F0bNI_QKb7Ap^n4d*UJrt#;V?j}Nf-HFl(Uc}!%{I4F=~J&b?Iq;Lgg@_q^X^S4t~FfuR!9kh={#K z`k4?g0gOt8stmI#415$mwjl6|7;2!3r$~AYn{l*OQ4=20G!k9Le<5(=4zZY0kS;O@ zO<6X%e4b94hUPyOnns20hpJ)RiD>8%&@RH#1L|pgx-6rVm7Ng#sgA7VT_6l(h;ZzioA;lEL)pqoUV#Q~cs#-52Ny|0 z;148qdNe#a^NE*~Vl&I=gyz5Z7o*KMqJb>dLNm!Ijoj4W<%;MHVg z9YfJse&Fx}|7o0gA0YGC@&}q)N~$V74UueKu3@?xIW)@WLfQeMiI0{7dQdnA)`9=z zBVk-+O`=q=cQrLgG0sefne1u~^f$&|Ht5L^0S&SnY}G*=H=cJN#bStiWv}{%7=^XFu$>< zv@9s>y};)u%E--U_J3QqUcI_lkd~Zv;Em(?+ua#QdOq4CWk!ya?I0qxTc?qewlo*J z^R;Qg$nKI@oXk<-Nkf7-M=;~5RJ&Z7==fKo;Qmy*tF*N8Il4_0a3-2r=WnWmTx1tE z&3tDXZ8L3ET6S$(oR};_I9O3O#|VILwvGnXDtUBS{73(J6xRBrQTxYdV6;6SnKS*o z@(3fs98*~5N|Ru9bR*{S)i%JQd6EZF2Zc%rre?b{aY>^ERhxLg*P1U3p>)uZ^I66u zBZND*<92Va1lEg4cSnu&!7a_fbv_}XhDwNPzn?>*N#ZTM`g2-}Y6x@Guhl)v1?D0E z(5Zn|wx~G=Mj86OW01QXWo&63Syhu}g%py``wpiYYW` z>ooI$opxYEPK9=$O?gWB!{~Eq&VNVoYC0i5LNlB+BL^~4O;e5N4H{9O+c`DPNxLwf zRJGO)ZT5@)RCHdim*2S}e0a&Z6HGoi?8tk# z{4mXe>qGu$ukl8s$YXy9)~~WQap9Np*){o_-6_saVA^0TV3|+nOM1rLkmE!`)EED) zIh4W&I-y{{TO6_-(6Jrss-qmpP2Ux^>$?tiX%ctu3K{%WMKp0WVT&?uM$iW{dSO;w zWBNzYBhF(r2#Mzeb4%lYE-f(+19zk{7ns7=*;~L(3iB5h1f){FmTB0I$ z;XIX~A)xwkdhFj})N|Fl?QgC9Id5m}k`xP#wlb^8JBC|OK@G@OB$H@COfC}UpPxcT zm+T|!@I0T)r33O}QXG9Q%!%-25?tty!h`Y7(bwf<_+NWx?FZBv6K@xJcb=Wf={(O3 zQ)}Do-iQ^p4AN77wHLGYtP`s!)M7=lF^@c5~e;8zSE^V2miGxwAWm&u()?uj8+pVtD{X zR3f^71{P~xZg24(!H^%0VrE0>4*l$lZqA@Oc{^3=Yh*ZdCN<8kFPB@rU@?BKm-0Z{?~Wg{Rhc1}n0r%UJ5xzBeZ?zN76Oo)7%YfYbUgg>zW zJJ8~QYJewbf}NQlUI5(T;^jEk5pBWYZ`8yJqMsH^7I^|te5e;Lk+M_~7q9a&kocqS z5A~4pC6KWN{r5G<5_+?gl~KW#`cTYqzKz^GiPIHk(?PWOnlX*n)4|DPjdZsX;qR}} zW_7F(k42y6E2>2yhKqwMhtyJYTq;2}Mx#NI^_zuFO6IhliH}c9JQz@7I%bzStyT*Y z$6eNRsaDL=)!uD8K#|d4JkaHpfvE9?1ufy`uLoWjcWQ|+q^VBn4J*^tpyEW^P!rj` zp6xw*0Co*N3HQs7}eMp#&~s zAXEZdsrMJUk=saKnyI4LaJQNJ9nBilrXH3kfRrhRDjt{SZc{$-bfDPQC>$Ctqjm&n z#uX;CV#gt-lqik`76r!Y7zEa)#i*AGUzQr1we9RXrtmn(EtQ1r`Q0O_K238}fewL= zwc3WIv*9K)k(Y7VwR}nKscN5Z@zSF+(Zj;Rfo`DaJUgI)51+^bh3!&0`CMEbKvf^L zvdy>8_b#@!H?)^{C>xulUh6mYS4gWDRcSeN+4);pqJ}(1ZbihY)UmO%IgrD96j;PA z);{jLzfY}j79Gb`!>T)z?hh|{7jxm6#7qEWG$1k9+>>iuV8&`;u4{KI*ruM1mgew%D)VxlG)|{aG0JS$ zN$)eqj$lWZs{p$mnyG8sU4vcp1U!z#)uZlR+f(46Yl|Vrzxa5Q~g9kSmgl$D7;o>T}NK zL9Nx!T6fDeuGUebTWFS86-^^&yp)hlHZ@+GfxQXDo%U!j>lk=1MTa%>u|Vz!&DcOG zN!g_ELF~?Bl&^lg^zlT(NE+bCA>lc@y~If#QYQi=;q>OpGvDwuwg{ zDI6=qdZ<4X{!PIc4959{JX$4PMvb6pBSAIjV|wWX; zWID=DnJ)DugQrMzXu9uSb2)BE2Y0c{uIETfqL>U|(pcDDFUA}3J8X8#dMwMWOA$kd zaV;oOrfN?)@Qy_(bQaf$pFAM%t-N0nP^%_ zG-)V(HSTlub8YPP7S-9orft;lE*MD691kA*oI1SGln}28{;}rVTRAW(ZD+>U^6)q zBX3xltTR|~q+Ql5&c^Tj9w?JDrH9msAfciMH$PjSM|JIhnHDmp7f9KCm#C z1&9p6gQO#P*rNWLi@TR7Y3<9l*kM~hq8c&pH6G)|cw8Ene(UwjLZE>IoON8I%WIcgnj+bvIwHnR2(DAs(@xeV#DD_%VN4GF{ zZ2RY{ixbjsZ@JT5{tG$3$>(MqjD&`cg*6SVDOZwphik98&K_dcY*)7wzIQwhM%{0O zT^2Q^I$Jp=G3Y<9Nx5n`9U!Y1X&s*{Cy98u7KTYmHuI=Xg$^6rUH!&=IXc0PH@KY% z^FY44PCki1D@uxFN3*)!e#cv@Yw+L9k1MxTxZQz>r(Z1)f|v$+$Vg!C+VgMw9*10< zJhtxNv7@6Y+}OOUpk3?k7vrth74jFqpS|J569w{@(_WSN<+|XB4$Z2q>+dvqz8=2) z-Z!j8tUi)U=(9}s=xLagVP97QsE#+`*c#(#!V>fpMU2Y6C5`r`cdu(fJBz??HYL}} zcj?&9!C+MS0yN3uB23F?+S z(};(XWI;HWgjlg+#fk)2y>*MdY_zdr#fuke@GM_!yqr9NsO*@PcaifBz2?)l2Rqno zKzkZEJn5N`(GR&EzZ&+^MKeg-VP;D$OA)amLnH>2i2=NrdHehbloSJohS&w$ZCRAG zckhPhe_X|L`W+IaIBU5JKCRk-!PKuM<3M43sU^N40SuX& z8sK84`H~p7(Z9OFB!XK;_X6+?;25jfrDm5$5#}gXxLqQ`;*>8BWV{5<7D6e*a*``e zXA>M=4iqAZD2Nk|;Wyqro!~Bb#!V&88F-Pj}$@^nX_EzFK^bY`N zaLa7ykJj)!y_}v6hDAZ5c0_%x*gLa)AvB+B)1V~6k-Z;*gMs-{fflSq)v#0+A*ai& zYzKCtI>}|dMeaLB3hfOKkd?+@@lfgm1s*ww1s8!>sBmt$iy=)(?whAykrUfyfJa1% zUu^@oA$iHm@H%hF*HcXp_jJ(#D1{Icy8$L=Y_PY8;7QM`OReK^d9l|TPJC&U9dxP5 zL&1(CK;-4xq`{`my5gEV!tI}5b#h}bUTZapQniBAw-HH9A|e<@7lJx{!*vPUU5a&b z2bgiGxmhsu2+O9A-Ja4xf0al0l+}G53(_s%L+M6Qt29NLm87(k#v%a}LlRlSHf;Ea ztsjJrvrm~-9qzL~qdZkmj)3LUQ!vhj<>3rniFISz1TRPt(9oc>@a=jYc;pMl_ZI(S zI}}&h9)Lg~-5LXhpv34=GNQplIV2ByX{6UnM(*YVQ0|53@;lWx?e)Ed!=vEx@OAZW z%j5B_m%zPsq@{Ti%=br^);hD)^f?-3IhD%fQ6;^3l-4A+7+2YIG(g#$Y{iWMjoe!a z&4-Pe_ZBUM+P*sWR|T^1LBVlYFOn^?;^7PpSW@`ao28U8iQ$GzkB+{2@UI91hM3UY z6|&@>+#sdC=f9lpglLhoT8XTriy82`E@suuYrj;Z6q8BF-Lkf-Yv%qx1XpaOCCTp@+_P z_g;#b+Rjlpxdun|QWO~OBR9WMlDy#Jg&DEaoZhD`RAck^n1GqC-V0>NXD6j|_bkYM!q_ppD?{IKC zSm6u0yMc}(N({o51YPqWOTna?U@!?B;F>#BA?0SctMs2&sIzL5rRsY3uBPgquPk)X z@h3$Vk%*38KJdDUp|tD4>2Gkq%$m3&FHmpJY`dh+XiwUWvSMO1yWcxmfqVM({- zyJ9JTFdpi?0<{gqs%oSWHkA1TfUM;VV{{HOmAWtB@9v?zMqU4%#a7i&+jrxGzn0ga zL}IcLxG?B&Tmxd?*Tc^^IP-A8h!Y2WLh9seOaO8*!4?U3@zU~5&8X252UEg(8RYQa zrROcZ_*QwIIuC*#s~E4?SyUKX+`fKJ-+QXo!R>3_W~$b`?Q7oFz4Iy$aEQnd;qB{E z0q@_7#GiG@B-0dvfQup^q!A*WQA$EEghEJ>V)?8ES8=hxZ8OwMxG&r5LQFXFn=>Zj0yj1kwoj8kcJT3c^&;EXMAn_|N$VZFtP+c=2i z$oqz|{g(2Rqrlfbd<#avY$=m!byI_CjAltTJEDH&hiFGq^s+@r&9{Gq^>dh|EC1 zETO`h26hZWZz6S&U3}A->|k`*IP3KR{UL+$NVCz5j)0%k)5&6f$8I5a!}ObNWOvwj3Hp6BXIS&wcMj>@n{0RvS_sKuWz%)OOu>Iz`TO)Gtprr-9trL(ia|3j4?ke zn|DtEeJM_(MNwa5lwISx>mA*lWu~>j4r1b^4#2qa8G5mX0@QU$UoRm@XRHi9Z}Otb^9;yq|`Svnch~tXm{tD9m||>`k0A44o$Y(ZN4DZ9(|VL zFIBG3I`*j>X>`?cJ0x2?kmk~=U#@g0O@8ErepijDY0lK@rqP+?lMzxpAtELNN_$LY-9jE((4nhY9}wu}`|udB1he1$C@2qh<(r z&kouNY1MIetq?NqFyUsX<+za3uo|LH5?!I(EpGNZzRTA5`sb;@U>^yP8h#vL@3goa z!Rx%e4eKYE>HMfRjWOF+^RiwJTN+ShdTQdG9vnq+FzR{8C=9k$F_uA+cU9|4T(CDq zS|~mMH$ce0oZpSD){4vx`luWfzd68 zs4^S=&nvxt7t2g;I+hINw;+!4HH--@P3ebA&0*1LINX)&DW=;P z>FTgoenZida8tZt0oq{(r5coKQK?2$seOBs(PzCL?|b9J*w{4W^Zi1@E~vp9Pp~sB zqWD#qvYs);TaZJ%>u+jpJ#QN9)eGAnMv%;iY&0WORYQfneRff47bO93%E@f2bt-<# zSa0XKNo(13h@90!&o}hc5V7~Hlc?oDLoLe(4v;!PL~9jH5{2bU^&vh$&se;clzU7a zk|OMN0`Z-uNQqd-y4(TE;i#htTFtfCm<=Eg8T)7JdFAwSmpR!}IL57t^sB&2n8Z@e; zO+Dr%3&N~FzG^&ZN2dn5AN=^Folsw7Gp%se{r21axh-ewtA+Q^7+Mks=k_`59=JX| z{>I~!PeLP6k^Ky19!$Jk-?fyISM(xG8y_#Ul3(FhK0r~Tra#<-PEo-^SvPvNiMdhL zs!{Y&8li+^3OYs@7bd2=KOg49bTPV3V&7=G&-sy#Er_bAQ5utu3=AmCW7TtMOqIQ>(cx4G9KnPJ%QVQc!-EXUYnOesi|^` zKxlQ|eEqe0>GHYl8EfF-ABTI9C`3apey+QX=4?Nnr?fGCu*h(Ju3#ewk@??osG6Cr z?TG$H8(B>Adi89i9eMuwXB{8W&sBouSo#cB^vn%Z4~QCtkbZ#sS2vo|hxZCPAdf(K zn%WJ-Qi5%U5qDgVtj0r3k?IHJ`f*FCmCk0v@~1l>=(4&D>Z^jeA+J>ji&0%;$+tC6 zMe>n+&BrHgz@1aPVdijko2>BJbZ^!ws_}0Wp+g<+m(denJxUVZ1MUVTG12s;<(AQ* zFLSPkdgH$juWe`Ma=+v2wdcD&%aYpqSD%yTi8N@-1t~yArkWO)66OKMAo3~j?I_I5 zh2D=BD~$BvHA zFOJ^t0Lm-SDwSh!=Ki(KO7Tm*zFO9Fp#&y^flx>`_!FIhkIwNLbM8L*7>I# z@0eg6^qp5F`3Bx>^;HB)Z*-i^c2q}Vs51LTW;{9ics_4Jv~a2!vKoa7y70*4mdJs* zn!d^ja?x0W5fPJ8I|XqgJyX_ll6|B8LHe*Ausq;(U>%rS4p{o+u> z!1VZt2`oDxkN*ZKXl@(RQ2xQ!tG_KIe=9{i92^<3 zMmnJJ{wV+H;Lggx{?kiNN8^6fFVpI_z0@DVnxDGd74dW|hS7%Zo{LeMWB;~zyVrER zgGX#~%g$B$ZW}*sjUWF_FrlW?*&grCw;uu>9p@i~;jmgRNE;b<(_$Ufn;af3Q&4Uu{nWm#{SE*`DtEYBV~fee(uQQ)8Vd zWA;=Nd)ReRQuX*lI$z~#(c{dV-Z>1)blgkhvb|PAKJu6({`xhVJEH=zywNl2K=`Do z*j-8s{nf)PvX&H~IE|LN6psJ%q+qb{4@^vWe?tW7n{WRd7@PaJFg~H(eyfVUe{I%h zbTd`-8tI+i%Im+%z)l~@Tx1q|`_)L-iGOo#L zm;YKvWWRb!K2~l|soEZ8gYB~UGxD+F*MAtdcoG{FZtPELgbdy5N8NkcFFtOVZf8g{P<4<9p|E}WwJVx4zk!<=c zXEA8Jzia+KuT>FlC~2lRul7H;`@YBG*sE(tN)Zm@o4Zl=`o6195#`13Yw&lDjkHwu z>0!cApxat|#LSA+l_US5xotz(LZQ=L&Ii7evjvK0xtA)(p7pH@mglT{>@+MB{i(h` zmB~Jj?(Cekf;0V%LPn+3uC*WQOe#hm$kF-^(vpF(h|v-d5}-5sl&zqjGW6OT;-5f? zMsuUHPYye2Ay}Oxp^n&8I>ojY5QGRv)N#^D1p##9>nWRqLCbKwVpDBxy0*~~>&(k# zMQx(>oo`*%%y1)RB*sQVr%>pnw!ii+nK6$7i88#I|i zO@j%M`<0xz88gU{&L&q3KlHjE&9Z4!Fr1kuQdj!#SL!$nfxavSh^!|q2=yL{XT7qc zus9G8Y2^)l4iKfCZe#i3ZY z=f@rtXZ_h9TsuPoDpBwwa7xdUk>jhMUFK&c<-nx^&_oeY6}Ub%C*Wp- zAH8d%WtM~{qE~T5A)-OV)VOG>pq%t{*9T(ph-^N_;KS&2kf@ld`YjP;zWZ3dTl`wr37jZ^P>@t z>;Eb!<$iS4`27N6=I07sQ<%IULNoSF72so4gvKKjS@ogf-5Ahy-wG z^M^x_!vKdnfsr=0*?P7Wqx9zp8{1Ol{(LW)bA#Gv`#*p{eYIsn2GC(YN0)T7>Z(gL z0@{5H`xjjTO5usN6Ua^g&-D#5!$uEPB~p3X9ClWc3GgI>6-?~c868#v&A^|1v}3A1 zo`bKtlXF;9kT^!NXRME~QB@86-t+GEJV<*T|KrOug}Y-}=RG-b0i)hyj^yI953iPh zu(VKOgPS@0q3Etve<$YRlBP^^4e|Z91bqLVm)ULpPA}A_&t}1#^D`Yyx(ImjGG6dg zTVP)A+G-Db+uv;Y_vJX8`B_s)eHI?eA%N*CAIECz{);RhAAJZVQEr4Upw|kEuG-tQ z>4T;*OF`voOxht?NR4zwh&8M|6f&3 zc3L?Wayx!d%v4`L+Q2@p+}SDrJGX43(X&0Auh~IuBMf+R@nI8>GakT=xTwUH)%vo9 zlbs`({;G2C5Ao5$_XifU(`c+L11_5w5gQxML=< zvxX-F6Z`}c-E`Rzk(PRWEQl$%KnL8cy?FR~nnLAKNv1}KII;VmNA7FzRBecA zRygSYyzTz)omv&w{dN;WjB((In%+RC{d~k!L^6tW*T7kM6F{KCg}rKCA(*54aT+ws z6B`*!HRutn=O|(nKyU*~iM%dib za0yqnI8n2esD-MC1&q7nj2vPt#bZ-O(TX++$+-t6nnCdZC?mG8zU35`C6eP1erPkb z3VNxZ<;qW&vN9ptIn zX4GM*>C(&!|Zr#b1W;{JO) zhmTEw-9Yj?q9>3QVos+B0K`b%%`z8d)5boRRREAid!52z%q|_7l*Nkhs@zrGB`qsx=OkV7d~_Yz zwdy8w;x(s&C+9%X#dQZ~?e%;$-191%RZFIa$9=^nBZ%VeH*GarwmFVn6RkDnqo3)N zfUXEtABJn*uq9PBieq}Lpl9)rZGXZ2+W`UVRJf&&sxx4}UtE4TN=qkpLX*$ghT&-F zNq06WQg23NNx<~rzx>IWr$eu+xQF2Aq&CmUAH3CvcXt;hWY=*|(8JonALmRUhD1b= zK*}cx5FOB1npC+y_uJ3k3I`sP4ipNGN!@C2HqJXtONUnFO|~5jpyicpDPtR_h*ZA; zO)i=e6K}E5D+Mn6h73idDOsPocd_RNe9Ph35TO3P{B-zi(|$AI!q>s#*ID6n)X`D2 zm)Df!gvU%RHW3au1>sTs7%26i35-_*-o@IT$Hbi{;++YyfmiH~DXq?%2I=xg!x1VC zr9X-1!6x)a@_=uGj;&vJlE4G_tL?P}xO6Y8gBI;%DDOneymBX&+~){!4wtNJysTYt z1=_$(KFg)BdDl)e^2^S&oApQk?& zH)jBAm#sP84z@mThi`wrszG>MB4B4s~U&GioEnwQ%SEw?7N>^@TCn+WaKPUsEMCz3posWLl>G< zc^VtWvTeq&n~$WuNVq8u(^8~;btYqnB7c8>V?z75Sn31_YYYj1j{<77qAuy0hasX= znn_K>$5TRDlORJcL=4yD{7XAeg`s@>qgKv;$^PvE_FY&1qx-*Kl|SSRb{b63Sze1J zA{MDAZc!c-rP&jcNHMTIO9@gFg4mN_{LTpd-e08lv&-!_2=u^UFRG!qhS8S$ZTe@* z_a_LBU#!Vkar&%0pQG4AmaO3h&~GWja;efpK?s#5N$%n|)z|kmPrcwk-PIl^vy*o& z_z{*+UH=&NR{nS$$9Lu94L$E!-ZNRbRSPCxZotqRzHQ=TbDr_hdEwW~Mha*`?D_KC z|4%6-F#-HXB>v_gUqSw|WVSUzOUeHL+>!qNbZ)a@tp|CvveseqMHvsoO~ZIK&(ei3j^S*B-T>d&usM z$%js1g@x+IN$1jWBYHuvDpWTUavU@`6!h>Gp_!jQQhrYKZ%q%!{l{M%AC+o=i6Wey zZ?U7-!>L$eE%&&%7_Tep{**snZ;j8EQ?_`9?uly&>_u<%1#f)uUnPpS*o=z;&oJQo zU^Kty?6mL?Qq-y$=4^gKW>s?E2d8HDVh6LqQvpwj|0mRbc@_O_O_Irc2S6GtXnCMb zgg<%l`{zTvt~j3(Fk9GNPUE~OdM3|BI;^A@#0OT;%rsyPT%F;vr!j5RtdsfMH*0z5 zG#x8l5|L621_ZSdLdn)5xzISpA4evf9BMI)7|#b>*8b|91tqI#{4`EVdkHNP&Mi(T zsE2bj)B0~39%DX1qS~+d3PIU$!A{BzKh!6>c2 zHM5NFXRdJalCpa)xmJ7fsW8<`Ly*mwd4fHUw!F3ZiLX&i4Btj!bngV(Vjico5MZ^V zWiMqq*6i8+FQJAkT4Ue8_ne?$M^a6k_gahC%jnW1X5wKlYOA|`IM zmcp_=-I8gVPEQP}4KtYd(9DMKMN z`o7@nIBSoCNRiex3t7PVP-tTL7<+}EU{>25v3oHb(?+7P{z7l>y{CX4*Kcgjznm?M zd%5_!ruH3bvYBeWB2#b#RJajOAj+fiU0H;a;a%88$+jbx$6iXLMJcps+cwUEx&fCiu5_pLT{H~i# zOFcHlgJ*RL7j_o(w!Km^n*m8mX)UdfN0**$%+Z7#ddb|opcOiq#kua%F!Db|oWL}* zG)4=|VeR0Lu?L~hHudFUXYgj|>|ZukrlTJPoeqUmo0l-bH-I zI4HYst2-^gSJj(vJ?hXrF4nf)TIQB|U=IVTIZ{7z%CR*-T%z%ki~|9octB9cNP}`w z!okHr{Dt~41l-(%3pXb?Uf-<|s54|<@{0gjRGBko_o3|=ra#iQpMOmCwH+SLgeX(4 z!Fg+$J>`a+(FMbma@{I1u_8JSG|g{VMVgvp{Bej3$xr!wYJCz^a~=2BAH_>D?DpJt zH_mN~>=d&O&fE(T)keC9#@|6zHM&^#d~AhW9Og#;su>2^V~5o;2HremZM=`-Q}9dY z!4bEi-2)x}?{IQaH8nReVmlrLxz;eZDF%PzY=u&nkyb znnvBVJ0n_Z-yCJ;n-0Vn->5~eT48uis)^M_vVEnHGkP%&LyRA@_*iK-L#-o);8N(l zN&l!Fm`R&=zS6NxD*1sQA?CSHYYtIk(GNEx92hi3_6*#PWvxIvviYK5S1=C+ELFmS zlT?R6E@-Yh^~W%$1S3RRC);jID={mj0ZjtsRC?jacAi$WD^Ui+6+xN@t{KVK?1Qc> zFk%YwCuhCH*4kl7BSPL2lamXXxO|C6K0C(kThp_*+FDJ6xv@$TJy+L-s@TD(*gwM` zC}a6E9{`8adL%7f2kAQjJcE|Zn@&?XON-L`T_pv4Qht3_jGYxsA2?tcIRCMKq0`aq zp}y8|tuGBI{V%4^}FAQB|=K96JBK{gAWY?N%u?B#x&yom(c&JpUk+(>Nid}(8$sY)cG9F==in$b1$kkCE#g{Wb$xQBW2 zEM}t_;HY5-7AjdT36Z)QIx*xB@v{Mzd?Io@bP!87O%kf`@@EH^22Eee%20r*jdKX2 zBhE-9IWUHfHHYjx?H&hb@91*68am~IT+pdPPtFg#s)R(5Nx_05Kx;T{{ua9J)JBS_ zc#FKpV7u+}7}vsXY^LRGHV6L)N)j@V-kev-7iuxI)FXG<-Xw3u2I?wFUfNz9ri$wliowsA*@#zzv()&VqGU6AKoVn>zzrSvvFl>J0iYoDz}iUd?dMY?w>>IK?TaRh@~o~O4hZJ`7Uvk!bLZ4Xnrt{GLO0b%uT&Oqf$oI9|OvS zCCI#=`dXjw^zm^RODnl8JSLRM5`X02kNTOlQ=U0C^WpV}f9kv-gO`XM-Bqe8vlVHw zbC56LrJKGrC4TX09A#e^)I=^+kR2qcm6el_=fE=O_!`*;N{~T~jERWBqsj`NiXg?o z>!!;Y(?1uP%=bTM_Lv7XT|Wq)cG*^TJu}Gx<`Tv|0n2(ZKXFU(26L>#Vkb2Tnoe4VenTga%zDI5&|32TZN5o1d)zOzQ|U`SeR#fP|J`( z7o)}09Wg413W8Mu&~CMX#g{t|*$o}X`4VxKXzxacksq}+j30sE1(T%etQK4@d_JJu z1l26?NTj(^ZdCxuMp^w3eLx6a7;Gm;7OsZ7e#9}}LbeWB^-I#Hk|?VX!$7#yTg>!L zw&MTUPZgf13?j^MsuGxt>maw@1h(gc%bcl54z*mW>9lChzkUOpp~zHA1=rR% zlFHwLOXujZ^u~c8u>4>=a6V8J3c-OcS2kQASA}1I^_E_E36o9#b^u`Ot0MGAx36;f zobSw+ago#C%vqGi1iia=GlL)L0S*mnDiKV5uM7)7`%m(LObW620C3TPtMxDDmZL9ERM38*bXL=B$Jk1We4Lmfh6%|w!KwB|@ zpYUo!91VL`N@Nf>R1@HLbpJ=yj%9ua0uS2zOZT&jbR`d^+x+rgn)la^cr*A_yh)Sqd7W(r z8vY!XlOng<#&N20qm}{LV^S8yPs5O1LG_gNv)9x~1_qEe3nGhzRC&mqqUVjIpf4nI z{@_n?FaBYSBpbW_tI*9^_!k$cj^!e0uzy|pg!Cd3$xe12tp0G+^(C9$V9sB;*hW-; ztSeDeVQltH-$?$jWs`$seiZa6$Xw$9*eV3&%j}MbiBRam7@fUKiG7Yb4;0(G8NOS~ zs%`Reg6lUFM84O(D$&Ytpm9d+MB=E_rFTgptz~jI8L`H?Qz<;KDdKROqvP-|+|$pM zIdEW20-=XwXbeL5DYgms8)OPY0?_T`q{j6TF)%I&P}d%3nc3TM$sxp=|Cnl*Bp`qW z&0Cco;)^>CIc6JHakrB06A^rgOK*D4+F-EY++xuTbTIYVOf84Uh4YY>P?HVE6Q=oLz z{VvaZ7Ac8Or(R{*_s{Fp7um8}Kwu64eZXaybpb_XVK&6LOi|mk4{}m}AUn(9Xm^f< zO`9YDuU#-wXy{ZbSAIKarUJTTAn z-e(ppMkpd6ilW6ms(;6YKu>5bL3soMzh{)JDyA}2gr8ST$dplH&!QHh`c$xDiYhTs zRrh>wy~&~|J|@TY!H~gm0V1>e;mS!2KY`=ipQ7e~Uo{ZlNLNnc|MPDz?Lglqz^Z>Py;Vi$X@IUmX zO)0xe6;tW0_J)F_bl431hR7(rS^}6^DMdsD8KyaPGz4WnQ~E6@S47HDXLN<0T|D6(HQ%Fw_o~w_56gU(~p7tMb z-;sJ96k>E`ix{FK6k{SW{o_UmtWliyW(!h@yH$)>F%}}f&$URZrZypTTw70zlo8T> zN@BTaps-(t*n-4Jpr~cz$jmi#Um_G#LDi!C3Kaj06EdQS7=GZTilQV=-=}1fBo~JT z%=_q_o3$Ko{or<I;HGph3;?v@YoLT*4-GH^1CI6~e%ga* za(8dzjRmaUDhuX#GvwNLgNiDO-Tx=08@yLkpwgAmGydW|rT%W<7yfO*i4jTu2Iab8 zg%1&RF-N-aT`+E$Zh_lt_MEG{bXH#gMF_LAcuEcq3zV{hrGrg)q^JofpTZ7hJaP{ zDro{OG2D>06Si!YoNMTJi>g&#KUhzK9{shXtN;0w{kU`(_iRAPQDw zz>^ip#)w)tmiotUIB?K`qD&rJZo!4%ixG^28b`X|nTy*JvJcqnfYDM|!IkU0afskp zKyo1X%>7>uU)USBztCLuP1>L6IGedL|2&b&{$bM;-oRGSM`d!PGJrajxoqV18(jsd z_JsdaXm#z0IYa6fwn87+9!K*pw!;9p5eJc(q}v!b-^4aO_wnm?mIEv~z1x&@Z#Ek3 zF`0SJ`zGuQu0+J<%^{xT&P^6Vj1>e&Mo1}rPuem6d? znZ&0SQFE^J%9`7Hnx>M@KdYSq)YbI*a@R=1Et8!uyS-=Ef9axCeFyojqKZxc{5JX) zdn0l8j}@vJM8W{L(UYh+Fwmycx7AJW4M37dkh12;HR$yEcFpLIN^!9(W+tGdR**AM zTpFxEQ4pl^Mejm$Mn+kjXkXP{eCeT{r~kl%WVztU8Go>pL1nMCK8lCon!Z^uaA8};nGiP=#7^a6NDix z2e!jA#&ovsmy_cze(z1pLgYHG?xXuX0C|ePGp|5q!>@WDpv9g4+tr_&ZMA%RZ0=x%WD8ZezjX}cvL7A66)cLef zLfk1@SBo~h8Tt@&HvT7H=y7UnI~pBy=?a_rpZ{=;Ezg+)-^Q}hL>U8qMA_bER%kUf z9xk>mI^3&6$Z@v}s&&~R20!j9vOJxexh$xF#$S2=yEn6a&Kd6@%rmAvNe3~=8@vE| zX=9iWIbKX=l`xOAJk;d}?Z0m}2rD95lh)0j`@f?$tr=5xyjWh0%ldDSZq7IEY;kJz zIPa?2`ppz=Y0#`ni(6nvXQ6*Tgl&z3%s2Tw8rk@kI%vhu$*owf8|%J!sMKdKbZ=}O zgKw2qr))hA{@ixogC5Ii&}QFeTsRx@iX2E%3W-rcMk8>1-yabtCfZ5fmqPnJa{&x9lvh9JCj8+#egR}evLZW+iwRWo-naRj)Y4~Y=QC& zSIpYWxW(eDhkuwTme(O#dWj3mPYt}|Je(x*F{gxUYmCMmBX4!}K2G&El_gIn!@XK3 zy3Y5If`jc&KQ||~!P(?jsl&8#vWn~8^Om;m31-W7EW?tRuxR1x;iCsPwN2W{&7Pj6 z!RCk~jg~L)G=5v38)(ve+3{t_)6T=u)uUXk=q_l6524cLa&H$TnXi$YtwEt*!P?5f zuWqkK&CZT2n2HiY24Kt?=1813)Yq-VHKN@;X7hEX8?}RDt5BQMXIB0|OF7#VjculZ z$}*XPGwUGB8c$BspM!GASNsW+^7k>AmpeGa#T)MJv`^v$8&BU1{*ZXYU2=(%Ft&F$%Tx}V5 zv+r?-BTE$|#8{;3l}e9OE!A!h17_RyaJ182o{u=t%I5aj?taD$-D6gU*kall_?dq@ zquX^oF&8T*b8BeV9l6unw{hJSO}OChH)G19v43ZkVdalnRo%8L5qE~Aku+c8L7u@$ zt8JYRjip4D8iw*3%8Ufz9~X|V5}>gXtVxI+O#&rU;0aYkAQUJGUSBPYMhv`GmG@|v zB*0?KP!+}DFJNNJqR=7D+2Jn~Luluxr>L$UpS)Dt5u4A*es&cOGDH&^E?oT#r#=fX z4tOGl*g-C)>+mB`)JNHY2uvOdt#vkV>e?j{tRMl+)TY63nK zX`EIj_ewAiMt?#7f+g-K9E1laSuUl+DUmn1DYFcClWyg-wmlCY&AjYl8T9yvS&=ya z=q2SzV}#*TJh5#$I+UalJ5Ev;abs!4ivE;0g!OI%y`J@8;6W`rc@suobuFP}s7FLd z^ocnb$S41qQFGmV-ccfsLLs9RwcvpM!J$r(uzB8xOo(4p8L3!a70vbdj>7g)}mwi$*y_d zp;R#9vP$e%^qa>vA}7|(^OexYksXNl+derLo?-{}=a;R+vXRmEpF&rm& zOJNZ+Pi8QNK@**gG8Zv55V_tesT&7|Oe*TewS!-I>GBQBU7v%6=}v6^+3&6jaeroZ z(V4?kMq4qr+ieb|+i!Aet7JB@!iS;EqQTGLDKDdjT4}Q$c3dh(y+X}Hd% zJ$Upp+g>j-u3Q!d_0wP>@u5l`MA3{5TwAlBDhNhFYpTG{ksxMWV;(7vW@O>H2_|VY z<6{r>P5($Jr*1!|?;w6}&WXRci27tU-OF8BVx(fvocg#f+^zNv7NdZubLLyUMK%X#el`iU&5i5*8t-F`d?+OsPzTM6Fi!X5jum>aWCI7wVSXqW**j> zo%a>Cw%89659vzF$vVSrB$aWE#So5eJSV57SFMnq|^PA>X%*9Xz&R!eHG7 zQwIr#mSc2cD%47m6)>7R{j@QIIgElAD@w*aLjt5|V8@dp+;p-LFcK{eGTXX2 zVN{GET?(y0@N`H1>9Y^hCDN!Vbx6fRr>}wWUcXWP&fazKqi=coBbk2D-~G$2%AGtp znw|^oTcc5WCMyh0c3mKOQhh=g$yf?@Fe(gdB}EnxIDWQWNnZE6@E?&>tXL&_ zk(83OwxBf4JLz~d-v>`Kk&6O6YNVFN-LZ;@`W2>MU)2x$NdFhMLGAsgCc&n( zMCp!gg2TbTsu!#q2~5J4yTU5#rbz8RF~t4jN7guzbS^4kTtVu$Jco8B7~n#pN^ZHe zD+oGYD+1%MJc)};G_kcUoYTR7pHdQx=iZM8XL|VH?ju6;DrHKh$o>haz&mr)c8XE* zHaZ)oqgzM@ZQstlF|wZ!{e%*}w$i{EHoD&0T=wkO(XNa*l!9N`E=SH|JqPK;i-_TJg2!x^le* zW`{qWBxp3TGosMiP}DGnUo0VE*-O%eB|5Btp1!e3P383y`dt0laCxI}yhe$K`@HDe zk^hXFHye;QlVvZe)Kd*a0N^|o>{=P^Hrl;cf5wbC={s*Q|I?aG^+DML1$vqij1$4w z)l$QGS`pF==wm<(WH+uD^%EAG)V#2I)-2`r7fPaXj@4w>sm+V&Tnc!cmzWiA^x=Ka4r~pT$Olcr=-!r9ACS zYh4S@pGsl!K3%LU0o$jraSm}{6?tjQVU6Oh;OD6a}m_IS|sHy{JykM)6C%2wa)XmINTbDTue z1X{==&o6V?^k>84iQqig(1j;)jGoS}|J3rprTY5+Lqj)DCOwS8uPBP>zXdx&X$InE z%RYz?h6AI`N`-NuX;ynHc~0Pvkbp=A*qsUD+Z_lZ5FL|W zNYP6o)+QzmnPuES_n4(DI`R0b;X)uC)}?>M2Il|9fUZ0Ustg#_F|HSA@@?|}k}b~> zC?+ z{WrR+)OJ0&^17!^@;_pWdMRCai8(tIWYg{=!$+Cd$={Dr=d+82*7}5`{8Xm~)~W12 zl#eA;H@&9a?ad3eHY}e&4v&xd0vteG^Q&qs8xKP{hpW@MZpo87YWnISN?^1l5po#c z$5$Z(98WbqPsDoxvBn)HErN7tx)C)@%H&+3Z4y9QE3~tbWtZS$JqcdkbIDXXpC7D{ zmr5Ht1Cde~v{(7d$1zT=pU%8FjqoAfW5D#|`BpmLJfJh?*-Cn847H1GWppC2v z?*to`*l>TQl_BJELTdsMa;6-PgWQZ(SmkRG$1T zTMbv%h?C~N1`zQq=v+w0`3IsGsv`si?rPER4;Cr3@Y=+3T-*l0%zXcm*cW-MGzc)N z>KAL7`~x)u0(KzD)am)glXX=(*D*42AF|dtpye*2<9u3AC-37UnH-Y|$r!vvkI9Ut z>(`|X?8<&sQz9RQ7cvPb<1DZyI;b7>!oalMgZgk<^s<4B#<{Px@1B4QBXXLiwge_b ze#ElQJ1jcjvfZ43a-n{&N#y>=P8_&8pWGL^p|QRPgcph5=^BQY(d2>_2MNYhW@TMN zLA#{T+k!J0wS!SLCywbq)wP|M;f?#hz8_<#+KQ_>V@`bjS)>qf-&W~itm~#p!!ZDG zGzw(EcT(5v9PJ0CYy z(q7Gj=HxHE=5!oLFveBoXj&$AcPBa&7ng|#*MqZ!slGJEGiMDui|j(*HG@7GktX)s zz6hPZZ1H~Jd=O-kUXWn904Ys4b4r)6kKDpRnfZ_^9q7GnY<;Nj?5I3synYkc%ORH# z7x^=T`+7fRwj0;xr!r3R&(AuXd?@ia=VNG+%Xu=L$+#N4&a#t<0xU(y&9k0b9Qdeq znXqPh@08d1tWm3l%u+z*FfQD9LALWAf2`4B@+2RjAQJkQ73_5Ud9XXK8NgcVk39B6A0h^l3W^-9Is&n-74$ ziJ8hB;?vT|$k$db9%a9B5L7+j)XbaVy z-IDsnLD@bf`Vp+I^6lc{{ysc1QKz}Xr=hcv34gZj$(Jm3L1Veo9C?xsk3;z~v*~XB zVpij$H4e-*brnt^_WOID#kv@G_OT#0yb3w)G2xMd8%WpCSWc#b%p7kvvN{*U<|KcL zcdNsJF7pKK=wS63c)5ExkYj6DqtWyHoeiHv&)6v3>*wJt4+8a$)Z`<7YAMW>W$%=> z(c^S6=i>x` zrfBR3T=kts_fXqr+h&ycq(|bq>}4X=^zA)6Y!pSh{)(9nm^mM}$3K(^_Pn|XZfv_d z<(D8Bjxa03sSi|z%gvqn7tjuTJ}~k>xUcE z7QCdBtdzsO$7?zu!x*WK444b^LYQS9!gY67%H% zoK(<)1DYw_NXFzcVO#}(WC8GaHFy0izJpbro7BC!(BH4PO(xFv9jzELs}Jfz7P!@l z>amM@o-v9iCLZ`jr#2Q)p~e3}(+K7is~rr_wjFO!hbS41OkX>LH||h`lHKgkV7(_G zW%O?A+(JmGRjz9sUzn#Hqf|{omzUUG->zZDId5~XnWhk47Jz7frMe7-B>WbUO=Nr*zQlgn&M zJ65Y^b5eYY5C#Z?xWu1`=zy11C?!<-==PRUop6-*oNv$mSrDelA@!euzp`s-MhKO! z?a-l7qKa2W0yBvtOKH+@w!Q!`<0xCPFva;IPu7cITIPZ zbN2I=f@k<8$%?vo8*vdRlim_s%$!^|s0kONIOf1&^hniXu6=LmaM^(EX-`=K5vk@! z2?l>vZTqkXSqLG=MFd=}W<+}2T(`OyqXi^D2r#ID^?~Z%!Vy@377~0&DYfD#I$(-f zjtZyre9Ietv-hp#ZuIu)=7uT#V=_OXtL?DRaM!wUe3{7VT15Ipf<(T9f+KSAKWp)S zgJkT(L7g=N76qVh%pRAwWh|!+e3?lsGqL3Lf1?iGPr-(5{Gwqjn$2Y;lMpE=fdW9d zX|C3={68DR_E?G<0$!4l4GkqJ0tx{`GAEuyM-Q^0zNwPgP)Gz66oC*B$m`1~WK@s< z2s30v3lDcj-aQwrZ7-yyO#>AGCSw2!1XdAMj8qsw0Xhpd#~1de_2yY4AV5(dkLP7z z1qg>)fE08VQ~mwL&`S&vSiq1#zb$XEvu3;n7YJ$3I{>W7_gKo#CdwNk&ZhS`W$aH5 zrzVC}zLUv)s}aq*AB5KKFn(v}(ao%-+v?cq=6CPzXGNvK&|!@0|AQ290(oRFB@6Dx z@Rm5Xs_`>R{i5g`Mm(+TC7O#E3ZmiC{YegqkfhJtj(PYOKWYzu73VwtzteblWk_CB z|5yK+j@R9kiNb-uh%R|LTSw?mY^8v?Y)k4+5Wl|lazK)c%TEDJ{OZ81fpdBNdl|Gm(c0vC4~KvEx%Ap@<9dEQ!{R+;6Nihn_8bp?5JQ#?&}?5IOy!`1V7) z6+@JY#2`Sp%#OQ3PSW5`g+PS7fT{q@uLARG!|}){cOs>;p+q}hN29CyWH1*H4|_nInrRTs z&v7h@8lr-4$HUD=d0;Je34=%dy8qq!oINj9sgRaW@{-t+*KK3cvZiZvSev^#-u<8~ za~R7oI_89fUq9|;p{y`uCC+IF$j*Xw&;o!`A|X{FcUeY~?>#})DV^yB1(?F%$fmmI zh8unKQzpd_!q200`DIaP0iSfWkj4s*vpimb*(WOl5m<&u8;7gL7$AIKKZjjzBxHO< z=-_0au01*5i|#7d8saF1boRZCC;{T{V*!kUEJP8DBE({fF0vkWb5s>S6RVF>!sxG- zm?!H-QGwXeU!YsVIOz{2Z8jxSLfc{gp4o+IAZS9FN}+58SRI*QdrXq(MQJRk#xYs? z)UjBwL}L&XdujWgG#y;FQPj;KdnfUS-goDyv3AXekbTQ8SesPyDUxCv3-(M91_+Gk zLkFgx*IDx_TBr6wRMk+VVoa02VbgddyUaMr890DSZuGv)B~0bjftJ|?yM%PZQUhs_ zdu^V;@$)JFX79Xj(CKogTn0~hm=jFUgn*XGboH>=-tPoBvZb@&N^3lW#YCy3$yPK;Qh{@z+Sb{lYg1s2g)OnB2 z6fTi2DH?{qh-B6tj;C|(J!$3X(^B_JTG>9rcqOl9mbY=Rn9>^)%;0U1FWXY#^qP9D z5fM>APh0l9PNcwKN$MbU{LXWls;UU0im*^oSilcSAz!AyeacBsMUtTH>uM1UXHF9hU<+b>Jc>OCgq2a? z#A^`;gG2yr$`FPp0xA+nNGQT69?mL-g|#tc5dz6lOG_gHq*zFbf(R2CDkCDPGpsx} zT38;)hTvrYStfpN0QuKA(WBx7T~4F8zwU1wjgPI~mA%y|GC+a_%Ag<~q(uo324zZ* z%7Ta;5U3yu-XaR8!4U``1B?Je_yx-QNkzYQ!OH~!>%b6H`e-JY2n>pVdb@M;=AS1K z0BRtqln@52!jLt^P^gP&Cg`XR5d{nUKDCh-{pca`q6fEvfV=UeAUqCFW#LXDKauw} zLvv|!`q{~(H(1pf@mB;)MYbigS(UEHgp=u_h#gQ=gb|QLkPtk$k_ZQt_!Y?k5j=>B zB!Gw??00Dq{MxsA=m4+T!4yaJASwuCUo3xr0YpGQ77CyTS_h@|G=cIztOFNm+i>>x z^i}{Gj07Os{A-UIKv6e=#X=AP)k!)3!V!=7@Zp{eUX$2LDxIE{yEop82tyTI2$p2H zJWbU8+!p?Y0q;XM?CgD9L!-`I?c$OI2m~V1U*6kF)6lTd?xSj+u1$WX9D~c>Qcg;z zbY?s1T~q|A1GKuG1%^P7^ryS)W3S;fy&r3kcL;BWwK~NlN)&*J5tjZ`qMA>0XfDXu z6^)^{7WJOK#p+MIAdg$}Pt$|pTvOvXuT4{q=271+ItNF4I4_j!*R_cAtbMF{Vi_?s zt$^#TiWXq75|_%QPQZ)zF(D`o&_j+JppTlqYOq+jMY4d9h-Hls&eVWjs0uM=IA8Fr z4nT+&!wV1A#8V}@n6tD)n3w^O6F4Z^C~Ad~(-dgT3R_qPh@v#AfZVCiKUnwC*KT8?@nI2?ZD)hGdyp8MF;B{9k41B6!Fd zoNb$}%}_&bH(M&|p`e-sdtL*UI=ByXvecxxxFC=%Jyz}LV;3<9FHl6T6)5W+3dR8& zq(rK;ln_8Mp^=gS%0Q|)T(#d`Q$q71oYn<|9R@4Tw)0j|E@c5iazO7%iAu2QOz)G& z?#SOQ3DQggE!WsDLMM4*DW6V=c}G8;x4; zmJ(TPu#6|KpbGlIT9r?MB_7lzc$hLc1{O#vUYSsf5rdXQ11{ai*X*JW`^bzaf(Qh1 zIQnL?PlXhv3RkNNsv(~!oTQLJ2r>|16t@X&#@JZB(?x{e0l?I5npe*=L!_Os3(o_n zRY65q0h5V13=Y_UhbLeLFhK;!PEaUv5ENInGg}T>2}>5~K^F`Yg&}~mS+MRNH;v=# z@};#Z1csZn!m6dapl3DZXhDE)j+XZh>)bvat0{6W052%;!X(n+4n2WPAH`Kr0}PQF zHqlfXa+@60ay{=#WbKZJ%t^Z;B$hoMkcK2W1)3&B;yN{{X+sx8LULe_Tsnt{k?jss z%4iX{;lN(CnskSDV}_PwwUTq=Y0Zpz5N*>U;ssZ#Rqd0rYJv124LnOiU4-pbVxa2= z#mghBUngIK$dXLiO@ zBK7QFy076q=e2{~=xlu>3~)PDVzMu5Gp@YRMD8sViOW^@+$Fs37myNKfU0D?Enq6s zkrQ~lj|;-@H$0*7Z+wwsEYR!V3zc(5vXYgTRw9Ac-OCz#y-qdPwaM&Ms83M_>}e#L z(J2IQch3@B3m6<>kZW)CJrZ4KGecrG$SGxHk0V5@mL1ANCmb?08Vb1$}9D2ru>vF&$z zitWGw@WD643!nr*;=_P0Y+i(LuaG*yc8wi@RN6Kl23 z($$9JG6jKx3ZuwsJ`LiW&o7+AgJXQzPMoREghkSsI71z#;t|G5{v!y|W4&#|GxLo7 zjQ$CDOYxBddy}m0KJ49};Ylx-;!3>e^rqQ?VyZ9COH+(EqTra1o{H>n`1I#BSXWg9 zeWGTnl9~FI@ugF6)I0Hr$UQCM^coCfFug6PI63=WIfsNA0jLHpzj`}7nS($Vl@SSu z)Cz(F5*dOZDsZaqA}gNY8wb>RHA~qjcF?fQ*03}{$wC;S%V1GER=sQ_S$4(R_82zl zztHRQ=IWZX$xBKoQ_2`p+kofA-EX>Cdi1K_^D&aFxV{U^K)XI>#BG3I5gIE zt5`Je8SiFMw$-1Nn{2Z#>N|sRGa<(%80~FcHLYuHu91Emp9)VG&ph&+PoMAoo`;2C z0hsGXg=9+9D-GiS-7Ql^#>~hMOqVYvi*RVz*j4Htyr`874Si^^n8lT`J)rj1` zjTVCqmmD@mFf~L{cvMC)Rv&K*V^3!#) zCs$QO-=5Vv+tGVD8#aNvU0*J_<=E5YVRx$ai9JyRC!g$0KWh9A3jp9aWnzmqm0}pz z?4BOQW*z!wA%!RfT zl^aTUEq(|qA-F?52ehy*Mfxh7q2jX935lJXMytu~+qr;gTw>5v63J^6V8zp0WU~I3 z@98Gw0Ryv&hXYnKumXkLA*f^t*>#nPm_1ioJ*$XhQr@!T6bF=zh{OWPtB4AMGl0oE zPh8QEhf(rU@YOsPj%KqUq6Ve%YR1}1AqZ3{hAO^p;;4i>B__fe30Bd@eD)-GR(CJ- zeI*fW;2F{AM1#nMO?12L)aO_S)E{tPuNLB9usa<$E$osogzmzS1x3huTG6FWvPx7C zlw_chd6H%lV)zojVlszYc#-=IoRjLgimIxr(`qlzKCq#`h+nf4XCv)QIS6@m*n#$j zfFs?U$z5cC`4J)!(ak0xOT9Fp_7(7TbT$a}8sOce+a1E5%VP#bO%h^9ScW3=34&}O z*7AJkAJ_H;odeN&A1lhcnbXIoMCpR&%lW~P&bC1hTQvu1zJFaN3QcbB^hJBSxz@JO z4b3HX0|05>YgX#VF&T>nyjHNcamf)<8m)Sltj5A6_PT1WB>(At<2H`jw?toX)EZCz z`tN_xk2~p3%6&z<>9=+E;NOM!wf<|n>=@qkd;1DZZqkk5V8b{H4DNcKezCEpsP~`_ z1f3&NKag}lkJ!7-w}I4o`C{l!*pL*MO5}=lGOMJ( z;KOr{D5kEtfrrzl*Gc+G*3yN581$V;LYB~C231ucrCGqq5=)~YFvY;e*8VN+Jzx1w z%!7B{o8OU^Dy{%rcYuD!9VUww;X(6(yY&FyvK zB&he7zxT0CW3SByVy6DosBU9sTqR@ztq)E*gjxrS^dGt?`T<5nV8KRD)ExX@=OxLpp_^jC!M8OZ zieNe^my10o1vU~ey;BB-D3};}`VqrK>n?6?p^j%>P>{x70@}cw5SxWjVX3F3=Kay9 z=6s7)S|U*glG|Fj(H_vmv{u5ANRKa}=iWl8NIR)Wl_19`!INsMYI)m&YL~3&v5tC5q#3T93dvb*lBf_jf7f^A)y@p z+28-ZwP@@FTLsr1$VV*^xOQn^c8Pwn^@=!_%Ij9#hIc;x#(13dYM?O>2K|g2GR8i{ ziMjxDL}jUmam@3}t~cHg!MM5`H*eF<)YZ&71~)tW>)K23?uT2xHdXcZ&tIRPR5fTm zyRU0>9!bn}EHldOY+W#i%~g9!E{;Erj95ekrg-4Vt+%C49d;VH8_FuGt0~1fHFZ{s zDQfF~Kg8lk%8u^;nj6cS2oe(*SqMZasYr=9ui_SH3z>sxWn>0JxW8VL51z>r)H188 zWLt=wz8&;>At5b}$bbPL+DV~tS`l{`#m_A0UNQ^(Q$iuC0)Zl-2q7Y?Aba8e303khpzJD%^$jRU+`SyVC`yc5_OjD7v)^FAwb(z%h{u{x*K^?|2~(|%4`Gv4 zv=$MfRNJdtha+a3?FMW_-wwpXGaWF^x!l`8q!_3hP4lq>S=k*lH+1jYg&h0<_O>}r zEQhn);!bUKAAOdqq~*rRH#X*VbLW&bt;r;zYrz#VnQ@qrBDxzFQ$lcwR7xJZ2@5Nj z(p*-O*%)zxCYd{$na>fiOgBR6v>L}F#V+vFRhLn(`!_8qte``W1Xv=?zDw9=MhF51pJ>cVG6{qfD;i80qJa#s zf}p4g23Q!Q1A|0VNKGNw84!mO?i*Z(t>Z2A-|O4@G%5!7z8 zGTEN&1h$r$3iU#*L*^_8xQ+ellaM~-N87C3O1gl?queAS#o5>}jW z(=9s$wr9!7fNFWrK>k?Np1T90!Lh6igrXsl3KAbu%AF$_t>zG;tXvZpAHE> zpf-uZXuatv(U%tqvu|o@C!9qeuZSCxXx5xC z;#hl4#qGp=8@<*M(g_R`O7hdhXCt7X!wU|pn9E_)V<6#)fU}GB^EdF)RRu^G5DfR~ z#_XodBH+`cbQhKgniAn)2DjtFJC9psHh5V#_xcv+;N*NYge>8g6gr)FYXTAmK*M89 zsG?O$nosr>etVS`4#xaay=*BUMq+s~IdK)`zdl?BEYqBn| zL8qjO*h0gl*4=GcT)m2zcLdb$d4|%w*O=hYZsN3S?+?WUwbv5O9J` zHI5?Vh0GwH&LyIH>649y@gzvWU{v^Q4w5hfV*ob6LRPR@76QOn3VIj;g9sSGVbQD{ zp(;T|2(UTByzj$t=y(li`~CJ1ci)Ab34m{;vTuWgQ0;0e=WgNT77Sr&PeJx)0>jb| zJDZ%Pqkc`?R5Bj&79OQ8a^{^%T|ZZ!n({FTxQcW^Bd|zmzz($No8jo>c_5J@dMOh? zn2Ficp_{dNQ?;{x0enK%?ZxL>^eD&4zsf8N%o6kLuROZ(JfL;>A!aY5L?d@%WSUmR zyoxSs150#X0L75a=bVFeO30dvO93SXf|R|0z@nUts94*%59yfcLB0KL5)sGj-j3|I zW1{8@5QzXoCb(?qn7RN@Ekw~F0|0DfV8~gEy`rMhV-||10DY^d&L`A%%jA%T!=xkOUnD3>h?Cc&sTT5H$)`1Q(MN2X)flK-f$ZB$&}x;dpcy8bn2$W%sm~2gSVyj_Uj#VX)i4DU4Df zq((%d;6%V5nS%J+fsYvB-7=nxg(2EnCTtCANmw`it%G5)p(TMtxDYhMM#!Y*@EAC| zT@Aw7G^)jyX_or^&oE0D8ybQ163c9rMwrQ%DL~-5J+34gwQ3sDFcee)w|yHgqb@F$ zMT2I683>5tA~NK*PMZMB24OJ78qqYj_1bjQ4ve7_EO^PR9e)C?3jSurCOSr6WAP4` zcl&2#!i^OXNwh$Y<rUr?WvEy2`B{|KVCXQ<`x;+*?$swJ&D>w6lDWLe>ZfYgzwc?=_ zjbcma9DTS)8`{o8m(Yy=GzNl6ki9>v0poka1Srh)z+L<<}>L3WG0Yp@?cG zatP4tU&KnzBNKYnSjlvqoo?kEphgWRI;#er1QirWXpyibWHDgg(30EV5 zs|RvhOnw))-rsvlf;TSczg3;woi=HD7Pl-3GdjP$uZ!6CNOt>FCvky!`Aj$Nj+fH! zJ2inYVFJ?PKBL%o{WdN?+#|{3b$m3jh?}HBNqTBjQi7u$Q=cgS=pq+E5Ru48)I+4q z7@Eb>ubj4wUs&I#l-DsRLdC*4Hl0Fz&p>}4iUiMa0w)B z!3jc}B297(9n12trP7xB50HI%#r1yFzp<((fch~M=YYOCK~SUJ!T7V+J)t5eB%*#9 z?NbC11VIq^B6*k%fM<7nO%#`OJdJfmY-${#;#wb>wD;>md>Iw*OIKy>Z-Mx$;#`bO zpV>VlsX4Wwvb%G>pIPayYxSBnJX|K&Qj($vZy;k4p~u+fu`CVTK%<^uX}FNGhx2Sg z`|PKdXUv{5bMvn{@bCF6PPFkodYcWJx(q|eUr*)sLs77K3R@P1GpEPd>JB$WE;>;* z`_mFvagw`%%EOOHOA1eKYl(Yj*flDc&Jcq^kkpwj*%x5nk7C`Zc@wZqsHBS4jXZ4ed3Sd^Ds`Avi z6f-xcrX@8c=r^@h&u1#T3au|uro!Z~RT(W~a%`IFV}{g53AG$;y2SP-<8l zM@-YMTRD?RW4ady^A<66Ij|#hoMk!3l-h{>y%Qpm>9K=pzX3qqGN%8p^dBy-8Vph# zU>J4@!n4E|LopLei`3sy#7#4V2ZTrA;Te!>eX-0{{oSTWpd2>yiQNT&?1QjJl*DaF-|knnJ!vNVeElC# zRKbf`6a_=&A87HIS-;BP=IpxUz6x4je}_i>QeqC%hv|zCLbI=p9C|inZ~c*fPgeb7 z!BG3_pBPyriKk=g%jyy!rH^`0X>^3nTfsh-qt-mXWj_obHYUjZs-O_4~c;sfk zT#w5xRoK17`#A5e8X6lr`P52dOl`5_6@h;|-qD|Esl&D!6|6J^E%wT|(OX0}u@~Kl zROyhTc-nvrN+Dpvn>k6$CZ7k+zKCHMG==T;rQcqDf%}hSq zZH&;=;{>x+)j_2I2Ga-yl0mbZpstywk==Gl50Vs&bKR`z0~5wkkr`MR(yD_-4nf+n zBz4Cyj$R`MVwrlgA2#|k_Cjy;IB-zo^04|p7b=z*y?jbrk&jsN2%wf3 z?$r#y$?lqO4MJaJd}zkYnD^%cvFtOe&gq*bOx`;!X7VGBfbhu0=y0!@-aR})OIzRC zsqpMrm#f6ph~`YD>`Oh96F8FT2>AJOscg6pubz1(jWrB^`x@m1ymiXoTM8L3%|>kg6WX*4^ougRRQZ zWdZN-4UTwCL8{PN;QE6Y=c;X^Cm$`&_`+nqVbG+g;yWjhr3p(2}RFw*b!`yOTvx3%?! z{ht>X4en=m4ib?z+XlC~?arw$asG)NhMTHQco7F);8rugYDfkhQx@Y#3_K=ztmL;h z)#~Zeb()Yf$LH=rz@-|ca(itR5+60&b0_AzwVf0|N6MW{r`?>C5e{yiCL#yoc+%2lVixwR>wLdnymi{W9$MtSE`VP%tHbc#g749GzKf*K>q^wl zMBcFQEHI_zb|;mUEv?pKgUs+fnf59BJ&lhOZ{>I0II;80^s^+=<0S?@C9?3~2S_YL zi+V(*fU$ivN)m**eq*M=f65}Rq6)$|UNv&?Aym;JbzB~da3H;u4mfyR@wN;c=bfYs zJWikvj);y{pD}9LLQsP9L^ytub%F_gd6)vEQZQszNTP-b3aJr-Bp8Jz(38MV03rzk z3`BT!^o@3@VgrE6Wr9-K(v%OEF-pWN@8wdME=31PzRc&N@!j);Yw#__($zG3K90$x zz4nsyq$avvbIFwl=Mr@|-3->X^}EE}+`<^wd8|t2Ig2rX=2>}(nF3U@A=AV`2jy3n zar#M{p24r2l)_(k&#!hF$ywO)-7z8xYzc#5I%gJ#w9e62|4S%R< zNrX$*67@%77(&pZM4&Hj{h2c4xm-TBUHHvRoDkq>0W=C9B*4v-O{TVo({9OQowlez z(w>TE4t;CnF-aT!v(7(c9e-)3)xM&8dT;@>GgGgx5-enDZS-vGbP&7twv0yp83zf+ z1_nzL3vdS*UV}zwOU3}3hXz==y7V$yw_YxG`8ek^8=YaAa+v)|wpO)dF ztCnDRdTD2pIPEqD+GAm?L4R1QS7;8?sV{ETLt9xPWEzTf;-z~t-0Uy{0C8u$!*6K> z7*l{V2R&=Gn$%N}-z`hwU7VqlM}4A_sTxs2&})>dak;bB}f_ykv+LxY8G?+_beW`-Ritq*b)iq0?@5_ZP*5 zMP}Z9zh8=MF&bbWjhND;_kjzPUY%Ex&lHeft9b#ZURQ^GQd_BIrOvDO+{Mnsj(0%m zprv=Sq@NqRehz@q>HDseU#UsIo0dH$<9p#fUZf0{jCh^CLUaKSeek&YM5YeqOSowh zAX-d|0M**k6H_l3enQh`p$x&qJtV{*3GH+2_Y=R3o?ZQ#aK$6EikcoTCdoXkNAQ=) zGv>e2_>P-tU=TiO3U?X8%5aErDsalGvJ&rg5oIXy}&Hz>y8&e!8!@|e;+II@@!F|8|A2F zvNj%xstuMijFX%6wac6i>8+` zjHCISugKu2pB$x}qo?0!qJpNVL1Pg`jEEvIPTCic$~c-#AXyMIAz+LXu7FiEmA1{c z1y0k)neRpMxY~42JM9tC6XZid(f>kV_KNLn)(>Kh% zf}RPwszy=Ej&#Y23bBoReOqT z8YLq{q1A?9B^w?E!k7;5rUTc7Fd8KUWf@slML1-K)`7ZoN}fNZ*`q_rltZk{nIO!2 zaHdk0l}mXzrd&)js^B7vCqN2P3O#hbYFBEeNU~hgB@;0V1GW=dXhe)6*_Sfqcr7m( zJRP^Dtb)K*fTryv9|5xD1sCPa$i*Jm-dT=Fjnho@D~4(-l$h*4x_8S4j`NoobG=AZ zHBUYTe2lE^OCoj+_vKyABTbar4t~Pnp1JK{!PTP|H&n({V9zzzTb^?*CnzC@(Q=q# z13E&`=1O|UwjeRO0B&;Xqj}x2ZDN_(V3fqlO65(JRP`wB$wmfWlIS3>c^y z_*Uh+aBD%sLhHmDS@a~wcz0|-M+{0d1_D@1Y!1oj9Q;VC z4F^D8GkRoM%yS0dQLGcy0ut>~FbN5b6;D__@EL-7Gd`FZcyB_?42xHA(6AYBm=uu^ zK9JIp)xZ#emhzre!P>~pvt$i@VRiP5r zHW4P$*3aVa9!31B&m6o5V@_`@opPx8G=*9%GD#Rh?tr-@q6mg{0DZIej~>m#;630x zVDVaihO0JN^l+buAA@(nB>N!vNPVLUihL`WwZ>X?;xqKYszBbG0Lz)D9qbnvjl8wuWP>W24U^b~{Q5h>G)ec;w;n|}snqUZ%5xC&onZ>4r zu8T}c{hcUk*&MpbXGDyfzbB6n#(Heg=U&2N_A2kQ0{YIYy0(V^&q&0&(_8miRLM{(!y- zF3VP?7g)9;@q=+^YhBM!p+TY=B-gn~W6jA2-;-Zy5FWEHjfqdi%)Hl)IC7iE_Hqdl ze!7#%9&~uWXT2K>Yb{f!k&?_Jq?S<)y5rd5gycqP*HgYSxjY%KsG7`OOeVm% zRw(0>OsZnzroSZh{^dk={DbyX>bmlEAVfiJ-=&tF;w>Hf0*w59} zGbPQ#vV}CniJFc{u2Q^2T+HQU{Z|Q0TaL?hmdPA^&o|@so%^~GkvfEwxy_G+ZMM<3 zePB+ z&NOefk~vOG=}dQ(qMWvBdMUhO&(?vQQeX*XFPocysS&{(Jui#1X1QW^Qtn_OX zqt$)QU|RyU>p=s&D*Zx^~5WzlINGLw^n<10p<`0YJXRKx1Sqa;_BX4 zs}(-Vf1s*xeAv%B6}PBTUlB&_PE$*#7{=Hg`(#m3g!AsmVJTDBCBne*{38L<3U4AX)Zf-sXbGhvxCYG$pO@IlEuSti#922u_*${S}gaE#K43^aPL zapnyIjBd*&@uco?${`JNFRl?v zDEguVI8&p~0Al9u;@#EcA4sVJrte#^>&U6?qRS6vX;!gPh7@1LHV42x{1rLrdbyfH zfwXLO>XjQ$WsOom0(^>jZ3Hx|gV|ZIiD{T7D4B%g4IFcnV+XK^9M3jHcYW)IXs14m zk$Eb4c;^|H)h(V;@vL}t+bh!Y@#xL_`^EBwfwaiYaI48PV3)Oai;qWvwdBnk}$5joJ z<`L?wGj9j6=4!H~j{sA*$;qQ0Oxd$;l%fed&G+;BJ@yAZTcDBUuL-Ti&myL_xsVO7 zX1CeE;VHBma7sd?g6o8+NZJq^sGOumO6=#e8ohU)(G7tufUPdJFzs1Qndi<3GHwzG zXO$Q^qU*(Z8nlR!QIZW+=A&?tLN(Gsg7aYHy2=nkN7-LPQXF;UvriPglO!8{H`n-m z@WW{sc5WT@u@X@%?M&Z72+L(+_-czm-#|w@Qk8??GLK>4%`T7$f*a*XZ-2n8_=8%D zPTOhmoxX++TbI2_GaUzl9}f;8UcM)r-J5p!mg$?SYPN3Oy|8U&0o7d@XPxl<9|y?x zck(U>vvS^^7|t;=QI+YY=H@g?juACPcza(QczWV4a_O1br|bOAUi8fnfOM6BV0;^* z1%;5@TnoQiM zAf&+@OkhSWBGYU|Y@O~%>W-w0$4hw>UN~kZZ-u7_B{{G5(YB=H*VZ#4BA+5Nt@tJ3m%(^MNZ!@0p3G*32nM44AzP^ z8rE2t7h4O3%G|k+jbmLXwOWWJn|Uby<9`p9gYdU-$E%lM>&t*i5CFz4Oi-gL+Mqk3 z%@cEzf4b&jY?TMoB^Kp?+;MU z*!gFpbAjCOHnyGZ)0nr$JchBiOzNghq@F`!K$g=5kQODE3oM3(ij#e8!E3I)x>u$E zNZoejZINm!njyX}Qw`=g`z3|#qn9p|cg$e&rfO!(HW|I|9c^`uc^(qtBwqgP!*ep& zH4e!hecOc39%f&lI1S{1t-O)f@*+LPK&#A$3%(S6J(MWa2Jw6^sH`^%*Ab<`$CnbY z$eu)Z5oZB_C!)$HN6pLU`*?Ih9lTgW;vv|ECp60=m5?iS)ZjyV2(B%*o4S;avN>E8 z!ABOU4XHX_e0GB7^wNc<$}>5!hI)EFe1kxA%^W=atqFxsmCFn|?cwE?crJ{?DqD<( z43#0;j6srt1AB-XW&JgseMQ`imw-v$~GNKFI!Tr*+7_#+O&nz&84)$p<-NU8wcQV!xYA3(5P zw_pH_6$D#diyO3g=2>tO_;XFDO473HZu;SYY%H*dcP4B0j2Vn{sTp)k{c`vXH|>un z1C8Ff5(JBempo|SN8@mCmX3TmN&XLS&LpN%S&6!E}=b&oL1c%TGAatQ>e#=SI7WKnWR;1L845aj#`NV;$K+uD99 zpyUjQJIOuL3Ze;fuuy<6urPs(NZ(H5qqdf;i!0heqj~Xg-ZWl9tE9t%{J1^eSPoY3 zUh?W0p0PYg_3et6W2y8E?e)%WbwnhN0#gTwfxV;&(}b}FNb(Yhl!icGvS4ZK!o#SR zO%4TE_g#-95Y;fmu7t)jvTgmaN;#zInxUi4pn}<<-pHId{>EyW?E3jHnE&=Ri;(nkctJ{7;YG3z+q9MrXx{93>k`M>RF67)^8$T zgS#`kIS2*E%~S4lqEYLq;9KwRvmR@le=$#VJQ7!EQx>bN?b6d4uWOa4M&X&aVi=!- zZ8g1w;2iByeiDlj_KVHUzfqFcY!0KC!o;pcd`OP)(40+OYRghH7gtcgLgS-s-WvRv8-ZbygN!^Iq;)bR0(( zJ7nSK1FX54*MN(8v7xzbrINsqVtMyYDwTFSPR2Jo~t?ossyQg!qT7@F+4Y1O!Kw!Wv;}IQQo6)H?MCU&Ycd}cTv0AN=$t{ z%=KI-UnD;3W{xdeJ#OKslc#DrB%TQL=XOcEY8|aJXXJ7glN@4le0#aSO-7R?)woc% z-LSK5p6P@mGVGU0Lxy#T`2Qlahgs+HGBE7OD&5<1kPnzlBFK4BA&I~YfhT(et{VYR zfjEwkx57@>26In9=+LVU=c9t6GPJ)W^>4YL^YwXBfaRms;oUo)yhpV)s6&FNgNK}a z-QAnQ!@bz5Exk%%W?cj-G$P0VqyVG8o`;Ihb>k4Ua~qmI&cMMeFy57se`uMV&a+R0 z$=nNoVZtE*H#0k|>pGQ~IE?ENv<5_EXp<1T>kxw))>TlVYVs#h5p4_WXX`CbM@}zK zAa>ZxAn!2xT|0*|H_pvOuDHf5?`GdQ@7#ND=gH85uSJuv4P#$@oCi7arj4!{x4ThW zOL!_Hc5;@HJJt4eP42~fH?lkKX*Mv%US}||DUe^f*_NH!0lOqanTMI%SgA(ijzmcD zTSQ2=_S`DtjZy=oD49o|UsHpU9W3ie6>C&`DdQcmq zOugfVZqtDLFD%YiqHOTE-21_UH}!pw#<|k*R%xg7xcbs+oYOLM-^+)0fL0Sf?u?-< z;pHiL$jmOQC70~f^w_U!m$y)nI>tK2T{OCr6N18SAT_VwSfhTB(r2mI^k$Y=2{5B9 z$lPrYM4=iw9q6U|DTYc)?WdI1lTpkyLo-$odvQW7O`ZpJolm0joLWvP*@(GSg3! zV{JB|;F}444ZGUqEZuM-<0PlJOil8S8!kK7j4p3k**kv(32&F_VJ*A!21ZRHc5eOa zqFisH@J1ZM=a@C4Nuc8mj5Ivxi7=`zO&x*=D9Gk`K8#R%Om~wYvW^zIau69kSc$*0 zll-W_i*EKmDF@(XF4|d{;s~oo+a-~pf{Y-`*|Aknv+epyMw`#yYV=AfXUAzvKD@h9l4WFC{bS{ zpE|Y^BXcLc%nDZz4qM&P$L81QzU?Bc5dT}9;&~N`mgYc)L#5vaXQzqVub^h8_!zB8BtY(t_!*5w zp*Cm~C!c`8l;xo%L~L*fF1Uu)yNifQ3ZBwEc|ihXCJIHV9-u5t7{jw67$P$Uc#;&$ zcLVU8Tny3z%hJ+1=zdtV{4%l^hQuA=XaRZgnE|hGX#l5{8aOl&BS@&VheO)zyS28F zEW;O-wKEHC=@;3%p-uBDHHg4hRSP9q21*JHyC!{hU#D$#Vrkdgv18Tfknp) zkggPoNT&N0LWd5JT2TRqbgt=Vm&=(5f>|J_nV3&nQDcTlCy|)vk5gHK@=H|2ySgi^ zjWxKg-?_nX7A^5z3rj~%1EU~-j9^~zDcO^pokV#?Y}cL|+lFagDBsf;pSN9%W(kI~Eq8(5+tOKjjfVla`qjs^pD0JQ54d?9 z`u6zOZ+dXpdMpn19(T?ia#AX?hhtl0G=w=zp9@BA7OUk~Qqrn%tscFLdrIrgRkRn~ z*W1NsfXYcBeY5VA5M*w}o0L!rbn=w3iMtLN;K1+w9nN{KJGIgUmM3m=5#0pajn>zg z68ekvt{lB#q3yb%Zm%3LtKjrX<+An6dvYzx$f>V>=|G7&Xrm3{0mwr=L?je2W$E$; zr5VB|T|Yg;wfWNQ*U4&puC&sOT!ROa{Pgf)5o{Tj{k}I{N-BmMmMVc7$aoBW$sC=8o%@6FZ{4-Gm zY_IG1XT$Ncc}tu-By`@&a5_xY*yGrdJQOHe@wSDWz@DKrwsBKX=`Di7vs7j(t5JRl=w$*) z4pFFoL}?VT=Jn)ij!pc!cRCkum$e*mnex{q(CJgXpAR%*>5Mz1y2T0#^FISL$=Nq! zSc5?t>p9bbK>+WJF|S6~_*vc!3KU0row+Rf2Dr+W$~Bf4{7A+V&$wTfM{M^n=r?;U)Qo@?{3o&#YhEDpo96^F93_St59G%=n z81ZK*6X|^S$sQX{BsNE_R@$#(?59}ZP*;8Hv;CgA$dGnRm_39{HX&!1B+ZZr2zu{j zFLisv?5vd>R)HY#FxQG8;}JoPUoEACWXm+W1Hsu>vp2MmIhiZ$eiTp?dGj1Ek$hJ2 zu^%fpdx}Trir*GmXI`JdI!3-nsecX`vO;}#ydK|S|k>y&5=%` zYxJnTh4T#_$JL;#W4Wo6 zSfFvLDxhEkxdH(LLyBWNGU(_fu3k$5Qz}Z9!d1tA zr*i-ci0wh!p%Ze8CXc!$BYJE(;NB=05@sOO;Ix_7BCtKfYMqUQdi}jG1PH?J!v?^O z2+A71DAPBzoi02*a1?}4=h^p4Mo-h)`s{T1k3pf#M0ye5f(Ui=xTJ2)Ul*#$1KnnJ z>7(1fo(D%naCy!=ovzyKBi>f5^+F>V4R&{fkThTrZyc8zG2}=^=(Y`5Tf(RawzQZ= zJvR*3=2Jjwg#DNW9}X+rsBHRR4{0GooZ2m(MhI0A1_(ywc(pXORE3JkM~9PM>b6swl|LY{4$0MP&-~-zyv1u2sWql__61%k-l{M?I71s5xvrdw}I;9 zVU1=4I)gOspIx?Wa&5HdX|6$q48%^+h?Wk%^AFn;zfV4U&MZdXAf5?(`Vf31k4xN2 zTszH!M6G=UV8snL>c{}x2I&mq4ni6me8tb)O4!z4(U4ghHitKj@oI~3*8B@p3h#yV(|ya2Ic2*{`;6_D5pv}03~jG>~ex(P6YO}%8S3K`fEjZALsi2*}C=-8Q+H6V*z z0k}bgTjFA1$_k@gzsGP&yC(*AGD^{43J?aEt1l9QVBb^SaxO2|hRmi@PZqgsfa#Cb z!#%o}i$@g1xef?OZ0BCa2QKFo!Av>`I4(evRecpQmfERHQK}}33}}x)!2^VsMg|K- z8|qk;%w*^yV|mHxn`TYn#&+1Va(Y*Or;g4|G@io!;MD6c*J_33-6rR=)8IIS89)a0 z?l2%b_kOI%H}9fOw(IOqW5AXuJYBnfhZ{_$A!duDCR0S2kJq@~qB<KSucTCL~g+q|>`wwWRZS?`-V0`jH$Vtua;e!yCXsQ;g19SS z05_c8g_l5XXM)sd&heP|1d=+`k$NDdh*s)OqiUWMT8wV=fff=b%2hlY1!=h~-C~%8 zbLRe;))}UdrMRhqgbB0pY(E8n(ug9QvjKa00lA)M0iDyuKHgGSux^p;od08kjD;@M_i;YO{w5NL9 z3rMBO&4EldmszJq(V3hzT8eHYiccGAXwbq!4?+ z3rEP<_jZ{ZmM(=3e;bnxP6-Zzy-qVt{T{}%d|3&4G-zHX_yyOoSdz}nduOC;#d!N^mz>f^(CsxH-*4w7@xI1nKqj_zCt9Q;UT=cwnWr(VAvxZEWM5N9c!n00)DI;0>q4FT@c+RP}L8(pk8 zNRW!DN$pM7R?y6iK!Em$jA#d{MYDlkWk51AEI~GvDb9E*7QOSO)IsX*_wyjeJqLlI zheATfUZkUY>uNxcSgiBa)0Bg1GHRT^LHC<=7#hCTBMG?53EZK`NOV3K1>lzOOv-))(XLSgA0x9}@qE|B z&b@cO^gR4y1mLGycP6w0WqX=pbOSJ0LJ;0QM*$YK@H?#3RK*q1pCd2k$zWz6mYxIy zlUvsbw9TzERFgLYIF0nsJQ?>i+Br46Ha|Za6QIj|oTI6gHb-rWwwG1*c*de-)t*`x zGA$>?uu*qK&=^^lcY{-Fd^1-&ak+t-1ZRRa^lZ&C7s>-?^>@x*iB*Qy4``BaAKd#m zoo@}}?X!L*DcE6Lxh5xX9wx(jrx}uG7)1-;d2Y5lP~p&8tlLhLCU@&nz$R-%FUE7- zv=1bm#DaPJm6uB3VA* z!|ENXfSx9&jS~Rm#uLaM<+E=E0l}DnZ0Nb~-oty$XAW$1`qs^|81oSPVmIBdarc43 zlSq>G4;$mVKzbRLcw-4S-c2H%YOFjquaC2LcXr(-L79DvMV{<09qa_%8&({;&Sk^B zfrFCubQYVQcY9;2AQA3w+Nc`IQpcOBKq;rE}Sl-elUIZ2YA zko!MmjKVYr4&Ez#F~&?DSdJ?fm?!T~FE1@PW|Uh-ZdIhJ($!*~C#0nKUxPBEFq##+ zWlFANH1tHGNGV_8ZN7AC_LR*A`F)u-(+toUMFa0F2boOlCL~Qa7);Vjl=$}`3M}j_ zy9*>ABcFQ>G@YAc$_Z(54Sjjd7sMAs*K)W;LW_X5CYln{bAzl^GvS(W#LD~~@1LcT zH6Y}~U<{`gn+(|Qt^uw87Zql8bV(*{!jhHR`-jDFUsQ`nm3dNWM1A|95HQ}!k8kCxf0 zL8_LZbm}u0;_qdl9{DemLmNyykl8kH+uCO9ds1p@Arv}30cJAK0Q^Vziz@#h0m>#Vu1)n~b9u5D$YiZmzy#(~1OMsDdk!V%6&Lj(@khjsR< zrm7F0N8PWtn?8#&-$u;Pe1==AHIGYwsQ3}v+UJoN8_*9tpKoTeSay~l1acPrfLh*8~Y zBP3zNDpA8qvSd#>^Xz9B*Sat~Y$8pj<8GF5Zj$9U&duy|8xF48JD{`As=n-anu9FU z%JUQ&?thO%+=!sw9Fzj{I(s-A7h}z4$W4|xG_GWt3M9y8(R1c;jxpca=f1kd<^5ka z($hM8#4^Ti$0*-xR?e*w!0uY$>bB-5hFj+haHpOkwYF*xMU!n#&5v=J!Ru-}3fR58 z3B@qPQxT$}nmHizGrHRIROd3IeBG9C!s_WFwB(uv_-kWEvI|V?{#*)GP?+&w;$_V& z@fN_+W?{g@@)nx+8p zjbaU9l0Aw^HO6V@l@V*z4JsW%C|#gAPiAh_P3>w-jvQ-DN9G%rMaG8wi7A^yu8;FM zE%IZ98hGsF+zpgTNt!pL8LNVl62(4JSL5rJpS^m8x_q-vup4+|5+~u?L#za{WYrNJ zEe~rv)9-CpN2bjv#}P9ZsG8wM+`!(0ody-Eb+#Y9c6Ea%D&Wfc&8w>P# z!nd=H<6^AfhcGczjOcvssmMy-sUn=S3#>;-aj-nSQPDQATN?^%{AO`~&)RGLV8J-LsybyJ1 zB`%0^^~_A@M8m6OhY-5g&)JOWB(0Y*E*xW=0L(C#Nub!!)UD0!yf-{!sBNm#5)!~f zn{h{iMr9(HP!#l-aHMFcg2~Vgxtu3%*3AO@?EpilLE(Z3@n&yC0pBd^j-zl(jCgaT zGj`4U^9DqE{d(>#9N)>BCC?_bL6g~wgW|Rt)jWi^|!p5WGhm(;zm1 z-z?83QHUBhw;XokeEC6TN*{qrSG6`;?@91uQ&zdD(${SeK!jIw@Ghar>5_WoA%e|x z?|;t2oi!bw2K#vOa*qf;4g`;)C^&N0dN#jI8^Gsh1rdl9k?zwl)hnP!)Bw0qtjk2fbOre z?U0ZH4Wjxz2GR8WWuwqtwTg-UR4N4=N7;$%KOHdnaTrG|?%I5vCjj z0|vuENxlN5QO(jVC&Je*zDC~%M!Jf(4J&#Pe{~|IngKV3r2rV%#vdERXb?1wI0dMl zYa8ni#NkZFIyvk{J!pKIq9b~dBcqc7+eSDQ8vNMC|6Aw3LbG`vTs!fjk|UmdH4hX~0ww}3K48rd1v+b!U8pF47oR~; z1e#k3cpBYJ4I?2~tc)>jS`(w(6-0pP^dejr!b?AoOEpj&L;QS}&8~gk3_h>WRgsT{ z>b=|@`E<6Z)=CJm3fV#1v~1sJaaK}*eYRKxB&zxX!@78@q+?ma?eJP_gTnS|JN2qT zOoi;}jy##$tDXiz&>SUPU8#(&x;#wgnEARv%D=<7he3g5O88{@&|i74pnLtxn#du+ z3~YMWO5JhP!zLjVy`=0)SNM^i1JE9Ep*&Q0%ax_}TEfiiOn$Q~$#Bm_sG zO86iRL+HzB{x?`@@xDZK&HaQw4BhP*zi)(*IzW-lIqP&r`NJHDdhEo-A;K=~GXb^* z0Lw`QsKbWwFa!t__DGO%<=a4`aflLW1~$YrJdFq_V&EBrc!RHFYU`b2G~&4;MdMm6 zPI|f9H%Qdbkc^lJWwqOVUPUHv>A~34^Zvi6JxAV!n2lae8KjL3kT}Bt(n~j0m3cgo zZQi2lXkN}Edu`*{ipAYIeo6&xEk8)4?8pLrdU1cQN7GAbWw!dA<-L!%f? zONAR7X3WhqLpN40h#P&jb%<+2cO%!2LLk-tp^dt!VEA{?nKEQ|yy2vd^Q4`m2Va?9 zThw*A<<`~T$38yGX5XWkH*iQ}$o%>vZPGqR>~IDEu1rEMNP@?SR1u7T3_7G&v|$n` z!wdu)d~!rI; zamkj`1<}!RW36kTv4g()v83y+*eh7KepFLAacnF zWu|S}a$V4^Su14p3n9v8%Yp7hXz>W(%KZ)a;`C|28XS%dmrH1jT}3h%ghl<9Ry9Hm zR-&h$oiVcDlc)CXvD zc8SDF3&CU>Or`b^xNTp9HR5F#f|GP#Nj1ASzC)lpIyya~u!u_A^EgRjs^PH2s43e_ zHmt3+qmh7%$&eM_$DW&k2UG^QE1&}DeZf>2FzF6QLYmQqDBhMU(e&5&i0?Yy zSsgpgvi3}7gDM}x-}&57k7sZW{gMYr0~#p3 zQEyhT#c-COXvlAjO7boy<02c%MX>hW%OXl?p?65wdQ!4n>WjI+C?abCn;NSXNcfw| zJJeeq2!sg^n54sH9&Cy7ikgeET66KghH(Znl(t6#AS`j+*(OVZ8PNhAIIBcJl(!vI z{f?gYJ9W4-mxIN2RGX$IEsQ(xhKOuOnYC_TF>$74vV}FrU2^+kIYYr&_~hTF+r(>) zw0sawin+w&T=H5|CMIW3+bz_WW|x7;0n^jmKEFGSjh_R?{*8)WiPfT2N^ocw+kcF z=ZtSTMsS@Oy-AGD6l@Lq;x7Q z=JPogY}ryv(!>XrLp(a_bB^YjW>EB9%^K$5=bo_~95&pM%QnKpnoSVfrYUdSov@kr zc4|x_C8K02^m5!d;9^ zW-DZBcZ%A`=$WX--1av24jku9a?912R1cV?A%i}S+-Ub**7kQpgsRb zU2)F?C4guG94o7KFx}^t^F}D6sC@-n+**5pHyn+Z9lWkqt0%LpY`1M1X4`!cPo1yP z6V*ys=%710@}^@5-+l0r99LM|GqQOJ!zvx@aXb2W-%qNHH%_LQtnJ9i95JlAZx906 zB%TgT7OQP=KqO(ub!seNL$#IkqiU}1Hzlk&xNVHAdz&2=S-m@jS0jJ{>gFwGjqCnRs3g}&_CMa1V@XJWBfA3b#ew7|K=KIH`t7L~+F zu#5`iKu*}*J48$slYw>N?G{Z&+SsOSyMcK?lgBLDX0uJ(o-JXUm-PX+KsxMY9P^fK zjk;#F9ZRY!&Do`fHfCLAb-BjiMtYz*Owi1eHwOLN5p;88s^e?lru|ty+(U`Gw_BPV zsRO&6pmuCWxf+*hHMe$gwVzp5vW+R|ryQ6I>rb})PWEaXJQz4Nwjug~$xw62wRgg8 zVbbGh=utjXt;MeL>+6%FwhG&wx|c<>UG80T!10@$R(Fcto69qm#>+%Lvn6fc3>W~` zE=Oc$xP3P=`>EZLlbCSKXx>IQqhs_a+8bqD89TUo#1sT$o(EXuS?5sAyEDAGy}l26 z?CQ2C>C46Bku*7@k3~tNrqQ#@=~;6M`lq78nWv{-c(!e_ZL!fpMRB~F)p62wt)n|_ z#_YCcyj~wzQ24Wr5NOT{sUQphs>kj}ISZ#T#T#^I-7|8M2_fxgr0mRZ(;XLv8^%m- zx#M`^?|LVM?#{D}vqWDSW|Gyc=8oxhW5F^Jp74#i4VDi5b+KEr*v6&v%<0ohztywb zGPd*ZC&;1!@1n< zTH-o)zZG3^HMO&@6-6k4@eE1{6L6`LO-9ibmIrBvOFDef;ipYtIMx4S4)_ymTrr% zoZma!iXd6j8P4)(;K=RrenY$XI6sC3#jz2~5?#-HD<+|G2eTxz|v3psTiOtJZ zR%J<}j5I98LOg1PUro`H3wNrNJFr=b5`|kRMg*jmJXAd>c5d@7uMFi2Ow)otH zh#x%{q8!gr!1eiOKv&7UX_*Xa7QzMtU@^|JDZ->ab|5yYSlTs8@;S~EX2_HGcj`E6 zJy@j@=oh2BS)TM6;KtdnO7NY;*1}vEn@8mk1QpW-fRKni(VJ7Ho`u75ErEJxZN>4~ zbx$4l8+>>#-p?XEOFArYkC8iQ&}(OB7FvcpsMv!U+g^GjjriYVzgy=T#1DpkcEoBs zwYSo6HMc??w(lxbxOYLsArf?rxTQ65AAWBi4j(2Jq(W~)_X^kHIQ!cN;z^lKa^6vR zQi>vbmd6a!9lNk#tdX2-R_VWxfWe)g(SHiwcF!>>KIEQ?qLBN->m>faQzYfw+Vi`~ zBK+oSiLR3*xtQF;HljS++nk%Ab3>4NXNztM-$|L-{CjfE-A2OopC9Jz&5O8EnI(0v zII>x$*o-j}D)y@dI(hQyK9?0G}38`terZuU3oe) z=@;a9QC$(6$=$~bmXl9IiOVHRHUTVDN%C8hvztwsO@UMxj+g75q42oe2?9P*MwF*J zOu}ZgXVx=(UUuExqgzZm;`U}0@HXVN4C^I2_GDxO06~zHq=Xv^QKVKBQYszEGBpb+D~>`oRxzeSvV-kDp%9!QyNnLf89VXECqD|F!R4CM1$b5)`Jc*#SZgm8Mj{(Jj;9-nmYlKORuyhom5 zOzIxR>T;AMZd4l*&q#Bm55&QT9}k#tQ0^=^xNT04Ycb=zb~NHnrxzEWJcCrmmJvw< zXhe>=7zZwShOqA6j&%ZswkS6xLAG;~ z4(U1_?2FmN$Kpn}t2?^S58V-a59V{z=Q3n0t>21lTy^7$PFZ+vA>G{ezI9QPnT<@8waO`urpI zggU&CIp!(6--oOX_u}!VZoE3>+x4SeHCmrU>*<^pj&HfM5Q11K+AXNK|}kw!#B2%9OTaM43ib=hdpvFt1pa7vzn z!R9m@V=0@a`M6`&ka9tX7`)ISCJ4+iB-_Id+`fVx*TQ*%ol-!1AczoX7T&h;GXlww z-CDAxD_PK!zm1R5s92pqO7uUDx1^4bmTy%J;+VdFZGqc|$e8$zUO^Qxl&cOf8Cvxsh&DY11(R&hdH2=!R=fmG{)F5W?6LOa0$Z^j4*x5g zRKOkQIy(&0yzx@(E!B}_BGJlLyaBN`YLOWhPut!t9;RgiERK+hN&RagFV+el)|=gl zjhO56ji4tb)9IR5Xqj^Wb-9{mb&W+cFJ$cp0==R$dg~_4)#3>a{<~% z4<-V{xb6;8DvFj*Xo~0v9&83jYgBAx!tpWZ7R7hF zI*HeA>f*ulX9h{5LL4c9&W5wq9~EBDKYBGuG>rL&<(CluU#@V?w(vG%B?ivg^lIPM z*tMYG^s!%RO;ZD96=+&ple~qABh%Ggj7`bXT=7SjR&FEF1yP)RmTHV9Z!Z!)Z2cf1 z+l)ptw`&=&VB$X4oA_%vX5FcoYoNJ@x2A37`Sa$*Z-k^uxn0guLL?*?u(N#$k2WPf zYi2#N;uHLP$t-%%R2~fbMKeHB^KV{u((iqdl|GAwzE;-wjhXdPj6nYzGS)GeGc~+@ zs;qhReCxxPE}pzjdC+?tiQfzYa76%bKLmVg|@>=t&3@CMBq-aiJ)wl zFl3vFRz_;ZfOge|%!95%+IQCCd{1xI_JZe*s1Bgvp+iIwJP7s*N1<^oVQ4$jka2(p zgoZ)542!o%7&eDtCj$sO*J##nb|U3)n|!+k0&HzDqaq;$;bR!&0Gj5puXm;B%ca3Z zA_5A`LU4bc_M^P~gdfaI{z$$f;r>^n^;_*d-G8YIiFD=qxFOTIry@3dri9=^ zlJF%z+zaXS$=q<`aE?UV!^WFPCY`iyAYv>>1APN(rw;Zy_znz|{yxCPU%C~^ASZ&b%nl$W|4=dYd_YI(3`*#p3_I%U6Fs75iTtWc z4Xo)52GCH^I=^)@Q<<~~*9HLCCBI8$iFrGoZ`b7aE|65%sgiEa%E_;9ZC?4|JE_w| z>00Yj7T0vf@A_I7xxTjZCWfeK2}KU(`{m0&ikMlD?ve|>EL6-B3^FKKS1{Y$_QUb) z@}ooo7QXs8I!zHxp!gh!?-G%-P?@NW0BI>xK|n-S#$(U!nQH=En||aD6@Qr7L$ZOd zoACtYMIYN45JM1v0DF}PzSjMW%>A*|?Y%~b(Moi^CGnYj<`E3X(*%wRDCqNV zc5Z@l2;7Y@fWnwxt3(*blhqFAoVL(G>7GAN#)MS$U35YNk|yz?Pw|r#`aa8hMu+^7 zosIYn9}qG8eaH~{20vwKLkep5j`H64F#XPtyQGB=YTq!ez&kGDuwJRcY1l2iEs9I2 zEm|_78D{qW1CLjO862PoXQVMMmjTFMncFyD?iHOFsR!l^bh>QXGRdDgZN7eYJ#^H6 zPFlB8!m?6|L<}az+c#Q5iSy`F>Q9_x40)U6a_iYyJ#H*9lA$>vIqi`o1&)-217QOK zM6kBZ+|}@GucnEbb}=4QasSHM)^GRg9;G-I3Il;X#c}!*B9;W zwsbcNFwM-{M=-fvy}geG&N1bHl0T#7>UgXn&V_)KT7NBv=V|6PH?(+|cX9GQ5B z=GO1IRqW&Jp~G1h4K|GDG%s_}|!Hgnc&>ZA4h4L=M&z_?AP=;}lRo z&PY`M4;CL3eKa=6v3veiF@_AI1w{J9qAbRZPl@vBH1WC^ib~2Vi4;)kY6=4wr)xh% zf6CKF-?`D5osfuwyx;M)l;Ohs&)R$~8bN)}Qk=Us zU?T-mcK~}NoM7YypQZ;9qN1t`U$oNrb-tw~-y|yNm!?%#oA5eryG8=jQ}4!1b+XZ_ z#~Vi&KLz61E+B4n&mpCLJ72Tte}$`S{r?=X!=#Y>7Mp3^L}%`Ykll8 z$%{Rt2ebQl>F3hDIdAkfN$mjuaq5~8u+6=<-BVLd&FXGw`iE+%!;N4LphU1Qh%DBc z#)n~b3T!9=K$=kwlu6SUQRK;95 z-EHPv>2o<*>(~Sfno>q%(S zW5F;M8!gs5Wj$e)qnojbwkEv>gY64v+H|)`KPQGz-(0&}wR?aCCN?%UUW;nGa^qJ> zKvdSlNG}fo!#BSw?Z5dVV(5PMw(-ze7S;;FLBf6Be`jAyFudMmy^{$vxy>7!(2~Qb zX_SyDaztVvK~f5UUC~-t)7rwKty2=tB+EjfSGW)V!AVzlaU$%CO^ctJ5hgZfZ=KL= z=vq>awgX@)q#0UAYhQ1Gf>rEJi$^}&2ITMhH z=!F5+f*vTobWYq2@MwzmSbYw^uH|Lzs`tY}SQxHiO6Ibj5&p(E+yBB(eg2qhU>W^$ z%hcOe*{`mD)VS)sqx?+>B`SzcDiex=U{w=Dz{Ph%g$9wV#+V`^4gbIF`>vG{eS|Pp zF*Y|Fo>+Vo?><*o&t|4^6YQdnm=XYC3W@)GK>A(s6aFuAbi^Vq`KBmZEuzQ`N9}&( zKO+uo5M)H!Yp3pDwue+XqH2Sj1UuZ6pWsXnxAENoeTyYw-t{mc)af9286|P7BBTIQ zX$4tNlwmzyh>}-1xR7O@gL>s}P+y7C>|AmT>}dQf+`79ivzhxl=~U9->;7#&gYa@z zHh%>1rC77YBOB3B(9nV~IIJsFunooUciKNn`8SkjBK1#W?_1z-{=%DoC)HJYj-~`O z(-lwAFPZ9#>q)4@q4_=~D3?9AF^u z+(Gq&T_=C%;wAYJNfneI)giLDDkZd{tSrmJi4MV1VUi9hi-$`DrYUI0C})dnPdPrL zRiRV5^V>SK2I?S%6jnEEYr3`0hwK@~p7(T$OHvt7fw80vZGDf<*H!fm6n)3Gk1poQ z#2F6FO~)AS;Bl?CqxC- z%xuqGYWxXJ6dLh+-rdBFzE6+XoBPw-L|JJO_j1ta9F&QevcB&v_cM;l>$;zJ!1$y+ zGD!=Kqjls;35)@XKl7t;uQkPmKh&31U$fNomRSB+V2%>`yY4X)SuKyJp$C^(tlpWU zp#j)5g6ZlvDEGnWvv2tYNhvX8k)0Vn-?ekQ&-GPC?;7 ziKaIN~*Py$%?t!DdT<1x2Sp@*E|MB@B_UK$bHajiCB(s~y`uyWD1E()rgruG< z;$I%Dsce_w+bvu(WLcZLx0e%hpbRUkO+xxbCa?vJ2HHV7SyC2jXVZhsRdiCu2x4b! zFyZ^G}YH^66OuFxL0N0ALp zcu(_z@jg2GX%HkxFz56ECA9$b76v>aU{MzJF((*9n!>stPgFjg*Tl=4*rZI2jQL zxX3g=ncboN+6W96;3rs&H*J7r2&*Nr-f=Z=a|<);8XIH2!he^f8zC6>S4B+$y5!6- zNWp(ot<#UX!IRqQNJu9v3u0}$_&}o?a&2m`kf?U$&L6D9QGQ>$hyija5mkZ%Q3NQ6 zwE_{4R-_`xue}Nwpn-xY0wjtlB8mdZ6ca@#q9Rc$h)9GW$pC+MU=pATNC1pRD#%44 zBn2#0Kqr51MU=ck1W|-U2^K|R5Rp|ff>W!|Fz@Y6hot7Jc;{pEJ9>4K6)Ke#j8+wq z6EN-hl&$Kr&_;P)moub%!f|KW4D`xINJGOh;o2R)_5ANR@AUv%i!)44Qc5196yyAQEQ1JPBWZL@f^4T6*@Je8i&dAmy)C3_#KabYD08C zXlHl})8R*|-cFrj*SeIoSMT4J{9x$TBkqtj<@5*(Upg7U;pv75=~b9)o@R@7L*W z-12Sv39XL3JattSXUB-ghVDa=>#V*v%Qo8@m$lA$nQzxX*aaS)#b6;gZ~OxV?$B<6v%t6iXHZTzo) z)bGwnb$k62nSVC?S;j@eoN|j&aV&vo4X}SGIW+D%{@_y*BarU)n;AA`+DNF*7@Is43HXHN@PSW+TPSwWvzoZl&Iu2dJlK0%6a4{*Tk({@B{m zOZ0!aB0nHMk3K<&NNCYCo70OosD-E*-t(Wf8OZjXoDA*?reh92$akfE-&uB6}vtMpAI>f>+Nj^@dG1AUspL_ z-@0lir>y~kW7Z&(FNI?csrl)_PMdGE3H2Ig)#pdfBu`$a;%&kxthU|9wzyshHn?6} zg1PT?tw`>0aZQFXPBnNHQzV`sanzBR_HVH%PBA24MC|OvGGv(2B4cX*K;K(VbFGq# zAiwm7t&=m2jD912=iK}D*ksyxg$lM3ZXp}~zX{)3sjs!H5cRl}SueqXm|Q;ik0BBY z=t+eTA#m2^&+!vGAo9zEY0uj_)3Sty{13KYJ7n%`-+B*XyM8i`y05inhAdK+Ln|9i zufJzmL|4=FH6+bloq{$32DV}YZID63AEb0;@Mb>u4`6dHWIH=_j?W(P%pvTfX1Ouh zWj3)GWiaDg=2}@8#Y+?>DKbnW#bq&!C!pH?x&|-aqAl6)*Ht_Z6CM0ep-96t5|$R~ zaHb=b7<-C$Cg@k;-S-)_(oxxm1iWF7s_(+s-YL$KDFc{urs|85l}JjUb}3M$q3y|O z*)po7G92buPHG!sujvIr``jyY_)R}WA1||ljvHRb01JJ`VxHt__#41Om)ntJh?7kM zC_F?p5u+$Ni7=rnkM=?$o=*;f6C=sU?DJcF%9;8e?~oyX+lcr%P3O`Xd;EJlx|6p~ zW?AFSO%j^TTw=*A@07$zB5v_TEJAQa{(Q;=9lxz{_@3-Hm9hOR{;dP-{FYL15PFBc z>`dS*ZoY$Rpung^T+N?@+v8`NQSsrnOO*g zZaW&|UA!0uBV2WjL5x-Iw6D7XL)>c?7q8N8xvR$fJQ{hDPfFvo2UG#vhJfT5)UqmM z7>Hrlg)IpmS&AQviZ7W6o~eph#Zyx`q(rI#Rpn79oB;`;-8Es6@`3w67luVgZ;C7|%8$RR_~c}_DTiX)ETltC|78^uc+@1#$K z!weT_yUa5@hB#j$T;D@5siJH$xI+zOH1$==6RMrQJOov1Sry zA*NbMS*ZwR4-I0HrL>f~!k48ru9#lA%ug@;xKWeeQi#!TJsnLy-g6I?A{mr^xuZJ>liX-KwERS@;Lw^>#yz=Im6BLGzpDp4=`!cXUbGq5g-l86fmn|y9B)bX;|LTVQU^H# z6gD6qfB6Q|E0AJ5fTO|#s5+{M)1VZvv0g;}K>?bc4Hs?`S$p8#nKPaE!u>-5OcJ7b z=co|L)iC2EkPIZt;nH}4l=Mn5D1-<*b4FjG*Yo>)oXP(%i2E=pXsQbl6+S!Y%`+`o zVxXv~nstSBn*PnG+g%?VI3Z8lJ_a0w(2)d4Adv%NK;{r)@PdQ_`R%<@K$ieJFN6#4 zewc4}U6@=YgkX2Q?u~Qb3_G z3%GRk?qCRFpYZ%Qsd1Yu)F&guB5bo-olF&jgaTlOXyi%ZD~^ONBdVx?ly`#yYN_rs z;OV_DJi4a)!#oCGFIY_YLgq{Lpk;H?o}-&*7?i-4!P65$MA20rA0!a_5aj5|7(Hv! z5e?>F%E(T^c@aM&mJSeH1GDgAFu=1HdE7HOde`(c-P?4QX&G}{Vq${pQCvuWh>u%M#x=h#-7m$<%|J#}s2jk-Zf?>*CF z;6lIRCWL|)>^=#wo%yg5Ny_=TIbS{*1Cz@|oZ!c4Qn$)XVQg6N<`F@#OH|ZCwuXNz=@WT&&V>v;P+uPL+tBblAs=WW@! z5c9suyf|8WfmM#4#cuF(_+*C&zdLDG$XA>Tms_jTM#Zu>7!5VNYy{LS3%&H~EutA~ zjHGmJ4f-Vfk8kzu=LS8kb5mfRQ$*Os(+0nm23=Y`M@!}G$2c1q6%iQ4Mi5a&iYXOB z3nOi@iL{$Y8yf)or`U6UmxP0Tn|lF__VL{^juX?Bios-+6KtR#gs`33UYxC$?QDY~ zvw!HH^&d_}-s^xgg@qMXmSQ zFxC87wa$~6p%3Y1b!N_O+r`bV^;+`~l=USd9ElKYAyD%18&RuvYhApRCZixW>^_~P zWB4KCm_RBN0KWJi{dYCtJF4f?_|ST}D!dOW{1Ip5Q>8Xlqh@kU8Kdd*xvmf#&j=ff z!qfSD2Tz+%dE4>OMDx)d>!#PC3sI?~jS!gu6SWwt*CQDvh=~iVI(FS6Oz+zNxdpL3 zRwJ;8A}2QEm%4Nd5fhRPn~~4QoR5TlEu0ORO zlc^_Yw?@D_%Y_EcUqECD+O#O@&z!cZYY95OWo#l$;l!&lKujtC7ef597AKnr`bPcx zGy1=u^sWO$y$NSDxJ^xn=S~KEK!H;nO}1ZTdPs{PqvLvv(XIGg&ZCJc9NQJ0;|pC2 zY=khzMCJrP(nrp|wU2=xWKr&MuCXlq4semj^Y_`d*~)#EYC@&#bo>droBi$A;nk6RsUqm-97}>;*4OB}pK2f?* zZC)3A9yhyd;l%9}JFUY56e5T;YXPbzE|^vrMR7?Hf)OVxtTCAhAuu6Gwjc~u5mggf z9z!!)INhlrxE+fPJ@ zPs4Hpm@o{Hz~JYa^I9%LSYdyoA>kSK)hn;q$dWxn zbU1B#lT$P}k@&40#&y5y`q5ZgI^asZo0?2~_g-O+iKC6TIfL894Q4=p5$k{0NGHy# z>;JoNX})*l!||EMxa`8q&W^7rqREJVAKOdA{xerf%vCJGQ8OFgdLx&=qh`rg4RVJy zHzCXY6*T8d&yN9sQa-Lh-@$_R&IjBX^6+skumO|3td7V_2ycFmBhBGdF*U`(fiITQ7}C$!E5L9u0rO5bg#ru56ucS0PBLi_ z(;G%y8^(4tqxY&fW4!ZWkAPu?H;Kqc{f35C}-?LAw1EDel>|?n(qGX2XCJnaNQFU;ZgF^Q?k`v$d za^ry1-_o<@V$4s^R)zQueUx&Ts_gz_bsB03V6PNp_(payp} z!Q7Qc9?8f@uh)bpG6J!Uiz^Lndn@`>SB0-@Gs($@dqis}5=;8p62oL>>-<^&=g9s6 z>H4y02X=*f>i2kXb$UTm6QDVc>}>J!TN1@lb4M?WXk9air$jO!ci?XI@2I#P`IJ3w z-x;fs&IC4$h_d$IC;Qn@pn0q7#T_QNm{hknCk4Z+SO*YTf^0J;2bS#0s@EazS>^{4 zh3x6kwE05c83RUQSQ>Kef-0%|XNdj5~guHmLjb0#xmm%}jZ81w6*R1{z4RJGe!yu)-U(mc{NZBXI;*nM) zQHDp+#kCgPF0zcCulq;iDrt7_h!U0FYDRIyGeSXwF^8gj;+U8q=QtU8`Yc=f^9$lX zSppR*s;C<*3u(s~#Re@{u`^^yzNzU-s(>#_S_h_Uhhcxv>I(YjdaSR`jIHv*vG8&E z+V(K{1^9_WJ#oO1BuH>HH{`Tz>!fhyfXiO2&mmxsSEa4^v-cC?M^kLBL~iw|HLb6; z9C1kn)5Gpe%aG>0WZfsLLp0boOm|PNQ#(#fs#tyJLjF0 zHCW--pzr(@gXOio1OmY8ss-P2A19-L`zbc_+6u}q?HBzg1X@j6fhk}6ADpqA(EShP z7t`>6&Drov;2mdN$yE|&=P%*g&bI-&IP_Hu>jo_HgIWHt*jK})3&2#4_Z=^Jwc%#K z-EWJXxw~Vi)Zgsy8EP!sR|?Leh=s_+l=UAW(`n@TUf-d9pQlhOMMSBqe6L3uDn7eC=+gSnFmaV+G z(B#lU($TI|50u6fw0@?pv(Ok=6=kt%TNebPM(Z-~wa7Quhl%1b7>XE-Mk5i3w@};o z)`ZMvkuA3SG+1n5ZL^9(=pY=m&Tfi>ClDbG9bu425i|h_G+0xLwC^bqf+YETfHmUs zRF|B$-{#>0e4eJ2D`z&svfW@vmT2iE&1ej{{4FN2RnwaW-r88w^}SK>vgtAWx50ld zX=m4-y>8yMD2hECM^T0kD(UiSy4!q8_&N4fPIJpUcyV}K{KAx0Yrl{h8^dc}@O&#P zM0jMqgDXO{Rzk+MEAhMFU6wb@q@cyt5l+bES+Uub0)keOBQB~^3>3(PA%g<} za)EA Rbkml0IU?4pYsp20{#JuMdxf^xT9|0}rs`mVTe^=;BNICeV)zuHWUKMc&F zU>G|&A~ps$jkyjoEm5}n;4NBkJ#a9I^eEU&W;7pn{U|}%Cy|)Z0B%$S-Yat29{h2h z(7)}B2pkk%V5=@7Y5$G#iO^Zw?Yh1+n`fP6{K96;h+#2_7I5VjR$^SgU3u9>d-cCr2JDF za?2P*6{Zu98I1M5`fn4SEKaNoyQYsdL%U~?>L~`nj;*Ok!`j(-6vdqgj1q(TGj9!; zA%X@v;Ly}nn&p#bHCQ4xY72r-JnKr?+Ds21ULl88AGl9B95+qO1h4oP6omBQ6xzX= zn6e-D19p7R$b{a+id(@LbQlRr9qG$4$TlVgjFKUoZ+Aa#I_Um0m1g9RVo*0dh|@-L zu8Oh0XLZC+d~nJYwSo-Cj*_LE${4j;6tN&j;Xu7}rl;7z<5MeJMh*&cWx45VAk|Dn zOj`RaB3w~KPA{6wT$GMf=bVKlUF-qh??Ki)Yezlp3yZkYFMG|f5~#4eYZnp=2rDV$ z_1+pki(|ra_U{=r zZcX43Gg^D-Ky5B)t;BU@rb(=E76v(mmJdiYeVI#~E2JX8CSwgQRHT<(QEy&X!umne zAZnFDDXI;p2G~$FM{*w+O zCFG=7zu8M`*LY9kQ*AoMf{<9M#eo(AbC3!oKSm398V@gT-~7vlXM9+o?A}keS z83r;4pvWieZHWDCDh*fifP8`7GjX;#RcaCtMMNlK zL{Y#T*Pa+~Fm5WV>;U?77n)fuk_?QJBCvq5MT7+vVj{qYze)^%v(U&wR!Djxh?Nf^ zV1r8&{w17?6dOc$EKp*Ih^UGr_zFu@PB{_ZXfh+6cYUM0&pXyb*kbqAusWNK#pkhs zL-$Oc6SJ`!SK+^K;aTM1-%hFhJ^W$jg`_M%QQ(3=z=w}1nuwdwTt-EX5SS*S)R5<9 zr5|X-*2kUK`|jJ<@He@rCgyaJMLe^hUr`W5x(!C7x7BX?(96lv)6PpIhm*bkVGw$v zYi*El>mii^c;beW`9uR$_`@uwK7#s1-|Y5Rj5Dcm2Fa*asv?f>X6s{dT;#7q;rZKI#(mUm>RcHZ=OG`_FR3>J;oV=A_QC%)F7hwt zE|k+1ek1~y`eI1<%mXBYZ5AXE9z35q{Z?|EF#4}e|A&v`+QHRVZ6@Z3zv%k^?0w>J z3ArK5a&@5vV-M9aj1p~L{4!xVX>cOk-RwbeaIdjy$%3Wg#>90SP#D5 z8|&7=hHswvA`AslD!^h1I8RV1sxh;OOB7t@xATJQqUF;^=6`nhx;@+G8C6tLR!A%Z zWlj;O3KA?!{5Wa^MN@Nf*hsm%*W3;tbT^S<=ty__`@>)?Wo%K|5^WP|8vCY~^tJ29 z_=fsCD!=AO^*`L1L*Z}Pf6|2V2%hFzzu)v`--i>weIbXYj7*ZRLc#5*F_~~;VR$f% z`-R}|+wqh#YP9=k+eN6I(n7p>KTk7x{H}L!;GC{gy{C446j4`V z3}OOmdu(%uFucaGlxqO%lagQ^(x8Z!H5|_{$mMg$T|t)A0htHu$|H#)gLBC_p7L_| zDcV^O`3Zw{s$oTdrTYF#hH<8Ar`M_}+*TbN2#m?$>bA{YtJ`fnKxhv6CcY)|Qgm+0 zgO2iB%J~=;KkQ`t7D8-T`w8Y>l#(3D|uO-0;4Svv%Q)L_C0hCc7l zQt7S_;d`~F#rKvzeP^AX;E>`!i>%48Bi zSSN6@h*&I*g0W=bLD^)i7H^fF$+wUP0RT7w8=LNLg||)3_t^06*9Kyyn}q_)h1J|8 zT!gNT!WRdNtrg0+is4OeJ4l4=011FN;Nu){amMDy8|3ZVU5?vjc5QY$ZP@H@*zLz{ za(3A4cHbp->Huso8hJIYb~UUdZ`A9xF%`nLopG!(v^vFetU6W1&bZd&gw1P(YH>>O zUscmd$VoyZzP&#O*{7K~^6eZvB5e+x>%i5>LC4n%+4JP@wE*6c05O53p-~_u3*6sE zM1>n6rD`D+=0+Y2fT`S~z1P)^^oiq)0EABzolCdOF<`;nhV z31(~7%TTf_JDgj0-tijwEYdfD7EE|`z~u4{!#hhSU$3EqP)ORMlf4_b09GKps- zz-UB8Ra2k9!ydYgrAE=M64CW$8z4l6%~*;eD6tU*7^GwJh+o&)539I!1}H_Anafh~CR!qZTFAI3!)S zz0IgZLEpTHSf5nu+EZhV?`19HI8b?8DIjpcDkj6U)Ly{GBnL9FP|Hx9amwekIO{9< zE(y1#jj)QcuPt!p>Dw`RH!iRdo;!6N1r!lwa}@Ai<6}TEq0&;A2l5K;`v+_a%ftmE2)==k2MNH7Ar}5U zdLJPO8e>*BtVOASD1p^_uFgMTEtw5F1Rq5dF46K9osj7T4i|KFz#yU4npUF>+Z-nI zY7vA$frBeLL{>Kmx=`G*GZ3YWasW@I3RKUhtk}a*!XNKfI^KdK(9(w3LwurX^K;z# z02*pN?vbfOTCVTfz@r6u`Fu@~;ro0X1LsJxjD%1QGAnuEjJ1I|E@irihm0B+J#GmG z8PkzRC@u4LK;^=WEauZ=4hd0)2A%MGH_$z9Kdeskl9M_^rE5kk1-priv_cl|^4j(w zLlijxEPHS%Zj*3tjK$CrZJfk26mF3>dQ8sXFoUG4Ce9-aZ`?eRWHDtL^lfI}=9n4Xc@5*K!%)M?_%VztlKSe6$ixN=M{p25CxzSq)FN6=*Y{DcKq$P2|EU^fOjMkBp?PyKR$Dtjslh_ zw8V_5@Mv{HatYXar3ix%Q<+3WMw-JAG;=H`R!<48kp(CF?wJB@51fdIJ%9&t8^FlP zgidC~&2LAQW+7zp1$tqU4`ljyr%4B%Ie{Z7{8y)WGzU9GuVFD7Ucd$lCQ+Smk38p_x46xjW*b z6;AI1^$$AneM(9DXgG49lW=oXtPwU~UtOFfCA-ps+CN(U0l*%so@O?Yh4hIRb1=#c z{{7~fpGxiw4?-OQu$wQG8sNZI<1%o(P}&&eOd2DV#+RV>YNqnQrVyUJNHp0jwC0pQ z;eFg$z>D|F&Sxa|CGWn{TZEL-^OLv!scOAFiM*N-Hyy8`zvKAk`vU(=N73r?(&gj- z%#4i1X0oCM_S%2Mr&az=`WxRHQVD+$bVR7|5$T|h&jlD4s@i0lo6842V_O?1j5<-V zo#lg=4+jw*>zMRH21h3jt;7m=;uD7sq#BNpspM`a3B@CNp#jgnwSvP!JG1MJH)(83<0~{zt)~_a@2|NkIddf>0r-84rZz zI1)X^1NquU!$jOpY1^d#{WeGl^@zfgC-p=E4s3SM|VOaT8t zSKytb=Vk~^@DuuxATS4jMk$E}f&H|SjFphF2%>_?h(iVwX~O{8Nyvau(tPra_W7aY ze;l}V9Vy5GBFGGs%#$H9pjkPXTx77Qq*%3B1X>Z!FklcE#a!^P%dIGdB^Z*+m0r^R zU>}T{B)6ajDsziCzk#7_e>3Z;KYUA?3o5CwhWR8ULY0FDrXfP5h%f>ukO~4R^G~eJ zEGVZSV3?}ePs2+PNfJRIuud?E7Af0;SR$|ptOX*Nt^d3wz!J@(P_YCtK~wj|Vi>2? zl&C_tKkS;430cJ*2}|fikCUrzWu9D%;wENYIa$>obpEUUoImuBZ_=Wh&i|xD(20NU zu3<1?V>rA(UM*2~tW{Iz1E;oXiBxvAQfSc5L%8Vux!ih2lMWhQ^Rkxi3>Ztuz|n^U z@nm!nkO)0V;g#NHZN6A+)OZpxq|9C_0j|&QNExLARopOgCIrXV}u*u zsY6T59BImS!~>5H`$d$onUP?15FT>p{DqXc0OKxDmN<$^G^g)%&YLQxlk(8y4>ReD z*}4boFPMxW$O`_BXo#%O zHE<&N47?|>+aV=_J#~%Nz%U-rDQv~T30qM`ct_A0BoPF915Ctgm@Tyh$0p@~4M^W* zGPJ2)o`xd*c*?IB2*`>h zmGd^h3CV>BGIjgb#(^O?Ai!+~7XIPx1e*2?#)Q|lPk>jXunf`+1-2U%i5|9ohTGx- z;-bQ$(_3eJJox{fn7iCxWhi$|O@Z=xUu7~0cM{(2# z?IODamL&rgAHK94@BEwM_b!|&V%xXCsKsUe?!SeH(svU213U5byjN(57wj`Z5KXd( z6sm|KYb9~pnhC^tZ(10QApog>4k-t#K73d4VC_a514tW2Gr~6FWbv>hIuwX1M?WM# z)f~F`?fyT~qAFdr;QTMkoBcoARVT}F^%>SqSSLwFK+q=_feMBcQ z`ZXV-_uxCtUe;3_lc*f1LPp%J(v~Yj&b#AlN*0{gnG|7=d7fF{aP>XJ+ZfXL9X`Pv z=c3VCl}0hVQnjMcWGx0rV*!eegPvNIhal9LWmy~zqArCvmghqgJYQ4n7#lg=6#My9 zb=ivfL_Eko*TU8{b2H8IY#_L@tXMCUk%Pvs0*siIa2#YcW$f*}#(52Ei~S>4?(QQn z))@;CtbW5Vn9H`9pdXv>n}ZO7E%(OF4VW;)kVq(U3IQ9LzqE}uku@u#7qzZpO7X8+ zR(YKGO;G4`uYQj}@oTH{qLbEJ;QB^*GJ&nSy=UfsUU;YRnT*}=ML<$IuJ1T`OC$ch z%Q9wy#7;G(XoTq5xonN~R=*pgePFs*th!d~n(bXnwRNov3`k95Md*i3jpka6ZuxR` z^?UoA;R;CU;+t)Iask_+vM}gPpYGm3uFS~WX(&8axFYifZ-6}pPcvfJ*#5x(vMx>c zFup3EbDOtRdM}@VtNKd>A$)3$7WiLyLGtevsakrOV6*%1;mQ%Iow@A-QhO6{B^ zN2zHQBLU6-i%{R=A*o7*fHEjEPnC#c(Uyv%mnZ>)x5Va#ddi{EJ(tnY%Moz(f{tm} z)Dt38=5;MeT*q1-B7{&Hg3f?-yEL?lSp_c=7w_tCXSUEaP^i$AeEzmvk#M-**3DiZ z(E}fnFhq)JE>Biv$Q?Oi!MmB7h$tD^CRQs4UBD*WRNp6MR*FV*e%pKgM>{iR`PxR_ zXHucM{1)v+mByhJ%QOA|AG`;{wcM(B4x-t`rxg+gMBESs1Uj|RaNtpPS^|tlEOUkk zfr!PF5FrfGB7%UzDD;NV+sSQpMyQcx-mxTLs*D)qf&m9#YD}bI4-b-LI(1Dh zK+-4cw=7Gx8{d_s+pe7Ojn^)}SOJTV6LCDug5wjG!&a9*8ljDF&^rb)?Z8__5E2~| zoq5_BRH+QER6VFR93&4*#FnixBH^VgB1)s>`p-s<`N`D(h*w#^k#?=Alk)^_ui9Om z++uRg%Mz}`NU2cMdgFkiLX3=tvz@}gv}m#f%(Lbl*f=;ZE!ez@Km`15e)dLH%}hH4 zRpidiRzj{;B*{tLQW7t;I}P zxY7=~8E%a<>nA8PBs3GZ18Xiov~0k$fc8i)!Xkzl*n2AvT!0>5a=W0=o#fDA0OMdM zehDb=W>`Ziq+jaee#@gHQ_M+9>ZHMNc`hSubiRrnfXWM3C z5Hvw}#uyaU4>v07RnVv`N+*i_b04Sv8C;O8O7G(VlAfvP&#S$%Y5F{=8yr^f|C|xq zG&Yexu=_u`ZJNhh;$Dc~#-rVn0HJZlr0dM2#TRh2x*Y=zm9-v+Sr$IBRah4Kjupvnx592PE0*K^J^GwP4wg8)<9QI|v}VBiD~gaHCQ zOKzIqEmDA~mYJ6rIA38h1~T1JW>Cd$W*+gwJe$#>_0XQc!_OBk=|sxNI#!Xie@bZk$@ZVZqJ=P%`=f^ZuZoU8bO*Z7%E&^+FJE> zAu@u^cL6k)39>Tiu{|Wgp>X{C`{sYnPPlvxdeinw#BYwZ#mJS@C z2PhH(FZXy71+Er_!G*%P3V~}iR}N5Ua5)-z$xFHH-oNvQ7uyOTB81u4aD#yhk#`=p zO5>nt4{iuB?t<>#-OKd_15@5L1+A+Q|AnWh0!9c5ztrbPmqG)gi{x?>;;KxAZ@ zXjMtZNeU5=HA%^=4%?=Jj(T)n4C(fet7TtO5k#Eswo29?Dac|!yD=Q}bMPiFV;BNP z;=Ez|Zx&;MC;qFmL5E458w(QWM6KjZG>$4`Dq-;DGfjSL$Vk=on(c%z-xJ(?uG){d zI{my<&T6Vj2!zwNsl!%F2I`c_<;sg68>VeEjMJ>EII_sGJWV7-24gCJ(7aZ(~gjJK?h<|SsLXje@!~{)oR>@Otn#u|XP;@~NQ4()7rG+p#fPVBXugchKxW7RABQsnWZpH9L z@i+${Jd8w(s#nWzlff@q+8WF*;UcTOd|Ve;7}0QPHV?#i3>jL?_)SiLP2g)jfDKr#g*n(>@1}ro_5A?o9I2Q%~Rn~@Ir8J@I z{^5h`jNZZ>QS`ryvE&@%L_3MV7pNMTm4Ue*XBb~2kXBH-TV;1!pf9r zsT7{(VB~dhOk-+ope{AlqB~6*|0~x2ANcZeu)&HL`G=0coN+SVM>Dq{|KO&_5DxH5aMVad$gR2H-!1FF)e$-I|RX9rZ6>EQ7#zqQXr z=4xV5_J_CQ>BME2Zviah!+o=DcJ?W-F5QAXI|YmFNl2h{@>2B)kI#Rfw+hR}$MW5; z_q+DHKRcC=&i!wJ$mDbPwujMcS)~2I{AdV58SspM+Ky(*!Y0yYNo+xT0ssCn znj)x>(st!hj{`Hdk3O$u-_vX*kT z`h4oCF1t^FXV&|i-r=0nuL!l4)Q(mysxbr@U5o*NS`eGyS^+?u!z1BJnkOxM`aliD zDvbND6^nCG2oMKJs3;pcC>YkR(69v**Me`1#1S)3;Vq@aGn8eHEax7^Zfed z)iMLnq)pAl1eg-zF$4pF|3kAxe{(cJNYcTNV4SA}Lx3MxOhE>r%zU8?I0=iXwX0@d zG0C|5jtzPx3ke9dt`!PS@Z4kohJ73$;#?Ba$uE-~Xqm!uU9Jf)%bD2I`Tqm+LhKkXf!}`a zq`=3Vh_qjs@fgNz{7xTOcA=m@HuoHm@43JNZ#04-YCs?6DGzg&p z6dD%6@P+ez%}V0Izj1lrm*@D~>_hk=hRpx(_TTBHpP~FLKJe1%-n88>!@_JB zK+^-o{%aW`x#$7Lue*K2n9kza z#?4jN%g?UsuD0uwrl{X=;tUUiSpf0r!MoiM62=}yj4;K^22dZ$V8Fi_4;Xy{P|VVR zXX;ANy>tu6$85%z%zPf;vqLl0raj%h4X^c|n1Fop8~4ERjO(WsU=QVH!> zE)x(o*rJ;I;?2UARkRbb_^Y^sgYK64qX{+_H73~^%&hPR#sDE39W5P@@*Vv|T$QxfavL zscRK8$;jOrt~<`NGkVQ{A)$;rJR1xUe%L%_3gavXT`o>dNTHDwpmwrLk|!cYlq{^W zb4Nr0W3xdFo@&6FAW_)4O_1GcP711ANp;>>Nz6W`o+dgJS!B%p>AD-*%e_w9-x%6| z>7Bvfy_hj@6FF{*Whajw9+t{gmArnkwd#&z$@!<<68R$n-)ho!;#4{K@!J1=Hv8U( z@}BTO0$n#&9#~o?_y2|GYC+{WoK z==l7`?0MN~H*0ftwvVH>Jh51=2rwXl;A4D*NwAbW7hc@UH~z3AHnx?xmMAYuSLW#+ zz&tX8$2a%%8(S$e?{_wvmG zbF;nyUXz7iBH|`!BQUB{ZASoUVUQ6R4FLW$x(yud9N-GUia3I!BXOV-=!M?ycIW}P z*YThR&v)(cO@JC~0PO7YHmQzDm*PwJ zq5Ac$^x#b^@<+Ts>iVF|FM)_ulslHo5I=Bc=KK7{7s2})^yZ*1N68&133dHLyo>hO zx?HV&ovZDitfEba1Xnf|?CPD?!&ew~^4xKKyhpSs}Tx*SK_MV#Qx<`*x zZ_QJ=*Q@o;+Lzuhucx2}Mi@To`oCw;ifzUiDxr1V`Ce2HHrieCQRIg^df-s(-frw} z|7*u?`v$Gf*)ubDB8ZStkB@v|T$k>m0S1UNS~Q8fye;;%`PGvLE2_o1r|)>=7v$7Bn0qfO_$cS zJae}p1FA!NoTf{hvWQhjRWB9pvrG;N$2G*!oet>OCt7kDiv$%;F5oij$T$qfoW@-a zhagr0Fd1q>UyBEe1;xi!17LckfgUvSBNe zn|}rfJP`&!G14GNhM3SggI?lrO8ICUp}dBO9AM0~X|cpZS5H zL18k-hoU@kdKxUTh7VYD8(R04jGi$B8}peb-cFE_%VHqZISA@kRky6uu~?C&!Wj$^ zYf4D{K9xss2VOrWthwedmI0;gobbT4MBa{Tl*Y0VP)RV{)7(9{Z-5o>-kmn{TaMAM zWl@XBU_FI2yR+ECIo^k47EY>YhKkE8M@M*0wo2s!yOb{sBm(9Fk_-0QTpt0-94_8k z$3p407Bh(^{0baGitYon20zK~fUx)nJY$uqA1*sD>1KWUi!2%tc_wD+fE^Lpk{1UB zsQ7|8?cNVin?{@%v8Q(0S$cu+jHgfGQv6LUwAD0^9_zYo4ASO2VX95psGi;4y`-X7 zg2=~$W(_6?Ocu~V-;Z0j2ZwcoY8{&?kcLc($Kuvh4MSg?c{p9 zr8A&Rm>0q1iF{MoGdU<N=s~*(Ydxc~_|%rfK-O(no0!0f2HE;ITmTZHXqe z!?M-+VZa0~`07g24@7pLNo2U;PDLR^$y5SWWm7YaLE$J<+rZDvL_SiIbcrlNYOtD_gp6|lBOZ01#^z1vtz*4O?F#1j z5ZueqT<1xvQBIVea9u*`>(;(~)ka!gH3U?b-n5t2%Y#5Q3^%w#%>>-@F!JSdK`~f-l9&CUZYO*GDU}DQi#OmMWiZt68=MDP|A*v&N_A<%-uiufP z#o_q1euT{i>goNgZ6dwsop>@9!{dA_sCoVF&awIB@nfd95U=idLDT3ExeKt{h5+1f zi`hgFZ!%>uh@G00RLmwRtia>aeqe5bySBsMaMop1nKyXk18x+YZp69_pg{1R8j%rLlF?cg+yV^A_*#q zgC?I@{$+t%){(b43ru zv>+TLn}{DUWDd3;v5)LT*uB;VQzk@!gFgK_k}L118)5;$aHG+HAleLqgqvcUrKT(c zqePRb;honq9mL8SNpb~%@KA*U7{LMns6bR6ywWqNpw3XceJ7fu?kU#-hC2WJ9>=Zv z8weF&UoE#+BVV*b{4p&>fed`!W<=`0Lmtvv9wqju&Vj~qg*qWfokoi__=H^mF zGMDZsYRnjHQkrts7Osw>D^z+cLrsOh3Z>@acU+R;sTB<**# zKTq;|o(F^Fr7hiaC59%LMBh)&QlHQu6WW?2N0By{ThmQ>Aeberad=-(aaClLFDlo@}ZykQC=9Z)$Ri!9`Q^me!=K4fD;552fm_mr1m-!jzlq z&q>epqg#p2bE^kNAQ97jA1fBy|3|yTSYi8Lx8u(2gC07bS|ANTfPNIR#`iVMAi>O!LW=G^Z3)UJ8%Hx%Mk2=NGj2ElD!Q7W2&#IgsvVaYWAZosT3(+r&do*hPS=UT-g z4EQbd6fh8I6na%4Ogv}Hg`73S)(?>Nod-H+fQgRW}n8KUs|>8@`LSy5QHHJLJ))^5Q3TqsQtC<6&Oyw zJe*p($=3l8?0UK8q>1_Sy)^-y2=g$WZOc6+`Z4Cfe0bzum3K*)#Bs3w0x0WHGlg1O zB>q6NK=>Y*`5eEVeE&<%=p!e1Ug{cq*yd6j7 zk#S3;mhJeK=vGvv(ts(4neIX!G9%5UMIU?tnyB}@RzCXx0Ki;MYuj_{cM~WfF9AQa){NY?PbIWrbmZ}awft|Ws^CH?UM+(%vSZeGQo3ZJ2 zV}_Hv0h5Z)SwWq{JwS>9k_^7s)s{>W*05!TTCJsl3>ZQg0lPvk5}u>E=HR?;<2=yu z5P_VImuii@GQItB-&W91d$ZE_{nM{jUK;kzbHld1 zg%0tQ;)}0o>xIQUe!ajRgWu0HoZX#ARvupZkA#%0l!PMVR@X%=u}+HZKyly0=r=#9 z*m1Fx2WK9dz4ldbUek9~VbcWP7md!UghH2yxv}DsG|*!hg+6qrdGf=T!+gqU<=*HI z5=D|UQhWEz?bs{DM#VN2(Wo`;H7vjmuHitvLy*vSAU!$rK071Y3^0j-66`5dftWy0 z_F6BAi$@_12E9e57~^YjD=JqY3s|IMk)El@^@##VMl1rSlQU7}0Pc4CnRB`z>PNpM z9*y>k8l08eygeX3?JUo99(#pTOM{)T>Db3QZ`{Rcm{4GOo>f{yZv=uuSfG5@#3p4* z?RZto97h49xi5ZQW{%-Ua)gU>2ME6KW2WGgGbTbA(e7Yr(Au$S;i0D+?0P`1i-wip z&5|#e>j;MfX4`-`4H>Y*SfeZ=NIDCtHsdvSs9p*MT+CA}IB{~o5S}13tYPF0riq15MN9*1DEQ1t;=k6p^a|NH1k5=vUJ&aC&P5M z6k~um481spNvoL{O6AGm!F{Ah9u<4w&-??IbynrUoZ{+HqWeT3U5v+Ox7+MLT)iVc zEuJ~pi(U_Fqx8%yeakO9GFyxQVL+b0dfC2p$^kPXDkXIRO_?!S2oz}Xoet~IfZ{~S z-;fVzGXXFTn@CzGIYyS|rkYmO01i@#O1;^R#yUuc$w$Ky5u5v@;7%%=LMb^TJUf_| z)?yjThQ=VWT(@_)BHDrT4s0TpQ!KVx>ML$$49&baIx_GYC{jN?D>$^4-n+)NDj7R1 zfl~D)Ur_*9+5Ev^j{G_Y>f$=}=FT*X_Bg;$(>Rys1bMztF@{j&>hTPfmQ8aRd}mMFl?$fOPklO-FuI zX98(69IU$L7IUnJePRVy2N*1yx&# z)3JI?+>d`ygCg*})=clk`+oG@wFnC=^LI*R*G_S#L@$Umkt7317r@hw4j)OQqv`&| z68Lr42gxdEV@a?Z z8@cI$^b6tc3H`;N{xw_BAF}>f%%*YUcSgb`OWkGCva#~ir6|?|?EB?-B!y7H+f}i- z9}EJF;eRrckUt*2XhX`nR8h~tZK*ICNG_7!yd8FRWmVgc)y~?G&!8YUq$}*=jhc*q zZloGk(CZm#`xbKNQ`rVs!)qYcBj(|a9##Zpp^vqQlyoS#0kRN_ctqDjVj6|e7;JMI zCKTf`g+epr0MECvO3yPTd6lf4iTtMF)xN1No(v0|#%y$p=0TVP8x(tb3nK|v3sor# zV$pz=1JEzjX&#Je9Ze9Z5bD|2j;*81eyQzts;3)3B8jxNxbpn05Epb7j!ASY$o%QW1$EHIlzc} z-yhh92<0>Hcl;hb^plySc^`23mb8pK^@FYe?0_6mG(?)5EbU0A--O72as&njj0E*S zp)}J)c6LFuYy{akf(Txvdqi_GZi{3V`NN+HutRZr`NyNtq&Z(Dv^KGfIabzloi^6n zuy~|Mt+f{fm@(hOFyY{n!!s;c!*A4j)8yx-_o(-i!EA~&@F8_x@;XDeNU;nOOF`H> z1%U_`cf##PN9pQkJvh}tj}KIx-g-O3y)Za|9dge-j_%G|(d}oh!s*SepvzBO0Oj}e zWdUf$W4F;W72Vv&bTmpKP_1T?ZFn8-r8O>vxmU5P0>mr*tV0y-hGaKPww^)`sAt{} z0Po`N^V_ge5Qegvsv#01HOv$RSBup_TK=1U&IM2@!h^yn7F>u=cX$S3nW5RrMm?iJ z{?xE!$P_j9&$Dw1ilwUKr(?mHs}dWxYkA{{@CQAcG3MFMbL-!{gE~Dud{5ig9XeN( zzloenzVG6tj{yZT3c`z zGrzA>DNsG$kc*3czyvwVR?3RTbg^BFN@1h!V0naU_z7a{* zbt^9iS-{Q}>#-uk5hBa7GL^b&N+n(QdMf*z*@NwWd?ZNarR*K{e|Hnp23nYfREhySa8$ zTf5W9%glKfrLTOj*w}RKc!+x(vssLkW(P@wVnpN`9JXXf8dNsQ{&Gjg4>Kei%xu~k z7Rm4cxgMuVv(AxN4yqv5?g3F4qKU@qS{zuJC29v3Bagov_TRI~1$d6^4C8iAZg<9M z1C37*yW;V_f1}0!s=w>C4wxyTXy{QKgg#nq*zeILUC~T?1Owryq2Cuc9so7n7TL*%dlja&rVQ+W;_YZ ziHpk`2{yadJy%+)HCtQRxvx=25g3dZgq8%95PIr>UqZq2q(y_#VaY?B|5hcO3%L1y zqqLOzKH6{{nXFKoUTSG!q3 zdcC}Ji$I<*BFDl`KcSjA;NwC8-2)*#Yb~==b4>|-_ryh!H#zKRbr*_+tro{#@_|g6 z5RI-2F;CObo_-ktB#NjYjwQG2Cof8Cb$5AouTnFBXUK*TP(=V581zVkMr>osJsD71?y^<{HU7diyX79y{eM!LwxUwGRD23gL)crIM*Rw*gcm z*s(BtJU2P^Y!$UhUF?*|8G$kX03N__Gepc06#~+FOTtg+F+B`Puvcw=AhL29QHIj9;o+f573L(FDnip|RfH%wXTcjM-D1 z5PI=%wX}fTFS*F7&vm3yu{iF&lU952s6^8SWpLF2<2=pY_fblVE)^PA!7Y!IUv z-UiaT+uq?St+S8CxVRY6Wv=YG+PxzM%3n{v z=`nc*Am+q4(86)}A6P%-zfAR<)q>fQ)~eunvu$~8`J;4VHTMBFM;0n zn`K`s@xEHNNaICBpBemZ-w{Z!e_jX&-k1nu`y7avcbcAi-#+Zg+nu773hnFDE5bw8MJP=dbXD6x|JzP^5+jRh~XUzfdTMsYv) zd)<$;v-`^sR?&uVi{ySRGdaox-QD|A6liAfU{6Q-p9Qs3{B-1u zd@n@5LFNP8?pPxfXS==fCG|nb@|e#L2IdNaK7Pz0pel`2s8;T=m;6sA#9EG@&2;{@ z-8srBI*!%0kZThv5Lm=6l?`yVxdJo@KTJ_W6?h{2IG?EyeQ!dM`qBrD$?1Q=;q_{` zy^a<5RUk96rat~P>Tc3{q{ybo#O!l*XamUe&hfC^q;m!v*f;;A;6G&%K>G<-#aT;_ zgUL^Cf{G_RR`NjKyP1&BftuvKFzF!}c4SjD z{LIqLKikisrfN3ZXzsWASiU1Mo+gYX1*e0gGjk`q#n;Q4M4>*qA6c7%*HqNa49`xO zNumqI2~Cn6^7105TNJ01{eNB>UwK}(r`?C80+xYS$RBvNGYBw021^calI>28jXAQ% z%Fmn$8;q105es5ZH*uRJ1D(z1zAWRW>lCzI>+wA$Ex7cmgCWzHn&9knfEjSol`mBY z0ouF8%p9A}6Pr&jHqTE$h-$RVWK|^ZW?13N41_~bZxfPWU_+a7#CNc6bQ0;iLqc3pX&^n%j;Gs*jkevRl;-Q>hQ6B{ zO3K}?dvmt-#nx8`gY7lK`9Y<=HJM*LScWLjys}cYL4h_gF#%u`x!IR{9Bt!3X{{&- z3QH!|e47W{YrW3qKNDNQtnsXH!jC;KTDN%)Go(>5w1)vGzfr{srt6W>_%Qk`Hez5( z)N;A}_pJ2v(az85+BAo-#u*Hwi8vivi9`@V{<--J-uJKWLin*t#SYHGmXZjsdB;S& zjA6Ajo&OrfxK4|KL2}L(C(3JpNO`Y+TMuQn1)Z|fFxh}rC7Ki%DWurlTrLe#-QVD!mxwllmq8}zh+C4*I7a2`<4-0=39$#vN{PQwG*x9T zLy`Kc<6ZA>y6;O8ocEe_ID|dW^VNo$^I8NvYs>ARAr9MZdDC@^xDi_X*lvXe5k{YSCt?vH5C~` z*5O~B(m=!P2}{y!bR~?mXZ?HN-BI`8|3@bJ_FS3bCfB`B8N|_9Wwj>9p#%qwFwG;3 zHU*d4psb1E$ZasV3Pu~V(%aLFMkAgK6?&7U@8*Lx`yw6KNx^Yqk4bXg%c`Y6T#NdR4?>v741g$-{^f;|i`Qw22OdbAG(OuNy!#c3Q z7gz|*Nv6{V6B?Ag$O5os?Zp1<4@(%tG|A%rvx@gRWwgauIpZ4v(IkdFhx2Xs4lUf+ z!9d}P;udJAq;N)^FIMzH^4CuovIzJrDJ`Y7EgQ?yNDFnZ+FRM-HgQ4 zV}!G89vI{o0!HF)?J@z8?UAKqMb8990rh(USmEW+UW$X$8SA@rR3fqpD8c;(v;U__Fi;1O#p>c*wc;@D zUIR}d`IR>i#1)(SX6}?0c>X>x{Eu;^!Pj|N!j=cPmS=>5W0H;(6Ksce6t5bRk9dES zLZ7;@!nYos&y;^M7S^`r%G^dYPR`I<$dIcx^EXBzhfsuOpoHx1Y$7(n10r(5vh-O6 zV3cBupXfvh5W2Zj0q48VjZVI~G>EGDRPOf9nuQrvkHuCh4n7(60$+TP2X7|oo#ac- z)6KHw%}_$+LnEP+W!4W`rm}p1fas|5ZE`N z+IS4>sA0WytV-!gvgp<5d7FGp6?ge*lI(}f^SF`kb0`-GaMNIc4;lH#^C?k4P|a-1 zqKDD*@w4B0mxE}Zd;xky)V(F9K0fuMEmjY=U=7n z;&T||4z8B5*t!5d$LhK7^&Nv&beBFd;NCXZD8Y_Y@pWAedxyO>-J)wCcWdf-HTe9z zzaK|0T8=2XH-3GP?S|A!iLj&ig%zGfPJ)nCG_<^j0@9gd;+qinYA$YVI&jJTh?zzP zePIsXK5l-EeBNFreLB{F;*Fn;pHvHlYc@HHFwv{(l}Glc04=3uo%p@ae9wtGV|Bk;Prm;FcfzcR8l`e66~$ve;i7ZZZF0 z=^W&Uhj)u?#U%M&C*W6_58wwh$+Xj}ILHtKzG$84p`x^Be?+~77D z*|X}tDw&}p6Vo(h9Sz?>r6dqiEWKOVy+vB~++gCczrP@X>+%j@ttK1Ma#IMd+}(eN zeXRk+0>V8Wtu_Y2bO3y8XYPKV@PcePfxgrO&!2^g`nl1;RC3fr+dKY9w>4F)5%u{ zi~TyLq@~@3WK6*=ih^=flTY$R)4o&Z1r;TiFe2XMmS_?dV7UxnaLMUx87AP0%Th!F zCZwq!SDOiJZ1_YeRw;QttFsN|uPA5-5fU?VA$=VmdN`Mr9X{~X+=T?VhKd}U7q0JY zN{(aJ@f=IYaW%JgVPBbL>u2QANtGXJcpb$ z#&5m}50mEAOT2hX)@`sB7t6w{8^G`V3GZK`_A#ix2SsUKYh$cgoX>tGw7KikQnAk4WTmr5ChVRl z`|o;ee_xKVv94I^xJ}l#A%Ai{JJ5d=>)*us`lU1U{WMjj^eF|go`aRw<{VIzka z5&Zu`KKfDJO`h>=6C_KHk5Tf}H*V$eXFdzgGnt551p(V8_tQo{`M7LrzL`|OwZ^zG zeqa?emBNPM`q6um<5gBX*nM`E&955Jit_a3UgvCzMkg6gpYD4tZx`hW? zZ5FHJ4+J_!KmLbJS;-39aMlE>KVx^U&1Lmn3Ht?CY7+1(7%n)o;AwY|O8mAe#%}xl z0qm{+D%`3ZTg(m(&sIIrY*_Fwxv$zVhRtivxbsz9b&v-&E!((1_peTxxDvr#6zbcLy&wPx&H?kBSuwV>r`V{3|6s>MzN{N3NMTP-_RiMovhI~wcmZMRjmJO z-F=*#e?E3MMg6-v&T?**XbM$gQK|$nK~*hMc7E@M>Nz?$PZXF zfPROaAQ#y9u##Msu(2X8W)bPdJnF<0N8a<;)+0~)Cz+$&e81^Z8NNagZ@k{5YkKl6 z_}NGVQTmH6gMobBL^1x%@pN2@WfVG5DK;KVd%kT%yejLPJ2;2e zUC?tl1Rurc_|nhXaH@Zi{!n|SYD1pJwD-G@K`;2n{W);^pKY-O!k^i%t{0oLm-UyO zCu0l@(Dl(5=IdhDU%>KpYpB*W+H8IF3I>py0BkyC_Y7YJrqYKb|6b0L<#2rg)7gf+ z>F}RG7_ZgNr2oW!o{n{8DuiUT+DZI6<@LR5YxQ;Kjjy7s3{)I%Z6HXtKNv_5Cbo^) za%{+4!Uk(KtZD>56AK#izZ1#oW-xXgT(7>vw492HnxB~doW9muws&azQ|A9eV{Nv^ zF|}1y5-O;^4>zt4%umqh`B-;)%r)r#xBWSi*_WDHoOL~Ayh@yJn91;P0wB^-QlQpX zD}z=`5rS2wK)LElH!q=`fzbp>ni>?jUxUk|k3Jr5KY_#s?Ligz0S!+8LnbBcgHRqCi@lUKgK8B`+q*;IRL%= zSK+2!$9A5xzh?H{aj(6<(cL;op_%)j!D_-!dMn!P1ox~q_W6{45tbF_mf4Qxs-vY= zyj)m;Bw@P6%3m$ZMJ!=C;7NWy8t8y2Te>}T`Ceib#+#4o_)6!=NaokWgo z`k*Ukbqiy$TwESU1UE+hd(t6m9E5aK4X@;S%1E_>XeVFiVDsuy^$I3B&+6|#Y^ZOq z_%5KgAME24iB4hg87KFM%sm6aQ4KSt_Z%e^Pm6Vo&9&Ks6D=Zk5R6hMNf?^6Q4Tz* zloFwCnWBR#ut`irI693~h;!DcBzg&hv=nXOtxnL)Hr78g~e@kgBW3KHCoAv#K6&P}X!Z$K7Ka~BMW)-a5%WUq2RQCj&mot(a7gFn^){kXio4kU~-y;oIXrg7;i z$#Zw5t5+Ol!x~_V8qQ=k*=MsDu)J7@<0fd038C}VPQ)XM>mFeG@w1UxPj`C$L>|L! z6)3@u;I1mr>Vpvg*Y>5q=70M+Z;G4b=K_U9F$y4q ziiiTAOIc_*b2O`k*y0`f|Mub%U_3{mfm3GQKbN3;dAMQ8Jxu71hbc7sjw?5gv1Gr; z;5d+UR`Y9lxPoN6K*KY({H{A7pt&90pBzcEvQmkRLyJXyS!(eI2@%}0ksdzg|KfN3J1b;s4i`sv_Sgr%%2=^s$&(ITg2(}Q0l3glDiboW@8@824x`KX z0^`Ma@)j6(CEbvN*q9Ezhb5AQ_YT_H;A5SPK`pS2+;Eme<26{vXl$egg(@l78Wb{2 zlJV0sX)`TNbX8m3_&6>5oeE|bX?b^5apb?~ZMR)+v$QmSs2t|`7PDt_%_h#yL~AJ|({JViH{I4<;PQxrEvmDzhE+ew7HXJ3*6j~iUgNs* z`uOnSuv$7djiP(p1B{PwAj&Yg*zu!<7#>6I86RWtrxv|dL>80V*YqJC82AfO0iOl; zY*22z&8Yo$RKd3R)b}NvfnIM}`#$@GUHN)*`HuCyzkl_6U&b1cZV$m}mFv5g5ge}! ztdQ+&sPe&C)SxX*V@9y8t#pJuVr zQgSQj2KI&uIb*_N1%>U_)7!DfI>qTo3@4jxNuOH(4UtT%P;xSZoRJpZ+-6ZpAUUG{mLH#KY8`!x&Ncmn<12H zBB-(07~X2NSEg1rY;lbhg1FBxff4KnB_0@iJtF}Cjp}H5X!5@5-Gh0)@>otO(8h=& zDXs4N<@A?}uF1UvU9r&YaXzRlH(@^X7*L@wYkJ5oG0&qpBj^XZccOJV?pP^>g#Va# zLXj3MNl(R#23)zP@9ZYD^K-O)y?`YMtTMHA596LGyU;MCr=#vhn`pD!M9kTX1{R0d93eM ze;sr)#z}Q%c=6C0ct*)JCMvPa0OF-E>T?=V1Yg*}CNjw^rG|^;<(fo>LU^=)F#5rr zjUR|w3us!<+;alGTNl&YZhUwruWeAL2Q7oKe+9bPQ`f2kj~XsuG?X;FqtL4onM6sH zyIxw;hJ?$DqZy?$IE`5pc68n^vg7f=v-u)9nmK##i{AmbXAEG)U|KfDGznno3-&su zH~~Xb8)yGd5HyMUMWe4J+I6hY)3YA`F9V6fic*xLxCAx<5$-CENe$!=gdI6eTE%0X zy{fLM&V(aDZwITf(W5;Y@$chae$?dhI>Qu&Fk=*=Kc%-U_H5a<_tzY6!T$eFv&Z5Y zK7b-w>QdZ=PgPQ(g$;#0D1d^9ivYua-#8#s)YSy>hwEhDO;CE5fC;nGCZrF}engpM z1Vo)lMa-H#K0Us47qVg~dB>-#Ev8N&YC;%QTcdyQO-D~E+E3K-b}=wBo8Xzkbu^m@4dXR6+c55TwsRxG2-p+s3+YrHZaflB zhL~v{c)Wao@6T=5F3+z-3%5|Rs9i=->qAE$KVH;@HIHzUUa!Y-18qpdkyG>KU(@HI zkh2=o7V|NE%bZz11&(gJDVr)o#GRcY@^Uu8hsIF(cfaWrGoBViEBYSI(3Qo%g(*0H z;OV*|`bIf; z(>4|%`(u*vhfQMsS6Lb7ahjwUfDhSVUcLV2SKV%4>`=wlVN?-%x^{*_l&@@F_8X+=;S~>`NPoasSG}i{*J3Y z1J$q9xsAOQNA4r*lN!v)u4B@e_$QKht7c0=G))1u5Xv!2%)X8&)2L&vnT_@r{Ol=q z{x-`lTvcR_Z%uc(Z*5uU*r9&xZW$o3)`W9`SBZh^hs)nwuq_akF0t?Dah7?FNdK$#3wJ zC7Focb5R+u?q~dJ7LQF%8u`V>x=#gcW}h2XuT_ySozCt!=$GQYIjS&5C1R8hjg;!N zq-I;>QyUCsx=hQs4AxrVR^wU)21M9#^ZicG%?O(0KOJCkM@rwhVt&;t=f#jvv;B63 zR}ER_aS2elf?1;_*fiEU%B2~;;sslO9M}9a6#@szGJzDrmM^R4GW;yxjo1jWQ5s0O zss%7f+V0xh8XPxTUiqT?qgY9M4TBDiOWZXrXhr^vWyJ#;FCCUyBUEC!t9@)D)@gQK z*?PerjkG`^nLP$5xCD+aKSX)|xAg9h{vofeeme(+U^?oGf#a}{5WH14!V|!dDt070 z(8fin{6>#^M^881*0tw`_Y{hH!;x#O;v1()F^t(iS?V}g#WV$F!jyOgBut!RU{UYOgz zPs3ulO?SUuw~RJ5onfy8>$)a`n=_jEaps*a{P*-I5RS~=1Y)xv+3wAyD0kF&8-0R$ z5O)b4CQex!ak&%CB_fAso($;R?sdy9RB5?1VvhZ`R=`S5i)AM(vdD}~WV zuc_3rVOB9yjyfJEaZGgB@-{eX9Ojq#N?V$B#Pbqxc07Kkw5|a24=%kF?{CYMPtk}w ziIT?f>*#{^e=HHM`mR0!VJ5sTBBHTcI&s%WQ_sZDMaN8Y%aBC%n3o~;^E%_ZALmC- zGrGF)-JhwxTHB8ERi}5SbcbHP+rvPCBQ^%z27oGp7%sonRp*oNYBw{>*5n6Cvq3E?+f}0rgeNzL(iktp6&IDYj?{xiI__Kon6-^%hWQ*W4LjPGBuz@=xlB|DDy=c}oYi>16Yi|!o z_cheERYt6p9HWdFs1@NXnwUn?(-n&CrZtDerWUBH$)nS*qSHCP$@&YSlD*AAu}#5| zWi#}b=WwF9?ki=e>bm5f&&z@augN`>Ucq-|+7ZPo6 zjGfT%uLwLQ_8WaNTJKSg6iH=D*Cj|JUPg%AS-!j7Vj^u6g2Z4{WL+le4e&?d#eYs7 z>LPdu3*HDj5g*w<>;B)P`Vp`N#a)x3PD@WvDmhO4EVRFubrUX>1{lWXx;G7F+`DT| z_kTfaa%gO*FTC(sU0~-9ZT5mHuKHtqcH!C%{%Sdbz(7@H7*8yP5WwGKFqH(;z(Swx z1GZ~))cvBphyLr02_xiJBDj+Y5Stg|TkW#>Tv?v4r1Z<)fHUD>tzaP?gHY&Dgvj@S zBFay=<4d7Un@QLVZ|-6S$!f|YQhX_PAm7w=`6{@_MyU~P#ckOs`a5QgPE-W}hXg%) zS}C)WJ-3(heP*Vfb^)85$j#|@U`w27@{5Z8HjQQlVYO7uFAHU=0XEaU!Vt&c!5(4N zL8FH_jA7d1G%Y0bn~KhBQ;GLFd}qbB&+Yb|{DUm^v?3Xu!OC{bBvXS*opV2HwV_Qq zS3ga>yxT;+YrOWo{EkxE7ufg!VIV+&M|LtcsE4Mr9^~E8U_F`lk|N}f6TGx^cc7Ga zR>9(T_1BxIQ?Fj}G$)@tltq9+*%UH~>5l9pZaG@dUbEO(1QI$bD_qmSwBuL$=lEEx z5jG(MY8cu{w$w9cWMZlLtb*HND_V;;p!_v2_Wd9{7<})ZXrI77#Gd%;Dg6kQ1cM?* zB1IGwBy>n{E94>sNhm`EeyPykdL65d+t%wEH1_5mo9R{eTNSTMW>EmN7=T{Ii*pu^ zsq%5_3sNkD+kEMMv$BxcBn#CrAaBgh-cKR-xd0}&^ke)^-7K{t7a>Abi$<8*Ust2C z0(B>FLRa6`m2>_^aAgQ(T95wq!CGbDn4%QKx@v=XK_ISQv;#9aOQT$Fu?pPjd zs_b&G(}ut?gKgexQw>7j?(^vwU9+fO~0PWF^ph{D2SjeF#_Xj6|W-~HF1W90a>nJdw>{%kcs~pL!jh9Rd$U! z>6k=6b9EKYERxO81)~F#&(K+>5p#-mf(VRJ2&ieE6H}L{X-iD!5BBfl_v59I!*E_l zfG$ZuA)-Z-?v<+p@ibm*m*oS_E$+!+y=&N1R&s+R2vzDVOD~NM`urZyiv zY~(jz(IrfmW_p~}XUq|20k9~D&((=N7tM=pH0Dk$Yhz1b0wnhAF8mH$hFZNi5NeuK z*Rw!7kqNNzLEnrfRl$gDc7aM|K3Z{#P(&xNjIJ}K`p$J&iiNfTMmLT#@y?Sou8z%% zRqj7NKQm{cCX$Ur)c*RuFXQKRUIyRCm+r1Btl0Tg7}AbFu!%W{Z*tTGf+5hu=D%GX8Qvg4o2mA7nOVh%sqa>~swKGtCaeH8d+Mu*W22*{W6F44^1 z&k^W#>!OLw``Sr`ccsxbTRQ*qedNv8-}FZP`qL7BFOl-sFYK?uAAc+g6stLufm;J!fQhtrHX1ippw z4$R|`?}NH=kSHziU)1Rtv-LRkuYI71JGLPOU><*eo)7L#ZtUqifxHfRW#w14@Jv8^ zVMS&g{sWIbJ+%i(fDVSLcgjB_ciw-XziodrtE`H6Kip}g#Nv3I9`v>SFC6!K{ks1S zfii-oQ2iXL6v8p5<=6H{(C?f-g#W+rTuH?BA$mE@(t!k=oPv{_c+(g;0i?4@ z%ILgI=70MB-ko=Q$L#%@hb}uE6f8$CnaObCY@qHnoU^~2t)%_%;`APWe7?8bc4yjo zM`Ufxxn*Xy%Brf%W-(i;UAi9GY?uLWm(%BIf$AXa4ysSFT84y2Ow+cag%2UwLsp{^ z;w}K#ixwCNF^80*dsyFnYF#Pnqm(eR!$^QXuEsNF#iQHT2ng+1)G zPx_&spH{232N@}=Xv2ex<NG@Yw@Dm`hOx7oo}h2vJu3{F zM-u5+v9 z%V3p(hI*|EG@1U|!}@W#|B~g`vQcHkKJun7T8z6E`p$3cLQnO|HLXC=t&7V13j?~= z)n{+|`5@>3zOPO#){$YrVYh{1h!Klay|W}{W@nUWJuKmUe`&(AcC){S^EZ4CRJe!U7hO%q|9N)s>0EwAmQAbi=aMXjGH+_P9S$K{Pqg| zF0L0z98ti6anXQf8LrUGAl~zOh%p%R5=JRatbm#^sRr$_uJQ&82X7PfzwOo^y#J5z zQ`tk!f4Gi_1)|uXocOvT*(Wb0-2B?5bwo}NUbtVL+0d1^ag(s!$9VP2b>pz?=Tr_tyh2l#(CnadEyV}UZQe0|;Y zkJm<)@2u;oy(7KFl5PHmr$%%=hGbvlha-SRzj*ZI>(4(Ugg8H2W`LG8tA9VF+;r}! z5VLVPpR|wopP>Q&Q*Ec#U*73pv4hojsT}?A+q&wWG8{X7jUj*+b=>B>`dpt9=qYXk z>>ss%X_zas!>Z6l_CSvn{*_fR=E-SKJNfY}VF|G@Rx#gQ* zVnn^(<%4W&2Agd*?`Ub9|7AXoZllm;@@(El`GSiW6J<9osF)^<0Ju>N&@9zE0Tv?( z4>AV!vPtgKc$s_4@N2a&OQRg3yG@H_vY|eGFl1)=xRo_J+IhymL78>~x7p0}nW_Us zP8^f1Ff;LpvT~O6(Y#G*1UIpGW*X9O#|94c`1rOIH|2|D%mf;S!od!0w7lL9ePF$S zihjK7_a8(sxt%Rm4gB4X(1yEH5D=^M8FR#De7I42zzg{ozN3xfE zoyq$VkA#IaboMI+CRYmQ%kFLQHBd|vC)gTTFVnt;AjI1+8gt;cuo{K9Jzi*6X6IpA zW{eIZ(@R^-D4h!!z6bFyIcbMZDK^(xexqwuSBFoIa(jq$FnK<=%>NUyWT3i%jM2xX zsI7Sc&N6?(>jG~~OVZ6+!J#P}1zo|f zi@FkMX6;H5t6-oN`*&&fWSX5lzwVNY9N3Bb4ZsiSGL zvxHMw&tBUOCJJkR4vurIfnfyGDA5m9n+BuGRjMYXOGQosoBPm%Oo_%R2i|hg+f@B~ zKP&i%d}3D(jz;A($5Xd?Igjr$a&S@ctT6is1oINv(59%(XVs20Ad)!Hs%|62Jm7&G(1YsO%j2=;)C~kc z7mt3w**@GHUHI%>V7M5lxY?M=+;K{H z9D(y>s0mUrT?O)a_3bC^@-AA!y;0CL9UaR&%qF?!t+gvMw*v{83nuY$6`iQ#iaH)} z1oy!UuwLLWMyZ55Q*6A6+cW#0L90PQW4DjfyH2K?qxUO5iJiX-V#%j4xCo{R`Wy<= z^DKu5T;6I17G2z>6>x*3yxs!PmS_D3b%1@(2B;r%VEdVS3<>tu-BFGwA+ZHj%|aNC zRL}p?G{0IO!p_3p%)EPQLJ5)3$@}?sq9X^w zkIE?-M!GG%JkawDX zUM7Xx+4b@8sG=9GfMriZ`ye|5h5&z-!2309cZH=iXpT< z(Jmb+BC%iNaH`_}HFdK#lpe*SbiXpL0=l5weJo^Sas5mR)uU505%@q1GH_@?^Iul^ zO6PW@-mo>V2Bw^xenBZWf&Ae30SAwlyWsU=F4{ntvMDcGg2c=}+!LfVGttd%>4|)> zhJf)%I??7rkE>MS(Xhb2nmjR%NK%#8C*XxtTu2Np-{<}B5nMsm{B2(AMOw^0)T^>tQkBl(sh>l3 zukFUDv}qWB1ZW%IdG<}&_=W^e*02j{|oTB*vuV~Ex>J!dSHk_RaH?% zRa8V@lKJRtKYWb;{Ou^4{-gJQTg!)mXU}YS_;`+5n){FWJfB1ToF0q!w>e|{o5RU( zeWp!m)(V1U648ZeYD9d#Zf5>yc z1r04j6u4mlN%iI&>>;5Z>zTY^Z2&|-yT35QmL6wE3KFk?%&UEg4iRW)Kf{xpmJ-$m zQ!M#J+k`K5CW#s7S1c zM9Pq)x$;UnvN1SJRCR;LeP<J7o(o=LNsGx3(tZW=oMj&Q^ZTOOC&nDiP4Z?GF3 zXq*Y4F?8Gn;vjY95DTae6a+BOND7HIlBo8p z1@L`Lm1|S9(a^Ouv-P$!T%}{QvvaEmTLE3M|8C;EpQ6>yi5!YSsIu#a>^a6^x&qqC z%!1Rc6512PE8iyTObLX9Mx91-Bq4<;r88oGw-ibKFS!?y$Ugbm|D~CN zPJ6{e=r6y5YSLRfUh=ZbJBmmy#%H)NUctP#hJWv$!t_x8f~c#n3VD#U;USa;1!)y| zK8=Y~M)2uaA6(y$QiL#h+OuM~dOqxeKgQBmbW#fBE)z z4HkG7i%pA0W#hqu0!}&-j-F`yDIYhr?E2E{Huie`>ow?7;}lARRUy&kopz*?-vYvi z**6E&49qF==ih0uE&7eLi%e7Im+f_^ki3=?(9+3z^>eoSgWtO79@#XRXvELm*6WG* zGwhWInv&z+$QAwh0s4{#_qn~~k`gx-4|m|yF$Wyt2!xSQ85AT$(G{o<;c?W5l?6^n zBw#`a`(NdM9scV+573-V&;R$)l<5)ou^(+aWk%anr%^hYZ^5eB&pF{%J)MYr)H}X` zW?DTGd++e2K0Ya!w zs2coEESye2EpTZzASuO#*DxmRq#VaFjWtV2$q-Ca6)n8v6W3;_7 zK=@EY^cY;UD1GEXHbncGAf`|d`d9vgN@WQwLHhgeYzq=lt(A}uPVT||e-0=?Mvtw-wN(P5>!ka4vS1xf8cP#by%7mqY561-c~y8^s|C>-EMnkZgtj{(liN@8!B5`w&-t4Y zs5-$Fv{65$5l`_zTPAn=DL(|q%>2(plmRZS{pCn5>cfS3dKsh#Kk;Bl_00$|i}pI+ zH?q^cF+Tn(TfR^Zf++iFk}4nj;yTDS|BQO$ z*BlHUSRHe&CuM9AdhhHeg7#E4&uIW%U`KouOeb!u_oATg0z(Pj!gObg#dB6{^Z|YI z*MGsm^N~~)7yh?4vEPz8B@$93luM4luJCPaZ}|@ggQnQpcoh>WaTJq63V=@U(TFAX zOq)xMwyrq+9Yi0H($d3OsimctM^84HQph-SdX;2pw8&&fIe-@70S2s1MneE$UheVN z?$ZA4=Aa63%Iyu9qrurXVzH{}kZeuq>f^y!S%A*DhKp>((S?!&CzIVtj2#w1n#g)! z*619?RWNcF>}v8$lL!;_Z`Zr!Ub4+Y>gj$UeP2``dwA}*!UfG}13plLoY1*$Z{D;+ zNgf++wiIELCefGc5Z45@Lh*Rt=Q1x@E!`{fl0a(ZKK$*p5;|3b1|pRe>>`KtMIR@l(ZEbW4n$&x zeQ+H5*n+G3q4QIuO$RwemPUTs`Ddwczb=4w!A2g-;g$gnoaf~K5B4xsIFZnV;_B#E zh#k}%r5tk07Qx%HDE^n{{0_I9KRD33pyA2{cupyEOjKv9HIG?sf?i7tkqgYUVvEmbGdpXojhvrnjcJAMa^ z(u|0BAkhR=7D~WSzd!pqhx+3`zy3S#jl!YvStsGY86&vNy~LUdA^+O$&UwR(#}XvI zP`q9)5+?>dq*4em+uR#r5pTp<%xf7r-iDUnwfS?>ceW2oAvf!7CfalHawOB$45prl zvEtM)nD~fTD9Co;iQjXd2#!a;r=^ zet9*v0AU3UaI^xV?26tCBBohuuqI46NT8wb5Bje8GXJJ#Xh=USI*h}WI%usNGsMaJ zT|VEu`sVXF0Fhnz)^pVwAGc?x{?%}z$@V-CUx7mXI#l|~z(m6;2m+`k8AAG)>B;W4 z>iqhtqEHgSM8Zk#Z?}h2W3iqq*Iqh$3z-YE3Bgw{3}DqcUK0>C#TzIdb*Lqx-SYG_ zt`%6wmC${YMd$DzRGxIq=?Jg!r*B=>YU1`8i)y$LCWIA7YEeKxn-pD;5bQ-$^? z!+p2|gG~~GBSAmYpV(X-7AqY!Z8lmt- zj+|jA`gb_pThpi-~I%K(hYeL_6^;gOQ*I&d1B4B#~rI<7SnG+aTogh2cc z@#%D^V>-@sQd%&8jfGBNr59Waet6(GUuhFSWXqw9esD9$!3?&Chi7HpeG}jsKXO6t ziF|~+;V1yP`GN1tKjaDT{pap(xVKm@aEt$J??>;8lpEj6hpVGtUWVilh8A?O^?2BijazFF{x>5 z47S;4^j-i>g}=%k`?`J*bQtm=6pI1U9wUsQXXAoHFM=iAE??q@hvxAbL4g`#Xt=v< z@qEvg%Eyb$k5JGI)#N&_d0FjPsO?`O^YJBMXu%iy#$n?D)+C;Q1iB_XP8)g@4t%7=Q; zx%r%xZ{t*bucK5F=Oc5H9vLTx4fS=D*lNP-xbnH0w3R?{ZbFeh=y!apqyY|@fXYl zX}5rz%`imZb1VTRDhFa>e#&@1ET_iR)E3FdTtR;UJAgXT*k^%a!#iD;{wryYgnVt+ z8JNc*Nj2ymTN2L@&d*dWFx-Zf5<$(<7q^ZXRB}9UMb(+pnsl7TOR1ew{69MABXF|VNc zrvHI1GHg4ezV!V@`qk02;@SnwZ6??q{?jijyK?p1Ypu`hcUJi=xWY0+-;;pp6M_C$ z7lGjCHI9AMjj|(jU{ZiwwIpk`&Gao62aGjLH9( z1CtHS(_+*r^U-l58afavW;IyP<~r4N`PgVVY{j3_<1q!cEiUsF!qT&@bKd61bWHGE z)c(^_2P`4#G4Qh%m~3V{AI4hTZf>#}A9L0FAF=KDPikQC+T=b&J;4s3I>NzFix!u?<;F}T z#)Dy&jwAtqh;eUh44v1q`ahBPq6M){n>No|RBF3sG1JBYEA_{n1F5ggpd+k$o4 zD`PCb2J0Go*M86)K-SPYf426t&Uoo#IJp^NpQ15{Li?6;|A(o7^M~dA*P&h_#isondUep5;13q z_03@cd50-}4eleOmCwH5kuVucZ*UB)Uq z&?2J4Mwm$;0U!;M5`>s)HpC+KZ1b)&cUv2M+!JK+V>HbC^PjJ(Zn%Fx_YQxIbDV+F zfz%M58UUe)x19*+5=N_5z9m7&Mjlp9Po&_;&Jkuo7m3;fG|XVA7$?u7OqF7N)AhYW zkcI*!?s6O|gd!w@BqA&rB4W8@mV1NWrO#I(&>96UTwaCTG1MmgXn*=28;lMUEyaK~ ziiVY>p;Ur25|tJr5%gT3d`SDwt@8uf_3F1ox@GMg9an6}RI5P5q74K*P=z#?Wd+efq#tng_-M(DYACp!LsWRU}NAGKHq7!JmX#X#V^dBNIos z8X$W=rUZj9MIn2HKX}qzcQ{4y4p(R!Sum=L-fz7#o-$FjL-t!Sh}Q-g4FZ;jYAoc?S{PO%fPfrR z>T}SA0#-O~68Fkmod((*C<+y5sK!~cGa(0;zQDkznMB^Q8y&f;an7lERZL3cl~G;x zxw|(j6)o3Vs8}dkE(4-r4MLej7@~#J+nm2y^?ftH+*`?oU!Ec-l|6&AX!E#7^zsyU z`23faKSVFde}>^ZkRgHZLJMGAy46<(R>1yl4g>9sW6|UfYn&EBJu8OsOE*~J~s zUUt)XNA!AaY&-n!rn4NDS1zC-$_ge?d{sa=Y8Yg0ZA)4z>Dm|w1m5w8f#ak)(j|0z zXiR`ck2yNXd|AyFBfalo(9}V=xQydmJCjTH_6@whIVL37qldl4A|1MKIweAo?n7ZA zSn?+P?jBs@PWPupaba+*JRa(L{R;)E=R7AbRNdUk6Tc8nq}1akJaIuSHa7S6;+t)h zEAZ3i`m8U&L4yMIe4X;M1KyK3qwRKp! z&p=j@8dXDQMXD1<_8=4j0}Q1GMPkaF!FiRHS?_?tL@8y&kx*D`BRoAYer`^CC40Vy zAspr_@Hk%knwb1VG)SneR1QT!sx`w5$RXC@@2wy{#8krG7;Jc4nZ(QSAi@<@Sfd}| zeT^Xm`jaNHfix)LC11q!+Si>OR9}v9p}hVh8MSf#Cm=^@jMu#usgAE*K*_jl3a=@L z6S}D{q7MmB#0>D&6Eua26nx1F6P2d^TGxgN`4!evna9O!XiLwP zlH+6IcqqbWq?+)=&q5$=9n8Zsh0NAG*`)A96U(R_rY2-VjRymH2LDo&WGdyycH4OP zvCm%z7a5)#4JrZ|wpZ_Fw-pAv!WM$G4w4c7Tjk>&_CGTQ6o6wJO%EoeT}0UrPvmxd zx12pa942H9M0=WkS7hB3%^>tm#qN&YoD>~jzrr1deAI)dN;Wyp3H6zZ{KD(>n22aX zzEs8U*rHhZLTFBLFilSaXP$U6m_Xhu&hLhpdIroB=}qU3s_a#`36YrVP~}qE0pSUe z0CW^mrm&vZU|S^Kt7094m2o~_-cT0uHi6mV5xSgZ z8v-9IoDR@)an}g~>pKlBC?resV~e73apN&A1l?kWcgzXs6XZbo8%7zl6vjpJ94Wl>nYU!|fnL=#Ndnumhru6(EpRL;+Qa4@;O&+My1~0kheO zzngXnfy?LgmMWs4{Ggn}^2wM#G^jHh zXUsFkW4urXh>Av94ERw|Ac+hE|E~6xQ~o6$Lk&mZ{y{K#=3FhkkuQ)Yj{jz;uCw5Ymci! zIQyH#>A9EE0>_`YzDTSc-$d!TJ~{_OJ4i++RrO+?CNYGi!bR|JggHlq{p^?u9T%1;+!d9%ORULR+B@BRG%+VV(mbEY&qM>E-FlN(~n z2P$^8{FQWK$;u8}%GH`_|Lo1=EB_Pz-{IY)+ZJ+KV+-vdfvb@$^gf;1x(YyiAyfsybe zNMgq$kcUS=byJYnV)gi*cZE3zYov;ERCe;@AL0z+uZSb#tEKE*#j<}n{o%_D3wRjN z;iU|Bzq349fG4ft$?F5hH5FK|HpNCNqubsaeAp|lsO6wH7eIY8KJK8+m_(5pQV`m0 ze5Aq#l5AsIZZAOvAPWY*wLMXt)&~pb`*BqY4>BS#BG^~gIeVAV*ub#s?Cj{P`dH@v zRJ}0Ge>q6xYSw0FVk}v4>H{HwL@_dW@4*!zBvFOW$jTW;N|eqGawyA!ss=tLVh4?7 zcHgv5E27s}_19|OIaHr6T;`$U8yR(u?Dx{)?)JRHf)Z_ED1<|i;%1Ag-g55U{r{>O z`MKE2lciLgd2^2ad7soDRJGMDp0w}dNw&~z|+-domm(YtWKcpS(cOPNQYftq}6H3xh3bVKJxUWqTC)>FWMflHwtUjI!1D}ZXb^u zO#2`8nk^GXlnmD`yJ~yZf0!=re|LA+` z{Dy3fG~rl=i~QDE8X6y1aP6RX(~)AB2YCk=U?IzDOl*&gKlz^`{6VtDHWCy(b-{fL zCz2|5+}>=v^!i@gwX5N`XK~MHFJol$O-Zy~%}L8%Th`aOH2AF8ekZW_r1w952>Df%=&fcQe+LVV;JnP`2X4wC66)wA=;UEjf1_4|E*`OF(o2MJxhS12j$UjUm<$d zv@!^VMnN(hsue|B<`(zou;w<&_Ox!Zin^Jll>pQ%A>V$Zo0=Q{4IhhRNOO>3hq1fyx|L!B+jw*e(q`gRjNhV{w8Xrt z!UG`4c)vBIR-&EgoQD-MeXL7BI9Zzn1Moivkc1x69*)6F9O=ABF!>aeq4&4@!TS?h z1_+0oAi;`@B7l@d6Wxgr+T2=D?6egE5F#v3BtnaY1%a{$QKas}mM~a^i6SydA|G`9 z;p3B~;6Z~$7$%fa4a%HgpoIu!;RU#4K|CNa;FTfnfK`AJfFJ;pOXdxOQP0txRqWFL zV)v&Gs&F`aqb?Uba&5dv3|>$d!y@~s{{fVp0hg4gD^?@Q>5|qP$}+V`>=@1G2uiMQi5JFV-Py zkZBEw36BX1N8u4=c%=J>MnQ;Y?wMSyQb!XiqJtL|b|evJmr~p1fdxxW@Pcuebge;C|Htm^*4Xqw1B@{ezJ{FF1( zVTmyIOp_SS4xKJOc^ntyuMz;V(MQa!O^It`K?b=&>2Q4*6g=IK z+?;ms?Nt*N->EsCM3&H3nm|N+K$h+;jd~MV*R~WD!a9J1%818s5-B|X745~g`&&IU zWDo0)iA#^kYI6`Ff>IKqjZqlYOD)6MilU5SuoYG*@flT-RH;!>ixG++2lQXx3=RAL zrQ|gTeqT^_4`D{ZY6ytSXrd(_^1j6XRwDdg^LW=>WV{1oV{MJ3w@#y*f_#EfSY!Ib zHPlnqgnEV(Xlygt(+^L-zr_37uVh?9jZw$uH_FA!<|WFK0^$P8TmPmAqOB%xkHrk| zXL~X_au0yH<&~?SSZc=Wzwmk43I<$j|dG^7{u2;g`KCh zaNuim1pJKTOl)Z%?U`;W-o&t8y5B&-;T zw#bY*-Cy>ZxhRXj;w~Z&@9_vo#;`G9PH+ zsSGZZeO8IMlnJLM8Qs~mwJ$7ML=WCbY<62AQ${SMg)t9J|jkyv` z{T=AvI_&z;*Hox|W_4ssLIe#FgkaxaG2m9hip6+XhY|Z(A`(BL>*oSTM+MZ`qy5Tu zUHoqVS@%OpKJtVcGXA;*r4$5V+E4e1*vWDa;QC>`-Mi<$v&rV${bDWNKjAOPv+~}a za|B+T7*ajOhU@5imz=Yoh3S*1g~J$^txtagJNM=@0s3~|yZuDbT8fQ;!!@kBrYav# zpP=`s_39cZv||oHvoBwGY$&WcPVQj~@;?4HyTWH!V!Cu9Oq4tsbbxIOiu1%7k2wAk zCswAL;Ci`>m%vd3NBWegBNgqk#Svn!;30mklwz+}`E>5lS?5BD^;}`_{ss8Sr{li~ z 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

eZrnGU&lpir-uz5*%bZpVH0#xD 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 Date: Thu, 2 Feb 2017 10:40:09 -0700 Subject: [PATCH 04/34] Tried changing 'arduino:avrdude' to 'avrdude' for bootloader --- sparkfun/tiny/boards.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sparkfun/tiny/boards.txt b/sparkfun/tiny/boards.txt index 0ffd7028..4bf7bbd9 100644 --- a/sparkfun/tiny/boards.txt +++ b/sparkfun/tiny/boards.txt @@ -22,7 +22,7 @@ Roshamglo.build.usb_product="SparkFun Roshamglo" Roshamglo.build.vid=0x1B4F Roshamglo.build.pid=0x0014 -Roshamglo.bootloader.tool=arduino:avrdude +Roshamglo.bootloader.tool=avrdude Roshamglo.bootloader.low_fuses=0xE2 Roshamglo.bootloader.high_fuses=0xDD Roshamglo.bootloader.extended_fuses=0xFE From 4a201ebb1fbd22cf7dab72ee65f15a8fb7bc01ca Mon Sep 17 00:00:00 2001 From: ShawnHymel Date: Thu, 2 Feb 2017 11:23:48 -0700 Subject: [PATCH 05/34] Updated boards.txt to correct core and bootloader tool --- sparkfun/tiny/boards.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sparkfun/tiny/boards.txt b/sparkfun/tiny/boards.txt index 4bf7bbd9..9f4db5eb 100644 --- a/sparkfun/tiny/boards.txt +++ b/sparkfun/tiny/boards.txt @@ -15,7 +15,7 @@ Roshamglo.upload.maximum_size=6144 Roshamglo.build.mcu=attiny84 Roshamglo.build.f_cpu=8000000L Roshamglo.build.board=ROSHAMGLO -Roshamglo.build.core=arduino:arduino +Roshamglo.build.core=arduino Roshamglo.build.variant=tiny14 Roshamglo.build.usb_manufacturer="SparkFun Electronics" Roshamglo.build.usb_product="SparkFun Roshamglo" @@ -26,4 +26,5 @@ Roshamglo.bootloader.tool=avrdude Roshamglo.bootloader.low_fuses=0xE2 Roshamglo.bootloader.high_fuses=0xDD Roshamglo.bootloader.extended_fuses=0xFE -Roshamglo.bootloader.file=attiny/releases/t84_roshamglo.hex \ No newline at end of file +Roshamglo.bootloader.path=attiny/releases +Roshamglo.bootloader.file=t84_roshamglo.hex \ No newline at end of file From 91dbd1fe1f19cb32b0cfb42396165fa43e8a4b79 Mon Sep 17 00:00:00 2001 From: ShawnHymel Date: Mon, 6 Feb 2017 09:51:57 -0700 Subject: [PATCH 06/34] Added Arduino core files to Roshamglo. Windows uploading works. Burning bootloader does not. --- IDE_Board_Manager/package_sparkfun_index.json | 8 +- IDE_Board_Manager/sparkfun-tiny-0.1.1.tar.bz2 | Bin 0 -> 425335 bytes sparkfun/tiny/boards.txt | 18 +- sparkfun/tiny/cores/arduino/Arduino.h | 259 ++++++ sparkfun/tiny/cores/arduino/CDC.cpp | 294 ++++++ sparkfun/tiny/cores/arduino/Client.h | 45 + .../tiny/cores/arduino/HardwareSerial.cpp | 250 +++++ sparkfun/tiny/cores/arduino/HardwareSerial.h | 161 ++++ .../tiny/cores/arduino/HardwareSerial0.cpp | 79 ++ .../tiny/cores/arduino/HardwareSerial1.cpp | 69 ++ .../tiny/cores/arduino/HardwareSerial2.cpp | 57 ++ .../tiny/cores/arduino/HardwareSerial3.cpp | 57 ++ .../cores/arduino/HardwareSerial_private.h | 123 +++ sparkfun/tiny/cores/arduino/IPAddress.cpp | 114 +++ sparkfun/tiny/cores/arduino/IPAddress.h | 78 ++ sparkfun/tiny/cores/arduino/PluggableUSB.cpp | 115 +++ sparkfun/tiny/cores/arduino/PluggableUSB.h | 74 ++ sparkfun/tiny/cores/arduino/Print.cpp | 266 ++++++ sparkfun/tiny/cores/arduino/Print.h | 84 ++ sparkfun/tiny/cores/arduino/Printable.h | 40 + sparkfun/tiny/cores/arduino/Server.h | 30 + sparkfun/tiny/cores/arduino/Stream.cpp | 319 +++++++ sparkfun/tiny/cores/arduino/Stream.h | 130 +++ sparkfun/tiny/cores/arduino/Tone.cpp | 619 +++++++++++++ sparkfun/tiny/cores/arduino/USBAPI.h | 207 +++++ sparkfun/tiny/cores/arduino/USBCore.cpp | 861 ++++++++++++++++++ sparkfun/tiny/cores/arduino/USBCore.h | 302 ++++++ sparkfun/tiny/cores/arduino/USBDesc.h | 46 + sparkfun/tiny/cores/arduino/Udp.h | 88 ++ sparkfun/tiny/cores/arduino/WCharacter.h | 168 ++++ sparkfun/tiny/cores/arduino/WInterrupts.c | 324 +++++++ sparkfun/tiny/cores/arduino/WMath.cpp | 58 ++ sparkfun/tiny/cores/arduino/WString.cpp | 750 +++++++++++++++ sparkfun/tiny/cores/arduino/WString.h | 229 +++++ sparkfun/tiny/cores/arduino/abi.cpp | 35 + sparkfun/tiny/cores/arduino/binary.h | 534 +++++++++++ sparkfun/tiny/cores/arduino/hooks.c | 31 + sparkfun/tiny/cores/arduino/main.cpp | 52 ++ sparkfun/tiny/cores/arduino/new.cpp | 36 + sparkfun/tiny/cores/arduino/new.h | 30 + sparkfun/tiny/cores/arduino/wiring.c | 392 ++++++++ sparkfun/tiny/cores/arduino/wiring_analog.c | 294 ++++++ sparkfun/tiny/cores/arduino/wiring_digital.c | 179 ++++ sparkfun/tiny/cores/arduino/wiring_private.h | 72 ++ sparkfun/tiny/cores/arduino/wiring_pulse.S | 178 ++++ sparkfun/tiny/cores/arduino/wiring_pulse.c | 93 ++ sparkfun/tiny/cores/arduino/wiring_shift.c | 53 ++ sparkfun/tiny/driver/ia64/libusb0.dll | Bin 157792 -> 155232 bytes sparkfun/tiny/driver/ia64/libusb0.sys | Bin 110176 -> 109152 bytes sparkfun/tiny/driver/x86/libusb0_x86.dll | Bin 67680 -> 66656 bytes sparkfun/tiny/platform.txt | 61 +- 51 files changed, 8334 insertions(+), 28 deletions(-) create mode 100644 IDE_Board_Manager/sparkfun-tiny-0.1.1.tar.bz2 create mode 100644 sparkfun/tiny/cores/arduino/Arduino.h create mode 100644 sparkfun/tiny/cores/arduino/CDC.cpp create mode 100644 sparkfun/tiny/cores/arduino/Client.h create mode 100644 sparkfun/tiny/cores/arduino/HardwareSerial.cpp create mode 100644 sparkfun/tiny/cores/arduino/HardwareSerial.h create mode 100644 sparkfun/tiny/cores/arduino/HardwareSerial0.cpp create mode 100644 sparkfun/tiny/cores/arduino/HardwareSerial1.cpp create mode 100644 sparkfun/tiny/cores/arduino/HardwareSerial2.cpp create mode 100644 sparkfun/tiny/cores/arduino/HardwareSerial3.cpp create mode 100644 sparkfun/tiny/cores/arduino/HardwareSerial_private.h create mode 100644 sparkfun/tiny/cores/arduino/IPAddress.cpp create mode 100644 sparkfun/tiny/cores/arduino/IPAddress.h create mode 100644 sparkfun/tiny/cores/arduino/PluggableUSB.cpp create mode 100644 sparkfun/tiny/cores/arduino/PluggableUSB.h create mode 100644 sparkfun/tiny/cores/arduino/Print.cpp create mode 100644 sparkfun/tiny/cores/arduino/Print.h create mode 100644 sparkfun/tiny/cores/arduino/Printable.h create mode 100644 sparkfun/tiny/cores/arduino/Server.h create mode 100644 sparkfun/tiny/cores/arduino/Stream.cpp create mode 100644 sparkfun/tiny/cores/arduino/Stream.h create mode 100644 sparkfun/tiny/cores/arduino/Tone.cpp create mode 100644 sparkfun/tiny/cores/arduino/USBAPI.h create mode 100644 sparkfun/tiny/cores/arduino/USBCore.cpp create mode 100644 sparkfun/tiny/cores/arduino/USBCore.h create mode 100644 sparkfun/tiny/cores/arduino/USBDesc.h create mode 100644 sparkfun/tiny/cores/arduino/Udp.h create mode 100644 sparkfun/tiny/cores/arduino/WCharacter.h create mode 100644 sparkfun/tiny/cores/arduino/WInterrupts.c create mode 100644 sparkfun/tiny/cores/arduino/WMath.cpp create mode 100644 sparkfun/tiny/cores/arduino/WString.cpp create mode 100644 sparkfun/tiny/cores/arduino/WString.h create mode 100644 sparkfun/tiny/cores/arduino/abi.cpp create mode 100644 sparkfun/tiny/cores/arduino/binary.h create mode 100644 sparkfun/tiny/cores/arduino/hooks.c create mode 100644 sparkfun/tiny/cores/arduino/main.cpp create mode 100644 sparkfun/tiny/cores/arduino/new.cpp create mode 100644 sparkfun/tiny/cores/arduino/new.h create mode 100644 sparkfun/tiny/cores/arduino/wiring.c create mode 100644 sparkfun/tiny/cores/arduino/wiring_analog.c create mode 100644 sparkfun/tiny/cores/arduino/wiring_digital.c create mode 100644 sparkfun/tiny/cores/arduino/wiring_private.h create mode 100644 sparkfun/tiny/cores/arduino/wiring_pulse.S create mode 100644 sparkfun/tiny/cores/arduino/wiring_pulse.c create mode 100644 sparkfun/tiny/cores/arduino/wiring_shift.c diff --git a/IDE_Board_Manager/package_sparkfun_index.json b/IDE_Board_Manager/package_sparkfun_index.json index c236a4f6..e861fa1f 100644 --- a/IDE_Board_Manager/package_sparkfun_index.json +++ b/IDE_Board_Manager/package_sparkfun_index.json @@ -485,12 +485,12 @@ { "name":"SparkFun ATtiny Boards", "architecture":"tiny", - "version":"0.1.0", + "version":"0.1.1", "category":"Contributed", "url":"https://github.com/sparkfun/Arduino_Boards/raw/tiny/IDE_Board_Manager/sparkfun-tiny-0.1.0.tar.bz2", - "archiveFileName":"sparkfunboards-tiny-0.1.0.tar.bz2", - "checksum":"SHA-256:1C671C33E6B04E20696E13B43F94C385E903AA267D2F9EFCBC894DC38D2200CC", - "size":"369238", + "archiveFileName":"sparkfun-tiny-0.1.1.tar.bz2", + "checksum":"SHA-256:32FA1F16545A745BD36B6882DE0790C14C82B89411FB9382ABBED0BD452468C8", + "size":"425335", "help":{ "online":"https://forums.sparkfun.com" }, diff --git a/IDE_Board_Manager/sparkfun-tiny-0.1.1.tar.bz2 b/IDE_Board_Manager/sparkfun-tiny-0.1.1.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..d9df397dc6426c3869fae7b21039853b23fcdb4c GIT binary patch literal 425335 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 z

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

  • 7Ldx9Jzizf@0b+=Y|TVnS~BJ6_{pimdmLE zGAr>HG2c4Dvf7;U21`eR>cp{vmhws?_-P*oY~OqtPm!V{%T=IGvUY(uT?a&X(vI7u z2>-2-qPhIz+_4OIVBOsu%4=w|=y8HdtIZ8i|9P4IHn>jFy%z+CZI_ECLv2P=CZ^C) zwTPuCn2QdEMyg2bd6RjvgW+c+N1REonU9`o`$sWG`8Az(x1{|poVB2{_#R4!Oyqw` zoreMO*)a8%5sZQwFpRcn!zg6f^PjDZGY#CslPt{5LsV8=%uGQmSj967MWTX&Fb#zw z7-SljBQ1_o=_Q`({ZpO8`8g&4@H+6*9XGbGw%6V_5mSqj_K`zxz2~xZVh_3blm`q1 z`-qg;kT!IhM7*1-g0La3jm4RxbE=(U#=I^06mtLvzE3-USS0&j0JV_vLJ5)HO0Ym5 zSWsJYLQ-rKAA{eex6f@eX6)JqEm64E{e!T=}pojtheApfVg4Fpb{)iv#s!`}) zhUZ--X&!Bs)*0(m(1x~VgKV+qqgOw$oVi$K!J3G=@<(R^!4v24&k z(R2Wb?`aa*L?ZxERaI40RaI3P z>mJ!{z@2}71fMRD5+NHPPs}yivz$RoRxuQ5SGYBq!u7C`>UB&DhQE@1%qj01tNa8oeS^?E z2Ef@sPYc$LdUqo;Y z!C?^++Ob9qDrRnSSJ+V^$>-?g-wMl3*3sS4DPqhllygGj<&@^{a?$r$vdfPuKXAYAlGtr1%4gs0 z?csNs>pTM978TJe?f)+y2V2Ss$570&bfrQOD2#+<p+v zHqlzneK)hkp8gt48xGq;l2i!B0z`@tikz4h31&NzL5b#Nq1cyQ`-^X~($ueRl!sTaONkhfB>-Z)R}})ErbWu+D( zH7ooRF$@5S|6zt4=DnPnK@>(PtWqdq2b(IY<(-}1vAy|zB3@JEUR|Fn?Q#+UU1RON zUsTF>e=~E_2E&(i(*J>0!-2y4Y{`-kjND6w^?Tz!*7ZCOz9f-)L!K@kg8a+))Ii#~ zeoHc#JO$UY4=x-5j)oCrSfSyp_4HMQhfXp~U<&~>*nPjo&blE)V8pZU{`aUFfrb_> z?jYSDk^~gALbK?y1&9wd{#NnGB=arb2S3#PZ|i$C-c;~8U?MPrkVRN1#6dw3LMQ^k zimJ&K6i2-!0bv4u>gMsBb|7P8opSbHhy zcFoh&O8L+{9sqklgul_ zeQo>Cxc#;hXc0gKiV~2MUZ#_JdvV6lBg*v z1lOhcHxa=ANGus5k}*+4Nu=%R8RPs&#K61TE!SS+ypJZt79HT=3W7OXq|{(N5} zJ5Oi9vHVJ2nntlkj=pZR!dCS1!~G~-seTjlzBx$mu9|4p#=N=qT$S>F@JIJc8eZgd zw0N(C?x`U@@Zc?M0IzDX^UFdySZ|vc}^iSVN_Wdc@JkI;s?yS_3a~z2u%nzZzBK+^Kf* z=Q#?RoKgf#y9%M<%P~vb1t`9LNZF}>2qafRL+VfrPA8v5V>ueGzOl|~j`i}zIo@xL z%?ZyBjKS{ZL*sGAD|u|)F@`X0Fpr61rc-FSL0(yR1nUIEP9UmrQ7)PFPQPhbZH#$n zad8B0oWxW~6E{Djy1`nM-8Rl1@I^@<-hIFKc{JNEOesiBnet>1oYPESHzYt}a@_B2 zBmoq0d+fc2I&@H8P{N2QIa`ijdRfx}+vX=01wg1gFg2w(UPuv7nJ$v8N^k;f!I@I9 zfo5T{AS^?~&N=10!iHz)GX`TOh-YSqlL}I;Ac!Rq2wdiOqY{7#FPk@1K>9HRg6-jA zvTSU6d|x(q#c1x^DqeXYbIp1!?cd=B53lTIxU;P#V~ncOv8DAba%$4l?7QC0m|!fx zIl6p-=(>N-C+_sGwvzzJzN09rVdyiKz?{`lQQH+W`@2$XK8bFzwQWz?kgB5IE8i%> z2rGL|D)`JG`(2f0L6DCA zKZ&g1l+ujO?&^%Hy=pq>k{yG|+jgj70AY~NUD?W0p?+XQDMwS93x)c4m82_~Khywy}62p3%0p|ovs-1_BQIFm{upp=dm;QwZK zK_y%p{j-7w7aT%E(OMLzwzG&JZdu~4qP`!g)Awdz0 zV`*zQ$qbpJxs)(8^>b)Kv#ggS0-_^9*7X~ufYli#>Odrb)y6pk!9QB*0P#T%*R^w?8wE7 z9J8>2-R94nE3UQK%;NaiAkBliyLde~4+OYQHO82aF%=p^ZrrZT8u#nz=AgVk*Q#v} zc-QDrP&f;2<@z}MY?_GpT14T#D}rODIv}2rOz+G?xqqf1wDSs7?AYR ziX1*s#vd@ZzL9lPp-hdC5Hzeh{^G6{H9n<+`BfQ8p;)^sQkrka`yLHLjyT4+M=`uo znPo~bRYZ)-u|BBp`9v_jh50rmW&p7cm!Rl%aCPWdw(VvUu-fyZD|Ch*fv{961W9pBkqo zHm?=1)fmQ?<5^K(!2U1Y+rg!@U%6Z{ZkZ$@0p3sHT-HMr_=&W{v`NMmWpm!@Vz0Bh z9D3B}sKE*-?N*2TX~UG|re^gi8KBZ3uW}GoRCO21$n5OZhX=8*&eYEP?r)wIhS99N zS$}5K^!59Xnb)TYZ2!>|#&O2cNU9?%t1mC1SAwUstfbkR9)px#ov15+JMlV3b303_ zqTMoLdsb^xF$2NGW{)i!#X6p^x7o*HhaT^nQ~nQcu*1a4toVX;dzFe+Kvh8SU)ta@ z!EoKfX>7iiQ*@(0RnkQdX8GEUKH71|=^Mx_F;aTYGa287ABa*bxHH_0_L)$^34lPCQH`rAq8#fPXLoR(fe*4h7nx;HJ~BXn2jKrZ zk-`5}{ue9zg#0$8{{r8OOS=S4U_`6jWx}}_Y-q`hepoyN)2UT53S7GxL_|W8Zg5|y z+Eb#10**X$I4La|NCiFCDXZ||Qs;DiS^)2CJt?Qasw%3g#Q`7E!g^@iE_eG?x!|a( zrr(2Y{>3h(eJuIG@&4b`eD>4*-i3Mu9vCh1+JRWb>6j-3Bq-NNAy^zzoa$u@!R=Te zh0##qtc4sw0ENf6&Ik!q`6P!6{tXg|a@;7(uXG@C+^8)|hfd^>=Ez0F@9v%E5(Q*W zs)33{+GOr;(Qs9o>hQB@P@Fjy8{5)}6AFt`Fc6fp+iHF{YvtO`eXq476q*PVazcPo z8YeiC*i< zFnQ#;nXDdO5d_p1Thx$D=n)k_?ejcSu;qGp!>vgP_jnXaQiZ=Tr(s zGt8(%uQIRGb3?0&!ix9Q-9oyUh=HP|kE}e-u(0o9m5HhyO_wjHh0Gh^(>sy}O!O2L z-1oDa0+s?kIv^zmZ{moHhYn_D+ij_$f!f0vD*)@+%gXZP&2Z9*H1pcCJ?$X+nhVN; z2Di8*5X31wvLzJKk{HPNQhBpxUN2Lf6K3g@&Uiye5i>q+5~^^52q5z9g1*+JEH%W! zBrv2bXoW(trqFl(H3^Ib-Xf3UtOljg{H@x5^i8s%Q{H;nw>Pj|hkUKj@^g0hXS~E! z4FpaI+NUOD5fB6E3L){GfKolQZ$pv!Cl;F{vm4SH#)GUX-P*NMCR~?7Ha#0V#G}bt z7iDP1{TLRz9AHbf&n#(lMnFLsc{orQWqedm(Z9&ONSWzJHEC;uJht&Q8xai{p&sVo zJ!k>zRa$ug39GZ?QxMv!un|QPJ6ldg2gE1b;a4s|uxC)Y5+|ml!LS9{q=-fuVUy ze`3~yzq(F!8~qy1Hn!D_sUoF7-w;ZYApzd~)V+RSK>)D1X<@At=5++hX)kq>VuJXw zOxc420@Q3!)8oy)-!0~v6ON0r87zJ`iujnI?d>zIS=#+|0yzW`dW8`z;ays#7gSlB zy#uBnE7EUD&Ng$(3)*d3bGX6Wl#w=MWJ8*okpg2}ux-vc)XH8LprSl8&#+Nro(3IE z1s2=%Dj4i2TwrlSZx*{5K?K8TNRfgHnV<{D63`8hzrUmhR0M6sL%9zW5WP}?Q5gif z2Gm6|^C?23d{z+!x(akP7qSlgKubhw0PTp{Ds^GrkHRARSg&FT8R9P3<{}a)Xn=3< z(ZB6{UEPKGOhE<^E$=;z-wQ6XMIJ9oLOuG+iI@KfwrQ`~*0 zTikbkXWssCm_LC5IfwwE!gFReTH=6pAZ`76N9-(TIN@{)L1V?!Ud_9`>vnqI8dCWG z9*yzqInGdor#a4XcU5`TbE~arP^C&WWe8M-Ybw;NrAorFrDr(1tSXf$R%*r-t2AR; z&b6f|)vVd8C#$S#RIOR7I>l=mN!C?`YVf5iTGn%%UDg!}m8&&l3f5AUYf8$sqgJzc z#ubz*>pGPwQf*m66(L&6wUnhg)-k1LIJ>MWl`B?i#ucpRQ+ah5ywldJd(6h>rROG1 zZt<$#v0Ez{#`iTk*0rqXIJ>MW6;-WSs~A?Yl&e}+RjnGeoTBxds_QzGDN>DDLKPue z%C)5{N>!;DO0$IB)>TTAqcvj+)tWJ_XIj#fYSwJklhxKWDps?tD;h#jkn*gnSA^?Y z*0Y@A?y#s-ty!xWRc5U37ddh`1 zA^`})0aP)Q#je$+T6{H6Eg96?EU;`aT?&<2*BHg4kO+?7)Ayi(9VS> zIV!53pZ)>QkEKrq^?SNSQ%wTmKon*l=@r7bE(7*m9_ zDgfRmxrjYp@2`MdTj5Ar-sW@1C>rd_C1(BJ6@9CwAy;E!%dQXJthXsw5m0#K!R96G@6#GJN_cJ#>VvjxM96}rr&ys ztol(OdB(W1aoe*a6FONwlkncnZ!eb2d=xc%ABgCJMhCxP?K23U0kA|!z&uD5iaxC+ z5Q*Zo6d$@0K7gzSy)ztD1@CC?MT0_tN%B);g)1$iLdw%gnQcOpGbm%21ttWnn@9(@ z`Jdck)c&mZRw&~>pYd*HJ=fUx?1SxLqpL>9t4E~~_VMF_9PN(9`TQ7ly8ay|ZzS~( ztBKDY$XF#1v@nE)(94dg)0i$x5c?2g>Vw@-8ej*@o@(}-GqY0YfoVTd|P>05i5jIsWaqQKmLykDyN=)zhc$OyR*9AG$kW@@W;#aLwY?fCy zR(#N_-uuO;DIV_*O>$j+S7&w+;h?=ciDxJwP6MO$_7HX~`LPM`IBY6?KqOt0 ztSZUT;1B&JoBiFBs=wrX7}8zq-9rTMpo}n$)9HPDju$6@#I{7>2Mjy}1W+KtKsZYu zxsCCH5*YF4qbkf|fv2pD$P6x^&I)|f;?j=i9HctN4^PhJ;fJyNZnEEBS9*_5cb*sA zY)3y=NECIkXRW160*Cn`ltBV~3LdEkwd(NtYnQCG9(S+*%(LFpa=D>9I8WcM6c9n%n_()ZFU&G zcEA3H9mXA*teR&ve|mj4qn64+TU7RRJpJ8vHw5!|^04li4OvHN&i^BQOe z6pA)bC)TqW;YH9Ac$h%+qzaqUBkzh-ZA<+VhEt^ZCKJ=NgC~L8^4ucSU8wo-6}RNO+`}8;l5M!G?^Q8vKI{ zvV1AKAsvHcG9*93EoAu3@+r5Pyf9QY=Pl?1i>R52Br@@wFE$A;^&n5(1)Tl{IVoC4 zimHlRmy4+8BAPTL_U`!WceB(!64CJqcl%ovbFpZ{ z>mK!NP@|0k@M==(BIRL5h0>i665fsD4u{GA0prG7jz9BJ9)_G!jpQ~G=wWayw8{}7 zfQEF`H6MqEKf&`%ZDm!vH8-gUL7M0`>@=|H-j+42D(b|Qo)BgRgSDCq{kk+%ZKb3T zg`_I@R_Kx>$@Tj_FL?Sdk}b=UG&l3eb9AHW_wSmE3I7*sD;op^s>M~A1yCcJBxy6+ zBr`kmXcS(!2I!}lN*WOo$NTuw=(9v&syLkG4%ixok1{AjA!HovMsg+;12c_LGBBP1 zgz#jp?@+Tnrcr0%d@z9qu)Qt(p9q0&!j7`oiMSvI5i=y_f}-lgWNF_4{4PMqePQ7c zCUGAF6U9>*2VLgR530BOJq}r4z!8A%hp% z$YKb_0Y`o+YDH$~h=LghQ9i`a>A=JpZ^J(au!AG3%j(%;5s`e^N9rJEc=RtDEG&9k zz`+j~V~YLsXz?9@s2ycxEY;7)TU%#P8v=ZPdEHS}j>Ee(YevTqh2&n*4OlUk5kBD} z-eIs=acms+#L%g@;xUfL5f_{s7|z32X{HVJYRet((K@|ehrRrBm;wl7NUSr$oVlCP zL)Ec|2(|#j7@5>+wPj7qtqaH(m`rQ;yf@p68|q}Xy5G0}LwI0P7$WFIg7V{|zMZt? zfSW1285KFl)3I*@^b_*;d{4=~@ce4EgHBD5MaEJnPoi^3IpLKyv2eCM(|#ZwxH1H0 za4(MHR_QvUjBnXn4Kb8y7%>OTMK$E3$AN&^zcA#}OHhB$M)IhX_s1@1;rLMWFFLR~ zRycpK+UFe~!e{5tBPHk7!qwgs&HSs(AJ$O*>LwgK7->iW(TAs;BaDtXB;Arv9Bwm$ zW%~h>r_7$0?5|FFV!9_>;U`rt&$1H44|bGXv<&ybRt{2*l1u;Z_+S3wiZ?sxXvcj0 zq6YmKFmS=lh%{41w~|Up_9q4ul8dF%ybJH=5$hcneH8$aCshNByY7_4*3n zh`dmDNjGu&-IUF`+p8ZWBb3f{K<8fu=FMm6vE@OL z?m<};07c1EsEWkJ$-FVAKSHC=R<}mtq2Idg|9Zho5o{Ddg_(<(b4H?|#3X}s#rpOV zv2Q4pQ-`)U#%D24PO@mI&{;GYvOtGp;ST)b=(zbj9q&|3SMM{=u6KW{r$$hZ#BDz* zi12!I=~J##i%TzJq#w}NrByaGO!78(>^yyS6-850jH1pCX9iDqcfppQ?Rxq{HPX20 zJ!9Tqh`b*SW$06eNRR`1vIgwrTXE;Q!H!x9py6(#&US2s%JpH%J z=}nDVCb_alN5kZF-SV+Ay>=tIX;jKO`)VFuUCO)@JjaOEUH+qS*S$Uum&caAL3O%( z(Ll*iy+kFaZ_QKBFNg~a;y*D?=!{%m;a++`8-$X@J z;S>~8b@PIA=DbncvX#}``iPr8Io7CfrM8=Jy@|(C!A+bI4MuvFxvcEK*N%XPmDswp zejVMlJ>&>UkqLD87JN@4Akv>7$W@&;EeZ6zrvi(^zFDtiRhjY8Z##0-=iS@peFJ{K zft-88}Yj1#r=L`TtYo#$S8Rqo3EkxiuNN^mDbvl!-(JpKvg@6GVJJVp~+i6dVWeJ&hC*_XaM3m zg9xgkua8C#>^rzg*d(~<_Zw#Z-Ts#wQvPR8Ntp<*XP~rajwh?>aA`dFjTpLTjouX! z2b=0i==D!mXFfqhL|N}Lh$0Yy2&JH$6S)(=yViHEBevX zEtbn@?RPf`G`^1d{2xx2z_4mEF2kTZWd^%Vj*RV%T?L#RK)E&9oz6V zow{2X`IA8xr8Ub;M^Q<|CC?f-Z?JBx5i>;VD6g?V>Eznyh!+MKKv6+a6EzEq+Z);y zqRWaALdSlC?qqG{AZv!D5rwS!T($4zDEC%BB0RGA&MF?}2x6}WDvWB$7tiYn@R7XD z4*WQwXsM%FueGPW-@xJ1%b*^e+Pu>V1HEZ`a`&*CE^-J?7!M&g#i!sFh9>;9#Lfz|WF6 z%bSOb5Pe?`-FXtDcGV6 z>nyyhx##FQNGT(3?LE9P?^;)hb|Y1pcAQIgI(1<{s*UuxSB7yyB?@bIOgX#tPgxfL z(?g}QVzCreHbH><9uAJKIxjD;!w#+5A?NWJhP3bG z!lq-21(N9y^wBpf+Mc2&fg#4WE#o~`!N+|bc4(*?i_2R_!+uiW`YsuoX zoBU379c-vr-|1nA%dxTg%aJbY|C5NCnjzJfMO#(cW*!V>I!1~rZiHzEMHF3&{(NAs zz^p7-mO;4qeC+g{A=}UNs%nReh%#?K&h??^fqC%yJ4k^vNTtY&KSspu z<;}z9 zTRjo{Z8rll*J{`dr$D}LB0Q(YI*xJ9;Zg^%T8qOs`Zuxd(o&E5J}n9348`WJ3g{0O z7x_9T3%d1z%N^ZU(7KijW#z95((kNY)x29QM8$WOE-PiFg66(gF<|w|JtKhdo}pvR zH^_Jlh$i~)3l=O`u|SI#n6Y-2%S#q4Sh034)r;;|hkJxHonsQN@V+yvdAM|e#`HEI zJsI}-voVm-57r*90`#PcW>cmHZMn0q!=lBASPkwt9pq5^`})hFgY8D{&tG8+l=nu|!yKVta(<$>tX8&I!=tP=#eWHbk#JFB#kSP1!gkRuuD9UTt zq6h5(V=SV{k--cQmXV}s0dT%`sblFu(xVrQ#T6_lrv}n-KAqSf0aWuX!kBIuz^K7Q zvnc;pQL~E!QcV<#l_6yx&$$CdC3=dGJpJ_xK`gUr>w({&1721yQ%+DZ9;8>!$@3Ra zBTGAQYI9VVL9Z3Cy0v|Yf((dym@^;D5Q5DZ9=Zx^cRSn7~kWXwxPF%z3q0&SF zJM1RL7zd`s?1rn>Rp{8grg{7)(~ay0ecI}f3U?zlH*YKl&qr{&ik?=f%GcaCfoE~G zw{l^{dEKedr<4eiZB&k1kmHTY3MDumpzti~bBgetuz6BrU0FB&Ga2u;N*|+nJ$0FNYu?aw_3hQI!)HsuE#-ou?j# zdNdcMVP1WHFF6yxS<#=n+aITCm{K|$1xUIhp&TF2UqQ^mik_=b(KP0+e{DdVF}^h?uQ~J-;UpaOqG^mQtp+&e>jhxY zrYiDPChvn&m_{q$kPnVbSF+Ymjlg^F!Dmi%%`1+A#cLP@g4Nf%5FP>_kd4A9uA9}J?@TKqjvSy`k+~4r!(u#y}iRTX>pY{ ztg0?ZajGgRufWL4ps1bSJJH|mcYS!qlZ-R8 z_*nwpG6^6MkzoQP5h9+uAz(2PfUFrAKC&=C;|x!I7Yeoirgv%CBDz{;WLs zW{#pp6ah~?OKgH8qpC13v)wlKbE`J2VKkzr6+Dh1RU-x@du+-fX6}6?NFq%Wt$uTX zF9!Shqh+G)Z;G#`OLu8<(#PEd)vml5w+86F>|VBXG!?QvbdYvh+b;05D+Xrq*?s83 ze(Zd$>G$I)-QRoqNYe{P8Dn)Ljcal>(43`d!Ib#4cUG#-FN@z?X>(RB3!w*%FH9+X z331=Y+tUYcGWVSHeQf0pI(ojpUzeeee=U45y6*;@M`&ESN#`FSswpL1C1N5flu%9r zMi-n=HkVBjS<(79Zn=7O%IF?UzWkr4YyY^3tqjjPFGB@!R7XQd$e#^mX1j$CdEi=w z2agKf=J$Q2TaUrw^2s5jeFAAbNP0~dmd-loOH$UZG^C)Yn$u-_DnEFiD#u5UE-2I2 zE$#ZyLo)iEtIy%+lbw2v0A=hpKN_00^TLupy;b1P?o13F4UWqe-~3{ zF4FoEohEvszB*BNg6pVub+s0nmhd=BhWpP5(0b@;#DT2MJLS}AM#NnskeWFvhkk|)crPy{ zdh+^@H{kl+-wtym%k(KK)Ekp;nSry*q6g%A%!i)89YVLQU%4Nl%gGQuRZm~D)j=JX zqR!#tHF}TEo&ua7ALjl9xVty{w*l}f2ZM!*3T|Ep6eFklvMXNY=;r`q>QcXj9Mdfp6&U5M`o{0kDb-M z4?)nFKqX{R?lPie?QkqA9MFn%Yhp$@`)mf+IW6s08KcyimsD&nXf&Z0bJfmpD88O^ z*BJ6wR3co|!ZnOFdHunKePEAOg%8#je_0SD6z--Xuuv!=p@9rnL&GXofaFX}&jWuZ z+!=*9HGv-i&5WI^UcnDQ9UIpsYFmnsDze^hnKXDc}qGz_6mwFr=;83 zHtc)0&Zk8m3vF5abwd6|;5rq$di}evikjb-h2o*}vS&?{K2#bPt{wI%!e$qXk1~-% zx%pc${AqSiO6ZgLq1v_dwIwzicN37saM^vPUsCUG?2f1*idL9 zWe>RN>+<>~<~(SYzg^Pv`u9l<_U^5YKFcS5Ez**26g@aZOqlRG2(uA`38H!#_xTO> zH80uG*41dRft4{px4_hM>6gE(Ft-d|s}yr9D&cHoE1t0`DYY7*a@S=Teop=LwBf_F zgm7BOw4RXcq^S$3W~@eMhl2POiB#pf75mSp-H~ERsST$OQlX*F#o~dEuMc5v;*2gT zFw~<`jY>5r%9Ssza(V3b$G6+~SbN=ZrlGJmtbj(G8*rht5&fN0EV)rc8Gt z!o`B;WmDWx^VIeDjm19Cc1cq)t-Yo_UW6Y>n2biiEs=(d2F~5YCv{-})d8AQPgn#W zt`Vurvd&O4g~#kbj+Rh1fdi|!;bR#6m)K%k*ye$SgZ3?7FqF4ZqJ9KVTuo*1qWGO# zY`4{uAS z4CWM`DUult5HkPm>Kf2Ig+@o8JkGM78Sn6?@ux->gn{=zGK0DpH$?onlCem$^X-yx z;<$p3#rqtSe=32d8%O?XL25ukLCG+pFha>_BE~^p|DyD}ujy;dzvJePx1s%Su+Ihz z%&lK*L(6V|kX_MWmzsMTcl#<{d;sTI2rrec8e9N`2n?9RG*}Eu8esZdfd68!Y}+gb ziesV9?BfM+b1myQx~HR~jI6N{cdK~f->E%nAxcNk-wIi*@{b&g07HH}zw^~Jw!7c) znGyj|?ZRgK{~0|PzGok({2T-UG!K)x3M_^-@WtjgSGdZ4y^OQ>pooH%d-r5;3)+T( z7VF7EEhNBt(q2SBZwM)Glo-#zjsfS9(nD7f3(y8aWPd=w!eDiS?-G428?X;o;OP=y zek@+iwlD%X=LOCDw~AcQ_ax2E>eYKaBh!1^W%ZPLYv4E0=8VkuvIJ(>@PR>)K2ao3 zHo@VuKS#HrobGhr=jWf=ak-z98Te9qp5xhz_?|J@fJ!GYIR#lQ2rx!G?VQc}0p`Oa zM0w90-C!WF5e7K{4OkbjYOVf|>=y&UU^XJ5iV$>wqXe7P z8_eNgfeH~C5JDnIoFx<1CjE^Z4R@tA67*+)KWdE3MS`kD**vZ6WIt`8{}Hcp znqhDN_{||3r;YC0i8q>||BbaylU@4}U{qPbZiK@WhcgKmHs|(UCYBwpeSvgt%CJ(r z8i+me*dM{9WHg~^ZeTHr!?yBn%8Ft0b`bKNq03?!`43_`u=M!mJBy1d#ov-q<6SBJ z(C4!G2rb+C@4L(9)uo+yVM7Ta(8Dauca5&OmZ2>W+lwVlq1Qi-Gc-6n>t04ap|H@r zqdgF+h1i4t!}$g@w$)+|kY`7zo%Wz11{fDY1kMeCA@6q{9>L`6;;s9h4rkn`P-J$# zhRJURE1KR}u@CDv@bW#3n5AKtHtHs#A_cILEuSMBWA6>7`xW#r# z51SaVq6-H9wS2Z#W`AuOEcr+u9f`X2mqR{|0^%i&stx{&-ksmi{@wD(H2DmS8MEL0pI+~T&}_&yDeG6-A4tn5 zCK3jXK*+(x(5wZ%rJ3xubE?}vKIUc2q<^b3U*pfZ(elt|Kj>)G%YX6X7}5CXme<)D zN&l${645L>xF2TDT)zHda+gIi9s6`w$Hd`LABSqQQD2xNoi+aa*mm}rR2)7T2N5hB z!{dj)F@ocS=y>xH)RRGeR+#qX zMWars`%9RL%7(~Ker|2lvFndFrem3qW@-F5BL~mwVyh;bpW$9)(^`K+By|y`x4-8& zDQw(BKZB~ZhBFjaCL$R;{ey!+rbHQ>xf|ArFf-D{JWY`--j=ju3UYAAMxKV|#SUB* zOeuibnwGE)3&ZG4j3#-EerrymW>{Aen6 z7(RT_da}olG^DQ>DE!xJ^j;owoK-sX^`FCVW&eNI@_(E_e_sO0kPk;`Mvxdng2@+F zZ;6QKAVMFTBbqzU8rnaVCTad!1W1z-NrBz7KL^1h5l=@GJMw3=13&e8xyA;^?e2uh zV{l_2aD{qJ8#$9j9U0_|OE;p4C*H?3mkk$7K*|(A{@(a){@FZV7H~07D+O#dE3-_q zZx(MA_2uRi=Q|0n0rMT|@IFi(g6JKcVe$O(Wj7XvZe^AlmeS#{!aDL(Ei%Im9Q}oa zC0}uzjRD!Q_lza5r(Rvbc~JO-pwZiY(KG+O%_aX<36zIkX_|}dt3I*)MveME(a#ss z^B>4qZDgjb&cF3f`mOdROaC5#1D|*>ybQs4{s0`9q%9W-d$652pcRd?e=;EmON_(w zGY*;#t?PQG0W-LUuJl5hefNl?=*94KgBmj$&+;Kh)7HxrW4_FE)wMX*`kpZ9#PHUD z266l&YG=>=Kv=NSg7uyYp*C&}q`<8y)FPfltmVP@0{~3+mg9slg z`>8tr6kD-H6o;`2@lrR4dui!Iw*d#os~W@WCAT%es|Hg{l#DaUcAyZ6? zb648hX7`PxQ2U2BbQg3FhpHlNo63f()j^+MSD9mtlC7?}<{#qu=R1bw1luY38T}m> z!D&HU9jpM$EwukTnS^;r4u+pwJ#^c8&xw$%&BAYutu7`lZoY^n@@YB6qFecY@|`zN zhldaOFXUb`nQu)tONeC{=y*PZsy9)h?WUp@Yz@=qAqjIbd-a0TK9Hztf`+c!KihBl z$2GOFa_z@%Gv6`=^INUg>(%}QOd)DDGGPafGj$GinciWhxdNh^JYgmUB=CNEMsWb< zX!-jJAr{>JEET5^Em65`&Mk@IcyGSWL|?+a9bZ zWBSd4UA)NGzd@l}*)E38JIf2z%hl%c#u5h6ljsY9Zqz8ynHTW|wx?zEWB&*D4z(#Z zrXMq%W2ogfgiKksEw!1+fa`>~KNlk<;!-+WZre>&QCEk%2@+__{X><~<@JujvFiKQ z$%rWma;IP(-y{f64W;K^ypntHaT`;|bQFq;{5+MV&a9b(%{;DhvIPEN@}rL?w)Z#r zRu$+>R(@6HpY^E%5&o$&U2R76)PywKE?pDur}vyO(Th^;&nrj9w5pJWL- zt4XieEzw3{fb`l(Ele%z!6NOEQe^E5uNYHtHN-h=0u=@tsh)N{?=`iL|FHd^F%mUx z{PHT7A4I5g)!S?=rLqjnQy3sZMRlRgtfqivprAn_06osv&HR)7d$<`z0Q(368orO& z0WYPWMmpgcpj-(U%&68)nlCOHeSR$eb5R2biE$5g7SM8D!HfLdz@hZGL zx|sqlnr|KY4X}LN2D0zCyT!Sx`Q|S#Glm(x)lMR@_%V5TtG(hfYV}t|9BUh9 zo$;O0f~RkZs~+a&E^V_>AF;jg&vnN5mQ7ZPH4ZLE4hsHc7VhxjOrPm@FAm%P0s=7x zW?GT3&y3g_?;Q))`?U&sWJD*Q4YZac03v9i0UaYW(k?P=o)}`%W$g<1S$tm#4?jN8 zi9UgY5D_rgvD<(c82rTU^biX$9)>`Oo>T9{{9WDdMdfr7J{oZ?hHMO8xwf?ICa)SeEY5O~$Afz>rmjMehu;4}!Y z&57t3vAgq{$V*}R$d4c~DbESD2nKB@ZhJB3jVO;02h;RsB?)5tm>S^JM;)D>qhZka z7~Qbj=$2of|1EPQ(Zatt=f*cs$Mh5EkD33BC#$qLUFA`RbSA3)^^`AWq? za{@I1H`zvDQB^Y)epetO=0TVPb0J-4E|e_%(bKkcGa1yqw^u2;6aP*&A1w^5jDQFt z;E={?VQ;faEUs&-t(tkT?uMriaC7lSiS}RsV4;ix27lcDOR)j+@1qm)YTL+u4soaan}#Z$%xf@Xbiu*d^Au)!&*g|A}4F`yGDLk&34FSgfqffdTwHyXZQCoOFm z+57yF8gOcJ0lGOZ!ZU3Q&WF4+oEU&z(`<%=Xkg6{z%uQ{0169Q2^-FSudVjk0irVo zRHE;}t(gpkUY20m;~(^;WzusW=b1n}2FZ>dCiBliAEsEj9!RK?Wbu2FJt;PlpM8Kp zu=M>0IXIYaC0>k^iR&a2Lj!^XS$Z`9`Gf)s>oxXI-%NKQi$lCQwIHA}=>%T@MJ3|ry2MR>fwIcnfO9cN6-D6+4k{be@Bf3Q`~6u;)n3W z?oERqv67X1BW`@F&0`-dTUx z?harn_ss4bih?G>VRdkQfWNRFYwRB8ZU4h|J`uy0{R7PHxs!q@goq|S%@!ZcE$M(& zt)Q*J5rYO&eESAO^ygukUa5ywxAO13I<%vf+wsg9f-O6r&HR7gqWegHQ~od6spZh0 zk4?O^X$OY#NE0&aAER!{AjA)QGzAOE%|NhgYG&zo&8y>@!yG`Nv1Kn%5jB#F}SWV~I z<|zd?gti>@Wz+gk zt$n$6$**D?*X}yo_IxM$#8%mN?kDQ=+vtx3 zNC6TKMXtHIfc{MMo$K~;`x{M8nz7`$IGgrs#Q)JMMlptM%gqfi;#XHb9^{rXNu|$CQOxP7 zU`2CXwrgi=lY^|}%g*9B7hnHQt}UH(=F?)!uf51}nH*lJ^m+JY(@NLI4``^J=O|#* z1+*#N2WMM~_A0D4QlO+JMMYZTfb2MQ5h*`>l`T}sv!gFH_+Fx)x%>?oE*@qbR5vN< zz(b`%;>rrAsq@DG)7Zl8Vz;bNm#?!`c_;W-UCEUE`g(l+d3+qKxBC#%bSZal7fZKA z-5mK-quFzBf6>R%+0}w6*RO^XW?i==6d<`UD8$g-C`}yuld}faDatB1buk4TY6~}) zZzRKp=>uJx{sjzJ4A#-Yuac@+rj`O$(?ct175u7kA)CmlDf`Gz$%7zfMt12mlWLur zk23e$k-J^|=Z|%EYC2T1iR`wTUb{GBa_I9V{Pm{Zj(ks7vm6lRP{l-LL)kLCc?WmP z!I!7Sx#&Zu%fr*j9nmJ(t#X>4B3%p-n*-xvqZ`wdaocYWG)FYuxZt z0de@xTz8W9)s;l`*=6)*Na^ z5=U3n-+VVSz`A%527gfvKx52<@*;nVDDQ^6L|hy~F%A4X=j-o4GU;Uby14Lwo#ZlDxmgo=;k&hV2uXq151_e+!ivM{FB{)UxCUtTh43RJ2fEszbP2aoC)FtwJ;^wp?PCju1 z9q&pqP^*Pt>dblBGQl1=DM%E{ z3$o(ty=a=#d}ezJnjDrLiXS#&8vSaJgOOCH?{BfQH~dsOXuKYvzZy)Q*JqDATMiv= zTv?7{2)F^+LTGa5G8L<28Iai=>%?hPD6jCDp?tgxSzkIdbUqZCZiW^gM0zhM!@lhY z+kYLbH%rgf?13?eNO9ppx8Zy~;^Zw0;2bb9nBxpc3M^s=hco@|dQGd#?e3bd3UB0p z&wt^|^h{>DZ#++_{n`DFKeF}mQ>I&C(&iS$s*w7&!mx};s-RBS2mU?w=bMfNd+e!0 z*z-}A*ip1=I0qo2LyFksutfe9`@HKS`F!q~$Hw%)6Fw3s%e(Og^D$5}Iafu1qm6=k z#KHqvi7+TZ!=8TIM;TDsMVovc(q)h<%Hy%ct8ihn3D>ahR+rA~TKuKJ=G_`43pt5W z05dH~O(?u9UbRv(nq0Wt<1DorkSQK*v48{nk@5L<;JBYk-EfgnNef!gM8)tp_^Dg*U z?kBlEFL(O}W2EL32ESiada7z6Dw@C3*IVOZhn*9Z2ST0oK~)iz89|hwrH5^Lo;Uva z{ckgJ{UwR=sc#J5m81O44Si!}Wfehb@Oc~Fu9Qhl20&Bok3eLeYljZ%FruIn!rTBG zaxzPzb_P|g*@9WbZXw)oAj$?uiHHDpA!v;7IRxkxR9*RCe>x~6q{&BN)MZEU4fKAL zWpimev7RSm7BO{yJ0Z(J1Zc3Bz+qKa@);9n{(tI?(Qa$G$1nqq*{``U$0!(0_pfjq zZJY&-VN%9~7hxSyDpUxfkoZp29GB+!I=L=Ca(y257|mv_b;`^#p^7I8Opb!}JYV%! zS9`4P{!L`I@IBA7hCPrU_hy`)b@UhBrj3Z2>ATOPY}#W;!SogM?Uoolg#3^8NZ)j} zurh$BT6q7|UQeG*3WXHr^*`C^DILFsN6Rf*FsA^yQ)YjNeo<;J6Z+UglZ`Zc7yYKv zKi^-1*oTo@<>ee>!?rOiyW4~cDd*k((Z}+C?n;ZbPYCYjZ+0GU=@JbKY52qX-R83%;F|ti&ZUZ*a2=i4#y6 zpOZAxro|FE8(>?-j8tWQ)N6Z~zDB3AFgV?N!YCtHVY8*$g;H&FY8uc6k2W08#tWF& zj}$npfcZiz3RJi|FthBzb07wAr`8#H9ak7!uS1+B)DZ!akxCh68T5j<&>{R(3U@v$ zy0*XgXMlM==TWdR)F!=eUpA)yYufd&%(&-}z5ip1-B{)ZEVv%*JiAtqKK!iG@Y>p^ zn10G*ulTws87u4yt9m~^`8mct_?*}oWJIyK1q2|awHJDj$9O3!GvTaw2S!x4%e7Om zALh+$qij&&7W{JKJ?xEmvYse~@bCuAFketO)Ai%=5q-zAQvUz)9JPB;(Ou?cK6gF8 z|CBTn|1ICc_GP@x$TK*4QE?9EI=~o%9Zq-F_$6_WPM9?gPgv+EKw|cTQG#y$q0kHX zh)ZN7a|Ow{eiR%Fu*=YTdo9)bH?pS>^Eyuydkwu1naJt@#DUhCPzS95cqmFAd62QP z8C82{+IO2Aot*EtKC;m0zV&LbBbc9CrvSWzwjKvj+3S%iyLyD3@J3U$W$zPYo`|Wt zFsfb5?*G5gcL5CG@(Dq}PbRFtsQ+wfhf5#r9I)04i%ffh>G*v(Fky@?Lk1N^J z+lx=%4z}ww-NauWUJqA&hA-R@fccy633#1I*!|qLhHL`Nru=Ud1z4ZI0wJLW0d}Ck zATA65;{xkP4~AqIgVI*xs{21h?Z>H~7m_vuc`;7?!})Woh-)wnFQapb`ci|}R(@cp zZyqRz?lMz~Ajc1FGl#z;AUe;WB*x6Jk3)(NY=OAJacKh8u{X?tt^cZjRKSh9YYMoz zBwivc|4g5_j=o+SXRGOIHV=L%(C`y{&bp7ay~sXWd&8WZgLh?nzCcsjU*4!i=qC(`G`|#}wOV z!<1vsyUKb3*il*b_7FXvGbKmeZ?k?U`TIV~o4sZN`gYnZE8Yf;lC17PE#YWE0K9yB z&_!UdqL2YLDMk!78Us0L6N{L|N6Y24Ijd`1=1)mx2TwQ>iucrX9Wcy;V9^dpz!?v~ zdBN=dex=7=|8d9!wG3~PIR&^Fw>Caxa2^W2|4R{7393qE1<&)Km31S|B=+-!5)yw)zjrpdoA9dN=(K}R7ia>j49R8{*kua?N5p3$fo znVOMDHUI+L!$wpJcdJL(1^n;$Iy^qo{cnFT(V9UAax1bZ*; zB9zZ2IgjkLivzq7i`g*InUL5gHmb7(q$Y?cau$f3>dAGuWCJ4_Y6aLhChOGT3j?`P zC^@>@*5bkTu&@?pO`9cH6hcJ<-^ugH2(io%kc&`4C=`1RG6d!ZmiRUjwhQUWGBX;1*jvHZ;?#8tlLsx;hDZ4kTwZ?E(B zKEs9ApR`W4wLjKdq@mj$>i@C77Ll&xS@8rDfcT7_3AHP`Ap6cO>Bl!5&HLFMsGDT_ zUd;3EeuNwYpVcJ)xBq$R=<*b<;s&mQ%i5;kPeB07)oDL zqCVF&WS`Wao@~Y>^?$o%KzX1jYa*%Kj~^Gb)%!b~pLvb2oLu@ZIk@oPuQ>9fe@Bz3 zXPj@dv+nPJI2S};cvS#y#Zh>2b%_5h;y znrLtIg98kAy#OzjxFZnA<%1tRY~qJN))&E(o>&98^CT(273U}ys$>bsgA4seC;>Gv zM6nQc&UTDVlJEIke_no5a2rq*Bv@(RIwi*BCZmQBv+v8C(U3s(`SWGvAA67d#ve~e ziRWg-vdDlEEP_EbL0wVz`U@R6fW8YNkv@b2WOh?68C#i(U(DW44HG7Vs0xS8D8uI`U z6#29OfNxjpZ8Pm*e*^FO%+FgnzNhT=ggc053!-y=7r63m`8a3jy%{1%8KQbiHX#Uy z{w+xW*Z4a&s){J6DljAPcO>zvX#(TZ&ocYLPUnaFCy z0Xp~!q3L1@9?}A+B|#BE??4s;fSO_e3i?PWjqp`^d3lCje(_XlD1Z{0K>Fx_mWZ~3 zpf&1Jh##Q=J{&;$h=O^ijFnwLDV>;*m;r++ek)0>JZ*zEDoeGG1av%w--FklN z^;PzBPBkUs>+|nuq?r-I8W#jiMYbigEXvnpLP_o-Dn1w@NT40)G9m|e^r+>CfW63o zq>3mXrQ4wZ|4m!{tBNSE(~6*ph5xf)5JWyC6aY?y4%@7y5BmS01805Z`8@ue?m!0| zK?LW0EeE);7qV-Wf`Ebc7G>Y&q}ub_HeIik?0w~{3$pf7WvF^SZ3RKYrB>fwp6ha- z+=?aL#R1@%KE}t9MGqYA7A8I;Pnh?QxrweVu<5`WJON@ z6Jd@k-0UB$>oPkI+Q-?O{oLIrs9{bvz=ws-wZ1JnPCOBd48;`F1{p%3y+NO5-MYJm zT{GT8WDYfn$rpkK^miB=R{%PzVug<Wll2)`C2B>~3-IU&aceAV++g2l=$ zfkcFI#+YWcAQ!3vj9HEs`Bn!dRPF#pRWFVf6U>SUlH8^&=n&u~;9>+aijANqs97B` zMvh3Cz_Q-Tv_TQXLM;lA2-(V1u}kf!BveYhAS2k`w(Zdab|{R1XA&R*XlSa%ii4sC z>_kHP2$)#c7-lnBPjx21%8Xn?Te(&q`*n-Vn&&Y}~gRV1~>tTPo?Hpp`&G z>hPPDF3@}nsZNhmtI{l2ca;BPAA`%8=i*zqPT3>`+2xVx-N-xj;)}QV%ii<&LqHsr z7|?l?TF0N~+r@7rNAxP*Xb(zCka@0g^d8ks7lQ&#K+>W*j54Zdg}0Y~x8qv36$7Dc z1Y573yy%_9h^BsA@bZpNJHCaI5X>in!og{NzCIylS#+8GoPF+`jV_xoqF6~~veIrJ z8vq?nyqjY?)?4zy?jQ;`aK%RnC!~=Ekfh8JM+98-92u<1>x~S{nIw>BZigiBlq9~S z*#ra-`NFD*XU-=%BoIOjM2N^|kj{sCNmPx|LOifga(ID934YYl4W-!u8j$KLprWh* z$;6xn2XsI~lduCAAcABkC=@ve3M<^4)@{QL z0>os`DaRLtJ22mm*l|#~NL+U|2Nd*rGY)iaWxgwq-OV&PApN~B1 z8>r0-qkf7-ZFD6U#Ah*XsP1~}!Sxn&nA>k(C(06v4*`Q^Q2Gj;I%;Vl#>~c=!##|y zT+J7RrtX=9G;5K;4xC z-x2d5aI8?f0Fdm;#X;5$g5{Cbuc_AG@X01+*t$vrpmAE1)ujbB31v&puR?S8tycD3 zX9uaa&*Eg{`*1WLSqzEyfkhH%#*V&!QBO?GmklwAB;iou@qAA2iO}~QA|*X(TMn^!#-(+VhHN$(Dl=cO%JWqF3n9!a{r{O}JMDk;@}FLRImR8M!&-_G6y z9XXWaB6?LiPM-L<;^J6$aH-UGE!W}CCz!<98nus2WS$vG!D0|{5MWgqm@kDFy$3%% z1+R%Ty{Qthp zc}33guewdn+WDmG9qu0V>|b>}kZP!>#pGalwXM_bcMo^rvfobgq@Kzkcu_WUYxLi9 zw;}?%Wd+gG-o?AoV9&ivA%d?Mh{?i-Qs1=EKbhR@{liCv;c8sP`7|()Xkgo8$kco{ zigP_4p@#;>`f{B)Q=JQX=8ae*Q(_2lqF<4Spc<7BVQ;maAfpu;&s~&*8HD4x>LNwRe|`xhM9eRo%B$_^;?| z4Z@=>?UA5f4)Jpvlu=AqgQ1g;xzD$w)HCje@Z$wF?C#dyJB46>ElONhBribR!l;5O zh>47hb$C%VPpFtmw8?mS6YpG?X`xkLFy*47jHVsYH0r8Zbv}JtkvQqbcTIP4l`qc; z=ia2F6pc|<2?Zi7GG3s+a8ZA~+&P z#iybY?C@Ajbm|vx%8H7Kc-;Jb=EzgM-l8WGqKYDVW|2IghsXC2Qk#QK#^>5_zC3&V z3Ph`RJs#VjCH?Et@vksLsy>GWw%Cz25LNvzCjF$nDor-S(T&aiXL|9c&gwN-yU%Uv zae5h;)-j8?-UHbP_iZ9fi^SlnIcRqhm(Z89lyjis5&nGGqgO9+u0ando1wq|yRFOYsQ&|i0+g{k{6@n#ylabC>a}}W zMp_P(EY6oy|L^C2E(jPAcw+7tz|x&%xtEtg9wdWGfOtamSngu<*z_^rwo8Q@!1FS! zPt~yb!>3E|eO#S-)J^)@yjN4?7ExN(Swi-g0}AXf>+z zd1~pZuO}7rQk&hzrrcE1MRc0CEvcrWIIgY5O*K>D((iW`)!n$LCA5N1s--F^?^c)D zbMx@^wPA)BVTLcR5Cg@}Lr{AnJ& z)8C^81cyLD^ro%NUZ)Q37;*0B`kv(_Y}EOC96qDz=fr&>VdGJhwzY;8DpCnaQOudqwT;xKvj^^CjsA3E<8A8)wrlYLjoaAU8hRAca8c5gjm$PrHy@O-%z+H5Di#> z4%nz=fl9arun3i8OSV9?16}Nepo9z5kD8I)f(ZrpqLDwg7)-WkOR*+WxNvD`1TeDH zhG4SnJkjVPNQ8+P3eC+z9S@+FlT`9rJ$jwy9OBF#*(rE7+R`EzD*4+=q7^e*(gj2` zb)K=c4)1rP3sjJ~yf4wRCDPDS#MXy9exK~Z{guO?Pgd5flOx0I>$`d;?I8Jm{Ms~f zX2=kPc?g_kf+@_lEC<(p)sEa-iGUOy9y&b~zybAGqW$B`f$NbAtXL%7#IUvlBb$qHFLE--9Z5a#0NvIhjvxcBVogqzxks;a8A z-(g8c57(b&P~+Y20)UuD&s(y*(JDa?@Un={6Hc#KV%8p( z0YMJpz8#%Sf<1<~H)%GHqX)&Sgz$EE?l(8PdLgvX6rr3c*$YJ5hrG#OX_-yu26(6r*|xx<>79i0r-# zyQ?<9bo0F4vokX@Gh*)S%*@cV&xg*v;+NHg5xK)B#&tlF#S}!NY$dYGO?2ev-F(;T zn8+(IE^a4tU#}x+bmvRNI4`rXv8hiEBq+NE;zVJr9J-Vgb<>zd64;(l!BPYU7^?xr zuz5N|WH)dV-T~$t79W4tq{42}nxT5O%rSy_xgt*0K$6_4G+(Z$7rHOwN6isCvZtSR z&&dxzO+gnr{HKEA!wViwli3n0^6>mRBr{aneZQ>eV{=)4>2gq9Dk!9!Qz9rfU@{Z{ zc$kb=*VO;)PnV3`c`W_E{4Zv^{-$I4cKIi|4T|=$5-*{RViKP`e!J+GO>SWH^LfH5 z3E`$}5jY1Cc9q@NJC%hG-K5XhMgzwLLJ}%PMAr`qVwLg0v43rWhnswM3YwdsI*Kz$ zR20+>Rnli$NAsD?2p9;JDk#dpWd$KhZ-IOQsLwEUAR2%bysSIjgb|uBO3g+Q7aTKv zge{6X5d&?qq*5#)-%Le8pO1gN9&$8U&NTRq>3${_swJc_msR|8Ol84)NJLb#IIbvJ zp#suLBdv7z$oF*2n^3a4PT8%`40s5nX5fSr(3D{(Nmz++%PSE!E z{SSqMxkX}vneX~sF)r4_&y`;BA7;$tf&f-mlcBi-r^3mG4cLQg)9MR!Yd$><$P14f1ruYlH~{Td>=A4^3g5Pn&X=) z{9|c~%uBJV(4Sj^*Dkz^EQ`D4+t9cl0vo-p0gd@MvB19muW!-%U4hO|{b!qwfM$!D zK#M_0zV;z;@XgqXn6Tb;nqE#R7y4(TvhH86%bL{#xdhP}^Qe>9Kv&%V66b~LPabuL zyh;3f&Cp?372f8m~%J6UEyM`w)@aK4#xK4Va5^_zj59#Qw$dHlRs1xQ$ zMg%qG#{ynLesY6~NSz32B`)%yooQRSqR(@W4W1YE7+GO$vtrq@!)>j6i@yfd$q;=SRc#oZdcm zj4c_2ziaY-z1Q8|$RcR)CklJ)gSTu`c!vyZ2r0xXLaqZk+ zHi*}|6TM5gOV1s4c5g$Fn=bTD@W(PEq9ij!NOKhLt@9xBzJpdBN)Cy!sto>w4O$un z=&iE940%uBB6}UstXCRc*k#_urh9X__N;B4)wx;G)K zLD!oPApHbII>v!56~czQg0D_UM6m`~E?k-xTV{3nrBc z)rHpoz^RGNHBu(gDD2kiAUdGDepcuioAJz8#chVi^#7oU51``GLvx3blKb9Vh z4}%@)xzWs9JdU%tTltq4(9cL@zl2$46@8L%Ewo4GM<2qTj`!4Swm-$xhpUZWwHB1+ z(_DOXxIyHO<@@&Do*V-?kw4Q_wZCeQtn*fu{|>dzY%Xz#WH#bTt1dq4oYC|)!>X$~ zd>0VmTq(od`5G@U6vSAp?#+n9+C7$8dpf%*f0J0feLhJh_3H2KZ$~Uw=Wt`D(tXgh zczbxBQ@enSW4_IM<*u%&0>;6|Cli*@+Xg}8J1-)Gj`X<|@kM&XF@oV7eEQ~`Quc-% z_Um9vXXD7%FLlg#IU_%YPlI!~Q^~HdDyOGS9etX)=3^<)$rDTNS({O-L)YZLDPrC` zIo$smRJaS@haT6#|DWRJ=>J@;wXmJTx6FB$%!!#kUjd&=CwZmw?0zV)??)~_3MT>b zjUX`<>LYoBabvRu-X7wj_p++``-j?cG>!dr3>YFYUNzJcQfGK=>bRXDR15_&N_mIr~#)=Alu8rW90CNeDsO29zlGy~i-&;q~JT1vYx! z`?onObD^tF%ej?)C!wW%+}8d0U5opEi4LNuavqI6I`**X+@FDg&5Cs$ z>9V(duj~$DX|J1FhrojN4)i4UOr^r)ubi<95!n*2O6QL!O7mIjG1URhn-H+S zX}4*Hdu5b5)PmcGM&i7l2x~;FuJU?Yj?g(xelp}R;G5uy#m0#}6P%GIkcQ+dIgjAG zHI`?jOs=1_iDXHMRkl~Qkr7HG3C{3$r>+f2I+w)*#%ST zgFbIJ((ypj_6;{RWlqB$LE{B(emqU4!cnj2M{vc{qPD{D^|K#ROOI1*+X-V9}lSZ98dpTI@;5T*M;mVEvs*T8<*O^GMkkHYV||`>u5X0N$EL zy?wpCsTRz#4nK1A5A!J(-~4Z9FZjG-X~LH;eXzlhMCJ?&1U*I)V~p{&`$k`@Y#53N z2&kZ_`yZ+)U(C_VDk`ZKBim}R6w3;*QIHr<5Y}}PiOeE{tAh3NtbK{PpBzB>{al26 z5*yOy(5E_E+~W8C2+PIX`@efuhxYN_=s0EzCfZDIU^R^eNq7-0_@R(q8og#AV3E%r zX03ZuK|BH|`-p+DCR$`2xNt)Poz}i^%5g1AHdd2XP^;CX)Rko_yrp%c9$TJQ zO6#Q<-5aH7Qm;mOy;x*0rpw zTGp=Br0YAmqjrqv2vW-&v#hfz73oCLN@loAMx7Y)*i-}?I%jlr!$zmn(Uoz|>}fMQ z^VgKAmWUv17lYq+6P;C26%|!cRZ(Ec6ai$6RwAIqVu~#3(M6!7V6cK(9ZM0*)7hZa z#lgA9$HQCv99^$`yTSF)mAO{6q3)Je?+HhS!>_tsWh6(eJ3ZY;mm1UnFbkn__-x55G%DxO42%1G?s-r0d zll&|L=v3ohO8*=0liI!<mSHCp6m(jXl?(lS#-45+#x*p)wNgenJ)}Lz%@jH=<;oHBPM>MEbh$yN*Xvv~?a2kvHV^EBO`~QCGZDV&kzQi763~tSbvA8O6oM zYp2agA@}@QkJVF#p{u7Z0$G{2x-(qku&@<{VOUlbh3j-Y?=M{rwAi0tMxg9do4KnR zCcu8JsvUfr^LYCfzz=L2zjO0F{Dg->aM_@OG>*zpoUEyb7>fp!n6tTmGDRdH zh@vb@-gJg&>Dv(sI(UXgR0^jm+;Ys^vxkYvP~2vMqIM?FgOU_n6R{lQ8k$jFhvnTfOmlT`}_CuD5l6JL{V0UauhKU7Hz(4B-yWOvMb+{wj(@QaP~tlNe>dUkF8Y3fgY@Ezx|ntDo7oK;ZS<9y_tr*iLy z=N;bOw66$rI!Wo?l~q?247Tr~mdjk6Hfyd`RaI6{$LCnr@v}8zR+j2{bzc=*8djvf zg`GpV7SJM#c?2g&sehZ^;XAX(mx~S^A-92Poi+pw9%=)WK!`E0LvX7-MwSzly!7nv z>@-w{M3Ln{F(ui zbBxeph@`MnuvVjSNpzs24e{aVYL2R<<&?-}U3-vkk4jw*;57437&2TlU8y(Cb)4L} z((q(iPTscKSG&2e!#jygDff4=ay5~M2$=?PgocVHCW)zr=HO;@|IlGk?L?sDiMYV5 za5j*dA~7t82yZUAqdv=^*uoP4!3m*$psJ>kHgN2+bNOQtfteLU#)J9o?;T9hL$=zG z=WZ^`lj$u&zZVY+@OlIKmm*OTW_^iIGW+wtKA(v^8d{GfT9wWeDF?{qKcPK2?@CN9 zN$*6=RpjNwN{ATp5=&es%<|*veNUVjDV32NyyF!#8Zx(sPrw}i5WPBi6XvY(43noa zDV|(O!2C;xEho*F8cvfHT@60t28%G=EZ05SH}2MHkG0*cxtt4qQjqc)+v^j(g&Zls zNoUyi6|WWh$!e^Z!@Uu|GbIfzm|N0Gqwv7QPPO9fvwh-rt3% zLFK`H!t=K@7_{N(e+98)l6O+)AW^S>BfNy13RC3y{ti}Cz?=FeL#ttV4<3WJX&*^u zFDJ|*bwh-Z+szc2+nK3P`eId$&sR40Rdkl$L5RkpsJ(qyA z`Nh|j+n4CMsPWu~lfrdl%i-`_gyP92y9V9G&5;ZVM561~TX8Rhs7y(TFJiVGkE}bs zpK=G)5H0-bJQ;Rtly2@<@jFfUypt{BRwZ4 zH|M7pp~jU*)Isi633R_Qw=LkhZP>=;J>|RBVDPgi3ocSn&79oW7{fFw0n{=VynL6iFO`M>oT@-bRb~-JC@daC6pMnQ zJaSAabP0rrMe4~3$tB7paOG@(6~% zo%57qf;7k>s_OD~p<3Ka&xFDrzYmn+j-!ba?bi6i3e0)u8td~HW?Q|VKZH%1Jx=k* z&6y2(3&6M(K`PgGUDvtZIguxoWKBBSpA2`L*=ailLMPy`D)%uPN;b;JPMV{?Lqu}1 z@uGZ{;ig?0<|m``-sXK*_J);a$Wc>wC3NiLL^S=rTe$>b3(jLvk$)-02`uO=;UTnZ zCaCYrqSqS{8sgptsxYH^%*G9+d*t2Br#4kbu`BBX8O}h;JYnl1bE0})o}D+LeobQI zW+)OwFpRkDv4(~od4`5aB7}5jQF9XN?!vaD_!$i(Oec}mSM@zrRb8ye zDz2!bQ-=>?I~3uxwp^T896Oj(3mWtzU)VBK@1Ydkq)CQYJH;!X2t><5H;O#0ZhvYH z=P03+^$6*o76s<-{DFoE!Bpof@G8w9PLTA!{oMqqWMxjuk6ai`pV5 zWcXc4dU^7*oj5O7;24OUiE5~JY3Z<+spk-_{S9lN;;uaqj(Ou$qNf~Dgij!;&C(lr zism%69VC4>BX@_=;byYh#dTcES?@bOTC))>@X3{+)#e6j5xsAJQr&#x@wI!Uc&RD= zD}iJvDrra&3%A)j5C~G>EfTT;*XgWDWLECs85?(x$o2x^68p8}eja>}>%(Q=7Tq+9 z2pUxSGd|mcN3fymgua*3B2fzXjCpLAi0diuge~}CZ=(v=436@lc5puO2$H}A7mX9< zaq#g&;^Z6;w{Hvd>)RuRJ^z`-L{3HMGhc*dnY^JqJk?77>!B)}cBgN(5A z6`WX6!=9W?-^CaDIdJJ`4*V$j`wxCBfD;mW=`!6mB$Hb9j6I~&5Xcvj)V9*XiFnZ7 zq-ej^>N9HjZ!+!M_U7)thBoDSUY>g8$1AjG{V&yx)RD^NZ#z_)q9aQZIcmufv(IR~ zs2yW`{5Q7xv8Z$Q7mw?``Sssv=khA6*NUp_uqm`D>xq^HIXiIX&=8a_4D<9g_d@s} z0O<|Y&_LBu3UDWf$;3(PaT$3YOgtf&;^F(7=RUmq^A*!`d{;^kr`azB4f6|XXw?A$ zQelNQa}A`aEB1vUfFZ;c%d{9}u82w^RS6A#!`Ks;l%*(?KuJkMyPQ3*KfCL8CG`yX zTYQ(EsMt)z&QEPsRqo+@Dn4Y^T$3OcU+X)!=P7Ue9sFbbWOb8^S9cb+pO^XO`Seb&+2m&ecO>g3!{KZZaGmYNJ5^y z7zu6bS@sY&kdh=&Yg*aWir_&>UN5<8Kz*t~JVvjcajC~HKDq3G`u`k97taqg1@vMR z=WE3jwfISPg{r+h(K8_)FJys9D~#1D>Wm@Iu8#GH3<&u7AF^z%xV*Qe3; z1R`lvI+Qm?eHKIx56Kb0*X%#Qo=bfJJnm#d!xy)uZdD>n3vbD_`_Srd9>HE%yWFtD z!IeR3VRZt0*aTNYggA5R3hbC} ze4?KVnm%@g^U(Cw%Jr8Acc*)6mE{WT$2vVa8F>g=#m$$gepKabzBwd<6bSo})HwA% zs8^uG5S5Y^K`;+;dLW-*cxTmpuZZvGBLE!q-`1HvQW?vWL{%OpKUeh3;o^WY+FsOG-1w$oATMZ1% zh1l8Q32)uSnh_|PGcu{c(q55m`~?gw>9V6Ox*_i+4rqOBY=HyTgV%}U`=5#F91F|M z)tUPqemD32Dk1j%-_ZxrcGc!z-Dtrh?(n-&`tb_~cQO-U$k>w4+Aq-=X0XUXyW_;+UCyJF_Cdj+Elxfkz@7gj)Vg2YI;QY9<} zi|C?Iw29^OVTa#%mB}bE$RR2)uV>GZu{R65^AJkt&XfxhCFyA#XbB!L23 zvgRGY71`+W#Y0*oibuP9ORRRjL7>yz785lb+shUNEYOK)LBIrv(I{^Lc{UEfga{$) z8uG_7`q~q|0_L?R)8W=s*V1q~r)Fn?4W6mkr#I^%5)1K9+0=q+@J^aauIbn9>BH0O z9RB0I#B(GBI9fgjBk2^y{txz_vp4)#5SAghxv$c%)WBWVF>=dRq(r)!w=-3DEQrL^ zx|YbJo5(^rS{;R@NxnOs8l|FQMxzLtR4L5G)!z9CpkE{xa zy^`E_{J5dUbv#&>m6?(g5(huG8GA`4rTJO1J;8^cACc@^K=SG%+(A@U9L#L%8S$pbR1y6i-;OBE6A8Sjr4M>e6 za>M6*RJYmhBbT0JupX(1T(=$o2iM_IGeqM8Bq7HnPGm~t_Tu7De+Z`SoCn3IY84V& zDVmOnk|%@K^$d|A)ye1@K@hIH@pRV6r{?%%di;2sjvj70IENnt>N}=|>;OYRyualf z*ap?wrYDXzssk1h2ibZ(HKFW7=d*4z=^>GEyHTEu1MC#TTKxR7K{8Ymz)tKM&shdm z!$+#`&ZYBHBq&Fx6z{i70RTBT_xMmlVhRA5C%|R}Au#yAm-oHsdS{5>)4|K9hesw; zWaZLuxK8|jO+0RnWc!28bnkG4-@z40SEacPAs0X-y3avBk0oS`UT@EotX&yPy2S(&;O6xyR-OLL6Zrvy{t zcZSUNje&q)5+NQ!Kzd{j@(f_*5{Cf|o;7hnO(H~&k6$^9v3XWRFx0Z9h_g2Wh$(jO zgMz3|)z;U*YTle!HHdiFRn5}?C<=TpOQlgu?GRGdj3?g@jI^Rs0Mos#X*v;)aTq%5 z+4nqiNU{njzT#9-MHE;lqVaiM1F%#@G5FaYpOE}EQlg7T7tKb%p5|HKJRi+G-??GJ%a4QGGsdC8z6)X{v#4{4my8E^c5=(P6DAC&$KoFE#OvU0_AiptM@jLf%ran)c&`QPQc z=_~E~5eB22QABByT=80Gd}EE|6O77@F`21pZ0D9`rE(Z+SKny#@vN)5rh-@;K;Iu9 z%YT2~KU#DdA93=^_20ByJz%JHd$@0laXrDF`gkESr!1m?5+L=rw6a1XimIzHfN2O% zu-N#r0Szz+JQCE4v*A81Yt289Tvi`NIGaG$BHxJ1k*K|l?s#ON~OGn;pmY}7}zQs~jT)FKH9>jgK-$*F;n8cZm7()t(ey|Y!Hmk2hu9tQ~ zOztxAf*9lCnO<}F45)srd@?x{e!%v+fbxE7_8}tVRaDcbi{L@Fdk`i{ZM%8OpAOU2 zu?Jz5V(!B*t9bXu=|q%6ze;!`@fThxmgVEq+*$neI`&sp8Y#ZoQ4=Qe)_tOlgD9ey zivI)(=<;dq9FjFakGFXn$JT@PD+#xmIXQHRBJ0LDHpF!n@orIj8vZhMr&zMJSitH| zizen|_|WAyx2TH#s0eL2K7&8MhC0tk$aAP^2we^6c~nE=p_@-qF@`5Ljg+WQ*Fm>{ zgP(S~;$U(=mxykqf-ZrP80qa+bfUf}7}&k6Pi|#`HwWOd1QiETDPVx)6mgY+U_jiQ9<(9HfLwC{vHOd)Y~9&Pyc{13;q&=YWvAy} zITBB(9jJZ_3W|Jtn6<`QcH(uj?L%~d#@hhPndh{@4GNM{(2GVZ5G+)&8cyNmJ?ia61&IJ7!CWOytq40n`JS3_OU+j7N=qb%0C@P(zUDpHwoI4YnfxxIT@?>LTE@(H3!JaIpcsQ%I~|3oGZwe?we5d(A_P za?Rsem(2Id+pHd*l!YGC;CyVv+c*kLgn*n^9EBT$qhkEgVqsp_;Z^~5^$N-l z^wsVFm7oNsg2@%xWSkoltcbQSShs=MMKMn_oSJaI9`ePD5}8@De~jNqzmCV152MfM zp7#TvAAJMB(CtVej%`_R+5qDUipfE+`ZbX#r<~(&@HNpUe7XZ>J=P&a$;eL*ICo2` zW1YFARX+dOd%6$Nv!_aGoA+c7fBWALe6#tZQo5uF4=GL_Xl7#yNJ@I^(~d8Q>&--$ zk7geQ02XrRQs?f~p~pUZN8FREppL!uVO>eZOC%ydI!Qc~!F5iz7PU5+e7_4}1VvVr zh%v&^Sz5G0VxiSs%4D*$JG_FLP#?C*yj@OPbbvQB3Y=pL;qbdw`d7*k{XK7lZ zc1@(=%ed{H^*m-W2915{KPX1)T%<-bUfkmSTspIECJ?SHw;TYuWHZI9RM!H}g!28R zj_EFSE|t4EnVS5a;;u05WH#%FmBpeMIcco?)?m9B3h$4*vKx?;W)eVB4peX zWh#iNiX);rS%jglngqCDc#lHEfFAMP?lXV6g9P`4yecE9?B&HfYWTmG2v-v%ZP;QY zfLIxZ?@?5ok4xL1TGbL-{jFHzp0GTEK@!J~`Q(X2NK!JKT@n{Kl`XKH>vUQ}TVa!^%cIO&m-uBuK0)ddn9j&h@e1E^B(@qV>xwmX-6zJO_yyZW6v{ zM3h)W!DHO^x>uL#v?5h%pmzcM5QV!r-kUzhp$WB*%M0S1AK3UA z&)vXJ)baK7V_!dQm&eLF$7|&>+n_VXA~1QIx+1?LK`G2Ov@TRMO2!CiWHRO@ohA8( zS98@b*vee??Vh;BH;!kDN*D;znNcvCsEh3qt1ee9O+Yx*f^5B-D_6aUT8v0qO(>oU z_vNO^JD`Y)rdH*P2rLXFi3{T5uD8)Cun)U!##JV?t}L^XY88wLmsn)FQ>!@L@?0%W zPEy$%)bf+bkc@#TWhRu(bCji-qqZTZHa>QNsapd%KL&wIq=^M z8qt=`#|AT_9CFLaQMAinRR7SumHR&}-}`R&*rAF{0H?j*;PSh}E}Yai(q3SQ5Ti?5 zFauI-X<<=J(9gs-w#4iZCiX4R=c*wqOho6|x*Hd}g`c_FWXk4#rSPRm&&8;e^WN{w zKz+;R+QY-W2rS4aL=b~r^)j^4BKcAoED=2zT(|?p%oLxWKAr}jpLI4~$rvt=Wsw=! z@oAB55q#TBNKUnnc<{pt6*jyxg)W-S1^t_d$wg$)Oo5Ef72u01Kbh{{TzJJymEv+< zW?pexxII{LW8~X;yVOs0JnT^+pQ^WF#d29irZ!yb7q_Dc#c-<=Q@*z0jr3EF4#ZI` zvrw!Fp|lCItfoytJ2xHcrw)r%xo+Xa%}EN04ef+4#A;pz+?EdUl=a?-fe=_}z7lU? z6xrj2>WKcVEgt(^vYWHBPmOpUu>hU&eRzhUN@5jCPWjr}z(RDA@N1uR%=N*d&dv(P zB3~^oC)3KD*!9+C0qQJ%C`BdVLR2P+<~W!OE<+@w``n5fY>D+HIHeIxO!XeVT3l9T z`nk{P8sYR}+k62qmT_#+Zacj`1_f)L4O&%jWu!`S(&d5j)FHObv=oyJL||$01{k|X z2jy49bpp5GAcp*M&bM%`4iOiVg`*pXOcgU;B`#YE1r%j9RT4aWeX>M=qfy;fiZs_g zCOHn9(TpPzhGJ>6FtRBK7OO#_7HBIfGO@qcmv)_+)4hxf^y@~+IMq6MJqgQBsh*AI zCL9V*NSiqw$UZPaz`eN?CCG^^t&=nGTwE9MdRr(^3uC1+6?fgK>4~+`GKH-Q0E9^P zWYX}lO2As^*>^hDS4V1@Eqhh|ioqdW%N z5ha* zdbhSzP71sDvX-PcW%gmBB!G=u!KY3*)`*r`JA*1G3>u5b=t*8m%Imk9$8`fNHAz-4 zSk?}pRS|{cE+AgRM+S-YBH_zzlSI=bDlJCg#>kE$b6XOSlpjuHrQTW3WK32!JCH=x z8%Y@ZYxH-bdRMY&#;TxZVkgIV~c*zm>_q`mz z>JuLG?&eN|bdP9Ggia0)Y<(UM^gAxoZo9B~x1jXt>+tngu~f(nS!LEwxy$D{k0|Mi zcg;G@yypu~M%bc}qo$6K@V5qn2qtT}35X-81zd}QH^5l|Vp(&r5*($9lR7sqTIa7_ zKpSxa`lj{V#@kV9Dw&e$vjUeHj`5aVdWu2jG_&W{`i&kld=VgtWJw})?YxX7edDUL zok>(dHz9l^k}B+q?&CS2G%+`Z?koaS(Yj-1AYwX@E*=;U4jJYUEdxx;IU}@gczED* z*gi#T%}?i61be?Ne-{&+=qz*mogqL_yy0FaVcT^M4zaWxnqPvNB$VP#HCdcZOWF9+ zbQ`BVagw4*3nDifCr}Oooa~G&?rgoi%!c4V_fdZ96kxqX`xgcei0b!L! zSy6r7hOl#+*h)e}q=Z{{brLw;-}Atnd>u~j@wkLNK_kpBcgB|?bzD_PSm$uwnxYJ= z(ulzYP0FUmIECl?LmV=b?%cuViyo(2=FNBLG~&$6Ar9?WA{fGAF`D))2&yuhltNxu z%^||}#!I36v7qlMx<-yr)zUlSYlEx{~IxJyFK~U6$-gCd4^T&PH?MSLA27(G|6)`VFbVo(Z z@=`a(pKT<*P2w(x@)7&%sW{OcxJr%^sl?J*5`;!Xw9zGbL1A8!lv5o(pPSY6eklHQ zMCRiYpsmixN7kPJ`_0t#;v7I2DPqqm1ntwOkB1%51S~wXfH= z8g@E-zpCsm)unWlC7t!xZv@PR#^C(F(v)E|Fn0k1^l*Jlo%MWJ*Hn955?qFO_pseb zsPB)lVA`683m6h{k{l-QFoNKcc2seV;E31xcCaQO}vy?8prLAue~M*t#;f)3f!*(Icj zq)?oucmeu)BwE$V5kf)-2SEl(TC9x zeR@O%ot$kL$WA$FW;XC(m$aWKYl*DS)3g#gG;!;+KU|wPqC9MCo`2N+;q%H$b5?g}}`~*qD+*3hGVm$i2(6gamtd+uc)4UY{nTo2&zr(&aQkmC+cDAxi6z@SFDDRqVmk z_fe4D;4ugE&1}1rbyYJ6DhCjuJq8VEY8Y=t&}tVjN*UZ-ZY~$;e>F87; zi&arY3v<2Z)kKU`-4=-?M_CP7f<82^uRl-s`s%kU4MOsB=$8pXR7zd3kFoRi&jGhM zW40z+ktlo$bk>+?SFD|Np(P(ODymND@7zN|Cc$vlv#rR(8d(yT2bTzECC|lJ^3Eg$ zRpN{;T)f$HrRoO)=Ka zL8)Cy4SYAOF6o@o*m6`$AgT>Dj&UA!F@FA1b?+G|dUSqG7?XWsm5s6?^=B>jvc+XQ z3chP@trkftYeZnE=#z-a0l>SCZ8NE8i6V5|`ESZmjG)aKnZpVXC?Y)(F`RgIYnC!_ zbAi=fO!_!C7krCp2$#`o7U^7f^o7H0%QUZ(Tp(5xEk(lf*@LPiRS*uONn4eo`#l|l z??Z0f#b(oveMx%VMe!`b@^wfA4dI3Zap-|eI7tvgi4eIfv|8f@-;>d9jhbdbbpRH@gp9_X7(~!{3eDNN*QP!E0YZXDatOmhJO+HIVIY6(Kt& z6NE0dMG`R;OWm}rE&>Fuy4&o^<(g~2$#ZbL>Y;kv{F<*^7+ao*f)!G#Us-mwO4}Ov z4WTQRNG_|2U{zIB@f=Fx_*cmw3lL>Qg9N2kln@}SFLhhkoc^!15?%%LbDtM%@j>PX zAk)<-y0-}1P)Q4=>RxiNan@N(H$!TxhA8}O8AAh(Z_249br=>d<}C^8?r%Az%qt>d zowsvSJ|1K-Rz%?g037-BOQ&Vs#Mv)(O}874BV0iA7j4*hHW43FD$_eZ4t$Y+R{L>x zeBB{%3LW8)0av~0D7{SEeUZWHaC)8DB*Ji-EJ7AIqFn|Lo28J!2+C2*BMaVWlETKU zAMft_?Jf4$dHft$fukGCB8IZ9a>q!;1nNY9j}j}K;}WQoFw}{#FuLt{jeWMd#G@a! z-}lE~+04XP_PBb`>GG+48Nb_1FgsWn#qWj%eKpZlgXJ;!dcW7rzqu9pFYOPCN*K&0 za&qtw*xDpU7WvE8$|c9sVDH|{xG7a#It<+JNo9m2S2#;k zQ1(JZ{af&b#sa1_U28H)52b&d3n^4Zk3T1%q)JQ>?hNRYk!*`8jE$ZS%*XFo zMc&SNlW1wB6z$2pl6|KD$pwOh6_Ei3F@qKdA&4@;NDPc3K}i-tWEMe4DvCt~6i1?4 zOKD>R7*Vm2QL&>% za2K}nsYTy`KncfMwCISOh;acqj7>tcL}Ddz3*)IF!H20g^${;hYlYk@k$qlE?<<-j z?9GnzmUD(L4Nn(YIL<6ao=A1N@q;HG#Gk&St96}$VJ9v13)-D2p3#uj4&97ViG22@ zR~k6q2SYlaSn#9bJ8Z-lg_MvgDv3o^Yt5q_qS)xr&U!Z3LM7*ZH{ljOh!#%|k42$& z%EqX$Rz%r+a>BJGG2Eat*n}XkB;-_7^$n?pQu=T2#1Rxc?0Xcna>r6B@|UVXgaLTY?pO%`^p zH?juy-mb?BPB63)y4{Ta2|U(#A_}M~o#9Fyn$JVgRaIQJ)?vbBr0D80MB@BSK6YrG zk1Nich_hZ-T1nW9Eo&l{v1n?wEu*VuW2$3aQJcIAJnRb@JZ#Kd+x&J1)1A z($#hpQcE>v&uJ4(GJ$;M<6c&4LTv>HBSP(9A`^3L>Ppf=Es9?!A?c?3f4aX>Dav0KNdH~ z5n`pqCG+xrS+s=%CKbhFHS*>+_VWva+e|#3ew;BOg^H*hNnxTaTo6&X*P9G}DN@HN zK0POLh?9l)6gg)!svVvojQSO4!*6wyH?K~Mzhev-j18v_uJAY*6PqF^q|p^cUPh*N z@#~)w)FC4 zQCkk*yTNWOUOaML3rlv}n!|91RA5OVpC% zQ{t%=Ak`*My&)42E8UL@!$B@2OY*uMo=md46iqx2Wremd2uTtxb#mO&qV7vk>#-G{e^4b@F6Q zIS7q{qAlUgh3dL01h6`MoRrrzu28{TP5aJJS#1q#$rof^&sVRcPSQ*kXO7L?C30h% zZd=>fHsp)sRucJ1`98FcqYYiz(Mu{?^rAr z2$pl;cpffx!Znq(X~pSG3MjqbUL(*=1g?n?SUOe6jRY*XA`Q=-@(SxX9v zTw*=a2grkMUKR1o@ZkfQb*dY$WC76>HY#>6D5;9gL?Q~gQb>}BOj7bN>VSAWF*tTH zuvF^o5`u9gbg}M7vR*J~$vSG!SRz25!inR1(HBNX>}!sdhTHB$Z&94#++0bJ=gkYp zDHE5~^bC4s&NmL>PJ5-pgJ`g*(_>4e+%s4eiXsMTBv*css$8m6ZcZC})A_2H-cn21 zniovPOPvyQqojS(N3fEVz1@}2h?AWxi9^J)K}%2Io8i~TJ4c%R_`?KE`m6GBxn)u% z3MrgmiOn`j3!2~xG6M7KJk^IbhLR)(rCVb9wlm*_DL=EPf&(nCoY)00%~~;vIuc%W zqO5a?12s+Q5#fMen7YwAyV!G{;p-SCIT7lVQNg@*JnQu}6mhh+Lu^x}OL(Aczk9zH zy%CJB-w}goym|(LrhRX+5h%+KS4SJiW$Ksb93ig$DAZV$8#|w zS|nndAn0YYBvpjm1MeP+kFsXBnEvJ0h~|Dj;)2FiHvKc-1}Fclj3|S-%BbT#sf&-tm!wiw3v^fEc#u(y#rpQ5iNbm<0}&f zw0`9+em&6EBZ=Bxwd4&#hOF}$2{bbaK?_a^&I=95Rk@W7%AG#KM#nAVt~-h);+8%3 zkG(k}f~tzHvQ!b5p;7{HG-B3J^^cR=b$PWLVajTK&pWYU@1PXp?$#FJx36{U1NypB zdBazBcWB!psTiU|+|r~B7CoEdLyp9kqR98${pF;vwuWL6RY&_9ZacuED_+=B!6DYM zRU&Cp%08iq>tunyX4uAxO-m_?-nYg*3$c9+WjmF*SlFV!t0o}<7m#+~TSa&+M~K8` z1Br^Rh{GJg+9n}5R*0ue=v^tOwo$k5XH#u;Kao4)&81L+B<||ne4hFB=X{!y3!(@e z&%x_TC=xPexx35P27<}_h?^P$;JDt<6+&yjtTEFYFx#oXVd9g=bgjFeAp#L zsX1$&7AaE{6(O4l($!tqygXfMiv zm2HD%6QVFN7eQ2I5PeyqhY}g&vQj*wW9u=@acT_bYgwl# z0&L-+;E8B=VD85}Q+AesApnB&JPpvQCB>dThOvDdAEthd2N1J%UN(eLT_De%dGEN7 z;eFd0`qyq-|D&bp5*PNRdQ5%-gu>Nr5JevTdN!9>KX;7&}gz@@wZ_*{OFH z<|~GJURUsbh5Se99CH)R?)bdG8i0bvBvBQLqaZ>?0Svc6Hu`z+D;4Z$%)7PddvAfL z>}$(|$zB|+Vjg%ZG+@1hCd1qqJGixG7(4BViF;g;BcZl&iE@C3w1!?TeLNWVQj|kH zj{BlfapTg}DW0|02Z$7C3!z^KU0fYf(Ygn?$d#&Cy*SaHs`a~WDOYKpRfId$D{+0^ zT++VsCW0kk^fn4|bH+moNp)p34Pgw(aa}`(Yrs}>R{t)|H6*f$9+IaOkSBnm}J|+NQwC-olb*qYBBA|(+m5i%vac=w~ z^XOKDHg!kk9%GkLNY%DC1RiLRMEj1Vc&B{FvmbXH4@o(6<&!HSrWkQy1WND`l0X_F zwGag#wsC_qB65!U;dKLI@IrV^^@Um?S2n@~Tw|69f;Es-OjzmU(|K_@Qibq`wD@S{ zwIh9>CKy!ZFP00gsFU4*wM3v$J%A+wSp4Dh#g7Uiq)9ba+Eiz@{cjEYm^td}BXI@g zcpC8cON0rlohO0uozk9if{J?VMld=R&^&Atl5{M)u-QnPTL_|5-3cYMuu7A5X!HXC zG>a$*GV5F)n$Sey;-tEw?|=l*gC{uxH$dx>92S9D<_%XgsYv29{kI=?j&CM{`ODQ2 zmm)j73-KePvf6a5+7_ zf~u)F@z4ksG-OUJhCEWTr1N@o_p*fiZza}86OBpA9&x4y5N2k;J#me{IEHkYb>qAW zA*fwU!zpp=u_=e48OJu-;yI^QK9ec&n~&c)$D$_foRHS(9JL}~rqf#?TUwCIY|S!* z1EP0?L8Ze+PHd+yNS)-VLz?dOy57ra zfv_E?3Q(HLBgnFZ!MR9UrG!TyB#3~qLkZl00V6wuV=T)GlznE}A*1Z2i(B4$*@x<4 zQuHh9`=0)Z3SoiakV^ya)>++sR+#XUIZJt!r$^v@n8L}Rh{3LkV%QN*50z?TKL!Y@ zi^&!^IJz&SB!S4O_XjfzFA?+^p)XC1!8g2l0DP(@31-@}{I32<(l0kv)$} z5?;F&d#FLnksGxUKp7$h8J^`+AmKaSNzk8i6}xB%`q-Un2u%26KUS>GYvfDd8vNW^ zScc)QeZ5%@25`dvh@N(m4yPWw{SJQB{q&^BG@P$ffK`q+6Z5F zpW6w0C4ANgB!7H(ubPGD3K_9?Jz|N3W%3$IJ0=do3MyN-Mdt2E>@fm{A|)F6hS@{4 z7F;x489d9*DmDj(Xvm&Q?9f_QB2;8WVFWZuJhrKO*;4bHzDpY*x-)Ed z70vj_?Tr^_xHK=}?&Dciuzyo&&j5-cAXbxu;Ay_qG{804#~#7l$_d2=9d!qKLGXv` zWY=uSBYFMERZ%coVM3#1917j{qzD}}=AjS}#ia9vD7^FeM034e_bOhQ5dmJXD9BVX z_|)82IEy~ooNoV8iOpY*cwMPWT_uCVoO9Yxt-zStemRv%Abd9L1b!dTBaZpcXe_e) z20T|4hu$Vl2Y6BGA+K3sM~|`SvMH|@Q95v`WpdGiG(#js3<_VWR%sQ)s~vPRBmM8j z+pT#D`YYlTj#@81Uw^&xc;dh!aKt*j4t+P-0eXv)@^4=&WuKP>?aV7B$}!UEx%h*c z@0F;>JH2Y8nhGv}XQxb+sRZM-Q2C7bpUDz$6#fT;qX($p-^3gkc6?1J zLTM`<^=FffNbk*0G@7F(p3jZx-(YGYY4{>mef}8Ka{qgI!y>Z^fxv>JA0{p;MMY*H zGNfrEB0$ttPRQUqWH?DF$hBd?&%&D*hxulk|V(||??d0tN=eCE&Kx2Vi*MGubG*K#QL_`dF zYUqd>r-npQeprv9BM(h)doab=QUs%KVhI(EEl4bTJo`^-S5{q*4M>;0+9ckdxfUBu z2y2~GeQfbWhjt0fvE@YO0asMeNSmt>VQ|Al7J%EhcJHyFX$`Q^Q3x>cDL!)e(J z%Ls&@Cu)WYLQqMfD=o_H`Hqs}U@p+e)n*=oJJl0f4uZp7&<*1zM>j6%Ve4Spa%4;q zJhOFzriIe5Q8QC$zi}T5mgF#c^;)BXilUpfunsZqx+blo9GGc+J^0rffOQE`SQC{@ zbG`0%K<81Be3<+^<`_}hQ`UM2jER-kPA#%f9oKRVkhI}0LjgF32BX20G-ULSgrn{m#A*-F?BfFdgn5~MO zUMJk`d@!U=TvSQ>i26Oa%3k6isQTKmpK6j^_iZ7L*#mtF7FTE1%^c-eY%0%}q$4bD(uI^ezMWQ6I zL{Um2YOw?@w3YifNoe!zh>LbiPYqMqcC6P~g>zAP(Qre_;lT+W+3WDe1@~O+n`$t; z3`!;%s5ZpniUg6-7WH~fv*1iR@t+2grbw09FFqc;G8I*A29cU4l7hTbm{W_&j}Ix0 zM7>jMX~&dZ@Y!R!r?RQzT1+) zCpZUd^VJTn^+~Ljjsh9G+k?d+2;+JqVBIM~4$MPEw81k)bWCgn-Vk>ma;4>z^QPks z)K$r3vf)Iwt$m)y!4BB+qL?0>Q_(kf;|ulsKRZs7e4B+g**Z&l>{NoB3sJ>HZzY|1 zSH?++0b)#?#4i+TM&U1xYj@Te$X_{(&tbeDE>pu>yHB?8^8>It2z{oJ{&V1ebfA(> zV@I+}73$ZPQS0}eg?TK46scZPhaZ8iXUVg*k>YjoB_PP->R&T6(eH)pHwtX0UYc<2 zOg06JXBRPkv$DHkymU3JJqwXKGo_osoq3@9VEnur;jc`!;TBl`uN*4&zHRH=%eL~u0MIWNV9NyFw5zSvVF%+n);7DFBrv~k2?9Dc9w>e zIIt+Wssj&I5gn_G#^bJN30&9SOhkaCCOzB~M0A3rq%N#ZAkqgfd}juWNsXP7_d@)VNGIAmq|CD4qn%)#_|;T|V3oT;0A%z6 z<>Cks!XMAXZRq_$5z|*;#bd5Bf+H^IJ+teiy1b*Y`1pUAb$DqOStHT;ao)dzrPv)&4 z%E>=dzvT72a-R`(U|KRs*XmO4mI%KXojR#XOL%w*)u29N)BxKCiX1A~7)(KYmPuUt*#D<%@GgxB7GR&vb^ z;Via9X#|kiKXQ&D)YUVVJTkfJaw0WufD&#q z$t_bQES8A6uAy=y%@gJ4M7}xJ3`eJGm>FTr)%=h>el)JKFKEm4;JzSt@o30|G1F?a z!GSMTbC6X)1XiA+gX4JSlrF9Ztg zUbyJzXcw_(M$q|*-h-lK$dEB*7Hg9iD1hT6#XT6p5#V-T9gkKsjb`1bk5ov&k?j*q z(Itge4|213+fimT^0BCTCix4A2}3s5dQs43?&Sr9thqmGfEduw?&vq{apNXQjQVnE zo~$`foLi9DBCmXDj+N7N>da2m<`r}zLO2UG0S9MY(~b+BW)!#0@Gf9mqkgsNFgLsg z=KegyR60vj+;w)kuSD#Rf7|*XA*mDS734a6S}GoXoxOZVCImLLc8rNJma;s4+GM+6 zZ!U7j7si4%O@%oW(?OPAeKUzkms>NV8_A)0n9{ZSxy$iVdfIv*%BAp@%<6mGP zOp&@y4wC*mu(YV`t(obfQ%=H8wnWhwry503OV~*&5AYXCO;J6W5k$AYbTVHD9bnC+ zdoSI64|i=nUnlDE^;3Doaz@3bN4cfz;jLBTa}C#tpG%ByDOBO_3UM!hw9{1)y=Ty^ zKTfBd@zP(3C?XkrCw_*HK1WUj~(5+Q}U}@^9{`nWq=Y5bzdUoS84_@wDJY^hZ8}Ggj~)$RTtF`^-lHvMw5uAxyKUo< z-o97@1hRRh<@;kt^7UuGQw2a^ECG7X-P$f{rlDW-rTg(#TF)5iALB z(ZRL^J~Wh9ff6j&IXWhXI%IG-s@S}YlsP1B_c}0nh9J#{tT%6$vt1P5Q6-}~DIcM&1YSv&|5X6iHQY-BNlW{;B zaRWUy#(HAx0vuSV#**YkNV54MWKB|ZNnjKV>J&t*m61I|%viEen4A_E^Kv4nW@iA@ z4G%pM0C-V5I?&OG9Fpwr&x^a=t~u#LMZ^IR`yLhiAJN^xJv*DS%b?~h9<$2nbTB&t z7`;uATGDj)$OEa`=AO&N%roWY8JUJ=VewB`KP=9q-8OL^2F=SX!WJ`XOqEgu9{JRA zvMdHD#yOKH_+-N!s}(Zc3sZ=Z))$&Osq|`3Slj%#PDH!D#rF5wS$L5OCmRt^MqJe( z0+)CBhMOhZ%Uo4j(_M+C%zS=2aU3R!(vXuQ#W+<75lFSrn64=m7K!2FGS2kR9NKs` z0ZrJ}I?QMDnG*KEI#q$dupYe=2X`rdO6aqmi}Cr^|k^%{@2@_DN*4p)%*{z zXf<}%yRq%Nm1Qg%hq>uq=fsT&YR2S9h?JzeP8S0nT%{Pxkio+3ZSBBd9Z@jlMEZMu zId7EGjh7DlsR*u)ktlA6dRyCyI+wVJ$eqUm_cKJE9I}BWVBjv17@10!p$bT6Z0O3f ztvA5a)Gbq5qV}!uMBZq$7dosb4_7_}p*=X`psmoR16R|L>*w@33GMHeIZuVSuG0M# z`Du4Qhs<#juHIxfZ;#K8-Z*LDZ*~#;sq6PP-UGHkIwbVw`{rUwkweLYp3=yW-R5$7 zBeTME^X+e#lnjctnck# z1aq60;S6_3)|1lk85;C#T(pCxcM5QLmMIAJhBC&5B@^=gS7FJ7V_TD_LFPCVv*skO zXe1eI8gJjs0B-DIA?1=WzB?+{7PXnyF@mTosxs;72p|wP{VeYk%xz0X)c9*`jS7ja zL6v7zP0uSyn9lBmQA_4%mazoNp)UhbcPTDbVQ*DIXwf0lh_3m98c!!l<_tII-{1&1@k| zn%0Gq$U>)Vd%5YJ=!||>AD*IX7vTEbP-Z`%RMowKIYk44KzN7&%Dj4PtGnP9-85ZH z>%)lN+W0v!SiJg0^D`_A>+JU}U9Cg-ek7M(5uW&;WC9sY$sF!j>~h8p zH_ry>T^e@RK`C;S|xUGZRAD zM^a0C7+f!k-){5^uDW$ZiYBBh*Vh3uGEEC}&Cxe0e>FL2!y*Eun(KLsuf1S_+nohP zMMWH|jI&5Gt%clfiK+lH(2nRd<8|$>`tCR4UZ8hX3^8L91_j%(#5;50W@ct)Y67vs zeRv-VlQYws3L3%-;~FyYV+bOgfN*xAZ;GmL+(j1D(E({4wc~ry0?g8Qt=C5ASczg4fwU_jEUCpgL0DPL^;Gfbn1!AjeTXu zFHIw>X}5Vuig1c@54G0jXc7>u7!o{S@)x`^Q+xMirD#V;9__$|PKpePFoWI1+G5$K zd9<3JQ}lHKgR-@Jh85=mE{ksMDM)oYdkb;}JMnN3q9XBes}S_-*{aI9P@9Y7+pFsQ zf-w?SWh3ioK`dRaW;;|lA)_C@s&Y^^~hqR7kGh4&|*Y|aTskce4ADAgMM^ z9`KF2qd`gLGm01zsyb`OX;|M4IlU4~B_z{ZOM}1IUa471=0e?QUXLLIVuw2Yo5(sH zzY-lJ2Ccw*_T}K1u@YWV2$`e~Ly2z3FSY?bc?cd76l;wV6mFQ)(u8Nrlmta*82t z1-&00;GwNDp? zgW*u=jKe|7+J)2yD>=aI{0|r@rtGgGaxCj!h*lJ=3}=c5nh2bTg}bQ`P_&Ud%{~5_ zC0ynOLmgU*BAbm;-fB5~DF9GFufGc~18+|Qa2VsHr2IUl23}I$7BfrGaq<&qyWJ7; zN8k+25RQ6pLmRrvDLhPsJDH96$>F`{CyrTHxjceoI4NzG*r$lVxLHz--$Po}wDt$X zSE?NC$g>M0#Mgq5;@mvwh}r3FRB1J33+sA8_0nDS0SrmA6l-y6#fKDeJoFjc6-2?h zK`&o&6~EWVc|lq^)jj%RUlUf$YY(>{RTwf>BS9Y#oPSym5{l zX}XB`sy!l>jG&2W^&ailM>;!HE*^-u@k<%!f!7rS<1cS-8?H;IOl5_xAd$gYVB*;& zM>E0|fYiRs_K2!DaN)z$!_i&#UAoD4C0rVC#IejK1F1yQzFf(aokX6Nv)P9E+@1M2 zOUTkn-~>dZ1oPq}yd;oNr-{_TLo>nA$wsnsC>sG2e(ZSq{H2P6tyGxirI>M0JaaYA zJExq%FLzm+OJ&COsW+py7iPNSJU-n6iPQjNV)@b_K*A#428F`W!ZWEE-D(de!fuIn z6RfF>q&^ClVOK@bD!rAQiD}90c+F-50+G5i*E8I4+RpYa>GSoU6_@4$$l>Gzn zy9aJ7vcL+AjRR~MW0xLnMTJUH6D@1^l)RqEVu(eZ260Se)3c$J@!xndsVq6hdtV%O zbgp$KwgNki`0qGt1zh#M3rlsri?BG`VBB?H66q}+AVzLOEH5QQN6B~qzaTJ~Wyx~F zsFxQlT6L5kF|hZH6Yzws2(+p^+woPNK%IDCcDPECZ6J79O4CHH^5#_Ujz@ z$CTra(*s_-zDkTOr4TgXqV`0uD<#V~TKZCUnt8NRwp(F5))KBqV65L~x5X_?E+4rC zT^#R$>ix0f9)L4F=mwrDU9uNYlQh#*<>-?$C|e@XnG{EbOe2h9_ZRE&1LGITk-mG} zz41z7#bakQZ&6w+L}uCT5bF#GKzg)ld-j<;Uq*=U93AzU-0G}YHg~{|^OKYGV+Lty z*KVfZ!9Z_37u%Ak)-dRnL}rC|&Eq8*Y0pdIXr#1Vgy~_G6;flHLUl&tkfwN zmM>h@rc@@00@K18acQDb^)9$(>#65Gqdp@0_TfDxeCpnFJetYXlV;4_?T`%{Rx-fA z4;drVs5#&>h$4=gPl$nd&rC@jh>S!Fzj)dSYhC4DW%geQGI06H!=CuXbXQN$YNbzG zN-6QK*ySrB=Da06agO!AdbbK+bcm9=`%sORctx<8Vw+m9w5`lW*;t?o!0`f_HgQSj_; z_Qn`g+bW8Wl!a(qj4mM<1e6Izb2Sz{Cb>5%OzpavF2%~~xWtx4?BeBTD>`vLXWTaUxK{2_#7n`irs)b8XOQ2MWau zK(mWj@KX6DfR~3Zwx)qgh7lM*NLK3kdGOzd4caYMHE{umvA&sB%sYy(@8pE;D-%IW z>j(i0+TOHCh<7xXj<8f@4A^Uz!+IqtBt*(t<&Dw{<))^E)69{JEa@aNdn+TW&q~ttjqk?RK^5|aJ>PI9DIG$>TG}8t&&IEmHkf+lgMm>3J&4woJw%cv* zH=1>A@|UaXrT2W;I=QdCxpM?7pDoMUW4A5ZT604JrwZA3xVd{dV7vR5A60M#B*WlY z^GTcgseCJ18@Sa=J47Vy`)@Z92s!T5>hx=T=^hp;2YEzIvSd|NJ&%a*Bhw&pks$^U zYk=&w@is}f%xcT@^|< zgCM@~QVS$fi{@d+%I2N}fy=gZ0yx>~h@gwaRnQa**#-ecy-ph&f33Ww^j?>CkCt`w z#oQ*7q8xeEeaWtq@n&-FTrhu!u>GqnKS#EB*U67=OTgb*sKkAelGd;#l?k9KtMT** zmqz8Cb8@*2az734I8sR$)b9qDKFW1WjAw$<(HS4Sv!M=3z@ntB2Z1CvMAr4D`O5q) zgeq#n>Q18zBy24wqv@r5)^IGzT|>h5i#zF4ZW4se2e}HtSusrZ(vpiw@{Ps_jSA_W=+t#7JD-UVBP75-1%QoiZW|aqZYhfJ zMkyl(a}~VK6o<}`=M9=h6=ZLai3U|tJkN0yNxRb&!wVNEQOk!NNN}um%+osP84_Y{ zhOMwkW{C&EZx=4Vk$NR1Ar6L3>jJ2exe-7JXxj*Ei#FM5tcIUKXgfzzC0`jw3iq6) zwW4C5b8JahO>g4G>_DbjqDC9pXT&eXs#wRTj!7{TK;dYjhrhE_mVv&qO&?CZ@?MrE z8t7K6gli2@G(^H&x7_U<@B#osx+~dWtY^LL7b04)g{P?s&y5`d3#cIeQ#-Vd>l zY6J^(s8gT7>BwlK!hJ4m14YK2L|)#gC_Qu_#H#KH97yfMBIzUvi$p~mZ{T{6_sOyD zVYPwi<7@c5W;mki=A6aT?YEs>ThrXqB$r1AxyiFfZe2LyiFz&kaoMU(j_r?vkIgx1 z=_;h<6I<14PYm+qZTaB7{OD9~86M;YNEI~Sh8$~lVX~40TUtw2Q|-~638E>ciivI{ z60VnuDhejosUhcIZW1JzFwdQP#!0fZyP_yPmH=@sFr@ThGB?1J{9MU6n=eG!UF(j# zC}>C;9-$RVWerQJG%$x+j_VI`p>usmfMbh$%gct1dVWpGyvGhYTZfLB9D>C~)4W@m zo89hnEc=8p-i`F2SHQt%9|+sh+Sos9fw>Om|7N9W29o{uVGcGr1|}rbNfI((z;XtygB3YDZ?|)=2OpGVRg9qKAR?``Zko!uv+N{$e3Eo(2I1GY z<$j%a8uw$mS`!F>T#1f4p#f1UvFX@V1XTfc=!qS=w-f+vZKP(1HZa2#m#3rADOB*3 zAL1W@G5Z0w8g(+mL*IK4Th>mz&F=d?|Eah`pX&Tobn8&NX~Ez3P~8n8oWb!b=$eC8 z-GNBT5bQCQB;8RsQ6%Kb$`v3qOLh@{ghq=jR^?8YVyo4d6ns^%ZjM?x6)uV)qH&3+ ztKf*q$FG0L;k3R%akNeCqc_tHG}3QQt!op$neOy#^Bx5;GH)Iqz7P<^rSTfn}m$b1>4ItI;kN z4+;&GZg>!|HdU&vY_J|#e}IXoM2sb@|{^UUdw|g)_UVu)*KefS9r-0hP#4(r0J3{ z)c2ocnJr4Q*oVIQ((PI6N40h$IKf!n^PLeL!pP0+(z2bvWW1igw0!8u;U<>88acqR zhH;d%@;GdW(En>+GEID){B`GEMwhdLN6#?vM|q%N+wC5%+NfnjfWiS;z(%T6BP*RIl0?iq|#uv`=dgK<^?fsK+BufU~Lris=NrVy+&T?>@p%hU$ju%D5B|WIX(Gl-P`ZWlcePY544crSgw3<+d)CIpGdi%Z{nvLq97}dS>Q6f$1pgEky1odbVoOAfyX^dHQXtAcnCAy z#&>Lad;X7~dRPyS>Aia+yTKC|)cwqnIFUG-5@kf{v?0cbpl#@!WU09kO2Tkl8+%Dn zs^oZucHoN*$q7dTMj5ej_=O;D#yrfwvpB6rC$VWu{JJioY!5iC-V%gOPVb&EgrC;O zRZ4r2o~Cb%apucO-^q+t|28L|x2h`}c%r%#Zlbf_*S84N969umlm-KG2Br!Wmb6Q| zLin;KG@oZBix~`(k|WSi;q|_5bMn%8?LzH4PVAwqM1aQc4gS<2docY{jW zGP?d=>*1WZeOvppnXjhyfemm|m(u{K5QMpNHu1-;WHjjd23!$2;5y8b>?Y7agx`B6 zTIE>-P}WTmSLislsR~=}V?I9Z>He1X*^x(4Gub{Ry&SDXOEIe#qE-FBAb`9#=~J5& zN3m^Qw7{`sFLS%pzft|az48nR8-AX;@5N%NbebQ^sDQ!h{qr`iI*~JWw%JIX)z8vI ztz%_G;NEtgJNPi4kP5{C3^Zj6@qMuoCRLY1R`%UmQ4-}+=^|S(aEnc%iG}LiIrk?o zMPRcMh2x8wEkDdKIW*e#4E^V6F~a;>S} zYiBC5;G|&C9yzQaFJdCSN#3qQ(s#RdUUDvPw+5usCzwHLVh-ngS8QN%f-~!D-+=YU z+o0XmX|$LP42b5;`yI6!b@I_P7tMU>zJ>Ey5>%9U9o7Z<^MjF&$2f>0AW&En2(YHY z$22p#LTiBgCxoX&--czb@c@Ovc3)QuVn?oiY|T{4lI&<6gb{;%8+G)On*}tjv=n4{ zJhOPK!J&(4l%zE8got46W}v54ts*sJ248LYxdn&EhDu+ZZ=6`XRxG&)BYNxxhoBlw zFHb-yKV#DI_bg*PJpLG)<1*c$y7O^-S;nMjfgLEDsri~uyFG9CcQN|3O{vJl(>mLCV^cdT-W#e5^XU2YIy8rL;EG?BRc zRaK587Bh>+vzPpz)93W7A3qKU6uANGZB-Fq`!93UH-Lu+v%qQ}P|!b`nm|9Y$>RwP zCY&WjT8nL-#v}^XD5XQV_s)s=fJ0i{j5+|FjLf1S6*}L4F(9z`y!Yw$yZ9w`m6jbO zLZaC92~r3cyO0%#FshbO>ddUxqyk<5muG&f_6J{oC(^~kIvTceG>o&e3KD2l-T_QU z*uN)oaKt@??I-s_LZxBfJ zHa$;Y*Rj}d;8u|dn1wSIp+yoqQVoGj$X9}B;Lkg7bRCh92^k(?RHtVVD34_j<{BvA z;)fOmx5j0>SY#s^rA4hk(nIVSC%E)OXWw(kVrnGn^Gzx&(>k&gdqk&a7b5{H1Drt= zU?@#Hu!Sy57A&|)t0Kr+8hn2k%&*54z(>%Cte{FdoioZT18-B{hm2UUcYS|+TTBx` zgXDaL6;V_L`(n<6g_aWWbbZZ&5ZG@%Tr=p0C~0(xXTfYizm-FPNX?wMkwZ+*8bcTgD2{e>|B-b2oU=G->P(z>pKM*qm0od6C+-jDSBHi(o=WQ%>1g=; zK8yS$>YsND2OGnNc|?!(El#*Ur&lg|e3N>e)Pd`ZyXu^LeuXn;1&> zXT$01@Xv~q>|W(X1r{1W?aK&opG?cTFiOIRkcFlaOp9ka=D5C~&yvyyydzbss z?XrUi^oKxn>;YJkyFpCEus{|Ra6}Fu8Ue}B23i5S?uvR^$bhplBD{&zh7+5xp zI1I8Seg|j6wG*`jd@}OPdy~C-L)GB+|AF_oe%@4x`E`w}i$>vg=oAM(3xxIa!8kZ4 zsQ}!_G6_Rm)W!TGJG+NTB zpazT?gD_?oN3z)wVt@k8zy?TR$|8@qi&<>c#IK;3}%knfqPPqxc) zA-C;1I&i`gMoAp>R8oBn&Z+u`|3diGU{VA#Dq{#@=Uj6yIn7r=x7nKA|piq6WS^?Oqj2(KpbK$d{` z-J$6|eaiLG!U>?~Bpu!woGyVQmp0(=^EpVMMxFS2?{9EOK zVuKU0qGYGgtM#`c%4!u@jUE?kGdLqnu_zs$K3@dltsH$ua0NSJ_qR3x0%gL{q9;oF zgjNbj44?t3!iGl6bQ38_)YDAz^EEXBs2c?W8N4l_ietaj-GEms24xVc+QzA57zSKS zk{OB0>#%g>9fDW}7-&dT0xiu>jQYPR>^QFogX-WLVXiLxIQvxE1$!(lv+Qdh(KJ{d zXXx^Fio3a=?Qk4^!xLck7hIvMD-1du1>>Z@@ zc^(+i1nGb56=*u%Q2WXUw3|j6j9DlA*9n6sS`~iiB@nv{SP5d3kP@ID^*#6hU%_|( zReiiuPUpt;9)`u01wg288B0Yzrd*(NLNzuF9mRA(XvD;JiWQ9;DyDCP1YkH}dGk9F zr;kr=E)3ub{bV6Bc9wp0VUrc%mu<6|5Y@2pry`Va5daX);*eM+wp?oh*_asQ|5ytR zV17;uVVFJ^W>nQ1&tE4yHIrBG3ZSXoH2&qwX9Vnib0Akh5&dLQLrfvZgg@)NoS z!u^;UJSHYfl#tm5VB(~m)XJa|Vsf)>D}-3Y1o#&*nGCH0NYuS99^d{4v$mPHf~t-h z>)hVbR+0G7KoG=$tRRGhfdU~JBqE^|SgI{V5Tgky2*o6oMoAU-0){9g0|XQS5=9h| zMFBt-38Iuy5tLw686Y7DFakfnu#@1Vkb*v{H=_{n;tnK2!38mZ5(Jze#u0F6L|Cyz z0Yq3sa7ak3!4SMM1kw@{V-bq75lBTLCDBZbKxD*6XRAVKgb;u?f|Nx-?y;z*As|Hz zU>GH(C9;TxD@f9k*-20($VNM)~AZELJe) z)y2ggLK_3OJOJUyHY)&|cps28C@DbBq2>Ggh+<-a$6Y5(ZDgX1%XhXO9aJuiWgJiG z+6V7L(`3@!Y8_xU4h};#@r*CHGWMJMVDJ`ml~zgutn7>s7kvf)wf_}6PjBe&qVh)A zy~~q;GGY#4}UC=-R5Mzu+ju1o%c!CW@kd)5~ZVBV9B-hP2?RQxqnFj(5BxHB1I z>x|49t>Efcb+hL~L!Y9eKZO?8K8Os^kUkVbh<^rxk-mS{JKvrA{;x*^=J~sKZg!{s zN6a@=-vp802^e)aE|!-IR_UzgVn2!0o^#5gNL?gulOJ@S-R zNx-A15;blZZR$)L#wwNx9QVlOXKPaiCs9)B(IiPCl2|M%G(H|7|4CD3_ulkZzUHltGxxVo~8V3OuK@M>ktPV+HDFs9b!G-%A>Cq0qq<8fHlb4(QU{>A7 z#i=jrSn#6oaj;ZvDd z1|YDOn=w&=-KN}3kVB$l;l}3}j0~N^MJAg@nKe7V@}1r?+`^1BpjBU*zj5(e!fmI( zp<#r!%!e=T@IEyXJ9svOF5bANcd>$)t1gFqB9H}?MOZn4J+q2&uft`Ce>Yr)9VtwQ`V~wquq7pJcWe?|GnD!l><)OR7z*hiK9vY%2tN5;yuoK1OaP$sk z%!g-gk=f+lIfOkZ!mPCHg$1-uQ>lSsB}!&7RE;!SO`|u#0l%hKFJ}_Y(m4aEgSQUMQEuod z*g`GX=}ck@X~}n*A=MKiG5vzW9-rj2|Gtmwe%cFo@DIObz1CLzzc`+DaFqv`rK>=sC4z2(u_CWBzM-crHy+L-i&4r^)?Cy=G31PI@)NEc9HrwHwx@ zd;U%e_T8TU&Gu(5$<5PlsebIS93d}Yw8D#`LIey1AcQ83l`UV{l0_{H%<=57LxZBz zi4R;Iy&rHffb;qIc8^PF@|EJWp&=mRG^?dg*r(+jFe?dHr*z9yi)U!fZ9u@$KYTFNtUy zB_tCmcc;_^>_7jBcYm&oOh%7i(E8phv=|C5z z8sdVVvZ!OD|Ig^w>R$Il^98*Jh^pQBkmW~Gl<1YuAu%iDzj~~>x=B}xzA_##+02R9DRE7cm zXb8+~HTm&%x(ErOD_N>{i1#q%g9AO<`{|ACy;JPo0^w8eAs0<_X=00Kop9>h~sRo zY3TkjRkNKKMMixf6zIch!ug@pRVwGU$p6i_)sApA1RaeQc_D}O{ePj4#j_?HolT37 zvVVvDaNu}PbG_l|W-@N+ymt9>>^+7UgNRqX_pcH4V6Yin?rs-rJH_O)e9B9{n|V-GkAam2gB=L6Kct|2Azkq1Yr`B!xyk3;8fgC*CG6xRXuY!)cmICyC5U%)O2%Fszd;TeL3Zig5 zPIrgeUBSD@mzCRfzHE|7Bt)YltHaS<$q|u1WO4=D_aO=xbN0;E$eMD0Aryf|GlVhm zlnr2rSKEl3&X?NtZHfMy_dCvg;vLXJ1W@Kd$sj}APSbvn+74~*vJlfpM#X5h{r zjLiV6`$OMx^;jNAe`L*f4w`nTou6D2Zeo%jd&b4KpK-z0l%M&!T4%9DRo-dL!$Ctw z?EL?%89t2Gr|$bYr4SL|OgtIaYm6|sg^7w3$+MD4jR>ynM9koN<9D+tUPfLzpfwd$ zN~=R~Rxrf67F;q$ptWibD09?-;M;3lndT>%Infifdc(xqYsM(bO6YM(ZK%G_)^K9N zdGyDcHq2_LP5go6JJ>SRmyXdpBVyX8F)TpF=x1L}V8Xodl%KR4AVfmHrTuK-^sH?8 z()~JK=K(wRY+7&}m@~7Q&-H=FMtf(M4)d9r+dwtK(+`ev!q9xjYInLAO1;;P~{dvgpd>_0g>>W$+ zKYRB7H$pqigpy4$cOvxTbQ92BL?Q7=H=9ibRWDJ#`I?ML2_tcS>tk?vJA9H!e6>8P zO=wXLnTSazr-OnB_$ba4a>Ng8iR(afq#phgc8Zs>NBaAge zZ-UnU9I1Ofx%PE*48wj7RPXV*HOW&*B96HWx&OhZz0{YC%&LD9@AXIU=ibu|T3Jt^ zvOghc^#0pWh1)z=No5ugL8LMsb(mcP4k^puVH3w~XdvSznxa7y7~L!KRy+?3mQt42 zlGc_-@p!VZLu$(9R#>+0HY2_!`TH1Q23rjzwnI0!!`mTxTN`LPUioU5(tl{4QP<7*sX3-K>$&)`mLwEKM6@uS%=haGXCg zo#(R@c28|Zv*pDle@}hunRyeZM|Z+{P1kHnBQT68LldXBRxu*h!IW!@EZ;NkZbR4kHEwaA&*k{1i0$wi z9ZU|4BrO>eQ!>>9ym|P7fmg;-j?bD5h#Jh9jYI}avf|L7$im@)a>&V+Tv`Qzlqrl# zP*x0?WyPmM$_1ILEu|3HX5LAC1^4<6cY@xBEUH zTi3gQAVLl^OX3@wuctW54X}AqWtJCw&vpMITr}Sb4O4Y!8iYw-2Z6vL9@y ze$wzZ&6~EnWTes!p~U7opVfo~6gPLMkPXG+iZ!ubJ{+)&TB8-JbPrZ65l~47Ve}me zub*0~t+NW*L1}LLIzOTV4*|}IlyAHnq@mUv4mYfrdJ{G*a zx8jT5kD;ns9|qjGB!+D>Ib_oEQaHrx5b|_W@q#$O(IzzOg{G*7=SA0?3KY6@`gZ5v zziNYY&juqG7-T#{g1FE#_@~12Zryu%Eb>L&-ST0;hmrbw2#6hB>Q?#5FkasK0hRa8iPDBBTI4E`1M59K!`%DHF$cXfGjU%vT|GB% zw;OABPh2g-V4#qvU?_QmQDNH_vCgQ;#aFQ7F@Qxf)WL6NBRaMd?<_>QPz3Z;>s)Y4 zF!*sRA@L6Y!85{F%F}P#x5Ke!7lffl2K3oDV(QT7lC5 z%008{XpoSQkdaNKQ?unZuv93jWPMKc@;UuqRdzIX-5K75MivHoa52ZH&b$(v%gG@KZA}Nv z_LA~)vb5Vf?Z!$ojbYVUEe29dRCa>8(gy}L)|)vstT6hwTxKEO;LggeY}Rbk)o5aL zPOvgiy3RY?hrJf;Bn^2D7Lg9A%qZF<_QnYJj1k8xhJk6h4$=oc*s9d={2a6J$vUuZ z6xb#s62?uNS;73qBSIoy5s{^=#5nKMXKe za|l+Tf-wro3pFm}TU7bS*F?$XT@B-n)5lu@d6r0QIC@2b0qL)Sn^6qVCZHZE_|Od0 zJYyRXg2gj3)3O1W9n{j5_PllHa>zbnczw+O!8bJDH|Lz!`4cRKvp8_X!Gt{t5NIn{ zPx=LHWciLBIfsD2;_!lgkA|FHR8({EIDzk8Jh1k!ZW3wYcIN<2=2;ga&?$KSnDoe+ zNzYT;?y0^RIZM0z^q;?={^hv`m2zO>QR{iX%BXygwqudWNtciy*N;bvt_E9Mqzwqi zp->MNOV_V4oCXZRi(0IVNPUA;{g>m}PoD>8Nv|(-$$Afo>*1ui_j4TTXn^E~v;H;T zjVK!t89-#j6?F-3hy6LFbpCUtHpka;6yh|!XgClAR>0G9YIJN&8G?q_o?}|%cajWQ zA4qy>Ph>(81mxD?aUmfCX`}q%3Ej(i=`e&tR}V<>kq%@{H@C?eJ!K$IEr!`<+FBHn z%Ho+rv*ZerH=WOqyGi*S;ma1fBN$KSH(hsZ4)M>Tr1$JUjS)j{97=&{c;E^>W4$ z*T+y4=+BxY3EJG<96N6{$3gZFRYvf)eh88?l$8{e+3sb^TB1rpA0v&K6vK z?P~|$Afhr_XBg1(;xuGM#`~+ZFK+%{`QTTnN89Ob0o(v?s58T=7#u^t-e*Rc{ zS|7S1P(cnq*25)-&HTttuT%}DV|{ilzaL5E`wiKfapIIIr95ewJxeDbnbL%Yw!&CX zNKMT;7X;xq`^NSB`H&Jbr+a$64kvq#2%v{xrk1psYKdsVT#Y|purz`BTD=$5Le4qp z^n20Rhx(I4#j4su3U(qr@K_#Ao!>P)wLf2=J0H$nYKs8E=HUE+r324AJe;&7e6N@2 z{GIs|lxa-7FJQZ@0Rj~C>Ri}pOpF+&YH}R+ZV*umK~gFONUadW8QBOTKIq~c@!%|1 zGcz(KW@ct)WpX+GB|-*f@%|^E)X~XJ4H&0nW8h=q-fXl3%KVE>DSQPzd%gCn@UJTKjwCwLKE-6S;~}y&tXrAMZWj=Q+D>y%kOElkj)7INqm` zuAcK)c+-%tJi8%@$@pE6Q3;DA^Ni^pyTZG$)JHC8&0Dq#j!Q3jPGVG+jRwSexsCrm+O{2cxvj`trqoD7 zvfY@9Ida)e7z}PojN_sslw4`ORa}sk>@d~g@bP-q2M!({pX=kz9{g}qhh_QU9)s7} ztbrcp21dwPa9a9$$u2}JF!NC!_zm`qv*#nJ7oa+6n2vsz4J7(IeB{y=Fcs_K>%iJ_ zRPZi7iYFHkr-GO1v9bxHKza!6cq*Eb8N}anSHpZNQnM_h8X49p=ru}Sm{*fKT>xt3 z1oMj`Gv3?^b+5+u83}p^Gv1*L*%CaMk%V~mXgIhjy+ymvd0`*k_ed|GM(OyFm`1t)z{Zx#!+nm9U zd*5g==W#^d)by8G-1-U`uO~ycGE3>RYaq&sx+|U^z=f+lv(>?e$9T%4l{sH44oAzz z47!_qmbp;w zXHn&atl)}7E|GwuBXRYN)kHiDF%{Xy&@3!n(=9$?(N4<}DWmj=-S0ndNDW}?mhGKxD+^4X7yNJ{)3W%iRa-DM9`0; z%4N3P9xLn5?=8x;5eO*=K;Ym@yeNy*ny|b?DeL@2TccW>2bD6rftfws{ho64N0dhb zF;qli14n?<4*|x6I8R0Oo3G1Cywz?>&=UMO{Qje_Hg1mo28v>ix|g3%38RTDTxj$* z6ulDUOUbXxR7RLy?ginmkn(r`=#|{xE4SA9cXMNwVWlo^s_G@~c@x6XtSB(50lBDj zLoDF;Q;ngo)^o1uuco!4TVn^Y?8Mla`*(P>d$GSyg8;ZLM#1Ij5Vp1r0(z$F(1H8a z$z*8POI5hvE%c~n&mUE~qzAUX;=>WPRV1Z-ER-Oo*ufBHoRx5fk3VM&<|t#p=D}dK zWJ2UT^SRu7BZxSvPT~ThE%wb|#)VZeh^l#J`(dG#+@aS_ZjQYx&!5D{3BY>rw-2h# zvv%DiBgYnruUq7>QWdMED#!8KPdd|>ca?c1X;VH9C#)+C9B+Ih#L(9q@WEL5c^LCs z7%Ge~!wk)jf5*e5y3DEGQS@ZlU&He9^>|>EQj(Ofib+Y~edtEe_Av18q%g=p)M^;k zK-PB)bP@`_M?FZTSqqB6;6s#fx^QmPl1U_*dY@6hH=IIsb%h#y2NrHEz3x)&DHNh1 zQdV#uf>%E}=-9}s1vltw*^d5NQN`i9a4Nwl47p#eXI>lCfI19_YBU~$^=!|odsSgZ zd!S(sSw~aB1m2D$pu-Vl7r-iah#PcHHA<`T z+B79M(J`RVTofBiE$yL9RtKZDFUehxbdrTw;yjD`>T_zx6(Xx_9m#Q`tZ83VXcRcyJ zh?@CxQ0h_R+*2IkhAI!MX7npv`I(#o;n~;;R9SgKYLXPXRxTt6j2I%JdbCI7E1$v# zuc~s{akNcjY#BZp7@qJ@j0KtCUkZxV;$jk~Tlc!Z4CkBek6eD+IA^fVw*`X1K2E;b zX7Ms<^2M|d7y+y8198TN=mj$aGAXav5mjQOSsQp%6?lCBP-!sN7zP8Plt?ir1Be;S zsGp5XM_MVJ`NGCeg*(s8=>y1=osc(e9#)Xqw+A}hPm{FTJ&&P&{clZ&-GJw@kKo%@ zdCt*%@E@NSO}gu?FQRwd{j|8o{?+m9VJeWXaL$YQtC>D`f%@;p|KJ`sZZ%*;= zfRUR?QDi|8Sq4Rn=voad_t`NdStBBfAcH4tmRKtg=Elk*Dfx6LbYwf(^}K95J%8>P zpS(}3<38_Y;m=RO!j2cHN?UJ&P!Z^D8oNb$uHsHxKwM5to0L8XcP1)XJz4Wc|N6ew*sGIo#IYgkb>UkpN)~`%tA3 z2gZg*i(~`-*Sz6?7}Ot=Ohf;~K>Jj{WKGoj+eJYlAjpnJb3%Odkir@Ufw>_eAt50J zrXFX6;KSU0jX!7i-2d+1#qqu_j;Rm`Kmsb^mgsw)K*~yf@K1iCOa5O4BvfDq4i#X1 zo6UP_E5jfG!DpNjfC&~wpd!9|rANN~Q|bP<_do5@{MkQS)!;j1#)m)uGm9MelKrp# z@qI_4NteE2aPhzua2Wt#4+H>9$dCLkJ)zH~^k9E<_J`EX4~n>g7{OD)5okG=cj zRP9RqJheJx$9+72<8LDV@AUtN-ligPq(Sl5m=uHJt7Sd{w(A4@Dc0FeR2SsD)9gI% zjk)7sH6v5B8m!q3n5Mu9s5*FyH(YUBrp>5O9={p}|LgF88G?Wmp%;kc>mlcGuV3x| z+l|MT`ziU}$A0~jz>-29IcKjwGn_g1kxv=IV(Evqe)R(tQ~cje&-}#6%h~p1IxO9t zKn%xZV0%VgkUo@msg7sz3GEt!#^Q9t%>ZAenxgP~D2%%Et7x4aNg-zp`GgGW0wzEq zUmOXO8Bz8QY&IA%07fx&GY|1qDYOFy*xMv?5QQtk7^4&iVj1`7{;;MtdcR9OoYc9f zIZ-mMQg(kuHo>+>ErFD{nlOpv9BtpMrLVbV=A*aGhVmzo11*xmjIyoq%z(}v1|L6t zSU#Y5+{+);`|XHch+pn|`#lsg`u^i#<7vJy)t2VJOKsLiQOIIMhkz&m$3P^!i3q%g zAzb$CBFA@}giw0ep_ARJ`C&j&$~^q&<)@wr(~q2KPM(m% zjUkOF%@<@YjNIn=R`rCyiR3>x{O($xkJjf>lVPHx_fXsMzqriJRaI40`e~^502q-R zCMQI>czy%PtX|a7v~sT8>eVIIlUuj(73SvDTbF-_WL&*b3>5}~Bn1f|C_>}^VkJEU z+^NJFX}JA6&RI*O$I!;#ztvEH1^OLPT|gC)HH#G!vnxrtKMsp9nbXp6_QwTEY&u|< z8qL4n!oyfIF4A1NwKFrWW=3~X_0KzIXLS~ts$BpE0YDf4dyB3vn%f(TuCc2{Z#dHo zG?$s_H07kWRxPHwN@*r(&}D3@WlS=X=tM5e08{|J^7-F+efJhGx`uhzGdodpO6F&5 z%*(SgzdGP&V>3IbM?8QF2nAXNYlVu|YNgp3TMC&|D6Un=hD^B`U6CtgRa~o-mX|B# zOr2`kZq<&Plu3#s0w|5my&U?C#?>i21#>Y-s8>p?g=Jsl5D-7H%nex0l}*TS2&WGe z?Xyo7ty4jGX%p7xzz++I0_3a*GhRi2wLcqmF;jc4FL=96s+3n&l&gBB#I{ASl6Z`P=?JOP_GOVWwS0z*M(*zl5t+?o1=u!p9AqZ z3-9WI+~?^;?DppWA*|`z)*fhbitHd7>qwaq1GN-O;LOa-xvHrZ5jZ?&hugskPtrRB zEk1`08^tJb0DFoeCxWsNJe&bT(5;kYAHN>d|43jEd)rR75fJ8jhaZD4Z<+RTa3AT| z?;VFx#g>fF>4$0K5jB`?>jRt5K8L$^c8RcCZvD^24or^DUX&2Cn>8X3GfqRh%SqJw z+1zw}V{j(V7j8D%*mz^xw%=f5+qP}nw(V?e+Z$|b+t}#l_y2J3r`y$as!mP!>6)&o znK^Ujc^*I83GuFHXx`t1j6hKprQUPK(HgNoMdr&9=I>OYW5`5}s>I=uv_K&->dNx) z#?5D2A|Yl2#Xp^N5RAp0Cdfd;o&zcs*>@sXsuUIF0ofnnfyDnc7J#ZLb#37IY!afP z5>`;641EA>4}F~Wy3b~Iz&xaw?mhEk&IfNUi!ce%KBgFL1UTHBjfM${R|9i-)yO4L_&p z=XAsFK2gyTQrLdDn;ai`eT17-0yiOy&Y{0XB`I)j46tRegcqDcp5TYJjSL({H&EY9bX_d&zOwo{yc7gq~uaRq#%+aIt2Gy)7OzB z%eH`{VM%HdE0JcFwqPRD(mauZnj$FlCqGMH80^&ogAJbiA>=zt$g z8yDg%$x>6{!$X+0{S;FCX*;&_Hl82qNq0ZOy-;r(i=uz!m`|d-?FwYmQqXic^cPD( zD_^sc>hJ?PDtx+J+VuWrz~1|156QDLcUu}$FQ%ub=;ZN0Wlhy+THb`Q5ju3ji>W=& z93|%@neFrdJ}=G6`TiB#?bPwLUp?R|MM zR=&-0T%TaCpvqrO1j8bl(+zBA^OZ2heo+;4p%i6fHNH~{ngwLK`QNUdmNE2kqOfr) zR+&2Ewfm!^6>!3n`Q@WB#BDc^j%YGTwJSP<2r5C9S5_Mu-RPH`&hsb|amWA2u78VC zXJ@XV|FImwQgb@J2sB?B0xyt!c_>2Md6s>kBfyLWpeGfoxYwUVheujsgYW<&&CM}i zot2`XGv;rXL6(EE}K`I(y=-VX#=7kF=%w-b=%c$|PgKLyP zKw$O+F)`~hAfPD2fcxMn#yOm7^-0@RSnPGv7)Sv^b}T*$vj&wIruD`js|8n6?}zFn z__sMa*)vci${gfQpS4$39fT6V2oefH0+wF$e9^--ZDJ|_9q1EW6H-?nvrk++HK)rk z=(pEb>LGmMQthgEwUiyozBm@beTQHf_KJ_gUczBSU(MrGoCnZ=^eet>k3A+hBDUB z6erAU;V=3*eV9=yX1Txq=P@3on57*@kn*QNr1#NJ5aen9EAe)f?J%mY(gRna0IV_4 zAEEDzbuCC34-5~8Zhy}|5n@}Oq4jqV;y3c)vC;|Y=Rt9R2!H;Bip}$l{CpwKn)loN z@dExb8%Bxw`9kO`S9Q9IGAkK&UDz9ie$$K=rv)PLN9{7_%z*`*bhm&bylyrMEr1xh zgCvA1I9{FLh%p3-8f8RKK}c|clu;jBRzk!&DFeg=p5kQ~E39=Ik>=5laT+fS0$(33 zIdu%}H&N`b_~d#R?MY2h8$i7U30hQjNpn3^6A7yl}8JC5*^Q(ah2lElO93Lnsc4O5l& z%MEx~-*NpH#t}-Y6sV`{4pc09+fZ)8@>q7rfHOmwGV)qx3a>dy!;(UkL-oQ6nT8Cl zQC8+^Z8)?r8vPmRo*LLj^>``r*rT3dY8+GvFoDNbCB_cuX`RfOkfASxmgo)^y_RUe zWsN>Zf#np)ES5~C86o>=5Y_REHR$k}%-dxZe5XuTmZB43~Z$o&9jxEPn)VT+Sm{*@*`J>g)e(h zoj{8@590FfA>{at+03Q)W>o~T@1qP8+W7_E#%%A9+WIZ#GY?*4vFE^NYF9_t=Djab z>D6C~Rxz+C4hz`I+$(66_dr|%c%t1Yzg{JUw*@nCbtU6kl&~AT$<)p5<4e%(~tmRgngyefo*o^RzsFpFl(;KD5NkhU*@!B z1Wfp_wd3_vD78eN!$3j4dT<^V=_@!}w0s%(?;)Fh4htb{1? zBS+ri4@~8?Mkl#WPh_bm(E8%ZY=%QF#bNh(m^xW_sS6h|qn%sPT_%PcSx=~-+q~Ru z7i)RK2iAQC+}z&gOaKzLmqiiuUHrAxBAfq-z}zZSfT7tvR?dy<0*sA^IIPoK-|AgD z4i}pDQpM`D^;N^WyH8%(&Xwx4PFFvOM%7WB3ONz8^UJd`ogi~9Br8c^^!1;Oq5cG{ zZe~i58(|wsIQ1Rc;pTOj$7)qpVa8Y8^3lyr7hh~u*o;#%G#2wABtl|1DExEoPG#(8 zLe7f>`Cumsj>xpGV}%2$!w-2&rM=|@w8aHAixt1fXE|KUp*40B6?56AK;9k*55h$Z zkzW-Rt2#cff?Bc+)PA%>#bza4mrVH7Ik1V_)1T+hn6-p-@3#24&wz;Ryy4C+pura^ zjr3sqtAXz^ET5V}lyZo(gnA~KRHq)562LoFpc#}yr>Ew<%COyRymE=WTn>0zi0r3} z+oL__QzOp0TmzPeCu_TMU14Puxb2mjL4Bn*(RdN{1tv+I5Ll2UhI$a%ygjpSE*ErL zRA(XPqgj=QW{VcMT7Hn;C7R5O2ag^}szq~J$&`$}7VDiwwwrwF^n07eGLOK~G{WTG z@~;zrr5spfd{@nH^M#r=3!l-BN|$J7nK3P10lDB|jzWRXVbVW_GEmRtDTSy>y2HOY z7BstRW!Czg8MsfhYE3qDXxchbLqbW(3kn}ZQb$fxlW@AYr?Yc>$h-3E3Ggga>+nEW zhJGiRpi@0hgOFqrr#3-_HrMP=#EP8;v=uZpkka}-*g>^nYRh;QAxM*vt7nyj31PXV z8kKh!=Tjc<;6#`&u9&sYhndxdYVCJc=~Ptc|LzPxJ|qVYaI@cto1$eiXictI2t&oK z;-?GSr>^+nb8YVTmY<~D>9C3dtx^A!4t_R%_I+J=d0Kc_g)VRCysP0%scJZC?xx5k zbX@P*(M$CQ`Vm*na7`(nKwADdec@M&ZoX>BPq}Bp9C$JiQ~D{D}+0_ZG9* ze%NY{EPy$){tNlZuCBOS>A}?4_lF&yV-z~jlO55c1$+~Q0$Ko=yonM~zJwB%^UC@!ajRj5#ZlY@*3H8Q6rgU5W;A(26A>q3%9;^oyXNK9UDrR_;U;oFJ&!}7HNKV|~9iJL93$soqajO$44N4ur&i{nN^jgu z)tKQ0rLoV0V{jKuwhfwU|ICVR;}HdmwEakGW+698tovR>)W&bk!O)hrqS;cW8$qx3 z--RN9TPE{$y>*gqR;*GW+Y`rESE2mp)~CS9x=7r)Qa&v$U$}_A%$bq{tuyO=U}zeO z8!yH?!`WFSkw67q{njjqK%C|Td=4C?FMeqx9N=cO`duw)I366I&m7bmHEbnT+QD8V zJMbM8#QixEu1TMd2GPtd2Kk^<$AH{-SvN z!5At8g+dGF?@6 zLPd&fH3gFCc6&ZvX6T6mKrNMO5$BMDwu{~NYh|K((DgFw)%eMoNhd z^$`b8j~GteI>N$URN&&~#!FV0^a?{sAUr4W$)XR~dQ z)R^emLFp$2avv!Q!x za{#T37L4}Ordcm}+8JCFIM1LpJwFdUy~UWEigzMRf0CG7*p#y*Sf}>=Q&Aukt=9S zhKW^?WIRRu_MzkPV}qP=`WL0C0#fieZ>?%N$iY@SLD5ki>eQ1Pi$w+Dp>TWtK(Ow9qK5wfZOARn!K;0t$-T3#}wRoYX%$k_aS{dJp16_qgiW9m{B&hv0T70P2zi_zO}p8c{v+ zOdU!S)$}CK(pl zCR02FAv3ddN8j+Tk>U`jF`Uwd-1CLnc&)n9zi(@zUj;u>jXp`WAd_l2XsiWl4_ow& zu0vf0F;Q2Q$qb!9LG|!#S2yk`+;2V?h`HEpL^$y+dHBDnIw3=h5uw&ID;CjG^iGEd z_SKfHT95`^LFaO_-|&4W;+nXb-NG3YMIq4jE9G1g>k;gM24Wr)BFNX?ea~ls%H^$5 znQWml3K)kmW!1w8S zeSOe56<7nhdUC$j=asZ(*vf0^3tNA{+LF>}YB{h~NG}fcWS_RztZV*+*D3nD(8Fn_ z<)P7ON>(IFz2sq_e9;lA&Ku8d+U8se6NzVQ60@ukB)r9}$h~Yx2XT-*y|&kA45KWX z#zHFE;o0HVl|-)1yaru~6@dX&jG?vEpuW=vFKpLmg9!OWRNWxLDTv8Ub=|IJujHL8uOH2nP|7}`h zR6;f2P*p%;v#!0Dx#SwcxzB97ylP8M>Udiud6H~XIhwvNN|(eD3bl_)51RgKYlSYs z*aV6bQxAG879F*Xp+c%Wo zmNdiaWt8FRC4l04#O90xrfj zNN6L@{sO?<#N%a}#>l>38+;uk=QuVtHo(lx0$+gwI}BdJahYKQEsU z;;R@U1c034$?l@j<8AcvZgBbKV3Rnv$2u(M$V~Wn-}!?jY9$rP+QIixT#(mzJQ-oyR)QJ%6IC4%YQK2J!6q zqd(9ksJC~!rr$bp9Kefr5Nt0D7XN&I5ITxa*hx7AlJR&TYtRCcaM%eYq<7`R63e)U z$0S`zHC0CL?~wQ1E>lL3gRT5+Y+UH@{rB{V-kFFWl=(GpEjIj=N;}CVdRt1+s!ff{ zizx-1e=s=N)V&t3>;S!Pc85RH|e;ic8atbl9z{tI^9b8 z8l4%bAU70ZhqK)rnNf6Uxpbf-_=p@%0^@Mf^&oB13xaH4;=mRj+|7?x;ehL#Y;Q<> zwsNpDY~&Y+07?sSv&vNqe@~RWsu(%TLD=SuN<$I8W2SI$zIjWAT@A_|>k2V&ahyH~ zy?79LMpzIK0QBq>!3xx{d&3)~a7LW65L|4vQ_vtNp*b8#eCmKc0E`qy&>SFNjBmeS zlh>?r>ct;=KkPJPkA2?+=U#;WJbsYx%O~*iv72D--TPF6XwyyM#Xd7P_`<&T+b{K* zbZ|l35vNWWL2L5;d>N2^?g_0_cii1|B~Fq!P^VC8Myj8Uiu6aDI!uq>`}TgZT9I)k zqL4O6$9((^Z1gP|{+LN*Mm|~*o>3q?h~#}4c*G7rA(;;M)t}=hwBoAg2RFsGYV-(K zQ2g_krFfht0oym&8{Zd3pu%G}U_iwB{%DY9NbRcUd>79}A=(b+vLBhz%jmB9lD^$h{=fUjs&{^-t9tNqGP@b^oM_GP>H?TtR@DsT2UtNPsGpDH_s&N`@dK6z^dfO+S*dFjCqe z<#x6;=|I;sVz#*!O)43TA#BZY9@h=+$YZvF>YX@_vhBba%ZIRJ{#%rX;b%+kL*Bx( zHhKQsDOgg!(eYq&OQL>fbCNP?uTy*Br!rE4vRIygcg>ImeQ_x?4=zIjKT+4_Stb-U z5t+D(B4?zxCd~cX?E5f3EtZ}SIWBi?u^oO{bb#3UnHDxo4H{aev&F#stq#`7)@o7c zhZ*FxMv!x5c4uZoS6kQGT4Pvo-=t|imE4*nd)}X~QAV|1mSoe(`K93@#*=}wd}e;r zjLOj2>^-<6&!hQaxgbA^5~p=~-nNua0lW=&2b#|`+@`gW>|T^@N%EmBxut)+>(UsL zemKGCX>^yA_tb!jb+uJZ=yy*Z_*UIq>US4ZkWKDHlMzTK+%SWy!Pr;qfO61g!O|6Vf#QLLEu3^tivmf zmSz@r{fA(7`1`{Ew7RJ9Q3J^GW5~n;iu+6A#c8x>j6XuM=E&9EPhWNnSFPE@O0a$% zT}#xPq|!D3rjE|;f{?a;4VOcd&-vQ{qk{-p$gz0WP103^Ijv3AK5*AyU&2!b{r5Db ze{R$IcKU*x^4u9jkCS{HWK$cWG4ernSgv3hKArJus^TE}_390NIgHm>slQB^4>_)> z2-s16ttgDI^oZidUba*ljJ7*@A;iXDApS*e?xi98%b40=4%kglrh!kxgwt_ZXPt+V3)=X`EF^z^g>NuOtg5ZpSZb(e!JmkmG;-$?i$bzkU%AKf{=~*93jo0hT-_6TGoNoTsuyleSv#oa&)gi?S|0xc`#lu^QLTugXx zx|z8OJK-IPbq@+A!A|J^C_)s_=%NMxNU)?Vy1k&LENAcuZXjV+4DUzIs^jJ&0|UJq z1mOAh9#_0AK?&?i2LCbK6sw&N!55GNF=ifuBt_H*;DDuB7074(fD%)TY9C#0ELva* zb;lMj0{JHs-iJ(BLE%q{0Me1{VT=&|GfhyfiZbiR8tCYfib0KS|7-_zpDqebS%pSlc zJdB9<8->AAo2v;;&nv4lJS+XPN3IAapp9w5TdMY(lOIC!<6^3!F+EBZCBqbex+82S zK5F5;z>IhU7uxy=pKX;{u)`ml6z%{xc5PlAX#zMxnhf@n?skVbli)Km2BQR|r(1>-k`e!Lf`))Q02?m7N19L(&RK|!o@>@=_ zKT*9Oi{Gw1*VakN8sGKaB#=pHM15_sMs^391#oDoT9N|UV6GX{j9y^XiYq?4=`F`E zG+`)?FFi(rhCN(hsan`XC%Nd}SI+sLQ&N(@Sfo43+rfn&To$*?=s14bg4bGcpC@3J z6)%ghZd)sgOjv|}^^&v&2X{^yZDjLorgY=G-sB?GWL9`OY?!SflZfFdX6RIUC%+=0 zMOUGaiZLnJDXhfEO2U(C2`zmruN5BY;~K)dcRnj`Rn8@aeC5s3c^!`M8q0xgZQ{`ZNV8ib z8fPU*kog=FD~lj>*Hr=|t9h*dd$t&tAR|YUjy79z4;4ktS}RU4u&*LDZ7R_QF%K44 zR-;`utF?qg8-W9_K%~(1FGKGX;#I(@>0lL`Z&|g!?Ke^O|9owSA<_SKXMDSexEim1 zOOjYqMF?i~zY$GzZX~f}RGRt2HK|25V$Hw5xBef#o#wx~Fq1GY)C$YWz{;n&GF9~v zsEFBcd|Ebi{X3J00eQ(KNIL6g8ikr~qvXLjQqE*$QlT01pGlX3i>!B^MExa1qYU^j z;QykEMYsI7Mu{bvl}Y)!6777ycMeqrSb4Tn9Dv{cvaZ^5RQg<29^b@-QThkqn-L`C zcJ1YomK*?9#aTGwW89jjRvgTXW^RRrt8s0{)1Q#zKw5sir_SC9GaII6!{`i@JltOI z4n%kmiidNCLLn+-MM#p>EUw&0u{q{Bq{^P)1)03=7!JD&o??{LOS6IFIYVu7R*LW<;hQ2~!b!92P5a|~c#_2DpKuG4K6vSHE z`mr6C-?GoqUZ4ClHKlKECm9vyVA-CjpeKR>;42RC?~>+>qf7(d_rU|y{rqe@LTTSJ zL*ghFyusoLtuGKEq{2{^8~;vh#S;j@Wl>3MJW@;GZTHh;M)$x)GIEr)1ELk<9cKnB zGBh;*+0T=bAtRu}3g?qMSm#Og4&4eq41N0IbZNGd;bNZ-@CK2VfCq&C7DrbQiLRLM zpYuz1040)Evgr>d@gIA8wVm1*lZ$UwfMLYfAYX+NAxn-+M1z~xFfl(lp&+N;2W_R) zS&@JkK9lIV7OI5LW$qnexj|GpR;Zf9WQ(9GXaackgEx{U+=pc#{_Q`ffX;Z2sYX-g z#OsIt(qntP@?eBI!(KvWl802d6IHP5@L*vhu*SxNlx-%z=6QsPG^g`-G(?I(_vX|% zhdsbwmBn@Kxa=GZiE0MQEyt-aiEyHXvt6e+yGl+xKD~MrPIz}iJ+lVcfHwhj){EBl z=uKQDo=t;=TA?jUnOL7!emlW*NhbrbmG(sNyM$ACLJo}sfVL`bds5%x39yZ5PHK}$ zJ^4*z{5Z>u4C~IJO+Qr(Jq9V=A1GheBwuxfQmmK0WjA^M{`4H9eEGe{FZ`_;XFxVP zGDJLHBl*`T+rl7OCXyH%ots;3BeTguqjXHqNi-v$n^Y+RF_->DD!Qdxi!}53tl+0k ziEiUOP1}|W6Vie~R1;7~0kXUZj>V65Jx6#;dU)E_=|T_S+3i|%F;Bpb3lH8~NL-XF zm-Z(!6ggbL)qUgH7STuzr^@R=;HK7L>tCUb1^pCHr%`FAx`WGk(iw9qm%jb5oDYs@ z^Lr-i&Z4osKSrNqAgLG?H9izzK-Tp#qzP<i?tDUE+1u^CR2`<)ijBwFfJx#`E_yl+t^5f}gpog#k&HBD?rF=1938As zgytM*^HH1q>rZ5V7F?A5*aJj4IGT_!Tzn7$tSSXbK4$SE4!qtaTo^}7w(e*J*mCeM zv+h8i6 z2{K>uN0K87W8jo+t7)4gH=6;RJmkf4X*>$6VAJ)_DxSe?wx1Htgd2E|?@3w9&zhsV zn4cTI#!3sw{18a|NnzW76z*7o-aI_gis29VS|bc*=Y6e~KO#b9k`^KrdB_l|ETSkP z55E_7^dSr`D3}of62}Wnr?C7%ZWQ=O*e(o$cf&)x{zQ*qH(WWi@oGS|twkWgyt19j z@W*<25um2_mm9)3d(_DhE-BW3EAS^;o5);vQ11`u;>aIO z@pmTWcs)|QwW~vd*XD`#cV>x4B4g48#c71kRPAr5i zSt`E%q5+pQIxo=OC z7ib$R&KSYk3jA=x^BL#&m%2)o#jbPF`ofCH-~?{M6AgU=c8)}BZHj#}`*fo9Df+8( zsa^FvE4#(%FpM~VydUX0AF#SVJL4@tRvVZn-}G_u*qEBfEd(}}faxVR9L z4LS3GD?fd4Mfdl9tg3_F_I(<>el_2oOyqIC;l?fZM%}NA*YtPKI7MRI?{iwI?n}Vk zAw7obL&$qLH(MJ44J7gQM&!G`EaS`L%0;J7LjzYlmK5R*D6H%%D);oUyK@q{&g3xc zc)fxV;NNT(*tTV3OhWt;5eNT{ukSv3T)ffE$ndgc*spXYaB-A#^@pg59rx2?1>_Cb zu>fLBXxaNf1k-*X1Ycr$`>$mxQ&YejWHZjr;qLzHkK?EsG+KR=v*@95vJWOg@ti9} z3Zx)MS3y@Rse(XPL5T6Km}DZZyjq5dtXD=dZuowGyp{hpMx0bYM1nXt)Jz5B1k?nn znT5SKPk|h8Lnh?^8bBi6{~Ukyd6Q>trD}r5PYHI*2&P#aYTRI0pI++sj%Q{NF@?FFFWnaJ{XG)H>L>#f&`?nSZ`EzT z&^qgiJIn|E7h>sFL;cdXkmthM8~<#}TwO*+vtXdjZgw9X>~1P1hq=gXIf%j}$S-0h zeiJ{?f%M>6e`0LTPei?Vj-LcS`f&1Vwp1P$wJc>BRMa-FIx9PBuCAsbP1L^OpP{Rk zc3L&jf8Y*$woTazICyib!ufcw)lYT#8j3Jk7N=Kvl3Fi2yAiag3nl>41q<~Lw9Dsf z|Gtj1##Y*rh%zw?5>j;&>S(k~COs*N8*Z`E4ZsoqRlb9TAy1fb7$)0)M4c6<7 z#vI^eN!8_qQmDsz-V8iz;R+)er(-OZSjCP*r#ohMg~`tOV29Ij0^?8AAYPjP z*oFHb-g7wfA==&Bvn9-mi}#LF{;)_Vh%Jid@1{&q2v0!I_O&h9_<%Ho^;#weLAl+5 zZSqyECy(UNVE&!I&^XFQd8WegSLxIyn2w=RYCJEc^tcZ znL1V-cJiE7KDcRoO*auxg7*I}{Y%qKP*8=vt7(^=S#OqCQHK1!98jz!iHUJvx3iyf zXZyEoF9Ow)1Qc^U-p}UTGYOv)lS=#54Gpm*=k(Q!WCJwZ?Zae0KRt6P)6d~5EUy7TGk;m&6j@7yb)3?P2-l4SBq+{TB?>&-91=1uUdLh zOtF+c$BM(HRQtA#B56x1z8GS*OC_-Qk$NPRn!DohGyTxqTy7v zv!I7@Sf8ve7lGPL|Bjk;mD8krT1giyhb0C_7xB9ymlO84R0eSYBFzq({?uT>>fg9z zIJMWw0_qcgXX&(jRiXgm#I;yiO?&+jPBaK`!t@f`zwVdStWS4v{0%%E5@at-?4`jM z#f6cgkVHzIJ(;M!;E99YI)(ZD=;1ly(tu3eGHIS%xklHzt$?mxL{f=TuVT0_s!H|rgdSMsPbNm)Aj_6{Ji%{Kd>-grf`tw^bI#L29?Gvs zEYmHDC1X>?Jf_8Je@S2k#z*}v>4KbZlCjrf(9*5BvJSl0QRwybamL?lAvL%zP6ns2 z?P{OcHpCMn#VBFf_m za-1YyW3R&g+bU8evfV&FGLywMGla)jvDb@>Fc1Vfio@%;5j%i@3NK9|FO(1vlb5mh z@7`w_t${v8S$a-hxS!H?E^0D9c5v}-EgS#btQ|3hW09d(MAOMwcX!GRJx36tgoABA ziiE3#qiVHAhPUm~+Og$QJ%8dd%r4EzZ))3BH*-P>5_AxWrIQ~Y($S(8iRv&AQ<^q{ zpgvkM3_8HL1;?#`45cLN2_D0}uKA#CcTk6Mh^ROeW0%3HZ!1i-6W1FZx`$O+lL)G9 z6sxDkelon@g7d)|_nW3;nbM%w;`xB?t7=4mlH7aFT!h?4-esY^05ypnSw@<1 zf-wo6E*1@nI~$u^5LQC3$JpBKAVv}zFyh|S(faBX@8Y>8s~y*ve4i)H@qqiNm|Ut+ z76ieWk3uOUItg~2NBy)DV8`DA;Gsg~L23wE+JMiJI@fI1r_kz97q8~PmOVf^H@#?# z&7EI}h$et$j$pF9`5j@JBq(UDkW?c-B+5%1fFM)mmlP;3c-}U&yp?AbX`Dm~G7CA1 z9<#tdKJ_#XDj`M-T9(5S$-9HyGo44Vkx}x{8%f;bvVhh!qJrWyqzMygwO}?w;B~BG zj&JYnomyk|jovbPD~;0G8#AtoFvXeCn!{F#>VhX=*k~(r3yc?sfu88B45cx($V3M0 z8&?fyb(E_sASx);_jDQ*JYg-Z$+ zB~x_W_Ld%4>JbqSeO7fU%iJ=b@nr^m7MvkFU`gyl%wfKy+F3%9x&AeL|% zXi#C9ugq|FDOF-Zn&F|I!A5N~YeX~MzAhn_Otnuz-<#Ws9Tw~>t6 zxoWjxxpp~s;Ia5L>GEw0t9gY?gw##_osJFJa6?h`o3Ui74Wos}^_Q1L-6}e2)fG`+ zwpl%&o5GFKgrD&S!m-aZTI}s6Tkp*7j`mGHw3SLtUW3R2-Z*mM>{urBvH-FMF2XsS zNgJgC6Qm_aMGC~kjB&rbAu$u_uDVz$0;JZ0oRk#q4oHQ&8G}O;IkbUzp>a*S zZMTXHF>=DbyBr7VPpihKLLCR6gZ(2AGf0gW^>=MJ!qxbttpxqH^otk4a+6bAPa*os z+>6qhc1rnlNE|OiV9oT<^k9TxvAQOeIg0*!3@`N8;0BNLv+$``o5#i3iumh2Pmw)n@ zTUQG#ld22Ug-W#OqErl9s@C|scG}e6Qe1*m1v=s)UnDj^+@lt!qMtJndnaLpDRm2)#9*cM(d)6~yUdTFClDMMQJG|2}8EzP@Ip`ZUjk+Ib6Q z+O2Qi_`>H2gt>1_YoQP%6S_zGTEP(=A|)OC+-V>=^L_0n&$iAospYl09Gn{j?n>AN zj-W;3xZ5Dwb6;kb1{G*NvJE(Sv~=QYG>X=G1KLFG?=zlr*f4I`2Cq#-$Dn|_1&ySO z^nJw-UMgw0h2)eA4}UWbltoGj1&!_jlqIPGC|4J#_^$KpthLZny`Ju4-gMW*UefM& z?|H}#JjzOzZml*$2e4AkvYXs17Y7X^RBiMMyg3yEw9?7M5#v7d)ZUESM3V!ZQ$G=8o% z;KH!LwOl?o$3zgV!&Sk}Dl#TmWTBIHy6LJ1?;xDUBaCNG9a1PJl7uc<7(|Y#!S3~m zIjKC8^1@$(F2YNewE(Bv0U^RL{To`g0@DG7lvcp~gX3iz3s2+u9sW9iRJHmmznJ$( zp9?=iJs9Y0iZUr}w;kw zqJk6x>==yDWal1SFfik+$*uE~0sc1Ehh}1kLkvnenlG_`;Rl=GR^(Vl;WWGfxJ!Sq z{M(OCh7(}d85b+D%I013$66O8Ov^48dREYg$3r)M6ZkjwRSHGAy8h;)TNC5%1EhY`w z(&4~22FdHJoLCfFtvG<=ge}{H(-c|Bzube@*Gv8o0xsU=v7#Bb?&rRpdlEetPD7Kd z8Sz$QxVK_~i0TYc;{k8{n@XzaaFVUh%oi%S#4H=$vA*|a%QXl8Dw&OWc8AR-_DV1q zm~;d21y9jO{H#Z&aC&Ce?wuo*Rc#xk>$@Y~qnWw|1I+Yi%51ZFIkpVX3&IR)Q>Up# z@w|ZP{qQIR}YH|c?xd>c|+ z)e!RUzv1e#6LC=J>WmISqeM$B&~TWza&^;^T`|` z{y7{is~EBnvoBC@rKsBckr|s2r8XY62z01qT`;#(C;y;AbGGH(bJ#DFC}hs|SbS~W zjb^V-BtEXU%AfYKRwp8oC`{tg;&bR$(xeqhL=T!kFJg6(Q@=Zo9U`R6ps$IZRb6j! zFf@Q0Du)^(I()2RSI(j|2kW9lTPS$QzHz`Z!oYG*E8h)v*W?~DlAkdwILqr`n6QXn z67zLTs~Y~o-KIc3to1$l_nf52e<&utjxQtb%h23&z5KV0x7@Aiu`xX~^WIGUw)@=X zp?rX%gb$1AWWr3*OQPyW4SCl=+1iV@_+RhcHZtW%X`WaU)H+I4j)(R=ue9F_xvb}V zh#C}IDfl(6R!M{U?R4lCsbehiV~(kRicK5#T|Ks1S(^!ZHroUuMhqN}vL~JhoX)K@ zL1FzcK5Vb<-H4LJa%-w37$^BLt74=>LX17ArW%$A{BxxBr(kyD5F{E^n3ZsGTr!5M zSC3QF-{?4gEwS$G@Iav`p% zHYhp>(BK7;nO#1G^G*c9jBkWx6Y&9KIRdQgW$XVm!p^55S|Fk5e$cSOL4vFo*yQcS z2*SBGqR-ugaA9isR)A>Pdg+P35R|!c8uE#Tl)y_gAwCEro%r9sAvReuARe1ze7SiA zH{G)}zf1gOE9<>_`}``y661g0xrrLy2rm7{>3xN@WL?Fk*?(m|T`We+eVe*ms!865 z{dcQBI!}(IJT20u-`(bxWOL$-xXa=%CKM*ura%v(+BUzhZfozj1ESPn!$h&l@1tO% z*;)EHHmaNDHw`26)zs8%+8ZkcYt1N#>MabiAem8zTML61#7YGfJl$<-0^7oPps_*x z0GMSFftkI)Y`{w@@ap|i`*}j?&2W>bEGp{Up#|4BXOSr~ooeUWFWHaPw&--4aY{9? z_AR~d{Z&R;#X%soiCqD*7+C=N)Biq=CSv1k)x{9g8fL&bGo-Xl2$jEXvP|#irq5BC zjM|IS9DPN-mvFe%nT^)7)5&pntJO}0x{3+abCL4|2XumKku0?HkZyOHe=%`wA{#Hb z!V;&l3otUzk_2VA&na3_*-~C`RvP}_%`6zS;9FAO4awEV$Cy*36TWiiJthZ^p(FBs zAa3YU_oZA(d4WJ*KhY#5!1(g~52E)LHHJi`kTE-mt^l6{_Q_^tNZN3b{MC|o_ z?~?_W63vxLOTa9wQD^V&>g0T~fX&6_$fX)wYe=WYly58Q-zMfm6N@PbRdLW}y>K0A za;Yk1Ha-kP!HH$^gSiYqPL^*M z4oaS5ni7e`QEq;glDyulc^%yfP5jIqTK|o3hmE@Y+~v~6dlyjD8~D{883Zc`ha{>{ z+0|F#bFZ>Oylf4f%kn!IfL6&?sjl6GotPC^`U!d%TsFP8ll(eG;f5;KGOUZiDXOe2 zH+uxkjI5|z1WG(WL;`B5nU{K5azQez7R^=bVq18+C-mJU*H+m|HKi)h7087ZO}!;( zjCG(Cp9I|-ey5brsd=sB2q9%op2WVeL!D7XXGDl%->SZ2El0m|=*KUbrr;lo9`@2< zP!jruQ-BE?Q~23KVB^p(-Fwi}L!iT=YgAEhrq;^2y7tFBZ-Ml0sYH%} z%cD_dqFz7*__WIFtK_%-EaNU91SiOU$QvF)Id~8WR)%mfmb|+_fI`{7gX|LsLxU=p zX7{qyq>Z{9CL$b;KmsJ@RNZb@vD!G!$!zLphnTpG3Yjj-B>1n8E5vEL8TAufRaq0x z=P(93H3t?bC{Lsg6hOe_hrCM%=)_B>QNv-;jfd*sY!J|*sMb`V-I@qLB=jCK_|LoWKRpiS0Z zB?=`x_eT7=J`picKmaf=#TyfUGb}U0&91JU`{KC}ly%^tom_hs6rbD%Wo{#)K#YN4 zy!S&5Sid`wLUlKz^!2iC4+V_C**tSko})3m@|p3L;)%(ih2P~rHvwFbftD|8KW5XR zjP^~S#tiWN4iPG~iQ?zJQi9%f&G`iJ2-?iK(gl_Xt&QLWF8qGQOSI-4aYKbw(7v%S zh}ss@WlLZFOF&K5`HH)L>B-d_Q2@0Js>H-F1_*2pc@r`%d=;B{#^!M8mwj+a-NO^c z3i=;?jpdwSM}JU~E#xVqHRSuQMTk)oCJ{+U2rzL`bX}2goVYe5&&Ov8P=AiSF44)W zj#og-yx6lzqjVg={Y2tZbPe4NVj>O+L9m{?pT*?~6`(=vPCcl&E}$EO1dk&p6m%4Y zcbl3F)QvmmIN1eX7n2)&%KsW1a zD>MSpVsK_dinNzh495!eHVy^9ElAi;8lK$qSH8qFDcov$1G1BWvuM{ zp`62stBa_yy7@VK?tx$Y5SQ(yJ2~9l^VU7lP+1G6L|vvs`)UT(KjQKk^2*bWsvj={ zmV;`Z-=l#BU<}{53k@G}JbhLE@VsaaD^YbxDKZzWRvfOpG|B3>rY*jEuJ1yZTi+%a z*x&55UG8z_M&=xaA~@_Mhhe75qPU={BsC@I5b%uk7n8(9D2qYu$MItb3i|U)EskGc zHOJN@j9R%usjl6CkxHW<(dv-C0mT{W2&g!{LtiuuEx5$EM=^^pQB^*Sds?Ttf%%eq zv1M&G7~SQ^;3z@?{7v|-odNu)sQ5%E6*14{FX5;`Nr(J!M|v+Aic(tg5CWo&&s-yANEr+ ztExy?%hF}GD_YBWCb8Ehxb)#1=KF?D~0_wEP5-5|@Yr|(wSI7Zt**Z)y z#jYlk_O^AcpK_leAoKHMsu_x!dRce?D#NT<_Cg&zFjM*zKqN~eQdQKsER5j#Uky;u zgcVgLSO^>wY|ATCVDMLy@#xK@eOsDdF>y75-b#hI5)vrndNt$6rB zlyGZCMQPSXELeAO6H)twJ=4nsi{3=-IWy;M8@-C z7g+z7GbMZ-^Q>`8$u9jYAY{}3KIzo;b;72U3Qgw5BC9CNj6*mhCP`Uf2!g^dV#=xn zIlE>}Z&~LDdtr)gg%#+yX>Qo2NUAELTwb+XmDW8ljoh~vR*m$3ZIOWyNT|gW0xOA? zhgJ{^bc$+0CZNe+J&6YjDujX)8981~rxj9#jUmusT#8g>~PjPI{Z^r$j1Y;Wua=%nn_IVj5H+cck+JM z)7&5Bf41B6{wD_zm?R)@{DbEG7d0Wgnm2SjN3gtHQ^nVoky#4tjDo=+IQR0w45*@S8HpU2r2&D)n#6--Rr+s&FkxhR<4USlq#e1`zoh zO_l)gg9(GdH{Xvfye7JT2VQs6q(G%0QX#Jj2o1fj;pBch?{AjvIjzR3drzADJM2zt z1#<&$FDWizMx!v3Dw#*=Sqm0}MO_3Ue^&$G`AFR2OW9)eKC58&LQ%qBMt@G9KDpY% zt*lPcg?fYa`}B5!k_512lJj9)AeIfX4{4BTuKHX z&LvPHSE;e|--UT6S`Wj6DcDeA1W8(_%D^;Cg_M{m@ogal2OYKC)rQe)RA6oYdjc6E zQs7!T%|)P1Nd%^u!fSTw)#mlQnHheK*GS5kTyD6sp#WMmRCZ()RTP3Sd^}z6^*009 zc<4>b`F3PqPn0-4(Z+rwIhb0KLko4y`0b3eoo2STCXRP8R{hJe&AnklBWgE-TGC zH>gxkShen+1X(gMMjTSkuX+Z8KJQis2D1x2!;ugqw=g3ialYTcJt*X|JN%?2=VA`%*vMKFEOrAOl9M|jByG0GwqEJp|g>w z#z>9KPpT2u1-L#vilhpdLSsgn*Ody|l2!nQfs#x3xl57HEvNBuGWa-hpdtv2{`{m% z1E*Pm9K5L4-S<+U$}tMD4Jk)KY-~B*@@=-T{GCSyaf#7h7i$1Z3R7Hqs98eV@5G_U zb;!fwu))h39lqY5sL)A^vB;b_1dyf5$LGCCFU|oAh-cA{R7b}Jsxp!KYgZ(Px?b_a( z3v?sfd>02|zgPLXgZsQ!hZ|{Ay7#O)5_%run;e(jrj)k9)8*ccp3#0Fj=q!14-iGf zA9Rm-FN{7r;J!v@WpN5jMGcPih^obzltY#?S0uPm2LmUJk|tJ=@MC5PFC{ZJV!z%@ zjgt7zB%pf4Yc#p}Yome)Nx~9IJyd;OYwveWcS?;(8RV4$`a}0%96qqvV%#yVqG*cS z$*SN7Igy5{>ep|wZ@9%)GG7qKW^gmL-rLHsuOE+{rk|{uASwJm2`?fzer zGH3c(%hBNFw7D7aOJ58=hN~eJf{MS<`-=n+N=tCI8JvVF@=p5wyw8AF`TvXm+@Zng z9`*SI0asH#s6#m6Egi~J#ar!Xvs#O3M$WORQnj;H?Kn#o^;M7KUJ+w{i9yq$4TF4s zm+u+-TRHUNbe9sNFzP{nlXDvRoGdmXy9je{@c{V72!Vmgsr(L6YX< zgNn6X@_h*|OOX)?=#d?5h!+;YR-{LIq)ky^c4lv|#!!lM$rW89r)%6H{ybjm$C>dn zHL-n6;fsXtEyX{Hf%jP7-z?@q8^zmqzIt70C!Fk>)J`qCv!z8d3)7S{Ii5>v+}T|n zt=X63ya|>Kr#xB)FT}{=^k{wD5di7j8`GUIjT3nUYa}a}Vyj_mY=)d7=~5g_GULlS z-D;;gU|_RmbCP&DQLj*yPPv}D@ZTKFwSs(~Hi$14cMe5?%3M!XNlXM{O<#>*vpSQx zxS+Q~jzveLWLa0L>7`T19zVE&=73wgFv9bBsgb*K zhpP{oaL61!zVRUxkvTzpczwxAotNDMxMy#L!l83zFe`L#j6GxU-K%b*5b#Y@l(TYH zi=wVRnZ?9u#{n(5&hAgmQ{&!1fKUY93YE4L>wmZ+NKc~m)u>TbP zFWBvNm?|3Y$3xM48Tj(A(vDJ*OCy$wJNpC;l4L1`Gcwf}8K}Px00Q9A;_n79?+6G_ zQ6Irt;lgE@ch>M)?Q2!tZD>)gIN8=VEK;Q!ve|J8(7O1g6%#Lkh7?Tt62fC$%=dkm z;IE_TG&M{w|M9p_C4=N^k}uue2mAR91cf4up7+}--^C5az9@Z}aVWM#8iJ@sSN-8B z60Wt`X5DH+k9EVwaCU+9b!jmXC6C+Xlb4`qWG?&qVe+;~KGn=#;VLs7j6;Xp9t!Hr>O2l6NmsXxXQRyE?rG?axTV*pnZgIQyVg29WLr338@jyG`r;Jf0e1|+ulBf6= zQ>3*EK!gW_45stJ7fkdoT`8@1Jt+sKL3u880`2eF$E)_f}jy7)E2t+nqPnJOsIref-C0K!6@8@+jjEp;nR|_FL8!w zsE3wjz>@Y!O3h5pmO_m*X!)Qr8G`X7=SC%?4`sr^5tgKX_1Sg2i}LUHvw`70FfoGo zA%DQgtgRH4*hdkdQi+vn1kZ%@&N%RpvhhJ8_*VOFu1 z=MW*Gp^fM>@Be&K@5%MfZKrj8S7-F@JgA-L^VLC*AksOOf~IK=Rc0%G5tz?p7y+g^ zm$VSWDh%mVn*$m?kqB1GVdoEP$o_BfYTd^$<0Dv*vv70IEqwc5kcVhsKZ5l)ksq zr`%fBqgJ-0UelGGalyf^4My?7c&|-nvC*0vujGFuFzI(naXeQ4k%8;%>zV1G)BG!8 z@M@~Z)tMGJQ@J~nJ#}K(U}4mUZ(`@YlB84lDccyRJC0qaxvr_bdB+a}%4FGM=-7ZQ zOkfNW7$8PtkxR)kGYD!1&0$YW@dYJ;0Nd-8(U__L!98M?h5n$`*ATJVH>NO6vk=j= zoT+X8gnZwf`P1L>`|A^2L|zgFisGFxAsfvBgr9gM3ZSZY8ynX!LnI=)^4+y4Y#3oD z*(Rw>10Ys0DPjzA|oKckXMO*nw`GQ&(=Ez_1ECU^ls}F z^JoJo`e@b%T7O}EEX3vHm!{TbNWX4=lfilm^Q9ZB=JD7ZrZ7a69T5!5U{%BYnD4gQ z>)_k*a15_1|DE;TH^mMiS(zDhTSTG6C^kqz(bO*wJHznF^_OU7upo13a_f#XMH@sk z@WikhbV`%Kyllz-=|W4C@6l~_O#=X8SjL2-7}cOi|6IJ38u^pTvXG*DuS@$&0?WkEO8uIry} z5mPkbgT2VsnK#uK6@>VrO-M*}JB09&qejJUq8*)tS~YiLFQBR&HANK%H!b8V z;GisYZR{=qiJoA=U#aQcU0`8F3iXy0F$8`r=GjgR#zRGZ>6)0Zi7sVTZT?gRGVU{o zdDUTK229l|93hO&vbNcpyfVpxDb+BiFP4-WGjb`SM@U^ID?-O2D4h!{H$c<%@4$#B$lka1d|Bv* zdScdcUS&)2*{fl*^&f5bJV!b%^&r&a2cfs^b;id4@rDO-Dk|^pFsFj%^>m{*3{7lw%#H7n1HYMI zL87x59w-8YGqJ07K3R?@4R4oAKp|39?881FoDSi6v@cp=ssdq$r=EjQm7eRF0bMdf zh%A`YW5dcIxn>{(F+I#K!E+&z3!B(sAr-yyMT5aee!eRA%=vxu6#TJ>7iS!Y{1-i_m~wvM>dtSQ!+ zbw<;o#Vk>)C-g2(dQyx}8=@pb3QiDKzAUi{Y3SMV?;dr z$fKJvF(FDJH!*u2cdeUHaSCmxn!wAZC>oc}=UiszU85I_+5HxHufv=@q<^#Hg)G@? zT~)vDm-;_f?u6na{EO+Q|4|uoDqwf8?(Vj}_5JOfIPLH5)qTuTXYJmP+|nTg{IA>+ z^hjy5cPJimpykSxU&-K1w(Q@(ZwB&a0%(r+(!2_g(TdJdn&0Yz4Z-|n)K>;wSOm(m z5N1o5VB%B*B^?!6e|l80W|r6pWX*APVA;(tFj0a?_%=Rn_|Bzi`oMJU)*%9yDYV%1}5OW{;HaPCjBf9=?U+LV>FkepzT{DOpVX24rg zT3QjglDV-5wTNYNwAEnh6I!isv6H}&1No5lribt0U%UMqs~Nl52f=y&@2rQE z&cr}xM-CLz!)6(q2-M2w7AKl<`%I)7XcpvH>PH2iuK&mkVsh8mVfU zra-mxXXgf3RiGIR!{Jw2O>Z@yFz2x}_|B!M@IgTsZ-C%8 zRQO(T_h+)l+T`*144xY&W!`{q7>N9x#L;?(z9QW9Oyi_$o4gZTaxR{P4#-<+ro=7r!~*rSl#>-{;ArwA`^#IPr%h6IVs~&L*)@wB)P1b>vrJ;YhW{Im!UF zbhwrrD%a7U`xZYUGRHbiDqHifyw5{^zlX&q%XI}t{h$zUSDk>ntr>E+4W&52MU!z8e!Vr|B zrt6heZf0g?|5FSX6IRglg{$mmvY3WbW%dRPSQ)?UoDezT?QVl<2mS?^XT6&hqYxZU zak_`mo?7Hy$`FJd5TR^M9oG)d(hJbQQ0)%uPCE=vjKmE{LQK!equ4Ly+=&Bdf`#c{y1n1Snx53I zSs;`dP)oR-l;*c+QT(b99(<1P z*&gS(UvtkZ<3o3=;jnuD-?*~m6=P(T60|ZIn$?Vg!AlUj9a?)tn_(`U2H{(1zTt%? z8+T0f^Zv*6f5ZH}{zna5&lg7eCO|)-Sr{2z1549pS4`M z;dL+9z|#~YU!*{N`2_7gzq3joU8ieLn~J8=3i?OBqht{CV0$P!6mY78v&(nw|FibA zlUp}~`feI%%Z{l}lG@z}EP zJFY$NHGAJybsfJU==J?79#>i%FRQ}P3v0qNqPQj5=r4^gEP*jEL5-Mg4BMUfb&W3 zw19HU40E9SSzI@kO;NsnM7nC2K-J`JX|Jt_9y7}^X-q}+Sh=>>%>71AoAl4)ze5$x zbJhDlIw_8-I3_A)DNEW4(O}Q>aV67)kgx6;KRs^x)OA%9=TOAFVU;zRW5CS>1=)-TO!Z1h8vaXn)&T>7$?S`uF2!7QVba=1!VY(12#i@?%N)1Miavh+ z-LaEzp`h`5JBFG(Qsn!l8=fOY`BJcvebSnMdQ!O1m^nqivIox>Qgj&5Btx@y$b zvT(YsPP&;=Ql<*rY=z5(?UJ?JPT-=7qN2mFeE|ly6DCmbt}cwQ3^%+M0m+H3Bo;Ge za*uc2;eGrs9_ZzUhtA0Nygx>gV@C}gF4>)#G6-H`Vk+0nyl!z*gO`DDIS z6tILOn%03Yuj%3t@wl>%wfw=v(j9^EX`_cOmTEp8r}+ zt6zxxce_{K^OkaE-JV3Tk=j+u>Nw3aM;FM4joYB_roGxvX{CdMfRQ!mx?u(3)5q%6 z4kZyOOhFgG)!zZ6Ua2ej9Zaz8pKQ8XK8uOm7dnPa@8y5W&E5ul!%?E{kI9-(&0+pP zpJ5EeYCCrLV*XFN)gF-$+iyoVUoKqu@G)TsvD=%mW63vYXe(Hj^-Ziqq2bIvYDD;Kx7H zo5p zbV=%GK~jmr-Fsm7Qk<+JcZlq>8LQsXkeO|PH`;nI=cv~#O#NH-#6vs9ckSWb`PawK zQb@aI{X3$YZe%p$i#JRW4K9p9SDmnb8>VWIQS}}xh58&nYy3vEtm4bt)?izH3E!7$ zy1Ba>|4RT&d=rQ5m zQ9nge9Snuu$H#qiVO0yyp^Kr+0zuOq04L;9csP283!K+kpmf^1Q89x(d+07RR|;ez z#O5?bh6s36fdC+4UXDsX01*d~aiY`O&XcbEq3>%Bt%J>24!WYCc$i2CUMiX3j>sWX zwISp~85XDT8a_sjo^Q+6wdl$4-447{1mXCs%J1Hc=U6NA;^%Tp!ztn+Q>lj5YAT_% zE^*rECjLVgW9AR}uc!DQk3%u)ddIUq(-9>On=qEEnwHlzn@*;Ju9~{u%&xEl_WsxP zInVqeksrRtHrTU$FbJ)#aBhGnPaF(^6x7UO9O;yx@?^{)mi*h7(y5t3=IXcG_e(dooi9d^2T=4 zR=p=26(uXO%2S$7w5-xoAzcqv9k6Rx_cQQt->$uTmJDZfwVSdio)qO3`Q-A z4rn0)LTbx%lCx}>_0t&N&@9zbQ(N9I8OEkJJ6ma#^iS>I z8|iY&I<7{@x``ye)ZOkPE+MiX%jcO=Fm1Xo*H#C8Lo#vNb#~o+H*K=gIyIQzjW7&% zTSk&-l7n5Uj?D>`gBNI=Z&Hp}nOI!cNa9g1g)O2u%Bp3r8s~{AlciQQX=~DExh3>r zugR@^a>Nfp%=($!Z@E2hD6 z3O*Ze66;u4nk;O|FvgCE`xKMrII@_|Wu#;-C7s4nBr#U4@+wNjz}yjmJNK$mq?LE? zwRs}QnWQGTXcTo4I`c9h{L<81PT3CXS|^;+BN{1obw1}4&Zb2aOzV~SMOraO*3y8i zvxz9O2GS1-q{YP0HQ5?zQue-uE+;3tgx)l%EQ(H73OK?vAwn`6eRx!?>m{}IiWRo4 z&^Cu@tJ2SPI_*~DWE@U2s9v(ctR zqlRsip*bc>DzMZcR*Wrk@h+Wk!sxRNQw#8xGMKBPh3r9LcHF6{qO&i);xN37qL>SO z3rVL#L$j==p{f$G9avfN)aL46XSNTOovB!4%B(oKejm%?Ts4mr4RLu*$_>~f@S?w) z6+5sOvO&@=q|Bc!MpeS<5rWr=^~Fz3B}ug1^%_w4jF z%n^T?Xr_9qM3TBST?Kz;8iZ$lU?{`WtTjSs$3TQY#`t-4I0%EO8lG!aw`Nz0a`_ua z+U8*s%xv)%C;MAwV3auJ0~N(os!-VHy~lVOalpzCEy}L=-uJicq%DOH=bP?5euD+= zYjK*LSDB2Xejv`qT2U)OL=&DlX2Fq6WfR`8^Ixp61H0_#7tiw}u%aE;Z8c91#p5n4Px6b^p#_9jnpCjJo zSZXinFr*}b6^J1ijEEwFG62m;$|5WPpVuIikQmt|5n5CG{;!qxJl;QF?)WeFzb<*d z$o*byP0<1ScpyI}FGjvDKgj0hIWt4>KaX$lOUVf!TB(5o_;o$?$e`x@xctt2EU|HA z5Foh1K;zF`n>mkx&i47{Y?OB~0}Kia{9;g;5KSL#MMm&n-eQ&_xLryQ`G_ii;%hYZ zvK98BnFHgKnH$vtC&0i2W?Mjc^$gB^2zK-}Vuq?oGuJ8=!Ry9UV?xh+1s;gz{WrR? zdLT@&hGPHyT=vEUWW85@AHX{1g{-C9W`X{RKz_>(ZHGiVd?1||F`2{Q#NX`j0(d~S zF?YPf`K%{zhD_h%u6BX!M`&%~Vr|kVY=M9Uus?(#nHhTa0Q^`$46!|!Q6Ygxov^_c`2m=}#LNF(QX(H1bnY>c5-NGawpvqBa{ERS( zCaoc;$bY!jW`U?Yvn6HAX)LjlR1Qh45wO%8NYcXu6B{e7Nts<4gOAI~fMWthgEa36 zA*KYug<;bQOirKsb&*6?6IRK@LUPZ|>8%OZ`V<3(IK=5bfu# zS_!f+gA-Ia7*bf$2}x##PR1D+#ZoLow095{Tt=MQWgv&=-9=Qv6IM$ViORxvCtf8% z%Mh@$2o6&aSj38GE#b=$!Ql!dGD?<7VZYFOof-B`<0$Gtw&)w_oyju=hT{myGfl+KzeK_04AVJH+ zhU403!2z7PjLk&#m6hD|ONY`RRjuOSB9z~+QH@P9n}+HO^2hFSGIqJ za1CxXpaFg}FnAOq0Z$k09^U85_1%$Prr~YwYw!qi_WHF#NJvO4AZOVUB_xAGhw&_O19H3S~fkN8VRun7#)g~}R2yhaHD;W8-;kbNXd!lTh;mofWn?|HC? zQI)6W_C@`{cG=*5rel*y?C3Lt*m0jLYscl?7uhZ!Tk0i!Z^^ZKBU$4+GuT;mExV&$ zucd;g_GS~BUUsWn^Y|u1);^X^_S6`^^5V3lnW*P{@z*v*mlA}M9eBr+5`3)gp;R;f zCebln=2=JD-ykuK`R)Mzu=2dr*1cJsvB4cbUOYjW$HJ)^*>HPr>6YaGp`QEQ{=UZ3 zJ;xKjwFf=O`ZqC0NIwpyWEeh!L9D;@7UP#RJvsmP1kpx|GV>IpS%fq-sY%TkQ&2~5 zsqFe}Pxkk}zlDG2bRSQVI=ZeNIoo}H4*RKl^10e`I|e@}e}ub1vfp=I0r?*%H}Q4c z-jfqkRCT6iW|gRhuRQdnS_Or*!julpWDQ$OQX(u4fN#RNYyR*<-agTKU&q3-F1$W4 zW`4#4@BOW<0vr)IHqy_vtt=4JN@%`lUxU? zj{h*r2=Wp#p++7pyU;1Bl_dVG92F$Nd{+kox z^aBE{6VYQRH>J5<+AcGJ{e_sLCX z{ID{f$&390er2f5oj5nR?R|tdQ|x}{vv1nMawP%L4;h8@Cm`PexH}In%e`I((Z>A(skRRR3L1ywHl>BWbr;c`>s>BS+lUVFWtq*aeH)2o- z$T-v^T8cphY#^F|{6xl1{C-EJW65}JQ@TPP{=dzh3vk!gOkikh)fbt^NQxPw zX{l3Q&&tIod5)Za3CcJw0((Al_RExAmP(mRF#UpD%`i}4iH*7kZfPkzE33Ak$U^O* z5eJMcKs-n&aD_>)4C0jWEif0XtgilWo`Zqq&8H8%)I+H^f;xsiSRK`r#~?tZ7+2c`JjezIqyOheB^ z4y@y>fEtuOXFJp1|E>HBIX54)29hUWqNum@eQEXQ{dnv{tx+p$)e!M0AJG#&E-Z94b;<|2Oytp7l0=15uAAx?mTXfKzx)y-f za>$#a4*;wDF?Q_?Eb~p~A8*#NfiQrN?pM3BggB!AzYd7}IDLk?Od{hAL@(mg_!s_X z?WgyfNp7CyTnKswgZy#;RD@t*ggiT@@bL&pqa#BIW|TACsJ))}*?7cXXP0-D{o?AM zsJ?KjgPl_V$;A6xza8{n%l60FROLEno*-`1TZ#+CFA(*-g%6 zCWG5)eATvH#T?<1!v@&hF8aBb@3%>La1Leh)NhU-H zze3u5`%(OBrFA&a6;LWNpJmWEJ&*hj9=eHX=$}S|5jH(OwUQ1(cUJ|6tTD+8x9Bev z8^x(bel;Fd*lH~uO;z12K@0V42|PanxoZ#U_ZihoA|YbK(pP>QKzK_Ccgc3gmZHOf^oy+bJGE#W~i zL?b}7=tcGOeHFc{kAb~GM)f|LsoqY|GC(XTmhYxnxJW95xyH9&_0r|?US42kDX%|I z{rpzwxi6mVaOsf1ZxzyQFfXq$rSmILxCUP4>=u()u;-# zb<--zBsNZM6EUx9aGx^tAsLxW)dKHmfe9u<=18gl6QI}!*)U^H2pCB0XZajwubLXq zPfvu$2{iqU1=yFOwy*&HWUw($&9F0(st5A&hJ@st|8r+hRi>4dmo7`Vx@o|-@hq7S zP3@_?3a~c~1615>W0PjBgx<=Q1Zb-kEXsL;)Z2zd<7Rf1m#s`QM}Z zf2iKl9%?H&yDskC-QE5EAH`&$&_o$aRDt}D1~ZsI zN(_rA%Dg1;j9|rEySuxyH~T;I|6l6=`TsBEpZb39`G4%;|8CtE2T9vJixw<-3P{oz zyr5#Y3Fx)h`H!;C7*aU(@P0sp03ap+U`V1!NS&_9DH4RgpWXyINza=M1T~lhRE@`| z_+v8KZS%D4`P;KL?8gF>-J%zM&yNrn+_tC)j2l&irl?1~O!ID{s_yRY{rWT*|LZ)_ z-`kh0=h~{Z7?dmjApYqXT+K#l&EA9G>Ypb>=WKWVQ%(sjPko^n#u4Iwpx@W}=m%i@ z!dDm`NBdt)0fC;MLly`dF@!$(eY3(4ExLOP*%$D-e^-#}rhnlxO7GyTKAe&Gu14zp zTHZ%cc>d=g&7~z>L7X6ThiYbb#=(2?s6>HEz%U6&{9q!#6-XY?eS`MaeKgmnrd^Ms zK=2?WipV=0fV>0H`J!6VKXg}q)RW*M`=O*e2kfugEtbWW%V0GiUMHhCVAP_wa^3a$ zA?RcQ*;VpuubWCTAaH6pgI*hef5Iy&8cjA7+>O@&#M!f}>>Yl&&dhPct{QeaAr4R2 z-wFV@rHWGr(d;SS?Wc>qIcT^rYelz^lFq5;N^|0+^vFgdMi z2^K&wrRAPyKzGB=Z~zz0>&fZ>$wgFERYjOd3YcJGsomtx&iH7PuVMa(9w=B_&JhU* zNMs^x1Q>j8k3Qm>lluWE-Gtl-!gZuNo{}){njY9*6$Dj5I6+Pn8zf->-?B7`xNLf) z9r$rL8Ihl&wu5lj2WP;r#Dy)7OYcl~gE~OaK2gwarTPXPXq)D!ND@GanKrsGH_?M4 ziV$EjGC)Wn)uJLq+<;cv3W30=VpvHP#UQ?HukKR+bUNsj*Ar;~A}U$5Lq|oFHo;jl zhTw>8uyY46XM)J+Q;g*BPkUAqC~(IHk!}62o&JCO{~4d4!hdwD@+d>Ek4`C0^4ZQn z*B29Ly30`Vs$r)Nohc0AmIa)Q@wd&&Z5~-zwhV#7nWr(O*7odQNsZ|T>xBCMwONSF9sOrE7PwfF>G$1Wq$9F);;r!2RC$WcNl6 z0XT!EfCmiF$Bl|H@ z`Lmx-!T1!W{1o+PcocV>?Sw$(Jo46EVCSJBfWrz<7(xAN*VNEy>h3!ku?+E6G(ka= z5frYQ{+6AVksfnoaw0)3viP0?H+vO>4?P_vgP{cIF+8WgqRbS(A@27S%WNF+(VsZcyzpmSWP92b4Agz+ z`6Bh`U&myxcPcX_3b2+F@!oy?yLSdbyZeBp z7%2-61_1&9qe^upBFJu(ICj>R!kY-r9;e4sF2sH&jDn1wP2bpJghK0qy7Qq`e;qI; zJzPUd8Np}GXdu>GG%?>33LEp4^{$wagl$nL7`F@JbD0z)Hovg#iucc=R1x!%zJ+Zb_b@{ z!;;4^T`_6gMJC z?fpsXEp(6%kvp%E<7>F!#Pn7VOhEA9YlGcKt3P@R`9663@RkCgC*#0-Mf8PQ0Djy8 zPs`+4d9&_6FY8u-x1XOg1U)g((0Mw6J8#CMeY{lM`u+NUC-@H%J_puvu^Q9uhO$eSpD1{Srf z$W-~zsJ)my8V)2sOA1&a!>bXpyir$&hi?ZK3ah-C_JcHD z%IFr*dOo9i>II`cPr<>IVF*SG2tqFi#xdP~nxF&DxVIWbi( zGgB*Jh8SV@IwbM>@!el&MGhLI?IIn7x&V04?Pb${cXZ$S8(&`5dfTDH1w8J z&|tBM4IrVl1yhg#KR8kI-CKmg0p3T9phG$o$0G$m51@Qh(k5p87Fiki3)vrsa9z8Y zJ0PPwiUAGd-h7@>nqaDJRm=p5NbS0zu}O?W?ZbY?*>oV-I<`PxrS3ca8S{+ErY1(L zwWtEQ0&+q!L!}o)kOHDepY}g9LM9^s{-GDG?I^KqPs!eg%q0yUaJ=WC#&Vz=+ z=b_vfeH>jmoBqA_eb>w|#6Y}1h?G*FMkwck@I?zU(Rl^sS?nmb3v3Vrqz|grdusI5 zps=*9d=;`hqMUWoElv^x@yJ&hNlGu?mM$?1AeTS=iuxbfO$Xa>RG&t5Mqza~5|LF@ z-^07t?dEUOz^4S^NnVsuZcUouWGrJaFq$YOM!p)un*E;f<;uuRK)JJ8#}XAtf9(#( z!z~ly9Zq9&n9aHL%^|{l@v?7Tas#p3+rOuRke^o%rH>!zU2gP4j>>67{fxvLo*R8N zMN~yV4S)(?)|S`a*|Bx%zgZ$G&3GO7xjX9}+cxgS^14!~8D&V4zKgm!EuM4E>{7MN z`K7L;+^Z|yPE)u)-_4#yVf4ip&{N*568kFGU z)QTaix!KHboCvC1OYnI6+V$(U_Lt_wkdQxjSun^^@xR#{Ev*>aQn6yh7e!jc6%`tk z5q;kg z`ks@Ghy6Y0*pOMU6B0y7LP;a6i0qo<)E$8m6guoSOVH3tAR|Ji1t`0aEFp;m`>-4V zOfT10AX|HXNbt%1<6xQyaF9*dA+)N+6?8+t3S=dMDGliE=kO2JcK#pTbNitjyM)>+ zhDC=2NB|4pj-X){N*oXgJ%D)M(h7kVpoqoqL_MtVLs_Jrx#BK)VFSfK^=P3JR==q> zVSpIsx~KQ*z9zGF8`&StBV#tCCW?1q(!To-ia5r5ApkINKubJ7LEzoSSTMHL9y$G3B>kf%J~iUFu0`Mf}Dj=(d7rKnL?{`uo|53@H6I1ma& zfa^Ltl-31o=*wrH|n4M@!-T znZd2baHDMpz!D~Y8liOB?n@z-b%;1B!q=||!wXpxBcvS4hV}Cjd2NUc^-K%rC&5ua z$C!)$bo}3?uf>Z4-2Hn0@rHltNAIKkZy~%-B%%Z=i6Q-34*YN8qwlR)-?7Jsr$4A+ zk}~D_^cB;ry;$drx29gOtoaoS8?F*Gv;(6RxEWV}+Q4%HW`Bu!magUi-s7%@yJJnT z*#nkVY+4X6ZEyY3`40ogDEQzK7zqZsm@xP7v+c4Sbf>W)_g|3Lik^`81D>YY z>S@_%z%nk9lkiwrGUQKydne&}U4I?iWDo23Onp-ky)K%Dl4Q08K!$ zzvd7qAM^1iX%UdSu#@iglkGEvslv`1X}rHmZY!{%oSSqbpFqA-}8^HY=}TT6|@QnPnBz+Uh1?&7~Toi zidY+j0|*!}G*{-Z#MatjhxYY>?IqB#C@3kiVL<*fkSFlD8^cqGqGKfb2B^ncz)}BV zpxgm+C@f%9NoyqK8RCK z&NA*c@>ju*m%rI$euZI{B5tk)D8&%9)A953-Ji4+$lyfYRtiZ*>1!))&cfMu{j$Nq zTtQ2+E>wSGn6}tIT@)%WRjf!5+jnWaGb4v@5P)Of@8EMjDW)fU@$Jd2^b!k5@LWx^XyMIbq*ny5XBKQh;2hG4XT79 zB#v?jR1|{|VuS@Cxh&_!Zp|-u-i-m4%`T@_>#QH5#Wgu(gT#hm3xw8(|6Aa6zJ+bU zh&)&abOOOq3Lyz?Dp|Xd(oQ!QSpY5(Y)6GpZ@@dais>C%d1 zVc60Y`uleNFm`riF1}rDw85*^t&&am%-s=@U?8A?b{qn-knR2_kDn91XNQ{eEF96J z8j7Nrq8N7aF~RnSdb zG8V?)9c^g1O+qz&7{%$hjA=oNQ_Pqa`6((xEu7yk{DgNTGJa0y7Tdhluf*~*z|JQY z`AP;JjNQV*c_2IC;LA(s%)b znKUkUZ?9)bHEFe!1al7co$3s}Xh*|Y$oQRZ9t0}x*L_|&olD1CFeu2$60IMjpm&`W z<8$$*mE62WEhyH$i1-Fw3E|Ah*z~y7Yos!-JsFUwFe?uE=OB1sPZ%JE3=3ng9A1~- z_oV+&c0&Gs`_eArRrakxmM_g_;HY6_e9bc{t3|t+T^24}u??9n6S28^}26MCYf5&yrj{~ghM4=lK&%Vicp@rhZ#{Ik$+-5+18-1}$Gn!_ZRU_~$($aL3{q2j_~u4qzZrtUffC^5OXB$Jw! zri#l{rxA#FPx$>RXo_%i*ut=%sGzZhNe(pmkdAT96&@C5+AvU>2W~w87W_N`;6o%K z4O(r{&~@=Uczb5e1Bct1qgO$eGse6W@HX>qwbw%EH=A|NX(&qi6mH)WLVi{lDP1;T7()u#{0 zHwipq+7~=DR~?C5tb>FOMKm?OH_ithyCy3@WOPnifw77=)fdYiuYn<_q%y>0YBB?A zU?{?tFHyicEA6_2Z6O(6*dWvF_T!eu^3FO8%+SI$v-#8=0$GUBaKJ?d79ks0E>4A( z0|rO!NKhT`?)-CRwzqpx0Yh1(W%Uv;eH_9^cz{uOh&QID(2rQ1F@Z-=fUp)e5kRg3 z&F?3@DSPo>NK@j_9PM6hn>WDAcWD=B@o#4@C?>}tE@8E`x?_P$`Z>#0FHU^VI zNquEfaAqG;dp_Jjlt(-g-OktMmuX}@s z7e-WuXN_dy~=cHI01yiS=5W!3msZ2{afwvTKHT0VZrj&!dENz<172D5> zgQxWOgPv~9NT!_#+qWky*DM(-pQ~~{J^&e^PsNzM*v3ur1A?14ZUYqmE<;2oMoDQqF7yyAafmw=9WIVJ|Bf@OrlIpEw?m zPTlA%7+hW~T2h?7(}|ccO<06-!2}mubl!mIa9rSYjX-G;bvY)b5rbj`QF-0bK)lSI z1xZGn^~E`-20^GWcFh91(K99sNSi}+)CGkC7YKt)H&M{?Z<8*r^3bO!OrL4DeCf3xo!P?mjNX1pCrzbq*+J0_X;)NhBl%RY)Nf zRTUIeLMpIGad4>3fcxkPnuB0@H+W!fUWhxCo!2X$m~i4>16^lvMf}lCINK5&^#n%BT^{~ zen8QLT2_UGh+-fvvw9gIUx>T?|Ha@AWH_fg;@|qdtJ&Y_JB?qx-04*9gWd+!jjn|h zPZA##tS(EtgY~2smF+SpKQBKwq`Y zS=8;t0Mm|Zv%dh&D_yPqAB`S((8XE`pnYQOgpmW>XUfisElABUHh{y!C2kb0!Xe-b zWr|YTH30xLy@7OGR*AELDyF&(7-MAjpXIl$@#Nxz@g&+bG2QkEA)UkS-q0|{C`af9 zsA2rE>vtgFNPqPA^Eok?Q_ZO ze*Nyc$FLeRBWxZxTTUrKfar~l4%depH$y>TUHMxY`&N$8J<|N;ta*zH9 zWc}cuEzxhAE`DF~9XC*PBQ~_{RRIl@7Z;LA9BPP2&ST0j?D=v3XD4RGKZkU-{ne3V z1L?3T2_V8R1gJvvyzxJ!@b>#7cOxE;$Q3|5pLoLRpmVeh&-64@S$Yn30M$c<#UqNY zURw|6(+JzcoFMun1r&ooK-mkn>D5<4%;vdIbT5Vbv2|KTOy>P~-gZ8~)d{Xv$>Dn7 zwZ-@&ly0RKD%4_7q+OnND9b$QqAPo29Ai@e#@6!O%O(l-)tI~HwGh2Oxi#{2vo4Gy z7#C~4dMmK}_N-R8s@bDfZCc?16k;m#abZZyKMd9*5b#%SXOC|W8^lMctmZB?tBmR# zI@fuQXWYbz!&@+7LT8j=zAqAvkZie9V#uL4P!J+ufD<50fye~}i2?vudfL1&?m7d1 z1}&y!XNoru1mx?>HIEGWvV_p0qIScYx5U1hP&KCYmGQ#nwo;cOJLGdBBA_CjAxp|P zp|upP+_oDlqH!SRxi0vx&e9@_?<`^-yL|b;E;aZDwBZgkxB<+3-y2$WgbUmkMq%G24C_pA(C7EF=)v`&PAD^REprXR>#1_YJASd2;zw7J=w(L9a{iNOeX~jVAf&8PF znET;;yvK_Faha`Yo=Evba3>6Izk$&SoY4QHh}7KLA;^N?zBXR>T;)TF>JLxR8QbQo zG&&JK(Qh#oUH>o9bUP%`QjaF5pg2@JT-t>n7911ad{W$hl}DUg{D`$pC(7(XUUqhqg8?iy`dg1?W#}dfZ)!C##1ay1Pu0GngSU0c0?o z>RMd=$)CJ^&qm2U9_={kAi7FxODZji1%!CGp{&{WLrh;&agHeF93^NHKcF#x@%^Cm zUhU^`_M9I?_o2#%w4JtwBVpeTlk&Dm7XEFke@s8b4QNwKQIer~+>b?aK|T+vzb6mPnsSaz(X@L8S_r- zKJ503ua%{5AoT!x6Jt@~upyj76K(drVa$wkBuqXi@>B>S5{d;}rh$(=*)2BRt6_Q+ znuLSp0Qu&c&r=LR4Qj;mWzCou)6dcFgrXV>zFlM%2m67nc5G%e+);)Y7C~QW=_i*u zw~xE?-99O>!Xm&!1IExLw!9!2Ehzlb1I8W@WNGz7r7|q)y@K9t1SJ4$s5V5Hrw+oV;%&hhaITmOUke3e(e5k%& z3FU>Hm_G}xz5ZU!2bEROK|_)wBAxg$9}?we%g=54^AOgY5BF`87{HzcD_Vo8!3t;h zZgM~{r-(re!Pp?WQC~9tPqD5a?Yp=3UYgZNAmA!j1jsTiOq65-7&ao`nZg6$0t?99 zfFP85n|B4df{)O`^3vkpD*`2-65yhS5g`&0C`G|fEH{65Iwg}h>w*nz%m$2A)1wd@ zqF87>#!1@se$K)3J+gI8v-&$Iz)w~3Xm>W7A`(Ff6W66$U<8W?E$!h9O&`+sp^y1A zkBsT$`t1J3mvJ^C8;E;4fd(+$3j&__zt(B~Eh%?)hJL^1l#A(iE0lk+OAyu!@^gV%}*?-r(PsKnaJv0YY1#J;a z03K!F0@xW+3N@M}K#S%M^^!w2m_=)C_ZC)mlA9C8K&u*utqe5@-Q>kdCCqpK7qj7nu(d9wg|`AXbg2G3I_9(?PCN? z9(2dR=Ysi->y3P<5M}Wg^>kjb^~w&$dZAMB2VQj_>y7QBv7@;jm^*BE*cq1FVW15R z!^}m3m!cP;@KCn7zJTzn%q;N6)oCFpKFGc-icF}uibFD1NYc&g@u&}BOPjMBW*C-p zG}I;szA?uJAqLya3-Sed8g90g*T`&xX-EuRtSLrgUoG=NRK72NX%3bKQSV1_? z1>+46^DMFp`Yh5(5V1rnJkM6%Z|2ElfXSLBQz}acXkg62q6Ueon5ZSTAE!Uu{iZ%@ zRN01SFi7=Lf3_A}-eI_iGROU|_SxeY%TV&g#aR-`huhcV0mOV$fJ21;mVG3@A1}zx zK1>3L5QP3^6#@}gw#yVniof)se$kX-uTS==-J-M5f&&+fs8i9UVTGM((;GMis2bA& z7I$M~P9PWs_TV9zw=!_3pHM;YV#Lq7Z7l17!6QQ$O`uD>I9m`Jyx{~5oP|8CBIsWg0rn)?;%2b*j779hJBBnVV{rF0HL{jl{t)ZC5=1Gmsya|JZhUNe@`j z*QS7)76&c!|GTRv2LMbZuDBA)mn7zMG<`pnmIf;G_i?!@hfkq_+oT|%3aCEL-cDKa zw8UACy^jLFpZuUC0Ze6e_{UePL=@F^Yda~xqY5A`4ytcUE0H<6&^yZDysFPxC}9k& zARYXF$Hlv23a^(3*+-o)hFQ>PpYV@mUNydna7(x869a+fpBfG0l4x(Ywk!yPlw+?o z0|&{X;V{D32*KY>FvL{`O_sNKF46lfw!l~m0!r+kL53r-AS(ZsdQ3dB;xxShk6}?- zCDDV~kMsB|0@%vKO2#k>24jn{T(L1F$_{UO-#q=yEvuF9sNH`i-ff!0n8%cMtSqSU zZPC(fY#yA|pxIwmLrCph{3S>RNfOyY#=&`@?U4gHQ4P^XRz+IuUo>#QDxA zLegc9ZfBx0Pz`aXW>-T&TBeK!2+O#bO|*2FoI^J6?j&W+DHedp(Nw64@l8Z#1_;TK z^wP1c3yjW4$Y40EZ`Tk(7Ytvy+au{o3p?=H5a5SyIi!e4HI5g*AD_23_5Mar=r88( z-)m6P-N=mAJSND@0|*fU8Yse$GR|y}>7wEfULcOLUNvPtBEzeSFjYgXQ#ZfC3%u$? zz)~l)(^ToN>R$_~FI?|!tuOJ;xZSya-c3_q_WqvlmXZkRpW0Ie6YJCSUqkCtjtpGL zqcguB1`q1)tsnlly%hNxBY%=KeG8Yl`G0LYC&c~cL_K{IA*47JZC}UzR)TIAZ=PLI{lAwWf~R{{4Aq-{V`n*mm?qulbI4I!6v?6?hv6%ypnt zBupjCmc|!{T^zO;f@tDh>3#(~AYi3D2?k~vf_Pwz0|JtrM$NvX#ExIo@`M)6DB{;P z@Z`0G*3dB9`3o=pD>q=vb7w`o=0%%(H)er{08Zj;0gCZT+GXHV67(R@@Ds!nSJ z>yPI1Zz3}}xoe;~lQN1IXwcfM1ndp~gatH2BL`%6pz*Upo(A__QN}7=Ifgb5t9dVMVq)z9J(q`YYPQ8(*y2+3HP4xXQdeG(jGWhzUpel-^ zK7~F$ej_nY#`e9fLr`Cy(N#VY6=1|yR*9-#a>^^;#$o#>u?+KGxj}tqk2_~&l;CQL zz+jUS@qAU{bh4Me{UC^7^;ekq-3juZENwgeuBg{?sWIn zmLGS~?tfb^hYZ7%W+I!+LH7J9Oe`39@j*fSG@^!#0|s4+NHth74QoS^r1VbR_dbbJqmcuYmMdK(*`#^p~TxT7YgsbDY|5DX`aOo2#=gJCTtxP03|gEKeUr1PiR zckRRPv+r`YlwTYBKFj%!+i}|DIeKsLpT*ssf<-c?SeB%Sl!mMs(kg7!b7&CE!)Vcx zy_4mQScvHA)1WZ|V-Yb%#nkh=spqVNS)rNrabGQ9!HLPG8q%v$$s&m}$cc?t@m|J2 z^cbYW2GE<6Dy#ZXPBqEkB+gYaG4iy#eInax9tlZM;7b?*#Ioh z9(jF6IYFGVK2i@P(92F@g5+^DqZq)qVZ4P-fsje@FrYWdiBO2~CCNdIoIu%_J_X%3 z8HNnOpR%92XXyR44XV$YpL2okqlJg_Z^97A{6DzY;q3U>Pu2RQ+1|&kI=ZdQd>kLr zpXP=ndEn6`Jj$v1({elaE_U!UOjAqpe`U6PbVRW}`j)xBB8>(9+<% z&9yxfVMZ%MVNC}w7|8g0Tv@;xyQaB?j`kli%Hcwpu~C>Iax=pUXG1DY?)9zX+w#5U z9dD_~;hKrh3}N9QTc4)L!XAOSYk7-Cs5X74zaf&?SR=}>tJ(i-M&ErXuYPP-`5|`D z2fT^^cYzSIzXRS-`B&5moW-#Aoqt3zxNUWjlO!Q&5Cbv>dc*ZABq*4Ej9?1TS5&dd ztW^LD>bsUT5~5%;9Uf7nG3-iuI#ZTEG5d)Y3<8#ZDx}dHK=}B2a@sea1&smzxmX_i zx#}VL(+EFr5A{G`z$6EQk$hpK3{T%*i^v>kWMKT?Mfx2@mHTPG@cE3bIOBL-7u`!y zbCST~X9!zF+4Hzr>Xv{rFD5gTUmb3Nrw`ET=M>94y#HT==#_=vd869G{SbcoO;T$+ zn|T_n1J}3?Fv9gU{!2|5f90esg$(Z7)xc`x02?8Q&!HELWP`#z=u+CnQ!0XS{btt( ziDCzM#?^{mQ8pTV36Qn8pz6Un9_n0iJXGC@5eXqf>{?TKRLre2h#4nG?Q- z_htIi{8S`GHBJtVWb}*RLNX&ES^@x;1UXm>vmgvS238?op<;G$l>THuvOv!08UFGE zau8ALraH(EpanBYbJ%?XM3y0!rNGaBhbmaXweWzN9dvz~lBr!%F+(6t5hwo2!9_*l zW{fF;4T>#Pku+R66)~wIsGPe zYiiYEtW*IiR$?hr#n=lNGxlW)G-#wy6p9ncA@)yWVj5?szRz+4D~?)Y_Y#eaca@^T z$lW1%dL~J*0MsV}?gi+yLGyo4k<>r@c@)Iz0>7=j$XvlT-2OprgL0uD0#URY8}KBa zs0Ae8GD++|v z6fIPqjLdY&H|tR3!={b_3Bw_A7y|VZc2153Lv_n>>>Oqao58>sMd^Td0}U!vg%5zw zN&aP#XPP><>)pkhvMz%pvS8W7l9*gDQA{aEmr_VtDHMwcA(0Zis89$w1#zQb8vq)C zMB@bUEkdLOQ=ud{z`s}1srqO7R6JyP#G^_6N&l%;B%e0< zJx>XcS$K$b4dq9kHxMtu;_dUh{6}8M&+Z4!`kzNg=k6hyG!4liB#;D&3PAM&lgfak zu?oVLg#;@KAytba#h%`Xc@L95WZCB*(b)|H=FD~7oZK3^3;;P%)fN$zIiPpb66jF` zbooFeUkcFcmMs=6Sg~TzB|$9j0Gkk`A{-Sn%plps(L@g(#wVh6`j5N{) zYs0<6Vd;!&R#3y+dyHLli4&ikE*D zMPl_Fremy^ya9Ly*Sbp5Y#`VoZG~K2)1%Sw{V2MKCyDLoejGN7!H4+2)BHidz4xD! z`2Y65&M8V#l%*-TD^j(sYg&}0DN0h5$|(Q@lQRGc3=pYMqgs5-dwi=)eP6Re1MzSk zh6}Au+V)T z$Z^&qv2y2H>?^_7KcGOU>HEiKpr1f6@X8=s!_|qg=k!fGI?XwgGvOef0NOt$8kB}# z6|R3tPfXbBq}{cCqe%vm}4_#Xh~`5t3dfBY< z=4oU5VuoRi3IWe)xRM7O7S)%GcoF9(YWc-p3@K#{dg*jJ2C<*}w7>eD-c$KLX8F+1 z2f500GaFO^6G)a7=ol~~Pb_Bg>bS$UFpt4?PY^ZEsZ9&-K7Z7>51IMYf&b=xSiS=P zOw+Z!P2$+A6#^7gXg?DV9@uiAn}2c!3+$rjY6C=CUf$yD|0Mq}%u_(X0k8)j*8BgF zjsFaZf89_S@Y?F0H@eE`M@|TVVxDLQ4!;IxVc2Fz^1mmwKj>IfqQ1F*foW-bm8GSi zShTiF+9K(NBJ@I|{DmwS#795}3>ZTSFe!5SmFH`Xigs_#3j-XJA{g<0L8xoLc)Y%6 zm-8YI%cDx$u;)lKmS5BS+^fQpp}CnF69MH8ANqY9_ju1oiSROZ{nhg{*oC}7&KHt3 zr#1>8$Cx^4e*jusgqn8qvIPAg9wGtxc!|?&E|Hswm0R< zvHfDTxa-oczv@ygTB@q6)w*4f19DhpB>fq%nK46ZPhQoXD4;H~rL_T;1{tOwO69r4 zf>AuI65|C7wmUAz(j1?N6O;w!@|1@U*-aXdzRCs;+|Vo^9*YC7+WydE2s%I5N(H(N zeP;IQVa9IK3xXU>+6oztCy1GLft!I&6yOGE)Q=FPvdtlhd` zOiH_?Q0ZoNa-X}l+IAOjUI>BY^?wP8ma+1@Td4Gq9Nm9R&EqnuAGy}<#P$?Pr5`lJ zI}P>2_g!4PFkFawt0dEd&arTWVF#mk~vF34tm=gs?HtJAj9 z_*P3a=`~ibkE0i_jkx1!N%d?(5snX7552*Sdaf`GSzNQ%GfE!LfM#TekZSiEHRfv? zXbfY4Mjb#0OrGBjnT6wwY?OmCFA3nCDf6Thf{ZK*jvnuHxD&r|d;0?B5YKrt~(x}iGminXZ zdyfL{XJ~uBVt&o~=2*pw#A1SoBy9npEUYRE8$z_BV{8xolnhK|PuaKvkw_}CV??Uf z#3&YpB9gG96k$?Q2$hG@%L7y_SNM&L69~M&e||15FIRhuc#9rBew!hEMECpMj&mJ9 z%KUDw<{A#41fGQWpjIKIiVvW$!CyoWm)z1JXu+b33r`7R+rM+vxuJEI&2Z=-?-1`= zll{?)I8cnj8CL)di9!7M&-85q%%2z=pnJOu60CC_!ttAc>Dk$TuFcb_OIwNCh zc{1tps*uqP&GA!u`_%n&vsvOmB8-(XKX+Q`)isz&7#_u8K(xNWX%pm^SB{iued-q?emJpW z#p*;^5jbM;#aHUC@~cb#a>d1NShxqt0__}uxT;6w8DT z!Yt;kb|*8BEv0b);m|3tE(h`H9ck9QfKH9oE<6)QK1p+|1>hsF;x;5hqYYyd7%vr) zp#u-rm1dBl5GiE@3vlTS6}yy$BUq@;kdOWUU#pZIyW+dyekV;J**6p&z&K@qBwkkb z5`(Nf4is<68uYt{LAo19L(DE+^7#TqgkcbY1)8+UZXyM(CZG&3&XPx}X8eG714v1O|Y}$N)r;M0Tp=SBye*JBogXFVbP9f+h_# z+E+1NPpUe+wlfekwF$Z^G2T1AnIXCn2!-I~10w`uIEY4I%ma{sP+!Oh+$D5XGyIXDzA8*oDI_JSn^vIiXL|)n08&I2=$ZDE zH7A6^f)W5g0KClXEfJ8&_N9^jqB%9a~ISPi}rt~`qC@%aVQTv@(pjbrNC|XFzf^% z_tf7hN0&5*K0Q4)?e{Fud3k?>HGXwSnr!zkH&Fn%aKwluSsCm|@&6{AajZ9Y>@j5` zZr%jjq3uxT%gb<_3>EO@9N(*iHEIk=F&PO6wH~?~-7Ndor)g&~PQ$TCTX>=4H7)T2 zp~nv!h)SJ06Q_%Wl#?ll!tHVEiziH?C`VF=CTINcvLRq%wAXTNWFs@)84b#%IM9q^ zc&}te7QU~|PXIJv$;WD|{8htJ58(a-Y*fE`{@&fJIfQxc?p`U5sQ7CjhGr}eocYFz ztQ6d%f{+Cx$5<;dxGAU1R`gYV4zLUXo&eCnvLAL)kmn*`R3kFTjZtzTUp<$?^}l=P z?L!W!OdqdVgZJb%_eu9IOUykwbfKeKi?gas%&ZON;{st$B4GqSiQ_EO8hr2{tU!8F z8qhay)K^X3uk7%F>|ZR{VwHrc8vq!74@Q(^37E;-ac-O*!Z;s{P3{eOt8SW(QG zbss`4#2wS8aeU~S9{lJ;zq^EAfNY&?=Z3 zjGAkDeSxUV8D6F~lWUn+10LI(#fA@url?U7EL}ho5#t7O=VW>{E%NYNg{unUPMX+U zOibe-p$;y+P8rkpiUVV_r4Ohh2?bkOu*g-WPe;F-o(=|3;3`==)jwtoC!Xa+BN=Ofj(kdX!5rg^MUA zN0UP-%>6&u9{l7U;k(KSe7Be#$xf*2?S9D~{Dq9jf7L9nMiPHEfaukfG13(y2GSph zeX*&n1hBp=gi>V70iW4@J*Ki?a1K9Z?l!+yc8zoFx;%Y%jnedU(QfhkloRz;cn~Q{ z1GtdqgCPj^`kX(s3fzbgAd)gpQyOw2#Ql>XT#^2dK;kAJwm;cWw2RNs)E>B0d zhs6$fqlyN-k8=qlB!Y!NsR&F*O)8X`NI(SDq5;f^h1rX%N7*Ug3*rKQb^-^`h(8t} zf4PDb4+Ndiq2%2+4ab=PPM|pb0%8t91A^xZ!F_J1M957do6C_x&@2Or7ds)OOo;z< zb3;&|7SgIhzcS zwjjX`i2F_ilVhUoeWe$R;3X$4nYdv*OFJQyla;Ei?;V&#(A>Tyk-Zsncn=c# zM|2)I(FYwy^qpq}dLzZ#_k0TtZ%@!rf9(G%kH+gSlcXgA{m#mxD533Pxk>_&<#WqL&pEBR6`#2%zM8*H-_~;H$7fM8gRdfHl46wpD5Fjc@L-&sU zo3|JY;_%BKVt#nv#QiVxe#8ZdBa|3o6P)KFM8awRHM*7t3IeC&|AOtuB~l#l=zX$3 z%vxn3LFItIZq^_ia>}g0S{T>E`>Dk018EtArK(mg8zue_;MsL0{!ir77WQvyOULCP)SdgBWlJ6e}5EL?c82&S-6m zE8>5Mc^wm!pXVv%EJ8ROk#DFP|7?1pnXxfAIS1D-~fks`Hrg6(D5rYAT_X!Hpp1x7elug{Q;w)pgKh6si4q~H}n$ulA*qfw~M!dlk1xOSt& z6=O*HY!Cp*aLf@L#v%vbvZ8*#^|R0Xh-(-uprC=j z5h>n_LzOgOWQ8`AX18dacUN?1L=DG=DJmc$QiQACA6XSXieP2gv5`h-459g0$ zJ3U*%5rOaXhuL}s!2VJvsrNsGxC4%?lOhf9?4mLOV2FN)=7+xi4yoIlc!uOou*KmS z4^{s#_>_$%8enkO)H)VeGH$;%kWZ=Mk(!t*KU7aqc)uw1y_Mf#cL86J(2OaNqA*uu zvmS`R1IqXwk8bdPzt+HnA{;SdYD6#)(1IER2#7=U_@=Hio8O;>jn}->^mZNe&&~Ym z;+CE`$=@thco6z6B9=|qUlcK{Cj7mRu|m(L8cvyDHvt|w_-jw@4^BZHoW)?!8qCMV zL;v7BLHv90nkW4Lq7s0`4{y3`gFUL~YNO4HD&J`h@iePBO&&w$WQgJRD_bIwm3 z6K#a(dwUsEqn{Hon|3616qjehpdKY+F%eH)g!RzuD9{dCBAD1X<|7I*Yu;=50)wd>|^^RYq&e59f2SjI4?BN6t$bvLK z8IdCf0!V40qn;=FADPB%E*=HYe2y)q8uXpZHzIC)w0-u}DUJqu!y3(p`0eyWjsKTk zH$l^BpOuM4FmZ!jK-a{)+@6(uS2fF`+N1u*Uw`fl-mz-F%&VFC!J$UlXW?tQSpmWA zoF$J_+5JO;;o|KAo$DWQwC9eVym!VgpO%iOTq6{#;nXg5$pHX7qk+H#Pb_Rd?Udn8 zB*?;|oR#pLb(uINqkjacoRVH8f-oVL{s>{Er0S}?f}RW$tS~G9w{#%uOO^$ikDaT2 z_>&$>M4vH~w32wwjQG5qxwihy8ib9n&2ayeBqX^ms4(J{c4FRYf-VU)r)&tu8LjysW zi`)@Md@KfuBJ4M{tz-U?lvJL=XiJTO_G*{tm zFlwk8k0^Cj`ezHPvKz`~O%AD`dLR-ofk5pexGYisu!&HT*DboGBB6HB2`$1QhVr7{ zbfv;m0vXUwL?{B_beDk(5sl)~d~yhZq{xU26*#!0gf4I055h=!g!Q#9b4coJM4Z&y zgJEE!|&cIaR%LMdZebxp7T{lxp1rYj^Ky${2Wk@D+@_Tdre18>^ z`gY!LHaeo_zcgl)7)f8ww=S{pt)mP$iVJy0rZ|i;@$=3% zCelJ|G@eOe0HKKzJ*+H?8TZW~g9AY!Ldd~6nW~IR$iku(7cS~RwlC~r^MTow!)6bW zi9nVt9yU+}FcrWOq>D*TsI4kdNK;co42-pV3$S5yDuwx$X?*N;VR=^5YAyR^x#N6& z7d!n?F%CK$vO=&drKwemDS1M}_JIBg`8;z?B%GNjtd$EJPEibq!$@?=KsJ(yuqsmS zS=BgA$Ze8}lA&X1xR|hlD^lVuNVo?$l z1gcn3?GA07BLE=0NaJ-S30e>x)u7`%QBKTL`Zzp2D{Yh za*ORyX&H(de=e8H37ibU-j!vnYC~=uF91>MB$jzci3+2;LcJT17RnEegG_8ABmzJ& zK)R+YWs;C07uW;vh%6w*HkbeyBtsyuff6GV1WrZydBg+uu{D|!M|d*DL}2DX_=Bj~ zp8?`DWNi>ZY^dxtUz}O}z*T|kx#qN4tPpnqI5$Swppw>? zeu88UDu_qXpiQpCQar+Wy;V|}sko}`pf&&%2^j zLCq3EBmj{S7{!SNLPX}k3nYRby8=-H0|ny+>0SV7K$gD-=Ll)iT=sWZKQN%6VFBv6 zB`}4Rbedtxs=Udd{0%p-uWbY}EaF5*Yl0+qtcy-`x@C~uY`B&JktEJkg#gPT2h-*R zU}!J^upmqrE-H%(vJ{j+8nKwRY=y$KE_SZ_VNxCc;cU73e@H(xi9kv?E4r~Q=kV|u z)q(V%vZnBJW0&Ge>b&cV0zcX}@wT(*9mmv$I3c4b424_zmm4b7(>v9Be^MjB@YZ?) zu-mL`%MfwV@zAo~7$H=K`zVxVLcy;#g5dD<|6XJg3A7!R-ik zlX?#j>N=&LWfK*D!x&eOxcGu~KJ+A*ZH_gh>`S`rA z{^DHt-$&E>^s+k)xXfzLhSrO*oFFasJ%#lB)(2LrqNQ3DlnqjnV+0HlE5||t(>tQi z)HFlHG4QjVQct&^)|!M#hP+qr&o>KNzUy;g@&5z#*JtaPIJ=t{zhtBXsR$60mPElR zQe77URoQpBFW4vd^k6y62dyMaGstmb;RWVgA{hfFP%!Gn$-`cSAJTdRjxb`l;{=)m z<$#1dl$e;FVm{7sSWBWHRAQzCKE+LU>SM`JP`QBfv{@x2i>WOTbt*OBL+|rCczu}q zJ5PH+U$1tP%5xz+%A<;c27lM3R1YmR>*}d}jcXR{9yYOlKimBOf;$D%^K}Koavvz6 zp&#>~7e<$tuWM_X>IbyP2<4CAc7H#Qz0iVnplS}eYzeDCp9BKHARUYWK${^-02v7t z5K{f?`iKb9Vg&;`bQnJ)+_=7896d-8m?4&sOK^y>2*n4b z6d=HVooPzrfnPOW%Grlq$ya*NjN~Gn2b}s3lq%Vw9Jx@Ay8ZS*_iPojv;V`1czBYVD6`p zB=Ul6K*cywEGA%Y$L6VQtQ4o{kADR2ICtGHBdj(C$dzzuOE8c(?7`cmg;PWj0Z>JP zSkNr!9mJjzM34j$Au))wKw%I_?`bzlQcQ&1FAPvDWTOfED-UKHgy3XVU@`iUAXE=3 zfOU3q*nE5)<_}JKvc!l%F|`j>Vr`AEU_(IyE+kqOkxCGv2;GWB_$!#yi;D-jSQkji z0uac_HuVsSMiCGeNe^TMg&A8T0;PnYl!+Mzcj4&-?pOmTx-*xz&?<)I5`n0v3kN}M z$zz5lg?$19HYWYSkO36^Wbs`$F*Ie6f%o<}VPI+$Kp5`=V8eK6T}c5f#`pmfuVCv~ zE~i^EUo_MPM4!{yb8S9ZWWNN;p3 z19it7OBg|I<6zwaRW^e$6bW>FF8=Dy^5|P9Pwo_zIv}+KSg`q|^=FbjND=Sxl6WMm z{qhWOItYFxiXda2z+&7?;z&bwQ92=Howg|`)=D*!jb)HS?Gx>Z0*#o`6#%^my_75B z_kRM<%JKWYzr<7R6q*$K_1<5>TQB>f!8I7JNI~EE^M5=t*RzTGBqU7Sm~}phXNdmB zk4{B6-O>z!&dRE4+oxF@cf_r?EXePqu|VksAV4{qZw7#nf@UzLF7BKzT72V#tH2~U z0U{|xP!9@gCb*pV80{QnESQo-$`@@Ek1`7RIw{k@C{$1nzGSIq!AA9_xsQ4 z?RxQz%o;SsRUpYE!`=bBx^$!Mu~BQYq%j>|yn&}9>EJo7BC4vYs`U=(3nV;}6ov5Y zITHi0EG%-8(rjD}cY(pVg!%#KJQJ!)?T*kH*r zu0=^}FdAu!GhpKV-?O7k{8|AV?4Y2=*}v%P_QJOU){}rEdxZl6cL@p?QJWyvgjX>a z7YAhF4V`|Trza0&OGe0Aid%DJ(Y3_cKpAt*|6l3x%1y4msptezNW}pdtYnYH5?fmf z{>=jbNW>J3A!3#4eKW0~Ue6pqSH(yA`un|!>3Vcyyc|KwPKR-B6k5PS;wAYRMc^GA z)n}sFUl_2xu!UdK{LG)7h%|tNqfTMS0^Jf)QP=pfTwMN0@1x)AquhP&+c_z3vgAoN zJHFfxvevjAWg}oB$SfiRg9rx%LoN_Y8m`~l)t!vs9k!o4j`L72qtXE8-R|~x zC>OGTC}M@g6A*ygQ($b71>?OQFLy#6UG3h_$0ydX1Yjrw_|21`flFkTT1v%)Sp*>g zBt{W*s%rr*T1l)t)jn+ru*Av_kd$)C512z3VEvvyfES=9SkVABIADhko~c4E;$l>S zKoSTWj=YQY$^wwo;81G#Al{4`CIW1N4dwBiV?bDe6uK@*UJ7C%;-8h08+b?tmBC_e#1td7@4=`O2Jzl^>h{0jnmJ1`K z>49O8b9YRrA*RlnmkJqu+AhwzybRV&DatonqoPR82y26vJ9K6zy|qa zSO*}ODZKBy$p|bX5RiaCBzqYZ2~Z@^XwE|jK-ai2q*4th{+W)}ZWJ*z=tvq!Jhi#J ziU|}LzyLQ`Aeop5(-n1DqE`hW>l9w&qESx*UQu^JG$tji`T`^rAQ+YSId%Nu4VyPQ z^8hTc&O3HJn?Z4B5-fohHYAJgLKzkkP<>pr$fT2*8XAJ72$-q91VP!|M|&O9kX z;Fl~m48s8E290!9V8F}*h=+?|r~t`=WlB#aQ7sUeNCuRYqOyb#gF$6H3X$@ZLGThd z3<+TZw5<#v3JDV1IfVF26g_dl_P+owkJ$f+v6JjnpnTYOvVEl!r^l-OY51B7F92wa zi3kLQko=|cmdbR=G>Zlzs0YrGDp5fS!L5cQm4GpeBt}T0GAso+W*~jKbV6+iqJ)1r z0+I;Dow9VK=7!KGL=G7tA|eXI@8---y6T3Iog|GCN7RCvRvvxoq2GbvK3py`XuE*< z(lUVcz;_0Hupgh<00;eygDfDrV*<*22z`hL&MTn#ErO503;;8H(9WM=G)B=X5)(Lo zLi^#pLCpu69{_>lI1vN2uSmbc^u6|PLwr71CrsxJm4FD0JRnlcr36jMk(gXuBtS)a zSq&%mwQqBGGVHpS%ToD40Kvwfe_nG5x#feWak*C-xGz(Z`(DS7Zx9KV-FqKaBt zTf{w3n)MzfBvMmp_?)pKM#-6%_fRaWwkb>cD+-EIgu+C$vqTwUL*JB=!dc_HfR8F7 zHW>j(0%e^70rP-JFiYXO9n>b|9lOD>(q*iF#?7Fn_5wQZ*98KF4qz78Q#1~nT7YG5*T20P1O)fBI zc}?Oak|yb--vu@IyX^=8%@A)~$Qgm>8%!#GVY8>CGz}n|QILCe(GL7sYJOuprHDm} zd6*VfEH#t|C=p3P5I{L3DZ(Dk9)cY$NkaCZjLm`gX+>#$+K|n@MVq*k*Qclqn zCNdMI76ifg-Ig9PAgl#VydWA*`87p{AbU_b)D8r75WWitDTuq(VnSsSK={f#@<@r9*A$7`MV_Do9RQaJ17K_Es8e#`-T?B%FwfiVp#YExCv?s; z!V&=!astC7p;F@j3rIm1y==8_8W6<{DyXDFkjR}+h4RU!N+(*VG$z43zm@a1?e*Cg z?a;3OUob1Dr<)Y^=mk<}cPkW)nqT!q2oabG1v9|GY(-NcpVP$HMZ@LD?dp7Z`XOV*Lhq@-W8?VZr{BxMUi?PJx z@fvKS`V?y)P3+n?cHqHjQ@1cMhC~G!mBE&qu4kBColp18&HU^}P0cGI#wettPh zbwg*n(dutR)#^Mu-#bPc!U>{=ct7XoDiT494w?9L@Yq1NPrPi3Q-Q^ z2LuOW6d8$;?V$S+u@N%~HnioscD^CjpXZPJ2L8ks{dlSo3G9ewYDEM?GtHO>;SKI` zK3gm@_a+ma9Qi(53@imB0c-Yufola(LUw%O$(`!~&`!{R&jZ<98VlTJ996*-48u&a zp!_IyBeVmrMy)ChSkT1u=y~2MYvLK(XdRA zYT*@Ff{H4iErjkVQ_^>lJU(7;$D5g#28b=GXxp~j!Enaqw=T7E>ory_a;lPB*!=9= zPw)Ut=r0!rKN)-A8~EY8rlm6*L~uVFjTb9P#vjh-O$RB1`JTtp`x5`f$dXADGUE1g z(dj-_4`~nS#z9DHMU{rxB&c|VPOiVLpIbQJ+l~fOK@67j$Uf($YHmZ;CjLpDbe~NF zN)D8$Gs~$h_QC5yss?xoiT&?y?Yw(BQUA6}rWog;O-~A`$jjG@{@@_B9u8Nf`aEl1 zlWzZMe7o?y`%KS+e)@hs7paHr;P~6^3^ButRG@@IYG73u3o@!Q(dn{k!WUIz!)CRJ z5B(^(W)r+KHEco9^iTsUHbS77VMfbLE$bjR(C(G5&+&~y*x``~DMbCfA6OPo&b?o$ zeF>TjP$WS5^T=8g&z*M%{46j4oQfpE1A2EHL#~LtOdvBcyieJKE-Ak% z81N5YG0=)RJ*iY9I2%5SYdb{W4X^(2FtZ$QUjGW@L=Se700iRd!58V^`<|a!vho<_ zhid=1TK>m8PvstBeoy z+J|&Zj3Y`^y>@Va;L6V!V~A<9Um4*H7x)*(Mrn}<$S8Ce zRYV`E7pTK+DPqfQLI1m+ht~LQ_&ZIfhv)p3d#zF+g+PM>t#XKG`E+H0vS)?gOLGNq z--GBg`A!Vqs=Owr8wrb?2z)~uwo&4bWssz>nHbmZ5P)C}>wr2$a99d@Y?^`8s%n*1 zCEg??dCG(cbKKFSPzXc}06*@+heSnvY(6p=pV(N!SpY#SH9ZW->GAu`gEM{&o#__{ zKDvB0Sb~bML1mGW%1l2q+5N8^NjO+6L;Lc=!}XW>_!nY8{u&OEtWIZca|>_%^CMn7k-71`LFWNae}z|)=_db4 zx}I0tAIh?C58hIAH!K3~Oac(N|5Q3JcS#ft@wae`7>~ei#^_Ot@Pa)+Wbr`^#5*-& zAAmiAG6De?M1c&(JqK0k|IyiY7BC@YCjtcsqPRl}7#6Uf+fNc{sn8$Km(&HJwJ! z+T8P5FNEed8J;wfsV?zmKiH8<$_sVpMMHSOC-0x8M6QnlfMfPz@kG! zFkt`$7)2t;uvLP=K@dhnV;G8nj7BU(6cmJ61t16TzRO0u-TV;56j1~fB7|ayffQs= z6k>`o5fOnA5e6#~Mlq5Mi4gjuC^9l41W6Jopn^q3@| zDzRXL1&D|YL}M7gsHKb%1VtFd0(M?!ZhrS*Z3&v)JE38-V2>+IEm<;^BLdopr&bhE zB8wS`K}Cu!YAj<2tb$B_mV2$@nHjONT!bRRLMV*UY9NS+EKyWYSg=_Lt`-uoy)eQo z5n@FmAfkj&1V9mxSrmwnGSvl(6o`VO77GP~5R61(2q^(!6=ES2IohOS6jVe?ltB@L z2#in^kMZm(NW=w%L=zqmplulzL1Yqs3rN&cT~uO$n@lzbS`;vwLCKq-gz_}B9u4{b zHaLTT$dFLLaFnR)>=r)ybSE(X6MsMI2i^Y_SEBj{_r;*R3Q&rm(6;A$lz{>Ti$aO7d&VwoOr3`+Si)0fTfy{)hQ z*(}vd?0?Nu-(_+06Bxq)2$;-_=VJwtBa`PT-LhtA+r~uYux)s0yuX0GCU}THXi{ZB>&!P) z&Cj(@NllG)0{ zc4<8WwB?h7e&N1_gf;>AVka_wLSP?6;Z!sujEG3%ja=du;C3cuv>fH!iQ;SD6a+w8 zhv8?Qqxc6%I^T-!)_!X&CVar=Lq(CrDtG#`-&j*K=YJ2jp0`!!)8fl5jpyg&pKx$a zy1VO97NAJ(#R@wbQuh0EhPjIJmiu)t{$1 zn^UUinv+=LGd0V$uQ63ruwWon$RtXPP@yuVMk-WjNRdM7*~EHSsc3oE5yio*wo`}nfH9Fv%F^j0j0P^#P5uF)x7NRJz;MthD-SLd) zPjOFJhkGXA-aj1ccgfzjqmYiXD_EsFzH>~w>gA7F=Ga7>FwYT=G-+OSy+{5=`Q*Gx zf;3)nGtI{~GepKDh?j1-c_$8B?y>tH65if(gM4nK@Z*{@nw{>nQ1x0;b0{T0#Z5n= zj6|i#)-Hi{#7JLz8I@{B0VIxttVqi`IV91^MhuuJvn0kd*0rF)jbmKO-r{jC>v*Wc z#&a#jlcF+jS!w4tso4h2s~R3!V;M!5EmIz`@BM~&4tLAqGH#@qmt0))bK9(~!u~Ll z?>W@W|0KRzUVG-Sb|$Tncvvdb`F!Gi^swRks1mKMsGoS4jQtjpFF+N&U)&SJGr=JNHuE7Nfh zOl8w-m$-r*w{aJUmg&>PMz@Szl1U|*Hd$t3@bF@BulC&44bCvgtv`iYjUfH@aa(`H z=l9RWXmkD5$7VOH%_7vivS0q~AcERgx*`UE?t?zlnK^VIpbmq%0-t`zW8O`T-tU1p0 zJ2jna_p(mPc$J=}Be!QR)c zK;8PRXNF6~ErzL(j5fq=o3~Cz=qHKqd)u)m049)V zhEsF;0pjN5#p^Sk1YO2=bA!Y&^3>ip6pL*VQnBECjMfYvph1$SV=DtzW%p8{@sbGy zk4yEwpYMOSK~wbLU(@aT!&cs*K8NIgN45k2wf}<~8)mot@Umj-z!o8-AVRMU(?wjF zSE#dy`>qg0s9-~B@e0Es_79+BM8JArOkL_@RL|P_v%Qx0q|oyK^`pk;x@;Xjki4H; z(W_Q>m`b{PnjzL?kY%ET6cU8^Q7VuPvXB4^unV#F166E}QID^JzMcUMB_FFQ6*X>c zbau=Sp^7e6&Z@wPnxwWU`MBQ+0o9q2#>6$JjK~S0;~-gufmQ;L0oVflf(ydKT}Dzn zyT*7FN)uCLAt5OT@|04(TqKMo+YVsiwFg26JT3zu!7^Pdg2jlO4J`|k z7H}Fwj0DKw<`5p?Ff01b9LzuoCoW^aVmOqcXbD$68(7Mo47ld$kNzSAtjf;S@MgVdSv5ZAxC<){30|4a-HX<3iN9cA%H-`F& zB$G;JTn5RVaST;AGO}=RAYz;WqByiubSyjP_e?Yi!H(5KTusCb>@#^P3?`PTkO?mW z&c#jz!wOvxwVPECDJ{W6V)!EWVW|ABohHLzy551d+hc9N!^zNSNqe(Fv4pZm{gp{2 z?*oJ(l)e9dB&+$SHII9Ok5_6@tzsWW<_Si3L2=?YaF#Lvrr{I}6iq5bP}n4sKug;g z0x%eiR9?JJ$OeRL+;7M!q)mW7QG?Eyjw3P&0|LR%8ULNd4#kvPJkOsO=3%N;KMLYnd+B#b1O!$Gau7Y9lP zq&i4KFp!EgxgiMAg4i+$T!ggVj)Ox@)-z6uaD0QuDD!6GK~4PJIyP(syF(&SF2;G? zpUCK<&DJFrh4Soa-ZL%MEMBlu(j-{1V#R>ERG_7T!EM2Nt;LHMth&PkI8-F&bHI=Z z84hWZqSye;#GK0lSiotB$3SnI%_toe!QHm< zmjJqAV24>UUVEMDk8`bpnE+_e?o+Zlia<99c+4=nK~14&bg|=mM=QQMxE53l+v{sK zXehnbSh6nQcr60#fUSYZt2tmoA^t);5)eu&mydf&no3llBB6rrZz-b2_Cn+#h;)9= zIWra^TkA@0n}umy=^f!OnFt$0T%{PLsBTH>XQ^$iw)&o@S>yw>JptWG=73ik*e>54 zVr6ZlPK-lZmxeJ1PFCNlC4vPZ(22ft;nV=NC-udTxPivKFVVe* zRUn8(pL88H(t0aH6`UKL0;m@$7%HkMbt`M0AGCQU&vGIs&Ods2x+%;#+1B%De2rqU zIf+ofoK#WFdqK=MQn`b_4x_M;!HUKtH_QFgB%amMp{cCkXmo zKAjlsF8ZnLoIdm2;YC$8pUp57I~`uXv--Q<_qDBSTGrQzyHNJ;3v^CIHp56O!kh+v z6NSJyk|a<|_|-VR53vXv(q{{V_r|%T@WP=hOM`_2PiA)f3ON|QS6eVHMtdmIaiFpy%Zf)m@s5(u8z_PfTzWQ;CNuGpAM^zq=`cU?JWc}nXt?C zFnu28%@3nqsz<1-=Nis*gFLGTqFxAnGEAz>jG@&Q5H+=*INd-mMjI~5LTTI0ICw*? z-oXQS+kCY%Ab0t@QSpk}TTJnI&qopDG)DKG-cAnQ6$KSVV!{)wbpW}37PNsqx?mZp zOwn*VQ*JkKfa)=-CosaKH0m_sCh5V)md57CRXdIx`l}ZPTBy%^*5SZxD1?P*csEk# zY~6DWDr?%Rl<6MrS=>DmYzDRTegD7oeI?!9)m2r?nY(W4uI}#c?(XjH?(czglVG_I zXb+49Z!R}@fO1W_^2yvUEUOtmF*`-9n$f@?y@fzaT`d6_|< zu?%ps$dI@_jzEyc^Vaq2g`hUAlMe$5O|y`o$QC3q3CKfH3PLBi&_MddK{{_@j5P~e z2&6Y}JroQ{SvZW_vXtXDg)|c6Ws)%Afh{0l4F=-Z20Sy7H2DhroDS}+4Gx|M2;9&@DCfW87e5>L(TnVIo-@EJge&5}z zcXxMpcXM}lez$nWC59VKxUQi{BvnqPI+fH$@i$m?wy*hU?4pdQj3^?iiZd~&3=S}b zR^`8-?1>A0K*Zh-&fbWrP`wOl`u>G;4+I}undS(dy!O5c?xd1JPvDZHA@x}MyWUGC zKKC)xpy}-1TeHt(Gcv_mzp!p%k+h3|*;!Y7a% z?f-#`0^B#{@W@RdD+#e&-XcDmsD~%Tkau7X=&t?E{$K9Mu^29n+ATxEY8acQ){L9hv?)NRA4NdAAVA|` zQvQt!zVWB|}YV#S4$NIiAT=$7y zlECAXIuCm0$@>OI0hlv0o~$S{#~fVO`=+)!-!Z_|eX z;R^${hOq#Ib6);m{F~!P_q_bA=8@!`edp?P=<-?6IGmOQ0n|@rNs1!|R0FDWWv=bd zY23|s&V@(Z=c)a9o72s1ucn2ij;j4RsEU3elT~j0zPTE^u1i>x_8b8bqks0z{Q_q% z9mA52!zGg0QVL)Lz-DyGZUjg1XkSfBqnSJD#d4C4k(zgtSfpfP4A17ahKG#S8f1H! zXmxD?d_T-|>4fHMo&U@=@JcnKoL?`G7Leqq+iLL`1HXevaOj{;-K<1fJthpMj7(L* zS@uF(HAq^$;j>`Ou#+*$!5)fSN%A%VH8rOxn>d*&IAjNMCS$=hfFVLcBI^cxIcU8e z-?-CyaTs8u+x2hj=X-_&Zeiz7&C^F}cKI10d~l_`vrt*mfiPqYz%wH=GeL5)>9p3F zW=MNyQeB4oo>qA8yZA$wwZC`sZbe_Q`u84R+x@yYTF=TBC+%Y6sLALTZ<_%bie?HGjo8f23tF+VJz9L`tDjvw_R*H&MoFJXUyGGjykUC#BqlkLTNz_w@pBr zeu&^0R~ulAz`H_4AJ%Gfu|VYR);*bxkKUG7C^OpHtV(8{BKLc|Cs6U_(dV|*)3~Ya zk~R6oWlYlIrj&%k1!QDU4rn%?Cav~|J_C5k2>^$(;r%~4>x2l&KO6Wx?V5!9e3W@8 z=brQLkHDj4XeD-PIq8!RK_bLL02mpgKu5QI)S`brT~qo0)1b-dgr6x(Q4iP%4F+jL zARQ1a5=9Lpuo%RVLImN27=Tb25g>rUAdpfpC153xu^=cMm=d$xZ|khFVu+Fm2qHxW zFaj__1XxFs4M9nIEBB};Mr1fbQ#_XxOc()-3}6_Ll=*yD{L6v|2!3*Gx{_;QFz3r2 z&KN@SFo@F1Vgp8kzq(xcN5Z+XCM;9*WAHw$O8I;0YvcT`uk^C&Hm`^Q&Z*<_&$uwU zO+^TA5LxWA}obm#0qn9hhwM8g)I{O${hODMgpP(mNGe&2w_#;*%- z+}2HKFY|Rnng;|P4OorlIh0L*R8C^6H@)=T*UORFnvu&S>3n!$_g5oW72* z?dNyOq|My`W(z|iTPiCU##D%*5|p)Ez<Ld5`mK?7Vs%0(4evMUA&1xS%q zSq>wXVpjx?6b1O~oyTlH*Ynx)*&*IhNUcCOp{5a<)F=1}=_JOKv58Mz6HEa9yaU!5 zBFHM8-daeG3@t1LEJh`i7*$wN5o8%{k%cU>z)50|fv6fbG+ntem$3vz4_ViC#m< z<5-c2HWq3m?gK?2%@pV3G{EX3uyrN^bzvZE1pYq6u?YY;P0Zb(BhWf!iXxUshr$7D z0+h)Jh{4dKe+ZGht5_;LSLl)}X)g&}lLld?N=QmUkrYHMhy`I}xje#VfcS(@c0kbz zAOiqkxV+$U!9YK)Aj1yX5Ql0g2XiE;PzxerLbeo!SRq6ZxP>tp0E9HT(?lSVsvTzP z9D`}?MeC^RI^G(d!t0@-3IC7o$0tHco~ZxaqkK)|fj z<(ATy#SmjK1+?@#RuMo%LRy(dge#~ly9HyXEb zilK(8aIuk1^Zix&=AnOTAqa#dA}T8pBn1TsEFy#uKvF3Z0zp$>YXn1k zN(Ie_5+s1gNJUaaKv)RKL>NIL2!ugW5P&ie>Mjdz-TH?LVF?Csg&oRJRls8`DkT_| z^>7TCDN8}L_)ucZWkEpzSOP}L62Sb7q5TwvDsTuCQbgkdQVy{Bi#Cp6CX^G)hy+N8 zKp-%ZLMw`Gfy=-i4Z0t5;9E(7o))F2Nf|W+%t_-COa?G8g%Hy>6B4bipZ!) zj|3WofOlcOzFKkxo`G@H#8%)7>s6JE)f8eon?mrA&mj&R=!)@-&N;02&0!zlt6$_KB8d4`aQvVukdSOi2O!9b{> zAy=2l&<2%&Fc?9DH6n>5X+@f(q>&k!Zbut679j}4K;Z%M9KuniE=diP0mzbkuQz~m z%Yf0NeKc6w9!sg)u=rS;FiT@uV@>3jA^rb?2T?q+Qrb?~F<7x75Q?nKtDj*^NWu~l zFdk}Z07J(mDiJm%0YKF(jESWBBuOzOMnp&0wGh=RPEE-yP$-E!qa}e4VY{GM!30$x z$i)^zqd3bVg9aASER2#-Ss+UzlYs;Lp^BbG#sCnud2(jse z6L)otAbDZX1cE{`2oedqw8b2HDxIW2fdgj~G-PSpOcNP)X5$lhpoA>5Qj~#6MXJ^T zV99E50CzLxW*zEbbyCRTaO68zUd@NN&F$kt)Z7&96Kq|R*%GlrR4YU>M-hn-D9S3q zSs51wu#mDO7cf`{!pM1Z;AASoFox{uC#ZZx@o+#xsfF|a>k2zySdu_nmm!cZs@XEi zI>|tTC!@>bD5jtnC5XqTdc)~4*06Gb;z3{(EKk;>T{bJZo>5^38pkilt7B0#dsyOIWg)WB(J>f-^)Lvl&D5HQ^dV+3wVxnyGo z7RzcJ0syj@Zq`(Xgn@{oyIhA3E(vsGanFT05-#Hqs)&>^g6IvU&YGw1ywaaqU-;C4 z@aL~?$b-ps@}DY?F?pS~`3M}b<)R%Z5G07FPE?T;>d?7}=z~`hGzr;sXdxEjR7W+w z0or_#a%4j(Z3Ei5Ai6>JudRDtA$LK*39;Aa)~CL9R%GaZ8c*abQ? z0fU9)n5<$(5s*d{+Su8aK+n^am7UeO6qA=+K9S)L+z|xw<(wNOzU|wS!I7?Bt zngI~uizpE=23SQzJvB~gkp~kq@QLJQIlM{?_Nc1Fyv|7)?AY=w@QDafZVNRh1>`vivi(I zBE~dP(ix(A5MHQ2WK@uZ0FWRIioLd$s7QiIeeM9TGu{YWvKYl46A(?A{FVksjtn zQcWadLI??F0W82WBOnBoSJPsswJu{SUga78>`r>G%pWlKI1T)V#y2sbAQeMEgFHVd zQY@GiAORS`5lt-!DS_PEeg1-}wOd>l3)aqgzI8?pH|eyuvA=ykUaG!qh@NKq-%>jO zfSm`-a~w2Grvocdy?~~>1#@(UoobVUWte~_>QF=Aid+ueI);8ZR#+GhIfuPg;srC1 zxp7mHqTw=_BLHLB8x0X0*8o}uwGcaTtLJkfH7c6hD0#!#4jySoBvH5%_+S}zW z%=6>%rSC+9ki;qa<%e|7Rrz_2jUOb3<(=;L9PupU4>#4=TV(6oZU#~(4()*0CCa`O zI^JyrpEfDRH;7z<9BL1~z~kKC`2QN#w=&{vH#a~1A1m~5RqVa@0v16FT2hGH6lF4w_tf%226q9RPlV6wQSwCXZ-!y-RLjr~Z(KE)n0-ET^ynkf|3g&vLhlAAV?u0@8CT64-7bb=%*;3M0wz%iZ|$nV&$uF%vD^qRaI4QT*Xzu%*9o}qGn>KqyD+294zxOzf-B$ zZb~Ni^5A_T4op>D@#wtZt4q#LrP5enAy{T?H94*tjdP<1<&X&$1X7j^U@xi4N(;oo z0f5BTnTwGkM2TY4k>ws_ooPTorW6SvurGO#p|7mE;t5lni4>BID3nN{1W^=H3nUp3 zDuBu|Q6Lq7u|+Bt*;GV8l_3$3m6T9M%Onv23qU}_AWI0A69|+*C`3y%cw8HTu4)+%M}fN zBum0UKA}f+M2&}ag9xPi+ELj7c3TVYr3Hxm51xl3i$u^*OCkO;9iZ@YxrP>VZU&Nz z9?48jwCyu-MKHwNhs&XP@3W2KDUpHklcAEZ?kw-J+FS@kleG_2RtXgZf`b_dE@UG1 z$pQg7-W;2P9vGZ3I-rf-FtJ1cZxjv!AQBD$Ajbo&a#&HQf|}sOgOm_l@IvNz>j7*X z5tGKenk)#XZtRoZN&pNe42PwGwgaLfT!Eok=Mm8|ouf-iIN_SeqoII85?Uy2pZoXs@ROqcvFjM`R5fM83xpv}<*jl%t@l+2yv}YfydXeLkqxu~ zbrh_nRk82$osM(t>KcEqL8A40uB+DmkTpA0A_3q75qY$l^7|~!0}P;Lq%fm6YsynU z?0TI($onwMw(|R8Zyvv>c*=q9pxj+`Q&#MYfTF=_@ups%f^V4T;c?O+m#vvlj z8pVMkpN0>~`%km?zYoFtKY#M{8jX7oFY7$B_1rfXmzrxA9UQniOB!K{WJ7Ooo12p~ zsk|9xlc@*aO{ic|=}R`TU09N%NeVYSInxOU%xFv`-8Mu};l#LbFSXy#l`0E$gv`eS*aZSARPTaW>uq<=Myj?|+`E89ew z^uS59(B84I5ifukT(=M^Bw&_57X#kSIYXV(4TgU#t2zob8Q}#sXth`_!FPp1(H;Wg zQdmjrSn@K{7CtPZMVcaS{v71~O?Ce7bKRxh;&&Y|3}RIY(iTK<)-R^=13erO2%Cpv zXhS%dWx?M$w-NfH5`gG)qUTcmTkd6%ZEEzchK-sE3K}=$>}f<%h7bl75YWK|o5i7= z)K6!HW856}0yv$;uTXWb+xK|W3b{?3c?3y?TSek~MaZ@PQ$V}1-;z8q2X_j!=a zgev$Q@^9kP@(SgjbQcV4<|0T0igN;iff(pPy-zxYp$~QE>-o|5Un-NzV0>~S7lm+Zrlj1b{^g3;1DA z2YEY|l$C9TMT#s@Vj;h>jF8#CyPb{b1B`d((l9uXSQ}2@#9~NUl!d7(G7*YIMgX7; zWE2(y1{2XCp%j9iOJE};Kv;8omMKw{K}ecC7=U{BY##zXD}@)`q{3q!AR)Y@ayOLO zKyOdOgpc5mh)vj8fdSkr2z@U+n0bNj^SCU*L1H5oWi2hi#c>!)iDV09D4}plt8keC z46~rgSv2UZwXiaV8Ic8)0jTAms-_tsm?&kJBuf~GCM3B<5GiC9F@ju?!wf7jA~DNk z5gV9fw+t#Pq*GR!v?!A)tc=ZOARwbHnjj-EWUy_q5=3iBOF@J5Wh*9c37I8|V3>|j zqz5gGMhvWwDnW)Yq)`|~B#0JRRS^{y1VMtxXI$cJDN0!-iTJ=@sw9|Uz)?HJ+78MccIZ4EGf=q(u4nq}18DN|$ zF{wl_*Aq6B%1ME`Nv0Y>-tH1uGg_l{nvSW4OC2!QW{m;449sD6u%; zreIl*Dr+q^ki(G5-t*GP9Ljz_}R@h$|{1`q?C4b~v+B;`tB6rJ}w8*UrLjUXaO z2x2ygAP7zD*~SQoy=!zBsa1*^)mGaeh}oF6Yu9RPRVnqgMeR{V?X63V?)CQl<@pcp z>w4~Uf6h7oL2^+qb0ua2tI;Rw!cMHwVm0wv@n$dC%x>OU)iUJKG8AXA4wYX!wizrd zOOK%S#|xLi0#JEZxC0u=xhj2v@t8()*j`-btpO8Rpj(L=-A`jDkfMyY~ZKKY-epl3d+2sMW0srmlxjFzsoWzN-D>0XPii&%S}G8O+@3O@ zjgGKEiN`-ikU6=PM&86r}murXq<;E5hXNa=SL^A#VNoeT}r{K zt12QqRcy@i`i7Ip;dTnpz`S1yLrR;Mzs6Cfne>8uedbaB2H|B-sVZKK9dPvW<9r!G zv%4t8vN|BNW7Dx4UYe>w^(#aS<`Pq(XTuA`7(F+oz?`(Y({F|FKN)&eCEe?Ej1!@NuJLPuPL#e3A7x+XpOp(}W#_ zHWL7cJ&{q@b|k`&oy|9#AD%lSSHf>&L8NtIJhc7GYt3q;`Naw+B?o27E<-n7h`W2> z?>sRGzqetUo5ZP{6-kUF9gS(=`9Eysd9B_03H(wa;|Tf6g_9Zy=Ax=G;Dt6i-k*~k z5SC4+QmtBaVq1sQ`0iYrdpjpfe#8PwO1cEl8ra~9w9y51rNBT4f+qtAa+lg=8GOm{ zGb$XQWGz&KN!T9MTa&Axn@;E(?azlBfgx4A>HJ7J0i+P;4Vx!a`7`bERJ5=XYkEu0 zoT9KWyEut>r$|Avelk@amuGhSDOy{U!ft`|fD$;(CK-!D^;C`SOeD*pA(EmAn^N?B zswAR97!f7LvZF+^4U8Q;@t<03Hio_0Y?{C+%h)PWdsp>rb2raLzcfg6j6=NaVza9% zl+!E1xzg5RQffh38fA#hB^zecR!3`+^R(g4%>E>(dj~}kIP52rj;ZHxmNGFy8~xWV zncj3Q)Mm$11$VD=^l^skX$@}D1n&Kp)U8FXij>t=oA!-PNpp^sTTw+Cde!WADpe0( zVm`e>v#b0xvwGhvv6xMPwOyspvd)Vn%%$IQW|@Va6=OR)nZ*7}8awxw?GL9i|GCJc zEUQ0#&rT8k_9Q=wi`SKc$LEXhkQvTSNlRkA(Qn=V$o&1e9G~lG%fBHqRgBf-e|P2g zS+CoCazEvQ)_8vx@m3xE)ov`Wi}A7!JE!Pcr*rvx^4A^N%a?wT|9bth`g=(=G^g9Y z~tCTLnM zJ#r>}kZ9B|Ie46Q?uT&u`d-Dc>Wvc2ejGL$!DNmx<~uud?|u%7%5%af9@aQQo$maY zvN5Ksp8KM|(nguwz2lt`UHABRZlDmrY-Mv~b#<%t+r#P2gPT?l%;ppk5tZbhJNEs~ zW@yYm8;eoI4VCyeiY}#?Gl9+<|14w*!zLWI=devbzIE&lEUoIFcdEO)>@prhqgnY~ zI@RpFo^$EZ+%sk8bHJcaI^(E;fg4O&;TCm3zp=sH`KH}gi$0YNN>1<3NFhdC8J7~Z z1bO9@^6g=;a#YQ*(3cCief+PR4vLjmv0vpCt|$2=*UZhh&A5jb3FDrPe-Z?!&Rj^okRTH(k=yS#uw@yztR zxJ*OtBvo(MbpYjMwzL+;(b%RKRuxh-?KxKY39O8ygrB!zcrXybZgB+m`N6O@(B@ zp4z!jJWB^yk@6a497grP+8iP z%{0X^L&M8P{7jxTjVs9U0{h9HLnjai|rCf5vwBI3Kvi88|2RwVeSeBl^7C&CG z4;fzX!hOPS zX7jOuZO%%!|E=-Mry81lLq65h7v+RdFxjX+@W*&XEl*l*?)}qSjH!H8)3?lYFb`bK z=gork=9%aXIA@3o;`#Hp;HNN6gL1aXUSy87Y>?hHe+Q$Bx{8rnDowZQ`{SqmQS7}9 zeFn!teZhY~fdGVF{a&2GYA%uDW)@@DBanEqmP40QkWq`_j1fFvQL|Uy^68_^nwPk8 z4S@T$jK$C8z_-zP0Y_CVE~d~}e%41-wmIGni?!8N7fJoDPnW*fhgpwnhjFLwCC}C! z*`Ql0JT_|2kmo|dFYxEm_N5-W4+WFFopC9l2U0YFXG$r%*7mMh{7H^Zu*`&zHz8?{Xk^A4#88xDP&ezPn* z?wyoCz5?Vvdlno2p%)YEO%l-i_4|jMM4cy6_VGm8Rz`|pzVXJ)?FFP6NUT$KSIu)B zO2J79zz+d!lFUy!=Af#bj6w?_aE9Yc?gGqtke!prhGHp4rAxzOVp&l{UZgbIfMK_r z=#EdfBdQHx1b>`To_*X(;jz2c{H?kaI6` zIqN(pkYv;3DHt7-@b-w2Auh_2ghZf|B=E-7B=!`040k#V7e9FPEQ=Zu4EXgAjRnt| z3$O<5ni&OyWn6{WB!3_4e;bybWw##;Tx=Xfv-B%`-;)Z{-ba7-RTEB{9wxE7iOYY= zL(Z8PR^Sm8+8-%tw($(yK#dJ<0AmdyO-4?0W8gDJz0Ao0MewdurE9O5=c|g>Iud1VU%+*4k8wY z4Hd^hW*6nZUW~~gJV&Nz#Nt2(s#I}bwtx>h^`BnbCkw6|RUcjIz3rou$5zS#d1w4f z)qQ_5HxZ$}zqGDN|0m={!w2yxo`ZM*#NgbhLT&A1C(BM&Xwa)>U`a6BW1)gONz~wU z2@^2g!b-@IVld0`?!JNNn)-{6^3CS4Z+(YLD>DjIM3r5H-$h<=+Rss}%0mw7VB#0p zy;D}MDs%9TR7b7pCh9-fbe8fCCG5wD8&iV~wBm(W!JZ^0&;70mcYfZf0HBOR%@sms zCYW;GXo|8kE8l=%We-q58+UzYSL&yqkC*R{RMo4Y`&x7Hg;f&;raKr>Z$sv=kHQ`qakwDPtpvSClh3E|6?*hfYHN*$8{Qv@q{x~I_%(1t{FBFN6(VFTh}voU|+ zfY(S2G+z=N`eSuVuS;mQE(aNT+@P8(W`@SsGBVim&$HYfL#5Khdl;v)^tHoBV^b3_ zT&6@>oUzte`An4$z!`3|_RHcrm`z2R6AWVq3=8DHZ_ey01d-U_55_*9JzkU8#pwob zKmL!3>*D~Je|Jk>#R+wabVc4u_SCn_GRdGC2@Y#C6AM_LH3W@_iar*5;^54;eY-L3 z&QIsZ$M+sweXLo)aVI%yre1x2ID^G~#G8V$Fnc;(T=+> zc&VebT4=DVf(V?f94Ga4rTfa`C!-fu>_a90Z-R$A<3+U|WtzOvqzv5{Jm#)?-# zRv{bSh^{wwXRbZ$lCHd|zF{eF{;&Cvddi2u@Iz~B;N@Pu&8dZ#Vm3qTxh8^`tC0uo zo8zumu#zT~Az8#ds?%sC%33>CEjabeg(BIk@yxWs4*+Q`c@)I>H&HT*`3@Gc=%6`g zcXA=pY`UT&vt6C#l08mM>m;k0EOW3c6x>r<96Le?fFQ}Zqmh&Wp<}5bzE$#WjxJs~es{l18jq!5B z6+P5AHuOE6@EkU~$4alJ-){lqKnm?R^_7mMY~*#;TKM_iXBX!U`cmKf4py{_84g+r zRBJq?!BgULL8O)k0q#tw-+5cJbUP~{30u2!*zHRSlkJ30w-A7D{Tn8yedCAd(zWBp zt?n;BhIyT)1@|5eX(6(Xz|C6PbjPWAb3fxV!}<{3?~k!D?nn?_w57H2^pp5(7M^lK zr+TTtt$g8kIyT;84-xo^-o7$(6GpHJK^V)hS?8L7B|=CJ|yG#b+13 zAokW!;^?D;vQ%sbv@W{HfEB{6R!+vra3d#hY-$LJo?(r!eo6V=TP>2hzJXfCE~3bb zbWf{}A+{z-h>AIBc4QU_xEsytS6NFI&tUzuLr;}SOxt)#CaDD)Zob2g#dMDM({Otc z-x}5&VYZI8|IRr=jx-rHBV_P8gz1JC^#tQ1az~&(w@ERCFynqizChJ2_t;j26-*Tb z)(TWgM8i==FNQ6;=MI4hP3~&d{WXwxxr_Qd#!ru10B610X_D&&@20a7?o?Xdz;BvM z0o}b6@RI5y=tOOpU-cX%`2OYShui%dU$$y!m2&ddyEmtbJjCuuMNZI4tRGxJn_OHQ z3;(!!QJZbrV92{;Bl59LQ18*Zq^zQRxs-^)AD#!2hnDfb#(%;>Oty)gbNkN^V_tVe zq+WUCUnj+)RotE@u7r&)r}ivI36aj*Tw_h4=nX zLI-+=92I@A>!K2;wL=HsJ)ktvmaNdW9bAoU*6xg@9p7(S``&?%RriJX7;)C{;w@GU z{vsmKsnQpU0uqy|@ZiSL);UX^CjqHpms887XSj1Sf}&WjW$NnAAKw^%Sh~X5@!_8< zW&h*9mA2Vn^;uX>_~L5o&+M+YFS_$7HF2B1?k$I{5m~SHXdy3>1&BRMabaF!ExR|~ z2tK`qSZC(H&zNp{P`V%{UnuNFI|qwn(~?vX;w22xVScqY54kAq$F*)Bxcp*Dj<(hg zR%c#B=UkD>Gp7m_n~wB%?52P}Q+89bNI}K_RFGZ;i!zp)z#l&lAId%oygNTe=h4-i zq^U`j;O*cqgY7I6Lir+{MVr!tGV(1V^zWTN9X0-boljIr@~~AOOx4H|G16F=St_3kUscX~P?iA1H=+<<3jX5?E?~1*BIdb@g2E*q&8EV>%puxmd z*H6}Wz$F)^{oEt2>nbl<{s?!w2!FG9DDptcT~9|dD-fA=<#-Q#O9x!im&q&x(?@dn z3hyb5YhYj6a=gv(2m$cw_ z?QP9ZpZIPatg0eV%^eYj+42!jl-xTlB)&BL^onhK5uy_5e36dm{?)anV)9`w^wDFI z;(svvF7f!(#&FwvA{M90=(@RqAV+}H`Zai(oQ#mP@LPe2fTGP-+RL#*`l&`9TQ)Z^ z{4nzg=TuI7Y0Soo0YrXL76b08q4nGsnsV}4qoT_3cstWwx7 zgZK|?i(`k-XT^eC*z`gfgDGndE1oO9e$>>tE7|^T@J4CLJJs?Bfb}=e zMh|0ngFj`f=NkK&(#mU7LW^F=ELzkjG6|C*GUIQ_mJ22Z@@4}mUXrn^2i8+kh zBDr}vFcE9f49jS}Un0@H7*jG4ygPF}eK@4LNccj~^tr6~xlOR?{Wo=#C)Yz&E0nF# z4TWV^OQw8pC1f_m&-F^=#ZPs=^i9u)S9rkvDig^Ox-wD=v=_Nv`kjaBQB7j6n{~h4 z@!md?b+yoZtkAnjKVOu%G(Ga>Lf%T}O4yHGffnoql?nal<^!v0mnDA_b9adSr0F1At5>sf5dy~=Ce4`7}HZ7G5FXam60Cz@-g3XJ@wGTSe% zcui+?tt@wR-blN0rs&xFXQxggC45sYQ)0ebsm8Ouvek=cihgoKaIC1>4aMfq$uxQ_ z8>}tyMVGuQQt4veIr8KxU#JLt6r$iKhf})tioEej06?LdIpxVd)L>sSLf_z&&{pjf zA)Z8jkR3HlO!P--*p7bs-L{|90UGne%ou=S_bMuS-_HfLdVU>DmP_GyeV!#zyXorI zm{4*u>G@u8#OL;Y$$X#&Bt~G{^@5#zLh;Ysut?Uye1rZzxZt}qb8N45#)MJ+(8DUf z!1#hNt_$0?aRT#`!96#~KO)`-Rh)!pOQ#pb-!n*1?^^bqcIlNj4eJ=q$>i|Vd>}SG zRjuvdC_qoXe8WwZc@E@d}69Ma<}<=|`ry6kDZh6%nOt{Y3v zP}}3*xJyGFf;rni*UJRmDzwRdT4 zR~tv=69D%zDD6dd7Cmup6v^(= z9X)2{mlNx>aRz;xZV+8p?g^ocg(!s1)yX=(y~c(f>2-POY>yEF?8qpRmwN5cnzR?s z1hS2ZLoy!@$WA8P9_C6_j_KRCpIg8 ze=*Hl{}$swc|k^!0q8z%?S)ip$xWjrR|mzi#E|5&TMj$JG8nT@KR5gzj=rnA&{6T- zphSv#(o%Ozu4jT*Y5YpEQjM0^th5#?erZ9AzD(vgq==2`O25b)y})R}`siJY1+$FM zRYl8E^^HFlTo|8PC*c{_ecAgW6iiME5I{vwt2jF4RMa7Q)xZM(oEtETNrlO+L6Zxg` z?;-e39;=ES)PJbIU*oG@QOq)MoeSOYWpH@2bEN!o%_9fm(ogs9uY%{WUyM_g{Kn0` ziWL~RWKv#bUZgkBHL@(?9fiL!o458;W^>zeM6_#hgJm_2`HPbZ8@bBLm(B(9gfYyL z5T2KHSANjC|K52kI>OHR-;Bqv&uWBQ_uJ#XHTVcLKjn#Axy)x0+fvIcdZMPx0m$?4 zLcetGduVbrW3WdNuMiTP_r8VT2_&CU41GuqpvOXG_*^d!16NX}Rh%UT z3*X_x;8&oX(-eVSR{BwjsgRXL{1!bIak7`Mq>=JZpH>FSTY3H^)uR>b;MDQo2S}TcF?u*z=l*hfcVe{RR(T3M=N0>;k62v3`hE(^DsjTg_Kywj#pbO&Cff_q!ypzyUo|r(dEFLy< zGyB#9d&YSqtw?P3llF^<{%hGTs@iL**^6&|yN7NcIixM8MR2}VzUA1n8YB7Tv~9Lm zVAwOci$=%4{16IF2?-u=a=q1Zh7(;f6RNSgH$zx@uZ!>tZcrXQmG=eLXF#m)?&fzM z%9&_sW;IN^1;+divO|Y$m)@=DzIY^O(_ycYCS7}b+Vn@ExXxB_`Ge=yGiq&=kgmd2 z{ipF~X*u<3NbzG~VQPyYTeQALDI(Ui zpcHoh{*v#!7?|5fk>z9Gm-au)zh#{9c&~2ukK0K4$tV|WV#HJ5xRJ_Rg-BpL>9?3? z0wPToNazu4Bjar3fGWr1nXC+puU@SpPv8sd$mYz3t@0}*gf=b8506HG6>r8cO8zM3SI24`X;_raM7)d%roI?v z4Kbp{;HljV!&Aa60^{*6X34q8pHL}oUqG@iKk&P)T>|j_qI$DT*R2>PH?R(c_5fC{ zW8f@){4w=#!-HG5A?M&V)23e$auK6r)tXo1FggOi?0(M-{HrN!Kmic*x5NkQsJ3hj z8X0!$8=mzwaf)~y0YE`K3~M$)42JX zdCTNQ;5ve6!l=)`cdxkTyp3p+j!bx%A82#MLk_<_WnQ?SMm~X%Kj1x5q_Ado??Fx+-$c|L zlb#opsYr6`1ck(xQ3TcmL~(Z;G7Zsa6L1IvU7acOVZgfu9KW{o8)TFg*i-hy$e*;` z6k>b&Li3yDTW@0i?8Ru_?>dSpu;y_0YQ``;v_UUnQj#-;8ltu2kG)LUMC{8DlwXqp>q{W6gxu+x0; z)HA$G|1Pb%YhF5W@$D0?mh`2)Vm_EmRk`H%UT!aCE0wH>hZl%KV;f87&+lGXVHb@N z^tp=i7Z=s6HR}l6i8DC`kLW)Nk7)=goLk!*5_vIrPb?$esNDG--|*Ft_$t;#krprY z+1!~}4;-7G7p+c;W~v!Ad9)QdHI-#z$MVGwaHU$j)ywA73%}~jJEh}ZI1e<}Ka@O$ zqflw3^jlcwr>Ux*R3*_dJ0lMzf53x$T^-6jhiq7MwP}E}pWR^a@RdS`Sm9LYI;J%+ z9QXX&g)>^`hc7xkb-|rgt>Lm??v^-=^4WQ0<5U|Nk~@Q0@lPC}yt7ymiD-4uig}#W z+_UHyM9bU66pPyCV!oRAz^flt4Fx>3QoY78GT;~vdWYTAu`=%+s*iX}eO)yj+bZy( z!Uyy%R^>^-QlT$+P3lY1Yv^s36z`CXHvc!_@y7F`k*Es}|6PAH(|)~vQLE*$mRSTJ zEV8!kTGb>_B(zIQ{SB}~#Wj9I;HTZ9}G9Wo7 z`1F;w=yu3#ekdQ|A(qyi%aKf@c9jO}dC57Plzu?kD#^1{{s*a`>0PDolWIT{Ru<>0 zIQWiSuGhJ^4|7}6WDz-e$T(qxnymQr5f+o!vqFD44_N~~E%lQ`aFR-IC5UR&Uw^#M<*I`pyFK3wooS3)w1EvYAjQ4Q>omM~v_Yn`+~p`>PY znf&tU7<&EquOJdNE#Y1k?issCL#2?}KqUlvDLgO7lsW;jKN_4 zCDPOgv-Gks%kYK}IRu{V72bjHl)_q z-yh$K^^bdQ;a6@Z9iYzMmVA1SMUXbg5=a#b>}JXSJo2>^uVV~M`1K58-STLM(w$$& zl9Ml+?OTv<84-rGwm>lD*|3OmA?_6&tkv=Q$g7rfSyrQRZ@{Ue`b-Sv`U<)BYKej%24i5;6+<5J_nKNV~g zxDK!h+nxE*Rs6^)KACZc8TeiHta+^^!q>)sDs96%%W}={peLFc^%mOi9gw|?53Z~7 z*wy7|G_o}YnJjA4<3T+c0wVoJa%HS(I>*s@eCgxImi>0fg?IPt3zqx>lyh5dY(^(P ztb$Zbi(lS656%$xtnCg-75n-pY+ud`$T@SrD#w_{jg)4Y{kNsrdx_aqlM;HQS(aLx zed7!o6@zD<9}m7(ZCo466IOnDA~U5XJGE_|*lgr;!RQ8}k!~7Q@lEB%*Dfs9zy!}> zV^!@0Li#zQC?rSEvM9#*#3}Pxb7{WY2;+VT(;UFTXC4v|HC8S@C^LG2LvJ&wj>6lz zhu0^@VT4AE+U+Vt5vs@J{N?I$mq&BKc4kVmj73RfJax#^HY|sO4eZych)a-a4a)h% zC*XmW?M9R(iW^SWggKN7&*ev?vpBe5rofbJv>g_uPzS&D)i>+hON-faj;i+PKIt>I zs+n(qe2+k439@EoPk2E&m9CiU%t~3ZUiY`!J`6h1hGqU!`k2Rvr)BM%r*E>1aEHxUZK=337Ta z9Ai*@!?T90ts$35x|)Qle8n2I<@I7~^CRnbK;#=5tMky34j0pC>5TZlJ0{8yPwf{# zq6Sq+XcQ4;0`Y;aysm%tEw(QAME6@S;%b5)Q3}q&8S^=P1Qzz9NWTimSXS$)srfXH z-xmdeDC~ipUP`@`#D;{g7d%n*!25~YV`{^>ii?K4o&oVmh0HBufu7cU$4Z2L7G=~4 z#@;P-LnZBVq|&gcalz<#rLuPZW@g_bpEItfQdtXB4k@*cMLb|z+tBnjxVK@0sgb2G zqu&=M>v33ZSpn~1_n!|N@t}3sTR?iuq;$j6kaba^%f4j<6^?`cv0OFdn#ZCILOR#d z1Xe_=;2Q!8)x}&_*$Qfmu0_gP-tkkdT=RXs;h;W#@q(%~$Uk(D%w`Bsvr!1Vh{@JgU2TR+a_>uloGV!#T^fxEw|+C}-1e~GF|!$7p5f>R#f<){io zuE#ZCn)CtpFXWS8O96v>>;M}woEd|29>m!)2sS1lAQ;ME!?N}0EJ(TxX$79I$Y}V? zchZ%UrI(3WPA>vk2M){w=}`uGqkX5vb4%o4{*~j?6{Tv8u}a3+L2qez?UN^wdvncY z8_LKn>0JrPwHvZyAOv^|N@n5>SuQYwI# z1$d|-7c7r%gjCN&-ED0=FHNi$y*7ox(xHklt3#V&(=yCb!N&+jPJlr}FwmlEo2PNMg6%?iiS~jiBz0ygj zgd?tUE@5S`?J}7KKeo;-Zu)o;->Pco1TU)TqPl$YVWB8;4h zt|CY$of4$;cD5Uv+{WRdHkl6qR-tL_1kX|P-1fvrjQb{XxH|2Wys)eYv!}uHBeo$H zz~NBh{^+*cs~ZOu{gf4B_nSTdhc5R68S1=#mgEWG%qgh&duG28$%tGPpJNwE-v2Hd zloPpGKo2T9aem6vch%rzdhRCHEp0zUbheNU0C zIbykqbXm-*dfF!HSNz(9Gkp#h+g zv9uF={y8!kGt2C6OyHIe(c7p_so3FwZvv(YdHFuSd7Po8nrp0r^sLwrO%KjfnN5s~ zlV@j3ik^uiD!T8=%3KzbImrss*Ks%Ee05JVNgj)ZcvM*mxhf7=>Rkm@U%q)=_ItEf zm#0lI)6<@JhoU|Cv54?(MMKjoPX2TM#ueoC{_rQF@2dU8&CqhSeEY;VX6-TPLPS#; z=a96$l=7RNNU^lhyers!AZ%COqk6sf*}%?loyT&rjx+b+1m_7pwe<*X&12kOs@VP> zMyuXC3;*ZTb`@xrLj;H!c*LJ!s=zLzbjm5i==M}xXJv+ze!vno4~WD(hOLM&4yvmp zfm|3cM17mwz*h1#YcQEsmW-A~ap)rpoH0L1OiV+?jc`u8l!2(C{_*%06<~S z2%5x+?)FZuZpXW+F8#D5yf%@E)R5Xq<>7cxHU&0Isv5xpD^aa9dRL*tUJ|bX>pCg# zmIT@TmCDk4pcF2Fi%_?ATrvLhaTR(9}bt^BcvtLcj>S;WgjcBMsNM`_vkQB%;?mTue-(~~k?g#|pAtDI) z-TM0`StXLc-F?yg(VQqKicJQ`-SB~Q3Xdk$tHH(Z-q@WoA0x|{RB~!PPx&!;(MY?@ z@%O4s{=_^p_Ay=bffrGRl=z5{W7SfYlP?m`Bn8+W$uBGaEsrXW~v8m0?Um|W^ zKiC5KofpF2{=77HG{Jj)gL+R{pmJ~ltq+At*#(_nxu;K_S_nzGWO`+%=ILx^oqprQ z)nS(p1+O&45wDp3&GaZw?wMH=OPP%tIkf+^ELFQCI-9FTrtT>|e95ko{IP2>M^w(k z^MSslh2O^yh^y&{)+Ch>7v7=g%*~s59`}Wf;(sr{J@hl%d=h}Rz5_D%8pezo^7C7M zIv(INHWeSb8mYdo@QvM8Jw-gI&O9?;JwG~q0B#P>J9uL7p=3h4eCX;Bz}nIFR@$=4 z`NqM`3F}+BZ=KERNp#Q8o9sj7k?J~N-gn&Ok?Pyay*9O=X4>j|0ltyB^r;gVi7p;5il4?{_=^K1jf zdltzjq2np0-)QGBiAG@v{5!ghN_IXwBCaPj|?52q{_9Cig)bm$4pQ%CmqrjUmR(#uy`~Zz-t0_T$S3 z4{GY)`&WzRKdh;RXzO3Y^@`TTq|ClF4DgoSM3ne3sxMa(WdhBtq_lm8EthlXm-L1V_CRer@(YHd7`I@|@H??h zm4dLf$gLebG!a%TFPRx?@1&wZMDMd|58we0pV9_rV;+Z9%;rVlN}jUGW{awVo3e#v z4b}1+hOA0UaO~^?cFn|;9>=SkeB6b+j-Dt~g@Y}e-V}LH5S?l8&OoaVyxwo5`kc>( zAAC+nCMM%@G&KOy;~COvM03I-FB>rsm%Bi(g<;2wx+D!sk)g>4p5{QLvD8kKz|HUg zF;?k*U5&F^X8n}4LPbuz3D%RTpkm1UKF`A{3?%}S>N5yQXjW>#AQD1Ihmbjl019xB z1y3{Jh>210W#ku-H{WMI5QN`EBRKxaL$rG$^m@~nUo9DztT!-A~mH(1Q??~ zC}g#lp!sLt+T7UEjw_E5@EJ>#Av13emfA}39EoItnm|t zf2hE-m!m5@XxT2MO~{0tOwlSfMA@>X1#M4knR;PSXH;EQ5KicAkH+!BWYZyj6L?@5 z1WgLe!BsqHL(@*f+G@>QAPHq2ICYAVZs43A?)RhWzaBmOy!1vn^Jx<*QWNkg}Qe+kL~&YqVn2ac!B#Tg58 zya_Re5m9(i4kscU1uVhS5oHQZ5IX}32HtW`_yOY2Ao9EEjhVCmta|BD-$mu5JKDMp z{?&udRy$&7KAS}gy<&j*fgA#*0P;6w>5yJhU@XKD*hR!>;wk#ozFR zHbovOD8G))oU8gBw6gW5jZs8|z-Wh!W^PttJgjTfi`c}43BxG3ND}wPflK3%=zsJ1 zhHhNY^PdkcZH~?P^WTg4^3&QZ49Z`(O=HPqX5dYo1E7Kw7F@B$!td3t?Swe`=@r6u zte~mZchlnbOXwcqu0FR}TfxV+FW{x4)JO(D|IPic8nvfi-1gr7dO@KxzrqM8Yn%xE zwFe?a z6U#D!eK@k3==fb$TYB;IzFTH|dTUX9_uPn`w6O-40vHL1|LD5e(m=oalGR2@KRka- z+cm?Og&yH+yXLNv%@Y2lUJal#2`gjMQ$ybIT>lJlg#wUsHno^A(y3KN_K%YaQZJoJ z_p5x_c#Qu=alv@~Q@LH4>=~*5$Ytb^#D;tsYaV3iW)dywt49^r`uP^Oj;t^Jcs6=R zqsU(0=*oMnezA-2Ke0pp+$n2QKo9D?4(PDF5pF7i(>ZXIBF#s@=Z8)5roqR5GIe5az+~Ta3e7JLfYwJ`-o!y7qE3XWS z%Ozt)*bpAHM8EJ=)fO+u-@=BJ?%7=Kf={KE7Z{Wt*4;^`H71wx8u@0*fAIVJ!Oxws<_^92vku=lO+8O>bpGBu>I16iRrvHj_;&l?R_a2OIA7xC!>F3$Yz>^`v=1-8@*;4Sx)3O#AxR7=45<}afp%sQ(fpTkE`|1ZeI2en`|#8843~p3 zhRRnRmw{lqRy$U)bs!AAfE)y2k`va1pt~5YL3NUfCtpig!c)}Z(HLqiF@2CdX}|?* zAPwPW?IctqQyiqx;@!O`F|+VSn{-H1cd+-ofEXgWLJ^i>CYu3*B9d8nj~bG=4kl~V zTnQL@hR%IHBMjyo-1}6PM@2$5vW=z@Jp$=dz`$2{4$DuArB+u;LlN2W6!mC}_b)Z# zKP~0XnZ>n48|JX)!k;S()n9`8yrb!PM*LX~9sW_o5d07>j&-Ol`TMhW>6;+iS76Wg zFORnA1s32-w}u#nadwJ;Xy&--Xy0rC7X;$X?M~G2+M&RCTkKGNu^}I<`&8Tb4^M^J z=X%461XI29P)Vw`fJR!s4oAS8vEXZfj?j18JFWxI)1_NQ=hK2Ujs=eqbsR#XAO1{~ zc74A#-?pKR!I3EeFCE!7LjUdaVe}_FD=I%?PF4(48T0#_noXG5X)XWavfE$wzs*bhRN_*f(>w>#lNa z=yZycv@kY&PfHXN^i_fsxmI!-EI4ec^%4o``nu&$V$ZBn%pf+vb*p!hSnr~8uKv8p zue$ythIY&AZ@BQKVl>*r_ssKEf-l#Rj_8x0<3IE@3y#0LaLoaXO_v<5eIGxr`nmG4 z^GU+?k1K!v`aO6;&OK0HmLPSeKD@s$Yc#f5MO6h{kiTzolbx;CEaXQ59;`9EZ31*&TN z0uy8TMAi1M!5-VxfIVy-C4HG0UYt&dfz$?Z$NW-fvzMh1hX6AhOp<7cn!oFMhUnW? zUp{> zqf(kxh?9*SQ5}e{23e3za%M9cLh&Xli(U#2G(}j!oZY%9CjaV~ceOqC?)Ol8`viC# z_UaJi$!~^td|9RPzkR3r@a1SMI%Ty)#Z3UJyPY!+Pv5Z-v=3nf)1K1H0MYFo2`X`zh$(FRMvpqF}vs(C;ebpIvUI#o@|j z`hR^RS_WlW_i8d--(+X_0)^}^{}o^Re0K3fZS{Jb_Ag2ht)eX7k=N^wx$4KVW5SQ` zf68VbwDW3nfA6|Iey2)n^&(5It>zuS7eUhTf$tEoh4}Bwt~#fX8z?pmhKUN8B#oI^lY|;OTzbjUEj!e< zA&JWnBhX@E>I8VuHuN5G7SXp3O(bVi3r9SGi@^T}$^QkwZR2D@9dqG@=2R zjHpi%K+)(RQol?JRVV{WDg`F8I2$`4s%uc_BsNqxj7p?&AkZmvpdpHcF~l^m!a+c) zJdECLgQ%q^H728yq39SeYb+4K9~nR5UEak*fj(!d0kfI4V?}X^yh8iMSB007tIMy)siA znOV6qS7l~qHnm}U@AdimJLmV``*6^C( z0fK(6I*7_KFf*JJUt2_6#_m=Shz#RO^-x7WNk;D|&>^^uorwiTT=$|*bM?Ojy95Wl6ESx5Z2Hr^s>pczQ$)ycvWICFz0460{#%NP|mAQVDrr8Q{AT zEvzKx8la^s&EO-})iibMDxDO$3NOy*^KnRV=LtMgwYXM_)SUqiD3j_KuPnCP_YVJVt@t_x3!Pbyi8Pm4>gNw5A;P=aOD}I)0EmYh^zc&`@ z!^Yj<>&3NjEB@JIeTV*|5lsud`qQt0)OVcX{`bXq1AnQ)aw${on_7qU3lCa-U#j19 z<+d|Vzr0HVsx{3}vW}uqN~Xa##~-HKOH!+fJ9=&(PV{OVQ;$0~x7GV9 z&Nu<^GJB_Lj!@6O|9CirN?)ETrsqo_&b39~Jj zPEp)H-oXuv2fI6%32AefP0_C>FO%0K4tn56orgCZ2-|(B_ecD14zTl{XQI*bW05JI zUw>Jpel%D(vUS~NL}|~1W3(@;cP2CXQ3Jr21>(gIh7S&&JKkY%6OPla1AOt(n42uk zxC!UT(C(Q5XMZde?oMAi(NVN%`0au8g>`TK{TD`|*{1*Eal~uK_X+wZ19_`JS<$NQgA}3_Iz9!E(3Rha*uF&IR2_Deb^~eMbdTq!#w1- zdT~q&LkUx7i3N;_P(uDE9vqxy?Jvcw<}GkXFZ)87b=}Wx@hM zZ?rKSoB;80buk0s2<0C6`lo+nT;n1fg76^-5u~TneUlNm!keq#X~ilj;ChGQO}V>~ zJbV?t8G_3*&<)U~OXM7u2Pp`Tx0V#+GH*GG!>`1dvmFcmq64DDLtlzVt_(TYf56SF zUCbG|&FZx{ZFHeazxB~{0tG9VdEhV{5Z=0l&y!M#2n>lq$d15pxgYM5G>buzwNC54 zKRp$_;QV7&Rf&^-f!HX?kOQ;sEyJC-QGEMyAwGcO;qa9Ah68Xa?JiWzCy!Rv%IHAN zlC)ztDzdJ8?9vGi{+^%)hj3Evr9p&WUfp(#Fq-$Nlz&m;OFd zLlvCQot?Nt%HL(EAxGj(N{K_WD{=zj9N#X^ovvMAOk|X&(eHOTW)C9v&s1V$#W^>% zPw)@vZ!ons>AU;hYO&b7`%GTkd8XZk;9jl5m+nvO4XCrFX@OF!YQr9Nd1ko-Hv8iq z2eayxy6zDXtQEU$BT6RpBK&^5?Pfi2x4GIg;a7DT%Ob$w9=gmGirV!zp0>%INa(&-gyRPnsXH_pVqPgoTexyu zo}RgZl^LnUP(zf(Z4bn#bc>*VejA?$x*G~ATbjstl1QcysFRm#6<-e`vEPq^6*f_F zBhXmB@Y0+piw>^>)u!9`um3t)M6j(paadvbUfZ#kT7P9ON8;wyXOdhXfZ^Dezh zxJlZFL8IMIwLx1mrJHyQ4wXdVO60;RHvU9jJQR$6WxA+=T;`qb&qu68!ZX_2f(&3g zJ6wL8hC_(7btpw>GIal&YJWZUXX25PV!RE6*8zRitHdDLnqFylCB8r+6$F7>0VLMC z=rGhH{rmDq1h{bydduF$$V-*lIwuHvGcj0647mfaRlOLF9=JG# ze5MtUNs$hc?U_7#O%7|BN13`WJbcY+;LcCdeZFnSP~q;5VYMzqn$Eex-xoZu2{|p80;$vVXMTXW=*4P0O!+Vk>59oHr<{q0VC|=xF?;;H8 z!9R<@U7WwNN?ZZzjd4j*LsaM-(lfivhk0!=LNuEXhgJgR!(No6lZB17gA*}OmEQQ9 zqbTFea1Wjzd8+V8eAt22c$&?EJ!`-WYo^#qf5g|-jg>8#41zx=TLu0AY$Xte7Kl1E znw7Artc@<7wFR++2Ko4?&v$o2?I^!CO8?l@EZfp)P+y%`JyEmwg$7}Ge82Ov-U2N@ zUekrnRniL~BPNP9Tw%v8eHg=N2nVv z{}8*44{X`8+5?r(1j0Ftd`W!Ab9_!&+r}8H7#g4oxa@x1mJ7gaVnWs?Quk67IwJ5P z5)p+40dFv-Jq!v-_0Y+GrV>?!hj{r0X1-5p)f-Qi9H z$d-T&3vXMBN<_Pt#GfmkZkM#C`rI#XP3%fk1@w=^!8P9?(6=|Z?b}?R^3884^=5KU zho+_9(M|IK6=A5|uZHR_0W$kuT(a0$Vh}@}jLBcj%z^X-H+IFg@+n{ILh%icuNi#$ zvX`+Tac#?4=h`Y`;}Zo$yOKk82Pb#*ehmwS?9kdXnbCii@6DYVNaE$|vML_z{d#or z$&s*fj}w_Mq@#OB)Q5&eV}rhZdLH{b+w&tr8S$Eo6b8h2>0xpdbnk4G zso9O~$3^I5ihXhGr+lI3&6_4JgrNEAn%Ub0&+@K8>To(n+5)q?HA|cOkEX;R?NV*e zy9x0%?Uu&~RsknICH0_pTLJw@RDm1 z^i%b7!u1BE64Xz^R(7~0z0=v2Egsmo5LB$@oCIeU${&3BGr01`N$TX08bed=^Q2=rDy>)+c-O> z0%TKJYn}`)IH&a10cCdklhBdM3>!zss%Q694bOgmlhqRJfYh22-@)5k4|G}dzi}#< zAzAW^PGo5EAQTU1AY+3LItYP5CKNF5W_2FE8L5%z>uE?V*`UjfL_d4vVHmQ>nploM zWdE((`nT1SYa2^=8{(_-*01`s)@G_1IdiuWG_bJS$j`$+LIAWp&Rd=!S#}godwzVyEuB?YQTxCv$~_rN~v+J z>-fe$Z_yaGBRTISlacAiLHp6ScTA#>{;A$t(cIa}A z+bBmP^icUCU^rEeTRo=72BM(wHc1N!B?H4pxOp%%w~~TaErVQ?>dQ}j+zK>8&`jar z$5={fn;fcS(ZhhOXk(wNIZB!n3DN7_9~Q zk|J>Z>A5GfMh#7`AyD*pgm@VDN@vaUQxPblyzMjmxIEwbTjuVg&peC<(adwhu7`k+ z^y7>gg<)8nEmlrtYbT|yDQ1_)#@PnqS2$EEy!!z|=3E^Mz;Mn1p)ko0Bg-Yxx#}c{ z^hzdL!Qe~b8F;EhM#ADic)1zw^oJLo3^8?6Mi?Q&0H@xF0CGHF9JdexmV^~4VO7b+Hl>7sAG2e5m9$6j25d+A?j?bZj_Eo4DMIm8PvJfaIe%G&7)7T&c2xFTY8G z;>GPS%AhQew)|z4{pqt+R^g4A*bH4IOAlB{_B@*&Ico1oRGM0a)m!>^tW6NNN4Q$v z2^K$pp(6+15lLJ4d3Y@q1pFJc3H=E&Po1GZp*sfaq<13r&pvb=~--i(U60v+D%m_1-AJm>xJ zWzzw2v{7667^YqZdN_RVRJfgLI}HLvlT0pAsflJMUPDha{H6(*jw5HzWNp4zx5aB) zU=YQ3q0MyBS+u6mthIPKk=uRr2gTJy0pv^6&4^&M-p-Guk`Dn&O9SMH2jye3H``h3 z4*0zCD1^TCiv`YdTLUVw3)59cMKK6HMgHMuo;?$#AVz#XH zPS4FN1yN&VT-<0WGc*dT*cVD zjvsKO&tFoeZdtM2$~%LTAs`n^$$J8+mV0%@cY#XaW3_mAn6_3!e<$k(1HaOHZ6j$-`D-IKsEgXP z*^Mo%gXCni<6NDulW=!!YOJN2y{VHv&n~04=Hv;D?swPTDXQ3R1{Uuf4HlLUNJ|}0=c$p= z!-?N~8s6=59k5HkqV?3l^3UZT<7U-}zNiN4sh7>r4pk;8d z1DQE9o5ju3307?&(W~?Q z*t-MXpB&b}cO8Is*uzJkNI#^viI!Z9Wm;sgPXI`6F*E$AoDm&oQ`<1({ zQKlj>Ez8yYf66@%t;N#Uz5P4+9`M$UX_v;w1PjoeeuOA9ttM8;K3+E*bJ$G7R8 zC*B{vN-u<&8|a@CtVkZT9C3f{H8Hy4j;ro5*|Ag5^-XGl(*-L!|Gv|BoKQnP;_7Mf zZ0j_pcM+fbEJDAa;QQeR-%3jBbN;Ap3;eX`yG(X9`f%^rp>DVT_%9TSHKTgrJs2%ta%3L#vUDsX^Y zlt_{(7y$wl@S~oV1wXenMErE{_>1FcTf8{2q?2-H`}! zU+JnIcD!d7YrGhlZp4))0`v6-bRCtFIelKR`?l|bJPg8sHFMO0Xin|BtMV4>r}?x= zs@fWnK?N{_%+`M>hK+y6{gWB0_1ZlNUjN$k@4Swl*P2S&$O# z$X%?6G!6E9I^fQo6m`2DVg;(5f!&RQ4)An#2sBk7zxP@t%-+ z?f3;jDg(K=kFkE&F_QFtiCc&J8J^x0nP5O-2&yT}HgHPlsKDi6V^|Ba|0+={GWmM& zRR5llFdS&AFDb0lE@%JlN(UK;=oH}BwOgj%co@yK z?501>L<51!#Fdwy(mjx@EF=miR2<0{yk?OVLdVkulR$52O z2Q0#DQpd`E`}OQ9GEwSx^3Uj>mz=Hj+PRHYy(`LfT6^0Itg_>772f->=Oi=z_4{}K zo`1R)z4c;@!UMVx5$y<^2dw~JwwQ{b5|m9W)tl>$414Sjt{m*%2O(N`~`>S8zAt-|=TRKAAK?Cc{+7=No8 ztL%%zOUt!tm#dJ)`mgUxYDh&m+%})uGpqMrDP;M-}jBo%$ygJWA)Py_SIn>+Cwi z%iAIV^2iqlS4WHX6#iT+D|8lQvn0#x9t%s0r;>ObWTBdfZ_DGFo7j&xyF};Jyu9pf z{@}*r`76VfMT)5voB<&=Z6wIAzl0HKcQ5ls zwWD^|p39T~mS+*xlJW(K3=fdiT1yRntD5|`UkG1ScAUK7TQkigl>*6e^7 z#hN*oQOZ*-ZA8e9TnIIGPXz@{GAgV}>M{JyOh5AxOv>UwH1A}~m_`bG1j$|*i^VV| zSU^!qux^0|GMq<#VxgjW6Z?f?!!e7;V!yd|dJ(p=5DTX)_mS{#3=QM(co9&5Ud|v# ze1q1Ve5w5+SsfSBYjmc%b@+hWLnF1-H3M-w$2Pes7at5njl6m+D2~}8W*_@XB=e!m zd1<4%KYHuX!i4ea(*f^qZ=MGeNG>J|n_hsZYVNaZ9zSoYzkO5l`M9qh8h&iUE*B20 zF*7`v@An}@3B*2-#)coNk2i!3L!`#H{CDoHrw&fV-Mf}zo=@KDdSdUM$Gfsl&Sf3% zqiew%=4=fzz`DEuSzDn2;%(csVYDBrjtwIZ>+%H@68j6W_ZLjD6>bsK_)d{BTw`r* znlycdck(7_N~iDhKL5-Z0dH;7#i>Su%fExRiHTlD5^WfsXX*b}$W`}PL$E68qGp>f^~r+LjD zBsNpRO_8sUwD=81uZ_Nv?nw?!ks4WZ82-qWaH`09&qw?4>Wd%pM6q4g7+#na%hQhq z@WdJhfr^M(R?IRvK?PFW4O_F})FGPLBX|`La0gXS9Q7p7d!J<{0Mqr?a!|9-+wG8> zBy8=2;%38eFr^SMTr- zvwK|F8yi{ccF-=rcGTNKq$4Au zj*7afu8n|E@84I%($t!)rXsyZZw;si2fnn39TD!S-FkI*k$95dQ--yRFKxe7B8Vyo zy1>}U&z$z5!Kj1=ax$Z7n!#&^MWY6=#rV_n8oI#ZnY}S#s=O!E*Ajg3*!ZC zmEQDy0%)#9srJO;IP2a+8E?vqZt-D0tWpKG~J~VE}#n(m_ zb6J!SRO)_1`4-2wluPgS3vf50V(4{qPcKA-RsNUkO53yz)2}{MvGF~67g={RTU$I=&`2C>dD8$_?!4{_;*0UDUfGyCNx+afQ4J>@(R zR75vx+maXFBHJUrpAxc*tEP8V?5*4%1>Z;AM;oqFmubvB?g`N|i&yXLVuf27#C!gs zP>`TT&AhGaQaG|HnsB%aDJyZ(!@nd7Q zjmOD2)w#+(Wca5QrNmlzEuO{%>;TwUd*ADO@8~fwof7O=m~~+P?K5$VLq6ZJ52wB_ z=uhZ;qG&k2zQU}ZN?>59tuOcPf9UiigI99Rf1^ij-U>C2bu}98yWIB6vDX@lAFJjG z+Iv5xer8$~LJUxwA(f%(e%BV?)A7OX>M-G;u%w8V9u*I!gkQNx&Uh3Js_(!u8H4?hjtJ}ZEGSbkK+qKdGDt{eErYWqh@{ZB;B3^!8ftD zbd9HA8i#W%lC~?& zUfSxsH29PH?`na~zJr$rHljkhc<_zAEf0Dsd>mtQFD1jAV0>o29}ULt(`QTH{_)Y^z>yl4<)@&ie%nqt7vC~dH{!Q(7f4um#xFW+);{j0Pu zW7kp#T7P&7&H@fRx&3WtnO4@r6F=N-X9Njrr#lEZy&cyn_d0! z(C4eC2M?~eaCZH}GCkm}X|b2S$tIZ&jL6nmk#$(*XS;KFPevDSGnV{_r{qq)^fL+22-;COeMJmtRS!zcbW-HT7 zp|3Q>it=Q6n&$Mp_LP+!iBcGbwzPnT^-;(X&KWCL|8QQs?WisEel5Qx$H0|$McIR& zd@hX1N3NBO&iM`*(0I0}hwx+je2K9>7*}ypkzbYF8s#W;kc;sHZU@;|*XovBL6y3z z;B-FMi)H4d?)OG5mf}%d<+~&FJh_@>Umh1wYftV%Hf@!8QHvI=4Ea+@?5D2*w}p}F z=0GT`L>NVKua477xgZJ8uIq|&)^hjJx8tHcEMP8W?i*cfrh^O+*;H?CM!FshSTf|p zNWB(rC`ui9XSgcziG8Vf!b(kR$B`qcJ*?*KcEOW17Cu3_tMpfWHr@TArf&gM8r4dq z4!5Y;fHxSGYGVA_(-XMrCtSFN83@Ua9E*4$-wWEN7<+ z4Q5~w=>_!;VuF7+*D6mh0?Ql}9$FKeRqhqrT^V@`kEe>3-JWqQm9q(IS)6F7x;bY; zRR_JO_VHe&JBkIVBJx@Fx*A{SLT`$VTLBA(t7=Ph^Cb0oO23fm={UqF=%rl*7?wZ+ z9TnEK#?kwOBsM!Ydsf+x4rxp+RdMVR*kh7fFB4x5Ij>1tn&35Nox<0N<=(WV)Ymhx zS^?H<-JRe_xOJZ2j^cF8#iq^QqkV@Ev-GA|nLc&~HPBin@bJ}?s7CWIA^Y9}MWNt1N}*0>|IpyFj^*T))MqDkD- z_{1<2gfqM`V=WZ78ZL405(l8*Q&RO{Uu0^Rkh}Iu6gD@*{C@*uCJs{Hv>fZ8dHWC*9TzuoFXK<6zG0^rZ67ytN-xo?<>}v&HlLylku(4 z<*1qn9&B2XuI>!6PYM+{jop7`)Z%l*QxSQ(P+jh>7kG{LY}noa(Jp{|>0&kNI>pu6 z-$3ZGCfizyO(L^1D3%CEj-S#d7**v|nF8T=!!^Xk8ZuVRO?-d(=gN5Gs;_|>9vYv& zz`ou&OVSFlgn$j~)wK`uM%=P9tOd({lkXu*1AD?uoJu#xyJ$Z@YRW_n+~Kb(sgtJtpFt8-%`#Q zu$J~h)m>X>CZ;9>$5HO5p9jB(1ai0yqbGoDngIc0jVr03r=*^#6l7L>7SHWWKRA9H8~WH^9apRuk&T5yfj$-`K3d+{ zM-1VHqN4HqSd!lMRfN~b0vc0})k7}(KRhMNnAH5BuPrmenBFlM%eKJ_bhNDE9KGr^ zT&1DmkeqFvW!}bgIp4%4V6|on2$NIB)FQb(#fdGW&(m9+EBVNG2x{{a8G|HWpSvY*Y4! zS)Aw~AgW&>C9f)h^bsf+n|V}ALrn7Zs_Z{?8Eyq-^8iwp>S3MS{L!;3ToSi&w| zC!lwE!^;X-r%zJk@CE2_xvmFL%7Q3}RuDC_9!ilH$8*HiA)92kLv*AKLn|~pUGx@G zm}^9UgZN+#PZZh)%df_Refb+ihWHWnczWz=pf3iLcbZ#`r~1M1 z;JhJ=hH5zl@cM?J>Ac&Qr-KA5eff_uWUy*|aJ z#yQ2&3%KFLA$Q_9mtg~flCPcD&6q9pUEck&ip3L=Tqnk4bHzwr=-cnq&CG0(VC-Cj z+gObEHTKm+5u2iS2{a1Ef8L5Q$Y`mtuP&=@2worRp89t8nL8P*-Kzg$xzNX*>v#B8 zK6o^r6L3TO{Z@0f{H0GDL#lu{EgLlT&e5Ae|t3ueG91oO)#3 zLTyeHzK0r;v&z%>Soj|7TGI<_;+&d_qc+R7^D4SLgG$f&JaiIeSam-%oj{MrI*99Y zKoJFzt0nQel0ha0$t2)cA)Bz0ehy$eJ!NNWZKQVYc#9qjzH)!M0UNc|_WEGfs|>Ii zyn44Dkl^5Vgr!g*bV=+fGP!m$FT2WvR7iS+6b@PmSDdA~vFLmT#Fyl1pn;};p{G>> zy$rql%r7u_DiAN3c`{C8NM7gstkI`BbxJFzV^h>zJY(8}q<9>&3rLo0ePYg}uqaH% z+ha+te~9MyRu_ezuQ9`Gy<++0;s(`qoolm1jqVs76ptiBRcq2Qx9*g4a}SR1Ey|Oj zLHmhkHAAz-XYy`gDn4v}(C$Oxq!aKcle!mlm#G`2x=X`yI0006r>HYlJ>LMw3T(^T z6i-%n^o&Gw>v&HyZZAIn+DWLLl~vUax=1ORSB>I7BWHrjce`7)peB{+nas_x_QfT) zF{{v=bn|;9vfOZd`f%d=AYLEFN^U3;2iXyGGW#`ZL!!~BeoCz>eOH1;K(Hci6# zl4Zc8V7zK2Q;w2{TfxUJC&;nv0Jef1;4AVC;0Iv?0`%Cr|NnuY+S*JH)Gm+>_@YVK zPM~PO3W$fZdtP^AEk7+P0*ebdaQ8BBDijN^CPi5~@S9 zC=y17Wk`SeMP{Z=R+QsCiL1)p)*@^#MKcl$ML31Irw|yL=7J^+^7L_dTvkv5Zp6BB ztf~l0&N5uK(Hai@A3#E(a%5Mb$x^GntDq5ZOPf`3vbj}$xpn9R6GOe%nsLj!26COv z`^eS(EDk)exHh91ZQ9`zW0~+8i>mT}M zECs;~3Ik>8fiijVl$6Z7^XZ~8XBun)9K!*mZ*e>)ati|EHpUW1ClO$l<1_)GFXW(n zZ7h;GciZsB*Ga-;5A*PrvggxTWp>6f_q`z9UKp~sk>^O>N?+ZCl>k3;0))Tbt)T#v z0*8(Ix!eMLCWI_xp0<=^rC%Pme9njIB90{^ig2N6$8W{VHB@@9X;m zIzsWvTL9x(-yrYq`xo4x&roMB)FE~>9qNE558ukZ@Bumi#Kn=?e+z6C8aRJ9d%o)m zo%sV9zs;|eRGm$1E6=*oq{M{G+k-coua+eMxf$c>c+Df@D}<%*o+UlqK*X|hp%mbT z+a12A^u)tQBrhW3Fle|F+fMeJvFfNay)rw=+uhU~RFRyuOxm}giyUb{iPGnYg=XdD zFT&N~xX{wsXSf)L9nrP<*_MP`E)5(Qo?k&TVtCk=((8Lv20KO=Ri&CCq+9lj-n-Lx zY7x?TN%$?g!^rKF>{1K%%0jc7Dj({LPu}E*U8~oW9jmM8@)*Qz-9O{pfq||#KTdje zcX)}P6X)LC4?ELsOugc0q*U8_(8FU(HD;{DXSNE{oESM!kVyZapkq2QSI_xHS=M9D zyDb7;GRv7;qg>n7eDuAiXiY2OG}cC)csvz|E&@0<)$l2oo7x%*Rv&b`oM|uJy>|$f+sq|8_3It~izr)<3O@ujy(XE_i@m>*0KrpKmVNaVLxd z1g{SgGf^RW2Kgab3Jg8rcXV}+&bxDy)K5zvzwNkJ+pI4QUTtc(H2)dS3ssz6XO2r0 z`|9~c|Jc>LZN!!!?ze@Iou;H2-{S3YYR_J+``)k+mH|&;JX5%50^UjBR4HHt&SuE~ z+ZtX#q&Fy60q&J26EA1y!IA$~r}dkvj&EBmb|a`QoqU)9;Qj>>{*Z&lk66!TTte=} zTcsLFO(Ffg0JM;Xtd_6ACuH=bOV0fGF>lKbCS6Si0xfEqLhp1L? z1ok7j$jPb1qZq=a(k4)|xe1Up4vt0+#mo=?P)6QqZG$X4f#iV(>!hhaM@3G<2U$|C zrD#*jB30}B$nH_{R^l$&WIon>Y6i zHcQc73{i^j6io3zYwhBRWVfFNBsb36R`G2+zm-2U;qh0fCU?J>n5gln(M<~$_ogUi zOA+8(ksvjDKQaZ0(FJ@E!K2IpH$}AxTxynqod8N`(kWuBfOQ2x0Zle-Hr4|_9KUgj zoZc{YhH7&kBPsE+K`t1l-e@npm=98lJBdi zF%JYG(BctH0;x6}uMR}hh0RC^wxDx~%dN5?WvKdFSORcNpo%Z6B!VypEYwcn%K!?2fP3aN}~ z62Cnq4+!*koaeQnQS07c`4xy9hPWnJa93kZ$chDrM+KL~xh+Q|>Ra^SUBLda`Kdcm zzTiXAlHCFOZ|_NI%trn0Y4uHe??;PX%#X2;+Ob7vf0FG<)73CriI_q3APxXQWOW+J zmso{Yn!%_-BA`EfwNv&7)M~v-CD(&k=?iiF08K~3*$EwN3rU2&)9)VO_y7W+CIUUF zMa|GNKnxFvN$J_%7knLwH3pP`dn4hYpzcl-F-20X=KXE$5xRD_#~_5m3PYPgi7Hmc zvcXI1rHxn6{lXn8e!4X({Rq`jn6xsoS}yvekc|O6cM2EA(95x&q&C z?OU=&2aj=aE4ju$<~`eX07E4O+2`XAc{ZQcn%%mJ`X?(YEjp60Sh{YJguZ`z zl?Yb*1&YroT*>Z!+j1Y#c$iH z)6FTazEfZK=3Can!;G}=-ZKsPi@Y!q7jElllLL#sk%A~VEY4)aY`NyvJ&G zqL3$;8DCv^u8^rP9UhR5N=GABhS?8MU&#GHYllThJO@f>9?NQ~aeOfoM0<`}6*y-o zjj@lRHrW%XxL6Wa=h}X%6OWq3n442KyP_=B81eP=pb#0~{b{XD$*z*R{6`gLnDmt4RXu-(|oy$CW+iX{GOXO1bu)P;P!S)kc`@gPyY%=u* zI1AAB+T*NWc?41Wv8H8>+~)-n?;_u$M;IIkU9+Xmud2$Fif_qkuJcoCD{&gHW^CGg z8@#EM)C7Kp1huHl!Kkb;D|6;p;V_zT6l+c@!1q&yM!*tMhUsG;DlgTdYABmZqKg^J zO1umMwAg#j5GSWTsI|5Zxn$h3Z|}CPhe8|ESf-?dfn*K>arOKPSyG+Obk*}|r?vW)rqld)* zGUb^!nf*_J8^36pc&7*lz7bh={f)_jfUT z=FHI=DBmEQH?xYT!lNO8kt26Y*9um`v#Xv?s1X~-%3KMpRz$Aro^GA9JFk6oVP>O< z-pe?@%6Sta3?2A>%4yZrkrv9L%cybXSoc6q?{W3G_$h8=t~x)i;*pVEPV}xaWnWW! zfKO|ej>zHSSn5oFMOd6?K6hDgi&ZNR`v^Jc9!Kz8z4O_+AdwRQ90sSnCwxM+NF!@N zMDV1pii5`Ib2oc;^ICGQfC|LgMXzqG+xwP-;cr|SSdVxt*=PG`@@M@;ZY>5vK>um| z@gwumHsJL+FUB~Of*XSji{(goJ~#i@IA4l1*sDN-wT3eDD4^7nbeV}E zKC7_1a-_MIM`t4hPWEOv}=O7In!;l75WltXcd@?uX7Uja>@lQ?kg*I{bxw1EE z?D)&v-31r0I?ijX)-as-n)#nI70bk}SQbX*Q`jTEo3=Nu+*8oDH}uv^jq$C$Iny}u9m*=_&l^w06h zu7?-){%X>Gj1X^I5B#)t%ZlWXa+CQY_>zRF@uzN0Ec@i|!vp89n)$Km5mKQyYQ>|5F!p+=2MT+F&-%c4 z!_ex(Qnk}QyAkI5Bmc{lpB%c-)A^N0OS$az5%fF2tuS$}W#i!z^Dldxk}GsQl%vs~ zKHF`Y7ktcu64M#sI_0H>ZsFGAfL-RK$qlNY3!6pDE6XRzeudH@18g}?y%{TBu;8{m zSI)p3Zyxcq+DSF099^B~m-2jv=U%s&W7VG6+q)sx_qFhCY;R6eO3c;mw@60CafiM# z8K^4=VuGS_cvzt@aE^J|_MjXN!v*a4^xAP!B!|Y^I;{)YGb-gD0L z-1l|Wo;mz|^!$3OxH5VBtO^C18e^>N@mM@*F#E%RK#8;4`+vjN|2|-!SQvZxq7QW^ zveCD*RJ5!9oA_I&PrepcehOiJalLm(4EW={tz!_ZjN3&V zM5_?VVLMnU+ z=D;9~vJj9zc*ZOOA+sR!1Gad09BZ)Hf~fE{$9nH_i^HwDUH+aP>DX2Gf6ceE(rWot z43Rh&HhPSBn{!}858EwR>SwK8W_+`JoZRizmx{@eN|TOHau|(Dvk!d*%tLmx2r#ry zU$2u1Xpd7AO>*bLf&*h#aJOQfH|;$^)%v@4FfWz)emN=M_I$_smTpTrIk&k)ONOWq zERavuWh3xkHI4`>?gmknq!KS!34w33t#o4^qE7(E;v3_d+p?~%l^;C~CoR<7wjZvp zkkC9W&CjwhgGHXl$Ox41y1fwPzJoB%apTuqqkp{^oAerUum~@xtE;PEG}QK3)o+eL z%`ZqV1b)3(KKt_&7ckUK(AMbKgJ{s7)XlbE*LR;UZ4gm)$CK4_RVY!Fe6u$cN{Lec7*Ni^m9v#f2jpIrr@u}nRivZ<5( zRk3~ym70DX5_)N|wUdHhKVMGpF-P$fx{|901*H0{O{~v@^>`t(#!ixa?z#cNcFnVL zxdtv}7k@oa_ZU0HPtm?o6!R7Z$4Yj{8M1$x$1GtvSEN`+|rSky(nipU##9!Bc`)O$s*H#-5bM{7F;!O0C?8aTFpS-h&zk z0kNgroZKEOOBc0U-)hj?J;p#WvB5kLZ z7yN@G7B0Si@S*GW^U2bZrw#JkB`<%vtI{AjuKiVpuc6*WQgLiOuLtRHzKi5*|EN!X za|v}sZk5PQvte3~)!^SJE+*m2j3^!7{6VM#OPGR%XvmqSooD;%nEg0nWUzAHHKj+8 z&f^_t-OOK;&qn*1a(@QSocNmY?_%q{m;2r2LNJ-wRB+OWJr#qM)PrG$UX`w_e~upc z=R1~Z?Kb%AzNbuoj=I(Rtf>wO^XaFyn}6>${@Rjzd;c}6FqBO%k;>%ybEGp6ItV46 zRLS=ce|hh)QGb~DVHO6a>y0xpSs`Ih*iVo?lMPON5B(nX>xoOr&tAYz|5tEivw;)K z`Ri8!4k6hrR0^bHHKE)X389r<)_CH>;UI{!FZ0E75~m9a z?XUkSkUou#V>!z`;K02;_=~6vD+>eH_ zfz#5Cbr9?Yr_eS}k#Rnikl-0dxcfkmQ=&;syW~>{f^Q7tNk??|%;%U1#-mi>QO$bo z{8MH3Ola{`Fr0$}gwozpBT`Ia0-KK^Kp-TA$W66p#~kGnR9rrsuwul@3rnrx8Lj%% zRuTzk-(!H-Y&JmnOPMtNlA>E&nB#T`Ita1K4455%L8heiNYdxYRoy*9lAsPNq!P%!`j(I)$gS|4QYDlog*B42 z;{izCg0iRag0(uXF5+P;JiB zT?WS1oe_s^Ag1EnvF4DcWYYdC6)H00KbNf2_60X3pi+EoUMX3CJUmcmxqv2h6N0@R2e za|8)eDU`y2Z0Xv4cjKQ|+oXb8tz4I2EkxN|P7LT0W|<`f#8!~N{T@=p`%Q0sT1DHf z;6*4%0L#{QL)ezFS~J>MR_|rcsAWK4vSX9+a)}>%A!~0(ryXrQOos^!Z54nO3Zt+sWsT< z2A^hb5}RB)3rporqv$7;C#R-yJ!VZP-;q0b5o?3 zZnnRy$FJ#lJ;Gh;xid{rqv+Acr?DlV zYXJ!wC%yr#7GgoLH=h(N5`{cuhLa8LFOZWti5x4k3+2g%BzKO9+`WL}t{%~S4TkOE z>;OZz9iR`#IAG&1n#&I3^qH;P`nG9IqY83mp_?g*;Y#^R2yn3iT+@OGZpf|&e(}83 znptz{_hXK%YzzX9(fOq`8h^&<{xhm#r-o|G7Gc(?LMY#(%BA}zMan|cW$l*TT|l`bJ6NP;E6wo?-hY zZ4B$zo1YcLQuIEn<_W&J$*Tnxn&tRjyBGFbK6Vr5gwZ=a$hLJ#XnW0x%O_0uM)ZL? zMoG<@MFB$!Z#Q+j z8`&D=npb!D6`D_5F#7FVs&P*)%*BLWs~d4Asa%Z}P#J@b&~Hi>xX{>Mi(?Y44NWXh zH0TY&aec&X)=0eq+q@;h43TAjKmMFyyc!NlS3;`Nn9I-O4CAMJ4F+$Tlx6)X@XtGA zHh&tjQCE)d+-m#Wf6c>blO+ozTX9L&gMTnRQKkx1R=If+2JZ3zgNwdf?mmg z14}}{x!v~lu-o4z{J`Ck;1MtggtOM#fd|*Ci^kx+&v`HGjIfZ^{?55dq{=S?zEBnBS7#wc8Ws~T5EMzN~9)-wnq-Irpt%k} zSZLSyK{;so<*h!a6K3bkcLqp4t+XN^rfBPk8ti#4gx)RFPckjgEPCwtigX^0v7{BR_22Bq5$HnN>Ts(#AF zmm$7zL9dIS?QR*{|LtF`86fx3&o)$z`|J!Jf}n0~^# zhep_V(EB+g^BwN5o1U$elHSkRqQf@rQ~$Y{_QKiu)s@~y-=9fcbSH}wkLf?DphJh* zK7@9*MNm#lx}~*~MC7(f%hcKv6RA;cC%nYf$aP-D0xMUX2f7*6xzHTr*}!=T9X^tn zWKNYka`|jw5c`>|(alH1zDdf(>Ui4lu)j{8VyiEVcV|*hZ^f^cEwQJYFZel6k{36f z{2`EZOQTeY-(k73=hzonaMx~0v^jUXk;6I{Z$uVP6#_WXr;Qf>t+(A{y(f#k7^0l` zO@iWpv=ILZ|7a9Bh}qj>e+*h~XT$dKV8esXYDKxU?0=nP>sv7BVPByqspgCpc%7-k zmtAFE>ky+$r|Aa%W%OPq%hU~uy4UNwhp%T5spv6!ZUqP3G{Df%h!co&v(7@ur}^2^ z(;uP2f9gVhKH(w^ZyQL)xhE7B6b72e)E$;-IKkZUZZ{vC=hT-r4x*)hy(HS2V|M(& zBg1Yu!w!Ch_Hy;|@q-nf$g~4^2KJIZ9#kZc0mMES#RH8}ItSWYxUt6ta~)-7kopIu z%#$mT-=~dmezzCzA*!%0oM6o1SCL!1Qn_sHmiAd}S?^5CA2mJPIT0lW1Z}>@)9o<_ z8DTS7hu}cWf`Q1zY;^c;*hAt*22Rw`B_vTmfKtWJzramgE&e<@aO_nCTZ|c@L&r;9 zDEv8Ab+h69Yof)h_r<$BmqyzJ$>bUO)6*|?A9kC4AaQbM7De}3VpNVsSnPe&iShB<*f zIBTMwU)dg zLbBQJvWD^Ypj0dY-9(W=fb79!ws?wODiEvhI>2a!0E}^CNX~7=7$22t4*e|f-!J4D z#_b9?qbfG#$2+5xl-6UL2nqJOX-u!URu^9oZ>^u*a~{}I05)=!84eL*Q3x=&y(9p3 z90bDlQ(NIFhQcT?l?UYR^C&nTX6DX*(@v)zoTZm7NVh}Jm6>qf4lhOy>Tk1O_UvH~ zIkc!fdcu?Orm}D;7so)bL-h0v(n7Hh>ar}m!A-6(D*DqqPQ&w4DE^lANwhBp-4$*d zvB$3+`O;1=An~cD=>R}uO&I+?CGk0c!0W|z^0)DKF7f1g1Iv*$&4kQI+>G=BUUpgM zDzm=lAbEcAqzVQO`Ft%n!ERm(nqO_$JWVG)V!?cTNDNs+MmSU$VQGbB$?Lg_AV5-s zRAihw%g%5;!L>pkNIFh`merxFq)5Y9qAdmAk$jJvHd3C&rC=D?D&v7`kxw`E86L0$ z3CT$Ywc1+MH#Jj|Lpsp_Mz6>N8@Ozdy5T^l0~lTX_TE;C3d!4PMHVc_!NR7&ajt3f z0mQPEp_M(knY*8SiM0WgXLIMn$yO3MOsV)|P$)I6^jjfb-wnyWFzv}9W=&$tawW-w zKwQY`WSu;{Zt4KQjMj*%qNP#<G-h=cJf;ZU`}Lyv)^sI~C4)gUf)t zQD88Np!Ym`sVILrLSZG&10R#J{oLNOeO>^4WA761l{<$5HcvGLO7E~#077^T-93oz zL?RKuNWj5>&!W?2{D-ChH@@!8Wf9D zTK#G+B0-`PrQzotGoO{7{qy?5*sC9}zPac))nV=YBE?9o=KdvvKkaV$NhdSEVD1Mm z2gE!I{psTsDic`*eLNEu{e%!V@6#0?vY*FMl4=B#(x=*<0Mx{zCOfd<7HR4RG0n>v;2E4tx}UVFOGCa z=$1KW+q7-{25#fz|EuC@w7n}Q^-_2eJ#)$?_0^wqfAszW_=9c!-Tm`3*lz~Sc1g0H z%6c!_O*HT7n|k!#LD&N6WKvF=Bmg(5l2fS@#bzjf$?{ue-HL? zPAtV&RBi$*Lnl>e1~(>?n0QCT5v{hk-M_9Z)S-;93e^7!v* z;y2Q^2)>F=k!u$wDWx55V_l@nN^L7{D8`a-EOaJK-kGy1AMndv6r)yMT%gd~miypb zN(IQ^LFl}c>4~0D#-NxO^Y^P_m&2{C0*&MlOYBrtW&{{=$Av5 z2#r1CqajUO+XUuI`=o%or8TZDV|5zq2ljO{fdaMd*}_IsD0WP+E+So!EAfua69%u z#A}bFtLw+b*Tq&y-G5g>$ULtR58;n-@{jdHyFX7#+r68*u==t&6VEV~~&HGM|&->bY zn#ipZ>uWLcLavEXE>+&=7h~roq(w^HX9>ydE~LlS4*p92MOw$rYRVNn%LA`lXI|E* zxK=??d^2)V9gkbq^&QtQ8R~D&(0<>!5#rf?BvPXOx?X;_eK#Dmv%&p6eE89aB*j|0 zrysD6q?g$(%|7rXG5sl_tQ*gqzwg9FMizbC>U4fB11$Ac28ov|z6ey5eCT^kOy`Th zi3qzlQl-xyUp7n*#UG9etqyxXlxUwK^uU#SzHcDX&hgt8Ql5mwb&aJ`9rfs^^&He; z$%di~Y&luH|JvqDl|JK$c}(lYzNWd8>K^KwWF3cBQdUng9=W`1+w6S~XxREVJPxQQ zjYOfdnPTtc%B6D%eGq9W4_-VvbuwD{+Zr%?`TG}rf5;C2yN`!sL z-3BTN`-rt(w5!D^?zLhAMBG&>MmcgV4YYC1%PLnipv3n-(pP&pX=y7)QEN{gjY$%F z;={G=+!Y>lj)EL3$Lc#^>|yUW8eb4 z=)vK_73Nj*X@V)%edSGveDT|1l~+o#b2PuKlGYdVrbXgb>9q{4H+-QAYj5iX+v&Zw z51Mx;Sf9V|+-dZWXidxyg+&}yzT}(z!a7kEdc_3?B0o26z4Ole1W1!v9zPXno123_ zb2`N0@Umrc?l(fWh^f?v(Dmm`b;1KN+H+$lWQHfPB}CX;FxkXxa2e3@v*xk3x4d?< zPWXtN0DRWDg%-OO(_v%ziYUp;`?&(_U3o`6{i1Inxu)Hu;G_E&Kf#vPl3ME4x0QSl zaz(H3RmsN#Ltn+8Wu#GKC^}BXoL5;1#bk4hlq5y+fHSXdKp_T0uByLGkjkAUlEYd8#@tMhW z*}qB2WZ}N}?6gMLtEo1R?wk<{EuOUpzBY69UxhV)Jz9P8AUVz0BQv^2@wIqninPRM zQa)Vp#JGQm*Zro$B#qVmyt1ilIf6G;KUMZD$`1MLiKa~Pt*~>wfAWjgM%uCl(h@Zh zlJr;Bb@7%QCu}Zyr+J&ByGEA-Io=Gvo1nE>#1^wZ)o0fVXI;vm6OF|k^k0bUpI{F$&tca!Z2o)l-QtmG?LN2g>&w4z z6&#c-0_mm8@4vD;G>A@4JFi0WWPuYxcix5^bT6&?v)hyCAHsqMluot$50a=kVIbVuE?xg46KgRo7XogRM__`Ehc&x!3pZhP}~& zFVB7eYkK)NOg>@eM5_)7o{rRbto$gswfK&|MtJ_chXa8%T5EH!=C%)(Un#@;)aR@6 zI}=AX09*oW`iJ7lvS(3WX8U@Q=jJL0%&qH6{ZnVPwNk9&sQ;mW>>f+8*prYChFrNMSi1Ri4gJ|-~Vzv{m*~t>yt)@2xz2uS(?F& zp|@e2nE6nHVwJ@wCoVfx#vMow_=DdSBa`~rTZRlJR}IjbURX`lu#lIqv9W7tF|sbS z*Xd~UlkC%>i=j4?_v8Qj5+$l2Fr;-g`Hk4ylX1<#tI z>j)T37q+|~?~YbV!78QEtNXhv@o@fMC6)sc=`uXN4Evr(+D%T7e4EN;?q@iY&EN<2pBp(vc@b8QCV zuz3+`%HwXcUgC$WIZ{~_cuPBR=c6U2_$Ke#tDLhad!d9T(o9<9z({ybYz-RhYtHhj zBg=a_`x%X67(hk=x(GyI4fKylEu*wWTXG?_7Gm|jp3aV*8zCadDwLg8>uhrCh5m>A zw2e38ZO~eVDq!$Yz^$cD>oHJ<1CvWQVx>8i3GKpUn|L{n6tJrj=Q?>N$$kxaq0-pT zM8XwS+^v}bSey`uw^#~A2NUzY^uFJf+1~c8H0&A6J1C?{1fLb2GbJvW$Sbd} zTm%vPL`7b=VGUE|G?+$W=Vhn>KN?jSa62ovDo+^k`c2s&J5Z`#k|K&s_kpeRus?Yz?`VE7}C)A!J4 zt;G%HQ!#vsq+f9J3!NEX^yfp;ve6?bk{)@q^qCQ4!`lP1nl&)uDj(-p$0rhx8cXF| zd>~x;$PD@pY%&aZs%K6YaETH_TTAWPs`bkkvR4}jI$I*U*BRY-U$d$aOi$65^OENj zbsmH(8z{DO%;aUwB|eO_naf=KdKM@g+LP-pe?~mW(gLF9;lGR3|1Q(0&Y@*1 zAK0uScP;3?fBVL72?OR+fOQPF;*$$2-C@bXI^#6{E3zO1V&J_ME!%fSP=hLq^_Ms8 zLGcWnf3rX_Dn~hoP$jmKH-=khjgw z!g1U8NA8AHKNyQAvJ-e?=#%D37Bjt;vH!&5LqtaZ*1SyK$eOd9&N!8PblAz|beDcV z<#w^Wm;Uu(Dqx%-6!Y|ExOb}mP90EnF7m{r zz>_eDR8?Ut!33Fst|1m-%$+R&G(ux2BBU%8^+FO4XySQ1?upL>4wF-yJ(HDFWrp3C zwI;MdkQ032N~Y$5IKWXT5h~$7u1MTPXX+=x z^7QOClXO6a^m+NahRY2@A|<^`Xn)uJ_Yu5q$Ckx%8a7K~lqQTFL35Wev6A2lNrgP1 zB#MbW-hKeF7mUD7Dc#m21b9-*s1AxE$=mmWiLp4V&>uaA4x=*OTlZB&!ojs*8^oGKBEjwmbsV{8!LGrulT> zWteatFq~Uq!-1Wpn1={Wv=>s9HL)ZG)i4XQ6yH!Qg1PatfuoK1Tj3&QGW@Mn3UKRmjNalrK`Ty4W82iYTTN!~+qQ9Q+P~ z^1zY92Idg0_8gik*G!yK0sAx1D>kPSJ?w_UT&+EICEDC-g8GR4bnO=_2??KJM3}S^ zj?XN92Lg9bZ)CFRgd$@v1YPmw z6_4}Ea(orH()OhG{y#1%wCf$vHpG{y34v`<;{{kn;c9;* zhBu=cYLEhnxZF7nm}yAT&Ca`jUilo?E2I}->OTLElV$GXuHSnGexnEHg3*~mifMs2 zC&`fAl=`!24QaJ$GQx4+6y7bKxp=0zJ7WAy58=kCpo2<&KFAN|A6gC+u$HX%M_S+^2n=AOM zJ9l4gLizT@{n@+!D|-F&?)q&Biwu4_YVFvQZKbmhZ1`Iu<#vsw<|9~0;d_|#3Z|L| z{yvEp4|e8meEzyB3TVBlC-7NPMwSPm^;S+|`bdqPfA@a!bM8SO7igOEHB6pM?iGK_ zwRPha(F_t_DP+QsY}#jRa=beNXH=ds%qHKqY!U^^-lcF}$kS&2j#*y3?)gp;v1GxN zAOG_xHfUZkO$52~l76Fe)=cgpWB0=(L2MgdGTwE^>vBjMMfl{})wCX@CU2;RFH)bT zV1y=QGF;%*4p>++NW~Td~@FJN{Qyau24_7ovx{^-+rPYTs^O zCY4=Y7`JcQT}TFtsVtXrO)j-VMQlv5++#MIZJtbZ*(i(Pqk z`+LrYaemECQT{vK9^AVAsbE&DzxU&*qcz9HMNoUK*8xi^Xo7o>{Spku&gTONCkHcc z=)#Jt#%PtoFXr5EY4yH7J>9JdvI7sUWmY~JFAz?Y3Ko!&#R36;pw>f-r_ty4)(uRv z)f6peul#HfdPXzMw%b5I|Iq4=%wOW(NB67@R0Jdy8>VTl6p?W~Y=c?nzxkPaTu{yI z_y6S;U@WEV4?P7DU+ldE1HsCKOAg-5%A@+9L)!19gp~XMf-GljBT=Y=vU5=1Om5^H zz(8hT*wNRqliWRa7FyH%B8~G!dxNZ5@HgCL%}RmwLcgoz0OO#af4|gqE~%xzJ+b(J z{*j}y_~fnMhf5z6CC*2PY#^?0ef#t07d}%|L&ct;G4^%>X9Aiy=U82}`lm#icb|8r zz~6k*07stXq)lW>Xe_-G>I%&s;0H17AwVEqszYSb;07_icNfcAjm-?58>WOm+|7jfWZq{UCcI zuq?VE_9`!>;CbQ(4-hDc?+#a{uY_=XB&8n9GkTShP4Z(l*bCchx;NweIVM8T>tE*z zoy4%!Pp8^@Z)EfJD}A9BOvgTY9jqO@QxDcwZp+@e)Vt)|&#S1^h;UXh1)6&(yeLXB z&cp~4aw*zL7)aQ}WT!NJsz`qSvf?{c!cpb%-hk)LFXfE(N86%9oO>HX;o7RSq2-Rf zUPrNuvN1aY)xc|;F!$`W?Pl96Az`tkaU+wsSljmHqFB+GVk=FPcZP}%i?nN4y4Bv|cdn0*Gw4#CD64T(&JF zuYJl|3)a{(#!PCgjc{DPC2YSqY6|W(d&=COB?=0SoD_~1l77P%wWk@Wv@j%&&uPC; z@E&aDP`G_aRyPUOYFaSPSm;_ZMR^Ah5ldj4^` z_{2H!vye!%VtZEz(cdM?8Koo}MY`(E$q#Bc$x_AQ3J7ED_dn7^_PtI-LDt~Yct3Qe5YQuu03_SdI$eyf_v zXZ7g!ES}-<&&_`_Pa=949QVG=Rn@z$yYn&cyc)vZNMTp4hxysz6La|md6<`Bv0#nO zr{p~UUd#3L2rK+~jSR$yiN82Lb*ttF@w;o_+ZsuSD6ohD@9rH(cd;Q6qDREqInQm$ zxc>3}>h#?!Qp>J`YHDI}Cf0y^tV12U?+>@$(0==y8r8TIG^WuZ8BMRI6PIKNUvLz7Upf zR)7})Zx$CaXB{&hJ8Fj-Tcvl4>!oLtnh^OEK=h; zY`H;U1fJy0ht;#nb6E=KWVM#``VzBr<)`{8ZMoEvdmK2#GD}g@xkqt;+d0>V67qxj*g$G-+-RnI4 zDN`>>6XyfN4L)gat-4#B82t$ZN;qJj7dFuwhr7`KX<}Idv#{ku%7HElt;r{xx|D1x zqsWtKoRYvyEmXCTD|{Q#s~K)5nqWBRSy?Hau@t3V;6uQim-;Dk?w&%m)7ObxX*^0b zYJ;mYUiS?IFnqN_7G_qX4oGt*F3tVBf2(nQe~D0GuKkiA-Ay?r&{JF6Xrg}(~>Go>X)hPU))~ro$HSawUWI7~D79cV(yfg-NQ^?I3 zXc++#Lq>c@lvfBJ#L}MIH%^`hh&>Fm^e}M_2^N6`UDfgb^hZ->J0+1h+l+I;_Be@ycJ z82$b5G=I+5a{i%egP8%k0_R;9)fb%lIFm?YIZ$0IG=3#P;I6@qJ)Ki$-m38PSUin~O{Od63Vrrjyqoz5We)X&D7Q@BN>)g$HSkjljSf5FBwvYrpRpuJ9Q4lV5ZqgUWO|d6$z}bjqMgG3i;@Rmmjv+i$%q zen|~negWWB#S~#qubu8*j%a6RN!R->|BYTB{EmyU38_)(&x7X*xi>U2yF|E3X~Kph z;C~^vXB_#QWEvFQrQglzWk-!h9rb|)2RF4Y=MBD=Vch`yhTx-W(0ge=^ZU(9LEUH_TxXr8t%&8gQ=G~--OD7X^n z(SkY!(IT4^q$b4CR(W3qL*_;rdLWS1i=?pGWlmlS&%9px8)!s_Gap%=fN`lEAH_O4CO zDn5OKD2Qt-LAm+;_E`nb4&PBqs+(2++?t7IVqO*D@n%^J}HeC=}WVW2wkmMt6I`Bz-;@8A*zqE;)O2n5F zEmFXA%afx=zLBj1ZK*E#ierjd+t^}bdoSy8V}q@)YTvGL)%Nu5Mt*zV4RcfHoeHTd z9!32tK$V_d z**o}IvwHZwFzWWL!J{j6fwyH4cf@2D4t#^90t)O>FoRVsAk4`|*(!5@=EeqoofT&P z)Ehq1{C?6jFC_bt@Ofch=hE{}erGB_;wF4{{RIPU@ps;(`3r<|5E2Y-#@=gwEtxB` z@$O-#_lw+iOJkYJm>VC?m&|-C+WHGWGne)8JVd(_ zbTe>_DNk^fXLrp^4|NXNrlDt_Cp2^;$@B91l#x33G$zuD`ncJV9)m8b5OD)%?6EnN z3#^Q+<$U^kMb!@#?b8x*;B3Anjusw{r#2@akCwpja~N5VTxfw_9GVgUDs-mzMH5x#0*b*<$rDUxJ+kOtZ!+(NY%1Q4t}2 z%37w}UObN-u`BYZ!Ye)Qa1O^+%*Y9$yh1+nkt?v8NU_HsqpozBDvxDpP>`KO%56D9 zRcG#uKpv80V{AT6QL?~e#=iBdN}o#?gA z+aTf%;_C4PEbmAmjaH7e_EWt?9$yNalqnO-lo#9uCdZL`L3Dz&kdnwqgB(OfglVEA z9LYEWyenM88e&H7AuX=78p8N<2R}5_^Yr+(+_`FIw#dRUHS>ZbQyfqy;!$W5K3?Ir z+DHw9os(?McP@V>Dh1x9)cOV3ql`}6VAtwSWy8XSQN7UHY(gY74hDk*Wv`~89c3FW z?pnCps{8h!6Hd};6;E#@&GK|@xYr{K;?UiiyU#bu7E%ly*+$c~g zgW0U=W(Q}0dpW3rMItNnpxl?@zqjtYUWuRfKG@(!e~+G6ReZ>q+wHva<7s8z-dAbw z@x#RB@bw7NrV%dgX`EfQW`7!} zuKqYk`0Qr0bw%YfHss?#fK|JoBa?tVMlH#L7}Z8r5W(}$yLl=k*NuWJvi#26;2@XP zk+?I1k)S#m63?Eio1n7MW4m?}ZY%&@rwXT~0MHd4NCiI*(E&=DajUTMghWm`}+8 z$$8ODKEv|PFQom!(!h4dz!oP_Qwe72?&#ncc1!RaHhP_?|8j5dCHP!phz7KbO`tjYKyXVc9 z4!QGER`YFyCbN6@3(eg#w!=^cRJ)Ote-U78KX*{^)bqKue`p7gXI2iS6xxUrfV70wkwlwF`So&hz z`*Fb77{~C*o#H+F1jhm_?6~dJjo7HmT_av!sKTR2cqA8SXuIljb@;_40MG6x04at`cDD zf$B|&W%YyLyi2lKsf}*+v|~GRwXbhry;Fxu4Q_;Y`dDy_8={T(^o6U~VtZTDP%3`% zR;l#WtqCK`2^%FDcjV~%{i0Wxmf~#YEt`OD+l6=sB(rr!s}&tH)Qt+I3`BTT8w)u#@xu*ZZng;vapJv;nU zFWcR7TIUrLu-$YhJeMha3E?-R-+uRU{<)g?`(p{0?nb+@f7aB4=Ee2nN?Ap8*Q^uq z>9<^bY=y8D!^7eyzawvUqhcOp#E^#>g>f-~NOH=}9h&dB+-v`bLB((*OYwg`n;#Xv zcOm1@pmDCjvxVPln#%nCgw<698D%?XAuq;&z7vCiWfB2`3dn4784Jy86a!*=QqT5x zwBNMH1R&;`39{Wusa~rG$IQTFc_I*1I7>AKhpiAOg;@a+v@pTzpVM<^tDGE-%|^My z>NwFHu3THq(<5!Ec<)nB8xKFw6-0{HZi_BfBkeAdIKDpyT;D~8@vqL6(d?DP?f<-D zwA(sRK0w}{Kedho}kp5f2(^koMD4Z=j6+31x8-W~31ucP%VztWHgxi)k+k#v~$ z=og~8yX+K2SP6jx@X$tN$*CaEX1^C%Fnz#__;CZytvak_-C7|#KpvRkAWSM#0=Qv; z^;pZ+l(G~fHhMAuP2mG(^*z3TXEkT*5xUr|-C5{GQNFp;%+8WxtUNQ8c_I-BO2CzA z>cV_Z#82NvI&pAfFGrW2<*tPK@VY|Ytn8lck*N@rv@_&A@g$M3l46p^k+t$@m=lZj zOi&`oyM|>nE98k-2`LG53mcdse_N{SqMh6qns?IsY-QA=+X&|>ZnN-RAu?P=vX=!? z4JQ?QkHx`Rl(0|JH}P-A*`C>m&yS%A2pN5{7RrPhVj0W)am{i;xMU2krf;mTUAXj& z^RqMoTM^F~@W5i508A22-wHs_b{$5ehs!Z=20V>g7W&3A2V{I4KF@jq)@Oqv7UkdK zW0Y8K9&-;-^?nyVG6wo>uU2tMHBf)uxwT9ySz7?i0K!4?4h$+ zO?Llro`@0&R$so$a;q`QNK#XcX=5uawD$vi^!~1zXQyA~J1llsvc9#cwf3-cn%~x@ zt}n+{M@x=qV%OTy`=3}*u0`=m+-PJ-#t&S&rZx0G0BJy$zYTnw5GX8yLM4M`D3k!!6OR!j zkn^fVkwOZpA`2jcArylIBBBVug!2ZIsmMtn8ti~~FgUFk4)rTUjtHn3FaV4M0we&C zK+#|U(X5Bf-c$z!9!1N0l8Z1zxYs^4kmG@b#d%=}M2X~mt;b*Rajbd@Ua|9mVCmV%>Q0#n4-LmTV?1LjsgN zZAChDtUelVJK%@wZ3h+TetD=pQ~|=49go+!P~2QR>m8)myG<-9(TnVbs|uuw`wK-0 z+-N{<{*6`QefOWtB4Y#l%m3Axlx0;yapU`qPXY?~F%Lh_j;A4FK{eGzWze!~xetHq zf`|0)y2p>q0Vu=Ja=Cz$5mAK+t0~3<5a(J|Qw18rLps`t#-`~YQ3gogXe9|SkHBf7 z1VlqLV1OXXAc$X=2kGmA{cKy$lpKsO_v~$qIIG~{R=dZ7JwCTY2U$l_8me??w+J7A zVh|9PL%_`F=du<~HT9>uA3Z7AoI@Zt-UdK;N{K^08nL`T=qbu5Fb%+E-Ja=bT<573 z4YA|2K$Z-JNywAsf;nRc)+q!8Sd3Ugh5?y?XoO(FnmtKK?A834xkaVl2o;V#l`s36%K{&=V}-Ec~{}* z!`O8)#HD~i?xt)6SkGc^UqXhV0$%m^FqF?a}CStX_R zB=fLAk&#j;$rv$!#F1nq1`Hp@1g>#Zkwqj0e_Qux10dI@7L45&%2MZV5H!P0O5o>| zR7AQUMT-Fl_oRiM<%zQJK|w=o{owM@4!FZP62MfEn36057-9x;-e{>2i$)@;1%xTz z#GG?r0q%^&R`HQxBqS+Of5L~+Arb=+6e1BL2&kYaEQ)i4_(TaIN(pGBf<+<-V+9sA zL}5aP1W5oT)S*Zvs7?e&?v&Y{!Tbq;Io1rAB99LU$9jgL?`yBjP&dNmg2@32X~n6w zNv075gurYOw_BxxMRZbqbtTmTtaLJ#)l$ggazd63X2h5xiIR~1`6f->NTU`=5Qz$v zAZt)fj<6^XNjQ6ISPl6iof`2-S~a3 z^+U|KWXMP+Jpt72CpS5e(n zij9zAPH8BKF(j%2Hpxwif+L8dEgjI!r3t+hz}O~(AyG<8aG_CS>zPS1u$B(QgSGP; z$(YKnW=yQA+{u{At<0H>s@%z#%B{?qjH=woW-zMU%Hdg66>OR$KI>Ei%LqV%7{Lh? z&;_0g0YE{%FRtpG|4rtay!IjJd&DpEKHqp5b+%0bPmd-^l5N`Wae!gHBnp6%6A~4v zAZ^fqX#Ovk#g8gP{zd8DM_Br$l;{XKycpRDRS-OJP~BcN6?5VN`tU@N2Z{(rAS8`p z@IJDdpa#$pSb``;Bp8w^k}4+dkb1bPo938EO;tn#Ce&YfMcW#WXC2#H7Z#lNs#qG%&Bq?5eFm7$Uzs+NP&|PdmF?zG=ri7KP6Hu zlT`$a8i|r7_s)J__TSa`c|8Q9?9lKJjeuC??Zd1eI+5r12^g76B5=zW=WGn3aiSX~ zfdh)gI_sp3WYe;01vBO_sgi8wX0SCfU1lnJ)YHZMZB-QK6D@q4Hyt0p|5|3CXyoEj z{@$meDpm%776hXwV++-jJHL0x)KM6}PN+i9gwEfBS(-4}3IY9rHhs_M-+P*?5pSld zs^i`tV1|8v^Enc5Cb(?Ms;a4b%8fpDxpOA8;?M1n9_NRkEpwE=qHO5+e8RR#nQ zffdcfCbb`o}HE~u)l0cSMS-;6|&;%aVMGDIa9bX^Bb{TFPeu(97&*??kU zXK|tb{5!_w$rd!km=DM5;JT|&*g(m(Iy}YAO)CjCl@SLnhY>JwQLWAS9!}u8nLe&8qZCQ>;Or?bBXWG(C3#AA3y#^ z@I0hkDQPMd5sU2#0EQ%q5F!K<5m6CajhP@(DQQavMnniGR8cJJfMyhG1rjA`0g$k@ zv|tPZtoqwfR9M9vg$R7t85rr*n6%;%kt{|Li7Ft_K2%hs#0oprv4y6XdJx2fI3q2! zk{(+^LnIgwMhRGiEX{>kKO43i$`TMiUEe!+q8T~h;}O(C5t?wj*4?wp-nk zqbq~FAM(+SIfG#yY&QN1pa15RZU>x{+9KB@4w+4#04P8P>n-)+Tq1@UH8e;FFr+06 zBK}RsJux@kS&ov+${;fK@3)eEk+Bj7+53uyRW zEQ9?n@5eoV==-d(ih46i+rT}2+&)oHKmsYsQV>_RfCU=B+3O;K@z3WM1T3A`{+;F* z2wq@Y$>8{QA|UMfFe&V-DFZ-j^@L`73`cS)Ss{XZh(2EX_@dtqgBuqNK?%X6J7A)d~Yj%dLRSP8rEEf?XRZv)V zr4^Betr1`dEG(vBl4Vt`OfnMXr5Mz*mJO{XlFC~YZi!$M1_JKTSfFXNEK-V>YGyku zfvFiXSs1l0F$MxsgAf=9$%zVu3M7brkU`r3Cj+V521vsN5o0YY5k&$O0*W`3C(S=d{mqZE z}nuEP|sM87dILBFPb% zsUDO2z9IW0imM2UFqthFgyKV=2ZcBk2^1i*R74~jUO9VnC4qAtoT1mu;J#Cl+g|A`u`U zz=_0ab4yaA+irE%8q$(Z$q&pydx^|}*q)0(QqscO2#slNf|l9d7m>$9q$(-K2VwBN z(@^!5SxQ9aWGn;_L{c4$qZq1n_*>9zhWCQH-os2ac3{CR-eZimS(!`{T+9n51ug|~ z)icA(m1FAw|cPMHxs!wu{2C zWI|=PIZSeDNL@tr$?yHQNEZC%ve*j=OB6QZB}5SL?%8Cn1^g87#zW=!CxmO-e2Nf-gu6J(mXL2y^0)?pzV+fuuv;#s(kc>oY5YDg~ftu6Gs{i zkRto^q%NK%i38b4BMCAML1dIB2^5Fj!Px-~ky4@~)PSa#g9wCzBvgomSh9F9lA&Sk zktW=N#9+oU#)V-#hy{O{9p>;PtPk}(Q0>A@@%?w{(Jf1WP0i|1xDa1CV2C#a=lC64 zuTwF?fc%T8#S-!|NjcVvB<+C5k$*l5KnLi=UD%<;5YHCS7DNY@A{K};00$fZ-X`o3 z3&1vY7l>4(SF(VyL#Tps3u6-~94Bx(wwhXv(yzN>jh%CDB4Y&VKn-wK@Tj4|x^i}l zn&+4k{G9b)S@fjDtO+}Kr9<5rj0!LkFLE5G!Z8j4=0rn&6v59KMPZ_gkxSaEuuwOf z=Q^Ck7C~eKKU-&zP}-}nJp(IGmE`U}$;jhBVB}D{0goC*Z}EC@AAmidXOq90*7scI zHhjT{o6K>9nwkHLz8LcMfr@6wGgkRSOWUrp3+(<^TYU&NHh7^A>u~ zki-WqXmQOnpoSuD+AkSTk)!dAvS2c37(*|KIO3lf%a!~FCaZm=|J;+>>{Ud;w5ubm zG=5{moL>@PqhLaeB|Y1Lf#X;^nV5RJ8QJO(WC;@LdVG>f5Wf;Ah5cku`wqTqkPcl3 zE!j&cJm7&m(Q`*I@TI<4)qkLLhc%f%@&IZuRkWZ-mp%6ef~%19!o%x+K7aMOPmyAW z>nN=>THch1^B|^N2#NiVXBzQbG2He3U(`R^mw6AN!sOwdmP`yptHA;yAhAyoC8MDC zRp_8939@n^6vfURewKt@Z%mcp&o5K?9(BFO5JEq(`(oav6y(*4vZ;aGHbOeikq}+1 zilHH-J#?h*TTDr32~cL+yJ8%fgEGdO2i)ehh|fh#nh>@)a2@;gc*Cn!dOa2U3qKs) zu5cdfLGzIWNfnS-wirb1Oaw;30XEZ&V&(t>rIX8>{kn^u|aBzK=`KmCI5-^eosDh%RilYTl zWYi--_q|W4zwNZ${P3B<4l)u3s|nH2c~&kGor+E_q!f;@sf`3oA9w5=@UQ%N)SB4FN>A3 zn*2b%_l85Z(0+xHX2gPpJFZ@1^b34pLp;+; z1lJ{%oaV2Q@AvC-YM854trPh-drb&GsvfSN;%koSb<6Q7bbbem<9Xx;=6^EpVX;v2 zet+igseZFO_2xyDmGw4X#9Ys5+#Q%S;h<%TA^RQ*rB?`&vz#>SCdVyHZcR=7AG`a< zZp(P(8^^gJUC(fD|8)03<>=tr-Cg=emAbccxVW2KiHkoYUaqmhY?StmxdSp~g?2Pq zz~sx2v2p=;k->oFKP=A_`%GZjqY< zH&=l{d!$%O=P+k(1~UNk@~~7@DH#qJ(2<4&zGeuTkSmFiv@I~K5U62-ZAq3(z!Wv#wLjdpHm?3b(ziFlbYfJZ=^pimTQIA1$as|=GZPF#u$ z^Wq9ZB9RERW8(YXEjmlvzqegj9KGWWmZ@9L^M;*DI-G~F_#Zo|76eLx5;Hk_Yp=ggXDAWXm51|E8qDU^+S=EFXgh&z#AqFZi zgh?QQBAfrS#-f|X?2{!>;UWg>lLQNh7a_cz-a!@YKmdsmQV~c&5(-2_gb;*_1rj6_ z-ve2op-m^;p6J`&pI^b%_TKjHK6?4BU-2IxKU6zIadlUB z{ODJ6`s*NSYz8Y|`!6?j3tsy%S1$oQ(2#osAR?e}8wgSkOrvB4+=yymk_bqvc#Bax z@e|iLkE8k8AN!5`_IvNiJu~{pUHbn!?rY}5v@bs(trq?R+#q(bQ@S9Ehp5C8m;nB9 z3U0E!uT`=iSY0r;A*)~K9!q{{<_E3+!_4^4!qw%*2wv_*l+QLbg1}+AP=Vf%TXvs5 z=SR}=+ds~Cmj9V5pI7Jfx`@0C7scsa4!^Auvfic?SYg`mRf-nIL|_>JWMm8&F^n=Q zgA`&!ii}i1L|FzTNBg+0SqN4TD(h(Ot-R}+yzD;zwm#r%ZQpb329geFVt`M^#1X~ zq8teLQqd^3k9`jebZ~%w+~586RpVO?QOuLc=s%JBbN3G7>#ICwWFo_(PPwKqg~7W3 z%8G&I6a|`*2!RR4A-!mZ2e8JDqz4Q{@QfG4BReyAn*lcI01CzabbjM^;*YE}%%DP7 zKLir<>ktIGpJmWgK>9iP0hbsAPdl8KHzS+Q3s&Zs^gEgF3;uqdB=1zlO8?q>8!blR zaQR#4BtQpZrIi&oeq_7hFq!zC8e(B7Zi5qKgHX00|-QlAtL~h69FKQNC^dV zKaKy&jeEbF(uckF2?jJ-_AD%~@Nf@454(rB=NmF&@=atj3KfjH*0iXSd9iVS=U#^$ zo{{VK-}G(Y`&jOYpD?2NO3uee(gY!`1_>q@>1>}@ENma(zY&_CA|e#lfQz;wh&TZ9 z;q^P&YzBBKo5{mDwZod3e;u|Bl^pNhIdujgWCLGojQJwj6&_ds5k4z+0e7=c6xlX$ zJ3pLiIqTpbFu0u=F!ZPIBFm_mhx`TJj>oyzxb#VVKoBs%&x;|a20YR558p9m^!Gmw zcMAJA==a|jXSnt6lEgd@zoGtI@LH!F9A*=}LDKfM7g;SZ#$)nhJ7wAVU)M2V8P8Z2 z_M~D*hJWzQ5M1rs@!c1|d2#sZXo)A|i9Ui5Fc^`DmIw|A$#TlTz=j(>!1M?Bnjy9f zCao4iEQ)eTAXFZ90VQpRC@}?2SBuZ@?CF0^IS`znJ?}oc=uk4d$+ty}WMHW}-oM5- zgh@FwgccEpIl=;JA<-8`p-g0pkNmlre6KELRNh{sJ{evQt@$76{jc!v_e%S6f3Na4 z_HXYk8=oVO;c#GZE5GTNO=u{TP|{SIOa-w;spgx;>FRDfo!?=Xusx^p9zpB9|FrFO zZpVCtNd%P&gc^v!0|0X!z{$%N8ezKAV*(Es$yb}|nEW74PtoT^Fkyxu&JzN`wHe8l zC_jOGm?m2Y7!wa$2eJvM?EWSy1|Bf^1P^$3qdqDB#? z&W(~a-MmsLO*xUn`idHFePMg~^AH7Q=KUe|9dyAD4fzaL$XT@CN$`eFCe^DENFKgX-%B#Ftuv#c08p4fJZ zhhatlB7X?TebE{125Sm1&?b4DcwxM~v|Jc{FzCQ`A(7w<_m${sY&nX(Hg zr%8gs$P4pO3QB;-2x(}ku^VvZ4Kv|Ib>9gMb3JAxfW(;@fzOx^ewu2$=#nx4QlC5- zfd%O6rCEXP*9aXLZQ%t+A3Oou4lu-wepEO9njYxrM`j++YQOLv7HcKK=|1eH*ljAn zu2EW9gtRbUxBo?8&(wmuRgPhzZQ-oQ%nrE2#eNF*j5K1nbD8x+{NAY#?t7wCQ}0|r zFFWzYdP3l|h6urm6V?7b2aiG{imX<{LB`?1#6lQl`2v?TTq7d;Onhf3_=ZNpOFmXz zOYB%5LUDj$cE(+&QL11DOLowrRvp5D!E;aMutDj)&!i`a3JLTMzha(YC7(J!faTqM z%T=nm=beo?1@qtDh+l3W5GG8PFF*I2^41k;Ju(tN^A-&lUT_tc?UBK97&(;soTftC z{x$bM&TH3?m3BPCIIRM__Sx~GLh={V$QARe30wTqcVk!cQ76n10Y6yx& z6;jkzETRiij8Pb@Z2+u~cft5`{D<0ff4Tnyf9qBwpgoJPVe#rEIt5F*Yt0`cKE6=oWB3hz7+L6<({}e7LOuCVd0fh%F>HMR1{?G#`WJ9kqa-xtcqg}Lp=?=CbjaLMF2!2cw&O8f9V}GB|^@_i~k6T)pI9Bo(pD?$} zb!AicV&aoEt_iAPe>$4DC=zZn%E{>+5N`@vdx+J2G-7wB^?yIZ{)YUlE=TR7e*+7C ze(3r6WqrTv!DbsAo{#Ux{hQa4sGYQGud!<#8cLhNX5ZQ6nvmuVxStpKps%*2vA^RF zLd}H#>4lbLBI0I_ zz3zq^c)5;pV&lqO@xY+GPtKBsldX+-QVQ^^MG8pexDCU zQ9Q+BF=H`-wJ_Fp!C=$@&Aa#q>%PmfpQHIaYcoFRC2Jy*D622v8^49;xV4fKelrT>$qEi^n z7$DEapJc-NHKCi3R9w0t2u4A1S3}u4FOId!X~!me8e9+Zw;*6HF_czAWx2#TlHW+C z`u>T0e;f0?d2Th>2tao{U5AG=;fr1?FDcoxMsLDq3@VCg^sYJivSIa`6gTC(S&r}F zpim{40prXHoH?^4oEyO(DFuu}Xd+0J#uEP#+Tg^JW^CXI%LiUQi5K`0Bs1o1GcTy?RY%+S>8U)lOclj~-Bx%}X%a_#~hMfFtk2ZU{Fpyrg^XWQHqsbd~A%+mo! z#|l)Rq&*pn94$Dk+OuTAGJN)OT;3wy8;ex%VUfdzj6pZ%{ry0Q9u;kN8=H~^7-E6r z$Te6X_%a*=Q>EJCakP=06N**m$YFwFgf?C=0CXE}%T@aM z|F<`Y&h5K*e$#*2KJVIbbNR>kaz5KPqgZeg2f==*ZA162o)Jv6`PQP(GjP$K1a$ zb8oMApKUP4%(>QSwn=(P$Z>7Ls}q(Hh5D~K42Be)1LtkFhR9s*;~l%i_Nn*!d+*j` z8i@B@=Nhc$jZ*-W@#Y@95D?=SdGQ#GCnoSwrE?L~uIxGeusm@7H%axZI=OC4tfeXk z*gC+(YERL>PRnLs2b^5uI&D%9gi9R<)#LhjE=5k4wadrP_Erk6fmc2RV|j1>XDLn# zHd-1xH=a#vf(R4NDBY&Y6=Yy#`lSn0I|EeOEaAP8VL<4(z#a#|u? zLs5fOF62Vn!J!A8k7A{JDV%v%*cVzwDWm9KSvI^!J`@zkX7v+fWH!x^5e!h>nyd)UcW&YB>)JOxrXT~EUF>~Qk<`~UUB0unOJgi4zw zFp>X65HkL?&rRGDEH`6cGLycs`E}l1oD0f>8UE?_$DMxmz5-v9FyuAPuM?u;Q3f80k;hO zzcDW}@Ah0tIMf zH7h%FA(AvO49v{+D3YTeuzqEd(2_z-$8!VE_Sj>j`!1)G`@#2+{?vaj&+@u-Uk}VQ zkKf&&v-|tP3{URHxWccDq3ibkUK{CC(fM=i{h}R{r!H!-6pH1s--ZE=(i%qg5kZQKP(#Z~3mMv%y|F=1c(tEx>hGzy za*azAwxTGi#ZX4t*2G|psVf@NJX4lRDvBhH`7@`&pEk$Mh<5U>GcdT5Z)hg9)oXXU+%TpU+Xr;E`SQs*5 ziCSQ|1~4!}+He%ORX##)#w=n;LK~dZqekA*UbpR~k4!^WZxhrq@w<;k84Ip)FP^%c zc!7;8NFr5RD56!Vv2BA$=GBg!1}S2jT#Ioa8`be4rJ0nAtT-|}GVl<8*@IDv|FEo| zj;Y|>zL@4Bq1E_wYxk5Nr!>GapX7`GJT(*feut%R3CTmOj-4S#tKm#fvu4tLQJ<3U zT|7~zLD9xZ>#DojrcOB)(>@KE*qN(ezDxWxqxPM%Q^uU62!jM1;&a<7t zYXjCq>62%!IZ;y>cPdEcqY|?SqadCtPiwpMf{K-#%uATx@L%eG*?3cr_VbeuZT@!s zU-&Bw{hLWcNgweV6+5K}CJqN*{&Gs7)I%n5LklfvC)2n4EZSqbb1R#4>AD$Xy%^`2 zT*X4Rm1;C)NU>S|I(Xx8KF(>58trQC&(6N-{JB;>UE%(q{>4SW+1KX3dYYFVj}h-eIL6d5x(i*1w_nsgxa8qI?q6MsGv`Rch;lYMvf z&wkgOU#Fsn>S_j?qw)JVIy*1R4?8h{we=O(%3&D0t)lB>QBv7^kFKlJ{SF~>=cjE5 z$@m`L&50&nVd(+1^p4xg96Iq+3f9zjf72em#t;#$L!5c0f{(;8L~bvagx{PoAV~xW ztg?BJJ2oB($~r)Z=y)^YXRaLQ%rn{XN-T$P6e@Py)eLti1Z93ySix5h@#!)GkA8X= zlyxI{0r-MA;+wyfIrnRu4c7t$Ru&+ABdG8BiJyBDfa3jK2Z+{Mm-=J8Z0+#u*7I7O zk9GFpV@a21Gp3*&p447X-)cLn5ThXMfZqr=ctagdfEg;n{4*-U*N&a=@9o9BP}+4~ z1ZE9pFy^BY_rXJH?RWv^q+$jg>iK*aof&#mW*BQhWijQ^4PR&N|Bnkf=n5(W zgDfjh%|-`3EGK|>Wpv335`5^}D=|GQiBuW)kRRvX89n5>bm2pl;vLCEh=Ktw9 ziF&KgPE3q)H;ci4^-4pv2Do5RMFkkSb^9va$@s9P(A?jz^++Bdr=8+-R~g~(lEr|8 zA;yNPs=1aqObtJEDR zHx29=LnbdbmGlnNDko3!F3+4hzQ6G^GoyL*Z4>sNKu^z*oG?%MYY@+bI(HPjoYd38 zf@3Y{iNLCfo0hQs4~zD%?cZbm%)sovy3AchgC7e*GFB^LnI3j6_94sSG}8MHnWd~W zJ9H1vKcPv7QkT|1e_}t8FM*UEyO+1>vB z?ROcjZ|=Lheo=E7<=u2@MdmS<5EFq+l@Rvh^s+MlEy=vTkCklUrXIZbrqBkHm3s=Q z0>564?tc~dy_t}%IQr@RXX3#)MLs|A-Y^VSe=Eg!^$e<&W%MnNHw4N&>S zEfx{t-gk@I?L)F4Qv|VyC7`Tf24;$3S#u_aX%{d#MN-eAV$Gls=mK|vrSCQug9a(} z{YaKKV@Kg=>C-g-9L(dAlKq3=z??RB?JLreR-zM+A}XEKEC|WdUo#}*=%p7bu;nDgUQDV z91K3;RB4VcwUT!F@+3-kkV9-74{{WUs;m)rHEZ$5<0ijWYL6o5%=5N~%Bk zW5PT!=gGgHIs9d(en{y3?UR5B6+bT@E52t08b`KC085JT`*3)2edG0&;a#w!s^+fs zX8#<~^Mfh@?yte;(W*fcOELq7g;==D=_!+`{y9$QJ60lj# zhM63z^mR$(?cb;F;(LciuFDtm{rvzaK-Q=9PpOX>A98*)*DVE5gv*6s{Eq^IOfX0( zj9g(GzbvPs>T{eF9yACcxK9Cvtc_-hQG)C@58ZdL?_Sl`YBtZq%>n2KoORkW8W_ysMguB6Rg+gO zVg?r>M9W8dWKZ_c#m~^Z@SDm$zYd^TY3Cq}r~8Vh(4qE5Q4cg(KD#<31{WFhDKNY^ zF}dN7$~}r?Um!7s=Y-N~{}d3oddvWT##bY16~jp-GppeXwMv-~2LODcnSqY)0kjm7 z>-M{zzO!%g+g=P4iOp_2$`79yuN#i@Y@4pr!{>H|aNUX#4oHXeXSINRfz5*f0Oxc^L#tm+?*v-VJ|xQ^a~y*peq<09!fS6 z^4FmAV10{^|HsdY-}tct@gCHu?>f)T*KkS8idGxe)WgRD7LALIMV;Q~JPp$<9>~a? zHg6gcWW4kd`=98*cj3|rW5E~65E>5(oFd-$UFyX(7>40=@6YjSqX>SSIi8`>XEQ@Vk@|#QPTtxjAj(-`yWG$B-fI|{{B*FIFizHX`mVlJjrlB?zsbO<1BO0Oe+Ts zXa1JIsOEj%i>N7v(FZWOl_-8yP)Xg#3E9W`mwy$5?=j*1d$oyi$#3va(d<&3Fv3GQ z@E-ey2LFf6+F#B4YJTsifl(7}8L>lhGASpM8;C557N6;t{_iUL8@!uE#b#x_H6jp8 z;`L%R0vXRo=NDz*(~v?cL~R!scQNkZ9H;@J4}V^(KS(-m>3;3&kVxSkhfY{9kW|#U z|J!5yBJKMVa6dGt+AHU(eMlrQY5X{t>y#mm$Gz6a3@D-#^`e%Z zz0Aqw6dvOtqBaQA0Hp{ZsywlR3u|W7l`If^7G&C#B7v7Bd_A@1$<5?S`xL(`9K{tF z#YI$A5e8^0dX-$8MgTje8m3+<&CnHr51J=Th|H56%>?FGHgpx)X~*Dvjb)F#psc$K zSCuZ$O2v>VjrSH_BVFHCW8CYSp#QPiu$(p~?!Cj0Bd%A**x2PEYRaTxs!=eOe@~^; zIVIiib)?%I#-ktqYz#`fok}aXtaNwd1S0tY?YBoKgMNb3>j#03@U#gS2(#a zq8$?8!86mXNu^*4vUu7mMUiCYB>WNOuKYj1_3n;Rhl>saS`X~M)k)dkVLy;^3UfPD zP1>sARg$*+`#)HozMbv$SnSx~Ii9Yx$<3P2HWi09f+_pc;6f#W!%c)Wv4``AmNd$T zSN^G^0`VkUr{_Yt%1@X6ulpbCdHw*86qI+otqGpp)Stk z6--fk^8R}H_xd&)nmQFBQCJ1mGDBEi7U73pk$7Rsfzg5(hf_hr<%y@fmMB03cyt(@uN= zP8a`z{s6>m+Tyizv79Z+%?R{<^iel^dGy>-YBM~G?86+7NFcbxfC<4fc3P~14 z77GE1AS5C(E?)Qj7R?b!UnJAiBh;}`+v5)3?hFxp8{pdffwHBZcP`Vl#yg)79${xMFoh6sv@Ao7&IgL z-oM^eV`tkn%{vYz5A+QzO%g_<3{?7xNw0xUStSlgEP}-p7>F_oMNuN86=1;$85sox z5saNripu9!V1_NV_}q+Nx-a>Y0i_7H%PENL0(eRyp&2obsl* z^DC|Y$7Tk2p8M@?EK(?_h_M)o#UQ9Ek^P@;O!R*g!~8MxZWTlrF-VArj8KZPQ6P%M z|7c}Ieed6XmXFX#2Xp<5yodk{&8RG`PyS|B!yX{}hUh8TjH}hv4cJa^IGr~-8T~oU zA784jeQSDz1<~q{unN`&a9D-wmas3)unM7J8L7t&wcV1zmI@DB-1 z9rLV+qXkgM^~aC!DFc8?JN}x-;|q7`Mb?Ce_Wz+kInKTQS42Ajrw^(!K5)Ih&5J61 z5`%+-)mm#m)YK0KOO`1j^faHaZADgm?FSBAX)pFVms>KWu|a|YlyzO!RC?m2kH92? z3e~|{tt4W(p*82|?~P=`nQXA=#9<(S-S=Y;jl(t8`_DS5eAim%IAjKNz_A8f0}}dV zDY7kTWW>S>!d^5O7hOhmzL~@f4PvR*vK-|8L_B)5LpEA8472ohpMZuOADp0^zAmnt zwq`ri4`giCizp2T1Se2=Nc{BQ0z(ZY;C*T)jHxlG)&0o!SjE;YlExQObCQAi0*!s| z%v3dJ2K+p0sjoYi({lfmT-x$Rng2jD|G9l6=PN{3>zz3oGr!_|j!r0UHl{9nB3p0{U1?$2R+7JDSkSZDG$ z{}cCVx~ z(U0TXZunxr#(#p`DB8N`v2itxGx0t2-$oHuCc&)Vt6-q~-I!{AxBRlx5nZxiQBK5B z2}V~JXl4jL&)#3c=NPohmN|wDr;M*c-zc7$DTUo$VG!N2Y%x847H1NnRXd4x4%$Tl|_WwJ3AeN zGnzvCP4oS;(o_rW{q9{-%}ozMqzV*C|I`$Hgc9}-$0?iNs7$=xiBJq{E;50i>vMCr zT^$y}gau{zL-Y{_OMeqDkH=TQBRNLMl7P+y;>IH#dK@J0{S2*9kfhv>5DEr>#pmzw-<75oyQv8y`~tk=bT>@$rmz;v!@5uoM2W z5s9=?OZPH2W=0bx_W%y9?yD@?3N9ltUgA(&~_h{=+#zYx; z{(_SkyQ>vuRlIi8eA5aC&vW5w%rKl`F7ewu!1Oy;6*Xbn!mwrX0}%n^(yE|U8Cj?h z^NbRZAR~gJ2&EYg4p>KgRsu`&j|-({&UwozH2;YBT^Bmk{KrHvu_FdLyV3G}zJSON zCSZkGf^*y)5!Cd({-&j>Ky2ucPG-VU*LI`L9?R00`a>d^enPR}UjTZ;g3yX$xK}rt z9sbj{%zHV!J-ywgrxyG6`vufcvADI7PW6&8_YxiRsEwen&HY&vTaxuH1sThf5ANQlq2{~u2?1bEL| z1{c6>dy(toM5KQs;fU};^?N97FUJ4FXml(;T^mwiRPPmli8~Hrek^MVI&95U9@3JY z_>53a)ho$g(&dB);mX#gD!G~QO9Q2b91-dHuxM5ynhzS91+ck2?}*5s4tAnFsPuqu&KcVXmF3K(fC-1BcT5cUrAK z0IYhZH!&l$8(lWu*_8|B;xJkegw&)q(Y6#7br)RgT<>Y`imuO%Rbw2{m%Y~)s+?1g z#dpk9+mMVMW?7_0Ql$zglBL97>HJKqJY>_ZKK^7!qt1ASZ?G8Jju6HQVZ8^yZ>OKY zKK;gxy3K~u9jVb(cmn8u!8IlAtVUCo@WN$ zJqBk7&m)5cMRFI z{QA(p@qdl48}Ivv=WRb%`{Ig^;vs%ZnOIsDqR<2flQIOOyx)nCA;_=KI@C|x7#;!H zHH`{G9Fp>k3e#o>avou1f9Gk2Vew&iLu1r(+>Ujo;O z_Pn$9y^QX4geoaqR@6$a%$)h(FkP zI$<&{1Wsf{-~V4Z;XuiQ)AfERB^I!c9d+V|>C31w1HqGbnA(_$c9G%tc&nYM?|WKzPrWu6QcOuE7Hq;LLNzjEzg@ zv&Q*ANGZ9b?MyJqkoM^-{b7F}n64cF?!(A5Bk;6`ZB-DqO$=$Xx81vT$#;Vp|9#nYmi^)S7+gD6*RJ~L6+5399wc!{S zVvxq<o{w@S}$L}49~a^{^WKa zu6i<5HK&Nr|6oK7OYC&?nz{QhY`F2_@p)mnp!+;E%rdeex-cf16v60RdTPJHLaaif zgt=A1qkbO1mjgs}Zx+Qf`eoFO2yigsMx=u0w5` z^R?mLEz~BB48qQYsZM601nrGM-xkd=B=NUDBI14P&~44hYgoX3vG{RTHBEL9q#uR; z7`>{Wt&IMM!hxj~%Tx)8>F{DiO+>ozC!PM@eYcI{jt2W>-+CRFIiQ&Gdbw&P)BSo{ zHLyaD$q203Wp z8(6b}F8zsrtP>%z4*JsL$Bmc%>GWl=+25h1_aXPrHG&M>7;+{IRLRhOGn?#>aX_~O z?AKg<*zz!v>%7N4ZM;Qgf>nRN^2b%z4-6sZ-CLah%{%RIT)d;{ z3^H^?g%j1xD5Ek_j14)3H$KS&WDw>JkWKncQ!Tp6h6&ZMO26H{SXgHtIY(n1+PW8* z;eV8Ez=zEUmQM;Qa^u9$@(g3h?v( z;w+D+=B17B`Not^-qiQI-LQ{4^arEv!<#eUIs9x7^yl zz-$iI+Bl00YD!V2mc_ObGrrQgG2wmFB9aI=nj*D zGq8F7&S%IvZ_CB$uwSOPuA&1i&TBfW>_!{IF@XDzq~+c*bDpY?OhYbmB$RfC+?WbP|Pf<5aj4Ur(F@&mYvj)#8 z1`?D(3WCl*@E$!bZwq4PZ`ICx6mzw^`7R8GYUY%Y(FA>?+N^a%t?pMKU_D8 zzP<9EHXfrmSEAA$BVR{EcUP@wFj9oe`$^r0elFPDj8+!v#>WHoj2j(Q{x@hXbnvAJ zcsl$I=$`C`3w8u76{PU06!kS8-FR+OUevKtF`quGvX%8y+X|~Ise5}1PHx$qRx`D+ zjw5HWeon9a3(?qlqa>|R>Ujd~V?tOzo?Z?t?15e4ME>G}V=w8e59@Oy`F&yi=yDyF z$NoYS84s*sc)t+3)axzAPq@R2od)bkgSx-`V+~%$(}T1fm555;PIo{1QH}7y)kw2Y zi`)*(dx1jRPC1~wJ?mooOn}dl#*oXq zg3^azY`76>Z1UO}A#9d{!5cUs#lJ1sdecmY1L&9aKhRyPKIsaHD|qxlbf2O$%PjwU zH)Jw79I)LCxZT!=lNTuu)`+LDB_M(Lpegeq9+Mm-K4A~d5}*68;WG!IQKpC+$B7SI z8%Ft%eEe@4<`nI{i_qFk97cH_9Y;Q(^WfYe0l2hHPI4Mhp(DdjqBvGp*OZ3z~st{IO&v!!1Cc5C`x*93_zLg$T#E zI~u%r--?dzN4y>qM>@WdR9GVOdCw1O$pRF2=a?R9hJVg%Y0PbV6f08!42F*Ygv?%f z+#!)-V2jcMfNckRk-mFwNgFnn4pfTYHe?i|M!D5EwYsH|u z`WPSLW@=6!XtFaH-X~wZ7(wm(q6APN3GgKF`@9q0`#o9hAN}d^oSTdPi40oj1EbCP z1+MyryBomTI|GEJCNS=cw^WfK>uQc6hFxEhx#3miw~E$6FKx3 zD!Mx3FXfNlAI|+>-`l}g*HzEa>NL3Cuge_0o0Ow*)}XZ7j0E(+=|5cPFhoMcVaB6% zXTKF50RgOiU_R{gbG%6SVYm?4hnJ}wApi0X%Ng-I)cpNdZEdyaXsMhJc6HME+pmXL zz|aQ_V@At)%>`;F%6|L*w~FmV{4K!b_nHpGL-mBf%7G&#f7#zY4##1}>nLc5hmt7} zhDgB{6#SDev7+IR{xd%(jmGYK(z-s$!9HVX-^6XX&9)qR$>uQ60haz%+9723fgT^*Kg1(Y|A^d@ zJiYwd8{%(Y!q?k)f8hwt{Hl1wxr4EK&E(Iin8;%b+H0ZY?QHP08rpE1@8a7cHG6-n zN%JZd9rx4SbR&j6(UEI*BEGo!_$f9QhPDTip-%TZ&J0uzm;FkCq_lafVXUXr(stt> zF&?f2DRX0rIHLhNDC0+oF^?bEdRdGx^Kv`k_+jWp4!CW!o(FA$>-s(GcG^4)=a07I zz`+#erxYu(|B6xe2*pj%m7h}sZ>YWPFX9i|XTJG(ANb7EHR)$CHNw|E1Vm$&=+$xz z{Xm{3tS4gUdNU2H>SyPWRAK+dTPE7899kjt@|pC#xg%Rd;n56*9qm<4vuEP$xBV_x zy!N&F{_h3mf3B|miLglVJpn7l6r8?S`v(R{X??pcs8(O-2O$PfmMUwk>+a-wc-zESU;}{(Jx-}I!qWR&P;xJ#R z&j*iei@-7=R1A*5!T^a;`9g!Y>{-w;5(#9%finf@SI86hpuRizjU{JpI@0oAkbFGD z93eph^C&b|3^-jQN?&b)1j&6dL*bb*ZM6Pxkg7MGKF_P(-~Or|$|tM8&3V6n+wb*p z>l&5*{6C&`my<%?z%L3v=*?fo#Cqf2&bT(^qSA`(1&{d9^-{)9!mHDdAbKMj`?45A zkKIN3wcd}_w5peQD0jSpLS#EYVoz)_n#VHCjF|er(5ip(Oww`#ghT|saL|Y_e#r5T zY-~dH2mM1@ali{DWf2+V1$cS@o{(q9AIRmi%#Z{tNAiU_3>Y&9)EE{yuYa%jxZWrI z#`={Q@zcIw#}5o{}U{*obSKHtUmv5cu8_&2y0H*<&YD|%2f3)H&q^v)kW)JI5 z<8-|;#+1l70LYm!8E6ez0Rs%i^P8gP9_7g#3LOW6^ivrC9ssp*f|f)M3JoZ3W+x+~ zWDcK5{+kf^0$H;*4Fqm$w%7#prGw0|6;T{V^})=F`eh`{WFQaP3nJYvU?_!6 zT`@7^`@a`ewjIPs`#p7w%>yDYeiv(^2qw-n>JSEGRN~1Afg;mb)n!w;(B{ICU{?dC z%-5?QRRgM7Wl!lqJU?N_R!2GW4jD!XMvREt_+Ph(UZbcdSwedF{K&!3Mr%nDNW?2n`!;}|yw z>fS30rT2b!|5q{k|6fC`#dEyJrGw?Ve1ExP#W%GqD)Z+~ii9T$jWGwa^e4YoIdA>Q z?wt@dP~T;TKo+6Jtw!474_fm;d*J*hgd9viThsDw2hJb;?hZ)*c#u6&HEcZL1_{Rz zCBMMa@Pgqz&3F*M3!fFskyLr`hV-ioZ6H&UU2Y~F7DG9BqGYE%y&31 zk6w)fty$JHR?R_5l^qs5Pt*%=fAag?KT0Wl;WocVd;ahCaV$d|-kcs@4tmI*Zpx~z zDx4+4JhpdFz7a%GSBjlpN#RqIn%QNf$CtA*YrXcbaZh^7`akRC&m-b`Y#a)`?AjKmqZW zjTUCU^Y@hQtv$B?r^$)AOM`)rXV{6uQV}DnpJ*VH84u|pq6p8wEHomiAA#&)3^q3R zQX)2jNGTtIV0QmA~l1M(oFASUXchXK8Ofl`F>J?CoxRf|Ol zK+ogL3HY-^RND|jH*MtPz-smf{A(-QJ@$O#!2syE>h;+oZDF(wP673BS9Z+wEk=@g3m=)>@}F|Xt4l|T}WV7 z8sCnCvvG_mhvEF|kA|Vm;=~gu4`cRr=!U>H(VX_i8mh zVT|F|XkupJm6?JAc-$&Z#84@SFH9--K7pT*ApXZq5{eB*9K({|SmN|S>1<5l3rZ1^ zAB8Nlm01=U_d>d(;19kbX?7tHe>9=Y>wOg%`1jsU=+3ZEw6n)r8!IqtFe_&C)0EQ< z`)!cDtOx_g4j3kcfeLlOtkw@N-m~&Q@RcK`gcZzTup*5TRTZLQJC2drqJGRG1gh*P zCxaLmVF7_scQBQ2pUW~qkrfCC%po*j6zG}lES6O;2?fRQ)D$;;vFxJ_EZ)tcfOXPz zLaOWsYURLg68kuljSL>4)wyzzNVBYs*)II3`rKYqMzUHCmmNwY$^(5Z|UmKg%Af=7WblqXyKG%cn? zeuw_Fbq-tgY%~}Y-vs?4;EI0@jPM5J$I>7<0vJR98Icco838pnDA*BCZT^C6ec;Gf zoG|qY{6;bM^en6?P>N~^baBZ>2~(j0@Cd<*Bted8mKHMpn1!G4Zfh}?VE2EznSaQ5 zY}641x~(|Zq(J7XKdnY4Fkq8RJ5I4fmhVwh9d4ExT*7RZ!wce~^_(_SMBvLU$RE1& zgY>;u?6%Tx_RI$UvYNmDwBA_13J~TWt%Kh9*ka<{`#Oys0Rd8E2oS^HRH)^H0Jh>j zY(3b+Hum^yfDU+T4z)^C;sgs@LV$_SKr2u)v6$5ch>7p-2VvuN!FRqtuhwJ-f9S)m zHQsi3BcM2C?bLmkMHqkziNOg2p#T04bK9^<3H;B{yT5c_-Jnqu`d#bSf9J$x11BJj zU_=z=3Eii)D491gA`orDsrQ*_4y zgbNy;W8iE?dqSb>X3$z#9k795=&=;@l;EKW;Gm&)_Jbw=-KF)WappQc+7CvudS%i1 z-{d~8NL4>$`HkH26T~nL9+}!^Je`!6mQQ( zH2r{pH}+kLkDz~Fh6B|HncpSwAwiQLII9*;vx&CS=5n*U{~q)Qe6(#?-6{t34Mj2V!j9-t1t`Y-@lv>1|n@%J#AF1=~UKvyPb z+hkCHfPOiDKQf!lvEg|kf-q(eAYr933_oB-12+L-5S9(|56dZe^Ym_4w8QlbK9wr$ zy65+;UVEht7`pe`*L%%X1WtfA(O%BUD(~iPF=nU*EAMzt94e_7;Xk8Nc z*#G5kZk}8#+7-G7+~k2DmF#~~VyGT0#<3npFH<_wH%PS;t@bjTh}J z#^n#i>&oVz5rrIM>ac|dz8pb)X~svSFUs`T7*}XRwq_bO{dQ0D)Dj$?fa&snLl9W0 zw_^b7^bcH!@{0qt|11Bv{=cvX{Z0P(-;;3Sb`6lonBB(>;!bx=Js`u#ugbl*hR-mUB5ZS<_;KZ{k7#G*>>v;Yi83iv zb}stwV`773L{~+Ue2OwDI4=#y?PZCVjcf*_&n@kko^A7B4-T!hG*N`*m&S>EO?DUii?m&Zq}HVLZ1 zI0z8AGAGbT&=;NpkPrP(E|vU)nT7$GKT!A`ncjqAQRqM1dT+hAfsfWfcl2#p7xG9E2=~-N zi4`;cO@ib3Jms>vT6`FrE@lVy5SS+IgXBEc1weygW@F1S%6>54`46i}j^b5C1r!;? zr}7!@cVCM@51_|!jLiqTXT$XCUo;lwxL2So>NRbU15{){5fJ$d>MRsQj7X^<1Y|KV zK$hEON|hn_i7}8_F`ueRNrY@GAyeqEDkM-mwp|o0pucp$teN{-Vkt0EMHwn0Hjq+5 zjEcxeks^ebf7khcN2dYh{dloNRbdfWC@3;Af;}}A5r761X8%q9ZP4BLzxpo!>g>D> zEEydB>n-f$F@MWiTt+YW7~u7sJ)!a1-!sm8qJdoph8}hY&leoK#a4#|08VJOOCi*s z5Wwfmiwtk8i}8YfkFq~R^e06ABmAa-xS2?HXNN=Ouq=CvemVG~@r3AX6g(=PPk_@P zfjf#5N-eQ~3iJvSy5MYO%fwY{{i_>%_KVsJlM)!67~#}R)8B-{LZr~d>4F&$U0D#SG9sj8Q*{q7 zjESK3d^pZ~`Dk)MkQGdI!pZvptAT(BspMR#T|R#Q%Q^0Pcy2ze)yY_u!EU$-jLLlI51EHppP2Ju(Uqx`wHph2d${ z5tMlWP@P4CL_y+oN(iKTzMokyO1He#)7rshAd})*Q_Y;VsiNy$Nj#uC)yV(6sOS7! zAz?Y}D2IB>kKG8ukioq?WpNRLTBA+2wZn&&afxo`gTVTFHFM1wiyDFOA!r^u{j@p**0=X3_3rU_an<~^Foz{;R%mu}Q8f1G zohivlYiqsXaqP=k{Q|!EeoA4%{px)u&MmT|z(f^#6+Zz;-?9AvrZ7tUTwF!6QnKUT z5FIfYmt!opCL44eR8BE7Nh8)z>RD|#u9&GfVc@g3T-?j} z(}FVG6D%o5)6uBb>V(&aG|c{`hNIMsUh3AU4G_73WN!sr_ZfK|{}T#SmCr7DZ36ok z`%P?WUc<(sF={`*XN_X)F|A_PqY8M<)4@acvX10-QM9F@^e7`?zG5^{a zsqhgdBn%yBIe~#4^0qFmQO2jTsDyg(>lLy!@CiN(7+-P!J&bm1_*&bG9Y~IdWc;aVqt-M z*yxAZA8H;pHoe5;0uS}*QVc19|9r8b`82+iSmj^+vP1FqheXevT!6hvgvy7t!)?p3 zK#hUYBOK6_$N+^_r!jG`vl-E_8NuF;glz|yIRY5$1<;3pGNS3>S7>X#ObGH^vKKyW zo`Uj~j6{y?XGTOZo;(4N8e?uB_Q{OMg3NLKU~NA@xpiuwZw@Bw#h`tL68{msUAo-> zyTREEx5PRcdi=E;gGOLJNXfYCdZjWZF~9x({$G4c=Eiho$ILcEp&S9c7;ykz`02T& z2{(Ip3l?`^z*b*mgU`nc!Gi|+w?&H+BXvMj;K09_Y*-~}^8-vf@%+GVFVrNUVpH6} zP~wk#Xp}cV$_NaGEd9ZdVvF1Fvz{2xhlA7@f#r`BelO$F7$T=KiEe}p!Z7p7uZl3@oNnTPK4It$ zNPPAXh0G7}2L?FJ)DJ*b2cj(WvBGSI*jykeT&}p(CfuL3&$ly3WB zZGaC72-1u%8-@G`BJYX~2#-o7eaiy|U_S?&22tl5^)Y)NroX5A+wQ(Uo7Tix^&Rzn z!M@J&+ZgQ63MohZ#f-m*Zv_KGuH87NxbFNySOiIAfRVx628x)~;Qw&dW7Zi^rT0b< zV#TK=_wwv_!~cx50KgvAq7i71$>RS{GQV-D-$%Q5z3O`pg{>CN{qA0Cf%y1-r(5>w zu6&ALW17@_)9-L_*RfusN5?!52E(-~(j9O-AT>a?07O<Cd?d#i2mRM`%eiSb(prP5pI-1YR+A&2!C zd6w|A;J)?eIKL>L_P-`}8V@XeJ9^S!GR>X{hby&>N#H=PZ9fKc?yr`A=5&96{{e!g z{y*=F@;ss(DuCP=P`1)o3BP1FbzmNos z8H?u*p0D{>1$3Iu1vlIG3__dO`J_)-e+0RjUka!Hf`WBnIj#_{<_Bym$?HO9d?!8@ zD$IXeT_Inmo(6NBm41&B&YD91;}bi{g7tSt{e~NqIRj}w{ezNf4^^+7%;(Jc^X4mh zBp>YeK*<035Y%L50*6@bI)+c*7NZTGjqwk@-ev)L<9;yO@oVnT<%gC#aqrN=&)Zpd zpEg&xm}S%i2kKyku*A*X$>|{fu{ZFG!N4C=H(tV1R0Nmr3ZdtNzk}HM4QHa~N2K!1 zI2rmy*oV3dRhjf}e8txIBi#%_9e|Pt6n519sPt;LzuU>N_`AccPW3!VEY8HM=|;$h zq!<pAB%JaQ6Lfv7$JyQIZ3aEk>&bvZOXaB20ycPehEFfoIb+q$A!Pa{yOd!XtVMR?ta!U z_Wxh{uz{?ZrQtS`svxK6BY9j*4uX5FpcAGBbIy6UKmMtt=d44=UN8c7VnmuyW-prg zhS$Z>!-Kyz9ErHk_hs=nFa1*Uq9=~s@@12)aFXuzL=;0bj5KnUQPT(SuXXx^q(dRP;YCr!w)0o}>`US03 z)L=DbCHR9v^Z3Ud=H!FbfKD3^C_IoJcEAHt#a%-&3@w;XqEe|zDLhACfz#F$HwrW7ML60& zN4?SGneO5@m+aOA660S}jRSpLmJKo$eHFDo`FRIKxAS)JFnDHqQA0kd+qb17myDp* z2yYVpd@~gKea}3eaXnW6B%2*=T#!Z4nsJq&^Uvn}+tr6W(l#1ZQ^;jkh+oCXL*5kds%FGf3p zEL|B#FfPJiCP|IhRTM&5v!y+?k~+AihpD?BqQvGSt={y_IAF~FAN#!il$&EAYGprV z^THhW8(lcR(l#SIhI_X^K>OaKYb4%~IF0M}Ofew}yWv;^SR+x_29W#9YH2Tzbs>hG zOhyZP!qjhI!N9p2iop)dO2kku&W#3j;(zTg@G)Fb{)TU0G|6AOrC6_?mjEuzK9xGf zP(Fvk#%HjHqvzC3LC9DuxA5* ze$L<l)gIwt0vfZ*M6@q7$YbW`ngo{({B* z7cI=bxNqP6T%o4W9p%hsm*)$P$L6oI-uA~UnwfpjepV_La<@WZYvP^Ko{7cQenYhz z0boQ6jqF!)H_-JDK8o=F--I6kSN?Zq<(R!5Bdi{V227jS%1s7YP|D&q%gV=MUJx7o1M|eLvCocwKVwRsjLFP|px!lz&HN4)z75y1i zmz}`4jhP<^NjYN?wD(ir|6_t8 zjR>^D=>``g4!|)I9SG)l$tRK$k?lp6h&$jsMou2l#WJzBMLM-$i`E|q zZHDWV^V~)xfC~Ubfn4XE-SaCA6GP=Ws&;aCQh2GyW0M5@8kjz3Y1T$P!yIsL={}a$ z^~4MtJ!9FnSkLFCh~{Q$<_qb{e1kVG(=jT3Jj*X3H_nCf4e5wqKxSdaEE)0xDD@LhcioI4!U_6liY%c%t-ITqbP0SYxpBY1C#HIX8^v_q7 zd7%Yo-ws$e%3it7e@a-x{{Kf!)}6o&=l|fW6Waa0aE3kxeGQ{>x0!Qxiz^b<2~1oh zqqJJu4i43ubaXd3@(-)4^N!mMXlUNBZEBr(JZ{UGTP|k<=WERZW?X zczLPvzy2L`@Q8&@VhvK&(!uv2SwCF1uaaFk+7y=p&!KU?e~hZ0gmsgPtU7fE(I8nv zX?aK+S1H3Lw8%87S>DBv`a~+FxDDyMrA3&o$xSl3NohXsq8;`dgsn`}-rxC;&g73`xp zq8#JbgPsfSr&{&ec;l05 ztnPHd?iJ4&x!Z}zG2+rZgIfv5%~&Jq=&Gi4qiGRl#0U}Sp*0qbP78Nji^^gn?`%gI zXF1Lz=N4iLMZ!E|2jZU%J|}i3mpSam()&1mxKAo=e4evUw)sA1{h0nnZP63DwluJ0 zt+s6wEW12(>VYXr%_0U3*>M}XzlpZ`ep32h|F(QIo#np?Fc~1Ds5*eFVF{RbFj+i3 zEQxWSKw+y^v5mD47|QJP?2KWSwxJ+ONs}57>5nMNGUyV1fp*6CcNM?ojB~9ja{X~P zViguQ`E8o)y0T6q23ZrxJBGZ-f@+fHvH6KtMeJ9vCQ2uK)k7z ze9ZmHBWz=#ZHms)Ejt1SO%Y1PREK-U1mjRug~Kh@@0OKa|Sr-3-3em=}MD<0rF`glCnG+%= z1~*nWxmV4F6uw%yV*AplC}E%l>GC01#Sg)Fw31qVQT(6d^R zprZ9mN-#`}LL_Q16*92ulc7sfD1Tc5kzhuiT7Zm`Mm38I!}SVKU>?lT>d@b;DN{xe z%*NlF3B%a1r*6b}ZpJ_6!cd z!6CUeo%|ljNO|<{71WxWOrY%>8J<>jf0iGPIJ*x_%3#OFS(oh{@OwhQOt$IA2wq_Cz49Qi`^LsM8CmsG z4!RL9dNwFt={Jj?vam&Uj_=_#VJAZ|>4%*%B&6einUD4~!g)@f{35x-U#8y$B|Pe{ zRp|fCkkYz@)JwnDW>j3Ut8>S2>z6Q|;tNsNT&-T);$8ST)|g|xr?RjAC5k^rALorm zc0F_7K4`@xAe9iGzcqa?Z*L?Qd(1Ic>L&n$yOal{ovju z59Rn9o-*VwVlBX>-=qHhFo80fF3p#tn*XG5o5A-VRP(rc;x)`KBsHFL2O+7HK6;)7 z4NF_TA7lE)qyHfTJULaV-{H7)rvxudVUMuj(`f@4+Dx|-ZNA6XU%RA(^a!`W=JFiS z`kaY8{0G|udh@Ubt^ZmfF1dt^=tt3!5Z3+(z&2eFvavzW@b=vN+IEZMG)MLPPUx$p zarlC>Hn>~laQdr8U#L1a%V5CIV@U|W7(Mfz-}d5<;ABVSC`V*FA^%3GM%3d6xz_vb zc!STd#Ba=ev316 z1EYW^kFTHzS)89!?9uRg+FBbC9AN{3+@7Am$lRrWicjEB{9-=!$EvxSkcpWN5i(6%rHYow)dgSltWJIyeJhGQ$ci1fky!fNRH4E-$kE>FE2{xC@u| zm7=&M_#G}gYtar6tLv&V!OkdrHHyl&d>`~d!U;UUiQfzWu7CBI@_rVK7f^rWN5FS zU$_AD1J3aJ4>n&h0l0=T#(?sRSlMCT2o-_CC1Dcu-Y)q-6d7%mD_SUS)C_5psT~jP zQZ^-u`n1#3q6LrgKY_jyo(k#NhXH?3b^~4nA-Cy0>bQ3`9w>e@P8$`4t#0` z41R;i9zgJhoMCI7$4*~zpQ@C2YaCu%wG2845nkMLT&tYed0X7^M-V%4MEB|%f$mf_ zgFd)*%Z-tV;EWg6I&s_xydmS65Cz}qah*J`DhX8sA|~!=3Xpj?X`GD1`=M6=JQN&f zzgO~X`#6celeVqE4;*)+TpJdHOg$kCd?JgfnfP_e8XeTDoqw)pj}|>W=$iICUoW3} z@k?RQ@ass>!Uj+W99)0g82r!Pe?rln$NMie{H|#e=>&D!OLdEgfxtt+zz zfoCdW32EvW9J1m^5fT_Zi0K754_$_E;1w+b%dT8(QV@ZTF@b1g(H=sIWjz*kmm5jx z^CuE57tHZZbgmeEeLQ{k6;U=QYYv?*pSl$`FZKOA_L#2K-0)XBv`zx}$^vj0jOkO< zz4vdU@wnc?70}`+;F<&;_AxEH_Bmz9R9X?q60#xpZs5gA9Oy9Pr{@Z%1LF=Aa5C*>bSk@=qm*CF)xn*!>nD~)sQT88~B*!2w&&K_k;bkyN!M}sxeZ-7ug!z7yN^X z$IssP5M&S`)9mupq9X(#5WvEtV1506N3GR7(wW%W;6cD!V)d^pXqX@_$n{iQ!K`ToQpQMd!G;?Soe^}6Zww~e2bESF{ z%ES$yA1Xg65%^sF!RJ^kcq+|Wh1-!jaotDj42ScBwDE$-subp0W)<-0>a{J%ruU{b z-T&2r#CbnwH|9^n?7qI&JKV{b0ER$$zt?U5r-}Z*`@56QzueG06JV{bgZ`*6z$FXB z8M^?$AIqGjUv(8#Hoi+C_`JG`Ayo%?4TuAP5EIiDVvoCe!N$>szaV))$_NI3F!My9 z_>4G29ckz-UH_mtv%6XBYJ8pdq3YZ79|v>)Iu9PhA*i*`;{RX6{dV7M<}!m3nf54i zu)BFWTh5bF^Y1x5zY72O=BtJf5oW?-$JiDnX}#d0Dx63Fb-viY-avEV4+c}A1l9tO zcsH;BUVih8@Gqo4$xEX6$JjcKV`Jry+`osuc-M|@Kl`(U2Xr&#QT3qqRFoB4y)EO( z=lLDKpqXul7T_A2%yd=zj<4OpbK32m55Mj@nf^cL=XH5|EzdF9|BH^dvG986-mTRi z`X8lMEDec}!{SA5&@3k`6^sgOQh=M@)0Wwc0E{S0b~+{Yn_tjlqV^!encL04dh@3F zc;mJg*^W5PxzvB~{znvF1qTocF`dcKzh@1UlZclUSa&fkw8lYihk^d}m;ClMkNd`) z<-X=H94(`^U-RSJ_d9Om;_W}pMUxl)FO3fBE;qi->;KoM{yhILBaZ!l&++JGf1@z( zzpmfh?zdfq|Md=Qbyp(;YFDO1&f4GA+d4ER9|a&JDsaHab>KW&)Bz0oo~;hxR-qPb zcH9wraun40^{anT<3M){l=lk$-%DNFo}k{tLeQq{1{3rdBF*7k0t)(bN!#{#`5{x8zQ%JSl%x|Ep=7YhDO#uOrJr+y9RvPQy+%Py`bD^>!Ng%KyhuV|abLsY^UQrM{PxAkF#%@;8 zA2tXT9|}2<_&f6Kn^{iU4N6?9cK#^7T;)nfF z9r*2lj%Wt-1vxmVIW1hAv;l&YS{R%QiqT&bY$|Ym*A+`jBr~IpgKCJh99Q+x{_NcW!v?zZ)ap zm~-z)-k~5v>U=66gA@mxMvsT&+4~NEp0bA|3?Fw(q5^c3f5?0Ofdr!eL7)K+7~B=8 zR;zzUVYd9hCj=naAX|-B4`nYUG0`vR?cPt8eaZhrSewyV5j(hvBTyG8$fxrmP$U@> zXT+c_5D5ex_8o9Z{?7+Bk?3pzTW%whAci|fmdP#3CR7LqhBp>|Mz{2+XY=>(dMzPU zc$EDvv#`s0n=BsJt()R~5p^Dn+Os*`f62IF!uyR*1yJMa|9O1ofJElJo}0zd6jxA>&+{xoGd~GGz-k;Vr?x?F0{-N-m7tiihP3(C1qu}s8Z;K=S zy~(Mrm&vrWeDx)N6^A48PIm37u{Y6Os$|R?Kf66$mRai~{mq3y8V!>w6cKpa(V&`z zee`%gW%JwqKc_B&_2b`1rx-6*K5C3l{;CE7y&wC_V(51GArHc=!}J1y z%kB(&`I^~W5wKVDKIcn*{*gW&2A8hVb@VSde&u6*@5%iCW3Q*CSE2vPz$u=qppY>g z*MFs}==?3-H|7X=ee8inuHM>jGw;55`%H5<{LzDMu4yUS#~e4jIb|2nEq@A^kp zre4QMT|-L73lkqzMgLoXbKP#eoZWNjVo{Ba-z+?Q?dShvahTYmtigRbjgGk*b2qQr z?KOXoq}CP|h5k@go-X7ldl5?f4qea3;ChbUHcyA1>_!fN{rR# z;;e#k4q2sRZrtza~gt0ZVQch z8}{a(bJ8K)N#auT99{(eOFZW1o2X&-`enWRd=t68M;{|cR`UUz%VBb_Z}i+Ke})0% z&I8+)@>X5r-Gz0GjxO^o)&pAP8+?^ND*YFEk;YPYUBx{!$dI~Gow9Zp8i|

    V*xg6(NS9c<|+jWr2(C8Y=mVUaOpj}pATQ1WMh+)rtt@KxgFm8ZuUR+KVsFN5irnm7Tv2G zzZapP_lIsHZuI|5Bo#cV^hJ5g-Z8Q@y*KD`uV%M_V zZ?}Ce=7X>5^ck*Ae+KerLzvR*uDBUq%b}@re$MxS(95>s|BQQ_yZ&HL^AovQ+3v@U z5=vxp(+og)CI0q-oo2{P|TI-z!$Y$Y-WBvSKnBHzM=-cbScz@479QC z-OHQ#oRvt{vACM+Ir{oFK4@x8x%_HEn!)m|m?+g=Ruf5w&L#GWM9roZ{U3RO!Svbw z195}>_h-^`yj?p$g`Tpe!=kYC5?d3LiIvOQTdyP3Wjl_4cg%HOH*?Wdesum$|Iz>N zcR`@?_nkirN&chs_&$f1{j7MNrGJs(^g}1}KHxLs|DJF5s0#XrIq-MfU2TukKz#X> zlOf<~zNG-jJFtUs;rL_72l#*aiVDdxn#$IUEr0+D*Z=?j|NsC0|NsC0|NsC0|NsC0 z|NsC0|NsC0|NsC0|Ns9KQ1{<`^bVW4sa-6q+%Id`&^xry@@kp@NZS`d&P%?l+fnu_ zJ|97p?YryleJyy&=zEWC*=Fg`-IO7AQE9sDY@1b+diVtox^oWQ*by;g4RrcIx?w%* z1IwNcqLeC?PS;on9=l~LcGJ4j zi+0ntHZrgk16Il&_V2rnzDjygr%$h^18w!7!0heJ;-5zMvB}PH#ci(IQ4m^MGWvViWIccY8UO%yd)@T9=e*Xt!M$y64Ulc#-#*g!pKgQ^R~D#FduuLq z#+&W;(Vze{pbEACGyy?-001>WG&%qU2DBXj0BBGd1>Nao8|`_W-p+SMce~$v>T&k> zX;Qwo&>Gj>sf{dGN^;0M*E@9TgOaWFM8jTBNwCtY_n-~H_uH?zz}@bA^taz{O8Rkc zT;%Q6_}@=}>$W>b*V&YK00F-H-Y1i|2Xh-34JN?7Vdt}PfEw<=(>n%M!`t4}@Bq*N zr2FN-8>g-f4!(r}@zw)Yum^}Ad)|i@vg0@uT-x39xcNrawzt0H-nwxV`VTLuQe0}X8swkjPr^%bGgboJD!&YwL)}V~8!-nqL4QkT+ zWy5kirMA}GChM5zQ{aJ#kDDh6h4fJss+w=a9K_qFzY z-%WU_lTZ#D)M38+eLw?QjkX%qwt;1oNEGt-ea?K?6+p?Z-S*#E^g44`w%Y{^JofkA zp7u=oC{fFdsqcK0KKE;=9S5Mxt5}P2`)8_j<-zTwW`>iy)7QLQNbV`amObyD=RED) zYubH8x754=_3qQQf#zX4+5)wYA7!6heL;Ke)w3Z@S^!4cWk`#?=yTlNpa3m(NY>|t z=VW`J2DM5BKn)lLAOY>vCn?^0uK|E~>u>?x)86jAa8&>TfB*#TkP-j@00ois^V=Xpa27I;1Zw!00M_^TD4ipo7>aL_G{?ay2?5?GY|rY zRP!^S7qA2CtBe2-ed)S&fB*#m0CT&P&;Vo<0EbROoIz!_pimS5;sGuWnjIxUQ@A-$ z5O&uux7^SGeEM`?9bNVS06KI42afG?g?qRF9Lh4W>^|=1MenzJcxoGUQLFCz%J+OU zir%TpzWURUReTsW?^cAULI6Mj000EUVrXd4GH3t|000000000000000005X1OeRy) z0%T%j0g<4CL=XTV00d+J0yG*l000DOpwmDAXwU#m08E$w08E)M0W{MlnGB64(3zk# z34j4G0%``D1P~xVCV&%0K`@w@jZZ)UG{SnA0Wg|riIXaOCYVhzG!r8x1oR1svYROM zn^S6OlP1z(DeY7BPt#MxU`grfPe-K54Npy!^-Lg>Ng@yvKnTzT4KxXp1j(UwgRG|?yenKaYYHklLEHZ@1&Q}mudVpG7HH9sjoNg8^ZWX-C2hGd)7 z4^wIBPX!xOKxhO?ApnLzO(&oLBO?$rj1i#Gh{lyq@?jx~qXfz5(@iER`ejc{o`p|6 zCd#M0gwc~G(NpoFo()W%noT_fDdSBwPt@5d_z9_+j}fV|m^C1gA_M{e36KB)0x>X} zGynhq00A_?GGQ_@WXLjTXaE2J0001(08Bt=X`!NKAXC9jwtv(6XR7_rLwAyTXQo-4 z4lq}#Vi}?cA-af%gM^Mrp$!Z)V+h&h=ifAhEpynu43pB@i4&?)p^9#8wq{GFzXvIa z+uK+=Epbt|7ThdAW``7{Np*r5i7KQL#!q)OX(2i$iI=1EgH~fJZih-}%S0g|BVreC zn=pbBIi624k{q_tTb6W4yWA)>1kgON3?Im@!W-#3rt;TP37JMa>ri*C*u~sd)9sgZ z)?6}G8Q2mReNmxS6m8BJ;IMFzRfx$IL1mUvw)+{u9!`pasNqsb;tgT32-yiuL3yi~ zZSDK8kW&Rw!|sCgW!UfgF>cPd(^h>m$FMwPMu3I@%9K<9mE$YTtUe|R5^KD-M^sN_ zSXR3C(h;bkK&c4fl7S0v&kLi|j?&eUL(d$bfKFS8c0lDaP6%jiv0|Dc!q$J%pv0ZC zCEO~^iybub8s6_35B~LE@A7+ng!`*`{9Z#d0o3B3Zyr{C2n0K+yDKkUS^dK&K)sbP zB(V4DAJKK%wh%*4w`K2tz4j!wRrc%deg2qXmR#H?h1TfsjW2V_C@CRtgF+_+I*^O( zp?x;F6#8L!VIyV4V|ZFc=?$^%xO&6jq6mU2r1y#SZ0bb}MQskBhh*l?IM`v_UgJ(< z(SQATUZX3LDLJH(g81=7KyG(r3Ow*;h!PqGAfjl@ko+Xis0#@`@ehcAww+<8TbrD@JXL^sR0O^bDK<9=tb>65sJX(a9>H(`t*X@_l)EjHFz zG(pUn50jYLKpuP`I8p@yDQ0h(-EH7IVn>QnNURQ2-4g=GrU?@yO@P>kFw640{!sbe zOv5jqn_*a`qu{=8w%E_8YMyl!zK+&;D+XksG?4&mF(4@!h;Rren*xR$V->Cjr*$zV zWNF`9>o@k(WjJ_xLDbOo*?ELk9I2{|gmMNT;VhX>gk-9*RvZr9nn{XmWN@gwjE& zOW3A5Uo&O>9A)leU#fMvvT}miC|3$#rwN$CNal1p56o<4-wpNL==Ya@sbdH}q& zMLXjgZ}itwQIyPfL-H6II_yIcsjQ38aXtrbq>5)<@V>$3HQhc^%7^Jc?_LFsKs>q_c;E1WM|9z)mhSE)_f)lQF&JE`eu=E-%qoL?`{yeaa zUA0jwhA9!_?I5`DlUW$T05W8ZXStr#mjhBxdddw1ptr)6O*c9<@KbY$kg>VEUXo#B zIhI~)Re88lsmJ&->kL*!o7mq^e#m8Wg@>04wrchevT#A^c$F|oAz7w`U+>5@n%yk8 z8vZ&WQl1vpifJ_(On&xda6*){de&?9mEpjw6Ge~UQMHDb#LPFOM`QM92ceTu$|wxH-iMZAOpNCZJK!7p(ViFPo^nQS5(XFxraEX+DNXn!W*Aff}zyIny<0(c8RoHdeQ%9ER1 z`C!SWL{2Ck23X>y0@xq4${#HQq1%nS6}?%Jh9g=UNz1fd8wD!b1$lCyZpD*aDP8Gc zRA(D8P|9z)sIzxY+P2V`hXDf+F@eE~6`7Q%e7#WSLqbL1%7&R-OP3g9k>tabvrINf zab_U0RH&jLvhQXg7A&mYItP7N9SOf1b!=tYl~HCchM3Gu)eK2;ijJ8zX)%Gps_emZ zZ%SnySvOCZnY9y^_;XroYD{5rhGlZe!PBHocyj@aCBHda6K#Gr9LW**+ zoe@D5GGxVBmj!UgN@ku3fIh9&5L05NqUU3)iUr;|Wo8yopeluu!o)jG!t*m&8*N)n zRcEn zKK6{>ahS0fVZn+(0h}Lt<9drz#Y*Rm7II598ju=YbWtZohV>H0DFZc2RzZPCSRqx& zqbx~MMU_+#H3LCvhP4hMSc7RuHx&iI)Hk9EN^WKnM+HQ&8euic(-CH3%QNld1xzM! zeN@}*KuS}hXrk3C0*os49&&oE*p}QV#FvPm#H0g@UTk1P`w1bS*kMQzYY`;~PlzNb zp6tm2Tqz+fP8R}0b{Kd{4W3I`dlf6JonI|{Z8753*sVo zFb`o3JQ5R5gHTU9)={Z#wF0a@+!{U6MWhixn?Fbi4YI>X2!U-6q!O?K6FB&tq>?vG zOLxufM6wQhN5Gm!9eP=ADS(jptyF7xUO%qK9i1vEZfbO5uQm83i|R}QYeYJVEBTNV zB?yKpYADO1i;dyeH}3P7Lixmydgu<>odxpnG&E!P3w^WdL8V+0 za2?cwC@K%X_ea^u{I$JVElZzUqLe1FF=}+XIWW9S7oG@XKlPg{{BHmsVpbHd9ivih z;R^Qq>i&G38tv7VA-Z8uc)~cpO3h*Tv8wP49q-&L=VKxzqtX7y^yk`oUpNKARFk27 zUgqbq_%oTQ>vxbm7=IUuzvGtA{jjKZOer$t*l8`CDMqB_I!e~KL8L;xDxx57mDY1n zPgS<+_I=|irM*-*jnj;no0hAcl!?c#7BNd2>k8;tOS+T^c2n9^lsFU{-m6%d?f2n! z{HL$lk3YBec)rmPv72qA+t7X!Q|@r-1^mCw*2>Yq(Sg97)_bo#8aIPaOp!Ja?HV&l zFVO9@+0uE6E4}Wn)iyVAi&N}sk?@&Z30@86|_6(IZJXKQ;vDTJY6fzJSLxWI^#htR>fjXJEM` zw0mX+s@cd$N8yQ|C7#V^nzl}FtzWl`(^T^PvJX!0EpvIt72MRcOG=V%3w}r1;%a>- z-6pNk`OU2OCM`@0d0XA4ptF{nOLnmjq(9}Q#eEkXeuK^YTyNUR$@%C=JO|tBpTkoc zyIo7k0`GKZdG$kG^~$GzG*2Ge($~8d0?6_XYo2;(ba)l`=N;X&J)`fxZ0ogd(^C7g z3j_5uhxDNYL`8~m=+KL=@c!fQR3ce~^Xi;7K=HKZT5C*Hnk(`#S=*BX;&j?|M5U5O zs&PSB-Agjs75SYc9JXW$J|`mlm5iau=16)7TN+NLND=GVaOKsX_oI}wwsBM)rSH8& ztp7f{%kcWUt8H>I)+QhcAPy~y;^q(}pWO(zpr%lZ*GIdJLIBx4OcIfHUEx3qz+?bI zkw#BnS|AEHLelO|X{NwsgL23=qHDri^iY$`#1@0mv#)w8*NXrZZ2N}@gd1UzB% zPl$dC6TpDG_^JAF@m@O>L_S~3qKSG4KJVSF6gHo-eY%E>PvU@|fQXkCN)0Kw(o0b< zv)IzTb#Yfy?_iKNIf1JhG0Ray0*~Zp0zibJUC~oHjlXZFf@)=B(x2t=<(7HkBlxeD zrhX2JA?@Z<`u^=|#(R1=Yv5L$@4zTjUaFlxl=-##^5fh?=Mi2s6Ify9$uBhP{ty&2 zFLOjL>|wwwMwg|9gYliBU)S)F_>=_kFRgNu&{x ze|15px=PCgd2dq;T!#f0}+P;i_x z5#>AWWV##R5H9JRgC|C7k#ft@`xSl(MSm_?ESqfaq8Bu8;$CUTc7H5LZRyNtSaOfk ziIQ@A_yM!E+xerQCt!mlt2c(WT#HF0v!NUQRjnJ1xzz`=d}95=Q;MtD?U&E{1{UOPF7!C=JG@gbpTwJ+Ca zagHg1{l}G`ACe|tA4S54&d#A_&uG_o8a*vtLJQ3*3e#0aO<2I(hoESrt#nyQPzSLp zgbN&LhLY~?_10Dhfb^z9X_1gUa5;04&~sT_HZW(vXQbHfM&+UHd`5Wl|As5ppehQ9 ztwgGXQ5PH{Ldz?#B@#iX8jLWqGs>yXUM;q6or)-4%hL+HEBns7%z3#*%FAuwS$jtg zPGvJ=hWe{;4#C^lnPCD(99m&=Mf0(>D)u$bfH-A`7+xU+-eca~Cr35q;+(>G(Dcs_ zarl>PvuOK}9VV1kpxwJ1jyUF{TQ1F^LlX){^erp82Jqr{Y-kF#4pzG5<9~~Zw7#sC z$LTZHb!wdn0jW`7RqhCasOCniu!&k|qTJ0nYn*Zh2)X8Q*QFci@?&G5ih@qK5-sAs z6DVfOjhv9;HfFoc!k-JmUmN4s)PgbI8fY#u7>OAal*MAsV#1E=NORgV4yDNt4Xi$p zud8PpUY4YFT}R!JE4eOfK-mtjOSNct{-;$h8y{4jF-V=->3hF2U1@-0I3F+CZm^70 zYv5$eF|}JFNUek=nWN$SGW*J5fFqgpQZj&v1`dB@*nr}Vfy7clNK(V0uPtq?OkqRq z`1}`Cwr?GAw$Pn&k*=^1A2k5vh%ax13^o}lgVV2@UGhmOWUJwzdbpM0f}0CNkQW)i zg{k#rumxPGGcIhy-bXfAv$f7=0iQdQ<9STg$}l>nf~;=hOKG~yj!%*Cf2N~DuxTVL zZZfjeQ6Ei1&bv~F3NgpZZJtzBzKkgNq}S;p;R3(_)FaT(zEuO-C6_TzoXIOKG`<5^Qm@21|sf1Q4_n3dVwj(iad ztEMW{X@Y#in}I7EYB$g`X&1Zr=WMApi;Uj;i3TgNfHXnTz>bfVx@1wY+tgQUP6`A+ zYY9dy8+=$+-?Doq4V~}oi#fjfTwCy;Q}g1a+Y*$a0wNRmS2|VI*$MC`QkawYSM&FM z?H8*k%&qC{DdsU>d@kx)a4Gd>M`bp~DmAc;>ue^%l>$CT`I%KwggJ)@gJ!QF zlrR3q-Yn@>kaio~xX5cnd84k9C{jqTjThqJ&}9zvUfJ;afZzrD z&Cq1Vtqa^uPL5u>b)4=}w*&2cc0d>-E}102 zIw%Mz=tzX1n_dv6_^r$6`h9FBj6t@p$IImrE* zPFlI$qpZh3s{UYrxWIF|01O|3hm2|K&A7 zP!AR2LUlToY7E9=7zt0G6xr?~Aup6TAR!gXL-ER}`{5$hR%B?RyO2>RQ3zZUF9)-k zbDKp9kR&Km3hYH)$a?e!oo-zLH(b+Qqnd>SVtRNSv~nYo94Pl7=%WaZfbzTQkAf4z zf9(NwlOkCe2GR*w9Xp_Je_vefrU-(ubezH(G#Nh4+|zF5{?hG z>?kI1GC$)Kd6vJh@OwtfzmViH#u8_S&vtH#fG6K*>ok7=px* zcr;YO{H-2_@PSJK|I)HGSkZ`7y$1)P6_*SeKyX!ji z;0-@?63y^cYcXeL-lk?%R^m5gnydbnm}*RC(Tt<57h;?~xk*u1PjMpfE?vs==2W;X zicC|w0wOm|dInG*ND%Ko{V6sXBi;MyPk4lVWh6J|QOupUapBZ$S&iwjvO8ZVzq+}~ zOB-xrmxVHKdqRgQA@9gi$`n@88>&%aElpX*>EKBc)dWElvU*l|;lv$4%@zn)4ZMTG zN>Mg)v3WV-6o7b0^4@TTV1%0)NHbPU*6~&}(c&3ZE3?ApWhVV1DR*UC-XC!VI8f)6m6=vN~BSf*jKLKzP z#o%+DCpx^uJv(=v$bUC$%~ppuTcWPhBAr9i*;g!>DN2@F=~I!pOh;=g5fc`gl`^_k zN zuEP%nu$E-z$YV88hk^Se+iRGRETxwj*0;NjF_QGlp*}mxg{5_~aVTr=u!AP%zh6f; z;dT=ES#j)`wMWs9gW31EC)UJBi4M|G`n?2<`{`C-m?uaWT@9q{nEGD&J67U!z0++^ zvUYZFv~Vk~3&v7O1UvNX@WPfEVP9j$Ue$}F_qx{Cs_x!bS-9i;C5Fs5xj?=6-YRCD z1H&5eWnp0K^xf0)`UE>L>iEWn&c6uFjsF#-tmhi!H=6o*f_;&lkiiv*C?*H6NR*`$ ziK0poM+l@GO)hU|Q6mclsi5WRkbfz}gWOc5j9kh#B?uu{aL1IdLs@+JKm0j&T@r`ZKc73qz0U^szyMidK6OG42(XsYIlif|+RJh$NW z)_l#11LbtS--!FxrbPlsH{&3Fh7RVq5+Zc_nku2O1Tc45Fm0_C-(Tatjr$GkEQP^b z>H@1$5B0z)0G&%@3V`}w_u3U}5ewlx!2#w7hO`ypKv3R5kptH1{F;ZsfCuelCbSEHvl*su&4Zi+t%PH`G%p(@CJ3 zlQvj6HYB#q02H81+k;6qgA)WpS|}z+0G;d(1V9YX2>|Vg3%rV6f-ZpxBq0J2j1gSe zN<@l@uMkGD0O5UFD1aIPs1ztf5HCbN3=>kf%8O@HKtRUA_&c%q!cFi>5f7O4S*kD)Fm8t{6K5<|7L_sP(oS!uD#`t-e&^7^;RScT9ovMC)B z5fFC&=dAWCg&>1q$Ht5oKa0KDqCD-NHkJf>E4#XxrHD`8p>b>(De9(g-$ivmy5a zeUa=#MiCe=ibe=Su9OaP1il=nlv<4B_|qhYQ~sy%)(>Ogk%nUcr<01ag-0rowX2)9!tpt zY#Y!=uxeM!!(>tHqkZ2J^OA&M2piL<3eAgVsMv78_HNocpKb^m#pbtdeK!^5^YM4P zy=bx^);yeuQ@pzgEQf$}G7BXHsbm)zk%>5o(IApW+Jj7Kn!Oa#N2*d1Glyx4q3!o( z_J8f8rBclHTw$Yg0;v*8O=2`$p2Yfd$!Jx&-HDpE3Rw124r0)pxd^Xo6jc4rIWSu1 zgy<=V%w|6B-3uj!Y)VWHv5L2j=q|=9hLo{LE*PHfGilS2(&Emu4WS+VIGjnprWquv zu1F|37^nM<emNhLTtrY&U4srD1^{_{ zJMG%pVJ&O22G~;6hC~Fe#poU)=M7<5fSZZS(orHuF+-*fAk+_t>?hB#D-ab1bzRL( zjCu16K+LR629xON*MWLkC_6hY0bq!Lo-d`F5YgjJ_cWvW4wE@~TkWoPxk=rxZdI%( zNkc1xc_O?4rOwFzk&;-xS*`dSO^AjiY2 zPirpFU>dAhutN~j6^$YbgU&SCc_A(BG#I8qL`gwA84?(5T7iY;iGxjC;^1vbqeMc4 zRx+s%jtwYqN&L1YNW>k(hKMe{y{0k(LJm)n^D;`*x(_G7^?du}J;x>CSf}EZ&K0dN zCAr7u-vRCa-V@_>JX7UPg6dPjt^O&Q0^1V+GeQxJv+P8fU){u<-aE98*@=6nTRAor zWQe{LUsZzkIZ&=OymA`s+1zY* zT&IghL$dW=Cp#9d#g*N@LYqjdhJvOL#?tA`s7EKY;(g!3l>Mb8&L-UF_Nl>ie788pb?fo9}T(gKhp9itb22=hwT zPA%hug_EVrck^xt?FN^C8(2UeA%L-%p`>HP0BIPyXZtx=+p})hV9if+3vds==%AtX z>>mj#=@+7uWBpanYc_ za0bZGF5h!JJbvFz%(T&Jv_T0b!=@d(iz@lP`t?jz=m$LL$8D?24MksNVwMwiCOta} z`=5MXH||}!B1_mU44eXQIX5OOJuRgjilOrX@yItqRr}RO1-rQ&xMW26)ieuP*X0H3 z>I##xYQ@J@XIYau`!Ygopdm2jnVM)m7W=rG$RBNGB!LHF#3k9BUn5R_?h(e-R?21m zCLzbPY|A(bnt>z??4s_VG4o-e>sm0NLIqtx^!V;Ga&c9gp}=gl9N|9Kfq7$GpgZQS zQy9%G2BGPh3004Lj)0nHZ-z-R$P&!jR9Iz%O6+mryBiItFt8dXLv%tT{=0 zJ+FRj@A$6zya4t%9mM8M&8g@-@^Vm9osP~cAPM715D5Y+AxP*NiLx+82Op({bpzuW z$LZbKH*C~ibJ3JI@TA|)RdQh*nDgJY(!viMU}iJh9zojWrr2iQ2+%qMKHx(c zgmuRB?1|#p8Qb3|l0Q!^a3n4)XUN9#q#6ROM*4mS`O0rw6xEg_%$%4OTLsjNW*5!3 z+wgiGlI$6OMy~V2cmcz14ENeFBNf3YgmTSgG*rQOR(xaTAjf9^6VCBI8nrYSRbYJj zst`pG8ruWJqIO~?7`lHBNn)lPv(TcY;-!S5drtVj-v#Spo%$=T^=RyD48W@8iX;ck z0>0D+fHB9LKFuGCgZFRp*L6helMAqItGObIm!`{k&~UkVqiA| z=71*{aRap&uJzBpu+t%}T2MAT0do|%-RyOnpuqY&zKu+4ar(1)h=gDR9P8;LO;I6A zBK&A^y~v-2_CS0@KL&*r<3-<>pKNQ1ZG{Q&G;_0 zFWl-B(TcpwJb_^wfrV*}^_B`$FB#w4(zg(ChSI_vl!l@_OYaf8gLNrfy~BA)+usxI z!lu^qteD#VR@-$@IUU(Y%TGVSr0OEt0qeJN^3-ql4Eg@4@g!E2AZj49aXx9d%{H?2 z^_y3IY7SFEKJ1PAp28jv`Rkj|U8pL1Y(}xLt+8P3sIw0TXB{Nn;;B#kJO`u{){#B= zX9Cc}GQ)Kqeky|nj*l*M4?9F?U_tk z5d1J%5t*Iak5gt~mxS=Zoj#7*xo`?DzzyU=$q7Z~1I{EI2)qGwMFyVTZ~uaX;^8^xsA$Ya z;YLUV82D);efX$X z*k+tGOHxTzfc0c^0v4HCuiB-o5|aNwMA2og9xvHMM9du|8d0`s-VG z%BU4w{@`2H)^8Z;b9eV=q<~2^r}F@%;w1Ic59q@ZL-?Lj>BHA zxOlp`GMyYUi*Y**N~Rcj&+7P99&hhE+4VaPzB+BD|C`cY;F!#b8&(p zOvxa`1|3t)J!B&r$RN=yJ^|X9MF+(9kd~t+6~554=RJ7RKVS9=qKo1v9jdMW|Y zLGsbq(4d*n84{~qxDGfqV%{5~j-Wa~hrYDB@=!UDna0AVaBm0e1LXPiW{KS;h04(B)lq_8Zb^bFAqe;aZX)!5<5AdcTR)~;>F1`{%bl~Rai78uH`e{FB`UWDa*#k2H2~a&8Y}CB1Fdx& z)@Id=-5fJ5Vgc0#LNuYAXA0%j3ib~ESceUqX6~dAET51$9us%?t{j*w^5*^Y2MBHa z^C$x5D9*x*mCCLh=&z_Yg_~_bc`=9M662ommYMY2X55^-z=I$TozQ+&yU3AAdF&W9(Qc+hcIpdzlX34 zHjeZuzo3u09&Z|}$V}4Zcue%cHX4Z|&`k^JbC5S=!=9DiIWW8H5G@Luyw&VW=oc3N z9zoe5aZ4xq8PW!iEP;nsp+xoL>@t{UNv{{AdK?Q4Zcsr23j?$%EtsWcCE&!3D9hn$ zz{ZhUVhT%(7}0ACbg@=RmWi@V^!gM=JJ&eQ>H2|~-6^M}IBVDUK+eaT>a`94Y7V}W z_uchXRaI3`Y!wya;FBi@W$+!t|!o=I6ZYpnXI9KctfJgWmW&tsAzk^l9Q0P+zR9 zsM8iI%rbaohLFb6WrQ03-Q}T-Z@$dK%l@a6V{NP;pdz5Z=}ZrzvtRVYG~a1KnuD*_ zcGUH{%38>TF@}#qXoEm#Xw1B%9%2wKAP69keQpFR^UNu zi-we-41|)x!or1Fx*>Brk)><`V$Wld!s0ie<|Etj%WQT%loqtyS;ht3{-UN0>h+8? zCtCmsV1T$T#c-t9AzVthS3v>RAbOilCTS5c%_=Fh0;h0&Bpeu z1qcckm$t`7gQ3=z9PWddrIlJ#?en&V=3AYB$*|LiJwxM0SoJY!>V=d^UgPT3fa>-B zjUS7$^F390C)cftE&+p%y|hwSjm5~E+&XHIJVylvm^IpiS1mIQeD$V?afn&0B!HEL zYRMYXqgQC8paSNcg1vE}FBZ-6kaU4rg zuC{D%hHxM@dA_?c&{?oHTOqIsQHyxHP+_e@Im4+0koxZb&+YbruQ}pMiXW>=hFM}9 z5cz!`KX-yyF?oa|WFZ`FplZ*g-~x44Zcfd`vFg4>T&_q?}D^7C1UB(ej` zE=NR~U}s+YI8{PzCXnmfq7df)xFn;cHwMHqeJ>h+C3#V}IUG=@Tr#EDw74y5nXzX` z%^C5d-e9~CC~#FM2<_d1N!AU!>UxtdhxXa+^|RZ>#U7AIuw*G1*BBa8Xp4eCQL!{m z2^(`9Uok73<2lHAKOfF;POar)s+T`GBrgm+Ch%70P-9SjNxpd?^acm<*`Y*aJW43s zswAU8Nd<*`OycRU^&a!UVa6e4rlu3_+_H?+B{m817+l42nkys%8V0? z^t@MJ#LsQFykB83jr;_eCN}LsE}jXxW=B-?9aVW;mks7IG4T6acb)xit4)G~4+CR} zbvDT~$!tKJ(L)LZ*H80cqif9NYz-wHeMpCD>>XPTqbANR!&I@s2CJXA-P_a%w}lA$ z4N0YALuV_=Yd3cL{%TbR@!1!4wVQeDE?vbef$_yWz-#lQVBlDPWBQj8;z1z@9NVi9 zE zRd%HE>{D?lH4Z+4H5;P~qBZ1>*xwMio%uc|&UD-`sW>L?DJ>P_D}@C>4{`y?6r2)_ zg3F~|d|LyEOUFQB<(vNIA>ptaTo^GzTw!vnEp5vyesQ$*bk{Q0YA{O#E7gT;R-JZC z?sqIMorY0UCiP8L6xpjau;T;hkDJf4h9j&x_Yd*u5H;@ARD0p)IfKM)pQpqC;@g=Y z4u4hh75{Qrh|8bYPwr&jj@nUpa51I$v-9mW9ams8)9b2tl`fYDlw-8ejHpD9gdN@B z)=0Wl3a!ONmWvHZbuFC7Ps|BqGGW`kiq6^Cj9`!f z${7z`4j;wb0^U2bt*8Tx7WM-8GVdv;7#Ke{S9@erGYfY2+Os^&vZ>#t}zmFr+;lTx*#)AfXzLKRm1k$4I z6)16)SXjNt*#@qdKpOC;;=rJas(vuroC4&;QrgUNSX)jrEpk!6iH6DN9LFH2*7(hy z6O%cWD%z$%H&?^xMY4TOx$(?lsRd|=RGmJYXV>wIK_K{6%y`X{osB-k zNj13!geqU~HYLhUN_9DPG7XKIEYOGt=}T%Asi83-SbAl6f%PG~;KlUV9p&JTx&VsH zjIpS7sjVVuACilP;+k+drSM&Wu0E?cQ(oI5o(i&&OYlV7K%!DBWbkZnLS2UEfO;--Lrq7IzjG=zgYDdx|ceD=`h4(<=gHXtZq5fplC= ze5V6ZR-D}iIHS|pVYjMgHtTm7MOMU+IVstXry7fGOnzJla8O}3n4YhRfE|$6P;!F) z2N;5Mw%7tXl$mjBYOnn{EytRw;x7i0<9R~pIz$H$H@dN)2;LI|E=UY>s6cfECTZqC zI;gf%arVzl7Fb+@+!#k{zpDUoOViCjW%iNgiZ;!2T$pljC-e; z5Fv#RBZvA`Q|~B0xbz6b5EoRoFgQ8);*`U$<kZ{KjsunUKlouknH)XO#;-brxmdzIP-Jwx%)dmn6#pc6^gK!Op$2}EP zEs*tctShLJBE`SR(gvTmg}Bo7`eetYl@`Vnj9`*xBk;Y~v%jT{qAa#e-qCY2?e=~P zz$FPvANKOgB$R-clqp2e!IiRuMr_vDuWd!5KospZrQ+?)q5`3t;Jk&c)N2qAbk)=5 zNVUp&L=p*Uyn&k*#a`Ulz6@k{)e)CQL$94+Ta>b9 zUkW?ThMWqGr2(MN8K!El$EDHxDgr}(w!rQfYSo;euOkm%v?^QOP)2w>j`snK&4W2i zNLoBB3#}VXhX^xn27Thy%mv4mU)tr-Uap=}?gE21UamPQ=%$3GccwpP28tWDMy(#_+gP`AKq z{7+OD&*O<7tgU5!w`;adSscQ0o9;Xfy2iKBX`7aB-0QqXX6`I^yg$!pBVV)d+WGx| zma_lq&g3-Iy(zH4c6M>uTwPadPigpWw{f}t{{pF>rCx@AuCL1%nCHm&={pQQllkl3 z8B20=+Pto}qwa>%|3+IGe&$o2o^u)hs=C)U&HAN1qV)ciH~V$g?PB4^?SG%gq4h=C zZT$OJBin$v-)=TPqd3pC3Ejm+^gjy52HC}f(BANwJd~ad`bYciRvULEBBbh(ZgRbw ztOFRg-)}FG-q}^Hl^r8A#&x<^Yz3`4M7^`?*6&@MjXOuh{^Dh@f8PJEb;f&p)xPB4 z`*43}v7NbMc+WB4kDCbdUd=Hfe*2#;*^YEhCuv@IF{#w0&KXXxYL0dRzh7}b&}q43 z)n(n#E(xwkqBV!j=$%`EV7 z*H(^q_Pb1f4_p7gek*~!=Hb^dsQ$^K%#FsFo7~?G-|lVDowPUr$BZqEVIJ5iX@w!e z2&8WGP~9x#y;Qv%>T1uk61~Ean1kR8bH#-Iy89~$WCn_kY3n4u)M@i9i4h+Yi^U8G&rvycU#W}<)P<^gui#9FHDS(|keukITzHlFa zuLA??mOv7K#x>az#kX^`i*tf>ZkH6#o%V<)bTpI=7#beM=R)A=o*Fx^7JWV5rY-#3 zL+bw3JH3utm0h;NanMQkfcs^LkUqg)0R%c&z_tc7;NE4>w7j;uEgHF!X&zMBG)+Wul`ADm)Ei|QlBF2hDFw!{M$D4YbM(8POW%ZN`$4ZWfz!*D z2-a9E6i;yGQc-#Sl9~ORwo1a8n>nE>Dr1jqkES2GZCsJaN*oI%xcTBR~0W>8B88bygM3X6z6Cn)I=`0Vn=wl9+ z5;^%Oxj)5L?wUryyhzeAY`vXLDDrvOceVbY!%dVgwkNIE?~Q(7Gl0V@RUUv!v=q4d2MG&yXTDN^moR_%PB>u?zvXjVXy+KYwH>bU zBm-37WYH`1l^gCVwraG8mvCB3de8r8Z?9NKNwSy(V;eZ{{^P9fE0e?YJ$LruEA~SO zY6a?5K1uM6iwB%P5f+}(X0-V4^132bGe$evhmVylf20j*>gmHRUl}qpM zX_c8wZLzfseOaDyyTW^{2n|p=hLkqIV8AFb1|LKD>sbLwmp~0!tpfK*>r4~1R{D5Z zhc;Iv=YaEc!f?ZRv9N=a848W^- zO2buv*8M@Lk)8otMiU@Jq^(4b)+qxIC2yVa_S&8InO#>^ZE~{7;f=i*fYr?#7{=Mc zgltUUHJGjdjuPrwtCZoXEeyz`S2@mAQAnvJKyqNq&j?)t5dnefMuRyX95no2JJU=! z!^z#k712v~UJ9C}D56>xevwmCsBSrTT|X8hh(-!#TV@nITgG683O;6p@*v zgwE2A@~cKV(VzyBWC{vpLaM}oY-w@2V7UW({WO*ag*HC#cNh0mY5*p-M=8NH2Ad+0 zT@9E6APq2LnfmLdzOJ0XEo=>;vc`yXA)1Y>vvtQNQ`l5~tgo{499z}_=b@YiuB5Kg zp;p9o!p5T6EX<`WrXh{Dpfe!7u_LOGE$@4nBv6cs4GEmBn@(a#@T1}d;rL`Eu#s=;Et-jFQlIKIsC9m8(YPuGjRJ}#)T2>F}) zE%mZg(VE3s5i~1VE0FcyZQ$0*iix{XVBg25{0|;4;BeNoLkd|G3<}G0>XSs8fqvY; zxgS?IXTjPB{TWRD#|#EKH%UP-ETZ0=`}pntYd4$f^K0%>kKzb6ZkDQuWf{bS&Q?>9 z$)P0;6;wn(S3C(OrmbYA*lSZpH4`u#`Y&33w8Q&ebUx(awM&o=03cjwfm_?{E}U%# zV`a!jxda?($4`=Jf*TV6XbNHtj@Vt;G%c8HYMv^l`EKetK*KiSNnjL%1`Rgp4nqG0 z6q8dHL7T}O(S}`ARFR3#amIyQV+2>fl5Rs>2O=dTT49+)1uTjnYuWg}<>w9;QN$v> zV{eHy#=233B8j&GAcjFVsoTWzB}|^;f&x^yskoS>3w;}2j_oLzgWt7R1`;?XUeu^s zZO!gr*M$Sk++~j@Lv(>Y6$hn(vP?#ZQ#o9O5FnvK7&N+0d}9^R%IkB16&)>PlyV|p zq6Q$^#t@${Jh4_8;k-x`pj2Z%a}{H0Qrl}~`BRUuknRH@uwbxhGisgynuJ=+eN)n8 zwx1GmT$JMleFbLm-`+*`1Pl(bmAqEDmK3ZZB{&SRM)HVHZtE^N%XIjRC@0Chf*%Ta zx^t!P5ZiFgxYOT_6xBsFJ9{ab0R|Wn1|wS2CYIZ>k>@>AM@8KQzK= zZdiDXIP1g)P5s=cY#2Aw_+H-{W%`)ou91C*L4FQ{K4Gc>k+q+8^m!e1C*$pyQ1*Wt z9G@ER@7#UJ1Tqcf9VQt@@AzjFB<8AmB~?+ZKj&ZO@BDw{9^qMI%m^ z%$p6{L2jDLgM^L%Z4u1|YUV=Q7+n>JI`Ar_bw+nK6kS+Lt*|)8A=@Jjp++^-1K)ES z$!(3D22Xj)hl}eXnOr9MGS_=y0cBI&wI#9-jKQx19H7wB5hD1Q2<7ficoB+G7Z>P zR?Liv&`IXrH4f~kYe2NHfZywBg%Yi|So1lC8Gyjsv%836mV)qGf-kE|wMbq?+T?(& zz#W1D6z^f2bMwsCZ2Qx;qM3H5b18dk3Gv(tCX%FW*7m{9^%N(=(S6qMQ;09|U-2Iz_u&z*`hb`gaUK6G&=>@hIzPJ~g1)si&3 z05!;uL*R#IY<1j25v>h!+2ZdI0&ACg^~~X8V?c_&f zyr(3zGIjbIG7oSD*kJ_s${m!DJM|%CGe%uCD=el8BxakbNY5E?p_G(qWN3;Cii!$m zaKs|faFH#+=79C^%yi6BZ81hKMJOUF#S%KOppLDIiV(;e7@KXe zjBTcDUodA!3bT8SJ0DjwI}@nePl;f*)tVXgw#cQeu@OZi-%5WuNO}t5)1^t(&kbv- zkuYLVqL(U#1w|tPbghgafj}eo3Q>bJD->nGQQY@tedqsVY29Gc-flRZe%o!V2U^kT z+*|(Q7Z}YV0&v(bHu20|Tkbi7!dR=fWpKqB5*ZR}!^8>_FZGG{bjWax*U%ex7vLS= zS1tkXw}oAj0|^Mp#t0Fgkxk}c-Sbvrlq{BXdx|TX4_uQWo9*!$9$!MWzH3Yrwk&40 z%I>hPY8ogV*~X`PNBM`~ndKi3{hlZ6k}L%TMS_Y!Ac(9{R8nosJ@4{${Z_uZQX(rA zVxlV%7AmN*SgH(FRamizA}kSt#fY(Dj97rE#YGfV7^sTHj8qmQ6%kbwK@>q^sUP~p*c=Npu7}UeQcdM=Ugg8p-v?hjU7AURp$4rNU%9kC~}dfZ4#N3Fk_I- z#r@hn!#S!cWAtRv_xWGFDiWohfwvq+_ENma9sAE+qPjhE!+IXyVuA{>i{ULph@PLH zePj5>#86PE_Fa(Yxa_(adHdS^e1)I?wNODqcT;1ItRVGA0U)m4W(GZ`8Wocu&i9YU zJSL&zNzuagABt6B*Hu8-@eP-Ge|mRsPg3ilT`tWMJLeN|8|T58PghColbhe&`RN0l z&J;f**6I+?utKn&CP_UMFyNkMLWl^+0+7pKqQ!ur601oCAdk7VT(tp+rKLs{mHF%L ze5z_iSh0!in*P6-Bq}IEA}mm0`&L4-A8J1@-sr`T2RHd9#+U2ZRRoVvQ`TVRnu*lc zAPY@_ltby6L%C*x6@!&EfeT=+=NVA0=Ou6&6bhSqs`;BmP0M(8@^f55qtIiNdN9~f zNccYmoLjqT4p(@tE9#4NlnEM~Sb~WELPLIBsq?+CWRD*Rtao*MfQ{3LG+&mi%IrCe zo}ca=ib+kz)nKR?f7T_C_Ctn!0*bP%vVp68)96m?^M78jPkG9^!FSxEy^^B-pRTKl z;nd!W>?tOguE(8$%=6#*U^x=cSnFvVrk?~L8gr-vhm;gupw_;TgkVydht8>sXN}0> z)b0Kr{W3+0dx>FCL}D^>Z_rY(5k@MaMKmB}p)r*)2O2H3u@Z8Gaq$RkjZ)t5AfcRZ zT|r0i)lzKubCmTq!h=Na84`97T_r(Qv}PqFiqn>Vqc&V`#ZztR2$tf)vV=WXs}k9W zy|E zD1FmO2*`Zus5VX{VKvb-YlgC@IvE9A=3gxn44NRR&B$pfKQiDX;{*_cmd3I|n9y;4 z1OchAh1ooJR+a?~P}QMmtarY0O$weajP!NDwiq$amSOL{rk<9mx_?Q`u(Hu;iU=Tx zHMM|N)f;N3MbE_7;3ktx>D(2HL={*mAkgv(7IwCB!jY`j;^x6K!`oJtsjIe>ULT*F zl!+1A*NGtpD=Ldn}3ouU;Cb8^R&kCU6En!W3xWcnm`zNS-646-97`rex@Ddba<$$f7JJBO3;}pWQ zHUQlEA7SQV^qTYYj{$Gpju46}UZ5+YkaqfS@p-=U`KOHXX`LW7?2-p{BWgmSm@%l9 zAyEUPCqMJ?ui-RGq>Z~Yzmha>Ul4b$`f5)%KptXRjEZG#c7$o%o3(1>ry~BafRY-f z2zhkK@SVK5lGQq%zcQUmo1h>wq7BY-3)F4VbQ|E$lI+)=<+jEcKgfTP?mPH*KU-&u^QwsfIns z+wZWoMfw7uV)h@J(KdsQYL6N-1tU?ui(ItnCLPYM9^Q_YU}(H+SFJ3vPu0&nk}tm) zA>-d?QoY}8mpfh>m~C)L5xUhQc}9qk9%K~t-N3Bl>&#x)Stvxb+*f<)8S7u!hG3mQ9Kd`6a{wgGM01X z2Gtb*Rsp4VHYK{5OOKqY5RgRTtV`8E_bzs}^Ib+Jm~clXWXuYk$IbkU{m3XpWD+0= z86dC_NH9n&jAR(d!63#lA|R|m5k*mLv5oGc8e@BMFqv!O!Loj4Vjm=~YO%~ryxldI zc}s}zn%iT93hNddMP%Xe+7FwFK4i^`wYDt=`Z3@%p+CPWt?E`cmMs zt-6B7-%ZoAn@52?%eQW_K}}cW7>=hYMN(Lj6@4DSp~JQRW99Cd?fANm4RP-LH$cW>)CEna!K;-_E4nVLl-Hh0?>EJz-h;Y=(!60rhYblqem@ z5|cp2Dj?-Xg7n(5LVX|Tehclj`iA{HN*9lhx}c%5VLva9T1%fyl$C zV*&*`$hGUJUdDwoMa3NomPesIFGEcoL}s?OhBhgscsMl&amDg7++l|5QQt+-n^8B9 zeQ*z|p+5HuSd0Y%g|-z2kXo#%8e;Djcy?Pghj+V}6lIsgZI$LJTj#Q*#*iz%b^MT` zVOnJ@M@YhKF$C&ocf@&_6tol>HDKRoV^Kv$Z%-qk;kP-4Wxn59MR>4&2%R}32aTQY z4coKHpG8!qUomEhw=-H{~pu)?wNi;VP;T2T;P|~WXhK{+>WGbZ^S9#n!NAQq1H@SOG+pMb7+)@HTDk<5&(?k*~9LlSxatLR$ zm~znW?uzae{1`_k->jI2mYQ{msVexOm@wy_Al9Yn-(_MTG=`=#?NKERoQZRj_)hfj z{WN`I+@Ay-sv`-v0DjY%Q{ z>bk@M2l+qdAc+s&7vc7$=Kaf-~zHKQ{91IFO0n;Z~RnMqt4cXyk`-RYWf}(HN9& z{Pe%DwP?-h!dpfi_nLJc2&~b@P48`d_2B{v`5M~Z#xL=KafG`VVYK@q`!eo`^!!F> zWf-rn%{R5{s1x@GCd+g+LUSroN>d%Q*MD#PnLZ;z|rWDE}M~cReH= zRxuA{5TUl<91r`>21-4~#INt%7w5LX$H74k7qZtlL-lIw_}5oue|n{4*s#5dIIX# zIX!GyBu44MXks9;M~wX8&($aR993jNfIY zo#rijJ7=0cKUMB(+qw&p2WR)_ z2K-1q9}Ua~aAb0i8$HL+mWXas&3V~*+Z8{Xe_fOjrn)t$qFE}@J@#D*ORECpQ%C0A zeT|e|o!nfrFmmJ?HyD-}UG!#Z3T19+u+sr_%Tca0)57dv7V9XN>l%z4N(S`X6f^2l z30Xo~P&7=G=k2Gr1d6C8@bLd99)$EIYf`_haGu2e2sA-cV~atgP*dA}FZT4m?a*&_ zy}$eY-ub|Q(j*6*6(U`TrE4oy%V(0ofPrQ*#LFrZnc_oqq2(nMqWR_K_kUwS0UxQ+ zKT@D4*@Mzn>Ux%Dk%26EGQGzP3|f_4qFq${YYVR7LHsKaufG0?YcgUugRKQi-?Fmj z_kXjG={&E@$qp3f`N$%|`SI9LA%)f-5zb2kmufRsdY2!izpKD;Z!^r@B_R6bVDwO-PY#Q=j6?>g(}ZV3IbU3D=%`t<~G? zo#9tT9=O)dygl{_Zx(g|wCcMwryrMwoZW^X@P<2t$q3YY>XdaICJ$HPw`nn4U!$+~ z+doV5&_LNBG90X~G7+Q&6f!q5QaN`xKjvHKAD6_<*R?yxZsj$R!1-w4oa#SK1OaM_nq7YIaVpEOfQ(PCs(Dr~B2tLF`il_tf-t&HcxD9Zu4=qloXf zw?t!petc)r_fAJTB2NXdlD1^GpFWFNVJL8ML637AQV23UEr)ZVaW^doiCx4Ai}2CH z$eQ}Cc*hHvr28DdRCDldLoksK)9z`S=p1ckt#fAkovPHP`!GJfBVNktpXJ7O>R-j{ zwM>8Y{@5(@tC&Sd)3E8#Xh)gT;hp;}U41R?@D`yVAl>QZ(S_mmdN;6{~h4sz;YeT`WYR0_k~s{V4m!9z$sIro1Mf(q<&F3|k@s)P4! zr9$Y0!JU3Z7^uwIaQfypH&$jJB{i1$j!Lwc=r}nDLK2{8j5{lfbZvFq7a_Cw>ELvl z4hLa-!R)wi=h)KN>uw`sv)ODfHiLL6j0?-#LHJd`p9gt=qIVG8b<72&_AiD6F9w5P zGh91CSIG;E!6lZK6@a}FFy|du@m}`p+#-Y%+%=59};sASR|D4x*xqCl*r5)4c z?K_$-v%&%0AMvD%r^;6SU1&Uo6Siy;e)D@q9m#tGtg@N^Upl7snnoL9WhUUJT(-xbYoPggDTcc2KpPR z2u!eJeR10gSjzBkTkwOC`?_I=nHc;7Z#Ryud$_h(rAD=|`_5rQ2um>{i#5TPqWk6W zs4hj^lRGB*<@DCNPLqoDc|Mz?)98AhehwzDx4{+375;f?C0X!7o>Of^v#< ztv;i1e=YsIZ{2m-xE-c=Avsj`W$h2~Rg%8p@%=TdY~r#EtQ!~$o{`mO9b<*aNi&m~ z%~`83Zzy6}l!EVpQLS%eZkD!YoKNVQrT;+-zFgR7~kJR*d)pX@yd@edw zBJDM6*1DImz)I#Y)vfb9{#MTJVAHUam5{F8?Go)U=|ThvO^ywv?#mkw5Dfwpsnq6P zEke@|6E;Sf$+beuTkJJh*=n@&ihEkI85wS=?%>gItH{bPK*xWn`K#X;+)~fMlDQNgNUUjw}ODS<%uF&6QO}yV$+M0ueeb?_?)iUB*k|eb2$IvDQ$sX02^E ziy$oD6?@O$*6bvjnVMM@THQxMRII$Tc<1o%2k}y0n-E!fEUyaz}}iud~pvk5?apTGG7lVdo%^){mgl?G-sUs%vps# z@)7%%D0=6Qs6uzD=QDchW;E>J=hkYy#-gTEXa#)R{{PBrco7%g%s7}qSdXplccCJ_ zBGp&%X!}|^=Q20X7aPOBrHuQ2G4%8p1#b^^saU&_0u9g+hJdRE-`5tYNc zh{m@ZR%9UGG>?U~*395&I29YgDLL=sd6YpzM-6L;mXCgDE&^1vfDgRTzT+99K8{J- z6Vv>z%quml>0JQcTw@P79{N}3F*S=m48v7KYLOi6R%l{sS>-4VXHi`{9KD{O0eI6K z)MT3-9=GaHgH1cGF|TqopAZ^Y%?G(R-?r1|I z5~YcCnllbU|4KEwk~Z3H*D0(2J3+p!|A8xh$~oqWcV^D%kFQ#H!*KR(_ff#RizEk| zU~2jJ4+VjWdJs?>(DPBEpo2<-YQj3^8GLS&7jgLOMsaXUN+t;Z+&x}ys`1oj??TdH zDk4k!el}Rjx;${&YoN4U;88orR>DC~fL&-9HbQP{CS~n&&jBj_Of!xA?2|Saws>b6 z!Gjw-i6+l|K)MER0JRa?$UtS}Got|?jhVz&XU&mP z2@Wxt4%MjDfqdQu0gI8`k%ktck81NSy*!FAKsaSd{2eQl6u5W?*=U$ZJ5L2C1Q|kd zOT9{#zshs)M4=!t6gk=IAVg5os;X@wU73^VQV!8lB}K!CgfGJtpce)r3Zi?|$Grk5 znq1Ih7!|sQF;@P{DAlhpT&f(MPOVzBXSyb(wi4qku8ld66_%)qt)f_xV0_0tBoaRT z+il;wIR4Y}XpkwhDVeSsXT3G2*p%P|Gi{zLR9BO&y==HLIX8+&5B)dUl} z|9ym%w=Fn~?)QmBRz4G^#05TW=$dz8r0+#EN~_|dwTW&x!;HsFB`_*%$WY=RGXItz zr88f5ai`RpJDyv6@9pT7Y_{HQf7GXc@T|E1xDR`VZ<}iG_mP~oW+8Ig>TAwQU&UCv0`Hfi2!pmYuBd zD58}}B&f>aX`pYnT1WT(E?rm8Hrcf|!f6K)=#bq*#1GId#6iR38$j7=?DUMgJ$Y7< zsY|(O5LW*~pi|#QEkP>f>%AjqE<5OCHXIK&5wX8rBzBq$p9I`UkQNHu_VV!T`Yg;C zA=@h6F#BbSWcJZ2YPsFE=e5wWT)3|9x1Z-sRXX#5^=vX%_vs4-)}|Z;(urisz|J{dZdo+ODif6Ubyc#+&t{DPWf|Q&FuB1!q^Po&9wzhjr-9A7i6GXEZat- z;Sx2&QtbxZG2)(w`XjPDCL#eN10e)ArdeYV7M2carFnVf5`i-WpTKHlr_ft9?srZn zYgn?wZ)o0_Ef}v1&}qL-y$>!B45q24!Fng6{LO|(Bc#+FQ?@11w-L4w#Iy>^fW_cH z)B$3`%j@B&Q-KdcQvWhcOqQ zkJadBr8&BAdAorRi?%vI>Vgm*d;b%Cr9%?ECbJD*!xJxs)b}F|_C~)owW~Iso41-N zy=gv>RRL+DWdREVM3`DMd7TFjDixVr?2p~`f9LdG^dI}N{k`o?j$`XAedE*YuVgFE z&K%gWkWaB)H|RWmZowA-Qp5lWmHdL)CaYVuahZPvn7-}?E}K^)E(s4h$B(cZU7G`D zhs9G+KbX#Uhv+v9pxk{E3_kC#gs-;xT1fk=dRzd;_vk-|3yickx9%e&LWhGiv%$d2 zDGEW3f8(fUj4;5I#@p~%TRK;C&P`zH(e}~vcP^z2PSdpB!Zy^VLuf_2sEJlG{WmWd z3<<6*(^C(V8>X#awoOrO0-ZP#LAig^W-)X@y1i}9aOoty7 z5--|On}~j3MCYdCvt`ox`3;8gaj#KiVev9H4cut*YA+^ysM%~VjumSOP-%p<_md&Y zgE*}R6VBRp+asb1DH~^(PD9Io)$O@Gxg6cUyMIHpVtf7#ZsT_a+;0|fy&EZ?dCd09 zs~ZwA>s~G(_XJ8@tnqtAKDM?Osj+IS{AOtPwT%rh9(~vYRaaaz6@X|Hp#$ODP-ACb zUeqJM7Ctkq>ip>vB2XYqqu`{7AXZq~uEG@=yuN)UwqqA1J&Svr!ELq^)|F;auFtpv zNYrUZ&TXSfr&TN_vf8ZAGIdoG4w<2j$#-SE%oN@YvF=o>{G*Hf@_N1%+E2T8)nk}qiCT4x=q?QIk)R@iX z$@!a3Teh%JI`{`w6y8PR#drAVCQnJ&oS#!HLZ7pMJ7Px~pyMW+Nx9h$C;yNtUOPNy zbtV^~IT4f6X5IPcO+Z&@AnlkN_v`YF0VPJxKEp?syYjPUU_-}ePsBmP^BUP2V}9$Z z{w9C=f1bbh1+vh^zL&)EJ)U=x^fXq4jnRM(e6B@{AR$)zi?lb*YjDyXUlXcO9? z@r#^_T2LX|-pYNAED~;d#`pJ}e@};+3c-y~HXs@3-=T?w*1tnV%n=vyZ7%TxOGd ztZeWJ&uIp8N=O9mpN*M+4uCXByOE%mvKWIC`tBe>vNDcr*#*F7p$-A;qxWHsG848L96c|ucSWs9I zK|un-uozfKu&}6rL;(T=ii|B#!h*uWfQ$vj#YL(dP*_-43XBB>U{F+8P*_|@sF83* zMMXfMfj~t>fTBg9R5&7`go=ubipZ#uKt+Rx7ZwaGD{*mfqN3u0;*1Q36%8Tj5I$ zU-r&Dha>X&=g`e`-5=`eY*K8C41$XG-)dwG8C52q2)esr1N>xeg6`9S=()6{Y#|8C zB>*D?YPtUsN`OJ#>~nNZX6H)@Ane#2P;?o4d_Jh0xY~I>Pd<+XJY77@8GA|SWUN(f z^<6Bwcw|@_8i0x15C;+vM$303q<8%mTvNE%{|fThg~4bJ`GNxrIuc7*F#$Yah^&G= zLH>U8=jdt_7%p$Kt_42>Dh%cu9v|W58TZzXd+E491wH=%Tg&B?fR^o;HZgMxVUemR z5)NI6RBd>@{Eb0E2M)~HpO@G6w*kV?%hiXNx0Z^I%T9=M5JmSsC!{RRYK!vnf;Eic z+5&c~wP)(up&C1s*H54^Xl9Du@4&T*O{b9R)f`$^w4tH_42?2SZJ5(<9a8$(^lw6O z$P&nGI{R%tiV2c$edN!VI#-1=fZ^nJjARsG2Y0T_CLhQEG8tOiaa#5WfB}F{IqCOU zkMQ@O3-^}!8x$WLpifupahYAZ-QIu%>3u7_Z1L{*l~09sOMj<%dxb8(dNY;G9@INf zG=0p{41wYLVE;Zk5Aq=!v4jG@2?3gberG0Bhzbvs8h=ga{}14Px$qqWQ$;F%<^-pf z@+@v|%vsng1p&e#PBHu*^ITUCq?aFQ=m8-e+CUZL0wRzFPP1IBG(aO&=?&0qgVG)l zTpQwS6v~_>h0z+b4=TdgnWcsvmumPuonQ_}>VOrl!vw%mz0VP4uVO+)AQ&KAMhHs} z76Onq{D)iCvW<>e9MdYm%hR-T&XsnP<~by4!e1B&1`IST70M~N9BG4%J3m*-=P5W& zbuMqvF79TIZ7FTN-&%%@fpwD{aLg>6aka0cwuCq#q!*ddjOVx?%hXTV^%Y$%a*?DA zjGZb#dk#yO<}Y@PI5{R%E4-9<+)Hy?b#AW2MK+YCzkPqF?EIvp^vl{U`+LMoLL0_# z4@imw{q5b52DcLr-26=Z^Ah2|GCP@0?{Z0Uzv6w%=oN$%7vh1oYL@uweykjT`JsAWrpy#|DQ(~iclTD!)LNPbZk7wl zEs=j*QS`2wh}H-B0$)w#7IMQZhKzn=(u&}(>nVms{|G8%Vd1(aII|!`J=eis2{;sp zgtvC`e$g!}r_X@!;DrIM;{SnagU$)T(X{VF+c$f-=PhgDU}nokrB%-66|#1`33R z5@bAzE)rB=opa*=`{pu?5P{3h7uDvw4fPF#StjE4q@NoL5=((J*+=E2I;{@zS2LGnj)8;1XGH$mna;VOc9(EMi^^ZNLwi$EXqDU1zzfUX>;#(C?c z@cADnSfleo4Y*xWDexME%0f4nz-iX05`d3g&N!#p##IV4-OTDcfG|jrO*mJE5}a5O}DNZ-4CPuzv=7 zPUC>gLMYA&1X#1!A|*!1{ax;mp!%hdm#M)o!V|sfjVrIT_A&4`Q+G+GI--$UG zx3pg}x#nhI8xsDabg}pPOm>GZ40;+GT^fi93V@gU;qIn-0Vlg{8|Dd@QE$XRp5#4y^Ny|nGI%Uvh`o;bof;c z`&HublfK&r$^bn;!oPSQdM_gOl?i_!08#o-Gz@}i$r342%)(Y}X zP@LE>W`te=AZLN)VVD4|3~n|s5p6MEB~B!08<_3Bz$JkhPQTdyEFd^W^|ZQ4kyF&L zSUm1@#k6|AhUe7e+XF)8$3avU2>-aZQrbd_{i78;3j74#UM7;l|mdi}s%c=~(Z19VM*`ex4+qXde7@cqh>i0CTv4 z6+kF3G>6;~aKuy+_zhkFHdYB?$0uj02vpgy2FyHT3y5`nl`T8^KADjWqaG_34N|k8 zNAcc;s-FqSgT(8|iUr5u8* zXe(n{TuGQB;7I@k5<+k%h`c`hkA?F7jt9(Mow}>RJzp9l=>qyLt)8H?SDa$U=>{=q z!ICJcU0DJ5{ZV7cU|6iAW>`4GnN7u4P|)1&+YZnW3QL$Jyu1o$?IXo+wSLmwxfVRt zZ<{{}OPenG^zLeh_`XJ*|M>8;i`OJqgeZt&m>>p(^W!`aGxiNC(9Q6vM`&_Kgrw+N zs^zX$_7f${B1fe6K8v*oHG5DKAW)xC_P^84QStxa7wRs8`Y9-#9}}VvqHG~&$n_T0 zX6DT=Zmqj}IQ7L`H({-}=wMTQ*!pfaozJefpi(Z+qWOHsB7rB=gpL0Qu45%P^I8y`J?5flHd8IpbR!iMk?x5@|5Crq!bgki2mcTFmPYt305j?>I4zZGnd-bum;tOTtg%NWeH;pcMp}j<5 zC6_EozIp?|F|K*GrF8ERAjH&CT~>$_xM&YY&=CG%xEyz_u6b7yikYF;&|L-vF6B%==<>kz; zT{Ph_FQ)+l-^T)QmpKPUQQKR~9V zq&G8#`1@ci>;CU|ZnM(oz$qes^5?cfXZE1kj|Ez8du2IDft{~^x}o;B8gy~_8DkHz zmUwo-OrKwr$cRQZkL%(Q2zW;VIuK0Cq$i{@dCGplnViyoFcliphG|2xuRvm`dwgM> za6Ij1AjED{t$s=+|1al|3SFDmL&Hs;6Sa#ZnH_;=vglk`>^B4u*^~qbb<~oO zwqMGK{zo(xZ2o(#y5QH$+Twl5)-)0gzz)ft*kH|{rUqpI95mt430r=RnOWzLZ_>R> zm&efvXn{uZHBI3+e^K2muZ`Fz*=0`6sAJ1lB!iz0};#Jg_=Cp z9S-^eq>H(2)q!-D$Np-*f>eB6j`wXl*oSb?y}Ft^9>;TQ`dweLcu1v8%|@i4!jpmh z_ZEI+f!^8M_a}`90|Ooj@g`e?7gwEPc*AOR6Nh%N1{NDvxT&W8ef)R8JqSa5kpqWH z3j9_ow1Oc&P(GA|AsBdY0D`ykusixoTxQ^^PjjS>heScNT3(L|BF|!BF`5zAkuZ}( z8odyWrdKJV)ZuX#rEoS@(_DkySDo1JtJCusvd7&}4)uU)&SB zf5nwaIOc>XEzFUU^OisC2kULU`Ltj;06_6h&LqXm&M>@pz|`|u)Q|%_-YJuJk@5ru zhKKp(>>Z zp2GoVOQiE4ql%1uYNuRa#~3n{lEy$x%AdJDybRLbr*)WO8=|af{UPFR7L$8#3Xf6Z z%Bm}8JB~sm!RzgO;v$?%Xw;zl1q04R9H4BKPbe>CYqI4qS8X1}qTU+{AwP%N z*S0c3LaGir|05|*2rIkMf#p72c;F{NZzT##kH~?uCM3)POJhNDC3;bl4m=iZA+yOG zaUhDmMjM%!r@T}B&jV7Uwe<9@6|q}WXbqqXrQY+gfv~a5*ga`l|EY^atLx|%Y%M%Wm0os$wI8wxV5M-gg4nOBzI z&4`(BrtTEGWO#DyJFaT))$7-5Li$xN{zbgmeI1U;Y@zF5;9mHXxJQ^M{VR$J%doVA zK&$`2Dqto|*&AHmI|L5TUW_4vIhO|m<)`~y`_UhLF|0@I`U_DflRaRGI}ogrB{U6C zx7)o~4JE;oKE8$LA%CYhA22vRxjZgCoPYW4e(&d$-TgFi25+MYAt{kPih03l%(FkW zvf8se8IpLCH3Hh0XMa@>mS-!aBOvtD%Dz$BQ3blF?JZuhBetTvdvWUsU#Q*F&(Hg{ zaxKkZ=Qw&)yFAbbD$Xb!L@N(S%MnFpby|>KjRBpRiB|l@ctuAlW!_>0HAmhi?{y z%9NNe@U{4r9_K!T#zrX@lkSO+1M(Yh6e z3=A~1`If`DVi)VoFl~tYH)K&goaJO{VK~eRqQu(^@62Oz`m&#K)_tJ-blS$ktzqLv zZ(@GXAW3nY91%Hl=L_@W=^_F?O9>s97Jz03a%N*iGL7xQrZGlzriT{4kitk4@qk4e zPoB3Q(yr~i3I#a%?e|nvfz<2(qrr`GAzBS_-F`UrZR|shi+5syXkjX56mbG-Ye@~N zg9f7ZZ-)~L^?+~@1mn!)oP84@ju{xxNvT6S6ewPw%6>7KxC4~|FNatd)Y6q)i6E8} zQ6#`SJ<0;jN0HZd&(!Kbg<+&rZj2^|<3UxK9}CRWnq~EI%p;k@kOx&vDk`Ux4Oje6 zP?lCJki;jQF7qMWE7t9;G7FYbO8J>CTCDF_Q5-E6rzbb!Ttpw&>wX>^zUmES0pYnu z$^@_}p-Lq%O?o)YZi@}cHPf$2R90S&EK3qtay9U@JY25ClEGt1J>EZ1B zelO_PuOH3Z+;_UhlbB`fc>&U-b7AVfZ&3jt3=VhZB2^6RX9t`Tm~Wt72myM8$4;h2 zR6LB3dJc3zGniA7Iao*s$>W9*AyQGm6e2>GQzpo4nA%ZM1aS;xhOH z@bzX2NlpRM^pX95%k+9SeSca=@Z(sDuAF?dU8ZrGdzkLTNa6pNy-rher$_!5VgcFn4T1c*>ktcqg}1g z=H9qiTGd|)ibZog3ppm@Q~!9LCum0WffU**19#aF5x-sD=@LsMMOwp-_Pj5RypBVn z=k_+X7M?-AMZQ+<3Rnro2~7rc;aLSjQN&SWlk;0*QaQ}o;nub8MDyNtQX$3ko}P0f zX3Dmg$=4J^c?6X#M()hsRFan4OIp?*Q}q2dt8BH=tHJm>zG|S4er9@l4?A2dgc4j~ zpX&>Y@7X9%)EmIm5-|yn2eiwlj&5mIAHAdfJuB<&tk>AtXh2>}3D|%Jg^$TNiN*56 zqw+AJ&}W^2o&)D|QuK_p8VwtgzchUJ%cRs}CFQXH)kTUdHD28 zRI+$qP6XMPP4`es)d9nyJT;u;!TDH)W^eF{-JKI-%d~=kIG?IP$t=Pw=@ETRC`o3X zRv`(sy?*o@x4&d8`kaV%seGau4n3xUoVLG*|9|>^GW~Dme?N(Fe1~b5X`{pz5~$)# zFcbOTnf4#CarvqEoZq$d;&?!aQj>5D*w8A9Lw9dnvFVX7j{^9V2S9Ff@FaQ3a6PYo z;9#rB!@a|Eiah6Me!Q2a%Z$d^7_6Pof*fs~xE*>B2(E90h1>kh4`n!)BMfPsGUaH& zkjG%Q9I}YFmI5^YhtniniDQaujm%`Z90*CE1ZBdk2(!fB_E(Heifg{CaQM0A4NO z2m+}sJ`3C=XinUd4II^_(yFChlO-&={h%stgG313*pLU@1uX3X1QFrA3ZAV5=u4m` z1O5hi34o&q@FamD0{JEdAYyhP7C>}@x`LJvAPmrTQ#)PwQV2zW@E{JRDF8~IG>Dbq z1d=R=uBr&hGGI5+P7gJM(WbJ+$*Xj*o(jblpltS#q$d%vW!3yUQ1#l#u?zh5IL9E#H zmoJ^$;~=R}%_e{(l2+Uzm2RKkY$*Ca&>iPX>vPSvmj|V0aj;t*JyCzwIQDeGTWnhXz`8B7?QH;;4_&Wv|0+Dnb!5;``7$q=3 z3onCer|y|VOzE!ZDTCkpbr6P1VKNDKEKS0pxa~;rwKz>iyK!JM!~fb)_y)-u3WA0f z!XY{W`gxe&Cq5jFw2a<#54`W1ey@cX`*U7nc(mNZM&)h=2UsB0MVp7L1v-T$s$h?L z!_~m$QU8@n09b(%32wy}FVUpOK)^QhXwmETcW%SqNMcX>C}X zGrmjW8D=`uwi_MbvO1{i7Mx8%cGrj<6g@}lY5M<=6A3Tk^(VOg+4wCF3mb#7)bFYw zYX?ov7)A#aNrA1LhMOr>5PabAOPgB?%HFf*@*YLd;yz)fG8aJGVh1yA3V zdaGXYZD~(K!byeK)oJs=(%je%UtPx`;xI{fzv6>*AJ2H;Hhm0=Euj64Py5&mjVdpe z^V9t??Sxb8Gq4hhVxaa&$3r28_Gt>Q5AyGKwTI6C@2lhQ>GgP9-QW28Kj+S(o5fBc zNwj`W-|16;q(m{a7$r(26(#T3Gzb^Ix#B0n?8I1?Y`ZHU5ON^OB3i(S3>0oZt*FwO zlbCf++_9Wv{V8UkcR8h&15*MZARr`?q#Cs#K)L|phwap9KX<+V5U-bI2-dB9lsDkU z6T18i(vx1YKQ{+|dc>}sH0FA3AG8a=K@Ja(z;`hCVLiXe4S~;EK(=iu2tYy7Kb=W@qe!kWNG&bO zT7gOhugbE{*3};7758_Wt76q&qn8^}!ooBSQ*A=cY;2ozZM2EJqdzXpVg^rifx!z4 z0Rd@kJ)Jff47-G8gn_-k`%q&{L}fT%C-A7LCYnDwdL^6frnHv277Zp((g5cB`Fnut z>ebk>Ze@jPDp*U4mjTs2-*XMkv6CK;@WMH8x!lP9pDGp=aIIvR2Zr&V_qF6R^VYpa zlIRdGgYst*&Dm3ni$+c`$XRLCgd5Tu&I?d@uJNyMVIyq^ajIR%iB+j!Ghtzr3bkbB zvssIDGi;zVfZDn4Xclg_;~2Q{6lkNMBtT2rQlgOV#JBXrvyQbYfy4~v z2oWRfl0h0XNAAgr)u>sn+20sXB_Rux{wNvqPdx!QkAo>Lp(Z7fB|!b&68dBrEwU;c zZp{TWKUIU7Hk9NAuw5uZMhXH{(0+_SiG>=@2M|0YI4eE)iV9$Cdwk!m^y}loB&A6g zg3a;-VRiZZwl-0`RPb|d#AHrrRGqGN}3^)cUjN|i(V?yL4Wd9;jTtqjT>%I*_JLSkVue? zFC~SEJ&#-cSbRP|SK0K2KKo-H{7sx#o3c>am5cRSy7;dt5_=1}!CoOeqQkXJim5L6 z)=XJuf4=A7Rh;Wf4FB8?n!VX%G@se0vh!HI;W4KHQfI8BO&6EM=4yEN^Mc%Z9rkWr-oPI&OMKyJA+yA z?0&vyLOH&W8`C9-w#6)z4tEUJ_IqY0=TpxrfJizBtF3=XtFxXpR@@5~zv+daByy5+ zH*kH1)OF#$33;k=hdG&HTas{gd8&+(muyTk6AzO1eiR+=lP=&g0Kv_|amotzCc?!2 zNQeSqj2cl<_V2vhaYRwaBUzq$T-*=_>;x5c1XQ+wMPi}`tPDUk7h6MeD}IbWch|(f z>#h{x-^b={hi+kfVg=ciw_L*0_dr8u37Qwl>43qraAI7#wx?`0Y?vd0)iL+{)1%+{ z3Z=2A$9nx-q)}gWcRB4?9Jh7u-Pk^pzVmI3WL6GQjt`af1)Xa*f0+(e zFqP6k&MjFApri^xE6hX%#EwOhO#8lXui;La;)QSx?Zm`HB*BbM&4mGtIBI%TL0Ec? z9*rTh1|FzNA;Uy}5_doakHUSrK;rYR{+StkD9K|Hy(^<_J{^7y9*6}AP&dlX^}(Qc zL7{S(c0Uh3$20G;1I+_t!TZYJMQGcsyIN1ja_fB?BH_G?yT9_H1XP&_1`vQ5@N>>^ zcQUa_o^S&yv-t}|Q0`R?X|2)AY*#9^QXFJFnnvaAv-H^m#nseWVAz?8Ykj7dn+pS= z!y|*a#2E2$7l~BywNVyIAv|L?Ip8nv+4)8WyGVgQN4NDwg{G08P|b}6f16NC!48)1 z4I6rtwfFfJw0iz>7lmfRh#gk|%`~uB%!b2RZ!*<`<0mTo4(=oM(QV@ao@gEP6(5^A zZk!EiY55s<_w~LHBU_yV7ELz61uPi@NJ>bnsTfAlq{nw33R=w65IbS#c^x3@T^Gw6 z(E(~?<$DbAozQB^IRp#a|C<23(&Ye5g)%SFe`ya#e1Ii}W=xTpx9a!0^rf)AO{Z2T znS-I)zg1YkG^aogmId;GOEZ4->!}*&i@t4Sc_T5m`WzJJ(cFIEiQt zQwZtxplF-E^0GEJ*JL(^SGV8S?t!1ru}^$}>$O{{X=C1&bbV?yv8nN3HC7(x5ss5D?NMJHfS( z0W=x6WzY2023+-I_k9*wzOjaBT^20R+cKs(LV`vY4E!^fimQN?!wsj2QC}Dje@!?%gNsE;GiOc`=1%rN zo=sh}x{f1uH=L3*dSdw%T+tv2kjs}S8iY%+6ryY?muz==3{lx2es5u{Xdj3Wr(t&W zT-QxtrnJOWc6p7y80_ny72$3M*K!{UF7nLhTb`rN67U=oP)98eDCH+|WqteYAvLcY zAXje_!wz~UPY|ZD%i-deP1*K?LXP|^#_F6YcKieXffgWXdTelzP@ztK)mW2*XXwG` zEUgUOKH95+>87m45I9IG+BmcuG zATME<+ZrN-yK`nmoJik2!gNML*0+)yG07Af5NqYF_`vyo}*faXc8!%)TUm7 zJ?(&@8o2BJk3`?Y!}Q-JLNyI6rXFFeVsT1sKanC397W&D@&_H8HztZR#%O$6Hf)9S zV`Wa}^pPScUiuvg9%< zh*+da=F;?dGHc8nt^N*ocyZ88+PaOo-Qeu140udD&7WA^Y?EM`mv0H=mLtIVOfKx) zqcW_X$@6wsi@@Z@4`ZWfamWG)j3$df_(FmzY7q_*0O}C({mn;_VjSrJ>9{J1K-=!Q zE{^>Ykc`R8+f7pZJKPn&HtzSb<^Os*r|E3ba{>3jw`emnrr#PV{2=%09ldPpCoFQ4 z&ez$bqM}-?*-6|H*;;vySUt&1-SL(4agfPwx=eGkO9`1AFTI^;I?Hh7zUs0AONJQ- zvp^u9fJ5lyc?}OF1AGsJKI}}x zhRyKA!^E$!al7*^5zxk@op)tkASsP|soSgoSl%DAjg?TQM2nS+kqWcjduZ~t^qH<- zcvg4W+J=NQ?$+pI<`Fu(+TaT|bPe0Fv@OVk4ED6~5{tu%>*f6gIdPj}7aRZ>!fPoc zCe@KV2Q-R?LSz`p%R8bJL4m}C!ZT12T4Iy?tS(T*+MlckO6XaLLt6sj6~;J}vJ7(h z8hvD9&>3hZM2ONYDH9Uo&nh*(Hz z#XUm^8%{GTLw$eIglPwJoE)kzeOvzZ>LM{NjQZ*twIex!ZkWQQK8BP5FDYWBBh@@S zADf3PWfdu;ZVLpuoYSZpSk1+vq8Q z`l(QrQTLWnn$cMdi91vfCLTHTB_<+?_gPT28ky2n7h|MSn$zhtg$wSrV8U3zo)1B_M=MIn%+m?N1i(A%y`tW2{>b{t33y-JxTp@->3hY5n&Dp56dOH7D&gRLeIYKnV`UUn z%8P@N>Mv-elvJ1n;;{kYS(#BvGLnRY1=uTuP#J@a*z^~Fp)JO ziU?tr0!^=f=h^nJwD|a+r&*kqLqVh!ujr>ZixsdNu>b)$oESUvcJ0Mo; zp&*h$$>o@masUNKdnjGBg3QWMi<=gn-<&dMfHj;+1`TZ>TsS4yl+fCM{;1+C6tHc4p^9;(2#zB;Vr99Six9*o)a+}8?PxLcR0f0ysa zuGmMsuX&mCgEOLE$LkFaG7?BSPTE>7f3EqyI0<{LKl9gHG*g77#1VT3halxEsKNmx zCCf9Kp7ZU8MtGfVKxc7UGDn0r5TUWSh(Yw>As7a0f;PA>^SG4@<%~k{!3kkLEw==K zgf+W3vs0VdB0{cb2ZU1r)6=Vr(L{mTn-#0Yn6?_A$ki6We~$=63&bF|)D+&cTy1hZ z9f%#iQJwMtzuL^BxXB2^E-Kq!jbwDDkkcOLE=NVqhB3NfuWIuXbuu2aSt^k*`8PvHvg^AHJFFEQAhH6G^J;BHsnyLYVyal3;9t z&E|8G3X{>8Z7|&z>+G~hW=-5&kprWOY49si+gm`9ku3gC$4?{qIl9a@WV8EvXx8&J z$}h&>!-vY?NDL+=d8ir#<1qgH25yr#hI_o~!!>Vp)+*q$C0_U=oWW#AK2i$Ze-xjW ziD;(9`Y2z6lar6?d7cUSnp-}cw+Vz~UZ^0UzT zIa%3+2E#=ZS4cdKeLa;{kqlJv?g0~u>pX6U@pQU~t!=h@zY_oZe#_j?e`_BKA$wh? zwNrEGMdtWKyln=gXl&g?IqzlYnmz(dEqL@xa!^O;mxsQSfQ|M%t1*5zja zvehGp$3Vu^%163*7;#`UMcy$u=7%LCtm1n{8$ap#Y=a^TTcu0N(yjCvD&GoixZ6X3>45Y<9`O^A9%R#W-Tb%W%<| z{bxTm#O2Ep4Ba3}w9@F7b{)&Gt(pG1GMPruDKXjdTIhd7Bk5R2SX`I&bs?k7N8zrM z5Zo-9`Vcv`MV5y;mgjpMrFTiL{^^%_C5T-u5C#}f(wqwB7LE-Ha81txo*5T^V;irg zu-Mnkv_`FtW9hFVxE zXi`nfsj6Tpfyn{4+yHu?1PP`Ikr^Ks1p^upwbSZ(uF*T{q;z_6GU$jE_Fix4Ky-W6 zj&$kgHG@Zl zX8-4U!!n7>**VZdksD^jSdrLVLgTT27z{tt!u>JlI|Y0D{+!KU*S>TE%q1;jE59s- zH2_=pB~upIF-U4raM^+o;<@5F6vVV#VPB$k^?I#U7Q`P6pS{8a2Kx{ZCBU_NKo^i78#Nm$ zI$)pG)OB}P4A7;j=0BQKY{QR2x>U7PB&jx`LX3PHhV;=zj3e2hVi7L&8P~(Yso5E_hiXD>NraQ8md9@g$Y!I?&{-c-#*q_E3yNTbHiAl3+=sjUStfTqWOZQb zc$z+j;ia025Ay49u!DF}S0`#|SWKWzG3HeT)>BPY6C~nZVw!Wk&=)HOuwnS+nsCvq z@xJWNh$!>@`3Kp)X%nNo_punN8E7abAE!xmeg&ts-fS%TBw=MIc#sh13+FQJMOJrI zN_t6tRj&BPQlPZ8!(`3mF)+_nng!vmc`-{lL7f&?0i0_(Al<$> zRaLX!sOO~kKSV!;GBWqIhP8D3+Kr|)61yA8Ebo)cNiShaG#hAMO#(jtPPovrVpOz| zrWzf)QdWoLViijKN9&X$-p(>HWy#Z~rn$p$4Sr~%UfB!$GKs8lIxT6#5+r2yhL=OZ z03~3{T^0c-5_Vg?MD1ocL8TcL5p7BmaUR>ugZMnM^{hN=eWr$7jt_bfc4YM4_k0_5 z=Qh(`7I)+!5Xk}x3a7UQs|+P5t9tFL3#3TVL_%-;)q4G#Yj!9;8_HW4Nsy=8lrqcX zt#V=?2)B_}6p9l%r4TsKKEw>L8zM-2&PeNdKf)G7WtnqqTo8+4z@UE-U0f5ulyE&^}jP3DhPI`?dJL1 z&!9W?75)&v^gbvEHSKYhJf-#yGkYtevU5HjuhXpcz)1e|jf}iFAVFHsvqAu2(o`dt z*FWaU{apMqpR?gnl`Yq~u<$0=GwxT)B%5D0i`6_4{segvq4=&Qugyh{<)&gFtWiI= zw%BQ%Sq%d>Q1C8p3f%xP#Y~Yy$iV61C2+J$GpLEg=V>$g-k3-_mH0OZk^_KW+Q_AkTKhj8+4oUNiapeBm4hcblfm%YLeklZ|_2 z62p6+z58Zr6PC5s9QVaY*C_&R2d75`XUgs|8@p71 zmLd$KIm!sS;iDG3vSAqTH|H7c-(zgZiYJ?T7Ms3;@q)T-YUM%dq6hFRT9K2P77QR` zt`OQGnTHZ6Q#(31@#UNPz%~=qRUQ8UK0xP#+j&%7dn7NVLcMx2F$ZT?(LZ3!wU`FJx5nw$sc0~qA1LOl0oF-yP(1-sz8Sf+>af)ruS|uQV2s_ z83PbPbJ1Lj&qX(p=wyR_R#S<|m$-Aj8+1*xiio`G2(e1>Y2_GuzMl_Yf7W@o_`NTD za9Gv1KG(ie((wNynR(4IeNK$QQ&48f*pwd;6i*)R%w$)rJ_y?i{JIgYt?9g6qe))f ztTDX|EfAU^vEsxc%}VnA58!w&y=AGf-rCwk zW^#2O!)2&1xp)>SZKo^)nr++W5IJ!&bblY^|wA z7tb(7_F;Xc#mX)uQi1_oCuJ3=4gy$QbtS0bNNZv(0!7WaD;Q&3(djxBkxC3{gCQG7d4jimCidC8_c*!9})+$#1 zT(iRBX@1zNhv@0kbRZ6pAmmj-u3SR`fdPmQG!Zk0$3weSuBMro^T@=6s8crBfNp|j z*g7+^q;kj?21vUCMZ6t;^k(~V&t#H6Ac0qHcI+yrv)#PMWRs!FWhED)zcaJb?0TJ& zJzf505Bm6S$?pKKu^Gs0fF@sF|4mE_8}y+U_%GNiTMO`LT$q5W{cYKxhYGNBUd7T= zsi%SQt1F0w4_*PDVI^evhoPD@=0_SG<;l~9xfD129k7U_vBNGMMi)So?mmSq{MAZY zKUW>X`C==o#hF*+oP`|V)vGO1KJU*p*P(;X*jGD z!m%958CN-!>1o?pnf4I!0x{_n2*Bf(pI;CNI^LbdlDp;MJ>=Za{`Cm0o3K3(6bMRlX%oL&5T4Ylb=*}ywS_as@qTPU^m8p5 zW!73{Z|R@n`sw@6$lZO>~t0YtGvqhZVOwiI|Nk z!uLA{=x8(x2m0O5-@SqN&m2c43}CrGddlyvu6f@Dq0bvG#TD6)z;G82>*BL?D^5ck zYlYtv#eJ0THmxY9iv4H&r(Q|lHu5oV=3Ug@{ZB2={i((W5mVo<(C>Z6aOc$*+%K!Q z)yUDF#lb7-)@|)=x2JfuC$9a&J|$mJ;L-#q_O(8i)s_ehVvI^o&nEw7@Y3l6!i}z| zI$)5Z8&hFoVT)$Zq`$mi5K(|1y7R2%MDUJLjvGCc7!660Eq zRmhNT69|@R;7~}D-$wM*>IWCsamg?Kz2trQxV=(d06JhyhwjJaut_QU(o{fnQ8DqDL3n}~8hDh5 zp_M{x$DI^SQ8@S0AvYsqaME(Uc(lnebro|@Ylm`PV7)I`n#))})}~AuEubn{MSZ2r zRw8$@rY89@1%%m!nmFKM%WI}h6pc|#5j10sb!}=j!-onGVR$y>W*uLHl>Pd@mGAhw zT`j-({LA3*S-GEe*NRN^cJ6EQc0E0&oM<+Q<|bvbuh%ycEZy^@)Gw{)hncFLGt;=t z`uqbqxYsFzDY`<4BP6Vo>+*(Z+XtI6t<{L71`D_>()rw$m z+@}o_VGjp`)#7lKsQv2Q^25dT?<3N7P0CH?9VW=O1v4oK1BlR%oe5M7ke)PJl|d9r z5oV|bu3#8c=hAGdN>&Q3YM_uw2U?4Y)KhJss;Vj?USu}H>Z&IB!&(o0Z?EYg zRKfngF6sP#51H)c1Qnw`8{x*~fVM_A{pqnxi=B_Ht6z7rD8%xvs&#HBu#^>ys_9P$ z`MMZ5{}&JVWSl)TFz+T=Ckh>LLweiA>_|j#B7@=)?WLdYzbvz+*KkogHfk?l9DNJA9Lv3!+_gMyGyZaQ+>LE8F%wO&bn^%T}aqNk09brE|51vTd1XQ$QFRe&xxJPq?Qi+ z!7-nU^WCyrIrmMBP%%OT^MvmOd)mo{z-D_4`9%Xl`$2Xe4m{}QWQ8}5A}1@DaghCr zbs!D348aR_5c8iJ)9^O%=AFB;Js2g@vYB($^hDg6HW^VO@0xYSCWYnU|!5^33V@Ah3B$zar&*B3^=o?by zr#UdRB5>d50k9bXH!(jy3tK8nPdYX;b!_PwPLTjDW8tKF6I@!3GwWPkqOWyDK)a-P zNn9Rb7GgZG_TbRzn|MpN4vW0A2l42>W0&wKWBbEZ4b#V})Y;-xRRl%-Y~+C!EQkxk zo1E9zmykS!+-r;^T&h754(L$u=OyOl4UT&GmK8pDNWTV9GxJ3Ub{8^GngDx-eHqioM1quT5Fiw6$oc>qf#`G!siBD=UfPK1)#l zXw~NZO=poP7b(ih;*MOdhbM>TxD|#6HOShvQ0LJ$v2e5RB6$3FU~r}7?feZT%t_x zD#l!Sqy)NzB+=l0-!q}lEsFbNX9;~eIFjTh(s_jfQ6|-AfDo)3=V+9))bm@g-c@^J zz!gy*|Mk9T0LpW0Ez1z$RNApWDy&*1M9+yz(0E3=JyH^)=^oye&SKPLiZ+h@RtOG| z_BW^|nFzfT$4&JVPOy#;JdTlD1rd0=(2BD%neaH7QJwan{ggFiiho3Rp95V4f>!=S zs!ofV!)kp%={+rWklp5af=Y*?ZRBNWWVhL}qHii>q z{-%j*JvP2b{wr5ClRtenr`JSRSdA0Z5gnWwhDpY)!LEqhD1f3MA%a+K0+UKhftEs5 zblP9B^*7u;U)k@u-&s$gfMwSt8Nu3)+lK|ciH$G^-9|0ufg1IfBRV;it23lTM!q9n zOYL~XCr4?LfV2`Y&IU=uy=h0kznxMer$^BAxS^I5S>Y)X z5ywGm%~=$~c)4m$b01>RvZg>Vd7F=4#P+_c8sYxGDB*t}@7(?Ezv&O3Z)cJF^sr;# zY8*syl9YozuGy2ECkAAEnW)wOw0-_p&0jOw#BPeZ@Gln>p^hG_hL)dI1uKN%JZMU` zjagJlXeF&dCkH4N5$D}PIt@jTU#CbWvCCpd`2f^6JS%7bz+ z%fiFVoT5geMuXjJaT7^TEx7x<51XwUa?i_6#Urmam~OU_t&?&I4d(U%{ly%G9GtPq zXKJHTc6zVt2l6QJwYVgGCw8t6IZmy7<11a=c620`w;Nu%uBl8mdV^@qtfa_znmP(7 zh6bXN8j|0S!LecWci9e+UEGyO51}|Xn1ynyUMTpgjfMykRBgW zf&nOfic$mNjQ1II!ya_fMT;WHur$Lu@%&dod+xX!N{XtGl%1MwR-1fRvr5Q{Z}%E6 zhl*kv-!r<^W9m0hLEue;uL=QXbmj!`IAVJR@#J{1!GN_c6W96 zUm~}F=;!Npm_g@7Al+^cHQUPQy2Nchh<1C*Y$K=McX#s*kTyeXV_U_}%Z4258XWq! zbG?n}d~h?m9%fLo4+7DNNFjY)g`W&}I7N+EoVQj0er?)Zu<{4k`m4*tlI~!+JDO!s zjLmf+=s`1vA8Qhooe@^nYdq;PC3)d`AwHptp^f90bPvV#a^BdCp8tuz!r1VR`ntjf zW^P5chG%ds!E?)b{cc|)Rz}Q$2YHzU;p(6aGg$F-_g6bT!-dhG7-Ld=Ag);q`rJET zD*j2={g=wd+0C$4g^X*YkoCFAtc#ib&VNpN>6(hxs{2C>W=yq^jSg@iWgh}FJ@z)d z`Y{==taTiYnV2B*N-l`>%eW|5ykNtM|F>R|pLP8tR(N`$cscV4t_(7Hy2S*`d>~Cf=ar{p z{RJLiPcytq{a^SOB$Gt7&N&8nXEK6+{5rwJ{-73*rd>8}Rs0q+D(&qmCR4#ou9dUm zcB4)7L!;q7PSb!PbeQc};m8Mo@LImYJ5#~lzr-6eAw%)AMTAd3wX=d90^1ml#LKUp zBMiuGB@uu7BPKvUotdwU$KMrVn3QNYpJ}<$lyGq(bu?ZHUVKo(kZ}b;UpMk_VfF$# zA5R6B|6o2M(Z%gv0_gscMMlDisvZ=em4+uplRbEHtK}Y!&|NLO47l4k|3xYgKfwi( zn`6e?4!e%jbyv*Mals%tpuysy0_fOUr82UZg40rYWVM6~=F!V<2W7jZBRFQ}9(xt| zHEf`5*syk1m4;m5hng(^R)n*rS%<`*@c3Dr#5#?4lXlpZD9&Jn8IKrqE9x{{*EQ3% zX9WWP=WW(CFAHpx@UiFG{hRHsyL{Jer%(f=p#W6Uvyg!UlG&ItLMIjh%RpPi7tTQP za6hmwcAp-^JUA)wbua#E2DCuZWe5`IxobPUzPld(sb*HNtB1nuOIzUk9CFv9UF zL(7FjDqX^8OIhXl=^=Ww#m5x|y^g@UIy~ZrLB~}>C^b!b$0C-2)LPN>RO>x&qSbR% zp3iMLv|F@WQB>@d!>o+sL%-nw-?*>~L&^ByQ-f!&J~YrdeBY(_tb7^@3?y`$)A_&$ zin3bXM;n#paFbmKRwA!z_h?m7|F6pKCC+wycRkA)Rng_E}JG`&9rXQpU*(-X7 zy+gJX5QBi&3H^mg5jY&ML~;hNW~2ik2?hZiphyLcoRa_q;EwEZ&IBYsgyfb6K=1E& zy1XHfA#LP*TNN%?lp;x>1K=8AqdUgToX!ma{nW0H^|LYyt;gz?Tm;XiCE?*=@@UDi zU41IEllAi!2qN5DB9P7DRamp23(u{ijhKwt5;5mGN7L|S&L{z%_*w_w#3&ncHGIJW*G1AM@uKf^(49IG9;7jC04;=Ww zgV_Ngjb`Xa@3V_zah|ON=J@h`9nTsifuH2%Lo}PUU(%^AyPR--ZzI!Zw?v)%FOLk{ zy|y6V*5>;|9;R!I)JVB+aF}^w52oA_wp#!@-S1QfxCK%XaTou-vMoZNp4~mWQHVqHymyfcH1KjWfBPF4V|rb0!mJL@ly*DIW(I|U%7b)#?Y|fU z7U(O})aJ6^G#7U)+}Ihy|#@lcsrwjo=4)zyBLu}*wD>lzDTZtsS3eC!*K#C2t+*`1?Fi&88gE^R7lOT&Z=wtz; zy?+_(6U+B^7Xp&8WW=MATzohNCfy(+H5BS4$T{koJMvWV(u4_yYI7EwCpSNy`^E`NQ>T$kD8$SWBo!D_+1kY9SIZlFq zG3%E;EkOy&6Z7Avx$Jn5^;Fn1B$v!1CH$@~1d9vTO-y`X$H%DQUrWUXFgxBa9OeA= z!2TScd2goVqi(`>n%r%StYSV7VXcE}3UXuuZkW7hn@Gwnma_*Zzl z4ivgN*r3R4X%wEWwXFjh0wbeh@Bd zD6o6w!|HO|11Bh;1^t?UfXQikcXylX!bmb&T=lNd+T8x447AsY@`&>9ZU2geSi zI9^Zxs?2>GCwaY{^L=apR~qgz8Ap=c0s;B8?FJ7J8w~E=uM14gU96=9i~1)dEB>!6 zeB2CM+;!|HygzHT&HGEWFBPf=1nS++9Uv+h2^eLu(65}k)0!(a8hT?IM;1KjET14M zL@!FIfP~?7U!5Dn>R*G)U6G)DWKlCgD^0fjQ4#^1LO)zu5bPW{s_1nB`uZ3v_Z_eG z^VH09>%lX$!ABdM#&+#*V296#8{`gQ^m2oa+tql)>pqT2YRI2~+&4{$Gr6CJZw0K&jhwLKE!Ll;um<}kU%OSeSBOg)%-f>uRh z0T2)|oiN7%3>+weL_%k^n=y{@tF^-(*8jUK}?K=xlFkJVC9Kq!``i~nM8cqOR&&7 zc={sVBkD#jW}8@EtJ5v&5dFb#?0f$JSnO}vHK3$2bUu4g_hTowQ0-r4+%`S8vlwAE z+hH$CQV@m|+}ZKbz|}$vC!~Q(sp2k9L+|XE8vm+{)-nhJ4^qBfn0?(vG9hfL0_L$u zDL5Z*BBkw02Qb(l5a?#e+Mad|r^Sk7@5%UsynlpWkvl+B{GJl=Ek+glI=-loD}x`NaSGHhsU6clZq)HzxM3qEJB94q93L zZ~v5YIC#j}>{SFhChUeMCr!O)cUrey=!u87#|swA_boeo}hoe zU~II0Cn@7Qd%fASsUN>E?sY&aM+r7y$%AA5G~80NDAcv&mlw@Inf z>f3G>XML&En@6{KazBUnirSur#fd1s#OO$>-(cQ3js@D%-0>ay9!e}t!no^_%>d4d z#jAnJ)MCDKtGmF&j;%CZz}#0=C|17{m?6@OHeVt^i&SN(2}T^S(OZlHpqeLotM-Me zx8BV8rh!@ep-e#|lRlpi%ZPC$csi9B@WqC9nW#x&8^vA3Ae?VRMoZ) zW&_g2)2VKaG~)|~^+-SyjAGijOdQlhcZ0jSg@>%7&JC$dtN#^g;Vxs0s)KW;AO;0I z6yDqAzLU$lggJkNaH!REV1((*4b`P?drF%&aHVAtVKf{tFBXEmimGW%cA~J32~=If zp)!ey@LI4M4 zoQXI*%)eP1<$jJYbDSnL>|>+?EF)lx?|ffzZ1f{zTw9?$85p-1cU>?|FfPCPTC@AS zlG-o_@DP)V?O(OL*&J0YV}uSRCM&)0gO1BOPw1s41=<@$H3rqN?`1qRFQtHfXHc}$ zk5s;@&ZR7~OjDZlPIEnq@iJlDc{yBzb73)|vIrXa0xm+uQk?lZZZj63kg5VNR$Abw z!h-I8+Y$wrY@vs&%&)H@Uei zv2E}JR8_T#{7k)}Id<6c0xq9+oHVYNFw^bjo#5KoQ?>%<(v$SHeY$Ea7C{riCaxSK zQ{i+0JYX6lG*>;G&W@&mA||>AU#4f|-ar`n@v-3Vy_F`{OU&oy&>D0&RO2zR@cegP z`|$lS`(Qi<8>CJd5Pa|TAZlBzYm9eP5I{HC^gFMx({Ub;6Hi6KE1`lPl}*)6dogwpO^wli6SrpU$5 zbnI)PAKmot#iQ+YN|HK@8!AL4o}n?+_!o;^pOVAW>+2

    PN_$IE>!l(*k`h*Lo=0u>#4M{ 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