From b0a1cd7b0d211f1852aa3c206b582af9253bf4c0 Mon Sep 17 00:00:00 2001 From: Deomid Ryabkov <rojer@rojer.me> Date: Wed, 8 Jul 2020 01:50:35 +0100 Subject: [PATCH] Sync src with amalgamated versions Now src contains exactly what's embedded in mongoose.c and .h, nothing more. Added `tools/amalgam.sh` to aamlgamate both files at once. There are no functional changes to mongoose.c, .h in this PR, only slight filename changes. --- LICENSE | 4 +- mongoose.c | 112 +- mongoose.h | 94 +- src/CPPLINT.cfg | 1 - src/common/cs_base64.c | 201 + src/common/cs_base64.h | 50 + src/common/cs_dbg.c | 16 - src/common/cs_dbg.h | 16 - src/common/cs_dirent.c | 92 + src/common/cs_dirent.h | 35 + src/common/cs_endian.h | 28 + src/common/cs_md5.h | 16 - src/common/cs_sha1.c | 253 + src/common/cs_sha1.h | 35 + src/common/cs_time.c | 16 - src/common/cs_time.h | 16 - src/common/mbuf.c | 135 + src/common/mbuf.h | 95 + src/common/mg_mem.h | 16 - src/common/mg_str.c | 162 + src/common/mg_str.h | 97 + src/common/platforms/arm/arm_exc.c | 175 - src/common/platforms/arm/arm_exc.h | 53 - src/common/platforms/arm/arm_exc_top.S | 80 - src/common/platforms/arm/arm_nsleep100.c | 34 - src/common/platforms/arm/arm_nsleep100_m3.S | 46 - src/common/platforms/arm/arm_nsleep100_m4.S | 54 - src/common/platforms/arm/arm_nsleep100_m7.S | 45 - src/common/platforms/cc3200/cc3200.ld | 92 - src/common/platforms/cc3200/cc3200_libc.c | 16 - src/common/platforms/cc3200/cc3200v1p32.cmd | 82 - src/common/platforms/cc3200/gcc.mk | 52 - src/common/platforms/cc3200/ti.mk | 52 - src/common/platforms/esp/esptool.py | 2133 --- src/common/platforms/esp/slip.c | 35 - src/common/platforms/esp/slip.h | 9 - src/common/platforms/esp/stub_flasher.c | 579 - src/common/platforms/esp/stub_flasher.h | 114 - src/common/platforms/esp31/rom/.gitattributes | 1 - src/common/platforms/esp31/rom/ESP31B_ROM.txt | 11917 ---------------- src/common/platforms/esp31/rom/disasm.sh | 4 - src/common/platforms/esp31/rom/notes.c | 163 - src/common/platforms/esp31/rom/rom.S | 16 - src/common/platforms/esp31/rom/rom.bin | Bin 65536 -> 0 bytes .../platforms/esp31/rom/rom_functions.S | 294 - src/common/platforms/esp32/rom/.gitattributes | 2 - src/common/platforms/esp32/rom/disasm.sh | 4 - src/common/platforms/esp32/rom/rom.S | 28 - src/common/platforms/esp32/rom/rom.bin | Bin 458752 -> 0 bytes src/common/platforms/esp32/rom/rom.elf | Bin 521912 -> 0 bytes .../platforms/esp32/rom/rom_functions.S | 1852 --- src/common/platforms/esp32/stubs/Makefile | 51 - src/common/platforms/esp32/stubs/README.md | 13 - src/common/platforms/esp32/stubs/led.c | 50 - src/common/platforms/esp32/stubs/led.h | 23 - .../platforms/esp32/stubs/rom_functions.h | 10 - src/common/platforms/esp32/stubs/sdkconfig.h | 1 - src/common/platforms/esp32/stubs/stub.ld | 51 - src/common/platforms/esp32/stubs/stub_hello.c | 41 - src/common/platforms/esp32/stubs/uart.c | 31 - src/common/platforms/esp32/stubs/uart.h | 26 - src/common/platforms/esp8266/common.mk | 77 - src/common/platforms/esp8266/esp_crypto.c | 46 - .../platforms/esp8266/esp_hw_wdt_register.h | 65 - .../platforms/esp8266/esp_missing_includes.h | 76 - .../platforms/esp8266/esp_ssl_krypton.h | 29 - src/common/platforms/esp8266/esp_umm_malloc.c | 120 - src/common/platforms/esp8266/esp_umm_malloc.h | 35 - .../platforms/esp8266/rboot/esptool2/Makefile | 26 - .../platforms/esp8266/rboot/esptool2/elf.h | 76 - .../esp8266/rboot/esptool2/esptool2.c | 561 - .../esp8266/rboot/esptool2/esptool2.h | 44 - .../esp8266/rboot/esptool2/esptool2_elf.c | 183 - .../esp8266/rboot/esptool2/esptool2_elf.h | 48 - .../esp8266/rboot/esptool2/license.txt | 674 - .../esp8266/rboot/esptool2/readme.txt | 19 - .../esp8266/rboot/rboot/appcode/rboot-api.c | 152 - .../esp8266/rboot/rboot/appcode/rboot-api.h | 38 - .../rboot/rboot/appcode/rboot-bigflash.c | 61 - .../esp8266/rboot/rboot/firmware/rboot.bin | Bin 2464 -> 0 bytes .../platforms/esp8266/rboot/rboot/license.txt | 21 - .../esp8266/rboot/rboot/rboot-private.h | 74 - .../esp8266/rboot/rboot/rboot-stage2a.c | 80 - .../esp8266/rboot/rboot/rboot-stage2a.ld | 211 - .../platforms/esp8266/rboot/rboot/rboot.c | 428 - .../platforms/esp8266/rboot/rboot/rboot.h | 82 - .../platforms/esp8266/rboot/rboot/rboot.ld | 2 - .../platforms/esp8266/rboot/rboot/rboot.mk | 89 - .../esp8266/rboot/rboot/rboot_rom.ld | 8 - .../esp8266/rboot/rboot/readme-api.txt | 40 - .../platforms/esp8266/rboot/rboot/readme.txt | 218 - .../platforms/esp8266/rom/.gitattributes | 2 - src/common/platforms/esp8266/rom/disasm.sh | 4 - src/common/platforms/esp8266/rom/rom.S | 101 - src/common/platforms/esp8266/rom/rom.bin | Bin 65536 -> 0 bytes src/common/platforms/esp8266/rom/rom.elf | Bin 79984 -> 0 bytes .../platforms/esp8266/rom/rom_functions.S | 347 - src/common/platforms/esp8266/stubs/Makefile | 50 - src/common/platforms/esp8266/stubs/README.md | 13 - src/common/platforms/esp8266/stubs/chop80.py | 14 - .../platforms/esp8266/stubs/rom_functions.h | 91 - src/common/platforms/esp8266/stubs/stub.ld | 44 - .../platforms/esp8266/stubs/stub_hello.c | 32 - src/common/platforms/esp8266/stubs/uart.c | 32 - src/common/platforms/esp8266/stubs/uart.h | 49 - src/common/platforms/esp8266/uart_register.h | 136 - src/common/platforms/lwip/mg_lwip.h | 16 - src/common/platforms/lwip/mg_lwip_ev_mgr.c | 16 - src/common/platforms/lwip/mg_lwip_net_if.c | 16 - src/common/platforms/lwip/mg_lwip_net_if.h | 16 - src/common/platforms/mbed/mbed_libc.c | 54 - src/common/platforms/msp432/msp432_libc.c | 16 - src/common/platforms/nrf5/nrf5_libc.c | 16 - src/common/platforms/pic32/pic32_net_if.c | 16 - src/common/platforms/pic32/pic32_net_if.h | 16 - src/common/platforms/pic32/xc32.mk | 51 - src/common/platforms/platform_cc3100.h | 16 - src/common/platforms/platform_cc3200.h | 16 - src/common/platforms/platform_cc3220.h | 16 - src/common/platforms/platform_esp32.h | 16 - src/common/platforms/platform_esp8266.h | 16 - src/common/platforms/platform_mbed.h | 16 - src/common/platforms/platform_msp432.h | 16 - src/common/platforms/platform_nrf51.h | 16 - src/common/platforms/platform_nrf52.h | 16 - src/common/platforms/platform_nxp_kinetis.h | 16 - src/common/platforms/platform_nxp_lpc.h | 16 - src/common/platforms/platform_pic32.h | 16 - src/common/platforms/platform_rs14100.h | 16 - src/common/platforms/platform_stm32.h | 16 - src/common/platforms/platform_tm4c129.h | 16 - .../platforms/simplelink/cs_simplelink.h | 16 - src/common/platforms/simplelink/sl_fs.c | 16 - src/common/platforms/simplelink/sl_fs_slfs.c | 16 - src/common/platforms/simplelink/sl_fs_slfs.h | 16 - src/common/platforms/simplelink/sl_net_if.c | 16 - src/common/platforms/simplelink/sl_net_if.h | 16 - src/common/platforms/simplelink/sl_socket.c | 16 - src/common/platforms/simplelink/sl_ssl_if.c | 16 - src/common/platforms/wince/wince_libc.c | 16 - src/common/platforms/windows/windows_direct.c | 16 - src/common/queue.h | 752 + src/common/str_util.c | 516 + src/common/str_util.h | 182 + src/mg_coap.c | 16 - src/mg_coap.h | 16 - src/mg_dns.c | 4 - src/mg_dns.h | 4 - src/mg_dns_server.c | 4 - src/mg_dns_server.h | 4 - src/mg_features.h | 4 - src/mg_http.c | 4 - src/mg_http.h | 4 - src/mg_http_cgi.c | 4 - src/mg_http_ssi.c | 4 - src/mg_http_webdav.c | 4 - src/mg_http_websocket.c | 4 - src/mg_internal.h | 4 - src/mg_license.h | 18 - src/mg_modules.mk | 105 - src/mg_mqtt.c | 4 - src/mg_mqtt.h | 16 - src/mg_mqtt_client.h | 8 - src/mg_mqtt_server.c | 4 - src/mg_mqtt_server.h | 16 - src/mg_net.c | 17 - src/mg_net.h | 16 - src/mg_net_if.h | 4 - src/mg_net_if_null.c | 17 - src/mg_net_if_socket.c | 4 - src/mg_net_if_socket.h | 4 - src/mg_net_if_socks.c | 4 - src/mg_net_if_socks.h | 4 - src/mg_resolv.c | 4 - src/mg_resolv.h | 4 - src/mg_sntp.c | 4 - src/mg_sntp.h | 4 - src/mg_socks.c | 4 - src/mg_socks.h | 4 - src/mg_ssl_if.h | 4 - src/mg_ssl_if_mbedtls.c | 4 - src/mg_ssl_if_openssl.c | 4 - src/mg_uri.c | 4 - src/mg_uri.h | 4 - src/mg_util.c | 4 - src/mg_util.h | 4 - src/mongoose.c.manifest | 56 + src/mongoose.h.manifest | 47 + test/Makefile | 18 +- {src/common => test}/test_main.c | 4 +- {src/common => test}/test_main.h | 0 {src/common => test}/test_util.c | 2 +- {src/common => test}/test_util.h | 0 test/unit_test.c | 9 +- tools/README.md | 6 +- tools/amalgam.py | 7 +- tools/amalgam.sh | 6 + tools/unamalgam.py | 8 +- 198 files changed, 2870 insertions(+), 23966 deletions(-) delete mode 100644 src/CPPLINT.cfg create mode 100644 src/common/cs_base64.c create mode 100644 src/common/cs_base64.h create mode 100644 src/common/cs_dirent.c create mode 100644 src/common/cs_dirent.h create mode 100644 src/common/cs_endian.h create mode 100644 src/common/cs_sha1.c create mode 100644 src/common/cs_sha1.h create mode 100644 src/common/mbuf.c create mode 100644 src/common/mbuf.h create mode 100644 src/common/mg_str.c create mode 100644 src/common/mg_str.h delete mode 100644 src/common/platforms/arm/arm_exc.c delete mode 100644 src/common/platforms/arm/arm_exc.h delete mode 100644 src/common/platforms/arm/arm_exc_top.S delete mode 100644 src/common/platforms/arm/arm_nsleep100.c delete mode 100644 src/common/platforms/arm/arm_nsleep100_m3.S delete mode 100644 src/common/platforms/arm/arm_nsleep100_m4.S delete mode 100644 src/common/platforms/arm/arm_nsleep100_m7.S delete mode 100644 src/common/platforms/cc3200/cc3200.ld delete mode 100644 src/common/platforms/cc3200/cc3200v1p32.cmd delete mode 100644 src/common/platforms/cc3200/gcc.mk delete mode 100644 src/common/platforms/cc3200/ti.mk delete mode 100755 src/common/platforms/esp/esptool.py delete mode 100644 src/common/platforms/esp/slip.c delete mode 100644 src/common/platforms/esp/slip.h delete mode 100644 src/common/platforms/esp/stub_flasher.c delete mode 100644 src/common/platforms/esp/stub_flasher.h delete mode 100644 src/common/platforms/esp31/rom/.gitattributes delete mode 100644 src/common/platforms/esp31/rom/ESP31B_ROM.txt delete mode 100755 src/common/platforms/esp31/rom/disasm.sh delete mode 100644 src/common/platforms/esp31/rom/notes.c delete mode 100644 src/common/platforms/esp31/rom/rom.S delete mode 100644 src/common/platforms/esp31/rom/rom.bin delete mode 100644 src/common/platforms/esp31/rom/rom_functions.S delete mode 100644 src/common/platforms/esp32/rom/.gitattributes delete mode 100755 src/common/platforms/esp32/rom/disasm.sh delete mode 100644 src/common/platforms/esp32/rom/rom.S delete mode 100644 src/common/platforms/esp32/rom/rom.bin delete mode 100755 src/common/platforms/esp32/rom/rom.elf delete mode 100644 src/common/platforms/esp32/rom/rom_functions.S delete mode 100644 src/common/platforms/esp32/stubs/Makefile delete mode 100644 src/common/platforms/esp32/stubs/README.md delete mode 100644 src/common/platforms/esp32/stubs/led.c delete mode 100644 src/common/platforms/esp32/stubs/led.h delete mode 100644 src/common/platforms/esp32/stubs/rom_functions.h delete mode 100644 src/common/platforms/esp32/stubs/sdkconfig.h delete mode 100644 src/common/platforms/esp32/stubs/stub.ld delete mode 100644 src/common/platforms/esp32/stubs/stub_hello.c delete mode 100644 src/common/platforms/esp32/stubs/uart.c delete mode 100644 src/common/platforms/esp32/stubs/uart.h delete mode 100644 src/common/platforms/esp8266/common.mk delete mode 100644 src/common/platforms/esp8266/esp_crypto.c delete mode 100644 src/common/platforms/esp8266/esp_hw_wdt_register.h delete mode 100644 src/common/platforms/esp8266/esp_missing_includes.h delete mode 100644 src/common/platforms/esp8266/esp_ssl_krypton.h delete mode 100644 src/common/platforms/esp8266/esp_umm_malloc.c delete mode 100644 src/common/platforms/esp8266/esp_umm_malloc.h delete mode 100644 src/common/platforms/esp8266/rboot/esptool2/Makefile delete mode 100644 src/common/platforms/esp8266/rboot/esptool2/elf.h delete mode 100644 src/common/platforms/esp8266/rboot/esptool2/esptool2.c delete mode 100644 src/common/platforms/esp8266/rboot/esptool2/esptool2.h delete mode 100644 src/common/platforms/esp8266/rboot/esptool2/esptool2_elf.c delete mode 100644 src/common/platforms/esp8266/rboot/esptool2/esptool2_elf.h delete mode 100644 src/common/platforms/esp8266/rboot/esptool2/license.txt delete mode 100644 src/common/platforms/esp8266/rboot/esptool2/readme.txt delete mode 100644 src/common/platforms/esp8266/rboot/rboot/appcode/rboot-api.c delete mode 100644 src/common/platforms/esp8266/rboot/rboot/appcode/rboot-api.h delete mode 100644 src/common/platforms/esp8266/rboot/rboot/appcode/rboot-bigflash.c delete mode 100644 src/common/platforms/esp8266/rboot/rboot/firmware/rboot.bin delete mode 100644 src/common/platforms/esp8266/rboot/rboot/license.txt delete mode 100644 src/common/platforms/esp8266/rboot/rboot/rboot-private.h delete mode 100644 src/common/platforms/esp8266/rboot/rboot/rboot-stage2a.c delete mode 100644 src/common/platforms/esp8266/rboot/rboot/rboot-stage2a.ld delete mode 100644 src/common/platforms/esp8266/rboot/rboot/rboot.c delete mode 100644 src/common/platforms/esp8266/rboot/rboot/rboot.h delete mode 100644 src/common/platforms/esp8266/rboot/rboot/rboot.ld delete mode 100644 src/common/platforms/esp8266/rboot/rboot/rboot.mk delete mode 100644 src/common/platforms/esp8266/rboot/rboot/rboot_rom.ld delete mode 100644 src/common/platforms/esp8266/rboot/rboot/readme-api.txt delete mode 100644 src/common/platforms/esp8266/rboot/rboot/readme.txt delete mode 100644 src/common/platforms/esp8266/rom/.gitattributes delete mode 100755 src/common/platforms/esp8266/rom/disasm.sh delete mode 100644 src/common/platforms/esp8266/rom/rom.S delete mode 100644 src/common/platforms/esp8266/rom/rom.bin delete mode 100755 src/common/platforms/esp8266/rom/rom.elf delete mode 100644 src/common/platforms/esp8266/rom/rom_functions.S delete mode 100644 src/common/platforms/esp8266/stubs/Makefile delete mode 100644 src/common/platforms/esp8266/stubs/README.md delete mode 100755 src/common/platforms/esp8266/stubs/chop80.py delete mode 100644 src/common/platforms/esp8266/stubs/rom_functions.h delete mode 100644 src/common/platforms/esp8266/stubs/stub.ld delete mode 100644 src/common/platforms/esp8266/stubs/stub_hello.c delete mode 100644 src/common/platforms/esp8266/stubs/uart.c delete mode 100644 src/common/platforms/esp8266/stubs/uart.h delete mode 100644 src/common/platforms/esp8266/uart_register.h delete mode 100644 src/common/platforms/mbed/mbed_libc.c delete mode 100644 src/common/platforms/pic32/xc32.mk create mode 100644 src/common/queue.h create mode 100644 src/common/str_util.c create mode 100644 src/common/str_util.h delete mode 100644 src/mg_license.h delete mode 100644 src/mg_modules.mk delete mode 100644 src/mg_mqtt_client.h create mode 100644 src/mongoose.c.manifest create mode 100644 src/mongoose.h.manifest rename {src/common => test}/test_main.c (97%) rename {src/common => test}/test_main.h (100%) rename {src/common => test}/test_util.c (98%) rename {src/common => test}/test_util.h (100%) create mode 100755 tools/amalgam.sh diff --git a/LICENSE b/LICENSE index eb38b7a75..cad0117cd 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ -Copyright (c) 2004-2013 Sergey Lyubka <valenok@gmail.com> -Copyright (c) 2013-2018 Cesanta Software Limited +Copyright (c) 2004-2013 Sergey Lyubka +Copyright (c) 2013-2020 Cesanta Software Limited All rights reserved This software is dual-licensed: you can redistribute it and/or modify diff --git a/mongoose.c b/mongoose.c index 6a409a336..6236b2fd2 100644 --- a/mongoose.c +++ b/mongoose.c @@ -19,7 +19,7 @@ #include "mongoose.h" #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_internal.h" +#line 1 "src/mg_internal.h" #endif #ifndef CS_MONGOOSE_SRC_INTERNAL_H_ @@ -180,7 +180,7 @@ MG_INTERNAL int mg_sntp_parse_reply(const char *buf, int len, #endif /* CS_MONGOOSE_SRC_INTERNAL_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/mg_mem.h" +#line 1 "src/common/mg_mem.h" #endif #ifndef CS_COMMON_MG_MEM_H_ @@ -212,7 +212,7 @@ extern "C" { #endif /* CS_COMMON_MG_MEM_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/cs_base64.c" +#line 1 "src/common/cs_base64.c" #endif #ifndef EXCLUDE_COMMON @@ -416,7 +416,7 @@ int cs_base64_decode(const unsigned char *s, int len, char *dst, int *dec_len) { #endif /* EXCLUDE_COMMON */ #ifdef MG_MODULE_LINES -#line 1 "common/cs_dbg.h" +#line 1 "src/common/cs_dbg.h" #endif #ifndef CS_COMMON_CS_DBG_H_ @@ -551,7 +551,7 @@ void cs_log_printf(const char *fmt, ...) PRINTF_LIKE(1, 2); #endif /* CS_COMMON_CS_DBG_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/cs_dbg.c" +#line 1 "src/common/cs_dbg.c" #endif /* Amalgamated: #include "common/cs_dbg.h" */ @@ -681,7 +681,7 @@ void cs_log_set_level(enum cs_log_level level) { #endif } #ifdef MG_MODULE_LINES -#line 1 "common/cs_dirent.h" +#line 1 "src/common/cs_dirent.h" #endif #ifndef CS_COMMON_CS_DIRENT_H_ @@ -719,7 +719,7 @@ struct dirent *readdir(DIR *dir); #endif /* CS_COMMON_CS_DIRENT_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/cs_dirent.c" +#line 1 "src/common/cs_dirent.c" #endif #ifndef EXCLUDE_COMMON @@ -814,7 +814,7 @@ struct dirent *readdir(DIR *d) { /* ISO C requires a translation unit to contain at least one declaration */ typedef int cs_dirent_dummy; #ifdef MG_MODULE_LINES -#line 1 "common/cs_time.c" +#line 1 "src/common/cs_time.c" #endif /* Amalgamated: #include "common/cs_time.h" */ @@ -896,7 +896,7 @@ double cs_timegm(const struct tm *tm) { return rt < 0 ? -1 : (double) rt; } #ifdef MG_MODULE_LINES -#line 1 "common/cs_endian.h" +#line 1 "src/common/cs_endian.h" #endif #ifndef CS_COMMON_CS_ENDIAN_H_ @@ -927,7 +927,7 @@ extern "C" { #endif /* CS_COMMON_CS_ENDIAN_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/cs_md5.c" +#line 1 "src/common/cs_md5.c" #endif /* * This code implements the MD5 message-digest algorithm. @@ -1141,7 +1141,7 @@ void cs_md5_final(unsigned char digest[16], cs_md5_ctx *ctx) { #endif /* CS_DISABLE_MD5 */ #endif /* EXCLUDE_COMMON */ #ifdef MG_MODULE_LINES -#line 1 "common/cs_sha1.c" +#line 1 "src/common/cs_sha1.c" #endif /* Copyright(c) By Steve Reid <steve@edmweb.com> */ /* 100% Public Domain */ @@ -1397,7 +1397,7 @@ void cs_hmac_sha1(const unsigned char *key, size_t keylen, #endif /* EXCLUDE_COMMON */ #ifdef MG_MODULE_LINES -#line 1 "common/mbuf.c" +#line 1 "src/common/mbuf.c" #endif #ifndef EXCLUDE_COMMON @@ -1535,7 +1535,7 @@ void mbuf_move(struct mbuf *from, struct mbuf *to) { #endif /* EXCLUDE_COMMON */ #ifdef MG_MODULE_LINES -#line 1 "common/mg_str.c" +#line 1 "src/common/mg_str.c" #endif /* Amalgamated: #include "common/mg_mem.h" */ @@ -1700,7 +1700,7 @@ int mg_str_starts_with(struct mg_str s, struct mg_str prefix) { return (mg_strcmp(sp, prefix) == 0); } #ifdef MG_MODULE_LINES -#line 1 "common/str_util.c" +#line 1 "src/common/str_util.c" #endif #ifndef EXCLUDE_COMMON @@ -2219,7 +2219,7 @@ size_t mg_match_prefix(const char *pattern, int pattern_len, const char *str) { #endif /* EXCLUDE_COMMON */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_net.c" +#line 1 "src/mg_net.c" #endif /* Amalgamated: #include "common/cs_time.h" */ @@ -3415,7 +3415,7 @@ double mg_time(void) { return cs_time(); } #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_net_if_socket.h" +#line 1 "src/mg_net_if_socket.h" #endif #ifndef CS_MONGOOSE_SRC_NET_IF_SOCKET_H_ @@ -3439,7 +3439,7 @@ extern const struct mg_iface_vtable mg_socket_iface_vtable; #endif /* CS_MONGOOSE_SRC_NET_IF_SOCKET_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_net_if_socks.h" +#line 1 "src/mg_net_if_socks.h" #endif #ifndef CS_MONGOOSE_SRC_NET_IF_SOCKS_H_ @@ -3460,7 +3460,7 @@ extern const struct mg_iface_vtable mg_socks_iface_vtable; #endif /* MG_ENABLE_SOCKS */ #endif /* CS_MONGOOSE_SRC_NET_IF_SOCKS_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_net_if.c" +#line 1 "src/mg_net_if.c" #endif /* Amalgamated: #include "mg_net_if.h" */ /* Amalgamated: #include "mg_internal.h" */ @@ -3516,7 +3516,7 @@ double mg_mgr_min_timer(const struct mg_mgr *mgr) { return min_timer; } #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_net_if_null.c" +#line 1 "src/mg_net_if_null.c" #endif static void mg_null_if_connect_tcp(struct mg_connection *c, @@ -3643,7 +3643,7 @@ const struct mg_iface_vtable mg_null_iface_vtable = MG_NULL_IFACE_VTABLE; const struct mg_iface_vtable mg_default_iface_vtable = MG_NULL_IFACE_VTABLE; #endif /* MG_NET_IF == MG_NET_IF_NULL */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_net_if_socket.c" +#line 1 "src/mg_net_if_socket.c" #endif #if MG_ENABLE_NET_IF_SOCKET @@ -4223,7 +4223,7 @@ const struct mg_iface_vtable mg_default_iface_vtable = MG_SOCKET_IFACE_VTABLE; #endif /* MG_ENABLE_NET_IF_SOCKET */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_net_if_socks.c" +#line 1 "src/mg_net_if_socks.c" #endif #if MG_ENABLE_SOCKS @@ -4459,7 +4459,7 @@ struct mg_iface *mg_socks_mk_iface(struct mg_mgr *mgr, const char *proxy_addr) { #endif #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_ssl_if_openssl.c" +#line 1 "src/mg_ssl_if_openssl.c" #endif #if MG_ENABLE_SSL && MG_SSL_IF == MG_SSL_IF_OPENSSL @@ -4873,7 +4873,7 @@ const char *mg_set_ssl(struct mg_connection *nc, const char *cert, #endif /* MG_ENABLE_SSL && MG_SSL_IF == MG_SSL_IF_OPENSSL */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_ssl_if_mbedtls.c" +#line 1 "src/mg_ssl_if_mbedtls.c" #endif #if MG_ENABLE_SSL && MG_SSL_IF == MG_SSL_IF_MBEDTLS @@ -5387,7 +5387,7 @@ int mg_ssl_if_mbed_random(void *ctx, unsigned char *buf, size_t len) { #endif /* MG_ENABLE_SSL && MG_SSL_IF == MG_SSL_IF_MBEDTLS */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_uri.c" +#line 1 "src/mg_uri.c" #endif /* Amalgamated: #include "mg_internal.h" */ @@ -5647,7 +5647,7 @@ out: return result; } #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_http.c" +#line 1 "src/mg_http.c" #endif #if MG_ENABLE_HTTP @@ -8836,7 +8836,7 @@ void mg_register_http_endpoint(struct mg_connection *nc, const char *uri_path, #endif /* MG_ENABLE_HTTP */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_http_cgi.c" +#line 1 "src/mg_http_cgi.c" #endif #ifndef _WIN32 @@ -9348,7 +9348,7 @@ MG_INTERNAL void mg_http_free_proto_data_cgi(struct mg_http_proto_data_cgi *d) { #endif /* MG_ENABLE_HTTP && MG_ENABLE_HTTP_CGI */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_http_ssi.c" +#line 1 "src/mg_http_ssi.c" #endif #if MG_ENABLE_HTTP && MG_ENABLE_HTTP_SSI && MG_ENABLE_FILESYSTEM @@ -9550,7 +9550,7 @@ MG_INTERNAL void mg_handle_ssi_request(struct mg_connection *nc, #endif /* MG_ENABLE_HTTP_SSI && MG_ENABLE_HTTP && MG_ENABLE_FILESYSTEM */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_http_webdav.c" +#line 1 "src/mg_http_webdav.c" #endif #if MG_ENABLE_HTTP && MG_ENABLE_HTTP_WEBDAV @@ -9818,7 +9818,7 @@ MG_INTERNAL void mg_handle_put(struct mg_connection *nc, const char *path, #endif /* MG_ENABLE_HTTP && MG_ENABLE_HTTP_WEBDAV */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_http_websocket.c" +#line 1 "src/mg_http_websocket.c" #endif #if MG_ENABLE_HTTP && MG_ENABLE_HTTP_WEBSOCKET @@ -10336,7 +10336,7 @@ struct mg_connection *mg_connect_ws( } #endif /* MG_ENABLE_HTTP && MG_ENABLE_HTTP_WEBSOCKET */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_util.c" +#line 1 "src/mg_util.c" #endif /* Amalgamated: #include "common/cs_base64.h" */ @@ -10679,7 +10679,7 @@ struct mg_str mg_url_encode(const struct mg_str src) { return mg_url_encode_opt(src, mg_mk_str("._-$,;~()/"), 0); } #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_mqtt.c" +#line 1 "src/mg_mqtt.c" #endif #if MG_ENABLE_MQTT @@ -11211,7 +11211,7 @@ void mg_mqtt_disconnect(struct mg_connection *nc) { #endif /* MG_ENABLE_MQTT */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_mqtt_server.c" +#line 1 "src/mg_mqtt_server.c" #endif /* Amalgamated: #include "mg_internal.h" */ @@ -11404,7 +11404,7 @@ struct mg_mqtt_session *mg_mqtt_next(struct mg_mqtt_broker *brk, #endif /* MG_ENABLE_MQTT_BROKER */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_dns.c" +#line 1 "src/mg_dns.c" #endif #if MG_ENABLE_DNS @@ -11784,7 +11784,7 @@ void mg_set_protocol_dns(struct mg_connection *nc) { #endif /* MG_ENABLE_DNS */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_dns_server.c" +#line 1 "src/mg_dns_server.c" #endif #if MG_ENABLE_DNS_SERVER @@ -11854,7 +11854,7 @@ int mg_dns_reply_record(struct mg_dns_reply *reply, #endif /* MG_ENABLE_DNS_SERVER */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_resolv.c" +#line 1 "src/mg_resolv.c" #endif #if MG_ENABLE_ASYNC_RESOLVER @@ -12145,7 +12145,7 @@ void mg_set_nameserver(struct mg_mgr *mgr, const char *nameserver) { #endif /* MG_ENABLE_ASYNC_RESOLVER */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_coap.c" +#line 1 "src/mg_coap.c" #endif /* Amalgamated: #include "mg_internal.h" */ @@ -12729,7 +12729,7 @@ int mg_set_protocol_coap(struct mg_connection *nc) { #endif /* MG_ENABLE_COAP */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_sntp.c" +#line 1 "src/mg_sntp.c" #endif /* Amalgamated: #include "mg_internal.h" */ @@ -13016,7 +13016,7 @@ struct mg_connection *mg_sntp_get_time(struct mg_mgr *mgr, #endif /* MG_ENABLE_SNTP */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_socks.c" +#line 1 "src/mg_socks.c" #endif #if MG_ENABLE_SOCKS @@ -13174,7 +13174,7 @@ void mg_set_protocol_socks(struct mg_connection *c) { } #endif #ifdef MG_MODULE_LINES -#line 1 "common/platforms/cc3200/cc3200_libc.c" +#line 1 "src/common/platforms/cc3200/cc3200_libc.c" #endif #if CS_PLATFORM == CS_P_CC3200 @@ -13276,7 +13276,7 @@ int _isatty(int fd) { #endif /* CS_PLATFORM == CS_P_CC3200 */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/msp432/msp432_libc.c" +#line 1 "src/common/platforms/msp432/msp432_libc.c" #endif #if CS_PLATFORM == CS_P_MSP432 @@ -13293,7 +13293,7 @@ int gettimeofday(struct timeval *tp, void *tzp) { #endif /* CS_PLATFORM == CS_P_MSP432 */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/nrf5/nrf5_libc.c" +#line 1 "src/common/platforms/nrf5/nrf5_libc.c" #endif #if (CS_PLATFORM == CS_P_NRF51 || CS_PLATFORM == CS_P_NRF52) && \ @@ -13306,7 +13306,7 @@ int gettimeofday(struct timeval *tp, void *tzp) { } #endif #ifdef MG_MODULE_LINES -#line 1 "common/platforms/simplelink/sl_fs_slfs.h" +#line 1 "src/common/platforms/simplelink/sl_fs_slfs.h" #endif #ifndef CS_COMMON_PLATFORMS_SIMPLELINK_SL_FS_SLFS_H_ @@ -13341,7 +13341,7 @@ void fs_slfs_unset_file_flags(const char *name); #endif /* CS_COMMON_PLATFORMS_SIMPLELINK_SL_FS_SLFS_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/simplelink/sl_fs_slfs.c" +#line 1 "src/common/platforms/simplelink/sl_fs_slfs.c" #endif /* Standard libc interface to TI SimpleLink FS. */ @@ -13630,7 +13630,7 @@ void fs_slfs_unset_file_flags(const char *name) { #endif /* defined(MG_FS_SLFS) || defined(CC3200_FS_SLFS) */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/simplelink/sl_fs.c" +#line 1 "src/common/platforms/simplelink/sl_fs.c" #endif #if MG_NET_IF == MG_NET_IF_SIMPLELINK && \ @@ -14040,7 +14040,7 @@ int sl_fs_init(void) { #endif /* MG_NET_IF == MG_NET_IF_SIMPLELINK && (defined(MG_FS_SLFS) || \ defined(MG_FS_SPIFFS)) */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/simplelink/sl_socket.c" +#line 1 "src/common/platforms/simplelink/sl_socket.c" #endif #if MG_NET_IF == MG_NET_IF_SIMPLELINK @@ -14087,7 +14087,7 @@ int inet_pton(int af, const char *src, void *dst) { #endif /* MG_NET_IF == MG_NET_IF_SIMPLELINK */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/simplelink/sl_mg_task.c" +#line 1 "src/common/platforms/simplelink/sl_mg_task.c" #endif #if MG_NET_IF == MG_NET_IF_SIMPLELINK && !defined(MG_SIMPLELINK_NO_OSI) @@ -14142,7 +14142,7 @@ void mg_run_in_task(void (*cb)(struct mg_mgr *mgr, void *arg), void *cb_arg) { #endif /* MG_NET_IF == MG_NET_IF_SIMPLELINK && !defined(MG_SIMPLELINK_NO_OSI) \ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/simplelink/sl_net_if.h" +#line 1 "src/common/platforms/simplelink/sl_net_if.h" #endif #ifndef CS_COMMON_PLATFORMS_SIMPLELINK_SL_NET_IF_H_ @@ -14166,7 +14166,7 @@ extern const struct mg_iface_vtable mg_simplelink_iface_vtable; #endif /* CS_COMMON_PLATFORMS_SIMPLELINK_SL_NET_IF_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/simplelink/sl_net_if.c" +#line 1 "src/common/platforms/simplelink/sl_net_if.c" #endif /* Amalgamated: #include "common/platforms/simplelink/sl_net_if.h" */ @@ -14585,7 +14585,7 @@ const struct mg_iface_vtable mg_default_iface_vtable = MG_SL_IFACE_VTABLE; #endif /* MG_ENABLE_NET_IF_SIMPLELINK */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/simplelink/sl_ssl_if.c" +#line 1 "src/common/platforms/simplelink/sl_ssl_if.c" #endif #if MG_ENABLE_SSL && MG_SSL_IF == MG_SSL_IF_SIMPLELINK @@ -14823,7 +14823,7 @@ int sl_set_ssl_opts(int sock, struct mg_connection *nc) { #endif /* MG_ENABLE_SSL && MG_SSL_IF == MG_SSL_IF_SIMPLELINK */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/lwip/mg_lwip_net_if.h" +#line 1 "src/common/platforms/lwip/mg_lwip_net_if.h" #endif #ifndef CS_COMMON_PLATFORMS_LWIP_MG_NET_IF_LWIP_H_ @@ -14875,7 +14875,7 @@ void mg_lwip_mgr_schedule_poll(struct mg_mgr *mgr); #endif /* CS_COMMON_PLATFORMS_LWIP_MG_NET_IF_LWIP_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/lwip/mg_lwip_net_if.c" +#line 1 "src/common/platforms/lwip/mg_lwip_net_if.c" #endif #if MG_ENABLE_NET_IF_LWIP_LOW_LEVEL @@ -15608,7 +15608,7 @@ const struct mg_iface_vtable mg_default_iface_vtable = MG_LWIP_IFACE_VTABLE; #endif /* MG_ENABLE_NET_IF_LWIP_LOW_LEVEL */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/lwip/mg_lwip_ev_mgr.c" +#line 1 "src/common/platforms/lwip/mg_lwip_ev_mgr.c" #endif #if MG_NET_IF == MG_NET_IF_LWIP_LOW_LEVEL @@ -15768,7 +15768,7 @@ time_t mg_lwip_if_poll(struct mg_iface *iface, int timeout_ms) { #endif /* MG_NET_IF == MG_NET_IF_LWIP_LOW_LEVEL */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/wince/wince_libc.c" +#line 1 "src/common/platforms/wince/wince_libc.c" #endif #ifdef WINCE @@ -15841,7 +15841,7 @@ static void mg_gmt_time_string(char *buf, size_t buf_len, time_t *t) { #endif #ifdef MG_MODULE_LINES -#line 1 "common/platforms/pic32/pic32_net_if.h" +#line 1 "src/common/platforms/pic32/pic32_net_if.h" #endif #ifndef CS_COMMON_PLATFORMS_PIC32_NET_IF_H_ @@ -15865,7 +15865,7 @@ extern const struct mg_iface_vtable mg_pic32_iface_vtable; #endif /* CS_COMMON_PLATFORMS_PIC32_NET_IF_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/pic32/pic32_net_if.c" +#line 1 "src/common/platforms/pic32/pic32_net_if.c" #endif #if MG_ENABLE_NET_IF_PIC32 @@ -16156,7 +16156,7 @@ const struct mg_iface_vtable mg_default_iface_vtable = MG_PIC32_IFACE_VTABLE; #endif /* MG_ENABLE_NET_IF_PIC32 */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/windows/windows_direct.c" +#line 1 "src/common/platforms/windows/windows_direct.c" #endif #ifdef _WIN32 diff --git a/mongoose.h b/mongoose.h index 3ebba00ab..7808e914a 100644 --- a/mongoose.h +++ b/mongoose.h @@ -18,7 +18,7 @@ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_common.h" +#line 1 "src/mg_common.h" #endif #ifndef CS_MONGOOSE_SRC_COMMON_H_ #define CS_MONGOOSE_SRC_COMMON_H_ @@ -32,7 +32,7 @@ #endif /* CS_MONGOOSE_SRC_COMMON_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platform.h" +#line 1 "src/common/platform.h" #endif #ifndef CS_COMMON_PLATFORM_H_ #define CS_COMMON_PLATFORM_H_ @@ -174,7 +174,7 @@ #endif /* CS_COMMON_PLATFORM_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_windows.h" +#line 1 "src/common/platforms/platform_windows.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_WINDOWS_H_ #define CS_COMMON_PLATFORMS_PLATFORM_WINDOWS_H_ @@ -360,7 +360,7 @@ unsigned int sleep(unsigned int seconds); #endif /* CS_PLATFORM == CS_P_WINDOWS */ #endif /* CS_COMMON_PLATFORMS_PLATFORM_WINDOWS_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_unix.h" +#line 1 "src/common/platforms/platform_unix.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_UNIX_H_ #define CS_COMMON_PLATFORMS_PLATFORM_UNIX_H_ @@ -508,7 +508,7 @@ typedef struct stat cs_stat_t; #endif /* CS_PLATFORM == CS_P_UNIX */ #endif /* CS_COMMON_PLATFORMS_PLATFORM_UNIX_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_esp32.h" +#line 1 "src/common/platforms/platform_esp32.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_ESP32_H_ @@ -549,7 +549,7 @@ typedef struct stat cs_stat_t; #endif /* CS_PLATFORM == CS_P_ESP32 */ #endif /* CS_COMMON_PLATFORMS_PLATFORM_ESP32_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_esp8266.h" +#line 1 "src/common/platforms/platform_esp8266.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_ESP8266_H_ @@ -606,7 +606,7 @@ typedef struct stat cs_stat_t; #endif /* CS_PLATFORM == CS_P_ESP8266 */ #endif /* CS_COMMON_PLATFORMS_PLATFORM_ESP8266_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_cc3100.h" +#line 1 "src/common/platforms/platform_cc3100.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_CC3100_H_ @@ -651,7 +651,7 @@ int inet_pton(int af, const char *src, void *dst); #endif /* CS_PLATFORM == CS_P_CC3100 */ #endif /* CS_COMMON_PLATFORMS_PLATFORM_CC3100_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_cc3200.h" +#line 1 "src/common/platforms/platform_cc3200.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_CC3200_H_ @@ -772,7 +772,7 @@ int stat(const char *pathname, struct stat *st); #endif /* CS_PLATFORM == CS_P_CC3200 */ #endif /* CS_COMMON_PLATFORMS_PLATFORM_CC3200_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_cc3220.h" +#line 1 "src/common/platforms/platform_cc3220.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_CC3220_H_ @@ -880,7 +880,7 @@ int stat(const char *pathname, struct stat *st); #endif /* CS_PLATFORM == CS_P_CC3220 */ #endif /* CS_COMMON_PLATFORMS_PLATFORM_CC3200_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_msp432.h" +#line 1 "src/common/platforms/platform_msp432.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_MSP432_H_ @@ -984,7 +984,7 @@ int _stat(const char *pathname, struct stat *st); #endif /* CS_PLATFORM == CS_P_MSP432 */ #endif /* CS_COMMON_PLATFORMS_PLATFORM_MSP432_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_tm4c129.h" +#line 1 "src/common/platforms/platform_tm4c129.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_TM4C129_H_ @@ -1040,7 +1040,7 @@ typedef struct stat cs_stat_t; #endif /* CS_PLATFORM == CS_P_TM4C129 */ #endif /* CS_COMMON_PLATFORMS_PLATFORM_TM4C129_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_mbed.h" +#line 1 "src/common/platforms/platform_mbed.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_MBED_H_ @@ -1120,7 +1120,7 @@ in_addr_t inet_addr(const char *cp); #endif /* CS_PLATFORM == CS_P_MBED */ #endif /* CS_COMMON_PLATFORMS_PLATFORM_MBED_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_nrf51.h" +#line 1 "src/common/platforms/platform_nrf51.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_NRF51_H_ #define CS_COMMON_PLATFORMS_PLATFORM_NRF51_H_ @@ -1161,7 +1161,7 @@ int gettimeofday(struct timeval *tp, void *tzp); #endif /* CS_PLATFORM == CS_P_NRF51 */ #endif /* CS_COMMON_PLATFORMS_PLATFORM_NRF51_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_nrf52.h" +#line 1 "src/common/platforms/platform_nrf52.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_NRF52_H_ #define CS_COMMON_PLATFORMS_PLATFORM_NRF52_H_ @@ -1205,7 +1205,7 @@ int gettimeofday(struct timeval *tp, void *tzp); #endif /* CS_PLATFORM == CS_P_NRF52 */ #endif /* CS_COMMON_PLATFORMS_PLATFORM_NRF52_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/simplelink/cs_simplelink.h" +#line 1 "src/common/platforms/simplelink/cs_simplelink.h" #endif #ifndef CS_COMMON_PLATFORMS_SIMPLELINK_CS_SIMPLELINK_H_ @@ -1368,7 +1368,7 @@ int slfs_open(const unsigned char *fname, uint32_t flags, uint32_t *token); #endif /* CS_COMMON_PLATFORMS_SIMPLELINK_CS_SIMPLELINK_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_wince.h" +#line 1 "src/common/platforms/platform_wince.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_WINCE_H_ #define CS_COMMON_PLATFORMS_PLATFORM_WINCE_H_ @@ -1572,7 +1572,7 @@ const char *strerror(); #endif /* CS_PLATFORM == CS_P_WINCE */ #endif /* CS_COMMON_PLATFORMS_PLATFORM_WINCE_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_nxp_lpc.h" +#line 1 "src/common/platforms/platform_nxp_lpc.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_NXP_LPC_H_ @@ -1624,7 +1624,7 @@ typedef struct stat cs_stat_t; #endif /* CS_PLATFORM == CS_P_NXP_LPC */ #endif /* CS_COMMON_PLATFORMS_PLATFORM_NXP_LPC_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_nxp_kinetis.h" +#line 1 "src/common/platforms/platform_nxp_kinetis.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_NXP_KINETIS_H_ @@ -1654,7 +1654,7 @@ typedef struct stat cs_stat_t; #endif /* CS_PLATFORM == CS_P_NXP_KINETIS */ #endif /* CS_COMMON_PLATFORMS_PLATFORM_NXP_KINETIS_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_pic32.h" +#line 1 "src/common/platforms/platform_pic32.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_PIC32_H_ @@ -1690,7 +1690,7 @@ char *inet_ntoa(struct in_addr in); #endif /* CS_COMMON_PLATFORMS_PLATFORM_PIC32_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_rs14100.h" +#line 1 "src/common/platforms/platform_rs14100.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_RS14100_H_ @@ -1738,7 +1738,7 @@ typedef struct stat cs_stat_t; #endif /* CS_PLATFORM == CS_P_RS14100 */ #endif /* CS_COMMON_PLATFORMS_PLATFORM_RS14100_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/platform_stm32.h" +#line 1 "src/common/platforms/platform_stm32.h" #endif #ifndef CS_COMMON_PLATFORMS_PLATFORM_STM32_H_ @@ -1776,7 +1776,7 @@ typedef struct stat cs_stat_t; #endif /* CS_PLATFORM == CS_P_STM32 */ #endif /* CS_COMMON_PLATFORMS_PLATFORM_STM32_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/platforms/lwip/mg_lwip.h" +#line 1 "src/common/platforms/lwip/mg_lwip.h" #endif #ifndef CS_COMMON_PLATFORMS_LWIP_MG_LWIP_H_ @@ -1843,7 +1843,7 @@ void mg_lwip_set_keepalive_params(struct mg_connection *nc, int idle, #endif /* CS_COMMON_PLATFORMS_LWIP_MG_LWIP_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/cs_md5.h" +#line 1 "src/common/cs_md5.h" #endif #ifndef CS_COMMON_MD5_H_ @@ -1875,7 +1875,7 @@ void cs_md5_final(unsigned char *md, cs_md5_ctx *c); #endif /* CS_COMMON_MD5_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/cs_sha1.h" +#line 1 "src/common/cs_sha1.h" #endif #ifndef CS_COMMON_SHA1_H_ @@ -1913,7 +1913,7 @@ void cs_hmac_sha1(const unsigned char *key, size_t key_len, #endif /* CS_COMMON_SHA1_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/cs_time.h" +#line 1 "src/common/cs_time.h" #endif #ifndef CS_COMMON_CS_TIME_H_ @@ -1942,7 +1942,7 @@ double cs_timegm(const struct tm *tm); #endif /* CS_COMMON_CS_TIME_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/mg_str.h" +#line 1 "src/common/mg_str.h" #endif #ifndef CS_COMMON_MG_STR_H_ @@ -2042,7 +2042,7 @@ int mg_str_starts_with(struct mg_str s, struct mg_str prefix); #endif /* CS_COMMON_MG_STR_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/mbuf.h" +#line 1 "src/common/mbuf.h" #endif /* @@ -2140,7 +2140,7 @@ void mbuf_trim(struct mbuf *); #endif /* CS_COMMON_MBUF_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/cs_base64.h" +#line 1 "src/common/cs_base64.h" #endif #ifndef CS_COMMON_CS_BASE64_H_ @@ -2193,7 +2193,7 @@ int cs_base64_decode(const unsigned char *s, int len, char *dst, int *dec_len); #endif /* CS_COMMON_CS_BASE64_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/str_util.h" +#line 1 "src/common/str_util.h" #endif #ifndef CS_COMMON_STR_UTIL_H_ @@ -2378,7 +2378,7 @@ size_t mg_match_prefix_n(const struct mg_str pattern, const struct mg_str str); #endif /* CS_COMMON_STR_UTIL_H_ */ #ifdef MG_MODULE_LINES -#line 1 "common/queue.h" +#line 1 "src/common/queue.h" #endif /* clang-format off */ /*- @@ -3133,7 +3133,7 @@ struct { \ #endif /* !_SYS_QUEUE_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_features.h" +#line 1 "src/mg_features.h" #endif #ifndef CS_MONGOOSE_SRC_FEATURES_H_ @@ -3308,7 +3308,7 @@ struct { \ #endif /* CS_MONGOOSE_SRC_FEATURES_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_net_if.h" +#line 1 "src/mg_net_if.h" #endif #ifndef CS_MONGOOSE_SRC_NET_IF_H_ @@ -3438,7 +3438,7 @@ double mg_mgr_min_timer(const struct mg_mgr *mgr); #endif /* CS_MONGOOSE_SRC_NET_IF_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_ssl_if.h" +#line 1 "src/mg_ssl_if.h" #endif #ifndef CS_MONGOOSE_SRC_SSL_IF_H_ @@ -3492,7 +3492,7 @@ int mg_ssl_if_write(struct mg_connection *nc, const void *data, size_t len); #endif /* CS_MONGOOSE_SRC_SSL_IF_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_net.h" +#line 1 "src/mg_net.h" #endif /* @@ -4078,7 +4078,7 @@ double mg_time(void); #endif /* CS_MONGOOSE_SRC_NET_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_uri.h" +#line 1 "src/mg_uri.h" #endif /* @@ -4144,7 +4144,7 @@ int mg_normalize_uri_path(const struct mg_str *in, struct mg_str *out); #endif /* __cplusplus */ #endif /* CS_MONGOOSE_SRC_URI_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_util.h" +#line 1 "src/mg_util.h" #endif /* @@ -4358,7 +4358,7 @@ struct mg_str mg_url_encode(const struct mg_str src); #endif /* __cplusplus */ #endif /* CS_MONGOOSE_SRC_UTIL_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_http.h" +#line 1 "src/mg_http.h" #endif /* @@ -4742,7 +4742,7 @@ void mg_http_send_digest_auth_request(struct mg_connection *c, #endif /* CS_MONGOOSE_SRC_HTTP_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_http_server.h" +#line 1 "src/mg_http_server.h" #endif /* * === Server API reference @@ -5306,7 +5306,7 @@ void mg_http_reverse_proxy(struct mg_connection *nc, #endif /* CS_MONGOOSE_SRC_HTTP_SERVER_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_http_client.h" +#line 1 "src/mg_http_client.h" #endif /* * === Client API reference @@ -5371,7 +5371,7 @@ int mg_http_create_digest_auth_header(char *buf, size_t buf_len, #endif /* __cplusplus */ #endif /* CS_MONGOOSE_SRC_HTTP_CLIENT_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_mqtt.h" +#line 1 "src/mg_mqtt.h" #endif /* @@ -5586,7 +5586,7 @@ int mg_mqtt_vmatch_topic_expression(const char *exp, struct mg_str topic); #endif /* CS_MONGOOSE_SRC_MQTT_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_mqtt_server.h" +#line 1 "src/mg_mqtt_server.h" #endif /* @@ -5677,7 +5677,7 @@ struct mg_mqtt_session *mg_mqtt_next(struct mg_mqtt_broker *brk, #endif /* MG_ENABLE_MQTT_BROKER */ #endif /* CS_MONGOOSE_SRC_MQTT_BROKER_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_dns.h" +#line 1 "src/mg_dns.h" #endif /* @@ -5841,7 +5841,7 @@ void mg_set_protocol_dns(struct mg_connection *nc); #endif /* __cplusplus */ #endif /* CS_MONGOOSE_SRC_DNS_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_dns_server.h" +#line 1 "src/mg_dns_server.h" #endif /* @@ -5934,7 +5934,7 @@ void mg_dns_send_reply(struct mg_connection *nc, struct mg_dns_reply *r); #endif /* MG_ENABLE_DNS_SERVER */ #endif /* CS_MONGOOSE_SRC_DNS_SERVER_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_resolv.h" +#line 1 "src/mg_resolv.h" #endif /* @@ -6014,7 +6014,7 @@ int mg_resolve_from_hosts_file(const char *host, union socket_address *usa); #endif /* __cplusplus */ #endif /* CS_MONGOOSE_SRC_RESOLV_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_coap.h" +#line 1 "src/mg_coap.h" #endif /* @@ -6166,7 +6166,7 @@ uint32_t mg_coap_compose(struct mg_coap_message *cm, struct mbuf *io); #endif /* CS_MONGOOSE_SRC_COAP_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_sntp.h" +#line 1 "src/mg_sntp.h" #endif #ifndef CS_MONGOOSE_SRC_SNTP_H_ @@ -6219,7 +6219,7 @@ struct mg_connection *mg_sntp_get_time(struct mg_mgr *mgr, #endif /* CS_MONGOOSE_SRC_SNTP_H_ */ #ifdef MG_MODULE_LINES -#line 1 "mongoose/src/mg_socks.h" +#line 1 "src/mg_socks.h" #endif #ifndef CS_MONGOOSE_SRC_SOCKS_H_ diff --git a/src/CPPLINT.cfg b/src/CPPLINT.cfg deleted file mode 100644 index 6809e557e..000000000 --- a/src/CPPLINT.cfg +++ /dev/null @@ -1 +0,0 @@ -exclude_files=sha1\.c diff --git a/src/common/cs_base64.c b/src/common/cs_base64.c new file mode 100644 index 000000000..0a8fc1efe --- /dev/null +++ b/src/common/cs_base64.c @@ -0,0 +1,201 @@ + +#ifndef EXCLUDE_COMMON + +#include "common/cs_base64.h" + +#include <string.h> + +#include "common/cs_dbg.h" + +/* ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ */ + +#define NUM_UPPERCASES ('Z' - 'A' + 1) +#define NUM_LETTERS (NUM_UPPERCASES * 2) +#define NUM_DIGITS ('9' - '0' + 1) + +/* + * Emit a base64 code char. + * + * Doesn't use memory, thus it's safe to use to safely dump memory in crashdumps + */ +static void cs_base64_emit_code(struct cs_base64_ctx *ctx, int v) { + if (v < NUM_UPPERCASES) { + ctx->b64_putc(v + 'A', ctx->user_data); + } else if (v < (NUM_LETTERS)) { + ctx->b64_putc(v - NUM_UPPERCASES + 'a', ctx->user_data); + } else if (v < (NUM_LETTERS + NUM_DIGITS)) { + ctx->b64_putc(v - NUM_LETTERS + '0', ctx->user_data); + } else { + ctx->b64_putc(v - NUM_LETTERS - NUM_DIGITS == 0 ? '+' : '/', + ctx->user_data); + } +} + +static void cs_base64_emit_chunk(struct cs_base64_ctx *ctx) { + int a, b, c; + + a = ctx->chunk[0]; + b = ctx->chunk[1]; + c = ctx->chunk[2]; + + cs_base64_emit_code(ctx, a >> 2); + cs_base64_emit_code(ctx, ((a & 3) << 4) | (b >> 4)); + if (ctx->chunk_size > 1) { + cs_base64_emit_code(ctx, (b & 15) << 2 | (c >> 6)); + } + if (ctx->chunk_size > 2) { + cs_base64_emit_code(ctx, c & 63); + } +} + +void cs_base64_init(struct cs_base64_ctx *ctx, cs_base64_putc_t b64_putc, + void *user_data) { + ctx->chunk_size = 0; + ctx->b64_putc = b64_putc; + ctx->user_data = user_data; +} + +void cs_base64_update(struct cs_base64_ctx *ctx, const char *str, size_t len) { + const unsigned char *src = (const unsigned char *) str; + size_t i; + for (i = 0; i < len; i++) { + ctx->chunk[ctx->chunk_size++] = src[i]; + if (ctx->chunk_size == 3) { + cs_base64_emit_chunk(ctx); + ctx->chunk_size = 0; + } + } +} + +void cs_base64_finish(struct cs_base64_ctx *ctx) { + if (ctx->chunk_size > 0) { + int i; + memset(&ctx->chunk[ctx->chunk_size], 0, 3 - ctx->chunk_size); + cs_base64_emit_chunk(ctx); + for (i = 0; i < (3 - ctx->chunk_size); i++) { + ctx->b64_putc('=', ctx->user_data); + } + } +} + +#define BASE64_ENCODE_BODY \ + static const char *b64 = \ + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; \ + int i, j, a, b, c; \ + \ + for (i = j = 0; i < src_len; i += 3) { \ + a = src[i]; \ + b = i + 1 >= src_len ? 0 : src[i + 1]; \ + c = i + 2 >= src_len ? 0 : src[i + 2]; \ + \ + BASE64_OUT(b64[a >> 2]); \ + BASE64_OUT(b64[((a & 3) << 4) | (b >> 4)]); \ + if (i + 1 < src_len) { \ + BASE64_OUT(b64[(b & 15) << 2 | (c >> 6)]); \ + } \ + if (i + 2 < src_len) { \ + BASE64_OUT(b64[c & 63]); \ + } \ + } \ + \ + while (j % 4 != 0) { \ + BASE64_OUT('='); \ + } \ + BASE64_FLUSH() + +#define BASE64_OUT(ch) \ + do { \ + dst[j++] = (ch); \ + } while (0) + +#define BASE64_FLUSH() \ + do { \ + dst[j++] = '\0'; \ + } while (0) + +void cs_base64_encode(const unsigned char *src, int src_len, char *dst) { + BASE64_ENCODE_BODY; +} + +#undef BASE64_OUT +#undef BASE64_FLUSH + +#if CS_ENABLE_STDIO +#define BASE64_OUT(ch) \ + do { \ + fprintf(f, "%c", (ch)); \ + j++; \ + } while (0) + +#define BASE64_FLUSH() + +void cs_fprint_base64(FILE *f, const unsigned char *src, int src_len) { + BASE64_ENCODE_BODY; +} + +#undef BASE64_OUT +#undef BASE64_FLUSH +#endif /* CS_ENABLE_STDIO */ + +/* Convert one byte of encoded base64 input stream to 6-bit chunk */ +static unsigned char from_b64(unsigned char ch) { + /* Inverse lookup map */ + static const unsigned char tab[128] = { + 255, 255, 255, 255, + 255, 255, 255, 255, /* 0 */ + 255, 255, 255, 255, + 255, 255, 255, 255, /* 8 */ + 255, 255, 255, 255, + 255, 255, 255, 255, /* 16 */ + 255, 255, 255, 255, + 255, 255, 255, 255, /* 24 */ + 255, 255, 255, 255, + 255, 255, 255, 255, /* 32 */ + 255, 255, 255, 62, + 255, 255, 255, 63, /* 40 */ + 52, 53, 54, 55, + 56, 57, 58, 59, /* 48 */ + 60, 61, 255, 255, + 255, 200, 255, 255, /* 56 '=' is 200, on index 61 */ + 255, 0, 1, 2, + 3, 4, 5, 6, /* 64 */ + 7, 8, 9, 10, + 11, 12, 13, 14, /* 72 */ + 15, 16, 17, 18, + 19, 20, 21, 22, /* 80 */ + 23, 24, 25, 255, + 255, 255, 255, 255, /* 88 */ + 255, 26, 27, 28, + 29, 30, 31, 32, /* 96 */ + 33, 34, 35, 36, + 37, 38, 39, 40, /* 104 */ + 41, 42, 43, 44, + 45, 46, 47, 48, /* 112 */ + 49, 50, 51, 255, + 255, 255, 255, 255, /* 120 */ + }; + return tab[ch & 127]; +} + +int cs_base64_decode(const unsigned char *s, int len, char *dst, int *dec_len) { + unsigned char a, b, c, d; + int orig_len = len; + char *orig_dst = dst; + while (len >= 4 && (a = from_b64(s[0])) != 255 && + (b = from_b64(s[1])) != 255 && (c = from_b64(s[2])) != 255 && + (d = from_b64(s[3])) != 255) { + s += 4; + len -= 4; + if (a == 200 || b == 200) break; /* '=' can't be there */ + *dst++ = a << 2 | b >> 4; + if (c == 200) break; + *dst++ = b << 4 | c >> 2; + if (d == 200) break; + *dst++ = c << 6 | d; + } + *dst = 0; + if (dec_len != NULL) *dec_len = (dst - orig_dst); + return orig_len - len; +} + +#endif /* EXCLUDE_COMMON */ diff --git a/src/common/cs_base64.h b/src/common/cs_base64.h new file mode 100644 index 000000000..4dd328c31 --- /dev/null +++ b/src/common/cs_base64.h @@ -0,0 +1,50 @@ + +#ifndef CS_COMMON_CS_BASE64_H_ +#define CS_COMMON_CS_BASE64_H_ + +#ifndef DISABLE_BASE64 +#define DISABLE_BASE64 0 +#endif + +#if !DISABLE_BASE64 + +#include <stdio.h> + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*cs_base64_putc_t)(char, void *); + +struct cs_base64_ctx { + /* cannot call it putc because it's a macro on some environments */ + cs_base64_putc_t b64_putc; + unsigned char chunk[3]; + int chunk_size; + void *user_data; +}; + +void cs_base64_init(struct cs_base64_ctx *ctx, cs_base64_putc_t putc, + void *user_data); +void cs_base64_update(struct cs_base64_ctx *ctx, const char *str, size_t len); +void cs_base64_finish(struct cs_base64_ctx *ctx); + +void cs_base64_encode(const unsigned char *src, int src_len, char *dst); +void cs_fprint_base64(FILE *f, const unsigned char *src, int src_len); + +/* + * Decodes a base64 string `s` length `len` into `dst`. + * `dst` must have enough space to hold the result. + * `*dec_len` will contain the resulting length of the string in `dst` + * while return value will return number of processed bytes in `src`. + * Return value == len indicates successful processing of all the data. + */ +int cs_base64_decode(const unsigned char *s, int len, char *dst, int *dec_len); + +#ifdef __cplusplus +} +#endif + +#endif /* DISABLE_BASE64 */ + +#endif /* CS_COMMON_CS_BASE64_H_ */ diff --git a/src/common/cs_dbg.c b/src/common/cs_dbg.c index 35c457e3d..c221e1f56 100644 --- a/src/common/cs_dbg.c +++ b/src/common/cs_dbg.c @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #include "common/cs_dbg.h" diff --git a/src/common/cs_dbg.h b/src/common/cs_dbg.h index 8422ca3be..493f63956 100644 --- a/src/common/cs_dbg.h +++ b/src/common/cs_dbg.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_CS_DBG_H_ #define CS_COMMON_CS_DBG_H_ diff --git a/src/common/cs_dirent.c b/src/common/cs_dirent.c new file mode 100644 index 000000000..66169ae9a --- /dev/null +++ b/src/common/cs_dirent.c @@ -0,0 +1,92 @@ + +#ifndef EXCLUDE_COMMON + +#include "common/mg_mem.h" +#include "common/cs_dirent.h" + +/* + * This file contains POSIX opendir/closedir/readdir API implementation + * for systems which do not natively support it (e.g. Windows). + */ + +#ifdef _WIN32 +struct win32_dir { + DIR d; + HANDLE handle; + WIN32_FIND_DATAW info; + struct dirent result; +}; + +DIR *opendir(const char *name) { + struct win32_dir *dir = NULL; + wchar_t wpath[MAX_PATH]; + DWORD attrs; + + if (name == NULL) { + SetLastError(ERROR_BAD_ARGUMENTS); + } else if ((dir = (struct win32_dir *) MG_MALLOC(sizeof(*dir))) == NULL) { + SetLastError(ERROR_NOT_ENOUGH_MEMORY); + } else { + to_wchar(name, wpath, ARRAY_SIZE(wpath)); + attrs = GetFileAttributesW(wpath); + if (attrs != 0xFFFFFFFF && (attrs & FILE_ATTRIBUTE_DIRECTORY)) { + (void) wcscat(wpath, L"\\*"); + dir->handle = FindFirstFileW(wpath, &dir->info); + dir->result.d_name[0] = '\0'; + } else { + MG_FREE(dir); + dir = NULL; + } + } + + return (DIR *) dir; +} + +int closedir(DIR *d) { + struct win32_dir *dir = (struct win32_dir *) d; + int result = 0; + + if (dir != NULL) { + if (dir->handle != INVALID_HANDLE_VALUE) + result = FindClose(dir->handle) ? 0 : -1; + MG_FREE(dir); + } else { + result = -1; + SetLastError(ERROR_BAD_ARGUMENTS); + } + + return result; +} + +struct dirent *readdir(DIR *d) { + struct win32_dir *dir = (struct win32_dir *) d; + struct dirent *result = NULL; + + if (dir) { + memset(&dir->result, 0, sizeof(dir->result)); + if (dir->handle != INVALID_HANDLE_VALUE) { + result = &dir->result; + (void) WideCharToMultiByte(CP_UTF8, 0, dir->info.cFileName, -1, + result->d_name, sizeof(result->d_name), NULL, + NULL); + + if (!FindNextFileW(dir->handle, &dir->info)) { + (void) FindClose(dir->handle); + dir->handle = INVALID_HANDLE_VALUE; + } + + } else { + SetLastError(ERROR_FILE_NOT_FOUND); + } + } else { + SetLastError(ERROR_BAD_ARGUMENTS); + } + + return result; +} +#endif + +#endif /* EXCLUDE_COMMON */ + +/* ISO C requires a translation unit to contain at least one declaration */ +typedef int cs_dirent_dummy; diff --git a/src/common/cs_dirent.h b/src/common/cs_dirent.h new file mode 100644 index 000000000..d4ac9a722 --- /dev/null +++ b/src/common/cs_dirent.h @@ -0,0 +1,35 @@ + +#ifndef CS_COMMON_CS_DIRENT_H_ +#define CS_COMMON_CS_DIRENT_H_ + +#include <limits.h> + +#include "common/platform.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#ifdef CS_DEFINE_DIRENT +typedef struct { int dummy; } DIR; + +struct dirent { + int d_ino; +#ifdef _WIN32 + char d_name[MAX_PATH]; +#else + /* TODO(rojer): Use PATH_MAX but make sure it's sane on every platform */ + char d_name[256]; +#endif +}; + +DIR *opendir(const char *dir_name); +int closedir(DIR *dir); +struct dirent *readdir(DIR *dir); +#endif /* CS_DEFINE_DIRENT */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* CS_COMMON_CS_DIRENT_H_ */ diff --git a/src/common/cs_endian.h b/src/common/cs_endian.h new file mode 100644 index 000000000..f3aab4efb --- /dev/null +++ b/src/common/cs_endian.h @@ -0,0 +1,28 @@ + +#ifndef CS_COMMON_CS_ENDIAN_H_ +#define CS_COMMON_CS_ENDIAN_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * clang with std=-c99 uses __LITTLE_ENDIAN, by default + * while for ex, RTOS gcc - LITTLE_ENDIAN, by default + * it depends on __USE_BSD, but let's have everything + */ +#if !defined(BYTE_ORDER) && defined(__BYTE_ORDER) +#define BYTE_ORDER __BYTE_ORDER +#ifndef LITTLE_ENDIAN +#define LITTLE_ENDIAN __LITTLE_ENDIAN +#endif /* LITTLE_ENDIAN */ +#ifndef BIG_ENDIAN +#define BIG_ENDIAN __LITTLE_ENDIAN +#endif /* BIG_ENDIAN */ +#endif /* BYTE_ORDER */ + +#ifdef __cplusplus +} +#endif + +#endif /* CS_COMMON_CS_ENDIAN_H_ */ diff --git a/src/common/cs_md5.h b/src/common/cs_md5.h index 302b03270..075a4b328 100644 --- a/src/common/cs_md5.h +++ b/src/common/cs_md5.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_MD5_H_ #define CS_COMMON_MD5_H_ diff --git a/src/common/cs_sha1.c b/src/common/cs_sha1.c new file mode 100644 index 000000000..7eab30225 --- /dev/null +++ b/src/common/cs_sha1.c @@ -0,0 +1,253 @@ +/* Copyright(c) By Steve Reid <steve@edmweb.com> */ +/* 100% Public Domain */ + +#include "common/cs_sha1.h" + +#if !CS_DISABLE_SHA1 && !defined(EXCLUDE_COMMON) + +#include "common/cs_endian.h" + +#define SHA1HANDSOFF +#if defined(__sun) +#include "common/solarisfixes.h" +#endif + +union char64long16 { + unsigned char c[64]; + uint32_t l[16]; +}; + +#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits)))) + +static uint32_t blk0(union char64long16 *block, int i) { +/* Forrest: SHA expect BIG_ENDIAN, swap if LITTLE_ENDIAN */ +#if BYTE_ORDER == LITTLE_ENDIAN + block->l[i] = + (rol(block->l[i], 24) & 0xFF00FF00) | (rol(block->l[i], 8) & 0x00FF00FF); +#endif + return block->l[i]; +} + +/* Avoid redefine warning (ARM /usr/include/sys/ucontext.h define R0~R4) */ +#undef blk +#undef R0 +#undef R1 +#undef R2 +#undef R3 +#undef R4 + +#define blk(i) \ + (block->l[i & 15] = rol(block->l[(i + 13) & 15] ^ block->l[(i + 8) & 15] ^ \ + block->l[(i + 2) & 15] ^ block->l[i & 15], \ + 1)) +#define R0(v, w, x, y, z, i) \ + z += ((w & (x ^ y)) ^ y) + blk0(block, i) + 0x5A827999 + rol(v, 5); \ + w = rol(w, 30); +#define R1(v, w, x, y, z, i) \ + z += ((w & (x ^ y)) ^ y) + blk(i) + 0x5A827999 + rol(v, 5); \ + w = rol(w, 30); +#define R2(v, w, x, y, z, i) \ + z += (w ^ x ^ y) + blk(i) + 0x6ED9EBA1 + rol(v, 5); \ + w = rol(w, 30); +#define R3(v, w, x, y, z, i) \ + z += (((w | x) & y) | (w & x)) + blk(i) + 0x8F1BBCDC + rol(v, 5); \ + w = rol(w, 30); +#define R4(v, w, x, y, z, i) \ + z += (w ^ x ^ y) + blk(i) + 0xCA62C1D6 + rol(v, 5); \ + w = rol(w, 30); + +void cs_sha1_transform(uint32_t state[5], const unsigned char buffer[64]) { + uint32_t a, b, c, d, e; + union char64long16 block[1]; + + memcpy(block, buffer, 64); + a = state[0]; + b = state[1]; + c = state[2]; + d = state[3]; + e = state[4]; + R0(a, b, c, d, e, 0); + R0(e, a, b, c, d, 1); + R0(d, e, a, b, c, 2); + R0(c, d, e, a, b, 3); + R0(b, c, d, e, a, 4); + R0(a, b, c, d, e, 5); + R0(e, a, b, c, d, 6); + R0(d, e, a, b, c, 7); + R0(c, d, e, a, b, 8); + R0(b, c, d, e, a, 9); + R0(a, b, c, d, e, 10); + R0(e, a, b, c, d, 11); + R0(d, e, a, b, c, 12); + R0(c, d, e, a, b, 13); + R0(b, c, d, e, a, 14); + R0(a, b, c, d, e, 15); + R1(e, a, b, c, d, 16); + R1(d, e, a, b, c, 17); + R1(c, d, e, a, b, 18); + R1(b, c, d, e, a, 19); + R2(a, b, c, d, e, 20); + R2(e, a, b, c, d, 21); + R2(d, e, a, b, c, 22); + R2(c, d, e, a, b, 23); + R2(b, c, d, e, a, 24); + R2(a, b, c, d, e, 25); + R2(e, a, b, c, d, 26); + R2(d, e, a, b, c, 27); + R2(c, d, e, a, b, 28); + R2(b, c, d, e, a, 29); + R2(a, b, c, d, e, 30); + R2(e, a, b, c, d, 31); + R2(d, e, a, b, c, 32); + R2(c, d, e, a, b, 33); + R2(b, c, d, e, a, 34); + R2(a, b, c, d, e, 35); + R2(e, a, b, c, d, 36); + R2(d, e, a, b, c, 37); + R2(c, d, e, a, b, 38); + R2(b, c, d, e, a, 39); + R3(a, b, c, d, e, 40); + R3(e, a, b, c, d, 41); + R3(d, e, a, b, c, 42); + R3(c, d, e, a, b, 43); + R3(b, c, d, e, a, 44); + R3(a, b, c, d, e, 45); + R3(e, a, b, c, d, 46); + R3(d, e, a, b, c, 47); + R3(c, d, e, a, b, 48); + R3(b, c, d, e, a, 49); + R3(a, b, c, d, e, 50); + R3(e, a, b, c, d, 51); + R3(d, e, a, b, c, 52); + R3(c, d, e, a, b, 53); + R3(b, c, d, e, a, 54); + R3(a, b, c, d, e, 55); + R3(e, a, b, c, d, 56); + R3(d, e, a, b, c, 57); + R3(c, d, e, a, b, 58); + R3(b, c, d, e, a, 59); + R4(a, b, c, d, e, 60); + R4(e, a, b, c, d, 61); + R4(d, e, a, b, c, 62); + R4(c, d, e, a, b, 63); + R4(b, c, d, e, a, 64); + R4(a, b, c, d, e, 65); + R4(e, a, b, c, d, 66); + R4(d, e, a, b, c, 67); + R4(c, d, e, a, b, 68); + R4(b, c, d, e, a, 69); + R4(a, b, c, d, e, 70); + R4(e, a, b, c, d, 71); + R4(d, e, a, b, c, 72); + R4(c, d, e, a, b, 73); + R4(b, c, d, e, a, 74); + R4(a, b, c, d, e, 75); + R4(e, a, b, c, d, 76); + R4(d, e, a, b, c, 77); + R4(c, d, e, a, b, 78); + R4(b, c, d, e, a, 79); + state[0] += a; + state[1] += b; + state[2] += c; + state[3] += d; + state[4] += e; + /* Erase working structures. The order of operations is important, + * used to ensure that compiler doesn't optimize those out. */ + memset(block, 0, sizeof(block)); + a = b = c = d = e = 0; + (void) a; + (void) b; + (void) c; + (void) d; + (void) e; +} + +void cs_sha1_init(cs_sha1_ctx *context) { + context->state[0] = 0x67452301; + context->state[1] = 0xEFCDAB89; + context->state[2] = 0x98BADCFE; + context->state[3] = 0x10325476; + context->state[4] = 0xC3D2E1F0; + context->count[0] = context->count[1] = 0; +} + +void cs_sha1_update(cs_sha1_ctx *context, const unsigned char *data, + uint32_t len) { + uint32_t i, j; + + j = context->count[0]; + if ((context->count[0] += len << 3) < j) context->count[1]++; + context->count[1] += (len >> 29); + j = (j >> 3) & 63; + if ((j + len) > 63) { + memcpy(&context->buffer[j], data, (i = 64 - j)); + cs_sha1_transform(context->state, context->buffer); + for (; i + 63 < len; i += 64) { + cs_sha1_transform(context->state, &data[i]); + } + j = 0; + } else + i = 0; + memcpy(&context->buffer[j], &data[i], len - i); +} + +void cs_sha1_final(unsigned char digest[20], cs_sha1_ctx *context) { + unsigned i; + unsigned char finalcount[8], c; + + for (i = 0; i < 8; i++) { + finalcount[i] = (unsigned char) ((context->count[(i >= 4 ? 0 : 1)] >> + ((3 - (i & 3)) * 8)) & + 255); + } + c = 0200; + cs_sha1_update(context, &c, 1); + while ((context->count[0] & 504) != 448) { + c = 0000; + cs_sha1_update(context, &c, 1); + } + cs_sha1_update(context, finalcount, 8); + for (i = 0; i < 20; i++) { + digest[i] = + (unsigned char) ((context->state[i >> 2] >> ((3 - (i & 3)) * 8)) & 255); + } + memset(context, '\0', sizeof(*context)); + memset(&finalcount, '\0', sizeof(finalcount)); +} + +void cs_hmac_sha1(const unsigned char *key, size_t keylen, + const unsigned char *data, size_t datalen, + unsigned char out[20]) { + cs_sha1_ctx ctx; + unsigned char buf1[64], buf2[64], tmp_key[20], i; + + if (keylen > sizeof(buf1)) { + cs_sha1_init(&ctx); + cs_sha1_update(&ctx, key, keylen); + cs_sha1_final(tmp_key, &ctx); + key = tmp_key; + keylen = sizeof(tmp_key); + } + + memset(buf1, 0, sizeof(buf1)); + memset(buf2, 0, sizeof(buf2)); + memcpy(buf1, key, keylen); + memcpy(buf2, key, keylen); + + for (i = 0; i < sizeof(buf1); i++) { + buf1[i] ^= 0x36; + buf2[i] ^= 0x5c; + } + + cs_sha1_init(&ctx); + cs_sha1_update(&ctx, buf1, sizeof(buf1)); + cs_sha1_update(&ctx, data, datalen); + cs_sha1_final(out, &ctx); + + cs_sha1_init(&ctx); + cs_sha1_update(&ctx, buf2, sizeof(buf2)); + cs_sha1_update(&ctx, out, 20); + cs_sha1_final(out, &ctx); +} + +#endif /* EXCLUDE_COMMON */ diff --git a/src/common/cs_sha1.h b/src/common/cs_sha1.h new file mode 100644 index 000000000..1250a01f3 --- /dev/null +++ b/src/common/cs_sha1.h @@ -0,0 +1,35 @@ + +#ifndef CS_COMMON_SHA1_H_ +#define CS_COMMON_SHA1_H_ + +#ifndef CS_DISABLE_SHA1 +#define CS_DISABLE_SHA1 0 +#endif + +#if !CS_DISABLE_SHA1 + +#include "common/platform.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +typedef struct { + uint32_t state[5]; + uint32_t count[2]; + unsigned char buffer[64]; +} cs_sha1_ctx; + +void cs_sha1_init(cs_sha1_ctx *); +void cs_sha1_update(cs_sha1_ctx *, const unsigned char *data, uint32_t len); +void cs_sha1_final(unsigned char digest[20], cs_sha1_ctx *); +void cs_hmac_sha1(const unsigned char *key, size_t key_len, + const unsigned char *text, size_t text_len, + unsigned char out[20]); +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* CS_DISABLE_SHA1 */ + +#endif /* CS_COMMON_SHA1_H_ */ diff --git a/src/common/cs_time.c b/src/common/cs_time.c index f14de39e9..8160febf9 100644 --- a/src/common/cs_time.c +++ b/src/common/cs_time.c @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #include "common/cs_time.h" diff --git a/src/common/cs_time.h b/src/common/cs_time.h index eba539577..0b4975d99 100644 --- a/src/common/cs_time.h +++ b/src/common/cs_time.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_CS_TIME_H_ #define CS_COMMON_CS_TIME_H_ diff --git a/src/common/mbuf.c b/src/common/mbuf.c new file mode 100644 index 000000000..9ae977e88 --- /dev/null +++ b/src/common/mbuf.c @@ -0,0 +1,135 @@ + +#ifndef EXCLUDE_COMMON + +#include <assert.h> +#include <string.h> +#include "common/mbuf.h" + +#ifndef MBUF_REALLOC +#define MBUF_REALLOC realloc +#endif + +#ifndef MBUF_FREE +#define MBUF_FREE free +#endif + +void mbuf_init(struct mbuf *mbuf, size_t initial_size) WEAK; +void mbuf_init(struct mbuf *mbuf, size_t initial_size) { + mbuf->len = mbuf->size = 0; + mbuf->buf = NULL; + mbuf_resize(mbuf, initial_size); +} + +void mbuf_free(struct mbuf *mbuf) WEAK; +void mbuf_free(struct mbuf *mbuf) { + if (mbuf->buf != NULL) { + MBUF_FREE(mbuf->buf); + mbuf_init(mbuf, 0); + } +} + +void mbuf_resize(struct mbuf *a, size_t new_size) WEAK; +void mbuf_resize(struct mbuf *a, size_t new_size) { + if (new_size > a->size || (new_size < a->size && new_size >= a->len)) { + char *buf = (char *) MBUF_REALLOC(a->buf, new_size); + /* + * In case realloc fails, there's not much we can do, except keep things as + * they are. Note that NULL is a valid return value from realloc when + * size == 0, but that is covered too. + */ + if (buf == NULL && new_size != 0) return; + a->buf = buf; + a->size = new_size; + } +} + +void mbuf_trim(struct mbuf *mbuf) WEAK; +void mbuf_trim(struct mbuf *mbuf) { + mbuf_resize(mbuf, mbuf->len); +} + +size_t mbuf_insert(struct mbuf *a, size_t off, const void *buf, size_t) WEAK; +size_t mbuf_insert(struct mbuf *a, size_t off, const void *buf, size_t len) { + char *p = NULL; + + assert(a != NULL); + assert(a->len <= a->size); + assert(off <= a->len); + + /* check overflow */ + if (~(size_t) 0 - (size_t) a->buf < len) return 0; + + if (a->len + len <= a->size) { + memmove(a->buf + off + len, a->buf + off, a->len - off); + if (buf != NULL) { + memcpy(a->buf + off, buf, len); + } + a->len += len; + } else { + size_t min_size = (a->len + len); + size_t new_size = (size_t)(min_size * MBUF_SIZE_MULTIPLIER); + if (new_size - min_size > MBUF_SIZE_MAX_HEADROOM) { + new_size = min_size + MBUF_SIZE_MAX_HEADROOM; + } + p = (char *) MBUF_REALLOC(a->buf, new_size); + if (p == NULL && new_size != min_size) { + new_size = min_size; + p = (char *) MBUF_REALLOC(a->buf, new_size); + } + if (p != NULL) { + a->buf = p; + if (off != a->len) { + memmove(a->buf + off + len, a->buf + off, a->len - off); + } + if (buf != NULL) memcpy(a->buf + off, buf, len); + a->len += len; + a->size = new_size; + } else { + len = 0; + } + } + + return len; +} + +size_t mbuf_append(struct mbuf *a, const void *buf, size_t len) WEAK; +size_t mbuf_append(struct mbuf *a, const void *buf, size_t len) { + return mbuf_insert(a, a->len, buf, len); +} + +size_t mbuf_append_and_free(struct mbuf *a, void *buf, size_t len) WEAK; +size_t mbuf_append_and_free(struct mbuf *a, void *data, size_t len) { + size_t ret; + /* Optimization: if the buffer is currently empty, + * take over the user-provided buffer. */ + if (a->len == 0) { + if (a->buf != NULL) free(a->buf); + a->buf = (char *) data; + a->len = a->size = len; + return len; + } + ret = mbuf_insert(a, a->len, data, len); + free(data); + return ret; +} + +void mbuf_remove(struct mbuf *mb, size_t n) WEAK; +void mbuf_remove(struct mbuf *mb, size_t n) { + if (n > 0 && n <= mb->len) { + memmove(mb->buf, mb->buf + n, mb->len - n); + mb->len -= n; + } +} + +void mbuf_clear(struct mbuf *mb) WEAK; +void mbuf_clear(struct mbuf *mb) { + mb->len = 0; +} + +void mbuf_move(struct mbuf *from, struct mbuf *to) WEAK; +void mbuf_move(struct mbuf *from, struct mbuf *to) { + memcpy(to, from, sizeof(*to)); + memset(from, 0, sizeof(*from)); +} + +#endif /* EXCLUDE_COMMON */ diff --git a/src/common/mbuf.h b/src/common/mbuf.h new file mode 100644 index 000000000..45de8111b --- /dev/null +++ b/src/common/mbuf.h @@ -0,0 +1,95 @@ + +/* + * Mbufs are mutable/growing memory buffers, like C++ strings. + * Mbuf can append data to the end of a buffer or insert data into arbitrary + * position in the middle of a buffer. The buffer grows automatically when + * needed. + */ + +#ifndef CS_COMMON_MBUF_H_ +#define CS_COMMON_MBUF_H_ + +#include <stdlib.h> +#include "common/platform.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#ifndef MBUF_SIZE_MULTIPLIER +#define MBUF_SIZE_MULTIPLIER 1.5 +#endif + +#ifndef MBUF_SIZE_MAX_HEADROOM +#ifdef BUFSIZ +#define MBUF_SIZE_MAX_HEADROOM BUFSIZ +#else +#define MBUF_SIZE_MAX_HEADROOM 1024 +#endif +#endif + +/* Memory buffer descriptor */ +struct mbuf { + char *buf; /* Buffer pointer */ + size_t len; /* Data length. Data is located between offset 0 and len. */ + size_t size; /* Buffer size allocated by realloc(1). Must be >= len */ +}; + +/* + * Initialises an Mbuf. + * `initial_capacity` specifies the initial capacity of the mbuf. + */ +void mbuf_init(struct mbuf *, size_t initial_capacity); + +/* Frees the space allocated for the mbuffer and resets the mbuf structure. */ +void mbuf_free(struct mbuf *); + +/* + * Appends data to the Mbuf. + * + * Returns the number of bytes appended or 0 if out of memory. + */ +size_t mbuf_append(struct mbuf *, const void *data, size_t data_size); + +/* + * Appends data to the Mbuf and frees it (data must be heap-allocated). + * + * Returns the number of bytes appended or 0 if out of memory. + * data is freed irrespective of return value. + */ +size_t mbuf_append_and_free(struct mbuf *, void *data, size_t data_size); + +/* + * Inserts data at a specified offset in the Mbuf. + * + * Existing data will be shifted forwards and the buffer will + * be grown if necessary. + * Returns the number of bytes inserted. + */ +size_t mbuf_insert(struct mbuf *, size_t, const void *, size_t); + +/* Removes `data_size` bytes from the beginning of the buffer. */ +void mbuf_remove(struct mbuf *, size_t data_size); + +/* + * Resizes an Mbuf. + * + * If `new_size` is smaller than buffer's `len`, the + * resize is not performed. + */ +void mbuf_resize(struct mbuf *, size_t new_size); + +/* Moves the state from one mbuf to the other. */ +void mbuf_move(struct mbuf *from, struct mbuf *to); + +/* Removes all the data from mbuf (if any). */ +void mbuf_clear(struct mbuf *); + +/* Shrinks an Mbuf by resizing its `size` to `len`. */ +void mbuf_trim(struct mbuf *); + +#if defined(__cplusplus) +} +#endif /* __cplusplus */ + +#endif /* CS_COMMON_MBUF_H_ */ diff --git a/src/common/mg_mem.h b/src/common/mg_mem.h index 7fe8381d4..dc5e5cf39 100644 --- a/src/common/mg_mem.h +++ b/src/common/mg_mem.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_MG_MEM_H_ #define CS_COMMON_MG_MEM_H_ diff --git a/src/common/mg_str.c b/src/common/mg_str.c new file mode 100644 index 000000000..f69b0fd49 --- /dev/null +++ b/src/common/mg_str.c @@ -0,0 +1,162 @@ + +#include "common/mg_mem.h" +#include "common/mg_str.h" +#include "common/platform.h" + +#include <ctype.h> +#include <stdlib.h> +#include <string.h> + +int mg_ncasecmp(const char *s1, const char *s2, size_t len) WEAK; + +struct mg_str mg_mk_str(const char *s) WEAK; +struct mg_str mg_mk_str(const char *s) { + struct mg_str ret = {s, 0}; + if (s != NULL) ret.len = strlen(s); + return ret; +} + +struct mg_str mg_mk_str_n(const char *s, size_t len) WEAK; +struct mg_str mg_mk_str_n(const char *s, size_t len) { + struct mg_str ret = {s, len}; + return ret; +} + +int mg_vcmp(const struct mg_str *str1, const char *str2) WEAK; +int mg_vcmp(const struct mg_str *str1, const char *str2) { + size_t n2 = strlen(str2), n1 = str1->len; + int r = strncmp(str1->p, str2, (n1 < n2) ? n1 : n2); + if (r == 0) { + return n1 - n2; + } + return r; +} + +int mg_vcasecmp(const struct mg_str *str1, const char *str2) WEAK; +int mg_vcasecmp(const struct mg_str *str1, const char *str2) { + size_t n2 = strlen(str2), n1 = str1->len; + int r = mg_ncasecmp(str1->p, str2, (n1 < n2) ? n1 : n2); + if (r == 0) { + return n1 - n2; + } + return r; +} + +static struct mg_str mg_strdup_common(const struct mg_str s, + int nul_terminate) { + struct mg_str r = {NULL, 0}; + if (s.len > 0 && s.p != NULL) { + char *sc = (char *) MG_MALLOC(s.len + (nul_terminate ? 1 : 0)); + if (sc != NULL) { + memcpy(sc, s.p, s.len); + if (nul_terminate) sc[s.len] = '\0'; + r.p = sc; + r.len = s.len; + } + } + return r; +} + +struct mg_str mg_strdup(const struct mg_str s) WEAK; +struct mg_str mg_strdup(const struct mg_str s) { + return mg_strdup_common(s, 0 /* NUL-terminate */); +} + +struct mg_str mg_strdup_nul(const struct mg_str s) WEAK; +struct mg_str mg_strdup_nul(const struct mg_str s) { + return mg_strdup_common(s, 1 /* NUL-terminate */); +} + +const char *mg_strchr(const struct mg_str s, int c) WEAK; +const char *mg_strchr(const struct mg_str s, int c) { + size_t i; + for (i = 0; i < s.len; i++) { + if (s.p[i] == c) return &s.p[i]; + } + return NULL; +} + +int mg_strcmp(const struct mg_str str1, const struct mg_str str2) WEAK; +int mg_strcmp(const struct mg_str str1, const struct mg_str str2) { + size_t i = 0; + while (i < str1.len && i < str2.len) { + int c1 = str1.p[i]; + int c2 = str2.p[i]; + if (c1 < c2) return -1; + if (c1 > c2) return 1; + i++; + } + if (i < str1.len) return 1; + if (i < str2.len) return -1; + return 0; +} + +int mg_strncmp(const struct mg_str, const struct mg_str, size_t n) WEAK; +int mg_strncmp(const struct mg_str str1, const struct mg_str str2, size_t n) { + struct mg_str s1 = str1; + struct mg_str s2 = str2; + + if (s1.len > n) { + s1.len = n; + } + if (s2.len > n) { + s2.len = n; + } + return mg_strcmp(s1, s2); +} + +int mg_strcasecmp(const struct mg_str str1, const struct mg_str str2) WEAK; +int mg_strcasecmp(const struct mg_str str1, const struct mg_str str2) { + size_t i = 0; + while (i < str1.len && i < str2.len) { + int c1 = tolower((int) str1.p[i]); + int c2 = tolower((int) str2.p[i]); + if (c1 < c2) return -1; + if (c1 > c2) return 1; + i++; + } + if (i < str1.len) return 1; + if (i < str2.len) return -1; + return 0; +} + +void mg_strfree(struct mg_str *s) WEAK; +void mg_strfree(struct mg_str *s) { + char *sp = (char *) s->p; + s->p = NULL; + s->len = 0; + if (sp != NULL) free(sp); +} + +const char *mg_strstr(const struct mg_str haystack, + const struct mg_str needle) WEAK; +const char *mg_strstr(const struct mg_str haystack, + const struct mg_str needle) { + size_t i; + if (needle.len > haystack.len) return NULL; + for (i = 0; i <= haystack.len - needle.len; i++) { + if (memcmp(haystack.p + i, needle.p, needle.len) == 0) { + return haystack.p + i; + } + } + return NULL; +} + +struct mg_str mg_strstrip(struct mg_str s) WEAK; +struct mg_str mg_strstrip(struct mg_str s) { + while (s.len > 0 && isspace((int) *s.p)) { + s.p++; + s.len--; + } + while (s.len > 0 && isspace((int) *(s.p + s.len - 1))) { + s.len--; + } + return s; +} + +int mg_str_starts_with(struct mg_str s, struct mg_str prefix) WEAK; +int mg_str_starts_with(struct mg_str s, struct mg_str prefix) { + const struct mg_str sp = MG_MK_STR_N(s.p, prefix.len); + if (s.len < prefix.len) return 0; + return (mg_strcmp(sp, prefix) == 0); +} diff --git a/src/common/mg_str.h b/src/common/mg_str.h new file mode 100644 index 000000000..8863e0e52 --- /dev/null +++ b/src/common/mg_str.h @@ -0,0 +1,97 @@ + +#ifndef CS_COMMON_MG_STR_H_ +#define CS_COMMON_MG_STR_H_ + +#include <stddef.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Describes chunk of memory */ +struct mg_str { + const char *p; /* Memory chunk pointer */ + size_t len; /* Memory chunk length */ +}; + +/* + * Helper function for creating mg_str struct from plain C string. + * `NULL` is allowed and becomes `{NULL, 0}`. + */ +struct mg_str mg_mk_str(const char *s); + +/* + * Like `mg_mk_str`, but takes string length explicitly. + */ +struct mg_str mg_mk_str_n(const char *s, size_t len); + +/* Macro for initializing mg_str. */ +#define MG_MK_STR(str_literal) \ + { str_literal, sizeof(str_literal) - 1 } +#define MG_MK_STR_N(str_literal, len) \ + { str_literal, len } +#define MG_NULL_STR \ + { NULL, 0 } + +/* + * Cross-platform version of `strcmp()` where where first string is + * specified by `struct mg_str`. + */ +int mg_vcmp(const struct mg_str *str2, const char *str1); + +/* + * Cross-platform version of `strncasecmp()` where first string is + * specified by `struct mg_str`. + */ +int mg_vcasecmp(const struct mg_str *str2, const char *str1); + +/* Creates a copy of s (heap-allocated). */ +struct mg_str mg_strdup(const struct mg_str s); + +/* + * Creates a copy of s (heap-allocated). + * Resulting string is NUL-terminated (but NUL is not included in len). + */ +struct mg_str mg_strdup_nul(const struct mg_str s); + +/* + * Locates character in a string. + */ +const char *mg_strchr(const struct mg_str s, int c); + +/* + * Compare two `mg_str`s; return value is the same as `strcmp`. + */ +int mg_strcmp(const struct mg_str str1, const struct mg_str str2); + +/* + * Like `mg_strcmp`, but compares at most `n` characters. + */ +int mg_strncmp(const struct mg_str str1, const struct mg_str str2, size_t n); + +/* + * Compare two `mg_str`s ignoreing case; return value is the same as `strcmp`. + */ +int mg_strcasecmp(const struct mg_str str1, const struct mg_str str2); + +/* + * Free the string (assuming it was heap allocated). + */ +void mg_strfree(struct mg_str *s); + +/* + * Finds the first occurrence of a substring `needle` in the `haystack`. + */ +const char *mg_strstr(const struct mg_str haystack, const struct mg_str needle); + +/* Strip whitespace at the start and the end of s */ +struct mg_str mg_strstrip(struct mg_str s); + +/* Returns 1 if s starts with the given prefix. */ +int mg_str_starts_with(struct mg_str s, struct mg_str prefix); + +#ifdef __cplusplus +} +#endif + +#endif /* CS_COMMON_MG_STR_H_ */ diff --git a/src/common/platforms/arm/arm_exc.c b/src/common/platforms/arm/arm_exc.c deleted file mode 100644 index 3477e6bf3..000000000 --- a/src/common/platforms/arm/arm_exc.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "arm_exc.h" - -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "FreeRTOS.h" - -#include "common/platform.h" - -#include "mgos_core_dump.h" -#include "mgos_hal.h" - -#ifndef MGOS_ENABLE_CORE_DUMP -#define MGOS_ENABLE_CORE_DUMP 1 -#endif - -#if __FPU_PRESENT && !defined(MGOS_BOOT_BUILD) -static void save_s16_s31(uint32_t *dst) { - __asm volatile( - "\ - vmov r1, s16\n str r1, [%0, 0]\n\ - vmov r1, s17\n str r1, [%0, 4]\n\ - vmov r1, s18\n str r1, [%0, 8]\n\ - vmov r1, s19\n str r1, [%0, 12]\n\ - vmov r1, s20\n str r1, [%0, 16]\n\ - vmov r1, s21\n str r1, [%0, 20]\n\ - vmov r1, s22\n str r1, [%0, 24]\n\ - vmov r1, s23\n str r1, [%0, 28]\n\ - vmov r1, s24\n str r1, [%0, 32]\n\ - vmov r1, s25\n str r1, [%0, 36]\n\ - vmov r1, s26\n str r1, [%0, 40]\n\ - vmov r1, s27\n str r1, [%0, 44]\n\ - vmov r1, s28\n str r1, [%0, 48]\n\ - vmov r1, s29\n str r1, [%0, 52]\n\ - vmov r1, s30\n str r1, [%0, 56]\n\ - vmov r1, s31\n str r1, [%0, 60]\n\ - " - : - : "r"(dst) - : "r1"); -} - -static void print_fpu_regs(const uint32_t *regs, int off, int n) { - for (int i = 0, j = off; i < n; i++, j++) { - if (j % 4 == 0) mgos_cd_putc('\n'); - mgos_cd_printf(" S%d: %s0x%08lx", j, (j < 10 ? " " : ""), regs[i]); - } -} -#endif - -static struct arm_gdb_reg_file *s_rf = NULL; - -void arm_exc_dump_regs(void) { - mgos_cd_write_section(MGOS_CORE_DUMP_SECTION_REGS, s_rf, sizeof(*s_rf)); -} - -void arm_exc_handler_bottom(uint8_t isr_no, struct arm_exc_frame *ef, - struct arm_gdb_reg_file *rf) { - char buf[8]; - const char *name; -#if __MPU_PRESENT - MPU->CTRL = 0; // Disable MPU. -#endif - portDISABLE_INTERRUPTS(); - s_rf = rf; - switch (isr_no) { - case 0: - name = "ThreadMode"; - break; - case 1: - case 7: - case 8: - case 9: - case 10: - case 13: - name = "Reserved"; - break; - case 2: - name = "NMI"; - break; - case 3: - name = "HardFault"; - break; - case 4: - name = "MemManage"; - break; - case 5: - name = "BusFault"; - break; - case 6: - name = "UsageFault"; - break; - case 11: - name = "SVCall"; - break; - case 12: - name = "ReservedDebug"; - break; - case 14: - name = "PendSV"; - break; - case 15: - name = "SysTick"; - break; - default: { -#ifndef MGOS_BOOT_BUILD - sprintf(buf, "IRQ%u", isr_no - 16); -#endif - name = buf; - } - } - mgos_cd_printf("\n\n--- Exception %u (%s) ---\n", isr_no, name); - if (rf != NULL) { - mgos_cd_printf( - " R%d: 0x%08lx R%d: 0x%08lx R%d: 0x%08lx R%d: 0x%08lx\n", 0, - rf->r[0], 1, rf->r[1], 2, rf->r[2], 3, rf->r[3]); - mgos_cd_printf( - " R%d: 0x%08lx R%d: 0x%08lx R%d: 0x%08lx R%d: 0x%08lx\n", 4, - rf->r[4], 5, rf->r[5], 6, rf->r[6], 7, rf->r[7]); - mgos_cd_printf(" R8: 0x%08lx R9: 0x%08lx R10: 0x%08lx R11: 0x%08lx\n", - rf->r[8], rf->r[9], rf->r[10], rf->r[11]); - mgos_cd_printf(" R12: 0x%08lx SP: 0x%08lx LR: 0x%08lx PC: 0x%08lx\n", - rf->r[12], rf->sp, rf->lr, rf->pc); - mgos_cd_printf(" PSR: 0x%08lx MSP: 0x%08lx PSP: 0x%08lx\n", rf->xpsr, - rf->msp, rf->psp); - } -#if __FPU_PRESENT - memset(rf->d, 0, sizeof(rf->d)); -#if !defined(MGOS_BOOT_BUILD) - rf->fpscr = ef->fpscr; - memcpy((uint8_t *) rf->d, ef->s, sizeof(ef->s)); - print_fpu_regs((uint32_t *) rf->d, 0, ARRAY_SIZE(ef->s)); - save_s16_s31(ef->s); - memcpy(((uint8_t *) rf->d) + sizeof(ef->s), ef->s, sizeof(ef->s)); - print_fpu_regs((uint32_t *) (((uint8_t *) rf->d) + sizeof(ef->s)), 16, - ARRAY_SIZE(ef->s)); - mgos_cd_putc('\n'); - mgos_cd_printf("FPSCR: 0x%08lx\n", rf->fpscr); -#else - rf->fpscr = 0; -#endif -#endif -#if MGOS_ENABLE_CORE_DUMP - mgos_cd_write(); -#endif -#ifdef MGOS_HALT_ON_EXCEPTION - mgos_cd_printf("Halting\n"); - while (1) { - mgos_wdt_feed(); - } -#else - mgos_cd_printf("Rebooting\n"); - mgos_dev_system_restart(); -#endif - (void) ef; -} diff --git a/src/common/platforms/arm/arm_exc.h b/src/common/platforms/arm/arm_exc.h deleted file mode 100644 index 63a2c1ccb..000000000 --- a/src/common/platforms/arm/arm_exc.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2014-2019 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <stdint.h> - -struct arm_exc_frame { - uint32_t r0; - uint32_t r1; - uint32_t r2; - uint32_t r3; - uint32_t r12; - uint32_t lr; - uint32_t pc; - uint32_t xpsr; -#if __FPU_PRESENT - uint32_t s[16]; - uint32_t fpscr; - uint32_t reserved; -#endif -} __attribute__((packed)); - -struct arm_gdb_reg_file { - uint32_t r[13]; - uint32_t sp; - uint32_t lr; - uint32_t pc; - uint32_t xpsr; -#if __FPU_PRESENT - uint64_t d[16]; - uint32_t fpscr; -#endif - // MSP and PSP are our extension. - uint32_t msp; - uint32_t psp; -} __attribute__((packed)); - -void arm_exc_handler_bottom(uint8_t isr_no, struct arm_exc_frame *ef, - struct arm_gdb_reg_file *rf); -void arm_exc_dump_regs(void); diff --git a/src/common/platforms/arm/arm_exc_top.S b/src/common/platforms/arm/arm_exc_top.S deleted file mode 100644 index 10a7c9ae5..000000000 --- a/src/common/platforms/arm/arm_exc_top.S +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2014-2017 Cesanta Software Limited - * All rights reserved - */ - -.arch armv7e-m -.syntax unified -.thumb - -/* These are required to satisfy TI linker. */ -.eabi_attribute Tag_ABI_align_needed, 1 -.eabi_attribute Tag_ABI_align_preserved, 1 - -.global arm_exc_handler_top -.global arm_exc_handler_bottom - -/* - * Determines the stack pointer, populates most of the GDB frame - * and hands off to the C routine. - */ -.section .text.arm_exc_handler_top -.type arm_exc_handler_top, %function -.align 8 - -arm_exc_handler_top: - tst lr, #4 - ite eq - mrseq r1, msp - mrsne r1, psp - // r1 -> arm_exc_frame prepared for us by the CPU -#if __FPU_PRESENT - add r0, r1, #104 // sizeof(arm_exc_frame) - sub sp, #208 // sizeof(arm_gdb_reg_file) -#else - add r0, r1, #32 // sizeof(arm_exc_frame) - sub sp, #76 // sizeof(arm_gdb_reg_file) -#endif - mov r2, sp - // r0 -> original sp, r2 -> arm_gdb_reg_file to fill - // r3 - scratch - ldr r3, [r1, #0] // r0 - str r3, [r2, #0] - ldr r3, [r1, #4] // r2 - str r3, [r2, #4] - ldr r3, [r1, #8] // r1 - str r3, [r2, #8] - ldr r3, [r1, #12] // r3 - str r3, [r2, #12] - str r4, [r2, #16] // r4 - str r5, [r2, #20] // r5 - str r6, [r2, #24] // r6 - str r7, [r2, #28] // r7 - str r8, [r2, #32] // r8 - str r9, [r2, #36] // r9 - str r10, [r2, #40] // r10 - str r11, [r2, #44] // r11 - ldr r3, [r1, #16] // r12 - str r3, [r2, #48] - str r0, [r2, #52] // sp - ldr r3, [r1, #20] // lr - str r3, [r2, #56] - ldr r3, [r1, #24] // pc - str r3, [r2, #60] - ldr r3, [r1, #28] // xpsr - str r3, [r2, #64] -#if __FPU_PRESENT - mrs r3, msp - str r3, [r2, #200] // msp - mrs r3, psp - str r3, [r2, #204] // psp -#else - mrs r3, msp - str r3, [r2, #68] // msp - mrs r3, psp - str r3, [r2, #72] // psp -#endif - - mrs r0, ipsr - b arm_exc_handler_bottom -.size arm_exc_handler_top, . - arm_exc_handler_top diff --git a/src/common/platforms/arm/arm_nsleep100.c b/src/common/platforms/arm/arm_nsleep100.c deleted file mode 100644 index 554d20441..000000000 --- a/src/common/platforms/arm/arm_nsleep100.c +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <math.h> - -#include "mgos.h" -#include "mgos_system.h" - -void (*mgos_nsleep100)(uint32_t n); -uint32_t mgos_nsleep100_loop_count = 0; -/* Provided by arm_nsleep100_{m4,m7}.S for M4 and M7 respectively. */ -extern void mgos_nsleep100_impl(uint32_t n); - -void mgos_nsleep100_cal(void) { - uint32_t cpu_freq = mgos_get_cpu_freq(); - /* # of instruction cycles per 100 ns */ - mgos_nsleep100_loop_count = - roundf((100.0f / 1000000000.0f) / (1.0f / cpu_freq)); - mgos_nsleep100 = mgos_nsleep100_impl; -} diff --git a/src/common/platforms/arm/arm_nsleep100_m3.S b/src/common/platforms/arm/arm_nsleep100_m3.S deleted file mode 100644 index 0ce16bf52..000000000 --- a/src/common/platforms/arm/arm_nsleep100_m3.S +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2014-2019 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -.arch armv7e-m -.syntax unified -.thumb - -/* These are required to satisfy TI linker. */ -.eabi_attribute Tag_ABI_align_needed, 1 -.eabi_attribute Tag_ABI_align_preserved, 1 - -.global mgos_nsleep100_impl -.global mgos_nsleep100_loop_count - -.section .text.IRAM.mgos_nsleep100_impl -.type mgos_nsleep100_impl, %function -.align 4 - -mgos_nsleep100_impl: - ldr r3, =mgos_nsleep100_loop_count - ldr r3, [r3] - mul r0, r3 - mov r1, #6 - udiv r0, r0, r1 - cbz r0, xxx -lxx: - subs r0, #1 - bne lxx -xxx: - bx lr -.align 4 -.size mgos_nsleep100_impl, . - mgos_nsleep100_impl diff --git a/src/common/platforms/arm/arm_nsleep100_m4.S b/src/common/platforms/arm/arm_nsleep100_m4.S deleted file mode 100644 index 45cc32b30..000000000 --- a/src/common/platforms/arm/arm_nsleep100_m4.S +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -.arch armv7e-m -.syntax unified -.thumb - -/* These are required to satisfy TI linker. */ -.eabi_attribute Tag_ABI_align_needed, 1 -.eabi_attribute Tag_ABI_align_preserved, 1 - -.global mgos_nsleep100_impl -.global mgos_nsleep100_loop_count - -#if defined(TARGET_IS_CC3200) || defined(TARGET_IS_CC3220) -.section .iram.mgos_nsleep100_impl -#else -.section .text.IRAM.mgos_nsleep100_impl -#endif -.type mgos_nsleep100_impl, %function -.align 4 - -mgos_nsleep100_impl: - ldr r3, =mgos_nsleep100_loop_count - ldr r3, [r3] - mul r0, r3 -#if defined(STM32L4) - mov r1, #3 -#else - mov r1, #6 -#endif - udiv r0, r0, r1 - cbz r0, mgos_nsleep100_impl_out -mgos_nsleep100_impl_loop: - subs r0, #1 - bne mgos_nsleep100_impl_loop -mgos_nsleep100_impl_out: - bx lr -.align 4 -.size mgos_nsleep100_impl, . - mgos_nsleep100_impl diff --git a/src/common/platforms/arm/arm_nsleep100_m7.S b/src/common/platforms/arm/arm_nsleep100_m7.S deleted file mode 100644 index be6da6f7b..000000000 --- a/src/common/platforms/arm/arm_nsleep100_m7.S +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -.arch armv7e-m -.syntax unified -.thumb - -/* These are required to satisfy TI linker. */ -.eabi_attribute Tag_ABI_align_needed, 1 -.eabi_attribute Tag_ABI_align_preserved, 1 - -.global mgos_nsleep100_impl -.global mgos_nsleep100_loop_count - -.section .text.IRAM.mgos_nsleep100_impl -.type mgos_nsleep100_impl, %function -.align 4 - -mgos_nsleep100_impl: - ldr r3, =mgos_nsleep100_loop_count - ldr r3, [r3] - /* Because of speculative fetch, the core loop only takes 1 cycle. */ - muls r0, r3 - cbz r0, xxx -lxx: - subs r0, #1 - bne lxx -xxx: - bx lr -.align 4 -.size mgos_nsleep100_impl, . - mgos_nsleep100_impl diff --git a/src/common/platforms/cc3200/cc3200.ld b/src/common/platforms/cc3200/cc3200.ld deleted file mode 100644 index a2df648c7..000000000 --- a/src/common/platforms/cc3200/cc3200.ld +++ /dev/null @@ -1,92 +0,0 @@ -/***************************************************************************** -* -* GCC Linker script for CC3200. Based on TI's example "blinky.ld". -* -* Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ -* -* -* 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 Texas Instruments Incorporated nor the names of -* its contributors may be used to endorse or promote products derived -* from this software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE 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. -* -******************************************************************************/ - -ORG = DEFINED(ORG) ? ORG : 0x20004000; -RAM_SIZE = DEFINED(RAM_SIZE) ? RAM_SIZE : 0x3C000; - -MEMORY -{ - /* SRAM size of 240KB for cc3200 ES 1.33 device onward */ - SRAM (rwx) : ORIGIN = ORG, LENGTH = RAM_SIZE -} - -SECTIONS -{ - .text : - { - _text = .; - KEEP(*(.intvecs)) - *(.text*) - *(.rodata*) - *(.ARM.extab* .gnu.linkonce.armextab.*) - . = ALIGN(8); - _etext = .; - } > SRAM - - .ARM : { - __exidx_start = .; - *(.ARM.exidx*) - __exidx_end = .; - } > SRAM - - __init_data = .; - - .data : AT(__init_data) - { - _data = .; - *(.data*) - . = ALIGN (8); - _edata = .; - } > SRAM - - .bss : - { - _bss = .; - *(.bss*) - *(COMMON) - _ebss = .; - } > SRAM - - .heap : - { - _heap = .; - . = . + (LENGTH(SRAM) - SIZEOF(.text) - SIZEOF(.ARM) - SIZEOF(.data) - SIZEOF(.bss)); - . = ALIGN(8); - _eheap = .; - - } > SRAM -} diff --git a/src/common/platforms/cc3200/cc3200_libc.c b/src/common/platforms/cc3200/cc3200_libc.c index 5262917b3..ff6a32183 100644 --- a/src/common/platforms/cc3200/cc3200_libc.c +++ b/src/common/platforms/cc3200/cc3200_libc.c @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #if CS_PLATFORM == CS_P_CC3200 diff --git a/src/common/platforms/cc3200/cc3200v1p32.cmd b/src/common/platforms/cc3200/cc3200v1p32.cmd deleted file mode 100644 index 3b17d0757..000000000 --- a/src/common/platforms/cc3200/cc3200v1p32.cmd +++ /dev/null @@ -1,82 +0,0 @@ -//***************************************************************************** -// cc3200v1p32.cmd -// -// CCS linker configuration file for cc3200 ES 1.32. -// -// Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ -// -// -// 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 Texas Instruments Incorporated nor the names of -// its contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE 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. -// -//***************************************************************************** - - ---retain=g_pfnVectors - -//***************************************************************************** -// The following command line options are set as part of the CCS project. -// If you are building using the command line, or for some reason want to -// define them here, you can uncomment and modify these lines as needed. -// If you are using CCS for building, it is probably better to make any such -// modifications in your CCS project and leave this file alone. -//***************************************************************************** - - -//***************************************************************************** -// The starting address of the application. Normally the interrupt vectors -// must be located at the beginning of the application. -//***************************************************************************** -#define RAM_BASE 0x20004000 - -/* System memory map */ - -MEMORY -{ - /* Application uses internal RAM for program and data */ - SRAM_CODE (RWX) : origin = 0x20004000, length = 0x2F000 - SRAM_DATA (RWX) : origin = 0x20033000, length = 0xD000 -} - -/* Section allocation in memory */ - -SECTIONS -{ - .intvecs: > RAM_BASE - .init_array : > SRAM_CODE - .vtable : > SRAM_CODE - .text : > SRAM_CODE - .const : > SRAM_CODE - .cinit : > SRAM_CODE - .pinit : > SRAM_CODE - .data : > SRAM_DATA - .bss : > SRAM_DATA - .sysmem : > SRAM_DATA - .stack : > SRAM_DATA(HIGH) -} - diff --git a/src/common/platforms/cc3200/gcc.mk b/src/common/platforms/cc3200/gcc.mk deleted file mode 100644 index 4f39e7896..000000000 --- a/src/common/platforms/cc3200/gcc.mk +++ /dev/null @@ -1,52 +0,0 @@ -APP_LDFLAGS ?= -CC_WRAPPER ?= -GENFILES_LIST ?= -CC = arm-none-eabi-gcc -CXX = arm-none-eabi-g++ -AR = arm-none-eabi-ar -NM = arm-none-eabi-nm - -IPATH += $(SDK_PATH)/third_party/FreeRTOS/source/portable/GCC/ARM_CM4 -VPATH += $(SDK_PATH)/third_party/FreeRTOS/source/portable/GCC/ARM_CM4 - -C_CXX_FLAGS = -mthumb -mcpu=cortex-m4 -ffunction-sections -fdata-sections \ - -MD -Os -ggdb -Wall -Werror -Dgcc -CFLAGS += -std=c99 $(C_CXX_FLAGS) -CXXFLAGS += -std=g++11 $(C_CXX_FLAGS) - -AR = arm-none-eabi-ar -LD = arm-none-eabi-ld -OBJCOPY = arm-none-eabi-objcopy -LIBGCC := ${shell ${CC} -mthumb ${CFLAGS} -print-libgcc-file-name} -LIBC := ${shell ${CC} ${CFLAGS} -print-file-name=libc.a} -LIBM := ${shell ${CC} ${CFLAGS} -print-file-name=libm.a} - -# Disable certain warnings on SDK sources, we have no control over them anyway. -# We also force-include platform.h which resolves some symbol conflicts -# between system includes and simplelink.h -$(SDK_OBJS): CFLAGS += -Wno-missing-braces -Wno-strict-aliasing -Wno-parentheses -Wno-unused-variable -Wno-builtin-macro-redefined -$(SDK_OBJS): CFLAGS += -include common/platform.h - -# cc flags,file -define cc - $(vecho) "GCC $2" - $(Q) $(CC_WRAPPER) $(CC) -c $1 -o $@ $2 -endef -define cxx - $(vecho) "G++ $2" - $(Q) $(CC_WRAPPER) $(CXX) -c $1 -o $@ $2 -endef - -# ar files -define ar - $(vecho) "AR $@" - $(Q) $(AR) cru $@ $1 -endef - -# link script,flags,objs -define link - $(vecho) "LD $@" - $(Q) $(CC_WRAPPER) $(LD) \ - --gc-sections -o $@ -T $1 $2 $3 \ - $(LIBM) $(LIBC) $(LIBGCC) -endef diff --git a/src/common/platforms/cc3200/ti.mk b/src/common/platforms/cc3200/ti.mk deleted file mode 100644 index cbfc2f176..000000000 --- a/src/common/platforms/cc3200/ti.mk +++ /dev/null @@ -1,52 +0,0 @@ -IPATH += $(SDK_PATH)/third_party/FreeRTOS/source/portable/CCS/ARM_CM3 -VPATH += $(SDK_PATH)/third_party/FreeRTOS/source/portable/CCS/ARM_CM3 - -CC_WRAPPER ?= -CC = $(TOOLCHAIN)/bin/armcl -AR = $(TOOLCHAIN)/bin/armar -NM = nm -GENFILES_LIST ?= - -C_CXX_FLAGS = -Dccs -I$(TOOLCHAIN)/include -TI_C_CXX_FLAGS = -mv7M4 --little_endian --code_state=16 --float_support=vfplib --abi=eabi \ - -O4 --opt_for_speed=0 --unaligned_access=on --small_enum \ - --gen_func_subsections=on --diag_wrap=off --display_error_number \ - --emit_warnings_as_errors -CFLAGS += --c99 $(TI_C_CXX_FLAGS) $(C_CXX_FLAGS) -CXXFLAGS += $(TI_C_CXX_FLAGS) $(C_CXX_FLAGS) - -# cc flags,file -define cc - $(vecho) "TICC $2" - $(Q) $(CC_WRAPPER) $(CC) -c --preproc_with_compile -ppd=$@.d $1 --output_file=$@ $2 -endef -define cxx - $(vecho) "TICXX $2" - $(Q) $(CC_WRAPPER) $(CC) -c --preproc_with_compile -ppd=$@.d $1 --output_file=$@ $2 -endef - -# asm flags,file -define asm - $(vecho) "TIASM $2" - $(Q) $(CC_WRAPPER) $(CC) -c $1 --output_file=$@ $2 -endef - -# ar files -define ar - $(vecho) "TIAR $@" - $(Q) $(AR) qru $@ $1 -endef - -# link script,flags,objs -define link - $(vecho) "TILD $@" - $(Q) $(CC_WRAPPER) $(CC) \ - -mv7M4 --code_state=16 --float_support=vfplib --abi=eabi --little_endian \ - --run_linker \ - --generate_dead_funcs_list=$@.garbage.xml \ - -i $(TOOLCHAIN)/lib \ - --reread_libs --warn_sections --display_error_number \ - --unused_section_elimination=on \ - -o $@ --map_file=$@.map --xml_link_info=$@.map.xml \ - $2 $1 $3 -endef diff --git a/src/common/platforms/esp/esptool.py b/src/common/platforms/esp/esptool.py deleted file mode 100755 index 9592f6dea..000000000 --- a/src/common/platforms/esp/esptool.py +++ /dev/null @@ -1,2133 +0,0 @@ -#!/usr/bin/env python -# NB: Before sending a PR to change the above line to '#!/usr/bin/env python2', please read https://github.com/themadinventor/esptool/issues/21 -# -# ESP8266 & ESP32 ROM Bootloader Utility -# https://github.com/themadinventor/esptool -# -# Copyright (C) 2014-2016 Fredrik Ahlberg, Angus Gratton, Espressif Systems (Shanghai) PTE LTD, other contributors as noted. -# -# 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., 51 Franklin -# Street, Fifth Floor, Boston, MA 02110-1301 USA. - -import argparse -import hashlib -import inspect -import json -import os -import serial -import struct -import subprocess -import sys -import time -import base64 -import zlib - -__version__ = "2.0-dev" - - -MAX_UINT32 = 0xffffffff -MAX_UINT24 = 0xffffff - - -def check_supported_function(func, check_func): - """ - Decorator implementation that wraps a check around an ESPLoader - bootloader function to check if it's supported. - - This is used to capture the multidimensional differences in - functionality between the ESP8266 & ESP32 ROM loaders, and the - software stub that runs on both. Not possible to do this cleanly - via inheritance alone. - """ - def inner(*args, **kwargs): - obj = args[0] - if check_func(obj): - return func(*args, **kwargs) - else: - raise NotImplementedInROMError(obj) - return inner - - -def stub_function_only(func): - """ Attribute for a function only supported in the software stub loader """ - return check_supported_function(func, lambda o: o.IS_STUB) - - -def stub_and_esp32_function_only(func): - """ Attribute for a function only supported by software stubs or ESP32 ROM """ - return check_supported_function(func, lambda o: o.IS_STUB or o.CHIP_NAME == "ESP32") - - -def esp8266_function_only(func): - """ Attribute for a function only supported on ESP8266 """ - return check_supported_function(func, lambda o: o.CHIP_NAME == "ESP8266") - - -class ESPLoader(object): - """ Base class providing access to ESP ROM & softtware stub bootloaders. - Subclasses provide ESP8266 & ESP32 specific functionality. - - Don't instantiate this base class directly, either instantiate a subclass or - call ESPLoader.detect_chip() which will interrogate the chip and return the - appropriate subclass instance. - - """ - CHIP_NAME = "Espressif device" - IS_STUB = False - - DEFAULT_PORT = "/dev/ttyUSB0" - - # Commands supported by ESP8266 ROM bootloader - ESP_FLASH_BEGIN = 0x02 - ESP_FLASH_DATA = 0x03 - ESP_FLASH_END = 0x04 - ESP_MEM_BEGIN = 0x05 - ESP_MEM_END = 0x06 - ESP_MEM_DATA = 0x07 - ESP_SYNC = 0x08 - ESP_WRITE_REG = 0x09 - ESP_READ_REG = 0x0a - - # Some comands supported by ESP32 ROM bootloader (or -8266 w/ stub) - ESP_SPI_SET_PARAMS = 0x0B - ESP_SPI_ATTACH = 0x0D - ESP_CHANGE_BAUDRATE = 0x0F - ESP_FLASH_DEFL_BEGIN = 0x10 - ESP_FLASH_DEFL_DATA = 0x11 - ESP_FLASH_DEFL_END = 0x12 - ESP_SPI_FLASH_MD5 = 0x13 - - # Some commands supported by stub only - ESP_ERASE_FLASH = 0xD0 - ESP_ERASE_REGION = 0xD1 - ESP_READ_FLASH = 0xD2 - ESP_GET_FLASH_ID = 0xD3 - - # Maximum block sized for RAM and Flash writes, respectively. - ESP_RAM_BLOCK = 0x1800 - ESP_FLASH_BLOCK = 0x400 - - FLASH_WRITE_SIZE = ESP_FLASH_BLOCK - - # Default baudrate. The ROM auto-bauds, so we can use more or less whatever we want. - ESP_ROM_BAUD = 115200 - - # First byte of the application image - ESP_IMAGE_MAGIC = 0xe9 - - # Initial state for the checksum routine - ESP_CHECKSUM_MAGIC = 0xef - - # Flash sector size, minimum unit of erase. - ESP_FLASH_SECTOR = 0x1000 - - UART_DATA_REG_ADDR = 0x60000078 - - # Memory addresses - IROM_MAP_START = 0x40200000 - IROM_MAP_END = 0x40300000 - - # The number of bytes in the UART response that signify command status - STATUS_BYTES_LENGTH = 2 - - def __init__(self, port=DEFAULT_PORT, baud=ESP_ROM_BAUD, do_connect=True): - """Base constructor for ESPLoader bootloader interaction - - Don't call this constructor, either instantiate ESP8266ROM - or ESP32ROM, or use ESPLoader.detect_chip(). - - This base class has all of the instance methods for bootloader - functionality supported across various chips & stub - loaders. Subclasses replace the functions they don't support - with ones which throw NotImplementedInROMError(). - - """ - if isinstance(port, serial.Serial): - self._port = port - else: - self._port = serial.Serial(port) - self._slip_reader = slip_reader(self._port) - # setting baud rate in a separate step is a workaround for - # CH341 driver on some Linux versions (this opens at 9600 then - # sets), shouldn't matter for other platforms/drivers. See - # https://github.com/themadinventor/esptool/issues/44#issuecomment-107094446 - self._port.baudrate = baud - if do_connect: - self.connect() - - @staticmethod - def detect_chip(port=DEFAULT_PORT, baud=ESP_ROM_BAUD): - """Use serial access to detect the chip type. - - We use the UART's datecode register for this, it's mapped at - the same address on ESP8266 & ESP32 so we can use one - memory read and compare to the datecode register for each chip - type. - - """ - detect_port = ESPLoader(port, baud, True) - sys.stdout.write('Detecting chip type... ') - date_reg = detect_port.read_reg(ESPLoader.UART_DATA_REG_ADDR) - - for cls in [ESP8266ROM, ESP32ROM]: - if date_reg == cls.DATE_REG_VALUE: - # don't connect a second time - inst = cls(detect_port._port, baud, False) - print '%s' % inst.CHIP_NAME - return inst - print '' - raise FatalError("Unexpected UART datecode value 0x%08x. Failed to autodetect chip type." % date_reg) - - """ Read a SLIP packet from the serial port """ - def read(self): - r = self._slip_reader.next() - return r - - """ Write bytes to the serial port while performing SLIP escaping """ - def write(self, packet): - buf = '\xc0' \ - + (packet.replace('\xdb','\xdb\xdd').replace('\xc0','\xdb\xdc')) \ - + '\xc0' - self._port.write(buf) - - """ Calculate checksum of a blob, as it is defined by the ROM """ - @staticmethod - def checksum(data, state=ESP_CHECKSUM_MAGIC): - for b in data: - state ^= ord(b) - return state - - """ Send a request and read the response """ - def command(self, op=None, data="", chk=0): - if op is not None: - pkt = struct.pack('<BBHI', 0x00, op, len(data), chk) + data - self.write(pkt) - - # tries to get a response until that response has the - # same operation as the request or a retries limit has - # exceeded. This is needed for some esp8266s that - # reply with more sync responses than expected. - for retry in xrange(100): - p = self.read() - if len(p) < 8: - continue - (resp, op_ret, len_ret, val) = struct.unpack('<BBHI', p[:8]) - if resp != 1: - continue - data = p[8:] - if op is None or op_ret == op: - return val, data - - raise FatalError("Response doesn't match request") - - def check_command(self, op_description, op=None, data="", chk=0): - """ - Execute a command with 'command', check the result code and throw an appropriate - FatalError if it fails. - - Returns the "result" of a successful command. - """ - val, data = self.command(op, data, chk) - - # things are a bit weird here, bear with us - - # the status bytes are the last 2/4 bytes in the data (depending on chip) - if len(data) < self.STATUS_BYTES_LENGTH: - raise FatalError("Failed to %s. Only got %d byte status response." % (op_description, len(data))) - status_bytes = data[-self.STATUS_BYTES_LENGTH:] - # we only care if the first one is non-zero. If it is, the second byte is a reason. - if status_bytes[0] != '\0': - raise FatalError.WithResult('Failed to %s' % op_description, status_bytes) - - # if we had more data than just the status bytes, return it as the result - # (this is used by the md5sum command, maybe other commands?) - if len(data) > self.STATUS_BYTES_LENGTH: - return data[:-self.STATUS_BYTES_LENGTH] - else: # otherwise, just return the 'val' field which comes from the reply header (this is used by read_reg) - return val - - def flush_input(self): - self._port.flushInput() - self._slip_reader = slip_reader(self._port) - - def sync(self): - """ Perform a connection test """ - self.command(self.ESP_SYNC, '\x07\x07\x12\x20' + 32 * '\x55') - for i in xrange(7): - self.command() - - def connect(self): - """ Try connecting repeatedly until successful, or giving up """ - print 'Connecting...' - - for _ in xrange(10): - # issue reset-to-bootloader: - # RTS = either CH_PD or nRESET (both active low = chip in reset) - # DTR = GPIO0 (active low = boot to flasher) - self._port.setDTR(False) - self._port.setRTS(True) - time.sleep(0.05) - self._port.setDTR(True) - self._port.setRTS(False) - time.sleep(0.05) - self._port.setDTR(False) - - self._port.timeout = 0.1 - last_exception = None - for _ in xrange(4): - try: - self.flush_input() - self._port.flushOutput() - self.sync() - self._port.timeout = 5 - return - except FatalError as e: - last_exception = e - time.sleep(0.05) - raise FatalError('Failed to connect to %s: %s' % (self.CHIP_NAME, last_exception)) - - """ Read memory address in target """ - def read_reg(self, addr): - # we don't call check_command here because read_reg() function is called - # when detecting chip type, and the way we check for success (STATUS_BYTES_LENGTH) is different - # for different chip types (!) - val, data = self.command(self.ESP_READ_REG, struct.pack('<I', addr)) - if data[0] != '\0': - raise FatalError.WithResult("Failed to read register address %08x" % addr, data) - return val - - """ Write to memory address in target """ - def write_reg(self, addr, value, mask=0xFFFFFFFF, delay_us=0): - return self.check_command("write target memory", self.ESP_WRITE_REG, - struct.pack('<IIII', addr, value, mask, delay_us)) - - """ Start downloading an application image to RAM """ - def mem_begin(self, size, blocks, blocksize, offset): - return self.check_command("enter RAM download mode", self.ESP_MEM_BEGIN, - struct.pack('<IIII', size, blocks, blocksize, offset)) - - """ Send a block of an image to RAM """ - def mem_block(self, data, seq): - return self.check_command("write to target RAM", self.ESP_MEM_DATA, - struct.pack('<IIII', len(data), seq, 0, 0) + data, - self.checksum(data)) - - """ Leave download mode and run the application """ - def mem_finish(self, entrypoint=0): - return self.check_command("leave RAM download mode", self.ESP_MEM_END, - struct.pack('<II', int(entrypoint == 0), entrypoint)) - - """ Start downloading to Flash (performs an erase) """ - def flash_begin(self, size, offset): - old_tmo = self._port.timeout - num_blocks = (size + self.ESP_FLASH_BLOCK - 1) / self.ESP_FLASH_BLOCK - erase_size = self.get_erase_size(offset, size) - - self._port.timeout = 20 - t = time.time() - self.check_command("enter Flash download mode", self.ESP_FLASH_BEGIN, - struct.pack('<IIII', erase_size, num_blocks, self.ESP_FLASH_BLOCK, offset)) - if size != 0: - print "Took %.2fs to erase flash block" % (time.time() - t) - self._port.timeout = old_tmo - - """ Write block to flash """ - def flash_block(self, data, seq): - self.check_command("write to target Flash after seq %d" % seq, - self.ESP_FLASH_DATA, - struct.pack('<IIII', len(data), seq, 0, 0) + data, - self.checksum(data)) - - """ Leave flash mode and run/reboot """ - def flash_finish(self, reboot=False): - pkt = struct.pack('<I', int(not reboot)) - self.check_command("leave Flash mode", self.ESP_FLASH_END, pkt) - - """ Run application code in flash """ - def run(self, reboot=False): - # Fake flash begin immediately followed by flash end - self.flash_begin(0, 0) - self.flash_finish(reboot) - - """ Read SPI flash manufacturer and device id """ - def flash_id(self): - SPIFLASH_RDID = 0x9F - return self.run_spiflash_command(SPIFLASH_RDID, b"", 24) - - def parse_flash_size_arg(self, arg): - try: - return self.FLASH_SIZES[arg] - except KeyError: - raise FatalError("Flash size '%s' is not supported by this chip type. Supported sizes: %s" - % (arg, ", ".join(self.FLASH_SIZES.keys()))) - - """ Abuse the loader protocol to force flash to be left in write mode """ - @esp8266_function_only - def flash_unlock_dio(self): - # Enable flash write mode - self.flash_begin(0, 0) - # Reset the chip rather than call flash_finish(), which would have - # write protected the chip again (why oh why does it do that?!) - self.mem_begin(0,0,0,0x40100000) - self.mem_finish(0x40000080) - - def _upload_ram(self, offs, data): - length = len(data) - blocks = (length + self.ESP_RAM_BLOCK - 1) / self.ESP_RAM_BLOCK - self.mem_begin(length, blocks, self.ESP_RAM_BLOCK, offs) - for seq in range(blocks): - from_offs = seq * self.ESP_RAM_BLOCK - to_offs = from_offs + self.ESP_RAM_BLOCK - self.mem_block(data[from_offs:to_offs], seq) - - def run_custom_stub(self, stub, params, read_output=True): - stub = dict(stub) - stub['code'] = unhexify(stub['code']) - if 'data' in stub: - stub['data'] = unhexify(stub['data']) - - if stub['num_params'] != len(params): - raise FatalError('Stub requires %d params, %d provided' - % (stub['num_params'], len(params))) - - params = struct.pack('<' + ('I' * stub['num_params']), *params) - pc = params + stub['code'] - - # Upload - self._upload_ram(stub['params_start'], pc) - if 'data' in stub: - self._upload_ram(stub['data_start'], stub['data']) - self.mem_finish(stub['entry']) - - if read_output: - print >>sys.stderr, 'Stub executed, reading response:' - while True: - p = self.read() - print hexify(p) - if p == '': - return - - def run_stub(self, stub=None): - if stub is None: - if self.IS_STUB: - raise FatalError("Not possible for a stub to load another stub (memory likely to overlap.)") - stub = self.STUB_CODE - - # Upload - print "Uploading stub..." - for field in ['text', 'data']: - if field in stub: - self._upload_ram(stub[field + "_start"], stub[field]) - print "Running stub..." - self.mem_finish(stub['entry']) - - p = self.read() - if p != 'OHAI': - raise FatalError("Failed to start stub. Unexpected response: %s" % p) - print "Stub running..." - return self.STUB_CLASS(self) - - @stub_and_esp32_function_only - def flash_defl_begin(self, size, compsize, offset): - """ Start downloading compressed data to Flash (performs an erase) """ - old_tmo = self._port.timeout - num_blocks = (compsize + self.ESP_FLASH_BLOCK - 1) / self.ESP_FLASH_BLOCK - erase_blocks = (size + self.ESP_FLASH_BLOCK - 1) / self.ESP_FLASH_BLOCK - - self._port.timeout = 20 - t = time.time() - print "Compressed %d bytes to %d..." % (size, compsize) - self.check_command("enter compressed flash mode", self.ESP_FLASH_DEFL_BEGIN, - struct.pack('<IIII', erase_blocks * self.ESP_FLASH_BLOCK, num_blocks, self.ESP_FLASH_BLOCK, offset)) - if size != 0 and not self.IS_STUB: - # (stub erases as it writes, but ROM loaders erase on begin) - print "Took %.2fs to erase flash block" % (time.time() - t) - self._port.timeout = old_tmo - - """ Write block to flash, send compressed """ - @stub_and_esp32_function_only - def flash_defl_block(self, data, seq): - self.check_command("write compressed data to flash after seq %d" % seq, - self.ESP_FLASH_DEFL_DATA, struct.pack('<IIII', len(data), seq, 0, 0) + data, self.checksum(data)) - - """ Leave compressed flash mode and run/reboot """ - @stub_and_esp32_function_only - def flash_defl_finish(self, reboot=False): - pkt = struct.pack('<I', int(not reboot)) - self.check_command("leave compressed flash mode", self.ESP_FLASH_DEFL_END, pkt) - self.in_bootloader = False - - @stub_and_esp32_function_only - def flash_md5sum(self, addr, size): - # the MD5 command returns additional bytes in the standard - # command reply slot - res = self.check_command('calculate md5sum', self.ESP_SPI_FLASH_MD5, struct.pack('<IIII', addr, size, 0, 0)) - - if len(res) == 32: - return res # already hex formatted - elif len(res) == 16: - return hexify(res).lower() - else: - raise FatalError("MD5Sum command returned unexpected result: %r" % res) - - @stub_and_esp32_function_only - def change_baud(self, baud): - print "Changing baud rate to %d" % baud - self.command(self.ESP_CHANGE_BAUDRATE, struct.pack('<II', baud, 0)) - print "Changed." - self._port.baudrate = baud - time.sleep(0.05) # get rid of crap sent during baud rate change - self.flush_input() - - @stub_function_only - def erase_flash(self): - oldtimeout = self._port.timeout - # depending on flash chip model the erase may take this long (maybe longer!) - self._port.timeout = 128 - try: - self.check_command("erase flash", self.ESP_ERASE_FLASH) - finally: - self._port.timeout = oldtimeout - - @stub_function_only - def erase_region(self, offset, size): - if offset % self.ESP_FLASH_SECTOR != 0: - raise FatalError("Offset to erase from must be a multiple of 4096") - if size % self.ESP_FLASH_SECTOR != 0: - raise FatalError("Size of data to erase must be a multiple of 4096") - self.check_command("erase region", self.ESP_ERASE_REGION, struct.pack('<II', offset, size)) - - @stub_function_only - def read_flash(self, offset, length, progress_fn=None): - # issue a standard bootloader command to trigger the read - self.check_command("read flash", self.ESP_READ_FLASH, - struct.pack('<IIII', - offset, - length, - self.ESP_FLASH_BLOCK, - 64)) - # now we expect (length / block_size) SLIP frames with the data - data = '' - while len(data) < length: - p = self.read() - data += p - self.write(struct.pack('<I', len(data))) - if progress_fn and (len(data) % 1024 == 0 or len(data) == length): - progress_fn(len(data), length) - if progress_fn: - progress_fn(len(data), length) - if len(data) > length: - raise FatalError('Read more than expected') - digest_frame = self.read() - if len(digest_frame) != 16: - raise FatalError('Expected digest, got: %s' % hexify(digest_frame)) - expected_digest = hexify(digest_frame).upper() - digest = hashlib.md5(data).hexdigest().upper() - if digest != expected_digest: - raise FatalError('Digest mismatch: expected %s, got %s' % (expected_digest, digest)) - return data - - def flash_spi_attach(self,is_hspi,is_legacy): - """Send SPI attach command to enable the SPI flash pins - - ESP8266 ROM does this when you send flash_begin, ESP32 ROM - has it as a SPI command. - """ - # last 3 bytes in ESP_SPI_ATTACH argument are reserved values - arg = struct.pack('<IBBBB', 1 if is_hspi else 0, 1 if is_legacy else 0, 0, 0, 0) - self.check_command("configure SPI flash pins", ESP32ROM.ESP_SPI_ATTACH, arg) - - def flash_set_parameters(self, size): - """Tell the ESP bootloader the parameters of the chip - - Corresponds to the "flashchip" data structure that the ROM - has in RAM. - - 'size' is in bytes. - - All other flash parameters are currently hardcoded (on ESP8266 - these are mostly ignored by ROM code, on ESP32 I'm not sure.) - """ - fl_id = 0 - total_size = size - block_size = 64 * 1024 - sector_size = 4 * 1024 - page_size = 256 - status_mask = 0xffff - self.check_command("set SPI params", ESP32ROM.ESP_SPI_SET_PARAMS, - struct.pack('<IIIIII', fl_id, total_size, block_size, sector_size, page_size, status_mask)) - - def run_spiflash_command(self, spiflash_command, data=b"", read_bits=0): - """Run an arbitrary SPI flash command. - - This function uses the "USR_COMMAND" functionality in the ESP - SPI hardware, rather than the precanned commands supported by - hardware. So the value of spiflash_command is an actual command - byte, sent over the wire. - - After writing command byte, writes 'data' to MOSI and then - reads back 'read_bits' of reply on MISO. Result is a number. - """ - - # SPI_USR register flags - SPI_USR_COMMAND = (1 << 31) - SPI_USR_MISO = (1 << 28) - SPI_USR_MOSI = (1 << 27) - - # SPI registers, base address differs ESP32 vs 8266 - base = self.SPI_REG_BASE - SPI_CMD_REG = base + 0x00 - SPI_USR_REG = base + 0x1C - SPI_USR1_REG = base + 0x20 - SPI_USR2_REG = base + 0x24 - SPI_W0_REG = base + self.SPI_W0_OFFS - - # following two registers are ESP32 only - if self.SPI_HAS_MOSI_DLEN_REG: - # ESP32 has a more sophisticated wayto set up "user" commands - def set_data_lengths(mosi_bits, miso_bits): - SPI_MOSI_DLEN_REG = base + 0x28 - SPI_MISO_DLEN_REG = base + 0x2C - if mosi_bits > 0: - self.write_reg(SPI_MOSI_DLEN_REG, mosi_bits - 1) - if miso_bits > 0: - self.write_reg(SPI_MISO_DLEN_REG, miso_bits - 1) - else: - - def set_data_lengths(mosi_bits, miso_bits): - SPI_DATA_LEN_REG = SPI_USR1_REG - SPI_MOSI_BITLEN_S = 17 - SPI_MISO_BITLEN_S = 8 - mosi_mask = 0 if (mosi_bits == 0) else (mosi_bits - 1) - miso_mask = 0 if (miso_bits == 0) else (miso_bits - 1) - self.write_reg(SPI_DATA_LEN_REG, - (miso_mask << SPI_MISO_BITLEN_S) | ( - mosi_mask << SPI_MOSI_BITLEN_S)) - - # SPI peripheral "command" bitmasks for SPI_CMD_REG - SPI_CMD_USR = (1 << 18) - - # shift values - SPI_USR2_DLEN_SHIFT = 28 - - if read_bits > 32: - raise FatalError("Reading more than 32 bits back from a SPI flash operation is unsupported") - if len(data) > 64: - raise FatalError("Writing more than 64 bytes of data with one SPI command is unsupported") - - data_bits = len(data) * 8 - flags = SPI_USR_COMMAND - if read_bits > 0: - flags |= SPI_USR_MISO - if data_bits > 0: - flags |= SPI_USR_MOSI - set_data_lengths(data_bits, read_bits) - self.write_reg(SPI_USR_REG, flags) - self.write_reg(SPI_USR2_REG, - (7 << SPI_USR2_DLEN_SHIFT) | spiflash_command) - if data_bits == 0: - self.write_reg(SPI_W0_REG, 0) # clear data register before we read it - else: - if len(data) % 4 != 0: # pad to 32-bit multiple - data += b'\0' * (4 - (len(data) % 4)) - words = struct.unpack("I" * (len(data) / 4), data) - next_reg = SPI_W0_REG - for word in words: - self.write_reg(next_reg, word) - next_reg += 4 - self.write_reg(SPI_CMD_REG, SPI_CMD_USR) - - def wait_done(): - for _ in xrange(10): - if (self.read_reg(SPI_CMD_REG) & SPI_CMD_USR) == 0: - return - raise FatalError("SPI command did not complete in time") - wait_done() - - status = self.read_reg(SPI_W0_REG) - return status - - def read_status(self, num_bytes=2): - """Read up to 24 bits (num_bytes) of SPI flash status register contents - via RDSR, RDSR2, RDSR3 commands - - Not all SPI flash supports all three commands. The upper 1 or 2 - bytes may be 0xFF. - """ - SPIFLASH_RDSR = 0x05 - SPIFLASH_RDSR2 = 0x35 - SPIFLASH_RDSR3 = 0x15 - - status = 0 - shift = 0 - for cmd in [SPIFLASH_RDSR, SPIFLASH_RDSR2, SPIFLASH_RDSR3][0:num_bytes]: - status += self.run_spiflash_command(cmd, read_bits=8) << shift - shift += 8 - return status - - def write_status(self, new_status, num_bytes=2, set_non_volatile=False): - """Write up to 24 bits (num_bytes) of new status register - - num_bytes can be 1, 2 or 3. - - Not all flash supports the additional commands to write the - second and third byte of the status register. When writing 2 - bytes, esptool also sends a 16-byte WRSR command (as some - flash types use this instead of WRSR2.) - - If the set_non_volatile flag is set, non-volatile bits will - be set as well as volatile ones (WREN used instead of WEVSR). - - """ - SPIFLASH_WRSR = 0x01 - SPIFLASH_WRSR2 = 0x31 - SPIFLASH_WRSR3 = 0x11 - SPIFLASH_WEVSR = 0x50 - SPIFLASH_WREN = 0x06 - SPIFLASH_WRDI = 0x04 - - enable_cmd = SPIFLASH_WREN if set_non_volatile else SPIFLASH_WEVSR - - # try using a 16-bit WRSR (not supported by all chips) - # this may be redundant, but shouldn't hurt - if num_bytes == 2: - self.run_spiflash_command(enable_cmd) - self.run_spiflash_command(SPIFLASH_WRSR, struct.pack("<H", new_status)) - - # also try using individual commands (also not supported by all chips for num_bytes 2 & 3) - for cmd in [SPIFLASH_WRSR, SPIFLASH_WRSR2, SPIFLASH_WRSR3][0:num_bytes]: - self.run_spiflash_command(enable_cmd) - self.run_spiflash_command(cmd, struct.pack("B", new_status & 0xFF)) - new_status >>= 8 - - self.run_spiflash_command(SPIFLASH_WRDI) - - -class ESP8266ROM(ESPLoader): - """ Access class for ESP8266 ROM bootloader - """ - CHIP_NAME = "ESP8266" - IS_STUB = False - - DATE_REG_VALUE = 0x00062000 - - # OTP ROM addresses - ESP_OTP_MAC0 = 0x3ff00050 - ESP_OTP_MAC1 = 0x3ff00054 - ESP_OTP_MAC3 = 0x3ff0005c - - SPI_REG_BASE = 0x60000200 - SPI_W0_OFFS = 0x40 - SPI_HAS_MOSI_DLEN_REG = False - - FLASH_SIZES = { - '512KB':0x00, - '256KB':0x10, - '1MB':0x20, - '2MB':0x30, - '4MB':0x40, - '2MB-c1': 0x50, - '4MB-c1':0x60, - '4MB-c2':0x70} - - def flash_spi_attach(self, is_spi, is_legacy): - pass # not implemented in ROM, but OK to silently skip - - def flash_set_parameters(self, size): - pass # not implemented in ROM, but OK to silently skip - - def chip_id(self): - """ Read Chip ID from OTP ROM - see http://esp8266-re.foogod.com/wiki/System_get_chip_id_%28IoT_RTOS_SDK_0.9.9%29 """ - id0 = self.read_reg(self.ESP_OTP_MAC0) - id1 = self.read_reg(self.ESP_OTP_MAC1) - return (id0 >> 24) | ((id1 & MAX_UINT24) << 8) - - def read_mac(self): - """ Read MAC from OTP ROM """ - mac0 = self.read_reg(self.ESP_OTP_MAC0) - mac1 = self.read_reg(self.ESP_OTP_MAC1) - mac3 = self.read_reg(self.ESP_OTP_MAC3) - if (mac3 != 0): - oui = ((mac3 >> 16) & 0xff, (mac3 >> 8) & 0xff, mac3 & 0xff) - elif ((mac1 >> 16) & 0xff) == 0: - oui = (0x18, 0xfe, 0x34) - elif ((mac1 >> 16) & 0xff) == 1: - oui = (0xac, 0xd0, 0x74) - else: - raise FatalError("Unknown OUI") - return oui + ((mac1 >> 8) & 0xff, mac1 & 0xff, (mac0 >> 24) & 0xff) - - def get_erase_size(self, offset, size): - """ Calculate an erase size given a specific size in bytes. - - Provides a workaround for the bootloader erase bug.""" - - sectors_per_block = 16 - sector_size = self.ESP_FLASH_SECTOR - num_sectors = (size + sector_size - 1) / sector_size - start_sector = offset / sector_size - - head_sectors = sectors_per_block - (start_sector % sectors_per_block) - if num_sectors < head_sectors: - head_sectors = num_sectors - - if num_sectors < 2 * head_sectors: - return (num_sectors + 1) / 2 * sector_size - else: - return (num_sectors - head_sectors) * sector_size - - -class ESP8266StubLoader(ESP8266ROM): - """ Access class for ESP8266 stub loader, runs on top of ROM. - """ - FLASH_WRITE_SIZE = 0x4000 # matches MAX_WRITE_BLOCK in stub_loader.c - IS_STUB = True - - def __init__(self, rom_loader): - self._port = rom_loader._port - self.flush_input() # resets _slip_reader - -ESP8266ROM.STUB_CLASS = ESP8266StubLoader - - -class ESP32ROM(ESPLoader): - """Access class for ESP32 ROM bootloader - - """ - CHIP_NAME = "ESP32" - IS_STUB = False - - DATE_REG_VALUE = 0x15122500 - - IROM_MAP_START = 0x400d0000 - IROM_MAP_END = 0x40400000 - DROM_MAP_START = 0x3F400000 - DROM_MAP_END = 0x3F700000 - - # ESP32 uses a 4 byte status reply - STATUS_BYTES_LENGTH = 4 - - SPI_REG_BASE = 0x60002000 - EFUSE_REG_BASE = 0x6001a000 - - SPI_W0_OFFS = 0x80 - SPI_HAS_MOSI_DLEN_REG = True - - FLASH_SIZES = { - '1MB':0x00, - '2MB':0x10, - '4MB':0x20, - '8MB':0x30, - '16MB':0x40 - } - - def read_efuse(self, n): - """ Read the nth word of the ESP3x EFUSE region. """ - return self.read_reg(self.EFUSE_REG_BASE + (4 * n)) - - def chip_id(self): - word16 = self.read_efuse(16) - word17 = self.read_efuse(17) - return ((word17 & MAX_UINT24) << 24) | (word16 >> 8) & MAX_UINT24 - - def read_mac(self): - """ Read MAC from EFUSE region """ - word16 = self.read_efuse(16) - word17 = self.read_efuse(17) - word18 = self.read_efuse(18) - word19 = self.read_efuse(19) - wifi_mac = (((word17 >> 16) & 0xff), ((word17 >> 8) & 0xff), ((word17 >> 0) & 0xff), - ((word16 >> 24) & 0xff), ((word16 >> 16) & 0xff), ((word16 >> 8) & 0xff)) - bt_mac = (((word19 >> 16) & 0xff), ((word19 >> 8) & 0xff), ((word19 >> 0) & 0xff), - ((word18 >> 24) & 0xff), ((word18 >> 16) & 0xff), ((word18 >> 8) & 0xff)) - return (wifi_mac,bt_mac) - - def get_erase_size(self, offset, size): - return size - - -class ESP32StubLoader(ESP32ROM): - """ Access class for ESP32 stub loader, runs on top of ROM. - """ - FLASH_WRITE_SIZE = 0x4000 # matches MAX_WRITE_BLOCK in stub_loader.c - STATUS_BYTES_LENGTH = 2 # same as ESP8266, different to ESP32 ROM - IS_STUB = True - - def __init__(self, rom_loader): - self._port = rom_loader._port - self.flush_input() # resets _slip_reader - -ESP32ROM.STUB_CLASS = ESP32StubLoader - - -class ESPBOOTLOADER(object): - """ These are constants related to software ESP bootloader, working with 'v2' image files """ - - # First byte of the "v2" application image - IMAGE_V2_MAGIC = 0xea - - # First 'segment' value in a "v2" application image, appears to be a constant version value? - IMAGE_V2_SEGMENT = 4 - - -def LoadFirmwareImage(chip, filename): - """ Load a firmware image. Can be for ESP8266 or ESP32. ESP8266 images will be examined to determine if they are - original ROM firmware images (ESPFirmwareImage) or "v2" OTA bootloader images. - - Returns a BaseFirmwareImage subclass, either ESPFirmwareImage (v1) or OTAFirmwareImage (v2). - """ - with open(filename, 'rb') as f: - if chip == 'esp32': - return ESP32FirmwareImage(f) - else: # Otherwise, ESP8266 so look at magic to determine the image type - magic = ord(f.read(1)) - f.seek(0) - if magic == ESPLoader.ESP_IMAGE_MAGIC: - return ESPFirmwareImage(f) - elif magic == ESPBOOTLOADER.IMAGE_V2_MAGIC: - return OTAFirmwareImage(f) - else: - raise FatalError("Invalid image magic number: %d" % magic) - - -class ImageSegment(object): - """ Wrapper class for a segment in an ESP image - (very similar to a section in an ELFImage also) """ - def __init__(self, addr, data, file_offs=None): - self.addr = addr - # pad all ImageSegments to at least 4 bytes length - pad_mod = len(data) % 4 - if pad_mod != 0: - data += "\x00" * (4 - pad_mod) - self.data = data - self.file_offs = file_offs - self.include_in_checksum = True - - def copy_with_new_addr(self, new_addr): - """ Return a new ImageSegment with same data, but mapped at - a new address. """ - return ImageSegment(new_addr, self.data, 0) - - def __repr__(self): - r = "len 0x%05x load 0x%08x" % (len(self.data), self.addr) - if self.file_offs is not None: - r += " file_offs 0x%08x" % (self.file_offs) - return r - - -class ELFSection(ImageSegment): - """ Wrapper class for a section in an ELF image, has a section - name as well as the common properties of an ImageSegment. """ - def __init__(self, name, addr, data): - super(ELFSection, self).__init__(addr, data) - self.name = name - - def __repr__(self): - return "%s %s" % (self.name, super(ELFSection, self).__repr__()) - - -class BaseFirmwareImage(object): - SEG_HEADER_LEN = 8 - - """ Base class with common firmware image functions """ - def __init__(self): - self.segments = [] - self.entrypoint = 0 - - def load_common_header(self, load_file, expected_magic): - (magic, segments, self.flash_mode, self.flash_size_freq, self.entrypoint) = struct.unpack('<BBBBI', load_file.read(8)) - - if magic != expected_magic or segments > 16: - raise FatalError('Invalid firmware image magic=%d segments=%d' % (magic, segments)) - return segments - - def load_segment(self, f, is_irom_segment=False): - """ Load the next segment from the image file """ - file_offs = f.tell() - (offset, size) = struct.unpack('<II', f.read(8)) - self.warn_if_unusual_segment(offset, size, is_irom_segment) - segment_data = f.read(size) - if len(segment_data) < size: - raise FatalError('End of file reading segment 0x%x, length %d (actual length %d)' % (offset, size, len(segment_data))) - segment = ImageSegment(offset, segment_data, file_offs) - self.segments.append(segment) - return segment - - def warn_if_unusual_segment(self, offset, size, is_irom_segment): - if not is_irom_segment: - if offset > 0x40200000 or offset < 0x3ffe0000 or size > 65536: - print('WARNING: Suspicious segment 0x%x, length %d' % (offset, size)) - - def save_segment(self, f, segment, checksum=None): - """ Save the next segment to the image file, return next checksum value if provided """ - f.write(struct.pack('<II', segment.addr, len(segment.data))) - f.write(segment.data) - if checksum is not None: - return ESPLoader.checksum(segment.data, checksum) - - def read_checksum(self, f): - """ Return ESPLoader checksum from end of just-read image """ - # Skip the padding. The checksum is stored in the last byte so that the - # file is a multiple of 16 bytes. - align_file_position(f, 16) - return ord(f.read(1)) - - def calculate_checksum(self): - """ Calculate checksum of loaded image, based on segments in - segment array. - """ - checksum = ESPLoader.ESP_CHECKSUM_MAGIC - for seg in self.segments: - if seg.include_in_checksum: - checksum = ESPLoader.checksum(seg.data, checksum) - return checksum - - def append_checksum(self, f, checksum): - """ Append ESPLoader checksum to the just-written image """ - align_file_position(f, 16) - f.write(struct.pack('B', checksum)) - - def write_common_header(self, f, segments): - f.write(struct.pack('<BBBBI', ESPLoader.ESP_IMAGE_MAGIC, len(segments), - self.flash_mode, self.flash_size_freq, self.entrypoint)) - - def is_irom_addr(self, addr): - """ Returns True if an address starts in the irom region. - Valid for ESP8266 only. - """ - return ESP8266ROM.IROM_MAP_START <= addr < ESP8266ROM.IROM_MAP_END - - def get_irom_segment(self): - irom_segments = [s for s in self.segments if self.is_irom_addr(s.addr)] - if len(irom_segments) > 0: - if len(irom_segments) != 1: - raise FatalError('Found %d segments that could be irom0. Bad ELF file?' % len(irom_segments)) - return irom_segments[0] - return None - - def get_non_irom_segments(self): - irom_segment = self.get_irom_segment() - return [s for s in self.segments if s != irom_segment] - - -class ESPFirmwareImage(BaseFirmwareImage): - """ 'Version 1' firmware image, segments loaded directly by the ROM bootloader. """ - - ROM_LOADER = ESP8266ROM - - def __init__(self, load_file=None): - super(ESPFirmwareImage, self).__init__() - self.flash_mode = 0 - self.flash_size_freq = 0 - self.version = 1 - - if load_file is not None: - segments = self.load_common_header(load_file, ESPLoader.ESP_IMAGE_MAGIC) - - for _ in xrange(segments): - self.load_segment(load_file) - self.checksum = self.read_checksum(load_file) - - def default_output_name(self, input_file): - """ Derive a default output name from the ELF name. """ - return input_file + '-' - - def save(self, basename): - """ Save a set of V1 images for flashing. Parameter is a base filename. """ - # IROM data goes in its own plain binary file - irom_segment = self.get_irom_segment() - if irom_segment is not None: - with open("%s0x%05x.bin" % (basename, irom_segment.addr - ESP8266ROM.IROM_MAP_START), "wb") as f: - f.write(irom_segment.data) - - # everything but IROM goes at 0x00000 in an image file - normal_segments = self.get_non_irom_segments() - with open("%s0x00000.bin" % basename, 'wb') as f: - self.write_common_header(f, normal_segments) - checksum = ESPLoader.ESP_CHECKSUM_MAGIC - for segment in normal_segments: - checksum = self.save_segment(f, segment, checksum) - self.append_checksum(f, checksum) - - -class OTAFirmwareImage(BaseFirmwareImage): - """ 'Version 2' firmware image, segments loaded by software bootloader stub - (ie Espressif bootloader or rboot) - """ - - ROM_LOADER = ESP8266ROM - - def __init__(self, load_file=None): - super(OTAFirmwareImage, self).__init__() - self.version = 2 - if load_file is not None: - segments = self.load_common_header(load_file, ESPBOOTLOADER.IMAGE_V2_MAGIC) - if segments != ESPBOOTLOADER.IMAGE_V2_SEGMENT: - # segment count is not really segment count here, but we expect to see '4' - print 'Warning: V2 header has unexpected "segment" count %d (usually 4)' % segments - - # irom segment comes before the second header - # - # the file is saved in the image with a zero load address - # in the header, so we need to calculate a load address - irom_segment = self.load_segment(load_file, True) - # for actual mapped addr, add ESP8266ROM.IROM_MAP_START + flashing_Addr + 8 - irom_segment.addr = 0 - irom_segment.include_in_checksum = False - - first_flash_mode = self.flash_mode - first_flash_size_freq = self.flash_size_freq - first_entrypoint = self.entrypoint - # load the second header - - segments = self.load_common_header(load_file, ESPLoader.ESP_IMAGE_MAGIC) - - if first_flash_mode != self.flash_mode: - print('WARNING: Flash mode value in first header (0x%02x) disagrees with second (0x%02x). Using second value.' - % (first_flash_mode, self.flash_mode)) - if first_flash_size_freq != self.flash_size_freq: - print('WARNING: Flash size/freq value in first header (0x%02x) disagrees with second (0x%02x). Using second value.' - % (first_flash_size_freq, self.flash_size_freq)) - if first_entrypoint != self.entrypoint: - print('WARNING: Entrypoint address in first header (0x%08x) disagrees with second header (0x%08x). Using second value.' - % (first_entrypoint, self.entrypoint)) - - # load all the usual segments - for _ in xrange(segments): - self.load_segment(load_file) - self.checksum = self.read_checksum(load_file) - - def default_output_name(self, input_file): - """ Derive a default output name from the ELF name. """ - irom_segment = self.get_irom_segment() - if irom_segment is not None: - irom_offs = irom_segment.addr - ESP8266ROM.IROM_MAP_START - else: - irom_offs = 0 - return "%s-0x%05x.bin" % (os.path.splitext(input_file)[0], - irom_offs & ~(ESPLoader.ESP_FLASH_SECTOR - 1)) - - def save(self, filename): - with open(filename, 'wb') as f: - # Save first header for irom0 segment - f.write(struct.pack('<BBBBI', ESPBOOTLOADER.IMAGE_V2_MAGIC, ESPBOOTLOADER.IMAGE_V2_SEGMENT, - self.flash_mode, self.flash_size_freq, self.entrypoint)) - - irom_segment = self.get_irom_segment() - if irom_segment is not None: - # save irom0 segment, make sure it has load addr 0 in the file - irom_segment = irom_segment.copy_with_new_addr(0) - self.save_segment(f, irom_segment) - - # second header, matches V1 header and contains loadable segments - normal_segments = self.get_non_irom_segments() - self.write_common_header(f, normal_segments) - checksum = ESPLoader.ESP_CHECKSUM_MAGIC - for segment in normal_segments: - checksum = self.save_segment(f, segment, checksum) - self.append_checksum(f, checksum) - - -class ESP32FirmwareImage(BaseFirmwareImage): - """ ESP32 firmware image is very similar to V1 ESP8266 image, - except with an additional 16 byte reserved header at top of image, - and because of new flash mapping capabilities the flash-mapped regions - can be placed in the normal image (just @ 64kB padded offsets). - """ - - ROM_LOADER = ESP32ROM - - def __init__(self, load_file=None): - super(ESP32FirmwareImage, self).__init__() - self.flash_mode = 0 - self.flash_size_freq = 0 - self.version = 1 - self.additional_header = '\x00' * 16 - - if load_file is not None: - segments = self.load_common_header(load_file, ESPLoader.ESP_IMAGE_MAGIC) - self.additional_header = load_file.read(16) - - for i in xrange(segments): - self.load_segment(load_file) - self.checksum = self.read_checksum(load_file) - - def is_flash_addr(self, addr): - return (ESP32ROM.IROM_MAP_START <= addr < ESP32ROM.IROM_MAP_END) \ - or (ESP32ROM.DROM_MAP_START <= addr < ESP32ROM.DROM_MAP_END) - - def default_output_name(self, input_file): - """ Derive a default output name from the ELF name. """ - return "%s.bin" % (os.path.splitext(input_file)[0]) - - def warn_if_unusual_segment(self, offset, size, is_irom_segment): - pass # TODO: add warnings for ESP32 segment offset/size combinations that are wrong - - def save(self, filename): - padding_segments = 0 - with open(filename, 'wb') as f: - self.write_common_header(f, self.segments) - f.write(self.additional_header) - - checksum = ESPLoader.ESP_CHECKSUM_MAGIC - last_addr = None - for segment in sorted(self.segments, key=lambda s:s.addr): - # IROM/DROM segment flash mappings need to align on - # 64kB boundaries. - # - # TODO: intelligently order segments to reduce wastage - # by squeezing smaller DRAM/IRAM segments into the - # 64kB padding space. - IROM_ALIGN = 65536 - - # check for multiple ELF sections that live in the same flash mapping region. - # this is usually a sign of a broken linker script, but if you have a legitimate - # use case then let us know (we can merge segments here, but as a rule you probably - # want to merge them in your linker script.) - if last_addr is not None and self.is_flash_addr(last_addr) \ - and self.is_flash_addr(segment.addr) and segment.addr // IROM_ALIGN == last_addr // IROM_ALIGN: - raise FatalError(("Segment loaded at 0x%08x lands in same 64KB flash mapping as segment loaded at 0x%08x. " + - "Can't generate binary. Suggest changing linker script or ELF to merge sections.") % - (segment.addr, last_addr)) - last_addr = segment.addr - - if self.is_flash_addr(segment.addr): - # Actual alignment required for the segment header: positioned so that - # after we write the next 8 byte header, file_offs % IROM_ALIGN == segment.addr % IROM_ALIGN - # - # (this is because the segment's vaddr may not be IROM_ALIGNed, more likely is aligned - # IROM_ALIGN+0x10 to account for longest possible header. - align_past = (segment.addr % IROM_ALIGN) - self.SEG_HEADER_LEN - assert (align_past + self.SEG_HEADER_LEN) == (segment.addr % IROM_ALIGN) - - # subtract SEG_HEADER_LEN a second time, as the padding block has a header as well - pad_len = (IROM_ALIGN - (f.tell() % IROM_ALIGN)) + align_past - self.SEG_HEADER_LEN - if pad_len < 0: - pad_len += IROM_ALIGN - if pad_len > 0: - null = ImageSegment(0, '\x00' * pad_len, f.tell()) - checksum = self.save_segment(f, null, checksum) - padding_segments += 1 - # verify that after the 8 byte header is added, were are at the correct offset relative to the segment's vaddr - assert (f.tell() + 8) % IROM_ALIGN == segment.addr % IROM_ALIGN - checksum = self.save_segment(f, segment, checksum) - self.append_checksum(f, checksum) - # kinda hacky: go back to the initial header and write the new segment count - # that includes padding segments. Luckily(?) this header is not checksummed - f.seek(1) - f.write(chr(len(self.segments) + padding_segments)) - - -class ELFFile(object): - SEC_TYPE_PROGBITS = 0x01 - SEC_TYPE_STRTAB = 0x03 - - def __init__(self, name): - # Load sections from the ELF file - self.name = name - self.symbols = None - with open(self.name, 'rb') as f: - self._read_elf_file(f) - - def get_section(self, section_name): - for s in self.sections: - if s.name == section_name: - return s - raise ValueError("No section %s in ELF file" % section_name) - - def _read_elf_file(self, f): - # read the ELF file header - LEN_FILE_HEADER = 0x34 - try: - (ident,_type,machine,_version, - self.entrypoint,_phoff,shoff,_flags, - _ehsize, _phentsize,_phnum,_shentsize, - _shnum,shstrndx) = struct.unpack("<16sHHLLLLLHHHHHH", f.read(LEN_FILE_HEADER)) - except struct.error as e: - raise FatalError("Failed to read a valid ELF header from %s: %s" % (self.name, e)) - - if ident[0] != '\x7f' or ident[1:4] != 'ELF': - raise FatalError("%s has invalid ELF magic header" % self.name) - if machine != 0x5e: - raise FatalError("%s does not appear to be an Xtensa ELF file. e_machine=%04x" % (self.name, machine)) - self._read_sections(f, shoff, shstrndx) - - def _read_sections(self, f, section_header_offs, shstrndx): - f.seek(section_header_offs) - section_header = f.read() - LEN_SEC_HEADER = 0x28 - if len(section_header) == 0: - raise FatalError("No section header found at offset %04x in ELF file." % section_header_offs) - if len(section_header) % LEN_SEC_HEADER != 0: - print 'WARNING: Unexpected ELF section header length %04x is not mod-%02x' % (len(section_header),LEN_SEC_HEADER) - - # walk through the section header and extract all sections - section_header_offsets = range(0, len(section_header), LEN_SEC_HEADER) - - def read_section_header(offs): - name_offs,sec_type,_flags,lma,sec_offs,size = struct.unpack_from("<LLLLLL", section_header[offs:]) - return (name_offs, sec_type, lma, size, sec_offs) - all_sections = [read_section_header(offs) for offs in section_header_offsets] - prog_sections = [s for s in all_sections if s[1] == ELFFile.SEC_TYPE_PROGBITS] - - # search for the string table section - if not shstrndx * LEN_SEC_HEADER in section_header_offsets: - raise FatalError("ELF file has no STRTAB section at shstrndx %d" % shstrndx) - _,sec_type,_,sec_size,sec_offs = read_section_header(shstrndx * LEN_SEC_HEADER) - if sec_type != ELFFile.SEC_TYPE_STRTAB: - print 'WARNING: ELF file has incorrect STRTAB section type 0x%02x' % sec_type - f.seek(sec_offs) - string_table = f.read(sec_size) - - # build the real list of ELFSections by reading the actual section names from the - # string table section, and actual data for each section from the ELF file itself - def lookup_string(offs): - raw = string_table[offs:] - return raw[:raw.index('\x00')] - - def read_data(offs,size): - f.seek(offs) - return f.read(size) - - prog_sections = [ELFSection(lookup_string(n_offs), lma, read_data(offs, size)) for (n_offs, _type, lma, size, offs) in prog_sections - if lma != 0] - self.sections = prog_sections - - def _fetch_symbols(self): - if self.symbols is not None: - return - self.symbols = {} - try: - tool_nm = "nm" - proc = subprocess.Popen([tool_nm, self.name], stdout=subprocess.PIPE) - except OSError: - print "Error calling %s, do you have Xtensa toolchain in PATH?" % tool_nm - sys.exit(1) - for l in proc.stdout: - fields = l.strip().split() - try: - if fields[0] == "U": - print "Warning: ELF binary has undefined symbol %s" % fields[1] - continue - if fields[0] == "w": - continue # can skip weak symbols - self.symbols[fields[2]] = int(fields[0], 16) - except ValueError: - raise FatalError("Failed to strip symbol output from nm: %s" % fields) - - def get_symbol_addr(self, sym): - self._fetch_symbols() - return self.symbols[sym] - - -def slip_reader(port): - """Generator to read SLIP packets from a serial port. - Yields one full SLIP packet at a time, raises exception on timeout or invalid data. - - Designed to avoid too many calls to serial.read(1), which can bog - down on slow systems. - """ - partial_packet = None - in_escape = False - while True: - waiting = port.inWaiting() - read_bytes = port.read(1 if waiting == 0 else waiting) - if read_bytes == '': - raise FatalError("Timed out waiting for packet %s" % ("header" if partial_packet is None else "content")) - for b in read_bytes: - if partial_packet is None: # waiting for packet header - if b == '\xc0': - partial_packet = "" - else: - raise FatalError('Invalid head of packet (%r)' % b) - elif in_escape: # part-way through escape sequence - in_escape = False - if b == '\xdc': - partial_packet += '\xc0' - elif b == '\xdd': - partial_packet += '\xdb' - else: - raise FatalError('Invalid SLIP escape (%r%r)' % ('\xdb', b)) - elif b == '\xdb': # start of escape sequence - in_escape = True - elif b == '\xc0': # end of packet - yield partial_packet - partial_packet = None - else: # normal byte in packet - partial_packet += b - - -def arg_auto_int(x): - return int(x, 0) - - -def div_roundup(a, b): - """ Return a/b rounded up to nearest integer, - equivalent result to int(math.ceil(float(int(a)) / float(int(b))), only - without possible floating point accuracy errors. - """ - return (int(a) + int(b) - 1) / int(b) - - -def align_file_position(f, size): - """ Align the position in the file to the next block of specified size """ - align = (size - 1) - (f.tell() % size) - f.seek(align, 1) - - -def flash_size_bytes(size): - """ Given a flash size of the type passed in args.flash_size - (ie 512KB or 1MB) then return the size in bytes. - """ - if "MB" in size: - return int(size[:size.index("MB")]) * 1024 * 1024 - elif "KB" in size: - return int(size[:size.index("KB")]) * 1024 - else: - raise FatalError("Unknown size %s" % size) - - -def hexify(s): - return ''.join('%02X' % ord(c) for c in s) - - -def unhexify(hs): - s = '' - for i in range(0, len(hs) - 1, 2): - s += chr(int(hs[i] + hs[i + 1], 16)) - return s - - -class FatalError(RuntimeError): - """ - Wrapper class for runtime errors that aren't caused by internal bugs, but by - ESP8266 responses or input content. - """ - def __init__(self, message): - RuntimeError.__init__(self, message) - - @staticmethod - def WithResult(message, result): - """ - Return a fatal error object that appends the hex values of - 'result' as a string formatted argument. - """ - message += " (result was %s)" % ", ".join(hex(ord(x)) for x in result) - return FatalError(message) - - -class NotImplementedInROMError(FatalError): - """ - Wrapper class for the error thrown when a particular ESP bootloader function - is not implemented in the ROM bootloader. - """ - def __init__(self, bootloader): - FatalError.__init__(self, "%s ROM does not support this function." % bootloader.CHIP_NAME) - -# "Operation" commands, executable at command line. One function each -# -# Each function takes either two args (<ESPLoader instance>, <args>) or a single <args> -# argument. - - -def load_ram(esp, args): - image = LoadFirmwareImage(esp, args.filename) - - print 'RAM boot...' - for (offset, size, data) in image.segments: - print 'Downloading %d bytes at %08x...' % (size, offset), - sys.stdout.flush() - esp.mem_begin(size, div_roundup(size, esp.ESP_RAM_BLOCK), esp.ESP_RAM_BLOCK, offset) - - seq = 0 - while len(data) > 0: - esp.mem_block(data[0:esp.ESP_RAM_BLOCK], seq) - data = data[esp.ESP_RAM_BLOCK:] - seq += 1 - print 'done!' - - print 'All segments done, executing at %08x' % image.entrypoint - esp.mem_finish(image.entrypoint) - - -def read_mem(esp, args): - print '0x%08x = 0x%08x' % (args.address, esp.read_reg(args.address)) - - -def write_mem(esp, args): - esp.write_reg(args.address, args.value, args.mask, 0) - print 'Wrote %08x, mask %08x to %08x' % (args.value, args.mask, args.address) - - -def dump_mem(esp, args): - f = file(args.filename, 'wb') - for i in xrange(args.size / 4): - d = esp.read_reg(args.address + (i * 4)) - f.write(struct.pack('<I', d)) - if f.tell() % 1024 == 0: - print '\r%d bytes read... (%d %%)' % (f.tell(), - f.tell() * 100 / args.size), - sys.stdout.flush() - print 'Done!' - - -def write_flash(esp, args): - """Write data to flash - """ - flash_mode = {'qio':0, 'qout':1, 'dio':2, 'dout': 3}[args.flash_mode] - flash_size_freq = esp.parse_flash_size_arg(args.flash_size) - flash_size_freq += {'40m':0, '26m':1, '20m':2, '80m': 0xf}[args.flash_freq] - flash_info = struct.pack('BB', flash_mode, flash_size_freq) - - # verify file sizes fit in flash - flash_end = flash_size_bytes(args.flash_size) - for address, argfile in args.addr_filename: - argfile.seek(0,2) # seek to end - if address + argfile.tell() > flash_end: - raise FatalError(("File %s (length %d) at offset %d will not fit in %d bytes of flash. " + - "Use --flash-size argument, or change flashing address.") - % (argfile.name, argfile.tell(), address, flash_end)) - argfile.seek(0) - - for address, argfile in args.addr_filename: - print 'Erasing flash...' - image = argfile.read() - # Update header with flash parameters - if address == 0 and image[0] == '\xe9': - image = image[0:2] + flash_info + image[4:] - calcmd5 = hashlib.md5(image).hexdigest() - uncsize = len(image) - if args.compress: - uncimage = image - image = zlib.compress(uncimage, 9) - blocks = div_roundup(len(image), esp.FLASH_WRITE_SIZE) - esp.flash_defl_begin(len(uncimage),len(image), address) - else: - blocks = div_roundup(len(image), esp.FLASH_WRITE_SIZE) - esp.flash_begin(blocks * esp.FLASH_WRITE_SIZE, address) - argfile.seek(0) # in case we need it again - seq = 0 - written = 0 - t = time.time() - header_block = None - while len(image) > 0: - print '\rWriting at 0x%08x... (%d %%)' % (address + seq * esp.FLASH_WRITE_SIZE, 100 * (seq + 1) / blocks), - sys.stdout.flush() - block = image[0:esp.FLASH_WRITE_SIZE] - if args.compress: - esp.flash_defl_block(block, seq) - else: - # Pad the last block - block = block + '\xff' * (esp.FLASH_WRITE_SIZE - len(block)) - esp.flash_block(block, seq) - image = image[esp.FLASH_WRITE_SIZE:] - seq += 1 - written += len(block) - t = time.time() - t - speed_msg = "" - if args.compress: - if t > 0.0: - speed_msg = " (effective %.1f kbit/s)" % (uncsize / t * 8 / 1000) - print '\rWrote %d bytes (%d compressed) at 0x%08x in %.1f seconds%s...' % (uncsize, written, address, t, speed_msg) - else: - if t > 0.0: - speed_msg = " (%.1f kbit/s)" % (written / t * 8 / 1000) - print '\rWrote %d bytes at 0x%08x in %.1f seconds%s...' % (written, address, t, speed_msg) - res = esp.flash_md5sum(address, uncsize) - if res != calcmd5: - print 'File md5: %s' % calcmd5 - print 'Flash md5: %s' % res - raise FatalError("MD5 of file does not match data in flash!") - else: - print 'Hash of data verified.' - print '\nLeaving...' - if args.flash_mode == 'dio' and esp.CHIP_NAME == "ESP8266": - esp.flash_unlock_dio() - else: - esp.flash_begin(0, 0) - if args.compress: - esp.flash_defl_finish(False) - else: - esp.flash_finish(False) - if args.verify: - print 'Verifying just-written flash...' - verify_flash(esp, args, header_block) - - -def image_info(args): - image = LoadFirmwareImage(args.chip, args.filename) - print('Image version: %d' % image.version) - print('Entry point: %08x' % image.entrypoint) if image.entrypoint != 0 else 'Entry point not set' - print '%d segments' % len(image.segments) - print - idx = 0 - for seg in image.segments: - idx += 1 - print 'Segment %d: %r' % (idx, seg) - calc_checksum = image.calculate_checksum() - print 'Checksum: %02x (%s)' % (image.checksum, - 'valid' if image.checksum == calc_checksum else 'invalid - calculated %02x' % calc_checksum) - - -def make_image(args): - image = ESPFirmwareImage() - if len(args.segfile) == 0: - raise FatalError('No segments specified') - if len(args.segfile) != len(args.segaddr): - raise FatalError('Number of specified files does not match number of specified addresses') - for (seg, addr) in zip(args.segfile, args.segaddr): - data = file(seg, 'rb').read() - image.segments.append(ImageSegment(addr, data)) - image.entrypoint = args.entrypoint - image.save(args.output) - - -def elf2image(args): - e = ELFFile(args.input) - if args.chip == 'auto': # Default to ESP8266 for backwards compatibility - print "Creating image for ESP8266..." - args.chip == 'esp8266' - - if args.chip == 'esp32': - image = ESP32FirmwareImage() - elif args.version == '1': # ESP8266 - image = ESPFirmwareImage() - else: - image = OTAFirmwareImage() - image.entrypoint = e.entrypoint - image.segments = e.sections # ELFSection is a subclass of ImageSegment - image.flash_mode = {'qio':0, 'qout':1, 'dio':2, 'dout': 3}[args.flash_mode] - image.flash_size_freq = image.ROM_LOADER.FLASH_SIZES[args.flash_size] - image.flash_size_freq += {'40m':0, '26m':1, '20m':2, '80m': 0xf}[args.flash_freq] - - if args.output is None: - args.output = image.default_output_name(args.input) - image.save(args.output) - - -def read_mac(esp, args): - mac = esp.read_mac() - print 'MAC: %s' % ':'.join(map(lambda x: '%02x' % x, mac)) - - -def chip_id(esp, args): - chipid = esp.chip_id() - print 'Chip ID: 0x%08x' % chipid - - -def erase_flash(esp, args): - print 'Erasing flash (this may take a while)...' - t = time.time() - esp.erase_flash() - print 'Chip erase completed successfully in %.1fs' % (time.time() - t) - - -def erase_region(esp, args): - print 'Erasing region (may be slow depending on size)...' - t = time.time() - esp.erase_region(args.address, args.size) - print 'Erase completed successfully in %.1f seconds.' % (time.time() - t) - - -def run(esp, args): - esp.run() - - -def flash_id(esp, args): - flash_id = esp.flash_id() - print 'Manufacturer: %02x' % (flash_id & 0xff) - print 'Device: %02x%02x' % ((flash_id >> 8) & 0xff, (flash_id >> 16) & 0xff) - - -def read_flash(esp, args): - if args.no_progress: - flash_progress = None - else: - def flash_progress(progress, length): - msg = '%d (%d %%)' % (progress, progress * 100.0 / length) - padding = '\b' * len(msg) - if progress == length: - padding = '\n' - sys.stdout.write(msg + padding) - sys.stdout.flush() - t = time.time() - data = esp.read_flash(args.address, args.size, flash_progress) - t = time.time() - t - print ('\rRead %d bytes at 0x%x in %.1f seconds (%.1f kbit/s)...' - % (len(data), args.address, t, len(data) / t * 8 / 1000)) - file(args.filename, 'wb').write(data) - - -def verify_flash(esp, args, flash_params=None): - differences = False - for address, argfile in args.addr_filename: - image = argfile.read() - argfile.seek(0) # rewind in case we need it again - if address == 0 and image[0] == '\xe9' and flash_params is not None: - image = image[0:2] + flash_params + image[4:] - image_size = len(image) - print 'Verifying 0x%x (%d) bytes @ 0x%08x in flash against %s...' % (image_size, image_size, address, argfile.name) - # Try digest first, only read if there are differences. - digest = esp.flash_md5sum(address, image_size) - expected_digest = hashlib.md5(image).hexdigest() - if digest == expected_digest: - print '-- verify OK (digest matched)' - continue - else: - differences = True - if getattr(args, 'diff', 'no') != 'yes': - print '-- verify FAILED (digest mismatch)' - continue - - flash = esp.read_flash(address, image_size) - assert flash != image - diff = [i for i in xrange(image_size) if flash[i] != image[i]] - print '-- verify FAILED: %d differences, first @ 0x%08x' % (len(diff), address + diff[0]) - for d in diff: - print ' %08x %02x %02x' % (address + d, ord(flash[d]), ord(image[d])) - if differences: - raise FatalError("Verify failed.") - - -def read_flash_status(esp, args): - print ('Status value: 0x%04x' % esp.read_status(args.bytes)) - - -def write_flash_status(esp, args): - fmt = "0x%%0%dx" % (args.bytes * 2) - args.value = args.value & ((1 << (args.bytes * 8)) - 1) - print (('Initial flash status: ' + fmt) % esp.read_status(args.bytes)) - print (('Setting flash status: ' + fmt) % args.value) - esp.write_status(args.value, args.bytes, args.non_volatile) - print (('After flash status: ' + fmt) % esp.read_status(args.bytes)) - - -def version(args): - print __version__ - - -def wrap_stub(args): - e = ELFFile(args.input) - - stub = { - 'params_start': e.get_symbol_addr('_params_start'), - 'code': e.get_section('.text').data, - 'code_start': e.get_symbol_addr('_code_start'), - 'entry': e.get_symbol_addr(args.entry), - } - try: - stub['data'] = e.get_section('.data').data - stub['data_start'] = e.get_symbol_addr('_data_start') - except ValueError: - pass - # No data section, that's fine - bss_size, bss_start = 0, 0 - try: - bss_start = e.get_symbol_addr('_bss_start') - bss_size = e.get_symbol_addr('_bss_end') - bss_start - except ValueError: - pass - params_len = e.get_symbol_addr('_params_end') - stub['params_start'] - if params_len % 4 != 0: - raise FatalError('Params must be dwords') - stub['num_params'] = params_len / 4 - - # Pad code with NOPs to mod 4. - if len(stub['code']) % 4 != 0: - stub['code'] += (4 - (len(stub['code']) % 4)) * '\0' - - print >>sys.stderr, ( - 'Stub params: %d @ 0x%08x, code: %d @ 0x%08x, bss: %d @ 0x%08x, data: %d @ 0x%08x, entry: %s @ 0x%x' % ( - params_len, stub['params_start'], - len(stub['code']), stub['code_start'], - bss_size, bss_start, - len(stub.get('data', '')), stub.get('data_start', 0), - args.entry, stub['entry'])) - - jstub = dict(stub) - jstub['code'] = hexify(stub['code']) - if 'data' in stub: - jstub['data'] = hexify(stub['data']) - print json.dumps(jstub) - - -def run_stub(esp, args): - esp.run_custom_stub(json.load(open(args.input)), args.params, read_output=True) - -# -# End of operations functions -# - - -def main(): - parser = argparse.ArgumentParser(description='esptool.py v%s - ESP8266 ROM Bootloader Utility' % __version__, prog='esptool') - - parser.add_argument('--chip', '-c', - help='Target chip type', - choices=['auto', 'esp8266', 'esp31', 'esp32'], - default=os.environ.get('ESPTOOL_CHIP', 'auto')) - - parser.add_argument( - '--port', '-p', - help='Serial port device', - default=os.environ.get('ESPTOOL_PORT', ESPLoader.DEFAULT_PORT)) - - parser.add_argument( - '--baud', '-b', - help='Serial port baud rate used when flashing/reading', - type=arg_auto_int, - default=os.environ.get('ESPTOOL_BAUD', ESPLoader.ESP_ROM_BAUD)) - - parser.add_argument( - '--no-stub', - help="Disable launching the flasher stub, only talk to ROM bootloader. Some features will not be available.", - action='store_true') - - subparsers = parser.add_subparsers( - dest='operation', - help='Run esptool {command} -h for additional help') - - parser_load_ram = subparsers.add_parser( - 'load_ram', - help='Download an image to RAM and execute') - parser_load_ram.add_argument('filename', help='Firmware image') - - parser_dump_mem = subparsers.add_parser( - 'dump_mem', - help='Dump arbitrary memory to disk') - parser_dump_mem.add_argument('address', help='Base address', type=arg_auto_int) - parser_dump_mem.add_argument('size', help='Size of region to dump', type=arg_auto_int) - parser_dump_mem.add_argument('filename', help='Name of binary dump') - - parser_read_mem = subparsers.add_parser( - 'read_mem', - help='Read arbitrary memory location') - parser_read_mem.add_argument('address', help='Address to read', type=arg_auto_int) - - parser_write_mem = subparsers.add_parser( - 'write_mem', - help='Read-modify-write to arbitrary memory location') - parser_write_mem.add_argument('address', help='Address to write', type=arg_auto_int) - parser_write_mem.add_argument('value', help='Value', type=arg_auto_int) - parser_write_mem.add_argument('mask', help='Mask of bits to write', type=arg_auto_int) - - def add_spi_flash_subparsers(parent): - """ Add common parser arguments for SPI flash properties """ - parent.add_argument('--flash_freq', '-ff', help='SPI Flash frequency', - choices=['40m', '26m', '20m', '80m'], - default=os.environ.get('ESPTOOL_FF', '40m')) - parent.add_argument('--flash_mode', '-fm', help='SPI Flash mode', - choices=['qio', 'qout', 'dio', 'dout'], - default=os.environ.get('ESPTOOL_FM', 'qio')) - parent.add_argument('--flash_size', '-fs', help='SPI Flash size in MegaBytes (1MB, 2MB, 4MB, 8MB, 16M)' - ' plus ESP8266-only (256KB, 512KB, 2MB-c1, 4MB-c1, 4MB-2)', - action=FlashSizeAction, - default=os.environ.get('ESPTOOL_FS', '1MB')) - parent.add_argument('--ucIsHspi', '-ih', help='Config SPI PORT/PINS (Espressif internal feature)',action='store_true') - parent.add_argument('--ucIsLegacy', '-il', help='Config SPI LEGACY (Espressif internal feature)',action='store_true') - - parser_write_flash = subparsers.add_parser( - 'write_flash', - help='Write a binary blob to flash') - parser_write_flash.add_argument('addr_filename', metavar='<address> <filename>', help='Address followed by binary filename, separated by space', - action=AddrFilenamePairAction) - add_spi_flash_subparsers(parser_write_flash) - parser_write_flash.add_argument('--no-progress', '-p', help='Suppress progress output', action="store_true") - parser_write_flash.add_argument('--verify', help='Verify just-written data (only necessary if very cautious, data is already CRCed', action='store_true') - parser_write_flash.add_argument('--compress', '-z', help='Compress data in transfer',action="store_true") - - subparsers.add_parser( - 'run', - help='Run application code in flash') - - parser_image_info = subparsers.add_parser( - 'image_info', - help='Dump headers from an application image') - parser_image_info.add_argument('filename', help='Image file to parse') - - parser_make_image = subparsers.add_parser( - 'make_image', - help='Create an application image from binary files') - parser_make_image.add_argument('output', help='Output image file') - parser_make_image.add_argument('--segfile', '-f', action='append', help='Segment input file') - parser_make_image.add_argument('--segaddr', '-a', action='append', help='Segment base address', type=arg_auto_int) - parser_make_image.add_argument('--entrypoint', '-e', help='Address of entry point', type=arg_auto_int, default=0) - - parser_elf2image = subparsers.add_parser( - 'elf2image', - help='Create an application image from ELF file') - parser_elf2image.add_argument('input', help='Input ELF file') - parser_elf2image.add_argument('--output', '-o', help='Output filename prefix (for version 1 image), or filename (for version 2 single image)', type=str) - parser_elf2image.add_argument('--version', '-e', help='Output image version', choices=['1','2'], default='1') - add_spi_flash_subparsers(parser_elf2image) - - subparsers.add_parser( - 'read_mac', - help='Read MAC address from OTP ROM') - - subparsers.add_parser( - 'chip_id', - help='Read Chip ID from OTP ROM') - - subparsers.add_parser( - 'flash_id', - help='Read SPI flash manufacturer and device ID') - - parser_read_status = subparsers.add_parser( - 'read_flash_status', - help='Read SPI flash status register') - - parser_read_status.add_argument('--bytes', help='Number of bytes to read (1-3)', type=int, choices=[1,2,3], default=2) - - parser_write_status = subparsers.add_parser( - 'write_flash_status', - help='Write SPI flash status register') - - parser_write_status.add_argument('--non-volatile', help='Write non-volatile bits (use with caution)', action='store_true') - parser_write_status.add_argument('--bytes', help='Number of status bytes to write (1-3)', type=int, choices=[1,2,3], default=2) - parser_write_status.add_argument('value', help='New value', type=arg_auto_int) - - parser_read_flash = subparsers.add_parser( - 'read_flash', - help='Read SPI flash content') - parser_read_flash.add_argument('address', help='Start address', type=arg_auto_int) - parser_read_flash.add_argument('size', help='Size of region to dump', type=arg_auto_int) - parser_read_flash.add_argument('filename', help='Name of binary dump') - parser_read_flash.add_argument('--no-progress', '-p', help='Suppress progress output', action="store_true") - - parser_verify_flash = subparsers.add_parser( - 'verify_flash', - help='Verify a binary blob against flash') - parser_verify_flash.add_argument('addr_filename', help='Address and binary file to verify there, separated by space', - action=AddrFilenamePairAction) - parser_verify_flash.add_argument('--diff', '-d', help='Show differences', - choices=['no', 'yes'], default='no') - - subparsers.add_parser( - 'erase_flash', - help='Perform Chip Erase on SPI flash') - - parser_erase_region = subparsers.add_parser( - 'erase_region', - help='Erase a region of the flash') - parser_erase_region.add_argument('address', help='Start address (must be multiple of 4096)', type=arg_auto_int) - parser_erase_region.add_argument('size', help='Size of region to erase (must be multiple of 4096)', type=arg_auto_int) - - subparsers.add_parser( - 'version', help='Print esptool version') - - parser_wrap_stub = subparsers.add_parser('wrap_stub', help='Wrap stub and output a JSON object') - parser_wrap_stub.add_argument('input') - parser_wrap_stub.add_argument('--entry', default='stub_main') - - parser_run_stub = subparsers.add_parser('run_stub', help='Run stub on a device') - parser_run_stub.add_argument('--entry', default='stub_main') - parser_run_stub.add_argument('input') - parser_run_stub.add_argument('params', nargs='*', type=arg_auto_int) - - # internal sanity check - every operation matches a module function of the same name - for operation in subparsers.choices.keys(): - assert operation in globals(), "%s should be a module function" % operation - - args = parser.parse_args() - - # operation function can take 1 arg (args), 2 args (esp, arg) - # or be a member function of the ESPLoader class. - - operation_func = globals()[args.operation] - operation_args,_,_,_ = inspect.getargspec(operation_func) - if operation_args[0] == 'esp': # operation function takes an ESPLoader connection object - initial_baud = min(ESPLoader.ESP_ROM_BAUD, args.baud) # don't sync faster than the default baud rate - chip_constructor_fun = { - 'auto': ESPLoader.detect_chip, - 'esp8266': ESP8266ROM, - 'esp32': ESP32ROM, - }[args.chip] - esp = chip_constructor_fun(args.port, initial_baud) - - if not args.no_stub and args.operation != 'run_stub': - esp = esp.run_stub() - - if args.baud > initial_baud: - esp.change_baud(args.baud) - # TODO: handle a NotImplementedInROMError - - # override common SPI flash parameter stuff as required - if hasattr(args, "ucIsHspi"): - print "Attaching SPI flash..." - esp.flash_spi_attach(args.ucIsHspi,args.ucIsLegacy) - else: - esp.flash_spi_attach(0, 0) - if hasattr(args, "flash_size"): - print "Configuring flash size..." - esp.flash_set_parameters(flash_size_bytes(args.flash_size)) - - operation_func(esp, args) - else: - operation_func(args) - - -class FlashSizeAction(argparse.Action): - """ Custom flash size parser class to support backwards compatibility with megabit size arguments. - - (At next major relase, remove deprecated sizes and this can become a 'normal' choices= argument again.) - """ - def __init__(self, option_strings, dest, nargs=1, **kwargs): - super(FlashSizeAction, self).__init__(option_strings, dest, nargs, **kwargs) - - def __call__(self, parser, namespace, values, option_string=None): - try: - value = { - '2m': '256KB', - '4m': '512KB', - '8m': '1MB', - '16m': '2MB', - '32m': '4MB', - '16m-c1': '2MB-c1', - '32m-c1': '4MB-c1', - '32m-c2': '4MB-c2' - }[values[0]] - print("WARNING: Flash size arguments in megabits like '%s' are deprecated." % (values[0])) - print("Please use the equivalent size '%s'." % (value)) - print("Megabit arguments may be removed in a future release.") - except KeyError: - value = values[0] - - known_sizes = dict(ESP8266ROM.FLASH_SIZES) - known_sizes.update(ESP32ROM.FLASH_SIZES) - if value not in known_sizes: - raise argparse.ArgumentError(self, '%s is not a known flash size. Known sizes: %s' % (value, ", ".join(known_sizes.keys()))) - setattr(namespace, self.dest, value) - - -class AddrFilenamePairAction(argparse.Action): - """ Custom parser class for the address/filename pairs passed as arguments """ - def __init__(self, option_strings, dest, nargs='+', **kwargs): - super(AddrFilenamePairAction, self).__init__(option_strings, dest, nargs, **kwargs) - - def __call__(self, parser, namespace, values, option_string=None): - # validate pair arguments - pairs = [] - for i in range(0,len(values),2): - try: - address = int(values[i],0) - except ValueError as e: - raise argparse.ArgumentError(self,'Address "%s" must be a number' % values[i]) - try: - argfile = open(values[i + 1], 'rb') - except IOError as e: - raise argparse.ArgumentError(self, e) - except IndexError: - raise argparse.ArgumentError(self,'Must be pairs of an address and the binary filename to write there') - pairs.append((address, argfile)) - setattr(namespace, self.dest, pairs) - -# Binary stub code (see flasher_stub dir for source & details) -ESP8266ROM.STUB_CODE = eval(zlib.decompress(base64.b64decode(b""" -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\ -"""))) -ESP32ROM.STUB_CODE = eval(zlib.decompress(base64.b64decode(b""" -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\ -"""))) - -if __name__ == '__main__': - try: - main() - except FatalError as e: - print '\nA fatal error occurred: %s' % e - sys.exit(2) diff --git a/src/common/platforms/esp/slip.c b/src/common/platforms/esp/slip.c deleted file mode 100644 index 13b980e98..000000000 --- a/src/common/platforms/esp/slip.c +++ /dev/null @@ -1,35 +0,0 @@ -#include "rom_functions.h" - -void SLIP_send(uint8_t *pkt, uint32_t size) { - send_packet(pkt, size); -} - -uint32_t SLIP_recv(void *pkt, uint32_t max_len) { - uint8_t c; - uint32_t len = 0; - uint8_t *p = (uint8_t *) pkt; - do { - c = uart_rx_one_char_block(); - } while (c != '\xc0'); - while (len < max_len) { - c = uart_rx_one_char_block(); - if (c == '\xc0') return len; - if (c == '\xdb') { - c = uart_rx_one_char_block(); - if (c == '\xdc') { - c = '\xc0'; - } else if (c == '\xdd') { - c = '\xdb'; - } else { - len = 0; - break; /* Bad esc sequence. */ - } - } - *p++ = c; - len++; - } - do { - c = uart_rx_one_char_block(); - } while (c != '\xc0'); - return len; -} diff --git a/src/common/platforms/esp/slip.h b/src/common/platforms/esp/slip.h deleted file mode 100644 index 53100a0eb..000000000 --- a/src/common/platforms/esp/slip.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef CS_COMMON_PLATFORMS_ESP8266_STUBS_SLIP_H_ -#define CS_COMMON_PLATFORMS_ESP8266_STUBS_SLIP_H_ - -#include <inttypes.h> - -void SLIP_send(const void *pkt, uint32_t size); -uint32_t SLIP_recv(void *pkt, uint32_t max_len); - -#endif /* CS_COMMON_PLATFORMS_ESP8266_STUBS_SLIP_H_ */ diff --git a/src/common/platforms/esp/stub_flasher.c b/src/common/platforms/esp/stub_flasher.c deleted file mode 100644 index 51f1ffa71..000000000 --- a/src/common/platforms/esp/stub_flasher.c +++ /dev/null @@ -1,579 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "stub_flasher.h" - -#include <stdint.h> -#include <string.h> - -#include "rom_functions.h" - -#if defined(ESP8266) -#include "eagle_soc.h" -#include "ets_sys.h" -#include "miniz.c" -#elif defined(ESP32) -#include "rom/efuse.h" -#include "rom/miniz.h" -#include "rom/spi_flash.h" -#include "soc/uart_reg.h" -#include "led.h" -#endif - -#include "slip.h" -#include "uart.h" - -/* Param: baud rate. */ -uint32_t params[2] __attribute__((section(".params"))); - -#define FLASH_BLOCK_SIZE 65536 -#define FLASH_SECTOR_SIZE 4096 -#define FLASH_PAGE_SIZE 256 - -/* These consts should be in sync with flasher_client.go */ -#define NUM_BUFS 4 -#define BUF_SIZE 4096 -#define FLASH_WRITE_SIZE BUF_SIZE - -#define UART_RX_INTS (UART_RXFIFO_FULL_INT_ENA | UART_RXFIFO_TOUT_INT_ENA) - -extern uint32_t _bss_start, _bss_end; - -#ifdef ESP8266 -#define REG_SPI_BASE(i) (0x60000200 - i * 0x100) - -#define SPI_CMD_REG(i) (REG_SPI_BASE(i) + 0x0) -#define SPI_FLASH_WREN (BIT(30)) -#define SPI_FLASH_RDID (BIT(28)) -#define SPI_FLASH_SE (BIT(24)) -#define SPI_FLASH_BE (BIT(23)) - -#define SPI_ADDR_REG(i) (REG_SPI_BASE(i) + 0x4) - -#define SPI_USER_REG(i) (REG_SPI_BASE(i) + 0x1C) - -#define SPI_W0_REG(i) (REG_SPI_BASE(i) + 0x40) -#endif - -enum read_state { - READ_WAIT_START = 0, - READ_FLAGS, - READ_DATA, - READ_UNESCAPE, - READ_ERROR, -}; - -struct data_buf { - uint32_t len; - uint8_t data[BUF_SIZE]; - uint8_t flags; -}; - -#define FLAG_COMPRESSED 1 - -struct uart_buf { - enum read_state state; - struct data_buf bufs[NUM_BUFS]; - uint32_t bri, bwi; - uint32_t ps; -}; - -static inline uint32_t ccount(void) { - uint32_t r; - __asm volatile("rsr.ccount %0" : "=a"(r)); - return r; -} - -struct write_progress { - uint32_t num_written; - uint32_t buf_level; - uint8_t digest[16]; -}; - -struct write_result { - uint32_t wait_time; - uint32_t decomp_time; - uint32_t write_time; - uint32_t erase_time; - uint32_t total_time; - uint8_t digest[16]; -}; - -static struct uart_buf ub; -static uint32_t inflate_buf[TINFL_LZ_DICT_SIZE / sizeof(uint32_t)]; - -static void next_write_buf(void) { - ub.bwi++; - if (ub.bwi == NUM_BUFS) ub.bwi = 0; - ub.bufs[ub.bwi].len = 0; - ub.bufs[ub.bwi].flags = 0; -} - -static void add_byte(uint8_t byte) { - struct data_buf *buf = &ub.bufs[ub.bwi]; - if (buf->len < BUF_SIZE) { - buf->data[buf->len++] = byte; - ub.ps++; - } -} - -void uart_isr(void *arg) { - uint32_t int_st = READ_PERI_REG(UART_INT_ST_REG(0)); - uint8_t fifo_len, i; - while ((fifo_len = READ_PERI_REG(UART_STATUS_REG(0))) > 0) { - for (i = 0; i < fifo_len; i++) { - uint8_t byte = READ_PERI_REG(UART_FIFO_REG(0)); - switch (ub.state) { - case READ_WAIT_START: { - if (byte == 0xc0) { - ub.state = READ_FLAGS; - ub.ps = 0; - } - break; - } - case READ_FLAGS: - case READ_DATA: { - struct data_buf *buf = &ub.bufs[ub.bwi]; - if (byte == 0xdb) { - ub.state = READ_UNESCAPE; - } else if (byte == 0xc0) { - next_write_buf(); - if (ub.ps == 0) { - /* Empty packet, sender aborted. */ - ub.state = READ_ERROR; - SET_PERI_REG_MASK(UART_INT_ENA_REG(0), 0); - goto out; - } else { - ub.state = READ_WAIT_START; - } - } else { - if (ub.state == READ_FLAGS) { - buf->flags = byte; - ub.state = READ_DATA; - } else { - add_byte(byte); - } - } - break; - } - case READ_UNESCAPE: { - if (byte == 0xdc) { - byte = 0xc0; - } else if (byte == 0xdd) { - byte = 0xdb; - } else { - ub.state = READ_ERROR; - SET_PERI_REG_MASK(UART_INT_ENA_REG(0), 0); - goto out; - } - add_byte(byte); - ub.state = READ_DATA; - break; - } - case READ_ERROR: { - goto out; - } - } - } - } -out: - WRITE_PERI_REG(UART_INT_CLR_REG(0), int_st); - (void) arg; -} - -size_t tinfl_decompress_mem_to_mem(void *pOut_buf, size_t out_buf_len, - const void *pSrc_buf, size_t src_buf_len, - int flags); -#define TINFL_DECOMPRESS_MEM_TO_MEM_FAILED ((size_t)(-1)) -#define TINFL_FLAG_PARSE_ZLIB_HEADER 1 - -#if defined(ESP8266) -int esp_rom_spiflash_erase_start(uint32_t addr, uint32_t cmd) { - SPI_write_enable(flashchip); - WRITE_PERI_REG(SPI_ADDR_REG(0), addr); - WRITE_PERI_REG(SPI_CMD_REG(0), cmd); - while (READ_PERI_REG(SPI_CMD_REG(0)) & cmd) { - } - return 0; -} -#elif defined(ESP32) -extern esp_rom_spiflash_chip_t g_rom_spiflash_chip; - -esp_rom_spiflash_result_t esp_rom_spiflash_erase_start(uint32_t addr, - uint32_t cmd) { - esp_rom_spiflash_chip_t *spi = &g_rom_spiflash_chip; - esp_rom_spiflash_wait_idle(spi); - - REG_CLR_BIT(PERIPHS_SPI_FLASH_USRREG, SPI_USR_DUMMY); - REG_SET_FIELD(PERIPHS_SPI_FLASH_USRREG1, SPI_USR_ADDR_BITLEN, - ESP_ROM_SPIFLASH_W_SIO_ADDR_BITSLEN); - - WRITE_PERI_REG(PERIPHS_SPI_FLASH_CMD, SPI_FLASH_WREN); - while (READ_PERI_REG(PERIPHS_SPI_FLASH_CMD) != 0) { - } - - WRITE_PERI_REG(PERIPHS_SPI_FLASH_ADDR, addr); - WRITE_PERI_REG(PERIPHS_SPI_FLASH_CMD, cmd); - - return ESP_ROM_SPIFLASH_RESULT_OK; -} -#endif - -int do_flash_write(uint32_t addr, uint32_t len, uint32_t erase) { - int ret = 0; - uint32_t num_erased = 0; - struct MD5Context ctx; - MD5Init(&ctx); - - if (addr % FLASH_SECTOR_SIZE != 0) return 0x32; - if (len % FLASH_SECTOR_SIZE != 0) return 0x33; - if (esp_rom_spiflash_unlock() != 0) return 0x34; - - memset(&ub, 0, sizeof(ub)); - memset(&inflate_buf, 0, sizeof(inflate_buf)); - ets_isr_attach(ETS_UART0_INUM, uart_isr, &ub); - uint32_t saved_conf1 = READ_PERI_REG(UART_CONF1_REG(0)); - /* Reduce frequency of UART interrupts */ - WRITE_PERI_REG(UART_CONF1_REG(0), UART_RX_TOUT_EN | - (20 << UART_RX_TOUT_THRHD_S) | - (100 << UART_RXFIFO_FULL_THRHD_S)); - SET_PERI_REG_MASK(UART_INT_ENA_REG(0), UART_RX_INTS); - ets_isr_unmask(1 << ETS_UART0_INUM); - - struct write_result wr; - memset(&wr, 0, sizeof(wr)); - - struct write_progress wp = {.num_written = 0, .buf_level = 0}; - wp.buf_level = (uint32_t) &addr; - SLIP_send(&wp, sizeof(wp)); - wr.total_time = ccount(); - while (wp.num_written < len) { - /* Prepare the space ahead. */ - uint32_t start_count = ccount(); - while (erase && num_erased < wp.num_written + FLASH_WRITE_SIZE) { - const uint32_t num_left = (len - num_erased); - if (num_left >= FLASH_BLOCK_SIZE && addr % FLASH_BLOCK_SIZE == 0) { - if (esp_rom_spiflash_erase_start(addr, SPI_FLASH_BE) != 0) { - ret = 0x35; - goto out; - } - num_erased += FLASH_BLOCK_SIZE; - } else { - /* len % FLASH_SECTOR_SIZE == 0 is enforced, no further checks needed */ - if (esp_rom_spiflash_erase_start(addr, SPI_FLASH_SE) != 0) { - ret = 0x36; - goto out; - } - num_erased += FLASH_SECTOR_SIZE; - } - } - wr.erase_time += ccount() - start_count; - start_count = ccount(); - /* Wait for data to arrive. */ - wp.buf_level = 0; - for (int i = 0; i < NUM_BUFS; i++) wp.buf_level += ub.bufs[i].len; - volatile uint32_t *bwi = &ub.bwi; - while (*bwi == ub.bri && ub.state != READ_ERROR) { - } - struct data_buf *buf = &ub.bufs[ub.bri]; - if (ub.state == READ_ERROR) { - ret = 0x37; - goto out; - } - wr.wait_time += ccount() - start_count; - start_count = ccount(); - uint32_t *data = (uint32_t *) buf->data; - uint32_t write_len = buf->len; - if (buf->flags & FLAG_COMPRESSED) { - data = inflate_buf; - write_len = tinfl_decompress_mem_to_mem( - &inflate_buf[0], sizeof(inflate_buf), buf->data, write_len, - TINFL_FLAG_PARSE_ZLIB_HEADER); - if (write_len == TINFL_DECOMPRESS_MEM_TO_MEM_FAILED) { - ret = 0x40; - goto out; - } - } - wr.decomp_time += ccount() - start_count; - MD5Update(&ctx, (uint8_t *) data, write_len); - start_count = ccount(); - wr.erase_time += ccount() - start_count; - start_count = ccount(); - if (esp_rom_spiflash_write(addr, data, write_len) != 0) { - ret = 0x38; - goto out; - } - wr.write_time += ccount() - start_count; - buf->len = 0; - ub.bri++; - if (ub.bri == NUM_BUFS) ub.bri = 0; - addr += write_len; - wp.num_written += write_len; - struct MD5Context ctx2; - memcpy(&ctx2, &ctx, sizeof(ctx)); - MD5Final(wp.digest, &ctx2); - SLIP_send(&wp, sizeof(wp)); - } - - MD5Final(wr.digest, &ctx); - - wr.total_time = ccount() - wr.total_time; - SLIP_send(&wr, sizeof(wr)); - -out: - WRITE_PERI_REG(UART_CONF1_REG(0), saved_conf1); - ets_isr_mask(1 << ETS_UART0_INUM); - return ret; -} - -int do_flash_read(uint32_t addr, uint32_t len, uint32_t block_size, - uint32_t max_in_flight) { - uint8_t buf[FLASH_SECTOR_SIZE]; - uint8_t digest[16]; - struct MD5Context ctx; - uint32_t num_sent = 0, num_acked = 0; - if (block_size > sizeof(buf)) return 0x52; - MD5Init(&ctx); - while (num_acked < len) { - while (num_sent < len && num_sent - num_acked < max_in_flight) { - uint32_t n = len - num_sent; - if (n > block_size) n = block_size; - if (esp_rom_spiflash_read(addr, (uint32_t *) buf, n) != 0) return 0x53; - send_packet(buf, n); - MD5Update(&ctx, buf, n); - addr += n; - num_sent += n; - } - { - if (SLIP_recv(&num_acked, sizeof(num_acked)) != 4) return 0x54; - if (num_acked > num_sent) return 0x55; - } - } - MD5Final(digest, &ctx); - send_packet(digest, sizeof(digest)); - return 0; -} - -int do_flash_digest(uint32_t addr, uint32_t len, uint32_t digest_block_size) { - uint8_t buf[FLASH_SECTOR_SIZE]; - uint8_t digest[16]; - uint32_t read_block_size = - digest_block_size ? digest_block_size : sizeof(buf); - struct MD5Context ctx; - if (digest_block_size > sizeof(buf)) return 0x62; - MD5Init(&ctx); - while (len > 0) { - uint32_t n = len; - struct MD5Context block_ctx; - MD5Init(&block_ctx); - if (n > read_block_size) n = read_block_size; - if (esp_rom_spiflash_read(addr, (uint32_t *) buf, n) != 0) return 0x63; - MD5Update(&ctx, buf, n); - if (digest_block_size > 0) { - MD5Update(&block_ctx, buf, n); - MD5Final(digest, &block_ctx); - send_packet(digest, sizeof(digest)); - } - addr += n; - len -= n; - } - MD5Final(digest, &ctx); - send_packet(digest, sizeof(digest)); - return 0; -} - -int do_flash_read_chip_id(void) { - uint32_t chip_id = 0; - WRITE_PERI_REG(SPI_CMD_REG(0), SPI_FLASH_RDID); - while (READ_PERI_REG(SPI_CMD_REG(0)) & SPI_FLASH_RDID) { - } - chip_id = READ_PERI_REG(SPI_W0_REG(0)) & 0xFFFFFF; - send_packet((uint8_t *) &chip_id, sizeof(chip_id)); - return 0; -} - -uint8_t cmd_loop(void) { - uint8_t cmd = 0x55; - do { - /* Reset FIFO to re-sync */ - SET_PERI_REG_MASK(UART_CONF0_REG(0), UART_RXFIFO_RST); - CLEAR_PERI_REG_MASK(UART_CONF0_REG(0), UART_RXFIFO_RST); - uint32_t args[4]; - uint32_t len = SLIP_recv(&cmd, 1); - if (len != 1) { - continue; - } - uint8_t resp = 0xff; - switch (cmd) { - case CMD_FLASH_WRITE: { - len = SLIP_recv(args, sizeof(args)); - if (len == 12) { - resp = do_flash_write(args[0] /* addr */, args[1] /* len */, - args[2] /* erase */); - } else { - resp = 0x41; - } - break; - } - case CMD_FLASH_READ: { - len = SLIP_recv(args, sizeof(args)); - if (len == 16) { - resp = do_flash_read(args[0] /* addr */, args[1], /* len */ - args[2] /* block_size */, - args[3] /* max_in_flight */); - } else { - resp = 0x51; - } - break; - } - case CMD_FLASH_DIGEST: { - len = SLIP_recv(args, sizeof(args)); - if (len == 12) { - resp = do_flash_digest(args[0] /* addr */, args[1], /* len */ - args[2] /* digest_block_size */); - } else { - resp = 0x61; - } - break; - } - case CMD_FLASH_READ_CHIP_ID: { - resp = do_flash_read_chip_id(); - break; - } - case CMD_FLASH_ERASE_CHIP: { - resp = esp_rom_spiflash_erase_chip(); - break; - } - case CMD_BOOT_FW: - case CMD_REBOOT: { - resp = 0; - SLIP_send(&resp, 1); - return cmd; - } - case CMD_ECHO: { - len = SLIP_recv(args, sizeof(args)); - SLIP_send(args, len); - resp = 0; - break; - } - case CMD_READ_REG: { - len = SLIP_recv(args, sizeof(args)); - if (len == 4) { - uint32_t value = READ_PERI_REG((uint32_t *) args[0]); - SLIP_send(&value, sizeof(value)); - resp = 0; - } else { - resp = 0x91; - } - break; - } - case CMD_WRITE_REG: { - len = SLIP_recv(args, sizeof(args)); - if (len == 8) { - WRITE_PERI_REG((uint32_t *) args[0], args[1]); - resp = 0; - } else { - resp = 0xa1; - } - break; - } - } - SLIP_send(&resp, 1); - } while (cmd != CMD_BOOT_FW && cmd != CMD_REBOOT); - return cmd; -} - -void stub_main1(void) { - uint32_t old_baud_rate = params[0], new_baud_rate = params[1]; - uint8_t last_cmd; - - /* This points at us right now, reset for next boot. */ - ets_set_user_start(0); - -/* Selects SPI functions for flash pins. */ -#if defined(ESP8266) - SelectSpiFunction(); - spi_flash_attach(); - SET_PERI_REG_MASK(0x3FF00014, 1); /* Switch to 160 MHz */ -#elif defined(ESP32) - esp_rom_spiflash_attach(ets_efuse_get_spiconfig(), 0 /* legacy */); -#endif - - esp_rom_spiflash_config_param( - 0 /* deviceId */, 16 * 1024 * 1024 /* chip_size */, FLASH_BLOCK_SIZE, - FLASH_SECTOR_SIZE, FLASH_PAGE_SIZE, 0xffff /* status_mask */); - - uint32_t old_div = 0; - if (new_baud_rate > 0) { - ets_delay_us(10000); - old_div = set_baud_rate(0, old_baud_rate, new_baud_rate); - } - - /* Give host time to get ready too. */ - ets_delay_us(50000); - -#ifdef BAUD_TEST - while (1) { - WRITE_PERI_REG(UART_FIFO_REG(0), 0x55); - } -#else - SLIP_send(&old_div, 4); -#endif - - last_cmd = cmd_loop(); - - ets_delay_us(10000); - - if (last_cmd == CMD_BOOT_FW) { -#if defined(ESP8266) - /* - * Find the return address in our own stack and change it. - * "flash_finish" it gets to the same point, except it doesn't need to - * patch up its RA: it returns from UartDwnLdProc, then from f_400011ac, - * then jumps to 0x4000108a, then checks strapping bits again (which will - * not have changed), and then proceeds to 0x400010a8. - */ - volatile uint32_t *sp = &old_baud_rate; - while (*sp != (uint32_t) 0x40001100) sp++; - *sp = 0x400010a8; - /* - * The following dummy asm fragment acts as a barrier, to make sure function - * epilogue, including return address loading, is added after our stack - * patching. - */ - __asm volatile("nop.n"); - return; /* To 0x400010a8 */ -#elif defined(ESP32) -/* TODO(rojer) */ -#endif - } else { - software_reset(); - } - /* Not reached */ -} - -/* miniz requires at least 12K of stack */ -uint32_t stack[3071]; -uint32_t stack_end; - -void stub_main(void) { - memset(&_bss_start, 0, (&_bss_end - &_bss_start)); - __asm volatile("movi a1, stack_end\n"); - stub_main1(); - // Keep the stack vars alive. - stack[0] = stack_end = 0xff; -} diff --git a/src/common/platforms/esp/stub_flasher.h b/src/common/platforms/esp/stub_flasher.h deleted file mode 100644 index dd1f948b0..000000000 --- a/src/common/platforms/esp/stub_flasher.h +++ /dev/null @@ -1,114 +0,0 @@ -#ifndef CS_COMMON_PLATFORMS_ESP8266_STUBS_STUB_FLASHER_H_ -#define CS_COMMON_PLATFORMS_ESP8266_STUBS_STUB_FLASHER_H_ - -enum stub_cmd { - /* - * Write to the SPI flash. - * - * Args: addr, len, erase; addr and len must be SECTOR_SIZE-aligned. - * If erase != 0, perform erase before writing. - * Input: Stream of data to be written, note: no SLIP encapsulation here. - * Output: SLIP packets with number of bytes written after every write. - * This can (and should) be used for flow control. Flasher will - * write in 1K chunks but will buffer up to 4K of data - * Use this feedback to keep buffer above 1K but below 4K. - * Final packet will contain MD5 digest of the data written. - */ - CMD_FLASH_WRITE = 1, - - /* - * Read from the SPI flash. - * - * Args: addr, len, block_size; no alignment requirements, block_size <= 4K. - * Input: None. - * Output: Packets of up to block_size with data. An acknowledgement is - *expected - * after every packet, in the form of a packet with total number of - * bytes received so far. - * Last packet is the MD5 digest of the data sent. - * - * Note: No flow control is performed, it is assumed that the host can cope - * with the inbound stream. - */ - CMD_FLASH_READ = 2, - - /* - * Compute MD5 digest of the specified flash region. - * - * Args: addr, len, digest_block_size; no alignment requirements. - * Input: None. - * Output: If block digests are not enabled (digest_block_size == 0), - * only overall digest is produced. - * Otherwise, there will be a separate digest for each block, - * the remainder (if any) and the overall digest at the end. - */ - CMD_FLASH_DIGEST = 3, - - /* - * Read flash chip ID. - * This is the JEDEC ID, containinf manufactirer, SPI mode and capacity. - * - * Args: None. - * Input: None. - * Output: 32 bit chip id (only 24 bits are meaningful). - */ - CMD_FLASH_READ_CHIP_ID = 4, - - /* - * Zap the whole chip at once. - * - * Args: None. - * Input: None. - * Output: None. - */ - CMD_FLASH_ERASE_CHIP = 5, - - /* - * Boots the firmware from flash. - * - * Args: None. - * Input: None. - * Output: None. - */ - CMD_BOOT_FW = 6, - - /* - * Reboot the CPU. - * Since strapping settings are not reset, this will reboot into whatever mode - * got us here, most likely UART loader. - * - * Args: None. - * Input: None. - * Output: None. - */ - CMD_REBOOT = 7, - - /* - * Echo the arguments back to the host. - * - * Args: variable. - * Input: None. - * Output: arguments. - */ - CMD_ECHO = 8, - - /* - * Read register value. - * - * Args: register address. - * Input: None. - * Output: register value. - */ - CMD_READ_REG = 9, - - /* - * Write register value. - * - * Args: register address, value. - * Input: None. - * Output: None. - */ - CMD_WRITE_REG = 10, -}; - -#endif /* CS_COMMON_PLATFORMS_ESP8266_STUBS_STUB_FLASHER_H_ */ diff --git a/src/common/platforms/esp31/rom/.gitattributes b/src/common/platforms/esp31/rom/.gitattributes deleted file mode 100644 index 1260bec9a..000000000 --- a/src/common/platforms/esp31/rom/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -rom.bin -nodiff diff --git a/src/common/platforms/esp31/rom/ESP31B_ROM.txt b/src/common/platforms/esp31/rom/ESP31B_ROM.txt deleted file mode 100644 index f4640cc66..000000000 --- a/src/common/platforms/esp31/rom/ESP31B_ROM.txt +++ /dev/null @@ -1,11917 +0,0 @@ - -rom.elf: file format elf32-xtensa-le - - -Disassembly of section .text: - -40000000 <_start>: -40000000: 49c500 s32e a0, a5, -16 -40000003: 49d510 s32e a1, a5, -12 -40000006: 49e520 s32e a2, a5, -8 -40000009: 49f530 s32e a3, a5, -4 -4000000c: 003400 rfwo -4000000f: 412800 srli a2, a0, 8 -40000012: 5138 l32i.n a3, a1, 20 -40000014: 6148 l32i.n a4, a1, 24 -40000016: 01d112 addmi a1, a1, 0x100 -40000019: 13d100 wsr.excsave1 a0 -4000001c: 034800 rsr.windowbase a0 -4000001f: 4080f0 rotw -1 -40000022: 03e620 rsr.ps a2 -40000025: 343820 extui a3, a2, 8, 4 -40000028: 303340 xor a3, a3, a4 -4000002b: 000846 j 40000050 <_XX_ExcVec50> - ... - -40000040 <_XX_Vec40>: -40000040: 09c500 l32e a0, a5, -16 -40000043: 09d510 l32e a1, a5, -12 -40000046: 09e520 l32e a2, a5, -8 -40000049: 09f530 l32e a3, a5, -4 -4000004c: 003500 rfwu - ... - -40000050 <_XX_ExcVec50>: -40000050: 03d140 rsr.excsave1 a4 -40000053: 113380 slli a3, a3, 8 -40000056: 302230 xor a2, a2, a3 -40000059: 13e620 wsr.ps a2 -4000005c: 002010 rsync -4000005f: dd74f7 bbci a4, 31, 40000040 <_XX_Vec40> -40000062: 4080f0 rotw -1 -40000065: 5778e7 bbci a8, 30, 400000c0 <_XX_ExcVec80+0x40> -40000068: 4080f0 rotw -1 -4000006b: 003446 j 40000140 <_WindowUnderflowHandler> - ... - -40000080 <_XX_ExcVec80>: -40000080: 49c900 s32e a0, a9, -16 -40000083: 09d100 l32e a0, a1, -12 -40000086: 49d910 s32e a1, a9, -12 -40000089: 49e920 s32e a2, a9, -8 -4000008c: 49f930 s32e a3, a9, -4 -4000008f: 498040 s32e a4, a0, -32 -40000092: 499050 s32e a5, a0, -28 -40000095: 49a060 s32e a6, a0, -24 -40000098: 49b070 s32e a7, a0, -20 -4000009b: 003400 rfwo - ... -400000be: 000000 ill -400000c1: 09c9 s32i.n a12, a9, 0 -400000c3: 09d910 l32e a1, a9, -12 -400000c6: 09e920 l32e a2, a9, -8 -400000c9: 09d170 l32e a7, a1, -12 -400000cc: 09f930 l32e a3, a9, -4 -400000cf: 098740 l32e a4, a7, -32 -400000d2: 099750 l32e a5, a7, -28 -400000d5: 09a760 l32e a6, a7, -24 -400000d8: 09b770 l32e a7, a7, -20 -400000db: 003500 rfwu - ... - -40000100 <_WindowOverflowHandler>: -40000100: 49cd00 s32e a0, a13, -16 -40000103: 09d100 l32e a0, a1, -12 -40000106: 49dd10 s32e a1, a13, -12 -40000109: 49ed20 s32e a2, a13, -8 -4000010c: 49fd30 s32e a3, a13, -4 -4000010f: 494040 s32e a4, a0, -48 -40000112: 495050 s32e a5, a0, -44 -40000115: 496060 s32e a6, a0, -40 -40000118: 497070 s32e a7, a0, -36 -4000011b: 498080 s32e a8, a0, -32 -4000011e: 499090 s32e a9, a0, -28 -40000121: 49a0a0 s32e a10, a0, -24 -40000124: 49b0b0 s32e a11, a0, -20 -40000127: 003400 rfwo - ... - -40000140 <_WindowUnderflowHandler>: -40000140: 09cd00 l32e a0, a13, -16 -40000143: 09dd10 l32e a1, a13, -12 -40000146: 09ed20 l32e a2, a13, -8 -40000149: 09d1b0 l32e a11, a1, -12 -4000014c: 09fd30 l32e a3, a13, -4 -4000014f: 094b40 l32e a4, a11, -48 -40000152: 095b50 l32e a5, a11, -44 -40000155: 096b60 l32e a6, a11, -40 -40000158: 097b70 l32e a7, a11, -36 -4000015b: 098b80 l32e a8, a11, -32 -4000015e: 099b90 l32e a9, a11, -28 -40000161: 09aba0 l32e a10, a11, -24 -40000164: 09bbb0 l32e a11, a11, -20 -40000167: 003500 rfwu - ... -4000017e: 200000 or a0, a0, a0 -40000181: a061d2 s32i a13, a1, 0x280 -40000184: 000002 l8ui a0, a0, 0 - ... -400001bf: d32000 movt a2, a0, b0 -400001c2: 02a061 l32r a6, 3ffc0c44 <_start-0x3f3bc> - ... -400001fd: 000000 ill -40000200: 61d420 xsr.excsave4 a2 -40000203: 0002a0 jx a2 - ... -4000023e: 200000 or a0, a0, a0 -40000241: a061d5 call4 3ffa0860 <_start-0x5f7a0> -40000244: 000002 l8ui a0, a0, 0 - ... -4000027f: d62000 excw -40000282: 827c13 excw -40000285: 005100 simcall -40000288: ffff06 j 40000288 <_WindowUnderflowHandler+0x148> - ... -400002bf: 371000 excw - ... - -40000300 <_XX_Vec400>: -40000300: 004100 break 1, 0 -40000303: fffe46 j 40000300 <_XX_Vec400> - ... -4000033e: 120000 andbc b0, b0, b0 -40000341: 29ffd1 l32r a13, 3ffcab40 <_start-0x354c0> -40000344: 513941 l32r a4, 3ffd4828 <_start-0x2b7d8> -40000347: f27e31 l32r a3, 3fffcd40 <_start-0x32c0> -4000034a: 03e820 rsr.exccause a2 -4000034d: a03230 addx4 a3, a2, a3 -40000350: 0338 l32i.n a3, a3, 0 -40000352: 6149 s32i.n a4, a1, 24 -40000354: 0003a0 jx a3 - ... -400003bf: 414000 srli a4, a0, 0 -400003c2: fe4600 excw -400003c5: ff .byte 0xff - ... -400003fe: 7c0000 excw -40000401: 6100d0 xsr.lbeg a13 -40000404: 0dc613 excw - ... -4000040f: 211f40 srai a1, a4, 15 -40000412: 002222 l32i a2, a2, 0 -40000415: e00000 subx4 a0, a0, a0 -40000418: 000494 excw -4000041b: 70d440 excw -4000041e: dc4000 excw -40000421: 0009 s32i.n a0, a0, 0 -40000423: 0ab040 depbits a4, a0, 0, 12 -40000426: 804000 add a4, a0, a0 -40000429: 000b addi.n a0, a0, -1 -4000042b: c20840 quou a0, a8, a4 -4000042e: ff .byte 0xff -4000042f: 3f .byte 0x3f -40000430: 000cc0 callx0 a12 -40000433: c20c40 quou a0, a12, a4 -40000436: ff .byte 0xff -40000437: 3f .byte 0x3f - ... -40000440: 000c movi.n a0, 0 -40000442: 13e400 wsr.intenable a0 -40000445: fff021 l32r a2, 40000408 <_XX_Vec400+0x108> -40000448: 03eb30 rsr.prid a3 -4000044b: 743030 extui a3, a3, 0, 8 -4000044e: 228c beqz.n a2, 40000454 <_XX_Vec400+0x154> -40000450: 03cc bnez.n a3, 40000454 <_XX_Vec400+0x154> -40000452: 0209 s32i.n a0, a2, 0 -40000454: ffee21 l32r a2, 4000040c <_XX_Vec400+0x10c> -40000457: 13e720 wsr.vecbase a2 -4000045a: 531c movi.n a3, 21 -4000045c: 136330 wsr.atomctl a3 -4000045f: 006120 rsil a2, 1 -40000462: ffeb21 l32r a2, 40000410 <_XX_Vec400+0x110> -40000465: ffeb51 l32r a5, 40000414 <_XX_Vec400+0x114> -40000468: ffec61 l32r a6, 40000418 <_XX_Vec400+0x118> -4000046b: 030c movi.n a3, 0 -4000046d: 027d mov.n a7, a2 -4000046f: 106650 and a6, a6, a5 -40000472: 000786 j 40000494 <_XX_Vec400+0x194> - ... -4000047d: 000000 ill -40000480: 506340 witlb a4, a3 -40000483: 002000 isync -40000486: f03d nop.n -40000488: 0020f0 nop -4000048b: c03350 sub a3, a3, a5 -4000048e: 14b3b6 bltui a3, 16, 400004a6 <_XX_Vec400+0x1a6> -40000491: 417470 srli a7, a7, 4 -40000494: 344070 extui a4, a7, 0, 4 -40000497: e51367 beq a3, a6, 40000480 <_XX_Vec400+0x180> -4000049a: 506340 witlb a4, a3 -4000049d: c03350 sub a3, a3, a5 -400004a0: edb3f6 bgeui a3, 16, 40000491 <_XX_Vec400+0x191> -400004a3: 002000 isync -400004a6: ffdb51 l32r a5, 40000414 <_XX_Vec400+0x114> -400004a9: 030c movi.n a3, 0 -400004ab: 027d mov.n a7, a2 -400004ad: 344070 extui a4, a7, 0, 4 -400004b0: 50e340 wdtlb a4, a3 -400004b3: c03350 sub a3, a3, a5 -400004b6: 417470 srli a7, a7, 4 -400004b9: f0b3f6 bgeui a3, 16, 400004ad <_XX_Vec400+0x1ad> -400004bc: 002030 dsync -400004bf: 03a032 movi a3, 3 -400004c2: 036120 rsr.memctl a2 -400004c5: 202230 or a2, a2, a3 -400004c8: 136120 wsr.memctl a2 -400004cb: ffd421 l32r a2, 4000041c <_XX_Vec400+0x11c> -400004ce: 02ac beqz.n a2, 400004f2 <_XX_Vec400+0x1f2> -400004d0: 0238 l32i.n a3, a2, 0 -400004d2: 1248 l32i.n a4, a2, 4 -400004d4: 2258 l32i.n a5, a2, 8 -400004d6: 0cc222 addi a2, a2, 12 -400004d9: 0fb347 bgeu a3, a4, 400004ec <_XX_Vec400+0x1ec> -400004dc: 0568 l32i.n a6, a5, 0 -400004de: 554b addi.n a5, a5, 4 -400004e0: 0369 s32i.n a6, a3, 0 -400004e2: 334b addi.n a3, a3, 4 -400004e4: f43347 bltu a3, a4, 400004dc <_XX_Vec400+0x1dc> -400004e7: fff946 j 400004d0 <_XX_Vec400+0x1d0> -400004ea: 560000 excw -400004ed: 56fe03 excw -400004f0: 00fdd5 call4 400014d0 <_l_strap_0x0x11_loader+0x7> -400004f3: 0c0020 excw -400004f6: 491011 l32r a1, 3ffd2938 <_start-0x2d6c8> -400004f9: 480013 excw -400004fc: 201013 excw - ... - -40000500 <_X_ResetVector>: -40000500: 000c movi.n a0, 0 -40000502: ffc741 l32r a4, 40000420 <_XX_Vec400+0x120> -40000505: 13d240 wsr.excsave2 a4 -40000508: ffc741 l32r a4, 40000424 <_XX_Vec400+0x124> -4000050b: 13d340 wsr.excsave3 a4 -4000050e: ffc641 l32r a4, 40000428 <_XX_Vec400+0x128> -40000511: 13d440 wsr.excsave4 a4 -40000514: ffc651 l32r a5, 4000042c <_XX_Vec400+0x12c> -40000517: 006542 s32i a4, a5, 0 -4000051a: ffc541 l32r a4, 40000430 <_XX_Vec400+0x130> -4000051d: 13d540 wsr.excsave5 a4 -40000520: ffc551 l32r a5, 40000434 <_XX_Vec400+0x134> -40000523: 006542 s32i a4, a5, 0 -40000526: 002845 call0 400007ac <_X_start> - ... - -40000700 <_c_stack>: -40000700: 000000 ill -40000703: 002040 excw -40000706: 480004 mula.da.ll.ldinc m0, a0, m0, a0 - -40000708 <_c_bss_start>: -40000708: cd48 l32i.n a4, a13, 48 -4000070a: ff .byte 0xff -4000070b: 3f .byte 0x3f - -4000070c <_c_bss_end>: -4000070c: ffe1d0 excw -4000070f: 3f .byte 0x3f -40000710: 6668 l32i.n a6, a6, 24 -40000712: 084000 excw -40000715: 3fffc1 l32r a12, 3ffd0714 <_start-0x2f8ec> -40000718: 000e40 excw -4000071b: c00840 sub a0, a8, a4 -4000071e: ff .byte 0xff -4000071f: 3f .byte 0x3f -40000720: 66b8 l32i.n a11, a6, 24 -40000722: 234000 sext a4, a0, 7 -40000725: 000500 excw -40000728: 000007 bnone a0, a0, 4000072c <_c_bss_end+0x20> -4000072b: 000580 ret -4000072e: 000000 ill -40000731: c00000 sub a0, a0, a0 - -40000734 <_c_0x3fffc210>: -40000734: ffc210 excw -40000737: 3f .byte 0x3f - -40000738 <_c_0x80000000>: -40000738: 000000 ill -4000073b: c21880 quou a1, a8, a8 -4000073e: ff .byte 0xff -4000073f: 3f .byte 0x3f -40000740: 66c8 l32i.n a12, a6, 24 -40000742: 004000 break 0, 0 -40000745: 078000 excw -40000748: 000aa1 l32r a10, 3ffc0770 <_start-0x3f890> -4000074b: 800040 add a0, a0, a4 -4000074e: 723800 excw -40000751: 000b addi.n a0, a0, -1 -40000753: d15040 mul16s a5, a0, a4 -40000756: ff .byte 0xff -40000757: 3f .byte 0x3f -40000758: c208 l32i.n a0, a2, 48 -4000075a: ff .byte 0xff -4000075b: 3f .byte 0x3f -4000075c: 050024 excw - ... - -40000760 <_c_0x40000000>: -40000760: 000000 ill -40000763: d6b040 excw -40000766: ff .byte 0xff -40000767: 3f .byte 0x3f -40000768: c20c movi.n a2, 12 -4000076a: ff .byte 0xff -4000076b: 3f .byte 0x3f -4000076c: 050025 call8 40005770 <_XX_unk5734+0x3c> -4000076f: 000000 ill -40000772: 408001 l32r a0, 3ffd0974 <_start-0x2f68c> -40000775: ffc8 l32i.n a12, a15, 60 -40000777: 3f .byte 0x3f -40000778: f42d break.n 4 -4000077a: 2d5851 l32r a5, 3ffcbcdc <_start-0x34324> -4000077d: 7f .byte 0x7f -4000077e: ff4c95 call4 3ffffc48 <_start-0x3b8> - -40000780 <_c_0x7fffffff>: -40000780: ff .byte 0xff -40000781: ff .byte 0xff -40000782: ff .byte 0xff -40000783: 7f .byte 0x7f -40000784: ffca30 excw -40000787: 3f .byte 0x3f -40000788: 0066b0 rsil a11, 6 -4000078b: fff040 excw -4000078e: fffb addi.n a15, a15, 15 -40000790: ff .byte 0xff -40000791: 000000 ill -40000794: 00ff00 excw - ... - -40000798 <_c_0x00ff0000>: -40000798: ff0000 excw -4000079b: 000000 ill -4000079e: 40ff00 nsau a0, a15 -400007a1: 404040 excw -400007a4: 808080 add a8, a0, a8 -400007a7: feff80 excw -400007aa: fe .byte 0xfe -400007ab: fe .byte 0xfe - -400007ac <_X_start>: -400007ac: 00a002 movi a0, 0 -400007af: ffd411 l32r a1, 40000700 <_c_stack> -400007b2: ffd431 l32r a3, 40000704 <_c_stack+0x4> -400007b5: f03d nop.n -400007b7: 13e630 wsr.ps a3 -400007ba: 002010 rsync -400007bd: ffd261 l32r a6, 40000708 <_c_bss_start> -400007c0: ffd371 l32r a7, 4000070c <_c_bss_end> -400007c3: 06b677 bgeu a6, a7, 400007cd <_X_start+0x21> -400007c6: 0609 s32i.n a0, a6, 0 -400007c8: 664b addi.n a6, a6, 4 -400007ca: f83677 bltu a6, a7, 400007c6 <_X_start+0x1a> -400007cd: 0098d5 call4 4000115c <_X_main> -400007d0: 120c movi.n a2, 1 -400007d2: 005100 simcall -400007d5: 0041f0 break 1, 15 -400007d8: fffd06 j 400007d0 <_X_start+0x24> -400007db: 413600 srli a3, a0, 6 -400007de: d2f600 quos a15, a6, a0 -400007e1: 2e .byte 0x2e -400007e2: 090c movi.n a9, 0 -400007e4: ffcd61 l32r a6, 40000718 <_c_bss_end+0xc> -400007e7: ffce41 l32r a4, 40000720 <_c_bss_end+0x14> -400007ea: ffcc81 l32r a8, 4000071c <_c_bss_end+0x10> -400007ed: ffc8a1 l32r a10, 40000710 <_c_bss_end+0x4> -400007f0: ffc9b1 l32r a11, 40000714 <_c_bss_end+0x8> -400007f3: 1152e0 slli a5, a2, 2 -400007f6: b5ba add.n a11, a5, a11 -400007f8: 833a30 moveqz a3, a10, a3 -400007fb: 558a add.n a5, a5, a8 -400007fd: 0b28 l32i.n a2, a11, 0 -400007ff: c073a0 sub a7, a3, a10 -40000802: 934670 movnez a4, a6, a7 -40000805: 0b39 s32i.n a3, a11, 0 -40000807: 0549 s32i.n a4, a5, 0 -40000809: c0a2a0 sub a10, a2, a10 -4000080c: 8329a0 moveqz a2, a9, a10 -4000080f: f01d retw.n -40000811: 020c movi.n a2, 0 -40000813: f01d retw.n -40000815: 000000 ill -40000818: 03b130 rsr.epc1 a3 -4000081b: 030120 rsr.lend a2 -4000081e: 333b addi.n a3, a3, 3 -40000820: 0c9237 bne a2, a3, 40000830 <_X_start+0x84> -40000823: 030220 rsr.lcount a2 -40000826: 628c beqz.n a2, 40000830 <_X_start+0x84> -40000828: 220b addi.n a2, a2, -1 -4000082a: 130220 wsr.lcount a2 -4000082d: 030030 rsr.lbeg a3 -40000830: 4128 l32i.n a2, a1, 16 -40000832: 13b130 wsr.epc1 a3 -40000835: 5138 l32i.n a3, a1, 20 -40000837: 056256 bnez a2, 40000891 <_X_start+0xe5> -4000083a: 396132 s32i a3, a1, 228 -4000083d: 3a6142 s32i a4, a1, 232 -40000840: 3b6152 s32i a5, a1, 236 -40000843: ffb831 l32r a3, 40000724 <_c_bss_end+0x18> -40000846: 03e620 rsr.ps a2 -40000849: 13e630 wsr.ps a3 -4000084c: 03b130 rsr.epc1 a3 -4000084f: 01d112 addmi a1, a1, 0x100 -40000852: 002010 rsync -40000855: 040c movi.n a4, 0 -40000857: 008136 entry a1, 64 -4000085a: 0001f5 call12 40000878 <_X_start+0xcc> -4000085d: ffb2e1 l32r a14, 40000728 <_c_bss_end+0x1c> -40000860: 0cea add.n a0, a12, a14 -40000862: f01d retw.n -40000864: 13e620 wsr.ps a2 -40000867: 020c movi.n a2, 0 -40000869: a548 l32i.n a4, a5, 40 -4000086b: 002010 rsync -4000086e: 13b130 wsr.epc1 a3 -40000871: 9538 l32i.n a3, a5, 36 -40000873: b558 l32i.n a5, a5, 44 -40000875: 003000 rfe -40000878: 006136 entry a1, 48 -4000087b: ffacc1 l32r a12, 4000072c <_c_bss_end+0x20> -4000087e: c0ca add.n a12, a0, a12 -40000880: 006136 entry a1, 48 -40000883: 00cd mov.n a12, a0 -40000885: 006136 entry a1, 48 -40000888: 00cd mov.n a12, a0 -4000088a: 002136 entry a1, 16 -4000088d: 0bbd mov.n a11, a11 -4000088f: f01d retw.n -40000891: f27c movi.n a2, -1 -40000893: 01d112 addmi a1, a1, 0x100 -40000896: 003000 rfe -40000899: 000000 ill -4000089c: 7159 s32i.n a5, a1, 28 -4000089e: ffa121 l32r a2, 40000724 <_c_bss_end+0x18> -400008a1: 03b130 rsr.epc1 a3 -400008a4: 61e620 xsr.ps a2 -400008a7: 0139 s32i.n a3, a1, 0 -400008a9: 1129 s32i.n a2, a1, 4 -400008ab: 3b2122 l32i a2, a1, 236 -400008ae: 01d112 addmi a1, a1, 0x100 -400008b1: 002010 rsync -400008b4: ff9f41 l32r a4, 40000730 <_c_bss_end+0x24> -400008b7: 203430 or a3, a4, a3 -400008ba: 904430 addx2 a4, a4, a3 -400008bd: 020136 entry a1, 0x100 -400008c0: 0061f0 rsil a15, 1 -400008c3: ff9ce1 l32r a14, 40000734 <_c_0x3fffc210> -400008c6: 03e2f0 rsr.interrupt a15 -400008c9: 03e4c0 rsr.intenable a12 -400008cc: 1ed8 l32i.n a13, a14, 4 -400008ce: 10ffc0 and a15, a15, a12 -400008d1: 0303c0 rsr.sar a12 -400008d4: 31d9 s32i.n a13, a1, 12 -400008d6: 092f16 beqz a15, 4000096c <_X_start+0x1c0> -400008d9: 21c9 s32i.n a12, a1, 8 -400008db: 8129 s32i.n a2, a1, 32 -400008dd: ffaf22 movi a2, -1 -400008e0: 40ffc0 nsau a12, a15 -400008e3: ff95f1 l32r a15, 40000738 <_c_0x80000000> -400008e6: 400c00 ssr a12 -400008e9: 91f0f0 srl a15, a15 -400008ec: 3022f0 xor a2, a2, a15 -400008ef: ff93d1 l32r a13, 4000073c <_c_0x80000000+0x4> -400008f2: 13e3f0 wsr.intclear a15 -400008f5: b0ccd0 addx8 a12, a12, a13 -400008f8: 402cd2 l32i a13, a12, 0x100 -400008fb: 0066f0 rsil a15, 6 -400008fe: 0ef8 l32i.n a15, a14, 0 -40000900: 1ed9 s32i.n a13, a14, 4 -40000902: 10ffd0 and a15, a15, a13 -40000905: 13e4f0 wsr.intenable a15 -40000908: 002010 rsync -4000090b: 0060f0 rsil a15, 0 -4000090e: 0302d0 rsr.lcount a13 -40000911: 0300f0 rsr.lbeg a15 -40000914: 91d9 s32i.n a13, a1, 36 -40000916: 0301d0 rsr.lend a13 -40000919: a1f9 s32i.n a15, a1, 40 -4000091b: b1d9 s32i.n a13, a1, 44 -4000091d: 0310d0 rsr.acclo a13 -40000920: 0311f0 rsr.acchi a15 -40000923: c1d9 s32i.n a13, a1, 48 -40000925: d1f9 s32i.n a15, a1, 52 -40000927: 0cd8 l32i.n a13, a12, 0 -40000929: 01fd mov.n a15, a1 -4000092b: 012ce2 l32i a14, a12, 4 -4000092e: 000df0 callx12 a13 -40000931: 91d8 l32i.n a13, a1, 36 -40000933: a1e8 l32i.n a14, a1, 40 -40000935: b1f8 l32i.n a15, a1, 44 -40000937: 1302d0 wsr.lcount a13 -4000093a: 1300e0 wsr.lbeg a14 -4000093d: 1301f0 wsr.lend a15 -40000940: c1d8 l32i.n a13, a1, 48 -40000942: d1e8 l32i.n a14, a1, 52 -40000944: 1310d0 wsr.acclo a13 -40000947: 1311e0 wsr.acchi a14 -4000094a: ff7ae1 l32r a14, 40000734 <_c_0x3fffc210> -4000094d: 03e2f0 rsr.interrupt a15 -40000950: 0066d0 rsil a13, 6 -40000953: 0ed8 l32i.n a13, a14, 0 -40000955: 31c8 l32i.n a12, a1, 12 -40000957: 10ddc0 and a13, a13, a12 -4000095a: 10ffd0 and a15, a15, a13 -4000095d: 01ff56 bnez a15, 40000980 <_X_start+0x1d4> -40000960: 8128 l32i.n a2, a1, 32 -40000962: 1ec9 s32i.n a12, a14, 4 -40000964: 21c8 l32i.n a12, a1, 8 -40000966: 13e4d0 wsr.intenable a13 -40000969: 0063d0 rsil a13, 3 -4000096c: ff7501 l32r a0, 40000740 <_c_0x80000000+0x8> -4000096f: ff70d1 l32r a13, 40000730 <_c_bss_end+0x24> -40000972: 1303c0 wsr.sar a12 -40000975: 2000d0 or a0, a0, a13 -40000978: 900d00 addx2 a0, a13, a0 -4000097b: 0063d0 rsil a13, 3 -4000097e: f01d retw.n -40000980: 40ffd0 nsau a13, a15 -40000983: ff6ec1 l32r a12, 4000073c <_c_0x80000000+0x4> -40000986: b0cdc0 addx8 a12, a13, a12 -40000989: 412ce2 l32i a14, a12, 0x104 -4000098c: 10ff20 and a15, a15, a2 -4000098f: 10ffe0 and a15, a15, a14 -40000992: ff68e1 l32r a14, 40000734 <_c_0x3fffc210> -40000995: f47f56 bnez a15, 400008e0 <_X_start+0x134> -40000998: ff68f1 l32r a15, 40000738 <_c_0x80000000> -4000099b: 400d00 ssr a13 -4000099e: 91d0f0 srl a13, a15 -400009a1: 412cf2 l32i a15, a12, 0x104 -400009a4: 13e3d0 wsr.intclear a13 -400009a7: 2022f0 or a2, a2, a15 -400009aa: 3022d0 xor a2, a2, a13 -400009ad: ffd1c6 j 400008f8 <_X_start+0x14c> -400009b0: 002136 entry a1, 16 -400009b3: 13e620 wsr.ps a2 -400009b6: 002010 rsync -400009b9: f01d retw.n -400009bb: 213600 srai a3, a0, 6 -400009be: 023d00 andb b3, b13, b0 -400009c1: ff5c41 l32r a4, 40000734 <_c_0x3fffc210> -400009c4: 006670 rsil a7, 6 -400009c7: 1428 l32i.n a2, a4, 4 -400009c9: 0458 l32i.n a5, a4, 0 -400009cb: 1439 s32i.n a3, a4, 4 -400009cd: 105530 and a5, a5, a3 -400009d0: 13e450 wsr.intenable a5 -400009d3: 13e670 wsr.ps a7 -400009d6: 002010 rsync -400009d9: f01d retw.n -400009db: d22000 quos a2, a0, a0 -400009de: d11261 l32r a6, 3fff4e28 <_start-0xb1d8> -400009e1: ff .byte 0xff -400009e2: 4129 s32i.n a2, a1, 16 -400009e4: ff5021 l32r a2, 40000724 <_c_bss_end+0x18> -400009e7: 6149 s32i.n a4, a1, 24 -400009e9: 7159 s32i.n a5, a1, 28 -400009eb: 13e620 wsr.ps a2 -400009ee: 002010 rsync -400009f1: 3b2122 l32i a2, a1, 236 -400009f4: 01d112 addmi a1, a1, 0x100 -400009f7: 03b240 rsr.epc2 a4 -400009fa: ff4d51 l32r a5, 40000730 <_c_bss_end+0x24> -400009fd: 204540 or a4, a5, a4 -40000a00: 904540 addx2 a4, a5, a4 -40000a03: 020136 entry a1, 0x100 -40000a06: 0062f0 rsil a15, 2 -40000a09: 03e2f0 rsr.interrupt a15 -40000a0c: 03e4c0 rsr.intenable a12 -40000a0f: ff4dd1 l32r a13, 40000744 <_c_0x80000000+0xc> -40000a12: 10ffc0 and a15, a15, a12 -40000a15: 10ffd0 and a15, a15, a13 -40000a18: 0303e0 rsr.sar a14 -40000a1b: 06ef16 beqz a15, 40000a8d <_X_start+0x2e1> -40000a1e: 21e9 s32i.n a14, a1, 8 -40000a20: 0302d0 rsr.lcount a13 -40000a23: 0300e0 rsr.lbeg a14 -40000a26: 91d9 s32i.n a13, a1, 36 -40000a28: 0301d0 rsr.lend a13 -40000a2b: a1e9 s32i.n a14, a1, 40 -40000a2d: b1d9 s32i.n a13, a1, 44 -40000a2f: 0310d0 rsr.acclo a13 -40000a32: 0311e0 rsr.acchi a14 -40000a35: c1d9 s32i.n a13, a1, 48 -40000a37: d1e9 s32i.n a14, a1, 52 -40000a39: 60c0f0 neg a12, a15 -40000a3c: 10ccf0 and a12, a12, a15 -40000a3f: 13e3c0 wsr.intclear a12 -40000a42: ff3ed1 l32r a13, 4000073c <_c_0x80000000+0x4> -40000a45: fe1c movi.n a14, 31 -40000a47: 40fcc0 nsau a12, a12 -40000a4a: c0fec0 sub a15, a14, a12 -40000a4d: 60f0f0 neg a15, a15 -40000a50: 1fcff2 addi a15, a15, 31 -40000a53: b0cfd0 addx8 a12, a15, a13 -40000a56: 0cd8 l32i.n a13, a12, 0 -40000a58: 1ce8 l32i.n a14, a12, 4 -40000a5a: 20f110 or a15, a1, a1 -40000a5d: 000df0 callx12 a13 -40000a60: 03e2f0 rsr.interrupt a15 -40000a63: 03e4c0 rsr.intenable a12 -40000a66: ff37d1 l32r a13, 40000744 <_c_0x80000000+0xc> -40000a69: 10ffc0 and a15, a15, a12 -40000a6c: 10ffd0 and a15, a15, a13 -40000a6f: fc6f56 bnez a15, 40000a39 <_X_start+0x28d> -40000a72: 91d8 l32i.n a13, a1, 36 -40000a74: a1e8 l32i.n a14, a1, 40 -40000a76: b1f8 l32i.n a15, a1, 44 -40000a78: 1302d0 wsr.lcount a13 -40000a7b: 1300e0 wsr.lbeg a14 -40000a7e: 1301f0 wsr.lend a15 -40000a81: c1d8 l32i.n a13, a1, 48 -40000a83: d1e8 l32i.n a14, a1, 52 -40000a85: 1310d0 wsr.acclo a13 -40000a88: 1311e0 wsr.acchi a14 -40000a8b: 21e8 l32i.n a14, a1, 8 -40000a8d: ff2e01 l32r a0, 40000748 <_c_0x80000000+0x10> -40000a90: ff28d1 l32r a13, 40000730 <_c_bss_end+0x24> -40000a93: 1303e0 wsr.sar a14 -40000a96: 2000d0 or a0, a0, a13 -40000a99: 900d00 addx2 a0, a13, a0 -40000a9c: 0063e0 rsil a14, 3 -40000a9f: f01d retw.n -40000aa1: 3b6522 s32i a2, a5, 236 -40000aa4: 4528 l32i.n a2, a5, 16 -40000aa6: 6548 l32i.n a4, a5, 24 -40000aa8: 7558 l32i.n a5, a5, 28 -40000aaa: 003210 rfi 2 -40000aad: 000000 ill -40000ab0: 61d320 xsr.excsave3 a2 -40000ab3: ffd112 addmi a1, a1, 0xffffff00 -40000ab6: 4129 s32i.n a2, a1, 16 -40000ab8: ff1b21 l32r a2, 40000724 <_c_bss_end+0x18> -40000abb: 6149 s32i.n a4, a1, 24 -40000abd: 7159 s32i.n a5, a1, 28 -40000abf: 13e620 wsr.ps a2 -40000ac2: 002010 rsync -40000ac5: 3b2122 l32i a2, a1, 236 -40000ac8: 01d112 addmi a1, a1, 0x100 -40000acb: 03b340 rsr.epc3 a4 -40000ace: ff1851 l32r a5, 40000730 <_c_bss_end+0x24> -40000ad1: 204540 or a4, a5, a4 -40000ad4: 904540 addx2 a4, a5, a4 -40000ad7: 020136 entry a1, 0x100 -40000ada: 0063f0 rsil a15, 3 -40000add: 03e2f0 rsr.interrupt a15 -40000ae0: 03e4c0 rsr.intenable a12 -40000ae3: ff1ad1 l32r a13, 4000074c <_c_0x80000000+0x14> -40000ae6: 10ffc0 and a15, a15, a12 -40000ae9: 10ffd0 and a15, a15, a13 -40000aec: 0303e0 rsr.sar a14 -40000aef: 06ef16 beqz a15, 40000b61 <_X_start+0x3b5> -40000af2: 21e9 s32i.n a14, a1, 8 -40000af4: 0302d0 rsr.lcount a13 -40000af7: 0300e0 rsr.lbeg a14 -40000afa: 91d9 s32i.n a13, a1, 36 -40000afc: 0301d0 rsr.lend a13 -40000aff: a1e9 s32i.n a14, a1, 40 -40000b01: b1d9 s32i.n a13, a1, 44 -40000b03: 0310d0 rsr.acclo a13 -40000b06: 0311e0 rsr.acchi a14 -40000b09: c1d9 s32i.n a13, a1, 48 -40000b0b: d1e9 s32i.n a14, a1, 52 -40000b0d: 60c0f0 neg a12, a15 -40000b10: 10ccf0 and a12, a12, a15 -40000b13: 13e3c0 wsr.intclear a12 -40000b16: ff09d1 l32r a13, 4000073c <_c_0x80000000+0x4> -40000b19: fe1c movi.n a14, 31 -40000b1b: 40fcc0 nsau a12, a12 -40000b1e: c0fec0 sub a15, a14, a12 -40000b21: 60f0f0 neg a15, a15 -40000b24: 1fcff2 addi a15, a15, 31 -40000b27: b0cfd0 addx8 a12, a15, a13 -40000b2a: 0cd8 l32i.n a13, a12, 0 -40000b2c: 1ce8 l32i.n a14, a12, 4 -40000b2e: 20f110 or a15, a1, a1 -40000b31: 000df0 callx12 a13 -40000b34: 03e2f0 rsr.interrupt a15 -40000b37: 03e4c0 rsr.intenable a12 -40000b3a: ff04d1 l32r a13, 4000074c <_c_0x80000000+0x14> -40000b3d: 10ffc0 and a15, a15, a12 -40000b40: 10ffd0 and a15, a15, a13 -40000b43: fc6f56 bnez a15, 40000b0d <_X_start+0x361> -40000b46: 91d8 l32i.n a13, a1, 36 -40000b48: a1e8 l32i.n a14, a1, 40 -40000b4a: b1f8 l32i.n a15, a1, 44 -40000b4c: 1302d0 wsr.lcount a13 -40000b4f: 1300e0 wsr.lbeg a14 -40000b52: 1301f0 wsr.lend a15 -40000b55: c1d8 l32i.n a13, a1, 48 -40000b57: d1e8 l32i.n a14, a1, 52 -40000b59: 1310d0 wsr.acclo a13 -40000b5c: 1311e0 wsr.acchi a14 -40000b5f: 21e8 l32i.n a14, a1, 8 -40000b61: fefb01 l32r a0, 40000750 <_c_0x80000000+0x18> -40000b64: fef3d1 l32r a13, 40000730 <_c_bss_end+0x24> -40000b67: 1303e0 wsr.sar a14 -40000b6a: 2000d0 or a0, a0, a13 -40000b6d: 900d00 addx2 a0, a13, a0 -40000b70: f01d retw.n -40000b72: 3b6522 s32i a2, a5, 236 -40000b75: 4528 l32i.n a2, a5, 16 -40000b77: 6548 l32i.n a4, a5, 24 -40000b79: 7558 l32i.n a5, a5, 28 -40000b7b: 003310 rfi 3 -40000b7e: 210000 srai a0, a0, 0 -40000b81: 09fef5 call12 4000ab70 <__umoddi3+0x3d0c> -40000b84: f401d2 l8ui a13, a1, 244 -40000b87: fe .byte 0xfe -40000b88: e219 s32i.n a1, a2, 56 -40000b8a: 0008 l32i.n a0, a0, 0 -40000b8c: 106232 s32i a3, a2, 64 -40000b8f: 61d400 xsr.excsave4 a0 -40000b92: 116242 s32i a4, a2, 68 -40000b95: f209 s32i.n a0, a2, 60 -40000b97: 03b130 rsr.epc1 a3 -40000b9a: 03e840 rsr.exccause a4 -40000b9d: 3239 s32i.n a3, a2, 12 -40000b9f: 4249 s32i.n a4, a2, 16 -40000ba1: 03ee30 rsr.excvaddr a3 -40000ba4: 056232 s32i a3, a2, 20 -40000ba7: 03d140 rsr.excsave1 a4 -40000baa: 066242 s32i a4, a2, 24 -40000bad: 803c movi.n a0, 56 -40000baf: 126252 s32i a5, a2, 72 -40000bb2: 136262 s32i a6, a2, 76 -40000bb5: 146272 s32i a7, a2, 80 -40000bb8: 156282 s32i a8, a2, 84 -40000bbb: 166292 s32i a9, a2, 88 -40000bbe: 1762a2 s32i a10, a2, 92 -40000bc1: 1862b2 s32i a11, a2, 96 -40000bc4: 1962c2 s32i a12, a2, 100 -40000bc7: 1a62d2 s32i a13, a2, 104 -40000bca: 1b62e2 s32i a14, a2, 108 -40000bcd: 1c62f2 s32i a15, a2, 112 -40000bd0: f8c082 addi a8, a0, -8 -40000bd3: 20c2a2 addi a10, a2, 32 -40000bd6: 408020 rotw 2 -40000bd9: fdb056 bnez a0, 40000bb8 <_X_start+0x40c> -40000bdc: 408020 rotw 2 -40000bdf: 034930 rsr.windowstart a3 -40000be2: 034840 rsr.windowbase a4 -40000be5: 1239 s32i.n a3, a2, 4 -40000be7: 2249 s32i.n a4, a2, 8 -40000be9: 130c movi.n a3, 1 -40000beb: 040c movi.n a4, 0 -40000bed: 134930 wsr.windowstart a3 -40000bf0: 134840 wsr.windowbase a4 -40000bf3: 002010 rsync -40000bf6: fed711 l32r a1, 40000754 <_c_0x80000000+0x1c> -40000bf9: 000c movi.n a0, 0 -40000bfb: fed821 l32r a2, 4000075c <_c_0x80000000+0x24> -40000bfe: 13e620 wsr.ps a2 -40000c01: 002010 rsync -40000c04: 0303e0 rsr.sar a14 -40000c07: 01e9 s32i.n a14, a1, 0 -40000c09: 0302e0 rsr.lcount a14 -40000c0c: a1e9 s32i.n a14, a1, 40 -40000c0e: 0300e0 rsr.lbeg a14 -40000c11: b1e9 s32i.n a14, a1, 44 -40000c13: 0301e0 rsr.lend a14 -40000c16: c1e9 s32i.n a14, a1, 48 -40000c18: 0310e0 rsr.acclo a14 -40000c1b: 81e9 s32i.n a14, a1, 32 -40000c1d: 0311e0 rsr.acchi a14 -40000c20: 91e9 s32i.n a14, a1, 36 -40000c22: fecfd1 l32r a13, 40000760 <_c_0x40000000> -40000c25: fec5c1 l32r a12, 4000073c <_c_0x80000000+0x4> -40000c28: 13e3d0 wsr.intclear a13 -40000c2b: 2cd8 l32i.n a13, a12, 8 -40000c2d: 3c68 l32i.n a6, a12, 12 -40000c2f: 000dd0 callx4 a13 -40000c32: a1d8 l32i.n a13, a1, 40 -40000c34: b1e8 l32i.n a14, a1, 44 -40000c36: c1f8 l32i.n a15, a1, 48 -40000c38: 1302d0 wsr.lcount a13 -40000c3b: 1300e0 wsr.lbeg a14 -40000c3e: 1301f0 wsr.lend a15 -40000c41: 81d8 l32i.n a13, a1, 32 -40000c43: 91e8 l32i.n a14, a1, 36 -40000c45: 1310d0 wsr.acclo a13 -40000c48: 1311e0 wsr.acchi a14 -40000c4b: 01f8 l32i.n a15, a1, 0 -40000c4d: 1303f0 wsr.sar a15 -40000c50: 423c movi.n a2, 52 -40000c52: 13e620 wsr.ps a2 -40000c55: 002010 rsync -40000c58: 1128 l32i.n a2, a1, 4 -40000c5a: 2138 l32i.n a3, a1, 8 -40000c5c: 134920 wsr.windowstart a2 -40000c5f: 134830 wsr.windowbase a3 -40000c62: 002010 rsync -40000c65: febb11 l32r a1, 40000754 <_c_0x80000000+0x1c> -40000c68: 863c movi.n a6, 56 -40000c6a: e0c172 addi a7, a1, -32 -40000c6d: f8c6e2 addi a14, a6, -8 -40000c70: 20c7f2 addi a15, a7, 32 -40000c73: 112f42 l32i a4, a15, 68 -40000c76: 122f52 l32i a5, a15, 72 -40000c79: 132f62 l32i a6, a15, 76 -40000c7c: 142f72 l32i a7, a15, 80 -40000c7f: 152f82 l32i a8, a15, 84 -40000c82: 162f92 l32i a9, a15, 88 -40000c85: 172fa2 l32i a10, a15, 92 -40000c88: 182fb2 l32i a11, a15, 96 -40000c8b: 408020 rotw 2 -40000c8e: fdb656 bnez a6, 40000c6d <_X_start+0x4c1> -40000c91: 192742 l32i a4, a7, 100 -40000c94: 1a2752 l32i a5, a7, 104 -40000c97: 1b2762 l32i a6, a7, 108 -40000c9a: 1c2772 l32i a7, a7, 112 -40000c9d: 408020 rotw 2 -40000ca0: 3128 l32i.n a2, a1, 12 -40000ca2: 4138 l32i.n a3, a1, 16 -40000ca4: 13b120 wsr.epc1 a2 -40000ca7: 13e830 wsr.exccause a3 -40000caa: 5128 l32i.n a2, a1, 20 -40000cac: 13ee20 wsr.excvaddr a2 -40000caf: 6138 l32i.n a3, a1, 24 -40000cb1: 13d130 wsr.excsave1 a3 -40000cb4: d108 l32i.n a0, a1, 52 -40000cb6: f128 l32i.n a2, a1, 60 -40000cb8: 102132 l32i a3, a1, 64 -40000cbb: e118 l32i.n a1, a1, 56 -40000cbd: 003410 rfi 4 -40000cc0: fea921 l32r a2, 40000764 <_c_0x40000000+0x4> -40000cc3: d209 s32i.n a0, a2, 52 -40000cc5: fea801 l32r a0, 40000768 <_c_0x40000000+0x8> -40000cc8: e219 s32i.n a1, a2, 56 -40000cca: 0008 l32i.n a0, a0, 0 -40000ccc: 106232 s32i a3, a2, 64 -40000ccf: 61d500 xsr.excsave5 a0 -40000cd2: 116242 s32i a4, a2, 68 -40000cd5: f209 s32i.n a0, a2, 60 -40000cd7: 03b130 rsr.epc1 a3 -40000cda: 03e840 rsr.exccause a4 -40000cdd: 3239 s32i.n a3, a2, 12 -40000cdf: 4249 s32i.n a4, a2, 16 -40000ce1: 03ee30 rsr.excvaddr a3 -40000ce4: 056232 s32i a3, a2, 20 -40000ce7: 03d140 rsr.excsave1 a4 -40000cea: 6249 s32i.n a4, a2, 24 -40000cec: 38a002 movi a0, 56 -40000cef: 126252 s32i a5, a2, 72 -40000cf2: 136262 s32i a6, a2, 76 -40000cf5: 146272 s32i a7, a2, 80 -40000cf8: 156282 s32i a8, a2, 84 -40000cfb: 166292 s32i a9, a2, 88 -40000cfe: 1762a2 s32i a10, a2, 92 -40000d01: 1862b2 s32i a11, a2, 96 -40000d04: 1962c2 s32i a12, a2, 100 -40000d07: 1a62d2 s32i a13, a2, 104 -40000d0a: 1b62e2 s32i a14, a2, 108 -40000d0d: 1c62f2 s32i a15, a2, 112 -40000d10: f8c082 addi a8, a0, -8 -40000d13: 20c2a2 addi a10, a2, 32 -40000d16: 408020 rotw 2 -40000d19: fdb056 bnez a0, 40000cf8 <_X_start+0x54c> -40000d1c: 408020 rotw 2 -40000d1f: 034930 rsr.windowstart a3 -40000d22: 034840 rsr.windowbase a4 -40000d25: 1239 s32i.n a3, a2, 4 -40000d27: 2249 s32i.n a4, a2, 8 -40000d29: 130c movi.n a3, 1 -40000d2b: 040c movi.n a4, 0 -40000d2d: 134930 wsr.windowstart a3 -40000d30: 134840 wsr.windowbase a4 -40000d33: 002010 rsync -40000d36: fe8b11 l32r a1, 40000764 <_c_0x40000000+0x4> -40000d39: 000c movi.n a0, 0 -40000d3b: fe8c21 l32r a2, 4000076c <_c_0x40000000+0xc> -40000d3e: 13e620 wsr.ps a2 -40000d41: 002010 rsync -40000d44: 0303e0 rsr.sar a14 -40000d47: 01e9 s32i.n a14, a1, 0 -40000d49: 0302e0 rsr.lcount a14 -40000d4c: a1e9 s32i.n a14, a1, 40 -40000d4e: 0300e0 rsr.lbeg a14 -40000d51: b1e9 s32i.n a14, a1, 44 -40000d53: 0301e0 rsr.lend a14 -40000d56: c1e9 s32i.n a14, a1, 48 -40000d58: 0310e0 rsr.acclo a14 -40000d5b: 81e9 s32i.n a14, a1, 32 -40000d5d: 0311e0 rsr.acchi a14 -40000d60: 91e9 s32i.n a14, a1, 36 -40000d62: 03e2f0 rsr.interrupt a15 -40000d65: 03e4c0 rsr.intenable a12 -40000d68: fe82d1 l32r a13, 40000770 <_c_0x40000000+0x10> -40000d6b: 10ffc0 and a15, a15, a12 -40000d6e: 10ffd0 and a15, a15, a13 -40000d71: 02af16 beqz a15, 40000d9f <_X_start+0x5f3> -40000d74: 60e0f0 neg a14, a15 -40000d77: 10eef0 and a14, a14, a15 -40000d7a: 13e3e0 wsr.intclear a14 -40000d7d: fe6fc1 l32r a12, 4000073c <_c_0x80000000+0x4> -40000d80: 40fee0 nsau a14, a14 -40000d83: b0cec0 addx8 a12, a14, a12 -40000d86: 0cd8 l32i.n a13, a12, 0 -40000d88: 1c68 l32i.n a6, a12, 4 -40000d8a: 000dd0 callx4 a13 -40000d8d: 03e2f0 rsr.interrupt a15 -40000d90: 03e4c0 rsr.intenable a12 -40000d93: fe77d1 l32r a13, 40000770 <_c_0x40000000+0x10> -40000d96: 10ffc0 and a15, a15, a12 -40000d99: 10ffd0 and a15, a15, a13 -40000d9c: fd4f56 bnez a15, 40000d74 <_X_start+0x5c8> -40000d9f: a1d8 l32i.n a13, a1, 40 -40000da1: b1e8 l32i.n a14, a1, 44 -40000da3: c1f8 l32i.n a15, a1, 48 -40000da5: 1302d0 wsr.lcount a13 -40000da8: 1300e0 wsr.lbeg a14 -40000dab: 1301f0 wsr.lend a15 -40000dae: 81d8 l32i.n a13, a1, 32 -40000db0: 91e8 l32i.n a14, a1, 36 -40000db2: 1310d0 wsr.acclo a13 -40000db5: 1311e0 wsr.acchi a14 -40000db8: 01f8 l32i.n a15, a1, 0 -40000dba: 1303f0 wsr.sar a15 -40000dbd: 523c movi.n a2, 53 -40000dbf: 13e620 wsr.ps a2 -40000dc2: 002010 rsync -40000dc5: 1128 l32i.n a2, a1, 4 -40000dc7: 022132 l32i a3, a1, 8 -40000dca: 134920 wsr.windowstart a2 -40000dcd: 134830 wsr.windowbase a3 -40000dd0: 002010 rsync -40000dd3: fe6411 l32r a1, 40000764 <_c_0x40000000+0x4> -40000dd6: 38a062 movi a6, 56 -40000dd9: e0c172 addi a7, a1, -32 -40000ddc: f8c6e2 addi a14, a6, -8 -40000ddf: 20c7f2 addi a15, a7, 32 -40000de2: 112f42 l32i a4, a15, 68 -40000de5: 122f52 l32i a5, a15, 72 -40000de8: 132f62 l32i a6, a15, 76 -40000deb: 142f72 l32i a7, a15, 80 -40000dee: 152f82 l32i a8, a15, 84 -40000df1: 162f92 l32i a9, a15, 88 -40000df4: 172fa2 l32i a10, a15, 92 -40000df7: 182fb2 l32i a11, a15, 96 -40000dfa: 408020 rotw 2 -40000dfd: fdb656 bnez a6, 40000ddc <_X_start+0x630> -40000e00: 192742 l32i a4, a7, 100 -40000e03: 1a2752 l32i a5, a7, 104 -40000e06: 1b2762 l32i a6, a7, 108 -40000e09: 1c2772 l32i a7, a7, 112 -40000e0c: 408020 rotw 2 -40000e0f: 3128 l32i.n a2, a1, 12 -40000e11: 4138 l32i.n a3, a1, 16 -40000e13: 13b120 wsr.epc1 a2 -40000e16: 13e830 wsr.exccause a3 -40000e19: 5128 l32i.n a2, a1, 20 -40000e1b: 13ee20 wsr.excvaddr a2 -40000e1e: 6138 l32i.n a3, a1, 24 -40000e20: 13d130 wsr.excsave1 a3 -40000e23: d108 l32i.n a0, a1, 52 -40000e25: f128 l32i.n a2, a1, 60 -40000e27: 102132 l32i a3, a1, 64 -40000e2a: e118 l32i.n a1, a1, 56 -40000e2c: 003510 rfi 5 -40000e2f: 320c00 orbc b0, b12, b0 -40000e32: 000286 j 40000e40 <_X_start+0x694> -40000e35: 000000 ill -40000e38: fdc332 addi a3, a3, -3 -40000e3b: 332a add.n a3, a3, a2 -40000e3d: 0004c6 j 40000e54 <_X_start+0x6a8> -40000e40: 7159 s32i.n a5, a1, 28 -40000e42: 086122 s32i a2, a1, 32 -40000e45: 03e620 rsr.ps a2 -40000e48: fe3731 l32r a3, 40000724 <_c_bss_end+0x18> -40000e4b: 016122 s32i a2, a1, 4 -40000e4e: 342020 extui a2, a2, 0, 4 -40000e51: e342f6 bgeui a2, 4, 40000e38 <_X_start+0x68c> -40000e54: 03b120 rsr.epc1 a2 -40000e57: 13e630 wsr.ps a3 -40000e5a: 0129 s32i.n a2, a1, 0 -40000e5c: 3b2122 l32i a2, a1, 236 -40000e5f: 01d112 addmi a1, a1, 0x100 -40000e62: 002010 rsync -40000e65: fe3241 l32r a4, 40000730 <_c_bss_end+0x24> -40000e68: 203430 or a3, a4, a3 -40000e6b: 904430 addx2 a4, a4, a3 -40000e6e: 020136 entry a1, 0x100 -40000e71: 0303c0 rsr.sar a12 -40000e74: 11d8 l32i.n a13, a1, 4 -40000e76: 03e6e0 rsr.ps a14 -40000e79: 34d0d0 extui a13, a13, 0, 4 -40000e7c: 34f0e0 extui a15, a14, 0, 4 -40000e7f: 30eef0 xor a14, a14, a15 -40000e82: 30eed0 xor a14, a14, a13 -40000e85: 13e6e0 wsr.ps a14 -40000e88: fe23d1 l32r a13, 40000714 <_c_bss_end+0x8> -40000e8b: 81f8 l32i.n a15, a1, 32 -40000e8d: 21c9 s32i.n a12, a1, 8 -40000e8f: 0302c0 rsr.lcount a12 -40000e92: 0300e0 rsr.lbeg a14 -40000e95: 91c9 s32i.n a12, a1, 36 -40000e97: 0301c0 rsr.lend a12 -40000e9a: a1e9 s32i.n a14, a1, 40 -40000e9c: b1c9 s32i.n a12, a1, 44 -40000e9e: 0310c0 rsr.acclo a12 -40000ea1: 0311e0 rsr.acchi a14 -40000ea4: c1c9 s32i.n a12, a1, 48 -40000ea6: d1e9 s32i.n a14, a1, 52 -40000ea8: a0cfd0 addx4 a12, a15, a13 -40000eab: 0cc8 l32i.n a12, a12, 0 -40000ead: 01ed mov.n a14, a1 -40000eaf: 1c8c beqz.n a12, 40000eb4 <_X_start+0x708> -40000eb1: 000cf0 callx12 a12 -40000eb4: 91d8 l32i.n a13, a1, 36 -40000eb6: a1e8 l32i.n a14, a1, 40 -40000eb8: b1f8 l32i.n a15, a1, 44 -40000eba: 1302d0 wsr.lcount a13 -40000ebd: 1300e0 wsr.lbeg a14 -40000ec0: 1301f0 wsr.lend a15 -40000ec3: c1d8 l32i.n a13, a1, 48 -40000ec5: d1e8 l32i.n a14, a1, 52 -40000ec7: 1310d0 wsr.acclo a13 -40000eca: 1311e0 wsr.acchi a14 -40000ecd: 21e8 l32i.n a14, a1, 8 -40000ecf: 0063c0 rsil a12, 3 -40000ed2: 1303e0 wsr.sar a14 -40000ed5: fe1a01 l32r a0, 40000740 <_c_0x80000000+0x8> -40000ed8: fe16d1 l32r a13, 40000730 <_c_bss_end+0x24> -40000edb: 2000d0 or a0, a0, a13 -40000ede: 900d00 addx2 a0, a13, a0 -40000ee1: f01d retw.n -40000ee3: 413600 srli a3, a0, 6 -40000ee6: 234100 sext a4, a1, 7 -40000ee9: fe .byte 0xfe -40000eea: 0448 l32i.n a4, a4, 0 -40000eec: 030c movi.n a3, 0 -40000eee: 2a6422 s32i a2, a4, 168 -40000ef1: 2b6432 s32i a3, a4, 172 -40000ef4: f01d retw.n -40000ef6: 360000 excw -40000ef9: 610041 l32r a4, 3ffd92fc <_start-0x26d04> -40000efc: 1e .byte 0x1e -40000efd: fe .byte 0xfe -40000efe: fe1e81 l32r a8, 40000778 <_c_0x40000000+0x18> -40000f01: 0668 l32i.n a6, a6, 0 -40000f03: fe1e51 l32r a5, 4000077c <_c_0x40000000+0x1c> -40000f06: 2b2672 l32i a7, a6, 172 -40000f09: 2a2642 l32i a4, a6, 168 -40000f0c: 827750 mull a7, a7, a5 -40000f0f: 828480 mull a8, a4, a8 -40000f12: 822450 mull a2, a4, a5 -40000f15: a24450 muluh a4, a4, a5 -40000f18: 521b addi.n a5, a2, 1 -40000f1a: 448a add.n a4, a4, a8 -40000f1c: 447a add.n a4, a4, a7 -40000f1e: 0fb527 bgeu a5, a2, 40000f31 <_X_start+0x785> -40000f21: 2a6652 s32i a5, a6, 168 -40000f24: 241b addi.n a2, a4, 1 -40000f26: fe1631 l32r a3, 40000780 <_c_0x7fffffff> -40000f29: 2b6622 s32i a2, a6, 172 -40000f2c: 102230 and a2, a2, a3 -40000f2f: f01d retw.n -40000f31: 2a6652 s32i a5, a6, 168 -40000f34: fe1321 l32r a2, 40000780 <_c_0x7fffffff> -40000f37: 2b6642 s32i a4, a6, 172 -40000f3a: 102420 and a2, a4, a2 -40000f3d: f01d retw.n -40000f3f: d81000 excw -40000f42: ff .byte 0xff -40000f43: 3f .byte 0x3f -40000f44: 004136 entry a1, 32 -40000f47: fffe41 l32r a4, 40000f40 <_X_start+0x794> -40000f4a: 1439 s32i.n a3, a4, 4 -40000f4c: 0429 s32i.n a2, a4, 0 -40000f4e: f01d retw.n - -40000f50 <_c_0x3fffd820>: -40000f50: ffd820 excw -40000f53: 3f .byte 0x3f - -40000f54 <_X_ets_task>: -40000f54: 004136 entry a1, 32 -40000f57: 160c movi.n a6, 1 -40000f59: 090c movi.n a9, 0 -40000f5b: fffd71 l32r a7, 40000f50 <_c_0x3fffd820> -40000f5e: 1183c0 slli a8, a3, 4 -40000f61: 778a add.n a7, a7, a8 -40000f63: 830b addi.n a8, a3, -1 -40000f65: f0c772 addi a7, a7, -16 -40000f68: 0729 s32i.n a2, a7, 0 -40000f6a: 1749 s32i.n a4, a7, 4 -40000f6c: 084752 s8i a5, a7, 8 -40000f6f: 094792 s8i a9, a7, 9 -40000f72: 0a4792 s8i a9, a7, 10 -40000f75: 0b4792 s8i a9, a7, 11 -40000f78: 401800 ssl a8 -40000f7b: a16600 sll a6, a6 -40000f7e: 3769 s32i.n a6, a7, 12 -40000f80: f01d retw.n - ... - -40000f84 <_XX_unk0f84>: -40000f84: 004136 entry a1, 32 -40000f87: f01d retw.n -40000f89: 000000 ill -40000f8c: 004136 entry a1, 32 -40000f8f: ffff65 call8 40000f84 <_XX_unk0f84> -40000f92: 0008a5 call8 4000101c <_XX_unk0f96+0x84> -40000f95: f01d retw.n - ... - -40000f98 <_XX_unk0f96>: -40000f98: 004136 entry a1, 32 -40000f9b: 0010e5 call8 400010a8 <_X_ets_enter_critical> -40000f9e: ffeca1 l32r a10, 40000f50 <_c_0x3fffd820> -40000fa1: 11b2c0 slli a11, a2, 4 -40000fa4: aaba add.n a10, a10, a11 -40000fa6: ffdac2 addmi a12, a10, 0xffffff00 -40000fa9: f80cd2 l8ui a13, a12, 248 -40000fac: fb0c82 l8ui a8, a12, 251 -40000faf: f0cab2 addi a11, a10, -16 -40000fb2: 4eb8d7 bgeu a8, a13, 40001004 <_XX_unk0f96+0x6c> -40000fb5: 090b82 l8ui a8, a11, 9 -40000fb8: 1b98 l32i.n a9, a11, 4 -40000fba: f81b addi.n a15, a8, 1 -40000fbc: b08890 addx8 a8, a8, a9 -40000fbf: 0839 s32i.n a3, a8, 0 -40000fc1: 1849 s32i.n a4, a8, 4 -40000fc3: 094bf2 s8i a15, a11, 9 -40000fc6: f90ce2 l8ui a14, a12, 249 -40000fc9: ffdaa2 addmi a10, a10, 0xffffff00 -40000fcc: 049de7 bne a13, a14, 40000fd4 <_XX_unk0f96+0x3c> -40000fcf: 0c0c movi.n a12, 0 -40000fd1: 094bc2 s8i a12, a11, 9 -40000fd4: 0b0be2 l8ui a14, a11, 11 -40000fd7: 01cee2 addi a14, a14, 1 -40000fda: 0b4be2 s8i a14, a11, 11 -40000fdd: fb0ad2 l8ui a13, a10, 251 -40000fe0: 091d26 beqi a13, 1, 40000fed <_XX_unk0f96+0x55> -40000fe3: 000da5 call8 400010bc <_X_ets_exit_critical> -40000fe6: 00a022 movi a2, 0 -40000fe9: 000090 retw -40000fec: d48100 extui a8, a0, 1, 14 -40000fef: ff .byte 0xff -40000ff0: 3f2af2 l32i a15, a10, 252 -40000ff3: 022892 l32i a9, a8, 8 -40000ff6: 20ff90 or a15, a15, a9 -40000ff9: 0268f2 s32i a15, a8, 8 -40000ffc: 000be5 call8 400010bc <_X_ets_exit_critical> -40000fff: 00a022 movi a2, 0 -40001002: f01d retw.n -40001004: 000b65 call8 400010bc <_X_ets_exit_critical> -40001007: 120c movi.n a2, 1 -40001009: f01d retw.n -4000100b: 413600 srli a3, a0, 6 -4000100e: f23000 rems a3, a0, a0 -40001011: 022c40 andb b2, b12, b4 -40001014: c02230 sub a2, a2, a3 -40001017: 742020 extui a2, a2, 0, 8 -4000101a: f01d retw.n -4000101c: 004136 entry a1, 32 -4000101f: f77c movi.n a7, -1 -40001021: ffc731 l32r a3, 40000f40 <_X_start+0x794> -40001024: 060c movi.n a6, 0 -40001026: 10c352 addi a5, a3, 16 -40001029: 000406 j 4000103d <_XX_unk0f96+0xa5> -4000102c: 201110 or a1, a1, a1 -4000102f: 0008e5 call8 400010bc <_X_ets_exit_critical> -40001032: ffd282 addmi a8, a2, 0xffffff00 -40001035: 3c2882 l32i a8, a8, 240 -40001038: 04ad mov.n a10, a4 -4000103a: 0008e0 callx8 a8 -4000103d: 0006a5 call8 400010a8 <_X_ets_enter_critical> -40001040: 23a8 l32i.n a10, a3, 8 -40001042: fffca5 call8 4000100c <_XX_unk0f96+0x74> -40001045: 048a16 beqz a10, 40001091 <_XX_unk0f96+0xf9> -40001048: 112ac0 slli a2, a10, 4 -4000104b: 252a add.n a2, a5, a2 -4000104d: f0c2a2 addi a10, a2, -16 -40001050: ffd2b2 addmi a11, a2, 0xffffff00 -40001053: f80b92 l8ui a9, a11, 248 -40001056: 3d2b82 l32i a8, a11, 244 -40001059: 0a0ac2 l8ui a12, a10, 10 -4000105c: fa0b42 l8ui a4, a11, 250 -4000105f: cc1b addi.n a12, a12, 1 -40001061: 0a4ac2 s8i a12, a10, 10 -40001064: fa0bb2 l8ui a11, a11, 250 -40001067: b04480 addx8 a4, a4, a8 -4000106a: 0299b7 bne a9, a11, 40001070 <_XX_unk0f96+0xd8> -4000106d: 0a4a62 s8i a6, a10, 10 -40001070: 0b0ab2 l8ui a11, a10, 11 -40001073: ffd292 addmi a9, a2, 0xffffff00 -40001076: bb0b addi.n a11, a11, -1 -40001078: 0b4ab2 s8i a11, a10, 11 -4000107b: fb0982 l8ui a8, a9, 251 -4000107e: 3f29d2 l32i a13, a9, 252 -40001081: fa7856 bnez a8, 4000102c <_XX_unk0f96+0x94> -40001084: 23c8 l32i.n a12, a3, 8 -40001086: 30dd70 xor a13, a13, a7 -40001089: 10ccd0 and a12, a12, a13 -4000108c: 23c9 s32i.n a12, a3, 8 -4000108e: ffe686 j 4000102c <_XX_unk0f96+0x94> -40001091: 03b8 l32i.n a11, a3, 0 -40001093: 005b16 beqz a11, 4000109c <_XX_unk0f96+0x104> -40001096: 0123a2 l32i a10, a3, 4 -40001099: 000be0 callx8 a11 -4000109c: 000365 call8 400010d4 <_X_ets_exit_critical_and_wait_int> -4000109f: ffe686 j 4000103d <_XX_unk0f96+0xa5> - ... - -400010a4 <_c_ets_critical_level>: -400010a4: ffda20 excw -400010a7: 3f .byte 0x3f - -400010a8 <_X_ets_enter_critical>: -400010a8: 004136 entry a1, 32 -400010ab: fffe31 l32r a3, 400010a4 <_c_ets_critical_level> -400010ae: 006220 rsil a2, 2 -400010b1: 0388 l32i.n a8, a3, 0 -400010b3: 881b addi.n a8, a8, 1 -400010b5: 0389 s32i.n a8, a3, 0 -400010b7: f01d retw.n -400010b9: 000000 ill - -400010bc <_X_ets_exit_critical>: -400010bc: 004136 entry a1, 32 -400010bf: fff931 l32r a3, 400010a4 <_c_ets_critical_level> -400010c2: 0328 l32i.n a2, a3, 0 -400010c4: 220b addi.n a2, a2, -1 -400010c6: 0329 s32i.n a2, a3, 0 -400010c8: 028c beqz.n a2, 400010cc <_X_ets_exit_critical+0x10> -400010ca: f01d retw.n -400010cc: 006080 rsil a8, 0 -400010cf: f01d retw.n -400010d1: 000000 ill - -400010d4 <_X_ets_exit_critical_and_wait_int>: -400010d4: 004136 entry a1, 32 -400010d7: fff331 l32r a3, 400010a4 <_c_ets_critical_level> -400010da: 0328 l32i.n a2, a3, 0 -400010dc: 220b addi.n a2, a2, -1 -400010de: 0329 s32i.n a2, a3, 0 -400010e0: 007000 waiti 0 -400010e3: f01d retw.n -400010e5: 000000 ill - -400010e8 <_X_ets_isr_attach>: -400010e8: 004136 entry a1, 32 -400010eb: 04cd mov.n a12, a4 -400010ed: 03bd mov.n a11, a3 -400010ef: 02ad mov.n a10, a2 -400010f1: 048e65 call8 400059d8 <_X_xtos_set_interrupt_handler_arg> -400010f4: f01d retw.n - ... - -400010f8 <_X_ets_isr_mask>: -400010f8: 004136 entry a1, 32 -400010fb: 02ad mov.n a10, a2 -400010fd: 0495a5 call8 40005a58 <_X_xtos_ints_off> -40001100: f01d retw.n - ... - -40001104 <_X_ets_isr_unmask>: -40001104: 004136 entry a1, 32 -40001107: 02ad mov.n a10, a2 -40001109: 0492a5 call8 40005a34 <_X_xtos_ints_on> -4000110c: f01d retw.n - ... - -40001110 <_c_0x3fffda30>: -40001110: ffda30 excw -40001113: 3f .byte 0x3f - -40001114 <_XX_set_0x3fffda30_0>: -40001114: 004136 entry a1, 32 -40001117: fffe31 l32r a3, 40001110 <_c_0x3fffda30> -4000111a: 0329 s32i.n a2, a3, 0 -4000111c: f01d retw.n - ... - -40001120 <_XX_set_0x3fffda30_4>: -40001120: 004136 entry a1, 32 -40001123: fffb31 l32r a3, 40001110 <_c_0x3fffda30> -40001126: 1329 s32i.n a2, a3, 4 -40001128: f01d retw.n - ... - -4000112c <_c_0xfffdffff>: -4000112c: ff .byte 0xff -4000112d: ff .byte 0xff -4000112e: fffd excw - -40001130 <_c_0x60003e00>: -40001130: 003e00 excw -40001133: 820060 mull a0, a0, a6 - -40001134 <_c_0x60008200>: -40001134: 008200 any4 b0, b0:b1:b2:b3 -40001137: 7e0060 excw - -40001138 <_c_0x60007e00>: -40001138: 007e00 waiti 14 -4000113b: 100060 and a0, a0, a6 - -4000113c <_c_0x1000>: -4000113c: 001000 movsp a0, a0 - ... - -40001140 <_s_fw_build>: -40001140: ca7c movi.n a10, -4 -40001142: ff .byte 0xff -40001143: 3f .byte 0x3f - -40001144 <_s_boot_banner>: -40001144: ffca54 excw -40001147: 3f .byte 0x3f - -40001148 <_s_pct_s_pct_u>: -40001148: ca88 l32i.n a8, a10, 48 -4000114a: ff .byte 0xff -4000114b: 3f .byte 0x3f - -4000114c <_s_ets_main_c>: -4000114c: ffca90 excw -4000114f: 3f .byte 0x3f -40001150: 1d18 l32i.n a1, a13, 4 -40001152: 904000 addx2 a4, a0, a0 -40001155: 001d mov.n a1, a0 -40001157: ca9c40 depbits a4, a12, 12, 10 -4000115a: ff .byte 0xff -4000115b: 3f .byte 0x3f - -4000115c <_X_main>: -4000115c: 004136 entry a1, 32 -4000115f: 0177a5 call8 400028d8 <_X_get_rst_cause> -40001162: fff281 l32r a8, 4000112c <_c_0xfffdffff> -40001165: 00afe2 movi a14, 0xffffff00 -40001168: fff221 l32r a2, 40001130 <_c_0x60003e00> -4000116b: 871c movi.n a7, 24 -4000116d: fff1d1 l32r a13, 40001134 <_c_0x60008200> -40001170: 063c movi.n a6, 48 -40001172: 203aa0 or a3, a10, a10 -40001175: fff0b1 l32r a11, 40001138 <_c_0x60007e00> -40001178: 1aa0a2 movi a10, 26 -4000117b: 0020c0 memw -4000117e: a02bf2 l32i a15, a11, 0x280 -40001181: 10ff80 and a15, a15, a8 -40001184: 0020c0 memw -40001187: a06bf2 s32i a15, a11, 0x280 -4000118a: ffecc1 l32r a12, 4000113c <_c_0x1000> -4000118d: 0020c0 memw -40001190: a02b92 l32i a9, a11, 0x280 -40001193: 2099c0 or a9, a9, a12 -40001196: 0020c0 memw -40001199: a06b92 s32i a9, a11, 0x280 -4000119c: 0020c0 memw -4000119f: 8e2282 l32i a8, a2, 0x238 -400011a2: 174867 ball a8, a6, 400011bd <_X_main+0x61> -400011a5: 0020c0 memw -400011a8: 8e2292 l32i a9, a2, 0x238 -400011ab: 549090 extui a9, a9, 0, 6 -400011ae: 0b1977 beq a9, a7, 400011bd <_X_main+0x61> -400011b1: 0020c0 memw -400011b4: 8e22b2 l32i a11, a2, 0x238 -400011b7: 54b0b0 extui a11, a11, 0, 6 -400011ba: 0e9ba7 bne a11, a10, 400011cc <_X_main+0x70> -400011bd: 0020c0 memw -400011c0: 9d2dc2 l32i a12, a13, 0x274 -400011c3: 10cce0 and a12, a12, a14 -400011c6: 0020c0 memw -400011c9: 9d6dc2 s32i a12, a13, 0x274 -400011cc: 0020c0 memw -400011cf: 8e22f2 l32i a15, a2, 0x238 -400011d2: f03d nop.n -400011d4: 10ff60 and a15, a15, a6 -400011d7: 6bcf66 bnei a15, 32, 40001246 <_X_main+0xea> -400011da: fd6991 l32r a9, 40000780 <_c_0x7fffffff> -400011dd: 0020c0 memw -400011e0: a52dc2 l32i a12, a13, 0x294 -400011e3: 10cc90 and a12, a12, a9 -400011e6: 0020c0 memw -400011e9: a56dc2 s32i a12, a13, 0x294 -400011ec: 0020c0 memw -400011ef: a62db2 l32i a11, a13, 0x298 -400011f2: 10bb90 and a11, a11, a9 -400011f5: 0020c0 memw -400011f8: a66db2 s32i a11, a13, 0x298 -400011fb: 0020c0 memw -400011fe: a72d82 l32i a8, a13, 0x29c -40001201: 108890 and a8, a8, a9 -40001204: 0020c0 memw -40001207: a76d82 s32i a8, a13, 0x29c -4000120a: 0020c0 memw -4000120d: a82df2 l32i a15, a13, 0x2a0 -40001210: 10ff90 and a15, a15, a9 -40001213: 0020c0 memw -40001216: a86df2 s32i a15, a13, 0x2a0 -40001219: 0020c0 memw -4000121c: a92dc2 l32i a12, a13, 0x2a4 -4000121f: 10cc90 and a12, a12, a9 -40001222: 0020c0 memw -40001225: a96dc2 s32i a12, a13, 0x2a4 -40001228: 0020c0 memw -4000122b: aa2db2 l32i a11, a13, 0x2a8 -4000122e: 10bb90 and a11, a11, a9 -40001231: 0020c0 memw -40001234: aa6db2 s32i a11, a13, 0x2a8 -40001237: 0020c0 memw -4000123a: ab2d82 l32i a8, a13, 0x2ac -4000123d: 108890 and a8, a8, a9 -40001240: 0020c0 memw -40001243: ab6d82 s32i a8, a13, 0x2ac -40001246: 950c movi.n a5, 9 -40001248: b40c movi.n a4, 11 -4000124a: 8c2c movi.n a12, 40 -4000124c: eb2c movi.n a11, 46 -4000124e: 0020c0 memw -40001251: 8e22f2 l32i a15, a2, 0x238 -40001254: 020fc7 bnone a15, a12, 4000125a <_l_strap_0x0xxx> -40001257: 006a86 j 40001405 <_l_strap_NxNxxx> - -4000125a <_l_strap_0x0xxx>: -4000125a: 0020c0 memw -4000125d: 9d2d82 l32i a8, a13, 0x274 -40001260: 1088e0 and a8, a8, a14 -40001263: 0020c0 memw -40001266: 9d6d82 s32i a8, a13, 0x274 - -40001269 <_l_strap_init_uart0>: -40001269: 020da5 call8 40003344 <_X_uart_attach> -4000126c: 00a0a2 movi a10, 0 -4000126f: 022c65 call8 40003534 <_X_uart_init> -40001272: 015125 call8 40002784 <_X_ets_install_uart_printf> -40001275: ba2c movi.n a10, 43 -40001277: 0020c0 memw -4000127a: 8e2292 l32i a9, a2, 0x238 -4000127d: 1099a0 and a9, a9, a10 -40001280: fec992 addi a9, a9, -2 -40001283: 25f916 beqz a9, 400014e6 <_l_strap_0x0x10> -40001286: 0020c0 memw -40001289: 8e22b2 l32i a11, a2, 0x238 -4000128c: 54b0b0 extui a11, a11, 0, 6 -4000128f: c0bb40 sub a11, a11, a4 -40001292: 233b16 beqz a11, 400014c9 <_l_strap_0x0x11_loader> -40001295: 0020c0 memw -40001298: 8e22c2 l32i a12, a2, 0x238 -4000129b: 10cca0 and a12, a12, a10 -4000129e: fdccc2 addi a12, a12, -3 -400012a1: 224c16 beqz a12, 400014c9 <_l_strap_0x0x11_loader> -400012a4: 0020c0 memw -400012a7: 8e22d2 l32i a13, a2, 0x238 -400012aa: 340da7 bnone a13, a10, 400012e2 <_l_strap_0x0x00> -400012ad: 0020c0 memw -400012b0: 8e22e2 l32i a14, a2, 0x238 -400012b3: 54e0e0 extui a14, a14, 0, 6 -400012b6: c0ee50 sub a14, a14, a5 -400012b9: 217e16 beqz a14, 400014d4 <_l_strap_0x0x01> -400012bc: 0020c0 memw -400012bf: 8e22f2 l32i a15, a2, 0x238 -400012c2: 10ffa0 and a15, a15, a10 -400012c5: ff0b addi.n a15, a15, -1 -400012c7: 209f16 beqz a15, 400014d4 <_l_strap_0x0x01> -400012ca: 0020c0 memw -400012cd: 8e2282 l32i a8, a2, 0x238 -400012d0: 548080 extui a8, a8, 0, 6 -400012d3: 139866 bnei a8, 10, 400012ea <_l_boot> -400012d6: 04a0a2 movi a10, 4 -400012d9: 03e965 call8 40005170 <_X_sip_init_attach> -400012dc: 000286 j 400012ea <_l_boot> -400012df: 000000 ill - -400012e2 <_l_strap_0x0x00>: -400012e2: 0a0c movi.n a10, 0 -400012e4: 201110 or a1, a1, a1 -400012e7: 03e8a5 call8 40005170 <_X_sip_init_attach> - -400012ea <_l_boot>: -400012ea: 20c330 or a12, a3, a3 -400012ed: ff94b1 l32r a11, 40001140 <_s_fw_build> -400012f0: ff95a1 l32r a10, 40001144 <_s_boot_banner> -400012f3: 0020c0 memw -400012f6: 8e22d2 l32i a13, a2, 0x238 -400012f9: 54d0d0 extui a13, a13, 0, 6 -400012fc: 015065 call8 40002804 <ets_printf> -400012ff: 009ea5 call8 40001ce8 <_X_print_mem_banner> -40001302: 0da0a2 movi a10, 13 -40001305: ff8251 l32r a5, 40001110 <_c_0x3fffda30> -40001308: 0233f6 bgeui a3, 3, 4000130e <_l_boot+0x24> -4000130b: 033356 bnez a3, 40001342 <_l_rst_cause_12> -4000130e: 0263f6 bgeui a3, 6, 40001314 <_l_boot+0x2a> -40001311: 2133f6 bgeui a3, 3, 40001336 <_l_rst_cause_345> -40001314: ae0c movi.n a14, 10 -40001316: 023e37 bltu a14, a3, 4000131c <_l_boot+0x32> -40001319: 1973f6 bgeui a3, 7, 40001336 <_l_rst_cause_345> -4000131c: 023a37 bltu a10, a3, 40001322 <_l_boot+0x38> -4000131f: 24b347 bgeu a3, a4, 40001347 <_l_rst_cause_12+0x5> -40001322: 4f1c movi.n a15, 20 -40001324: 0e13f7 beq a3, a15, 40001336 <_l_rst_cause_345> -40001327: ff88a1 l32r a10, 40001148 <_s_pct_s_pct_u> -4000132a: ff88b1 l32r a11, 4000114c <_s_ets_main_c> -4000132d: 31a1c2 movi a12, 0x131 -40001330: 014d25 call8 40002804 <ets_printf> -40001333: ffff06 j 40001333 <_l_boot+0x49> - -40001336 <_l_rst_cause_345>: -40001336: 05ad mov.n a10, a5 -40001338: 03bd mov.n a11, a3 -4000133a: 0160e5 call8 40002948 <_XX_unk2948> -4000133d: 0588 l32i.n a8, a5, 0 -4000133f: 11b856 bnez a8, 4000145e <_l_strap_0010xx+0x12> - -40001342 <_l_rst_cause_12>: -40001342: 05ad mov.n a10, a5 -40001344: 001f65 call8 4000153c <_XX_unk153c> -40001347: 071347 beq a3, a4, 40001352 <_l_rst_cause_12+0x10> -4000134a: 04a326 beqi a3, 12, 40001352 <_l_rst_cause_12+0x10> -4000134d: d90c movi.n a9, 13 -4000134f: 4d9397 bne a3, a9, 400013a0 <_l_rst_cause_12+0x5e> -40001352: 1b2c movi.n a11, 33 -40001354: 0020c0 memw -40001357: 8e22a2 l32i a10, a2, 0x238 -4000135a: 02cab7 bnall a10, a11, 40001360 <_l_rst_cause_12+0x1e> -4000135d: 0058c6 j 400014c4 <_l_strap_001000_0x110x+0x14> -40001360: 0020c0 memw -40001363: 8e22c2 l32i a12, a2, 0x238 -40001366: 54c0c0 extui a12, a12, 0, 6 -40001369: c0cc70 sub a12, a12, a7 -4000136c: 154c16 beqz a12, 400014c4 <_l_strap_001000_0x110x+0x14> -4000136f: 0020c0 memw -40001372: 8e22d2 l32i a13, a2, 0x238 -40001375: 54d0d0 extui a13, a13, 0, 6 -40001378: e6cdd2 addi a13, a13, -26 -4000137b: 145d16 beqz a13, 400014c4 <_l_strap_001000_0x110x+0x14> -4000137e: 1b0c movi.n a11, 1 -40001380: 00a032 movi a3, 0 -40001383: 20a330 or a10, a3, a3 -40001386: 0020c0 memw -40001389: 8e22d2 l32i a13, a2, 0x238 -4000138c: 01a0c2 movi a12, 1 -4000138f: 10dd60 and a13, a13, a6 -40001392: e0cdd2 addi a13, a13, -32 -40001395: 83acd0 moveqz a10, a12, a13 -40001398: 74a0a0 extui a10, a10, 0, 8 -4000139b: 02fd65 call8 40004370 <_X_spi_flash_attach> -4000139e: 0539 s32i.n a3, a5, 0 -400013a0: 0020c0 memw -400013a3: 8e22e2 l32i a14, a2, 0x238 -400013a6: 46ee57 bbsi a14, 5, 400013f0 <_l_rst_cause_12+0xae> -400013a9: 0020c0 memw -400013ac: 8e22f2 l32i a15, a2, 0x238 -400013af: 54f0f0 extui a15, a15, 0, 6 -400013b2: 3a1f77 beq a15, a7, 400013f0 <_l_rst_cause_12+0xae> -400013b5: 0020c0 memw -400013b8: 8e2282 l32i a8, a2, 0x238 -400013bb: 1aa092 movi a9, 26 -400013be: 548080 extui a8, a8, 0, 6 -400013c1: 2b1897 beq a8, a9, 400013f0 <_l_rst_cause_12+0xae> -400013c4: 0020c0 memw -400013c7: 8e2292 l32i a9, a2, 0x238 -400013ca: 549090 extui a9, a9, 0, 6 -400013cd: 1a8926 beqi a9, 8, 400013eb <_l_rst_cause_12+0xa9> -400013d0: 0020c0 memw -400013d3: 8e22a2 l32i a10, a2, 0x238 -400013d6: 2ea0b2 movi a11, 46 -400013d9: 10aab0 and a10, a10, a11 -400013dc: 0baa26 beqi a10, 12, 400013eb <_l_rst_cause_12+0xa9> -400013df: 0020c0 memw -400013e2: 8e22c2 l32i a12, a2, 0x238 -400013e5: 28a0d2 movi a13, 40 -400013e8: 728cd7 bany a12, a13, 4000145e <_l_strap_0010xx+0x12> -400013eb: 05e8 l32i.n a14, a5, 0 -400013ed: 06de56 bnez a14, 4000145e <_l_strap_0010xx+0x12> -400013f0: 002f65 call8 400016e8 <_XX_unk153c+0x1ac> -400013f3: 067a16 beqz a10, 4000145e <_l_strap_0010xx+0x12> -400013f6: ff54a1 l32r a10, 40001148 <_s_pct_s_pct_u> -400013f9: ff54b1 l32r a11, 4000114c <_s_ets_main_c> -400013fc: 2ca1c2 movi a12, 0x12c -400013ff: 014065 call8 40002804 <ets_printf> -40001402: ffff06 j 40001402 <_l_rst_cause_12+0xc0> - -40001405 <_l_strap_NxNxxx>: -40001405: 0020c0 memw -40001408: 8e22f2 l32i a15, a2, 0x238 -4000140b: f03d nop.n -4000140d: 54f0f0 extui a15, a15, 0, 6 -40001410: f8cff2 addi a15, a15, -8 -40001413: 099f16 beqz a15, 400014b0 <_l_strap_001000_0x110x> -40001416: 0020c0 memw -40001419: 8e2282 l32i a8, a2, 0x238 -4000141c: 1088b0 and a8, a8, a11 -4000141f: f4c882 addi a8, a8, -12 -40001422: 08a816 beqz a8, 400014b0 <_l_strap_001000_0x110x> -40001425: 0020c0 memw -40001428: 8e2292 l32i a9, a2, 0x238 -4000142b: 549090 extui a9, a9, 0, 6 -4000142e: 1a1947 beq a9, a4, 4000144c <_l_strap_0010xx> -40001431: 0020c0 memw -40001434: 8e22b2 l32i a11, a2, 0x238 -40001437: 54b0b0 extui a11, a11, 0, 6 -4000143a: 0e9b26 beqi a11, 10, 4000144c <_l_strap_0010xx> -4000143d: 0020c0 memw -40001440: 8e22c2 l32i a12, a2, 0x238 -40001443: 54c0c0 extui a12, a12, 0, 6 -40001446: c0cc50 sub a12, a12, a5 -40001449: e1cc56 bnez a12, 40001269 <_l_strap_init_uart0> - -4000144c <_l_strap_0010xx>: -4000144c: 0020c0 memw -4000144f: 9d2df2 l32i a15, a13, 0x274 -40001452: 10ffe0 and a15, a15, a14 -40001455: 0020c0 memw -40001458: 9d6df2 s32i a15, a13, 0x274 -4000145b: ff8286 j 40001269 <_l_strap_init_uart0> -4000145e: 09a0a2 movi a10, 9 -40001461: ff3bb1 l32r a11, 40001150 <_s_ets_main_c+0x4> -40001464: ff3765 call8 400007dc <_X_start+0x30> -40001467: ff3b21 l32r a2, 40001154 <_s_ets_main_c+0x8> -4000146a: 0a0c movi.n a10, 0 -4000146c: 02bd mov.n a11, a2 -4000146e: ff36e5 call8 400007dc <_X_start+0x30> -40001471: 2a0c movi.n a10, 2 -40001473: 02bd mov.n a11, a2 -40001475: ff3665 call8 400007dc <_X_start+0x30> -40001478: 3a0c movi.n a10, 3 -4000147a: 02bd mov.n a11, a2 -4000147c: ff35e5 call8 400007dc <_X_start+0x30> -4000147f: ca1c movi.n a10, 28 -40001481: 02bd mov.n a11, a2 -40001483: ff35a5 call8 400007dc <_X_start+0x30> -40001486: da1c movi.n a10, 29 -40001488: 02bd mov.n a11, a2 -4000148a: ff3525 call8 400007dc <_X_start+0x30> -4000148d: 02bd mov.n a11, a2 -4000148f: 08a0a2 movi a10, 8 -40001492: ff34a5 call8 400007dc <_X_start+0x30> -40001495: 05a8 l32i.n a10, a5, 0 -40001497: 1a8c beqz.n a10, 4000149c <_l_strap_0010xx+0x50> -40001499: 000ae0 callx8 a10 -4000149c: ff2fa1 l32r a10, 40001158 <_s_ets_main_c+0xc> -4000149f: 013665 call8 40002804 <ets_printf> -400014a2: 0125a2 l32i a10, a5, 4 -400014a5: 033a16 beqz a10, 400014dc <_l_strap_0x0x01+0x8> -400014a8: 000ae0 callx8 a10 -400014ab: 00a022 movi a2, 0 -400014ae: f01d retw.n - -400014b0 <_l_strap_001000_0x110x>: -400014b0: c97c movi.n a9, -4 -400014b2: 0020c0 memw -400014b5: 9d2d82 l32i a8, a13, 0x274 -400014b8: 108890 and a8, a8, a9 -400014bb: 0020c0 memw -400014be: 9d6d82 s32i a8, a13, 0x274 -400014c1: ff6906 j 40001269 <_l_strap_init_uart0> -400014c4: 0b0c movi.n a11, 0 -400014c6: ffad86 j 40001380 <_l_rst_cause_12+0x3e> - -400014c9 <_l_strap_0x0x11_loader>: -400014c9: 3a0c movi.n a10, 3 -400014cb: 03ca65 call8 40005170 <_X_sip_init_attach> -400014ce: ff8606 j 400012ea <_l_boot> -400014d1: 000000 ill - -400014d4 <_l_strap_0x0x01>: -400014d4: 1a0c movi.n a10, 1 -400014d6: 03c9a5 call8 40005170 <_X_sip_init_attach> -400014d9: ff8346 j 400012ea <_l_boot> -400014dc: ffaae5 call8 40000f8c <_XX_unk0f84+0x8> -400014df: 020c movi.n a2, 0 -400014e1: f01d retw.n -400014e3: 000000 ill - -400014e6 <_l_strap_0x0x10>: -400014e6: 2a0c movi.n a10, 2 -400014e8: 03c865 call8 40005170 <_X_sip_init_attach> -400014eb: ff7ec6 j 400012ea <_l_boot> - ... - -400014f0 <_c_0xffff8fff>: -400014f0: ff .byte 0xff -400014f1: 8f .byte 0x8f -400014f2: ff .byte 0xff -400014f3: ff .byte 0xff - -400014f4 <_c_0x60008e00>: -400014f4: 008e00 any4 b0, b12:b13:b14:b15 -400014f7: 413660 srli a3, a6, 6 -400014fa: fdb100 excw -400014fd: ff .byte 0xff -400014fe: fffd91 l32r a9, 400014f4 <_c_0x60008e00> -40001501: 0020c0 memw -40001504: 9a29a2 l32i a10, a9, 0x268 -40001507: 10aab0 and a10, a10, a11 -4000150a: 0020c0 memw -4000150d: 9a69a2 s32i a10, a9, 0x268 -40001510: 0020c0 memw -40001513: 9a2982 l32i a8, a9, 0x268 -40001516: 0020c0 memw -40001519: 9a6982 s32i a8, a9, 0x268 -4000151c: 000106 j 40001524 <_c_0x60008e00+0x30> -4000151f: 000000 ill -40001522: 250070 extui a0, a7, 16, 3 -40001525: 6603c3 excw -40001528: f62a add.n a15, a6, a2 -4000152a: f01d retw.n - -4000152c <_s_waiting_for_host>: -4000152c: caac beqz.n a10, 4000155c <_XX_unk153c+0x20> -4000152e: ff .byte 0xff -4000152f: 3f .byte 0x3f -40001530: ffa000 excw -40001533: 3f .byte 0x3f -40001534: 002000 isync -40001537: 000000 ill -4000153a: 364004 excw - -4000153c <_XX_unk153c>: -4000153c: 004136 entry a1, 32 -4000153f: fefc31 l32r a3, 40001130 <_c_0x60003e00> -40001542: 1d0c movi.n a13, 1 -40001544: 8b1c movi.n a11, 24 -40001546: ac1c movi.n a12, 26 -40001548: 040c movi.n a4, 0 -4000154a: 852c movi.n a5, 40 -4000154c: 04ad mov.n a10, a4 -4000154e: 0020c0 memw -40001551: 8e2392 l32i a9, a3, 0x238 -40001554: 109950 and a9, a9, a5 -40001557: 83ad90 moveqz a10, a13, a9 -4000155a: 0020c0 memw -4000155d: 8e2382 l32i a8, a3, 0x238 -40001560: 048580 extui a8, a8, 5, 1 -40001563: 0ad856 bnez a8, 40001614 <_XX_unk153c+0xd8> -40001566: 0020c0 memw -40001569: 8e23e2 l32i a14, a3, 0x238 -4000156c: 54e0e0 extui a14, a14, 0, 6 -4000156f: c0eeb0 sub a14, a14, a11 -40001572: 09ee16 beqz a14, 40001614 <_XX_unk153c+0xd8> -40001575: 0020c0 memw -40001578: 8e23f2 l32i a15, a3, 0x238 -4000157b: 54f0f0 extui a15, a15, 0, 6 -4000157e: c0ffc0 sub a15, a15, a12 -40001581: 08ff16 beqz a15, 40001614 <_XX_unk153c+0xd8> -40001584: 0020c0 memw -40001587: 8e2382 l32i a8, a3, 0x238 -4000158a: 548080 extui a8, a8, 0, 6 -4000158d: e5c882 addi a8, a8, -27 -40001590: 124816 beqz a8, 400016b8 <_XX_unk153c+0x17c> -40001593: 0020c0 memw -40001596: 8e2392 l32i a9, a3, 0x238 -40001599: ec2c movi.n a12, 46 -4000159b: 549090 extui a9, a9, 0, 6 -4000159e: f8c992 addi a9, a9, -8 -400015a1: 0f5916 beqz a9, 4000169a <_XX_unk153c+0x15e> -400015a4: 0020c0 memw -400015a7: 8e23b2 l32i a11, a3, 0x238 -400015aa: 040c movi.n a4, 0 -400015ac: 10bbc0 and a11, a11, a12 -400015af: f4cbb2 addi a11, a11, -12 -400015b2: 0e4b16 beqz a11, 4000169a <_XX_unk153c+0x15e> -400015b5: 0ba0e2 movi a14, 11 -400015b8: 0020c0 memw -400015bb: 8e23d2 l32i a13, a3, 0x238 -400015be: 54d0d0 extui a13, a13, 0, 6 -400015c1: 1a1de7 beq a13, a14, 400015df <_XX_unk153c+0xa3> -400015c4: 0020c0 memw -400015c7: 8e23e2 l32i a14, a3, 0x238 -400015ca: 09a082 movi a8, 9 -400015cd: 54e0e0 extui a14, a14, 0, 6 -400015d0: 0b9e26 beqi a14, 10, 400015df <_XX_unk153c+0xa3> -400015d3: 0020c0 memw -400015d6: 8e23f2 l32i a15, a3, 0x238 -400015d9: 54f0f0 extui a15, a15, 0, 6 -400015dc: 089f87 bne a15, a8, 400015e8 <_XX_unk153c+0xac> -400015df: ffd3a1 l32r a10, 4000152c <_s_waiting_for_host> -400015e2: 012225 call8 40002804 <ets_printf> -400015e5: 01a042 movi a4, 1 -400015e8: 0020c0 memw -400015eb: 8e2382 l32i a8, a3, 0x238 -400015ee: 178857 bany a8, a5, 40001609 <_XX_unk153c+0xcd> -400015f1: 01a0a2 movi a10, 1 -400015f4: 01f3e5 call8 40003534 <_X_uart_init> -400015f7: 0a0c movi.n a10, 0 -400015f9: 020a25 call8 4000369c <_X_uart_wait_tx_empty> -400015fc: 0a2c movi.n a10, 32 -400015fe: ffb065 call8 40001104 <_X_ets_isr_unmask> -40001601: 06b416 beqz a4, 40001670 <_XX_unk153c+0x134> -40001604: 0a2c movi.n a10, 32 -40001606: ffaf25 call8 400010f8 <_X_ets_isr_mask> -40001609: 532426 beqi a4, 2, 40001660 <_XX_unk153c+0x124> -4000160c: ffeea5 call8 400014f8 <_c_0x60008e00+0x4> -4000160f: f01d retw.n -40001611: 000000 ill -40001614: 1a2c movi.n a10, 33 -40001616: 0020c0 memw -40001619: 8e2392 l32i a9, a3, 0x238 -4000161c: 3949a7 ball a9, a10, 40001659 <_XX_unk153c+0x11d> -4000161f: 0020c0 memw -40001622: 8e23e2 l32i a14, a3, 0x238 -40001625: 54e0e0 extui a14, a14, 0, 6 -40001628: 2d1eb7 beq a14, a11, 40001659 <_XX_unk153c+0x11d> -4000162b: 0020c0 memw -4000162e: 8e23f2 l32i a15, a3, 0x238 -40001631: 1b0c movi.n a11, 1 -40001633: 54f0f0 extui a15, a15, 0, 6 -40001636: 1f1fc7 beq a15, a12, 40001659 <_XX_unk153c+0x11d> -40001639: 30a0e2 movi a14, 48 -4000163c: 20a440 or a10, a4, a4 -4000163f: 0020c0 memw -40001642: 8e23c2 l32i a12, a3, 0x238 -40001645: 10cce0 and a12, a12, a14 -40001648: e0ccc2 addi a12, a12, -32 -4000164b: 83adc0 moveqz a10, a13, a12 -4000164e: 74a0a0 extui a10, a10, 0, 8 -40001651: 02d1e5 call8 40004370 <_X_spi_flash_attach> -40001654: 006242 s32i a4, a2, 0 -40001657: f01d retw.n -40001659: 0b0c movi.n a11, 0 -4000165b: fff686 j 40001639 <_XX_unk153c+0xfd> -4000165e: a10000 sll a0, a0 -40001661: b1ffb4 excw -40001664: cdffb4 excw -40001667: 902502 l32i a0, a5, 0x240 -4000166a: f01d01 l32r a0, 3fffd6e0 <_start-0x2920> -4000166d: 000000 ill -40001670: 00a0a2 movi a10, 0 -40001673: 017e65 call8 40002e58 <_XX_unk2e58> -40001676: 7440a0 extui a4, a10, 0, 8 -40001679: f87456 bnez a4, 40001604 <_XX_unk153c+0xc8> -4000167c: 1a0c movi.n a10, 1 -4000167e: 017da5 call8 40002e58 <_XX_unk2e58> -40001681: 7440a0 extui a4, a10, 0, 8 -40001684: f7c456 bnez a4, 40001604 <_XX_unk153c+0xc8> -40001687: 03ad25 call8 40005158 <_XX_unk500c+0x14c> -4000168a: feca82 addi a8, a10, -2 -4000168d: 1f0c movi.n a15, 1 -4000168f: 040c movi.n a4, 0 -40001691: 834f80 moveqz a4, a15, a8 -40001694: fd8416 beqz a4, 40001670 <_XX_unk153c+0x134> -40001697: ffda46 j 40001604 <_XX_unk153c+0xc8> -4000169a: 00a0b2 movi a11, 0 -4000169d: 7440a0 extui a4, a10, 0, 8 -400016a0: 20a440 or a10, a4, a4 -400016a3: 01daa5 call8 4000344c <_c_0x000fffff+0x4> -400016a6: 20baa0 or a11, a10, a10 -400016a9: 04ad mov.n a10, a4 -400016ab: f4b0b0 extui a11, a11, 0, 16 -400016ae: 01e3a5 call8 400034e8 <uart_div_modify> -400016b1: 240c movi.n a4, 2 -400016b3: ffbf86 j 400015b5 <_XX_unk153c+0x79> -400016b6: c10000 mul16u a0, a0, a0 -400016b9: c9ffa0 excw -400016bc: f01d02 l16ui a0, a13, 0x1e0 -400016bf: cae400 depbits a0, a4, 12, 15 -400016c2: ff .byte 0xff -400016c3: 3f .byte 0x3f -400016c4: cb18 l32i.n a1, a11, 48 -400016c6: ff .byte 0xff -400016c7: 3f .byte 0x3f -400016c8: ffcb24 excw -400016cb: 3f .byte 0x3f -400016cc: ffcb04 excw -400016cf: 3f .byte 0x3f -400016d0: ffc880 excw -400016d3: 3f .byte 0x3f -400016d4: ffcb50 excw -400016d7: 3f .byte 0x3f -400016d8: ffcac0 excw -400016db: 3f .byte 0x3f -400016dc: ffcad0 excw -400016df: 3f .byte 0x3f -400016e0: ffcb34 excw -400016e3: 3f .byte 0x3f -400016e4: ffcb44 excw -400016e7: 3f .byte 0x3f -400016e8: 00e136 entry a1, 112 -400016eb: 1a2c movi.n a10, 33 -400016ed: fe9081 l32r a8, 40001130 <_c_0x60003e00> -400016f0: 0020c0 memw -400016f3: 8e2892 l32i a9, a8, 0x238 -400016f6: 4249a7 ball a9, a10, 4000173c <_XX_unk153c+0x200> -400016f9: 8c1c movi.n a12, 24 -400016fb: 0020c0 memw -400016fe: 8e28b2 l32i a11, a8, 0x238 -40001701: 54b0b0 extui a11, a11, 0, 6 -40001704: 341bc7 beq a11, a12, 4000173c <_XX_unk153c+0x200> -40001707: 1aa0d2 movi a13, 26 -4000170a: 0020c0 memw -4000170d: 8e28c2 l32i a12, a8, 0x238 -40001710: 54c0c0 extui a12, a12, 0, 6 -40001713: 251cd7 beq a12, a13, 4000173c <_XX_unk153c+0x200> -40001716: 01a022 movi a2, 1 -40001719: 00a0a2 movi a10, 0 -4000171c: 20b110 or a11, a1, a1 -4000171f: 10a0c2 movi a12, 16 -40001722: 031765 call8 40004898 <SPIRead> -40001725: facc bnez.n a10, 40001738 <_XX_unk153c+0x1fc> -40001727: 010162 l8ui a6, a1, 1 -4000172a: 030132 l8ui a3, a1, 3 -4000172d: 11c8 l32i.n a12, a1, 4 -4000172f: 0001d2 l8ui a13, a1, 0 -40001732: e9a0e2 movi a14, 233 -40001735: 081de7 beq a13, a14, 40001741 <_XX_unk153c+0x205> -40001738: 120c movi.n a2, 1 -4000173a: f01d retw.n -4000173c: 020c movi.n a2, 0 -4000173e: fff5c6 j 40001719 <_XX_unk153c+0x1dd> -40001741: 20b220 or a11, a2, a2 -40001744: 0201a2 l8ui a10, a1, 2 -40001747: 0e61c2 s32i a12, a1, 56 -4000174a: 02dee5 call8 40004538 <_X_SPIReadModeConfig> -4000174d: 348030 extui a8, a3, 0, 4 -40001750: 0fa032 movi a3, 15 -40001753: 0738f6 bgeui a8, 3, 4000175e <_XX_unk153c+0x222> -40001756: a82b addi.n a10, a8, 2 -40001758: 74a0a0 extui a10, a10, 0, 8 -4000175b: 000046 j 40001760 <_XX_unk153c+0x224> -4000175e: 1a0c movi.n a10, 1 -40001760: 02f165 call8 40004678 <_X_SPIReadModeConfig+0x140> -40001763: 0c0182 l8ui a8, a1, 12 -40001766: 0e0192 l8ui a9, a1, 14 -40001769: 0f0152 l8ui a5, a1, 15 -4000176c: 0b0122 l8ui a2, a1, 11 -4000176f: 115580 slli a5, a5, 8 -40001772: 112280 slli a2, a2, 8 -40001775: 205590 or a5, a5, a9 -40001778: 0d0192 l8ui a9, a1, 13 -4000177b: 115580 slli a5, a5, 8 -4000177e: 205590 or a5, a5, a9 -40001781: 115580 slli a5, a5, 8 -40001784: 0a0192 l8ui a9, a1, 10 -40001787: 205580 or a5, a5, a8 -4000178a: 080182 l8ui a8, a1, 8 -4000178d: 202290 or a2, a2, a9 -40001790: 090192 l8ui a9, a1, 9 -40001793: 112280 slli a2, a2, 8 -40001796: 202290 or a2, a2, a9 -40001799: 112280 slli a2, a2, 8 -4000179c: 202280 or a2, a2, a8 -4000179f: 3c1296 bltz a2, 40001b64 <_XX_unk153c+0x628> -400017a2: 031c movi.n a3, 16 -400017a4: 20a330 or a10, a3, a3 -400017a7: 20b110 or a11, a1, a1 -400017aa: 10a0c2 movi a12, 16 -400017ad: 030ea5 call8 40004898 <SPIRead> -400017b0: f84a56 bnez a10, 40001738 <_XX_unk153c+0x1fc> -400017b3: 10c332 addi a3, a3, 16 -400017b6: 278616 beqz a6, 40001a32 <_XX_unk153c+0x4f6> -400017b9: f119 s32i.n a1, a1, 60 -400017bb: efa042 movi a4, 239 -400017be: 017d mov.n a7, a1 -400017c0: c159 s32i.n a5, a1, 48 -400017c2: 6169 s32i.n a6, a1, 24 -400017c4: 02bd mov.n a11, a2 -400017c6: 0d0c movi.n a13, 0 -400017c8: d1d9 s32i.n a13, a1, 52 -400017ca: 0b2d mov.n a2, a11 -400017cc: ffbda1 l32r a10, 400016c0 <_XX_unk153c+0x184> -400017cf: c1c8 l32i.n a12, a1, 48 -400017d1: d188 l32i.n a8, a1, 52 -400017d3: 051c movi.n a5, 16 -400017d5: c05580 sub a5, a5, a8 -400017d8: 745050 extui a5, a5, 0, 8 -400017db: 05dd mov.n a13, a5 -400017dd: 010265 call8 40002804 <ets_printf> -400017e0: 1a0c movi.n a10, 1 -400017e2: c198 l32i.n a9, a1, 48 -400017e4: a1a9 s32i.n a10, a1, 40 -400017e6: 03b957 bgeu a9, a5, 400017ed <_XX_unk153c+0x2b1> -400017e9: 0b0c movi.n a11, 0 -400017eb: a1b9 s32i.n a11, a1, 40 -400017ed: 0f0c movi.n a15, 0 -400017ef: d1e8 l32i.n a14, a1, 52 -400017f1: a1c8 l32i.n a12, a1, 40 -400017f3: 81c9 s32i.n a12, a1, 32 -400017f5: 93efc0 movnez a14, a15, a12 -400017f8: 91e9 s32i.n a14, a1, 36 -400017fa: 3b2c16 beqz a12, 40001bb0 <_XX_unk153c+0x674> -400017fd: 380c movi.n a8, 3 -400017ff: 028857 bany a8, a5, 40001805 <_XX_unk153c+0x2c9> -40001802: 008d86 j 40001a3c <_XX_unk153c+0x500> -40001805: 0215e6 bgei a5, 1, 4000180b <_XX_unk153c+0x2cf> -40001808: 002206 j 40001894 <_XX_unk153c+0x358> -4000180b: 249050 extui a9, a5, 0, 3 -4000180e: 139976 loopnez a9, 40001825 <_XX_unk153c+0x2e9> -40001811: f188 l32i.n a8, a1, 60 -40001813: 000892 l8ui a9, a8, 0 -40001816: 004292 s8i a9, a2, 0 -40001819: 881b addi.n a8, a8, 1 -4000181b: f189 s32i.n a8, a1, 60 -4000181d: 221b addi.n a2, a2, 1 -4000181f: 304940 xor a4, a9, a4 -40001822: 744040 extui a4, a4, 0, 8 -40001825: f188 l32i.n a8, a1, 60 -40001827: 419350 srli a9, a5, 3 -4000182a: 639976 loopnez a9, 40001891 <_XX_unk153c+0x355> -4000182d: 000892 l8ui a9, a8, 0 -40001830: 004292 s8i a9, a2, 0 -40001833: 309940 xor a9, a9, a4 -40001836: 749090 extui a9, a9, 0, 8 -40001839: 010842 l8ui a4, a8, 1 -4000183c: 014242 s8i a4, a2, 1 -4000183f: 309490 xor a9, a4, a9 -40001842: 749090 extui a9, a9, 0, 8 -40001845: 020842 l8ui a4, a8, 2 -40001848: 024242 s8i a4, a2, 2 -4000184b: 309490 xor a9, a4, a9 -4000184e: 749090 extui a9, a9, 0, 8 -40001851: 030842 l8ui a4, a8, 3 -40001854: 034242 s8i a4, a2, 3 -40001857: 309490 xor a9, a4, a9 -4000185a: 749090 extui a9, a9, 0, 8 -4000185d: 040842 l8ui a4, a8, 4 -40001860: 044242 s8i a4, a2, 4 -40001863: 309490 xor a9, a4, a9 -40001866: 749090 extui a9, a9, 0, 8 -40001869: 050842 l8ui a4, a8, 5 -4000186c: 054242 s8i a4, a2, 5 -4000186f: 309490 xor a9, a4, a9 -40001872: 749090 extui a9, a9, 0, 8 -40001875: 060842 l8ui a4, a8, 6 -40001878: 064242 s8i a4, a2, 6 -4000187b: 309490 xor a9, a4, a9 -4000187e: 749090 extui a9, a9, 0, 8 -40001881: 070842 l8ui a4, a8, 7 -40001884: 074242 s8i a4, a2, 7 -40001887: 309490 xor a9, a4, a9 -4000188a: 888b addi.n a8, a8, 8 -4000188c: 228b addi.n a2, a2, 8 -4000188e: 744090 extui a4, a9, 0, 8 -40001891: 0f6182 s32i a8, a1, 60 -40001894: c168 l32i.n a6, a1, 48 -40001896: a1a8 l32i.n a10, a1, 40 -40001898: c06650 sub a6, a6, a5 -4000189b: 416460 srli a6, a6, 4 -4000189e: 35ea16 beqz a10, 40001c00 <_XX_unk153c+0x6c4> -400018a1: d198 l32i.n a9, a1, 52 -400018a3: c188 l32i.n a8, a1, 48 -400018a5: 889a add.n a8, a8, a9 -400018a7: f0c882 addi a8, a8, -16 -400018aa: 348080 extui a8, a8, 0, 4 -400018ad: 076182 s32i a8, a1, 28 -400018b0: 91a8 l32i.n a10, a1, 36 -400018b2: 74a0a0 extui a10, a10, 0, 8 -400018b5: d1a9 s32i.n a10, a1, 52 -400018b7: 3e16a6 blti a6, 1, 400018f9 <_XX_unk153c+0x3bd> -400018ba: 050c movi.n a5, 0 -400018bc: 20a330 or a10, a3, a3 -400018bf: 20b110 or a11, a1, a1 -400018c2: 10a0c2 movi a12, 16 -400018c5: 02fd25 call8 40004898 <SPIRead> -400018c8: 1fca56 bnez a10, 40001ac8 <_XX_unk153c+0x58c> -400018cb: 080c movi.n a8, 0 -400018cd: 10c332 addi a3, a3, 16 -400018d0: 091c movi.n a9, 16 -400018d2: 10a976 loopgtz a9, 400018e6 <_XX_unk153c+0x3aa> -400018d5: 987a add.n a9, a8, a7 -400018d7: 01c882 addi a8, a8, 1 -400018da: 000992 l8ui a9, a9, 0 -400018dd: 748080 extui a8, a8, 0, 8 -400018e0: 309940 xor a9, a9, a4 -400018e3: 744090 extui a4, a9, 0, 8 -400018e6: 20a220 or a10, a2, a2 -400018e9: 20b110 or a11, a1, a1 -400018ec: 0c1c movi.n a12, 16 -400018ee: 050865 call8 40006974 <memcpy> -400018f1: 10c222 addi a2, a2, 16 -400018f4: 551b addi.n a5, a5, 1 -400018f6: c29567 bne a5, a6, 400018bc <_XX_unk153c+0x380> -400018f9: 0821b2 l32i a11, a1, 32 -400018fc: 011b16 beqz a11, 40001911 <_XX_unk153c+0x3d5> -400018ff: 20a330 or a10, a3, a3 -40001902: 01bd mov.n a11, a1 -40001904: 0c1c movi.n a12, 16 -40001906: 02f925 call8 40004898 <SPIRead> -40001909: 3afa56 bnez a10, 40001cbc <_XX_unk153c+0x780> -4000190c: 10c332 addi a3, a3, 16 -4000190f: f119 s32i.n a1, a1, 60 -40001911: 072152 l32i a5, a1, 28 -40001914: ff6ca1 l32r a10, 400016c4 <_XX_unk153c+0x188> -40001917: 745050 extui a5, a5, 0, 8 -4000191a: 20b550 or a11, a5, a5 -4000191d: 00ee65 call8 40002804 <ets_printf> -40001920: 03a082 movi a8, 3 -40001923: 028857 bany a8, a5, 40001929 <_XX_unk153c+0x3ed> -40001926: 006b86 j 40001ad8 <_XX_unk153c+0x59c> -40001929: 0215e6 bgei a5, 1, 4000192f <_XX_unk153c+0x3f3> -4000192c: 002206 j 400019b8 <_XX_unk153c+0x47c> -4000192f: 249050 extui a9, a5, 0, 3 -40001932: 139976 loopnez a9, 40001949 <_XX_unk153c+0x40d> -40001935: f188 l32i.n a8, a1, 60 -40001937: 000892 l8ui a9, a8, 0 -4000193a: 004292 s8i a9, a2, 0 -4000193d: 881b addi.n a8, a8, 1 -4000193f: f189 s32i.n a8, a1, 60 -40001941: 221b addi.n a2, a2, 1 -40001943: 304940 xor a4, a9, a4 -40001946: 744040 extui a4, a4, 0, 8 -40001949: f188 l32i.n a8, a1, 60 -4000194b: 419350 srli a9, a5, 3 -4000194e: 639976 loopnez a9, 400019b5 <_XX_unk153c+0x479> -40001951: 000892 l8ui a9, a8, 0 -40001954: 004292 s8i a9, a2, 0 -40001957: 309940 xor a9, a9, a4 -4000195a: 749090 extui a9, a9, 0, 8 -4000195d: 010842 l8ui a4, a8, 1 -40001960: 014242 s8i a4, a2, 1 -40001963: 309490 xor a9, a4, a9 -40001966: 749090 extui a9, a9, 0, 8 -40001969: 020842 l8ui a4, a8, 2 -4000196c: 024242 s8i a4, a2, 2 -4000196f: 309490 xor a9, a4, a9 -40001972: 749090 extui a9, a9, 0, 8 -40001975: 030842 l8ui a4, a8, 3 -40001978: 034242 s8i a4, a2, 3 -4000197b: 309490 xor a9, a4, a9 -4000197e: 749090 extui a9, a9, 0, 8 -40001981: 040842 l8ui a4, a8, 4 -40001984: 044242 s8i a4, a2, 4 -40001987: 309490 xor a9, a4, a9 -4000198a: 749090 extui a9, a9, 0, 8 -4000198d: 050842 l8ui a4, a8, 5 -40001990: 054242 s8i a4, a2, 5 -40001993: 309490 xor a9, a4, a9 -40001996: 749090 extui a9, a9, 0, 8 -40001999: 060842 l8ui a4, a8, 6 -4000199c: 064242 s8i a4, a2, 6 -4000199f: 309490 xor a9, a4, a9 -400019a2: 749090 extui a9, a9, 0, 8 -400019a5: 070842 l8ui a4, a8, 7 -400019a8: 074242 s8i a4, a2, 7 -400019ab: 309490 xor a9, a4, a9 -400019ae: 888b addi.n a8, a8, 8 -400019b0: 228b addi.n a2, a2, 8 -400019b2: 744090 extui a4, a9, 0, 8 -400019b5: 0f6182 s32i a8, a1, 60 -400019b8: ff44a1 l32r a10, 400016c8 <_XX_unk153c+0x18c> -400019bb: 04bd mov.n a11, a4 -400019bd: 00e465 call8 40002804 <ets_printf> -400019c0: 61a8 l32i.n a10, a1, 24 -400019c2: aa0b addi.n a10, a10, -1 -400019c4: 2d5a16 beqz a10, 40001c9d <_XX_unk153c+0x761> -400019c7: d128 l32i.n a2, a1, 52 -400019c9: 061c movi.n a6, 16 -400019cb: 252a add.n a2, a5, a2 -400019cd: c06620 sub a6, a6, a2 -400019d0: 746060 extui a6, a6, 0, 8 -400019d3: 0286f6 bgeui a6, 8, 400019d9 <_XX_unk153c+0x49d> -400019d6: 0078c6 j 40001bbd <_XX_unk153c+0x681> -400019d9: f158 l32i.n a5, a1, 60 -400019db: a28b addi.n a10, a2, 8 -400019dd: 74a0a0 extui a10, a10, 0, 8 -400019e0: d1a9 s32i.n a10, a1, 52 -400019e2: 040562 l8ui a6, a5, 4 -400019e5: 0005c2 l8ui a12, a5, 0 -400019e8: 050582 l8ui a8, a5, 5 -400019eb: 060592 l8ui a9, a5, 6 -400019ee: 0105d2 l8ui a13, a5, 1 -400019f1: 0305b2 l8ui a11, a5, 3 -400019f4: 0205e2 l8ui a14, a5, 2 -400019f7: 11bb80 slli a11, a11, 8 -400019fa: 20bbe0 or a11, a11, a14 -400019fd: 11bb80 slli a11, a11, 8 -40001a00: 20bbd0 or a11, a11, a13 -40001a03: 11bb80 slli a11, a11, 8 -40001a06: 070552 l8ui a5, a5, 7 -40001a09: 20bbc0 or a11, a11, a12 -40001a0c: 115580 slli a5, a5, 8 -40001a0f: 205590 or a5, a5, a9 -40001a12: 115580 slli a5, a5, 8 -40001a15: 205580 or a5, a5, a8 -40001a18: 115580 slli a5, a5, 8 -40001a1b: 205560 or a5, a5, a6 -40001a1e: c159 s32i.n a5, a1, 48 -40001a20: 6188 l32i.n a8, a1, 24 -40001a22: d198 l32i.n a9, a1, 52 -40001a24: a80b addi.n a10, a8, -1 -40001a26: 997a add.n a9, a9, a7 -40001a28: f199 s32i.n a9, a1, 60 -40001a2a: 7480a0 extui a8, a10, 0, 8 -40001a2d: 6189 s32i.n a8, a1, 24 -40001a2f: d97856 bnez a8, 400017ca <_XX_unk153c+0x28e> -40001a32: e1a8 l32i.n a10, a1, 56 -40001a34: ff6de5 call8 40001114 <_XX_set_0x3fffda30_0> -40001a37: 020c movi.n a2, 0 -40001a39: f01d retw.n -40001a3b: 451600 extui a1, a0, 22, 5 -40001a3e: 02ade5 call8 4000451c <Cache_Read_Disable+0xd0> -40001a41: 41d250 srli a13, a5, 2 -40001a44: 7a1da6 blti a13, 1, 40001ac2 <_XX_unk153c+0x586> -40001a47: 276527 bbci a5, 2, 40001a72 <_XX_unk153c+0x536> -40001a4a: f198 l32i.n a9, a1, 60 -40001a4c: a24b addi.n a10, a2, 4 -40001a4e: 0009c2 l8ui a12, a9, 0 -40001a51: 0988 l32i.n a8, a9, 0 -40001a53: 0289 s32i.n a8, a2, 0 -40001a55: 75b080 extui a11, a8, 16, 8 -40001a58: 74e880 extui a14, a8, 8, 8 -40001a5b: 756880 extui a6, a8, 24, 8 -40001a5e: 994b addi.n a9, a9, 4 -40001a60: 0f6192 s32i a9, a1, 60 -40001a63: 306640 xor a6, a6, a4 -40001a66: 304ce0 xor a4, a12, a14 -40001a69: 304b40 xor a4, a11, a4 -40001a6c: 304460 xor a4, a4, a6 -40001a6f: 744040 extui a4, a4, 0, 8 -40001a72: 0afd mov.n a15, a10 -40001a74: f188 l32i.n a8, a1, 60 -40001a76: 4121d0 srli a2, a13, 1 -40001a79: 419276 loopnez a2, 40001abe <_XX_unk153c+0x582> -40001a7c: 030892 l8ui a9, a8, 3 -40001a7f: 0108b2 l8ui a11, a8, 1 -40001a82: 0008c2 l8ui a12, a8, 0 -40001a85: 0208d2 l8ui a13, a8, 2 -40001a88: 08e8 l32i.n a14, a8, 0 -40001a8a: 309940 xor a9, a9, a4 -40001a8d: 30bcb0 xor a11, a12, a11 -40001a90: 0fe9 s32i.n a14, a15, 0 -40001a92: 30bdb0 xor a11, a13, a11 -40001a95: 0708c2 l8ui a12, a8, 7 -40001a98: 0508d2 l8ui a13, a8, 5 -40001a9b: 0408e2 l8ui a14, a8, 4 -40001a9e: 060842 l8ui a4, a8, 6 -40001aa1: 1828 l32i.n a2, a8, 4 -40001aa3: 309b90 xor a9, a11, a9 -40001aa6: 30bed0 xor a11, a14, a13 -40001aa9: 1f29 s32i.n a2, a15, 4 -40001aab: 888b addi.n a8, a8, 8 -40001aad: 749090 extui a9, a9, 0, 8 -40001ab0: 30b4b0 xor a11, a4, a11 -40001ab3: ff8b addi.n a15, a15, 8 -40001ab5: 309c90 xor a9, a12, a9 -40001ab8: 309b90 xor a9, a11, a9 -40001abb: 744090 extui a4, a9, 0, 8 -40001abe: f189 s32i.n a8, a1, 60 -40001ac0: 0fad mov.n a10, a15 -40001ac2: 0a2d mov.n a2, a10 -40001ac4: ff7306 j 40001894 <_XX_unk153c+0x358> -40001ac7: 01a100 slli a10, a1, 32 -40001aca: ff .byte 0xff -40001acb: ff01b1 l32r a11, 400016d0 <_XX_unk153c+0x194> -40001ace: 00d365 call8 40002804 <ets_printf> -40001ad1: 120c movi.n a2, 1 -40001ad3: f01d retw.n -40001ad5: 000000 ill -40001ad8: edc516 beqz a5, 400019b8 <_XX_unk153c+0x47c> -40001adb: 02ad mov.n a10, a2 -40001add: 41d250 srli a13, a5, 2 -40001ae0: 021de6 bgei a13, 1, 40001ae6 <_XX_unk153c+0x5aa> -40001ae3: ffb446 j 400019b8 <_XX_unk153c+0x47c> -40001ae6: 286527 bbci a5, 2, 40001b12 <_XX_unk153c+0x5d6> -40001ae9: f198 l32i.n a9, a1, 60 -40001aeb: a24b addi.n a10, a2, 4 -40001aed: 0009c2 l8ui a12, a9, 0 -40001af0: 0988 l32i.n a8, a9, 0 -40001af2: 0289 s32i.n a8, a2, 0 -40001af4: 75b080 extui a11, a8, 16, 8 -40001af7: 74e880 extui a14, a8, 8, 8 -40001afa: 756880 extui a6, a8, 24, 8 -40001afd: 04c992 addi a9, a9, 4 -40001b00: 0f6192 s32i a9, a1, 60 -40001b03: 306640 xor a6, a6, a4 -40001b06: 304ce0 xor a4, a12, a14 -40001b09: 304b40 xor a4, a11, a4 -40001b0c: 304460 xor a4, a4, a6 -40001b0f: 744040 extui a4, a4, 0, 8 -40001b12: 0afd mov.n a15, a10 -40001b14: f188 l32i.n a8, a1, 60 -40001b16: 4121d0 srli a2, a13, 1 -40001b19: 419276 loopnez a2, 40001b5e <_XX_unk153c+0x622> -40001b1c: 030892 l8ui a9, a8, 3 -40001b1f: 0108b2 l8ui a11, a8, 1 -40001b22: 0008c2 l8ui a12, a8, 0 -40001b25: 0208d2 l8ui a13, a8, 2 -40001b28: 08e8 l32i.n a14, a8, 0 -40001b2a: 309940 xor a9, a9, a4 -40001b2d: 30bcb0 xor a11, a12, a11 -40001b30: 0fe9 s32i.n a14, a15, 0 -40001b32: 30bdb0 xor a11, a13, a11 -40001b35: 0708c2 l8ui a12, a8, 7 -40001b38: 0508d2 l8ui a13, a8, 5 -40001b3b: 0408e2 l8ui a14, a8, 4 -40001b3e: 060842 l8ui a4, a8, 6 -40001b41: 1828 l32i.n a2, a8, 4 -40001b43: 309b90 xor a9, a11, a9 -40001b46: 30bed0 xor a11, a14, a13 -40001b49: 1f29 s32i.n a2, a15, 4 -40001b4b: 888b addi.n a8, a8, 8 -40001b4d: 749090 extui a9, a9, 0, 8 -40001b50: 30b4b0 xor a11, a4, a11 -40001b53: ff8b addi.n a15, a15, 8 -40001b55: 309c90 xor a9, a12, a9 -40001b58: 309b90 xor a9, a11, a9 -40001b5b: 744090 extui a4, a9, 0, 8 -40001b5e: f189 s32i.n a8, a1, 60 -40001b60: ff9506 j 400019b8 <_XX_unk153c+0x47c> -40001b63: 402000 ssa8l a0 -40001b66: c58275 call12 3ffc738c <_start-0x38c74> -40001b69: 87f8 l32i.n a15, a7, 32 -40001b6b: 060203 excw -40001b6e: 500032 l8ui a3, a0, 80 -40001b71: 16f474 excw -40001b74: 0c0917 bnone a9, a1, 40001b84 <_XX_unk153c+0x648> -40001b77: 031c05 call0 40004d38 <lldesc_build_chain+0xac> -40001b7a: 918b addi.n a9, a1, 8 -40001b7c: b199 s32i.n a9, a1, 44 -40001b7e: 03ad mov.n a10, a3 -40001b80: 01bd mov.n a11, a1 -40001b82: 0c1c movi.n a12, 16 -40001b84: 02d125 call8 40004898 <SPIRead> -40001b87: ea7a56 bnez a10, 40001a32 <_XX_unk153c+0x4f6> -40001b8a: 10c332 addi a3, a3, 16 -40001b8d: 449c beqz.n a4, 40001ba5 <_XX_unk153c+0x669> -40001b8f: 01ad mov.n a10, a1 -40001b91: 0247e5 call8 40004010 <_XX_unk4010> -40001b94: 440b addi.n a4, a4, -1 -40001b96: f44040 extui a4, a4, 0, 16 -40001b99: 848c beqz.n a4, 40001ba5 <_XX_unk153c+0x669> -40001b9b: b1a8 l32i.n a10, a1, 44 -40001b9d: 024725 call8 40004010 <_XX_unk4010> -40001ba0: 440b addi.n a4, a4, -1 -40001ba2: f44040 extui a4, a4, 0, 16 -40001ba5: 551b addi.n a5, a5, 1 -40001ba7: f45050 extui a5, a5, 0, 16 -40001baa: d09757 bne a7, a5, 40001b7e <_XX_unk153c+0x642> -40001bad: 001646 j 40001c0a <_XX_unk153c+0x6ce> -40001bb0: 7480e0 extui a8, a14, 0, 8 -40001bb3: c198 l32i.n a9, a1, 48 -40001bb5: 7199 s32i.n a9, a1, 28 -40001bb7: d189 s32i.n a8, a1, 52 -40001bb9: ff4f06 j 400018f9 <_XX_unk153c+0x3bd> -40001bbc: 05cd00 extui a12, a0, 29, 1 -40001bbf: fec5a1 l32r a10, 400016d4 <_XX_unk153c+0x198> -40001bc2: d1b8 l32i.n a11, a1, 52 -40001bc4: 06dd mov.n a13, a6 -40001bc6: 00c3e5 call8 40002804 <ets_printf> -40001bc9: b27a add.n a11, a2, a7 -40001bcb: 10c1a2 addi a10, a1, 16 -40001bce: 06cd mov.n a12, a6 -40001bd0: 04da25 call8 40006974 <memcpy> -40001bd3: 03ad mov.n a10, a3 -40001bd5: 01bd mov.n a11, a1 -40001bd7: 0c1c movi.n a12, 16 -40001bd9: 02cbe5 call8 40004898 <SPIRead> -40001bdc: 0eca56 bnez a10, 40001ccc <_XX_unk153c+0x790> -40001bdf: 10c332 addi a3, a3, 16 -40001be2: 01bd mov.n a11, a1 -40001be4: 8c0c movi.n a12, 8 -40001be6: 10c1a2 addi a10, a1, 16 -40001be9: a6aa add.n a10, a6, a10 -40001beb: c0cc60 sub a12, a12, a6 -40001bee: 74c0c0 extui a12, a12, 0, 8 -40001bf1: d1c9 s32i.n a12, a1, 52 -40001bf3: 04d825 call8 40006974 <memcpy> -40001bf6: 41b8 l32i.n a11, a1, 16 -40001bf8: 51c8 l32i.n a12, a1, 20 -40001bfa: c1c9 s32i.n a12, a1, 48 -40001bfc: ff8806 j 40001a20 <_XX_unk153c+0x4e4> -40001bff: c1d800 mul16u a13, a8, a0 -40001c02: 71d9 s32i.n a13, a1, 28 -40001c04: ff2a06 j 400018b0 <_XX_unk153c+0x374> -40001c07: 031c00 excw -40001c0a: 03ad mov.n a10, a3 -40001c0c: 01bd mov.n a11, a1 -40001c0e: 0c1c movi.n a12, 16 -40001c10: 02c865 call8 40004898 <SPIRead> -40001c13: b21a56 bnez a10, 40001738 <_XX_unk153c+0x1fc> -40001c16: 10c332 addi a3, a3, 16 -40001c19: 448c beqz.n a4, 40001c21 <_XX_unk153c+0x6e5> -40001c1b: 20a110 or a10, a1, a1 -40001c1e: 023f25 call8 40004010 <_XX_unk4010> -40001c21: 744020 extui a4, a2, 0, 8 -40001c24: 04ad mov.n a10, a4 -40001c26: 0299a5 call8 400045c0 <_X_SPIReadModeConfig+0x88> -40001c29: 348820 extui a8, a2, 8, 4 -40001c2c: 1838f6 bgeui a8, 3, 40001c48 <_XX_unk153c+0x70c> -40001c2f: 282b addi.n a2, a8, 2 -40001c31: 742020 extui a2, a2, 0, 8 -40001c34: 000486 j 40001c4a <_XX_unk153c+0x70e> -40001c37: a10000 sll a0, a0 -40001c3a: 50fea7 bbsi a14, 26, 40001c8e <_XX_unk153c+0x752> -40001c3d: 6520b5 call12 40066e48 <__bss_start+0x56e48> -40001c40: 00bc beqz.n a0, 40001c74 <_XX_unk153c+0x738> -40001c42: 01a022 movi a2, 1 -40001c45: 000090 retw -40001c48: 120c movi.n a2, 1 -40001c4a: 20c440 or a12, a4, a4 -40001c4d: fea3a1 l32r a10, 400016dc <_XX_unk153c+0x1a0> -40001c50: 20b220 or a11, a2, a2 -40001c53: 00bb25 call8 40002804 <ets_printf> -40001c56: 20a220 or a10, a2, a2 -40001c59: 02a1e5 call8 40004678 <_X_SPIReadModeConfig+0x140> -40001c5c: 0e0192 l8ui a9, a1, 14 -40001c5f: 080152 l8ui a5, a1, 8 -40001c62: 0b0122 l8ui a2, a1, 11 -40001c65: 0a0182 l8ui a8, a1, 10 -40001c68: 112280 slli a2, a2, 8 -40001c6b: 202280 or a2, a2, a8 -40001c6e: 090182 l8ui a8, a1, 9 -40001c71: 112280 slli a2, a2, 8 -40001c74: 202280 or a2, a2, a8 -40001c77: 112280 slli a2, a2, 8 -40001c7a: 202250 or a2, a2, a5 -40001c7d: 0f0152 l8ui a5, a1, 15 -40001c80: 0c0182 l8ui a8, a1, 12 -40001c83: 115580 slli a5, a5, 8 -40001c86: 205590 or a5, a5, a9 -40001c89: 0d0192 l8ui a9, a1, 13 -40001c8c: 115580 slli a5, a5, 8 -40001c8f: 205590 or a5, a5, a9 -40001c92: 115580 slli a5, a5, 8 -40001c95: 205580 or a5, a5, a8 -40001c98: fec206 j 400017a4 <_XX_unk153c+0x268> -40001c9b: a10000 sll a0, a0 -40001c9e: 40fe90 nsau a9, a14 -40001ca1: 2520b4 excw -40001ca4: 8200b6 bltui a0, 0x8000, 40001c2a <_XX_unk153c+0x6ee> -40001ca7: 400f01 l32r a0, 3ffd1ce4 <_start-0x2e31c> -40001caa: c088 l32i.n a8, a0, 48 -40001cac: d82816 beqz a8, 40001a32 <_XX_unk153c+0x4f6> -40001caf: fe8da1 l32r a10, 400016e4 <_XX_unk153c+0x1a8> -40001cb2: 00b525 call8 40002804 <ets_printf> -40001cb5: 01a022 movi a2, 1 -40001cb8: f01d retw.n -40001cba: a10000 sll a0, a0 -40001cbd: b2fe84 excw -40001cc0: 25efa2 s32c1i a10, a15, 148 -40001cc3: 0c00b4 excw -40001cc6: f01d12 l16ui a1, a13, 0x1e0 -40001cc9: 000000 ill -40001ccc: fe80a1 l32r a10, 400016cc <_XX_unk153c+0x190> -40001ccf: 2ca3b2 movi a11, 0x32c -40001cd2: 00b325 call8 40002804 <ets_printf> -40001cd5: ff5646 j 40001a32 <_XX_unk153c+0x4f6> - -40001cd8 <_c_data_end>: -40001cd8: ffc864 excw -40001cdb: 3f .byte 0x3f - -40001cdc <_s_mem_banner>: -40001cdc: cb68 l32i.n a6, a11, 48 -40001cde: ff .byte 0xff -40001cdf: 3f .byte 0x3f - -40001ce0 <_c_stack_sentry>: -40001ce0: ffe1d0 excw -40001ce3: 3f .byte 0x3f - -40001ce4 <_c_data_start>: -40001ce4: ffc000 excw -40001ce7: 3f .byte 0x3f - -40001ce8 <_X_print_mem_banner>: -40001ce8: 006136 entry a1, 48 -40001ceb: fffca1 l32r a10, 40001cdc <_s_mem_banner> -40001cee: fffcb1 l32r a11, 40001ce0 <_c_stack_sentry> -40001cf1: fa83c1 l32r a12, 40000700 <_c_stack> -40001cf4: fa85d1 l32r a13, 40000708 <_c_bss_start> -40001cf7: fa85e1 l32r a14, 4000070c <_c_bss_end> -40001cfa: fffaf1 l32r a15, 40001ce4 <_c_data_start> -40001cfd: fff681 l32r a8, 40001cd8 <_c_data_end> -40001d00: 0189 s32i.n a8, a1, 0 -40001d02: 00b025 call8 40002804 <ets_printf> -40001d05: f01d retw.n -40001d07: da4000 depbits a0, a0, 13, 5 -40001d0a: ff .byte 0xff -40001d0b: 3f .byte 0x3f - -40001d0c <_s_exc_sp_fmt>: -40001d0c: ffcbe4 excw -40001d0f: 3f .byte 0x3f - -40001d10 <_s_exc_sf_dump_fmt>: -40001d10: cbec bnez.n a11, 40001d40 <_X_exc_handler+0x28> -40001d12: ff .byte 0xff -40001d13: 3f .byte 0x3f - -40001d14 <_s_exc_regs_fmt>: -40001d14: cc2c movi.n a12, 44 -40001d16: ff .byte 0xff -40001d17: 3f .byte 0x3f - -40001d18 <_X_exc_handler>: -40001d18: 004136 entry a1, 32 -40001d1b: 012d mov.n a2, a1 -40001d1d: 03e765 call8 40005b94 <_XX_xtos_exc_unk5b94> -40001d20: 030c movi.n a3, 0 -40001d22: f8add2 movi a13, 0xfffffdf8 -40001d25: fff841 l32r a4, 40001d08 <_X_print_mem_banner+0x20> -40001d28: 580c movi.n a8, 5 -40001d2a: 209440 or a9, a4, a4 -40001d2d: 1ea876 loopgtz a8, 40001d4f <_X_exc_handler+0x37> -40001d30: c2da add.n a12, a2, a13 -40001d32: 7e2cb2 l32i a11, a12, 0x1f8 -40001d35: 09b9 s32i.n a11, a9, 0 -40001d37: 7f2ca2 l32i a10, a12, 0x1fc -40001d3a: 19a9 s32i.n a10, a9, 4 -40001d3c: 802ce2 l32i a14, a12, 0x200 -40001d3f: 29e9 s32i.n a14, a9, 8 -40001d41: 812cc2 l32i a12, a12, 0x204 -40001d44: 39c9 s32i.n a12, a9, 12 -40001d46: 5b8c beqz.n a11, 40001d4f <_X_exc_handler+0x37> -40001d48: 10c992 addi a9, a9, 16 -40001d4b: 0a2d mov.n a2, a10 -40001d4d: 331b addi.n a3, a3, 1 -40001d4f: ffefa1 l32r a10, 40001d0c <_s_exc_sp_fmt> -40001d52: 02bd mov.n a11, a2 -40001d54: 00aae5 call8 40002804 <ets_printf> -40001d57: 020c movi.n a2, 0 -40001d59: 1713a6 blti a3, 1, 40001d74 <_X_exc_handler+0x5c> -40001d5c: ffeda1 l32r a10, 40001d10 <_s_exc_sf_dump_fmt> -40001d5f: 02bd mov.n a11, a2 -40001d61: 04c8 l32i.n a12, a4, 0 -40001d63: 14d8 l32i.n a13, a4, 4 -40001d65: 24e8 l32i.n a14, a4, 8 -40001d67: 34f8 l32i.n a15, a4, 12 -40001d69: 00a9a5 call8 40002804 <ets_printf> -40001d6c: 10c442 addi a4, a4, 16 -40001d6f: 221b addi.n a2, a2, 1 -40001d71: e79237 bne a2, a3, 40001d5c <_X_exc_handler+0x44> -40001d74: ffe8a1 l32r a10, 40001d14 <_s_exc_regs_fmt> -40001d77: 03b1b0 rsr.epc1 a11 -40001d7a: 03b2c0 rsr.epc2 a12 -40001d7d: 03b3d0 rsr.epc3 a13 -40001d80: 03eee0 rsr.excvaddr a14 -40001d83: 03c0f0 rsr.depc a15 -40001d86: 00a7e5 call8 40002804 <ets_printf> -40001d89: ffff06 j 40001d89 <_X_exc_handler+0x71> -40001d8c: ffcc74 excw -40001d8f: 3f .byte 0x3f - -40001d90 <_XX_unk1d90>: -40001d90: 004136 entry a1, 32 -40001d93: 03e8b0 rsr.exccause a11 -40001d96: fffda1 l32r a10, 40001d8c <_X_exc_handler+0x74> -40001d99: 00a6a5 call8 40002804 <ets_printf> -40001d9c: ffdea1 l32r a10, 40001d14 <_s_exc_regs_fmt> -40001d9f: 03b1b0 rsr.epc1 a11 -40001da2: 03b2c0 rsr.epc2 a12 -40001da5: 03b3d0 rsr.epc3 a13 -40001da8: 03eee0 rsr.excvaddr a14 -40001dab: 03c0f0 rsr.depc a15 -40001dae: 00a565 call8 40002804 <ets_printf> -40001db1: ffff06 j 40001db1 <_XX_unk1d90+0x21> - -40001db4 <_X_ets_memset>: -40001db4: 004136 entry a1, 32 -40001db7: 04cd mov.n a12, a4 -40001db9: 03bd mov.n a11, a3 -40001dbb: 02ad mov.n a10, a2 -40001dbd: 04e265 call8 40006be4 <memset> -40001dc0: 0a2d mov.n a2, a10 -40001dc2: f01d retw.n - -40001dc4 <_X_ets_memcpy>: -40001dc4: 004136 entry a1, 32 -40001dc7: 04cd mov.n a12, a4 -40001dc9: 03bd mov.n a11, a3 -40001dcb: 02ad mov.n a10, a2 -40001dcd: 04ba65 call8 40006974 <memcpy> -40001dd0: 0a2d mov.n a2, a10 -40001dd2: f01d retw.n - -40001dd4 <_X_ets_memmove>: -40001dd4: 004136 entry a1, 32 -40001dd7: 04cd mov.n a12, a4 -40001dd9: 03bd mov.n a11, a3 -40001ddb: 02ad mov.n a10, a2 -40001ddd: 04c8e5 call8 40006a6c <memmove> -40001de0: 0a2d mov.n a2, a10 -40001de2: f01d retw.n - -40001de4 <_X_ets_memcmp>: -40001de4: 004136 entry a1, 32 -40001de7: 04cd mov.n a12, a4 -40001de9: 03bd mov.n a11, a3 -40001deb: 02ad mov.n a10, a2 -40001ded: 04afe5 call8 400068ec <memcmp> -40001df0: 0a2d mov.n a2, a10 -40001df2: f01d retw.n -40001df4: ffda90 excw -40001df7: 3f .byte 0x3f -40001df8: 004136 entry a1, 32 -40001dfb: 000292 l8ui a9, a2, 0 -40001dfe: fffd81 l32r a8, 40001df4 <_X_ets_memcmp+0x10> -40001e01: 010262 l8ui a6, a2, 1 -40001e04: 0858 l32i.n a5, a8, 0 -40001e06: 116680 slli a6, a6, 8 -40001e09: 206690 or a6, a6, a9 -40001e0c: 665a add.n a6, a6, a5 -40001e0e: 071267 beq a2, a6, 40001e19 <_X_ets_memcmp+0x35> -40001e11: 040692 l8ui a9, a6, 4 -40001e14: 18e8 l32i.n a14, a8, 4 -40001e16: 04e916 beqz a9, 40001e68 <_X_ets_memcmp+0x84> -40001e19: 030272 l8ui a7, a2, 3 -40001e1c: 020292 l8ui a9, a2, 2 -40001e1f: 117780 slli a7, a7, 8 -40001e22: 207790 or a7, a7, a9 -40001e25: 675a add.n a6, a7, a5 -40001e27: 391267 beq a2, a6, 40001e64 <_X_ets_memcmp+0x80> -40001e2a: 040692 l8ui a9, a6, 4 -40001e2d: 28a8 l32i.n a10, a8, 8 -40001e2f: 19fc bnez.n a9, 40001e64 <_X_ets_memcmp+0x80> -40001e31: 41b870 srli a11, a7, 8 -40001e34: 0102d2 l8ui a13, a2, 1 -40001e37: 0002e2 l8ui a14, a2, 0 -40001e3a: 11dd80 slli a13, a13, 8 -40001e3d: 20dde0 or a13, a13, a14 -40001e40: 0046d2 s8i a13, a6, 0 -40001e43: 41d8d0 srli a13, a13, 8 -40001e46: 0146d2 s8i a13, a6, 1 -40001e49: 0102c2 l8ui a12, a2, 1 -40001e4c: 0002d2 l8ui a13, a2, 0 -40001e4f: 11cc80 slli a12, a12, 8 -40001e52: 20ccd0 or a12, a12, a13 -40001e55: cc5a add.n a12, a12, a5 -40001e57: 024c72 s8i a7, a12, 2 -40001e5a: 034cb2 s8i a11, a12, 3 -40001e5d: 019a27 bne a10, a2, 40001e62 <_X_ets_memcmp+0x7e> -40001e60: 2869 s32i.n a6, a8, 8 -40001e62: f01d retw.n -40001e64: f01d retw.n -40001e66: 670000 excw -40001e69: 1e .byte 0x1e -40001e6a: 50ad excw -40001e6c: a2c032 addi a3, a0, -94 -40001e6f: 920006 j 3ffe6673 <_start-0x1998d> -40001e72: f20106 j 3fffe67a <_start-0x1986> -40001e75: 0228 l32i.n a2, a2, 0 -40001e77: 119980 slli a9, a9, 8 -40001e7a: 029f67 bne a15, a6, 40001e80 <_X_ets_memcmp+0x9c> -40001e7d: 026822 s32i a2, a8, 8 -40001e80: 2099a0 or a9, a9, a10 -40001e83: 004292 s8i a9, a2, 0 -40001e86: 419890 srli a9, a9, 8 -40001e89: 014292 s8i a9, a2, 1 -40001e8c: 010642 l8ui a4, a6, 1 -40001e8f: 000692 l8ui a9, a6, 0 -40001e92: 114480 slli a4, a4, 8 -40001e95: 204490 or a4, a4, a9 -40001e98: 445a add.n a4, a4, a5 -40001e9a: 024432 s8i a3, a4, 2 -40001e9d: 413830 srli a3, a3, 8 -40001ea0: 034432 s8i a3, a4, 3 -40001ea3: ffdc86 j 40001e19 <_X_ets_memcmp+0x35> -40001ea6: 360000 excw -40001ea9: 1c0041 l32r a4, 3ffc8eac <_start-0x37154> -40001eac: 051c03 excw -40001eaf: 180c movi.n a8, 1 -40001eb1: fca291 l32r a9, 4000113c <_c_0x1000> -40001eb4: 0d0c movi.n a13, 0 -40001eb6: 0c1c movi.n a12, 16 -40001eb8: cb7c movi.n a11, -4 -40001eba: a23b addi.n a10, a2, 3 -40001ebc: 10aab0 and a10, a10, a11 -40001ebf: 014ac2 s8i a12, a10, 1 -40001ec2: 024ad2 s8i a13, a10, 2 -40001ec5: 004a92 s8i a9, a10, 0 -40001ec8: 034ad2 s8i a13, a10, 3 -40001ecb: 044ad2 s8i a13, a10, 4 -40001ece: ffc9b1 l32r a11, 40001df4 <_X_ets_memcmp+0x10> -40001ed1: 10da42 addmi a4, a10, 0x1000 -40001ed4: 0ba9 s32i.n a10, a11, 0 -40001ed6: 2ba9 s32i.n a10, a11, 8 -40001ed8: 004492 s8i a9, a4, 0 -40001edb: 1b49 s32i.n a4, a11, 4 -40001edd: 024492 s8i a9, a4, 2 -40001ee0: 044482 s8i a8, a4, 4 -40001ee3: 014452 s8i a5, a4, 1 -40001ee6: 034432 s8i a3, a4, 3 -40001ee9: f01d retw.n -40001eeb: 413600 srli a3, a0, 6 -40001eee: b28c00 mulsh a8, a12, a0 -40001ef1: ffc0a1 l32r a10, 40001df4 <_X_ets_memcmp+0x10> -40001ef4: 0a88 l32i.n a8, a10, 0 -40001ef6: 1a98 l32i.n a9, a10, 4 -40001ef8: 023287 bltu a2, a8, 40001efe <_X_ets_memcmp+0x11a> -40001efb: 013297 bltu a2, a9, 40001f00 <_X_ets_memcmp+0x11c> -40001efe: f01d retw.n -40001f00: 0c0c movi.n a12, 0 -40001f02: 2ad8 l32i.n a13, a10, 8 -40001f04: f8c2b2 addi a11, a2, -8 -40001f07: 63ddb0 minu a13, a13, a11 -40001f0a: 044bc2 s8i a12, a11, 4 -40001f0d: 2ad9 s32i.n a13, a10, 8 -40001f0f: 0bad mov.n a10, a11 -40001f11: ffee65 call8 40001df8 <_X_ets_memcmp+0x14> -40001f14: f01d retw.n -40001f16: fc0000 excw -40001f19: ff .byte 0xff -40001f1a: 360000 excw -40001f1d: c10041 l32r a4, 3fff2320 <_start-0xdce0> -40001f20: 51fc87 bbsi a12, 24, 40001f75 <_X_ets_memcmp+0x191> -40001f23: fffd excw -40001f25: 433b addi.n a4, a3, 3 -40001f27: 104450 and a4, a4, a5 -40001f2a: c50c movi.n a5, 12 -40001f2c: 734450 maxu a4, a4, a5 -40001f2f: f43040 extui a3, a4, 0, 16 -40001f32: 02bc37 bgeu a12, a3, 40001f38 <_X_ets_memcmp+0x154> -40001f35: 002246 j 40001fc2 <_X_ets_memcmp+0x1de> -40001f38: ffaf91 l32r a9, 40001df4 <_X_ets_memcmp+0x10> -40001f3b: 0968 l32i.n a6, a9, 0 -40001f3d: 1988 l32i.n a8, a9, 4 -40001f3f: 7d3267 bltu a2, a6, 40001fc0 <_X_ets_memcmp+0x1dc> -40001f42: 7ab287 bgeu a2, a8, 40001fc0 <_X_ets_memcmp+0x1dc> -40001f45: f8c2b2 addi a11, a2, -8 -40001f48: 010b82 l8ui a8, a11, 1 -40001f4b: 000ba2 l8ui a10, a11, 0 -40001f4e: 118880 slli a8, a8, 8 -40001f51: 2088a0 or a8, a8, a10 -40001f54: c0a260 sub a10, a2, a6 -40001f57: f8caa2 addi a10, a10, -8 -40001f5a: c078a0 sub a7, a8, a10 -40001f5d: f8c772 addi a7, a7, -8 -40001f60: f47070 extui a7, a7, 0, 16 -40001f63: 5b3737 bltu a7, a3, 40001fc2 <_X_ets_memcmp+0x1de> -40001f66: 561737 beq a7, a3, 40001fc0 <_X_ets_memcmp+0x1dc> -40001f69: d86a add.n a13, a8, a6 -40001f6b: 040df2 l8ui a15, a13, 4 -40001f6e: 0e0c movi.n a14, 0 -40001f70: 052f16 beqz a15, 40001fc6 <_X_ets_memcmp+0x1e2> -40001f73: 14c342 addi a4, a3, 20 -40001f76: 463747 bltu a7, a4, 40001fc0 <_X_ets_memcmp+0x1dc> -40001f79: 2958 l32i.n a5, a9, 8 -40001f7b: 41f880 srli a15, a8, 8 -40001f7e: 4148a0 srli a4, a10, 8 -40001f81: 3a3a add.n a3, a10, a3 -40001f83: 338b addi.n a3, a3, 8 -40001f85: f4d030 extui a13, a3, 0, 16 -40001f88: d6da add.n a13, a6, a13 -40001f8a: 034d42 s8i a4, a13, 3 -40001f8d: 024da2 s8i a10, a13, 2 -40001f90: 014df2 s8i a15, a13, 1 -40001f93: 044de2 s8i a14, a13, 4 -40001f96: 004d82 s8i a8, a13, 0 -40001f99: 6355d0 minu a5, a5, a13 -40001f9c: 2959 s32i.n a5, a9, 8 -40001f9e: 418830 srli a8, a3, 8 -40001fa1: 004b32 s8i a3, a11, 0 -40001fa4: 014b82 s8i a8, a11, 1 -40001fa7: 010d72 l8ui a7, a13, 1 -40001faa: 000dd2 l8ui a13, a13, 0 -40001fad: 117780 slli a7, a7, 8 -40001fb0: 2077d0 or a7, a7, a13 -40001fb3: 0917c7 beq a7, a12, 40001fc0 <_X_ets_memcmp+0x1dc> -40001fb6: 476a add.n a4, a7, a6 -40001fb8: 024432 s8i a3, a4, 2 -40001fbb: 034482 s8i a8, a4, 3 -40001fbe: f01d retw.n -40001fc0: f01d retw.n -40001fc2: 020c movi.n a2, 0 -40001fc4: f01d retw.n -40001fc6: 2958 l32i.n a5, a9, 8 -40001fc8: 4148a0 srli a4, a10, 8 -40001fcb: 000db2 l8ui a11, a13, 0 -40001fce: 010d82 l8ui a8, a13, 1 -40001fd1: 3a3a add.n a3, a10, a3 -40001fd3: 338b addi.n a3, a3, 8 -40001fd5: f47030 extui a7, a3, 0, 16 -40001fd8: 118880 slli a8, a8, 8 -40001fdb: 2088b0 or a8, a8, a11 -40001fde: 807670 add a7, a6, a7 -40001fe1: 0247a2 s8i a10, a7, 2 -40001fe4: 0447e2 s8i a14, a7, 4 -40001fe7: 034742 s8i a4, a7, 3 -40001fea: 41f880 srli a15, a8, 8 -40001fed: 004782 s8i a8, a7, 0 -40001ff0: 0147f2 s8i a15, a7, 1 -40001ff3: 418830 srli a8, a3, 8 -40001ff6: 0295d7 bne a5, a13, 40001ffc <_X_ets_memcmp+0x218> -40001ff9: 026972 s32i a7, a9, 8 -40001ffc: f8c2d2 addi a13, a2, -8 -40001fff: 014d82 s8i a8, a13, 1 -40002002: 004d32 s8i a3, a13, 0 -40002005: 0107b2 l8ui a11, a7, 1 -40002008: 000792 l8ui a9, a7, 0 -4000200b: 117b80 slli a7, a11, 8 -4000200e: 207790 or a7, a7, a9 -40002011: ab17c7 beq a7, a12, 40001fc0 <_X_ets_memcmp+0x1dc> -40002014: 976a add.n a9, a7, a6 -40002016: 024932 s8i a3, a9, 2 -40002019: 034982 s8i a8, a9, 3 -4000201c: f01d retw.n -4000201e: 360000 excw -40002021: 160041 l32r a4, 3ffc7824 <_start-0x387dc> -40002024: b105d2 l8ui a13, a5, 177 -40002027: ffbc beqz.n a15, 4000206a <_X_ets_memcmp+0x286> -40002029: a23b addi.n a10, a2, 3 -4000202b: 10aab0 and a10, a10, a11 -4000202e: cb0c movi.n a11, 12 -40002030: 73aab0 maxu a10, a10, a11 -40002033: fc42b1 l32r a11, 4000113c <_c_0x1000> -40002036: f4a0a0 extui a10, a10, 0, 16 -40002039: 473ba7 bltu a11, a10, 40002084 <_X_ets_memcmp+0x2a0> -4000203c: ff6ed1 l32r a13, 40001df4 <_X_ets_memcmp+0x10> -4000203f: 002d62 l32i a6, a13, 0 -40002042: 022d92 l32i a9, a13, 8 -40002045: c07ba0 sub a7, a11, a10 -40002048: c02960 sub a2, a9, a6 -4000204b: f42020 extui a2, a2, 0, 16 -4000204e: 32a277 bge a2, a7, 40002084 <_X_ets_memcmp+0x2a0> -40002051: 188076 loop a0, 4000206d <_X_ets_memcmp+0x289> -40002054: 862a add.n a8, a6, a2 -40002056: 040832 l8ui a3, a8, 4 -40002059: 010852 l8ui a5, a8, 1 -4000205c: 0008c2 l8ui a12, a8, 0 -4000205f: 115580 slli a5, a5, 8 -40002062: 2055c0 or a5, a5, a12 -40002065: 007316 beqz a3, 40002070 <_X_ets_memcmp+0x28c> -40002068: 052d mov.n a2, a5 -4000206a: 16a577 bge a5, a7, 40002084 <_X_ets_memcmp+0x2a0> -4000206d: fff806 j 40002051 <_X_ets_memcmp+0x26d> -40002070: c0c520 sub a12, a5, a2 -40002073: f8ccc2 addi a12, a12, -8 -40002076: ee3ca7 bltu a12, a10, 40002068 <_X_ets_memcmp+0x284> -40002079: 1e0c movi.n a14, 1 -4000207b: 14caf2 addi a15, a10, 20 -4000207e: 4f3cf7 bltu a12, a15, 400020d1 <_X_ets_memcmp+0x2ed> -40002081: 0000c6 j 40002088 <_X_ets_memcmp+0x2a4> -40002084: 020c movi.n a2, 0 -40002086: f01d retw.n -40002088: 41f820 srli a15, a2, 8 -4000208b: 41c850 srli a12, a5, 8 -4000208e: 040c movi.n a4, 0 -40002090: 72aa add.n a7, a2, a10 -40002092: 778b addi.n a7, a7, 8 -40002094: f43070 extui a3, a7, 0, 16 -40002097: 363a add.n a3, a6, a3 -40002099: 044342 s8i a4, a3, 4 -4000209c: 0143c2 s8i a12, a3, 1 -4000209f: 024322 s8i a2, a3, 2 -400020a2: 004352 s8i a5, a3, 0 -400020a5: 0343f2 s8i a15, a3, 3 -400020a8: 415870 srli a5, a7, 8 -400020ab: 0448e2 s8i a14, a8, 4 -400020ae: 004872 s8i a7, a8, 0 -400020b1: 014852 s8i a5, a8, 1 -400020b4: 010322 l8ui a2, a3, 1 -400020b7: 000332 l8ui a3, a3, 0 -400020ba: 112280 slli a2, a2, 8 -400020bd: 202230 or a2, a2, a3 -400020c0: 1012b7 beq a2, a11, 400020d4 <_X_ets_memcmp+0x2f0> -400020c3: a62a add.n a10, a6, a2 -400020c5: 024a72 s8i a7, a10, 2 -400020c8: 034a52 s8i a5, a10, 3 -400020cb: 000146 j 400020d4 <_X_ets_memcmp+0x2f0> -400020ce: 000000 ill -400020d1: 0448e2 s8i a14, a8, 4 -400020d4: 219987 bne a9, a8, 400020f9 <_X_ets_memcmp+0x315> -400020d7: 0409b2 l8ui a11, a9, 4 -400020da: bb9c beqz.n a11, 400020f9 <_X_ets_memcmp+0x315> -400020dc: 1d28 l32i.n a2, a13, 4 -400020de: 171297 beq a2, a9, 400020f9 <_X_ets_memcmp+0x315> -400020e1: 0109b2 l8ui a11, a9, 1 -400020e4: 0009a2 l8ui a10, a9, 0 -400020e7: 119b80 slli a9, a11, 8 -400020ea: 2099a0 or a9, a9, a10 -400020ed: 969a add.n a9, a6, a9 -400020ef: 0409c2 l8ui a12, a9, 4 -400020f2: 2d99 s32i.n a9, a13, 8 -400020f4: 1c8c beqz.n a12, 400020f9 <_X_ets_memcmp+0x315> -400020f6: e79297 bne a2, a9, 400020e1 <_X_ets_memcmp+0x2fd> -400020f9: 288b addi.n a2, a8, 8 -400020fb: f01d retw.n -400020fd: 000000 ill -40002100: 004136 entry a1, 32 -40002103: c13230 mul16u a3, a2, a3 -40002106: f4a030 extui a10, a3, 0, 16 -40002109: fff165 call8 40002020 <_X_ets_memcmp+0x23c> -4000210c: 202aa0 or a2, a10, a10 -4000210f: 007a16 beqz a10, 4000211a <_X_ets_memcmp+0x336> -40002112: 20c330 or a12, a3, a3 -40002115: 0b0c movi.n a11, 0 -40002117: ffc9e5 call8 40001db4 <_X_ets_memset> -4000211a: f01d retw.n -4000211c: 004136 entry a1, 32 -4000211f: 02bd mov.n a11, a2 -40002121: 1a0c movi.n a10, 1 -40002123: fffde5 call8 40002100 <_X_ets_memcmp+0x31c> -40002126: 0a2d mov.n a2, a10 -40002128: f01d retw.n -4000212a: 360000 excw -4000212d: 4d0041 l32r a4, 3ffd5530 <_start-0x2aad0> -40002130: 03ad02 movi a0, 0xfffffd03 -40002133: ffeee5 call8 40002020 <_X_ets_memcmp+0x23c> -40002136: 0a2d mov.n a2, a10 -40002138: 2acc bnez.n a10, 4000213e <_X_ets_memcmp+0x35a> -4000213a: f01d retw.n -4000213c: 300000 xor a0, a0, a0 -4000213f: 4020c3 excw -40002142: e520b4 excw -40002145: 40ffc7 bbsi a15, 28, 40002189 <_st_0x3fffda9c+0x39> -40002148: 2520a4 excw -4000214b: ffda add.n a15, a15, a13 -4000214d: f01d retw.n - ... - -40002150 <_st_0x3fffda9c>: -40002150: da9c beqz.n a10, 40002171 <_st_0x3fffda9c+0x21> -40002152: ff .byte 0xff -40002153: 3f .byte 0x3f -40002154: 00fff2 s32ri a15, a15, 0 -40002157: 413600 srli a3, a0, 6 -4000215a: fd4100 excw -4000215d: ff .byte 0xff -4000215e: 1258 l32i.n a5, a2, 4 -40002160: 0429 s32i.n a2, a4, 0 -40002162: 55eb addi.n a5, a5, 14 -40002164: 1459 s32i.n a5, a4, 4 -40002166: fffb51 l32r a5, 40002154 <_st_0x3fffda9c+0x4> -40002169: 0020c0 memw -4000216c: 0238 l32i.n a3, a2, 0 -4000216e: b43030 extui a3, a3, 0, 12 -40002171: 335a add.n a3, a3, a5 -40002173: 045432 s16i a3, a4, 8 -40002176: f01d retw.n -40002178: cc8c beqz.n a12, 40002188 <_st_0x3fffda9c+0x38> -4000217a: ff .byte 0xff -4000217b: 3f .byte 0x3f -4000217c: 004136 entry a1, 32 -4000217f: fff4b1 l32r a11, 40002150 <_st_0x3fffda9c> -40002182: 041b92 l16ui a9, a11, 8 -40002185: 1b88 l32i.n a8, a11, 4 -40002187: d98c beqz.n a9, 40002198 <_st_0x3fffda9c+0x48> -40002189: 004822 s8i a2, a8, 0 -4000218c: a90b addi.n a10, a9, -1 -4000218e: 045ba2 s16i a10, a11, 8 -40002191: 881b addi.n a8, a8, 1 -40002193: 1b89 s32i.n a8, a11, 4 -40002195: f01d retw.n -40002197: f8a100 excw -4000219a: ff .byte 0xff -4000219b: 0066a5 call8 40002804 <ets_printf> -4000219e: f01d retw.n -400021a0: 217c movi.n a1, -14 -400021a2: 364000 excw -400021a5: bd00a1 l32r a10, 3fff15a8 <_start-0xea58> -400021a8: 412902 l32i a0, a9, 0x104 -400021ab: 5139 s32i.n a3, a1, 20 -400021ad: 6149 s32i.n a4, a1, 24 -400021af: 7159 s32i.n a5, a1, 28 -400021b1: 8169 s32i.n a6, a1, 32 -400021b3: 9179 s32i.n a7, a1, 36 -400021b5: fffaa1 l32r a10, 400021a0 <_st_0x3fffda9c+0x50> -400021b8: 30c1c2 addi a12, a1, 48 -400021bb: 4e0c movi.n a14, 4 -400021bd: 10c1d2 addi a13, a1, 16 -400021c0: 11d9 s32i.n a13, a1, 4 -400021c2: 21e9 s32i.n a14, a1, 8 -400021c4: 01c9 s32i.n a12, a1, 0 -400021c6: 0015e5 call8 40002324 <_X_ets_unk225c+0xc8> -400021c9: 0a2d mov.n a2, a10 -400021cb: f01d retw.n -400021cd: 000000 ill -400021d0: 004136 entry a1, 32 -400021d3: ffdfa1 l32r a10, 40002150 <_st_0x3fffda9c> -400021d6: 002ab2 l32i a11, a10, 0 -400021d9: 012bd2 l32i a13, a11, 4 -400021dc: 0ccd92 addi a9, a13, 12 -400021df: 0020c0 memw -400021e2: f0a0f2 movi a15, 240 -400021e5: 0be8 l32i.n a14, a11, 0 -400021e7: cd2b addi.n a12, a13, 2 -400021e9: b480e0 extui a8, a14, 0, 12 -400021ec: 34e8e0 extui a14, a14, 8, 4 -400021ef: 004c82 s8i a8, a12, 0 -400021f2: 014ce2 s8i a14, a12, 1 -400021f5: 8c0c movi.n a12, 8 -400021f7: 000de2 l8ui a14, a13, 0 -400021fa: 014dc2 s8i a12, a13, 1 -400021fd: 10eef0 and a14, a14, a15 -40002200: 004de2 s8i a14, a13, 0 -40002203: 041aa2 l16ui a10, a10, 8 -40002206: 0020c0 memw -40002209: 0b88 l32i.n a8, a11, 0 -4000220b: b48080 extui a8, a8, 0, 12 -4000220e: c088a0 sub a8, a8, a10 -40002211: 0bad mov.n a10, a11 -40002213: f2c882 addi a8, a8, -14 -40002216: 005982 s16i a8, a9, 0 -40002219: 02fb25 call8 400051cc <_XX_unk51ac+0x20> -4000221c: f01d retw.n -4000221e: 360000 excw -40002221: 310041 l32r a4, 3ffce624 <_start-0x319dc> -40002224: ffcb addi.n a15, a15, 12 -40002226: 33b8 l32i.n a11, a3, 12 -40002228: 4b8c beqz.n a11, 40002230 <_st_0x3fffda9c+0xe0> -4000222a: 20a220 or a10, a2, a2 -4000222d: 000be0 callx8 a11 -40002230: 43b8 l32i.n a11, a3, 16 -40002232: 3b8c beqz.n a11, 40002239 <_st_0x3fffda9c+0xe9> -40002234: 02ad mov.n a10, a2 -40002236: 000be0 callx8 a11 -40002239: f01d retw.n - ... - -4000223c <_X_ets_uart_putc>: -4000223c: 004136 entry a1, 32 -4000223f: 0b9226 beqi a2, 10, 4000224e <_X_ets_uart_putc+0x12> -40002242: d80c movi.n a8, 13 -40002244: 041287 beq a2, a8, 4000224c <_X_ets_uart_putc+0x10> -40002247: 02ad mov.n a10, a2 -40002249: 013e25 call8 4000362c <uart_tx_one_char> -4000224c: f01d retw.n -4000224e: 0da0a2 movi a10, 13 -40002251: 013da5 call8 4000362c <uart_tx_one_char> -40002254: 0aa0a2 movi a10, 10 -40002257: 013d65 call8 4000362c <uart_tx_one_char> -4000225a: f01d retw.n - -4000225c <_X_ets_unk225c>: -4000225c: 00a136 entry a1, 80 -4000225f: 068d mov.n a8, a6 -40002261: 090c movi.n a9, 0 -40002263: 1b0c movi.n a11, 1 -40002265: 0a0c movi.n a10, 0 -40002267: 83ab30 moveqz a10, a11, a3 -4000226a: 839b20 moveqz a9, a11, a2 -4000226d: 0909a7 bnone a9, a10, 4000227a <_X_ets_unk225c+0x1e> -40002270: 711b addi.n a7, a1, 1 -40002272: 0c3c movi.n a12, 48 -40002274: 0041c2 s8i a12, a1, 0 -40002277: 001046 j 400022bc <_X_ets_unk225c+0x60> -4000227a: 017d mov.n a7, a1 -4000227c: 316f50 srai a6, a5, 31 -4000227f: 086182 s32i a8, a1, 32 -40002282: 20b330 or a11, a3, a3 -40002285: 20a220 or a10, a2, a2 -40002288: 06dd mov.n a13, a6 -4000228a: 05cd mov.n a12, a5 -4000228c: 04bd65 call8 40006e64 <__umoddi3> -4000228f: 03bd mov.n a11, a3 -40002291: 81d8 l32i.n a13, a1, 32 -40002293: 05cd mov.n a12, a5 -40002295: ddaa add.n a13, a13, a10 -40002297: 000dd2 l8ui a13, a13, 0 -4000229a: 02ad mov.n a10, a2 -4000229c: 0047d2 s8i a13, a7, 0 -4000229f: 771b addi.n a7, a7, 1 -400022a1: 06dd mov.n a13, a6 -400022a3: 0498e5 call8 40006c30 <__udivdi3> -400022a6: 0b3d mov.n a3, a11 -400022a8: 0a2d mov.n a2, a10 -400022aa: 0aed mov.n a14, a10 -400022ac: 180c movi.n a8, 1 -400022ae: 0bfd mov.n a15, a11 -400022b0: 93f8b0 movnez a15, a8, a11 -400022b3: 93e8a0 movnez a14, a8, a10 -400022b6: 20eef0 or a14, a14, a15 -400022b9: fc5e56 bnez a14, 40002282 <_X_ets_unk225c+0x26> -400022bc: 441717 beq a7, a1, 40002304 <_X_ets_unk225c+0xa8> -400022bf: c02710 sub a2, a7, a1 -400022c2: 149020 extui a9, a2, 0, 2 -400022c5: 099976 loopnez a9, 400022d2 <_X_ets_unk225c+0x76> -400022c8: 770b addi.n a7, a7, -1 -400022ca: 0007a2 l8ui a10, a7, 0 -400022cd: 0044a2 s8i a10, a4, 0 -400022d0: 441b addi.n a4, a4, 1 -400022d2: 419220 srli a9, a2, 2 -400022d5: 249976 loopnez a9, 400022fd <_X_ets_unk225c+0xa1> -400022d8: 970b addi.n a9, a7, -1 -400022da: fec7b2 addi a11, a7, -2 -400022dd: fdc7c2 addi a12, a7, -3 -400022e0: 000992 l8ui a9, a9, 0 -400022e3: 000bb2 l8ui a11, a11, 0 -400022e6: 000cc2 l8ui a12, a12, 0 -400022e9: fcc772 addi a7, a7, -4 -400022ec: 004492 s8i a9, a4, 0 -400022ef: 0144b2 s8i a11, a4, 1 -400022f2: 0244c2 s8i a12, a4, 2 -400022f5: 000792 l8ui a9, a7, 0 -400022f8: 034492 s8i a9, a4, 3 -400022fb: 444b addi.n a4, a4, 4 -400022fd: 0b0c movi.n a11, 0 -400022ff: 0044b2 s8i a11, a4, 0 -40002302: f01d retw.n -40002304: 020c movi.n a2, 0 -40002306: 0c0c movi.n a12, 0 -40002308: 0044c2 s8i a12, a4, 0 -4000230b: f01d retw.n -4000230d: 000000 ill -40002310: ffc8a0 excw -40002313: 3f .byte 0x3f -40002314: cca8 l32i.n a10, a12, 48 -40002316: ff .byte 0xff -40002317: 3f .byte 0x3f -40002318: cc9c beqz.n a12, 40002338 <_X_ets_unk225c+0xdc> -4000231a: ff .byte 0xff -4000231b: 3f .byte 0x3f -4000231c: ffccd0 excw -4000231f: 3f .byte 0x3f -40002320: ccbc beqz.n a12, 40002360 <_X_ets_unk225c+0x104> -40002322: ff .byte 0xff -40002323: 3f .byte 0x3f -40002324: 00e136 entry a1, 112 -40002327: 106162 s32i a6, a1, 64 -4000232a: 04dd mov.n a13, a4 -4000232c: 05cd mov.n a12, a5 -4000232e: 000352 l8ui a5, a3, 0 -40002331: 431b addi.n a4, a3, 1 -40002333: 42b516 beqz a5, 40002762 <_X_ets_unk225c+0x506> -40002336: 030c movi.n a3, 0 -40002338: a1d9 s32i.n a13, a1, 40 -4000233a: 91c9 s32i.n a12, a1, 36 -4000233c: 080c movi.n a8, 0 -4000233e: 060c movi.n a6, 0 -40002340: 090c movi.n a9, 0 -40002342: 116192 s32i a9, a1, 68 -40002345: d169 s32i.n a6, a1, 52 -40002347: e189 s32i.n a8, a1, 56 -40002349: 016d mov.n a6, a1 -4000234b: 582c movi.n a8, 37 -4000234d: 1b1587 beq a5, a8, 4000236c <_X_ets_unk225c+0x110> -40002350: 05ad mov.n a10, a5 -40002352: 0002e0 callx8 a2 -40002355: 1121a2 l32i a10, a1, 68 -40002358: aa1b addi.n a10, a10, 1 -4000235a: 1161a2 s32i a10, a1, 68 -4000235d: 000452 l8ui a5, a4, 0 -40002360: 01c442 addi a4, a4, 1 -40002363: 19e516 beqz a5, 40002505 <_X_ets_unk225c+0x2a9> -40002366: 25a0b2 movi a11, 37 -40002369: e395b7 bne a5, a11, 40002350 <_X_ets_unk225c+0xf4> -4000236c: 000452 l8ui a5, a4, 0 -4000236f: 441b addi.n a4, a4, 1 -40002371: d3c5c2 addi a12, a5, -45 -40002374: 192c16 beqz a12, 4000250a <_X_ets_unk225c+0x2ae> -40002377: d0c5d2 addi a13, a5, -48 -4000237a: 0e0c movi.n a14, 0 -4000237c: f1e9 s32i.n a14, a1, 60 -4000237e: 197d16 beqz a13, 40002519 <_X_ets_unk225c+0x2bd> -40002381: 0f0c movi.n a15, 0 -40002383: c1f9 s32i.n a15, a1, 48 -40002385: f82c movi.n a8, 47 -40002387: 27b857 bgeu a8, a5, 400023b2 <_X_ets_unk225c+0x156> -4000238a: 993c movi.n a9, 57 -4000238c: 223957 bltu a9, a5, 400023b2 <_X_ets_unk225c+0x156> -4000238f: 070c movi.n a7, 0 -40002391: 178076 loop a0, 400023ac <_X_ets_unk225c+0x150> -40002394: fc2c movi.n a12, 47 -40002396: a07770 addx4 a7, a7, a7 -40002399: 907750 addx2 a7, a7, a5 -4000239c: d0c772 addi a7, a7, -48 -4000239f: 000452 l8ui a5, a4, 0 -400023a2: 441b addi.n a4, a4, 1 -400023a4: 0cbc57 bgeu a12, a5, 400023b4 <_X_ets_unk225c+0x158> -400023a7: 983c movi.n a8, 57 -400023a9: 073857 bltu a8, a5, 400023b4 <_X_ets_unk225c+0x158> -400023ac: fff846 j 40002391 <_X_ets_unk225c+0x135> -400023af: 000000 ill -400023b2: 070c movi.n a7, 0 -400023b4: d2c592 addi a9, a5, -46 -400023b7: 301916 beqz a9, 400026bc <_X_ets_unk225c+0x460> -400023ba: 94c5a2 addi a10, a5, -108 -400023bd: 21ca16 beqz a10, 400025dd <_X_ets_unk225c+0x381> -400023c0: 4b4c movi.n a11, 68 -400023c2: 4615b7 beq a5, a11, 4000240c <_X_ets_unk225c+0x1b0> -400023c5: 5c5c movi.n a12, 85 -400023c7: 4115c7 beq a5, a12, 4000240c <_X_ets_unk225c+0x1b0> -400023ca: 8d5c movi.n a13, 88 -400023cc: 3c15d7 beq a5, a13, 4000240c <_X_ets_unk225c+0x1b0> -400023cf: 64a0e2 movi a14, 100 -400023d2: 3615e7 beq a5, a14, 4000240c <_X_ets_unk225c+0x1b0> -400023d5: 0e0c movi.n a14, 0 -400023d7: 0c0c movi.n a12, 0 -400023d9: 90c5f2 addi a15, a5, -112 -400023dc: 30cf16 beqz a15, 400026ec <_X_ets_unk225c+0x490> -400023df: 75a082 movi a8, 117 -400023e2: 051587 beq a5, a8, 400023eb <_X_ets_unk225c+0x18f> -400023e5: 78a092 movi a9, 120 -400023e8: 649597 bne a5, a9, 40002450 <_X_ets_unk225c+0x1f4> -400023eb: 31ac16 beqz a12, 40002709 <_X_ets_unk225c+0x4ad> -400023ee: 1021c2 l32i a12, a1, 64 -400023f1: 8b7c movi.n a11, -8 -400023f3: ac7b addi.n a10, a12, 7 -400023f5: 10aab0 and a10, a10, a11 -400023f8: 8b1c movi.n a11, 24 -400023fa: ca8b addi.n a12, a10, 8 -400023fc: 1061c2 s32i a12, a1, 64 -400023ff: 02abc7 bge a11, a12, 40002405 <_X_ets_unk225c+0x1a9> -40002402: 006106 j 4000258a <_X_ets_unk225c+0x32e> -40002405: 9198 l32i.n a9, a1, 36 -40002407: 0062c6 j 40002596 <_X_ets_unk225c+0x33a> -4000240a: d20000 quos a0, a0, a0 -4000240d: 1c1021 l32r a2, 3ffc9450 <_start-0x36bb0> -40002410: ad8c beqz.n a13, 4000241e <_X_ets_unk225c+0x1c2> -40002412: 4b0d excw -40002414: d2dd excw -40002416: d71061 l32r a6, 3fff8058 <_start-0x7fa8> -40002419: 042c movi.n a4, 32 -4000241b: 9198 l32i.n a9, a1, 36 -4000241d: 0002c6 j 4000242c <_X_ets_unk225c+0x1d0> -40002420: 8e1c movi.n a14, 24 -40002422: 042ea7 blt a14, a10, 4000242a <_X_ets_unk225c+0x1ce> -40002425: 4f2c movi.n a15, 36 -40002427: 1061f2 s32i a15, a1, 64 -4000242a: a198 l32i.n a9, a1, 40 -4000242c: 102182 l32i a8, a1, 64 -4000242f: 889a add.n a8, a8, a9 -40002431: ffd882 addmi a8, a8, 0xffffff00 -40002434: 3f2882 l32i a8, a8, 252 -40002437: 0d6182 s32i a8, a1, 52 -4000243a: 318f80 srai a8, a8, 31 -4000243d: 0e6182 s32i a8, a1, 56 -40002440: 9cc592 addi a9, a5, -100 -40002443: 167916 beqz a9, 400025ae <_X_ets_unk225c+0x352> -40002446: bcc5a2 addi a10, a5, -68 -40002449: 161a16 beqz a10, 400025ae <_X_ets_unk225c+0x352> -4000244c: 0b0c movi.n a11, 0 -4000244e: e1b9 s32i.n a11, a1, 56 -40002450: 0f0c movi.n a15, 0 -40002452: 81f9 s32i.n a15, a1, 32 -40002454: 485c movi.n a8, 84 -40002456: dbc5c2 addi a12, a5, -37 -40002459: 0bbc87 bgeu a12, a8, 40002468 <_X_ets_unk225c+0x20c> -4000245c: ffad91 l32r a9, 40002310 <_X_ets_unk225c+0xb4> -4000245f: a09c90 addx4 a9, a12, a9 -40002462: 0998 l32i.n a9, a9, 0 -40002464: 0009a0 jx a9 -40002467: 5a2c00 depbits a0, a12, 5, 3 -4000246a: 0002e0 callx8 a2 -4000246d: 05ad mov.n a10, a5 -4000246f: 0002e0 callx8 a2 -40002472: 1121a2 l32i a10, a1, 68 -40002475: aa2b addi.n a10, a10, 2 -40002477: 1161a2 s32i a10, a1, 68 -4000247a: b139 s32i.n a3, a1, 44 -4000247c: c1b8 l32i.n a11, a1, 48 -4000247e: 81c8 l32i.n a12, a1, 32 -40002480: c07730 sub a7, a7, a3 -40002483: ffc7e2 addi a14, a7, -1 -40002486: 937ec0 movnez a7, a14, a12 -40002489: 17cb16 beqz a11, 40002609 <_X_ets_unk225c+0x3ad> -4000248c: 00ec16 beqz a12, 4000249e <_X_ets_unk225c+0x242> -4000248f: 0cad mov.n a10, a12 -40002491: 0002e0 callx8 a2 -40002494: 1121f2 l32i a15, a1, 68 -40002497: 0c0c movi.n a12, 0 -40002499: ff1b addi.n a15, a15, 1 -4000249b: 1161f2 s32i a15, a1, 68 -4000249e: 053c movi.n a5, 48 -400024a0: f188 l32i.n a8, a1, 60 -400024a2: 0861c2 s32i a12, a1, 32 -400024a5: 167816 beqz a8, 40002610 <_X_ets_unk225c+0x3b4> -400024a8: 81c8 l32i.n a12, a1, 32 -400024aa: bc8c beqz.n a12, 400024b9 <_X_ets_unk225c+0x25d> -400024ac: 0cad mov.n a10, a12 -400024ae: 0002e0 callx8 a2 -400024b1: 112192 l32i a9, a1, 68 -400024b4: 991b addi.n a9, a9, 1 -400024b6: 116192 s32i a9, a1, 68 -400024b9: b1a8 l32i.n a10, a1, 44 -400024bb: ffca52 addi a5, a10, -1 -400024be: 203550 or a3, a5, a5 -400024c1: 181aa6 blti a10, 1, 400024dd <_X_ets_unk225c+0x281> -400024c4: 0006a2 l8ui a10, a6, 0 -400024c7: 661b addi.n a6, a6, 1 -400024c9: 0002e0 callx8 a2 -400024cc: 330b addi.n a3, a3, -1 -400024ce: f20366 bnei a3, -1, 400024c4 <_X_ets_unk225c+0x268> -400024d1: f37c movi.n a3, -1 -400024d3: 1121b2 l32i a11, a1, 68 -400024d6: c51b addi.n a12, a5, 1 -400024d8: bbca add.n a11, a11, a12 -400024da: 1161b2 s32i a11, a1, 68 -400024dd: f1d8 l32i.n a13, a1, 60 -400024df: e7ad16 beqz a13, 4000235d <_X_ets_unk225c+0x101> -400024e2: 07ed mov.n a14, a7 -400024e4: 570b addi.n a5, a7, -1 -400024e6: 057d mov.n a7, a5 -400024e8: 021ee6 bgei a14, 1, 400024ee <_X_ets_unk225c+0x292> -400024eb: ff9b86 j 4000235d <_X_ets_unk225c+0x101> -400024ee: 0a2c movi.n a10, 32 -400024f0: 0002e0 callx8 a2 -400024f3: 770b addi.n a7, a7, -1 -400024f5: f50766 bnei a7, -1, 400024ee <_X_ets_unk225c+0x292> -400024f8: 1121f2 l32i a15, a1, 68 -400024fb: 851b addi.n a8, a5, 1 -400024fd: ff8a add.n a15, a15, a8 -400024ff: 1161f2 s32i a15, a1, 68 -40002502: ff95c6 j 4000235d <_X_ets_unk225c+0x101> -40002505: 112122 l32i a2, a1, 68 -40002508: f01d retw.n -4000250a: 1a0c movi.n a10, 1 -4000250c: 000452 l8ui a5, a4, 0 -4000250f: 441b addi.n a4, a4, 1 -40002511: f1a9 s32i.n a10, a1, 60 -40002513: d0c592 addi a9, a5, -48 -40002516: e67956 bnez a9, 40002381 <_X_ets_unk225c+0x125> -40002519: 000452 l8ui a5, a4, 0 -4000251c: 1b0c movi.n a11, 1 -4000251e: 441b addi.n a4, a4, 1 -40002520: c1b9 s32i.n a11, a1, 48 -40002522: ff97c6 j 40002385 <_X_ets_unk225c+0x129> -40002525: 3c0000 excw -40002528: e00a add.n a14, a0, a0 -4000252a: a20002 l8ui a0, a0, 162 -4000252d: e078a0 subx4 a7, a8, a10 -40002530: 0c0002 l8ui a0, a0, 12 -40002533: 1c0c87 bnone a12, a8, 40002553 <_X_ets_unk225c+0x2f7> -40002536: c1c9 s32i.n a12, a1, 48 -40002538: 4d4c movi.n a13, 68 -4000253a: 3615d7 beq a5, a13, 40002574 <_X_ets_unk225c+0x318> -4000253d: 5e5c movi.n a14, 85 -4000253f: 3115e7 beq a5, a14, 40002574 <_X_ets_unk225c+0x318> -40002542: a8c5f2 addi a15, a5, -88 -40002545: 201f16 beqz a15, 4000274a <_X_ets_unk225c+0x4ee> -40002548: 64a082 movi a8, 100 -4000254b: 251587 beq a5, a8, 40002574 <_X_ets_unk225c+0x318> -4000254e: 70a092 movi a9, 112 -40002551: 0b1597 beq a5, a9, 40002560 <_X_ets_unk225c+0x304> -40002554: 75a0a2 movi a10, 117 -40002557: 1915a7 beq a5, a10, 40002574 <_X_ets_unk225c+0x318> -4000255a: 78a0b2 movi a11, 120 -4000255d: 2395b7 bne a5, a11, 40002584 <_X_ets_unk225c+0x328> -40002560: e1b8 l32i.n a11, a1, 56 -40002562: d1a8 l32i.n a10, a1, 52 -40002564: 01cd mov.n a12, a1 -40002566: 0d1c movi.n a13, 16 -40002568: ff6be1 l32r a14, 40002314 <_X_ets_unk225c+0xb8> -4000256b: ffcf25 call8 4000225c <_X_ets_unk225c> -4000256e: 0a3d mov.n a3, a10 -40002570: 000406 j 40002584 <_X_ets_unk225c+0x328> -40002573: e1b800 excw -40002576: d1a8 l32i.n a10, a1, 52 -40002578: 01cd mov.n a12, a1 -4000257a: ad0c movi.n a13, 10 -4000257c: ff67e1 l32r a14, 40002318 <_X_ets_unk225c+0xbc> -4000257f: ffcde5 call8 4000225c <_X_ets_unk225c> -40002582: 0a3d mov.n a3, a10 -40002584: 016d mov.n a6, a1 -40002586: ffbc06 j 4000247a <_X_ets_unk225c+0x21e> -40002589: 8c1c00 excw -4000258c: 042ca7 blt a12, a10, 40002594 <_X_ets_unk225c+0x338> -4000258f: 8d2c movi.n a13, 40 -40002591: 1061d2 s32i a13, a1, 64 -40002594: a198 l32i.n a9, a1, 40 -40002596: 1021f2 l32i a15, a1, 64 -40002599: 9cc5e2 addi a14, a5, -100 -4000259c: ff9a add.n a15, a15, a9 -4000259e: ffdff2 addmi a15, a15, 0xffffff00 -400025a1: 3f2f82 l32i a8, a15, 252 -400025a4: e189 s32i.n a8, a1, 56 -400025a6: 3e2ff2 l32i a15, a15, 248 -400025a9: d1f9 s32i.n a15, a1, 52 -400025ab: e97e56 bnez a14, 40002446 <_X_ets_unk225c+0x1ea> -400025ae: d1a8 l32i.n a10, a1, 52 -400025b0: 0d0c movi.n a13, 0 -400025b2: e188 l32i.n a8, a1, 56 -400025b4: 0c0c movi.n a12, 0 -400025b6: 0218e6 bgei a8, 1, 400025bc <_X_ets_unk225c+0x360> -400025b9: 006146 j 40002742 <_X_ets_unk225c+0x4e6> -400025bc: e90c16 beqz a12, 40002450 <_X_ets_unk225c+0x1f4> -400025bf: d1a8 l32i.n a10, a1, 52 -400025c1: fe7c movi.n a14, -1 -400025c3: e1c8 l32i.n a12, a1, 56 -400025c5: d92c movi.n a9, 45 -400025c7: 8199 s32i.n a9, a1, 32 -400025c9: 30cce0 xor a12, a12, a14 -400025cc: 60b0a0 neg a11, a10 -400025cf: d1b9 s32i.n a11, a1, 52 -400025d1: dc1b addi.n a13, a12, 1 -400025d3: 83cda0 moveqz a12, a13, a10 -400025d6: e1c9 s32i.n a12, a1, 56 -400025d8: ff9e06 j 40002454 <_X_ets_unk225c+0x1f8> -400025db: 520000 excw -400025de: 1b0004 mula.dd.hh.lddec m0, a0, m0, m2 -400025e1: c5f244 excw -400025e4: ff1694 excw -400025e7: 0e .byte 0xe -400025e8: 0c0c movi.n a12, 0 -400025ea: bcc582 addi a8, a5, -68 -400025ed: 0f4816 beqz a8, 400026e5 <_X_ets_unk225c+0x489> -400025f0: abc592 addi a9, a5, -85 -400025f3: 0ee916 beqz a9, 400026e5 <_X_ets_unk225c+0x489> -400025f6: a8c5a2 addi a10, a5, -88 -400025f9: 0e8a16 beqz a10, 400026e5 <_X_ets_unk225c+0x489> -400025fc: 9cc5b2 addi a11, a5, -100 -400025ff: 0e2b16 beqz a11, 400026e5 <_X_ets_unk225c+0x489> -40002602: 1e0c movi.n a14, 1 -40002604: ff7446 j 400023d9 <_X_ets_unk225c+0x17d> -40002607: c80000 excw -4000260a: 052cf1 l32r a15, 3ffc3abc <_start-0x3c544> -4000260d: e97c56 bnez a12, 400024a8 <_X_ets_unk225c+0x24c> -40002610: 07dd mov.n a13, a7 -40002612: 370b addi.n a3, a7, -1 -40002614: 037d mov.n a7, a3 -40002616: 021de6 bgei a13, 1, 4000261c <_X_ets_unk225c+0x3c0> -40002619: ffa2c6 j 400024a8 <_X_ets_unk225c+0x24c> -4000261c: 05ad mov.n a10, a5 -4000261e: 0002e0 callx8 a2 -40002621: 770b addi.n a7, a7, -1 -40002623: f50766 bnei a7, -1, 4000261c <_X_ets_unk225c+0x3c0> -40002626: f77c movi.n a7, -1 -40002628: 1121e2 l32i a14, a1, 68 -4000262b: f31b addi.n a15, a3, 1 -4000262d: eefa add.n a14, a14, a15 -4000262f: 1161e2 s32i a14, a1, 68 -40002632: ff9c86 j 400024a8 <_X_ets_unk225c+0x24c> -40002635: 102192 l32i a9, a1, 64 -40002638: 881c movi.n a8, 24 -4000263a: 09cd mov.n a12, a9 -4000263c: 994b addi.n a9, a9, 4 -4000263e: 106192 s32i a9, a1, 64 -40002641: 052897 blt a8, a9, 4000264a <_X_ets_unk225c+0x3ee> -40002644: 9198 l32i.n a9, a1, 36 -40002646: 000306 j 40002656 <_X_ets_unk225c+0x3fa> -40002649: 8a1c00 depbits a0, a12, 8, 2 -4000264c: 042ac7 blt a10, a12, 40002654 <_X_ets_unk225c+0x3f8> -4000264f: 4b2c movi.n a11, 36 -40002651: 1061b2 s32i a11, a1, 64 -40002654: a198 l32i.n a9, a1, 40 -40002656: 102162 l32i a6, a1, 64 -40002659: ff30d1 l32r a13, 4000231c <_X_ets_unk225c+0xc0> -4000265c: 669a add.n a6, a6, a9 -4000265e: ffd662 addmi a6, a6, 0xffffff00 -40002661: 3f2662 l32i a6, a6, 252 -40002664: 836d60 moveqz a6, a13, a6 -40002667: 0006c2 l8ui a12, a6, 0 -4000266a: 0efc16 beqz a12, 4000275d <_X_ets_unk225c+0x501> -4000266d: 069d mov.n a9, a6 -4000266f: 030c movi.n a3, 0 -40002671: 098076 loop a0, 4000267e <_X_ets_unk225c+0x422> -40002674: 331b addi.n a3, a3, 1 -40002676: 010982 l8ui a8, a9, 1 -40002679: 991b addi.n a9, a9, 1 -4000267b: dfb816 beqz a8, 4000247a <_X_ets_unk225c+0x21e> -4000267e: fffbc6 j 40002671 <_X_ets_unk225c+0x415> -40002681: 1021a2 l32i a10, a1, 64 -40002684: 891c movi.n a9, 24 -40002686: 0acd mov.n a12, a10 -40002688: aa4b addi.n a10, a10, 4 -4000268a: 1061a2 s32i a10, a1, 64 -4000268d: 0529a7 blt a9, a10, 40002696 <_X_ets_unk225c+0x43a> -40002690: 91c8 l32i.n a12, a1, 36 -40002692: 000306 j 400026a2 <_X_ets_unk225c+0x446> -40002695: 8b1c00 depbits a0, a12, 24, 2 -40002698: 042bc7 blt a11, a12, 400026a0 <_X_ets_unk225c+0x444> -4000269b: 4c2c movi.n a12, 36 -4000269d: 1061c2 s32i a12, a1, 64 -400026a0: a1c8 l32i.n a12, a1, 40 -400026a2: 1021a2 l32i a10, a1, 64 -400026a5: aaca add.n a10, a10, a12 -400026a7: ffdaa2 addmi a10, a10, 0xffffff00 -400026aa: fc0aa2 l8ui a10, a10, 252 -400026ad: 0002e0 callx8 a2 -400026b0: ff2846 j 40002355 <_X_ets_unk225c+0xf9> -400026b3: 5a2c movi.n a10, 37 -400026b5: 0002e0 callx8 a2 -400026b8: ff6f86 j 4000247a <_X_ets_unk225c+0x21e> -400026bb: fb2c00 depbits a0, a12, 31, 3 -400026be: 000452 l8ui a5, a4, 0 -400026c1: c1c8 l32i.n a12, a1, 48 -400026c3: 441b addi.n a4, a4, 1 -400026c5: cc1b addi.n a12, a12, 1 -400026c7: c1c9 s32i.n a12, a1, 48 -400026c9: 023b57 bltu a11, a5, 400026cf <_X_ets_unk225c+0x473> -400026cc: ff3a86 j 400023ba <_X_ets_unk225c+0x15e> -400026cf: 9d3c movi.n a13, 57 -400026d1: 25bd57 bgeu a13, a5, 400026fa <_X_ets_unk225c+0x49e> -400026d4: ff3886 j 400023ba <_X_ets_unk225c+0x15e> -400026d7: 1c0c00 excw -400026da: 000452 l8ui a5, a4, 0 -400026dd: 441b addi.n a4, a4, 1 -400026df: bcc5e2 addi a14, a5, -68 -400026e2: f0ae56 bnez a14, 400025f0 <_X_ets_unk225c+0x394> -400026e5: d05c56 bnez a12, 400023ee <_X_ets_unk225c+0x192> -400026e8: 000806 j 4000270c <_X_ets_unk225c+0x4b0> -400026eb: ec5600 excw -400026ee: cf .byte 0xcf -400026ef: 000646 j 4000270c <_X_ets_unk225c+0x4b0> -400026f2: 9f3c movi.n a15, 57 -400026f4: 02bf57 bgeu a15, a5, 400026fa <_X_ets_unk225c+0x49e> -400026f7: ff2fc6 j 400023ba <_X_ets_unk225c+0x15e> -400026fa: f82c movi.n a8, 47 -400026fc: 000452 l8ui a5, a4, 0 -400026ff: 441b addi.n a4, a4, 1 -40002701: ed3857 bltu a8, a5, 400026f2 <_X_ets_unk225c+0x496> -40002704: ff2c86 j 400023ba <_X_ets_unk225c+0x15e> -40002707: 160000 excw -4000270a: fe .byte 0xfe -4000270b: cf .byte 0xcf -4000270c: 1021b2 l32i a11, a1, 64 -4000270f: 891c movi.n a9, 24 -40002711: 0bad mov.n a10, a11 -40002713: bb4b addi.n a11, a11, 4 -40002715: 1061b2 s32i a11, a1, 64 -40002718: 0429b7 blt a9, a11, 40002720 <_X_ets_unk225c+0x4c4> -4000271b: 9198 l32i.n a9, a1, 36 -4000271d: 0002c6 j 4000272c <_X_ets_unk225c+0x4d0> -40002720: 8c1c movi.n a12, 24 -40002722: 042ca7 blt a12, a10, 4000272a <_X_ets_unk225c+0x4ce> -40002725: 4d2c movi.n a13, 36 -40002727: 1061d2 s32i a13, a1, 64 -4000272a: a198 l32i.n a9, a1, 40 -4000272c: 1021e2 l32i a14, a1, 64 -4000272f: ee9a add.n a14, a14, a9 -40002731: ffdee2 addmi a14, a14, 0xffffff00 -40002734: 3f2ee2 l32i a14, a14, 252 -40002737: d1e9 s32i.n a14, a1, 52 -40002739: 31efe0 srai a14, a14, 31 -4000273c: e1e9 s32i.n a14, a1, 56 -4000273e: ff3f86 j 40002440 <_X_ets_unk225c+0x1e4> -40002741: 28ac00 excw -40002744: 1c0c movi.n a12, 1 -40002746: ff9c86 j 400025bc <_X_ets_unk225c+0x360> -40002749: e1b800 excw -4000274c: d1a8 l32i.n a10, a1, 52 -4000274e: 01cd mov.n a12, a1 -40002750: 0d1c movi.n a13, 16 -40002752: fef3e1 l32r a14, 40002320 <_X_ets_unk225c+0xc4> -40002755: ffb065 call8 4000225c <_X_ets_unk225c> -40002758: 0a3d mov.n a3, a10 -4000275a: ff8986 j 40002584 <_X_ets_unk225c+0x328> -4000275d: 030c movi.n a3, 0 -4000275f: ff45c6 j 4000247a <_X_ets_unk225c+0x21e> -40002762: 020c movi.n a2, 0 -40002764: f01d retw.n -40002766: d70000 excw -40002769: 023a add.n a0, a2, a3 -4000276b: ff9346 j 400025bc <_X_ets_unk225c+0x360> -4000276e: fff486 j 40002744 <_X_ets_unk225c+0x4e8> -40002771: 000000 ill - -40002774 <ets_install_putc1>: -40002774: 004136 entry a1, 32 -40002777: fe7631 l32r a3, 40002150 <_st_0x3fffda9c> -4000277a: 3329 s32i.n a2, a3, 12 -4000277c: f01d retw.n - ... - -40002780 <_c_0x4000223c_ets_uart_putc>: -40002780: 223c movi.n a2, 50 -40002782: 364000 excw - -40002784 <_X_ets_install_uart_printf>: -40002784: 004136 entry a1, 32 -40002787: fffea1 l32r a10, 40002780 <_c_0x4000223c_ets_uart_putc> -4000278a: fffea5 call8 40002774 <ets_install_putc1> -4000278d: f01d retw.n - ... - -40002790 <_c_0x400027dc>: -40002790: 27dc bnez.n a7, 400027a6 <_X_ets_install_external_printf+0x12> -40002792: 364000 excw - -40002794 <_X_ets_install_external_printf>: -40002794: 004136 entry a1, 32 -40002797: fe6e51 l32r a5, 40002150 <_st_0x3fffda9c> -4000279a: 5529 s32i.n a2, a5, 20 -4000279c: 838c beqz.n a3, 400027a8 <_X_ets_install_external_printf+0x14> -4000279e: 20a330 or a10, a3, a3 -400027a1: 000125 call8 400027b4 <_X_ets_install_putc2> -400027a4: 6549 s32i.n a4, a5, 24 -400027a6: f01d retw.n -400027a8: fffaa1 l32r a10, 40002790 <_c_0x400027dc> -400027ab: 0000a5 call8 400027b4 <_X_ets_install_putc2> -400027ae: 6549 s32i.n a4, a5, 24 -400027b0: f01d retw.n - ... - -400027b4 <_X_ets_install_putc2>: -400027b4: 004136 entry a1, 32 -400027b7: fe6631 l32r a3, 40002150 <_st_0x3fffda9c> -400027ba: 4329 s32i.n a2, a3, 16 -400027bc: f01d retw.n - ... - -400027c0 <_X_ets_get_printf_buf_remain_len>: -400027c0: 004136 entry a1, 32 -400027c3: fe6321 l32r a2, 40002150 <_st_0x3fffda9c> -400027c6: 0e1222 l16ui a2, a2, 28 -400027c9: f01d retw.n - ... - -400027cc <_X_ets_reset_printf_buf_len>: -400027cc: 004136 entry a1, 32 -400027cf: fe6031 l32r a3, 40002150 <_st_0x3fffda9c> -400027d2: 020c movi.n a2, 0 -400027d4: 0e5322 s16i a2, a3, 28 -400027d7: f01d retw.n -400027d9: 000000 ill - -400027dc <_X_ets_putc>: -400027dc: 004136 entry a1, 32 -400027df: fe5c61 l32r a6, 40002150 <_st_0x3fffda9c> -400027e2: 0e1642 l16ui a4, a6, 28 -400027e5: 8638 l32i.n a3, a6, 32 -400027e7: d48c beqz.n a4, 400027f8 <_X_ets_putc+0x1c> -400027e9: 004322 s8i a2, a3, 0 -400027ec: 540b addi.n a5, a4, -1 -400027ee: 331b addi.n a3, a3, 1 -400027f0: 0e5652 s16i a5, a6, 28 -400027f3: 8639 s32i.n a3, a6, 32 -400027f5: f01d retw.n -400027f7: f01d00 subx8 a1, a13, a0 -400027fa: bc0000 excw -400027fd: ffda add.n a15, a15, a13 -400027ff: 3f .byte 0x3f -40002800: 002220 excw -40002803: a13640 excw - -40002804 <ets_printf>: -40002804: 00a136 entry a1, 80 -40002807: 4129 s32i.n a2, a1, 16 -40002809: 5139 s32i.n a3, a1, 20 -4000280b: 6149 s32i.n a4, a1, 24 -4000280d: 7159 s32i.n a5, a1, 28 -4000280f: 079d mov.n a9, a7 -40002811: fe4f71 l32r a7, 40002150 <_st_0x3fffda9c> -40002814: 8169 s32i.n a6, a1, 32 -40002816: 3788 l32i.n a8, a7, 12 -40002818: 9199 s32i.n a9, a1, 36 -4000281a: 38cc bnez.n a8, 40002821 <ets_printf+0x1d> -4000281c: 0427b2 l32i a11, a7, 16 -4000281f: 5bbc beqz.n a11, 40002858 <ets_printf+0x54> -40002821: 57d8 l32i.n a13, a7, 20 -40002823: 00dd16 beqz a13, 40002834 <ets_printf+0x30> -40002826: fff5a1 l32r a10, 400027fc <_X_ets_putc+0x20> -40002829: fccab2 addi a11, a10, -4 -4000282c: 04cac2 addi a12, a10, 4 -4000282f: 000de0 callx8 a13 -40002832: 4128 l32i.n a2, a1, 16 -40002834: fff3a1 l32r a10, 40002800 <_X_ets_putc+0x24> -40002837: 10c1d2 addi a13, a1, 16 -4000283a: 30c1c2 addi a12, a1, 48 -4000283d: 4e0c movi.n a14, 4 -4000283f: 02bd mov.n a11, a2 -40002841: 21e9 s32i.n a14, a1, 8 -40002843: 01c9 s32i.n a12, a1, 0 -40002845: 11d9 s32i.n a13, a1, 4 -40002847: ffade5 call8 40002324 <_X_ets_unk225c+0xc8> -4000284a: 67b8 l32i.n a11, a7, 24 -4000284c: 0a2d mov.n a2, a10 -4000284e: 3b8c beqz.n a11, 40002855 <ets_printf+0x51> -40002850: 97a8 l32i.n a10, a7, 36 -40002852: 000be0 callx8 a11 -40002855: f01d retw.n -40002857: 020c00 andb b0, b12, b0 -4000285a: f01d retw.n -4000285c: 00a136 entry a1, 80 -4000285f: 02bd mov.n a11, a2 -40002861: 4129 s32i.n a2, a1, 16 -40002863: 5139 s32i.n a3, a1, 20 -40002865: 6149 s32i.n a4, a1, 24 -40002867: 7159 s32i.n a5, a1, 28 -40002869: 8169 s32i.n a6, a1, 32 -4000286b: 9179 s32i.n a7, a1, 36 -4000286d: ffc4a1 l32r a10, 40002780 <_c_0x4000223c_ets_uart_putc> -40002870: 30c1c2 addi a12, a1, 48 -40002873: 4e0c movi.n a14, 4 -40002875: 10c1d2 addi a13, a1, 16 -40002878: 11d9 s32i.n a13, a1, 4 -4000287a: 21e9 s32i.n a14, a1, 8 -4000287c: 01c9 s32i.n a12, a1, 0 -4000287e: ffaa65 call8 40002324 <_X_ets_unk225c+0xc8> -40002881: 0a2d mov.n a2, a10 -40002883: f01d retw.n -40002885: 000000 ill -40002888: 00a136 entry a1, 80 -4000288b: 5139 s32i.n a3, a1, 20 -4000288d: 6149 s32i.n a4, a1, 24 -4000288f: 7159 s32i.n a5, a1, 28 -40002891: 8169 s32i.n a6, a1, 32 -40002893: 02bd mov.n a11, a2 -40002895: fe2e21 l32r a2, 40002150 <_st_0x3fffda9c> -40002898: 9179 s32i.n a7, a1, 36 -4000289a: 52d8 l32i.n a13, a2, 20 -4000289c: 0461b2 s32i a11, a1, 16 -4000289f: 00ed16 beqz a13, 400028b1 <ets_printf+0xad> -400028a2: 20c2a2 addi a10, a2, 32 -400028a5: 1cc2b2 addi a11, a2, 28 -400028a8: 24c2c2 addi a12, a2, 36 -400028ab: 000de0 callx8 a13 -400028ae: 0421b2 l32i a11, a1, 16 -400028b1: ffb7a1 l32r a10, 40002790 <_c_0x400027dc> -400028b4: 10c1d2 addi a13, a1, 16 -400028b7: 30c1c2 addi a12, a1, 48 -400028ba: 4e0c movi.n a14, 4 -400028bc: 21e9 s32i.n a14, a1, 8 -400028be: 01c9 s32i.n a12, a1, 0 -400028c0: 11d9 s32i.n a13, a1, 4 -400028c2: ffa625 call8 40002324 <_X_ets_unk225c+0xc8> -400028c5: 62b8 l32i.n a11, a2, 24 -400028c7: 0a3d mov.n a3, a10 -400028c9: 3b8c beqz.n a11, 400028d0 <ets_printf+0xcc> -400028cb: 92a8 l32i.n a10, a2, 36 -400028cd: 000be0 callx8 a11 -400028d0: 032d mov.n a2, a3 -400028d2: f01d retw.n - -400028d4 <_c_0xdfffffff>: -400028d4: ff .byte 0xff -400028d5: ff .byte 0xff -400028d6: ff .byte 0xff -400028d7: df .byte 0xdf - -400028d8 <_X_get_rst_cause>: -400028d8: 004136 entry a1, 32 -400028db: fa1741 l32r a4, 40001138 <_c_0x60007e00> -400028de: 0020c0 memw -400028e1: 8d2422 l32i a2, a4, 0x234 -400028e4: fffcc1 l32r a12, 400028d4 <_c_0xdfffffff> -400028e7: 542020 extui a2, a2, 0, 6 -400028ea: 325266 bnei a2, 5, 40002920 <_X_get_rst_cause+0x48> -400028ed: 0020c0 memw -400028f0: 8d2432 l32i a3, a4, 0x234 -400028f3: 943c30 extui a3, a3, 12, 10 -400028f6: 371326 beqi a3, 1, 40002931 <_X_get_rst_cause+0x59> -400028f9: 0020c0 memw -400028fc: fff681 l32r a8, 400028d4 <_c_0xdfffffff> -400028ff: 8d24a2 l32i a10, a4, 0x234 -40002902: 090c movi.n a9, 0 -40002904: 94aca0 extui a10, a10, 12, 10 -40002907: f8caa2 addi a10, a10, -8 -4000290a: 9329a0 movnez a2, a9, a10 -4000290d: 0020c0 memw -40002910: 862452 l32i a5, a4, 0x218 -40002913: 105580 and a5, a5, a8 -40002916: 0020c0 memw -40002919: 866452 s32i a5, a4, 0x218 -4000291c: f01d retw.n -4000291e: c00000 sub a0, a0, a0 -40002921: b20020 mulsh a0, a0, a2 -40002924: c08624 excw -40002927: 10bb addi.n a1, a0, 11 -40002929: 0020c0 memw -4000292c: 8664b2 s32i a11, a4, 0x218 -4000292f: f01d retw.n -40002931: ffe8e1 l32r a14, 400028d4 <_c_0xdfffffff> -40002934: 421c movi.n a2, 20 -40002936: 0020c0 memw -40002939: 8624d2 l32i a13, a4, 0x218 -4000293c: 10dde0 and a13, a13, a14 -4000293f: 0020c0 memw -40002942: 8664d2 s32i a13, a4, 0x218 -40002945: f01d retw.n - ... - -40002948 <_XX_unk2948>: -40002948: 004136 entry a1, 32 -4000294b: 070c movi.n a7, 0 -4000294d: f9fa51 l32r a5, 40001138 <_c_0x60007e00> -40002950: 0020c0 memw -40002953: a82562 l32i a6, a5, 0x2a0 -40002956: 0269 s32i.n a6, a2, 0 -40002958: 0020c0 memw -4000295b: a92542 l32i a4, a5, 0x2a4 -4000295e: 400300 ssr a3 -40002961: 914040 srl a4, a4 -40002964: 086407 bbci a4, 0, 40002970 <_l_2970> -40002967: 0020c0 memw -4000296a: a86572 s32i a7, a5, 0x2a0 -4000296d: f01d retw.n - ... - -40002970 <_l_2970>: -40002970: 0279 s32i.n a7, a2, 0 -40002972: 0020c0 memw -40002975: a86572 s32i a7, a5, 0x2a0 -40002978: f01d retw.n - ... - -4000297c <_X_sw_sys_rst>: -4000297c: 004136 entry a1, 32 -4000297f: f76e41 l32r a4, 40000738 <_c_0x80000000> -40002982: f9ed31 l32r a3, 40001138 <_c_0x60007e00> -40002985: 0020c0 memw -40002988: 802322 l32i a2, a3, 0x200 -4000298b: 202240 or a2, a2, a4 -4000298e: 0020c0 memw -40002991: 806322 s32i a2, a3, 0x200 -40002994: f01d retw.n - ... - -40002998 <software_reset_cpu>: -40002998: 004136 entry a1, 32 -4000299b: 80a042 movi a4, 128 -4000299e: f9e631 l32r a3, 40001138 <_c_0x60007e00> -400029a1: 0020c0 memw -400029a4: 802322 l32i a2, a3, 0x200 -400029a7: 202240 or a2, a2, a4 -400029aa: 0020c0 memw -400029ad: 806322 s32i a2, a3, 0x200 -400029b0: f01d retw.n - ... - -400029b4 <_c_0x00400000>: -400029b4: 400000 ssr a0 - ... - -400029b8 <_c_0xffbfffff>: -400029b8: ff .byte 0xff -400029b9: ff .byte 0xff -400029ba: bf .byte 0xbf -400029bb: ff .byte 0xff - -400029bc <_XX_apb_bridge_toggle>: -400029bc: 004136 entry a1, 32 -400029bf: f9de41 l32r a4, 40001138 <_c_0x60007e00> -400029c2: 229c beqz.n a2, 400029d8 <_XX_apb_bridge_toggle+0x1c> -400029c4: fffc31 l32r a3, 400029b4 <_c_0x00400000> -400029c7: 0020c0 memw -400029ca: 862422 l32i a2, a4, 0x218 -400029cd: 202230 or a2, a2, a3 -400029d0: 0020c0 memw -400029d3: 866422 s32i a2, a4, 0x218 -400029d6: f01d retw.n -400029d8: fff891 l32r a9, 400029b8 <_c_0xffbfffff> -400029db: 0020c0 memw -400029de: 862482 l32i a8, a4, 0x218 -400029e1: 108890 and a8, a8, a9 -400029e4: 0020c0 memw -400029e7: 866482 s32i a8, a4, 0x218 -400029ea: f01d retw.n - -400029ec <_X_ets_strcpy>: -400029ec: 004136 entry a1, 32 -400029ef: 20b330 or a11, a3, a3 -400029f2: 20a220 or a10, a2, a2 -400029f5: 032e65 call8 40005cdc <strcpy> -400029f8: 202aa0 or a2, a10, a10 -400029fb: f01d retw.n -400029fd: 000000 ill - -40002a00 <_X_ets_strncpy>: -40002a00: 004136 entry a1, 32 -40002a03: 04cd mov.n a12, a4 -40002a05: 03bd mov.n a11, a3 -40002a07: 02ad mov.n a10, a2 -40002a09: 034865 call8 40005e90 <strncpy> -40002a0c: 0a2d mov.n a2, a10 -40002a0e: f01d retw.n - -40002a10 <_X_ets_strcmp>: -40002a10: 004136 entry a1, 32 -40002a13: 20b330 or a11, a3, a3 -40002a16: 20a220 or a10, a2, a2 -40002a19: 0319e5 call8 40005bb8 <strcmp> -40002a1c: 202aa0 or a2, a10, a10 -40002a1f: f01d retw.n -40002a21: 000000 ill - -40002a24 <_X_ets_strncmp>: -40002a24: 004136 entry a1, 32 -40002a27: 04cd mov.n a12, a4 -40002a29: 03bd mov.n a11, a3 -40002a2b: 02ad mov.n a10, a2 -40002a2d: 033a25 call8 40005dd0 <strncmp> -40002a30: 0a2d mov.n a2, a10 -40002a32: f01d retw.n - -40002a34 <_X_ets_strlen>: -40002a34: 004136 entry a1, 32 -40002a37: 02ad mov.n a10, a2 -40002a39: 033325 call8 40005d6c <strlen> -40002a3c: 0a2d mov.n a2, a10 -40002a3e: f01d retw.n - -40002a40 <_X_ets_strstr>: -40002a40: 004136 entry a1, 32 -40002a43: 20b330 or a11, a3, a3 -40002a46: 20a220 or a10, a2, a2 -40002a49: 035225 call8 40005f6c <strstr> -40002a4c: 202aa0 or a2, a10, a10 -40002a4f: f01d retw.n -40002a51: 000000 ill - -40002a54 <bzero>: -40002a54: 004136 entry a1, 32 -40002a57: 20b330 or a11, a3, a3 -40002a5a: 20a220 or a10, a2, a2 -40002a5d: 03e4e5 call8 400068ac <multofup+0xc> -40002a60: 000090 retw - ... - -40002a64 <ets_str2macaddr>: -40002a64: 004136 entry a1, 32 -40002a67: 0003a2 l8ui a10, a3, 0 -40002a6a: 9b0c movi.n a11, 9 -40002a6c: 02ca26 beqi a10, 32, 40002a72 <ets_str2macaddr+0xe> -40002a6f: 139ab7 bne a10, a11, 40002a86 <ets_str2macaddr+0x22> -40002a72: 0a8076 loop a0, 40002a80 <ets_str2macaddr+0x1c> -40002a75: 0103a2 l8ui a10, a3, 1 -40002a78: 331b addi.n a3, a3, 1 -40002a7a: f7ca26 beqi a10, 32, 40002a75 <ets_str2macaddr+0x11> -40002a7d: 059ab7 bne a10, a11, 40002a86 <ets_str2macaddr+0x22> -40002a80: fffb86 j 40002a72 <ets_str2macaddr+0xe> -40002a83: 000000 ill -40002a86: 040c movi.n a4, 0 -40002a88: 0003a2 l8ui a10, a3, 0 -40002a8b: 0002e5 call8 40002ab8 <ets_str2macaddr+0x54> -40002a8e: 0a5d mov.n a5, a10 -40002a90: 01ea96 bltz a10, 40002ab2 <ets_str2macaddr+0x4e> -40002a93: 0103a2 l8ui a10, a3, 1 -40002a96: 000225 call8 40002ab8 <ets_str2macaddr+0x54> -40002a99: 015a96 bltz a10, 40002ab2 <ets_str2macaddr+0x4e> -40002a9c: 333b addi.n a3, a3, 3 -40002a9e: 924a add.n a9, a2, a4 -40002aa0: 1185c0 slli a8, a5, 4 -40002aa3: 441b addi.n a4, a4, 1 -40002aa5: 8a8a add.n a8, a10, a8 -40002aa7: 004982 s8i a8, a9, 0 -40002aaa: 744040 extui a4, a4, 0, 8 -40002aad: d76466 bnei a4, 6, 40002a88 <ets_str2macaddr+0x24> -40002ab0: f01d retw.n -40002ab2: 020c movi.n a2, 0 -40002ab4: f01d retw.n -40002ab6: 360000 excw -40002ab9: 3c0041 l32r a4, 3ffd1abc <_start-0x2e544> -40002abc: f62c95 call4 3fff8d88 <_start-0x7278> -40002abf: 02b627 bgeu a6, a2, 40002ac5 <ets_str2macaddr+0x61> -40002ac2: 3ab527 bgeu a5, a2, 40002b00 <ets_str2macaddr+0x9c> -40002ac5: 60a032 movi a3, 96 -40002ac8: 05b327 bgeu a3, a2, 40002ad1 <ets_str2macaddr+0x6d> -40002acb: 66a042 movi a4, 102 -40002ace: 0ab427 bgeu a4, a2, 40002adc <ets_str2macaddr+0x78> -40002ad1: 084c movi.n a8, 64 -40002ad3: 1db827 bgeu a8, a2, 40002af4 <ets_str2macaddr+0x90> -40002ad6: 46a092 movi a9, 70 -40002ad9: 173927 bltu a9, a2, 40002af4 <ets_str2macaddr+0x90> -40002adc: 02b627 bgeu a6, a2, 40002ae2 <ets_str2macaddr+0x7e> -40002adf: 1db527 bgeu a5, a2, 40002b00 <ets_str2macaddr+0x9c> -40002ae2: 0a4c movi.n a10, 64 -40002ae4: 10ba27 bgeu a10, a2, 40002af8 <ets_str2macaddr+0x94> -40002ae7: ab5c movi.n a11, 90 -40002ae9: 0b3b27 bltu a11, a2, 40002af8 <ets_str2macaddr+0x94> -40002aec: c9c222 addi a2, a2, -55 -40002aef: 232200 sext a2, a2, 7 -40002af2: f01d retw.n -40002af4: f27c movi.n a2, -1 -40002af6: f01d retw.n -40002af8: a9c222 addi a2, a2, -87 -40002afb: 232200 sext a2, a2, 7 -40002afe: f01d retw.n -40002b00: d0c222 addi a2, a2, -48 -40002b03: 232200 sext a2, a2, 7 -40002b06: f01d retw.n -40002b08: 004136 entry a1, 32 -40002b0b: 00bbe5 call8 400036c8 <_X_uart_wait_tx_empty+0x2c> -40002b0e: 0042a2 s8i a10, a2, 0 -40002b11: f01d retw.n - ... - -40002b14 <ets_putc>: -40002b14: 004136 entry a1, 32 -40002b17: 02ad mov.n a10, a2 -40002b19: 00b125 call8 4000362c <uart_tx_one_char> -40002b1c: f01d retw.n -40002b1e: 000000 ill -40002b21: 6e .byte 0x6e -40002b22: 366000 excw -40002b25: 310041 l32r a4, 3ffcef28 <_start-0x310d8> -40002b28: fe .byte 0xfe -40002b29: ff .byte 0xff -40002b2a: 0020c0 memw -40002b2d: 8c6322 s32i a2, a3, 0x230 -40002b30: f01d retw.n -40002b32: 360000 excw -40002b35: c20041 l32r a4, 3fff3338 <_start-0xccc8> -40002b38: b180a2 excw -40002b3b: fff9 s32i.n a15, a15, 60 -40002b3d: 0020c0 memw -40002b40: 892bb2 l32i a11, a11, 0x224 -40002b43: c0a2b0 sub a10, a2, a11 -40002b46: 0e2ca7 blt a12, a10, 40002b58 <ets_putc+0x44> -40002b49: 131aa6 blti a10, 1, 40002b60 <ets_putc+0x4c> -40002b4c: 03d2a2 addmi a10, a2, 0x300 -40002b4f: 84caa2 addi a10, a10, -124 -40002b52: fffd25 call8 40002b24 <ets_putc+0x10> -40002b55: f01d retw.n -40002b57: 02ad00 andb b10, b13, b0 -40002b5a: fffca5 call8 40002b24 <ets_putc+0x10> -40002b5d: f01d retw.n -40002b5f: abca00 depbits a0, a10, 26, 13 -40002b62: fffc25 call8 40002b24 <ets_putc+0x10> -40002b65: f01d retw.n -40002b67: 413600 srli a3, a0, 6 -40002b6a: 323900 orbc b3, b9, b0 -40002b6d: 4249 s32i.n a4, a2, 16 -40002b6f: 080c movi.n a8, 0 -40002b71: f57c movi.n a5, -1 -40002b73: 0259 s32i.n a5, a2, 0 -40002b75: 1289 s32i.n a8, a2, 4 -40002b77: 2289 s32i.n a8, a2, 8 -40002b79: f01d retw.n -40002b7b: dad000 depbits a0, a0, 13, 14 -40002b7e: ff .byte 0xff -40002b7f: 3f .byte 0x3f -40002b80: ca88 l32i.n a8, a10, 48 -40002b82: ff .byte 0xff -40002b83: 3f .byte 0x3f -40002b84: ccd8 l32i.n a13, a12, 48 -40002b86: ff .byte 0xff -40002b87: 3f .byte 0x3f -40002b88: 004136 entry a1, 32 -40002b8b: fffcb1 l32r a11, 40002b7c <ets_putc+0x68> -40002b8e: 0b98 l32i.n a9, a11, 0 -40002b90: 69bc beqz.n a9, 40002bca <ets_putc+0xb6> -40002b92: 00a0a2 movi a10, 0 -40002b95: 0d8076 loop a0, 40002ba6 <ets_putc+0x92> -40002b98: 1988 l32i.n a8, a9, 4 -40002b9a: c08280 sub a8, a2, a8 -40002b9d: 0818a6 blti a8, 1, 40002ba9 <ets_putc+0x95> -40002ba0: 09ad mov.n a10, a9 -40002ba2: 0998 l32i.n a9, a9, 0 -40002ba4: 198c beqz.n a9, 40002ba9 <ets_putc+0x95> -40002ba6: fffac6 j 40002b95 <ets_putc+0x81> -40002ba9: 0399 s32i.n a9, a3, 0 -40002bab: 1329 s32i.n a2, a3, 4 -40002bad: da9c beqz.n a10, 40002bce <ets_putc+0xba> -40002baf: 0a39 s32i.n a3, a10, 0 -40002bb1: 0398 l32i.n a9, a3, 0 -40002bb3: 119937 bne a9, a3, 40002bc8 <ets_putc+0xb4> -40002bb6: fff2a1 l32r a10, 40002b80 <ets_putc+0x6c> -40002bb9: fff2b1 l32r a11, 40002b84 <ets_putc+0x70> -40002bbc: b1a0c2 movi a12, 177 -40002bbf: 201110 or a1, a1, a1 -40002bc2: ffc425 call8 40002804 <ets_printf> -40002bc5: ffff06 j 40002bc5 <ets_putc+0xb1> -40002bc8: f01d retw.n -40002bca: 0399 s32i.n a9, a3, 0 -40002bcc: 1329 s32i.n a2, a3, 4 -40002bce: 02ad mov.n a10, a2 -40002bd0: 0b39 s32i.n a3, a11, 0 -40002bd2: fff625 call8 40002b34 <ets_putc+0x20> -40002bd5: fff606 j 40002bb1 <ets_putc+0x9d> -40002bd8: 1388 l32i.n a8, a3, 4 -40002bda: 360000 excw -40002bdd: 880041 l32r a4, 3ffe4be0 <_start-0x1b420> -40002be0: fd9102 l16si a0, a1, 0x1fa -40002be3: ff .byte 0xff -40002be4: 110826 beqi a8, -1, 40002bf9 <ets_putc+0xe5> -40002be7: ffe6a1 l32r a10, 40002b80 <ets_putc+0x6c> -40002bea: ffe6b1 l32r a11, 40002b84 <ets_putc+0x70> -40002bed: bda0c2 movi a12, 189 -40002bf0: ffc125 call8 40002804 <ets_printf> -40002bf3: ffff06 j 40002bf3 <ets_putc+0xdf> -40002bf6: 000000 ill -40002bf9: 823390 mull a3, a3, a9 -40002bfc: 148c beqz.n a4, 40002c01 <ets_putc+0xed> -40002bfe: 026232 s32i a3, a2, 8 -40002c01: fe4a65 call8 400010a8 <_X_ets_enter_critical> -40002c04: 20b220 or a11, a2, a2 -40002c07: ffc6a1 l32r a10, 40002b20 <ets_putc+0xc> -40002c0a: 0020c0 memw -40002c0d: 892aa2 l32i a10, a10, 0x224 -40002c10: f03d nop.n -40002c12: 80a3a0 add a10, a3, a10 -40002c15: fff725 call8 40002b88 <ets_putc+0x74> -40002c18: fe4a25 call8 400010bc <_X_ets_exit_critical> -40002c1b: f01d retw.n -40002c1d: 000000 ill -40002c20: 004136 entry a1, 32 -40002c23: 0288 l32i.n a8, a2, 0 -40002c25: a03330 addx4 a3, a3, a3 -40002c28: 110826 beqi a8, -1, 40002c3d <ets_putc+0x129> -40002c2b: ffd5a1 l32r a10, 40002b80 <ets_putc+0x6c> -40002c2e: ffd5b1 l32r a11, 40002b84 <ets_putc+0x70> -40002c31: d3a0c2 movi a12, 211 -40002c34: ffbce5 call8 40002804 <ets_printf> -40002c37: ffff06 j 40002c37 <ets_putc+0x123> -40002c3a: 000000 ill -40002c3d: 048c beqz.n a4, 40002c41 <ets_putc+0x12d> -40002c3f: 2239 s32i.n a3, a2, 8 -40002c41: fe4665 call8 400010a8 <_X_ets_enter_critical> -40002c44: 20b220 or a11, a2, a2 -40002c47: ffb6a1 l32r a10, 40002b20 <ets_putc+0xc> -40002c4a: 0020c0 memw -40002c4d: 892aa2 l32i a10, a10, 0x224 -40002c50: 80a3a0 add a10, a3, a10 -40002c53: fff365 call8 40002b88 <ets_putc+0x74> -40002c56: fe4665 call8 400010bc <_X_ets_exit_critical> -40002c59: 000090 retw -40002c5c: 004136 entry a1, 32 -40002c5f: fe44a5 call8 400010a8 <_X_ets_enter_critical> -40002c62: ffc6c1 l32r a12, 40002b7c <ets_putc+0x68> -40002c65: 0020f0 nop -40002c68: 002ca2 l32i a10, a12, 0 -40002c6b: 019a16 beqz a10, 40002c88 <ets_putc+0x174> -40002c6e: 00a0b2 movi a11, 0 -40002c71: 088076 loop a0, 40002c7d <ets_putc+0x169> -40002c74: 0812a7 beq a2, a10, 40002c80 <ets_putc+0x16c> -40002c77: 0abd mov.n a11, a10 -40002c79: 0aa8 l32i.n a10, a10, 0 -40002c7b: 9a8c beqz.n a10, 40002c88 <ets_putc+0x174> -40002c7d: fffc06 j 40002c71 <ets_putc+0x15d> -40002c80: 4a8c beqz.n a10, 40002c88 <ets_putc+0x174> -40002c82: 2b9c beqz.n a11, 40002c98 <ets_putc+0x184> -40002c84: 0a88 l32i.n a8, a10, 0 -40002c86: 0b89 s32i.n a8, a11, 0 -40002c88: fe4325 call8 400010bc <_X_ets_exit_critical> -40002c8b: 00a092 movi a9, 0 -40002c8e: ffafa2 movi a10, -1 -40002c91: 0062a2 s32i a10, a2, 0 -40002c94: 2299 s32i.n a9, a2, 8 -40002c96: f01d retw.n -40002c98: 0ab8 l32i.n a11, a10, 0 -40002c9a: 0cb9 s32i.n a11, a12, 0 -40002c9c: fffa06 j 40002c88 <ets_putc+0x174> -40002c9f: 413600 srli a3, a0, 6 -40002ca2: 028800 andb b8, b8, b0 -40002ca5: 0f0826 beqi a8, -1, 40002cb8 <ets_putc+0x1a4> -40002ca8: ffb6a1 l32r a10, 40002b80 <ets_putc+0x6c> -40002cab: ffb6b1 l32r a11, 40002b84 <ets_putc+0x70> -40002cae: 02a1c2 movi a12, 0x102 -40002cb1: ffb525 call8 40002804 <ets_printf> -40002cb4: ffff06 j 40002cb4 <ets_putc+0x1a0> -40002cb7: 02ad00 andb b10, b13, b0 -40002cba: 0b0c movi.n a11, 0 -40002cbc: 0c0c movi.n a12, 0 -40002cbe: ffeaa5 call8 40002b68 <ets_putc+0x54> -40002cc1: f01d retw.n -40002cc3: 413600 srli a3, a0, 6 -40002cc6: 3e2500 excw -40002cc9: fe .byte 0xfe -40002cca: ff9521 l32r a2, 40002b20 <ets_putc+0xc> -40002ccd: ffab31 l32r a3, 40002b7c <ets_putc+0x68> -40002cd0: 0020c0 memw -40002cd3: 03b8 l32i.n a11, a3, 0 -40002cd5: 892292 l32i a9, a2, 0x224 -40002cd8: 0b9c beqz.n a11, 40002cec <ets_putc+0x1d8> -40002cda: 1b88 l32i.n a8, a11, 4 -40002cdc: ffaf42 movi a4, -1 -40002cdf: c08890 sub a8, a8, a9 -40002ce2: 0e18a6 blti a8, 1, 40002cf4 <ets_putc+0x1e0> -40002ce5: 3b8c beqz.n a11, 40002cec <ets_putc+0x1d8> -40002ce7: 1ba8 l32i.n a10, a11, 4 -40002ce9: ffe4a5 call8 40002b34 <ets_putc+0x20> -40002cec: fe3ce5 call8 400010bc <_X_ets_exit_critical> -40002cef: f01d retw.n -40002cf1: 000000 ill -40002cf4: 000506 j 40002d0c <ets_putc+0x1f8> -40002cf7: c00000 sub a0, a0, a0 -40002cfa: b80020 excw -40002cfd: 229203 excw -40002d00: 1689 s32i.n a8, a6, 4 -40002d02: fe7b addi.n a15, a14, 7 -40002d04: 1ba8 l32i.n a10, a11, 4 -40002d06: c0aa90 sub a10, a10, a9 -40002d09: d81ae6 bgei a10, 1, 40002ce5 <ets_putc+0x1d1> -40002d0c: 0b5d mov.n a5, a11 -40002d0e: 13b9 s32i.n a11, a3, 4 -40002d10: 3bd8 l32i.n a13, a11, 12 -40002d12: 23d9 s32i.n a13, a3, 8 -40002d14: 0bc8 l32i.n a12, a11, 0 -40002d16: 03c9 s32i.n a12, a3, 0 -40002d18: 0b49 s32i.n a4, a11, 0 -40002d1a: fe3a25 call8 400010bc <_X_ets_exit_critical> -40002d1d: 3588 l32i.n a8, a5, 12 -40002d1f: 45a8 l32i.n a10, a5, 16 -40002d21: 0008e0 callx8 a8 -40002d24: fe3825 call8 400010a8 <_X_ets_enter_critical> -40002d27: 0598 l32i.n a9, a5, 0 -40002d29: 25a8 l32i.n a10, a5, 8 -40002d2b: ca0966 bnei a9, -1, 40002cf9 <ets_putc+0x1e5> -40002d2e: fc7a16 beqz a10, 40002cf9 <ets_putc+0x1e5> -40002d31: 15b8 l32i.n a11, a5, 4 -40002d33: abaa add.n a10, a11, a10 -40002d35: 05bd mov.n a11, a5 -40002d37: 15a9 s32i.n a10, a5, 4 -40002d39: ffe4e5 call8 40002b88 <ets_putc+0x74> -40002d3c: ffee46 j 40002cf9 <ets_putc+0x1e5> -40002d3f: 413600 srli a3, a0, 6 -40002d42: fa1c00 depbits a0, a12, 15, 2 -40002d45: 0b0c movi.n a11, 0 -40002d47: 0c0c movi.n a12, 0 -40002d49: fe24e5 call8 40000f98 <_XX_unk0f96> -40002d4c: f01d retw.n -40002d4e: 360000 excw -40002d51: 880041 l32r a4, 3ffe4d54 <_start-0x1b2ac> -40002d54: 088c02 excw -40002d57: f01d retw.n -40002d59: 0a0c movi.n a10, 0 -40002d5b: fff6a5 call8 40002cc4 <ets_putc+0x1b0> -40002d5e: f01d retw.n -40002d60: 002d40 excw -40002d63: 2d5040 excw -40002d66: e04000 subx4 a4, a0, a0 -40002d69: ffda add.n a15, a15, a13 -40002d6b: 3f .byte 0x3f -40002d6c: 004136 entry a1, 32 -40002d6f: 0aa0a2 movi a10, 10 -40002d72: fffbb1 l32r a11, 40002d60 <ets_putc+0x24c> -40002d75: ff8181 l32r a8, 40002b7c <ets_putc+0x68> -40002d78: 020c movi.n a2, 0 -40002d7a: 02cd mov.n a12, a2 -40002d7c: 006822 s32i a2, a8, 0 -40002d7f: fe36a5 call8 400010e8 <_X_ets_isr_attach> -40002d82: 00a4a2 movi a10, 0x400 -40002d85: fe37e5 call8 40001104 <_X_ets_isr_unmask> -40002d88: fff7a1 l32r a10, 40002d64 <ets_putc+0x250> -40002d8b: fb1c movi.n a11, 31 -40002d8d: fff6c1 l32r a12, 40002d68 <ets_putc+0x254> -40002d90: 4d0c movi.n a13, 4 -40002d92: fe1c25 call8 40000f54 <_X_ets_task> -40002d95: ff6291 l32r a9, 40002b20 <ets_putc+0xc> -40002d98: 0020c0 memw -40002d9b: 8c6922 s32i a2, a9, 0x230 -40002d9e: 88a0a2 movi a10, 136 -40002da1: 0020c0 memw -40002da4: 8a69a2 s32i a10, a9, 0x228 -40002da7: 0020c0 memw -40002daa: 886922 s32i a2, a9, 0x220 -40002dad: f01d retw.n -40002daf: c84400 excw -40002db2: ff .byte 0xff -40002db3: 3f .byte 0x3f - -40002db4 <ets_delay_us>: -40002db4: 004136 entry a1, 32 -40002db7: 0392e5 call8 400066e4 <_xtos_set_intlevel+0x74> -40002dba: fffd81 l32r a8, 40002db0 <ets_putc+0x29c> -40002dbd: 002882 l32i a8, a8, 0 -40002dc0: 0a3d mov.n a3, a10 -40002dc2: 822820 mull a2, a8, a2 -40002dc5: 0391e5 call8 400066e4 <_xtos_set_intlevel+0x74> -40002dc8: c09a30 sub a9, a10, a3 -40002dcb: 08b927 bgeu a9, a2, 40002dd7 <ets_delay_us+0x23> -40002dce: 039165 call8 400066e4 <_xtos_set_intlevel+0x74> -40002dd1: c0aa30 sub a10, a10, a3 -40002dd4: f63a27 bltu a10, a2, 40002dce <ets_delay_us+0x1a> -40002dd7: f01d retw.n -40002dd9: 000000 ill - -40002ddc <ets_update_cpu_frequency>: -40002ddc: 004136 entry a1, 32 -40002ddf: fff431 l32r a3, 40002db0 <ets_putc+0x29c> -40002de2: 0329 s32i.n a2, a3, 0 -40002de4: f01d retw.n - ... - -40002de8 <ets_get_cpu_frequency>: -40002de8: 004136 entry a1, 32 -40002deb: fff121 l32r a2, 40002db0 <ets_putc+0x29c> -40002dee: 0228 l32i.n a2, a2, 0 -40002df0: f01d retw.n -40002df2: 360000 excw -40002df5: a60041 l32r a4, 3ffec5f8 <_start-0x13a08> -40002df8: 424913 excw -40002dfb: 30efa0 xor a14, a15, a10 -40002dfe: 6d1450 excw -40002e01: 326003 excw -40002e04: a57621 l32r a2, 3ffec3dc <_start-0x13c24> -40002e07: 520a add.n a5, a2, a0 -40002e09: 1b0002 l8ui a0, a0, 27 -40002e0c: 454022 s8i a2, a0, 69 -40002e0f: 404030 excw -40002e12: f03d74 excw -40002e15: 25a376 loopgtz a3, 40002e3e <ets_get_cpu_frequency+0x56> -40002e18: 000232 l8ui a3, a2, 0 -40002e1b: 010252 l8ui a5, a2, 1 -40002e1e: 020262 l8ui a6, a2, 2 -40002e21: 030272 l8ui a7, a2, 3 -40002e24: 303340 xor a3, a3, a4 -40002e27: 224b addi.n a2, a2, 4 -40002e29: 743030 extui a3, a3, 0, 8 -40002e2c: 303530 xor a3, a5, a3 -40002e2f: 743030 extui a3, a3, 0, 8 -40002e32: 303630 xor a3, a6, a3 -40002e35: 743030 extui a3, a3, 0, 8 -40002e38: 303730 xor a3, a7, a3 -40002e3b: 744030 extui a4, a3, 0, 8 -40002e3e: 042d mov.n a2, a4 -40002e40: f01d retw.n -40002e42: 220000 orb b0, b0, b0 -40002e45: 1defa0 excw -40002e48: 0000f0 callx12 a0 - ... - -40002e4c <_st_0x3fffdb10_uartdev>: -40002e4c: ffdb10 excw -40002e4f: 3f .byte 0x3f - -40002e50 <_c_0x3fffdb00>: -40002e50: ffdb00 excw -40002e53: 3f .byte 0x3f -40002e54: 004000 break 0, 0 - ... - -40002e58 <_XX_unk2e58>: -40002e58: 006136 entry a1, 48 -40002e5b: 02ad mov.n a10, a2 -40002e5d: 005765 call8 400033d4 <_c_0x0000ffff+0x4> -40002e60: fffb41 l32r a4, 40002e4c <_st_0x3fffdb10_uartdev> -40002e63: c498 l32i.n a9, a4, 48 -40002e65: 230c movi.n a3, 2 -40002e67: 39ac beqz.n a9, 40002e8e <_XX_unk2e58+0x36> -40002e69: 211926 beqi a9, 1, 40002e8e <_XX_unk2e58+0x36> -40002e6c: f9b1a1 l32r a10, 40001530 <_s_waiting_for_host+0x4> -40002e6f: f9b1b1 l32r a11, 40001534 <_s_waiting_for_host+0x8> -40002e72: 01a0c2 movi a12, 1 -40002e75: 00b125 call8 40003988 <_X_RcvMsg> -40002e78: 00ea56 bnez a10, 40002e8a <_XX_unk2e58+0x32> -40002e7b: f9ada1 l32r a10, 40001530 <_s_waiting_for_host+0x4> -40002e7e: 000a82 l8ui a8, a10, 0 -40002e81: 010a92 l8ui a9, a10, 1 -40002e84: 002856 bnez a8, 40002e8a <_XX_unk2e58+0x32> -40002e87: 1e8926 beqi a9, 8, 40002ea9 <_XX_unk2e58+0x51> -40002e8a: 020c movi.n a2, 0 -40002e8c: f01d retw.n -40002e8e: 20a220 or a10, a2, a2 -40002e91: 01a0b2 movi a11, 1 -40002e94: 005b65 call8 4000344c <_c_0x000fffff+0x4> -40002e97: f4b0a0 extui a11, a10, 0, 16 -40002e9a: fecb16 beqz a11, 40002e8a <_XX_unk2e58+0x32> -40002e9d: 02ad mov.n a10, a2 -40002e9f: 0064a5 call8 400034e8 <uart_div_modify> -40002ea2: c439 s32i.n a3, a4, 48 -40002ea4: fff106 j 40002e6c <_XX_unk2e58+0x14> -40002ea7: 0c0000 excw -40002eaa: 411c movi.n a1, 20 -40002eac: ffe9 s32i.n a14, a15, 60 -40002eae: 8b0c movi.n a11, 8 -40002eb0: 015432 s16i a3, a4, 2 -40002eb3: 0144b2 s8i a11, a4, 1 -40002eb6: 0044c2 s8i a12, a4, 0 -40002eb9: 01bd mov.n a11, a1 -40002ebb: c44b addi.n a12, a4, 4 -40002ebd: 004065 call8 400032c4 <_X_UartConnectProc> -40002ec0: f98d61 l32r a6, 400014f4 <_c_0x60008e00> -40002ec3: f98b51 l32r a5, 400014f0 <_c_0xffff8fff> -40002ec6: 00a0d2 movi a13, 0 -40002ec9: 0844d2 s8i a13, a4, 8 -40002ecc: 0944d2 s8i a13, a4, 9 -40002ecf: 053216 beqz a2, 40002f26 <_XX_unk2e58+0xce> -40002ed2: f897f1 l32r a15, 40001130 <_c_0x60003e00> -40002ed5: ffdfa1 l32r a10, 40002e54 <_c_0x3fffdb00+0x4> -40002ed8: 0020c0 memw -40002edb: 9626d2 l32i a13, a6, 0x258 -40002ede: 10dd50 and a13, a13, a5 -40002ee1: 0020c0 memw -40002ee4: 9666d2 s32i a13, a6, 0x258 -40002ee7: 0020c0 memw -40002eea: 9626c2 l32i a12, a6, 0x258 -40002eed: 20cca0 or a12, a12, a10 -40002ef0: 0020c0 memw -40002ef3: 9666c2 s32i a12, a6, 0x258 -40002ef6: 0020c0 memw -40002ef9: 9526b2 l32i a11, a6, 0x254 -40002efc: 10bb50 and a11, a11, a5 -40002eff: 0020c0 memw -40002f02: 9566b2 s32i a11, a6, 0x254 -40002f05: 0020c0 memw -40002f08: 952692 l32i a9, a6, 0x254 -40002f0b: 2099a0 or a9, a9, a10 -40002f0e: 0020c0 memw -40002f11: 956692 s32i a9, a6, 0x254 -40002f14: f88681 l32r a8, 4000112c <_c_0xfffdffff> -40002f17: 0020c0 memw -40002f1a: f02fe2 l32i a14, a15, 0x3c0 -40002f1d: 10ee80 and a14, a14, a8 -40002f20: 0020c0 memw -40002f23: f06fe2 s32i a14, a15, 0x3c0 -40002f26: 830c movi.n a3, 8 -40002f28: 20a440 or a10, a4, a4 -40002f2b: 0aa0b2 movi a11, 10 -40002f2e: 008fa5 call8 40003828 <_X_SendMsg> -40002f31: 0b1a26 beqi a10, 1, 40002f40 <_XX_unk2e58+0xe8> -40002f34: ffc332 addi a3, a3, -1 -40002f37: fed356 bnez a3, 40002f28 <_XX_unk2e58+0xd0> -40002f3a: 220c movi.n a2, 2 -40002f3c: f01d retw.n -40002f3e: 160000 excw -40002f41: c0f462 s32ri a6, a4, 0x300 -40002f44: f20020 rems a0, a0, a2 -40002f47: 509626 beqi a6, 10, 40002f9b <_X_UartDwnLdProc+0x2f> -40002f4a: ff .byte 0xff -40002f4b: 20c010 or a12, a0, a1 -40002f4e: 66f200 excw -40002f51: 20c096 bltz a0, 40003161 <_XX_unk313c+0x25> -40002f54: 26e200 excw -40002f57: 20c096 bltz a0, 40003167 <_XX_unk313c+0x2b> -40002f5a: 66e200 excw -40002f5d: 020c96 bltz a12, 40002f81 <_X_UartDwnLdProc+0x15> -40002f60: f01d retw.n - ... - -40002f64 <_c_0x3fffdb04>: -40002f64: ffdb04 excw -40002f67: 3f .byte 0x3f -40002f68: ffc9f0 excw -40002f6b: 3f .byte 0x3f - -40002f6c <_X_UartDwnLdProc>: -40002f6c: 00a136 entry a1, 80 -40002f6f: 0a2c movi.n a10, 32 -40002f71: 280c movi.n a8, 2 -40002f73: ffb751 l32r a5, 40002e50 <_c_0x3fffdb00> -40002f76: 046d mov.n a6, a4 -40002f78: 070c movi.n a7, 0 -40002f7a: 6179 s32i.n a7, a1, 24 -40002f7c: 140c movi.n a4, 1 -40002f7e: 004542 s8i a4, a5, 0 -40002f81: 015582 s16i a8, a5, 2 -40002f84: fe17e5 call8 40001104 <_X_ets_isr_unmask> -40002f87: 6198 l32i.n a9, a1, 24 -40002f89: 5c2926 beqi a9, 2, 40002fe9 <_X_UartDwnLdProc+0x7d> -40002f8c: f43030 extui a3, a3, 0, 16 -40002f8f: 870c movi.n a7, 8 -40002f91: 8169 s32i.n a6, a1, 32 -40002f93: fff491 l32r a9, 40002f64 <_c_0x3fffdb04> -40002f96: 9199 s32i.n a9, a1, 36 -40002f98: 20b330 or a11, a3, a3 -40002f9b: 20a220 or a10, a2, a2 -40002f9e: 00a0c2 movi a12, 0 -40002fa1: 009e65 call8 40003988 <_X_RcvMsg> -40002fa4: aa0b addi.n a10, a10, -1 -40002fa6: 134a16 beqz a10, 400030de <_X_UartDwnLdProc+0x172> -40002fa9: 0002b2 l8ui a11, a2, 0 -40002fac: 1a0c movi.n a10, 1 -40002fae: 04fb16 beqz a11, 40003001 <_X_UartDwnLdProc+0x95> -40002fb1: 590c movi.n a9, 5 -40002fb3: 7199 s32i.n a9, a1, 28 -40002fb5: 094592 s8i a9, a5, 9 -40002fb8: 04cd mov.n a12, a4 -40002fba: 0105d2 l8ui a13, a5, 1 -40002fbd: 01a0e2 movi a14, 1 -40002fc0: 93aea0 movnez a10, a14, a10 -40002fc3: 0845a2 s8i a10, a5, 8 -40002fc6: f8cdd2 addi a13, a13, -8 -40002fc9: 83c7d0 moveqz a12, a7, a13 -40002fcc: 206cc0 or a6, a12, a12 -40002fcf: 011c16 beqz a12, 40002fe4 <_X_UartDwnLdProc+0x78> -40002fd2: 20a550 or a10, a5, a5 -40002fd5: 0aa0b2 movi a11, 10 -40002fd8: 0084e5 call8 40003828 <_X_SendMsg> -40002fdb: 161a26 beqi a10, 1, 40002ff5 <_X_UartDwnLdProc+0x89> -40002fde: ffc662 addi a6, a6, -1 -40002fe1: fed656 bnez a6, 40002fd2 <_X_UartDwnLdProc+0x66> -40002fe4: 61f8 l32i.n a15, a1, 24 -40002fe6: ae2f66 bnei a15, 2, 40002f98 <_X_UartDwnLdProc+0x2c> -40002fe9: 20a0a2 movi a10, 32 -40002fec: fe10a5 call8 400010f8 <_X_ets_isr_mask> -40002fef: 00a022 movi a2, 0 -40002ff2: 000090 retw -40002ff5: 20a0a2 movi a10, 32 -40002ff8: fe0fe5 call8 400010f8 <_X_ets_isr_mask> -40002ffb: 01a022 movi a2, 1 -40002ffe: 000090 retw -40003001: 010292 l8ui a9, a2, 1 -40003004: ffd981 l32r a8, 40002f68 <_c_0x3fffdb04+0x4> -40003007: 07a9f6 bgeui a9, 12, 40003012 <_X_UartDwnLdProc+0xa6> -4000300a: a08980 addx4 a8, a9, a8 -4000300d: 0888 l32i.n a8, a8, 0 -4000300f: 0008a0 jx a8 -40003012: 1a0c movi.n a10, 1 -40003014: 590c movi.n a9, 5 -40003016: 7199 s32i.n a9, a1, 28 -40003018: 7198 l32i.n a9, a1, 28 -4000301a: ffe5c6 j 40002fb5 <_X_UartDwnLdProc+0x49> -4000301d: 02ad00 andb b10, b13, b0 -40003020: 1cc1b2 addi a11, a1, 28 -40003023: 01cd mov.n a12, a1 -40003025: 001ea5 call8 40003210 <_XX_unk3210> -40003028: 5b0c movi.n a11, 5 -4000302a: 0145b2 s8i a11, a5, 1 -4000302d: fff9c6 j 40003018 <_X_UartDwnLdProc+0xac> -40003030: 02ad mov.n a10, a2 -40003032: 1cc1b2 addi a11, a1, 28 -40003035: 001ae5 call8 400031e4 <_XX_unk31e4> -40003038: bc0c movi.n a12, 11 -4000303a: 0145c2 s8i a12, a5, 1 -4000303d: fff5c6 j 40003018 <_X_UartDwnLdProc+0xac> -40003040: 02ad mov.n a10, a2 -40003042: 1cc1b2 addi a11, a1, 28 -40003045: 91c8 l32i.n a12, a1, 36 -40003047: 002d25 call8 40003318 <_X_UartRegReadProc> -4000304a: ad0c movi.n a13, 10 -4000304c: 0145d2 s8i a13, a5, 1 -4000304f: fff146 j 40003018 <_X_UartDwnLdProc+0xac> -40003052: 02ad mov.n a10, a2 -40003054: 1cc1b2 addi a11, a1, 28 -40003057: 0027e5 call8 400032d4 <_X_UartRegWriteProc> -4000305a: 9e0c movi.n a14, 9 -4000305c: 0145e2 s8i a14, a5, 1 -4000305f: ffed46 j 40003018 <_X_UartDwnLdProc+0xac> -40003062: 02ad mov.n a10, a2 -40003064: 1cc1b2 addi a11, a1, 28 -40003067: 91c8 l32i.n a12, a1, 36 -40003069: 0025a5 call8 400032c4 <_X_UartConnectProc> -4000306c: 014572 s8i a7, a5, 1 -4000306f: ffe946 j 40003018 <_X_UartDwnLdProc+0xac> -40003072: 02ad mov.n a10, a2 -40003074: 1cc1b2 addi a11, a1, 28 -40003077: 01cd mov.n a12, a1 -40003079: 001c65 call8 40003240 <_XX_unk3240> -4000307c: 7f0c movi.n a15, 7 -4000307e: 0145f2 s8i a15, a5, 1 -40003081: ffe4c6 j 40003018 <_X_UartDwnLdProc+0xac> -40003084: 02ad mov.n a10, a2 -40003086: 1cc1b2 addi a11, a1, 28 -40003089: 01cd mov.n a12, a1 -4000308b: 81d8 l32i.n a13, a1, 32 -4000308d: 0020e5 call8 4000329c <_X_MemDwnLdStopReqMsgProc> -40003090: 680c movi.n a8, 6 -40003092: 014582 s8i a8, a5, 1 -40003095: ffdfc6 j 40003018 <_X_UartDwnLdProc+0xac> -40003098: 02ad mov.n a10, a2 -4000309a: 1cc1b2 addi a11, a1, 28 -4000309d: 01cd mov.n a12, a1 -4000309f: 0011e5 call8 400031bc <_XX_unk31bc> -400030a2: 490c movi.n a9, 4 -400030a4: 81c8 l32i.n a12, a1, 32 -400030a6: 0b0c movi.n a11, 0 -400030a8: 0cb9 s32i.n a11, a12, 0 -400030aa: 014592 s8i a9, a5, 1 -400030ad: ffd9c6 j 40003018 <_X_UartDwnLdProc+0xac> -400030b0: 02ad mov.n a10, a2 -400030b2: 1cc1b2 addi a11, a1, 28 -400030b5: 01cd mov.n a12, a1 -400030b7: 000865 call8 4000313c <_XX_unk313c> -400030ba: 3d0c movi.n a13, 3 -400030bc: 0145d2 s8i a13, a5, 1 -400030bf: ffd546 j 40003018 <_X_UartDwnLdProc+0xac> -400030c2: 00a0a2 movi a10, 0 -400030c5: 00a0b2 movi a11, 0 -400030c8: 012a65 call8 40004370 <_X_spi_flash_attach> -400030cb: 20a220 or a10, a2, a2 -400030ce: 1cc1b2 addi a11, a1, 28 -400030d1: 01cd mov.n a12, a1 -400030d3: 0001e5 call8 400030f0 <_X_FlashDwnLdStartMsgProc> -400030d6: 2e0c movi.n a14, 2 -400030d8: 0145e2 s8i a14, a5, 1 -400030db: ffce46 j 40003018 <_X_UartDwnLdProc+0xac> -400030de: 20a0a2 movi a10, 32 -400030e1: fe0165 call8 400010f8 <_X_ets_isr_mask> -400030e4: 01a022 movi a2, 1 -400030e7: 000090 retw - ... - -400030ec <_c_0x00001800>: -400030ec: 001800 movsp a0, a8 - ... - -400030f0 <_X_FlashDwnLdStartMsgProc>: -400030f0: 004136 entry a1, 32 -400030f3: 011282 l16ui a8, a2, 2 -400030f6: 05a0a2 movi a10, 5 -400030f9: 05b826 beqi a8, 16, 40003102 <_X_FlashDwnLdStartMsgProc+0x12> -400030fc: 120c movi.n a2, 1 -400030fe: 03a9 s32i.n a10, a3, 0 -40003100: f01d retw.n -40003102: 0422b2 l32i a11, a2, 16 -40003105: fff991 l32r a9, 400030ec <_c_0x00001800> -40003108: f039b7 bltu a9, a11, 400030fc <_X_FlashDwnLdStartMsgProc+0xc> -4000310b: 0264b2 s32i a11, a4, 8 -4000310e: 0a0c movi.n a10, 0 -40003110: 32c8 l32i.n a12, a2, 12 -40003112: 22d8 l32i.n a13, a2, 8 -40003114: 04d9 s32i.n a13, a4, 0 -40003116: 14c9 s32i.n a12, a4, 4 -40003118: 34a9 s32i.n a10, a4, 12 -4000311a: 44a9 s32i.n a10, a4, 16 -4000311c: 52b8 l32i.n a11, a2, 20 -4000311e: 54b9 s32i.n a11, a4, 20 -40003120: 0132a5 call8 4000444c <Cache_Read_Disable> -40003123: 54a8 l32i.n a10, a4, 20 -40003125: 04b8 l32i.n a11, a4, 0 -40003127: 0178e5 call8 400048b4 <_X_SPIEraseArea> -4000312a: 6a8c beqz.n a10, 40003134 <_X_FlashDwnLdStartMsgProc+0x44> -4000312c: 120c movi.n a2, 1 -4000312e: 6e0c movi.n a14, 6 -40003130: 03e9 s32i.n a14, a3, 0 -40003132: f01d retw.n -40003134: 020c movi.n a2, 0 -40003136: f01d retw.n -40003138: 001810 movsp a1, a8 - ... - -4000313c <_XX_unk313c>: -4000313c: 004136 entry a1, 32 -4000313f: 011292 l16ui a9, a2, 2 -40003142: fffd81 l32r a8, 40003138 <_X_FlashDwnLdStartMsgProc+0x48> -40003145: 5a0c movi.n a10, 5 -40003147: 07b897 bgeu a8, a9, 40003152 <_XX_unk313c+0x16> -4000314a: 120c movi.n a2, 1 -4000314c: 03a9 s32i.n a10, a3, 0 -4000314e: f01d retw.n -40003150: c80000 excw -40003153: 32b834 excw -40003156: 24d8 l32i.n a13, a4, 8 -40003158: ee9bc7 bne a11, a12, 4000314a <_XX_unk313c+0xe> -4000315b: 22b8 l32i.n a11, a2, 8 -4000315d: 3e0c movi.n a14, 3 -4000315f: e73db7 bltu a13, a11, 4000314a <_XX_unk313c+0xe> -40003162: e48eb7 bany a14, a11, 4000314a <_XX_unk313c+0xe> -40003165: 040252 l8ui a5, a2, 4 -40003168: 18c262 addi a6, a2, 24 -4000316b: fc1b addi.n a15, a12, 1 -4000316d: 34f9 s32i.n a15, a4, 12 -4000316f: 06ad mov.n a10, a6 -40003171: ffc825 call8 40002df4 <ets_get_cpu_frequency+0xc> -40003174: 0915a7 beq a5, a10, 40003181 <_XX_unk313c+0x45> -40003177: 720c movi.n a2, 7 -40003179: 0329 s32i.n a2, a3, 0 -4000317b: 120c movi.n a2, 1 -4000317d: f01d retw.n -4000317f: a20000 muluh a0, a0, a0 -40003182: 600524 excw -40003185: c820b6 bltui a0, 2, 40003151 <_XX_unk313c+0x15> -40003188: 5ae522 s32c1i a2, a5, 0x168 -4000318b: 54a801 l32r a0, 3ffd842c <_start-0x27bd4> -4000318e: 06bd mov.n a11, a6 -40003190: 22c8 l32i.n a12, a2, 8 -40003192: 017065 call8 40004898 <SPIRead> -40003195: 06ad mov.n a10, a6 -40003197: 22b8 l32i.n a11, a2, 8 -40003199: ffc5a5 call8 40002df4 <ets_get_cpu_frequency+0xc> -4000319c: 0815a7 beq a5, a10, 400031a8 <_XX_unk313c+0x6c> -4000319f: 120c movi.n a2, 1 -400031a1: 880c movi.n a8, 8 -400031a3: 0389 s32i.n a8, a3, 0 -400031a5: f01d retw.n -400031a7: 44b800 extui a11, a0, 8, 5 -400031aa: 5498 l32i.n a9, a4, 20 -400031ac: 22a8 l32i.n a10, a2, 8 -400031ae: 020c movi.n a2, 0 -400031b0: 99aa add.n a9, a9, a10 -400031b2: bbaa add.n a11, a11, a10 -400031b4: 44b9 s32i.n a11, a4, 16 -400031b6: 5499 s32i.n a9, a4, 20 -400031b8: f01d retw.n - ... - -400031bc <_XX_unk31bc>: -400031bc: 004136 entry a1, 32 -400031bf: 3498 l32i.n a9, a4, 12 -400031c1: 2a0c movi.n a10, 2 -400031c3: 1488 l32i.n a8, a4, 4 -400031c5: 64a9 s32i.n a10, a4, 24 -400031c7: 6a0c movi.n a10, 6 -400031c9: 079897 bne a8, a9, 400031d4 <_XX_unk31bc+0x18> -400031cc: 44c8 l32i.n a12, a4, 16 -400031ce: 0024b2 l32i a11, a4, 0 -400031d1: 071bc7 beq a11, a12, 400031dc <_XX_unk31bc+0x20> -400031d4: 120c movi.n a2, 1 -400031d6: 03a9 s32i.n a10, a3, 0 -400031d8: f01d retw.n -400031da: 650000 extui a0, a0, 16, 7 -400031dd: 0c0131 l32r a3, 3ffc61e4 <_start-0x39e1c> -400031e0: f01d02 l16ui a0, a13, 0x1e0 - ... - -400031e4 <_XX_unk31e4>: -400031e4: 004136 entry a1, 32 -400031e7: 011282 l16ui a8, a2, 2 -400031ea: 891c movi.n a9, 24 -400031ec: 081897 beq a8, a9, 400031f8 <_XX_unk31e4+0x14> -400031ef: 120c movi.n a2, 1 -400031f1: 5a0c movi.n a10, 5 -400031f3: 03a9 s32i.n a10, a3, 0 -400031f5: f01d retw.n -400031f7: 22a200 orb b10, b2, b0 -400031fa: 22b202 l32ai a0, a2, 136 -400031fd: 22c203 excw -40003200: 52d804 excw -40003203: 62e8 l32i.n a14, a2, 24 -40003205: 72f8 l32i.n a15, a2, 28 -40003207: 0173a5 call8 40004940 <_XX_unk4940> -4000320a: 020c movi.n a2, 0 -4000320c: f01d retw.n - ... - -40003210 <_XX_unk3210>: -40003210: 004136 entry a1, 32 -40003213: 011252 l16ui a5, a2, 2 -40003216: 05a072 movi a7, 5 -40003219: 05b526 beqi a5, 16, 40003222 <_XX_unk3210+0x12> -4000321c: 120c movi.n a2, 1 -4000321e: 0379 s32i.n a7, a3, 0 -40003220: f01d retw.n -40003222: 4288 l32i.n a8, a2, 16 -40003224: ffb261 l32r a6, 400030ec <_c_0x00001800> -40003227: 5298 l32i.n a9, a2, 20 -40003229: ef3687 bltu a6, a8, 4000321c <_XX_unk3210+0xc> -4000322c: 2489 s32i.n a8, a4, 8 -4000322e: 5499 s32i.n a9, a4, 20 -40003230: 32a8 l32i.n a10, a2, 12 -40003232: 22b8 l32i.n a11, a2, 8 -40003234: 04b9 s32i.n a11, a4, 0 -40003236: 14a9 s32i.n a10, a4, 4 -40003238: 020c movi.n a2, 0 -4000323a: 3429 s32i.n a2, a4, 12 -4000323c: 4429 s32i.n a2, a4, 16 -4000323e: f01d retw.n - -40003240 <_XX_unk3240>: -40003240: 004136 entry a1, 32 -40003243: 011292 l16ui a9, a2, 2 -40003246: ffbc81 l32r a8, 40003138 <_X_FlashDwnLdStartMsgProc+0x48> -40003249: 5a0c movi.n a10, 5 -4000324b: 05b897 bgeu a8, a9, 40003254 <_XX_unk3240+0x14> -4000324e: 120c movi.n a2, 1 -40003250: 03a9 s32i.n a10, a3, 0 -40003252: f01d retw.n -40003254: 34c8 l32i.n a12, a4, 12 -40003256: 32b8 l32i.n a11, a2, 12 -40003258: 24d8 l32i.n a13, a4, 8 -4000325a: f09bc7 bne a11, a12, 4000324e <_XX_unk3240+0xe> -4000325d: 22b8 l32i.n a11, a2, 8 -4000325f: eb3db7 bltu a13, a11, 4000324e <_XX_unk3240+0xe> -40003262: 040252 l8ui a5, a2, 4 -40003265: 18c262 addi a6, a2, 24 -40003268: ec1b addi.n a14, a12, 1 -4000326a: 34e9 s32i.n a14, a4, 12 -4000326c: 06ad mov.n a10, a6 -4000326e: ffb865 call8 40002df4 <ets_get_cpu_frequency+0xc> -40003271: 0715a7 beq a5, a10, 4000327c <_XX_unk3240+0x3c> -40003274: 120c movi.n a2, 1 -40003276: 7f0c movi.n a15, 7 -40003278: 03f9 s32i.n a15, a3, 0 -4000327a: f01d retw.n -4000327c: 20b660 or a11, a6, a6 -4000327f: 0524a2 l32i a10, a4, 20 -40003282: 0222c2 l32i a12, a2, 8 -40003285: feb3e5 call8 40001dc4 <_X_ets_memcpy> -40003288: 4498 l32i.n a9, a4, 16 -4000328a: 2288 l32i.n a8, a2, 8 -4000328c: 5428 l32i.n a2, a4, 20 -4000328e: 998a add.n a9, a9, a8 -40003290: 228a add.n a2, a2, a8 -40003292: 5429 s32i.n a2, a4, 20 -40003294: 4499 s32i.n a9, a4, 16 -40003296: 020c movi.n a2, 0 -40003298: f01d retw.n - ... - -4000329c <_X_MemDwnLdStopReqMsgProc>: -4000329c: 004136 entry a1, 32 -4000329f: 011272 l16ui a7, a2, 2 -400032a2: 860c movi.n a6, 8 -400032a4: 08b677 bgeu a6, a7, 400032b0 <_X_MemDwnLdStopReqMsgProc+0x14> -400032a7: 120c movi.n a2, 1 -400032a9: 580c movi.n a8, 5 -400032ab: 0389 s32i.n a8, a3, 0 -400032ad: f01d retw.n -400032af: 2b0c00 depbits a0, a12, 18, 1 -400032b2: 0a0c movi.n a10, 0 -400032b4: 3298 l32i.n a9, a2, 12 -400032b6: 0802c2 l8ui a12, a2, 8 -400032b9: 020c movi.n a2, 0 -400032bb: 83abc0 moveqz a10, a11, a12 -400032be: 64a9 s32i.n a10, a4, 24 -400032c0: 0599 s32i.n a9, a5, 0 -400032c2: f01d retw.n - -400032c4 <_X_UartConnectProc>: -400032c4: 004136 entry a1, 32 -400032c7: 2228 l32i.n a2, a2, 8 -400032c9: 0429 s32i.n a2, a4, 0 -400032cb: 020c movi.n a2, 0 -400032cd: 0329 s32i.n a2, a3, 0 -400032cf: f01d retw.n -400032d1: 000000 ill - -400032d4 <_X_UartRegWriteProc>: -400032d4: 004136 entry a1, 32 -400032d7: 011242 l16ui a4, a2, 2 -400032da: 228b addi.n a2, a2, 8 -400032dc: 414440 srli a4, a4, 4 -400032df: e4ac beqz.n a4, 40003311 <_X_UartRegWriteProc+0x3d> -400032e1: ffaf52 movi a5, -1 -400032e4: 0612a2 l16ui a10, a2, 12 -400032e7: fface5 call8 40002db4 <ets_delay_us> -400032ea: 002292 l32i a9, a2, 0 -400032ed: 0020c0 memw -400032f0: 012282 l32i a8, a2, 4 -400032f3: 0222b2 l32i a11, a2, 8 -400032f6: 09a8 l32i.n a10, a9, 0 -400032f8: 30cb50 xor a12, a11, a5 -400032fb: 10aac0 and a10, a10, a12 -400032fe: 1088b0 and a8, a8, a11 -40003301: 2088a0 or a8, a8, a10 -40003304: 0020c0 memw -40003307: 0989 s32i.n a8, a9, 0 -40003309: 10c222 addi a2, a2, 16 -4000330c: 440b addi.n a4, a4, -1 -4000330e: d214e6 bgei a4, 1, 400032e4 <_X_UartRegWriteProc+0x10> -40003311: 020c movi.n a2, 0 -40003313: 0329 s32i.n a2, a3, 0 -40003315: f01d retw.n - ... - -40003318 <_X_UartRegReadProc>: -40003318: 004136 entry a1, 32 -4000331b: 2228 l32i.n a2, a2, 8 -4000331d: 0020c0 memw -40003320: 0228 l32i.n a2, a2, 0 -40003322: 0429 s32i.n a2, a4, 0 -40003324: 020c movi.n a2, 0 -40003326: 0329 s32i.n a2, a3, 0 -40003328: f01d retw.n - ... - -4000332c <_c_115200>: -4000332c: 01c200 slli a12, a2, 32 - ... - -40003330 <_c_0x3feffe00>: -40003330: effe00 excw -40003333: 3f .byte 0x3f - -40003334 <_c_0xffff83ff>: -40003334: ff .byte 0xff -40003335: ffff83 excw - -40003338 <_c_0x00001400>: -40003338: 001400 movsp a0, a4 - ... - -4000333c <_c_0x40003728_uart_int_handler>: -4000333c: 3728 l32i.n a2, a7, 12 -4000333e: 2c4000 excw - -40003340 <_c_0x3fffdb2c_uart_int_handler_arg>: -40003340: db2c movi.n a11, 45 -40003342: ff .byte 0xff -40003343: 3f .byte 0x3f - -40003344 <_X_uart_attach>: -40003344: 004136 entry a1, 32 -40003347: 03a0a2 movi a10, 3 -4000334a: 01a082 movi a8, 1 -4000334d: fff7b1 l32r a11, 4000332c <_c_115200> -40003350: febf91 l32r a9, 40002e4c <_st_0x3fffdb10_uartdev> -40003353: 0d0c movi.n a13, 0 -40003355: 59d9 s32i.n a13, a9, 20 -40003357: 29d9 s32i.n a13, a9, 8 -40003359: 39d9 s32i.n a13, a9, 12 -4000335b: 49d9 s32i.n a13, a9, 16 -4000335d: b9d9 s32i.n a13, a9, 44 -4000335f: c9d9 s32i.n a13, a9, 48 -40003361: d9d9 s32i.n a13, a9, 52 -40003363: 1849d2 s8i a13, a9, 24 -40003366: 1949d2 s8i a13, a9, 25 -40003369: 09b9 s32i.n a11, a9, 0 -4000336b: 284982 s8i a8, a9, 40 -4000336e: 19a9 s32i.n a10, a9, 4 -40003370: 40c9c2 addi a12, a9, 64 -40003373: 79c9 s32i.n a12, a9, 28 -40003375: 89c9 s32i.n a12, a9, 32 -40003377: 99c9 s32i.n a12, a9, 36 -40003379: 20a0a2 movi a10, 32 -4000337c: fdd7a5 call8 400010f8 <_X_ets_isr_mask> -4000337f: 1facc2 movi a12, 0xfffffc1f -40003382: a0a0b2 movi a11, 160 -40003385: ffeaf1 l32r a15, 40003330 <_c_0x3feffe00> -40003388: 0020c0 memw -4000338b: 9e2fa2 l32i a10, a15, 0x278 -4000338e: 10aac0 and a10, a10, a12 -40003391: 20aab0 or a10, a10, a11 -40003394: 0020c0 memw -40003397: 9e6fa2 s32i a10, a15, 0x278 -4000339a: ffe691 l32r a9, 40003334 <_c_0xffff83ff> -4000339d: ffe681 l32r a8, 40003338 <_c_0x00001400> -400033a0: 0020c0 memw -400033a3: 9e2fe2 l32i a14, a15, 0x278 -400033a6: 10ee90 and a14, a14, a9 -400033a9: 20ee80 or a14, a14, a8 -400033ac: 0020c0 memw -400033af: 9e6fe2 s32i a14, a15, 0x278 -400033b2: 5a0c movi.n a10, 5 -400033b4: ffe2b1 l32r a11, 4000333c <_c_0x40003728_uart_int_handler> -400033b7: ffe2c1 l32r a12, 40003340 <_c_0x3fffdb2c_uart_int_handler_arg> -400033ba: fdd2e5 call8 400010e8 <_X_ets_isr_attach> -400033bd: f01d retw.n - ... - -400033c0 <_XX_uart_set_unk33c0>: -400033c0: 004136 entry a1, 32 -400033c3: fea231 l32r a3, 40002e4c <_st_0x3fffdb10_uartdev> -400033c6: 194322 s8i a2, a3, 25 -400033c9: f01d retw.n - ... - -400033cc <_c_0x5ffffe00>: -400033cc: fffe00 excw -400033cf: 5f .byte 0x5f - -400033d0 <_c_0x0000ffff>: -400033d0: ff .byte 0xff -400033d1: ff .byte 0xff -400033d2: 360000 excw -400033d5: 510061 l32r a6, 3ffd77d8 <_start-0x28828> -400033d8: fe .byte 0xfe -400033d9: ff .byte 0xff -400033da: 190c movi.n a9, 1 -400033dc: 080c movi.n a8, 0 -400033de: fffb41 l32r a4, 400033cc <_c_0x5ffffe00> -400033e1: 838920 moveqz a8, a9, a2 -400033e4: 118800 slli a8, a8, 16 -400033e7: 884a add.n a8, a8, a4 -400033e9: 0020c0 memw -400033ec: 846852 s32i a5, a8, 0x210 -400033ef: e97c movi.n a9, -2 -400033f1: 0020c0 memw -400033f4: 832832 l32i a3, a8, 0x20c -400033f7: 103390 and a3, a3, a9 -400033fa: 0020c0 memw -400033fd: 836832 s32i a3, a8, 0x20c -40003400: ffd031 l32r a3, 40003340 <_c_0x3fffdb2c_uart_int_handler_arg> -40003403: 01bd mov.n a11, a1 -40003405: 03ad mov.n a10, a3 -40003407: 0059a5 call8 400039a0 <_X_uart_rx_readbuff> -4000340a: 7aac beqz.n a10, 40003435 <_c_0x0000ffff+0x65> -4000340c: fe90a1 l32r a10, 40002e4c <_st_0x3fffdb10_uartdev> -4000340f: 0d0c movi.n a13, 0 -40003411: bad9 s32i.n a13, a10, 44 -40003413: 11c200 slli a12, a2, 16 -40003416: cc4a add.n a12, a12, a4 -40003418: 0020c0 memw -4000341b: 846c52 s32i a5, a12, 0x210 -4000341e: 1d0c movi.n a13, 1 -40003420: 0020c0 memw -40003423: 832cb2 l32i a11, a12, 0x20c -40003426: 20bbd0 or a11, a11, a13 -40003429: 0020c0 memw -4000342c: 836cb2 s32i a11, a12, 0x20c -4000342f: 184a22 s8i a2, a10, 24 -40003432: f01d retw.n -40003434: 03ad00 excw -40003437: 01bd mov.n a11, a1 -40003439: 005665 call8 400039a0 <_X_uart_rx_readbuff> -4000343c: ff5a16 beqz a10, 40003435 <_c_0x0000ffff+0x65> -4000343f: fff246 j 4000340c <_c_0x0000ffff+0x3c> -40003442: 010000 slli a0, a0, 32 -40003445: 0008 l32i.n a0, a0, 0 - ... - -40003448 <_c_0x000fffff>: -40003448: ff .byte 0xff -40003449: ff .byte 0xff -4000344a: 0f .byte 0xf -4000344b: 413600 srli a3, a0, 6 -4000344e: 7fc100 excw -40003451: fe .byte 0xfe -40003452: e47c movi.n a4, -2 -40003454: ccb8 l32i.n a11, a12, 48 -40003456: 01a0d2 movi a13, 1 -40003459: 83bdb0 moveqz a11, a13, a11 -4000345c: 0c6cb2 s32i a11, a12, 48 -4000345f: ffdba1 l32r a10, 400033cc <_c_0x5ffffe00> -40003462: 119200 slli a9, a2, 16 -40003465: 29aa add.n a2, a9, a10 -40003467: 0020c0 memw -4000346a: 862282 l32i a8, a2, 0x218 -4000346d: 17e807 bbsi a8, 0, 40003488 <_c_0x000fffff+0x40> -40003470: 0020c0 memw -40003473: 8622f2 l32i a15, a2, 0x218 -40003476: 10ff40 and a15, a15, a4 -40003479: 0020c0 memw -4000347c: 8662f2 s32i a15, a2, 0x218 -4000347f: fff1e1 l32r a14, 40003444 <_c_0x0000ffff+0x74> -40003482: 0020c0 memw -40003485: 8662e2 s32i a14, a2, 0x218 -40003488: 0020c0 memw -4000348b: 8c2282 l32i a8, a2, 0x230 -4000348e: 13e8f6 bgeui a8, 128, 400034a5 <_c_0x000fffff+0x5d> -40003491: 045356 bnez a3, 400034da <_c_0x000fffff+0x92> -40003494: e8a3a2 movi a10, 0x3e8 -40003497: ff91e5 call8 40002db4 <ets_delay_us> -4000349a: 0020c0 memw -4000349d: 8c2292 l32i a9, a2, 0x230 -400034a0: f03d nop.n -400034a2: ebe9b6 bltui a9, 128, 40003491 <_c_0x000fffff+0x49> -400034a5: ffe8a1 l32r a10, 40003448 <_c_0x000fffff> -400034a8: 0020c0 memw -400034ab: 8a2282 l32i a8, a2, 0x228 -400034ae: 1088a0 and a8, a8, a10 -400034b1: 0020c0 memw -400034b4: 8b2292 l32i a9, a2, 0x22c -400034b7: 1099a0 and a9, a9, a10 -400034ba: 0020c0 memw -400034bd: 8622a2 l32i a10, a2, 0x218 -400034c0: 10aa40 and a10, a10, a4 -400034c3: 0020c0 memw -400034c6: 8662a2 s32i a10, a2, 0x218 -400034c9: 289a add.n a2, a8, a9 -400034cb: 080c movi.n a8, 0 -400034cd: 212120 srai a2, a2, 1 -400034d0: 532280 max a2, a2, a8 -400034d3: 223b addi.n a2, a2, 3 -400034d5: f01d retw.n -400034d7: 000000 ill -400034da: 020c movi.n a2, 0 -400034dc: f01d retw.n - ... - -400034e0 <_c_0x00060000>: -400034e0: 060000 excw - ... - -400034e4 <_c_0xfff9ffff>: -400034e4: ff .byte 0xff -400034e5: ff .byte 0xff -400034e6: fff9 s32i.n a15, a15, 60 - -400034e8 <uart_div_modify>: -400034e8: 004136 entry a1, 32 -400034eb: ffb861 l32r a6, 400033cc <_c_0x5ffffe00> -400034ee: 115200 slli a5, a2, 16 -400034f1: 556a add.n a5, a5, a6 -400034f3: 0020c0 memw -400034f6: 856532 s32i a3, a5, 0x214 -400034f9: fff991 l32r a9, 400034e0 <_c_0x00060000> -400034fc: 0020c0 memw -400034ff: 882582 l32i a8, a5, 0x220 -40003502: 208890 or a8, a8, a9 -40003505: 0020c0 memw -40003508: 886582 s32i a8, a5, 0x220 -4000350b: fff661 l32r a6, 400034e4 <_c_0xfff9ffff> -4000350e: 0020c0 memw -40003511: 882542 l32i a4, a5, 0x220 -40003514: 104460 and a4, a4, a6 -40003517: 0020c0 memw -4000351a: 886542 s32i a4, a5, 0x220 -4000351d: f01d retw.n - ... - -40003520 <_c_0xfffc0fff>: -40003520: ff .byte 0xff -40003521: 0f .byte 0xf -40003522: fffc bnez.n a15, 40003565 <_X_uart_init+0x31> - -40003524 <_c_0x00009000>: -40003524: 009000 all4 b0, b0:b1:b2:b3 - ... - -40003528 <_c_0x00020000>: -40003528: 020000 andb b0, b0, b0 - ... - -4000352c <_c_13000000>: -4000352c: c65d40 excw - ... - -40003530 <_c_0x08000000>: -40003530: 000000 ill -40003533: 3608 l32i.n a0, a6, 12 - -40003534 <_X_uart_init>: -40003534: 004136 entry a1, 32 -40003537: 0b9216 beqz a2, 400035f4 <_l_35f4> -4000353a: fff9d1 l32r a13, 40003520 <_c_0xfffc0fff> -4000353d: fff9c1 l32r a12, 40003524 <_c_0x00009000> -40003540: f6fc91 l32r a9, 40001130 <_c_0x60003e00> -40003543: 0020c0 memw -40003546: cf29b2 l32i a11, a9, 0x33c -40003549: f03d nop.n -4000354b: 10bbd0 and a11, a11, a13 -4000354e: 20bbc0 or a11, a11, a12 -40003551: 0020c0 memw -40003554: cf69b2 s32i a11, a9, 0x33c -40003557: fff4a1 l32r a10, 40003528 <_c_0x00020000> -4000355a: 0020c0 memw -4000355d: f02982 l32i a8, a9, 0x3c0 -40003560: 2088a0 or a8, a8, a10 -40003563: 0020c0 memw -40003566: f06982 s32i a8, a9, 0x3c0 -40003569: fe3831 l32r a3, 40002e4c <_st_0x3fffdb10_uartdev> -4000356c: fff0b1 l32r a11, 4000352c <_c_13000000> -4000356f: 03c8 l32i.n a12, a3, 0 -40003571: 02ad mov.n a10, a2 -40003573: c2bbc0 quou a11, a11, a12 -40003576: f4b0b0 extui a11, a11, 0, 16 -40003579: fff6e5 call8 400034e8 <uart_div_modify> -4000357c: 3398 l32i.n a9, a3, 12 -4000357e: ff93f1 l32r a15, 400033cc <_c_0x5ffffe00> -40003581: 11e200 slli a14, a2, 16 -40003584: 4388 l32i.n a8, a3, 16 -40003586: eefa add.n a14, a14, a15 -40003588: 23f8 l32i.n a15, a3, 8 -4000358a: 1188c0 slli a8, a8, 4 -4000358d: 20ff90 or a15, a15, a9 -40003590: 1398 l32i.n a9, a3, 4 -40003592: 20ff80 or a15, a15, a8 -40003595: 1199e0 slli a9, a9, 2 -40003598: ffe681 l32r a8, 40003530 <_c_0x08000000> -4000359b: 20ff90 or a15, a15, a9 -4000359e: 20ff80 or a15, a15, a8 -400035a1: 0020c0 memw -400035a4: 886ef2 s32i a15, a14, 0x220 -400035a7: ffced1 l32r a13, 400034e0 <_c_0x00060000> -400035aa: 0020c0 memw -400035ad: 882ec2 l32i a12, a14, 0x220 -400035b0: 20ccd0 or a12, a12, a13 -400035b3: 0020c0 memw -400035b6: 886ec2 s32i a12, a14, 0x220 -400035b9: ffcab1 l32r a11, 400034e4 <_c_0xfff9ffff> -400035bc: 0020c0 memw -400035bf: 882ea2 l32i a10, a14, 0x220 -400035c2: 10aab0 and a10, a10, a11 -400035c5: 0020c0 memw -400035c8: 886ea2 s32i a10, a14, 0x220 -400035cb: 280392 l8ui a9, a3, 40 -400035ce: 649090 extui a9, a9, 0, 7 -400035d1: 0020c0 memw -400035d4: 896e92 s32i a9, a14, 0x224 -400035d7: ff7e81 l32r a8, 400033d0 <_c_0x0000ffff> -400035da: 0020c0 memw -400035dd: 846e82 s32i a8, a14, 0x210 -400035e0: 1f0c movi.n a15, 1 -400035e2: 0020c0 memw -400035e5: 832ed2 l32i a13, a14, 0x20c -400035e8: 20ddf0 or a13, a13, a15 -400035eb: 0020c0 memw -400035ee: 836ed2 s32i a13, a14, 0x20c -400035f1: f01d retw.n - ... - -400035f4 <_l_35f4>: -400035f4: 7d7c movi.n a13, -9 -400035f6: f7bf91 l32r a9, 400014f4 <_c_0x60008e00> -400035f9: 0020c0 memw -400035fc: a229c2 l32i a12, a9, 0x288 -400035ff: 10ccd0 and a12, a12, a13 -40003602: 0020c0 memw -40003605: a269c2 s32i a12, a9, 0x288 -40003608: f7bab1 l32r a11, 400014f0 <_c_0xffff8fff> -4000360b: 0020c0 memw -4000360e: a229a2 l32i a10, a9, 0x288 -40003611: 10aab0 and a10, a10, a11 -40003614: 0020c0 memw -40003617: a269a2 s32i a10, a9, 0x288 -4000361a: 0020c0 memw -4000361d: a22982 l32i a8, a9, 0x288 -40003620: 0020c0 memw -40003623: a26982 s32i a8, a9, 0x288 -40003626: ffcfc6 j 40003569 <_X_uart_init+0x35> -40003629: 000000 ill - -4000362c <uart_tx_one_char>: -4000362c: 004136 entry a1, 32 -4000362f: fe0741 l32r a4, 40002e4c <_st_0x3fffdb10_uartdev> -40003632: 0020f0 nop -40003635: 190442 l8ui a4, a4, 25 -40003638: ff6581 l32r a8, 400033cc <_c_0x5ffffe00> -4000363b: 114400 slli a4, a4, 16 -4000363e: 448a add.n a4, a4, a8 -40003640: 0020c0 memw -40003643: 872432 l32i a3, a4, 0x21c -40003646: 0e7377 bbci a3, 23, 40003658 <uart_tx_one_char+0x2c> -40003649: 088076 loop a0, 40003655 <uart_tx_one_char+0x29> -4000364c: 0020c0 memw -4000364f: 872482 l32i a8, a4, 0x21c -40003652: 027877 bbci a8, 23, 40003658 <uart_tx_one_char+0x2c> -40003655: fffc06 j 40003649 <uart_tx_one_char+0x1d> -40003658: 0020c0 memw -4000365b: 806422 s32i a2, a4, 0x200 -4000365e: 020c movi.n a2, 0 -40003660: f01d retw.n - ... - -40003664 <_X_uart_tx_one_char2>: -40003664: 004136 entry a1, 32 -40003667: fdf941 l32r a4, 40002e4c <_st_0x3fffdb10_uartdev> -4000366a: 0020f0 nop -4000366d: 180442 l8ui a4, a4, 24 -40003670: ff5781 l32r a8, 400033cc <_c_0x5ffffe00> -40003673: 114400 slli a4, a4, 16 -40003676: 448a add.n a4, a4, a8 -40003678: 0020c0 memw -4000367b: 872432 l32i a3, a4, 0x21c -4000367e: 0e7377 bbci a3, 23, 40003690 <_X_uart_tx_one_char2+0x2c> -40003681: 088076 loop a0, 4000368d <_X_uart_tx_one_char2+0x29> -40003684: 0020c0 memw -40003687: 872482 l32i a8, a4, 0x21c -4000368a: 027877 bbci a8, 23, 40003690 <_X_uart_tx_one_char2+0x2c> -4000368d: fffc06 j 40003681 <_X_uart_tx_one_char2+0x1d> -40003690: 0020c0 memw -40003693: 806422 s32i a2, a4, 0x200 -40003696: 020c movi.n a2, 0 -40003698: f01d retw.n - ... - -4000369c <_X_uart_wait_tx_empty>: -4000369c: 004136 entry a1, 32 -4000369f: 115200 slli a5, a2, 16 -400036a2: ff4a81 l32r a8, 400033cc <_c_0x5ffffe00> -400036a5: f43c21 l32r a2, 40000798 <_c_0x00ff0000> -400036a8: 805580 add a5, a5, a8 -400036ab: 0020c0 memw -400036ae: 872532 l32i a3, a5, 0x21c -400036b1: 100237 bnone a2, a3, 400036c5 <_X_uart_wait_tx_empty+0x29> -400036b4: f03d nop.n -400036b6: 088076 loop a0, 400036c2 <_X_uart_wait_tx_empty+0x26> -400036b9: 0020c0 memw -400036bc: 872592 l32i a9, a5, 0x21c -400036bf: 020927 bnone a9, a2, 400036c5 <_X_uart_wait_tx_empty+0x29> -400036c2: fffb86 j 400036b4 <_X_uart_wait_tx_empty+0x18> -400036c5: f01d retw.n -400036c7: 413600 srli a3, a0, 6 -400036ca: e02100 subx4 a2, a1, a0 -400036cd: 52fd excw -400036cf: 22ffa0 orb b15, b15, b10 -400036d2: 311802 l16ui a0, a8, 98 -400036d5: 3e .byte 0x3e -400036d6: ff .byte 0xff -400036d7: 112200 slli a2, a2, 16 -400036da: 802230 add a2, a2, a3 -400036dd: 088076 loop a0, 400036e9 <_X_uart_wait_tx_empty+0x4d> -400036e0: 0020c0 memw -400036e3: 872232 l32i a3, a2, 0x21c -400036e6: 028537 bany a5, a3, 400036ec <_X_uart_wait_tx_empty+0x50> -400036e9: fffc06 j 400036dd <_X_uart_wait_tx_empty+0x41> -400036ec: 0020c0 memw -400036ef: 802222 l32i a2, a2, 0x200 -400036f2: 742020 extui a2, a2, 0, 8 -400036f5: f01d retw.n -400036f7: 413600 srli a3, a0, 6 -400036fa: d44100 extui a4, a0, 1, 14 -400036fd: 42fd excw -400036ff: 811804 excw -40003702: 00ff32 s32ri a3, a15, 0 -40003705: 8a1144 excw -40003708: 20c044 excw -4000370b: 243200 extui a3, a0, 2, 3 -4000370e: 303087 bltu a0, a8, 40003742 <_X_uart_int_handler+0x1a> -40003711: b38c74 excw -40003714: 0020c0 memw -40003717: 802482 l32i a8, a4, 0x200 -4000371a: 004282 s8i a8, a2, 0 -4000371d: 020c movi.n a2, 0 -4000371f: f01d retw.n -40003721: 120c movi.n a2, 1 -40003723: f01d retw.n -40003725: 000000 ill - -40003728 <_X_uart_int_handler>: -40003728: 004136 entry a1, 32 -4000372b: fdc861 l32r a6, 40002e4c <_st_0x3fffdb10_uartdev> -4000372e: 180c movi.n a8, 1 -40003730: 180662 l8ui a6, a6, 24 -40003733: ff2671 l32r a7, 400033cc <_c_0x5ffffe00> -40003736: 115600 slli a5, a6, 16 -40003739: 557a add.n a5, a5, a7 -4000373b: 0020c0 memw -4000373e: 822532 l32i a3, a5, 0x208 -40003741: 546307 bbci a3, 0, 40003799 <_X_uart_int_handler+0x71> -40003744: ffa092 movi a9, 255 -40003747: 0020c0 memw -4000374a: 846582 s32i a8, a5, 0x210 -4000374d: 116600 slli a6, a6, 16 -40003750: 667a add.n a6, a6, a7 -40003752: 0020c0 memw -40003755: 8726a2 l32i a10, a6, 0x21c -40003758: 3d09a7 bnone a9, a10, 40003799 <_X_uart_int_handler+0x71> -4000375b: 1258 l32i.n a5, a2, 4 -4000375d: 290c movi.n a9, 2 -4000375f: d80c movi.n a8, 13 -40003761: 2b8076 loop a0, 40003790 <_X_uart_int_handler+0x68> -40003764: 0020c0 memw -40003767: 8026a2 l32i a10, a6, 0x200 -4000376a: 74a0a0 extui a10, a10, 0, 8 -4000376d: 0045a2 s8i a10, a5, 0 -40003770: 0278 l32i.n a7, a2, 0 -40003772: 1258 l32i.n a5, a2, 4 -40003774: 01d7b2 addmi a11, a7, 0x100 -40003777: 551b addi.n a5, a5, 1 -40003779: 171a87 beq a10, a8, 40003794 <_X_uart_int_handler+0x6c> -4000377c: 1259 s32i.n a5, a2, 4 -4000377e: 0395b7 bne a5, a11, 40003785 <_X_uart_int_handler+0x5d> -40003781: 075d mov.n a5, a7 -40003783: 1279 s32i.n a7, a2, 4 -40003785: 0020c0 memw -40003788: 8726a2 l32i a10, a6, 0x21c -4000378b: 74a0a0 extui a10, a10, 0, 8 -4000378e: 7a8c beqz.n a10, 40003799 <_X_uart_int_handler+0x71> -40003790: fff346 j 40003761 <_X_uart_int_handler+0x39> -40003793: 429900 xorb b9, b9, b0 -40003796: fff886 j 4000377c <_X_uart_int_handler+0x54> -40003799: f01d retw.n -4000379b: 413600 srli a3, a0, 6 -4000379e: 23b600 sext a11, a6, 7 -400037a1: 140c26 beqi a12, -1, 400037b9 <_X_uart_int_handler+0x91> -400037a4: d50c movi.n a5, 13 -400037a6: 02ad mov.n a10, a2 -400037a8: fff4e5 call8 400036f8 <_X_uart_wait_tx_empty+0x5c> -400037ab: 071a66 bnei a10, 1, 400037b6 <_X_uart_int_handler+0x8e> -400037ae: 02ad mov.n a10, a2 -400037b0: fff465 call8 400036f8 <_X_uart_wait_tx_empty+0x5c> -400037b3: f71a26 beqi a10, 1, 400037ae <_X_uart_int_handler+0x86> -400037b6: 0002a2 l8ui a10, a2, 0 -400037b9: 0c9a26 beqi a10, 10, 400037c9 <_X_uart_int_handler+0xa1> -400037bc: 091a57 beq a10, a5, 400037c9 <_X_uart_int_handler+0xa1> -400037bf: 221b addi.n a2, a2, 1 -400037c1: 441b addi.n a4, a4, 1 -400037c3: 744040 extui a4, a4, 0, 8 -400037c6: dc9347 bne a3, a4, 400037a6 <_X_uart_int_handler+0x7e> -400037c9: 0d0c movi.n a13, 0 -400037cb: 0142d2 s8i a13, a2, 1 -400037ce: 0d2d mov.n a2, a13 -400037d0: f01d retw.n - ... - -400037d4 <_X_send_packet>: -400037d4: 004136 entry a1, 32 -400037d7: c0a0a2 movi a10, 192 -400037da: ffe8a5 call8 40003664 <_X_uart_tx_one_char2> -400037dd: 330b addi.n a3, a3, -1 -400037df: 3d0326 beqi a3, -1, 40003820 <_X_send_packet+0x4c> -400037e2: dba052 movi a5, 219 -400037e5: c0a042 movi a4, 192 -400037e8: 000306 j 400037f8 <_X_send_packet+0x24> -400037eb: 650000 extui a0, a0, 16, 7 -400037ee: 1bffe7 bbsi a15, 30, 4000380d <_X_send_packet+0x39> -400037f1: c33222 excw -400037f4: ff .byte 0xff -400037f5: 027396 bltz a3, 40003820 <_X_send_packet+0x4c> -400037f8: 0002a2 l8ui a10, a2, 0 -400037fb: 111a47 beq a10, a4, 40003810 <_X_send_packet+0x3c> -400037fe: eb9a57 bne a10, a5, 400037ed <_X_send_packet+0x19> -40003801: dba0a2 movi a10, 219 -40003804: ffe5e5 call8 40003664 <_X_uart_tx_one_char2> -40003807: dda0a2 movi a10, 221 -4000380a: ffe5a5 call8 40003664 <_X_uart_tx_one_char2> -4000380d: fff7c6 j 400037f0 <_X_send_packet+0x1c> -40003810: dba0a2 movi a10, 219 -40003813: ffe525 call8 40003664 <_X_uart_tx_one_char2> -40003816: dca0a2 movi a10, 220 -40003819: ffe4a5 call8 40003664 <_X_uart_tx_one_char2> -4000381c: fff406 j 400037f0 <_X_send_packet+0x1c> -4000381f: a0a200 addx4 a10, a2, a0 -40003822: e425c0 extui a2, a12, 5, 15 -40003825: ff .byte 0xff -40003826: f01d retw.n - -40003828 <_X_SendMsg>: -40003828: 004136 entry a1, 32 -4000382b: 03bd mov.n a11, a3 -4000382d: 02ad mov.n a10, a2 -4000382f: fffa65 call8 400037d4 <_X_send_packet> -40003832: 020c movi.n a2, 0 -40003834: f01d retw.n -40003836: c80000 excw -40003839: ffc8 l32i.n a12, a15, 60 -4000383b: 3f .byte 0x3f - -4000383c <_X_recv_packet>: -4000383c: 006136 entry a1, 48 -4000383f: 180c movi.n a8, 1 -40003841: 047d mov.n a7, a4 -40003843: fd8261 l32r a6, 40002e4c <_st_0x3fffdb10_uartdev> -40003846: 029d mov.n a9, a2 -40003848: 1199 s32i.n a9, a1, 4 -4000384a: 020c movi.n a2, 0 -4000384c: 004122 s8i a2, a1, 0 -4000384f: d658 l32i.n a5, a6, 52 -40003851: 937840 movnez a7, a8, a4 -40003854: 2179 s32i.n a7, a1, 8 -40003856: 932570 movnez a2, a5, a7 -40003859: c0a072 movi a7, 192 -4000385c: 1cc652 addi a5, a6, 28 -4000385f: 0d3416 beqz a4, 40003936 <_X_recv_packet+0xfa> -40003862: c698 l32i.n a9, a6, 48 -40003864: 1e2966 bnei a9, 2, 40003886 <_X_recv_packet+0x4a> -40003867: 000f86 j 400038a9 <_X_recv_packet+0x6d> -4000386a: 648c beqz.n a4, 40003874 <_X_recv_packet+0x38> -4000386c: c6e8 l32i.n a14, a6, 48 -4000386e: 024e66 bnei a14, 4, 40003874 <_X_recv_packet+0x38> -40003871: 002406 j 40003905 <_X_recv_packet+0xc9> -40003874: 0001a2 l8ui a10, a1, 0 -40003877: 1d1a77 beq a10, a7, 40003898 <_X_recv_packet+0x5c> -4000387a: dba0f2 movi a15, 219 -4000387d: 511af7 beq a10, a15, 400038d2 <_X_recv_packet+0x96> -40003880: 02a237 bge a2, a3, 40003886 <_X_recv_packet+0x4a> -40003883: 002746 j 40003924 <_X_recv_packet+0xe8> -40003886: 05ad mov.n a10, a5 -40003888: 01bd mov.n a11, a1 -4000388a: 001165 call8 400039a0 <_X_uart_rx_readbuff> -4000388d: fd9a16 beqz a10, 4000386a <_X_recv_packet+0x2e> -40003890: ff2416 beqz a4, 40003886 <_X_recv_packet+0x4a> -40003893: 020c movi.n a2, 0 -40003895: f01d retw.n -40003897: a21600 muluh a1, a6, a0 -4000389a: fe .byte 0xfe -4000389b: 0e7416 beqz a4, 40003986 <_X_recv_packet+0x14a> -4000389e: 280c movi.n a8, 2 -400038a0: 090c movi.n a9, 0 -400038a2: d699 s32i.n a9, a6, 52 -400038a4: c689 s32i.n a8, a6, 48 -400038a6: f01d retw.n -400038a8: 05ad00 extui a10, a0, 29, 1 -400038ab: 01bd mov.n a11, a1 -400038ad: 000f25 call8 400039a0 <_X_uart_rx_readbuff> -400038b0: 4adc bnez.n a10, 400038c8 <_X_recv_packet+0x8c> -400038b2: 0001a2 l8ui a10, a1, 0 -400038b5: 0020f0 nop -400038b8: c0ba70 sub a11, a10, a7 -400038bb: 09db16 beqz a11, 4000395c <_X_recv_packet+0x120> -400038be: 05ad mov.n a10, a5 -400038c0: 01bd mov.n a11, a1 -400038c2: 000de5 call8 400039a0 <_X_uart_rx_readbuff> -400038c5: fe9a16 beqz a10, 400038b2 <_X_recv_packet+0x76> -400038c8: 0001c2 l8ui a12, a1, 0 -400038cb: c49c77 bne a12, a7, 40003893 <_X_recv_packet+0x57> -400038ce: ffed06 j 40003886 <_X_recv_packet+0x4a> -400038d1: e4bc00 extui a11, a0, 12, 15 -400038d4: c698 l32i.n a9, a6, 48 -400038d6: 0101d2 l8ui a13, a1, 1 -400038d9: 023966 bnei a9, 3, 400038df <_X_recv_packet+0xa3> -400038dc: 002186 j 40003966 <_X_recv_packet+0x12a> -400038df: 0041d2 s8i a13, a1, 0 -400038e2: 24afe2 movi a14, -220 -400038e5: 0001a2 l8ui a10, a1, 0 -400038e8: 21d8 l32i.n a13, a1, 8 -400038ea: 3c0c movi.n a12, 3 -400038ec: 939cd0 movnez a9, a12, a13 -400038ef: c699 s32i.n a9, a6, 48 -400038f1: eaea add.n a14, a10, a14 -400038f3: 0a2ef6 bgeui a14, 2, 40003901 <_X_recv_packet+0xc5> -400038f6: ffd0b1 l32r a11, 40003838 <_X_SendMsg+0x10> -400038f9: aaba add.n a10, a10, a11 -400038fb: 7c0aa2 l8ui a10, a10, 124 -400038fe: 0041a2 s8i a10, a1, 0 -40003901: ffdec6 j 40003880 <_X_recv_packet+0x44> -40003904: a0e200 addx4 a14, a2, a0 -40003907: f2db addi.n a15, a2, 13 -40003909: f20001 l32r a0, 4000010c <_WindowOverflowHandler+0xc> -4000390c: e20141 l32r a4, 3fffc110 <_start-0x3ef0> -4000390f: 560041 l32r a4, 3ffd9110 <_start-0x26ef0> -40003912: adfbf4 excw -40003915: b11005 call0 3ffb4a18 <_start-0x4b5e8> -40003918: 086520 excw -4000391b: 1a2600 depbits a0, a6, 1, 3 -4000391e: 9859 s32i.n a5, a8, 36 -40003920: ef46c6 j 3ffff63f <_start-0x9c1> -40003923: ff .byte 0xff -40003924: 1198 l32i.n a9, a1, 4 -40003926: 929a add.n a9, a2, a9 -40003928: 0049a2 s8i a10, a9, 0 -4000392b: d688 l32i.n a8, a6, 52 -4000392d: 221b addi.n a2, a2, 1 -4000392f: 881b addi.n a8, a8, 1 -40003931: d689 s32i.n a8, a6, 52 -40003933: ffd3c6 j 40003886 <_X_recv_packet+0x4a> -40003936: 05ad mov.n a10, a5 -40003938: 01bd mov.n a11, a1 -4000393a: 000665 call8 400039a0 <_X_uart_rx_readbuff> -4000393d: 081a26 beqi a10, 1, 40003949 <_X_recv_packet+0x10d> -40003940: 0001a2 l8ui a10, a1, 0 -40003943: c0aa70 sub a10, a10, a7 -40003946: f3ca16 beqz a10, 40003886 <_X_recv_packet+0x4a> -40003949: 05ad mov.n a10, a5 -4000394b: 01bd mov.n a11, a1 -4000394d: 000525 call8 400039a0 <_X_uart_rx_readbuff> -40003950: f51a26 beqi a10, 1, 40003949 <_X_recv_packet+0x10d> -40003953: 0001b2 l8ui a11, a1, 0 -40003956: ef9b77 bne a11, a7, 40003949 <_X_recv_packet+0x10d> -40003959: ffca46 j 40003886 <_X_recv_packet+0x4a> -4000395c: 3d0c movi.n a13, 3 -4000395e: c6d9 s32i.n a13, a6, 48 -40003960: f2fb56 bnez a11, 40003893 <_X_recv_packet+0x57> -40003963: ffc7c6 j 40003886 <_X_recv_packet+0x4a> -40003966: 05ad mov.n a10, a5 -40003968: 01bd mov.n a11, a1 -4000396a: 4e0c movi.n a14, 4 -4000396c: c6e9 s32i.n a14, a6, 48 -4000396e: 000325 call8 400039a0 <_X_uart_rx_readbuff> -40003971: aa1a66 bnei a10, 1, 4000391f <_X_recv_packet+0xe3> -40003974: ffc6c6 j 40003893 <_X_recv_packet+0x57> -40003977: ad0000 excw -4000397a: 01bd05 call0 4000554c <_X_slc_init_attach+0x64> -4000397d: 000225 call8 400039a0 <_X_uart_rx_readbuff> -40003980: f51a26 beqi a10, 1, 40003979 <_X_recv_packet+0x13d> -40003983: ffe606 j 4000391f <_X_recv_packet+0xe3> -40003986: f01d retw.n - -40003988 <_X_RcvMsg>: -40003988: 004136 entry a1, 32 -4000398b: 04cd mov.n a12, a4 -4000398d: 03bd mov.n a11, a3 -4000398f: 02ad mov.n a10, a2 -40003991: ffeaa5 call8 4000383c <_X_recv_packet> -40003994: 2a8c beqz.n a10, 4000399a <_X_RcvMsg+0x12> -40003996: 020c movi.n a2, 0 -40003998: f01d retw.n -4000399a: 120c movi.n a2, 1 -4000399c: f01d retw.n - ... - -400039a0 <_X_uart_rx_readbuff>: -400039a0: 004136 entry a1, 32 -400039a3: 2268 l32i.n a6, a2, 8 -400039a5: 1248 l32i.n a4, a2, 4 -400039a7: 059467 bne a4, a6, 400039b0 <_X_uart_rx_readbuff+0x10> -400039aa: 120c movi.n a2, 1 -400039ac: f01d retw.n -400039ae: 820000 mull a0, a0, a0 -400039b1: 820006 j 3ffe41b5 <_start-0x1be4b> -400039b4: 380043 excw -400039b7: 225802 s16i a0, a8, 68 -400039ba: 01d382 addmi a8, a3, 0x100 -400039bd: 551b addi.n a5, a5, 1 -400039bf: 2259 s32i.n a5, a2, 8 -400039c1: 059587 bne a5, a8, 400039ca <_X_uart_rx_readbuff+0x2a> -400039c4: 2239 s32i.n a3, a2, 8 -400039c6: 020c movi.n a2, 0 -400039c8: f01d retw.n -400039ca: 020c movi.n a2, 0 -400039cc: f01d retw.n -400039ce: 360000 excw -400039d1: 410061 l32r a6, 3ffd3dd4 <_start-0x2c22c> -400039d4: 1e .byte 0x1e -400039d5: 88fd excw -400039d7: 2826b4 excw -400039da: 120c04 excw -400039dd: f01d retw.n -400039df: 01bd00 slli a11, a13, 32 -400039e2: 1cc432 addi a3, a4, 28 -400039e5: 03ad mov.n a10, a3 -400039e7: fffba5 call8 400039a0 <_X_uart_rx_readbuff> -400039ea: ba8c beqz.n a10, 400039f9 <_X_uart_rx_readbuff+0x59> -400039ec: 090c movi.n a9, 0 -400039ee: 004292 s8i a9, a2, 0 -400039f1: 092d mov.n a2, a9 -400039f3: b429 s32i.n a2, a4, 44 -400039f5: f01d retw.n -400039f7: ad0000 excw -400039fa: 019203 excw -400039fd: 01bd00 slli a11, a13, 32 -40003a00: 004292 s8i a9, a2, 0 -40003a03: 221b addi.n a2, a2, 1 -40003a05: fff9a5 call8 400039a0 <_X_uart_rx_readbuff> -40003a08: feda16 beqz a10, 400039f9 <_X_uart_rx_readbuff+0x59> -40003a0b: fff746 j 400039ec <_X_uart_rx_readbuff+0x4c> -40003a0e: 360000 excw -40003a11: 210041 l32r a4, 3ffcbe14 <_start-0x341ec> -40003a14: 0e .byte 0xe -40003a15: 1dfd excw -40003a17: 4e00f0 excw - -40003a18 <_c_0x60004e00>: -40003a18: 004e00 break 14, 0 -40003a1b: 413660 srli a3, a6, 6 - -40003a1c <_X_SelectSpiFunction>: -40003a1c: 004136 entry a1, 32 -40003a1f: 787c movi.n a8, -9 -40003a21: f6b371 l32r a7, 400014f0 <_c_0xffff8fff> -40003a24: f5c641 l32r a4, 4000113c <_c_0x1000> -40003a27: fffc51 l32r a5, 40003a18 <_c_0x60004e00> -40003a2a: f6b261 l32r a6, 400014f4 <_c_0x60008e00> -40003a2d: 123216 beqz a2, 40003b54 <_X_SelectSpiFunction+0x138> -40003a30: 0020c0 memw -40003a33: 8c2632 l32i a3, a6, 0x230 -40003a36: 103380 and a3, a3, a8 -40003a39: 0020c0 memw -40003a3c: 8c6632 s32i a3, a6, 0x230 -40003a3f: 0020c0 memw -40003a42: 8c2622 l32i a2, a6, 0x230 -40003a45: 102270 and a2, a2, a7 -40003a48: 0020c0 memw -40003a4b: 8c6622 s32i a2, a6, 0x230 -40003a4e: 0020c0 memw -40003a51: 8c26f2 l32i a15, a6, 0x230 -40003a54: 20ff40 or a15, a15, a4 -40003a57: 0020c0 memw -40003a5a: 8c66f2 s32i a15, a6, 0x230 -40003a5d: 0020c0 memw -40003a60: 8d26e2 l32i a14, a6, 0x234 -40003a63: 10ee80 and a14, a14, a8 -40003a66: 0020c0 memw -40003a69: 8d66e2 s32i a14, a6, 0x234 -40003a6c: 0020c0 memw -40003a6f: 8d26d2 l32i a13, a6, 0x234 -40003a72: 10dd70 and a13, a13, a7 -40003a75: 0020c0 memw -40003a78: 8d66d2 s32i a13, a6, 0x234 -40003a7b: 0020c0 memw -40003a7e: 8d26c2 l32i a12, a6, 0x234 -40003a81: 20cc40 or a12, a12, a4 -40003a84: 0020c0 memw -40003a87: 8d66c2 s32i a12, a6, 0x234 -40003a8a: 0020c0 memw -40003a8d: 8e26b2 l32i a11, a6, 0x238 -40003a90: 10bb80 and a11, a11, a8 -40003a93: 0020c0 memw -40003a96: 8e66b2 s32i a11, a6, 0x238 -40003a99: 0020c0 memw -40003a9c: 8e26a2 l32i a10, a6, 0x238 -40003a9f: 10aa70 and a10, a10, a7 -40003aa2: 0020c0 memw -40003aa5: 8e66a2 s32i a10, a6, 0x238 -40003aa8: 0020c0 memw -40003aab: 8e2692 l32i a9, a6, 0x238 -40003aae: 209940 or a9, a9, a4 -40003ab1: 0020c0 memw -40003ab4: 8e6692 s32i a9, a6, 0x238 -40003ab7: 0020c0 memw -40003aba: 8f2632 l32i a3, a6, 0x23c -40003abd: 103380 and a3, a3, a8 -40003ac0: 0020c0 memw -40003ac3: 8f6632 s32i a3, a6, 0x23c -40003ac6: 0020c0 memw -40003ac9: 8f2622 l32i a2, a6, 0x23c -40003acc: 102270 and a2, a2, a7 -40003acf: 0020c0 memw -40003ad2: 8f6622 s32i a2, a6, 0x23c -40003ad5: 0020c0 memw -40003ad8: 8f26f2 l32i a15, a6, 0x23c -40003adb: 20ff40 or a15, a15, a4 -40003ade: 0020c0 memw -40003ae1: 8f66f2 s32i a15, a6, 0x23c -40003ae4: 0020c0 memw -40003ae7: 9026e2 l32i a14, a6, 0x240 -40003aea: 10ee80 and a14, a14, a8 -40003aed: 0020c0 memw -40003af0: 9066e2 s32i a14, a6, 0x240 -40003af3: 0020c0 memw -40003af6: 9026d2 l32i a13, a6, 0x240 -40003af9: 10dd70 and a13, a13, a7 -40003afc: 0020c0 memw -40003aff: 9066d2 s32i a13, a6, 0x240 -40003b02: 0020c0 memw -40003b05: 9026c2 l32i a12, a6, 0x240 -40003b08: 20cc40 or a12, a12, a4 -40003b0b: 0020c0 memw -40003b0e: 9066c2 s32i a12, a6, 0x240 -40003b11: 0020c0 memw -40003b14: 9226b2 l32i a11, a6, 0x248 -40003b17: 10bb80 and a11, a11, a8 -40003b1a: 0020c0 memw -40003b1d: 9266b2 s32i a11, a6, 0x248 -40003b20: 0020c0 memw -40003b23: 9226a2 l32i a10, a6, 0x248 -40003b26: 10aa70 and a10, a10, a7 -40003b29: 0020c0 memw -40003b2c: 9266a2 s32i a10, a6, 0x248 -40003b2f: 0020c0 memw -40003b32: 922692 l32i a9, a6, 0x248 -40003b35: 209940 or a9, a9, a4 -40003b38: 0020c0 memw -40003b3b: 926692 s32i a9, a6, 0x248 -40003b3e: f2fe31 l32r a3, 40000738 <_c_0x80000000> -40003b41: 0020c0 memw -40003b44: 492522 l32i a2, a5, 0x124 -40003b47: 202230 or a2, a2, a3 -40003b4a: 0020c0 memw -40003b4d: 496522 s32i a2, a5, 0x124 -40003b50: f01d retw.n -40003b52: c00000 sub a0, a0, a0 -40003b55: a20020 muluh a0, a0, a2 -40003b58: 809826 beqi a8, 10, 40003adc <_X_SelectSpiFunction+0xc0> -40003b5b: 10aa add.n a1, a0, a10 -40003b5d: 0020c0 memw -40003b60: 9866a2 s32i a10, a6, 0x260 -40003b63: 0020c0 memw -40003b66: 982692 l32i a9, a6, 0x260 -40003b69: 109970 and a9, a9, a7 -40003b6c: 0020c0 memw -40003b6f: 986692 s32i a9, a6, 0x260 -40003b72: 0020c0 memw -40003b75: 982632 l32i a3, a6, 0x260 -40003b78: 203340 or a3, a3, a4 -40003b7b: 0020c0 memw -40003b7e: 986632 s32i a3, a6, 0x260 -40003b81: 0020c0 memw -40003b84: 992622 l32i a2, a6, 0x264 -40003b87: 102280 and a2, a2, a8 -40003b8a: 0020c0 memw -40003b8d: 996622 s32i a2, a6, 0x264 -40003b90: 0020c0 memw -40003b93: 9926f2 l32i a15, a6, 0x264 -40003b96: 10ff70 and a15, a15, a7 -40003b99: 0020c0 memw -40003b9c: 9966f2 s32i a15, a6, 0x264 -40003b9f: 0020c0 memw -40003ba2: 9926e2 l32i a14, a6, 0x264 -40003ba5: 20ee40 or a14, a14, a4 -40003ba8: 0020c0 memw -40003bab: 9966e2 s32i a14, a6, 0x264 -40003bae: 0020c0 memw -40003bb1: 9a26d2 l32i a13, a6, 0x268 -40003bb4: 10dd80 and a13, a13, a8 -40003bb7: 0020c0 memw -40003bba: 9a66d2 s32i a13, a6, 0x268 -40003bbd: 0020c0 memw -40003bc0: 9a26c2 l32i a12, a6, 0x268 -40003bc3: 10cc70 and a12, a12, a7 -40003bc6: 0020c0 memw -40003bc9: 9a66c2 s32i a12, a6, 0x268 -40003bcc: 0020c0 memw -40003bcf: 9a26b2 l32i a11, a6, 0x268 -40003bd2: 20bb40 or a11, a11, a4 -40003bd5: 0020c0 memw -40003bd8: 9a66b2 s32i a11, a6, 0x268 -40003bdb: 0020c0 memw -40003bde: 9526a2 l32i a10, a6, 0x254 -40003be1: 10aa80 and a10, a10, a8 -40003be4: 0020c0 memw -40003be7: 9566a2 s32i a10, a6, 0x254 -40003bea: 0020c0 memw -40003bed: 952692 l32i a9, a6, 0x254 -40003bf0: 109970 and a9, a9, a7 -40003bf3: 0020c0 memw -40003bf6: 956692 s32i a9, a6, 0x254 -40003bf9: 0020c0 memw -40003bfc: 952632 l32i a3, a6, 0x254 -40003bff: 203340 or a3, a3, a4 -40003c02: 0020c0 memw -40003c05: 956632 s32i a3, a6, 0x254 -40003c08: 0020c0 memw -40003c0b: 962622 l32i a2, a6, 0x258 -40003c0e: 102280 and a2, a2, a8 -40003c11: 0020c0 memw -40003c14: 966622 s32i a2, a6, 0x258 -40003c17: 0020c0 memw -40003c1a: 9626f2 l32i a15, a6, 0x258 -40003c1d: 10ff70 and a15, a15, a7 -40003c20: 0020c0 memw -40003c23: 9666f2 s32i a15, a6, 0x258 -40003c26: 0020c0 memw -40003c29: 9626e2 l32i a14, a6, 0x258 -40003c2c: 20ee40 or a14, a14, a4 -40003c2f: 0020c0 memw -40003c32: 9666e2 s32i a14, a6, 0x258 -40003c35: 0020c0 memw -40003c38: 9726d2 l32i a13, a6, 0x25c -40003c3b: 10dd80 and a13, a13, a8 -40003c3e: 0020c0 memw -40003c41: 9766d2 s32i a13, a6, 0x25c -40003c44: 0020c0 memw -40003c47: 9726c2 l32i a12, a6, 0x25c -40003c4a: 10cc70 and a12, a12, a7 -40003c4d: 0020c0 memw -40003c50: 9766c2 s32i a12, a6, 0x25c -40003c53: 0020c0 memw -40003c56: 9726b2 l32i a11, a6, 0x25c -40003c59: 20bb40 or a11, a11, a4 -40003c5c: 0020c0 memw -40003c5f: 9766b2 s32i a11, a6, 0x25c -40003c62: f2c7a1 l32r a10, 40000780 <_c_0x7fffffff> -40003c65: 0020c0 memw -40003c68: 492592 l32i a9, a5, 0x124 -40003c6b: 1099a0 and a9, a9, a10 -40003c6e: 0020c0 memw -40003c71: 496592 s32i a9, a5, 0x124 -40003c74: f01d retw.n - ... - -40003c78 <_c_0x60002e00>: -40003c78: 002e00 excw -40003c7b: 413660 srli a3, a6, 6 - -40003c7c <_X_SPI_chip_erase>: -40003c7c: 004136 entry a1, 32 -40003c7f: 20a220 or a10, a2, a2 -40003c82: 005865 call8 40004208 <_X_Wait_SPI_Idle> -40003c85: fb4ba1 l32r a10, 400029b4 <_c_0x00400000> -40003c88: fffc91 l32r a9, 40003c78 <_c_0x60002e00> -40003c8b: 0020c0 memw -40003c8e: 8069a2 s32i a10, a9, 0x200 -40003c91: 0020c0 memw -40003c94: 802982 l32i a8, a9, 0x200 -40003c97: d88c beqz.n a8, 40003ca8 <_X_SPI_chip_erase+0x2c> -40003c99: 078076 loop a0, 40003ca4 <_X_SPI_chip_erase+0x28> -40003c9c: 0020c0 memw -40003c9f: 8029b2 l32i a11, a9, 0x200 -40003ca2: 2b8c beqz.n a11, 40003ca8 <_X_SPI_chip_erase+0x2c> -40003ca4: fffc46 j 40003c99 <_X_SPI_chip_erase+0x1d> -40003ca7: 02ad00 andb b10, b13, b0 -40003caa: 0055e5 call8 40004208 <_X_Wait_SPI_Idle> -40003cad: 020c movi.n a2, 0 -40003caf: f01d retw.n -40003cb1: 000000 ill - -40003cb4 <_c_0x00ffffff>: -40003cb4: ff .byte 0xff -40003cb5: ff .byte 0xff -40003cb6: ff .byte 0xff - ... - -40003cb8 <_c_0x01000000>: -40003cb8: 000000 ill -40003cbb: 413601 l32r a0, 3ffd4194 <_start-0x2be6c> - -40003cbc <_XX_unk3cbc>: -40003cbc: 004136 entry a1, 32 -40003cbf: b48030 extui a8, a3, 0, 12 -40003cc2: 288c beqz.n a8, 40003cc8 <_XX_unk3cbc+0xc> -40003cc4: 120c movi.n a2, 1 -40003cc6: f01d retw.n -40003cc8: 02ad mov.n a10, a2 -40003cca: 0053e5 call8 40004208 <_X_Wait_SPI_Idle> -40003ccd: fff9c1 l32r a12, 40003cb4 <_c_0x00ffffff> -40003cd0: ffea91 l32r a9, 40003c78 <_c_0x60002e00> -40003cd3: 10c3c0 and a12, a3, a12 -40003cd6: 0020c0 memw -40003cd9: 8169c2 s32i a12, a9, 0x204 -40003cdc: fff7b1 l32r a11, 40003cb8 <_c_0x01000000> -40003cdf: 0020c0 memw -40003ce2: 8069b2 s32i a11, a9, 0x200 -40003ce5: 0020c0 memw -40003ce8: 8029a2 l32i a10, a9, 0x200 -40003ceb: 7a8c beqz.n a10, 40003cf6 <_XX_unk3cbc+0x3a> -40003ced: 0020c0 memw -40003cf0: 8029d2 l32i a13, a9, 0x200 -40003cf3: ff6d56 bnez a13, 40003ced <_XX_unk3cbc+0x31> -40003cf6: 02ad mov.n a10, a2 -40003cf8: 0050e5 call8 40004208 <_X_Wait_SPI_Idle> -40003cfb: 020c movi.n a2, 0 -40003cfd: f01d retw.n - ... - -40003d00 <_c_0x00800000>: -40003d00: 800000 add a0, a0, a0 -40003d03: 413600 srli a3, a0, 6 -40003d06: a22000 muluh a2, a0, a0 -40003d09: 4fe520 excw -40003d0c: e9b100 excw -40003d0f: ff .byte 0xff -40003d10: ffda91 l32r a9, 40003c78 <_c_0x60002e00> -40003d13: 10b3b0 and a11, a3, a11 -40003d16: 0020c0 memw -40003d19: 8169b2 s32i a11, a9, 0x204 -40003d1c: fff9a1 l32r a10, 40003d00 <_c_0x00800000> -40003d1f: 0020c0 memw -40003d22: 8069a2 s32i a10, a9, 0x200 -40003d25: 0020c0 memw -40003d28: 802982 l32i a8, a9, 0x200 -40003d2b: d88c beqz.n a8, 40003d3c <_c_0x00800000+0x3c> -40003d2d: 078076 loop a0, 40003d38 <_c_0x00800000+0x38> -40003d30: 0020c0 memw -40003d33: 8029c2 l32i a12, a9, 0x200 -40003d36: 2c8c beqz.n a12, 40003d3c <_c_0x00800000+0x3c> -40003d38: fffc46 j 40003d2d <_c_0x00800000+0x2d> -40003d3b: 02ad00 andb b10, b13, b0 -40003d3e: 004ca5 call8 40004208 <_X_Wait_SPI_Idle> -40003d41: 020c movi.n a2, 0 -40003d43: f01d retw.n -40003d45: 000000 ill -40003d48: 000000 ill -40003d4b: 000020 excw - -40003d4c <_c_0x02000000>: -40003d4c: 000000 ill -40003d4f: 413602 excw -40003d52: 380c00 excw -40003d55: 1f8857 bany a8, a5, 40003d78 <_c_0x02000000+0x2c> -40003d58: 4298 l32i.n a9, a2, 16 -40003d5a: e2a390 remu a10, a3, a9 -40003d5d: a5aa add.n a10, a5, a10 -40003d5f: 1539a7 bltu a9, a10, 40003d78 <_c_0x02000000+0x2c> -40003d62: 20a220 or a10, a2, a2 -40003d65: 004a25 call8 40004208 <_X_Wait_SPI_Idle> -40003d68: 0215e6 bgei a5, 1, 40003d6e <_c_0x02000000+0x22> -40003d6b: 002b86 j 40003e1d <_c_0x02000000+0xd1> -40003d6e: ffc261 l32r a6, 40003c78 <_c_0x60002e00> -40003d71: ffd071 l32r a7, 40003cb4 <_c_0x00ffffff> -40003d74: 0003c6 j 40003d87 <_c_0x02000000+0x3b> -40003d77: 120c00 andbc b0, b12, b0 -40003d7a: f01d retw.n -40003d7c: 02ad mov.n a10, a2 -40003d7e: 0048a5 call8 40004208 <_X_Wait_SPI_Idle> -40003d81: 0215e6 bgei a5, 1, 40003d87 <_c_0x02000000+0x3b> -40003d84: 002546 j 40003e1d <_c_0x02000000+0xd1> -40003d87: 10a370 and a10, a3, a7 -40003d8a: 56c5a6 blti a5, 32, 40003de4 <_c_0x02000000+0x98> -40003d8d: ffeed1 l32r a13, 40003d48 <_c_0x00800000+0x48> -40003d90: 20dad0 or a13, a10, a13 -40003d93: 0020c0 memw -40003d96: 8166d2 s32i a13, a6, 0x204 -40003d99: 080c movi.n a8, 0 -40003d9b: 890c movi.n a9, 8 -40003d9d: 11a976 loopgtz a9, 40003db2 <_c_0x02000000+0x66> -40003da0: a09860 addx4 a9, a8, a6 -40003da3: 04b8 l32i.n a11, a4, 0 -40003da5: 0020c0 memw -40003da8: 9069b2 s32i a11, a9, 0x240 -40003dab: 444b addi.n a4, a4, 4 -40003dad: 981b addi.n a9, a8, 1 -40003daf: 748090 extui a8, a9, 0, 8 -40003db2: e0c552 addi a5, a5, -32 -40003db5: 20c332 addi a3, a3, 32 -40003db8: 02ad mov.n a10, a2 -40003dba: 004025 call8 400041bc <_X_SPI_write_enable> -40003dbd: fb7a56 bnez a10, 40003d78 <_c_0x02000000+0x2c> -40003dc0: 0020c0 memw -40003dc3: ffe2f1 l32r a15, 40003d4c <_c_0x02000000> -40003dc6: 8066f2 s32i a15, a6, 0x200 -40003dc9: 0020c0 memw -40003dcc: 8026e2 l32i a14, a6, 0x200 -40003dcf: 0020f0 nop -40003dd2: fa6e16 beqz a14, 40003d7c <_c_0x02000000+0x30> -40003dd5: 088076 loop a0, 40003de1 <_c_0x02000000+0x95> -40003dd8: 0020c0 memw -40003ddb: 802682 l32i a8, a6, 0x200 -40003dde: f9a816 beqz a8, 40003d7c <_c_0x02000000+0x30> -40003de1: fffc06 j 40003dd5 <_c_0x02000000+0x89> -40003de4: 03bd mov.n a11, a3 -40003de6: 8b75b0 depbits a11, a5, 24, 8 -40003de9: 0020c0 memw -40003dec: 8166b2 s32i a11, a6, 0x204 -40003def: 219250 srai a9, a5, 2 -40003df2: 14a050 extui a10, a5, 0, 2 -40003df5: fa9c beqz.n a10, 40003e18 <_c_0x02000000+0xcc> -40003df7: a91b addi.n a10, a9, 1 -40003df9: 080c movi.n a8, 0 -40003dfb: 7490a0 extui a9, a10, 0, 8 -40003dfe: 119976 loopnez a9, 40003e13 <_c_0x02000000+0xc7> -40003e01: a09860 addx4 a9, a8, a6 -40003e04: 04b8 l32i.n a11, a4, 0 -40003e06: 0020c0 memw -40003e09: 9069b2 s32i a11, a9, 0x240 -40003e0c: 444b addi.n a4, a4, 4 -40003e0e: 981b addi.n a9, a8, 1 -40003e10: 748090 extui a8, a9, 0, 8 -40003e13: 050c movi.n a5, 0 -40003e15: ffe7c6 j 40003db8 <_c_0x02000000+0x6c> -40003e18: 09ad mov.n a10, a9 -40003e1a: fff6c6 j 40003df9 <_c_0x02000000+0xad> -40003e1d: 020c movi.n a2, 0 -40003e1f: f01d retw.n -40003e21: 000000 ill - -40003e24 <_XX_unk3e24>: -40003e24: 004136 entry a1, 32 -40003e27: 1288 l32i.n a8, a2, 4 -40003e29: 953a add.n a9, a5, a3 -40003e2b: 03b897 bgeu a8, a9, 40003e32 <_XX_unk3e24+0xe> -40003e2e: 120c movi.n a2, 1 -40003e30: f01d retw.n -40003e32: 02ad mov.n a10, a2 -40003e34: 003d25 call8 40004208 <_X_Wait_SPI_Idle> -40003e37: 0215e6 bgei a5, 1, 40003e3d <_XX_unk3e24+0x19> -40003e3a: 002e06 j 40003ef6 <_XX_unk3e24+0xd2> -40003e3d: ffc2f1 l32r a15, 40003d48 <_c_0x00800000+0x48> -40003e40: f23ee1 l32r a14, 40000738 <_c_0x80000000> -40003e43: ff8dd1 l32r a13, 40003c78 <_c_0x60002e00> -40003e46: 000b46 j 40003e77 <_XX_unk3e24+0x53> -40003e49: 219250 srai a9, a5, 2 -40003e4c: 14a050 extui a10, a5, 0, 2 -40003e4f: 09ea16 beqz a10, 40003ef1 <_XX_unk3e24+0xcd> -40003e52: a91b addi.n a10, a9, 1 -40003e54: 080c movi.n a8, 0 -40003e56: 7490a0 extui a9, a10, 0, 8 -40003e59: 119976 loopnez a9, 40003e6e <_XX_unk3e24+0x4a> -40003e5c: a098d0 addx4 a9, a8, a13 -40003e5f: 0020c0 memw -40003e62: 902992 l32i a9, a9, 0x240 -40003e65: 881b addi.n a8, a8, 1 -40003e67: 0499 s32i.n a9, a4, 0 -40003e69: 748080 extui a8, a8, 0, 8 -40003e6c: 444b addi.n a4, a4, 4 -40003e6e: 00a052 movi a5, 0 -40003e71: 0215e6 bgei a5, 1, 40003e77 <_XX_unk3e24+0x53> -40003e74: 001f86 j 40003ef6 <_XX_unk3e24+0xd2> -40003e77: 4ac5a6 blti a5, 32, 40003ec5 <_XX_unk3e24+0xa1> -40003e7a: 20c3f0 or a12, a3, a15 -40003e7d: 0020c0 memw -40003e80: 816dc2 s32i a12, a13, 0x204 -40003e83: 0020c0 memw -40003e86: 806de2 s32i a14, a13, 0x200 -40003e89: 0020c0 memw -40003e8c: 802db2 l32i a11, a13, 0x200 -40003e8f: eb8c beqz.n a11, 40003ea1 <_XX_unk3e24+0x7d> -40003e91: 078076 loop a0, 40003e9c <_XX_unk3e24+0x78> -40003e94: 0020c0 memw -40003e97: 802d82 l32i a8, a13, 0x200 -40003e9a: 388c beqz.n a8, 40003ea1 <_XX_unk3e24+0x7d> -40003e9c: fffc46 j 40003e91 <_XX_unk3e24+0x6d> -40003e9f: 0c0000 excw -40003ea2: 0c08 l32i.n a0, a12, 0 -40003ea4: 7689 s32i.n a8, a6, 28 -40003ea6: 11a9 s32i.n a10, a1, 4 -40003ea8: a098d0 addx4 a9, a8, a13 -40003eab: 0020c0 memw -40003eae: 902992 l32i a9, a9, 0x240 -40003eb1: 881b addi.n a8, a8, 1 -40003eb3: 0499 s32i.n a9, a4, 0 -40003eb5: 748080 extui a8, a8, 0, 8 -40003eb8: 444b addi.n a4, a4, 4 -40003eba: e0c552 addi a5, a5, -32 -40003ebd: 20c332 addi a3, a3, 32 -40003ec0: ffeb46 j 40003e71 <_XX_unk3e24+0x4d> -40003ec3: 800000 add a0, a0, a0 -40003ec6: a001a5 call8 3ffa3ee0 <_start-0x5c120> -40003ec9: c020a3 excw -40003ecc: a20020 muluh a0, a0, a2 -40003ecf: 816d excw -40003ed1: 0020c0 memw -40003ed4: 806de2 s32i a14, a13, 0x200 -40003ed7: 0020c0 memw -40003eda: 802d92 l32i a9, a13, 0x200 -40003edd: f68916 beqz a9, 40003e49 <_XX_unk3e24+0x25> -40003ee0: f03d nop.n -40003ee2: 088076 loop a0, 40003eee <_XX_unk3e24+0xca> -40003ee5: 0020c0 memw -40003ee8: 802db2 l32i a11, a13, 0x200 -40003eeb: f5ab16 beqz a11, 40003e49 <_XX_unk3e24+0x25> -40003eee: fffb86 j 40003ee0 <_XX_unk3e24+0xbc> -40003ef1: 09ad mov.n a10, a9 -40003ef3: ffd746 j 40003e54 <_XX_unk3e24+0x30> -40003ef6: 020c movi.n a2, 0 -40003ef8: f01d retw.n - ... - -40003efc <_X_SPI_read_status>: -40003efc: 004136 entry a1, 32 -40003eff: fd8c61 l32r a6, 40003530 <_c_0x08000000> -40003f02: ff5d51 l32r a5, 40003c78 <_c_0x60002e00> -40003f05: 080c movi.n a8, 0 -40003f07: 000346 j 40003f18 <_X_SPI_read_status+0x1c> -40003f0a: 5298 l32i.n a9, a2, 20 -40003f0c: 0020c0 memw -40003f0f: 842572 l32i a7, a5, 0x210 -40003f12: 107790 and a7, a7, a9 -40003f15: 236707 bbci a7, 0, 40003f3c <_X_SPI_read_status+0x40> -40003f18: 0020c0 memw -40003f1b: 846582 s32i a8, a5, 0x210 -40003f1e: 0020c0 memw -40003f21: 806562 s32i a6, a5, 0x200 -40003f24: 0020c0 memw -40003f27: 8025a2 l32i a10, a5, 0x200 -40003f2a: fdca16 beqz a10, 40003f0a <_X_SPI_read_status+0xe> -40003f2d: 088076 loop a0, 40003f39 <_X_SPI_read_status+0x3d> -40003f30: 0020c0 memw -40003f33: 8025b2 l32i a11, a5, 0x200 -40003f36: fd0b16 beqz a11, 40003f0a <_X_SPI_read_status+0xe> -40003f39: fffc06 j 40003f2d <_X_SPI_read_status+0x31> -40003f3c: 0379 s32i.n a7, a3, 0 -40003f3e: 020c movi.n a2, 0 -40003f40: f01d retw.n -40003f42: 480000 excw -40003f45: ffc8 l32i.n a12, a15, 60 -40003f47: 3f .byte 0x3f - -40003f48 <_c_0x90000000>: -40003f48: 000000 ill -40003f4b: 003590 excw - -40003f4c <_c_0x70000035>: -40003f4c: 000035 call12 40003f50 <_c_0x00040000> -40003f4f: 000070 excw - -40003f50 <_c_0x00040000>: -40003f50: 040000 extui a0, a0, 0, 1 - ... - -40003f54 <_XX_unk3f54>: -40003f54: 004136 entry a1, 32 -40003f57: fffba1 l32r a10, 40003f44 <_X_SPI_read_status+0x48> -40003f5a: 0020f0 nop -40003f5d: 0aa8 l32i.n a10, a10, 0 -40003f5f: 002aa5 call8 40004208 <_X_Wait_SPI_Idle> -40003f62: 0d0c movi.n a13, 0 -40003f64: ff4591 l32r a9, 40003c78 <_c_0x60002e00> -40003f67: 0020c0 memw -40003f6a: 8229a2 l32i a10, a9, 0x208 -40003f6d: 0020c0 memw -40003f70: 8269d2 s32i a13, a9, 0x208 -40003f73: 00a782 movi a8, 0x700 -40003f76: 0020c0 memw -40003f79: 886982 s32i a8, a9, 0x220 -40003f7c: fff3f1 l32r a15, 40003f48 <_c_0x90000000> -40003f7f: 0020c0 memw -40003f82: 8769f2 s32i a15, a9, 0x21c -40003f85: fff1e1 l32r a14, 40003f4c <_c_0x70000035> -40003f88: 0020c0 memw -40003f8b: 8969e2 s32i a14, a9, 0x224 -40003f8e: 0020c0 memw -40003f91: 9069d2 s32i a13, a9, 0x240 -40003f94: ffefc1 l32r a12, 40003f50 <_c_0x00040000> -40003f97: 0020c0 memw -40003f9a: 8069c2 s32i a12, a9, 0x200 -40003f9d: 0020c0 memw -40003fa0: 8029b2 l32i a11, a9, 0x200 -40003fa3: db8c beqz.n a11, 40003fb4 <_XX_unk3f54+0x60> -40003fa5: 078076 loop a0, 40003fb0 <_XX_unk3f54+0x5c> -40003fa8: 0020c0 memw -40003fab: 8029b2 l32i a11, a9, 0x200 -40003fae: 2b8c beqz.n a11, 40003fb4 <_XX_unk3f54+0x60> -40003fb0: fffc46 j 40003fa5 <_XX_unk3f54+0x51> -40003fb3: 20c000 or a12, a0, a0 -40003fb6: 29c200 excw -40003fb9: c0c090 sub a12, a0, a9 -40003fbc: cc8074 excw -40003fbf: 03c911 l32r a1, 3ffc4ee4 <_start-0x3b11c> -40003fc2: 0020c0 memw -40003fc5: 8269a2 s32i a10, a9, 0x208 -40003fc8: 020c movi.n a2, 0 -40003fca: f01d retw.n - -40003fcc <_c_0x04000000>: -40003fcc: 000000 ill -40003fcf: 413604 excw -40003fd2: 02ad00 andb b10, b13, b0 -40003fd5: 002325 call8 40004208 <_X_Wait_SPI_Idle> -40003fd8: ff2891 l32r a9, 40003c78 <_c_0x60002e00> -40003fdb: 0020c0 memw -40003fde: 846932 s32i a3, a9, 0x210 -40003fe1: fffaa1 l32r a10, 40003fcc <_c_0x04000000> -40003fe4: 0020c0 memw -40003fe7: 8069a2 s32i a10, a9, 0x200 -40003fea: 0020c0 memw -40003fed: 802982 l32i a8, a9, 0x200 -40003ff0: 0020f0 nop -40003ff3: d88c beqz.n a8, 40004004 <_c_0x04000000+0x38> -40003ff5: 078076 loop a0, 40004000 <_c_0x04000000+0x34> -40003ff8: 0020c0 memw -40003ffb: 8029b2 l32i a11, a9, 0x200 -40003ffe: 2b8c beqz.n a11, 40004004 <_c_0x04000000+0x38> -40004000: fffc46 j 40003ff5 <_c_0x04000000+0x29> -40004003: 020c00 andb b0, b12, b0 -40004006: f01d retw.n -40004008: 000000 ill -4000400b: 000070 excw -4000400e: 368800 excw - -40004010 <_XX_unk4010>: -40004010: 004136 entry a1, 32 -40004013: 000232 l8ui a3, a2, 0 -40004016: 0020f0 nop -40004019: 144230 extui a4, a3, 2, 2 -4000401c: 145430 extui a5, a3, 4, 2 -4000401f: 143030 extui a3, a3, 0, 2 -40004022: 09a316 beqz a3, 400040c0 <_XX_unk4010+0xb0> -40004025: 0233b6 bltui a3, 3, 4000402b <_XX_unk4010+0x1b> -40004028: 002506 j 400040c0 <_XX_unk4010+0xb0> -4000402b: 022366 bnei a3, 2, 40004031 <_XX_unk4010+0x21> -4000402e: 002186 j 400040b8 <_XX_unk4010+0xa8> -40004031: 0b1366 bnei a3, 1, 40004040 <_XX_unk4010+0x30> -40004034: 0224b6 bltui a4, 2, 4000403a <_XX_unk4010+0x2a> -40004037: 002146 j 400040c0 <_XX_unk4010+0xb0> -4000403a: 808340 add a8, a3, a4 -4000403d: 7f9587 bne a5, a8, 400040c0 <_XX_unk4010+0xb0> -40004040: ffc1a1 l32r a10, 40003f44 <_X_SPI_read_status+0x48> -40004043: f03d nop.n -40004045: 0aa8 l32i.n a10, a10, 0 -40004047: 001c25 call8 40004208 <_X_Wait_SPI_Idle> -4000404a: 0f0c movi.n a15, 0 -4000404c: ffefc1 l32r a12, 40004008 <_c_0x04000000+0x3c> -4000404f: ffc0b1 l32r a11, 40003f50 <_c_0x00040000> -40004052: ff09a1 l32r a10, 40003c78 <_c_0x60002e00> -40004055: 0020c0 memw -40004058: 822ad2 l32i a13, a10, 0x208 -4000405b: 0020c0 memw -4000405e: 0212e2 l16ui a14, a2, 4 -40004061: 826af2 s32i a15, a10, 0x208 -40004064: 10ce16 beqz a14, 40004174 <_XX_unk4010+0x164> -40004067: f87c movi.n a8, -1 -40004069: b09580 addx8 a9, a5, a8 -4000406c: ffb751 l32r a5, 40003f48 <_c_0x90000000> -4000406f: b08380 addx8 a8, a3, a8 -40004072: 0199f0 slli a9, a9, 17 -40004075: 118880 slli a8, a8, 8 -40004078: 208890 or a8, a8, a9 -4000407b: 0c9d mov.n a9, a12 -4000407d: 0020c0 memw -40004080: 886a82 s32i a8, a10, 0x220 -40004083: 0020c0 memw -40004086: 876a52 s32i a5, a10, 0x21c -40004089: 0102e2 l8ui a14, a2, 1 -4000408c: 0a7e90 depbits a9, a14, 0, 8 -4000408f: 0020c0 memw -40004092: 896a92 s32i a9, a10, 0x224 -40004095: 0020c0 memw -40004098: 906af2 s32i a15, a10, 0x240 -4000409b: 0020c0 memw -4000409e: 806ab2 s32i a11, a10, 0x200 -400040a1: 0020c0 memw -400040a4: 802a82 l32i a8, a10, 0x200 -400040a7: a89c beqz.n a8, 400040c5 <_XX_unk4010+0xb5> -400040a9: 078076 loop a0, 400040b4 <_XX_unk4010+0xa4> -400040ac: 0020c0 memw -400040af: 802a92 l32i a9, a10, 0x200 -400040b2: f98c beqz.n a9, 400040c5 <_XX_unk4010+0xb5> -400040b4: fffc46 j 400040a9 <_XX_unk4010+0x99> -400040b7: 44cc00 extui a12, a0, 12, 5 -400040ba: 022566 bnei a5, 2, 400040c0 <_XX_unk4010+0xb0> -400040bd: ffdc06 j 40004031 <_XX_unk4010+0x21> -400040c0: f01d retw.n -400040c2: 000000 ill -400040c5: 0020c0 memw -400040c8: 902ae2 l32i a14, a10, 0x240 -400040cb: 930b addi.n a9, a3, -1 -400040cd: 7480e0 extui a8, a14, 0, 8 -400040d0: f4e0e0 extui a14, a14, 0, 16 -400040d3: 83e890 moveqz a14, a8, a9 -400040d6: 0ca416 beqz a4, 400041a4 <_XX_unk4010+0x194> -400040d9: 0c9d mov.n a9, a12 -400040db: 0020c0 memw -400040de: 876a52 s32i a5, a10, 0x21c -400040e1: 020282 l8ui a8, a2, 2 -400040e4: 0a7890 depbits a9, a8, 0, 8 -400040e7: 0020c0 memw -400040ea: 896a92 s32i a9, a10, 0x224 -400040ed: 0020c0 memw -400040f0: 906af2 s32i a15, a10, 0x240 -400040f3: 0020c0 memw -400040f6: 806ab2 s32i a11, a10, 0x200 -400040f9: 0020c0 memw -400040fc: 802a82 l32i a8, a10, 0x200 -400040ff: d88c beqz.n a8, 40004110 <_XX_unk4010+0x100> -40004101: 078076 loop a0, 4000410c <_XX_unk4010+0xfc> -40004104: 0020c0 memw -40004107: 802a92 l32i a9, a10, 0x200 -4000410a: 298c beqz.n a9, 40004110 <_XX_unk4010+0x100> -4000410c: fffc46 j 40004101 <_XX_unk4010+0xf1> -4000410f: 20c000 or a12, a0, a0 -40004112: 128200 andbc b8, b2, b0 -40004115: 2a9202 l16si a0, a2, 84 -40004118: 12f290 andbc b15, b2, b9 -4000411b: 909003 excw -4000411e: ff8074 excw -40004121: 998010 excw -40004124: 9e9011 l32r a1, 3ffebb64 <_start-0x1449c> -40004127: 909020 addx2 a9, a0, a2 -4000412a: 8890f4 excw -4000412d: 1f8710 excw -40004130: 913a add.n a9, a1, a3 -40004132: c0ffb6 bltui a15, 0x100, 400040f6 <_XX_unk4010+0xe6> -40004135: 920020 excw -40004138: 876a add.n a8, a7, a6 -4000413a: 030282 l8ui a8, a2, 3 -4000413d: 0a78c0 depbits a12, a8, 0, 8 -40004140: 0020c0 memw -40004143: 896ac2 s32i a12, a10, 0x224 -40004146: 0312f2 l16ui a15, a2, 6 -40004149: 0020c0 memw -4000414c: 906af2 s32i a15, a10, 0x240 -4000414f: 0020c0 memw -40004152: 806ab2 s32i a11, a10, 0x200 -40004155: 0020c0 memw -40004158: 802ae2 l32i a14, a10, 0x200 -4000415b: de8c beqz.n a14, 4000416c <_XX_unk4010+0x15c> -4000415d: 078076 loop a0, 40004168 <_XX_unk4010+0x158> -40004160: 0020c0 memw -40004163: 802ab2 l32i a11, a10, 0x200 -40004166: 2b8c beqz.n a11, 4000416c <_XX_unk4010+0x15c> -40004168: fffc46 j 4000415d <_XX_unk4010+0x14d> -4000416b: 20c000 or a12, a0, a0 -4000416e: 6ad200 depbits a0, a2, 6, 14 -40004171: f01d82 l16ui a8, a13, 0x1e0 -40004174: f17181 l32r a8, 40000738 <_c_0x80000000> -40004177: 0020c0 memw -4000417a: 876a82 s32i a8, a10, 0x21c -4000417d: 0102f2 l8ui a15, a2, 1 -40004180: 0a7fc0 depbits a12, a15, 0, 8 -40004183: 0020c0 memw -40004186: 896ac2 s32i a12, a10, 0x224 -40004189: 0020c0 memw -4000418c: 806ab2 s32i a11, a10, 0x200 -4000418f: 0020c0 memw -40004192: 802ae2 l32i a14, a10, 0x200 -40004195: fd3e16 beqz a14, 4000416c <_XX_unk4010+0x15c> -40004198: 0020c0 memw -4000419b: 802a92 l32i a9, a10, 0x200 -4000419e: ff6956 bnez a9, 40004198 <_XX_unk4010+0x188> -400041a1: fff1c6 j 4000416c <_XX_unk4010+0x15c> -400041a4: 021292 l16ui a9, a2, 4 -400041a7: 0312f2 l16ui a15, a2, 6 -400041aa: 108e90 and a8, a14, a9 -400041ad: 10ff90 and a15, a15, a9 -400041b0: 021f87 beq a15, a8, 400041b6 <_XX_unk4010+0x1a6> -400041b3: ffde86 j 40004131 <_XX_unk4010+0x121> -400041b6: ffec86 j 4000416c <_XX_unk4010+0x15c> -400041b9: 000000 ill - -400041bc <_X_SPI_write_enable>: -400041bc: 006136 entry a1, 48 -400041bf: 02ad mov.n a10, a2 -400041c1: 080c movi.n a8, 0 -400041c3: 006182 s32i a8, a1, 0 -400041c6: 000425 call8 40004208 <_X_Wait_SPI_Idle> -400041c9: f165b1 l32r a11, 40000760 <_c_0x40000000> -400041cc: feab91 l32r a9, 40003c78 <_c_0x60002e00> -400041cf: 0020c0 memw -400041d2: 8069b2 s32i a11, a9, 0x200 -400041d5: 0020c0 memw -400041d8: 8029a2 l32i a10, a9, 0x200 -400041db: fa8c beqz.n a10, 400041ee <_X_SPI_write_enable+0x32> -400041dd: 078076 loop a0, 400041e8 <_X_SPI_write_enable+0x2c> -400041e0: 0020c0 memw -400041e3: 8029c2 l32i a12, a9, 0x200 -400041e6: 4c8c beqz.n a12, 400041ee <_X_SPI_write_enable+0x32> -400041e8: fffc46 j 400041dd <_X_SPI_write_enable+0x21> -400041eb: 000000 ill -400041ee: 01d8 l32i.n a13, a1, 0 -400041f0: 230c movi.n a3, 2 -400041f2: 0bed17 bbsi a13, 1, 40004201 <_X_SPI_write_enable+0x45> -400041f5: 02ad mov.n a10, a2 -400041f7: 01bd mov.n a11, a1 -400041f9: ffd025 call8 40003efc <_X_SPI_read_status> -400041fc: 01e8 l32i.n a14, a1, 0 -400041fe: f30e37 bnone a14, a3, 400041f5 <_X_SPI_write_enable+0x39> -40004201: 020c movi.n a2, 0 -40004203: f01d retw.n -40004205: 000000 ill - -40004208 <_X_Wait_SPI_Idle>: -40004208: 006136 entry a1, 48 -4000420b: 20a220 or a10, a2, a2 -4000420e: fe9a91 l32r a9, 40003c78 <_c_0x60002e00> -40004211: 0020c0 memw -40004214: be2982 l32i a8, a9, 0x2f8 -40004217: d88c beqz.n a8, 40004228 <_l_4228> -40004219: 078076 loop a0, 40004224 <_X_Wait_SPI_Idle+0x1c> -4000421c: 0020c0 memw -4000421f: be29b2 l32i a11, a9, 0x2f8 -40004222: 2b8c beqz.n a11, 40004228 <_l_4228> -40004224: fffc46 j 40004219 <_X_Wait_SPI_Idle+0x11> - ... - -40004228 <_l_4228>: -40004228: 01bd mov.n a11, a1 -4000422a: ffcd25 call8 40003efc <_X_SPI_read_status> -4000422d: 3a8c beqz.n a10, 40004234 <_l_4234> -4000422f: 120c movi.n a2, 1 -40004231: f01d retw.n - ... - -40004234 <_l_4234>: -40004234: 020c movi.n a2, 0 -40004236: f01d retw.n - -40004238 <_XX_unk4238>: -40004238: 006136 entry a1, 48 -4000423b: 02ad mov.n a10, a2 -4000423d: 01bd mov.n a11, a1 -4000423f: ffd165 call8 40003f54 <_XX_unk3f54> -40004242: 2a8c beqz.n a10, 40004248 <_XX_unk4238+0x10> -40004244: 120c movi.n a2, 1 -40004246: f01d retw.n -40004248: 0188 l32i.n a8, a1, 0 -4000424a: 036897 bbci a8, 9, 40004251 <_XX_unk4238+0x19> -4000424d: 020c movi.n a2, 0 -4000424f: f01d retw.n -40004251: f9d8b1 l32r a11, 400029b4 <_c_0x00400000> -40004254: fe89a1 l32r a10, 40003c78 <_c_0x60002e00> -40004257: 0020c0 memw -4000425a: 822a92 l32i a9, a10, 0x208 -4000425d: f03d nop.n -4000425f: 2099b0 or a9, a9, a11 -40004262: 0020c0 memw -40004265: 826a92 s32i a9, a10, 0x208 -40004268: 02ad mov.n a10, a2 -4000426a: fff525 call8 400041bc <_X_SPI_write_enable> -4000426d: fd3a56 bnez a10, 40004244 <_XX_unk4238+0xc> -40004270: 02ad mov.n a10, a2 -40004272: 00a2b2 movi a11, 0x200 -40004275: ffd5a5 call8 40003fd0 <_c_0x04000000+0x4> -40004278: fc8a56 bnez a10, 40004244 <_XX_unk4238+0xc> -4000427b: fff386 j 4000424d <_XX_unk4238+0x15> -4000427e: 360000 excw -40004281: ad0061 l32r a6, 3ffef684 <_start-0x1097c> -40004284: 01bd02 l32ai a0, a13, 4 -40004287: ffcce5 call8 40003f54 <_XX_unk3f54> -4000428a: 2a8c beqz.n a10, 40004290 <_XX_unk4238+0x58> -4000428c: 120c movi.n a2, 1 -4000428e: f01d retw.n -40004290: 0188 l32i.n a8, a1, 0 -40004292: 03e897 bbsi a8, 9, 40004299 <_XX_unk4238+0x61> -40004295: 020c movi.n a2, 0 -40004297: f01d retw.n -40004299: f9c6b1 l32r a11, 400029b4 <_c_0x00400000> -4000429c: fe77a1 l32r a10, 40003c78 <_c_0x60002e00> -4000429f: 0020c0 memw -400042a2: 822a92 l32i a9, a10, 0x208 -400042a5: f03d nop.n -400042a7: 2099b0 or a9, a9, a11 -400042aa: 0020c0 memw -400042ad: 826a92 s32i a9, a10, 0x208 -400042b0: 02ad mov.n a10, a2 -400042b2: fff0a5 call8 400041bc <_X_SPI_write_enable> -400042b5: fd3a56 bnez a10, 4000428c <_XX_unk4238+0x54> -400042b8: 02ad mov.n a10, a2 -400042ba: 04c1b2 addi a11, a1, 4 -400042bd: ffc3e5 call8 40003efc <_X_SPI_read_status> -400042c0: 02ad mov.n a10, a2 -400042c2: 0401b2 l8ui a11, a1, 4 -400042c5: ffd0a5 call8 40003fd0 <_c_0x04000000+0x4> -400042c8: fc0a56 bnez a10, 4000428c <_XX_unk4238+0x54> -400042cb: fff186 j 40004295 <_XX_unk4238+0x5d> -400042ce: 000000 ill -400042d1: 002880 excw -400042d4: 100000 and a0, a0, a0 - ... - -400042d8 <_X_SPIFlashModeConfig>: -400042d8: 004136 entry a1, 32 -400042db: 069216 beqz a2, 40004348 <_X_SPIFlashModeConfig+0x70> -400042de: 6e1226 beqi a2, 1, 40004350 <_X_SPIFlashModeConfig+0x78> -400042e1: 732226 beqi a2, 2, 40004358 <_X_SPIFlashModeConfig+0x80> -400042e4: 783226 beqi a2, 3, 40004360 <_X_SPIFlashModeConfig+0x88> -400042e7: 7d4226 beqi a2, 4, 40004368 <_X_SPIFlashModeConfig+0x90> -400042ea: 050c movi.n a5, 0 -400042ec: fe6321 l32r a2, 40003c78 <_c_0x60002e00> -400042ef: 0b23f6 bgeui a3, 2, 400042fe <_X_SPIFlashModeConfig+0x26> -400042f2: f11141 l32r a4, 40000738 <_c_0x80000000> -400042f5: 0020c0 memw -400042f8: 866242 s32i a4, a2, 0x218 -400042fb: 000646 j 40004318 <_X_SPIFlashModeConfig+0x40> -400042fe: 630b addi.n a6, a3, -1 -40004300: 118640 slli a8, a6, 12 -40004303: 206680 or a6, a6, a8 -40004306: 418130 srli a8, a3, 1 -40004309: ffc882 addi a8, a8, -1 -4000430c: 1188a0 slli a8, a8, 6 -4000430f: 206680 or a6, a6, a8 -40004312: 0020c0 memw -40004315: 866262 s32i a6, a2, 0x218 -40004318: ffeeb1 l32r a11, 400042d0 <_XX_unk4238+0x98> -4000431b: 20b5b0 or a11, a5, a11 -4000431e: 0020c0 memw -40004321: 8262b2 s32i a11, a2, 0x208 -40004324: ffeca1 l32r a10, 400042d4 <_XX_unk4238+0x9c> -40004327: 0020c0 memw -4000432a: 8062a2 s32i a10, a2, 0x200 -4000432d: 0020c0 memw -40004330: 802292 l32i a9, a2, 0x200 -40004333: d98c beqz.n a9, 40004344 <_X_SPIFlashModeConfig+0x6c> -40004335: 078076 loop a0, 40004340 <_X_SPIFlashModeConfig+0x68> -40004338: 0020c0 memw -4000433b: 8022c2 l32i a12, a2, 0x200 -4000433e: 2c8c beqz.n a12, 40004344 <_X_SPIFlashModeConfig+0x6c> -40004340: fffc46 j 40004335 <_X_SPIFlashModeConfig+0x5d> -40004343: f01d00 subx8 a1, a13, a0 -40004346: 510000 excw -40004349: fe5c movi.n a14, 95 -4000434b: ffe746 j 400042ec <_X_SPIFlashModeConfig+0x14> -4000434e: 510000 excw -40004351: 46ffe1 l32r a14, 3ffd5f50 <_start-0x2a0b0> -40004354: 00ffe5 call8 40005354 <_XX_unk51ac+0x1a8> -40004357: 6a5100 depbits a0, a1, 6, 6 -4000435a: fe .byte 0xfe -4000435b: ffe346 j 400042ec <_X_SPIFlashModeConfig+0x14> -4000435e: 510000 excw -40004361: fabd excw -40004363: ffe146 j 400042ec <_X_SPIFlashModeConfig+0x14> -40004366: 510000 excw -40004369: 46f473 excw -4000436c: df .byte 0xdf -4000436d: ff .byte 0xff - ... - -40004370 <_X_spi_flash_attach>: -40004370: 004136 entry a1, 32 -40004373: 20a220 or a10, a2, a2 -40004376: ff6a65 call8 40003a1c <_X_SelectSpiFunction> -40004379: 5a0c movi.n a10, 5 -4000437b: 04a0b2 movi a11, 4 -4000437e: fff5a5 call8 400042d8 <_X_SPIFlashModeConfig> -40004381: 03bd mov.n a11, a3 -40004383: 5a0c movi.n a10, 5 -40004385: 001b25 call8 40004538 <_X_SPIReadModeConfig> -40004388: f01d retw.n - ... - -4000438c <Cache_Read_Enable>: -4000438c: 004136 entry a1, 32 -4000438f: feeda1 l32r a10, 40003f44 <_X_SPI_read_status+0x48> -40004392: 002aa2 l32i a10, a10, 0 -40004395: ffe725 call8 40004208 <_X_Wait_SPI_Idle> -40004398: 0b2c movi.n a11, 32 -4000439a: fd6c movi.n a13, -17 -4000439c: fe37c1 l32r a12, 40003c78 <_c_0x60002e00> -4000439f: f7af92 movi a9, -9 -400043a2: fbe3a1 l32r a10, 40003330 <_c_0x3feffe00> -400043a5: 0020c0 memw -400043a8: 822a82 l32i a8, a10, 0x208 -400043ab: 108890 and a8, a8, a9 -400043ae: 0020c0 memw -400043b1: 826a82 s32i a8, a10, 0x208 -400043b4: f35ef1 l32r a15, 4000112c <_c_0xfffdffff> -400043b7: 0020c0 memw -400043ba: 822ce2 l32i a14, a12, 0x208 -400043bd: 10eef0 and a14, a14, a15 -400043c0: 0020c0 memw -400043c3: 826ce2 s32i a14, a12, 0x208 -400043c6: 0020c0 memw -400043c9: 822a92 l32i a9, a10, 0x208 -400043cc: 1099d0 and a9, a9, a13 -400043cf: 0020c0 memw -400043d2: 826a92 s32i a9, a10, 0x208 -400043d5: 10a082 movi a8, 16 -400043d8: 0020c0 memw -400043db: 822af2 l32i a15, a10, 0x208 -400043de: f03d nop.n -400043e0: 20ff80 or a15, a15, a8 -400043e3: 0020c0 memw -400043e6: 826af2 s32i a15, a10, 0x208 -400043e9: 0020c0 memw -400043ec: 822ae2 l32i a14, a10, 0x208 -400043ef: 0020f0 nop -400043f2: 0eee57 bbsi a14, 5, 40004404 <Cache_Read_Enable+0x78> -400043f5: 088076 loop a0, 40004401 <Cache_Read_Enable+0x75> -400043f8: 0020c0 memw -400043fb: 822ae2 l32i a14, a10, 0x208 -400043fe: 028eb7 bany a14, a11, 40004404 <Cache_Read_Enable+0x78> -40004401: fffc06 j 400043f5 <Cache_Read_Enable+0x69> -40004404: 0020c0 memw -40004407: 822a82 l32i a8, a10, 0x208 -4000440a: 1088d0 and a8, a8, a13 -4000440d: 0020c0 memw -40004410: 826a82 s32i a8, a10, 0x208 -40004413: 7f0c movi.n a15, 7 -40004415: 0020c0 memw -40004418: 822ae2 l32i a14, a10, 0x208 -4000441b: 20eef0 or a14, a14, a15 -4000441e: 0020c0 memw -40004421: 826ae2 s32i a14, a10, 0x208 -40004424: fc41b1 l32r a11, 40003528 <_c_0x00020000> -40004427: 0020c0 memw -4000442a: 822c92 l32i a9, a12, 0x208 -4000442d: 2099b0 or a9, a9, a11 -40004430: 0020c0 memw -40004433: 826c92 s32i a9, a12, 0x208 -40004436: 880c movi.n a8, 8 -40004438: 0020c0 memw -4000443b: 822af2 l32i a15, a10, 0x208 -4000443e: 20ff80 or a15, a15, a8 -40004441: 0020c0 memw -40004444: 826af2 s32i a15, a10, 0x208 -40004447: f01d retw.n -40004449: 000000 ill - -4000444c <Cache_Read_Disable>: -4000444c: 004136 entry a1, 32 -4000444f: 052c movi.n a5, 32 -40004451: f76c movi.n a7, -17 -40004453: fe09a1 l32r a10, 40003c78 <_c_0x60002e00> -40004456: 7d7c movi.n a13, -9 -40004458: fbb641 l32r a4, 40003330 <_c_0x3feffe00> -4000445b: 0020c0 memw -4000445e: 8224c2 l32i a12, a4, 0x208 -40004461: 10ccd0 and a12, a12, a13 -40004464: 0020c0 memw -40004467: 8264c2 s32i a12, a4, 0x208 -4000446a: f330b1 l32r a11, 4000112c <_c_0xfffdffff> -4000446d: 0020c0 memw -40004470: 822a92 l32i a9, a10, 0x208 -40004473: 1099b0 and a9, a9, a11 -40004476: 0020c0 memw -40004479: 826a92 s32i a9, a10, 0x208 -4000447c: 0020c0 memw -4000447f: 822482 l32i a8, a4, 0x208 -40004482: 108870 and a8, a8, a7 -40004485: 0020c0 memw -40004488: 826482 s32i a8, a4, 0x208 -4000448b: 061c movi.n a6, 16 -4000448d: 0020c0 memw -40004490: 822432 l32i a3, a4, 0x208 -40004493: 203360 or a3, a3, a6 -40004496: 0020c0 memw -40004499: 826432 s32i a3, a4, 0x208 -4000449c: 0020c0 memw -4000449f: 822422 l32i a2, a4, 0x208 -400044a2: 0ee257 bbsi a2, 5, 400044b4 <Cache_Read_Disable+0x68> -400044a5: 088076 loop a0, 400044b1 <Cache_Read_Disable+0x65> -400044a8: 0020c0 memw -400044ab: 8224e2 l32i a14, a4, 0x208 -400044ae: 028e57 bany a14, a5, 400044b4 <Cache_Read_Disable+0x68> -400044b1: fffc06 j 400044a5 <Cache_Read_Disable+0x59> -400044b4: 0020c0 memw -400044b7: 8224f2 l32i a15, a4, 0x208 -400044ba: 10ff70 and a15, a15, a7 -400044bd: 0020c0 memw -400044c0: 8264f2 s32i a15, a4, 0x208 -400044c3: f01d retw.n -400044c5: 000000 ill -400044c8: 006136 entry a1, 48 -400044cb: fe9e21 l32r a2, 40003f44 <_X_SPI_read_status+0x48> -400044ce: 01bd mov.n a11, a1 -400044d0: 0022a2 l32i a10, a2, 0 -400044d3: ffa825 call8 40003f54 <_XX_unk3f54> -400044d6: 2a8c beqz.n a10, 400044dc <Cache_Read_Disable+0x90> -400044d8: 120c movi.n a2, 1 -400044da: f01d retw.n -400044dc: 02a8 l32i.n a10, a2, 0 -400044de: ffcde5 call8 400041bc <_X_SPI_write_enable> -400044e1: ff3a56 bnez a10, 400044d8 <Cache_Read_Disable+0x8c> -400044e4: 02a8 l32i.n a10, a2, 0 -400044e6: 0021b2 l32i a11, a1, 0 -400044e9: ffae65 call8 40003fd0 <_c_0x04000000+0x4> -400044ec: fe8a56 bnez a10, 400044d8 <Cache_Read_Disable+0x8c> -400044ef: 020c movi.n a2, 0 -400044f1: f01d retw.n -400044f3: 613600 excw -400044f6: 932100 movnez a2, a1, a0 -400044f9: fe .byte 0xfe -400044fa: 01bd mov.n a11, a1 -400044fc: 0022a2 l32i a10, a2, 0 -400044ff: ffa565 call8 40003f54 <_XX_unk3f54> -40004502: 2a8c beqz.n a10, 40004508 <Cache_Read_Disable+0xbc> -40004504: 120c movi.n a2, 1 -40004506: f01d retw.n -40004508: 02a8 l32i.n a10, a2, 0 -4000450a: ffcb25 call8 400041bc <_X_SPI_write_enable> -4000450d: ff3a56 bnez a10, 40004504 <Cache_Read_Disable+0xb8> -40004510: 02a8 l32i.n a10, a2, 0 -40004512: 01b8 l32i.n a11, a1, 0 -40004514: cc1c movi.n a12, 28 -40004516: 20bbc0 or a11, a11, a12 -40004519: ffab65 call8 40003fd0 <_c_0x04000000+0x4> -4000451c: fe4a56 bnez a10, 40004504 <Cache_Read_Disable+0xb8> -4000451f: 020c movi.n a2, 0 -40004521: f01d retw.n -40004523: 9fff00 excw -40004526: 6f .byte 0x6f -40004527: fe .byte 0xfe -40004528: 002000 isync -4000452b: 200001 l32r a0, 3ffcc52c <_start-0x33ad4> -4000452e: 000010 excw -40004531: 008020 any4 b2, b0:b1:b2:b3 -40004534: 006000 rsil a0, 0 - ... - -40004538 <_X_SPIReadModeConfig>: -40004538: 004136 entry a1, 32 -4000453b: fffa91 l32r a9, 40004524 <Cache_Read_Disable+0xd8> -4000453e: fe81a1 l32r a10, 40003f44 <_X_SPI_read_status+0x48> -40004541: fdcd51 l32r a5, 40003c78 <_c_0x60002e00> -40004544: 0020c0 memw -40004547: 822582 l32i a8, a5, 0x208 -4000454a: f03d nop.n -4000454c: 108890 and a8, a8, a9 -4000454f: 0020c0 memw -40004552: 826582 s32i a8, a5, 0x208 -40004555: c2ac beqz.n a2, 40004585 <_X_SPIReadModeConfig+0x4d> -40004557: 451226 beqi a2, 1, 400045a0 <_X_SPIReadModeConfig+0x68> -4000455a: 4a2226 beqi a2, 2, 400045a8 <_X_SPIReadModeConfig+0x70> -4000455d: 4f3226 beqi a2, 3, 400045b0 <_X_SPIReadModeConfig+0x78> -40004560: 544226 beqi a2, 4, 400045b8 <_X_SPIReadModeConfig+0x80> -40004563: 040c movi.n a4, 0 -40004565: 1f1226 beqi a2, 1, 40004588 <_X_SPIReadModeConfig+0x50> -40004568: 438c beqz.n a3, 40004570 <_X_SPIReadModeConfig+0x38> -4000456a: 002aa2 l32i a10, a10, 0 -4000456d: ffd125 call8 40004280 <_XX_unk4238+0x48> -40004570: 0020c0 memw -40004573: 8225a2 l32i a10, a5, 0x208 -40004576: 20aa40 or a10, a10, a4 -40004579: 0020c0 memw -4000457c: 8265a2 s32i a10, a5, 0x208 -4000457f: 020c movi.n a2, 0 -40004581: f01d retw.n -40004583: 410000 srli a0, a0, 0 -40004586: ffe8 l32i.n a14, a15, 60 -40004588: 0aa8 l32i.n a10, a10, 0 -4000458a: ffcae5 call8 40004238 <_XX_unk4238> -4000458d: 0020c0 memw -40004590: 8225b2 l32i a11, a5, 0x208 -40004593: 20bb40 or a11, a11, a4 -40004596: 0020c0 memw -40004599: 8265b2 s32i a11, a5, 0x208 -4000459c: 020c movi.n a2, 0 -4000459e: f01d retw.n -400045a0: ffe341 l32r a4, 4000452c <Cache_Read_Disable+0xe0> -400045a3: ffef86 j 40004565 <_X_SPIReadModeConfig+0x2d> -400045a6: 410000 srli a0, a0, 0 -400045a9: 86ffe2 s32ri a14, a15, 0x218 -400045ac: ffed excw -400045ae: 410000 srli a0, a0, 0 -400045b1: 86ffe1 l32r a14, 3ffe61b0 <_start-0x19e50> -400045b4: ffeb addi.n a15, a15, 14 -400045b6: 410000 srli a0, a0, 0 -400045b9: df .byte 0xdf -400045ba: e986f3 excw -400045bd: ff .byte 0xff -400045be: 360000 excw -400045c1: a10041 l32r a4, 3ffec9c4 <_start-0x1363c> -400045c4: a2fe60 muluh a15, a14, a6 -400045c7: 002a add.n a0, a0, a2 -400045c9: ffc3e5 call8 40004208 <_X_Wait_SPI_Idle> -400045cc: ffd6c1 l32r a12, 40004524 <Cache_Read_Disable+0xd8> -400045cf: fdaaa1 l32r a10, 40003c78 <_c_0x60002e00> -400045d2: 0020c0 memw -400045d5: 822ab2 l32i a11, a10, 0x208 -400045d8: 10bbc0 and a11, a11, a12 -400045db: 0020c0 memw -400045de: 826ab2 s32i a11, a10, 0x208 -400045e1: 32bc beqz.n a2, 40004618 <_X_SPIReadModeConfig+0xe0> -400045e3: 491226 beqi a2, 1, 40004630 <_X_SPIReadModeConfig+0xf8> -400045e6: 5e2226 beqi a2, 2, 40004648 <_X_SPIReadModeConfig+0x110> -400045e9: 733226 beqi a2, 3, 40004660 <_X_SPIReadModeConfig+0x128> -400045ec: 104226 beqi a2, 4, 40004600 <_X_SPIReadModeConfig+0xc8> -400045ef: 0020c0 memw -400045f2: 822ad2 l32i a13, a10, 0x208 -400045f5: 0020c0 memw -400045f8: 826ad2 s32i a13, a10, 0x208 -400045fb: 020c movi.n a2, 0 -400045fd: f01d retw.n -400045ff: cdf100 excw -40004602: 20c0f3 excw -40004605: 2ae200 depbits a0, a2, 2, 15 -40004608: eef082 s32ri a8, a0, 0x3b8 -4000460b: 20c020 or a12, a0, a2 -4000460e: 6ae200 depbits a0, a2, 6, 15 -40004611: 020c82 l8ui a8, a12, 2 -40004614: f01d retw.n -40004616: 910000 srl a0, a0 -40004619: c0ffc4 excw -4000461c: 220020 orb b0, b0, b2 -4000461f: 822a add.n a8, a2, a2 -40004621: 202290 or a2, a2, a9 -40004624: 0020c0 memw -40004627: 826a22 s32i a2, a10, 0x208 -4000462a: 020c movi.n a2, 0 -4000462c: f01d retw.n -4000462e: 910000 srl a0, a0 -40004631: bf .byte 0xbf -40004632: ff .byte 0xff -40004633: 0020c0 memw -40004636: 822a82 l32i a8, a10, 0x208 -40004639: 208890 or a8, a8, a9 -4000463c: 0020c0 memw -4000463f: 826a82 s32i a8, a10, 0x208 -40004642: 020c movi.n a2, 0 -40004644: f01d retw.n -40004646: c10000 mul16u a0, a0, a0 -40004649: ffba add.n a15, a15, a11 -4000464b: 0020c0 memw -4000464e: 822ab2 l32i a11, a10, 0x208 -40004651: 20bbc0 or a11, a11, a12 -40004654: 0020c0 memw -40004657: 826ab2 s32i a11, a10, 0x208 -4000465a: 020c movi.n a2, 0 -4000465c: f01d retw.n -4000465e: 910000 srl a0, a0 -40004661: c0ffb5 call12 3ffc565c <_start-0x3a9a4> -40004664: 220020 orb b0, b0, b2 -40004667: 822a add.n a8, a2, a2 -40004669: 202290 or a2, a2, a9 -4000466c: 0020c0 memw -4000466f: 826a22 s32i a2, a10, 0x208 -40004672: 020c movi.n a2, 0 -40004674: f01d retw.n -40004676: 360000 excw -40004679: a10041 l32r a4, 3ffeca7c <_start-0x13584> -4000467c: a2fe32 s32ri a3, a14, 0x288 -4000467f: 002a add.n a0, a0, a2 -40004681: ffb865 call8 40004208 <_X_Wait_SPI_Idle> -40004684: fd7d91 l32r a9, 40003c78 <_c_0x60002e00> -40004687: 0d22f6 bgeui a2, 2, 40004698 <_X_SPIReadModeConfig+0x160> -4000468a: f02bb1 l32r a11, 40000738 <_c_0x80000000> -4000468d: 0020c0 memw -40004690: 8669b2 s32i a11, a9, 0x218 -40004693: 020c movi.n a2, 0 -40004695: f01d retw.n -40004697: c20b00 quou a0, a11, a0 -4000469a: 11dc40 slli a13, a12, 12 -4000469d: 20ccd0 or a12, a12, a13 -400046a0: 41d120 srli a13, a2, 1 -400046a3: dd0b addi.n a13, a13, -1 -400046a5: 11dda0 slli a13, a13, 6 -400046a8: 20ccd0 or a12, a12, a13 -400046ab: 0020c0 memw -400046ae: 8669c2 s32i a12, a9, 0x218 -400046b1: 020c movi.n a2, 0 -400046b3: f01d retw.n -400046b5: 000000 ill -400046b8: 004136 entry a1, 32 -400046bb: fe2221 l32r a2, 40003f44 <_X_SPI_read_status+0x48> -400046be: f03d nop.n -400046c0: 0022a2 l32i a10, a2, 0 -400046c3: ffafa5 call8 400041bc <_X_SPI_write_enable> -400046c6: 2a8c beqz.n a10, 400046cc <_X_SPIReadModeConfig+0x194> -400046c8: 120c movi.n a2, 1 -400046ca: f01d retw.n -400046cc: 02a8 l32i.n a10, a2, 0 -400046ce: ff5ae5 call8 40003c7c <_X_SPI_chip_erase> -400046d1: ff3a56 bnez a10, 400046c8 <_X_SPIReadModeConfig+0x190> -400046d4: 020c movi.n a2, 0 -400046d6: f01d retw.n -400046d8: 004136 entry a1, 32 -400046db: fe1a31 l32r a3, 40003f44 <_X_SPI_read_status+0x48> -400046de: 03a8 l32i.n a10, a3, 0 -400046e0: 2a98 l32i.n a9, a10, 8 -400046e2: 1a88 l32i.n a8, a10, 4 -400046e4: c28890 quou a8, a8, a9 -400046e7: 063287 bltu a2, a8, 400046f1 <_X_SPIReadModeConfig+0x1b9> -400046ea: 120c movi.n a2, 1 -400046ec: f01d retw.n -400046ee: 000000 ill -400046f1: ffaca5 call8 400041bc <_X_SPI_write_enable> -400046f4: ff2a56 bnez a10, 400046ea <_X_SPIReadModeConfig+0x1b2> -400046f7: 03a8 l32i.n a10, a3, 0 -400046f9: 2ab8 l32i.n a11, a10, 8 -400046fb: 82bb20 mull a11, a11, a2 -400046fe: ff6065 call8 40003d04 <_c_0x00800000+0x4> -40004701: fe5a56 bnez a10, 400046ea <_X_SPIReadModeConfig+0x1b2> -40004704: 020c movi.n a2, 0 -40004706: f01d retw.n - -40004708 <SPIEraseSector>: -40004708: 004136 entry a1, 32 -4000470b: fe0e31 l32r a3, 40003f44 <_X_SPI_read_status+0x48> -4000470e: 03a8 l32i.n a10, a3, 0 -40004710: 3a98 l32i.n a9, a10, 12 -40004712: 1a88 l32i.n a8, a10, 4 -40004714: c28890 quou a8, a8, a9 -40004717: 063287 bltu a2, a8, 40004721 <SPIEraseSector+0x19> -4000471a: 120c movi.n a2, 1 -4000471c: f01d retw.n -4000471e: 000000 ill -40004721: ffa9a5 call8 400041bc <_X_SPI_write_enable> -40004724: ff2a56 bnez a10, 4000471a <SPIEraseSector+0x12> -40004727: 03a8 l32i.n a10, a3, 0 -40004729: 3ab8 l32i.n a11, a10, 12 -4000472b: 82bb20 mull a11, a11, a2 -4000472e: ff58e5 call8 40003cbc <_XX_unk3cbc> -40004731: fe5a56 bnez a10, 4000471a <SPIEraseSector+0x12> -40004734: 020c movi.n a2, 0 -40004736: f01d retw.n - -40004738 <SPIWrite>: -40004738: 006136 entry a1, 48 -4000473b: fe02c1 l32r a12, 40003f44 <_X_SPI_read_status+0x48> -4000473e: 046d mov.n a6, a4 -40004740: 0ca8 l32i.n a10, a12, 0 -40004742: 942a add.n a9, a4, a2 -40004744: 1a88 l32i.n a8, a10, 4 -40004746: 4a78 l32i.n a7, a10, 16 -40004748: 143897 bltu a8, a9, 40004760 <SPIWrite+0x28> -4000474b: e25270 remu a5, a2, a7 -4000474e: c05750 sub a5, a7, a5 -40004751: 0fb457 bgeu a4, a5, 40004764 <SPIWrite+0x2c> -40004754: 04dd mov.n a13, a4 -40004756: 03cd mov.n a12, a3 -40004758: 02bd mov.n a11, a2 -4000475a: ff5f65 call8 40003d50 <_c_0x02000000+0x4> -4000475d: 05fa16 beqz a10, 400047c0 <SPIWrite+0x88> -40004760: 120c movi.n a2, 1 -40004762: f01d retw.n -40004764: 02bd mov.n a11, a2 -40004766: 03cd mov.n a12, a3 -40004768: 05dd mov.n a13, a5 -4000476a: ff5e65 call8 40003d50 <_c_0x02000000+0x4> -4000476d: fefa56 bnez a10, 40004760 <SPIWrite+0x28> -40004770: 0129 s32i.n a2, a1, 0 -40004772: 1169 s32i.n a6, a1, 4 -40004774: c04650 sub a4, a6, a5 -40004777: c24470 quou a4, a4, a7 -4000477a: 74ac beqz.n a4, 400047a5 <SPIWrite+0x6d> -4000477c: 806520 add a6, a5, a2 -4000477f: 00a022 movi a2, 0 -40004782: 06bd mov.n a11, a6 -40004784: 07dd mov.n a13, a7 -40004786: fdefa1 l32r a10, 40003f44 <_X_SPI_read_status+0x48> -40004789: 41c250 srli a12, a5, 2 -4000478c: a0cc30 addx4 a12, a12, a3 -4000478f: 002aa2 l32i a10, a10, 0 -40004792: ff5be5 call8 40003d50 <_c_0x02000000+0x4> -40004795: fc7a56 bnez a10, 40004760 <SPIWrite+0x28> -40004798: 667a add.n a6, a6, a7 -4000479a: 575a add.n a5, a7, a5 -4000479c: 01c222 addi a2, a2, 1 -4000479f: 742020 extui a2, a2, 0, 8 -400047a2: dc9427 bne a4, a2, 40004782 <SPIWrite+0x4a> -400047a5: fde7a1 l32r a10, 40003f44 <_X_SPI_read_status+0x48> -400047a8: 11d8 l32i.n a13, a1, 4 -400047aa: 01b8 l32i.n a11, a1, 0 -400047ac: 41c250 srli a12, a5, 2 -400047af: a0cc30 addx4 a12, a12, a3 -400047b2: bb5a add.n a11, a11, a5 -400047b4: c0dd50 sub a13, a13, a5 -400047b7: 002aa2 l32i a10, a10, 0 -400047ba: ff5965 call8 40003d50 <_c_0x02000000+0x4> -400047bd: f9fa56 bnez a10, 40004760 <SPIWrite+0x28> -400047c0: 020c movi.n a2, 0 -400047c2: f01d retw.n -400047c4: 011000 slli a1, a0, 32 -400047c7: 413600 srli a3, a0, 6 -400047ca: fe4100 excw -400047cd: ff .byte 0xff -400047ce: fad831 l32r a3, 40003330 <_c_0x3feffe00> -400047d1: 0020c0 memw -400047d4: 9a2322 l32i a2, a3, 0x268 -400047d7: 202240 or a2, a2, a4 -400047da: 0020c0 memw -400047dd: 9a6322 s32i a2, a3, 0x268 -400047e0: f01d retw.n -400047e2: 000000 ill -400047e5: ae .byte 0xae -400047e6: 366001 l32r a0, 3ffd2168 <_start-0x2de98> -400047e9: 4d0041 l32r a4, 3ffd7bec <_start-0x28414> -400047ec: f51c03 excw -400047ef: 458527 bany a5, a2, 40004838 <SPIWrite+0x100> -400047f2: fffc61 l32r a6, 400047e4 <SPIWrite+0xac> -400047f5: 0020c0 memw -400047f8: 896622 s32i a2, a6, 0x224 -400047fb: 08a032 movi a3, 8 -400047fe: 00a022 movi a2, 0 -40004801: 0ea376 loopgtz a3, 40004813 <SPIWrite+0xdb> -40004804: a03260 addx4 a3, a2, a6 -40004807: 0458 l32i.n a5, a4, 0 -40004809: 0020c0 memw -4000480c: 806352 s32i a5, a3, 0x200 -4000480f: 444b addi.n a4, a4, 4 -40004811: 221b addi.n a2, a2, 1 -40004813: 01a0a2 movi a10, 1 -40004816: 0020c0 memw -40004819: 8866a2 s32i a10, a6, 0x220 -4000481c: 0020c0 memw -4000481f: 882692 l32i a9, a6, 0x220 -40004822: 0ee907 bbsi a9, 0, 40004834 <SPIWrite+0xfc> -40004825: 088076 loop a0, 40004831 <SPIWrite+0xf9> -40004828: 0020c0 memw -4000482b: 8826b2 l32i a11, a6, 0x220 -4000482e: 02eb07 bbsi a11, 0, 40004834 <SPIWrite+0xfc> -40004831: fffc06 j 40004825 <SPIWrite+0xed> -40004834: 020c movi.n a2, 0 -40004836: f01d retw.n -40004838: 120c movi.n a2, 1 -4000483a: f01d retw.n -4000483c: ff .byte 0xff -4000483d: ef .byte 0xef -4000483e: fe .byte 0xfe -4000483f: ff .byte 0xff -40004840: 004136 entry a1, 32 -40004843: fffe41 l32r a4, 4000483c <SPIWrite+0x104> -40004846: faba31 l32r a3, 40003330 <_c_0x3feffe00> -40004849: 0020c0 memw -4000484c: 9a2322 l32i a2, a3, 0x268 -4000484f: 102240 and a2, a2, a4 -40004852: 0020c0 memw -40004855: 9a6322 s32i a2, a3, 0x268 -40004858: f01d retw.n -4000485a: 360000 excw -4000485d: 1c0041 l32r a4, 3ffcb860 <_start-0x347a0> -40004860: 20fa add.n a2, a0, a15 -40004862: cc4480 excw -40004865: 4718 l32i.n a1, a7, 16 -40004867: 030a add.n a0, a3, a0 -40004869: 120c movi.n a2, 1 -4000486b: f01d retw.n -4000486d: fff5a5 call8 400047c8 <SPIWrite+0x90> -40004870: 415540 srli a5, a4, 5 -40004873: a59c beqz.n a5, 40004891 <SPIWrite+0x159> -40004875: 00a042 movi a4, 0 -40004878: 02ad mov.n a10, a2 -4000487a: 11b4d0 slli a11, a4, 3 -4000487d: a0bb30 addx4 a11, a11, a3 -40004880: fff665 call8 400047e8 <SPIWrite+0xb0> -40004883: 02ad mov.n a10, a2 -40004885: 03bd mov.n a11, a3 -40004887: 0c2c movi.n a12, 32 -40004889: ffeae5 call8 40004738 <SPIWrite> -4000488c: 441b addi.n a4, a4, 1 -4000488e: e69457 bne a4, a5, 40004878 <SPIWrite+0x140> -40004891: fffae5 call8 40004840 <SPIWrite+0x108> -40004894: f01d retw.n - ... - -40004898 <SPIRead>: -40004898: 004136 entry a1, 32 -4000489b: 04dd mov.n a13, a4 -4000489d: 03cd mov.n a12, a3 -4000489f: fda9a1 l32r a10, 40003f44 <_X_SPI_read_status+0x48> -400048a2: 02bd mov.n a11, a2 -400048a4: 0aa8 l32i.n a10, a10, 0 -400048a6: ff57e5 call8 40003e24 <_XX_unk3e24> -400048a9: 3a8c beqz.n a10, 400048b0 <SPIRead+0x18> -400048ab: 120c movi.n a2, 1 -400048ad: f01d retw.n -400048af: 020c00 andb b0, b12, b0 -400048b2: f01d retw.n - -400048b4 <_X_SPIEraseArea>: -400048b4: 004136 entry a1, 32 -400048b7: 05a0a2 movi a10, 5 -400048ba: 01a0b2 movi a11, 1 -400048bd: ffc7a5 call8 40004538 <_X_SPIReadModeConfig> -400048c0: fda141 l32r a4, 40003f44 <_X_SPI_read_status+0x48> -400048c3: 04a8 l32i.n a10, a4, 0 -400048c5: 923a add.n a9, a2, a3 -400048c7: 1a88 l32i.n a8, a10, 4 -400048c9: 3ab8 l32i.n a11, a10, 12 -400048cb: 053897 bltu a8, a9, 400048d4 <_X_SPIEraseArea+0x20> -400048ce: e2b2b0 remu a11, a2, a11 -400048d1: 004b16 beqz a11, 400048d9 <_X_SPIEraseArea+0x25> -400048d4: 120c movi.n a2, 1 -400048d6: f01d retw.n -400048d8: bee500 excw -400048db: ff .byte 0xff -400048dc: ff4a56 bnez a10, 400048d4 <_X_SPIEraseArea+0x20> -400048df: 0448 l32i.n a4, a4, 0 -400048e1: 3488 l32i.n a8, a4, 12 -400048e3: 2448 l32i.n a4, a4, 8 -400048e5: c29380 quou a9, a3, a8 -400048e8: e2c380 remu a12, a3, a8 -400048eb: c22280 quou a2, a2, a8 -400048ee: c24480 quou a4, a4, a8 -400048f1: e25240 remu a5, a2, a4 -400048f4: 1c8c beqz.n a12, 400048f9 <_X_SPIEraseArea+0x45> -400048f6: 01c992 addi a9, a9, 1 -400048f9: c05450 sub a5, a4, a5 -400048fc: 435950 min a5, a9, a5 -400048ff: c03950 sub a3, a9, a5 -40004902: e58c beqz.n a5, 40004914 <_X_SPIEraseArea+0x60> -40004904: 02ad mov.n a10, a2 -40004906: ffe025 call8 40004708 <SPIEraseSector> -40004909: fc7a56 bnez a10, 400048d4 <_X_SPIEraseArea+0x20> -4000490c: 221b addi.n a2, a2, 1 -4000490e: ffc552 addi a5, a5, -1 -40004911: fef556 bnez a5, 40004904 <_X_SPIEraseArea+0x50> -40004914: 11b437 bgeu a4, a3, 40004929 <_X_SPIEraseArea+0x75> -40004917: c2a240 quou a10, a2, a4 -4000491a: ffdbe5 call8 400046d8 <_X_SPIReadModeConfig+0x1a0> -4000491d: fb3a56 bnez a10, 400048d4 <_X_SPIEraseArea+0x20> -40004920: 802240 add a2, a2, a4 -40004923: c03340 sub a3, a3, a4 -40004926: ed3437 bltu a4, a3, 40004917 <_X_SPIEraseArea+0x63> -40004929: 0f13a6 blti a3, 1, 4000493c <_X_SPIEraseArea+0x88> -4000492c: 02ad mov.n a10, a2 -4000492e: ffdda5 call8 40004708 <SPIEraseSector> -40004931: f9fa56 bnez a10, 400048d4 <_X_SPIEraseArea+0x20> -40004934: 221b addi.n a2, a2, 1 -40004936: ffc332 addi a3, a3, -1 -40004939: fef356 bnez a3, 4000492c <_X_SPIEraseArea+0x78> -4000493c: 020c movi.n a2, 0 -4000493e: f01d retw.n - -40004940 <_XX_unk4940>: -40004940: 004136 entry a1, 32 -40004943: fd8081 l32r a8, 40003f44 <_X_SPI_read_status+0x48> -40004946: 0888 l32i.n a8, a8, 0 -40004948: 1839 s32i.n a3, a8, 4 -4000494a: 2849 s32i.n a4, a8, 8 -4000494c: 3859 s32i.n a5, a8, 12 -4000494e: 4869 s32i.n a6, a8, 16 -40004950: 0829 s32i.n a2, a8, 0 -40004952: 5879 s32i.n a7, a8, 20 -40004954: 020c movi.n a2, 0 -40004956: f01d retw.n -40004958: 4bac beqz.n a11, 40004980 <_XX_unk4940+0x40> -4000495a: 884000 excw -4000495d: 600040 neg a0, a4 -40004960: 4128 l32i.n a2, a1, 16 -40004962: 506000 witlb a0, a0 -40004965: ffdc bnez.n a15, 40004988 <_XX_unk4940+0x48> -40004967: 3f .byte 0x3f -40004968: 004136 entry a1, 32 -4000496b: 04a0a2 movi a10, 4 -4000496e: fffab1 l32r a11, 40004958 <_XX_unk4940+0x18> -40004971: 00a0c2 movi a12, 0 -40004974: fc7725 call8 400010e8 <_X_ets_isr_attach> -40004977: 10a0a2 movi a10, 16 -4000497a: fc77e5 call8 400010f8 <_X_ets_isr_mask> -4000497d: 0a0c movi.n a10, 0 -4000497f: 0b0c movi.n a11, 0 -40004981: 0c0c movi.n a12, 0 -40004983: fd7c movi.n a13, -1 -40004985: 000525 call8 400049d8 <gpio_output_set> -40004988: 0a0c movi.n a10, 0 -4000498a: 0b0c movi.n a11, 0 -4000498c: 0c0c movi.n a12, 0 -4000498e: ffa0d2 movi a13, 255 -40004991: 000665 call8 400049f8 <gpio_output_set_high> -40004994: fff221 l32r a2, 4000495c <_XX_unk4940+0x1c> -40004997: f1e631 l32r a3, 40001130 <_c_0x60003e00> -4000499a: fff151 l32r a5, 40004960 <_XX_unk4940+0x20> -4000499d: fff141 l32r a4, 40004964 <_XX_unk4940+0x24> -400049a0: 080c movi.n a8, 0 -400049a2: 0489 s32i.n a8, a4, 0 -400049a4: 1489 s32i.n a8, a4, 4 -400049a6: 02ad mov.n a10, a2 -400049a8: 0b0c movi.n a11, 0 -400049aa: 000925 call8 40004a3c <gpio_output_set_high+0x44> -400049ad: 0020c0 memw -400049b0: 224b addi.n a2, a2, 4 -400049b2: 441b addi.n a4, a4, 1 -400049b4: a22392 l32i a9, a3, 0x288 -400049b7: 334b addi.n a3, a3, 4 -400049b9: 249790 extui a9, a9, 7, 3 -400049bc: 0f4492 s8i a9, a4, 15 -400049bf: e39257 bne a2, a5, 400049a6 <_XX_unk4940+0x66> -400049c2: fc7c movi.n a12, -1 -400049c4: f1dbb1 l32r a11, 40001130 <_c_0x60003e00> -400049c7: 0020c0 memw -400049ca: 936bc2 s32i a12, a11, 0x24c -400049cd: ffa0a2 movi a10, 255 -400049d0: 0020c0 memw -400049d3: 966ba2 s32i a10, a11, 0x258 -400049d6: f01d retw.n - -400049d8 <gpio_output_set>: -400049d8: 004136 entry a1, 32 -400049db: f1d561 l32r a6, 40001130 <_c_0x60003e00> -400049de: 0020c0 memw -400049e1: 826622 s32i a2, a6, 0x208 -400049e4: 0020c0 memw -400049e7: 836632 s32i a3, a6, 0x20c -400049ea: 0020c0 memw -400049ed: 896642 s32i a4, a6, 0x224 -400049f0: 0020c0 memw -400049f3: 8a6652 s32i a5, a6, 0x228 -400049f6: f01d retw.n - -400049f8 <gpio_output_set_high>: -400049f8: 004136 entry a1, 32 -400049fb: f1cd61 l32r a6, 40001130 <_c_0x60003e00> -400049fe: 0020c0 memw -40004a01: 856622 s32i a2, a6, 0x214 -40004a04: 0020c0 memw -40004a07: 866632 s32i a3, a6, 0x218 -40004a0a: 0020c0 memw -40004a0d: 8c6642 s32i a4, a6, 0x230 -40004a10: 0020c0 memw -40004a13: 8d6652 s32i a5, a6, 0x234 -40004a16: f01d retw.n -40004a18: 004136 entry a1, 32 -40004a1b: f1c521 l32r a2, 40001130 <_c_0x60003e00> -40004a1e: 0020c0 memw -40004a21: 8f2222 l32i a2, a2, 0x23c -40004a24: f01d retw.n -40004a26: 360000 excw -40004a29: 210041 l32r a4, 3ffcce2c <_start-0x331d4> -40004a2c: c0f1c1 l32r a12, 3fff4df0 <_start-0xb210> -40004a2f: 220020 orb b0, b0, b2 -40004a32: 1d9022 l16si a2, a0, 58 -40004a35: 0000f0 callx12 a0 -40004a38: ffdc60 excw -40004a3b: 3f .byte 0x3f -40004a3c: 004136 entry a1, 32 -40004a3f: fc66a5 call8 400010a8 <_X_ets_enter_critical> -40004a42: ffc6a1 l32r a10, 4000495c <_XX_unk4940+0x1c> -40004a45: 1192e0 slli a9, a2, 2 -40004a48: 8099a0 add a9, a9, a10 -40004a4b: 0020c0 memw -40004a4e: 006932 s32i a3, a9, 0 -40004a51: 27a082 movi a8, 39 -40004a54: 3e3827 bltu a8, a2, 40004a96 <gpio_output_set_high+0x9e> -40004a57: fff8a1 l32r a10, 40004a38 <gpio_output_set_high+0x40> -40004a5a: 24b730 extui a11, a3, 7, 3 -40004a5d: c2aa add.n a12, a2, a10 -40004a5f: 004cb2 s8i a11, a12, 0 -40004a62: 0bfc bnez.n a11, 40004a96 <gpio_output_set_high+0x9e> -40004a64: 1c0c movi.n a12, 1 -40004a66: fb7c movi.n a11, -1 -40004a68: f0caa2 addi a10, a10, -16 -40004a6b: 12c2f6 bgeui a2, 32, 40004a81 <gpio_output_set_high+0x89> -40004a6e: 0ad8 l32i.n a13, a10, 0 -40004a70: 401200 ssl a2 -40004a73: a1ec00 sll a14, a12 -40004a76: 30eeb0 xor a14, a14, a11 -40004a79: 10dde0 and a13, a13, a14 -40004a7c: 0ad9 s32i.n a13, a10, 0 -40004a7e: 000506 j 40004a96 <gpio_output_set_high+0x9e> -40004a81: 012af2 l32i a15, a10, 4 -40004a84: e0c292 addi a9, a2, -32 -40004a87: 401900 ssl a9 -40004a8a: a18c00 sll a8, a12 -40004a8d: 3088b0 xor a8, a8, a11 -40004a90: 10ff80 and a15, a15, a8 -40004a93: 016af2 s32i a15, a10, 4 -40004a96: fc6265 call8 400010bc <_X_ets_exit_critical> -40004a99: 000090 retw -40004a9c: 004136 entry a1, 32 -40004a9f: ffaf81 l32r a8, 4000495c <_XX_unk4940+0x1c> -40004aa2: 1152e0 slli a5, a2, 2 -40004aa5: 558a add.n a5, a5, a8 -40004aa7: 0020c0 memw -40004aaa: 0558 l32i.n a5, a5, 0 -40004aac: 732c movi.n a3, 39 -40004aae: 163327 bltu a3, a2, 40004ac8 <gpio_output_set_high+0xd0> -40004ab1: ffe131 l32r a3, 40004a38 <gpio_output_set_high+0x40> -40004ab4: 223a add.n a2, a2, a3 -40004ab6: 000222 l8ui a2, a2, 0 -40004ab9: 7fac32 movi a3, 0xfffffc7f -40004abc: 103530 and a3, a5, a3 -40004abf: 112290 slli a2, a2, 7 -40004ac2: 202230 or a2, a2, a3 -40004ac5: f01d retw.n -40004ac7: 052d00 extui a2, a0, 29, 1 -40004aca: f01d retw.n -40004acc: 004136 entry a1, 32 -40004acf: ffa521 l32r a2, 40004964 <_XX_unk4940+0x24> -40004ad2: 0228 l32i.n a2, a2, 0 -40004ad4: f01d retw.n -40004ad6: 360000 excw -40004ad9: 210041 l32r a4, 3ffccedc <_start-0x33124> -40004adc: 28ffa2 s32ri a10, a15, 160 -40004adf: f01d12 l16ui a1, a13, 0x1e0 -40004ae2: 360000 excw -40004ae5: 250041 l32r a4, 3ffcdee8 <_start-0x32118> -40004ae8: fc5c movi.n a12, 95 -40004aea: f19191 l32r a9, 40001130 <_c_0x60003e00> -40004aed: a09290 addx4 a9, a2, a9 -40004af0: 0020c0 memw -40004af3: 7facb2 movi a11, 0xfffffc7f -40004af6: a22982 l32i a8, a9, 0x288 -40004af9: 11a390 slli a10, a3, 7 -40004afc: 1088b0 and a8, a8, a11 -40004aff: 2088a0 or a8, a8, a10 -40004b02: 0020c0 memw -40004b05: a26982 s32i a8, a9, 0x288 -40004b08: fc5b25 call8 400010bc <_X_ets_exit_critical> -40004b0b: f01d retw.n -40004b0d: 000000 ill -40004b10: 004136 entry a1, 32 -40004b13: fc5965 call8 400010a8 <_X_ets_enter_critical> -40004b16: ff93b1 l32r a11, 40004964 <_XX_unk4940+0x24> -40004b19: ffaf92 movi a9, -1 -40004b1c: 002b82 l32i a8, a11, 0 -40004b1f: 309290 xor a9, a2, a9 -40004b22: 10a890 and a10, a8, a9 -40004b25: 006ba2 s32i a10, a11, 0 -40004b28: 0c0897 bnone a8, a9, 40004b38 <gpio_output_set_high+0x140> -40004b2b: f181d1 l32r a13, 40001130 <_c_0x60003e00> -40004b2e: 0020c0 memw -40004b31: 926da2 s32i a10, a13, 0x248 -40004b34: 0c0c movi.n a12, 0 -40004b36: 0bc9 s32i.n a12, a11, 0 -40004b38: ffc041 l32r a4, 40004a38 <gpio_output_set_high+0x40> -40004b3b: 030c movi.n a3, 0 -40004b3d: 075237 bbc a2, a3, 40004b48 <gpio_output_set_high+0x150> -40004b40: 03ad mov.n a10, a3 -40004b42: 0004b2 l8ui a11, a4, 0 -40004b45: fff9e5 call8 40004ae4 <gpio_output_set_high+0xec> -40004b48: 01c442 addi a4, a4, 1 -40004b4b: 01c332 addi a3, a3, 1 -40004b4e: ebc366 bnei a3, 32, 40004b3d <gpio_output_set_high+0x145> -40004b51: fc56a5 call8 400010bc <_X_ets_exit_critical> -40004b54: 000090 retw -40004b57: 413600 srli a3, a0, 6 -40004b5a: 54e500 extui a14, a0, 5, 6 -40004b5d: b1fc bnez.n a1, 40004b9c <gpio_output_set_high+0x1a4> -40004b5f: 92ff81 l32r a8, 3ffe975c <_start-0x168a4> -40004b62: af .byte 0xaf -40004b63: ff .byte 0xff -40004b64: 012b82 l32i a8, a11, 4 -40004b67: 309290 xor a9, a2, a9 -40004b6a: 10a890 and a10, a8, a9 -40004b6d: 016ba2 s32i a10, a11, 4 -40004b70: 0c0897 bnone a8, a9, 40004b80 <gpio_output_set_high+0x188> -40004b73: f16fd1 l32r a13, 40001130 <_c_0x60003e00> -40004b76: 0020c0 memw -40004b79: 956da2 s32i a10, a13, 0x254 -40004b7c: 0c0c movi.n a12, 0 -40004b7e: 1bc9 s32i.n a12, a11, 4 -40004b80: ffae41 l32r a4, 40004a38 <gpio_output_set_high+0x40> -40004b83: 030c movi.n a3, 0 -40004b85: 085237 bbc a2, a3, 40004b91 <gpio_output_set_high+0x199> -40004b88: 20c3a2 addi a10, a3, 32 -40004b8b: 2004b2 l8ui a11, a4, 32 -40004b8e: fff565 call8 40004ae4 <gpio_output_set_high+0xec> -40004b91: 01c442 addi a4, a4, 1 -40004b94: 01c332 addi a3, a3, 1 -40004b97: ea8366 bnei a3, 8, 40004b85 <gpio_output_set_high+0x18d> -40004b9a: fc5225 call8 400010bc <_X_ets_exit_critical> -40004b9d: 000090 retw -40004ba0: 004136 entry a1, 32 -40004ba3: ff7041 l32r a4, 40004964 <_XX_unk4940+0x24> -40004ba6: 3439 s32i.n a3, a4, 12 -40004ba8: 2429 s32i.n a2, a4, 8 -40004baa: f01d retw.n -40004bac: 004136 entry a1, 32 -40004baf: f16051 l32r a5, 40001130 <_c_0x60003e00> -40004bb2: 0020c0 memw -40004bb5: 912532 l32i a3, a5, 0x244 -40004bb8: 0020c0 memw -40004bbb: 942522 l32i a2, a5, 0x250 -40004bbe: 040c movi.n a4, 0 -40004bc0: 065347 bbc a3, a4, 40004bca <gpio_output_set_high+0x1d2> -40004bc3: 04ad mov.n a10, a4 -40004bc5: 0b0c movi.n a11, 0 -40004bc7: fff1e5 call8 40004ae4 <gpio_output_set_high+0xec> -40004bca: 441b addi.n a4, a4, 1 -40004bcc: f0c466 bnei a4, 32, 40004bc0 <gpio_output_set_high+0x1c8> -40004bcf: ff6561 l32r a6, 40004964 <_XX_unk4940+0x24> -40004bd2: 0020c0 memw -40004bd5: 936532 s32i a3, a5, 0x24c -40004bd8: 0698 l32i.n a9, a6, 0 -40004bda: 89ac beqz.n a9, 40004c06 <gpio_output_set_high+0x20e> -40004bdc: 208390 or a8, a3, a9 -40004bdf: 006682 s32i a8, a6, 0 -40004be2: 040c movi.n a4, 0 -40004be4: 085247 bbc a2, a4, 40004bf0 <gpio_output_set_high+0x1f8> -40004be7: 20c4a2 addi a10, a4, 32 -40004bea: 00a0b2 movi a11, 0 -40004bed: ffef65 call8 40004ae4 <gpio_output_set_high+0xec> -40004bf0: 441b addi.n a4, a4, 1 -40004bf2: ee8466 bnei a4, 8, 40004be4 <gpio_output_set_high+0x1ec> -40004bf5: 0020c0 memw -40004bf8: 966522 s32i a2, a5, 0x258 -40004bfb: 1698 l32i.n a9, a6, 4 -40004bfd: 499c beqz.n a9, 40004c15 <gpio_output_set_high+0x21d> -40004bff: 20a290 or a10, a2, a9 -40004c02: 16a9 s32i.n a10, a6, 4 -40004c04: f01d retw.n -40004c06: 03ad mov.n a10, a3 -40004c08: 0639 s32i.n a3, a6, 0 -40004c0a: 2688 l32i.n a8, a6, 8 -40004c0c: 36b8 l32i.n a11, a6, 12 -40004c0e: 0008e0 callx8 a8 -40004c11: fff346 j 40004be2 <gpio_output_set_high+0x1ea> -40004c14: 02ad00 andb b10, b13, b0 -40004c17: 1629 s32i.n a2, a6, 4 -40004c19: 2688 l32i.n a8, a6, 8 -40004c1b: 36b8 l32i.n a11, a6, 12 -40004c1d: 0008e0 callx8 a8 -40004c20: f01d retw.n -40004c22: 360000 excw -40004c25: 250041 l32r a4, 3ffce028 <_start-0x31fd8> -40004c28: fc48 l32i.n a4, a12, 60 -40004c2a: f14191 l32r a9, 40001130 <_c_0x60003e00> -40004c2d: a09290 addx4 a9, a2, a9 -40004c30: 0020c0 memw -40004c33: 7facb2 movi a11, 0xfffffc7f -40004c36: a22982 l32i a8, a9, 0x288 -40004c39: 11a390 slli a10, a3, 7 -40004c3c: 1088b0 and a8, a8, a11 -40004c3f: 2088a0 or a8, a8, a10 -40004c42: 00a4a2 movi a10, 0x400 -40004c45: 2088a0 or a8, a8, a10 -40004c48: 0020c0 memw -40004c4b: a26982 s32i a8, a9, 0x288 -40004c4e: fc46e5 call8 400010bc <_X_ets_exit_critical> -40004c51: f01d retw.n -40004c53: 413600 srli a3, a0, 6 -40004c56: 030c00 rsr.scompare1 a0 -40004c59: 7fa872 movi a7, 0xfffff87f -40004c5c: f13541 l32r a4, 40001130 <_c_0x60003e00> -40004c5f: 822c movi.n a2, 40 -40004c61: 19a276 loopgtz a2, 40004c7e <gpio_output_set_high+0x286> -40004c64: a06340 addx4 a6, a3, a4 -40004c67: 0020c0 memw -40004c6a: a22652 l32i a5, a6, 0x288 -40004c6d: 0865a7 bbci a5, 10, 40004c79 <gpio_output_set_high+0x281> -40004c70: 108570 and a8, a5, a7 -40004c73: 0020c0 memw -40004c76: a26682 s32i a8, a6, 0x288 -40004c79: 331b addi.n a3, a3, 1 -40004c7b: 743030 extui a3, a3, 0, 8 -40004c7e: f01d retw.n - -40004c80 <_c_0xbfffffff>: -40004c80: ff .byte 0xff -40004c81: ff .byte 0xff -40004c82: ff .byte 0xff -40004c83: bf .byte 0xbf -40004c84: fff000 excw -40004c87: ff .byte 0xff - -40004c88 <_c_0xff000fff>: -40004c88: ff .byte 0xff -40004c89: 0f .byte 0xf -40004c8a: 36ff00 excw - -40004c8c <lldesc_build_chain>: -40004c8c: 006136 entry a1, 48 -40004c8f: b4f060 extui a15, a6, 0, 12 -40004c92: 00a092 movi a9, 0 -40004c95: fffae1 l32r a14, 40004c80 <_c_0xbfffffff> -40004c98: eebad1 l32r a13, 40000780 <_c_0x7fffffff> -40004c9b: eea7c1 l32r a12, 40000738 <_c_0x80000000> -40004c9e: f70db1 l32r a11, 400028d4 <_c_0xdfffffff> -40004ca1: 036172 s32i a7, a1, 12 -40004ca4: fff8a1 l32r a10, 40004c84 <_c_0xbfffffff+0x4> -40004ca7: c27560 quou a7, a5, a6 -40004caa: 205110 or a5, a1, a1 -40004cad: 628076 loop a0, 40004d13 <lldesc_build_chain+0x87> -40004cb0: 1249 s32i.n a4, a2, 4 -40004cb2: 0020c0 memw -40004cb5: 0238 l32i.n a3, a2, 0 -40004cb7: 1033a0 and a3, a3, a10 -40004cba: 2033f0 or a3, a3, a15 -40004cbd: 0020c0 memw -40004cc0: 0239 s32i.n a3, a2, 0 -40004cc2: 0020c0 memw -40004cc5: 0288 l32i.n a8, a2, 0 -40004cc7: 1088d0 and a8, a8, a13 -40004cca: 2088c0 or a8, a8, a12 -40004ccd: 0020c0 memw -40004cd0: 3138 l32i.n a3, a1, 12 -40004cd2: 0289 s32i.n a8, a2, 0 -40004cd4: 040316 beqz a3, 40004d18 <lldesc_build_chain+0x8c> -40004cd7: 0020c0 memw -40004cda: 0288 l32i.n a8, a2, 0 -40004cdc: 0020c0 memw -40004cdf: 0238 l32i.n a3, a2, 0 -40004ce1: b43030 extui a3, a3, 0, 12 -40004ce4: cab380 depbits a8, a3, 12, 12 -40004ce7: 0020c0 memw -40004cea: 0289 s32i.n a8, a2, 0 -40004cec: 0020c0 memw -40004cef: 0288 l32i.n a8, a2, 0 -40004cf1: 1088e0 and a8, a8, a14 -40004cf4: 0020c0 memw -40004cf7: 0289 s32i.n a8, a2, 0 -40004cf9: 0020c0 memw -40004cfc: 0288 l32i.n a8, a2, 0 -40004cfe: 1088b0 and a8, a8, a11 -40004d01: 0020c0 memw -40004d04: 464a add.n a4, a6, a4 -40004d06: 991b addi.n a9, a9, 1 -40004d08: 0289 s32i.n a8, a2, 0 -40004d0a: 2529 s32i.n a2, a5, 8 -40004d0c: 2558 l32i.n a5, a5, 8 -40004d0e: 22cb addi.n a2, a2, 12 -40004d10: 18b977 bgeu a9, a7, 40004d2c <lldesc_build_chain+0xa0> -40004d13: ffe586 j 40004cad <lldesc_build_chain+0x21> -40004d16: c00000 sub a0, a0, a0 -40004d19: 810020 src a0, a0, a2 -40004d1c: ffdb addi.n a15, a15, 13 -40004d1e: 0238 l32i.n a3, a2, 0 -40004d20: 103380 and a3, a3, a8 -40004d23: 0020c0 memw -40004d26: 0239 s32i.n a3, a2, 0 -40004d28: fff006 j 40004cec <lldesc_build_chain+0x60> -40004d2b: d19800 mul16s a9, a8, a0 -40004d2e: c1b8 l32i.n a11, a1, 48 -40004d30: 0a0c movi.n a10, 0 -40004d32: 25a9 s32i.n a10, a5, 8 -40004d34: 21a8 l32i.n a10, a1, 8 -40004d36: 0ba9 s32i.n a10, a11, 0 -40004d38: 0959 s32i.n a5, a9, 0 -40004d3a: f01d retw.n -40004d3c: 004136 entry a1, 32 -40004d3f: ffc332 addi a3, a3, -1 -40004d42: f43030 extui a3, a3, 0, 16 -40004d45: 019376 loopnez a3, 40004d4a <lldesc_build_chain+0xbe> -40004d48: 2228 l32i.n a2, a2, 8 -40004d4a: f01d retw.n -40004d4c: 004136 entry a1, 32 -40004d4f: 015410 slli a5, a4, 31 -40004d52: ee8b81 l32r a8, 40000780 <_c_0x7fffffff> -40004d55: 0020c0 memw -40004d58: 0268 l32i.n a6, a2, 0 -40004d5a: fb0460 depbits a6, a4, 31, 1 -40004d5d: 084d mov.n a4, a8 -40004d5f: 0020c0 memw -40004d62: 0269 s32i.n a6, a2, 0 -40004d64: 330b addi.n a3, a3, -1 -40004d66: f43030 extui a3, a3, 0, 16 -40004d69: 119376 loopnez a3, 40004d7e <lldesc_build_chain+0xf2> -40004d6c: 2228 l32i.n a2, a2, 8 -40004d6e: 0020c0 memw -40004d71: 0238 l32i.n a3, a2, 0 -40004d73: 103340 and a3, a3, a4 -40004d76: 203350 or a3, a3, a5 -40004d79: 0020c0 memw -40004d7c: 0239 s32i.n a3, a2, 0 -40004d7e: f01d retw.n - -40004d80 <_st_0x3fffdc90>: -40004d80: ffdc90 excw -40004d83: 3f .byte 0x3f -40004d84: ffdd50 excw -40004d87: 3f .byte 0x3f - -40004d88 <_XX_unk4d88>: -40004d88: 008136 entry a1, 64 -40004d8b: fffec1 l32r a12, 40004d84 <_st_0x3fffdc90+0x4> -40004d8e: 00a2d2 movi a13, 0x200 -40004d91: 14c182 addi a8, a1, 20 -40004d94: 10c192 addi a9, a1, 16 -40004d97: fffa21 l32r a2, 40004d80 <_st_0x3fffdc90> -40004d9a: 00a0f2 movi a15, 0 -40004d9d: 40a0b2 movi a11, 64 -40004da0: 20ebb0 or a14, a11, a11 -40004da3: 22f9 s32i.n a15, a2, 8 -40004da5: 0052b2 s16i a11, a2, 0 -40004da8: a28b addi.n a10, a2, 8 -40004daa: 32a9 s32i.n a10, a2, 12 -40004dac: 60a0b2 movi a11, 96 -40004daf: 60c2a2 addi a10, a2, 96 -40004db2: 0199 s32i.n a9, a1, 0 -40004db4: 1189 s32i.n a8, a1, 4 -40004db6: ffed65 call8 40004c8c <lldesc_build_chain> -40004db9: 51c8 l32i.n a12, a1, 20 -40004dbb: 41d8 l32i.n a13, a1, 16 -40004dbd: 22d9 s32i.n a13, a2, 8 -40004dbf: cc8b addi.n a12, a12, 8 -40004dc1: 32c9 s32i.n a12, a2, 12 -40004dc3: f01d retw.n -40004dc5: 000000 ill -40004dc8: dc98 l32i.n a9, a12, 52 -40004dca: ff .byte 0xff -40004dcb: 3f .byte 0x3f -40004dcc: 004136 entry a1, 32 -40004dcf: ffec51 l32r a5, 40004d80 <_st_0x3fffdc90> -40004dd2: 2588 l32i.n a8, a5, 8 -40004dd4: 058816 beqz a8, 40004e30 <_XX_unk4d88+0xa8> -40004dd7: fc2d25 call8 400010a8 <_X_ets_enter_critical> -40004dda: 2548 l32i.n a4, a5, 8 -40004ddc: 2498 l32i.n a9, a4, 8 -40004dde: 026592 s32i a9, a5, 8 -40004de1: 04f916 beqz a9, 40004e34 <_XX_unk4d88+0xac> -40004de4: fc2d65 call8 400010bc <_X_ets_exit_critical> -40004de7: 00a0a2 movi a10, 0 -40004dea: 0ca0b2 movi a11, 12 -40004ded: 24a9 s32i.n a10, a4, 8 -40004def: 14a8 l32i.n a10, a4, 4 -40004df1: fdc625 call8 40002a54 <bzero> -40004df4: f0a0f2 movi a15, 240 -40004df7: 14d8 l32i.n a13, a4, 4 -40004df9: 22cb addi.n a2, a2, 12 -40004dfb: 418820 srli a8, a2, 8 -40004dfe: 034d82 s8i a8, a13, 3 -40004e01: 024d22 s8i a2, a13, 2 -40004e04: 000de2 l8ui a14, a13, 0 -40004e07: 014d32 s8i a3, a13, 1 -40004e0a: 10eef0 and a14, a14, a15 -40004e0d: 004de2 s8i a14, a13, 0 -40004e10: 0020c0 memw -40004e13: dd2b addi.n a13, a13, 2 -40004e15: 04b8 l32i.n a11, a4, 0 -40004e17: 010dc2 l8ui a12, a13, 1 -40004e1a: 000dd2 l8ui a13, a13, 0 -40004e1d: 11cc80 slli a12, a12, 8 -40004e20: 20ccd0 or a12, a12, a13 -40004e23: cabcb0 depbits a11, a12, 12, 12 -40004e26: 0020c0 memw -40004e29: 04b9 s32i.n a11, a4, 0 -40004e2b: 042d mov.n a2, a4 -40004e2d: f01d retw.n -40004e2f: 020c00 andb b0, b12, b0 -40004e32: f01d retw.n -40004e34: ffe591 l32r a9, 40004dc8 <_XX_unk4d88+0x40> -40004e37: 3599 s32i.n a9, a5, 12 -40004e39: ffe9c6 j 40004de4 <_XX_unk4d88+0x5c> -40004e3c: 004136 entry a1, 32 -40004e3f: ee5081 l32r a8, 40000780 <_c_0x7fffffff> -40004e42: ee3df1 l32r a15, 40000738 <_c_0x80000000> -40004e45: 00a032 movi a3, 0 -40004e48: 0020c0 memw -40004e4b: 0022e2 l32i a14, a2, 0 -40004e4e: 10ee80 and a14, a14, a8 -40004e51: 20eef0 or a14, a14, a15 -40004e54: 0020c0 memw -40004e57: 02e9 s32i.n a14, a2, 0 -40004e59: ff89d1 l32r a13, 40004c80 <_c_0xbfffffff> -40004e5c: 0020c0 memw -40004e5f: 02c8 l32i.n a12, a2, 0 -40004e61: 10ccd0 and a12, a12, a13 -40004e64: 0020c0 memw -40004e67: 02c9 s32i.n a12, a2, 0 -40004e69: f69ab1 l32r a11, 400028d4 <_c_0xdfffffff> -40004e6c: 0020c0 memw -40004e6f: 02a8 l32i.n a10, a2, 0 -40004e71: 10aab0 and a10, a10, a11 -40004e74: 0020c0 memw -40004e77: 02a9 s32i.n a10, a2, 0 -40004e79: ff8391 l32r a9, 40004c88 <_c_0xff000fff> -40004e7c: 0020c0 memw -40004e7f: 0288 l32i.n a8, a2, 0 -40004e81: 108890 and a8, a8, a9 -40004e84: 0020c0 memw -40004e87: 0289 s32i.n a8, a2, 0 -40004e89: fc21e5 call8 400010a8 <_X_ets_enter_critical> -40004e8c: ffbda1 l32r a10, 40004d80 <_st_0x3fffdc90> -40004e8f: 2239 s32i.n a3, a2, 8 -40004e91: 3ab8 l32i.n a11, a10, 12 -40004e93: 928b addi.n a9, a2, 8 -40004e95: 0b29 s32i.n a2, a11, 0 -40004e97: 3a99 s32i.n a9, a10, 12 -40004e99: fc2225 call8 400010bc <_X_ets_exit_critical> -40004e9c: f01d retw.n -40004e9e: 360000 excw -40004ea1: cd0041 l32r a4, 3fff82a4 <_start-0x7d5c> -40004ea4: 03bd04 excw -40004ea7: 02ad mov.n a10, a2 -40004ea9: 209220 or a9, a2, a2 -40004eac: 05c216 beqz a2, 40004f0c <_XX_unk4d88+0x184> -40004eaf: ff7631 l32r a3, 40004c88 <_c_0xff000fff> -40004eb2: ff7321 l32r a2, 40004c80 <_c_0xbfffffff> -40004eb5: ee32f1 l32r a15, 40000780 <_c_0x7fffffff> -40004eb8: ee20e1 l32r a14, 40000738 <_c_0x80000000> -40004ebb: f686d1 l32r a13, 400028d4 <_c_0xdfffffff> -40004ebe: 00a042 movi a4, 0 -40004ec1: 438076 loop a0, 40004f08 <_XX_unk4d88+0x180> -40004ec4: 0020c0 memw -40004ec7: 0988 l32i.n a8, a9, 0 -40004ec9: 1088f0 and a8, a8, a15 -40004ecc: 2088e0 or a8, a8, a14 -40004ecf: 0020c0 memw -40004ed2: 0989 s32i.n a8, a9, 0 -40004ed4: 0020c0 memw -40004ed7: 0988 l32i.n a8, a9, 0 -40004ed9: 108820 and a8, a8, a2 -40004edc: 208840 or a8, a8, a4 -40004edf: 0020c0 memw -40004ee2: 0989 s32i.n a8, a9, 0 -40004ee4: 0020c0 memw -40004ee7: 0988 l32i.n a8, a9, 0 -40004ee9: 1088d0 and a8, a8, a13 -40004eec: 208840 or a8, a8, a4 -40004eef: 0020c0 memw -40004ef2: 0989 s32i.n a8, a9, 0 -40004ef4: 0020c0 memw -40004ef7: 0988 l32i.n a8, a9, 0 -40004ef9: 108830 and a8, a8, a3 -40004efc: 208840 or a8, a8, a4 -40004eff: 0020c0 memw -40004f02: 0989 s32i.n a8, a9, 0 -40004f04: 2998 l32i.n a9, a9, 8 -40004f06: 298c beqz.n a9, 40004f0c <_XX_unk4d88+0x184> -40004f08: ffed46 j 40004ec1 <_XX_unk4d88+0x139> -40004f0b: 8aa500 depbits a0, a5, 8, 11 -40004f0e: f01d00 subx8 a1, a13, a0 -40004f11: 000000 ill - -40004f14 <_XX_unk4f14>: -40004f14: 004136 entry a1, 32 -40004f17: 20b220 or a11, a2, a2 -40004f1a: ee1991 l32r a9, 40000780 <_c_0x7fffffff> -40004f1d: ee0681 l32r a8, 40000738 <_c_0x80000000> -40004f20: 0020c0 memw -40004f23: 0022f2 l32i a15, a2, 0 -40004f26: 10ff90 and a15, a15, a9 -40004f29: 20ff80 or a15, a15, a8 -40004f2c: 0020c0 memw -40004f2f: 0062f2 s32i a15, a2, 0 -40004f32: ff53e1 l32r a14, 40004c80 <_c_0xbfffffff> -40004f35: 0020c0 memw -40004f38: 02d8 l32i.n a13, a2, 0 -40004f3a: 10dde0 and a13, a13, a14 -40004f3d: 0020c0 memw -40004f40: 02d9 s32i.n a13, a2, 0 -40004f42: f664c1 l32r a12, 400028d4 <_c_0xdfffffff> -40004f45: 0020c0 memw -40004f48: 02a8 l32i.n a10, a2, 0 -40004f4a: 10aac0 and a10, a10, a12 -40004f4d: 0020c0 memw -40004f50: 02a9 s32i.n a10, a2, 0 -40004f52: ff4d91 l32r a9, 40004c88 <_c_0xff000fff> -40004f55: 02ad mov.n a10, a2 -40004f57: 0020c0 memw -40004f5a: 0288 l32i.n a8, a2, 0 -40004f5c: 108890 and a8, a8, a9 -40004f5f: 0020c0 memw -40004f62: 1c0c movi.n a12, 1 -40004f64: 0289 s32i.n a8, a2, 0 -40004f66: 008525 call8 400057b8 <_XX_unk57b8> -40004f69: f01d retw.n - ... - -40004f6c <_XX_unk4f6c>: -40004f6c: 006136 entry a1, 48 -40004f6f: 20a110 or a10, a1, a1 -40004f72: 04c1b2 addi a11, a1, 4 -40004f75: 0087e5 call8 400057f4 <_XX_unk57f4> -40004f78: 0021c2 l32i a12, a1, 0 -40004f7b: ff81a1 l32r a10, 40004d80 <_st_0x3fffdc90> -40004f7e: ac9c beqz.n a12, 40004f9c <_XX_unk4f6c+0x30> -40004f80: 6a98 l32i.n a9, a10, 24 -40004f82: 698c beqz.n a9, 40004f8c <_XX_unk4f6c+0x20> -40004f84: 29c9 s32i.n a12, a9, 8 -40004f86: 1188 l32i.n a8, a1, 4 -40004f88: 6a89 s32i.n a8, a10, 24 -40004f8a: f01d retw.n -40004f8c: 00a0b2 movi a11, 0 -40004f8f: 012192 l32i a9, a1, 4 -40004f92: 056ac2 s32i a12, a10, 20 -40004f95: 6a99 s32i.n a9, a10, 24 -40004f97: da1c movi.n a10, 29 -40004f99: fbffe5 call8 40000f98 <_XX_unk0f96> -40004f9c: f01d retw.n -40004f9e: 360000 excw -40004fa1: 410041 l32r a4, 3ffd53a4 <_start-0x2ac5c> -40004fa4: 32ff77 bbsi a15, 23, 40004fda <_XX_unk4fc8+0x12> -40004fa7: 201424 excw -40004faa: 329332 l16si a3, a3, 100 -40004fad: 1d1464 excw -40004fb0: 0000f0 callx12 a0 -40004fb3: 413600 srli a3, a0, 6 -40004fb6: 724100 excw -40004fb9: ff .byte 0xff -40004fba: 152432 l32i a3, a4, 84 -40004fbd: 933220 movnez a3, a2, a2 -40004fc0: 156432 s32i a3, a4, 84 -40004fc3: f01d retw.n -40004fc5: 000000 ill - -40004fc8 <_XX_unk4fc8>: -40004fc8: 006136 entry a1, 48 -40004fcb: 01ad mov.n a10, a1 -40004fcd: b14b addi.n a11, a1, 4 -40004fcf: 0087a5 call8 40005848 <_XX_unk5848> -40004fd2: 2e0a26 beqi a10, -1, 40005004 <_XX_unk4fc8+0x3c> -40004fd5: ff6aa1 l32r a10, 40004d80 <_st_0x3fffdc90> -40004fd8: 01c8 l32i.n a12, a1, 0 -40004fda: 162ad2 l32i a13, a10, 88 -40004fdd: 8a98 l32i.n a9, a10, 32 -40004fdf: 7d8c beqz.n a13, 40004fea <_XX_unk4fc8+0x22> -40004fe1: 0cad mov.n a10, a12 -40004fe3: 11b8 l32i.n a11, a1, 4 -40004fe5: 000de0 callx8 a13 -40004fe8: f01d retw.n -40004fea: 698c beqz.n a9, 40004ff4 <_XX_unk4fc8+0x2c> -40004fec: 29c9 s32i.n a12, a9, 8 -40004fee: 1188 l32i.n a8, a1, 4 -40004ff0: 8a89 s32i.n a8, a10, 32 -40004ff2: f01d retw.n -40004ff4: 02a0b2 movi a11, 2 -40004ff7: 012192 l32i a9, a1, 4 -40004ffa: 076ac2 s32i a12, a10, 28 -40004ffd: 8a99 s32i.n a9, a10, 32 -40004fff: da1c movi.n a10, 29 -40005001: fbf965 call8 40000f98 <_XX_unk0f96> -40005004: f01d retw.n - ... - -40005008 <_s_no_rds>: -40005008: ffcce4 excw -4000500b: 3f .byte 0x3f - -4000500c <_XX_unk500c>: -4000500c: 004136 entry a1, 32 -4000500f: 12a8 l32i.n a10, a2, 4 -40005011: 070a92 l8ui a9, a10, 7 -40005014: 060ab2 l8ui a11, a10, 6 -40005017: 119980 slli a9, a9, 8 -4000501a: 2099b0 or a9, a9, a11 -4000501d: 050ab2 l8ui a11, a10, 5 -40005020: 119980 slli a9, a9, 8 -40005023: 2099b0 or a9, a9, a11 -40005026: 040ab2 l8ui a11, a10, 4 -40005029: 119980 slli a9, a9, 8 -4000502c: 2099b0 or a9, a9, a11 -4000502f: 890b addi.n a8, a9, -1 -40005031: 0a8816 beqz a8, 400050dd <_XX_unk500c+0xd1> -40005034: 603926 beqi a9, 3, 40005098 <_XX_unk500c+0x8c> -40005037: fbc9b2 addi a11, a9, -5 -4000503a: 0e6b16 beqz a11, 40005124 <_XX_unk500c+0x118> -4000503d: 07a926 beqi a9, 12, 40005048 <_XX_unk500c+0x3c> -40005040: 02ad mov.n a10, a2 -40005042: ffed25 call8 40004f14 <_XX_unk4f14> -40005045: f01d retw.n -40005047: ca3200 depbits a0, a2, 12, 4 -4000504a: 420c movi.n a2, 4 -4000504c: 18ca add.n a1, a8, a12 -4000504e: 07a0b2 movi a11, 7 -40005051: 0ca0a2 movi a10, 12 -40005054: ffd765 call8 40004dcc <_XX_unk4d88+0x44> -40005057: 0a5d mov.n a5, a10 -40005059: 7acc bnez.n a10, 40005064 <_XX_unk500c+0x58> -4000505b: ffeba1 l32r a10, 40005008 <_s_no_rds> -4000505e: fd7a65 call8 40002804 <ets_printf> -40005061: fff6c6 j 40005040 <_XX_unk500c+0x34> -40005064: 20b440 or a11, a4, a4 -40005067: 0603d2 l8ui a13, a3, 6 -4000506a: 0703c2 l8ui a12, a3, 7 -4000506d: 012aa2 l32i a10, a10, 4 -40005070: 11cc80 slli a12, a12, 8 -40005073: 0ccaa2 addi a10, a10, 12 -40005076: 20ccd0 or a12, a12, a13 -40005079: 0503d2 l8ui a13, a3, 5 -4000507c: 11cc80 slli a12, a12, 8 -4000507f: 20ccd0 or a12, a12, a13 -40005082: 0403d2 l8ui a13, a3, 4 -40005085: 11cc80 slli a12, a12, 8 -40005088: 20ccd0 or a12, a12, a13 -4000508b: fcd3a5 call8 40001dc4 <_X_ets_memcpy> -4000508e: 05bd mov.n a11, a5 -40005090: 05ad mov.n a10, a5 -40005092: 0013a5 call8 400051cc <_XX_unk51ac+0x20> -40005095: ffe9c6 j 40005040 <_XX_unk500c+0x34> -40005098: 0d0a82 l8ui a8, a10, 13 -4000509b: 0e0af2 l8ui a15, a10, 14 -4000509e: 0f0ae2 l8ui a14, a10, 15 -400050a1: 130ad2 l8ui a13, a10, 19 -400050a4: 11ee80 slli a14, a14, 8 -400050a7: 11dd80 slli a13, a13, 8 -400050aa: 20eef0 or a14, a14, a15 -400050ad: 120af2 l8ui a15, a10, 18 -400050b0: 11ee80 slli a14, a14, 8 -400050b3: 20ee80 or a14, a14, a8 -400050b6: 20ddf0 or a13, a13, a15 -400050b9: 110af2 l8ui a15, a10, 17 -400050bc: 11dd80 slli a13, a13, 8 -400050bf: 20ddf0 or a13, a13, a15 -400050c2: 100af2 l8ui a15, a10, 16 -400050c5: 11dd80 slli a13, a13, 8 -400050c8: 20ddf0 or a13, a13, a15 -400050cb: 0c0af2 l8ui a15, a10, 12 -400050ce: 11ee80 slli a14, a14, 8 -400050d1: 20eef0 or a14, a14, a15 -400050d4: 0020c0 memw -400050d7: 0ed9 s32i.n a13, a14, 0 -400050d9: ffd8c6 j 40005040 <_XX_unk500c+0x34> -400050dc: cab200 depbits a0, a2, 12, 12 -400050df: 0ae214 excw -400050e2: 0e .byte 0xe -400050e3: 110af2 l8ui a15, a10, 17 -400050e6: 130ac2 l8ui a12, a10, 19 -400050e9: 120ad2 l8ui a13, a10, 18 -400050ec: 11cc80 slli a12, a12, 8 -400050ef: 20ccd0 or a12, a12, a13 -400050f2: 11cc80 slli a12, a12, 8 -400050f5: 0f0ad2 l8ui a13, a10, 15 -400050f8: 20ccf0 or a12, a12, a15 -400050fb: 100af2 l8ui a15, a10, 16 -400050fe: 11dd80 slli a13, a13, 8 -40005101: 11cc80 slli a12, a12, 8 -40005104: 20dde0 or a13, a13, a14 -40005107: 0d0ae2 l8ui a14, a10, 13 -4000510a: 11dd80 slli a13, a13, 8 -4000510d: 20ccf0 or a12, a12, a15 -40005110: 20dde0 or a13, a13, a14 -40005113: 0c0ae2 l8ui a14, a10, 12 -40005116: 11dd80 slli a13, a13, 8 -40005119: 20dde0 or a13, a13, a14 -4000511c: 0dad mov.n a10, a13 -4000511e: fcca65 call8 40001dc4 <_X_ets_memcpy> -40005121: ffc6c6 j 40005040 <_XX_unk500c+0x34> -40005124: 0c0ab2 l8ui a11, a10, 12 -40005127: 0f0ac2 l8ui a12, a10, 15 -4000512a: 0e0ad2 l8ui a13, a10, 14 -4000512d: 11cc80 slli a12, a12, 8 -40005130: 20ccd0 or a12, a12, a13 -40005133: 0d0ad2 l8ui a13, a10, 13 -40005136: 11cc80 slli a12, a12, 8 -40005139: 20ccd0 or a12, a12, a13 -4000513c: 11ac80 slli a10, a12, 8 -4000513f: 20aab0 or a10, a10, a11 -40005142: fbfd25 call8 40001114 <_XX_set_0x3fffda30_0> -40005145: 02a0d2 movi a13, 2 -40005148: ff0ee1 l32r a14, 40004d80 <_st_0x3fffdc90> -4000514b: 00a0f2 movi a15, 0 -4000514e: 166ef2 s32i a15, a14, 88 -40005151: 0b6ed2 s32i a13, a14, 44 -40005154: ffba06 j 40005040 <_XX_unk500c+0x34> -40005157: 413600 srli a3, a0, 6 -4000515a: 092100 l32e a0, a1, -56 -4000515d: ff .byte 0xff -4000515e: b228 l32i.n a2, a2, 44 -40005160: f01d retw.n - ... - -40005164 <_fp_0x40004f6c>: -40005164: 4f6c movi.n a15, -28 -40005166: c84000 excw - -40005168 <_fp_0x40004fc8>: -40005168: 4fc8 l32i.n a12, a15, 16 -4000516a: 0c4000 excw -4000516d: 400050 excw - -40005170 <_X_sip_init_attach>: -40005170: 004136 entry a1, 32 -40005173: 02dd mov.n a13, a2 -40005175: fffba1 l32r a10, 40005164 <_fp_0x40004f6c> -40005178: fffcb1 l32r a11, 40005168 <_fp_0x40004fc8> -4000517b: ff0131 l32r a3, 40004d80 <_st_0x3fffdc90> -4000517e: 080c movi.n a8, 0 -40005180: 03cd mov.n a12, a3 -40005182: b389 s32i.n a8, a3, 44 -40005184: 003625 call8 400054e8 <_X_slc_init_attach> -40005187: c3a9 s32i.n a10, a3, 48 -40005189: ffbfe5 call8 40004d88 <_XX_unk4d88> -4000518c: c398 l32i.n a9, a3, 48 -4000518e: fff7a1 l32r a10, 4000516c <_fp_0x40004fc8+0x4> -40005191: 1663a2 s32i a10, a3, 88 -40005194: 001992 l16ui a9, a9, 0 -40005197: 015392 s16i a9, a3, 2 -4000519a: 004de5 call8 40005678 <_X_slc_enable> -4000519d: 1b0c movi.n a11, 1 -4000519f: b3b9 s32i.n a11, a3, 44 -400051a1: f01d retw.n -400051a3: 544400 extui a4, a0, 4, 6 -400051a6: 504000 iitlb a0 -400051a9: df .byte 0xdf -400051aa: ff .byte 0xff -400051ab: 3f .byte 0x3f - -400051ac <_XX_unk51ac>: -400051ac: 004136 entry a1, 32 -400051af: fffda1 l32r a10, 400051a4 <_X_sip_init_attach+0x34> -400051b2: 1da0b2 movi a11, 29 -400051b5: fffcc1 l32r a12, 400051a8 <_X_sip_init_attach+0x38> -400051b8: 04a0d2 movi a13, 4 -400051bb: fef191 l32r a9, 40004d80 <_st_0x3fffdc90> -400051be: 00a082 movi a8, 0 -400051c1: a989 s32i.n a8, a9, 40 -400051c3: 9989 s32i.n a8, a9, 36 -400051c5: fbd8e5 call8 40000f54 <_X_ets_task> -400051c8: f01d retw.n -400051ca: 360000 excw -400051cd: ad0041 l32r a4, 3fff05d0 <_start-0xfa30> -400051d0: eb8102 excw -400051d3: fe .byte 0xfe -400051d4: 1298 l32i.n a9, a2, 4 -400051d6: a8f8 l32i.n a15, a8, 40 -400051d8: 0849f2 s8i a15, a9, 8 -400051db: 41c8f0 srli a12, a15, 8 -400051de: 0949c2 s8i a12, a9, 9 -400051e1: ff1b addi.n a15, a15, 1 -400051e3: 41c8c0 srli a12, a12, 8 -400051e6: 0a49c2 s8i a12, a9, 10 -400051e9: 41c8c0 srli a12, a12, 8 -400051ec: 0b49c2 s8i a12, a9, 11 -400051ef: a8f9 s32i.n a15, a8, 40 -400051f1: 03bd mov.n a11, a3 -400051f3: fea3e1 l32r a14, 40004c80 <_c_0xbfffffff> -400051f6: ed5ad1 l32r a13, 40000760 <_c_0x40000000> -400051f9: 0020c0 memw -400051fc: 03c8 l32i.n a12, a3, 0 -400051fe: 10cce0 and a12, a12, a14 -40005201: 20ccd0 or a12, a12, a13 -40005204: 0020c0 memw -40005207: 03c9 s32i.n a12, a3, 0 -40005209: 994b addi.n a9, a9, 4 -4000520b: 0d0c movi.n a13, 0 -4000520d: 0020c0 memw -40005210: 0049d2 s8i a13, a9, 0 -40005213: 0020c0 memw -40005216: 0149d2 s8i a13, a9, 1 -40005219: 0c0c movi.n a12, 0 -4000521b: 0020c0 memw -4000521e: 0249c2 s8i a12, a9, 2 -40005221: 080c movi.n a8, 0 -40005223: 0020c0 memw -40005226: 034982 s8i a8, a9, 3 -40005229: 0050a5 call8 40005734 <_XX_unk5734> -4000522c: 020c movi.n a2, 0 -4000522e: f01d retw.n -40005230: 004136 entry a1, 32 -40005233: fed321 l32r a2, 40004d80 <_st_0x3fffdc90> -40005236: f01d retw.n -40005238: 004136 entry a1, 32 -4000523b: fed141 l32r a4, 40004d80 <_st_0x3fffdc90> -4000523e: 5488 l32i.n a8, a4, 20 -40005240: 010816 beqz a8, 40005254 <_XX_unk51ac+0xa8> -40005243: fbe665 call8 400010a8 <_X_ets_enter_critical> -40005246: 5428 l32i.n a2, a4, 20 -40005248: 050c movi.n a5, 0 -4000524a: 6459 s32i.n a5, a4, 24 -4000524c: 5459 s32i.n a5, a4, 20 -4000524e: fbe6e5 call8 400010bc <_X_ets_exit_critical> -40005251: 057256 bnez a2, 400052ac <_XX_unk51ac+0x100> -40005254: f01d retw.n -40005256: ffc9b2 addi a11, a9, -1 -40005259: 083b16 beqz a11, 400052e0 <_XX_unk51ac+0x134> -4000525c: fdc9c2 addi a12, a9, -3 -4000525f: 07dc16 beqz a12, 400052e0 <_XX_unk51ac+0x134> -40005262: 432966 bnei a9, 2, 400052a9 <_XX_unk51ac+0xfd> -40005265: 030ac2 l8ui a12, a10, 3 -40005268: 020ab2 l8ui a11, a10, 2 -4000526b: 11ac80 slli a10, a12, 8 -4000526e: 20aab0 or a10, a10, a11 -40005271: 0314b2 l16ui a11, a4, 6 -40005274: 0162a5 call8 400068a0 <multofup> -40005277: ffca62 addi a6, a10, -1 -4000527a: 02ad mov.n a10, a2 -4000527c: f46060 extui a6, a6, 0, 16 -4000527f: 06bd mov.n a11, a6 -40005281: ffaba5 call8 40004d3c <lldesc_build_chain+0xb0> -40005284: 2a28 l32i.n a2, a10, 8 -40005286: 2a59 s32i.n a5, a10, 8 -40005288: 1224d2 l32i a13, a4, 72 -4000528b: 0abd mov.n a11, a10 -4000528d: 5d8c beqz.n a13, 40005296 <_XX_unk51ac+0xea> -4000528f: 06cd mov.n a12, a6 -40005291: 03ad mov.n a10, a3 -40005293: 000de0 callx8 a13 -40005296: 02bd mov.n a11, a2 -40005298: 2228 l32i.n a2, a2, 8 -4000529a: 2b59 s32i.n a5, a11, 8 -4000529c: 1324d2 l32i a13, a4, 76 -4000529f: 6d8c beqz.n a13, 400052a9 <_XX_unk51ac+0xfd> -400052a1: 0bad mov.n a10, a11 -400052a3: 01a0c2 movi a12, 1 -400052a6: 000de0 callx8 a13 -400052a9: fa7216 beqz a2, 40005254 <_XX_unk51ac+0xa8> -400052ac: 12a8 l32i.n a10, a2, 4 -400052ae: 000a92 l8ui a9, a10, 0 -400052b1: 023d mov.n a3, a2 -400052b3: 349090 extui a9, a9, 0, 4 -400052b6: f9c956 bnez a9, 40005256 <_XX_unk51ac+0xaa> -400052b9: 2228 l32i.n a2, a2, 8 -400052bb: 2359 s32i.n a5, a3, 8 -400052bd: 010ab2 l8ui a11, a10, 1 -400052c0: 1324d2 l32i a13, a4, 76 -400052c3: 118b66 bnei a11, 8, 400052d8 <_XX_unk51ac+0x12c> -400052c6: fdfd16 beqz a13, 400052a9 <_XX_unk51ac+0xfd> -400052c9: 03bd mov.n a11, a3 -400052cb: 20a330 or a10, a3, a3 -400052ce: 01a0c2 movi a12, 1 -400052d1: 000de0 callx8 a13 -400052d4: fff446 j 400052a9 <_XX_unk51ac+0xfd> -400052d7: 03ad00 excw -400052da: ffb625 call8 40004e3c <_XX_unk4d88+0xb4> -400052dd: fff206 j 400052a9 <_XX_unk51ac+0xfd> -400052e0: 030ac2 l8ui a12, a10, 3 -400052e3: 020ab2 l8ui a11, a10, 2 -400052e6: 11ac80 slli a10, a12, 8 -400052e9: 20aab0 or a10, a10, a11 -400052ec: 0314b2 l16ui a11, a4, 6 -400052ef: 015b25 call8 400068a0 <multofup> -400052f2: f460a0 extui a6, a10, 0, 16 -400052f5: 20a330 or a10, a3, a3 -400052f8: 20b660 or a11, a6, a6 -400052fb: ffa425 call8 40004d3c <lldesc_build_chain+0xb0> -400052fe: 2a28 l32i.n a2, a10, 8 -40005300: 2a59 s32i.n a5, a10, 8 -40005302: 1224d2 l32i a13, a4, 72 -40005305: 0abd mov.n a11, a10 -40005307: f9ed16 beqz a13, 400052a9 <_XX_unk51ac+0xfd> -4000530a: 06cd mov.n a12, a6 -4000530c: 03ad mov.n a10, a3 -4000530e: 000de0 callx8 a13 -40005311: ffe506 j 400052a9 <_XX_unk51ac+0xfd> -40005314: ccec bnez.n a12, 40005344 <_XX_unk51ac+0x198> -40005316: ff .byte 0xff -40005317: 3f .byte 0x3f -40005318: 004136 entry a1, 32 -4000531b: fe9961 l32r a6, 40004d80 <_st_0x3fffdc90> -4000531e: 072682 l32i a8, a6, 28 -40005321: 014816 beqz a8, 40005339 <_XX_unk51ac+0x18d> -40005324: fbd825 call8 400010a8 <_X_ets_enter_critical> -40005327: 7628 l32i.n a2, a6, 28 -40005329: 030c movi.n a3, 0 -4000532b: 8639 s32i.n a3, a6, 32 -4000532d: 7639 s32i.n a3, a6, 28 -4000532f: fbd8e5 call8 400010bc <_X_ets_exit_critical> -40005332: 328c beqz.n a2, 40005339 <_XX_unk51ac+0x18d> -40005334: 050c movi.n a5, 0 -40005336: 001246 j 40005383 <_XX_unk51ac+0x1d7> -40005339: f01d retw.n -4000533b: 370000 excw -4000533e: 1c69 s32i.n a6, a12, 4 -40005340: 0b03a2 l8ui a10, a3, 11 -40005343: 11aa80 slli a10, a10, 8 -40005346: 20aab0 or a10, a10, a11 -40005349: 0903b2 l8ui a11, a3, 9 -4000534c: 11aa80 slli a10, a10, 8 -4000534f: 20aab0 or a10, a10, a11 -40005352: 0803b2 l8ui a11, a3, 8 -40005355: 11aa80 slli a10, a10, 8 -40005358: 20aab0 or a10, a10, a11 -4000535b: 96a9 s32i.n a10, a6, 36 -4000535d: 010556 bnez a5, 40005371 <_XX_unk51ac+0x1c5> -40005360: 0103b2 l8ui a11, a3, 1 -40005363: 0a6b17 bbci a11, 1, 40005371 <_XX_unk51ac+0x1c5> -40005366: 001165 call8 4000547c <_c_0x60017e00+0x4> -40005369: 4acc bnez.n a10, 40005371 <_XX_unk51ac+0x1c5> -4000536b: 000f65 call8 40005460 <_XX_unk51ac+0x2b4> -4000536e: 01a052 movi a5, 1 -40005371: 000392 l8ui a9, a3, 0 -40005374: 349090 extui a9, a9, 0, 4 -40005377: 04d916 beqz a9, 400053c8 <_XX_unk51ac+0x21c> -4000537a: 621926 beqi a9, 1, 400053e0 <_XX_unk51ac+0x234> -4000537d: 5f2926 beqi a9, 2, 400053e0 <_XX_unk51ac+0x234> -40005380: fb5216 beqz a2, 40005339 <_XX_unk51ac+0x18d> -40005383: 1238 l32i.n a3, a2, 4 -40005385: 024d mov.n a4, a2 -40005387: 010392 l8ui a9, a3, 1 -4000538a: 0a03b2 l8ui a11, a3, 10 -4000538d: 14a290 extui a10, a9, 2, 2 -40005390: fa9a56 bnez a10, 4000533d <_XX_unk51ac+0x191> -40005393: 96c8 l32i.n a12, a6, 36 -40005395: bc1b addi.n a11, a12, 1 -40005397: 96b9 s32i.n a11, a6, 36 -40005399: 0b03a2 l8ui a10, a3, 11 -4000539c: 0a03b2 l8ui a11, a3, 10 -4000539f: 11aa80 slli a10, a10, 8 -400053a2: 20aab0 or a10, a10, a11 -400053a5: 0903b2 l8ui a11, a3, 9 -400053a8: 11aa80 slli a10, a10, 8 -400053ab: 20aab0 or a10, a10, a11 -400053ae: 0803b2 l8ui a11, a3, 8 -400053b1: 11aa80 slli a10, a10, 8 -400053b4: 20aab0 or a10, a10, a11 -400053b7: a21ac7 beq a10, a12, 4000535d <_XX_unk51ac+0x1b1> -400053ba: 0abd mov.n a11, a10 -400053bc: 02dd mov.n a13, a2 -400053be: ffd5a1 l32r a10, 40005314 <_XX_unk51ac+0x168> -400053c1: fd4425 call8 40002804 <ets_printf> -400053c4: ffe546 j 4000535d <_XX_unk51ac+0x1b1> -400053c7: 04ad00 extui a10, a0, 13, 1 -400053ca: 04bd mov.n a11, a4 -400053cc: 2428 l32i.n a2, a4, 8 -400053ce: 090c movi.n a9, 0 -400053d0: 142682 l32i a8, a6, 80 -400053d3: 2499 s32i.n a9, a4, 8 -400053d5: 0008e0 callx8 a8 -400053d8: 04ad mov.n a10, a4 -400053da: ffb3a5 call8 40004f14 <_XX_unk4f14> -400053dd: ffe7c6 j 40005380 <_XX_unk51ac+0x1d4> -400053e0: 0303a2 l8ui a10, a3, 3 -400053e3: 0203b2 l8ui a11, a3, 2 -400053e6: 11aa80 slli a10, a10, 8 -400053e9: 20aab0 or a10, a10, a11 -400053ec: 0216b2 l16ui a11, a6, 4 -400053ef: 014b25 call8 400068a0 <multofup> -400053f2: 0a7d mov.n a7, a10 -400053f4: 04ad mov.n a10, a4 -400053f6: f4b070 extui a11, a7, 0, 16 -400053f9: ff9425 call8 40004d3c <lldesc_build_chain+0xb0> -400053fc: 2a28 l32i.n a2, a10, 8 -400053fe: 0d0c movi.n a13, 0 -40005400: 2ad9 s32i.n a13, a10, 8 -40005402: 0abd mov.n a11, a10 -40005404: 0020c0 memw -40005407: 0a98 l32i.n a9, a10, 0 -40005409: c32b addi.n a12, a3, 2 -4000540b: 0216d2 l16ui a13, a6, 4 -4000540e: 000ce2 l8ui a14, a12, 0 -40005411: 010cc2 l8ui a12, a12, 1 -40005414: 82d7d0 mull a13, a7, a13 -40005417: 11cc80 slli a12, a12, 8 -4000541a: 20cce0 or a12, a12, a14 -4000541d: c0ccd0 sub a12, a12, a13 -40005420: 0020c0 memw -40005423: fa24d1 l32r a13, 40003cb4 <_c_0x00ffffff> -40005426: 0aa8 l32i.n a10, a10, 0 -40005428: 10aad0 and a10, a10, a13 -4000542b: 41aca0 srli a10, a10, 12 -4000542e: aaca add.n a10, a10, a12 -40005430: caba90 depbits a9, a10, 12, 12 -40005433: 04ad mov.n a10, a4 -40005435: 0020c0 memw -40005438: 152682 l32i a8, a6, 84 -4000543b: 0b99 s32i.n a9, a11, 0 -4000543d: 0008e0 callx8 a8 -40005440: ffcf06 j 40005380 <_XX_unk51ac+0x1d4> -40005443: 413600 srli a3, a0, 6 -40005446: 029800 andb b9, b8, b0 -40005449: 398c beqz.n a9, 40005450 <_XX_unk51ac+0x2a4> -4000544b: 092926 beqi a9, 2, 40005458 <_XX_unk51ac+0x2ac> -4000544e: f01d retw.n -40005450: 12a8 l32i.n a10, a2, 4 -40005452: ffde65 call8 40005238 <_XX_unk51ac+0x8c> -40005455: f01d retw.n -40005457: 12a800 andbc b10, b8, b0 -4000545a: ffebe5 call8 40005318 <_XX_unk51ac+0x16c> -4000545d: f01d retw.n -4000545f: 413600 srli a3, a0, 6 -40005462: a0a200 addx4 a10, a2, a0 -40005465: a0b200 addx4 a11, a2, a0 -40005468: 962505 call0 3ff9b6bc <_start-0x64944> -4000546b: ff .byte 0xff -4000546c: 0abd mov.n a11, a10 -4000546e: ffd5e5 call8 400051cc <_XX_unk51ac+0x20> -40005471: f01d retw.n -40005473: 4e0000 excw -40005476: 006001 l32r a0, 3ffc55f8 <_start-0x3aa08> - -40005478 <_c_0x60017e00>: -40005478: 017e00 slli a7, a14, 32 -4000547b: 413660 srli a3, a6, 6 -4000547e: fd3100 excw -40005481: ff .byte 0xff -40005482: 0020c0 memw -40005485: 942332 l32i a3, a3, 0x250 -40005488: 181c movi.n a8, 17 -4000548a: 0ff377 bbsi a3, 23, 4000549d <_c_0x60017e00+0x25> -4000548d: fffa41 l32r a4, 40005478 <_c_0x60017e00> -40005490: 0020c0 memw -40005493: a52442 l32i a4, a4, 0x294 -40005496: 020c movi.n a2, 0 -40005498: 01c487 bnall a4, a8, 4000549d <_c_0x60017e00+0x25> -4000549b: f01d retw.n -4000549d: 120c movi.n a2, 1 -4000549f: f01d retw.n -400054a1: 000000 ill - -400054a4 <_st_0x3fffdf70>: -400054a4: ffdf70 excw -400054a7: 3f .byte 0x3f -400054a8: 004136 entry a1, 32 -400054ab: fffe51 l32r a5, 400054a4 <_st_0x3fffdf70> -400054ae: b549 s32i.n a4, a5, 44 -400054b0: 6539 s32i.n a3, a5, 24 -400054b2: 5529 s32i.n a2, a5, 20 -400054b4: f01d retw.n - ... - -400054b8 <_c_0x6000ae00>: -400054b8: 00ae00 any8 b0, b8:b9:b10:b11:b12:b13:b14:b15 -400054bb: 000060 excw - -400054bc <_c_0xf0000000>: -400054bc: 000000 ill -400054bf: 0017f0 movsp a15, a7 - -400054c0 <_c_0x02320017>: -400054c0: 320017 bnone a0, a1, 400054f6 <_X_slc_init_attach+0xe> -400054c3: 666602 s32i a0, a6, 0x198 - -400054c4 <_c_0x11116666>: -400054c4: 116666 bnei a6, 6, 400054d9 <_c_0x11116666+0x15> -400054c7: bfff11 l32r a1, 3fff54c4 <_start-0xab3c> -400054ca: ff .byte 0xff -400054cb: ff .byte 0xff -400054cc: ff .byte 0xff -400054cd: fffc01 l32r a0, 400054c0 <_c_0x02320017> -400054d0: 00c800 excw -400054d3: dfb000 excw -400054d6: ff .byte 0xff -400054d7: 3f .byte 0x3f -400054d8: 030003 excw -400054db: fffc00 excw -400054de: fffc bnez.n a15, 40005521 <_X_slc_init_attach+0x39> -400054e0: 800040 add a0, a0, a4 - ... - -400054e4 <_c_0x01110013>: -400054e4: 110013 excw -400054e7: 813601 l32r a0, 3ffe59c0 <_start-0x1a640> - -400054e8 <_X_slc_init_attach>: -400054e8: 008136 entry a1, 64 -400054eb: 029d mov.n a9, a2 -400054ed: 0e2c movi.n a14, 32 -400054ef: ffed21 l32r a2, 400054a4 <_st_0x3fffdf70> -400054f2: 0f0c movi.n a15, 0 -400054f4: 92f9 s32i.n a15, a2, 36 -400054f6: 82f9 s32i.n a15, a2, 32 -400054f8: 72f9 s32i.n a15, a2, 28 -400054fa: b249 s32i.n a4, a2, 44 -400054fc: 6239 s32i.n a3, a2, 24 -400054fe: 056292 s32i a9, a2, 20 -40005501: ffeda1 l32r a10, 400054b8 <_c_0x6000ae00> -40005504: f78bb1 l32r a11, 40003330 <_c_0x3feffe00> -40005507: ffed91 l32r a9, 400054bc <_c_0xf0000000> -4000550a: 0020c0 memw -4000550d: 952bd2 l32i a13, a11, 0x254 -40005510: 20dde0 or a13, a13, a14 -40005513: 0020c0 memw -40005516: 956bd2 s32i a13, a11, 0x254 -40005519: dfafc2 movi a12, -33 -4000551c: 0020c0 memw -4000551f: 952b82 l32i a8, a11, 0x254 -40005522: 1088c0 and a8, a8, a12 -40005525: 0020c0 memw -40005528: 956b82 s32i a8, a11, 0x254 -4000552b: 0545b6 bltui a5, 4, 40005534 <_X_slc_init_attach+0x4c> -4000552e: fcc582 addi a8, a5, -4 -40005531: 11f816 beqz a8, 40005654 <_l_slc_boot_mode_4> -40005534: 0020c0 memw -40005537: 812ab2 l32i a11, a10, 0x204 -4000553a: ffe1c1 l32r a12, 400054c0 <_c_0x02320017> -4000553d: 10bb90 and a11, a11, a9 -40005540: 20bbc0 or a11, a11, a12 -40005543: 0020c0 memw -40005546: 816ab2 s32i a11, a10, 0x204 -40005549: ffdec1 l32r a12, 400054c4 <_c_0x11116666> -4000554c: 0020c0 memw -4000554f: 806ac2 s32i a12, a10, 0x200 -40005552: 0043a5 call8 4000598c <_X_slc_set_host_io_max_window> -40005555: 3c0c movi.n a12, 3 -40005557: ffc741 l32r a4, 40005474 <_XX_unk51ac+0x2c8> -4000555a: ffc731 l32r a3, 40005478 <_c_0x60017e00> -4000555d: 0020c0 memw -40005560: 8023b2 l32i a11, a3, 0x200 -40005563: 20bbc0 or a11, a11, a12 -40005566: 0020c0 memw -40005569: 8063b2 s32i a11, a3, 0x200 -4000556c: ca7c movi.n a10, -4 -4000556e: 0020c0 memw -40005571: 802392 l32i a9, a3, 0x200 -40005574: 1099a0 and a9, a9, a10 -40005577: 0020c0 memw -4000557a: 806392 s32i a9, a3, 0x200 -4000557d: 10a382 movi a8, 0x310 -40005580: 0020c0 memw -40005583: 8023f2 l32i a15, a3, 0x200 -40005586: 20ff80 or a15, a15, a8 -40005589: 0020c0 memw -4000558c: 8063f2 s32i a15, a3, 0x200 -4000558f: ffcee1 l32r a14, 400054c8 <_c_0x11116666+0x4> -40005592: 0020c0 memw -40005595: 8023d2 l32i a13, a3, 0x200 -40005598: 10dde0 and a13, a13, a14 -4000559b: 0020c0 memw -4000559e: 8063d2 s32i a13, a3, 0x200 -400055a1: 00a1c2 movi a12, 0x100 -400055a4: 0020c0 memw -400055a7: 9e24b2 l32i a11, a4, 0x278 -400055aa: 20bbc0 or a11, a11, a12 -400055ad: 0020c0 memw -400055b0: 9e64b2 s32i a11, a4, 0x278 -400055b3: ffc6a1 l32r a10, 400054cc <_c_0x11116666+0x8> -400055b6: ffc691 l32r a9, 400054d0 <_c_0x11116666+0xc> -400055b9: 0020c0 memw -400055bc: c02482 l32i a8, a4, 0x300 -400055bf: 1088a0 and a8, a8, a10 -400055c2: 208890 or a8, a8, a9 -400055c5: 0020c0 memw -400055c8: cb0c movi.n a11, 12 -400055ca: 10c1f2 addi a15, a1, 16 -400055cd: 14c1e2 addi a14, a1, 20 -400055d0: c06482 s32i a8, a4, 0x300 -400055d3: ffc0a1 l32r a10, 400054d4 <_c_0x11116666+0x10> -400055d6: 10a2d2 movi a13, 0x210 -400055d9: 10cac2 addi a12, a10, 16 -400055dc: 0052d2 s16i a13, a2, 0 -400055df: 11e9 s32i.n a14, a1, 4 -400055e1: 01f9 s32i.n a15, a1, 0 -400055e3: 10a2e2 movi a14, 0x210 -400055e6: 01a0f2 movi a15, 1 -400055e9: ff6a25 call8 40004c8c <lldesc_build_chain> -400055ec: ffbb81 l32r a8, 400054d8 <_c_0x11116666+0x14> -400055ef: 0020c0 memw -400055f2: 8023f2 l32i a15, a3, 0x200 -400055f5: 20ff80 or a15, a15, a8 -400055f8: 0020c0 memw -400055fb: 8063f2 s32i a15, a3, 0x200 -400055fe: ffb7e1 l32r a14, 400054dc <_c_0x11116666+0x18> -40005601: 0020c0 memw -40005604: 8023d2 l32i a13, a3, 0x200 -40005607: 10dde0 and a13, a13, a14 -4000560a: 0020c0 memw -4000560d: 8063d2 s32i a13, a3, 0x200 -40005610: 41a8 l32i.n a10, a1, 16 -40005612: 51b8 l32i.n a11, a1, 20 -40005614: 1c0c movi.n a12, 1 -40005616: 001a25 call8 400057b8 <_XX_unk57b8> -40005619: f9b9e1 l32r a14, 40003d00 <_c_0x00800000> -4000561c: fc7c movi.n a12, -1 -4000561e: 0020c0 memw -40005621: b864e2 s32i a14, a4, 0x2e0 -40005624: ffafd1 l32r a13, 400054e0 <_c_0x11116666+0x1c> -40005627: 0020c0 memw -4000562a: b464d2 s32i a13, a4, 0x2d0 -4000562d: 0020c0 memw -40005630: b264c2 s32i a12, a4, 0x2c8 -40005633: 0020c0 memw -40005636: 8463c2 s32i a12, a3, 0x210 -40005639: 00acb2 movi a11, 0xfffffc00 -4000563c: 0a1c movi.n a10, 16 -4000563e: 0020c0 memw -40005641: c62392 l32i a9, a3, 0x318 -40005644: 1099b0 and a9, a9, a11 -40005647: 2099a0 or a9, a9, a10 -4000564a: 0020c0 memw -4000564d: c66392 s32i a9, a3, 0x318 -40005650: f01d retw.n - ... - -40005654 <_l_slc_boot_mode_4>: -40005654: 0020c0 memw -40005657: 812af2 l32i a15, a10, 0x204 -4000565a: ffa281 l32r a8, 400054e4 <_c_0x01110013> -4000565d: 10ff90 and a15, a15, a9 -40005660: 20ff80 or a15, a15, a8 -40005663: 0020c0 memw -40005666: 816af2 s32i a15, a10, 0x204 -40005669: ffb706 j 40005549 <_X_slc_init_attach+0x61> -4000566c: ff .byte 0xff -4000566d: ff .byte 0xff -4000566e: cf .byte 0xcf -4000566f: ff .byte 0xff -40005670: 0058e0 excw -40005673: 840040 extui a0, a4, 0, 9 -40005676: 040a add.n a0, a4, a0 - -40005678 <_X_slc_enable>: -40005678: 004136 entry a1, 32 -4000567b: fffcc1 l32r a12, 4000566c <_l_slc_boot_mode_4+0x18> -4000567e: f72c91 l32r a9, 40003330 <_c_0x3feffe00> -40005681: ff7d21 l32r a2, 40005478 <_c_0x60017e00> -40005684: 0020c0 memw -40005687: 9822b2 l32i a11, a2, 0x260 -4000568a: 10bbc0 and a11, a11, a12 -4000568d: 0020c0 memw -40005690: 9862b2 s32i a11, a2, 0x260 -40005693: 20a0a2 movi a10, 32 -40005696: 0020c0 memw -40005699: 982282 l32i a8, a2, 0x260 -4000569c: 2088a0 or a8, a8, a10 -4000569f: 0020c0 memw -400056a2: 986282 s32i a8, a2, 0x260 -400056a5: 40a0f2 movi a15, 64 -400056a8: 0020c0 memw -400056ab: 9822e2 l32i a14, a2, 0x260 -400056ae: 20eef0 or a14, a14, a15 -400056b1: 0020c0 memw -400056b4: 9862e2 s32i a14, a2, 0x260 -400056b7: fd6c movi.n a13, -17 -400056b9: 0020c0 memw -400056bc: 9822c2 l32i a12, a2, 0x260 -400056bf: 10ccd0 and a12, a12, a13 -400056c2: 0020c0 memw -400056c5: 9862c2 s32i a12, a2, 0x260 -400056c8: f71bb1 l32r a11, 40003334 <_c_0xffff83ff> -400056cb: 00a4a2 movi a10, 0x400 -400056ce: 0020c0 memw -400056d1: 9c2982 l32i a8, a9, 0x270 -400056d4: 1088b0 and a8, a8, a11 -400056d7: 2088a0 or a8, a8, a10 -400056da: 0020c0 memw -400056dd: 1a0c movi.n a10, 1 -400056df: ffe4b1 l32r a11, 40005670 <_l_slc_boot_mode_4+0x1c> -400056e2: 00a0c2 movi a12, 0 -400056e5: 9c6982 s32i a8, a9, 0x270 -400056e8: fb9fe5 call8 400010e8 <_X_ets_isr_attach> -400056eb: ffe2d1 l32r a13, 40005674 <_l_slc_boot_mode_4+0x20> -400056ee: 0020c0 memw -400056f1: 8362d2 s32i a13, a2, 0x20c -400056f4: 2a0c movi.n a10, 2 -400056f6: fba0e5 call8 40001104 <_X_ets_isr_unmask> -400056f9: f01d retw.n - ... - -400056fc <_X_slc_select_tohost_gpio_mode>: -400056fc: 004136 entry a1, 32 -400056ff: ff6931 l32r a3, 400054a4 <_st_0x3fffdf70> -40005702: d329 s32i.n a2, a3, 52 -40005704: f01d retw.n - ... - -40005708 <_X_slc_select_tohost_gpio>: -40005708: 004136 entry a1, 32 -4000570b: 11b2f6 bgeui a2, 16, 40005720 <_X_slc_select_tohost_gpio+0x18> -4000570e: ff6541 l32r a4, 400054a4 <_st_0x3fffdf70> -40005711: 401200 ssl a2 -40005714: 130c movi.n a3, 1 -40005716: a13300 sll a3, a3 -40005719: 1c5432 s16i a3, a4, 56 -4000571c: f01d retw.n -4000571e: 910000 srl a0, a0 -40005721: 0cff61 l32r a6, 3ffc8b20 <_start-0x374e0> -40005724: 8208 l32i.n a0, a2, 32 -40005726: 1c59 s32i.n a5, a12, 4 -40005728: f01d retw.n -4000572a: 000000 ill -4000572d: 00c000 excw - -40005730 <_c_0xff300000>: -40005730: 300000 xor a0, a0, a0 -40005733: ff .byte 0xff - -40005734 <_XX_unk5734>: -40005734: 006136 entry a1, 48 -40005737: 026d mov.n a6, a2 -40005739: 040c movi.n a4, 0 -4000573b: 0020c0 memw -4000573e: 0149 s32i.n a4, a1, 0 -40005740: 06c216 beqz a2, 400057b0 <_XX_unk5734+0x7c> -40005743: 00a052 movi a5, 0 -40005746: f95b71 l32r a7, 40003cb4 <_c_0x00ffffff> -40005749: 108076 loop a0, 4000575d <_XX_unk5734+0x29> -4000574c: 0020c0 memw -4000574f: 0688 l32i.n a8, a6, 0 -40005751: 2668 l32i.n a6, a6, 8 -40005753: 108870 and a8, a8, a7 -40005756: 418c80 srli a8, a8, 12 -40005759: 585a add.n a5, a8, a5 -4000575b: 268c beqz.n a6, 40005761 <_XX_unk5734+0x2d> -4000575d: fffa06 j 40005749 <_XX_unk5734+0x15> -40005760: 20c000 or a12, a0, a0 -40005763: 615200 excw -40005766: 446100 extui a6, a0, 1, 5 -40005769: ff .byte 0xff -4000576a: f96571 l32r a7, 40003d00 <_c_0x00800000> -4000576d: 088076 loop a0, 40005779 <_XX_unk5734+0x45> -40005770: 0020c0 memw -40005773: b92692 l32i a9, a6, 0x2e4 -40005776: 020977 bnone a9, a7, 4000577c <_XX_unk5734+0x48> -40005779: fffc06 j 4000576d <_XX_unk5734+0x39> -4000577c: 0020c0 memw -4000577f: bd6622 s32i a2, a6, 0x2f4 -40005782: 0020c0 memw -40005785: be6632 s32i a3, a6, 0x2f8 -40005788: ffe9b1 l32r a11, 4000572c <_X_slc_select_tohost_gpio+0x24> -4000578b: f72fd1 l32r a13, 40003448 <_c_0x000fffff> -4000578e: 0020c0 memw -40005791: 01c8 l32i.n a12, a1, 0 -40005793: 10ccd0 and a12, a12, a13 -40005796: ffe6d1 l32r a13, 40005730 <_c_0xff300000> -40005799: 0020c0 memw -4000579c: b926a2 l32i a10, a6, 0x2e4 -4000579f: 10aad0 and a10, a10, a13 -400057a2: 20aac0 or a10, a10, a12 -400057a5: 20aab0 or a10, a10, a11 -400057a8: 0020c0 memw -400057ab: b966a2 s32i a10, a6, 0x2e4 -400057ae: f01d retw.n -400057b0: 050c movi.n a5, 0 -400057b2: ffeac6 j 40005761 <_XX_unk5734+0x2d> -400057b5: 000000 ill - -400057b8 <_XX_unk57b8>: -400057b8: 004136 entry a1, 32 -400057bb: ff2fb1 l32r a11, 40005478 <_c_0x60017e00> -400057be: f93ea1 l32r a10, 40003cb8 <_c_0x01000000> -400057c1: 088076 loop a0, 400057cd <_XX_unk57b8+0x15> -400057c4: 0020c0 memw -400057c7: b92b82 l32i a8, a11, 0x2e4 -400057ca: 0208a7 bnone a8, a10, 400057d0 <_XX_unk57b8+0x18> -400057cd: fffc06 j 400057c1 <_XX_unk57b8+0x9> -400057d0: 0020c0 memw -400057d3: bb6b22 s32i a2, a11, 0x2ec -400057d6: 0020c0 memw -400057d9: bc6b32 s32i a3, a11, 0x2f0 -400057dc: 0020c0 memw -400057df: b92b92 l32i a9, a11, 0x2e4 -400057e2: 2099a0 or a9, a9, a10 -400057e5: 0020c0 memw -400057e8: b96b92 s32i a9, a11, 0x2e4 -400057eb: f4a040 extui a10, a4, 0, 16 -400057ee: 001d65 call8 400059c4 <_X_slc_add_credits> -400057f1: f01d retw.n - ... - -400057f4 <_XX_unk57f4>: -400057f4: 004136 entry a1, 32 -400057f7: 00a082 movi a8, 0 -400057fa: ff1f61 l32r a6, 40005478 <_c_0x60017e00> -400057fd: 0020c0 memw -40005800: b92642 l32i a4, a6, 0x2e4 -40005803: 3974b7 bbci a4, 27, 40005840 <_XX_unk57f4+0x4c> -40005806: f951a1 l32r a10, 40003d4c <_c_0x02000000> -40005809: 0020c0 memw -4000580c: b92692 l32i a9, a6, 0x2e4 -4000580f: 2099a0 or a9, a9, a10 -40005812: 0020c0 memw -40005815: b96692 s32i a9, a6, 0x2e4 -40005818: 0020c0 memw -4000581b: c12672 l32i a7, a6, 0x304 -4000581e: 006272 s32i a7, a2, 0 -40005821: 0020c0 memw -40005824: f93721 l32r a2, 40003d00 <_c_0x00800000> -40005827: c22672 l32i a7, a6, 0x308 -4000582a: 006372 s32i a7, a3, 0 -4000582d: 088076 loop a0, 40005839 <_XX_unk57f4+0x45> -40005830: 0020c0 memw -40005833: b926b2 l32i a11, a6, 0x2e4 -40005836: 020b27 bnone a11, a2, 4000583c <_XX_unk57f4+0x48> -40005839: fffc06 j 4000582d <_XX_unk57f4+0x39> -4000583c: 2789 s32i.n a8, a7, 8 -4000583e: f01d retw.n -40005840: 0289 s32i.n a8, a2, 0 -40005842: 0389 s32i.n a8, a3, 0 -40005844: f01d retw.n - ... - -40005848 <_XX_unk5848>: -40005848: 004136 entry a1, 32 -4000584b: ff0b61 l32r a6, 40005478 <_c_0x60017e00> -4000584e: 0020c0 memw -40005851: b92642 l32i a4, a6, 0x2e4 -40005854: 7474c7 bbci a4, 28, 400058cc <_XX_unk5848+0x84> -40005857: f9dd91 l32r a9, 40003fcc <_c_0x04000000> -4000585a: 0020c0 memw -4000585d: b92682 l32i a8, a6, 0x2e4 -40005860: 208890 or a8, a8, a9 -40005863: 0020c0 memw -40005866: b96682 s32i a8, a6, 0x2e4 -40005869: 0020c0 memw -4000586c: bf2672 l32i a7, a6, 0x2fc -4000586f: 0279 s32i.n a7, a2, 0 -40005871: 0020c0 memw -40005874: f91171 l32r a7, 40003cb8 <_c_0x01000000> -40005877: c02682 l32i a8, a6, 0x300 -4000587a: 006382 s32i a8, a3, 0 -4000587d: 088076 loop a0, 40005889 <_XX_unk5848+0x41> -40005880: 0020c0 memw -40005883: b926a2 l32i a10, a6, 0x2e4 -40005886: 040a77 bnone a10, a7, 4000588e <_XX_unk5848+0x46> -40005889: fffc06 j 4000587d <_XX_unk5848+0x35> -4000588c: 0c0000 excw -4000588f: 286906 j 4000fa37 <__umoddi3+0x8bd3> -40005892: 002222 l32i a2, a2, 0 -40005895: f2ac beqz.n a2, 400058c8 <_XX_unk5848+0x80> -40005897: fcfa51 l32r a5, 40004c80 <_c_0xbfffffff> -4000589a: ebb931 l32r a3, 40000780 <_c_0x7fffffff> -4000589d: 118076 loop a0, 400058b2 <_XX_unk5848+0x6a> -400058a0: 0020c0 memw -400058a3: 02b8 l32i.n a11, a2, 0 -400058a5: 10bb30 and a11, a11, a3 -400058a8: 15beb0 extui a11, a11, 30, 2 -400058ab: 061b26 beqi a11, 1, 400058b5 <_XX_unk5848+0x6d> -400058ae: 2228 l32i.n a2, a2, 8 -400058b0: 429c beqz.n a2, 400058c8 <_XX_unk5848+0x80> -400058b2: fff9c6 j 4000589d <_XX_unk5848+0x55> -400058b5: 0020c0 memw -400058b8: 02c8 l32i.n a12, a2, 0 -400058ba: 10cc50 and a12, a12, a5 -400058bd: 20cc60 or a12, a12, a6 -400058c0: 0020c0 memw -400058c3: 02c9 s32i.n a12, a2, 0 -400058c5: fff946 j 400058ae <_XX_unk5848+0x66> -400058c8: 020c movi.n a2, 0 -400058ca: f01d retw.n -400058cc: f27c movi.n a2, -1 -400058ce: f01d retw.n -400058d0: ff .byte 0xff -400058d1: ff .byte 0xff -400058d2: fe .byte 0xfe -400058d3: ff .byte 0xff -400058d4: 020000 andb b0, b0, b0 -400058d7: 000004 excw -400058da: 000001 l32r a0, 3ffc58dc <_start-0x3a724> -400058dd: 000080 ret -400058e0: 004136 entry a1, 32 -400058e3: fffb71 l32r a7, 400058d0 <_XX_unk5848+0x88> -400058e6: fffb51 l32r a5, 400058d4 <_XX_unk5848+0x8c> -400058e9: fffb61 l32r a6, 400058d8 <_XX_unk5848+0x90> -400058ec: fee331 l32r a3, 40005478 <_c_0x60017e00> -400058ef: feed41 l32r a4, 400054a4 <_st_0x3fffdf70> -400058f2: 0020c0 memw -400058f5: 822322 l32i a2, a3, 0x208 -400058f8: 74b8 l32i.n a11, a4, 28 -400058fa: 07e216 beqz a2, 4000597c <_XX_unk5848+0x134> -400058fd: 4b8c beqz.n a11, 40005905 <_XX_unk5848+0xbd> -400058ff: 20a220 or a10, a2, a2 -40005902: 000be0 callx8 a11 -40005905: 0c0527 bnone a5, a2, 40005915 <_XX_unk5848+0xcd> -40005908: 0020c0 memw -4000590b: 846352 s32i a5, a3, 0x210 -4000590e: 5488 l32i.n a8, a4, 20 -40005910: b4a8 l32i.n a10, a4, 44 -40005912: 0008e0 callx8 a8 -40005915: 1062f7 bbci a2, 15, 40005929 <_XX_unk5848+0xe1> -40005918: 0020c0 memw -4000591b: fff091 l32r a9, 400058dc <_XX_unk5848+0x94> -4000591e: 846392 s32i a9, a3, 0x210 -40005921: 6488 l32i.n a8, a4, 24 -40005923: 0b24a2 l32i a10, a4, 44 -40005926: 0008e0 callx8 a8 -40005929: 1c7207 bbci a2, 16, 40005949 <_XX_unk5848+0x101> -4000592c: d498 l32i.n a9, a4, 52 -4000592e: 2a2926 beqi a9, 2, 4000595c <_XX_unk5848+0x114> -40005931: 373926 beqi a9, 3, 4000596c <_XX_unk5848+0x124> -40005934: 0020c0 memw -40005937: 8323a2 l32i a10, a3, 0x20c -4000593a: 10aa70 and a10, a10, a7 -4000593d: 0020c0 memw -40005940: 8363a2 s32i a10, a3, 0x20c -40005943: 0020c0 memw -40005946: 846362 s32i a6, a3, 0x210 -40005949: 2ff237 bbsi a2, 19, 4000597c <_XX_unk5848+0x134> -4000594c: 2ce2a7 bbsi a2, 10, 4000597c <_XX_unk5848+0x134> -4000594f: 84b8 l32i.n a11, a4, 32 -40005951: f9db16 beqz a11, 400058f2 <_XX_unk5848+0xaa> -40005954: 02ad mov.n a10, a2 -40005956: 000be0 callx8 a11 -40005959: ffe546 j 400058f2 <_XX_unk5848+0xaa> -4000595c: 1c14b2 l16ui a11, a4, 56 -4000595f: 0020c0 memw -40005962: edf3c1 l32r a12, 40001130 <_c_0x60003e00> -40005965: 836cb2 s32i a11, a12, 0x20c -40005968: fff206 j 40005934 <_XX_unk5848+0xec> -4000596b: 14d200 extui a13, a0, 2, 2 -4000596e: c01c movi.n a0, 28 -40005970: e10020 excw -40005973: ef .byte 0xef -40005974: d2ed excw -40005976: 6e .byte 0x6e -40005977: ee0682 l8ui a8, a6, 238 -4000597a: ff .byte 0xff -4000597b: 94b800 extui a11, a0, 8, 10 -4000597e: 3b8c beqz.n a11, 40005985 <_XX_unk5848+0x13d> -40005980: 0a0c movi.n a10, 0 -40005982: 000be0 callx8 a11 -40005985: f01d retw.n - ... - -40005988 <_c_0xfffff0c0>: -40005988: fff0c0 excw -4000598b: ff .byte 0xff - -4000598c <_X_slc_set_host_io_max_window>: -4000598c: 004136 entry a1, 32 -4000598f: feba31 l32r a3, 40005478 <_c_0x60017e00> -40005992: 0020c0 memw -40005995: fffc41 l32r a4, 40005988 <_c_0xfffff0c0> -40005998: 9d2322 l32i a2, a3, 0x274 -4000599b: 102240 and a2, a2, a4 -4000599e: 20a742 movi a4, 0x720 -400059a1: 202240 or a2, a2, a4 -400059a4: 0020c0 memw -400059a7: 9d6322 s32i a2, a3, 0x274 -400059aa: f01d retw.n - -400059ac <_X_slc_init_credit>: -400059ac: 004136 entry a1, 32 -400059af: ede381 l32r a8, 4000113c <_c_0x1000> -400059b2: feb191 l32r a9, 40005478 <_c_0x60017e00> -400059b5: 0020c0 memw -400059b8: 1a0c movi.n a10, 1 -400059ba: 956982 s32i a8, a9, 0x254 -400059bd: 000065 call8 400059c4 <_X_slc_add_credits> -400059c0: f01d retw.n - ... - -400059c4 <_X_slc_add_credits>: -400059c4: 004136 entry a1, 32 -400059c7: f52331 l32r a3, 40002e54 <_c_0x3fffdb00+0x4> -400059ca: feab41 l32r a4, 40005478 <_c_0x60017e00> -400059cd: 0ab230 depbits a3, a2, 0, 12 -400059d0: 0020c0 memw -400059d3: 956432 s32i a3, a4, 0x254 -400059d6: f01d retw.n - -400059d8 <_X_xtos_set_interrupt_handler_arg>: -400059d8: 004136 entry a1, 32 -400059db: 02e296 bltz a2, 40005a0d <_X_xtos_set_interrupt_handler_arg+0x35> -400059de: 2bc2e6 bgei a2, 32, 40005a0d <_X_xtos_set_interrupt_handler_arg+0x35> -400059e1: eb6851 l32r a5, 40000784 <_c_0x7fffffff+0x4> -400059e4: 1182d0 slli a8, a2, 3 -400059e7: 525a add.n a5, a2, a5 -400059e9: 000552 l8ui a5, a5, 0 -400059ec: eb5471 l32r a7, 4000073c <_c_0x80000000+0x4> -400059ef: 1a75f6 bgeui a5, 7, 40005a0d <_X_xtos_set_interrupt_handler_arg+0x35> -400059f2: c07780 sub a7, a7, a8 -400059f5: eb6481 l32r a8, 40000788 <_c_0x7fffffff+0x8> -400059f8: 3e2762 l32i a6, a7, 248 -400059fb: 23dc bnez.n a3, 40005a11 <_X_xtos_set_interrupt_handler_arg+0x39> -400059fd: 3e6782 s32i a8, a7, 248 -40005a00: 3f6722 s32i a2, a7, 252 -40005a03: c09680 sub a9, a6, a8 -40005a06: 020c movi.n a2, 0 -40005a08: 932690 movnez a2, a6, a9 -40005a0b: f01d retw.n -40005a0d: 020c movi.n a2, 0 -40005a0f: f01d retw.n -40005a11: 3e6732 s32i a3, a7, 248 -40005a14: 3f6742 s32i a4, a7, 252 -40005a17: c0a680 sub a10, a6, a8 -40005a1a: 020c movi.n a2, 0 -40005a1c: 9326a0 movnez a2, a6, a10 -40005a1f: f01d retw.n -40005a21: 000000 ill - -40005a24 <_X_xtos_set_interrupt_handler>: -40005a24: 004136 entry a1, 32 -40005a27: 03bd mov.n a11, a3 -40005a29: 02ad mov.n a10, a2 -40005a2b: 02cd mov.n a12, a2 -40005a2d: fffaa5 call8 400059d8 <_X_xtos_set_interrupt_handler_arg> -40005a30: 0a2d mov.n a2, a10 -40005a32: f01d retw.n - -40005a34 <_X_xtos_ints_on>: -40005a34: 002136 entry a1, 16 -40005a37: eb3f41 l32r a4, 40000734 <_c_0x3fffc210> -40005a3a: 006670 rsil a7, 6 -40005a3d: 0438 l32i.n a3, a4, 0 -40005a3f: 1468 l32i.n a6, a4, 4 -40005a41: 205320 or a5, a3, a2 -40005a44: 0459 s32i.n a5, a4, 0 -40005a46: 105560 and a5, a5, a6 -40005a49: 13e450 wsr.intenable a5 -40005a4c: 13e670 wsr.ps a7 -40005a4f: 002010 rsync -40005a52: 032d mov.n a2, a3 -40005a54: f01d retw.n - ... - -40005a58 <_X_xtos_ints_off>: -40005a58: 002136 entry a1, 16 -40005a5b: eb3641 l32r a4, 40000734 <_c_0x3fffc210> -40005a5e: 006670 rsil a7, 6 -40005a61: 0438 l32i.n a3, a4, 0 -40005a63: 1468 l32i.n a6, a4, 4 -40005a65: 205320 or a5, a3, a2 -40005a68: 305520 xor a5, a5, a2 -40005a6b: 0459 s32i.n a5, a4, 0 -40005a6d: 105560 and a5, a5, a6 -40005a70: 13e450 wsr.intenable a5 -40005a73: 13e670 wsr.ps a7 -40005a76: 002010 rsync -40005a79: 032d mov.n a2, a3 -40005a7b: f01d retw.n -40005a7d: 000000 ill - -40005a80 <_XX_xtos_exc_unk5a80>: -40005a80: 034820 rsr.windowbase a2 -40005a83: 221b addi.n a2, a2, 1 -40005a85: 400200 ssr a2 -40005a88: 034930 rsr.windowstart a3 -40005a8b: 912030 srl a2, a3 -40005a8e: a13300 sll a3, a3 -40005a91: 0bf3d6 bgez a3, 40005b54 <_XX_xtos_exc_unk5a80+0xd4> -40005a94: f53030 extui a3, a3, 16, 16 -40005a97: 202230 or a2, a2, a3 -40005a9a: 603020 neg a3, a2 -40005a9d: 103320 and a3, a3, a2 -40005aa0: 40f330 nsau a3, a3 -40005aa3: 401300 ssl a3 -40005aa6: 912020 srl a2, a2 -40005aa9: 134920 wsr.windowstart a2 -40005aac: 034820 rsr.windowbase a2 -40005aaf: 1fc222 addi a2, a2, 31 -40005ab2: c03230 sub a3, a2, a3 -40005ab5: 134830 wsr.windowbase a3 -40005ab8: 002010 rsync -40005abb: 034920 rsr.windowstart a2 -40005abe: 07a216 beqz a2, 40005b3c <_XX_xtos_exc_unk5a80+0xbc> -40005ac1: 08e207 bbsi a2, 0, 40005acd <_XX_xtos_exc_unk5a80+0x4d> -40005ac4: 19e217 bbsi a2, 1, 40005ae1 <_XX_xtos_exc_unk5a80+0x61> -40005ac7: 3ae227 bbsi a2, 2, 40005b05 <_XX_xtos_exc_unk5a80+0x85> -40005aca: 0022c6 j 40005b59 <_XX_xtos_exc_unk5a80+0xd9> -40005acd: f0c932 addi a3, a9, -16 -40005ad0: 0349 s32i.n a4, a3, 0 -40005ad2: 1359 s32i.n a5, a3, 4 -40005ad4: 2369 s32i.n a6, a3, 8 -40005ad6: 3379 s32i.n a7, a3, 12 -40005ad8: 416120 srli a6, a2, 1 -40005adb: 408010 rotw 1 -40005ade: fff706 j 40005abe <_XX_xtos_exc_unk5a80+0x3e> -40005ae1: f0cd32 addi a3, a13, -16 -40005ae4: 0349 s32i.n a4, a3, 0 -40005ae6: 1359 s32i.n a5, a3, 4 -40005ae8: 2369 s32i.n a6, a3, 8 -40005aea: 3379 s32i.n a7, a3, 12 -40005aec: f4c532 addi a3, a5, -12 -40005aef: 0338 l32i.n a3, a3, 0 -40005af1: e0c332 addi a3, a3, -32 -40005af4: 0389 s32i.n a8, a3, 0 -40005af6: 1399 s32i.n a9, a3, 4 -40005af8: 23a9 s32i.n a10, a3, 8 -40005afa: 33b9 s32i.n a11, a3, 12 -40005afc: 41a220 srli a10, a2, 2 -40005aff: 408020 rotw 2 -40005b02: ffee06 j 40005abe <_XX_xtos_exc_unk5a80+0x3e> -40005b05: 408010 rotw 1 -40005b08: f0cdd2 addi a13, a13, -16 -40005b0b: 0d09 s32i.n a0, a13, 0 -40005b0d: 1d19 s32i.n a1, a13, 4 -40005b0f: 2d29 s32i.n a2, a13, 8 -40005b11: 3d39 s32i.n a3, a13, 12 -40005b13: f4c132 addi a3, a1, -12 -40005b16: 0338 l32i.n a3, a3, 0 -40005b18: 10cdd2 addi a13, a13, 16 -40005b1b: d0c332 addi a3, a3, -48 -40005b1e: 0349 s32i.n a4, a3, 0 -40005b20: 1359 s32i.n a5, a3, 4 -40005b22: 2369 s32i.n a6, a3, 8 -40005b24: 3379 s32i.n a7, a3, 12 -40005b26: 4389 s32i.n a8, a3, 16 -40005b28: 5399 s32i.n a9, a3, 20 -40005b2a: 63a9 s32i.n a10, a3, 24 -40005b2c: 73b9 s32i.n a11, a3, 28 -40005b2e: 4080f0 rotw -1 -40005b31: 41e320 srli a14, a2, 3 -40005b34: 408030 rotw 3 -40005b37: ffe0c6 j 40005abe <_XX_xtos_exc_unk5a80+0x3e> -40005b3a: 100000 and a0, a0, a0 -40005b3d: 204080 or a4, a0, a8 -40005b40: 0348 l32i.n a4, a3, 0 -40005b42: 401200 ssl a2 -40005b45: 120c movi.n a2, 1 -40005b47: a12200 sll a2, a2 -40005b4a: 134920 wsr.windowstart a2 -40005b4d: 002010 rsync -40005b50: 020c movi.n a2, 0 -40005b52: f00d ret.n -40005b54: 120c movi.n a2, 1 -40005b56: f00d ret.n -40005b58: 22f000 orb b15, b0, b0 -40005b5b: c22211 l32r a1, 3fff63e4 <_start-0x9c1c> -40005b5e: 483001 l32r a0, 3ffd7c20 <_start-0x283e0> -40005b61: e2f703 excw -40005b64: 0b0a add.n a0, a11, a0 -40005b66: 22f033 excw -40005b69: 62f711 l32r a1, 3ffde748 <_start-0x218b8> -40005b6c: 3030f7 bltu a0, a15, 40005ba0 <_XX_xtos_exc_unk5b94+0xc> -40005b6f: 130034 excw -40005b72: 320040 orbc b0, b0, b4 -40005b75: 223011 l32r a1, 3ffce438 <_start-0x31bc8> -40005b78: 202081 l32r a8, 3ffcdbf8 <_start-0x32408> -40005b7b: 4920f4 mula.da.hl.ldinc m2, a0, m0, a15 -40005b7e: 033013 excw -40005b81: 022c03 excw -40005b84: c03230 sub a3, a2, a3 -40005b87: 134830 wsr.windowbase a3 -40005b8a: 002010 rsync -40005b8d: 220c movi.n a2, 2 -40005b8f: f00d ret.n -40005b91: 000000 ill - -40005b94 <_XX_xtos_exc_unk5b94>: -40005b94: 002136 entry a1, 16 -40005b97: eafd61 l32r a6, 4000078c <_c_0x7fffffff+0xc> -40005b9a: 03e650 rsr.ps a5 -40005b9d: 004d mov.n a4, a0 -40005b9f: 102560 and a2, a5, a6 -40005ba2: 223b addi.n a2, a2, 3 -40005ba4: 13e620 wsr.ps a2 -40005ba7: 002010 rsync -40005baa: ffed45 call0 40005a80 <_XX_xtos_exc_unk5a80> -40005bad: 040d mov.n a0, a4 -40005baf: 13e650 wsr.ps a5 -40005bb2: 002010 rsync -40005bb5: f01d retw.n - ... - -40005bb8 <strcmp>: -40005bb8: 002136 entry a1, 16 -40005bbb: 000282 l8ui a8, a2, 0 -40005bbe: 000392 l8ui a9, a3, 0 -40005bc1: 3a0c movi.n a10, 3 -40005bc3: 529897 bne a8, a9, 40005c19 <strcmp+0x61> -40005bc6: 20b230 or a11, a2, a3 -40005bc9: 530ba7 bnone a11, a10, 40005c20 <strcmp+0x68> -40005bcc: 30b230 xor a11, a2, a3 -40005bcf: 318ba7 bany a11, a10, 40005c04 <strcmp+0x4c> -40005bd2: 221b addi.n a2, a2, 1 -40005bd4: 0b2816 beqz a8, 40005c8a <strcmp+0xd2> -40005bd7: 331b addi.n a3, a3, 1 -40005bd9: 4302a7 bnone a2, a10, 40005c20 <strcmp+0x68> -40005bdc: 000282 l8ui a8, a2, 0 -40005bdf: 000392 l8ui a9, a3, 0 -40005be2: 221b addi.n a2, a2, 1 -40005be4: 319897 bne a8, a9, 40005c19 <strcmp+0x61> -40005be7: 09f816 beqz a8, 40005c8a <strcmp+0xd2> -40005bea: 331b addi.n a3, a3, 1 -40005bec: 3002a7 bnone a2, a10, 40005c20 <strcmp+0x68> -40005bef: 000282 l8ui a8, a2, 0 -40005bf2: 000392 l8ui a9, a3, 0 -40005bf5: 221b addi.n a2, a2, 1 -40005bf7: 1e9897 bne a8, a9, 40005c19 <strcmp+0x61> -40005bfa: 08c816 beqz a8, 40005c8a <strcmp+0xd2> -40005bfd: 331b addi.n a3, a3, 1 -40005bff: 000746 j 40005c20 <strcmp+0x68> -40005c02: 0c0000 excw -40005c05: 7608 l32i.n a0, a6, 28 -40005c07: 0f88 l32i.n a8, a15, 0 -40005c09: 000282 l8ui a8, a2, 0 -40005c0c: 000392 l8ui a9, a3, 0 -40005c0f: 221b addi.n a2, a2, 1 -40005c11: 049897 bne a8, a9, 40005c19 <strcmp+0x61> -40005c14: 331b addi.n a3, a3, 1 -40005c16: fff816 beqz a8, 40005c19 <strcmp+0x61> -40005c19: c02890 sub a2, a8, a9 -40005c1c: f01d retw.n -40005c1e: 410000 srli a0, a0, 0 -40005c21: eadc bnez.n a10, 40005c43 <strcmp+0x8b> -40005c23: eadf71 l32r a7, 400007a0 <_c_0x00ff0000+0x8> -40005c26: 238076 loop a0, 40005c4d <strcmp+0x95> -40005c29: 0288 l32i.n a8, a2, 0 -40005c2b: 0398 l32i.n a9, a3, 0 -40005c2d: 1158f0 slli a5, a8, 1 -40005c30: 5c9897 bne a8, a9, 40005c90 <strcmp+0xd8> -40005c33: 209850 or a9, a8, a5 -40005c36: 1ac977 bnall a9, a7, 40005c54 <strcmp+0x9c> -40005c39: 1288 l32i.n a8, a2, 4 -40005c3b: 1398 l32i.n a9, a3, 4 -40005c3d: 1158f0 slli a5, a8, 1 -40005c40: 4c9897 bne a8, a9, 40005c90 <strcmp+0xd8> -40005c43: 209850 or a9, a8, a5 -40005c46: 06c977 bnall a9, a7, 40005c50 <strcmp+0x98> -40005c49: 228b addi.n a2, a2, 8 -40005c4b: 338b addi.n a3, a3, 8 -40005c4d: fff546 j 40005c26 <strcmp+0x6e> -40005c50: 224b addi.n a2, a2, 4 -40005c52: 334b addi.n a3, a3, 4 -40005c54: 320847 bnone a8, a4, 40005c8a <strcmp+0xd2> -40005c57: eacf51 l32r a5, 40000794 <_c_0x7fffffff+0x14> -40005c5a: eacf61 l32r a6, 40000798 <_c_0x00ff0000> -40005c5d: 290857 bnone a8, a5, 40005c8a <strcmp+0xd2> -40005c60: eacf71 l32r a7, 4000079c <_c_0x00ff0000+0x4> -40005c63: 230867 bnone a8, a6, 40005c8a <strcmp+0xd2> -40005c66: 200877 bnone a8, a7, 40005c8a <strcmp+0xd2> -40005c69: 224b addi.n a2, a2, 4 -40005c6b: 334b addi.n a3, a3, 4 -40005c6d: 198076 loop a0, 40005c8a <strcmp+0xd2> -40005c70: 0288 l32i.n a8, a2, 0 -40005c72: 0398 l32i.n a9, a3, 0 -40005c74: 224b addi.n a2, a2, 4 -40005c76: 169897 bne a8, a9, 40005c90 <strcmp+0xd8> -40005c79: 0d0847 bnone a8, a4, 40005c8a <strcmp+0xd2> -40005c7c: 0a0857 bnone a8, a5, 40005c8a <strcmp+0xd2> -40005c7f: 070867 bnone a8, a6, 40005c8a <strcmp+0xd2> -40005c82: 040877 bnone a8, a7, 40005c8a <strcmp+0xd2> -40005c85: 334b addi.n a3, a3, 4 -40005c87: fff886 j 40005c6d <strcmp+0xb5> -40005c8a: 020c movi.n a2, 0 -40005c8c: f01d retw.n -40005c8e: 900000 addx2 a0, a0, a0 -40005c91: 3028 l32i.n a2, a0, 12 -40005c93: 218247 bany a2, a4, 40005cb8 <strcmp+0x100> -40005c96: eabf51 l32r a5, 40000794 <_c_0x7fffffff+0x14> -40005c99: ed0847 bnone a8, a4, 40005c8a <strcmp+0xd2> -40005c9c: 248257 bany a2, a5, 40005cc4 <strcmp+0x10c> -40005c9f: eabe61 l32r a6, 40000798 <_c_0x00ff0000> -40005ca2: e40857 bnone a8, a5, 40005c8a <strcmp+0xd2> -40005ca5: 278267 bany a2, a6, 40005cd0 <strcmp+0x118> -40005ca8: de0867 bnone a8, a6, 40005c8a <strcmp+0xd2> -40005cab: 75a880 extui a10, a8, 24, 8 -40005cae: 75b890 extui a11, a9, 24, 8 -40005cb1: c02ab0 sub a2, a10, a11 -40005cb4: f01d retw.n -40005cb6: 800000 add a0, a0, a0 -40005cb9: 9074a0 addx2 a7, a4, a10 -40005cbc: b074b0 addx8 a7, a4, a11 -40005cbf: c02a add.n a12, a0, a2 -40005cc1: f01d retw.n -40005cc3: a88000 excw -40005cc6: b89074 excw -40005cc9: 2ab074 excw -40005ccc: f01dc0 subx8 a1, a13, a12 -40005ccf: a08000 addx4 a8, a0, a0 -40005cd2: b09075 call12 3ffb65d8 <_start-0x49a28> -40005cd5: 2ab075 call12 400307dc <__bss_start+0x207dc> -40005cd8: f01dc0 subx8 a1, a13, a12 - ... - -40005cdc <strcpy>: -40005cdc: 002136 entry a1, 16 -40005cdf: 20a220 or a10, a2, a2 -40005ce2: ffa042 movi a4, 255 -40005ce5: eaab51 l32r a5, 40000794 <_c_0x7fffffff+0x14> -40005ce8: eaac61 l32r a6, 40000798 <_c_0x00ff0000> -40005ceb: eaac71 l32r a7, 4000079c <_c_0x00ff0000+0x4> -40005cee: 0be307 bbsi a3, 0, 40005cfd <strcpy+0x21> -40005cf1: 17e317 bbsi a3, 1, 40005d0c <strcpy+0x30> -40005cf4: 380c movi.n a8, 3 -40005cf6: 2a0a87 bnone a10, a8, 40005d24 <strcpy+0x48> -40005cf9: 0016c6 j 40005d58 <strcpy+0x7c> -40005cfc: 038200 excw -40005cff: 331b00 clamps a1, a11, 7 -40005d02: 004a82 s8i a8, a10, 0 -40005d05: 889c beqz.n a8, 40005d21 <strcpy+0x45> -40005d07: aa1b addi.n a10, a10, 1 -40005d09: e76317 bbci a3, 1, 40005cf4 <strcpy+0x18> -40005d0c: 000382 l8ui a8, a3, 0 -40005d0f: 004a82 s8i a8, a10, 0 -40005d12: b88c beqz.n a8, 40005d21 <strcpy+0x45> -40005d14: 010382 l8ui a8, a3, 1 -40005d17: 332b addi.n a3, a3, 2 -40005d19: 014a82 s8i a8, a10, 1 -40005d1c: aa2b addi.n a10, a10, 2 -40005d1e: fd2856 bnez a8, 40005cf4 <strcpy+0x18> -40005d21: f01d retw.n -40005d23: 080c00 excw -40005d26: 138876 loop a8, 40005d3d <strcpy+0x61> -40005d29: 0388 l32i.n a8, a3, 0 -40005d2b: 334b addi.n a3, a3, 4 -40005d2d: 0f0847 bnone a8, a4, 40005d40 <strcpy+0x64> -40005d30: 110857 bnone a8, a5, 40005d45 <strcpy+0x69> -40005d33: 150867 bnone a8, a6, 40005d4c <strcpy+0x70> -40005d36: 0a89 s32i.n a8, a10, 0 -40005d38: 010877 bnone a8, a7, 40005d3d <strcpy+0x61> -40005d3b: aa4b addi.n a10, a10, 4 -40005d3d: f01d retw.n -40005d3f: 4a8200 depbits a0, a2, 4, 9 -40005d42: f01d00 subx8 a1, a13, a0 -40005d45: 005a82 s16i a8, a10, 0 -40005d48: f01d retw.n -40005d4a: 820000 mull a0, a0, a0 -40005d4d: 005a add.n a0, a0, a5 -40005d4f: 080c movi.n a8, 0 -40005d51: 024a82 s8i a8, a10, 2 -40005d54: f01d retw.n -40005d56: 0c0000 excw -40005d59: 7608 l32i.n a0, a6, 28 -40005d5b: 0c88 l32i.n a8, a12, 0 -40005d5d: 000382 l8ui a8, a3, 0 -40005d60: 331b addi.n a3, a3, 1 -40005d62: 004a82 s8i a8, a10, 0 -40005d65: aa1b addi.n a10, a10, 1 -40005d67: fff816 beqz a8, 40005d6a <strcpy+0x8e> -40005d6a: f01d retw.n - -40005d6c <strlen>: -40005d6c: 002136 entry a1, 16 -40005d6f: fcc232 addi a3, a2, -4 -40005d72: ffa042 movi a4, 255 -40005d75: ea8751 l32r a5, 40000794 <_c_0x7fffffff+0x14> -40005d78: ea8861 l32r a6, 40000798 <_c_0x00ff0000> -40005d7b: ea8871 l32r a7, 4000079c <_c_0x00ff0000+0x4> -40005d7e: 06e207 bbsi a2, 0, 40005d88 <strlen+0x1c> -40005d81: 0de217 bbsi a2, 1, 40005d92 <strlen+0x26> -40005d84: 000706 j 40005da4 <strlen+0x38> -40005d87: 038200 excw -40005d8a: 331b04 excw -40005d8d: 88ac beqz.n a8, 40005db9 <strlen+0x4d> -40005d8f: 116317 bbci a3, 1, 40005da4 <strlen+0x38> -40005d92: 332b addi.n a3, a3, 2 -40005d94: 0388 l32i.n a8, a3, 0 -40005d96: 2e0867 bnone a8, a6, 40005dc8 <strlen+0x5c> -40005d99: 078877 bany a8, a7, 40005da4 <strlen+0x38> -40005d9c: 333b addi.n a3, a3, 3 -40005d9e: c02320 sub a2, a3, a2 -40005da1: f01d retw.n -40005da3: 080c00 excw -40005da6: 0f8876 loop a8, 40005db9 <strlen+0x4d> -40005da9: 1388 l32i.n a8, a3, 4 -40005dab: 334b addi.n a3, a3, 4 -40005dad: 0a0847 bnone a8, a4, 40005dbb <strlen+0x4f> -40005db0: 0c0857 bnone a8, a5, 40005dc0 <strlen+0x54> -40005db3: 110867 bnone a8, a6, 40005dc8 <strlen+0x5c> -40005db6: ff0877 bnone a8, a7, 40005db9 <strlen+0x4d> -40005db9: 333b addi.n a3, a3, 3 -40005dbb: c02320 sub a2, a3, a2 -40005dbe: f01d retw.n -40005dc0: 331b addi.n a3, a3, 1 -40005dc2: c02320 sub a2, a3, a2 -40005dc5: f01d retw.n -40005dc7: 332b00 clamps a2, a11, 7 -40005dca: c02320 sub a2, a3, a2 -40005dcd: f01d retw.n - ... - -40005dd0 <strncmp>: -40005dd0: 004136 entry a1, 32 -40005dd3: a4bc beqz.n a4, 40005e11 <strncmp+0x41> -40005dd5: 205320 or a5, a3, a2 -40005dd8: 145050 extui a5, a5, 0, 2 -40005ddb: 041516 beqz a5, 40005e20 <strncmp+0x50> -40005dde: 000272 l8ui a7, a2, 0 -40005de1: 000382 l8ui a8, a3, 0 -40005de4: 049d mov.n a9, a4 -40005de6: 440b addi.n a4, a4, -1 -40005de8: 09ac beqz.n a9, 40005e0c <strncmp+0x3c> -40005dea: 1e9787 bne a7, a8, 40005e0c <strncmp+0x3c> -40005ded: 168076 loop a0, 40005e07 <strncmp+0x37> -40005df0: 046d mov.n a6, a4 -40005df2: b49c beqz.n a4, 40005e11 <strncmp+0x41> -40005df4: 979c beqz.n a7, 40005e11 <strncmp+0x41> -40005df6: 440b addi.n a4, a4, -1 -40005df8: 331b addi.n a3, a3, 1 -40005dfa: 221b addi.n a2, a2, 1 -40005dfc: 569c beqz.n a6, 40005e15 <strncmp+0x45> -40005dfe: 000272 l8ui a7, a2, 0 -40005e01: 000382 l8ui a8, a3, 0 -40005e04: 049877 bne a8, a7, 40005e0c <strncmp+0x3c> -40005e07: fff886 j 40005ded <strncmp+0x1d> -40005e0a: 800000 add a0, a0, a0 -40005e0d: 1dc027 bnall a0, a2, 40005e2e <strncmp+0x5e> -40005e10: 020cf0 andb b0, b12, b15 -40005e13: f01d retw.n -40005e15: 000352 l8ui a5, a3, 0 -40005e18: 000222 l8ui a2, a2, 0 -40005e1b: c02250 sub a2, a2, a5 -40005e1e: f01d retw.n -40005e20: ba44b6 bltui a4, 4, 40005dde <strncmp+0xe> -40005e23: 0278 l32i.n a7, a2, 0 -40005e25: 002362 l32i a6, a3, 0 -40005e28: b29677 bne a6, a7, 40005dde <strncmp+0xe> -40005e2b: ea5e91 l32r a9, 400007a4 <_c_0x00ff0000+0xc> -40005e2e: ffafa2 movi a10, -1 -40005e31: ea5d81 l32r a8, 400007a8 <_c_0x00ff0000+0x10> -40005e34: fcc442 addi a4, a4, -4 -40005e37: fd6416 beqz a4, 40005e11 <strncmp+0x41> -40005e3a: 30c7a0 xor a12, a7, a10 -40005e3d: b78a add.n a11, a7, a8 -40005e3f: 10bbc0 and a11, a11, a12 -40005e42: cb89b7 bany a9, a11, 40005e11 <strncmp+0x41> -40005e45: 334b addi.n a3, a3, 4 -40005e47: 224b addi.n a2, a2, 4 -40005e49: 9144b6 bltui a4, 4, 40005dde <strncmp+0xe> -40005e4c: 0278 l32i.n a7, a2, 0 -40005e4e: 03d8 l32i.n a13, a3, 0 -40005e50: e01d77 beq a13, a7, 40005e34 <strncmp+0x64> -40005e53: ffe1c6 j 40005dde <strncmp+0xe> -40005e56: 820000 mull a0, a0, a0 -40005e59: 1b0003 excw -40005e5c: 4a8233 excw -40005e5f: 440b00 extui a0, a0, 11, 5 -40005e62: 74ac beqz.n a4, 40005e8d <strncmp+0xbd> -40005e64: aa1b addi.n a10, a10, 1 -40005e66: 048816 beqz a8, 40005eb2 <strncpy+0x22> -40005e69: 3d6317 bbci a3, 1, 40005eaa <strncpy+0x1a> -40005e6c: 000382 l8ui a8, a3, 0 -40005e6f: 440b addi.n a4, a4, -1 -40005e71: 004a82 s8i a8, a10, 0 -40005e74: 549c beqz.n a4, 40005e8d <strncmp+0xbd> -40005e76: aa1b addi.n a10, a10, 1 -40005e78: 68bc beqz.n a8, 40005eb2 <strncpy+0x22> -40005e7a: 010382 l8ui a8, a3, 1 -40005e7d: 332b addi.n a3, a3, 2 -40005e7f: 004a82 s8i a8, a10, 0 -40005e82: 440b addi.n a4, a4, -1 -40005e84: 548c beqz.n a4, 40005e8d <strncmp+0xbd> -40005e86: aa1b addi.n a10, a10, 1 -40005e88: e8dc bnez.n a8, 40005eaa <strncpy+0x1a> -40005e8a: 000906 j 40005eb2 <strncpy+0x22> -40005e8d: f01d retw.n - ... - -40005e90 <strncpy>: -40005e90: 002136 entry a1, 16 -40005e93: 02ad mov.n a10, a2 -40005e95: ff4416 beqz a4, 40005e8d <strncmp+0xbd> -40005e98: ffa0b2 movi a11, 255 -40005e9b: ea3e51 l32r a5, 40000794 <_c_0x7fffffff+0x14> -40005e9e: ea3e61 l32r a6, 40000798 <_c_0x00ff0000> -40005ea1: ea3e71 l32r a7, 4000079c <_c_0x00ff0000+0x4> -40005ea4: b0e307 bbsi a3, 0, 40005e58 <strncmp+0x88> -40005ea7: c1e317 bbsi a3, 1, 40005e6c <strncmp+0x9c> -40005eaa: 380c movi.n a8, 3 -40005eac: 540a87 bnone a10, a8, 40005f04 <strncpy+0x74> -40005eaf: 002746 j 40005f50 <strncpy+0xc0> -40005eb2: 090c movi.n a9, 0 -40005eb4: 28ea07 bbsi a10, 0, 40005ee0 <strncpy+0x50> -40005eb7: 32ea17 bbsi a10, 1, 40005eed <strncpy+0x5d> -40005eba: 1344a6 blti a4, 4, 40005ed1 <strncpy+0x41> -40005ebd: 218240 srai a8, a4, 2 -40005ec0: f03d nop.n -40005ec2: 038876 loop a8, 40005ec9 <strncpy+0x39> -40005ec5: 0a99 s32i.n a9, a10, 0 -40005ec7: aa4b addi.n a10, a10, 4 -40005ec9: 1188e0 slli a8, a8, 2 -40005ecc: c04480 sub a4, a4, a8 -40005ecf: 948c beqz.n a4, 40005edc <strncpy+0x4c> -40005ed1: 004a92 s8i a9, a10, 0 -40005ed4: 440b addi.n a4, a4, -1 -40005ed6: 01caa2 addi a10, a10, 1 -40005ed9: ff4456 bnez a4, 40005ed1 <strncpy+0x41> -40005edc: f01d retw.n -40005ede: 920000 excw -40005ee1: 004a add.n a0, a0, a4 -40005ee3: 440b addi.n a4, a4, -1 -40005ee5: ff3416 beqz a4, 40005edc <strncpy+0x4c> -40005ee8: aa1b addi.n a10, a10, 1 -40005eea: cc6a17 bbci a10, 1, 40005eba <strncpy+0x2a> -40005eed: 004a92 s8i a9, a10, 0 -40005ef0: 440b addi.n a4, a4, -1 -40005ef2: fe6416 beqz a4, 40005edc <strncpy+0x4c> -40005ef5: 014a92 s8i a9, a10, 1 -40005ef8: 440b addi.n a4, a4, -1 -40005efa: fde416 beqz a4, 40005edc <strncpy+0x4c> -40005efd: aa2b addi.n a10, a10, 2 -40005eff: ffedc6 j 40005eba <strncpy+0x2a> -40005f02: 0c0000 excw -40005f05: 7608 l32i.n a0, a6, 28 -40005f07: 1988 l32i.n a8, a9, 4 -40005f09: 4354a6 blti a4, 5, 40005f50 <strncpy+0xc0> -40005f0c: 0388 l32i.n a8, a3, 0 -40005f0e: 334b addi.n a3, a3, 4 -40005f10: 1408b7 bnone a8, a11, 40005f28 <strncpy+0x98> -40005f13: 1d0857 bnone a8, a5, 40005f34 <strncpy+0xa4> -40005f16: 260867 bnone a8, a6, 40005f40 <strncpy+0xb0> -40005f19: 0a89 s32i.n a8, a10, 0 -40005f1b: fcc442 addi a4, a4, -4 -40005f1e: aa4b addi.n a10, a10, 4 -40005f20: 8e0877 bnone a8, a7, 40005eb2 <strncpy+0x22> -40005f23: ffe2c6 j 40005eb2 <strncpy+0x22> -40005f26: 820000 mull a0, a0, a0 -40005f29: 004a add.n a0, a0, a4 -40005f2b: 440b addi.n a4, a4, -1 -40005f2d: aa1b addi.n a10, a10, 1 -40005f2f: ffdfc6 j 40005eb2 <strncpy+0x22> -40005f32: 820000 mull a0, a0, a0 -40005f35: 005a add.n a0, a0, a5 -40005f37: fec442 addi a4, a4, -2 -40005f3a: aa2b addi.n a10, a10, 2 -40005f3c: ffdc86 j 40005eb2 <strncpy+0x22> -40005f3f: 5a8200 depbits a0, a2, 5, 9 -40005f42: 080c00 excw -40005f45: 024a82 s8i a8, a10, 2 -40005f48: fdc442 addi a4, a4, -3 -40005f4b: aa3b addi.n a10, a10, 3 -40005f4d: ffd846 j 40005eb2 <strncpy+0x22> -40005f50: 080c movi.n a8, 0 -40005f52: 108876 loop a8, 40005f66 <strncpy+0xd6> -40005f55: 000382 l8ui a8, a3, 0 -40005f58: 331b addi.n a3, a3, 1 -40005f5a: 004a82 s8i a8, a10, 0 -40005f5d: 440b addi.n a4, a4, -1 -40005f5f: 648c beqz.n a4, 40005f69 <strncpy+0xd9> -40005f61: aa1b addi.n a10, a10, 1 -40005f63: fff816 beqz a8, 40005f66 <strncpy+0xd6> -40005f66: ffd206 j 40005eb2 <strncpy+0x22> -40005f69: f01d retw.n - ... - -40005f6c <strstr>: -40005f6c: 090136 entry a1, 0x480 -40005f6f: 50c172 addi a7, a1, 80 -40005f72: 025d mov.n a5, a2 -40005f74: 038d mov.n a8, a3 -40005f76: 20c220 or a12, a2, a2 -40005f79: 0003b2 l8ui a11, a3, 0 -40005f7c: 0002e2 l8ui a14, a2, 0 -40005f7f: 209bb0 or a9, a11, a11 -40005f82: eebc beqz.n a14, 40005fc4 <strstr+0x58> -40005f84: cbac beqz.n a11, 40005fb4 <strstr+0x48> -40005f86: 01a0a2 movi a10, 1 -40005f89: 228076 loop a0, 40005faf <strstr+0x43> -40005f8c: cc1b addi.n a12, a12, 1 -40005f8e: 1d0c movi.n a13, 1 -40005f90: 74f0e0 extui a15, a14, 0, 8 -40005f93: 040c movi.n a4, 0 -40005f95: 74e090 extui a14, a9, 0, 8 -40005f98: c0eef0 sub a14, a14, a15 -40005f9b: 834de0 moveqz a4, a13, a14 -40005f9e: 10aa40 and a10, a10, a4 -40005fa1: 000ce2 l8ui a14, a12, 0 -40005fa4: 481b addi.n a4, a8, 1 -40005fa6: 048d mov.n a8, a4 -40005fa8: ce8c beqz.n a14, 40005fb8 <strstr+0x4c> -40005faa: 000492 l8ui a9, a4, 0 -40005fad: 198c beqz.n a9, 40005fb2 <strstr+0x46> -40005faf: fff586 j 40005f89 <strstr+0x1d> -40005fb2: 4a9c beqz.n a10, 40005fca <strstr+0x5e> -40005fb4: 052d mov.n a2, a5 -40005fb6: f01d retw.n -40005fb8: 000482 l8ui a8, a4, 0 -40005fbb: ff3816 beqz a8, 40005fb2 <strstr+0x46> -40005fbe: 020c movi.n a2, 0 -40005fc0: f01d retw.n -40005fc2: 560000 excw -40005fc5: ff6b addi.n a15, a15, 6 -40005fc7: fffa46 j 40005fb4 <strstr+0x48> -40005fca: 01c5a2 addi a10, a5, 1 -40005fcd: 005aa5 call8 40006578 <strstr+0x60c> -40005fd0: 202aa0 or a2, a10, a10 -40005fd3: 271a16 beqz a10, 40006248 <strstr+0x2dc> -40005fd6: c04430 sub a4, a4, a3 -40005fd9: ffc492 addi a9, a4, -1 -40005fdc: 268916 beqz a9, 40006248 <strstr+0x2dc> -40005fdf: 845a add.n a8, a4, a5 -40005fe1: 0538a7 bltu a8, a10, 40005fea <strstr+0x7e> -40005fe4: c088a0 sub a8, a8, a10 -40005fe7: 000046 j 40005fec <strstr+0x80> -40005fea: 180c movi.n a8, 1 -40005fec: 18c4f6 bgeui a4, 32, 40006008 <strstr+0x9c> -40005fef: 085d mov.n a5, a8 -40005ff1: 0224f6 bgeui a4, 2, 40005ff7 <strstr+0x8b> -40005ff4: 002f06 j 400060b4 <strstr+0x148> -40005ff7: 190c movi.n a9, 1 -40005ff9: 180c movi.n a8, 1 -40005ffb: 1f0c movi.n a15, 1 -40005ffd: 0a0c movi.n a10, 0 -40005fff: f67c movi.n a6, -1 -40006001: 5159 s32i.n a5, a1, 20 -40006003: 0008c6 j 4000602a <strstr+0xbe> -40006006: 820000 mull a0, a0, a0 -40006009: f61061 l32r a6, 4000384c <_X_recv_packet+0x10> -4000600c: 860224 excw -4000600f: 0c0067 bnone a0, a6, 4000601f <strstr+0xb3> -40006012: 0c19 s32i.n a1, a12, 0 -40006014: 0c18 l32i.n a1, a12, 0 -40006016: 1f .byte 0x1f -40006017: 0a0c movi.n a10, 0 -40006019: f67c movi.n a6, -1 -4000601b: 0042c6 j 4000612a <strstr+0x1be> -4000601e: 09ad mov.n a10, a9 -40006020: c0f960 sub a15, a9, a6 -40006023: 180c movi.n a8, 1 -40006025: 98aa add.n a9, a8, a10 -40006027: 2db947 bgeu a9, a4, 40006058 <strstr+0xec> -4000602a: b86a add.n a11, a8, a6 -4000602c: c93a add.n a12, a9, a3 -4000602e: 000cc2 l8ui a12, a12, 0 -40006031: b3ba add.n a11, a3, a11 -40006033: 000bb2 l8ui a11, a11, 0 -40006036: e43cb7 bltu a12, a11, 4000601e <strstr+0xb2> -40006039: 0f9cb7 bne a12, a11, 4000604c <strstr+0xe0> -4000603c: 0418f7 beq a8, a15, 40006044 <strstr+0xd8> -4000603f: 881b addi.n a8, a8, 1 -40006041: fff806 j 40006025 <strstr+0xb9> -40006044: afaa add.n a10, a15, a10 -40006046: 180c movi.n a8, 1 -40006048: fff646 j 40006025 <strstr+0xb9> -4000604b: 180c00 excw -4000604e: 0a6d mov.n a6, a10 -40006050: 1f0c movi.n a15, 1 -40006052: aa1b addi.n a10, a10, 1 -40006054: fff346 j 40006025 <strstr+0xb9> -40006057: 190c00 excw -4000605a: f57c movi.n a5, -1 -4000605c: 180c movi.n a8, 1 -4000605e: 11f9 s32i.n a15, a1, 4 -40006060: 0a0c movi.n a10, 0 -40006062: 1f0c movi.n a15, 1 -40006064: 000346 j 40006075 <strstr+0x109> -40006067: ad0000 excw -4000606a: 5009 s32i.n a0, a0, 20 -4000606c: c0f9 s32i.n a15, a0, 48 -4000606e: 180c movi.n a8, 1 -40006070: 98aa add.n a9, a8, a10 -40006072: 2eb947 bgeu a9, a4, 400060a4 <strstr+0x138> -40006075: b58a add.n a11, a5, a8 -40006077: c93a add.n a12, a9, a3 -40006079: 000cc2 l8ui a12, a12, 0 -4000607c: b3ba add.n a11, a3, a11 -4000607e: 000bb2 l8ui a11, a11, 0 -40006081: e43bc7 bltu a11, a12, 40006069 <strstr+0xfd> -40006084: 109cb7 bne a12, a11, 40006098 <strstr+0x12c> -40006087: 0518f7 beq a8, a15, 40006090 <strstr+0x124> -4000608a: 881b addi.n a8, a8, 1 -4000608c: fff806 j 40006070 <strstr+0x104> -4000608f: afaa00 excw -40006092: 180c movi.n a8, 1 -40006094: fff606 j 40006070 <strstr+0x104> -40006097: 180c00 excw -4000609a: 0a5d mov.n a5, a10 -4000609c: 1f0c movi.n a15, 1 -4000609e: aa1b addi.n a10, a10, 1 -400060a0: fff306 j 40006070 <strstr+0x104> -400060a3: 961b00 excw -400060a6: c51b addi.n a12, a5, 1 -400060a8: 5158 l32i.n a5, a1, 20 -400060aa: 0abc97 bgeu a12, a9, 400060b8 <strstr+0x14c> -400060ad: 1168 l32i.n a6, a1, 4 -400060af: 09cd mov.n a12, a9 -400060b1: 000146 j 400060ba <strstr+0x14e> -400060b4: 0c0c movi.n a12, 0 -400060b6: 1f0c movi.n a15, 1 -400060b8: 0f6d mov.n a6, a15 -400060ba: 81c9 s32i.n a12, a1, 32 -400060bc: 03ad mov.n a10, a3 -400060be: b36a add.n a11, a3, a6 -400060c0: 0082a5 call8 400068ec <memcmp> -400060c3: 5159 s32i.n a5, a1, 20 -400060c5: 213a16 beqz a10, 400062dc <strstr+0x370> -400060c8: 81e8 l32i.n a14, a1, 32 -400060ca: 6e0b addi.n a6, a14, -1 -400060cc: c0f4e0 sub a15, a4, a14 -400060cf: 6169 s32i.n a6, a1, 24 -400060d1: 00a062 movi a6, 0 -400060d4: 73eef0 maxu a14, a14, a15 -400060d7: 21e9 s32i.n a14, a1, 8 -400060d9: a25a add.n a10, a2, a5 -400060db: c46a add.n a12, a4, a6 -400060dd: 00a0b2 movi a11, 0 -400060e0: 0761c2 s32i a12, a1, 28 -400060e3: c0cc50 sub a12, a12, a5 -400060e6: 0041a5 call8 40006500 <strstr+0x594> -400060e9: 15da56 bnez a10, 4000624a <strstr+0x2de> -400060ec: 71d8 l32i.n a13, a1, 28 -400060ee: 81e8 l32i.n a14, a1, 32 -400060f0: 0d5d mov.n a5, a13 -400060f2: 154d16 beqz a13, 4000624a <strstr+0x2de> -400060f5: 0e8d mov.n a8, a14 -400060f7: 11be47 bgeu a14, a4, 4000610c <strstr+0x1a0> -400060fa: fe6a add.n a15, a14, a6 -400060fc: 9e3a add.n a9, a14, a3 -400060fe: 000992 l8ui a9, a9, 0 -40006101: f2fa add.n a15, a2, a15 -40006103: 000ff2 l8ui a15, a15, 0 -40006106: c0ff90 sub a15, a15, a9 -40006109: 154f16 beqz a15, 40006261 <strstr+0x2f5> -4000610c: 023847 bltu a8, a4, 40006112 <strstr+0x1a6> -4000610f: 0054c6 j 40006266 <strstr+0x2fa> -40006112: 81a8 l32i.n a10, a1, 32 -40006114: c0a8a0 sub a10, a8, a10 -40006117: aa1b addi.n a10, a10, 1 -40006119: 66aa add.n a6, a6, a10 -4000611b: ffee86 j 400060d9 <strstr+0x16d> -4000611e: 09ad mov.n a10, a9 -40006120: c0f960 sub a15, a9, a6 -40006123: 180c movi.n a8, 1 -40006125: 98aa add.n a9, a8, a10 -40006127: 2db947 bgeu a9, a4, 40006158 <strstr+0x1ec> -4000612a: b86a add.n a11, a8, a6 -4000612c: c93a add.n a12, a9, a3 -4000612e: 000cc2 l8ui a12, a12, 0 -40006131: b3ba add.n a11, a3, a11 -40006133: 000bb2 l8ui a11, a11, 0 -40006136: e43cb7 bltu a12, a11, 4000611e <strstr+0x1b2> -40006139: 0f9cb7 bne a12, a11, 4000614c <strstr+0x1e0> -4000613c: 0418f7 beq a8, a15, 40006144 <strstr+0x1d8> -4000613f: 881b addi.n a8, a8, 1 -40006141: fff806 j 40006125 <strstr+0x1b9> -40006144: afaa add.n a10, a15, a10 -40006146: 180c movi.n a8, 1 -40006148: fff646 j 40006125 <strstr+0x1b9> -4000614b: 180c00 excw -4000614e: 0a6d mov.n a6, a10 -40006150: 1f0c movi.n a15, 1 -40006152: aa1b addi.n a10, a10, 1 -40006154: fff346 j 40006125 <strstr+0x1b9> -40006157: 190c00 excw -4000615a: f57c movi.n a5, -1 -4000615c: 180c movi.n a8, 1 -4000615e: f1f9 s32i.n a15, a1, 60 -40006160: 0a0c movi.n a10, 0 -40006162: 1f0c movi.n a15, 1 -40006164: 000346 j 40006175 <strstr+0x209> -40006167: ad0000 excw -4000616a: 5009 s32i.n a0, a0, 20 -4000616c: c0f9 s32i.n a15, a0, 48 -4000616e: 180c movi.n a8, 1 -40006170: 98aa add.n a9, a8, a10 -40006172: 2eb947 bgeu a9, a4, 400061a4 <strstr+0x238> -40006175: b58a add.n a11, a5, a8 -40006177: c93a add.n a12, a9, a3 -40006179: 000cc2 l8ui a12, a12, 0 -4000617c: b3ba add.n a11, a3, a11 -4000617e: 000bb2 l8ui a11, a11, 0 -40006181: e43bc7 bltu a11, a12, 40006169 <strstr+0x1fd> -40006184: 109cb7 bne a12, a11, 40006198 <strstr+0x22c> -40006187: 0518f7 beq a8, a15, 40006190 <strstr+0x224> -4000618a: 881b addi.n a8, a8, 1 -4000618c: fff806 j 40006170 <strstr+0x204> -4000618f: afaa00 excw -40006192: 180c movi.n a8, 1 -40006194: fff606 j 40006170 <strstr+0x204> -40006197: 180c00 excw -4000619a: 0a5d mov.n a5, a10 -4000619c: 1f0c movi.n a15, 1 -4000619e: aa1b addi.n a10, a10, 1 -400061a0: fff306 j 40006170 <strstr+0x204> -400061a3: 961b00 excw -400061a6: c51b addi.n a12, a5, 1 -400061a8: 08bc97 bgeu a12, a9, 400061b4 <strstr+0x248> -400061ab: 09ed mov.n a14, a9 -400061ad: 0001c6 j 400061b8 <strstr+0x24c> -400061b0: 0c0c movi.n a12, 0 -400061b2: 1f0c movi.n a15, 1 -400061b4: 0ced mov.n a14, a12 -400061b6: f1f9 s32i.n a15, a1, 60 -400061b8: 0a2c movi.n a10, 32 -400061ba: 10c762 addi a6, a7, 16 -400061bd: 068d mov.n a8, a6 -400061bf: 12aa76 loopgtz a10, 400061d5 <strstr+0x269> -400061c2: 0849 s32i.n a4, a8, 0 -400061c4: 1849 s32i.n a4, a8, 4 -400061c6: 2849 s32i.n a4, a8, 8 -400061c8: 3849 s32i.n a4, a8, 12 -400061ca: 4849 s32i.n a4, a8, 16 -400061cc: 5849 s32i.n a4, a8, 20 -400061ce: 6849 s32i.n a4, a8, 24 -400061d0: 7849 s32i.n a4, a8, 28 -400061d2: 20c882 addi a8, a8, 32 -400061d5: 080c movi.n a8, 0 -400061d7: a40b addi.n a10, a4, -1 -400061d9: e1a9 s32i.n a10, a1, 56 -400061db: 10a476 loopgtz a4, 400061ef <strstr+0x283> -400061de: 938a add.n a9, a3, a8 -400061e0: 000992 l8ui a9, a9, 0 -400061e3: 01c882 addi a8, a8, 1 -400061e6: a09960 addx4 a9, a9, a6 -400061e9: 0069a2 s32i a10, a9, 0 -400061ec: ffcaa2 addi a10, a10, -1 -400061ef: 0ecd mov.n a12, a14 -400061f1: d1e9 s32i.n a14, a1, 52 -400061f3: f1b8 l32i.n a11, a1, 60 -400061f5: 03ad mov.n a10, a3 -400061f7: b3ba add.n a11, a3, a11 -400061f9: 006f25 call8 400068ec <memcmp> -400061fc: 174a16 beqz a10, 40006374 <strstr+0x408> -400061ff: d1d8 l32i.n a13, a1, 52 -40006201: 050c movi.n a5, 0 -40006203: c0e4d0 sub a14, a4, a13 -40006206: 73ede0 maxu a14, a13, a14 -40006209: a1e9 s32i.n a14, a1, 40 -4000620b: dd0b addi.n a13, a13, -1 -4000620d: b1d9 s32i.n a13, a1, 44 -4000620f: 000686 j 4000622d <strstr+0x2c1> -40006212: c1f8 l32i.n a15, a1, 48 -40006214: 1061f2 s32i a15, a1, 64 -40006217: 9fac beqz.n a15, 40006244 <strstr+0x2d8> -40006219: 8092f0 add a9, a2, a15 -4000621c: ffd992 addmi a9, a9, 0xffffff00 -4000621f: ff0992 l8ui a9, a9, 255 -40006222: a09960 addx4 a9, a9, a6 -40006225: 0998 l32i.n a9, a9, 0 -40006227: 07a916 beqz a9, 400062a5 <strstr+0x339> -4000622a: 805950 add a5, a9, a5 -4000622d: 00a0b2 movi a11, 0 -40006230: 1021d2 l32i a13, a1, 64 -40006233: 80c450 add a12, a4, a5 -40006236: 0c61c2 s32i a12, a1, 48 -40006239: a2da add.n a10, a2, a13 -4000623b: c0ccd0 sub a12, a12, a13 -4000623e: 002c25 call8 40006500 <strstr+0x594> -40006241: fcda16 beqz a10, 40006212 <strstr+0x2a6> -40006244: 020c movi.n a2, 0 -40006246: f01d retw.n -40006248: f01d retw.n -4000624a: 020c movi.n a2, 0 -4000624c: f01d retw.n -4000624e: e86a add.n a14, a8, a6 -40006250: f38a add.n a15, a3, a8 -40006252: 000ff2 l8ui a15, a15, 0 -40006255: 80e2e0 add a14, a2, a14 -40006258: 000ee2 l8ui a14, a14, 0 -4000625b: c0eef0 sub a14, a14, a15 -4000625e: eaae56 bnez a14, 4000610c <strstr+0x1a0> -40006261: 881b addi.n a8, a8, 1 -40006263: e73847 bltu a8, a4, 4000624e <strstr+0x2e2> -40006266: 8198 l32i.n a9, a1, 32 -40006268: 6188 l32i.n a8, a1, 24 -4000626a: 69ac beqz.n a9, 40006294 <strstr+0x328> -4000626c: a86a add.n a10, a8, a6 -4000626e: b83a add.n a11, a8, a3 -40006270: 000bb2 l8ui a11, a11, 0 -40006273: 80a2a0 add a10, a2, a10 -40006276: 000aa2 l8ui a10, a10, 0 -40006279: 179ab7 bne a10, a11, 40006294 <strstr+0x328> -4000627c: 126162 s32i a6, a1, 72 -4000627f: 880b addi.n a8, a8, -1 -40006281: 4f0826 beqi a8, -1, 400062d4 <strstr+0x368> -40006284: c86a add.n a12, a8, a6 -40006286: d38a add.n a13, a3, a8 -40006288: 000dd2 l8ui a13, a13, 0 -4000628b: 80c2c0 add a12, a2, a12 -4000628e: 000cc2 l8ui a12, a12, 0 -40006291: e71cd7 beq a12, a13, 4000627c <strstr+0x310> -40006294: 126162 s32i a6, a1, 72 -40006297: 390826 beqi a8, -1, 400062d4 <strstr+0x368> -4000629a: 21e8 l32i.n a14, a1, 8 -4000629c: ee1b addi.n a14, a14, 1 -4000629e: 66ea add.n a6, a6, a14 -400062a0: ff8d46 j 400060d9 <strstr+0x16d> -400062a3: f80000 excw -400062a6: e198d1 l32r a13, 3fffe908 <_start-0x16f8> -400062a9: 0f8d mov.n a8, a15 -400062ab: 11bf97 bgeu a15, a9, 400062c0 <strstr+0x354> -400062ae: af5a add.n a10, a15, a5 -400062b0: bf3a add.n a11, a15, a3 -400062b2: 000bb2 l8ui a11, a11, 0 -400062b5: a2aa add.n a10, a2, a10 -400062b7: 000aa2 l8ui a10, a10, 0 -400062ba: c0aab0 sub a10, a10, a11 -400062bd: 145a16 beqz a10, 40006406 <strstr+0x49a> -400062c0: e1c8 l32i.n a12, a1, 56 -400062c2: 0238c7 bltu a8, a12, 400062c8 <strstr+0x35c> -400062c5: 005106 j 4000640d <strstr+0x4a1> -400062c8: d1d8 l32i.n a13, a1, 52 -400062ca: c0d8d0 sub a13, a8, a13 -400062cd: dd1b addi.n a13, a13, 1 -400062cf: 55da add.n a5, a5, a13 -400062d1: ffd606 j 4000622d <strstr+0x2c1> -400062d4: 1221e2 l32i a14, a1, 72 -400062d7: 22ea add.n a2, a2, a14 -400062d9: f01d retw.n -400062db: 714900 excw -400062de: 090c movi.n a9, 0 -400062e0: 8158 l32i.n a5, a1, 32 -400062e2: c0f460 sub a15, a4, a6 -400062e5: 31f9 s32i.n a15, a1, 12 -400062e7: 550b addi.n a5, a5, -1 -400062e9: 6159 s32i.n a5, a1, 24 -400062eb: 050c movi.n a5, 0 -400062ed: 00a0b2 movi a11, 0 -400062f0: 116192 s32i a9, a1, 68 -400062f3: 0521d2 l32i a13, a1, 20 -400062f6: 0721c2 l32i a12, a1, 28 -400062f9: a2da add.n a10, a2, a13 -400062fb: c0ccd0 sub a12, a12, a13 -400062fe: 002025 call8 40006500 <strstr+0x594> -40006301: 112192 l32i a9, a1, 68 -40006304: f42a56 bnez a10, 4000624a <strstr+0x2de> -40006307: 71e8 l32i.n a14, a1, 28 -40006309: 51e9 s32i.n a14, a1, 20 -4000630b: f3be16 beqz a14, 4000624a <strstr+0x2de> -4000630e: 8188 l32i.n a8, a1, 32 -40006310: 738890 maxu a8, a8, a9 -40006313: 2ab847 bgeu a8, a4, 40006341 <strstr+0x3d5> -40006316: a85a add.n a10, a8, a5 -40006318: b83a add.n a11, a8, a3 -4000631a: 000bb2 l8ui a11, a11, 0 -4000631d: a2aa add.n a10, a2, a10 -4000631f: 000aa2 l8ui a10, a10, 0 -40006322: c0aab0 sub a10, a10, a11 -40006325: 3a9c beqz.n a10, 4000633c <strstr+0x3d0> -40006327: 004746 j 40006448 <strstr+0x4dc> -4000632a: c85a add.n a12, a8, a5 -4000632c: d38a add.n a13, a3, a8 -4000632e: 000dd2 l8ui a13, a13, 0 -40006331: c2ca add.n a12, a2, a12 -40006333: 000cc2 l8ui a12, a12, 0 -40006336: c0ccd0 sub a12, a12, a13 -40006339: 10bc56 bnez a12, 40006448 <strstr+0x4dc> -4000633c: 881b addi.n a8, a8, 1 -4000633e: e83847 bltu a8, a4, 4000632a <strstr+0x3be> -40006341: 81e8 l32i.n a14, a1, 32 -40006343: 6188 l32i.n a8, a1, 24 -40006345: 11b9e7 bgeu a9, a14, 4000635a <strstr+0x3ee> -40006348: f85a add.n a15, a8, a5 -4000634a: a83a add.n a10, a8, a3 -4000634c: 000aa2 l8ui a10, a10, 0 -4000634f: f2fa add.n a15, a2, a15 -40006351: 000ff2 l8ui a15, a15, 0 -40006354: c0ffa0 sub a15, a15, a10 -40006357: 117f16 beqz a15, 40006472 <strstr+0x506> -4000635a: 81a8 l32i.n a10, a1, 32 -4000635c: 126152 s32i a5, a1, 72 -4000635f: b91b addi.n a11, a9, 1 -40006361: 02bab7 bgeu a10, a11, 40006367 <strstr+0x3fb> -40006364: ffdb06 j 400062d4 <strstr+0x368> -40006367: 556a add.n a5, a5, a6 -40006369: 71c8 l32i.n a12, a1, 28 -4000636b: 3198 l32i.n a9, a1, 12 -4000636d: cc6a add.n a12, a12, a6 -4000636f: 71c9 s32i.n a12, a1, 28 -40006371: ffde06 j 400062ed <strstr+0x381> -40006374: c149 s32i.n a4, a1, 48 -40006376: 050c movi.n a5, 0 -40006378: d1f8 l32i.n a15, a1, 52 -4000637a: f1e8 l32i.n a14, a1, 60 -4000637c: 0d0c movi.n a13, 0 -4000637e: 91d9 s32i.n a13, a1, 36 -40006380: c0e4e0 sub a14, a4, a14 -40006383: ff0b addi.n a15, a15, -1 -40006385: b1f9 s32i.n a15, a1, 44 -40006387: 41e9 s32i.n a14, a1, 16 -40006389: 000546 j 400063a2 <strstr+0x436> -4000638c: 919800 excw -4000638f: 598c beqz.n a9, 40006398 <strstr+0x42c> -40006391: f1a8 l32i.n a10, a1, 60 -40006393: 01b8a7 bgeu a8, a10, 40006398 <strstr+0x42c> -40006396: 4188 l32i.n a8, a1, 16 -40006398: 585a add.n a5, a8, a5 -4000639a: 0c0c movi.n a12, 0 -4000639c: 91c9 s32i.n a12, a1, 36 -4000639e: b45a add.n a11, a4, a5 -400063a0: c1b9 s32i.n a11, a1, 48 -400063a2: 00a0b2 movi a11, 0 -400063a5: 1021d2 l32i a13, a1, 64 -400063a8: 0c21c2 l32i a12, a1, 48 -400063ab: 80a2d0 add a10, a2, a13 -400063ae: c0ccd0 sub a12, a12, a13 -400063b1: 0014e5 call8 40006500 <strstr+0x594> -400063b4: e8ca56 bnez a10, 40006244 <strstr+0x2d8> -400063b7: c1e8 l32i.n a14, a1, 48 -400063b9: 1061e2 s32i a14, a1, 64 -400063bc: e84e16 beqz a14, 40006244 <strstr+0x2d8> -400063bf: 82ea add.n a8, a2, a14 -400063c1: ffd882 addmi a8, a8, 0xffffff00 -400063c4: ff0882 l8ui a8, a8, 255 -400063c7: a08860 addx4 a8, a8, a6 -400063ca: 0888 l32i.n a8, a8, 0 -400063cc: fbd856 bnez a8, 4000638d <strstr+0x421> -400063cf: 9198 l32i.n a9, a1, 36 -400063d1: d188 l32i.n a8, a1, 52 -400063d3: 738890 maxu a8, a8, a9 -400063d6: e198 l32i.n a9, a1, 56 -400063d8: 023897 bltu a8, a9, 400063de <strstr+0x472> -400063db: 002d46 j 40006494 <strstr+0x528> -400063de: a85a add.n a10, a8, a5 -400063e0: b83a add.n a11, a8, a3 -400063e2: 000bb2 l8ui a11, a11, 0 -400063e5: a2aa add.n a10, a2, a10 -400063e7: 000aa2 l8ui a10, a10, 0 -400063ea: c0aab0 sub a10, a10, a11 -400063ed: 09ca16 beqz a10, 4000648d <strstr+0x521> -400063f0: 003586 j 400064ca <strstr+0x55e> -400063f3: c58a00 extui a8, a0, 26, 13 -400063f6: d38a add.n a13, a3, a8 -400063f8: 000dd2 l8ui a13, a13, 0 -400063fb: c2ca add.n a12, a2, a12 -400063fd: 000cc2 l8ui a12, a12, 0 -40006400: c0ccd0 sub a12, a12, a13 -40006403: eb9c56 bnez a12, 400062c0 <strstr+0x354> -40006406: e1e8 l32i.n a14, a1, 56 -40006408: 881b addi.n a8, a8, 1 -4000640a: e638e7 bltu a8, a14, 400063f4 <strstr+0x488> -4000640d: d1f8 l32i.n a15, a1, 52 -4000640f: b188 l32i.n a8, a1, 44 -40006411: 3fac beqz.n a15, 40006438 <strstr+0x4cc> -40006413: 985a add.n a9, a8, a5 -40006415: a83a add.n a10, a8, a3 -40006417: 000aa2 l8ui a10, a10, 0 -4000641a: 929a add.n a9, a2, a9 -4000641c: 000992 l8ui a9, a9, 0 -4000641f: 1599a7 bne a9, a10, 40006438 <strstr+0x4cc> -40006422: 880b addi.n a8, a8, -1 -40006424: b81b addi.n a11, a8, 1 -40006426: 09cb16 beqz a11, 400064c6 <strstr+0x55a> -40006429: c58a add.n a12, a5, a8 -4000642b: d38a add.n a13, a3, a8 -4000642d: 000dd2 l8ui a13, a13, 0 -40006430: c2ca add.n a12, a2, a12 -40006432: 000cc2 l8ui a12, a12, 0 -40006435: e91cd7 beq a12, a13, 40006422 <strstr+0x4b6> -40006438: 020866 bnei a8, -1, 4000643e <strstr+0x4d2> -4000643b: 0021c6 j 400064c6 <strstr+0x55a> -4000643e: a1e8 l32i.n a14, a1, 40 -40006440: ee1b addi.n a14, a14, 1 -40006442: 55ea add.n a5, a5, a14 -40006444: ff7946 j 4000622d <strstr+0x2c1> -40006447: 384700 excw -4000644a: bc8602 excw -4000644d: ff .byte 0xff -4000644e: 8198 l32i.n a9, a1, 32 -40006450: c09890 sub a9, a8, a9 -40006453: 991b addi.n a9, a9, 1 -40006455: 559a add.n a5, a5, a9 -40006457: 090c movi.n a9, 0 -40006459: f45a add.n a15, a4, a5 -4000645b: 71f9 s32i.n a15, a1, 28 -4000645d: ffa306 j 400062ed <strstr+0x381> -40006460: b85a add.n a11, a8, a5 -40006462: c38a add.n a12, a3, a8 -40006464: 000cc2 l8ui a12, a12, 0 -40006467: b2ba add.n a11, a2, a11 -40006469: 000bb2 l8ui a11, a11, 0 -4000646c: 021bc7 beq a11, a12, 40006472 <strstr+0x506> -4000646f: ffba46 j 4000635c <strstr+0x3f0> -40006472: 08ad mov.n a10, a8 -40006474: 880b addi.n a8, a8, -1 -40006476: e639a7 bltu a9, a10, 40006460 <strstr+0x4f4> -40006479: ffb7c6 j 4000635c <strstr+0x3f0> -4000647c: 8a0000 depbits a0, a0, 8, 1 -4000647f: e38ad5 call4 3ffe9d2c <_start-0x162d4> -40006482: 000ee2 l8ui a14, a14, 0 -40006485: d2da add.n a13, a2, a13 -40006487: 000dd2 l8ui a13, a13, 0 -4000648a: 3c9de7 bne a13, a14, 400064ca <strstr+0x55e> -4000648d: e1f8 l32i.n a15, a1, 56 -4000648f: 881b addi.n a8, a8, 1 -40006491: e938f7 bltu a8, a15, 4000647e <strstr+0x512> -40006494: d1a8 l32i.n a10, a1, 52 -40006496: 9198 l32i.n a9, a1, 36 -40006498: b188 l32i.n a8, a1, 44 -4000649a: 0eb9a7 bgeu a9, a10, 400064ac <strstr+0x540> -4000649d: b85a add.n a11, a8, a5 -4000649f: c83a add.n a12, a8, a3 -400064a1: 000cc2 l8ui a12, a12, 0 -400064a4: b2ba add.n a11, a2, a11 -400064a6: 000bb2 l8ui a11, a11, 0 -400064a9: 471bc7 beq a11, a12, 400064f4 <strstr+0x588> -400064ac: d198 l32i.n a9, a1, 52 -400064ae: 91d8 l32i.n a13, a1, 36 -400064b0: dd1b addi.n a13, a13, 1 -400064b2: 1039d7 bltu a9, a13, 400064c6 <strstr+0x55a> -400064b5: c1f8 l32i.n a15, a1, 48 -400064b7: f188 l32i.n a8, a1, 60 -400064b9: 41e8 l32i.n a14, a1, 16 -400064bb: 91e9 s32i.n a14, a1, 36 -400064bd: 558a add.n a5, a5, a8 -400064bf: ff8a add.n a15, a15, a8 -400064c1: c1f9 s32i.n a15, a1, 48 -400064c3: ffb6c6 j 400063a2 <strstr+0x436> -400064c6: 225a add.n a2, a2, a5 -400064c8: f01d retw.n -400064ca: e198 l32i.n a9, a1, 56 -400064cc: c4b897 bgeu a8, a9, 40006494 <strstr+0x528> -400064cf: d1c8 l32i.n a12, a1, 52 -400064d1: 0b0c movi.n a11, 0 -400064d3: 91b9 s32i.n a11, a1, 36 -400064d5: c0c8c0 sub a12, a8, a12 -400064d8: cc1b addi.n a12, a12, 1 -400064da: 55ca add.n a5, a5, a12 -400064dc: a45a add.n a10, a4, a5 -400064de: c1a9 s32i.n a10, a1, 48 -400064e0: ffaf86 j 400063a2 <strstr+0x436> -400064e3: 8a0000 depbits a0, a0, 8, 1 -400064e6: e38ad5 call4 3ffe9d94 <_start-0x1626c> -400064e9: 000ee2 l8ui a14, a14, 0 -400064ec: d2da add.n a13, a2, a13 -400064ee: 000dd2 l8ui a13, a13, 0 -400064f1: b99de7 bne a13, a14, 400064ae <strstr+0x542> -400064f4: 089d mov.n a9, a8 -400064f6: 91f8 l32i.n a15, a1, 36 -400064f8: 880b addi.n a8, a8, -1 -400064fa: e73f97 bltu a15, a9, 400064e5 <strstr+0x579> -400064fd: ffeb46 j 400064ae <strstr+0x542> -40006500: 004136 entry a1, 32 -40006503: 03a052 movi a5, 3 -40006506: 1e0527 bnone a5, a2, 40006528 <strstr+0x5bc> -40006509: 747030 extui a7, a3, 0, 8 -4000650c: f03d nop.n -4000650e: 118076 loop a0, 40006523 <strstr+0x5b7> -40006511: 440b addi.n a4, a4, -1 -40006513: 5d0426 beqi a4, -1, 40006574 <strstr+0x608> -40006516: 000262 l8ui a6, a2, 0 -40006519: 551677 beq a6, a7, 40006572 <strstr+0x606> -4000651c: 221b addi.n a2, a2, 1 -4000651e: 148020 extui a8, a2, 0, 2 -40006521: 388c beqz.n a8, 40006528 <strstr+0x5bc> -40006523: fff946 j 4000650c <strstr+0x5a0> -40006526: b60000 excw -40006529: 812b44 excw -4000652c: 9e .byte 0x9e -4000652d: 7ce8 l32i.n a14, a12, 28 -4000652f: 71fa add.n a7, a1, a15 -40006531: 9e .byte 0x9e -40006532: 40e8 l32i.n a14, a0, 16 -40006534: 3041b2 s8i a11, a1, 48 -40006537: 907490 addx2 a7, a4, a9 -4000653a: 908a73 excw -4000653d: 0bf9 s32i.n a15, a11, 0 -4000653f: 149b76 loopnez a11, 40006557 <strstr+0x5eb> -40006542: 02c8 l32i.n a12, a2, 0 -40006544: 30cc90 xor a12, a12, a9 -40006547: 30dca0 xor a13, a12, a10 -4000654a: cc7a add.n a12, a12, a7 -4000654c: 10ccd0 and a12, a12, a13 -4000654f: 048c87 bany a12, a8, 40006557 <strstr+0x5eb> -40006552: fcc442 addi a4, a4, -4 -40006555: 224b addi.n a2, a2, 4 -40006557: 046d mov.n a6, a4 -40006559: 440b addi.n a4, a4, -1 -4000655b: 150426 beqi a4, -1, 40006574 <strstr+0x608> -4000655e: 747030 extui a7, a3, 0, 8 -40006561: 099676 loopnez a6, 4000656e <strstr+0x602> -40006564: 0002d2 l8ui a13, a2, 0 -40006567: 440b addi.n a4, a4, -1 -40006569: 051d77 beq a13, a7, 40006572 <strstr+0x606> -4000656c: 221b addi.n a2, a2, 1 -4000656e: 020c movi.n a2, 0 -40006570: f01d retw.n -40006572: f01d retw.n -40006574: 020c movi.n a2, 0 -40006576: f01d retw.n -40006578: 004136 entry a1, 32 -4000657b: e88b81 l32r a8, 400007a8 <_c_0x00ff0000+0x10> -4000657e: ffaf92 movi a9, -1 -40006581: e88871 l32r a7, 400007a4 <_c_0x00ff0000+0xc> -40006584: 746030 extui a6, a3, 0, 8 -40006587: 03a032 movi a3, 3 -4000658a: 08f616 beqz a6, 4000661d <strstr+0x6b1> -4000658d: 180327 bnone a3, a2, 400065a9 <strstr+0x63d> -40006590: f03d nop.n -40006592: 0f8076 loop a0, 400065a5 <strstr+0x639> -40006595: 000232 l8ui a3, a2, 0 -40006598: 0c8316 beqz a3, 40006664 <strstr+0x6f8> -4000659b: 791637 beq a6, a3, 40006618 <strstr+0x6ac> -4000659e: 221b addi.n a2, a2, 1 -400065a0: 144020 extui a4, a2, 0, 2 -400065a3: 248c beqz.n a4, 400065a9 <strstr+0x63d> -400065a5: fff9c6 j 40006590 <strstr+0x624> -400065a8: 063d00 excw -400065ab: 850c movi.n a5, 8 -400065ad: 0e8076 loop a0, 400065bf <strstr+0x653> -400065b0: 401500 ssl a5 -400065b3: 1155f0 slli a5, a5, 1 -400065b6: a1a300 sll a10, a3 -400065b9: 2033a0 or a3, a3, a10 -400065bc: 02c5f6 bgeui a5, 32, 400065c2 <strstr+0x656> -400065bf: fffa86 j 400065ad <strstr+0x641> -400065c2: 02a8 l32i.n a10, a2, 0 -400065c4: 30ca90 xor a12, a10, a9 -400065c7: ba8a add.n a11, a10, a8 -400065c9: 10bbc0 and a11, a11, a12 -400065cc: 2d8b77 bany a11, a7, 400065fd <strstr+0x691> -400065cf: 30da30 xor a13, a10, a3 -400065d2: 30ed90 xor a14, a13, a9 -400065d5: dd8a add.n a13, a13, a8 -400065d7: 10dde0 and a13, a13, a14 -400065da: 100d77 bnone a13, a7, 400065ee <strstr+0x682> -400065dd: 000706 j 400065fd <strstr+0x691> -400065e0: 30ea30 xor a14, a10, a3 -400065e3: 30fe90 xor a15, a14, a9 -400065e6: ee8a add.n a14, a14, a8 -400065e8: 10eef0 and a14, a14, a15 -400065eb: 0e8e77 bany a14, a7, 400065fd <strstr+0x691> -400065ee: 12a8 l32i.n a10, a2, 4 -400065f0: 224b addi.n a2, a2, 4 -400065f2: 304a90 xor a4, a10, a9 -400065f5: fa8a add.n a15, a10, a8 -400065f7: 10ff40 and a15, a15, a4 -400065fa: e20f77 bnone a15, a7, 400065e0 <strstr+0x674> -400065fd: 000232 l8ui a3, a2, 0 -40006600: 139c beqz.n a3, 40006615 <strstr+0x6a9> -40006602: 121637 beq a6, a3, 40006618 <strstr+0x6ac> -40006605: 098076 loop a0, 40006612 <strstr+0x6a6> -40006608: 010232 l8ui a3, a2, 1 -4000660b: 221b addi.n a2, a2, 1 -4000660d: 438c beqz.n a3, 40006615 <strstr+0x6a9> -4000660f: 051637 beq a6, a3, 40006618 <strstr+0x6ac> -40006612: fffbc6 j 40006605 <strstr+0x699> -40006615: 4b9637 bne a6, a3, 40006664 <strstr+0x6f8> -40006618: f01d retw.n -4000661a: 000000 ill -4000661d: 0d0327 bnone a3, a2, 4000662e <strstr+0x6c2> -40006620: 0002a2 l8ui a10, a2, 0 -40006623: ff1a16 beqz a10, 40006618 <strstr+0x6ac> -40006626: 221b addi.n a2, a2, 1 -40006628: 14b020 extui a11, a2, 0, 2 -4000662b: ff1b56 bnez a11, 40006620 <strstr+0x6b4> -4000662e: 02c8 l32i.n a12, a2, 0 -40006630: f03d nop.n -40006632: 30dc90 xor a13, a12, a9 -40006635: cc8a add.n a12, a12, a8 -40006637: 10ccd0 and a12, a12, a13 -4000663a: 0e8c77 bany a12, a7, 4000664c <strstr+0x6e0> -4000663d: 12d8 l32i.n a13, a2, 4 -4000663f: 224b addi.n a2, a2, 4 -40006641: 30ed90 xor a14, a13, a9 -40006644: dd8a add.n a13, a13, a8 -40006646: 10dde0 and a13, a13, a14 -40006649: f00d77 bnone a13, a7, 4000663d <strstr+0x6d1> -4000664c: 0002e2 l8ui a14, a2, 0 -4000664f: 0020f0 nop -40006652: fc2e16 beqz a14, 40006618 <strstr+0x6ac> -40006655: 078076 loop a0, 40006660 <strstr+0x6f4> -40006658: 0102f2 l8ui a15, a2, 1 -4000665b: 221b addi.n a2, a2, 1 -4000665d: fb7f16 beqz a15, 40006618 <strstr+0x6ac> -40006660: fffc46 j 40006655 <strstr+0x6e9> -40006663: 020c00 andb b0, b12, b0 -40006666: f01d retw.n -40006668: 002136 entry a1, 16 -4000666b: f01d retw.n -4000666d: 000000 ill - -40006670 <_xtos_set_intlevel>: -40006670: 002136 entry a1, 16 -40006673: 03e630 rsr.ps a3 -40006676: 047c movi.n a4, -16 -40006678: 342020 extui a2, a2, 0, 4 -4000667b: 104430 and a4, a4, a3 -4000667e: 204420 or a4, a4, a2 -40006681: 13e640 wsr.ps a4 -40006684: 342030 extui a2, a3, 0, 4 -40006687: 002010 rsync -4000668a: f01d retw.n -4000668c: 002136 entry a1, 16 -4000668f: 343020 extui a3, a2, 0, 4 -40006692: 03e620 rsr.ps a2 -40006695: 047c movi.n a4, -16 -40006697: 345020 extui a5, a2, 0, 4 -4000669a: c05350 sub a5, a3, a5 -4000669d: 104420 and a4, a4, a2 -400066a0: 204430 or a4, a4, a3 -400066a3: a34250 movltz a4, a2, a5 -400066a6: 13e640 wsr.ps a4 -400066a9: 002010 rsync -400066ac: f01d retw.n -400066ae: 360000 excw -400066b1: f00021 l32r a2, 400026b4 <_X_ets_unk225c+0x458> -400066b4: 1d0041 l32r a4, 3ffcdab4 <_start-0x3254c> -400066b7: 4128f0 srli a2, a15, 8 -400066ba: 5138 l32i.n a3, a1, 20 -400066bc: 01d112 addmi a1, a1, 0x100 -400066bf: 004110 break 1, 1 -400066c2: 003000 rfe -400066c5: 000000 ill -400066c8: 3b6522 s32i a2, a5, 236 -400066cb: 1528 l32i.n a2, a5, 4 -400066cd: 0538 l32i.n a3, a5, 0 -400066cf: 13e620 wsr.ps a2 -400066d2: 4528 l32i.n a2, a5, 16 -400066d4: 6548 l32i.n a4, a5, 24 -400066d6: 002010 rsync -400066d9: 13b130 wsr.epc1 a3 -400066dc: 5538 l32i.n a3, a5, 20 -400066de: 7558 l32i.n a5, a5, 28 -400066e0: 003000 rfe -400066e3: 213600 srai a3, a0, 6 -400066e6: ea2000 depbits a0, a0, 14, 3 -400066e9: f01d03 excw -400066ec: 002136 entry a1, 16 -400066ef: 52cc bnez.n a2, 400066f8 <_xtos_set_intlevel+0x88> -400066f1: 13f030 wsr.ccompare0 a3 -400066f4: 0003c6 j 40006707 <_xtos_set_intlevel+0x97> -400066f7: 22f600 orb b15, b6, b0 -400066fa: f13005 call0 3fff79fc <_start-0x8604> -400066fd: 014613 excw -40006700: 32f600 orbc b15, b6, b0 -40006703: f23005 call0 3fff8a04 <_start-0x75fc> -40006706: 200013 excw -40006709: f01d00 subx8 a1, a13, a0 -4000670c: 002136 entry a1, 16 -4000670f: 52cc bnez.n a2, 40006718 <_xtos_set_intlevel+0xa8> -40006711: 03f020 rsr.ccompare0 a2 -40006714: f01d retw.n -40006716: f60000 excw -40006719: 200422 l8ui a2, a4, 32 -4000671c: 1d03f1 l32r a15, 3ffcdb28 <_start-0x324d8> -4000671f: 32f6f0 orbc b15, b6, b15 -40006722: f22004 excw -40006725: f01d03 excw -40006728: 020c movi.n a2, 0 -4000672a: f01d retw.n -4000672c: 004136 entry a1, 32 -4000672f: 035d mov.n a5, a3 -40006731: 023d mov.n a3, a2 -40006733: 052d mov.n a2, a5 -40006735: 000706 j 40006755 <_xtos_set_intlevel+0xe5> -40006738: 05ad mov.n a10, a5 -4000673a: 03bd mov.n a11, a3 -4000673c: 4c0c movi.n a12, 4 -4000673e: c06c60 sub a6, a12, a6 -40006741: 06cd mov.n a12, a6 -40006743: 000765 call8 400067b8 <_xtos_set_intlevel+0x148> -40006746: 556a add.n a5, a5, a6 -40006748: 336a add.n a3, a3, a6 -4000674a: c04460 sub a4, a4, a6 -4000674d: 000346 j 4000675e <_xtos_set_intlevel+0xee> -40006750: 004136 entry a1, 32 -40006753: 025d mov.n a5, a2 -40006755: 6244b6 bltui a4, 4, 400067bb <_xtos_set_intlevel+0x14b> -40006758: 146020 extui a6, a2, 0, 2 -4000675b: fd9656 bnez a6, 40006738 <_xtos_set_intlevel+0xc8> -4000675e: 417440 srli a7, a4, 4 -40006761: 14b030 extui a11, a3, 0, 2 -40006764: 09cb56 bnez a11, 40006804 <_xtos_set_intlevel+0x194> -40006767: 159776 loopnez a7, 40006780 <_xtos_set_intlevel+0x110> -4000676a: 0368 l32i.n a6, a3, 0 -4000676c: 1378 l32i.n a7, a3, 4 -4000676e: 0569 s32i.n a6, a5, 0 -40006770: 2368 l32i.n a6, a3, 8 -40006772: 1579 s32i.n a7, a5, 4 -40006774: 3378 l32i.n a7, a3, 12 -40006776: 2569 s32i.n a6, a5, 8 -40006778: 10c332 addi a3, a3, 16 -4000677b: 3579 s32i.n a7, a5, 12 -4000677d: 10c552 addi a5, a5, 16 -40006780: 0d6437 bbci a4, 3, 40006791 <_xtos_set_intlevel+0x121> -40006783: 0368 l32i.n a6, a3, 0 -40006785: 1378 l32i.n a7, a3, 4 -40006787: 338b addi.n a3, a3, 8 -40006789: 0569 s32i.n a6, a5, 0 -4000678b: 016572 s32i a7, a5, 4 -4000678e: 08c552 addi a5, a5, 8 -40006791: 076427 bbci a4, 2, 4000679c <_xtos_set_intlevel+0x12c> -40006794: 0368 l32i.n a6, a3, 0 -40006796: 334b addi.n a3, a3, 4 -40006798: 0569 s32i.n a6, a5, 0 -4000679a: 554b addi.n a5, a5, 4 -4000679c: 144040 extui a4, a4, 0, 2 -4000679f: 349c beqz.n a4, 400067b6 <_xtos_set_intlevel+0x146> -400067a1: 0368 l32i.n a6, a3, 0 -400067a3: 0578 l32i.n a7, a5, 0 -400067a5: 402400 ssa8l a4 -400067a8: a16600 sll a6, a6 -400067ab: 917070 srl a7, a7 -400067ae: 403400 ssa8b a4 -400067b1: 817760 src a7, a7, a6 -400067b4: 0579 s32i.n a7, a5, 0 -400067b6: f01d retw.n -400067b8: 002136 entry a1, 16 -400067bb: 041416 beqz a4, 40006800 <_xtos_set_intlevel+0x190> -400067be: c57c movi.n a5, -4 -400067c0: 105350 and a5, a3, a5 -400067c3: 0568 l32i.n a6, a5, 0 -400067c5: 1578 l32i.n a7, a5, 4 -400067c7: 402300 ssa8l a3 -400067ca: 813760 src a3, a7, a6 -400067cd: 14a020 extui a10, a2, 0, 2 -400067d0: c052a0 sub a5, a2, a10 -400067d3: 0588 l32i.n a8, a5, 0 -400067d5: 6a4a add.n a6, a10, a4 -400067d7: 402200 ssa8l a2 -400067da: a1a800 sll a10, a8 -400067dd: 0b46b6 bltui a6, 4, 400067ec <_xtos_set_intlevel+0x17c> -400067e0: 1588 l32i.n a8, a5, 4 -400067e2: 403200 ssa8b a2 -400067e5: 81a3a0 src a10, a3, a10 -400067e8: 05a9 s32i.n a10, a5, 0 -400067ea: 554b addi.n a5, a5, 4 -400067ec: 402400 ssa8l a4 -400067ef: 8133a0 src a3, a3, a10 -400067f2: 402600 ssa8l a6 -400067f5: 918080 srl a8, a8 -400067f8: 403600 ssa8b a6 -400067fb: 818830 src a8, a8, a3 -400067fe: 0589 s32i.n a8, a5, 0 -40006800: f01d retw.n -40006802: 000000 ill -40006805: 304023 excw -40006808: b014b0 addx8 a1, a4, a11 -4000680b: 68c033 excw -4000680e: 977603 excw -40006811: 137821 l32r a2, 3ffcb5f4 <_start-0x34a0c> -40006814: 2388 l32i.n a8, a3, 8 -40006816: 816760 src a6, a7, a6 -40006819: 0569 s32i.n a6, a5, 0 -4000681b: 3398 l32i.n a9, a3, 12 -4000681d: 817870 src a7, a8, a7 -40006820: 1579 s32i.n a7, a5, 4 -40006822: 4368 l32i.n a6, a3, 16 -40006824: 818980 src a8, a9, a8 -40006827: 2589 s32i.n a8, a5, 8 -40006829: 10c332 addi a3, a3, 16 -4000682c: 819690 src a9, a6, a9 -4000682f: 3599 s32i.n a9, a5, 12 -40006831: 10c552 addi a5, a5, 16 -40006834: 146437 bbci a4, 3, 4000684c <_xtos_set_intlevel+0x1dc> -40006837: 1378 l32i.n a7, a3, 4 -40006839: 2388 l32i.n a8, a3, 8 -4000683b: 816760 src a6, a7, a6 -4000683e: 0569 s32i.n a6, a5, 0 -40006840: 338b addi.n a3, a3, 8 -40006842: 817870 src a7, a8, a7 -40006845: 1579 s32i.n a7, a5, 4 -40006847: 558b addi.n a5, a5, 8 -40006849: 206880 or a6, a8, a8 -4000684c: 0c6427 bbci a4, 2, 4000685c <_xtos_set_intlevel+0x1ec> -4000684f: 1378 l32i.n a7, a3, 4 -40006851: 334b addi.n a3, a3, 4 -40006853: 816760 src a6, a7, a6 -40006856: 0569 s32i.n a6, a5, 0 -40006858: 554b addi.n a5, a5, 4 -4000685a: 076d mov.n a6, a7 -4000685c: 1378 l32i.n a7, a3, 4 -4000685e: 0538 l32i.n a3, a5, 0 -40006860: 816760 src a6, a7, a6 -40006863: 402400 ssa8l a4 -40006866: a16600 sll a6, a6 -40006869: 913030 srl a3, a3 -4000686c: 403400 ssa8b a4 -4000686f: 813360 src a3, a3, a6 -40006872: 0539 s32i.n a3, a5, 0 -40006874: f01d retw.n -40006876: 360000 excw -40006879: 200021 l32r a2, 3ffce87c <_start-0x31784> -4000687c: 1d03e2 l8ui a14, a3, 29 -4000687f: 2136f0 srai a3, a15, 6 -40006882: e32000 excw -40006885: f01d13 excw - -40006888 <__divsi3>: -40006888: 002136 entry a1, 16 -4000688b: d22230 quos a2, a2, a3 -4000688e: f01d retw.n - -40006890 <roundup2>: -40006890: 004136 entry a1, 32 -40006893: 604030 neg a4, a3 -40006896: 223a add.n a2, a2, a3 -40006898: 220b addi.n a2, a2, -1 -4000689a: 102240 and a2, a2, a4 -4000689d: f01d retw.n - ... - -400068a0 <multofup>: -400068a0: 004136 entry a1, 32 -400068a3: 223a add.n a2, a2, a3 -400068a5: 220b addi.n a2, a2, -1 -400068a7: c22230 quou a2, a2, a3 -400068aa: f01d retw.n -400068ac: 004136 entry a1, 32 -400068af: 430b addi.n a4, a3, -1 -400068b1: 320426 beqi a4, -1, 400068e7 <multofup+0x47> -400068b4: 206330 or a6, a3, a3 -400068b7: 248030 extui a8, a3, 0, 3 -400068ba: 00a032 movi a3, 0 -400068bd: 049876 loopnez a8, 400068c5 <multofup+0x25> -400068c0: 004232 s8i a3, a2, 0 -400068c3: 221b addi.n a2, a2, 1 -400068c5: 414360 srli a4, a6, 3 -400068c8: f03d nop.n -400068ca: 199476 loopnez a4, 400068e7 <multofup+0x47> -400068cd: 004232 s8i a3, a2, 0 -400068d0: 014232 s8i a3, a2, 1 -400068d3: 024232 s8i a3, a2, 2 -400068d6: 034232 s8i a3, a2, 3 -400068d9: 044232 s8i a3, a2, 4 -400068dc: 054232 s8i a3, a2, 5 -400068df: 064232 s8i a3, a2, 6 -400068e2: 074232 s8i a3, a2, 7 -400068e5: 228b addi.n a2, a2, 8 -400068e7: f01d retw.n -400068e9: 000000 ill - -400068ec <memcmp>: -400068ec: 004136 entry a1, 32 -400068ef: 1b44b6 bltui a4, 4, 4000690e <memcmp+0x22> -400068f2: 205320 or a5, a3, a2 -400068f5: 145050 extui a5, a5, 0, 2 -400068f8: 25dc bnez.n a5, 4000690e <memcmp+0x22> -400068fa: 418240 srli a8, a4, 2 -400068fd: 0d9876 loopnez a8, 4000690e <memcmp+0x22> -40006900: 03a8 l32i.n a10, a3, 0 -40006902: 0298 l32i.n a9, a2, 0 -40006904: 0699a7 bne a9, a10, 4000690e <memcmp+0x22> -40006907: 224b addi.n a2, a2, 4 -40006909: 334b addi.n a3, a3, 4 -4000690b: fcc442 addi a4, a4, -4 -4000690e: 046d mov.n a6, a4 -40006910: 440b addi.n a4, a4, -1 -40006912: 110426 beqi a4, -1, 40006927 <memcmp+0x3b> -40006915: 0e9676 loopnez a6, 40006927 <memcmp+0x3b> -40006918: 000372 l8ui a7, a3, 0 -4000691b: 000282 l8ui a8, a2, 0 -4000691e: 221b addi.n a2, a2, 1 -40006920: 089877 bne a8, a7, 4000692c <memcmp+0x40> -40006923: 440b addi.n a4, a4, -1 -40006925: 331b addi.n a3, a3, 1 -40006927: 020c movi.n a2, 0 -40006929: f01d retw.n -4000692b: 287000 excw -4000692e: f01dc0 subx8 a1, a13, a12 -40006931: 000000 ill -40006934: 947600 extui a7, a0, 6, 10 -40006937: 6209 s32i.n a0, a2, 24 -40006939: 1b0003 excw -4000693c: 456233 excw -4000693f: 551b00 extui a1, a0, 27, 6 -40006942: f01d retw.n -40006944: ed74b6 bltui a4, 7, 40006935 <memcmp+0x49> -40006947: 000362 l8ui a6, a3, 0 -4000694a: 331b addi.n a3, a3, 1 -4000694c: ffc442 addi a4, a4, -1 -4000694f: 004562 s8i a6, a5, 0 -40006952: 01c552 addi a5, a5, 1 -40006955: 276517 bbci a5, 1, 40006980 <memcpy+0xc> -40006958: d964b6 bltui a4, 6, 40006935 <memcmp+0x49> -4000695b: 000362 l8ui a6, a3, 0 -4000695e: 010372 l8ui a7, a3, 1 -40006961: 332b addi.n a3, a3, 2 -40006963: fec442 addi a4, a4, -2 -40006966: 004562 s8i a6, a5, 0 -40006969: 014572 s8i a7, a5, 1 -4000696c: 552b addi.n a5, a5, 2 -4000696e: 000386 j 40006980 <memcpy+0xc> -40006971: 000000 ill - -40006974 <memcpy>: -40006974: 002136 entry a1, 16 -40006977: 205220 or a5, a2, a2 -4000697a: c6e207 bbsi a2, 0, 40006944 <memcmp+0x58> -4000697d: d7e217 bbsi a2, 1, 40006958 <memcmp+0x6c> -40006980: 417440 srli a7, a4, 4 -40006983: 018320 slli a8, a3, 30 -40006986: 05a856 bnez a8, 400069e4 <memcpy+0x70> -40006989: 159776 loopnez a7, 400069a2 <memcpy+0x2e> -4000698c: 0368 l32i.n a6, a3, 0 -4000698e: 1378 l32i.n a7, a3, 4 -40006990: 0569 s32i.n a6, a5, 0 -40006992: 2368 l32i.n a6, a3, 8 -40006994: 1579 s32i.n a7, a5, 4 -40006996: 3378 l32i.n a7, a3, 12 -40006998: 2569 s32i.n a6, a5, 8 -4000699a: 10c332 addi a3, a3, 16 -4000699d: 3579 s32i.n a7, a5, 12 -4000699f: 10c552 addi a5, a5, 16 -400069a2: 0b6437 bbci a4, 3, 400069b1 <memcpy+0x3d> -400069a5: 0368 l32i.n a6, a3, 0 -400069a7: 1378 l32i.n a7, a3, 4 -400069a9: 338b addi.n a3, a3, 8 -400069ab: 0569 s32i.n a6, a5, 0 -400069ad: 1579 s32i.n a7, a5, 4 -400069af: 558b addi.n a5, a5, 8 -400069b1: 07e427 bbsi a4, 2, 400069bc <memcpy+0x48> -400069b4: 14e417 bbsi a4, 1, 400069cc <memcpy+0x58> -400069b7: 21e407 bbsi a4, 0, 400069dc <memcpy+0x68> -400069ba: f01d retw.n -400069bc: 0368 l32i.n a6, a3, 0 -400069be: 334b addi.n a3, a3, 4 -400069c0: 0569 s32i.n a6, a5, 0 -400069c2: 554b addi.n a5, a5, 4 -400069c4: 04e417 bbsi a4, 1, 400069cc <memcpy+0x58> -400069c7: 11e407 bbsi a4, 0, 400069dc <memcpy+0x68> -400069ca: f01d retw.n -400069cc: 001362 l16ui a6, a3, 0 -400069cf: 332b addi.n a3, a3, 2 -400069d1: 005562 s16i a6, a5, 0 -400069d4: 552b addi.n a5, a5, 2 -400069d6: 02e407 bbsi a4, 0, 400069dc <memcpy+0x68> -400069d9: f01d retw.n -400069db: 036200 excw -400069de: 456200 extui a6, a0, 18, 5 -400069e1: f01d00 subx8 a1, a13, a0 -400069e4: ffa416 beqz a4, 400069e2 <memcpy+0x6e> -400069e7: 402300 ssa8l a3 -400069ea: 15be80 extui a11, a8, 30, 2 -400069ed: c033b0 sub a3, a3, a11 -400069f0: 0368 l32i.n a6, a3, 0 -400069f2: 219776 loopnez a7, 40006a17 <memcpy+0xa3> -400069f5: 1378 l32i.n a7, a3, 4 -400069f7: 2388 l32i.n a8, a3, 8 -400069f9: 816760 src a6, a7, a6 -400069fc: 0569 s32i.n a6, a5, 0 -400069fe: 3398 l32i.n a9, a3, 12 -40006a00: 817870 src a7, a8, a7 -40006a03: 1579 s32i.n a7, a5, 4 -40006a05: 4368 l32i.n a6, a3, 16 -40006a07: 818980 src a8, a9, a8 -40006a0a: 2589 s32i.n a8, a5, 8 -40006a0c: 10c332 addi a3, a3, 16 -40006a0f: 819690 src a9, a6, a9 -40006a12: 3599 s32i.n a9, a5, 12 -40006a14: 10c552 addi a5, a5, 16 -40006a17: 156437 bbci a4, 3, 40006a30 <memcpy+0xbc> -40006a1a: 1378 l32i.n a7, a3, 4 -40006a1c: 2388 l32i.n a8, a3, 8 -40006a1e: 816760 src a6, a7, a6 -40006a21: 0569 s32i.n a6, a5, 0 -40006a23: 338b addi.n a3, a3, 8 -40006a25: 817870 src a7, a8, a7 -40006a28: 1579 s32i.n a7, a5, 4 -40006a2a: 08c552 addi a5, a5, 8 -40006a2d: 206880 or a6, a8, a8 -40006a30: 0c6427 bbci a4, 2, 40006a40 <memcpy+0xcc> -40006a33: 1378 l32i.n a7, a3, 4 -40006a35: 334b addi.n a3, a3, 4 -40006a37: 816760 src a6, a7, a6 -40006a3a: 0569 s32i.n a6, a5, 0 -40006a3c: 554b addi.n a5, a5, 4 -40006a3e: 076d mov.n a6, a7 -40006a40: 33ba add.n a3, a3, a11 -40006a42: 06e417 bbsi a4, 1, 40006a4c <memcpy+0xd8> -40006a45: 18e407 bbsi a4, 0, 40006a61 <memcpy+0xed> -40006a48: f01d retw.n -40006a4a: 620000 excw -40006a4d: 720003 excw -40006a50: 2b0103 excw -40006a53: 456233 excw -40006a56: 457200 extui a7, a0, 18, 5 -40006a59: 552b01 l32r a0, 3ffdbf08 <_start-0x240f8> -40006a5c: 01e407 bbsi a4, 0, 40006a61 <memcpy+0xed> -40006a5f: f01d retw.n -40006a61: 000362 l8ui a6, a3, 0 -40006a64: 004562 s8i a6, a5, 0 -40006a67: f01d retw.n -40006a69: 000000 ill - -40006a6c <memmove>: -40006a6c: 004136 entry a1, 32 -40006a6f: 049d mov.n a9, a4 -40006a71: 028d mov.n a8, a2 -40006a73: 04ad mov.n a10, a4 -40006a75: 032d mov.n a2, a3 -40006a77: 087d mov.n a7, a8 -40006a79: 1bb387 bgeu a3, a8, 40006a98 <memmove+0x2c> -40006a7c: 343a add.n a3, a4, a3 -40006a7e: 16b837 bgeu a8, a3, 40006a98 <memmove+0x2c> -40006a81: 748a add.n a7, a4, a8 -40006a83: 131416 beqz a4, 40006bb8 <memmove+0x14c> -40006a86: 099476 loopnez a4, 40006a93 <memmove+0x27> -40006a89: 770b addi.n a7, a7, -1 -40006a8b: 330b addi.n a3, a3, -1 -40006a8d: 000342 l8ui a4, a3, 0 -40006a90: 004742 s8i a4, a7, 0 -40006a93: 082d mov.n a2, a8 -40006a95: f01d retw.n -40006a97: b9f600 excw -40006a9a: 320602 l8ui a0, a6, 50 -40006a9d: b28000 mulsh a8, a0, a0 -40006aa0: b0b020 addx8 a11, a0, a2 -40006aa3: fb5614 excw -40006aa6: 7d0b addi.n a7, a13, -1 -40006aa8: 9008 l32i.n a0, a0, 36 -40006aaa: 9014c4 excw -40006aad: 4d4164 excw -40006ab0: 9c7606 j 3ffedc8c <_start-0x12374> -40006ab3: 025815 call4 40009034 <__umoddi3+0x21d0> -40006ab6: 0759 s32i.n a5, a7, 0 -40006ab8: 12f8 l32i.n a15, a2, 4 -40006aba: 17f9 s32i.n a15, a7, 4 -40006abc: 22e8 l32i.n a14, a2, 8 -40006abe: 27e9 s32i.n a14, a7, 8 -40006ac0: 32d8 l32i.n a13, a2, 12 -40006ac2: 37d9 s32i.n a13, a7, 12 -40006ac4: 10c222 addi a2, a2, 16 -40006ac7: 10c772 addi a7, a7, 16 -40006aca: 413240 srli a3, a4, 2 -40006acd: 459376 loopnez a3, 40006b16 <memmove+0xaa> -40006ad0: 0238 l32i.n a3, a2, 0 -40006ad2: 0739 s32i.n a3, a7, 0 -40006ad4: 1238 l32i.n a3, a2, 4 -40006ad6: 1739 s32i.n a3, a7, 4 -40006ad8: 2238 l32i.n a3, a2, 8 -40006ada: 2739 s32i.n a3, a7, 8 -40006adc: 3238 l32i.n a3, a2, 12 -40006ade: 3739 s32i.n a3, a7, 12 -40006ae0: 4238 l32i.n a3, a2, 16 -40006ae2: 4739 s32i.n a3, a7, 16 -40006ae4: 5238 l32i.n a3, a2, 20 -40006ae6: 5739 s32i.n a3, a7, 20 -40006ae8: 6238 l32i.n a3, a2, 24 -40006aea: 6739 s32i.n a3, a7, 24 -40006aec: 7238 l32i.n a3, a2, 28 -40006aee: 7739 s32i.n a3, a7, 28 -40006af0: 8238 l32i.n a3, a2, 32 -40006af2: 8739 s32i.n a3, a7, 32 -40006af4: 9238 l32i.n a3, a2, 36 -40006af6: 9739 s32i.n a3, a7, 36 -40006af8: a238 l32i.n a3, a2, 40 -40006afa: a739 s32i.n a3, a7, 40 -40006afc: b238 l32i.n a3, a2, 44 -40006afe: b739 s32i.n a3, a7, 44 -40006b00: c238 l32i.n a3, a2, 48 -40006b02: c739 s32i.n a3, a7, 48 -40006b04: d238 l32i.n a3, a2, 52 -40006b06: d739 s32i.n a3, a7, 52 -40006b08: e238 l32i.n a3, a2, 56 -40006b0a: e739 s32i.n a3, a7, 56 -40006b0c: f238 l32i.n a3, a2, 60 -40006b0e: f739 s32i.n a3, a7, 60 -40006b10: 40c222 addi a2, a2, 64 -40006b13: 40c772 addi a7, a7, 64 -40006b16: 1166c0 slli a6, a6, 4 -40006b19: c06960 sub a6, a9, a6 -40006b1c: 06ad mov.n a10, a6 -40006b1e: 4546b6 bltui a6, 4, 40006b67 <memmove+0xfb> -40006b21: 24b260 extui a11, a6, 2, 3 -40006b24: 419260 srli a9, a6, 2 -40006b27: 204990 or a4, a9, a9 -40006b2a: 413340 srli a3, a4, 3 -40006b2d: 079b76 loopnez a11, 40006b38 <memmove+0xcc> -40006b30: 02c8 l32i.n a12, a2, 0 -40006b32: 07c9 s32i.n a12, a7, 0 -40006b34: 224b addi.n a2, a2, 4 -40006b36: 774b addi.n a7, a7, 4 -40006b38: 11a9e0 slli a10, a9, 2 -40006b3b: 259376 loopnez a3, 40006b64 <memmove+0xf8> -40006b3e: 0238 l32i.n a3, a2, 0 -40006b40: 0739 s32i.n a3, a7, 0 -40006b42: 1238 l32i.n a3, a2, 4 -40006b44: 1739 s32i.n a3, a7, 4 -40006b46: 2238 l32i.n a3, a2, 8 -40006b48: 2739 s32i.n a3, a7, 8 -40006b4a: 3238 l32i.n a3, a2, 12 -40006b4c: 3739 s32i.n a3, a7, 12 -40006b4e: 4238 l32i.n a3, a2, 16 -40006b50: 4739 s32i.n a3, a7, 16 -40006b52: 5238 l32i.n a3, a2, 20 -40006b54: 5739 s32i.n a3, a7, 20 -40006b56: 6238 l32i.n a3, a2, 24 -40006b58: 6739 s32i.n a3, a7, 24 -40006b5a: 7238 l32i.n a3, a2, 28 -40006b5c: 7739 s32i.n a3, a7, 28 -40006b5e: 20c222 addi a2, a2, 32 -40006b61: 20c772 addi a7, a7, 32 -40006b64: c0a6a0 sub a10, a6, a10 -40006b67: ba0b addi.n a11, a10, -1 -40006b69: 4b0b26 beqi a11, -1, 40006bb8 <memmove+0x14c> -40006b6c: 4133a0 srli a3, a10, 3 -40006b6f: 24c0a0 extui a12, a10, 0, 3 -40006b72: 099c76 loopnez a12, 40006b7f <memmove+0x113> -40006b75: 0002d2 l8ui a13, a2, 0 -40006b78: 0047d2 s8i a13, a7, 0 -40006b7b: 221b addi.n a2, a2, 1 -40006b7d: 771b addi.n a7, a7, 1 -40006b7f: f03d nop.n -40006b81: 339376 loopnez a3, 40006bb8 <memmove+0x14c> -40006b84: 000232 l8ui a3, a2, 0 -40006b87: 004732 s8i a3, a7, 0 -40006b8a: 010232 l8ui a3, a2, 1 -40006b8d: 014732 s8i a3, a7, 1 -40006b90: 020232 l8ui a3, a2, 2 -40006b93: 024732 s8i a3, a7, 2 -40006b96: 030232 l8ui a3, a2, 3 -40006b99: 034732 s8i a3, a7, 3 -40006b9c: 040232 l8ui a3, a2, 4 -40006b9f: 044732 s8i a3, a7, 4 -40006ba2: 050232 l8ui a3, a2, 5 -40006ba5: 054732 s8i a3, a7, 5 -40006ba8: 060232 l8ui a3, a2, 6 -40006bab: 064732 s8i a3, a7, 6 -40006bae: 070232 l8ui a3, a2, 7 -40006bb1: 074732 s8i a3, a7, 7 -40006bb4: 228b addi.n a2, a2, 8 -40006bb6: 778b addi.n a7, a7, 8 -40006bb8: 082d mov.n a2, a8 -40006bba: f01d retw.n -40006bbc: 947600 extui a7, a0, 6, 10 -40006bbf: 453204 excw -40006bc2: 551b00 extui a1, a0, 27, 6 -40006bc5: f01d retw.n -40006bc7: 84b600 extui a11, a0, 6, 9 -40006bca: 4532f1 l32r a15, 3ffd8094 <_start-0x27f6c> -40006bcd: 551b00 extui a1, a0, 27, 6 -40006bd0: 440b addi.n a4, a4, -1 -40006bd2: 286517 bbci a5, 1, 40006bfe <memset+0x1a> -40006bd5: e484b6 bltui a4, 8, 40006bbd <memmove+0x151> -40006bd8: 005532 s16i a3, a5, 0 -40006bdb: 552b addi.n a5, a5, 2 -40006bdd: fec442 addi a4, a4, -2 -40006be0: 000686 j 40006bfe <memset+0x1a> - ... - -40006be4 <memset>: -40006be4: 002136 entry a1, 16 -40006be7: 743030 extui a3, a3, 0, 8 -40006bea: 117380 slli a7, a3, 8 -40006bed: 203370 or a3, a3, a7 -40006bf0: 117300 slli a7, a3, 16 -40006bf3: 203370 or a3, a3, a7 -40006bf6: 025d mov.n a5, a2 -40006bf8: cce207 bbsi a2, 0, 40006bc8 <memmove+0x15c> -40006bfb: d6e217 bbsi a2, 1, 40006bd5 <memmove+0x169> -40006bfe: 417440 srli a7, a4, 4 -40006c01: 0a9776 loopnez a7, 40006c0f <memset+0x2b> -40006c04: 0539 s32i.n a3, a5, 0 -40006c06: 1539 s32i.n a3, a5, 4 -40006c08: 2539 s32i.n a3, a5, 8 -40006c0a: 3539 s32i.n a3, a5, 12 -40006c0c: 10c552 addi a5, a5, 16 -40006c0f: 066437 bbci a4, 3, 40006c19 <memset+0x35> -40006c12: 0539 s32i.n a3, a5, 0 -40006c14: 1539 s32i.n a3, a5, 4 -40006c16: 08c552 addi a5, a5, 8 -40006c19: 036427 bbci a4, 2, 40006c20 <memset+0x3c> -40006c1c: 0539 s32i.n a3, a5, 0 -40006c1e: 554b addi.n a5, a5, 4 -40006c20: 046417 bbci a4, 1, 40006c28 <memset+0x44> -40006c23: 005532 s16i a3, a5, 0 -40006c26: 552b addi.n a5, a5, 2 -40006c28: 026407 bbci a4, 0, 40006c2e <memset+0x4a> -40006c2b: 004532 s8i a3, a5, 0 -40006c2e: f01d retw.n - -40006c30 <__udivdi3>: -40006c30: 008136 entry a1, 64 -40006c33: 02ad mov.n a10, a2 -40006c35: 038d mov.n a8, a3 -40006c37: 0b2c movi.n a11, 32 -40006c39: 049d mov.n a9, a4 -40006c3b: 0a2516 beqz a5, 40006ce1 <__udivdi3+0xb1> -40006c3e: 07b357 bgeu a3, a5, 40006c49 <__udivdi3+0x19> -40006c41: 020c movi.n a2, 0 -40006c43: 030c movi.n a3, 0 -40006c45: f01d retw.n -40006c47: 900000 addx2 a0, a0, a0 -40006c4a: 1640f5 call12 4001d058 <__bss_start+0xd058> -40006c4d: 1e89 s32i.n a8, a14, 4 -40006c4f: c02b90 sub a2, a11, a9 -40006c52: 400200 ssr a2 -40006c55: 91f030 srl a15, a3 -40006c58: 401900 ssl a9 -40006c5b: 81c3a0 src a12, a3, a10 -40006c5e: 81b540 src a11, a5, a4 -40006c61: f480b0 extui a8, a11, 0, 16 -40006c64: f5d0b0 extui a13, a11, 16, 16 -40006c67: 404010 ssai 16 -40006c6a: c2efd0 quou a14, a15, a13 -40006c6d: 0e5d mov.n a5, a14 -40006c6f: 8238e0 mull a3, a8, a14 -40006c72: e2ffd0 remu a15, a15, a13 -40006c75: 81ffc0 src a15, a15, a12 -40006c78: 0f2d mov.n a2, a15 -40006c7a: 0ebf37 bgeu a15, a3, 40006c8c <__udivdi3+0x5c> -40006c7d: 5e0b addi.n a5, a14, -1 -40006c7f: 2bfa add.n a2, a11, a15 -40006c81: 0732b7 bltu a2, a11, 40006c8c <__udivdi3+0x5c> -40006c84: 04b237 bgeu a2, a3, 40006c8c <__udivdi3+0x5c> -40006c87: fece52 addi a5, a14, -2 -40006c8a: 2b2a add.n a2, a11, a2 -40006c8c: 115500 slli a5, a5, 16 -40006c8f: c03230 sub a3, a2, a3 -40006c92: 401900 ssl a9 -40006c95: a14400 sll a4, a4 -40006c98: c2e3d0 quou a14, a3, a13 -40006c9b: 0e2d mov.n a2, a14 -40006c9d: 8288e0 mull a8, a8, a14 -40006ca0: e233d0 remu a3, a3, a13 -40006ca3: 0bf3c0 depbits a12, a3, 16, 16 -40006ca6: 0c3d mov.n a3, a12 -40006ca8: 11bc87 bgeu a12, a8, 40006cbd <__udivdi3+0x8d> -40006cab: ffce22 addi a2, a14, -1 -40006cae: 803bc0 add a3, a11, a12 -40006cb1: 0833b7 bltu a3, a11, 40006cbd <__udivdi3+0x8d> -40006cb4: 05b387 bgeu a3, a8, 40006cbd <__udivdi3+0x8d> -40006cb7: 803b30 add a3, a11, a3 -40006cba: fece22 addi a2, a14, -2 -40006cbd: 202250 or a2, a2, a5 -40006cc0: 825240 mull a5, a2, a4 -40006cc3: a24240 muluh a4, a2, a4 -40006cc6: c03380 sub a3, a3, a8 -40006cc9: 0b3347 bltu a3, a4, 40006cd8 <__udivdi3+0xa8> -40006ccc: c06340 sub a6, a3, a4 -40006ccf: 083656 bnez a6, 40006d56 <__udivdi3+0x126> -40006cd2: a17a00 sll a7, a10 -40006cd5: 7db757 bgeu a7, a5, 40006d56 <__udivdi3+0x126> -40006cd8: 220b addi.n a2, a2, -1 -40006cda: 030c movi.n a3, 0 -40006cdc: f01d retw.n -40006cde: 000000 ill -40006ce1: 75b347 bgeu a3, a4, 40006d5a <__udivdi3+0x12a> -40006ce4: 40f450 nsau a5, a4 -40006ce7: a58c beqz.n a5, 40006cf5 <__udivdi3+0xc5> -40006ce9: 401500 ssl a5 -40006cec: a19400 sll a9, a4 -40006cef: 813320 src a3, a3, a2 -40006cf2: a12200 sll a2, a2 -40006cf5: f44090 extui a4, a9, 0, 16 -40006cf8: 404010 ssai 16 -40006cfb: f55090 extui a5, a9, 16, 16 -40006cfe: e2c350 remu a12, a3, a5 -40006d01: c2b350 quou a11, a3, a5 -40006d04: 0bad mov.n a10, a11 -40006d06: 81cc20 src a12, a12, a2 -40006d09: 8284b0 mull a8, a4, a11 -40006d0c: 0c3d mov.n a3, a12 -40006d0e: 0ebc87 bgeu a12, a8, 40006d20 <__udivdi3+0xf0> -40006d11: ab0b addi.n a10, a11, -1 -40006d13: 3c9a add.n a3, a12, a9 -40006d15: 073397 bltu a3, a9, 40006d20 <__udivdi3+0xf0> -40006d18: 04b387 bgeu a3, a8, 40006d20 <__udivdi3+0xf0> -40006d1b: fecba2 addi a10, a11, -2 -40006d1e: 393a add.n a3, a9, a3 -40006d20: c0d380 sub a13, a3, a8 -40006d23: c28d50 quou a8, a13, a5 -40006d26: 083d mov.n a3, a8 -40006d28: 824480 mull a4, a4, a8 -40006d2b: e2dd50 remu a13, a13, a5 -40006d2e: 0bfd20 depbits a2, a13, 16, 16 -40006d31: 17b247 bgeu a2, a4, 40006d4c <__udivdi3+0x11c> -40006d34: 380b addi.n a3, a8, -1 -40006d36: 229a add.n a2, a2, a9 -40006d38: 103297 bltu a2, a9, 40006d4c <__udivdi3+0x11c> -40006d3b: 0db247 bgeu a2, a4, 40006d4c <__udivdi3+0x11c> -40006d3e: 112a00 slli a2, a10, 16 -40006d41: fec832 addi a3, a8, -2 -40006d44: 202320 or a2, a3, a2 -40006d47: 030c movi.n a3, 0 -40006d49: f01d retw.n -40006d4b: 2a0000 depbits a0, a0, 2, 1 -40006d4e: 232011 l32r a1, 3ffcf9d0 <_start-0x30630> -40006d51: 030c20 rsr.scompare1 a2 -40006d54: f01d retw.n -40006d56: 030c movi.n a3, 0 -40006d58: f01d retw.n -40006d5a: 34cc bnez.n a4, 40006d61 <__udivdi3+0x131> -40006d5c: 190c movi.n a9, 1 -40006d5e: c29940 quou a9, a9, a4 -40006d61: 40f940 nsau a4, a9 -40006d64: 0ec416 beqz a4, 40006e54 <__udivdi3+0x224> -40006d67: 401400 ssl a4 -40006d6a: c06b40 sub a6, a11, a4 -40006d6d: a19900 sll a9, a9 -40006d70: 400600 ssr a6 -40006d73: 91d080 srl a13, a8 -40006d76: 401400 ssl a4 -40006d79: a15800 sll a5, a8 -40006d7c: 400600 ssr a6 -40006d7f: 9130a0 srl a3, a10 -40006d82: 401400 ssl a4 -40006d85: 203350 or a3, a3, a5 -40006d88: f44090 extui a4, a9, 0, 16 -40006d8b: a12a00 sll a2, a10 -40006d8e: f55090 extui a5, a9, 16, 16 -40006d91: 404010 ssai 16 -40006d94: c2cd50 quou a12, a13, a5 -40006d97: 0cbd mov.n a11, a12 -40006d99: e2dd50 remu a13, a13, a5 -40006d9c: 81dd30 src a13, a13, a3 -40006d9f: 82a4c0 mull a10, a4, a12 -40006da2: 0d8d mov.n a8, a13 -40006da4: 10bda7 bgeu a13, a10, 40006db8 <__udivdi3+0x188> -40006da7: ffccb2 addi a11, a12, -1 -40006daa: 808d90 add a8, a13, a9 -40006dad: 073897 bltu a8, a9, 40006db8 <__udivdi3+0x188> -40006db0: 04b8a7 bgeu a8, a10, 40006db8 <__udivdi3+0x188> -40006db3: feccb2 addi a11, a12, -2 -40006db6: 898a add.n a8, a9, a8 -40006db8: c0d8a0 sub a13, a8, a10 -40006dbb: e2ed50 remu a14, a13, a5 -40006dbe: 0bfe30 depbits a3, a14, 16, 16 -40006dc1: c2dd50 quou a13, a13, a5 -40006dc4: 0dad mov.n a10, a13 -40006dc6: 82c4d0 mull a12, a4, a13 -40006dc9: 038d mov.n a8, a3 -40006dcb: 0eb3c7 bgeu a3, a12, 40006ddd <__udivdi3+0x1ad> -40006dce: ad0b addi.n a10, a13, -1 -40006dd0: 839a add.n a8, a3, a9 -40006dd2: 073897 bltu a8, a9, 40006ddd <__udivdi3+0x1ad> -40006dd5: 04b8c7 bgeu a8, a12, 40006ddd <__udivdi3+0x1ad> -40006dd8: fecda2 addi a10, a13, -2 -40006ddb: 898a add.n a8, a9, a8 -40006ddd: c038c0 sub a3, a8, a12 -40006de0: 11bb00 slli a11, a11, 16 -40006de3: 20bab0 or a11, a10, a11 -40006de6: 404010 ssai 16 -40006de9: e2d350 remu a13, a3, a5 -40006dec: c2c350 quou a12, a3, a5 -40006def: 8284c0 mull a8, a4, a12 -40006df2: 0c3d mov.n a3, a12 -40006df4: 81dd20 src a13, a13, a2 -40006df7: 0dad mov.n a10, a13 -40006df9: 0fbd87 bgeu a13, a8, 40006e0c <__udivdi3+0x1dc> -40006dfc: 3c0b addi.n a3, a12, -1 -40006dfe: ad9a add.n a10, a13, a9 -40006e00: 083a97 bltu a10, a9, 40006e0c <__udivdi3+0x1dc> -40006e03: 05ba87 bgeu a10, a8, 40006e0c <__udivdi3+0x1dc> -40006e06: fecc32 addi a3, a12, -2 -40006e09: 80a9a0 add a10, a9, a10 -40006e0c: c0ea80 sub a14, a10, a8 -40006e0f: c28e50 quou a8, a14, a5 -40006e12: e2ee50 remu a14, a14, a5 -40006e15: 0bfe20 depbits a2, a14, 16, 16 -40006e18: 825480 mull a5, a4, a8 -40006e1b: 084d mov.n a4, a8 -40006e1d: 23b257 bgeu a2, a5, 40006e44 <__udivdi3+0x214> -40006e20: 480b addi.n a4, a8, -1 -40006e22: 229a add.n a2, a2, a9 -40006e24: 1c3297 bltu a2, a9, 40006e44 <__udivdi3+0x214> -40006e27: 19b257 bgeu a2, a5, 40006e44 <__udivdi3+0x214> -40006e2a: 113300 slli a3, a3, 16 -40006e2d: fec822 addi a2, a8, -2 -40006e30: 202230 or a2, a2, a3 -40006e33: 0b3d mov.n a3, a11 -40006e35: f01d retw.n -40006e37: 353700 extui a3, a0, 23, 4 -40006e3a: 324702 s8i a0, a7, 50 -40006e3d: 0f .byte 0xf -40006e3e: 120c movi.n a2, 1 -40006e40: 030c movi.n a3, 0 -40006e42: f01d retw.n -40006e44: 112300 slli a2, a3, 16 -40006e47: 202420 or a2, a4, a2 -40006e4a: 0b3d mov.n a3, a11 -40006e4c: f01d retw.n -40006e4e: 020c movi.n a2, 0 -40006e50: 030c movi.n a3, 0 -40006e52: f01d retw.n -40006e54: c03890 sub a3, a8, a9 -40006e57: f55090 extui a5, a9, 16, 16 -40006e5a: f44090 extui a4, a9, 0, 16 -40006e5d: 1b0c movi.n a11, 1 -40006e5f: ffe0c6 j 40006de6 <__udivdi3+0x1b6> - ... - -40006e64 <__umoddi3>: -40006e64: 00a136 entry a1, 80 -40006e67: 029d mov.n a9, a2 -40006e69: 03ad mov.n a10, a3 -40006e6b: 0b2c movi.n a11, 32 -40006e6d: 048d mov.n a8, a4 -40006e6f: 0d2516 beqz a5, 40006f45 <__umoddi3+0xe1> -40006e72: 02b357 bgeu a3, a5, 40006e78 <__umoddi3+0x14> -40006e75: 0031c6 j 40006f40 <__umoddi3+0xdc> -40006e78: 40f580 nsau a8, a5 -40006e7b: 151816 beqz a8, 40006fd0 <__umoddi3+0x16c> -40006e7e: c0eb80 sub a14, a11, a8 -40006e81: 400e00 ssr a14 -40006e84: 916030 srl a6, a3 -40006e87: 401800 ssl a8 -40006e8a: 81c320 src a12, a3, a2 -40006e8d: 815540 src a5, a5, a4 -40006e90: f4b050 extui a11, a5, 0, 16 -40006e93: f5d050 extui a13, a5, 16, 16 -40006e96: 404010 ssai 16 -40006e99: c2f6d0 quou a15, a6, a13 -40006e9c: 0f9d mov.n a9, a15 -40006e9e: 82abf0 mull a10, a11, a15 -40006ea1: e266d0 remu a6, a6, a13 -40006ea4: 8166c0 src a6, a6, a12 -40006ea7: 063d mov.n a3, a6 -40006ea9: 0fb6a7 bgeu a6, a10, 40006ebc <__umoddi3+0x58> -40006eac: 9f0b addi.n a9, a15, -1 -40006eae: 356a add.n a3, a5, a6 -40006eb0: 083357 bltu a3, a5, 40006ebc <__umoddi3+0x58> -40006eb3: 05b3a7 bgeu a3, a10, 40006ebc <__umoddi3+0x58> -40006eb6: fecf92 addi a9, a15, -2 -40006eb9: 803530 add a3, a5, a3 -40006ebc: 401800 ssl a8 -40006ebf: 119900 slli a9, a9, 16 -40006ec2: c063a0 sub a6, a3, a10 -40006ec5: c2f6d0 quou a15, a6, a13 -40006ec8: 0fad mov.n a10, a15 -40006eca: 82bbf0 mull a11, a11, a15 -40006ecd: e266d0 remu a6, a6, a13 -40006ed0: 0bf6c0 depbits a12, a6, 16, 16 -40006ed3: 0c3d mov.n a3, a12 -40006ed5: 0fbcb7 bgeu a12, a11, 40006ee8 <__umoddi3+0x84> -40006ed8: af0b addi.n a10, a15, -1 -40006eda: 35ca add.n a3, a5, a12 -40006edc: 083357 bltu a3, a5, 40006ee8 <__umoddi3+0x84> -40006edf: 05b3b7 bgeu a3, a11, 40006ee8 <__umoddi3+0x84> -40006ee2: fecfa2 addi a10, a15, -2 -40006ee5: 803530 add a3, a5, a3 -40006ee8: c033b0 sub a3, a3, a11 -40006eeb: 209a90 or a9, a10, a9 -40006eee: a1b400 sll a11, a4 -40006ef1: 8249b0 mull a4, a9, a11 -40006ef4: a299b0 muluh a9, a9, a11 -40006ef7: c0b4b0 sub a11, a4, a11 -40006efa: 09ad mov.n a10, a9 -40006efc: 0d3397 bltu a3, a9, 40006f0d <__umoddi3+0xa9> -40006eff: a12200 sll a2, a2 -40006f02: 199397 bne a3, a9, 40006f1f <__umoddi3+0xbb> -40006f05: 16b247 bgeu a2, a4, 40006f1f <__umoddi3+0xbb> -40006f08: 000106 j 40006f10 <__umoddi3+0xac> -40006f0b: 000000 ill -40006f0e: 0ca122 movi a2, 0x10c -40006f11: 5019 s32i.n a1, a0, 20 -40006f13: c0ca add.n a12, a0, a12 -40006f15: 0134b7 bltu a4, a11, 40006f1a <__umoddi3+0xb6> -40006f18: 090c movi.n a9, 0 -40006f1a: 0b4d mov.n a4, a11 -40006f1c: c09c90 sub a9, a12, a9 -40006f1f: c03390 sub a3, a3, a9 -40006f22: c04240 sub a4, a2, a4 -40006f25: 02b247 bgeu a2, a4, 40006f2b <__umoddi3+0xc7> -40006f28: 002346 j 40006fb9 <__umoddi3+0x155> -40006f2b: 401e00 ssl a14 -40006f2e: a16300 sll a6, a3 -40006f31: 400800 ssr a8 -40006f34: 913030 srl a3, a3 -40006f37: 912040 srl a2, a4 -40006f3a: 202260 or a2, a2, a6 -40006f3d: f01d retw.n -40006f3f: f01d00 subx8 a1, a13, a0 -40006f42: 000000 ill -40006f45: 023347 bltu a3, a4, 40006f4b <__umoddi3+0xe7> -40006f48: 002986 j 40006ff2 <__umoddi3+0x18e> -40006f4b: 40f450 nsau a5, a4 -40006f4e: a58c beqz.n a5, 40006f5c <__umoddi3+0xf8> -40006f50: 401500 ssl a5 -40006f53: a18400 sll a8, a4 -40006f56: 813320 src a3, a3, a2 -40006f59: a19200 sll a9, a2 -40006f5c: f42080 extui a2, a8, 0, 16 -40006f5f: 404010 ssai 16 -40006f62: f54080 extui a4, a8, 16, 16 -40006f65: c27340 quou a7, a3, a4 -40006f68: e2b340 remu a11, a3, a4 -40006f6b: 81bb90 src a11, a11, a9 -40006f6e: 823270 mull a3, a2, a7 -40006f71: 0bad mov.n a10, a11 -40006f73: 09bb37 bgeu a11, a3, 40006f80 <__umoddi3+0x11c> -40006f76: ab8a add.n a10, a11, a8 -40006f78: 043a87 bltu a10, a8, 40006f80 <__umoddi3+0x11c> -40006f7b: 01ba37 bgeu a10, a3, 40006f80 <__umoddi3+0x11c> -40006f7e: a8aa add.n a10, a8, a10 -40006f80: c06a30 sub a6, a10, a3 -40006f83: e2c640 remu a12, a6, a4 -40006f86: 0bfc90 depbits a9, a12, 16, 16 -40006f89: c24640 quou a4, a6, a4 -40006f8c: 824240 mull a4, a2, a4 -40006f8f: 093d mov.n a3, a9 -40006f91: 17b947 bgeu a9, a4, 40006fac <__umoddi3+0x148> -40006f94: 398a add.n a3, a9, a8 -40006f96: 123387 bltu a3, a8, 40006fac <__umoddi3+0x148> -40006f99: 0fb347 bgeu a3, a4, 40006fac <__umoddi3+0x148> -40006f9c: 400500 ssr a5 -40006f9f: 383a add.n a3, a8, a3 -40006fa1: c02340 sub a2, a3, a4 -40006fa4: 912020 srl a2, a2 -40006fa7: 030c movi.n a3, 0 -40006fa9: f01d retw.n -40006fab: 234000 sext a4, a0, 7 -40006fae: 0500c0 extui a0, a12, 16, 1 -40006fb1: 030c40 rsr.scompare1 a4 -40006fb4: 912020 srl a2, a2 -40006fb7: f01d retw.n -40006fb9: 401e00 ssl a14 -40006fbc: 330b addi.n a3, a3, -1 -40006fbe: a16300 sll a6, a3 -40006fc1: 400800 ssr a8 -40006fc4: 913030 srl a3, a3 -40006fc7: 912040 srl a2, a4 -40006fca: 202260 or a2, a2, a6 -40006fcd: f01d retw.n -40006fcf: 353700 extui a3, a0, 23, 4 -40006fd2: b24705 call0 3ffb9444 <_start-0x46bbc> -40006fd5: 3ac602 addi a0, a6, 58 -40006fd8: 424000 xorb b4, b0, b0 -40006fdb: 3247c0 orbc b4, b7, b12 -40006fde: 2d08 l32i.n a0, a13, 8 -40006fe0: 6a5004 excw -40006fe3: 063dc0 excw -40006fe6: f01d retw.n -40006fe8: 042d mov.n a2, a4 -40006fea: c06a50 sub a6, a10, a5 -40006fed: 360b addi.n a3, a6, -1 -40006fef: f01d retw.n -40006ff1: 34cc00 extui a12, a0, 12, 4 -40006ff4: 180c movi.n a8, 1 -40006ff6: c28840 quou a8, a8, a4 -40006ff9: 40f850 nsau a5, a8 -40006ffc: 0c8516 beqz a5, 400070c8 <__umoddi3+0x264> -40006fff: 401500 ssl a5 -40007002: c06b50 sub a6, a11, a5 -40007005: a18800 sll a8, a8 -40007008: 400600 ssr a6 -4000700b: 91c0a0 srl a12, a10 -4000700e: 401500 ssl a5 -40007011: a14a00 sll a4, a10 -40007014: 400600 ssr a6 -40007017: 913020 srl a3, a2 -4000701a: 203340 or a3, a3, a4 -4000701d: 401500 ssl a5 -40007020: a19200 sll a9, a2 -40007023: f54080 extui a4, a8, 16, 16 -40007026: f42080 extui a2, a8, 0, 16 -40007029: c2bc40 quou a11, a12, a4 -4000702c: 404010 ssai 16 -4000702f: e2cc40 remu a12, a12, a4 -40007032: 81cc30 src a12, a12, a3 -40007035: 82b2b0 mull a11, a2, a11 -40007038: 0cad mov.n a10, a12 -4000703a: 0abcb7 bgeu a12, a11, 40007048 <__umoddi3+0x1e4> -4000703d: 80ac80 add a10, a12, a8 -40007040: 043a87 bltu a10, a8, 40007048 <__umoddi3+0x1e4> -40007043: 01bab7 bgeu a10, a11, 40007048 <__umoddi3+0x1e4> -40007046: a8aa add.n a10, a8, a10 -40007048: c0bab0 sub a11, a10, a11 -4000704b: e2cb40 remu a12, a11, a4 -4000704e: 0bfc30 depbits a3, a12, 16, 16 -40007051: c2bb40 quou a11, a11, a4 -40007054: 82b2b0 mull a11, a2, a11 -40007057: 20a330 or a10, a3, a3 -4000705a: 0bb3b7 bgeu a3, a11, 40007069 <__umoddi3+0x205> -4000705d: 80a380 add a10, a3, a8 -40007060: 053a87 bltu a10, a8, 40007069 <__umoddi3+0x205> -40007063: 02bab7 bgeu a10, a11, 40007069 <__umoddi3+0x205> -40007066: 80a8a0 add a10, a8, a10 -40007069: c03ab0 sub a3, a10, a11 -4000706c: e2b340 remu a11, a3, a4 -4000706f: 404010 ssai 16 -40007072: c23340 quou a3, a3, a4 -40007075: 81bb90 src a11, a11, a9 -40007078: 823230 mull a3, a2, a3 -4000707b: 0bad mov.n a10, a11 -4000707d: 0bbb37 bgeu a11, a3, 4000708c <__umoddi3+0x228> -40007080: 80ab80 add a10, a11, a8 -40007083: 053a87 bltu a10, a8, 4000708c <__umoddi3+0x228> -40007086: 02ba37 bgeu a10, a3, 4000708c <__umoddi3+0x228> -40007089: 80a8a0 add a10, a8, a10 -4000708c: c07a30 sub a7, a10, a3 -4000708f: e26740 remu a6, a7, a4 -40007092: 0bf690 depbits a9, a6, 16, 16 -40007095: c24740 quou a4, a7, a4 -40007098: 824240 mull a4, a2, a4 -4000709b: 093d mov.n a3, a9 -4000709d: 17b947 bgeu a9, a4, 400070b8 <__umoddi3+0x254> -400070a0: 398a add.n a3, a9, a8 -400070a2: 123387 bltu a3, a8, 400070b8 <__umoddi3+0x254> -400070a5: 0fb347 bgeu a3, a4, 400070b8 <__umoddi3+0x254> -400070a8: 400500 ssr a5 -400070ab: 383a add.n a3, a8, a3 -400070ad: c02340 sub a2, a3, a4 -400070b0: 912020 srl a2, a2 -400070b3: 030c movi.n a3, 0 -400070b5: f01d retw.n -400070b7: 234000 sext a4, a0, 7 -400070ba: 0500c0 extui a0, a12, 16, 1 -400070bd: 030c40 rsr.scompare1 a4 -400070c0: 912020 srl a2, a2 -400070c3: f01d retw.n -400070c5: f01d retw.n -400070c7: 3a8000 depbits a0, a0, 3, 9 -400070ca: 4080c0 rotw -4 -400070cd: 2080f5 call12 400278dc <__bss_start+0x178dc> -400070d0: e5c6f4 excw -400070d3: ff .byte 0xff -400070d4: ffc000 excw -400070d7: 3f .byte 0x3f -400070d8: ffc864 excw -400070db: 3f .byte 0x3f -400070dc: 007104 excw -400070df: c87040 excw -400070e2: ff .byte 0xff -400070e3: 3f .byte 0x3f -400070e4: ffcd40 excw -400070e7: 3f .byte 0x3f -400070e8: 007974 excw -400070eb: cd4040 excw -400070ee: ff .byte 0xff -400070ef: 3f .byte 0x3f -400070f0: ffcd44 excw -400070f3: 3f .byte 0x3f -400070f4: 007e44 excw -400070f7: 000040 excw - ... -4000710a: b80000 excw -4000710d: 400066 bnei a0, -1, 40007151 <__umoddi3+0x2ed> -40007110: 0818 l32i.n a1, a8, 0 -40007112: b84000 excw -40007115: 400066 bnei a0, -1, 40007159 <__umoddi3+0x2f5> -40007118: 66b8 l32i.n a11, a6, 24 -4000711a: 9c4000 excw -4000711d: 0008 l32i.n a0, a0, 0 -4000711f: 001040 movsp a4, a0 -40007122: b84000 excw -40007125: 400066 bnei a0, -1, 40007169 <__umoddi3+0x305> -40007128: 66b8 l32i.n a11, a6, 24 -4000712a: b84000 excw -4000712d: 400066 bnei a0, -1, 40007171 <__umoddi3+0x30d> -40007130: 66b8 l32i.n a11, a6, 24 -40007132: b84000 excw -40007135: 400066 bnei a0, -1, 40007179 <__umoddi3+0x315> -40007138: 66b8 l32i.n a11, a6, 24 -4000713a: 304000 xor a4, a0, a0 -4000713d: 0e .byte 0xe -4000713e: 304000 xor a4, a0, a0 -40007141: 0e .byte 0xe -40007142: 304000 xor a4, a0, a0 -40007145: 0e .byte 0xe -40007146: 304000 xor a4, a0, a0 -40007149: 0e .byte 0xe -4000714a: b84000 excw -4000714d: 400066 bnei a0, -1, 40007191 <__umoddi3+0x32d> -40007150: 66b8 l32i.n a11, a6, 24 -40007152: b84000 excw -40007155: 400066 bnei a0, -1, 40007199 <__umoddi3+0x335> -40007158: 66b8 l32i.n a11, a6, 24 -4000715a: b84000 excw -4000715d: 400066 bnei a0, -1, 400071a1 <__umoddi3+0x33d> -40007160: 66b8 l32i.n a11, a6, 24 -40007162: b84000 excw -40007165: 400066 bnei a0, -1, 400071a9 <__umoddi3+0x345> -40007168: 66b8 l32i.n a11, a6, 24 -4000716a: b84000 excw -4000716d: 400066 bnei a0, -1, 400071b1 <__umoddi3+0x34d> -40007170: 66b8 l32i.n a11, a6, 24 -40007172: b84000 excw -40007175: 400066 bnei a0, -1, 400071b9 <__umoddi3+0x355> -40007178: 66b8 l32i.n a11, a6, 24 -4000717a: b84000 excw -4000717d: 400066 bnei a0, -1, 400071c1 <__umoddi3+0x35d> -40007180: 66b8 l32i.n a11, a6, 24 -40007182: b84000 excw -40007185: 400066 bnei a0, -1, 400071c9 <__umoddi3+0x365> -40007188: 66b8 l32i.n a11, a6, 24 -4000718a: b84000 excw -4000718d: 400066 bnei a0, -1, 400071d1 <__umoddi3+0x36d> -40007190: 66b8 l32i.n a11, a6, 24 -40007192: b84000 excw -40007195: 400066 bnei a0, -1, 400071d9 <__umoddi3+0x375> -40007198: 66b8 l32i.n a11, a6, 24 -4000719a: b84000 excw -4000719d: 400066 bnei a0, -1, 400071e1 <__umoddi3+0x37d> -400071a0: 66b8 l32i.n a11, a6, 24 -400071a2: b84000 excw -400071a5: 400066 bnei a0, -1, 400071e9 <__umoddi3+0x385> -400071a8: 66b8 l32i.n a11, a6, 24 -400071aa: b84000 excw -400071ad: 400066 bnei a0, -1, 400071f1 <__umoddi3+0x38d> -400071b0: 66b8 l32i.n a11, a6, 24 -400071b2: b84000 excw -400071b5: 400066 bnei a0, -1, 400071f9 <__umoddi3+0x395> -400071b8: 66b8 l32i.n a11, a6, 24 -400071ba: b84000 excw -400071bd: 400066 bnei a0, -1, 40007201 <__umoddi3+0x39d> -400071c0: 66b8 l32i.n a11, a6, 24 -400071c2: b84000 excw -400071c5: 400066 bnei a0, -1, 40007209 <__umoddi3+0x3a5> -400071c8: 66b8 l32i.n a11, a6, 24 -400071ca: b84000 excw -400071cd: 400066 bnei a0, -1, 40007211 <__umoddi3+0x3ad> -400071d0: 66b8 l32i.n a11, a6, 24 -400071d2: b84000 excw -400071d5: 400066 bnei a0, -1, 40007219 <__umoddi3+0x3b5> -400071d8: 66b8 l32i.n a11, a6, 24 -400071da: b84000 excw -400071dd: 400066 bnei a0, -1, 40007221 <__umoddi3+0x3bd> -400071e0: 66b8 l32i.n a11, a6, 24 -400071e2: b84000 excw -400071e5: 400066 bnei a0, -1, 40007229 <__umoddi3+0x3c5> -400071e8: 66b8 l32i.n a11, a6, 24 -400071ea: b84000 excw -400071ed: 400066 bnei a0, -1, 40007231 <__umoddi3+0x3cd> -400071f0: 66b8 l32i.n a11, a6, 24 -400071f2: b84000 excw -400071f5: 400066 bnei a0, -1, 40007239 <__umoddi3+0x3d5> -400071f8: 66b8 l32i.n a11, a6, 24 -400071fa: b84000 excw -400071fd: 400066 bnei a0, -1, 40007241 <__umoddi3+0x3dd> -40007200: 66b8 l32i.n a11, a6, 24 -40007202: b84000 excw -40007205: 400066 bnei a0, -1, 40007249 <__umoddi3+0x3e5> -40007208: 66b8 l32i.n a11, a6, 24 -4000720a: 684000 excw -4000720d: 400066 bnei a0, -1, 40007251 <__umoddi3+0x3ed> -40007210: 6668 l32i.n a6, a6, 24 -40007212: 684000 excw -40007215: 400066 bnei a0, -1, 40007259 <__umoddi3+0x3f5> -40007218: 6668 l32i.n a6, a6, 24 -4000721a: 684000 excw -4000721d: 400066 bnei a0, -1, 40007261 <__umoddi3+0x3fd> -40007220: 6668 l32i.n a6, a6, 24 -40007222: 684000 excw -40007225: 400066 bnei a0, -1, 40007269 <__umoddi3+0x405> -40007228: 6668 l32i.n a6, a6, 24 -4000722a: 684000 excw -4000722d: 400066 bnei a0, -1, 40007271 <__umoddi3+0x40d> -40007230: 6668 l32i.n a6, a6, 24 -40007232: 684000 excw -40007235: 400066 bnei a0, -1, 40007279 <__umoddi3+0x415> -40007238: 6668 l32i.n a6, a6, 24 -4000723a: 684000 excw -4000723d: 400066 bnei a0, -1, 40007281 <__umoddi3+0x41d> -40007240: 6668 l32i.n a6, a6, 24 -40007242: 684000 excw -40007245: 400066 bnei a0, -1, 40007289 <__umoddi3+0x425> -40007248: 6668 l32i.n a6, a6, 24 -4000724a: 684000 excw -4000724d: 400066 bnei a0, -1, 40007291 <__umoddi3+0x42d> -40007250: 6668 l32i.n a6, a6, 24 -40007252: 684000 excw -40007255: 400066 bnei a0, -1, 40007299 <__umoddi3+0x435> -40007258: 6668 l32i.n a6, a6, 24 -4000725a: 684000 excw -4000725d: 400066 bnei a0, -1, 400072a1 <__umoddi3+0x43d> -40007260: 6668 l32i.n a6, a6, 24 -40007262: 684000 excw -40007265: 400066 bnei a0, -1, 400072a9 <__umoddi3+0x445> -40007268: 6668 l32i.n a6, a6, 24 -4000726a: 684000 excw -4000726d: 400066 bnei a0, -1, 400072b1 <__umoddi3+0x44d> -40007270: 6668 l32i.n a6, a6, 24 -40007272: 684000 excw -40007275: 400066 bnei a0, -1, 400072b9 <__umoddi3+0x455> -40007278: 6668 l32i.n a6, a6, 24 -4000727a: 684000 excw -4000727d: 400066 bnei a0, -1, 400072c1 <__umoddi3+0x45d> -40007280: 6668 l32i.n a6, a6, 24 -40007282: 684000 excw -40007285: 400066 bnei a0, -1, 400072c9 <__umoddi3+0x465> -40007288: 6668 l32i.n a6, a6, 24 -4000728a: 684000 excw -4000728d: 400066 bnei a0, -1, 400072d1 <__umoddi3+0x46d> -40007290: 6668 l32i.n a6, a6, 24 -40007292: 684000 excw -40007295: 400066 bnei a0, -1, 400072d9 <__umoddi3+0x475> -40007298: 6668 l32i.n a6, a6, 24 -4000729a: 684000 excw -4000729d: 400066 bnei a0, -1, 400072e1 <__umoddi3+0x47d> -400072a0: 6668 l32i.n a6, a6, 24 -400072a2: 684000 excw -400072a5: 400066 bnei a0, -1, 400072e9 <__umoddi3+0x485> -400072a8: 6668 l32i.n a6, a6, 24 -400072aa: 684000 excw -400072ad: 400066 bnei a0, -1, 400072f1 <__umoddi3+0x48d> -400072b0: 6668 l32i.n a6, a6, 24 -400072b2: 684000 excw -400072b5: 400066 bnei a0, -1, 400072f9 <__umoddi3+0x495> -400072b8: 6668 l32i.n a6, a6, 24 -400072ba: 684000 excw -400072bd: 400066 bnei a0, -1, 40007301 <__umoddi3+0x49d> -400072c0: 6668 l32i.n a6, a6, 24 -400072c2: 684000 excw -400072c5: 400066 bnei a0, -1, 40007309 <__umoddi3+0x4a5> -400072c8: 6668 l32i.n a6, a6, 24 -400072ca: 684000 excw -400072cd: 400066 bnei a0, -1, 40007311 <__umoddi3+0x4ad> -400072d0: 6668 l32i.n a6, a6, 24 -400072d2: 684000 excw -400072d5: 400066 bnei a0, -1, 40007319 <__umoddi3+0x4b5> -400072d8: 6668 l32i.n a6, a6, 24 -400072da: 684000 excw -400072dd: 400066 bnei a0, -1, 40007321 <__umoddi3+0x4bd> -400072e0: 6668 l32i.n a6, a6, 24 -400072e2: 684000 excw -400072e5: 400066 bnei a0, -1, 40007329 <__umoddi3+0x4c5> -400072e8: 6668 l32i.n a6, a6, 24 -400072ea: 684000 excw -400072ed: 400066 bnei a0, -1, 40007331 <__umoddi3+0x4cd> -400072f0: 6668 l32i.n a6, a6, 24 -400072f2: 684000 excw -400072f5: 400066 bnei a0, -1, 40007339 <__umoddi3+0x4d5> -400072f8: 6668 l32i.n a6, a6, 24 -400072fa: 684000 excw -400072fd: 400066 bnei a0, -1, 40007341 <__umoddi3+0x4dd> -40007300: 6668 l32i.n a6, a6, 24 -40007302: 684000 excw -40007305: 400066 bnei a0, -1, 40007349 <__umoddi3+0x4e5> -40007308: 6668 l32i.n a6, a6, 24 -4000730a: 004000 break 0, 0 - ... -40007315: 000000 ill -40007318: ff .byte 0xff -40007319: ff .byte 0xff -4000731a: ff .byte 0xff -4000731b: ff .byte 0xff -4000731c: 0066b0 rsil a11, 6 -4000731f: 001f40 movsp a4, a15 -40007322: b00000 addx8 a0, a0, a0 -40007325: 400066 bnei a0, -1, 40007369 <__umoddi3+0x505> -40007328: 1e .byte 0x1e -40007329: 000000 ill -4000732c: 0066b0 rsil a11, 6 -4000732f: 001d40 movsp a4, a13 -40007332: b00000 addx8 a0, a0, a0 -40007335: 400066 bnei a0, -1, 40007379 <__umoddi3+0x515> -40007338: 001c movi.n a0, 16 -4000733a: b00000 addx8 a0, a0, a0 -4000733d: 400066 bnei a0, -1, 40007381 <__umoddi3+0x51d> -40007340: 001b addi.n a0, a0, 1 -40007342: b00000 addx8 a0, a0, a0 -40007345: 400066 bnei a0, -1, 40007389 <__umoddi3+0x525> -40007348: 001a add.n a0, a0, a1 -4000734a: b00000 addx8 a0, a0, a0 -4000734d: 400066 bnei a0, -1, 40007391 <__umoddi3+0x52d> -40007350: 0019 s32i.n a1, a0, 0 -40007352: b00000 addx8 a0, a0, a0 -40007355: 400066 bnei a0, -1, 40007399 <__umoddi3+0x535> -40007358: 0018 l32i.n a1, a0, 0 -4000735a: b00000 addx8 a0, a0, a0 -4000735d: 400066 bnei a0, -1, 400073a1 <__umoddi3+0x53d> -40007360: 000017 bnone a0, a1, 40007364 <__umoddi3+0x500> -40007363: 66b000 excw -40007366: 164000 excw -40007369: 000000 ill -4000736c: 0066b0 rsil a11, 6 -4000736f: 001540 movsp a4, a5 -40007372: b00000 addx8 a0, a0, a0 -40007375: 400066 bnei a0, -1, 400073b9 <__umoddi3+0x555> -40007378: 000014 excw -4000737b: 66b000 excw -4000737e: 134000 excw -40007381: 000000 ill -40007384: 0066b0 rsil a11, 6 -40007387: 001240 movsp a4, a2 -4000738a: b00000 addx8 a0, a0, a0 -4000738d: 400066 bnei a0, -1, 400073d1 <__umoddi3+0x56d> -40007390: 000011 l32r a1, 3ffc7390 <_start-0x38c70> -40007393: 66b000 excw -40007396: 104000 and a4, a0, a0 -40007399: 000000 ill -4000739c: 0066b0 rsil a11, 6 -4000739f: 000f40 excw -400073a2: b00000 addx8 a0, a0, a0 -400073a5: 400066 bnei a0, -1, 400073e9 <__umoddi3+0x585> -400073a8: 0e .byte 0xe -400073a9: 000000 ill -400073ac: 0066b0 rsil a11, 6 -400073af: 000d40 excw -400073b2: b00000 addx8 a0, a0, a0 -400073b5: 400066 bnei a0, -1, 400073f9 <__umoddi3+0x595> -400073b8: 000c movi.n a0, 0 -400073ba: b00000 addx8 a0, a0, a0 -400073bd: 400066 bnei a0, -1, 40007401 <__umoddi3+0x59d> -400073c0: 000b addi.n a0, a0, -1 -400073c2: b00000 addx8 a0, a0, a0 -400073c5: 400066 bnei a0, -1, 40007409 <__umoddi3+0x5a5> -400073c8: 000a add.n a0, a0, a0 -400073ca: b00000 addx8 a0, a0, a0 -400073cd: 400066 bnei a0, -1, 40007411 <__umoddi3+0x5ad> -400073d0: 0009 s32i.n a0, a0, 0 -400073d2: b00000 addx8 a0, a0, a0 -400073d5: 400066 bnei a0, -1, 40007419 <__umoddi3+0x5b5> -400073d8: 0008 l32i.n a0, a0, 0 -400073da: b00000 addx8 a0, a0, a0 -400073dd: 400066 bnei a0, -1, 40007421 <__umoddi3+0x5bd> -400073e0: 000007 bnone a0, a0, 400073e4 <__umoddi3+0x580> -400073e3: 66b000 excw -400073e6: 064000 excw -400073e9: 000000 ill -400073ec: 0066b0 rsil a11, 6 -400073ef: 000540 excw -400073f2: b00000 addx8 a0, a0, a0 -400073f5: 400066 bnei a0, -1, 40007439 <__umoddi3+0x5d5> -400073f8: 000004 excw -400073fb: 66b000 excw -400073fe: 034000 excw -40007401: 000000 ill -40007404: 0066b0 rsil a11, 6 -40007407: 000240 excw -4000740a: b00000 addx8 a0, a0, a0 -4000740d: 400066 bnei a0, -1, 40007451 <__umoddi3+0x5ed> -40007410: 000001 l32r a0, 3ffc7410 <_start-0x38bf0> -40007413: 66b000 excw -40007416: 004000 break 0, 0 -40007419: 000000 ill -4000741c: 81c000 src a12, a0, a0 -4000741f: ff .byte 0xff -40007420: 000000 ill -40007423: c00080 sub a0, a0, a8 -40007426: 00ff81 l32r a8, 3ffc7824 <_start-0x387dc> -40007429: 400000 ssr a0 -4000742c: 81c000 src a12, a0, a0 -4000742f: ff .byte 0xff -40007430: 000000 ill -40007433: c00020 sub a0, a0, a2 -40007436: 00ff81 l32r a8, 3ffc7834 <_start-0x387cc> -40007439: 100000 and a0, a0, a0 -4000743c: 81c000 src a12, a0, a0 -4000743f: ff .byte 0xff -40007440: 000000 ill -40007443: 0008 l32i.n a0, a0, 0 -40007445: ff81c0 excw -40007448: 000000 ill -4000744b: c00004 excw -4000744e: 00ff81 l32r a8, 3ffc784c <_start-0x387b4> -40007451: 020000 andb b0, b0, b0 -40007454: 81c000 src a12, a0, a0 -40007457: ff .byte 0xff -40007458: 000000 ill -4000745b: c00001 l32r a0, 3fff745c <_start-0x8ba4> -4000745e: 00ff81 l32r a8, 3ffc785c <_start-0x387a4> -40007461: 008000 any4 b0, b0:b1:b2:b3 -40007464: 81c000 src a12, a0, a0 -40007467: ff .byte 0xff -40007468: 400000 ssr a0 -4000746b: c00000 sub a0, a0, a0 -4000746e: 00ffc1 l32r a12, 3ffc786c <_start-0x38794> -40007471: 002000 isync -40007474: e1c000 excw -40007477: ff .byte 0xff -40007478: 100000 and a0, a0, a0 -4000747b: c00000 sub a0, a0, a0 -4000747e: 00fff1 l32r a15, 3ffc787c <_start-0x38784> -40007481: 000800 excw -40007484: f9c000 excw -40007487: ff .byte 0xff -40007488: 040000 extui a0, a0, 0, 1 -4000748b: c00000 sub a0, a0, a0 -4000748e: fffd excw -40007490: 020000 andb b0, b0, b0 -40007493: c00000 sub a0, a0, a0 -40007496: ff .byte 0xff -40007497: ff .byte 0xff -40007498: 010000 slli a0, a0, 32 -4000749b: c00000 sub a0, a0, a0 -4000749e: ff .byte 0xff -4000749f: ff .byte 0xff -400074a0: 008000 any4 b0, b0:b1:b2:b3 -400074a3: c00000 sub a0, a0, a0 -400074a6: ff .byte 0xff -400074a7: ff .byte 0xff -400074a8: 004000 break 0, 0 -400074ab: c00000 sub a0, a0, a0 -400074ae: ff .byte 0xff -400074af: ff .byte 0xff -400074b0: 002000 isync -400074b3: e00000 subx4 a0, a0, a0 -400074b6: ff .byte 0xff -400074b7: ff .byte 0xff -400074b8: 001000 movsp a0, a0 -400074bb: f00000 subx8 a0, a0, a0 -400074be: ff .byte 0xff -400074bf: ff .byte 0xff -400074c0: 000800 excw -400074c3: f80000 excw -400074c6: ff .byte 0xff -400074c7: ff .byte 0xff -400074c8: 000400 excw -400074cb: fc0000 excw -400074ce: ff .byte 0xff -400074cf: ff .byte 0xff -400074d0: 000200 excw -400074d3: fe0000 excw -400074d6: ff .byte 0xff -400074d7: ff .byte 0xff -400074d8: 000100 excw -400074db: ff0000 excw -400074de: ff .byte 0xff -400074df: ff .byte 0xff -400074e0: 000080 ret -400074e3: ff8000 excw -400074e6: ff .byte 0xff -400074e7: ff .byte 0xff -400074e8: 000040 excw -400074eb: ffc000 excw -400074ee: ff .byte 0xff -400074ef: ff .byte 0xff -400074f0: 000020 excw -400074f3: ffe000 excw -400074f6: ff .byte 0xff -400074f7: ff .byte 0xff -400074f8: 000010 excw -400074fb: fff000 excw -400074fe: ff .byte 0xff -400074ff: ff .byte 0xff -40007500: 0008 l32i.n a0, a0, 0 -40007502: f80000 excw -40007505: ff .byte 0xff -40007506: ff .byte 0xff -40007507: ff .byte 0xff -40007508: 000004 excw -4000750b: fffc00 excw -4000750e: ff .byte 0xff -4000750f: ff .byte 0xff -40007510: 000002 l8ui a0, a0, 0 -40007513: fffe00 excw -40007516: ff .byte 0xff -40007517: ff .byte 0xff -40007518: 000001 l32r a0, 3ffc7518 <_start-0x38ae8> -4000751b: 000000 ill -4000751e: 040000 extui a0, a0, 0, 1 -40007521: 3fffc7 bbsi a15, 28, 40007564 <__umoddi3+0x700> -40007524: c76c movi.n a7, -20 -40007526: ff .byte 0xff -40007527: 3f .byte 0x3f -40007528: ffc7d4 excw -4000752b: 3f .byte 0x3f - ... -40007550: ffca50 excw -40007553: 3f .byte 0x3f - ... -400075c4: 000001 l32r a0, 3ffc75c4 <_start-0x38a3c> -400075c7: 000000 ill -400075ca: 0e0000 read_impwire a0 -400075cd: abcd33 excw -400075d0: 6d1234 excw -400075d3: deece6 bgei a12, 128, 400075b5 <__umoddi3+0x751> -400075d6: 0b0005 call0 400125d8 <__bss_start+0x25d8> - ... -40007941: 000000 ill -40007944: c418 l32i.n a1, a4, 48 -40007946: ff .byte 0xff -40007947: 3f .byte 0x3f -40007948: 000d mov.n a0, a0 -4000794a: 4c0000 excw -4000794d: ffc8 l32i.n a12, a15, 60 -4000794f: 3f .byte 0x3f -40007950: ef .byte 0xef -40007951: 001540 movsp a4, a5 -40007954: 200000 or a0, a0, a0 -40007957: 000000 ill -4000795a: 000001 l32r a0, 3ffc795c <_start-0x386a4> -4000795d: 000010 excw -40007960: 000100 excw -40007963: ffff00 excw - ... -40007972: 180000 excw -40007975: 3fffc4 excw - ... -40007984: 737465 call8 4007b0cc <__bss_start+0x6b0cc> -40007987: 5f .byte 0x5f -40007988: 706e75 call12 40078070 <__bss_start+0x68070> -4000798b: 6b6361 l32r a6, 3ffe2718 <_start-0x1d8e8> -4000798e: 5f .byte 0x5f -4000798f: 616c66 bnei a12, 6, 400079f4 <__umoddi3+0xb90> -40007992: 5f6873 excw -40007995: 646f63 excw -40007998: 000065 call8 400079a0 <__umoddi3+0xb3c> - ... -400079a3: 26b300 excw -400079a6: 684000 excw -400079a9: 400024 excw -400079ac: 2468 l32i.n a6, a4, 8 -400079ae: 684000 excw -400079b1: 400024 excw -400079b4: 2468 l32i.n a6, a4, 8 -400079b6: 684000 excw -400079b9: 400024 excw -400079bc: 2468 l32i.n a6, a4, 8 -400079be: 684000 excw -400079c1: 400024 excw -400079c4: 2468 l32i.n a6, a4, 8 -400079c6: 684000 excw -400079c9: 400024 excw -400079cc: 2468 l32i.n a6, a4, 8 -400079ce: 684000 excw -400079d1: 400024 excw -400079d4: 2468 l32i.n a6, a4, 8 -400079d6: 684000 excw -400079d9: 400024 excw -400079dc: 2468 l32i.n a6, a4, 8 -400079de: 684000 excw -400079e1: 400024 excw -400079e4: 2468 l32i.n a6, a4, 8 -400079e6: 684000 excw -400079e9: 400024 excw -400079ec: 2468 l32i.n a6, a4, 8 -400079ee: 684000 excw -400079f1: 400024 excw -400079f4: 2468 l32i.n a6, a4, 8 -400079f6: 684000 excw -400079f9: 400024 excw -400079fc: 2468 l32i.n a6, a4, 8 -400079fe: 684000 excw -40007a01: 400024 excw -40007a04: 2468 l32i.n a6, a4, 8 -40007a06: 684000 excw -40007a09: 400024 excw -40007a0c: 2468 l32i.n a6, a4, 8 -40007a0e: 684000 excw -40007a11: 400024 excw -40007a14: 2468 l32i.n a6, a4, 8 -40007a16: 684000 excw -40007a19: 400024 excw -40007a1c: 002681 l32r a8, 3ffc7ab4 <_start-0x3854c> -40007a1f: 253840 extui a3, a4, 24, 3 -40007a22: 684000 excw -40007a25: 400024 excw -40007a28: 2468 l32i.n a6, a4, 8 -40007a2a: 684000 excw -40007a2d: 400024 excw -40007a30: 2468 l32i.n a6, a4, 8 -40007a32: 684000 excw -40007a35: 400024 excw -40007a38: 2468 l32i.n a6, a4, 8 -40007a3a: 684000 excw -40007a3d: 400024 excw -40007a40: 2468 l32i.n a6, a4, 8 -40007a42: 684000 excw -40007a45: 400024 excw -40007a48: 2468 l32i.n a6, a4, 8 -40007a4a: 684000 excw -40007a4d: 400024 excw -40007a50: 2468 l32i.n a6, a4, 8 -40007a52: 684000 excw -40007a55: 400024 excw -40007a58: 2468 l32i.n a6, a4, 8 -40007a5a: 354000 extui a4, a0, 16, 4 -40007a5d: 400026 beqi a0, -1, 40007aa1 <__umoddi3+0xc3d> -40007a60: 2468 l32i.n a6, a4, 8 -40007a62: 384000 excw -40007a65: 400025 call8 40047a68 <__bss_start+0x37a68> -40007a68: 2468 l32i.n a6, a4, 8 -40007a6a: 684000 excw -40007a6d: 400024 excw -40007a70: 2538 l32i.n a3, a5, 8 -40007a72: 684000 excw -40007a75: 400024 excw -40007a78: 2468 l32i.n a6, a4, 8 -40007a7a: 684000 excw -40007a7d: 400024 excw -40007a80: 2468 l32i.n a6, a4, 8 -40007a82: 684000 excw -40007a85: 400024 excw -40007a88: 2468 l32i.n a6, a4, 8 -40007a8a: 684000 excw -40007a8d: 400024 excw -40007a90: 2468 l32i.n a6, a4, 8 -40007a92: 684000 excw -40007a95: 400024 excw -40007a98: 2468 l32i.n a6, a4, 8 -40007a9a: 814000 src a4, a0, a0 -40007a9d: 400026 beqi a0, -1, 40007ae1 <__umoddi3+0xc7d> -40007aa0: 2538 l32i.n a3, a5, 8 -40007aa2: 684000 excw -40007aa5: 400024 excw -40007aa8: 2468 l32i.n a6, a4, 8 -40007aaa: 684000 excw -40007aad: 400024 excw -40007ab0: 2468 l32i.n a6, a4, 8 -40007ab2: 684000 excw -40007ab5: 400024 excw -40007ab8: 2468 l32i.n a6, a4, 8 -40007aba: 684000 excw -40007abd: 400024 excw -40007ac0: 2468 l32i.n a6, a4, 8 -40007ac2: 684000 excw -40007ac5: 400024 excw -40007ac8: 2468 l32i.n a6, a4, 8 -40007aca: 684000 excw -40007acd: 400024 excw -40007ad0: 002527 blt a5, a2, 40007ad4 <__umoddi3+0xc70> -40007ad3: 246840 extui a6, a4, 8, 3 -40007ad6: 684000 excw -40007ad9: 400024 excw -40007adc: 002635 call12 40007d40 <__umoddi3+0xedc> -40007adf: 246840 extui a6, a4, 8, 3 -40007ae2: 384000 excw -40007ae5: 400025 call8 40047ae8 <__bss_start+0x37ae8> -40007ae8: 2468 l32i.n a6, a4, 8 -40007aea: 684000 excw -40007aed: 400024 excw -40007af0: 2538 l32i.n a3, a5, 8 -40007af2: 124000 andbc b4, b0, b0 -40007af5: 400030 excw -40007af8: 003012 excw -40007afb: 30c240 xor a12, a2, a4 -40007afe: b04000 addx8 a4, a0, a0 -40007b01: 400030 excw -40007b04: 3098 l32i.n a9, a0, 12 -40007b06: 1e4000 excw -40007b09: 400030 excw -40007b0c: 003084 excw -40007b0f: 307240 xor a7, a2, a4 -40007b12: 624000 excw -40007b15: 400030 excw -40007b18: 003052 excw -40007b1b: 304040 xor a4, a0, a4 -40007b1e: 304000 xor a4, a0, a0 -40007b21: 400030 excw -40007b24: 00dbc0 excw - ... -40007b33: 010100 slli a0, a1, 32 -40007b36: 010101 l32r a0, 3ffc7f3c <_start-0x380c4> -40007b39: 010101 l32r a0, 3ffc7f40 <_start-0x380c0> -40007b3c: 010101 l32r a0, 3ffc7f40 <_start-0x380c0> -40007b3f: 010101 l32r a0, 3ffc7f44 <_start-0x380bc> -40007b42: 050307 bnone a3, a0, 40007b4b <__umoddi3+0xce7> -40007b45: 010101 l32r a0, 3ffc7f4c <_start-0x380b4> -40007b48: 010101 l32r a0, 3ffc7f4c <_start-0x380b4> -40007b4b: 020202 l8ui a0, a2, 2 -40007b4e: 030302 l8ui a0, a3, 3 -40007b51: 050403 excw -40007b54: 000043 excw -40007b57: 200a00 or a0, a10, a0 -40007b5a: 737465 call8 4007b2a0 <__bss_start+0x6b2a0> -40007b5d: 732520 maxu a2, a5, a2 -40007b60: 722c movi.n a2, 39 -40007b62: 207473 excw -40007b65: 756163 excw -40007b68: 3a6573 excw -40007b6b: 2c6425 call8 400341ac <__bss_start+0x241ac> -40007b6e: 6f6220 excw -40007b71: 6f .byte 0x6f -40007b72: 6d2074 excw -40007b75: 6f .byte 0x6f -40007b76: 3a6564 excw -40007b79: 2528 l32i.n a2, a5, 8 -40007b7b: 2978 l32i.n a7, a9, 8 -40007b7d: 0a0a add.n a0, a10, a0 -40007b7f: 754a00 extui a4, a0, 26, 8 -40007b82: 206c movi.n a0, -30 -40007b84: 203520 or a3, a5, a2 -40007b87: 313032 excw -40007b8a: 250035 call12 4002cb8c <__bss_start+0x1cb8c> -40007b8d: 252073 excw -40007b90: 0a2075 call12 40011d98 <__bss_start+0x1d98> -40007b93: 746500 extui a6, a0, 5, 8 -40007b96: 6d5f73 excw -40007b99: 6e6961 l32r a6, 3ffe3540 <_start-0x1cac0> -40007b9c: 2e .byte 0x2e -40007b9d: 000063 excw -40007ba0: 657375 call12 4006d2d8 <__bss_start+0x5d2d8> -40007ba3: 632072 l32i a7, a0, 0x18c -40007ba6: 6f .byte 0x6f -40007ba7: 206564 excw -40007baa: 6e6f64 excw -40007bad: 000a65 call8 40007c54 <__umoddi3+0xdf0> -40007bb0: 696177 bbci a1, 7, 40007c1d <__umoddi3+0xdb9> -40007bb3: 6e6974 excw -40007bb6: 662067 blt a0, a6, 40007c20 <__umoddi3+0xdbc> -40007bb9: 6f .byte 0x6f -40007bba: 682072 l32i a7, a0, 0x1a0 -40007bbd: 6f .byte 0x6f -40007bbe: 0a7473 excw -40007bc1: 000000 ill -40007bc4: 697073 excw -40007bc7: 6d6320 excw -40007bca: 6c2064 excw -40007bcd: 206e65 call8 400282b4 <__bss_start+0x182b4> -40007bd0: 0a6425 call8 40012214 <__bss_start+0x2214> -40007bd3: 642500 extui a2, a0, 5, 7 -40007bd6: 696c20 excw -40007bd9: 6e .byte 0x6e -40007bda: 202c65 call8 40027ea0 <__bss_start+0x17ea0> -40007bdd: 206425 call8 40028220 <__bss_start+0x18220> -40007be0: 6f6d excw -40007be2: 0a6564 excw -40007be5: 000000 ill -40007be8: 6f6c movi.n a15, -26 -40007bea: 206461 l32r a6, 3ffcfd7c <_start-0x30284> -40007bed: 257830 extui a7, a3, 24, 3 -40007bf0: 783830 excw -40007bf3: 202c movi.n a0, 34 -40007bf5: 656c movi.n a5, -26 -40007bf7: 6e .byte 0x6e -40007bf8: 642520 extui a2, a2, 5, 7 -40007bfb: 202c movi.n a0, 34 -40007bfd: 6f6f72 s32i a7, a15, 0x1bc -40007c00: 206d excw -40007c02: 0a6425 call8 40012244 <__bss_start+0x2244> -40007c05: 000000 ill -40007c08: 616c66 bnei a12, 6, 40007c6d <__umoddi3+0xe09> -40007c0b: 206873 excw -40007c0e: 616572 s32i a7, a5, 0x184 -40007c11: 652064 excw -40007c14: 2c7272 excw -40007c17: 732520 maxu a2, a5, a2 -40007c1a: 000a add.n a0, a0, a0 -40007c1c: 696174 excw -40007c1f: 206c movi.n a0, -30 -40007c21: 0a6425 call8 40012264 <__bss_start+0x2264> -40007c24: 000000 ill -40007c27: 686300 excw -40007c2a: 736b addi.n a7, a3, 6 -40007c2c: 206d75 call12 40028304 <__bss_start+0x18304> -40007c2f: 257830 extui a7, a3, 24, 3 -40007c32: 783230 excw -40007c35: 000a add.n a0, a0, a0 -40007c37: 736300 maxu a6, a3, a0 -40007c3a: 206d75 call12 40028310 <__bss_start+0x18310> -40007c3d: 257830 extui a7, a3, 24, 3 -40007c40: 783230 excw -40007c43: 000a add.n a0, a0, a0 -40007c45: 000000 ill -40007c48: 757363 excw -40007c4b: 206d excw -40007c4d: 727265 call8 4007a374 <__bss_start+0x6a374> -40007c50: 000a add.n a0, a0, a0 -40007c52: 680000 excw -40007c55: 6f .byte 0x6f -40007c56: 642520 extui a2, a2, 5, 7 -40007c59: 617420 excw -40007c5c: 6c69 s32i.n a6, a12, 24 -40007c5e: 642520 extui a2, a2, 5, 7 -40007c61: 6f7220 excw -40007c64: 6f .byte 0x6f -40007c65: 206d excw -40007c67: 0a6425 call8 400122a8 <__bss_start+0x22a8> -40007c6a: 090000 l32e a0, a0, -64 -40007c6d: 735f20 maxu a5, a15, a2 -40007c70: 636174 excw -40007c73: 5f6b addi.n a5, a15, 6 -40007c75: 6e6573 excw -40007c78: 797274 excw -40007c7b: 203a add.n a2, a0, a3 -40007c7d: 2c7025 call8 40034380 <__bss_start+0x24380> -40007c80: 200920 or a0, a9, a2 -40007c83: 5f .byte 0x5f -40007c84: 5f .byte 0x5f -40007c85: 617473 excw -40007c88: 3a6b63 excw -40007c8b: 783020 excw -40007c8e: 383025 call8 4003ff90 <__bss_start+0x2ff90> -40007c91: 2c78 l32i.n a7, a12, 8 -40007c93: 200a20 or a0, a10, a2 -40007c96: 2009 s32i.n a0, a0, 8 -40007c98: 5f .byte 0x5f -40007c99: 737362 excw -40007c9c: 5f .byte 0x5f -40007c9d: 617473 excw -40007ca0: 3a7472 excw -40007ca3: 783020 excw -40007ca6: 383025 call8 4003ffa8 <__bss_start+0x2ffa8> -40007ca9: 2c78 l32i.n a7, a12, 8 -40007cab: 200920 or a0, a9, a2 -40007cae: 5f .byte 0x5f -40007caf: 737362 excw -40007cb2: 5f .byte 0x5f -40007cb3: 646e65 call8 4006c398 <__bss_start+0x5c398> -40007cb6: 203a add.n a2, a0, a3 -40007cb8: 257830 extui a7, a3, 24, 3 -40007cbb: 783830 excw -40007cbe: 202c movi.n a0, 34 -40007cc0: 200a add.n a2, a0, a0 -40007cc2: 2009 s32i.n a0, a0, 8 -40007cc4: 5f .byte 0x5f -40007cc5: 746164 excw -40007cc8: 735f61 l32r a6, 3ffe4a44 <_start-0x1b5bc> -40007ccb: 726174 excw -40007cce: 203a74 excw -40007cd1: 2c7025 call8 400343d4 <__bss_start+0x243d4> -40007cd4: 200920 or a0, a9, a2 -40007cd7: 5f .byte 0x5f -40007cd8: 746164 excw -40007cdb: 655f61 l32r a6, 3ffe1258 <_start-0x1eda8> -40007cde: 6e .byte 0x6e -40007cdf: 203a64 excw -40007ce2: 207025 call8 400283e4 <__bss_start+0x183e4> -40007ce5: 000a add.n a0, a0, a0 -40007ce7: 707300 excw -40007cea: 702520 excw -40007ced: 000a20 excw -40007cf0: 5f6673 excw -40007cf3: 6d7564 excw -40007cf6: 255b70 extui a5, a7, 27, 3 -40007cf9: 205d64 excw -40007cfc: 3a3061 l32r a6, 3ffd65bc <_start-0x29a44> -40007cff: 783020 excw -40007d02: 383025 call8 40040004 <__bss_start+0x30004> -40007d05: 2078 l32i.n a7, a0, 8 -40007d07: 316120 srai a6, a2, 17 -40007d0a: 203a add.n a2, a0, a3 -40007d0c: 257830 extui a7, a3, 24, 3 -40007d0f: 783830 excw -40007d12: 612020 xsr.m0 a2 -40007d15: 203a32 excw -40007d18: 257830 extui a7, a3, 24, 3 -40007d1b: 783830 excw -40007d1e: 612020 xsr.m0 a2 -40007d21: 203a33 excw -40007d24: 257830 extui a7, a3, 24, 3 -40007d27: 783830 excw -40007d2a: 000a20 excw -40007d2d: 000000 ill -40007d30: 637065 call8 4006b438 <__bss_start+0x5b438> -40007d33: 303d31 l32r a3, 3ffd3e28 <_start-0x2c1d8> -40007d36: 2578 l32i.n a7, a5, 8 -40007d38: 783830 excw -40007d3b: 202c movi.n a0, 34 -40007d3d: 637065 call8 4006b444 <__bss_start+0x5b444> -40007d40: 303d32 excw -40007d43: 2578 l32i.n a7, a5, 8 -40007d45: 783830 excw -40007d48: 202c movi.n a0, 34 -40007d4a: 637065 call8 4006b450 <__bss_start+0x5b450> -40007d4d: 303d33 excw -40007d50: 2578 l32i.n a7, a5, 8 -40007d52: 783830 excw -40007d55: 202c movi.n a0, 34 -40007d57: 637865 call8 4006b4dc <__bss_start+0x5b4dc> -40007d5a: 646176 excw -40007d5d: 3d7264 excw -40007d60: 257830 extui a7, a3, 24, 3 -40007d63: 783830 excw -40007d66: 202c movi.n a0, 34 -40007d68: 706564 excw -40007d6b: 303d63 excw -40007d6e: 2578 l32i.n a7, a5, 8 -40007d70: 783830 excw -40007d73: 000a add.n a0, a0, a0 -40007d75: 000000 ill -40007d78: 746146 j 40024f01 <__bss_start+0x14f01> -40007d7b: 206c61 l32r a6, 3ffcff2c <_start-0x300d4> -40007d7e: 637865 call8 4006b504 <__bss_start+0x5b504> -40007d81: 747065 call8 4007c488 <__bss_start+0x6c488> -40007d84: 6f69 s32i.n a6, a15, 24 -40007d86: 6e .byte 0x6e -40007d87: 252820 extui a2, a2, 24, 3 -40007d8a: 3a2964 excw -40007d8d: 000a20 excw -40007d90: 727065 call8 4007a498 <__bss_start+0x6a498> -40007d93: 6e69 s32i.n a6, a14, 24 -40007d95: 206674 excw -40007d98: 6e .byte 0x6e -40007d99: 6f .byte 0x6f -40007d9a: 756220 extui a6, a2, 18, 8 -40007d9d: 000a66 bnei a10, -1, 40007da1 <__umoddi3+0xf3d> -40007da0: 323130 orbc b3, b1, b3 -40007da3: 353433 excw -40007da6: 383736 entry a7, 0x1c18 -40007da9: 0039 s32i.n a3, a0, 0 -40007dab: 313000 srai a3, a0, 16 -40007dae: 343332 excw -40007db1: 373635 call12 4003f114 <__bss_start+0x2f114> -40007db4: 3938 l32i.n a3, a9, 12 -40007db6: 636261 l32r a6, 3ffe0b40 <_start-0x1f4c0> -40007db9: 666564 excw -40007dbc: 000000 ill -40007dbf: 313000 srai a3, a0, 16 -40007dc2: 343332 excw -40007dc5: 373635 call12 4003f128 <__bss_start+0x2f128> -40007dc8: 3938 l32i.n a3, a9, 12 -40007dca: 434241 l32r a4, 3ffd8ad4 <_start-0x2752c> -40007dcd: 464544 excw -40007dd0: 000000 ill -40007dd3: 6e3c00 excw -40007dd6: 6c6c75 call12 4007449c <__bss_start+0x6449c> -40007dd9: 3e .byte 0x3e -40007dda: 650000 extui a0, a0, 16, 7 -40007ddd: 5f7374 excw -40007de0: 6d6974 excw -40007de3: 2e7265 call8 40036508 <__bss_start+0x26508> -40007de6: 6e0063 excw -40007de9: 6f .byte 0x6f -40007dea: 647220 extui a7, a2, 2, 7 -40007ded: 000a73 excw -40007df0: 716573 excw -40007df3: 752520 extui a2, a2, 21, 8 -40007df6: 202c movi.n a0, 34 -40007df8: 207525 call8 4002854c <__bss_start+0x1854c> -40007dfb: 207364 excw -40007dfe: 0a7025 call8 40012500 <__bss_start+0x2500> -40007e01: 000000 ill -40007e04: 000c movi.n a0, 0 -40007e06: 000000 ill -40007e09: 000000 ill -40007e0c: 010001 l32r a0, 3ffc820c <_start-0x37df4> -40007e0f: 007c movi.n a0, -16 -40007e11: 010c movi.n a1, 0 -40007e13: 001000 movsp a0, a0 -40007e16: 140000 extui a0, a0, 0, 2 -40007e19: 000000 ill -40007e1c: 006c30 rsil a3, 12 -40007e1f: 023240 andb b3, b2, b4 -40007e22: 0e0000 read_impwire a0 -40007e25: 000040 excw -40007e28: 000010 excw -40007e2b: 002800 excw -40007e2e: 640000 extui a0, a0, 0, 7 -40007e31: 6e .byte 0x6e -40007e32: 704000 excw -40007e35: 000002 l8ui a0, a0, 0 -40007e38: 0e .byte 0xe -40007e39: 000050 excw -40007e3c: cd48 l32i.n a4, a13, 48 -40007e3e: ff .byte 0xff -40007e3f: 3f .byte 0x3f -40007e40: ffe1d0 excw -40007e43: 3f .byte 0x3f -40007e44: c008 l32i.n a0, a0, 48 -40007e46: ff .byte 0xff -40007e47: 3f .byte 0x3f - ... diff --git a/src/common/platforms/esp31/rom/disasm.sh b/src/common/platforms/esp31/rom/disasm.sh deleted file mode 100755 index 5ab8fe543..000000000 --- a/src/common/platforms/esp31/rom/disasm.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -xtensa-esp108-elf-gcc -Wl,-N,-Ttext,0x40000000 -nostdlib rom.S -o rom.elf && \ - xtensa-esp108-elf-objdump -d rom.elf > ESP31B_ROM.txt diff --git a/src/common/platforms/esp31/rom/notes.c b/src/common/platforms/esp31/rom/notes.c deleted file mode 100644 index 431d718fb..000000000 --- a/src/common/platforms/esp31/rom/notes.c +++ /dev/null @@ -1,163 +0,0 @@ -/* Just some notes scribbled while disassembling */ - -/* - * RTC = 0x60008000 - * RTC+0x18: ??c????? ???????? ???????? ???????? - * RTC+0x34: ???????? ??bbbbbb bbbb???? ??aaaaaa - */ -int _X_get_rst_cause(void) { - int ret; - int a = GET_PERI_REG_BITS(RTC_STATE1, 6, 0); - if (a == 5) { - int b = (RTC_STATE1 >> 12) && 0xfff; - if (b != 1) { - ret = (b == 8 ? a : 0); - } else { - ret = 20; - } - } else { - ret = a; - } - CLEAR_PERI_REG_MASK(RTC_STATE0, RTC_CNTL_SLP_WAKEUP); - return ret; -} - -/* - * RTC = 0x60008000 - * RTC+0x38: ???????? ???????? ???????? ??cccccc - * RTC+0x74: ???????? ???????? ???????? dddddddd - * RTC+0x80: ???????? ??????a? ???b???? ???????? - */ -void main(void) { - uint32_t rst_cause = _X_get_rst_cause(); - CLEAR_PERI_REG_MASK(RTC+0x80, BIT(17)); // a - SET_PERI_REG_MASK(RTC+0x80, BIT(12)); // b - uint32_t boot_mode = GET_PERI_REG_BITS(GPIO_STRAP, 6, 0); // c - if (boot_mode & (BIT(5) | BIT(4)) == (BIT(5) | BIT(4)) || boot_mode == 24 || boot_mode == 26) { - CLEAR_PERI_REG_MASK(RTC+0x74, 0xff); - } - if (boot_mode & (BIT(5) | BIT(4)) == BIT(5)) { - CLEAR_PERI_REG_MASK(RTC+0x94, BIT(31)); - CLEAR_PERI_REG_MASK(RTC+0x98, BIT(31)); - CLEAR_PERI_REG_MASK(RTC+0x9c, BIT(31)); - CLEAR_PERI_REG_MASK(RTC+0xa0, BIT(31)); - CLEAR_PERI_REG_MASK(RTC+0xa4, BIT(31)); - CLEAR_PERI_REG_MASK(RTC+0xa8, BIT(31)); - CLEAR_PERI_REG_MASK(RTC+0xac, BIT(31)); - } - if (boot_mode & (BIT(5) | BIT(3)) == 0) { - // ... 1405 - } - CLEAR_PERI_REG_MASK(RTC+0x74, 0xff); - _X_uart_attach(); - _X_uart_init(0); - // GPIO_STRAP ... - ets_printf(boot_banner, fw_build, rst_cause, boot_mode); - // rst_cause - if (rst_cause == 1 || rst_cause == 2) { - - } else { - // ... - } - ets_printf("%s %u", "ets_main.c", 305); - while(1) {} -} - -/* - * GPIO strap mapping: - * - * 0011 1111 1011 0011 - * || |||| |||| |||| - * || |||| |||| |||`- IO5 - * || |||| |||| ||`-- IO15 - * || |||| |||| |`--- IO4 - * || |||| |||| `---- IO2 - * || |||| |||`------ ? - * || |||| ||`------- IO0 - * || |||| |`-------- IO12 - * || |||| `--------- ? - * || |||`----------- CLK - * || ||`------------ ? - * || |`------------- SD0 - * || `-------------- SD1 - * |`---------------- ? SD2 - * `----------------- SD3 - */ - -struct uartdev { - uint32_t baud_rate; // 0 - uint32_t ud4; - uint32_t ud8; - uint32_t ud12; - uint32_t ud16; - uint32_t ud20; - uint8_t ud24; - uint8_t ud25; - uint32_t ud28; - uint32_t ud32; - uint32_t ud36; - uint8_t ud40; - uint32_t ud48; - uint32_t ud52; -}; - -void _X_uart_attach(void) { - // zero uartdev - uartdev.baud_rate = 115200; - _X_xtos_ints_off(1 << ETS_UART_INUM); - // INTR_MAP_REG_C - // 11111111 11111111 11111100 00011111 & - // 00000000 00000000 00000000 10100000 | - // PRODPORT_INTR_MAP_13 -> 5 = ETS_UART_INUM - // 11111111 11111111 10000011 11111111 & - // 00000000 00000000 00010100 11111111 | - // PRODPORT_INTR_MAP_14 -> 5 = ETS_UART_INUM - _xtos_set_interrupt_handler_arg(ETS_UART_INUM, uart_int_handler, _c_0x3fffdb2c_uart_int_handler_arg); -} - -void _X_uart_init(uint32_t a) { - // GPIO_FUNC_IN_SEL3 - // xx999999 88888877 77776666 66555555 - // 11111111 11111100 00001111 11111111 = 0xfffc0fff - // 00000000 00000000 10010000 00000000 = 0x00009000 - // GPIO17 func => 9 - // 00000000 00000010 00000000 00000000 - uart_div_modify(13000000 / uartdev.baud_rate); - // ... -} - -struct _st_0x3fffdc90 { -}; - -struct _st_0x3fffdf70 { - void *fp1; // 20 - void *fp2; // 24 - uint32_t d28; - uint32_t d32; - uint32_t d36; - struct _st_0x3fffdc90 *st; // 44 -} stdf70; - -void _X_slc_init_attach(void *fp1, void *fp2, struct _st_0x3fffdc90 *st, uint32_t gpio_mode) { - stdf70.fp1 = fp1; - stdf70.fp2 = fp2; - stdf70.st = st; - d28 = d32 = d36 = 0; - SET_PERI_REG_MASK(WIFI_RST_EN, PRODPORT_SDIO_RST); - CLEAR_PERI_REG_MASK(WIFI_RST_EN, PRODPORT_SDIO_RST); - if (gpio_mode == 4) { - SET_PERI_REG((READ_PERI_REG(PERIPHS_HINF_BASEADDR+4) & 0xf0000000) | 0x01110013); - } else { - SET_PERI_REG((READ_PERI_REG(PERIPHS_HINF_BASEADDR+4) & 0xf0000000) | 0x02320017); - } - SET_PERI_REG(PERIPHS_HINF_BASEADDR, 0x11116666); - _X_slc_set_host_io_max_window(); - ... -} - -#define SLC_TOKEN1 (PERIPHS_SLC_BASEADDR + 0x54) -#define SLC_BRIDGE_CONF (PERIPHS_SLC_BASEADDR + 0x74) - -void _X_slc_set_host_io_max_window(void) { - SET_PERI_REG(SLC_BRIDGE_CONF, (READ_PERI_REG(SLC_BRIDGE_CONF) & 0xfffff0c0) | 0x720); -} diff --git a/src/common/platforms/esp31/rom/rom.S b/src/common/platforms/esp31/rom/rom.S deleted file mode 100644 index 55737a538..000000000 --- a/src/common/platforms/esp31/rom/rom.S +++ /dev/null @@ -1,16 +0,0 @@ -.text -.org 0 -.globl _start - -// xtensa-esp108-elf-gcc -Wl,-N,-Ttext,0x40000000 -nostdlib rom.S -o rom.elf - -here = . -#define PROVIDE(name, addr) name = here + addr - 0x40000000 - -#include "rom_functions.S" - -.text - -_start: -.incbin "rom.bin" -_end: diff --git a/src/common/platforms/esp31/rom/rom.bin b/src/common/platforms/esp31/rom/rom.bin deleted file mode 100644 index 355329da2776060e91395da6959f82b384520a00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65536 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 diff --git a/src/common/platforms/esp31/rom/rom_functions.S b/src/common/platforms/esp31/rom/rom_functions.S deleted file mode 100644 index 5711a5cc1..000000000 --- a/src/common/platforms/esp31/rom/rom_functions.S +++ /dev/null @@ -1,294 +0,0 @@ -// These come from linker script - -PROVIDE ( Cache_Read_Disable , 0x4000444c ); -PROVIDE ( Cache_Read_Enable , 0x4000438c ); - -PROVIDE ( ets_delay_us , 0x40002db4 ); - -PROVIDE ( bzero , 0x40002a54 ); - -PROVIDE ( memcmp , 0x400068ec ); -PROVIDE ( memcpy , 0x40006974 ); -PROVIDE ( memmove , 0x40006a6c ); -PROVIDE ( memset , 0x40006be4 ); - -PROVIDE ( strcmp , 0x40005bb8 ); -PROVIDE ( strcpy , 0x40005cdc ); -PROVIDE ( strlen , 0x40005d6c ); -PROVIDE ( strncmp , 0x40005dd0 ); -PROVIDE ( strncpy , 0x40005e90 ); -PROVIDE ( strstr , 0x40005f6c ); - -PROVIDE ( ets_install_putc1 , 0x40002774 ); -PROVIDE ( ets_printf , 0x40002804 ); -PROVIDE ( ets_putc , 0x40002b14 ); - -PROVIDE ( ets_str2macaddr , 0x40002a64 ); - -PROVIDE ( gpio_output_set , 0x400049d8 ); -PROVIDE ( gpio_output_set_high , 0x400049f8 ); - -PROVIDE ( ets_get_cpu_frequency , 0x40002de8 ); -PROVIDE ( ets_update_cpu_frequency , 0x40002ddc ); - -PROVIDE ( lldesc_build_chain , 0x40004c8c ); - -PROVIDE ( multofup , 0x400068a0 ); -PROVIDE ( roundup2 , 0x40006890 ); - -PROVIDE (software_reset_cpu , 0x40002998 ); - -PROVIDE ( SPIEraseSector , 0x40004708 ); -PROVIDE ( SPIRead , 0x40004898 ); -PROVIDE ( SPIWrite , 0x40004738 ); - -PROVIDE ( uart_div_modify , 0x400034e8 ); -PROVIDE ( uart_tx_one_char , 0x4000362c ); - -PROVIDE ( __divsi3 , 0x40006888 ); -PROVIDE ( __udivdi3 , 0x40006c30 ); -PROVIDE ( __umoddi3 , 0x40006e64 ); - -PROVIDE ( _xtos_set_intlevel , 0x40006670 ); - -// These have been reverse-engineered. - -PROVIDE(_XX_Vec40, 0x40000040) -PROVIDE(_XX_ExcVec50, 0x40000050) -PROVIDE(_XX_ExcVec80, 0x40000080) - -PROVIDE(_XX_Vec400, 0x40000300) - -PROVIDE(_WindowOverflowHandler, 0x40000100) -PROVIDE(_WindowUnderflowHandler, 0x40000140) - -PROVIDE(_X_ResetVector, 0x40000500) - -PROVIDE(_c_stack, 0x40000700) -PROVIDE(_c_bss_start, 0x40000708) -PROVIDE(_c_bss_end, 0x4000070c) -PROVIDE(_c_0x3fffc210, 0x40000734) -PROVIDE(_c_0x80000000, 0x40000738) -PROVIDE(_c_0x40000000, 0x40000760) -PROVIDE(_c_0x7fffffff, 0x40000780) -PROVIDE(_c_0x00ff0000, 0x40000798) - -PROVIDE(_X_start, 0x400007ac) - -PROVIDE(_c_0x3fffd820, 0x40000f50) -PROVIDE(_X_ets_task, 0x40000f54) -PROVIDE(_XX_unk0f84, 0x40000f84) -PROVIDE(_XX_unk0f96, 0x40000f98) - -PROVIDE(_c_ets_critical_level, 0x400010a4) -PROVIDE(_X_ets_enter_critical, 0x400010a8) -PROVIDE(_X_ets_exit_critical, 0x400010bc) -PROVIDE(_X_ets_exit_critical_and_wait_int, 0x400010d4) -PROVIDE(_X_ets_isr_attach, 0x400010e8) // 3 args -PROVIDE(_X_ets_isr_mask, 0x400010f8) // 1 arg -PROVIDE(_X_ets_isr_unmask, 0x40001104) // 1 arg - -PROVIDE(_c_0x3fffda30, 0x40001110) -PROVIDE(_XX_set_0x3fffda30_0, 0x40001114) -PROVIDE(_XX_set_0x3fffda30_4, 0x40001120) -PROVIDE(_c_0xfffdffff, 0x4000112c) -PROVIDE(_c_0x60003e00, 0x40001130) -PROVIDE(_c_0x60008200, 0x40001134) -PROVIDE(_c_0x60007e00, 0x40001138) -PROVIDE(_c_0x1000, 0x4000113c) -PROVIDE(_s_fw_build, 0x40001140) -PROVIDE(_s_boot_banner, 0x40001144) -PROVIDE(_s_pct_s_pct_u, 0x40001148) -PROVIDE(_s_ets_main_c, 0x4000114c) -PROVIDE(_X_main, 0x4000115c) - -PROVIDE(_l_strap_0x0xxx, 0x4000125a) -PROVIDE(_l_strap_init_uart0, 0x40001269) -PROVIDE(_l_strap_0x0x00, 0x400012e2) -PROVIDE(_l_boot, 0x400012ea) -PROVIDE(_l_rst_cause_345, 0x40001336) -PROVIDE(_l_rst_cause_12, 0x40001342) -PROVIDE(_l_strap_NxNxxx, 0x40001405) -PROVIDE(_l_strap_0010xx, 0x4000144c) -PROVIDE(_l_strap_001000_0x110x, 0x400014b0) -PROVIDE(_l_strap_0x0x11_loader, 0x400014c9) // loader -PROVIDE(_l_strap_0x0x01, 0x400014d4) -PROVIDE(_l_strap_0x0x10, 0x400014e6) -PROVIDE(_c_0xffff8fff, 0x400014f0) -PROVIDE(_c_0x60008e00, 0x400014f4) - -PROVIDE(_s_waiting_for_host, 0x4000152c) -PROVIDE(_s_mem_banner, 0x40001cdc) -PROVIDE(_c_stack_sentry, 0x40001ce0) -PROVIDE(_XX_unk153c, 0x4000153c) - -PROVIDE(_c_data_end, 0x40001cd8) -PROVIDE(_c_data_start, 0x40001ce4) -PROVIDE(_X_print_mem_banner, 0x40001ce8) - -PROVIDE(_s_exc_sp_fmt, 0x40001d0c) -PROVIDE(_s_exc_sf_dump_fmt, 0x40001d10) -PROVIDE(_s_exc_regs_fmt, 0x40001d14) -PROVIDE(_X_exc_handler, 0x40001d18) - -PROVIDE(_XX_unk1d90, 0x40001d90) - -PROVIDE(_X_ets_memset, 0x40001db4) -PROVIDE(_X_ets_memcpy, 0x40001dc4) -PROVIDE(_X_ets_memmove, 0x40001dd4) -PROVIDE(_X_ets_memcmp, 0x40001de4) - -PROVIDE(_st_0x3fffda9c, 0x40002150) // struct - -PROVIDE(_X_ets_uart_putc, 0x4000223c) -PROVIDE(_X_ets_unk225c, 0x4000225c) - -PROVIDE(_c_0x4000223c_ets_uart_putc, 0x40002780) -PROVIDE(_X_ets_install_uart_printf, 0x40002784) -PROVIDE(_c_0x400027dc, 0x40002790) -PROVIDE(_X_ets_install_external_printf, 0x40002794) -PROVIDE(_X_ets_install_putc2, 0x400027b4) -PROVIDE(_X_ets_get_printf_buf_remain_len, 0x400027c0) -PROVIDE(_X_ets_reset_printf_buf_len, 0x400027cc) -PROVIDE(_X_ets_putc, 0x400027dc) - -PROVIDE(_c_0xdfffffff, 0x400028d4) -PROVIDE(_X_get_rst_cause, 0x400028d8) -PROVIDE(_XX_unk2948, 0x40002948) -PROVIDE(_l_2970, 0x40002970) -PROVIDE(_X_sw_sys_rst, 0x4000297c) -PROVIDE(_c_0x00400000, 0x400029b4) -PROVIDE(_c_0xffbfffff, 0x400029b8) -PROVIDE(_XX_apb_bridge_toggle, 0x400029bc) // turns RTC_CNTL_APB2RTC_BRIDGE_SEL on and off -PROVIDE(_X_ets_strcpy, 0x400029ec) -PROVIDE(_X_ets_strncpy, 0x40002a00) -PROVIDE(_X_ets_strcmp, 0x40002a10) -PROVIDE(_X_ets_strncmp, 0x40002a24) -PROVIDE(_X_ets_strlen, 0x40002a34) -PROVIDE(_X_ets_strstr, 0x40002a40) - -PROVIDE(_st_0x3fffdb10_uartdev, 0x40002e4c) // some struct - uartdev? - -PROVIDE(_c_0x3fffdb00, 0x40002e50) -PROVIDE(_c_0x3fffdb04, 0x40002f64) -PROVIDE(_XX_unk2e58, 0x40002e58) -PROVIDE(_X_UartDwnLdProc, 0x40002f6c) -PROVIDE(_c_0x00001800, 0x400030ec) -PROVIDE(_X_FlashDwnLdStartMsgProc, 0x400030f0) -PROVIDE(_XX_unk313c, 0x4000313c) -PROVIDE(_XX_unk31bc, 0x400031bc) -PROVIDE(_XX_unk31e4, 0x400031e4) -PROVIDE(_XX_unk3210, 0x40003210) -PROVIDE(_XX_unk3240, 0x40003240) -PROVIDE(_X_MemDwnLdStopReqMsgProc, 0x4000329c) -PROVIDE(_X_UartConnectProc, 0x400032c4) -PROVIDE(_X_UartRegWriteProc, 0x400032d4) -PROVIDE(_X_UartRegReadProc, 0x40003318) - -PROVIDE(_c_115200, 0x4000332c) -PROVIDE(_c_0x3feffe00, 0x40003330) -PROVIDE(_c_0xffff83ff, 0x40003334) -PROVIDE(_c_0x00001400, 0x40003338) -PROVIDE(_c_0x40003728_uart_int_handler, 0x4000333c) -PROVIDE(_c_0x3fffdb2c_uart_int_handler_arg, 0x40003340) -PROVIDE(_X_uart_attach, 0x40003344) -PROVIDE(_XX_uart_set_unk33c0, 0x400033c0) -PROVIDE(_c_0x5ffffe00, 0x400033cc) -PROVIDE(_c_0x0000ffff, 0x400033d0) -PROVIDE(_c_0x000fffff, 0x40003448) -PROVIDE(_c_0x00060000, 0x400034e0) -PROVIDE(_c_0xfff9ffff, 0x400034e4) - -PROVIDE(_c_0xfffc0fff, 0x40003520) -PROVIDE(_c_0x00009000, 0x40003524) -PROVIDE(_c_0x00020000, 0x40003528) -PROVIDE(_c_13000000, 0x4000352c) -PROVIDE(_c_0x08000000, 0x40003530) -PROVIDE(_X_uart_init, 0x40003534) -PROVIDE(_l_35f4, 0x400035f4) -PROVIDE(_X_uart_wait_tx_empty, 0x4000369c) - -PROVIDE(_X_uart_int_handler, 0x40003728) - -PROVIDE(_X_uart_tx_one_char2, 0x40003664) - -PROVIDE(_X_send_packet, 0x400037d4) -PROVIDE(_X_SendMsg, 0x40003828) -PROVIDE(_X_recv_packet, 0x4000383c) -PROVIDE(_X_RcvMsg, 0x40003988) -PROVIDE(_X_uart_rx_readbuff, 0x400039a0) - -PROVIDE(_c_0x60004e00, 0x40003a18) -PROVIDE(_X_SelectSpiFunction, 0x40003a1c) // 1 arg - SPI number -PROVIDE(_c_0x60002e00, 0x40003c78) -PROVIDE(_X_SPI_chip_erase, 0x40003c7c) -PROVIDE(_c_0x00ffffff, 0x40003cb4) -PROVIDE(_c_0x01000000, 0x40003cb8) -PROVIDE(_XX_unk3cbc, 0x40003cbc) -PROVIDE(_c_0x00800000, 0x40003d00) -PROVIDE(_c_0x02000000, 0x40003d4c) -PROVIDE(_XX_unk3e24, 0x40003e24) -PROVIDE(_X_SPI_read_status, 0x40003efc) -PROVIDE(_c_0x90000000, 0x40003f48) -PROVIDE(_c_0x70000035, 0x40003f4c) -PROVIDE(_c_0x00040000, 0x40003f50) -PROVIDE(_XX_unk3f54, 0x40003f54) -PROVIDE(_c_0x04000000, 0x40003fcc) -PROVIDE(_XX_unk4010, 0x40004010) -PROVIDE(_X_SPI_write_enable, 0x400041bc) -PROVIDE(_X_Wait_SPI_Idle, 0x40004208) -PROVIDE(_l_4228, 0x40004228) -PROVIDE(_l_4234, 0x40004234) -PROVIDE(_XX_unk4238, 0x40004238) -PROVIDE(_X_SPIFlashModeConfig, 0x400042d8) -PROVIDE(_X_spi_flash_attach, 0x40004370) // 2 args: SPI num, ??? -PROVIDE(_X_SPIReadModeConfig, 0x40004538) - -PROVIDE(_X_SPIEraseArea, 0x400048b4) -PROVIDE(_XX_unk4940, 0x40004940) - -PROVIDE(_st_0x3fffdc90, 0x40004d80) -PROVIDE(_XX_unk4d88, 0x40004d88) -PROVIDE(_XX_unk4f6c, 0x40004f6c) -PROVIDE(_XX_unk4fc8, 0x40004fc8) - -PROVIDE(_c_0xbfffffff, 0x40004c80) -PROVIDE(_c_0xff000fff, 0x40004c88) -PROVIDE(_XX_unk4f14, 0x40004f14) -PROVIDE(_s_no_rds, 0x40005008) -PROVIDE(_XX_unk500c, 0x4000500c) - -PROVIDE(_fp_0x40004f6c, 0x40005164) -PROVIDE(_fp_0x40004fc8, 0x40005168) -PROVIDE(_X_sip_init_attach, 0x40005170) // 1 arg, boot_mode? -PROVIDE(_XX_unk51ac, 0x400051ac) -PROVIDE(_c_0x60017e00, 0x40005478) -PROVIDE(_st_0x3fffdf70, 0x400054a4) -PROVIDE(_c_0x6000ae00, 0x400054b8) -PROVIDE(_c_0xf0000000, 0x400054bc) -PROVIDE(_c_0x02320017, 0x400054c0) -PROVIDE(_c_0x11116666, 0x400054c4) -PROVIDE(_c_0x01110013, 0x400054e4) -PROVIDE(_X_slc_init_attach, 0x400054e8) // 4 args - fp, fp, st, boot_mode; PRODPORT_SDIO_RST -PROVIDE(_l_slc_boot_mode_4, 0x40005654) -PROVIDE(_X_slc_enable, 0x40005678) -PROVIDE(_X_slc_select_tohost_gpio_mode, 0x400056fc) -PROVIDE(_X_slc_select_tohost_gpio, 0x40005708) -PROVIDE(_c_0xff300000, 0x40005730) -PROVIDE(_XX_unk5734, 0x40005734) -PROVIDE(_XX_unk57b8, 0x400057b8) -PROVIDE(_XX_unk57f4, 0x400057f4) -PROVIDE(_XX_unk5848, 0x40005848) - -PROVIDE(_c_0xfffff0c0, 0x40005988) -PROVIDE(_X_slc_set_host_io_max_window, 0x4000598c) -PROVIDE(_X_slc_init_credit, 0x400059ac) -PROVIDE(_X_slc_add_credits, 0x400059c4) - -PROVIDE(_X_xtos_set_interrupt_handler_arg, 0x400059d8) -PROVIDE(_X_xtos_set_interrupt_handler, 0x40005a24) -PROVIDE(_X_xtos_ints_on, 0x40005a34) -PROVIDE(_X_xtos_ints_off, 0x40005a58) - -PROVIDE(_XX_xtos_exc_unk5a80, 0x40005a80) -PROVIDE(_XX_xtos_exc_unk5b94, 0x40005b94) diff --git a/src/common/platforms/esp32/rom/.gitattributes b/src/common/platforms/esp32/rom/.gitattributes deleted file mode 100644 index b2dd2258c..000000000 --- a/src/common/platforms/esp32/rom/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -rom.bin -nodiff -rom.elf -nodiff diff --git a/src/common/platforms/esp32/rom/disasm.sh b/src/common/platforms/esp32/rom/disasm.sh deleted file mode 100755 index ae719ac10..000000000 --- a/src/common/platforms/esp32/rom/disasm.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -xtensa-esp32-elf-gcc -Wl,-N,-Ttext,0x40000000 -nostdlib rom.S -o rom.elf && \ - xtensa-esp32-elf-objdump -d rom.elf > ESP32_ROM.txt diff --git a/src/common/platforms/esp32/rom/rom.S b/src/common/platforms/esp32/rom/rom.S deleted file mode 100644 index 11bd29650..000000000 --- a/src/common/platforms/esp32/rom/rom.S +++ /dev/null @@ -1,28 +0,0 @@ -.text -.org 0 -.globl _start - -// xtensa-esp32-elf-gcc -Wl,-N,-Ttext,0x40000000 -nostdlib rom.S -o rom.elf - -here = . -#define PROVIDE(name, addr) name = here + addr - 0x40000000 - -#include "rom_functions.S" - -PROVIDE ( _x_unk_40061b88, 0x40061b88 ) -PROVIDE ( _x_unk_spi_400622c0, 0x400622c0 ) -PROVIDE ( _c_3ff000c8, 0x40062df0 ) -PROVIDE ( _c_3ff5b024, 0x40062e0c ) -PROVIDE ( _c_3ff5b000, 0x40062e10 ) -PROVIDE ( _c_3ff5b020, 0x40062e14 ) -PROVIDE ( _c_3ff5b028, 0x40062e18 ) -PROVIDE ( _l_40062e90, 0x40062e90 ) -PROVIDE ( _l_SPI_Prepare_Encrypt_Data_loop, 0x40062e34 ) -PROVIDE ( _l_SPI_Prepare_Encrypt_Data_wait, 0x40062e54 ) -PROVIDE ( _l_SPI_Prepare_Encrypt_Data_out, 0x40062e5e ) - -.text - -_start: -.incbin "rom.bin" -_end: diff --git a/src/common/platforms/esp32/rom/rom.bin b/src/common/platforms/esp32/rom/rom.bin deleted file mode 100644 index 8f0bb3fa676368b2cc2fb38b8d7fd7012220dab4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458752 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⪼dDlCV)_Wy`wOxZk!o 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�`GS5Zb28@M4E(+pnSXovE=3L@|* zH9=mu)liff^49H@ZLumpQb*(O=$Ggr7|%F7z3#3)Yzeg2G}RqXwSL&w(lYR_DWx@@ z?fGrn=YPl9>5l!>Uro`*c>42?af0xtZRpasL9u_6dXj`s4>Rs!p(iQr)3+I8ahkFC z|Do;O<C?m%{^668E8(aiTtx7a90&x&84|1nY)29)Mbr+&is($AA+aFZb{?g+I@Zo4 zvBjV`1JPEXb|#5Z5M>Ifqj;ecqJviP_gLC`t8|o>R;_KlptTh_zwbW5+swSr=Y9Wp z`)M%Q_r3OBYwx}GTHmb+6eakI5?w{{!O{9Ndi&6DQ|V~aPoVQ4K129mZrbC&#Wn#$ z^xfUz`9s=<x!HD$1Hpr&Zmq3mWT32LKBOteth%n+zc;M<ZGYRhTr0lwF?t~}Z1ryp zOU>}tT;!_p9pQ5*-RkS0ygm;9-=mEI?HEA)xA3_=+zxuU9o_%GwPV4*wPPyU(Sbei zS$s~s1$tO0%lRvw9e1^o&L6plc{QA38ZaRz$=Ckvmj#w@+iq}8;&LHPPI6bFJ)#1h zKj1v)`JQuPp?5b4+w+*@E#K6NvDtSeiD7O_5`<vNF>=Fn^FeK6BwaqemdH8*VRCR* z+I1p#gEZ1gT423HW@eB>LeWklNA_L`u9a)<5<yH3OJuQ}Er$fg_K-N}=-0Fe_1fn! z9d#3~W7!PO@q2XF2KScOkKzQM<sZO9&Wz0Ej&^HX`;^qFKaX-M89Fg~RLcm=0b+83 zEl%x)Adf0Z8!VKu_KNr502>eW_hV=sjE>l!W5tnE+tp6kojJ5WLso^O+FK+5n1&u^ zNS)URB|U|And5wiCdqNw?q)>&**};}l=0@Z7CIMZW~TUGqc7vG!rwy*=_YDf|5+LO zd?fBPTXTmyQRTnz6Ibn2_>^*QxP0vgBm5iu_-V5hR~c{?>^3y+&jt31GK2|9-tXSw ze>dh2a5D?tr#j|q{kzV8MD5@2-`D<C>|$SdNNY2qBSM>1$v*dcI+a$fYW6ofnWT54 zXEI|d0MZ=@4`JpXJ=@yre|MZg*UN?Wrhe-?@lW0Pi|P}f`_G<!YZ6Urn!(rPZ}xu` zqfE^tWu+R_seD;_o9lgkJ5OD)0Y49WbO!tBXnfGO+x?ht?2#X*eF;ThJHit2os6&V znwIvmlR?e4>zp$*YNhyywnsKby`QW7)rl*9)z1`Bi$&K%qWWY}U;llCBU*Oh5@-9P z!nWSnUFHZG&95Jhkm$7?YFmom-okbMm9w!5x65y<Q*3@*&|MdsjNcV#0(f$wBC1{B zj832<YPNE!c7LZAaBzw}2NG;P|K?EDBv~mP3k9&Fg##bM=c-bHe=BK+mja4iMI>c^ zlXH9hwq}KW6W3_?Wz<oT{X=dot+dx&@f?9fX*-N_U*};C^TB?Yl#wJ;|D8j2zPQbo zrq&!Fp_L){(?q*kxaxWZ{9H*8ws(|z7m3x<oBNdNH?Da0U=412pLZ0#hIxkssT4JT z^q!9>&<}Iwdvr=6vV({1RKZp*No^>B2;X|O>v2Sw!evfj*6)p#VNueN#mf~-m#d>z zjBp5}vZ^Pqs|;P?m>%U{5$4!Asu<Sc*@~>ERGk+&u)F_|!Zb&g^|WyYE^>{zYDRkP z3vTsyIT~0kc8EUIT`IV45jA|u9noDZxNVGTmM1J&;fRozM}&CJaI03jH+!A&)pf>J z$jbfxb(Pg`yQ}Nmn7-AU{hRmUd|5hHdfussbwUqO_-m-W1o%~xMW%VJz_F0tos{H? z6MCj{w%_^PD-@ngZpFUPYNx*@ovU7{Sh}>>5gu~Y>9tiF*CvL%Cdw5RK6fi8gqkEY zgcWYRsx3Ltqi*MPdkGzL>D0*z;~p+6jSx5k1UA0=jb|6<gu{!otb@iN<>G7ZHW<)I z!G}-K1mckFkE21;6hc?b&$@4Pvv4LQj-SZjq&?d(&cScDg5R)Fx`~nE<yO)hl7G!V z`MHg=u|ANZc7D?$Bsawn9}|&ilKfnzZp0PO4{#1|o5~sH1iT7<HAV_pL-)u0P>tcE z0QoK@<9hk3LF|n)fIoE9mDzG^2IGk25$NeLo&+v7t>)TLc`}|yu~nxjc0Og6j*i0P zu?zieSB7A~zi7WK^*KMj6c-oIdsk}tYG}da;xvUxDa-n^am(I<7r6Xq6#2h4mPU&6 z(^NPncfVZF$LS9W^3xP$Y{A)~)ZPBhGeh}=N94r|{qrQEs1Ktv*xgB!%Jl6ld<R>n z_&YxuLh|$jvf`<Jd`V3$wkksk3c373Z~lDaysdOjA@zi`TWXMZ=0g{V3C4&pwYG;n zD|%71`r8ZsAxRoK427hyuHZxU8Qmpg!+Tt9!4dUo-9=+mj51+CxsQ&zE{xjq_c1HN zqgI~=17^)x10#XhZ0O!fW9CR8VxlrenZiRb(;zPMnvGMqtOefOIJBVkW>`Mw&wDce zH}3qo?)(M*dGJrp#ymWct%%JI&O_570e%(yc_=?yF@t6B9HVM?QewOQHfygRy1K)E zzFE=OE^B>{d~v&reaaB~c+R%p+q&1dC;8PC;qt77YYakO7*Uvs;WsK`s9I_0q1yT2 z8ZmH!un;y$YsE*BJrP`8L5Dar8=6ftzP6w$``M5j7(eGqt4?Ar3W?(#W+S;{%AJg# z<VQ&hm%9*F<q_(FQm9~a#isZ)1VdW|YyU2q(rq1D_Wk9kZFeMnocfh-ngm)}t0!}f zS7VZOv|!mc1~ET%X3M*kuvqnM9x^OQcZD!?(t--|7z0%+*L{9@vumVQs5K!k;HDT_ zB7-k5!_>}4GeW52a(F8lgq|;k408}5gq{6ehBd(WN*^cW=WuY%?!L^=c9=>;1m`@= zpl3~zmwbCGsDC(g*^>y~>7boja8fYr@0UGnFsz7S_)xyAEiPUAWzSgbYmqt_6FdT? z4A%!f5fV&H(#Hu`)s~?mv4Qq#47p~o$+PmPjiFK7WDZf3RT#CXeS|e!W}iP)T&5^~ z-q>Ag6$RH1t0=lDu4epD{yKl#_#ud*wfkl6H-^{RwFxuJUay)0_k9V)NEVyBMq;Zt z#t>I?fwQIg!A<#V{Kd!ut!pZ!+i<ysb_#hEQfLh2hB!~{5L#-W3)c)1D`Ltb9?JQi z)2%@|9C)T9uFU*|yy}&*is3qPU&=67Vc;>o2J4oWbZ-n9-xz`bD-&krC@gD+inED0 zn*k#jh4K1bm|Gi^mTPzO)BIUr!YP8mIl31vdrn}O%4oiLJxf=;r1Gjz6Aqc`?=M3H zvMkj$4hJ)FU@L*3m?SB5+|jJ%^@{U0I&tX}9LJGET_Va}blC%wt{}3iv%V^t2tR9K z8L@e^P-WpvWbx7gMzr+FHJHvl;Z)%#VJDtkQ@A|LOph#$lzNpCo-Mp|gz=}laJ#&? zEA*)iBWDOICR3(pI%*))7cGi<J2Vh2b}40>x6nBgsX(;k#HNKSwuF|BjSoc2%9Wuj z#>OsrHFm}3M7kms(ZbmM_1&S})!o<q{sG)ZE_rpuc3P55VnX*<clYf(Q2kmT&J~5D zCDqw|RS|G>tj_CuYAStrSNv_kPs^8H9ryu1{yuuoH2SFnVVkFlt6%MVYL9I5G+i~< zcX-;wgvg)A0@d?6nqI%398mWCP)<j*W{IlOtDXTFH;mj85lbQ<J}{BxP>Xhq*f6ps z^wd5<cNwEUwQoEwGRl=9CO7xgXu9hVC;5r<&f%Rxi0+gjDr0JFa2@{x*78x9zxF{+ zJxErrTA3<IQPcN*HA{v%i5x?;vbV}flvAc2;8a>gENd^nt5O@Ww;6X;g>p##D_qSL zlBh|BeTApzdv_hlUq|xS%Bue&E}RjJwGVIs_hN*$%ivSB=Ku}$R?R;-^?%((zUmrd zy%RN{fuzh0cXMUVqAD%f5qC!bxx@bC_fDBtOI9Rjyh$`B)S2b<8-IDXZ5)?{&1t<q z3mdQf{{uhaEC|i_y9{*tKEZb0&mHI(q)eAm(4(YWbEwT7uh?I{%P{Tjo*y~bc2Rw? zVuw-|+YN!acD&3HOWT?ky4?fqp@mb2Zl#1eX!(IA+x8v_<X+?6kmDitZ#ZTGG?ea2 z*vC7d1IN(#FZZ3VS`+9VI{)`Im>s7cr=xZZoobilKnZOBCkH;o0S%jeR;7I@DVz)g z+2eQ6>QUc=ExfG3XQ9xy0?p+~@?nwLE~puO*BLuo-WhdQ)#R^kRxrxO$Ib9MQ9pTC z&nh4%#Z*(c`?SBhS8?iq*w*adyzWWtNrZ(j4FO|8?Y!i<a(7rJ!#@V8DfOC5p07z5 z3kJmW*-K}H;^g{}EG_ij?YhbpnuxsM>87JD=L(zR(KvhJU7UclikfAY>?iLwy27*} zEi#rR2qO)75ZhqeT7(d>4PhFB<13?eYq3JL+`q%XIFNHt{5s#dt?i*r^2WDiGja0y zo-ivvLxcK8hg*gcYQyTi?ecnpj54ly$DT|;Fi=PLF=Kf|l=@9)yZ45KI{ki8sqAB5 znYgkHZiBEpE!LS>dxLS=9Datb+?2E}NNbFLK*cy2d3y*v%}^LXRZ`pCfLIwvAXfOI zTS$3sx5)M3V5#gRX=jM4$=xLH&LpR^8%!N^A(gKC<sDL?nO<nAj)Wb3|7f5+^fc3a z%-!P0p=W!@p2tOu{4hLNV!Ajk)X5k5sRO$)s9XNEot2yJmFWnmTzr|Sd(pJhvis%9 z9xadHb(DsjL3#g68xOpM^~pow465>}6rCy{CqN)~2vTPCFTCZfsdVAS(u<lgCS(_M zTm+N>=e8@+wVRlAn=|7Z>yp~O=l0b$jRD}rn8pl%Tqpp(dgKa(4=kB~;^lVR*T60) z8Q{O8E~nSi#|=h<)V;Fn@10w>??_1ddS?8-1BU@(GxF>)X55~~1<Z)cy&nRRcksjs zLh2uCPe~#vr;Djvn=x*4G+i-)K#kV7j{zpfm^~TGHcyrE)dE}zLlRJR@FgETQgtz8 z-?`Qg{5Wpz4LSS-ybDi#AYx)cZWPUzdxoH12FPS<3RRpDxB>6=j;anQ9qww;;o6Is zGj;!Qe1qibzi^*i`S;0HaT)g>q@Nwa+O31_gJYborj2VepKmlQW$JC~`~(W;i{|Uh zh8z)9|JNh(`uCdThclm<S=adZQ?bsq9hbXCf!LZ;gkVuKIOoP%*V>FZn+?hQ<RUY^ zul@$JfeCpeKST0Q;`8Iw0dS69lD~Ba8C5hE#gTjUlvyP?!G=b60rw;HxS)eB0gNjj z)sTI^4`i}o%sYezZ|#o4k41x*oG!!LYk}LDLZ!FU6)6<65x_0y4PlwzWcDys5{St9 zUo;8ppD+j;-={0$0oR+pkK8MxMF+mjnSd4nO!g3$v8_Tub#Dg@$stw4L9Svf?o;13 zxYnjEOE<iBzs$bO&zKOVigfT^p=rNCiJ3D=ahI{R&~Ce;G;Cs=>4sTrHx|@9&DHCj z;mMN?;cL^TryC3~mkC^v00%&%=^=DzA%X|q!K4vgFgr@x*7Y4X{QDndH+hF6X@1~v z?r9ML3<P;FhAo&eAlb}YjM(XzziIxqbi){UZHT}gx?4rA`J0NoTF3ltsd|6L>u_rM z8$o)&WGczM)k4qrK(i8gTr|HX!(Q?Y3Ish>)y1KX)juW0LF~ZII4La&PR838Zhxt6 zP14rHXc6PefsAt`1#w?cKRhr||MXj6!<tHu(|e_;*5!4}HfO3E$Ix99s5V8A`@jZ` zV1rBmK!N)zaDf!PkY|^@Dt^|eobDzWfGU3AoL(~6-9-TJg>0u9S`l(ZTk9hHtZl5D z)OKfx=V!je37az`g8Ym<e`&M=)3Sq*1{#qeeBZ-=e}TvlBk&BE&{<Ut2GGiEQJO8` zDIw<f&aLhO8pFDmF0Nho&({CrIQvoa&erd|%;>|At<uXYE{<TvUcTJ;3kcdv#8_n2 z&Uv*TfiD-08Bt%($l9eXvg;qlW0e73wMJ3qE|YXmiFMAay)jl}d&3XnZv}*k>M=-h zCNkB$<_Xjs&b$d4#<B`4NgXxMbwh6%&#YOS7MEU|RPZTET41Q%x=v@<nm$IHzBj6Z zrbrJjfo3F^-VNPo)O3Ox07FO6J{+{yyF;v<`Nc)<B60U)vCj0`tNcvOWF3}qW5aXE z8Aa1ivcOX_g;AK@8pW+5F(j|qGS=)4adqZb^KH+8Qej^0_XtAkk(Uh!kSX!~&XNlp zd~)DvhYFcnta@D1CRRQE!McQb7{WNoBI0WgP5sP~`i-}~!{rv7g2)UxdUP)n>bzW6 zD(gj+%tkjb3_`jyNIP#Z8?|2WX=Qy<Gf-tP2h}2Tpa>!!b2ZRe)Zhi{^IuZ{0PO87 z@^z*_UTD66hO`}?b=}NVfQ6d^DFIIv+*QPIgS^1`$oH82#{~`Nk*t_Zr<m^ke{x<= zJ8|3$bf##?kK&l-;{s;A20J>>WG~8XQxX5YeTbTjBH#rIM?(0~p5urO(?JygeoC%k z_jiu?#h}2mNLUrq9PnThOPmYO!0-E<&jVrI%KIRa!cHTsHQ;_drWs9LU-E6RT6Bz= z3BVN}skexCS4`0Ws+hD79fS+tr*MRNomd{hmGNLoNgLv1XcJ#9qCW<_3$s3Ou!vyl zV7Gy1@Sv-Wz&y_)bNzz&S(*)`u$K4Pe-yEnHufOC<1GvJU{T5}=!z|^)<Y=_-7me> zL8r`0!v3N~qLJPzKU741v(H7a&qcOKHIiFi@1|hL1ok-<T-!wmf%+$9R<nn-{FSx5 z*DplK<M%?gvX*TPG(r^jLTXt{U4!73*YhO_iD_mn8(7O9ODKf2-%I0QEo(}+n;_=B zkQJ<DrDg~r#rHy9U@b3d?jmIJy$}m)vG(6V2+qR6_7uWqvHvG{r=KGsq^_B)WmdzF z2x;x0n?2~6C5yEf8*bl(rBRERwLHdJrf3#&i7|9e4dqq8-}WA-v67z^8}PHOt%ZXV zHLy*V#N|{{2=TQwa`3S(T$kWgx3)EKCBK1xD4X+EFwV`D{1;bvIfcainQM5K<h-1i z^B&3QQ@`KvYpyCY=l5VmM_j}$ZHOZ-yxWko3cvaIwt#n2On1ZIIJCp3ZVh<L@M{<6 zQzPPWxbJuOzmFdXSHNGLOgA3~%KN+u_zySt7oswsw+!QjnYRC&zJD$%lPpBx(9nq* zj`DIa;Q10|Rt@I^1Cg`{S&ur~NZDYCZs<$A?$-ez1G(Pce-rbQd}C-$|IH2>TtcWg zfwibKU*dNQ)@y<tV~Ny!fuTTwU?qZhl2nuA>2JcU1t+x!JhI`M8WHj(5@CptsNr2c zfmgwE4BwOn!Y@2uP9%&-_z7%Ee3^^-w}M~b++IX}rD$y6+A6e%@HSv&P&v;ZV0#fz z6G&4r*Za>r+UWk%k2Jdf6qy^t`A`LEb;GJ)8-1NcsHR~He#t;t(g+BYw;_X2Wifoe zSMo8z=D{DkzmCVPXd4fpyZ$G*!X=Dk71tJnUz#Vl!6jY)%~5Tmi4aYhrD?y}7Rd$K z4)S!*O(wie$?1pL4$HG<_f7UW!gAxT;^u|0tmbbwi#GbyJ}l^4Q)bNvzxKa>(;OFp zQ8PamVUCN02b%f0NV2s15I#X4ho2Jw)Ct+i=Wn}dcoUN_W0RpFWmX2s|K3f#2Kn1i zuU<p)>x23Kitq{g=O*Yi2tf;o7Op>)Oy&h2S3HB`6wZ9Ki7n8(t1|W7U*;-R*=|$( zbdxndMP#xTnAm*jbI+Or5QDEnP-5a@6^1Y)5;<j7L(@%@Iyq(544+9o(HodNBVdAX z%=R5h>3<h7k9h;dCTo;QJtbw9$vPTwifo(jP?4qqky$3I+N3s`tSp)&D0v5@<@bwQ zZyIX6?smO3#o&ST)LSP(9(embH{qn>aDS<{rUNT_okMRmw7{JPc8~EIH{vE_)a%u% zjAlKXpQ<zJt@(Pk0M^ddg6=s6CHaEahR|1!fDz5`c3?+^k?-GilYDCtSlzELv6w88 z7zHA1S|l?({q;AsF6Ir^lC1uC5VMbjn=BJc>Ta4X6PQSo1<2arW=q8Un%NR_SA0bQ zwNj=i6)eSu{w-A<PLNBBMe}O$A^`JN)=KwEY4=lDj2G2jXWp_^_<^DAup}23iv}wk zohew8|2=PGFt4jKrJB#49_xfzET7w9iKxKY6dlm$IjcGe<y7UAcdqUlM{N*Q^m5R8 zpe5vJ5p0ROScI1a7@5@_f{p~2>lu7&zURv;vpXykNMjN<03#y)-*fK?wncGop<jfB zo^+$K2500J0nlfx>hUO`yVTKH)b&qHDu+7Rs-CcR%F;!KKk!M<mxZ}Hi<azNatJ$% zwPd6He3PX9g)&Lwl>eGpw<wdGMD~!A2xV0#7gk))^_<&ORI~eyxutI?^DNG&JZo9h z+9}dShHQ9(AG(6IR5O=@%>h<<aG>p`wkBz#)&mU#c|D@2AtK1w&^!@36~XZ}9BVA5 zQ^_O_KpezK7dZ)kt%mE|{EbOlu~+d>cH=FVZ1l6x1#xS~u=Zcv8Y@3h7e=g$>pgy= zBwGDbb#rQKv!c2_s88|+ihz7|mUD?mo88>JF%#^%U>>9{k_9s&Pkm~B9l1cOleN&O zmt1bl0rDtB4^FsqAkB+mb4PTyv&dbbK%kp&i*<7*;poJOc=fnjj0PxAR74i_Bx!|} zrB>er!cp;DMb?v~873=b)b}$n{Jm@(G#^?~!4*zxY7rBSraY=Xa%GGauw75#(t7lw z(X2&wi^)B)B8=ertRyAYN><-q>P&^Y7no1@{X0nu-S7cdChDNe5>N`9wS}Y6pv1T6 zoLox%<INMLVMw-;W^yYssNq6y++>{pd!at%UjlCK@Y{4(0%e6Ws`Ag)gw!5)7RrB3 zPL?H%YQw8H8A*qPXV1koiy^;nuJ;nKpA@Sl!fJ`c`yxR+nv_XW<a2e#&$KutGfQnv zFMCZBY;OD=Z);laHH~wa097-%`K|MC_`!~NlJtJEX?(I@@X4NVm>v%%(~5|zvkoL1 z?rc=L`hy2Oby87TRGDY>?c%c3rKMyr7ZY8V`q_TGYDKijHTWwIG!l<6t+>jkg_?zB ziAqa?XJCTli-=V>-^5TNa}mAzD~xDy4gjV|VHiVwFj4pfwfiPUJdGsFr3r%BW1iJF zQy)u(S{p&+`i|Q4ydVqbJ7YO{Q%UFh@>$W9@*?Q8io`Is#%<bdSf{9&82)C!DQpq* zYIrAX-%^OqT2xp&1ZzGb`!CRpwA^AUx2Vf4Da-6Pi2;vvbh(==_7ALx)-3z|O=ipq z01-!LQI%w>coQktdz`H<)m=AyU+Y)|9f+5n;G)ObnguY*tgrXdW33)pbDftSA5%&- zhpl_1xvp-sS2)2Xe2_*s7E%{!gpZ^VO>l`Gq!Eps=|mFIcnlHBK`DoU^k_OXSbC%i zMrt@FVJ}izY;xy{x+ll7>8|gfKB@D&EHiOJ+lcc2CGyXJNA0sDv&4xs<bL!n=AFW4 z;5R6M2lukye5rcTuaz>mRhY<3?6J&oS<HQwf`BF8>&dlR9@ASU>Mc_+tO0fYB)NIP zp92g2LiVUavPbRz<xQ-OOaxgQ;S6n=W_G_`GUaBUx*%q*?;qG~L1tg7$?#|%L%MS$ z6@(KeHXc6cPs8S=imZUmUcE(SvP@{ulZ;pj`>bRYgzzG9CAynf1=l%RWLB(%Rs*CR z1YqjTjOH2jWJBdq!0(kTm_NJeQk$*nS!kTgI-9i5YJD1~poS;!*By|Rq>vvO0n(Hi zKCIwqvt}X*(__81MqvRbQF_a?{-m2d>N#fRU-VX%tghG^Sk-5gdN-H;=18&(&?T>O z24x|UW(KLJd&m&SUyNx1F%skhe*MLq{RiIk8Zbc9k;A}L?JtS7iE0|CS-4piIm^iO z#1(UJq8dc!!nHKvBO=wt!4(2}<gJ4!$hrK-X=V6;2kbY#Xd^aoFobhxN4L<aCkC?4 z51<@UUv4lB?86HeDs>mXa0-LI@NOqW1hF)B+g^4zz3d=p8~`o8AL%fO5#u$993~0k z5o3}*6dA%t${Z#+$s9*{O`#9Pj^JY%hiT++)=>{dhVhXKhe<gc8U9dYBp(^!Fh$)f zcl1NCWBAx;hbd+_YwZ0<uW78qG!F43pJ_Zq;n>^!LqOe&LxFgGqf1J)b#NpMm<9WY zxi;Y7y7qI>pOW~mK`RH$5Nhvs?dH!GTF^~~&qZF>LVYyIfxIBI{@?`Dp$TxYWn?de zoNe;TCxoVXrwfkq-?F{gf_?lqCx{!$ZVmzue-KGgZ{fnP39f2~#IPrj+?kdia%b9d zta(m+{0MX7U-Fo{;g5HwU2)x+mW#B+9_t6L;MFhKlfd89n~va0KmwPum&pa5L2SH6 zFy%$~uKS)N27p$b{c9YbbzgHZOgk=7^{A}w5$t>lQVaJS_}eo_U_LnLjfAa5g4_LN zYqJVBDnzEug(l`$9WG7Qr!8`I7yOgco#Ge?JC{bJmCtIOBXArXbVXC1lU#N6m$*)X z-5z3HMU+$8!Z@`Z;s7p7WGKktUba5%*xVz6wXOqr=&=9~9SN--kyENSQ)aWksr3Z_ zQnzGoY#NfUXCZJ)H(t;k;EcODdjRc6+E`YVAD=(B+BVmXI!to_YjqpxmSp3Xc^)py z2actcI!<HIazRI;=Tj{wPdl>J)ebisjh|m4C7!4xEP(&`G<Mkes0NV6h9?Y^u$1P| z;bbkZCuEg0o+Mbu^69%U9szt%u1QJj206>NFH$GB=1O3h>5ZptsROuov2BcFM9<2X zMSStp_VKyW)Yj!L_g{7Ex%&O4csg}|tEZCl9TVZ^*5nqrQ2G^arPNl}de4y1tE6kb z;#MYB*SDgjuq-42zr#5X0iIRlZVqARr4(%8#KHS}g6aUg%vbnzj{)l`oHXX7Q+CJO z3&20n(tfRv$s^{SzX>uw+RteDbWKW#hihCfZWMx1MAyt1f@OSzGJ5Gd1dbvoGv;9r zwmfK)1-Y>$&R+6`=MH2G)do{Zc>LT&ItE-Arv9XlSwO7P$tpkYYSyrw%>N+N!NSNq z4hii)aV}X{>6lO^$(0-C)bf|ckZH**`x`zN=DCs51^Sp(S}Zw4&Z$!`!ZYFuYAnT- zv5y{kgjmxyDXW@^g&?`@2mFQ-^7eb4RVg9t%TR`~t<Q6pBXSjnsR6fwm<I|e``C-T zHRwIFSG|eRn?~sAQ7~CHjcoXy!#*YNL0fi$=bP{m0tT74C9n|RnyRe{;S2P%B5G?` zP6PynA|cvbb+J@S=cH4m2D)n&mGf()r$;eKkZYla^o$fe9e!n@?h4nrkz2Qh3D=tx z2HHogZjWKO&@S~G7%W1&XC+ds9sM`Z7cZ?$NRCLzoKYH6u70hLS@M9kK6;d%9_gh= z*!G9DzOT~L3^4}Ys?zm;?K4XaLa$k(k6VOtw=1K5`l*HXDWwv)`cTO6Ann<&LCoQ_ zi-T!1ZzBk#B$pSuZ~A<6I81x(oMB<lR!a`#7T+XgLS}Mlj6pr03=$dcoU@#+>uU^- zL5Pa<ab*}G0(A}$Ys^xee>jRBsgGL%gBIN<!v!zl3+_f*GMVk~a&Vo1BfTC^W5K%x z*MTxxZxn)bE+bvIP#AEFup>U^YuGVxTz+MVuK8<EJ!D=7qmL_<e8Exb5BfZtiDld~ z#4>K{rQ!Lc`#DHUrpmLZNKcO-Bh7$%!Ewi^YfkVJhs>FHLS?Ma{JhKO>@{CMOff=o zv*cO&Tw1QI18^{<$B8WlM(Z$N0GU%In40PPfYgM?^Ux`v(2!nF1T*ntv0x}jUy>pJ zWkJ^93PINE_!o6UW*O7)+@d=x*R6jJ_Q7OYu-V~i?gFDV&}{=`3+u=Z^SZ@|K)^MA zPrC#^(B<#3+g5wsQuMh+gtz%n_t;>$_U|t+$;3ZwxkLMGC=s%u4t6@lWI$}L-5Y6N z*4HTm%M)u=IPVL3wrxa`kHR2%+1X**5uM-RMd109T7<E?hUtm6+Cz|I*hGhy9e~q@ zu?6m~g>cH#(oK4Z#7Xk*>4kwI+y<P}Gcx1g5V>b}iui0ybh_aN+L*PGm#et{gk2Dr zv|;B!HHsl+s%!)B7}`>_CC#;UaIA9e-jT3xaF_*feIPpFvAl2&(hcdVdaB-sP-SyN z^hJ1m<z9R-%FhqhVQjge!ZU5q&|7U=!&J>GHlDII#{nk?{bJpJNQ56-TIt5~6#|M0 zkgFMrp|Pf7F*O}B!UVkg^s8x4ZM@m-(0$Cor5u(T0e-E()3t1_41FPV>4tQps($B+ zmf*b$SJ5!m31#m>xQv8L`EV(c^XdI$4MOV8KCvpv4^n~ZBo`@bZ!k{!NE~vKI3K5e z{|8jHCBzj?JEA4n!EbIC+mie!?q1p3IdwDA$VeKoBU<_&(zMgB(M#4d%C(c@wrHA! z47+6A+Q(=lJTB>fbpXwoBrcLJnLA%vBwSLm7$#%bgJ9v!2z!xUFehrdw92cGpqSB_ z`Yr+J^%}ijx84HGbHQ<OuaFtPSkO;gObU}lu?Y`CSqoKi8^KrhO?)UcNuc=wf#;U= z(tQ$oY6VH3{}0vDk2h8dN^T;?AShnww>|^9<KWFcGi<;HJIIW%4I;G36hTG3BwjEl z&oo?>h#6mLOcFF)<6e|IjaPnpO%9W_rJJkkU9oldll-F6SSP^3;WTz1ja>mucUbgq zPCt#Fzla)DaeizXaF>qxaTniS6iy;zL+V70<*0F^bY{(hIjhQBLikQgnej=2I%COY z)VTpL;-W4kMcHn<ZCtgAtB!qdI~=fQdO#g1^V=Vdl?DA@bGMCG7Q70mbdn!H`F(E1 zkAjk~fB`S=J`0_c&9)r&?2U%K4>jo-if|IzbOUs_-zG9HMvO|hvZ@@TlBt(qOy1T_ z!WEa|SX*#Jl61H;D$E<zM^g#oB?&*XNHTHjX1$+cv995B#E-Djf`lkpLPCl}PZ(k1 zgA~j!7VB_jR45Pqm36W1en#dO&|yq`B;>a_EXn&&>6j5ZTp1PSN%`_|znqXT9VP=4 ztyo1TIvy&lQl~k|6&@A+>e0adPq@KV>m8L3>iw37*nGHszeW3cfP=pNk;aVIe8d@a zWIUgt2!p%uZwvgbcwTvEJQqsIXbw*gel#17V=Uj1AK2GLa41yUt0y);G>Si~Gd3LK zYK?>P_1jg=)epyLjw1ZrI`BLES;-jg9n~ZldlA<4jqQ6XP}aQ}#<yr}--EHV1m~BP z%rDV`v?W%)J;GiI^E1rnL)?{BMPU;i_XEcR<)TucImmVYH1&Syx8h1ce<#rOgMALp z;n(l?8hp&p;s0Dm$p`<rj{XDxR!77B|5tT<EPkXP;~@kz?c8AVO!NJ2JUw5~zniaj z{rz4r!M>IJ4fVc#Ka})Mv+G~#t@@9B`<Hs3M!mRkf27{=^93dE@%8@dehtI*_P3zk z=kJG-dK-5BOTEsA>rE1X3kgl<h!)Hl9yj<yG2=7BG~2l=nXzkzrxt=L!}=RBPy2+B z2ouwI@gd0w!==%^G0Oq}>K{x~f@_D;35SoYa-kAt^b#wPyRXsK&WK5ZUWvCe+SeIz zT+IA7sUXRs@p8Se%9Zy@p4Z=x8J}TkaFg)lkY3692jNd=STuj((@T3L#~ul9c!y6f z=>^`2;z2=ri=_W;60=T3V!|GYDXB-ymCGbT`5+?0(qD`4b4&VYr6Ul&^yJ2Sag`R$ zX2cW~s5FE_A-T};Ug4w>Jb!vfzh~6&YtEceRaOYzRpm%i-l=?1z;;GsdrP_vp*ntX zfz=`@aRCau@N#JEl!szSd#g$K61l!BY`Z-tj&dD@x6S>mb(a1=;$BPUItbsR;m|%D z)==IC+<Qt~2jO^lKOFC+Ncz_!z1VdSNQw8u`Sk0MUg$bV_T9q``)!>?Q^{Rf_aFo# z(Z3e@1I4*ar#;qLX?IBkPW$F2y5bB+q{D2vwxHPR*Vb6gL}EE>W((oUN5K4m;{<w` zEWt%MO;P3G34%lvNHUR-B$d>YGE5S@uZ)*2(DP;{NRi=)jL!Z)kl@TveOI#AqR2@= z0j`6mAIe+T+3*@<eTeJenc+}=i4xRxYF6W(Sn4`>_Tg{|(v!C%K&$hQl!DiJfG3XE z77O!4eZ)G-b?^e;KonQkS+at=a`b+B&|Gg}G_Qa*N#_<g)bI##;C&y70AE3#E<B9G zQ>P8oVbx(EPnQ7qD`5}lW1;TzVI1W7qkPz~lq-x8&wRj$PgjPO{5My4R=EC=FwJkd zEA_`73F?0V<1O$WRCq0dl8{U8^UH@<b4khb_qi7H@*$@E<P}~gr*aPfzrdXggs9fq z)<6iAxMievjBAWwr<swt-J4+H3jY^pA2I)=d`hadbyH((Xsq)X3!TK~+AF*f#Mqbl zvf5xP=w8mq9{*jdwlzRgjbkOm^zj;>h6$!o*_JbOLbRw9id&`q4*Z^4$6eipb1e3b z_wqA)|3m(o;9j`~7!5KugsO7II(O8S7Qu&i+*O;?t)6rjUZ##CS;<ajOsp1g0$|WD z?R>eOgu4OvDkiky>J9buFFnu=0A<vnU4YXBz5!F2;AoKJV%~#ugl9}JPsz78)Kk9n zz)AJtJTd>CM})IIjZZDwxfdTlK4Sb{OWJLxOo0J&1g+!lq({o|taW<iNO;5PMY6|l zrB8__T=n=Dp?JP!`La8MsSAxuR+LMr9H243l0GFvf6z}NZr+QK;ZCPG%})ulmZr7= z?3x+9G%dC8<B7WSQ1H?@+bG>vsD-X*A?24&rz?`ETXRAa;v!4a=!!b3qLE6`%nO&M z+?*FqQtz<p4-Une-)2*-8`Yl;>P~Rw0i23lv@t44;-yWcF~4@v(@V!Zft`XwLiqwu z+SVx?cr`*Oa7Y9Jw~+sdXAo(Jgmzg(_=&Ty!$|k<yHRV5k^`;)lZbM!Q<WwuVM2id z0&WSOU2MPMgr|&p2fHI}h3iihFwp3uL#!f+u9aKX$`$M#WQaF^R7?nJN=T+9Fmx8u z-7&a3EsZJi;-ySlGTaiWz(Grgn<1qgw2c2wI}YCk_{6zr$KfITi${~zl7F<Y2PfD< zcvuaMzf@4tdgEfj&SZz1;}N>>Z)x&)*g^5}XeUzq6)nA3(7nnb6yiP<|JAI647gQ( z_}1odT5^)p9~r_3?T(|n;wW9_=N<>QQV6)N^2F5A@ma+ms7N7!Z6VBS(33fhFUl_# zVEXsvNgy5|7=iJXCxIa*r~+%CzuwRaTO`5jEp}T7JPVlE*4?VH8v@&sko`qDQZg^F z?{OtNZj?t(O-f*MB9f-Cg)+7<R4Xhm3_;cw2{|}!OOn8bvNW2OOr&%XpL>4ImB&%{ znw5fP^|+;hZE_UqUZU!tnHQMrns;xoIg*DPAeRsa5S+fz20nfABk8yPYx-n%ZYFLE zaNeFVsHayR2xo+_098LZXpRu+m6`K4s$m3Z&NOe6&)XPEv`s6!keI5fRbS~PEch5` zqF(R?`MMA);~;j*GhYN{m1_C!@^ItxpF^9N3n$jx=YT`8EgXst<D|h8<}lS8{&lZ= zWr{5^cI)SG`wpUoNP4yrd>^des%_+L4e!w~P`Y9BjpTS<+XXoR*#jj6%GN#ed1wEF z2T-?7fC|GNHF!cFrkd{0%k_#Bvt<b};r5xIcYcQAp&5W`qGy|mlpp6$&SqFP8%_xK z%d=;F-uV%)!f=+6wi4GNJ3XjkuO@4G&FHwR=OCksAR~tTfiRCc=!7`+?l^HmT7o2k zvZsFD=_f@H|36{RHUo-~kPW}*I>%IL*5ANQy#2d70XG3_)vUYGd4&V3F~ZE+qg#RY z=LP&=ntO-JJA*1+bGZw%R~P%ahxD<nnfUQ-n}seC8R{Z($_OnKl@LCm>ZQ^+x*~zX z!w>3Hcl0Ks-ZWEhnyWYcMsHdSlU)}rsHz*Q-JL;KJWX{;DBbZpYUuS3E;rFsX@n@$ z<jSUY;F9lq9G~zM8?zD*b^zX4PYd*UH2wmhPx3fQ5wFVx7rXMLCR*y4E-+1}O|)1~ z6DLT0p2$Q?^t6!wjzB3(i&Sw6HctXDLme6_sM^TLcBj!@lPEX?n`nB2Ff^Wwqn?%| zQTFY3)W=}Vz1)Q+C5b{^`Wa}_TG#h5CBmC8D|1v(X+Y!ybcD^LO?kqKOXQl>M9ao% zLnmVxZlx91)ZWoqhg=`N<PcI-M;t-{*wz6V6z!N!?MU0a@$3G#$eS+=9K%W9P)M+Q zrQs3i+k>9v$xL}66-V$~4UMViJt}JW?;Bmmxv|>d(}=vj<+VF(^wi*7w6D6u7ER?> zO?Utw#oQ;p9#MMfMK<a?6btvAxVM@F_Ub+c$R{7oyW!B1XSHCSN#+Job}{k}`Efz7 z{QOAD-Mai-tUaRFbN*W=9=rv3Ku;JY8A%!Idpj=?HVVys4)e<W3D}72Y3=e}&(m<7 z>KKWn6@bu?^m;x*R{Vl71W{E3TA{qp1Qdn)I5*EgpU(ZjaaS;x4K>giS|~htpcP&* z85i}LVLzaG23ohO<f5(T#JM7G{2cOYopw&QiPShrj4K7>RW9j9ULG`m%s-y`8(l#Q zU>K2~jq74Jk+>$|Z0eb~ujYzkvrW@yo0VcqL7zz}G8a(h1o9Y(Su+>c>F8P1K2g*L zQBm^Fo8@x)n2%Z!_tsN_GD%CQHQ{;Kb3kzeTLg0E<W1a>2OgQ-3t)*1qU9CL?d`zD zJkZRFN_srz3JF#99203aG2okmr+Yi!0ajYah@z4fQIF@>$jkJbP0|1k?UJd){U>0O znT4}WCOI`Xu6XX8tX!kn6k;-kzUq^h{-p;DaOS1VlcWpC1cw(1lJc2DAIdB@nV467 zOdj(>#UaY11f4{t0^HMZ$E?7#Zrr6bYI{3ZVi1{7Q@o_dW5*aS3+-zW=SofSh4|3{ z+cBv#W~b96r@IGor7aRu{PQ@_5#Z-8n$W8SCLG7fn7Xr;W3)kOrMP=JSen|hJO?z% zwkUc#e*<*47ExJghq%Y{4(MkMgPWLm(VlRNthcl1p-49(%_g~|3O<8$Z)X9bu;K$W zuE*1ir~n<h!#A;;$?K{n^(;Go0bNIr&@gz179Fz&o7^lxliShcbD~F^Oy>5#w0X-m ze*Hi@zdG0X*l<%|d)MO~hYG!6lvOEi+#P25{9NZG#CC|wN_)KH5mhMq;qfmexVSuh zu0>oX=}h2AOmfAioN?a;FRjcKnc|;9d(8AmlTwm3H!Le_7mRpp*>S$3gQl63`RLuO z+~uYxDOM>n9UW2~!8_bkXmcQsEG4$?unHw*R!Ym2LaS1epS6i~+u*Z|Vv-Y88kMhW zut5AHT=5p{x3O{TOg!VgoSi9PyU2z60@h@rFnLTSK_FDfhSDg_A5hK26dPcYF_loL z*=<`eubhTgw8Tn}j9tOfqiid}ve>Xyb5(OyzC(A_-`+;?$@^_{<3h8|Gbu1ue$jIC zOhIzI)kFnCX(n@OH+k=rjKl9A8HaiI#vzkTo&V3{@cOyVkB5Tug^Yve+#}<#`dsHR z#PZ|d=_TXv`sb?$z%wR@a8qc-E1cz};D7{%Fd&{wIm>W;^55q=KL9Wf6RNfLY#WPR z0V6*S5eLydeU`fSvyZ-jUnpGF2_6)YC@KeR4j_|O<AXJ=;5X-tr-lq-?Lbo;6Asy< z&z|+7eA&lCkUPwgRjZaR9nf`uw!*O5ex0+efCZo%*O@|qgz!Ga%cfia7?IQ~S30yg zU1AFF4R|i$PJ?Vtmi;^!7bD@#b{GOPIZ&SXOYD(g0*W&JIb4S3f)8n=DCh{DQufLf z7#uL&N-5kokRiY8I=52X`Nq)7MP!>$iTo=Esv5Bo!;KHA2wG+yO#d;g)>?7#yDF9y zBDiEbf4vieb4DmWP$Lif1+wQ1^laK2M+Y4P+XYX^U9q(17H4;TrrtEvI40CHz%`B; z<+;H%)<pnT1`q>U34jD;p7-&s0vl6u@xtGTV2!|y61h)e=~<;p8tR+iI;Cn|uCota zIreJ?mbWoC)USSqO$uOp&@tSqdj3LgV(}eV1AiXI8UX75EXK@EpUv-)?B~zp_(_(Q zxky%($;zR}XWe|4sAn*Smf+dRe)2rnq6qDQn6ETK@D?m28}4%P>=)$;UyDLlls`E; zDrcNoJR8FEt;n%n3C+9#l)y&3o35h@zUA^4z(K<efju`zPcd&``%t>%iCYWhkbX3i z(zOV3Z&^Q{T67)eU~mz&Sb!y^L(06+@ZI(9dfQyQ^SgAeN)k)O&V6-7>C2~cu5r}v zxK6ykXckf6yQMFym^WAaO$x)p3Jd{d+Z@J}<j+^tq<;qfgIA;2l{6hLjR1Vx9CHRL z5?2#fy+Tob*tWEK;MVV=J-`2P>E^5T^{x;_X_DMFFN_&eJy(Tvu<ly%W;A3Hwrzj? ztn=<&+$qwy@@)7c<^k?`q~!%vlyKC=sHl;nd=h$=bm@M@xtaELcr<RM?6{yj@r7O? znTx}F0ulBELb4|SjNur*^J7ygw50RQXOOE+(hhN7a;nEXSZ6#=BVDcWS^1V3o<Duo z`T5-@c?W%QNl(MRmJmLsJ5mxw<m&<X#i*VC2S>j}7o+SioQEvMW8>C@7mf>3KPGE! z4z63pK>ft-gaq)FZ%NXv`mFOq^rj`mu&{&fX&{(lTC4)Wa}R8v$-t~8(~$o*w*S8| zD*(_8vkOf{C-;sJZ_hF_az5gMci&|HKA>{%Vm9HzO_gG7oE*&@ddd;bJZD=MmgQ6# z*M19ig)1Ung2g%nM?B_G7OO}wC0+5cM{TOCfm_St3da7ZGF{Dk(j-!p#z)#5VN3*a zl5AV=A{+iP+Vs72#UzS-PmrvQ>XYLJB&t@t+mK#bHpiIrnO4-qLb#~+o_!X;cAm*U z1X-6LxB(PF4E{0hzRNzRIB?yhB!?oLkyPg)x4f*FWP9(f*BZ7n(-b38|Ne*Mct{$x z?lT~?AVu3B?h=c|cc+5ou_zCk)$X&NZ-2<8$L=IxeB*%EBckwNXdYz@Jx>-c0?`wE zbb{RP67d0!4Q?pkz<yGONh-yM$i|wxAe}>_P!;bA(r%}W*|caf*+Q$sK7*9N74C2D z;@0}zAPyK?f&-326Bd;#WxD+V#TLf++F1`wGepcp>=BPkDx{RP%T`Qinr?jMEDoHA z8dJR+PiLiifIqN5jv=sRsi~W+8nR-gvMRPvyjV^yw~0+BIiskrpY^OGHD~cPuR}0o zeMuO4p|+k40t}`g5WkK8b(UG|6xntIyM?dfC|?D`97iSC*|Qpjbpe%>%*Ipt1vpib zDk_e16c_A2nK!wUL$iSc0EtpC`|hpDTENfQSOpuf*=uj}M>UpKl(J#!UH>FCcL-TF z1ci7@ln#xu>Y_eZqE`N(kETtzvgEjNSJfG333dv3*>WP15z@<tX+7nxu8%_|RGR8j zw1{*+KYJkBDfAt)x!eNSOAPm5fWzv*Fg<P&x`5=B5dQi&9asbgB7_L!=RGWm+O8j` zdB_>T2r!s)w0hfFn81K?_+y^cjRt6iOnt1QQpiFj5IBLVEAV1SZJiLh5Ebl;j-0Tu z)d+P0w3Bjucmh{KoA-S_?&?lbrk%2eQ}57AtPHeu)#V#!2yhX3?m6}Pv!2_el0IV2 z;9d-kGb*aJ%nsQQ!iX6ckB#CzdID#U7V#eah!#Pmk!YoFa<vwxv0V^*>_Y(%RcBQl zj-5TL`*7@%St*BO>54ci_H@)9>eOx;7j$TzBby=^CmU3|lUMg0<+iN7+|oE@X~&4; zBU?mumNQVQXx_elvEa0^)^a)f@&;fXQL8V<w!8N$Chn*@)i~uzM=UABh8Li+1smiO zvn9~{tUfxGq?oy5%i6{%an4X%`*Ni5WeaSrFWa0i`?6_Aws3=dW_A}u#bXuVQYNxV z06^KQyr_oj2<(2cI@=FRF9Jl2SkP#O(P<>YIvVD+%$Nn!pOvM~->9nGxLB~N+%{Kn zF2OSGtY;^7pKWgeKv^7ce+#+z4sezwc&k20CZ@JUvd1865!4lwd;uJpM`&aPjozkl zVCBgKKik+FTQooHqAMm+v3vLIp}Ue{kxb!yiyOVG(^R*TiP<&?wlnhbdyTv3E;V&| zd*dEjqNZ>eJnHz!OO_uC8rELFU2xIzj{I`n<!NMP+q?R*dxv7;`&;JjnLKae(ZlKU z0LY1A33h9mO22@bSP$||-MjiIlFfX7XUU$)sWXu*)g=@L0Q!eyTU3EymhLdBF3g{% zO3hGZ$Y<6+5sI@0Go=Cq#UnlxlfcunJ1>25hy+jK?Eb!MkVBNg2txxFguQQ@aQbsC zF<;=%$De+l#D8CjeF5e=HrY&jVmqA^L-AT<x0ZI}_)=0z12+TzHI&j&o=}=MBl%Yk zsggG%B?`nZ%jBIhsfJ~l5*+$8Hf;{EKB5|anL>6?Nb#8-qPJn+<Q!hp*Z+%Tw2>+~ zHI=lSe+itTwgvZ<_iRH_``2BsCVBS<`H-}&DbX;ZYAf)2ZLAyU-cYdEJI?SRi`Z2W zMUI=;;~-i4*&wdQaG#oVyUrxGE1g1ui&#d~kZ!8S{W8)Ln^ywhMv7Jf6oMH;DYK{~ z4^T27LCe7By!qWQz4$ihJi}$3eW<M0|E;WUZuKRURh?ufWhwr>tkmU<*Z9XX={_Z3 z;tq3KE1WX;cD+gD3zj_|S&nH+H;hp4g<ODYT9sOpsuCIQLpSha=;I!Y=X*dLuEU59 z>%DY4xUmE6LP;2<x|5}f_Xla%9%f&92C(D&UbL*oy&r8)W!+k3R5^k7l#oja^`bLm zt4_DMd0})2;qAi0SMPuj-Pk`aXyCXYZ7qY`F$Y|AS0A3b5PkuRAG6FqgJV&xBrmNg zDRqScv~@nF8^963kNYfG?nP&4VPjKXBuF(^YbB<+@%IRf@{E^=J%5(oon@+KBjSxY zXAC!-q9y{soV;drK;=}h;eu3y9}eJ5G()EX$U=k+4={%c=gysLIQHYTF3g$#A@jyU zO=VXf$}%fv&Sl-9Sd8ZBX|tPAr=DS?x%7*4Q~YcxO5ZMkb2qdlnTc5@pXx6<2&1g* z>Y9IWS**Vrq`BUGJy(JQiYZ>)b_q_i0c-^r5p>=)9h_H55fICmQMD2eq|E%b3rKL7 zY)qAcc^S%M4UKyNY+tpmD%%?&0ABoTTB|HH4_0krBLv6Z-0Y)OW)*LX(w%)Po$l)8 zv=YEJ>2ana>vL8daZbOE|8Ai_hBcu3{XU^P8DTT$GQN3w0rL;_ozsjk7ZyI~laTKd z?kIA@KHAUa#hvK!seY-;>h+)Ktv=D?FP?-honv#Qp1*Oq&%k~3jE=y&i>T8&X5{RV z;AziV4);>94{nSd-6U<>$=zN6VGBeqb-)vTeiU^PkX&A+p!vIbnaX2-+p|yD&Q`6j z%JxMF_UsGx(08Zmb<)FzMxWqWy63p6_{C~AN_4)@4`9#k2r&MF?_383eTCBM)a91v zIk+I)N~0wobFL_@J}PmNC^N$ql~kYRN{GY;QC}L_eF%2-A8-Z&4NDxQQ20C-tBvpO z(@H&H5ObRYPL%Tr^F$cplftzTRec$31x@9%nD_(iGlJx7HC{!3Mu02lnehf`li(hV zJ2eW(iz6{_((nO&3z|-MUpI(5e+z@f7Ca~1<8h%<Q(#c%=DZQuWeudqj6!@V;&F4( z<EcY5X0<g!fXhIGn2|QcJrSH&HIq5)N~_b|h8xw5)!vx+bRP|nvgWOc`)I6G-Ql~_ zFLd7kR;HQ9$~2=3f5Y5KOdF*Ydp;w*nvI~{{9KS|D36-+g$KuFRFk+ZhdaH%lY;~Y z0Kn-D7c{@WXH&uwqVUs(o8|~IH*Iz;$26?Z#*bX(jBxO{UIL<w28*ZfGIjSk#h!z( z>TR2hGEPAbz|wDqGAZ8i47DUaapP!hcv6HmJc^}ERvN6AoB%53K%!?v%!sQXasqZ) zhVa6dZrSe)ArGMI;cQJ?pAo2U4LJ_0RL*KP8gwqk#kSa5Bpqh;*tNE$%W;L_=Z>uA z<p|tcTrkNV<e2E>Iv}iS$((<ZjD?W`fA7{S?bA<th_!PYED?(W-YC-4&xf$dVwH(V zi*)w0Lre&(jdYboj=TCS@-7bMx9m8DZA6*mSc5fz?As+MaR4I-8oek#C$~>JjqNxJ z#-F0cx1e0ddmLLxvt5j%l+qUpO@$(Jp%_n-h8`F9tFQBCY@_P5LBwOI={BBvRt^sc z&px2r(!K!EKWIhJ73#rF*d%7^VI3W`cSRcuoTtdyT%6iEfPH%wG*1L;v`B2$=y3iH z_QMev&=(0!MI!rar?9Hw9Ir!~hvH~ck<g6jmmiJhX|QxSjJP==3khQb1FRA%fcxKx zC3!HsmS&=3@6%hh>CUtWd}8oHJjjjJDBxyFl-G4Yzo(Og>>L_9RGkg4JL0lzVPwDJ zx^d1ar^ultI`X7BNeh#NN#RLblinxCj%kDw@oz5vC2cv6bz^|&9$@dCa|&vl-wyGr zph?22W@7vO7}8bz$Wc0=DbiRA9a^$euWEL}QuQ%>>mqS@U*ccmNMA`Dx!p<_t_yXj zC!Nv)PgE0JMS=3VCfIL#{!p#KWuj`G4DFgu)t<(!ibEUem^(~k5Q~W>3k+FaNV|c_ zHK81HX=89cnZoJLJGd?n-F5WPM^ArSF_N;)^4ALC)|OZ29YZD7OSEIo^<aAw>pWFI zUV=@SdebS-RkD_1LB+=YZ9*4eo=F>lJNCEzr6C^#&yb&B|1)fJZu#fe(AelDlEm<M zb??_Ew+-%a#1n2Z@j)x1P4D4_msEJprA}5MAcNMeJ_QY$mnB=7g6~f*8;zGsUzEcI zk{Af*!tf1eWeH|vlxgJZff;}eY{4Un<k3o(QfN}rTNY@Aoky?*frbV+&pqw|WRv`i zqN<CRGwZ5X8W%N3GzmNZ&fQ+pA*mBUQ}5n`MW9yT`IvK8xXWbTC~4FxQDdSKsdgh3 zR1?+PQO@6y$`vKu+&HmT(mlUD>fCzl2b&UBUG|NH-E#H**8a=fJFrfY!%Q4*;rx#U zA-O{65KZw?pHc{1)*kmD8X9c!WB5jPl(}Nh3tVnIJgo4WFq)?gM|yGFW{9ydJbi<- zuzU)5EUl#5r4@VKm}A7wo9O>|L8N};Yg}r9(23#G)N8(m_V<5vIz*cSN@0&ubj$|< zoe)!BitF=Un7`bXoF>|}P1|_8ZqFZsd=uaQ`89jhNjObFVaH@Tv}(*#GM_Lvjfztc zYek|a4aSRcJ}Xabk2i=q7jaH3H_Y2To+pr&(RV@6$|i*vAWw!@D*Fn~=5W`_7*pZz zh9tN7Jy_~;_25Y-J-m;t+(0vIdWKy60;fuI<9xr6GRW?)bMIgdx8S1)wiS|4RlMBn zmSHEM$~7+15WJy+ODCby#QQbb{QEVYmmr!7zC78Pg|HThStB8@&3INJ)a<5wk<vZ! zVU}|zI}O9v1U;TtA!DtP(nZ@|DbnOUc`l;hlatsOp}?PWMRNn5H6*8qN{^g}ho6ko zPZ~s?ABXgDPqcl;K|dx0RO5l8x+5pcgiQ&cj#C74Uae>0U8uc56ezbOd~e|Bk*SX( zvQ+|5v;rMKMxl)?{Pb4NCm0OSnDotHWL^iM6Sox_-#_W;#GOvtNNjilo?6Ts<9jDN zL-{LjT=U=xyT|hvgfb#ugmh0_n7Z*~rw~jFt%J44<Ho#kL`X4L)^3f~#zU$HWx6q( z%Oc*Fg|83h3}X)Q%#8ZU%c*3nmrW+RAcK^V6v$3?;aKDlN^*sXwWFPQTi99DAq=>Q zJ{P}mjY#C&6QaUxce^Eqc}!Gc_}%+`fr(Gu+6-mQEx=N`@gmJi7?-P@#<hE4zs)Om zIqnanK6~+JPFWC@Pko1TZ!@Zr34$MyW79~yGfvCakQ0=@+MxirH0u@s36FJyU_l=v zq`_2At-i^~HrJ1UIK*N}<e@Uvu_k!6YU2)I4*i7BUfh}Q3StgM^@+4Blsp6kx#%Q7 zZLy}}Pf_O&96DvcMVy+FWcJrCvD+wot(7%iO09YI5(y2#pC*}W2LVCG^Co;kG+AAK z$+3fEtG$oEJj_3q&0jr`k8gf8OZ2dKG{Zl9;9>Eow^HinPYpDar;m#x8@2x#G;BRL zUHz*|dcJrb9vIaCw=;^$jWfFiSx@=_Ayu%0Yu;w`arr<m+@-|p@$k5d>%YVS<T`(W zV&3FQ2HG<VGgpK%O)TZkRGH%S-WVDH_5nACxs;39V~S6~Hv$R(agIhO!oRuft6Adz zRn$<sw)3*YzWP)04h|6Qu*Tk#9}$QXcmFu;Y7?Jk*_OeAO5!?zVJd5U>M<!3nf2rv zY_DgFx4hzrq8V{wt<n)CWTH}?ep}%hyho16XC;=BPpLqdQ{sum&gF@=%Uo(VVX)Wa zS5`SC%u$DyY?jFHb1^kveo9U@A#H1Lya{-I3Gv6yqxJKInlqf*%H`#$;uT4WYy#zx z;mYV2ooBeEdsN_<?w55h53+Ic6)vf|e6Y#e(8~b^OI^riHTzY03iYqJr}QCO330#* zx{#6iX(<~-XL8>~ccS7YjtIJ7>ZhLTcN1&V9TCFxTAfzR?;5o4!bkr!cfhP=8%}UK zBL_q4)MSM&hf7Rjwc>ka=3tYWD@I36@lUk1@qHwi@wg`kz9L?GL@S5q6#P$MU4vS+ zUTD|hv$wVmIHbb#F%m6Z*awW$;kT6RS%c0dqP?iqCgTAxr>roSXFm!@2r1fcGz=DP zgC1W&L4`~1<q1CKY<Wo+SERB3z_}azI92(Z!}6K|UR?0{MbN^y<|3J6lSfwV%cY;% zhwH1x_eEYSyzB_Sp-d2Dtjy+$duuy&l?@AZ;&<W2A)9JBX?r~OYt(mWkP1GgK|Kx_ zKj1z@_N)!BTq90^Qygwvr4>ww%~hp&Y&8689B!AxJj&sv^yZNcvqF906Fku7fa2VZ z{Z<x69@<uT>6x$z1d-HvXUYERzaP*`-N!MZEi~#WS^97ty&N#({~zi&^2sbYOYRgO z^8K@)z}rSs&=K_0ejL6v_r4!R`0$<#5bCUqNT(e1H57Ayc%M|DISUoDRYQ3b1fcSZ zxR{r%#NMVnF``3oUP={S7ME+N@>6ne;#9=jU%U32+#5y1xL{p#2i-918Y`fV3yE<S zfWO%uT$DV~E8^|ECdpyWgUhO&C3)8jV*SVDr53O`p6C{%03NE7(4JC{`_v}@sXEVM z_tfM5ahN`odi1BBQ)JKg3BTtXx<@xVwe0qpEZg#2DfrOziNqVP#oe2nviuS1B6E(x z?7q5SLG@h4{99&8=4^TFTysulk<@8)X;!qzz;}%J`GKp~jJV&%l5NhJZk8CXmxi&0 zs$8i)$K;b_&KES@GR3ciKh8+3rjS9>BezhGDLxZRTnh<NFZ#s$?g)(TM3$Ywkb7TP zjmEG&p-_YoZXo0EJm{S{JSJsCC*zW3B<__}yZQ=~C^k2P^d0A9mmqcZMZnfOu-p|n zi~@V-nWQkMOmD;#df8MUG8^SqW9aX6ErP3i!cf)y@tgxal`FT}p8biZ`r7dOQ_RjD zw**O08;ggz{t7h`UNtl2iNKS1`AEM&5G3Mm%z-X^mg6%;AW&y<diqaM2gQ1z8dwzi z0#^5zGv3ZrQyiWGCuVH;;_ZZJCf|$fxx)E^qMD}8`C&z#_K)VPi`tG{n6Dcvo^LF; z%$>eAzaV#@Pp!DF4nt}HTz>_pyKoG=?n_)`nhxf`6Kn_E!hT?c#)>m~a||ji65+67 z{#0((Jb|6fJEEv&(Xx@BFi}paZBAJ6TylMa`%1k3lERGhHYiLMVmRlZ|K!M{$`kRw z4inX(jB%+WY%ATW71gm$>r?sWc?k}4O!?s~_^7?K#ixwf5~}|3V<wrv#|yxfJShwz z0s2q+xK%#$XyzyyIqvF7LKDaf+`a!aq~60>-EVm`morOM4iz?QCO2`nj2a_w9l7lq zLjk?kbz}%vv(?XR+yQi*K4ZZdCl;C)(Z0}ixQAnYT$^EWioDYU4sAHJUkHzyD`G^Z zIWfjhKQ`0U&Pa1$2<|9b-YgQ82L{a=y>B$-Z3tsh$Q~~|2Ge&=%no*ut4IAI-+1!E zZm{j-kj%2Hx&(N%2(Ya98W8>o===BNv7oJjBTrN3mng5{kw)@0t0C-~T8puL0Y}2q z5{EX45VEtF0l=-k^M&AR?sdLg%9jfh>C(lQ9qQ=zm|D70;7r~d=2eIJ)QauKy*jTt z+^1GnsvVuFdkeN(DwjEu6kavJqap+9s2=rblv=Z62oJw?wtsZw!s%;$A?SbD^-i)p zVxQfKXK^G>0)7o10^eYLxX(9&GsJj|#FP7ao|oXA3WYQAbrfH#hQuIpt}TB!tVHx6 ztY$b&BfKAGuN-1!0WcepcM8Zo!ka5T&La2wP--}|(@{$T0N%7z=kJGVrgHhGjjY?| zbHC*s8<X67bpM8sKKF#{ZVHn0fSElq$SSFMu1O}LfITu~GT~_me7S8hQ|ytSdd#q< z`oENY3w%>mx^I%bcao-CAbnAwV3IxvSjHwG28d2~T1u$MkN~At9BG7FP|rX_?I6q~ z8?9-rXCSDw*ts{^S}h&wXdI;iRT{9oT7~cswaj3#@+#1&FXYwxUwfytcs%#qdwz4U z$=+FyZ++`q-}nC>OBQRy*HCU_8*oaU_A7ervcLJZR(~Wc90_6ilExe(+p;!xih%sc zP3C=9gm_t=5_2-`I*xF03$@d?j__l0dYJu7o(kDuB%Hi#pXisBnIeaSpOP5Kb`m2Q zcpDrGbk6jT<HYl}8lNOP7<1I$OXi4^0+TctNWx~xNQE*>hJa-R1M72cc;zs%UKQd- zj^B=QvN5vS$HV)sg;Qh;YKKH9S$JQcu)i-di{NB`tJzv}Voo9F4|s52t#i2G9Qlx@ zph)Fc{H0_>iWvaIVFVh(B~vvw)`DquY$Eghwj2PX_od@7-FV|4KxC(FJsz4Wj)&rg z<MM5B+hN3F9Iw9iaIl)ldL$#mzW)Kk1%__=lQ^$6WL}8KUC(ODF9Agnd4f|O4mx|l z_iGH~I<SRA4YAYS+kjx%(jK0m@!RQH8VI0fihUe)KRbKOl#-+|D@{v}-*TxD;fL=c z!Qb{khOU922@%A`iSZJ%LRt4u@<TSpoUb(fc%8r<w5d=WRsWqh<oENAH&WGV@5Sr> zFI4_<BSXnU!pXxT$wP6u8mSj89&>olK&2LRD)rx7KR-95pt-!`1@|%fBaxu4$Ee7> z4f9yYViprLquyg5AJx!xtj7nLS7A6Huv^lP^*AY{?Ko{og-<@<a>fsHI)^wZgVQ#~ zNrAKw)c7B9ualSxQ8HjxInf+CO^Rc{j|CyxG5$E$6mh1@3~4gw(O4lJ@!VNBI*|#_ zCeGQWBktWywq2-;!w(BnCuknfIOCP0-g6cKt$M7XtGx$?G;VeiUB1#fc;ATV-?@(P zoJ*HLJVV@YTu)$?P9ZkgP$bvib{taLsNji@Tk_P4>!*J;5-dhIb(VDZ9`5ZUBETd+ zj!+~@Fs{I;01!0@HaY*x+wvs)zdRCjoU+sSJqa}+ckaO+?fv{74Wun*ZFG;q{#%JQ zNiY_n2(XJm{c}%8g52QW6DS9+=zBD=Jmfa_ug^ayqf?BnxOWv(7H=dQ1Eye`sy2C7 zUN_h=I#QE4M`p;8-`cn&pSa&gg5!R@eJAu5ZqMf*JVmFZ=iMeNUUc25l#NYf*z{J^ zEO9F7s=L@vl!(ZuA@#(bZ%5C3noN|~1n$I5;5bFao^f#AGB0m-Bp7=tst<rTVz`0V z4%V$M^%u#j3u{L5>Nq}MjWF+gnYZq90*?;5%g~z@3100S^!xkKUpP({iIX?Q?YyA# z-gP}?oa&-3<;I?mMtuHJ(mMy~jtRA~`$|77G$_=6z0F{cD+dKq#u-cf`7*))FMTfR zt2b$149zYQeDJ%0wHL3m^WJ_PyH-t`yq|BW5y({;oyl}>GPPMQsN=A&Hf#OkM%NcM zl^*&Xs@!8=2{u_Cjy`rT<{<^4^<Sq*&Ij(sp`h)%U+{-Bj(S34i$lOav*OXuRb6qJ z$qSlpQ+=bE(WJ^cNw<ypF;$&{;taBK0AxNDS$7pKN^EA@sS^ZA)&F=+0O_4WY|f!( z=P(2YVFUF~46{!A?g}|ykPFmE&B0z$uS333oNR0DZPLY9<myK0TC9@#Q@{&E9WV%V z(Gah2Q^RJ;4Gx8iQWmD#C;H=KzHUDh9C1m1&*uf7C-w&Vd_y+=_TI?81Z=Zr)xwk- z2kvu2doO9~<ufgt)q+;RP7(?gF1ylgA7-;_s~ry@-6&4j8z0)0&>qvuVSxB8>`H$z z;$`DIi`5HLeqIr60>9a;W{0B{w_UsXr~ZcGgk1@nxyvh>xCe|gEoiHKXhrdomwM_I zzT(jMg;1ztWz`P;@AAqTgk7O|so~yY6=X8eR>|-%ByoIA9GYb{f_<2PKCTEDTzt#} z#^t#2s(z*g2EVXB9<9G{OY5ZVjc2@<SFBt9eel>t-;ig1yOH#>CxP^ED-Bp0<G0y| zv1!uyK?S$iNfRe_@_-RNw5yOi>Fx0q1DQgd|Alb3TZV`wPZp-6+>f)yf*W6^Xv|uL zD_@Dw9Co5PU&~VNe1!hT;r$23&zvfX73myWd?<Kl=O8{Ka>VrbHC}-ta4=fk2pDfW z_9zNvXXK^GN+-5GUCPuKK)P+7SUNH3Rh5uLuQy&?eQeRA!!~UyNg5wkC|vRKJ(Cj} zV?tr7?&%&EzL=|Km0~D(DZ+#S4YJB|#0V5jrucX@eh`V5?`-mHosjI=?3or?@??)+ zp}>>M3VyEIl`Df(@iAgutfdptR7wV}&j2qJe|#vo{W^j_wp}N|A8%BkVfUUJ2&DOO z?CmaE*72%4UR^(N`SO?DMUoAuEZYM`TWkc962^b7+z1VHU<35D_4Sb$n<4mr-1p9n zJ`_Cj^#E-m0TSPBBSLnR%kjdoj06QD9wQ1wBWq&shppm|qlG}+2P+i_08XljRV^i8 zYLY5e^{AqJJR*Ww6z2Dy>Dx-jhW_4{y*=xNSW>qgKY8J05}G3z=rd-o>~yozb8#5^ zIFhXp;PdaALtnIX77ytv?r}S?97(=^ySXH{V)*eEH#dC6(Z1?K%X71quN-#f>k5ud zSnm0rRe4s5dA8w^>=rj?h;T~3gFb8OdZ-7MvE2Q+vTO$E&{4Uf_o{6M4e%WDZhYIz zc1E;Dl~`N>(pjNe^nuQhqk<M8?2@M!^#Cs!d<K0ja~wSw418^8NR)gQk=6H$<dLuM zxXLPR`Epkg!ec`UIdWyzFx<3b55>GSie?Sv_sIl>?8oubptdUWWnhpWGwyW7QL1mp zZ7FfZ(W-CtwcjGVT=ngU+7jT9-c5bQoBCeRsNt3i__7}LDIVRVOfj@h!MG9T`!4TD z_R*}8KMup?9+!jIRzPiBoW}2vxws)%lv4U7jVr_EcgWchf`dkKX^ocD!Zd<qT-pSr znI@ITxEw=W+GM{%?s5!6?|v@X<<OSWfPq}cG(yHSzvDKZO9638>CNk1$CRb7B9|Er zJOSqg!)p^TQhq+gYm@o;G;Am`8iM5t^W_GGqKY@FfO!yGM`joc_~RiVkd0j!Y`YrL z$FOni7Q=M9D+dapAp%RtibsY-c-!PSVA%*10PJ$|4DwpzFCK=+M%u3*W{9W+!x-00 z8pCp|IEXe4P>w`w#q~?20X;*uo4z;-Pg_JI7ziA~ZMll;2vK$pD92qrNku@!;LL`) zHmwIXGmdZD5hM`&7R$;#deuhLJ0@|32ZL{1u#1@ySql-NjAuUTeho2rngA|9?-ZL$ zzq?0@vhLqq=vzPYAar`%SKP1CXN;e{e&{tZ?{rI?VV`81jL^@z3QGcxW2A`KXG1Ud zZaG>KKRl24(}*o`u$4h&QD^!ZSeW?IqBf`g0b&m^d{D7PWtH^x8`9Tc`ypezW&QV8 zrOsUaosDt4a#WvnwUCMSNIBF0V7AXj%V?||_pFOO9vIMpLzKLGns@lY;3F4c8O*vy zM0tSZd0?F68cXld{`8&x-#}kjebk4eIJQ0+Bu~m$`Cv4PdJ!=vlk%11p;9oC7#Htt zS08Ket8+RwH(g%8=2YOo&O>WXt!o>$r&;sPHe5@Hh)=&gC-861ueKN!y`|cadTO{@ z7g5_f)j2hQ1<LA4`Az-B&jtXVFvdsJNJ-xRa7ABu)H!c>p#p$~kWRS3r+@?dI1`~K z^TvCdD3lY>U|{!ag6UU*S!`J{vPXQ`nQjGLs@^c-vMQrXh^M2iihPChA|+LCJNlzB z(bRE;&-n}LgXOF<8&K8gS#fc^`#%c~=?8kkZwwbNr3J+ZrZ|{K{sn)>mR?a0(cb{9 zI&u)!H~uJ)Av;r_fI;7{0m>q|ObF5kB~LCZ$X5sn3h#5>%~WMW*N`4FDavThRa#Io z+<cfZr%IRWAprPbGYiD-ED$^E2}}cuj6U-qpdOfT-@t^MC85H=x3aTow$$^Sj*C4C zh|5l+QWc-ZBOP1p6Tibd0Kjr}m@gg${>*a<uk5G|UKW60@aO#E-8pk;*5`R%=lJOe z+ACy8d+EH5Qw(Y{+U9&6aNC=0o<HIoXw$~ggWvBan2#5xGR+6dNaNQCU^mAZXkwhg z;-c-Z1;YUix-%EcZJc_^^-GS=k2ETfb4B_F=|nxw3yX17Foj)m^%9P<lv2zb)51i! zwj+e>Fe7YfJf<z>v!TBf1~1}@8fH`wFL(WPDSN(-Ymr{YVDUC0X9m3=ZT|<ced9p; z|M+j(kG|h4zHc9Rzy4R>7uRZGJz1*&q3y4)6<S%im%Ov_zk8>j4qfL+zkFczK*yE8 z((&YC1OtKYt2}E72<r77v2k*r+DQOV-o;Ua*9q@Ryi$sF^*)U^MJ^$4;x(kv^{<8a zUWtw^Bkw(a#3jDxkmEh9ypv-FHF~qnCh~6af8S>Ryq260=k<5bz`W-D+PrSQ|D{BS zKMlNZ|F!pv;npOV&0`omr7%+z-Zyh}%34Gym~rq-JA#^S7K-Np^+Y!X!7DL-@a;lz zPne}Wf!zSU#LgHr&4E2}oXm5qv>R;V4g=Uc@Fv>Bddw<~F30F2c!aD=LOYSVc<!A< z>M3|C;YH`aP=u0GLk@XJ?Fe!5P_jPcphC$8K6y+Cih@JIe?f)RvdlA85Bg)QtvEyd zG1=?Z(GueARUT=^TK6|i#)wJtf&U;3)^}K9LM+>0fg!z<sm3dWU4A%>d7@TZ0JYl4 z=92L7Vi|YoFmOb=8G;#w6jH-2<PiY>g>cl<9s~|^s5FOd30jJqOms#|b6<ESI`@Ab z{;zX)d~q19h;mbGIMhOgTZnB4UI!glpUQ$Ln}{)47^!ve=*<oY?YeGAwDYM~pXHCE zqG8v%*K~ePma^H;0bBlOv)s?oesu@0K7sYdYI}Da9z>$(I!@H3i2V9KrjI>v>-0(N zH`!Bve-0CArioAjsk+|1WNJ8!K@nq_Pwgib#)LhE_Qbss{Pp(w-|-RNss8WY5%;kx zO1!^F#KWe%xx8fTgjelE#J)h5w~(=6c?qxHB9953UPH>^N<?ZjVZpw?FBm$on!s^& zm&^{isq8SQjja%f3Rx`TU^0__FczyiI+VwMWgYQ+R=xC`e|-oTl@;gK)=o&7d>i=P zA@}}%5amHr!kd5R!FZBj#rW%LFLCn;O^I{|n?@NB`jhvc?Lh-B_hVzB;pm{-lWWnz zIYh^?AMV$2aB!$!K}`<H=NSC`4WMUjb$`F4|FoSXN+<;4sUUhTt42V{U)2ppgk1rc zFZ)4%_hF*;KuI2thNFLu#GlXy;D_SHLs`@rZ*be&%>lf!rAaUbs#XyoNh;#45RAdW zpXqu?QW6UWY{-SX?%`poT<f<ZQ6HC6J=v@ud6?)UhjBsa9Z*Ru3h_@;rcvtCFZP)M zedEV}{`^}T{@a8a4au+xWow}0ARj@FD=U|0ubgRmKnt2J)q@^3dF}`9I7iB-C>wzI zmVcA@mcU8qNseuO<L8Iq7>RWxe%f-LM9wIX{T%q3JbR&CczqtK7REZ$@4#p8up1|x z+M?>sF;A%BYmfOfc#`<q|4Dr9fp38o%_;EIGfDX=>==(<d$LBy#)e;?w{Fq*XHj42 zQW^9$T(cz1$T?H|fXcQY!MR|>>Ngz!(QccO$G%~kF~j>=pPlKPVegzVrE|t~cBn98 zX6KCAy$go(3$*s{g+PELF5p=AMk2z3k#@DPXSL`r9LE=v`n5ie)u8&N#&$$wOG^#! zS&Z)lVQ~oAURxU8s#|wS2>jXhxkAW&LJ05;Z{ZHE$J3v=bf);SBO`vfSn)uaA<MJK zEP9{Gyg+N(($_n~YF;obbFFznqJ`mSOf#q2*gMV^!|e)X|J?}Ud!W-3=fIg_3kF_b zPBnMt{v_1JH!BylO0|!Lx&(ZS9Bc9$3nSDe;bS@Ka@geArkDF{GbY>Q96GVhxI1&L zO>Psr>YQP<&9I=iMkV_oey2<ZOs2<ZKnS0ynZi)K&-XPdc?{0SFG%z;ywP^H7#w9` z&J?2q452gk`$4_lJ}`(@7)h_Sx2z!XL=<xW5i*<yN^xr<A(d6coewi&<g%!TJD!Pf z{_CX-5|kzLQVb#jLqWBDLeusg2;A@n3~(rJT@PML+Jx&T!E#VyE%7kRF!nO$9*z5R z#y$2o5YH5wazc3$-tLiV@1YZ@0J*0B0*6meu;c%S3mk;Sfj2x-S9K3wDuf+ib*8@{ zwF>6M)$~UcW|i8IyE+=Y^5Kd9p*TO}7vd9ih1`k<u4gS;dGapp6#3M<tEsA2%`uL) zUFFkoj>^nmD3Ds0bEoYKg_*v(<2{o(Qcs1(zYEh`K~OpEmdapr8;k2G*~dxtr0N_= z+!`Wt5x6uI@N9eEoVqXsmoSBQVf^J@HP4(~RgyVwW72)CNoXEfHXEy6H>0>zZnru2 zI-WY|E2jFksyaI*)TJO&2TO)HwChRF(=au2FOsiE<7=3}y08vw*Gg)%nAiw{c`4Bn zCN5zBS$_IT?TGbCd|w>{!uiLMa6ohJ71R1QyWB$MKWaxUUYqR*4yq9CY=vLo>LCf@ zeXp7DE77-$AYUL;Kqu3%>$*}dYciZ?Y=ZN!!hKlIGiPiwHgFdYC0U?7$b{6Os0I)` zL3FlN(|l^c|Aj^f&I<*X`^QacsNdFvF;oNSAYYH0D25cE#-*mpf-=uD*10Kb@2=G) z!*kutnJo+WU_%*=Rx8(5$U{PHSg7g@@b0k_g#Fpu-rK+H&=-B@P9bFk?+CRap(;!s z8X8_F&rS?g#>q${d&EX6*P<EHNL5&<y)YDQ^al7t#QP?;)bpJOY)Rt9Nn2IuD{`}~ z_Mu-M?hQ6{rUtHjhnKKLK(+Uga|uhDIbC&F^3{A0rI*Y!rHx#ZoOuUG8~qOF1L()? zyaxJZ=LO(~&sr%Y#&Ll|N$2P?+Wk509(xa(=9wvLG;bvvz2n+~Po0e(YAHLSiGTr5 zWw|>a9v;z0AvzP>)2Ectp~N_GgJnQ2sbEeJ`=_ay<ZFxeQZeb<5xkbQZY81&Pv&Uz zmy{`AVqB1f%AXxW+ICddL%<WxEj(MHP3d5tsF9NlUpf2=#1%Oa;SA>CS|GHhmEaCA zGiK!@oSgS_zTHk+0LS558#o9XqF=uw{PNs2Y^|)j0(Q!@<WMQ)Iu=|1Cd9^$RpQ@5 zhL-&RAK#iBUrGtP(_F`pHf&|50jeVYhLohYCJ!C_;6Xenqg=ZeW3pv4AQ@vZ+qQFM z<hLRP$#0Q2kFZPe4a9_z=f7;ibwuG(7S#Sonu`8Tl(PN5#8OBN;W5qwFa&jTecbev zX3bk$pLEkxcMRw0hr5k$ZH+@wrA2S*q!FM;<p^2SO|rFFT_G=z2a4><eYl*Umn9=_ zleX8^W)%Q48Scjp(^gl;ON|UBCp{v^iD~lz!b0qMkd-BYqgcr34@I^k7>SS&S1|rZ z8||=ARnM7Iw>BzLMga&ir@q&y$RxZ;g22#)4CC<t#U`>Y@V)-_Yk@+JQykKz2P_J> zb&;j|cjyyFTG+K1VMRs+QKjMYj`2KYUEQfO>I_hs6$VbOzla0F;GpyukXppUfx^Za zI7K4^#nXJ41nU@b{v`4n3~}W(92flug_E|HB<4E<vL~35RJ9r8k00ZV*PFgZF6v4j zM34J8P)M9$iSDtJAUGlk!%*7+@w*_VEnyf4p1_KeC%^~^ip06}HQ{Nl`>L**OHuMI zy6l+&*!Rjtbs>#{eqBFbH0?Y1lBSHZwPd-+#y8S@aXeZRj>_GEhE=PMQ$q2uW)<F- zM~bywKVFRJwKKWS332t&Fbc4LJ>}QOMaEZ#nQSCY(#Tn<rlg;sgSzi7;^|DT|9$_s zI3m=jnexu`+k4Y>$Nw!osXi-yee-weJr{X>JbqfixyHrSdz;qp4IY0NOOJ0|0lpfg zj4R}wNpe0()|;49dba-!*+s4Aq7Ltsw)heXsipGLv<j_#(o+3Q(;vB}^|o}hCALJ% zocdubZJ}(_5#8{%xF1c4A~W40kH8B!_sY29*RGyipe>qgp|~{%L)5&suY5$oHhx5u zQvhT0$UhDr9ikSCI`C8>URzXvht+h1TI&CT_K%wuq8<%Xr7vmls6vkU`sAJloiJAm zv8W<?z+uAB-|xpsMWEV{jzpf;5rzREPeg|^*J%eA*wVmy1cb5RbQ@086-9egoQQtL z6;~ymDx|ru_Xj7O0kqo=I3HmItQEhKRDOgn<ZD6!-W>4Uui5rK`}kDzeGOg5FFKDR z+evO_Hac<+nsZ|<;*Hfrj^Qu(*?%u`m52|5F5UvdSDuOh%)#Rdzxtc12QtRpfs#q6 z`hMCw@gO3aXY$6Kt&rD7LSlprH={_TPd#fp)UZ6nl6c4CCEnN~KE$T*zArux1zdOm z@AvN$-9gi|t8hPyItcavWTkH}yw<pA6cPcx=)($LeI`U%Yb`z+haYbYqMXjoT^>9` zJPL7{W8Vn)BuV|ZK?oaVHPxUyoIqD0KH&Qa1xOqL>2ofT1K6L6gDXZ~MX!Z44y5Hz z2P`V*QKoP@L_jDop6LA*`;*S8%IHOlRuWOV2l5Tur;PZ?-DBUzpKfY4MwRpv<%Sxd z!dg_FwxtCz!bau(T^K~G9H^RrEldM%wwA;bii6I!%&U-x(Z8*u%7^v;T{21)3M?hg zHd!c8S}tbfLaGQk-9pYqA?G>*?++oot${s&nb=joa^#SCIodwMq)gvl!K{4D$)~le za_mI3`0T=Nab|FnQV>8%4H`Ffp=wVV6AWE+k8J=Ck?Ar0(-lPzqA>@iOV3Wi8BLuD z(bhty>a;UGI@jGG7Ut?qCv!y{8P(JFij%s~Hr-5JO!_XyboYK6ZIvW9=3bIOa<MUQ z9p-uKyAxHW%t7yh7#Rr<ffTKY<VBGV*OL%DnuG9^3$=-4<H(&k7o54(L^r*H15?~d zF=pxtH)4M+Wuc)t-m-~Sl@+3zk~y8IdxMT@LN^eNtGS}9=d$wy@FHfdbkSDFA3y7u zY=n-TZ7@8~qP!f*M<F~U!vV@GuOwYYWdd0y%4mkbelTS7uDFgM9f{8)Lo?@AORL-} za-O7T7kjQCbK~SZZPC-Esuex^ggVBjYKFAQe}I5S?=JidXoD{n(i%&4{6j6ia~@MP zX$9sA#<V83c6@y-5~s(9P!|y1CXF!t3UavxrDMlb;TR=oG*z40p0vZqx0i%O2~1Yi z72y~%_iIW<#*??Rpx~m!$>0|9W@p~9b;GDa+<b%`;7r$I5$!5l8qUyu1<HR+ZjRa5 zmSdjYBTVn+!uyJ6U$M}3Ik-8$zz(*S=s9SfT;3JvJ=xO(rG%Ee(#mCg*8O^i5dsn6 zxr}8O-nGEE-;WR?Hq~`ZVa}UFKDR?$Nc(gSiY%02bE`lJ-Z%n;h<@-L7yphZvw7q5 zjo358!vO-u^2Z>j=I{7${ic1v)8AIdu(AGeSt+ylVj1xTL+8(zK_pJSi>PvlJuRYK z${bfd?MjomG8W=o@yX5h`4*boMM+?X3E~LJjwSm|(r??E$>k0r4(jmk1IySMFM9=N zi06fXEiK=ohG?&lV@<K=xpSX3s!HL?fJ>4oJ%$dd8CHoQ1wa0ljkS`>7OtFbj0^fD z%%n}vxQpaagU2ouMawmxyy_=cPBaGUGd5O9R3#Vq{#b~*RP~i4>kgtHcg`gg!@!AU zPCe9$cr3g6ze<KEe}Db+Al=(}RKYXXxSgMF+3TIXFSzO3sH)9E>n9i^LeN36$`Uw+ zZ;}XF-1KWw*O7kS0AF(leg-Y1y;BJ9uI;G8m3sl}&L*+ytn#(RZ+(g|r!r-;8nN9l zPWWOH?d_&-_>WRPZQC>M7%J&4I_WsGB6DA`>|2D{V#QE66f&toTO&`&#M?N~)@U#w za-bnz?XimjV-;qo>XjriL<Jj^RaMK~xi@@T_e`qR7^1sbs^f1K5{H+1upH+RlvsRl zk3AxG-CaA}oO{Wl3^7)7>fwH-v*Qh0+QI&*5q*&>`;^SBn)A^s*8hBRsdm{`-uP}| zY@?z^E^bdu^Ch}k-lR>^FjbF`s<K%qd&M7BnC%zLjJ0C}#Ly>;3D4(bP6PK;RZ5Gs z4S$<@_FAaCq0y7;z5aep=l0rTEflVV!6doUdjs$3s-~5UG;W!TvwiySP$DD7oVwOJ z4WUVdGnc`H#RkM?6irxY*?0rfCR()Amo4Q!{4HV`M9w|@Ggvlz2KFYG{VB#@NSpHj zBam|(=iY(6-G|ABRNiQNJ$g(nJOEAI0^kPPXTEq(n$+%5u~qP;a(305;0s8N*TqRh ze-{dnOK!ydLi*)?UXk`G#Dat|OtK^B$(FXAg^?%&BiE~JIPJb<ddDY+5>mqnV<HLq z&IH4pMJsWx422J|Z52CS$jO068Se^T(xLGa@FW%=LgS&{;V*%*wl$DvOw*U*qpvsa z^&h4n_-4xL5qHxI1Mg&4jrOcQWfuDq8Vv!Om~YFMIg8}Z!wP5O7-tb>rgBhs(>xYt z1ksMp=&QB&4Cz>Di;>r+;h>qx+J^{rM1vERGpKNKN9@l45|;D>2?HmKB=b!a*>@sl zz<tw>et;OjzTaW=2l!1Je8je|k^6<VO&e;oyzw`Zc^(mVbP63&%lym3Cr=T52l1=^ z)PRq^`MMyQ>0x2Vg`vDLy*I!|QnyN`Kg@I@F~dw3Z`>Rb+P1w1f&d#M`isOGra60w zhBWIdFivzGB{^aG{4%$#y?@AnG@QY6bLM&wR4yuHXq2+@MjtZ##3pTNL`krvy$w-^ zWwcReOjE^{LxIQ8bX!6wFt)$_ugN)U`uK8x<7_g>VPiVO0WY~Q)EBg+3K8Z^wr`j% z;PLEU%T>3BxojW3<$e)U`As7^BryPBAi@?zlp`=CHMoCQq$L{|2&_wy9(bS!P(kQ0 zK!cY<!j@m5!BBCe3rGEu2HsaML!QCygtWM4+Wp5B;h3I|YvGvgjxCYn6gyJ5KSr3@ z9k$QLS&h?sH##DUfiX6shO$te@@ysv3yJEuWX}9$2?xN9aC26=4=Y@%Zmzh!pn!q8 zFr&K+XTfYy%>;>wYH2MQekaa5H2pT3hMsAs-+6ScIZc4>3lt0VG=05?EFZL_{;^AY z@=KA{Mmj=~fiyBH&kpD<(R1M8%hLWAw?3EM-Uj$aWQ%_M#)Y#%d2LIRckiBHLf5Y! z41>=r)L_fImO1&+c-F}{+LqW+ed|4?9AeFu)`2Sy-y`_kAX@zPGIXG<Nr6Jjd{l0u zUN+s{UXp;TuEa6?Gs-L6<~_k5zCp0i6L4z4Rq;5XLx3mpKb^gZoceT9eRKdXh)TLl zf)$H>70XQNmqGgezD!Iz(XFWLHxTFwm4ZcsJYy|Mp1`M)@~PsNM3L}OVFnETX0rz0 zil50koWx%wJq?c=p`F1QGC2hjI0Ac({3QC_Z}DOCQ%=U3SqkryXTHt}#}jUfcBb>2 zwWK*R<bf@?Ji3Mi=N>ffpME0aF6Fo{+8{OxscL$P-2Vk*KC0-9H!Q+6IOB$g;#0%% zV<Pc-=qpenE@(RPfs5wMcjiEkBGSJ-+TQvFdxEcjV~I(bg^SkMmumE9wIY6UMthH@ zGhZeIJPqaiTsgGYxs<@<IFC|74qXr7y0AjqNI|HgIoPmKjmW31*7MV4g>p-b9f!d$ z6zQn^*z=Rb>%hF~+xR1jYAT#O2IG$;>pPPT7(BKBJh@<HjNAuJ9Mpb`d?E?M1H>_k z#IX_~5}ivjV*Qe>#Lt89Qsh{mKW@uU{Wy!`%{|~~6nIB1sFJzl-;8*DDHHsG6r6hZ z>7T=Iz5^{x`BR_Fc|_r43aXY6K9Lol>*MJujz6{Cot)u~-4iVQ<|gPU7HLB{V+#Xq z2$y)LE(Gw1vEV37(26vf(ySCu;Zi1LEx^0L)D5nTd(89V5GswnN*N({iiqh=5fYLK z@{cbO;G%&#U{1}5svX4#$dwZK*YQwWA%j@?`Z_>@NtHi{!;{Vs5Ol?gpH42(E}H>) z%LiosBa{$BD&)MdNs*_MxsS;CnX!JA-#=r$U$yat5o-St1w4Af%q)Snu0Ph=y{$fm zy#okmI}{h;O*y7Egs8;4Y9pU7=M(l+%lRU?F9!81@_?jQ#{`qUfwBtcRY1c&A*reB zULh)>zevuj*7Nza*VHB^T#$%vHrc=HMAg}<T|Dh5Xi{?H+se~H+XCb>#Dm)A>35os z$o<qt(|fH|Q~dPo+I>#uN^K&+Ic_!4WX{~#D8*IP6tx&bfn|tg<&uCW6LCVU`{<K} z+Ytqf|AWVa2gYyo-qwbjgK_iQO>->wN@m)O4Wl^~9+c8h!(AC#EP$lI_G??FzqE3r zezH)@7XNqWH#VX-?x&M^+Wf*YW~LnOGbeo&luvq!cJv&mXW$1BwT~UEgwLr?O>Fm# z;HuW<A@v$Kk%`8!>(p5-(W!?LdKWU#Io|oe1MwAtKZKE;(ZaundW>|pKliGm<3Lh1 zYms|@{4w)yQ|%U1iWW6T*zPr2FdjGu+ewT20DfVqm%#{&!V<94-}?Wy(<!Ct{?@^E zdPc%M)=>oS5smcci9vrC4Eh~UnsNrcC)(&Z;7iLX84PrPPLElH49uyYiCb2*4bwjB zS8SvD(8oXGY|WY)0OA%n;G(R~!}5a3tc%&0R4#KtJqpPAyeyva2Ntb#jBPDQriEZb zD7bCgdq~R)yzWWgashw}A6N{(dVh39Gi*^F>PWxFE9$-y-eTQeo(Y`+zz!t5&z|xu z*mZ|SYyssC|6f{Q?^D8ANf1B?s`{uNbyLHZdSRz2kzDU${N3M{LP5%QWvmSa%-}YB z<(j_U$!x58%6yn|1^`)TBnjOGt4;|557x=fe<Gq*P>K6x-eiQ<pd3>1NU))P#gFFT zHeE)*sDMK!g{kDHnw!<_q!vMOa^0p2-2DgKEw*Y1Z2!1F1IZ!VR$)zPKoAV>fNe+C ztk7cibEdA17hJ_7N@+nq!j-{?T1*(HAdDg5VGTn1s~18M1sauy4vaAe_fIvK(p@iK z;I;ZGjt98XANk@@A#JKKT<$6!<JV@m^rJ$>DZSb>Sz@-VAxMts5c#tv7||LRHRxRW z6o2t(UOSe2*%#~_CHId)f_M6&k9Fjm6G4}LwC9AbH!g?Qk0IY&46eJV+u2G^12V#7 zSH_<(ypTSb45^e(ue#tariFMp$=i=-BJrx;cv)w>!XHob@k-J_L(rTNNB-CzB>%RF z|DFi;H0Vxl*R5;Qp*Qe}0fgCwA_^$I32d4XTJ#1^x1{`nkx<2809AC*;K(Oj=u8Sa zK^o({SpgImuB0J9LamrHFHi~`4uT~VpXka+0w$xB6+in)a8D<4@<}iT+mZ4Tk&bE@ z`8<SeKD{Z|RwTE_&m3=~rrYuvd+N-o_KB99nfX(SEV!GKSR8i761C?BED2ziEu!w+ z^FzPx>^QXFM$N`5C(*HGj4gOBKS#v*p+EYV&|w8uFNH-2IXslbY**O@zv>lVOAY4_ zHo(wu_!DHl%Qaqq0-`YGHS7HeOvSsM0p905cPf-Xp>(0FL0c09itQhR+l_h?RGnkw zkp!h|yVkQ^7fzskL0O*`nEb(i>9AbA@j2D+?%Yexb2hmUVFDXqBRJD5P`H+cj5AFZ z**b-o8hH+|Jm!c91!Pm>pxf+4Y<cS)z#eazL-nn5@E5ank6#c}uT-~e<{%FmUf=BK zOkjA_H@v7l`)>8moe8Rn^_UAv5Y!x!{Zm`L9@D7^O4Di3_KraUtqzl@4)WqOP-hg= zsD79D6;9}SF6w-TFpHi02;WtE3mHF|L-wFKFwz{(lR4<bDd4#+Z7n=!FXB`J#mgAb z9Kwu{y{q_wi+RNs{BkMh3N|czWT_)R2czpukb%761SXQ80`2((+J(_HXiqlidQ)|s zskei`GL()yp|$^n5wh`~Hr*odD=_5g8%*EqhIT}Be!V0gOb!v`mh3sgpOSs`=nv5E zvrxl~;_UljV7Zu6$h4@P95o66npv;1B#xIT7%rw0RTPuRhIOS1&~p~m408p%>q^)9 zXcw35B8Yp&vPVRz2h$9;*loAiVuK8^cBN>D0fmCG1tTmh&xRe=s1)rmNJXa0l@YbW zRM;tl<zC}%BKH>FC(VnDE2>LQ`awD?e3U71zvzlMRlBsBim1E%<DQ>2DjZ<IbHpRt z0)vD6_gqw~ivB+Bhkm;Y=z^a<%~SatwSUVL12uC_U?q&CvDGYGfZGj*=h|;0WiX`= z<<>3A(Xx&+erjgHA0b$@{`j~TYCyp-Wy7nD47**VUrKjLGVD|MeaPWr0q<<7<f(_c ztI-dB`$A2uvIq5<=f+`l&{=b4N}|6T+Z>b3WTE)UGG~#6L9?*dLV?)mx?udKAHL^~ z?}K`qWyV_iXf%jk;4x$qVeN+kvUTro07IZtoK5j@qERwMh)*ULJdp25Kq3qsqGuBC z2!?J;d(N4&5S1pjixwHdw|4F`eMOugqQN1guMlwxY|98`ZPq+QFAA*eZg)|??|yn= zI&2wdd}0Vutqyr1EgCi0+{Enoy)>=U;<W5cI6l#qR!3AdW<Z_4OI+em0JRxzo^8dV zOxsSdL+ArOilty`^J=Sk=JyC|WXGAR_jx?@Iv)wYgq3zPz;CdbaC@}f#6j(HV!L(U zqvB4M1?`&EaKL1uZ6RijIp$Bo%+<ArYqyz(?G}vxtC|WRLHlR(xS605ysiqNP9-f5 z;X&@@?+IxvTy_p(7PyuBp!k*2O-~U}HzTU$(`z*3V=K%hq?phJ8yOqy%7k%%6QxiT zvVZN$z$&05C&_}5PjIT*(%x)@Lv`Te+D0m68a|pc2&58)X-@AVTf_PqriXZvQaZvw zxp<zu*)HuOqKWjNnW)_hzIjv}b7?eAg|R{J$Yr?c`*2wJ=tXZ1*uOras_;h0uuxzq zrVs7QnKRp&cg0Cr&4=YBiD{CuEIHMxO}oXhh)%UCsC@(@CwtXQRkuA!;QKH0z~<x+ zT;10{9@ybIWIXHB_w}2FWifM53lrH*4Afco*a2e}=50Oh=p*oOwRVl>iI|S@>?9jZ z+8B`@{WdL(9}&~5M(It60XS#?xR5+eKQ({HAJ=c%75w&O)Bz9<BuMbT8}%Cko>fn| zi{Jp4xr-=2o#W4^{TVX<xP|zsJ7>N{Dd?q`!wJAsF@C_UxkD^Uv2W1}0DRb-+V2Gr zWt55Sr*%odqI7icwNV903CxN=?h1Z#(yodG5Gg=XhF4=*SzMOHBmD*_HnOgT{qiM! z-C^oKLxI0+d+*sd>TYxcHU;fO9YASO4Z?JRZDBcxo69FbtM7qNZmu_oYdZH`zfNtV ztk-sP`}dlmNvFwx6No}!xP%sfz*y#HR8mB~0)Yw!(N)^R`v%%I9sQ2*zFop<Oz-an zs_jpe!E}c)50hT9=K-p~q$k)0G3LS6grDe8AQ>G22<fOByjdqo%=~QsUM(bWjOcb6 z0Z}4Zc0Y(CnCz9A-v5pWKNNITm;<~`VGV~@*QU9GUjmSv8d~Nma=yqNFp;PdSMZ!O z_+>M@%r!M!<UGK=X!2I>bq6<9t5>;U#X?^=p{n2lf`^QeYev0?b_hmOqv`}fZ+Jn2 z3TG}_UdcP{2r@%ntK3FYPCN2DDWtsHgdr|Uo^NyJ!We>U1Ho#PAjCOyk*`8E2neFA z>gw#qMu?s{FMP)>+uMKa;1ms>Tl9zspArN%y5)SpK$?{zpjt{dDqI;qLUzCwDoKhj zr9%Qz;9kMj1Ss;(d!ApMm7QVHMi_*POb!xxSG@E)bh_v+oE5giayPx9<MU$sULnAj zDnr2rBB2TzUYDAyn#v}*ayNwN4H=^pt#^`r?^d3vI?Y)L9ts}(N#X*pWp60>rBA)> zJ)+a_#p)$Tx_Ke4a;;0yR5+GB!Ur0ba+S|@Cd-6mIUjht^10q*@CW`3RX*oWmW9cm zA5`W-O^YPR?Otd)P;j8^^lT@}4pbid5lP*N>g5P*P1%cy+trx5E$tP8b;6f6@jKW~ z?i@OMe!%p47z#4v>P?3S46lL%G@I_s-N3yT4xafJd{9p~)3Z`mgQbW)g3T5v($($l zHZglqn-4z}!yf3C@4h#u&J^lW2e~wCnUbr7tflwoJs>M0-jNzF;;`Q5KzefJ*@9bQ z7|8z9d?)GUg;dIU_`i6%3p>GdcFzm7_w)2A_Q8Te+DAeDVsp%j6_qJosH&U~;E<fq zgf9^PA@yQGKvb7Gbpw=V;%+pRi0i%ZMeLb!qT>)5bXD3T#o{@4zPDfBiwIjpeeVpn zf6o>eqF)~7cdZtK{=U$<GT>Se!v}?b^#=H;YvJT64~hFzk{Z2yYT)25k4yL$*wvqg zTZ{K;d8J%X%1|HE<I@IwI_RZRlwoIpca2LY5IdCTbEn|WAnYr&Eqg=|wluuntW06k z|JDtyvtU&WIG%VR*3KFQM;*aj&%nj8<+vZ#2EA#6=>1qq93Kcu{Ds#;Y8Y`Is8tYk zd@R*&dma7`%mj0Q76gX}iFEATwOaIeSV&*y)XmLGf{PL~KooFdKv{xF$5}*y7pZ5# zQHpm(A2J7hn7mDB+al4HlOa~j`*LqUjDx9G`@c}|G2gTu=VyNFeR2<pZMg<#x-27E z<Nbs9u?3SG-LnrmB;lQ9QQoQNh-TP?XB|_$-y<A`@Xx3L{*md+!ol_{NM^hLd!w_Z zr*A<217CSp_V&l&up|A)DPg8YP+Ql}-BU7hw2vH$QN}zWHk^5Npk4mB9A~7x+80Ck zs!tr7B%ip4d!ZL)+XFxnq0RVdYr$F>e?%^*HzwuNJkD0yX4i20TDofhzmp3sbYUHE zZsAR$M*_n#r@=R7x=Ak^I|?38iFUS-+KEV9)A&6d<JbgjQ+u^JweO}f0PY=Fk9RO; zMCjaH59vI$^g`xyBlke(Ekp>16iAKIkzyNs;;?%V9D2Lx8X>xEDxf8`40wIp7D-dt z)Q>g&7AR(PzNx*E{$|JIkOVU);|@c{G$$k<Zt){?ox}CDBH$l$bsnV)6CpKP0es<( zM*AGcWjygQP_4xhLWNA2hD}KHv}f^}$s<m|I*sUNSa+$h^R0!5DtD&WkP~eX|E-i> zzN4T2p!(~7ZVApNYyatYSo_1buD$7pe@kbtkK&fJAkoyc=ev?|TI@_>2aOvlB#*&y zmNj*q9f2-L{hbMiBn4>+f2*8eMmP)%#R>Xv{%zXRs!PWq3RuS$d!}GzvMnO#>Gl5L zxdSU)Ehb{YP@DX`(Sste{$f(B*+&V6+X>&QLk3+KNC?WndVQ#mQNP}=Pui@l4>rea z*5gc2@x_S*FP0jJZ;Zk3L&b@BAN834?H`C^+sMI@*tNVHzid=B$3QYH?_RpX6=+zt zxD(gsB*|TYx0fyUC&@zO&(N~P?j%{5{Q1GMT$~!bKG6j$zd>s=4!da`;|PIyyj(Pn zT@ey8=PDlVlAGOfQ>T2Qr$oEFL<h@$(M6q0KG`k5%P+q>`eluFQ4PMF>XuL8<<p{H z`m~FD`10O}{2sUbx0lJqr3XuNf_#$f8SSEHbRoILb*DBgxAvl(h&<aCyy9tqK7c`Z zw#z$*zUpa{drrtPAXw|mPw1`_9H@+f=NcNWd+eBIL`%a<fVgDD<%+TCDeS27(NJ3y zR$G9FR+ArU%V=iv!)26Bh;s$6xX0d^Z(HUfIEQe8zCgl21tEt0$={+|Ug25p-x;X! zpc0rHS2fvXC92ax@Jgsfm%=s(ONzRE6k=yYrEd)At!yXJ9OxPPB$y<Hy#vIuDP~vY zLZO2BX;WmEQmCip%6J<&M;Lf0crG(zTPTHHl&b?OX5)0}^Sg}{&f}Y?m_ED{zd#|O z0|tZb7I|f||GOWbLVT8JcR&{bvpF(aOOl897{Ta;aVg}!ng>fEMa}2F%2Tte3IP|j zVn5*Iw=g04RdecVi{2FF_aFoEjh&*r_}jq#iDF`R{F@unDjk7DWDprn1b!)PhMstr zD<fVs%%D~U8<w_gd*9WfYXnA9H=}zg*BLMK$D@D+-5akQj44`Lz;Nc&xL+_F*0)DQ z56L-$$dO7yV02|#BaJO~(AZ%2F#jgoP}HBX0CF}SeoS^rVYit>zHyA1BWS*p`j?sN z2yQzuXJTNg$wkQ=%XXT+`lKXjS}DUm;mUyVV4X#l1&Yi+*vFsHq+7d1J`yW1N!q|5 zw0oAM8Q{0=(r<SR{1#W-F0phMGD7;JSObK;dxy5oDH7&5k9y|wbBcC47YosrAIJcc z;BUld-1N8{rY$*`s))@<dPjTDfZZ-aGpEh=PSci8c1-cBPi=|utGkfxS3zv|l)XGM zC*cQ`^797cH7J1|ZFTV3FixcB!ol>!c?>=4ogRsvh@%DZLevS<x=)g>QjXC(gG)~! z8V}{5M1QfBc%`B=OCJY{NfoR93%wRTCiX4}I~v{qPu$xrzJa+u(m&U)Wu^^1=$d=# zlYTX;ly(YLu8a&sML>gx;&WILR-W0i8ctLatpI^X@-=^h5%}oA_!uMNV|hr^f{ITN zGJq@uA!9^@tdI^XyPW9~LPpe=TaS;fj|uyS0yA&nF%Do4bX3~3tOxQQ+5qBb$$Mho zurWkAkOI6a7T@rQg+U=lhHSY~Gi6m`55joQ&a@A5gfud6r2uKc{7rkKeGWRa$eH@i z_ukn(??mH+{lHd6q=@Uk8qkT~zJ~O%+WX<hqIWPK{fayztzULezn*N;e<CW%r+4_E z3VY^zeE$!+@ay7$7T%Nr(t7^fzgEQ}kBlXx03Aq<jxA?4s|NJP=U(BMPe2eX4~}!F z4x;~GggF3Tq?{#bw6p{^VgBG$PDWhPx2llOMd>l_mNg)o9RAsu9??Gwohin4obu<! z+K$Wp^hV+-tdJ4xNpi=ktt;FgmyFEvse;WNBCo>5DpfHfUgqbaV8Ig$kx5*v$9EG& zbD<awT(62ca1mlS;J^*h8$<bWpPWzLLmarMAw@1AsNKcw-~E5_dYb8twUntvgwD*V zH=^{DamO!NRKMm4g)Sx1mOFR}Q$<{-oi2WNw>kG-Kvf{B7}6<`%S>C@GdJ1EOy3KB z0%?_^hmP>n#E(hPEAH?^&@16d+L~FJk<8+@OyWs#Wh7!lIq950!@3@v`9~Bb>5MaB zOrUOEApz=~=|izE3aNG!@Pz5cz;q)Y$+d{Kl-KaLjXqQRvK@Y9)aE0xYEm#gK*xLp zXZG_6a6NvvxNjiAh@NvCtAxQwI^>~#9a7RCO&c!t>tW^qW47OGhWbU_iA9Bu?MIPL z`vx<0rfQez+DGK*fo_~k=DBQlBTT+f0Ic>tnwB`VL(F9y*bnPhU&08uhj*{r6!6j2 zaKAqviOHT7o3(RbI4zh%f9#%V`6cWh$K2h3Y3&r`9fTm1(-1Y6H<|@%9wBJ_7$L_Q zsBghxJ9n)3aGv;ZE*?UGjZfnfGVlga7f;)h&h(LywEt|@gy*J_6PE!7;dI82X;jQ9 zXbA=W!#OvD;JXXVY5!?n{E}(+N8<c`f#2RoctXl?%G~Y3fRqIVXJY(GV^;JYd1eGD zn^aA)!`*oW{&7`d+6uj>LJo~+6tvfBXhZ;${Nv2xM?XEqC(jr$cKzm$f<Jy$9n-8P zF}ynvtPq2s2T$dE<bFAeWX@EX6#i34z5DD>P}-g82(ZvX$6}y&r96*Bq(IRI<dccf zRAm&RFhorZ*<qwEy-Mbs7bmU<<UGOoqU*tpxYQp@0(Nl1E@G6fgkec<GIN&bZpqvE zZrA^uw}W3kq<Jf8OexHH<Tq^sNzr#S#YxQLiAED+Zv~0m;(oq}wM}7&8x|RILW|B$ zFKIq+`g|9Rjxq{*nR{#{yea>H>WuhuOk>&NG71VF{Gwgk&M!q4j1yNnNLetz<<l*I zeMt%oOfJHZ^T3|Jnv?g{#hdu{j$JT!5ZiPByy7F3a=|~maRNTEYM4*ca}ctN=(m|e z5I$^6YvZRc_?7ssJs11;3yN7n66UCIMgS%>)$J-7kyTBF)!F`WYg1lqqzN2{y(<~9 z1EE<Y+8a6oR_8q+pLjzIhu<rGoBI7tjR7)g#qA$~bas`uflR`)7DjD;p}HAWWFZ`| zaX8<uM#_a4Z<1Lz0pzbnfU*no7<Yh>1^vsBwyNfZNtF$mv+6!NU#1E!_zJ<tP}N9` zsEXvUx&oeMkGP8D_+=60M37WI?L=6l7=b2<jJAG}L2OR$g^O%r_C#z@42`IGIp4Ub zGq5LfPC0YFb>^IQ^fuQ{cBRV%gnnn-5empLE@5#Hb1h{AVfUc#0`9ax@q%3)DtB72 zZL1W{Ea4L*^<c$>uW*1w0x^v!foCPz^nU7V_Hlo{+E4w<kBV~CNprr+9N?$sHq&+0 z=PgLu6mbq{mWT!;zY2?qG0iml_&u7sSI>(s3rVvSvF<^drS-hHQ$Ta>cNZ}+(IH|x zDi6^W1uxRvZ+11t`sh(DqUw{1p#b}xb!H$4j?N0Kbf$}n#jSeH-<u`92Ki2d<O(<W zqCZfAK9G!oDhaf;S$@+K<c;4&f_{uLb3g`#5@SJk=G>o5wPI5#_w~1gwOF5akyGtj zw;@ms94Zt;0yxkf;Uwbn!sZZ}$@G%+%g6eEDPjj);>~$-KZc?3ccfrXU^HY;Oip<g zm<Sr;nVf5C9uF<ZX~i6oMf3^e5J6GDhAR~DPlyGdKF2&A$pwQF9P}%igUzVY&c>oH zs>o`nybv~^j%C0zKGgtbQy7XU1CwLOr;Vt6PyDq;(t#m@PZLC|3m7>jvEuv%$c^Qb zq3>{QVV=raG-qXoQPDazTE|nWR#h#g8$;6G-pC-~7`_ttLt_^BxGf_p8@%lY{i!dZ z!hPVwoh=6rdbSVSYE_^N-nvaYU#L*z8L?}4yiRi6?hH}ZuzGGJ^*^KS6iiiD;{dXX zPqV`D!y>}GP9eWnurxAX9zJ&pxLl0vuNog$(7?E<?A6~cdQ|6vNl@bA<SzBRX1R+~ zxJYZRVudR?9YC+kp(w>}<!d;yUpYJN&p}0WtQ5Y$jy7Pe?6mbkTbd0Yt2uuT3juB? z5wEs167l+A<}5rwL%?Hll*>y3rle-O5@6JS$<f7Lt-S!6ihKrAhG;9dI&7f}rpZN> z1{^Qhlbs^(n^WHszZt-=`gRcJ9UP;GHF3Of0d36@c^5Y{(>cYDh6_Gd2|}Lph@#;Q zJ~6dgiJshyBa(P~XQFPiTo7yxZ)^s(nv4JF1;K&;m_&kR_6pVtt`VVwSH1@wn?c9! zN`GQ1t~)@i?K6p^ZM3yx<xNi`i-}88qE{TT^!Glb5|k?8CX*b8&q6$dL`oR~SWKVo z7=Y7ni8m>hIi`e*=UpgcvOOyok;#w%<rxS?<BMTg{T8B;FyF^JeDW>%r2xio$o((S zvRRFmB`=jIJyb*~vZcJJWMt@f(c%D>BI?_^r9Z626hb!$PHt2fXBQ+asd|<HTQ%v+ z*g_J)C3=eBTbhUshB^!6yT{3fn;r^eldqP=0R9HRTwJrG*6340zT#pGB45=q;SnNV z@tv@H(02h~-fc~MYOt-8?9P_FBm}VV)4$=TBT~Q$LuUFZ|MYM9>0O1&;Gr+zRA8Tg zq)kCz#I}TE;UP_W&Ux?%jHUquS)8{hKW)~pq;){!CvKiw%aNN!<mmNoGG9Vkz^`ug zhN>4zhLe4(ydUwPU$zt~B?2I&6oud9j>S6)iqzFgcYue=v}$Gb0{}F({R5!7$QSaY z{WP>J`v#xV9Xz)Ro`!f4Z}%y&G>F$HOGEJYo6cp(P>jt?pQ+j)Etd^ZIMJ1}Ve_-8 zW;>n)H++G!B4stAKq*wyMAo(nNN4m}6?xXIiarHR?$HpGqRTY+Bw<==E)I6IND*_H z_n|m}Oy&r*z(H2V0QN(cGC{h^2rs$EiUTH}`-2Fi@tRV1K*g7|X&bIE3_O+xAW1?! z^l$D6UO~~qcb~mzFfc7|_6=ZDoY3ufzD1-pId~JaqOCy*^Wwm*ScNB;q)L>iBis#h zz#a+^9b`w5i(XijXJJrB0++M8a`Roe3riU&hXelpQs7njt_(lMEW%6{rhEwOmxXP0 z<h1=Ty5>0ibMu|K3k#J*vm{3Zi5-CD0zr`POppE=rv`r0udkiiF3Oezx132UmJ^;? zPIyMrw3GH~N#<ce@$43#a!~;kw%Gc5@Jm7duxiG&doft0dL}yxlqFokF6bCvjl6R4 zTX%rMm+Yv(vuo?gq$1;qdfu!eL%U5@Pr?PiWWwXkm=`N+A~DaQuNZcC(=>PP!-R0L zGO%1dlkyr~+nbLbSlNzkgknj^Ni1dDAQuUXaOW<R060P^bO2&SDb<hEac^(8(1aWC z<F;=lX8aJ`MsBMG;g$V_hbBiF#EOYj|JAk}uWiQ-AS4&cdY~1xEFknr!I2@{E889V zZk+mv+glm1Bi8QL;C1ZB;t_<lqNrP=bRMC2hE1xECF&vzgS7a$?HTEcyfm5PyPY7G zkHI+yO+Y&8poT%BhZBZ1QU{NCPJZL*`Q8HtDwwL|Y3u6K%gc0bM6euDq%3fA*y%X+ z+?>Ll_MeTEyIA2)PIo&LNVav4<wgF-`631L!YGDo*k-*CQ#R1n?ywQDo}vOUITZMF z%0jW4HPZi-L;-mES7s&ZG2T<>Vb^#J0iVL4c2>n1)N@69(mQ86*Kr>HO&x?qR<P!H zwk?2Ag(~(5%+F3>W8&;V&ZGhAhyfX`iW);eHa0#MJJCR&F@)h|z~vvb{_i`D3Q0p5 z-7_0&Ms(oT^LUtT2yl0A53W59=gJx)J!7qpqs}K7A3Z=?JS3*{g~VWpx{K#bf89CY zpLH4nwTvWL$vxj#L{|XkykH1cog=cEeCc!riR~uSzqLJh4OPD1U3~$5lz-ja_r*}Z z953v|<$yW5QivUt??HS%i1`Gw;~YDD{a?>}c<pkZu8djd57futfb;lL-D7dWl*547 zzY?plUbWpPM=%LOYI6cJ)_UrR(SZ9F?%puUP~zS^OOZ5*&J=c>Vijznc-oT7XYRq+ zw&Zh{w|UIkGJ4KLoo6DN%>mo1PymC4%>X<Sx&F&>T$5%#kqVH4Zcu62B*(dJo*b=@ z0Rr#IO~t(tu$0uYs&j=%!2{4?Zl>Xp0};t>BM}hbnsgVl_eP&Z{gApg)ncrA(qgY# z%TCP0{*H%$WK+FIx3T+?*#Lju9dmNtL3^8Nosp9i&3x4aa_8j3q|Oa;$h-TvecR^D zeWxk0mYi*|60va`aH46_PGXqh8*<G`IYKWSGq<;pa$1cPDrN<LgHcHu6TE_WL*%pK z<9!a>`9+Vs<5Qx?kXngqm$>|GyRtCJi9`E`SjXGjf>%BVHW3&NCLvfDaGZSEs2mTj zX*AdZo_xZA#-xW(p?E>neHnLX@+es*^kYRUUMy1N;hLPW+glEzikWx;oG==KUmpWz z68W;6<Oz6R*%tg773jsd+{}&$;?Q;xy}&b3i>{`UUMxvsKL%<(nA$)U81kWGS#9yZ zF~m=3d&&lFyoiR|!d65>GuQWi3{LLndhmQu#>Je+K7{G+sO_t!52DJ<Q@-ISFJHB+ zOa*71ut1joRGBIqV--|PNWDPdG=fU$PyUU-#R}?q0yjiZ&lk9%g1SK9h6(CIK6yf0 zx4^L>?l!-J;vKXS`Mn_y_fX%)J1EqNcB_;f!`<?sC1Yv!EpiN=b~`AygZ3WyxREMD zAw?1Om|Won+pW>~ytVo3Pi$)`N4+xKA+fYs6$x$wGyA+ERgM#*<^*CB+GF#lgD`fQ zola7~ow=%ZRo$sR@^|__#mlq6BVKM>@TGoovI`~r5`=_l3`znI8Z|M0I%qp}lDSB3 zdh25mHzFDm?g2YQ8iBm^I{UaC=R6bN@loIl2p?$rYNan;pskP{rkamY%`sz~qFe{_ zp=}yFBJkP<T+m)aDj2f+{2VG6qS}t1qx@<Isbq-s@3~?<!+Cy=K`OYPQ~K2feh%ov z0zaqrs|)>Hj6ZpT-@$<Beg~dD?B|B^>fiI+5JVSBz6l#(pMStuz}ZBSo`{@f+mwj| zLs+;>3a7^?&@mYR2J(9{05piMF&uP_nP4yqUcG?lfObl4hiPluwSlHHw?lqM_lS3B z-};9>mS|B=_J}Xu5>s*q5`CXz50r~Ied^lG?SM|iUr2J@@i8t7U;rTc)Fo-a4$Gsj z0!7Ru*Mt+<NY?7|4TtL{oyE-uI-5Aqmu@E>_6TG3Q5_%h##ad@BKp(2cMKZm0puz0 z#*NTr#Ak!&z<$*~hoDTim-C*up`UTiv-TZbW}r!7RQr-=jS$rA2jgS?fox&_^++Hm z@Yl7$)Q>wAO2b|*5^L>M+v+vr<i=#-%h+*RqcL<~@i@I9d2|go&g56mMx?s>-kM@Q zdCW|2#R}gxh)}h7uL0)81wMp0O9PCu2tp0tdp|-^L(p(@d^oVED~MwP9xRj(dJJM# zqy=mm-MRJuxB+%MxK;~FRQ|D)DI6aB>R5<TII2D@ME!%Tg6*mbd5t!+E#-b9BACG< zBHw^h3$o}T&9)EjYhWK=vi6)&g=<O8(=`T#5(kC0jfDCdhZ_|04bx*Q#~I_yiURX= z)~2+Y<9=g^o6z>0dA`apUrpB3JYQ{?ud1vtCL0vLH%yO17zIRiENf-kM-dZekZh79 zAgUek=;tAgAzx!SCO0TH-q&ErS8e+sjCz%;>7fii$i*@g*|po3rp*A=%sU%#Bh} zCcWZ|sUAT>Lo~vOF+w4VM_AkT3o#A>yD!E`N~*|&7*70TgRdz6`D(195W_^2RwA)t zlp%GYB(cIoh7qCVA~LLBZb4|BfRGAvx49e?D!3y^CM?P@!2!#jcEu<=T3wJ?8AI7O z@dmzvW<68WDwm~vD}8pUSws$r@IV@n0+)I+fe6%Q7e~30hr2l1rJm&Vf8^pAmr>?F z22A5Fu`b^o73=-QYUsYg{u?Mga9g!EaBOWeJm14w$f1p!N!LRH{`JF_yc<yosEh>5 zhy+}Jiv(1)$7W9_>RZ1ET-2(A6in|BWnkA!_|KB(MHz;@wH&A_adaIA&VM(46Xi4S zs2j6x_weu3gLr;yfN`2xL;d@%hXOh4uC5Jfl<Qp|3F>>RV>**Z!~7@dk+GY#Q}osQ z_9h=UVxz@~OpdhxpPLp$9Sh{#jl=%;(l-v8wNvd)G*0{by#H)!M6wBXC_w;GWuGSJ zGWW=bE$j_~PTChof}|MU)VnP4wW+3uK5S9mAe-Cr2pby-CiKgbpbVD^IjkRH&^Dty zg!XpN_NOBXjNd(@Ld);ASLpfO`4uL9_pAzdPx2}p{O+8JVt)7UF!qWSQ@p-EhIey~ zipRD`cH264Pw(BGi{UtTXQOI8?5a8NuFg3(y5};{Rf=W7!`FeZRv7|{C6Asnpay(n zQ|5l3LVp?e@BR+nN21{1<eW+_KkS!d`qt~*>rLixa=jv{QYrvPW?UbKdvgBTL>y)0 z<BNv7{U`LAk8t!8q-<o=1}v3y8z}he|8X7Kr>==(>4WpMo1U*%KM_-vFN~CL9r@=` zxh0d%wj$dL3Paq7!SBemsN1gN4)fQEJS{3mK#W>dav#U5HEotgy6azkMFpj}vZWa% z6iA$4`sO~<c@axwQNgGmJ+<YiOiwkj&%z-|un>{r`m0SXZ(N7MLgOaF*T2Fj$rZG| z<buM>d0n_O1M7~lIx57mmU6ZLvU+wL_b1CAt+7-mcAVwaDt_<JsH^dTk#3}yd`@_i zX4w-|dU+p!4xF>ibUW4cj`)3@3->iI`KoVJ?u+wFCcPg$7j%ohUsT2!0v=qhK7K4{ zG9ylrH&xcCOn<QNehn*pFjY}rf{)EKrsaL~`oWdjRmS=_l(mOhkT1uo?x({6Yx=}< zj)$+;ZZK8gQfE0IFFQF&E2FYKS?^|LO)}din{9WKHdwanuYD6V*Ork>2XGZB*aC4e z9m0}7_nH28GwO&^tDXYM*ffyGqH0B&uS}M{0ORiZOjJ5#<n{D|zEyWMQMJ>G^<er^ zr7I&7+B~aVN)etnz1h_AyX)X>xbGuxkcw8Tp0W&2dgM0K|88oT8GQhzf1_ApdcFC& zPf=CP2R)T9%&1nhrpbH;d=#XQ<p!D0mei!;U-wi#Gh?Ho^>$g_DDXv9Q}7AG7n2BI zys-*=L8jOBYTqh%{cu!-ixS7$c3;C1{W;v%a9`I)m~D3@`Lk{x{_OaY%%$rOeWpd? z#MyaKUQvNl$l{O&m(0Ml2~V&zWTT8tAZmOXSpyziQub5p*CJWOJZLYuLof?EQ|X!I z^-^kO_Rf`4IMdJ9SmphckE&{Fim!SWk-2ZZrYOHlHmc;si6xUy=S>F9KHDnPf%wg^ zi1Wk6B;xeoWbM@F>XY|64EgeKzM`4Auff{J7c+GU=X{PNL2fY0y+isC-g~lKD^q8$ z^StZvOd_|I+U}m3=8Ky(#sGn5h?zCS5WYTZitg-M{n%!RxN1ctd33M(ULxw`P04$W z)nACH#7mljd^P-mcXVy-!{3#vYR(yBO=2`t=T#^AV}4h#GzL!}>w2F&ZD7PhQh!HN z%aLo?Jxc7JI&w#j61G0so1+xv`}^{c<gGU}1wSO01nj?td*13evcuG^BV{CHr^3-y zN{j`S!SFUa5l@T^N#C40$xa#L!?ZG@$i{2x3P;`2KA(g9!n0SGzPgY6)inWCXY1bV zD_2FES~9oKadF4gNwCdHd!#iA_?S)Qb4V93i#piGYuL`%WAKAPVPlym)Ya;$il*eM z`$8k+Z;g6*)chBHC3l@GA1=zCrCXa3D2j!VoaBpMdB-;b8mV1ji9v;lFhv;dVY0QE zcDl|j{;?#juaQarE0{w6&DNHe2yqxfoTo4#@Kh*9l`-l~T->hj*cyD2(B(OiE~}-- zQF()4Q)j@l;&F1bE=I~G7u75;e8>68<$5Nz^dVK%Do?#Ou-S9>$UmSmwEa{bM!RC~ z*5KwFWvX|VUvrOT!gVjh*qHj1PXz&0Vz;&909y2cu5LjeR|l-z9?jvlt8BEU4Y%BP zz1W9yiDFk08JUR+j`*8o2e1U2jPie&Yze}Y&y)=>IDNVGG`Ug;X9x&dyyY~8eDVS9 z1E|SY$gH^M+5>VB8RS*@RJDbOO5eC?SpD#VZJA*;9iru1YZa}3mx0#Ll-zYfxtT~w zX32wn2cOceDz8s&rg3rQ{_F~USJzqgLBumGS=-mFDcFVz#ElHjeW369f-f11961&y z_l}YTrCn{Kl~v!b%JU`g>fd!2Vt%x;By9})7=BPGu1mTNmne!z*QyfCseBv;PrB{8 z^Oo;%vGQE-%;=s7jmKHLbX^>N4wrG4QWAgJ|Ii`-8N*BOIE$gN)4HA`8)9VIq9yP6 zlF)m>Ww>_O$1rBHPYlYnvYS8YI!=Dltg7?&-F!QFG<mzu)3-*`sOWg6nW?+G&tw(- z8Im-@h#o2bvJc~Fr*M;3mqp??RhL5Ix9d099HUYh!B(?xC3<JG%IIpjbT#tk+j#)6 z#Yxsp?>qRsw({v}6;8;R%KG6Ff#qGFoke*|1)EZ5B^1`g0-<EOp26R>MTB*fa9~0H z^835Q6HZZnyNolPF4P8l4i`;w2p`xf3&S>&iWaf#EKt=ahh|(^QU>ohjAHh2cYX}~ znfuQ2yC>V|$$qu`|FHHh;7yfx{P@X9a+0<OXwx>dC2G&<EtKlo;G{s+CcO|UIuf9S zijGt%l}$%GHjufk4O#-$4T4HrQIiOyREiLgn=)<0f>7otpr|;JO+`h=5O1LL_xZjj zy}-8r^Zz~1Z_m{9B<H<+-|zdqU*HI`>CsXV6jpClzYM!uCd_SAY)h%$ie%K$&J4s> zjez`!0hL5BGDL`pW}&-<zySV^bD3-ID@Qvcc1(xW>vQ^OBkRvz-lbbRM*7{3PBi9K zI#rAOXdSqc#O>_rxJ0*6mWAF87l=Nna%;>+V>nj&en;1H>^pNc_|k@NmCMM+7N5uH z5}iHul)QXb>^Bqm@{T^?yFRWSS8Eb4Ozo?g$qP+=**SdEGkwCMJ_ho+v3&)HnCZCx z80!hGl<!je3ie&`ojA7JO?%s`??m+Qa%p{9pI2gZMV|#iM|k@8%bi->UksthB#rl8 zA_|5sltbv(+)-mezs7#njZ&-Nk>htzd=Hw-LMpBx4ygtKpGD)T*WaYzb7TI0`3>fw z-(-D`4&G9DN7tPM9CWbh4HYoZ5EUEa&%U#(``bRLV@II)G6<RT5(s>#P=OuR*jPk` z9ZANkg^btWO2<lfx2H5O38t#%wNX3@<REX&jh~R9=NN%ykYNp~Uj>dE(?f2Wdkw8a zllA6h$REUrIk$EPep4&#g+aCgGRNQUO_=|PH^l=Xb#e5aBbVvJ{23n|x@^{pCG0j! zjXSz>X%i&og?`J{C_S_zV4#I(vW5S?e`hsg_@?*zvhQ5o{qH`4^{QC5k5`FjAjnD- z{`T91wq@=5n`5w*Sk0t1zWhe8@|v4I#(z0$&5ppNAMKj0!!LQKM?#MS>Pt%C^Co$< z&IWmvsO^n?OG;4o>*pWi1fAu26gzZjY=YqTFLdAX5{z9nneleSDvK#o4=femb7nr= zq(-iyD0=)VJaJ|&%{v4b!QIF^GdC~!H9i;W#D|G??|pHAb~DN?mFxg>=DR+>NE;6~ zQACG0OiW5YhJodbrgF$@gOB8lNAeD#4>7SSdrD=}SLNsu|I?45ry~ylaTNZA1;&?P z0k6qBRQ^Suf`_XjR7+7*ubj5Ut8H!vt)JAU1=q=5Y=dER>?g4Pcd9?iVhAOQru)|) zW9kqLuP{x5$g1b&(!ok8I|4625a0UhMM9&m6g1+j%U{HKBZ(GxOc)H)fHu~ce5w4i zJ}w8cMsy7Us>=v-m#A6!@D@}>rDe>FE<;b+#3xM%k9Yj$MeuV%GG(yCU<hC~_s>0a znY<lN@Viljdzvh|@Y01B11o4nYq6rPj}&Y6ZwKbAd-x)Fo~VX_aml@20bKb6<8yl2 zyPc$1+WsjDFt^UcywUW43feQ>zstB=fW39<fB9}3`>w8n?OiEMiM>P47Gj%k0yN|M zD#}Qw?A4&qiYU%~<+4)6tskUW$+Z4`F9xb;{lBF3_bThpu6-=qyS}E77v3ePb1!2* zuMO;J)z6}5xfDP&p5fSGlCG6~8{Z_c4gI5Ah7io97ITjWVDSkpA8&ei((=TWE0c`h zV?}$_5x@M=hnESjaI^wD_Po4a|8-d}(!EsA^<C~%XT`C}VHDu=@=QO@-G*l$#q<>n zW7rEG)vukcezB_vi5W-ULfa|WoRnO7-=WJZS1$bK!BfKfV0tTF3`n#~3+?i-vP+K3 z_guO)3I6~;Op(A3eTNa@k@euGflGa2++lwG;!m-8d{^*IAABhjZ0(xc)y-{=FSe8E ziTZG_`gdQOvt4^vOmo|+GuvBYe53PV43HxlkKeS+cla=MY>UfU_$h_-V!U6|c%%b7 zN&0OUf-x_k@dZ5gv%2m(0@EI_v(kKx_1!*dT5<0#;pCWAz1#C*Y1}awccTEeJm~ez z7X$wyo#x9v=rsOroVok2eO2Y{8e>`tZmqC)Sf2P!U9Thloe!%WV%9G|^=j;07CUEi zsq9Bid}wp=HYqij#8tc0L6^1~nbNs?e)x5}Cit!p%%v(1dt>PjcoVPN{UOX7@F#w_ zrz5mP^hl$`(MV$GK8$7Hk7_$79HI}0hv8#QVtk7RY?p-yUWfJi52ky&YL9r($py7b z&@(WFL$~^xg!>Z6jwGOwV6}C4ttQ-svLUuNJ_MaU@S(*K^J+f6v{;i0HPsHG8qr+U zmW*QA5m)WdcdGDXP^?pO!hsLhE-83)yY<fy%yKi~^k^p`6mAc`+rzn6^jQ+(t18>I zmZ}&_f_SI{)!+;3EL9pyg5FZ4wIsw?ssxKF$x<=gk`QO9(pxeS3OX_39*#i@wa$c? zU_$(X51U_iX~GF23tBA1c{eWX3r^GInvvt00BEFGoN5cY#=1D!pq6KHLIdC;o!cH* zMj|`@<%|SImE)nP$xfklIY)ANns4Uv_@Qnt-}DE-E)`H|Xv+8)-!H+RX`U2rel37B z^CrIOw>WEt3oW%VC*KPEZ2MlJJvNd%ru9Skm_)AS!;LY<`5a}9e02M#?%RO_UX3v& zMT|i#jYDj$^Eu*i?7@*-HO||m!UwcJ4I1%h3J#wAsm7n~j@?0*X3gq?7Py*);AldD zr_q^_0}h09uk*Qw0}0SL;=`344WT8x&Clb=ZFUZVqw?YQ7@WObz}d63mFqyf{1xfG zk+ePZibQ)z=$~TRxz>c%1b9LasbP&3WAfWp`>exTP}JNv+D7LZgWsnFQ@G}TAmnBw z$3kkx9j3TLN(Qe73YZ1p2O8fL=WBuvq27Vaj3fmocy4W*q}yH)2gp}VgG|@11s#A? zr_IwqhG^6>gfO@BLlD9u>Ha@3q7dHwiNFTnikSyCtW_fz1IWNU4TZ(~C`>cx)JXrj zj8#`T&05)@kzF`yurlda+XDjOfB-9tHWFBhwU{oDxmFa*C-jLLVOQVv8pW^s0qbWZ z``h`o2OI6X4|R}jtO%F7@#r>m(~TO+U@1fmeb6HEaC7dX^wOMazZoG4(EToK;;RkZ zxF_SP4XQ~`YRlnzg2CF!*_<laILcU$Lay<ZZ9%^XK@YLjiV1$Bu=e0yUhK)r{j^rF zRC2aTRq@z#<5xdW=~8CMlZv(nj*;|p^fDnc)zL7W$2!~`smAFGZEnu`!sS!-2@6Ua zlnh0&$B6O;&tDdWC7CV!yw;mn1-EsIhz>?M-7#+@5E<hSB+N^T-z%(_KlSovm2B5E z5nYp{?Sb7i*Df~KJ2clfhlQF%gwL3Dv*hb3a*X5p`uZ+0eRAQERhJPba|*`Q>kse% zf*3Jwirf0=<q40r=#4RPr&HB(s@7xT)~=frHa4`Z%pE<+65n`iTf@V_hDNJEei~RA zPI)6}zp^Z>d+0nM)da#;#>rZ)$HE{t;eGQkn?Yr(<SJKarBl10FZ2pQ*&KFrxFx$( zj+1>8Cfe0gtKuz5YB@=hKjZXN=c~%t6J|WQzE4ilitExddu{$XqvZV3-brEAsLXte zr(=foz3vHF#d17MMP_-lF4{*DKt1J4kg6`@VB2If_C?~Pv0m#jaMJY4Z9cfS`J7aH zFjehK)#fCQ8n@fnU|!kg8#g|_@#$?1O9%J%81MH+8qzO#{Czovy7Y#HqM^aFR5UDm zBDT20Gp++si<pgo%H$(rKRMg<`En#*Mw}*nf#;2d1NhneS>sQ(0e=Q;*T6`QdquH- zf|rR1PJkp&__!=Nae`c2y0X~T04wn%i`KTUXzIhi#$wnR{*C%txw);E`{DznD6jwY zjE7gH+tNkL$?rUB)yZ~QgSBaTZ0LBWs~sj&=o6Qo;m?(1;_kFAaa-W+*P<@s!@N=l z86gk_i+0(n&?`m>@uEF6as_|-2a;$}T%=G<k&*f{jSs*AZF~dK_(=Wv3D$t?7Rd+{ zd>h_Nts79EY-FS-y?4Fl3x%nWy$a1@{2p@-et9!0GBlnI2iL1n!449q<uLi$u7^{e z*7b2%@iCZ7@X+J0Ue+cyI?=(EZt^R5L;#@QoeT%esJhQw+!22wBDVC@7M<B7rSe^1 zSfraOm4EPi>s|ktl8g`yJ1?vCWU$kc!LBgfwG_b~GT-V+G_9?c5$nO9X+GVMp4sg4 zJ@=h>dX1M#1~jb9Y~CGw?z@mzG#P5l&@fM;pZPWCLf%+eJt0oUY44D~2x{iant9_s z8-cApIe{|;(X<2a=)dOVj3;Hz_{L=^eOK@~(6#VB>b)V$I^0n?(Ujg1Z@l;eMhZ?d zVO1E-<G+-%Ypt9(YKQH~sZ*1Bj?0=F(@~sg`n09jYp*$1lMI{E+$nsyz|~|W;G^j% zSDGR6#TnZeg4i@Qq9?sH-gK0nEv09;uGgL-ylLd>9t#7_ygEn9KM-$`Uu&IO=|@Nd zbs#Vu0QQ9nlN&Geg<K<~3p=69@!}y_?&vlnFP-PN{!76*!ROY@jhumOu3r%d#&T=Y zl3^vQJuiL2UNMcqD+2izf{05ra2+-CT5j}}-69*PTr`|u_V45wiDq4Jy(G&PR86fe zy94$Hz(aalnKO>&ggSv*?Z_`KIR)c{xh5^s@#fC30U=Ql9sw>0oRuhmOMp#tZ!BH_ zUnk2anIeCOFgEPjgtNzHt?!@CXSqC%JHoXZyB1@hR!P^leF5WZ<j>bY=eZqeHWap^ z<xH=I#ttty*B3&A@YgJ*9Ob@KU=?RErdp=+*hHsBp01KM?d->~ftZ$j{{=_nwBKu; z>hd>^4ZENOf!1FDoB>_&Q1c!S4<T7hY?!#zQZ^?-BW3OHQ(osD!kV#OcNU$GOR#P^ z4Hqqz+I6unf3Y?2c|^Ruc#<ECf}nB0Q-KgqbjZaK0tR$;p+bG*YdAPw$l`nq?rn<} zrI1olZ&3A&Lx2p(v!<lRoQ3c#L<+!A-Ta_OPYE<s7fA4ahhaiHb*2pPFChta#_P-I z)u7*BKRtD^u=rcpkWhZJUe_9&p0?@RdQ`O0o!PXgKAVdqrTQB#)aM{iDF(;c(DN#O zS}WjjbvB;GQej-gbz#3+d4@{5>k7zW&yF)&1KT1lZSku}dm>BM{n(>p`c6VroD6e0 z-k9HRB`6}tMT5iWKL&^n?4C!@ppkPQ-|BFm_GHt+6Lc0^r!E45J99X^jl*~>)_75e zLTu&mff$0?qUFgRULAhD%u`n8m2Z1}d6w5=wk`kZ=rZZXou1coTaaMkNj5;9T8{9; z<&tmoEsq{Q^wIg(<EalF@_Nvw*f+WZ#a$@r1s+!G?fM@csTEwh>TJR%q<9@yLk22y z%JLUXziJY|uCGz>oGuDt)Oq$Ab9<0v!|(vhmwrNco1W!&@zS$f5fdoW1~4v0H66I0 zm*RHPp~v)v{e0*|u9rx15H&Vp5s2eCu7ap&Urj;2cen&Zw`8FcOWI+=a1oX};IQ05 z_l5Bx<(@baPb>7m{V-<p3WUEUm=S=3PDWFGd6`XhCul)Wt9+aYX5O8ZVGU*r>RUsp z#Yh2w*R1T~$vv`uwa?yi(qk4dt&?4Iy5m~b?+GFQ_7*d(O2(>8(N#fy;7ntrw{{TS z8M-{W7t+tS267|d>93-Jwt^#Ay~b9-<rglrA#$n&tjoH8$MtAXiZYSprIxYqLQT*K zSLAHS*QDZLx8R+)rv)cI^w(0|D3`jxz7?B<(I&@|L5aV{2{9HJh!PRFfu3I_i&jq$ z8&t;6HK<CAl(U_MBD=VzF>@d76VkZGjvW!Tvqj&lp3a2s0+cOA))&PpdsS;!DE@XV zCan|R_AT$F*ZT<(>q}-9tlfce7pqY#r9P((Nf+T6@o*C%3|Jjbj%S5)Gw?SSts~6X z&t~1L%X&CUFyg^iLC<L~>pxsIa;u+}!b4to40eN^Acug$m|LvIB?*M@b`FT{{=<%M z%-SHY*)d^+Szt(D8WTkWPZ=`hHMkPCvNF4jB$Ua?cFW|scH87EyL0jk8MI3ym)*8k z6PKI5ZE3@peDJDChI?>H%mTY4a6>Oom<*bJ3+~fxuRnVH^y^8uC>Y)>JVq2caI_D; zCI#P%Gt(!f@Z}kt4Z2chT{X(6#d4A4WQ6F9+OuWLLO_t+9ZMO`tS}~!_g4zQ=JQM_ zG)bnqo6+~NBk)Qe%Y3BsUnG}sa*3vXn#!gvMc849)}A%F#HKBSMch7j@>qNF<P7_a z$<ypev6u~-Pxnlk$Z$=hd)TzMk9nqvNABA~q(|re*@w7*6f)Y}1-uLUIq~*6bN$uX zbc7xQO7(jnbm&2gTfnFgH;KIw2`I?g(Q{Fh<x)7v2*$I^;dA3WXevt?Ugp_0KLzC3 z%4gb<DGs&IexXwv!7~(BRB_F>1r6MKbZpcG{zXlX5ItZLug7<?0WuE6iD)cd6qoB- zX{{h{-~(V`bX`F^wL5w`;HINXE{^Heac<Lx`GwXw_xQa684tK>o^J*sfNbFxVZQ-q z1iv8lai8hMYaVk4()|$^f^OW(`qXo}sX)=d`sVc&>H_-@Gsi^HTC7jqzrL)Y>w~OT zw<S>2<<$dz03@UB6uSYKVLw<o#5U=j7jKXC@*wc++9qORP)x8|dA7pS`)L&Ji!am% zjK?lb=AGjc8xOtc$6ID4DkTXoiuwq#)xG-lj_5r>tw>CRbF6#s6y+^1t9HlN>Kkv{ z0)P$W&)I27#*T#G!B51oq8!@BH%;Q2Y&f=Fe*=bm_juiw7cu|-YxwdUr7c4wcS2`e zShyF~gfC*-bzxy1dNrKSofr{ng9cTvaNlWn0%{?jmJ(!x3MDkaWrLLoA>XuseoHV` zY@RQ!@XP6PWrA7Pe-0eZ!S@!rt=Xh_dGhzt3#U5O71h@CEpj$Q7EVU>#LN;LL(t|l z1LIiS$H=|frcoUJq{B8n-vny`FFQub4%5tE@Ii-Z-Y;UE2_{ia&q~L$Mao|`<u4aB zCm3jC>jY=kwNUsIMyue!7=>bCWbZ~1<_wam$Ug}{NWXfK350Z6q9g;fwC?*CiW@Gt zbbzsS=_&9JLc(%CY^SKzOR|dT4Tt+huPQV?dDY!NhGvZbTIv~E63(I5DWdd|{Mv!M z{TSpl7oE%`!7v$uA<{$19?9I`K(;&u*-SkwKZ8+zV9?F6Kp+e$Fq!%~{NAkf2mT4v z2~LAUrGK4}G2VP3(Dv$}jG+YIIvEZ+t5i;&hX`1q0hM$7^u@K+HHI;by<L0xLRV0q z$9%MqI}jb{)%K%l4lLPv6!_3Ew#6<xyKtm+u)Ap`ymQ=gs&2~*3R|tkk%4<d)+YW9 z9CnX-F;qCRamJ4!S3;B;hy5b$ISugkf<EISigCz2#7s8LikH^`4xjZX-oPHQ6DI@7 zl-(piK~65EM7rcMMDNPlW(w`ij^0Hq94y2D?ktz}5qy&d;X7oliFAI@2WqvBr7r}2 z_Ntd8vcX$BR7&od&*+<gVt*tX<0K#x%f=*mIxl^+U18w;kWl0q$i|mGh|0#leBmnD zc+A=*9)rr_KW7><&O1zeF269|G^%H;XGRjt-E^VXC-uw8QCa282T@sN)(Z#$hOC0H zb0U5^fOgJr)7|^FhYI5wBR`P90+~32^BL68K7208XVBn&`dqTlzz1E|`CRF1_GraJ z<$$>-IVq?1E6~W_ffAvU*z5NK@TTX{xD&~+l~4TWG^k8tcFZl-eRMNk-f`bJ-KRHt z4C+m1V83dB;#a{pv}Zi|nQF~XuUR3VlM`l!lg(&C1z-o)4`bLY#(|le#+U`=%3pyi z(zXv2dC!rFJ$d119+1DpF`KH2YQ;m#(ysIHkl|B73S?e)5)QqnXg6GuuJ-a$QxyFD zmlQ`&JZ;1aK*y*;rEm$;>!F_xGd(dA(NEWL#yz@j6<6(lKzw~(T7Bcf?e3KywCJ%O zFuYnNjV9QA?{aJ2Q;fy+Ofao)GN4O3f%OFN^ac>ehyl)DUuCvZY*5AB6}xHi*(%Rl zYB3c(sC;%+O?FBx3TKGb*#HPSegh;Z$c6<XiJKksUTxMlmkA>o&NxnQ4s^b96&3>3 zun~6aZ--DpLN?F!tYGMfD0$E+_Xps0>0|wfPGPvo7s;g>srV|aB)#L{=D-vG_v25# zYJ9^;!g}+6j^7yGjHP<@Acg&cv^ZvMY~y$upkXXbDqw`uMj|<xP<-ykZ0EGDb(;gf zdgW?b<ruM@M$^JP%=lzfBjP$T9{SE-Fekq--%_dpbifFvQ&KH%<yE}6;7^+avtB7w z<5n{o(hFjv=B(duyBR`r5Zd{PIIvUinc%@bI7*4Sm1rK*h?<@>o8MrAcx8aZEl*RK z^^-F|VM+7kIcAG>)0vEx^3B%KDwj%9ebA|f-r}g=JQ~>@wS##4``GL>gK>%8r?A;I z+juy;y077+6WfX|wNqE5-dqjv3~5>K$Ku+xLtpOAB_=csZD?DxcCd<);9Gos#Wy&2 zFpOi+2c2HYj&f&wP~sv&kuCEXa7gl|M`M&IlSrn#OdUN{xa2zp@b?m~pj8eTIfn8y z&~3=nfBU<i)p~GPH`l6B>>pP~Q4dUSJf<z^+!h)?detYFLbEbl+JNR2rnVkNIYux% zKnd811E|o5l;_+X&$;x0OMm&#-^fDA$w>8EDx0vTXI<WT{MJ^XAwLy9$-<Mkk4mOA z8_SGc^ix#Akx`oiAOB@2j_5J>06&9(cYCa3>9&_|sxj6}>96h;3Y|foQi;H^*hkdI zqCd3CA7rf;`CzF4w1M)EgG7BQbg8EL4LNXOsNvbco66tfn1LtM<c|FU{dj3Op&IYQ zGij2s2exh`m&g@@B8(2KpW%zN=<kkCJE5Vc=lBos2#wbQqi~}msEf-J!0(DZ0M*4{ zycp|L@MR|OC6DXQ;pCIB+pTfmw#`_r_nqYBn6s6=x^^M&d0^0qieS&ZtrG0z!;lQp zA{|I*eisQ#aCt&J!XiOj%z|_BS?A<0os)lbPPqfpNT;S%LeeM{aR@-NnQMHl6BO2I zM(qQ#K0)4Uk>r>!nj;FEj^LL_HKq(?4Eq`zG|IrmLjo{MLRZ17@yg9PHh1EhNaO!r ztHrKQElMa}N$UI(8%axO#4K>{qaQ(wDmyI!8NR`TA43ogle`H{l!JXT$e(o&-`2bb zQ^jD>c@xX8L)(gDDvx%x_=}p9Yfo!e=KUh>%TuQo?zkc0w04ch_Je;<y76w#V>{=u zorOSw+=-4i65b(s!o&X{!kchHm6LKatOTWZ$Ysqgamnv(IkaiI+ekTL*UQezJ8SHj zxL0s`e;KCPVb2<r1J96c@k62kb^PDm3p-_Z0x(E+$1kXdn}zOQiHo3%GnM`x&Ymx1 zcjOCJj@x>^4{^1yA<zB&Cr%7Gig^pKI~>=kW-=&3trW|iP)PES5+;ZW6nZFJUN9wf zIL3)ekRS!9;(@!(#3g+8NeP}9!6(J9EMEA-3HA+HtEKSkx8mDPd&mr#WV2tkmED2u zE*7v`h!5B;#0St5JBWuZ^8;*GfDsb8#$`WS%ty4v^*KvBHANFi9z(lg&GMdq+OeiY zYLTWU_Df_(?u`w~S*K#TwYlU3xx-BMk3ngR{=9bZPZ$@YGzr~KqjDp=8<45%dBOU^ z`;c-VPS@}MN*rz1IQ|@7w0n3|f;NqTZ4dveOX)<G6Q%7Tf10cg+4J?;9cGfPssBKy z9*Q!gYt%V|;S^>05Sf@xQa)`Dsi;>7;EN%x)aO(H(AeQ(Ei&ora~{E4ok9`y+lK8F zBLKJ6c$wB7mE{N4-o-h--UKvoW?iX|x^d`y)Aa~D4oBjbtGt#+0|>P@3=?O295Eil zaE~L_>sjvh`j*#u45=PRvd56-aTq=PO&;qF9)6t1`V$Xd=&|N|`0*ZVfrp>qv06O* zM2~f>hcEJ2Z}jjtd#pe87_Rd;MtKbB9*4=p+dS3@AI<zE97%pJAkNOBPv&4(dc?1t zTZzxti?f4WSs%^#M4?RtBia$_R8Tnmb)D+NaX>;ox=-R8gJ%T#`_g~gXHK|g{&){B zh@(9RzFIb3_A1IWEC;~5E8$NkLUMU@cGDPv!Sl*_+}vY4k&Nr#cR#yHp_DE@dZTdK z@bbNJy?|Tg)`v;OiZ!*a*)y-F14<xrLk@_eL%U}o1InW<GL2c5Iu(NLomU99FCRov zj~cU@n(;#R)zyvxjX)#PIA#n!c@V9Xo!V6=%Ww~Ihat0xgyuX4l@o{~9>Pj!y?8Px zv;AgMpm^^Pne8xk4wi^rTqUzf?``dAL;P?l*F@$Kq#K`vSTuE-pCXWodR{L?Vww=l zAdh-E!jhn<3c)P;%L|(;lYnqW7`))bD^(r&9q~-qd+4i;NtWp#y-dFD=Qnv@U!*vd zBbWPd(~GxUm<qMV4=eete=~16ZQ%AlGu&%{XE0?rhPyr%3}TdbP0Q(lJr$#ude2G7 z1CVKId8ufV8McWMg8l)iV=Ea(+rK9zL*zWd%(d-awJ$}xa&1ygDh#c`6a>V<0t0X% zdwpgtzl-H|f6VIXHFua12W+kmCNkeezuYTjZo-s<lk8GUD>03s@lTjW#F%k<b1;m8 z*3d`k4+f0!SUVUU8JpGgbs|4-EF}Loj@SgT#;Y%AJL$K>WKx2@bjVf2OXNDxHZJ-; zbON`Cn;3xQ&r?zy=2g<Kw~8hC-t<BqrYp<QSWiZ7*s2=Sg?AL9h3avGb4>l<`&&;a z^&W86j)s$@pOyO;Ypmy<hc*M+OkNO^>uJrhw3JYx&bVS&`3(RISzIh&bHW&|yZ~GY zajLX}Nmdj%LL3>ZH#En;aB7v`$E)mG2sWa=-v8~yNZT>-OGt4mW{0)hio3#Pe;(!i zBxQKpu7;@#cjoBljroXh^e%nd6HfoPYqH`H?%noyRVxY<Ode5P`X?u^!cd>juuj-I zZ+)f=49<p&Z4L}FR+OJ{T2&|l%C=_)hHq|yD2B(f{1s3RydUQ&m2I*kx&a0m#BJ8& zGIzbwcjQ$BKSe=u2Waao{PPzeH{ee&nRxPk9(?hXEn%{wqO4v(#2P%y^`*DerEV4D zT3{e%Cghts_3y_qQ{vVjK-Us?7ZLZ}ZV>lf?z~M;$L(+9yKh#7UgiafGu{4n8!z0g z3f+8D4L*1{aZ{+sP&1z|zm=<5!go(XZvF%17ge12$s&Azf?KqQFW;^*<%GuZ<&|91 zR+Z^2UNF7AXaZlpOl4Yw|2BQ8YI<IkXTm&9zfpyX;!NMtyFXJ28&q80B7E*%t;$<N z|IJbf0Tnj|LsU*VxqkxRJ&r5NqxXDVs3;|GKfQN^=4|?e%X=GtmFrYZkE@EB@tg8V z_)T2VJo?QeD&fx<hdy`bb5la}-<vpLg^HWKjJ}t-(71%zBQX$uIy)z{bMfq%O&V@C zEv!4Ds`vi_AIcw4%?>R}<I5jXp_jHzQ00Yl9*;Ha7(vezVxVR`FUG<J3!h<q*Yv(4 zYx;z3kiJ!Uk(|d3(ck5S1;ucL;2NoC$nWiaN1FSDkV+OfV2WH?TrH@oySre&-*FS) z9e|;fw`o4gLErCZR1gjaekKblTjVvwBJ9Xa%<kpO*QlD{QXKr=90N3mxC~4u4j{{2 z49ChJQ#l2d$&!=IH?5#a@hdj3)r`*A_&t8jeAZtyhnX=@K8nf=!V%baWcgh8;l6r- zTd+V=Us_x*sP>QK%O6xNj>8yW@9@X@+&b{{pumeG!v{}``Yp?rA^^RmuBSG5@RWb? z>X#=i)&@029&|$Am;0cqKFJW?SN33nIPO8I-h9h#`&#QBJ$C4y=l8{96udQ`*8K%0 zcf|y32biYQTF06~K_?M-C-SBJ4OLDU+Hn6WG_IssxlT=)vqJ02oHfC9qrG%i#pEjM z%q?~ZCuE#&sk1J4&lLloeNzr#HL#T+AhHN2ER?J2S#OL<Ts>@tI~Qx)tt<yTb$1<B z6#aAY+iZ1<3BcI)UUe&d3HN8cenv~(%R3jN`QHIn0?p$VOjD?T23(v1v`ZE>MY;G; zVXD+NO$ih;JE{uP+Pv<TI@vzMZGX?}aK)_1X42v@wVY)`nIEAJa98D>&Kb!I*ZhxD zg99eXz;N<roZ;TsnkqHfKx!ro!#Ddf**8TD7f5p6jZfvVpg$PbWT0_%|7~1gAA6<U z$}FKKMu%k0#pa+Hu#x3(-k71^Ck%|gEpJSB2_>4)_%e<EFT%~Mv5gRh(6fJh5@|p* zb%>zA)b+MjS#zePZf%&bIR@BCK3^W^2=}i!W&mHYo^W(MxMpm?prm0drWK(W&)~hl zy~z&qO^48I7K>pQq$w2(9eT0wgYwsg{D4LT`tKKp(=mwWv7PdluG$V(hQad2;kQ@= zuF#@U!|VBr&C3|p<b;6(@O|4ZLVPd113H1MiCrs4H*W4_YnJ5$O<yDS9pP#N%dy%7 zRgnePUwHOE7qqSW)5|_AXeY`<3TwFji-;>v2&ddrD^`>Ji!phYoTr?K0Izgr6l&$b zXB42B7}dAit(FXL1f^?8Ar~Ius*kCw1x@9Sbok|~C#|lY^f(poxx-G1G!yibsTQb) zD__FoOtpyUzAam}Ep6I=8S7Tnc&;CWE$#*n`GwE3wAAIaB*8Io4A$aHfB`{tv+(Za z!Mzr<m#6eot|&d>>F(qeihN7mvNb8d3c2)BRHxsppbv{xvmH~(rK`<a0=~QjiZ4yv zQrAD&02w^lz4kI-YVr_FD~7;S8LOoZd^biM1=~*dYOD?PpkButbA|_T|A-58|CB&0 zrYS@avx&OMq0_G}S&E$No<-q9r?xCvYTT&_@5^PRZnr9&WI#d9-3j8v-BNwdEg*QU zb+_#sO6N`<#0{0}EHXJON9~CuCAV99HAQe&(s@W6s2{(dQ9tri(mIEdzbHLHO+`(q zLi#Eg5fohaf(U{nx~2o&W>q<oVIEhCF4FypbK(9dIU8~*-$bIMl-+Tq>=72YF8_~5 zKKc=$RK!-w8zVc`weKo+EcB@T(?(XDf_&T*<f1LO_)X}j6{1hU_nQ@tHZ^^r3lZb2 z`q*_?yF=A&(-gy>QmFQ?e-&lZ#n-2nrlV|d(4n$fDau}j!ITN(P`e&7Hsl<)>Roc1 z@*GUZc7cSs(qikcHo^*;iTF2?0w2?4uNWzMLKdy@GhH`AYncpanaP5Nyqdt)Zg?HY z(*r6t;4M^n{0*ptBK>vqiW#s!fR`u+F|&q|7tjd0n;N?Si~t;|=GuU)_U=Zz{t8)b z`j1DB4a#buuCW9!_^^84ftuyyx#CIiVWFy{v$PnZA_7QCZ*knRu{w)W;xDTGqe3_7 z-RJv4l~g~lv3>J`IScPo)#}?-tl(BMj5%Ve=a|}O*L$`1!}t&tW?^`t@S967-`AoI zEb3;hXAxTROA5k6_&cv!_2gz5=06li%prvdw3M_MZ-VUSWIJ6)>9Ni2DkulNS~J<9 zKq}5{Na)zmV?Y^Uvld=Pn>^Wk9^W9f3*~{SI4E>Xa1xtoKu>3Tty}XBWb{)z5*qaz z@8b95*ipxV*=m+2>?Xn9n{a)s>5WePE>+I>R8z|`lz;do_YKZ0nATmw)j0Wb8&_V% z<$bcqM>%Xc<8+V-4aTM!T;8{M1cAQZKOY|uJ=Qdp>xE@hQ}nmLX?jbob$4xsNZ%7d zPR%7WCP5EzmIDcbafhr0KLLSgG2=T~UV3=ga>lEuSeIhZl{GEigr0~UYekAn-X-ks znsds^ZF%o?PsIJeTvF*~HdnDztBRX}Fwk$ZVlgm^{Fb(KkLJL%VaRwyykt5{@Zq5W z<0a({EWvT(=99d#4m)6H%j{NWAxEREyrsx$`_Uoe^X_YvIl)UXf`>oTTUsn-ZuV(a z%_+uN!Z+jRd5)=imizRr##Dh+34F><oe3l*a*ZZxDpxETi0s*E8*{bo4T=^{t{bNz z41+li5+(u*Hf@*0&0#H&fWCYkUv_J`yxABzPb`P+^(?+n)`_p^c0N8*@u&Q$9VqVA zT2tR41&~>mI@PQI7Fo4J<A<AkIS~JEg*Rvf#BVNd<C-*G-aBj3+~s3QHFIg%ZHAAR zu$frA7U+z!FsmGAI&q@C8td87z+v&5I2#1sNjDi~`;%s^DUKZ^7DHm<aU|0!&mKW9 zGkVrdrm9}h3;#mp1Q5_F9qWAgj0qLERLdrs&^^J<A0B4QT#92*4#ZYO29$ExTEqQc zK7|LQG;db!JzAUCd5n-r(<tBIwDL$lgZ?HRZyz8D6pRV|?Pot6*)d2H6nc>FwbmUz zamtlYHL2D>X4?A}R%4-aG}WcW?g{OP`X60Fe(o4pVwjT~7MKaVP|Rhg-DB(+VJe%M zHoRK}0@o%QLg5NgzUExLW}@Ti&W1S)^Gr1(Gg16%1N=G6I=PRmlj7Ru&meU&(WAap zjfCw?f(_EA1Ucgo(?mds$;3YJ*U4W<D`=z^oHw$~TfWCSd`U^~^Sb-yq3v7tXm{mj zS|4KeVpio%sobe;NA&5f!FQ1dA$1C)Rft?Tp)%$|N4Nu&3fLv4*)(6EH$rn#IU2nF z`9ve%j<OGWB)SX+vmum?fc!58WWu{C%oeoPJgiq!jLXp}g#C$tG2tD>2mCt(oU7F} zK6C<1q2Uok&y>*Bh4l(v@NU5Drg+nn^MG}QoblqY?6kRpiYv;Vm!>9Iwdmn5d<R~0 z8!WximjM4xwQ>U0h%P_IS5MEVHsIgaRvXmS)1_*Irh2*zER;(fUX@*Eh5@t$)_fc> z?D*0xon{^$j%rOwWj6%zq`WCP^DBcq=l5%ZrN!_JW5nR}jGzJkzBXt;<wPk6k1-pO zXi%xcu7ihQU`%UnCx(S>fUJh-z=2}d5ZK8PDfSd(bOI;{0s`7Uf=)X9%sI*@#}P>6 zD4(ngh0>W?X;w&G34U#gge>vOolFOG5Vts<pi`ZbrXlEX1#z7b8Xx2hHw+bFAH_>H z6sG5ElBOdVTk+1MGV00!A*8-dHKTJ~RFxDq{$Q!jhB!%P=?8OUwtnow98~TPyg0Z{ z7=Li+=$SS?6k@g{tL}uqkZeiCB`h$t-<I^x3!xJ~X<WJ+LGj)~3<jRZbBY|WcK#GO z-J33*+ytAFLcdt4<N<tXoEshc+}r<k?89vAU$U{y|1q|W#(w?3j}6%bcD#4rMhrr_ z+243u$PB+^R3K4oU^_6j2EGv6or*}q<Qcqkxc{A7{_~xU{qI!uzXLzdjkE{Yz^$*) zCMY6C0T7~L;B(hI)?NtBpx8IuYe?C|GqnE(&j7p}Pi`_U7CbzkopMccZMNAAvJZJL ze>a3(8HZc+-PtOW3-(Y>8bi-4c$U{LTtu2)4*hLoe}f628HA?zq0{M^WYEgvWh>lk z9xE=c2PjJ1ogAQwT+n2?WZHx$$_8#s>zCu|{`_{n-Fgb8>1HA#q;CVoBt)%vFd4?1 z9-lOUk}!?2F)Ut%n|)$g+Z=B+`4eJ1{4j`RLd~P|)sw%%mKxHNYUIQQ8UL0V9!{z; zj{=>We7;-5)mY-`u_cxs7i#G7R~3tJb<sVU1ebnUj)Iu0-{Nh;cPF=7=Z0KbJ1XMC z{$^hYMil1xt`9CA`CA_@djDA{XMR`z`Tcdnf1LUF{_~qP_>Oho2GA_Z$$2gv_Z;Kd z5dV6k)_TK*(6QTaXA3634g09l2_Sb<L^Bz!h*%2}Z!O9XVB=;rlnLA=k32p&Jw-I( zk(^}M8yhl+j2iT6Epj%lW&fORt}(Phxl@+6A+Xb(DvRDJ7JI909D#-2h9H?vt!H|v z#{kjWGrbIq(o@<D5;Elgh(`mnUdqo6mmR$5!I4W3Y#<@VFidu+ByJO=W}H8rG*sIa z(Yd?nyqP@MnD{oygOv$Y_PV7TaAlb#wngVDMHzdFvjCI3Z%vvNeg@-`;n@?CV6Pow zzrBH@>}(QYcgTn<1EIqIkQg+5zw{x@n8Y+b#@rAK5sRbpO)o_Vjc<Axth&C^W^l7$ zOrNnz(~es0r*rcITV88T5GlrKIO3Hf{)TV`cd(|qN(GW%U8N>^k0>Y5cvR(l<9Ql; zHj`Of5_YM=lVJlJq7wiFY{S;~-ZJZ|rrSY`hbjoLqD#FSfNVo;xl=A4*>i;~;J%g4 z$CJ%j559HP0V%Qfp|9Wq=uYQ?NZwBSy^J01%ax}mOTp)F+vnw5RlX!@T#QYPZk0Ud zTcT<uluY1;mk%c;Gb_FkegQpKD+Ct2#@ZS&8ybqz`5O?oS;19TXjaUC=Ho(BszDPP zHs5bWv&|>=Lq|(CXXt;=yoEUDy7&zUb+(~pM-Eao`xQWa!IG~+(|F+q&H~MUUoM)N zSW1g62>I6(S*9l!{Q7yU&IL~GNkZrt1;D2)mz-I!{`Kp`T7>w_S-G&XO7H^V`*#q7 z&|^KfSQohUH5k|SYS|uisF+Aa6J1I5NJylU99)0@;wM+xA!?J2txz3-O~5K=EbWZR zd;Zl|HH0{j;nYzX0}l`PZxmP-)!puSOOa_^8XI5`2YuC6R&2FB4->5yb%<D;(oHN1 z8|!O4v>pTviAAK4KCQ`~Z~bNoas%|)Y4PP`pY@PVx-9%hVzh{F_vl;Ko<RVeQ+sCZ z+(Hc~H>9yn0i_Mkf_~HTk~t33I(eSvwc@kNX;nLUwauzRw4#-FTJdke$zyR^8E#ao zPPPs=$JnfT5DLWA$g<O_wK?#Ad^Z9f+PK60?iI)jjnA$p*<BBkq%0Zh+*C!2M7Zj* zvDZRiLwd9B`3SG_>U(+Q0>I;vMWbMQ3?D!Xq2H#x1(6m#5gQ+6+qd`oWtbD_oAbyc zz{U5y@T0=6J-ljVOMG@JU*j@(N+($V)d9LkVz4dqA5k((vJCJ{L$^Yqhzr+WWoI~b zK6G?3a11n3!7&V5aI&K&CBv(ZXo}G?vs0V*Io65LcV3A(vEUx4x$<~yDtzFQm?p+- zX<Le%^vdO&=fIB*ZA*=_&}R#t%Ah$GwwRtJo@1y%S!q0QaR5g!B-1YjX)M<1c=tHm zUozG*9ezd<xXOwp`+7zhN#c@0=q*}l`}t6>6>P|g*jTl+wd1w`u4otL6O<+)PHnNr zKWCungHr|a=EM=JaEu-}j}U=8aCVHg0_g6Sjzf>A=eeqKyM`I1taZ6K1m?Q;Am#-n zY+JnvNTv#nN0Dv{$BX*L?q|YYkXMEM7gznM1BUw0L|qV$u;)WBrL@Q3PMpqtq$sXa zzdWH8?i`TJ7L_*vpbYvi`d_*yTv{H%kAvww_n2cMrIVPsH4_DXt17W$yVgwd;1DjW z01W3U@q}|8nfRcBbWvXPOW?`1jmwVbw^$pN`_0JD6I0<I_Sv0?ZivS1Mscq3-|GN& z_#Gc2z+;rF{Eo9QR5D@*C09pynh_EqS%W>Y6vbL5i!`2!j`54*elr`xa)s~GjxiD& z?H#@9Vy~Vu2p=iB6B5lJ-uo|DXCEi3&2wO@jIDvGH6C2ofBzNv?<O|RO&tIz#(}K! zNYO8@8mFM*IOwU3=Ri*j)pdK;(Pb|wMij{qK|ycLJRh1)1`yOw%7#M-Vy3#pdR>R* zD36{MHRe3<@lCZpwKJG_?aH>Ul`Ai-*_Gl&y#vMr(mJ*ML<&CRl9{M&VnC-g+|&Z3 znjq1H@rbqauYBSCsHv=EW+DAPnm|Ig2tmW|cd>xKh`$gmhSc!KBi0tiG?iI1p$6Qe zx{4X|!8I7XtqI4GRO1A&sQkKO1aq9*Sc|?@NNv9f_w8wIe#62|vDL?Ti{L)Fv=EUc zpodF4^+k^=#2O5@++7ZeP1s3VA-;+DGl6e}7c*vHo&cjq-yG|w*&wO5<0K5%YuvqM z#dC@m8s{bWcukNO>Uq^{*J++V&#POl8y!Ag8{~BqbGs<N;miDn*8I`#h86j+>xw=E zKY>i(iYyB2k((UxUz@WACHcDh`gYuayRl<5k4FvbtkTOHcU15wQdK!Sww(eGcO6_F zXkGPb-S>?M9YD%{J0vWMCc7w_SomS^IQ&9YXX*}EPgmUeUE}PT3;OaGyqtf&Vs^OV zu9j84io07J3m(j`ulTt)P<NouQ!&TuUa&a7zACS7@3Btxf*L<E<=oe=tAAS!DMGnU z!AZ^`fkjWj8K9^{thO49o3e@T0cJ4zGNTTt%Ogck!RR41Z>0FLqNnfx9WE58GCtUt ztlSlc|Cn;$K<J=};4&yU{`-H2PD})-Wi7MCl@%BJ7djr?*mK&fEqdO@MpNQaWdCo| z-%p49=78qV3x3A@;fiRT1%sEO!&;k;K_14Xa(w$747^#m2GPA`S0sH?r8RbFx?}t8 zyBQSA547rpv<$<l6=+D(;jE1VvLTGy(y!KmBn_3tKK=H{KL=&8ZG&^qBitc0rF?@Z znjTk{p}?269JOgxaK<GD!G=D@?>;oeybLbHTR8}wz|Kg_N7nHhVS9Re?Q~DfnQC6O zwor7{7$;Zrd`)(V%&Tj9Z-$b>(Zd_*q49=lUR}iJJef_J%4xHv=soDjI0Z8}qhh3t zT3n}0L~e%ZjPi>|4(m~?28_ywN%bFDN71DFTW27tnkJ2@F;=iCOEG%QTem>osWBF^ z`7A!nC(LWj#eDYvF&}6&(Qv;N>mWG0n2eJ3NYQ(ysDz@du8Y1WI455X=RbdYWaA*5 zr%N37bNur-{(*euIM-emcg&0S2^Ro#P$MyJLAf85v>{v}PzvR=Cqpm*n$`UVC%||b z=?jOR)`cb}GF4Hi=CbFfW-lqP%ry!>=ZX&PO#7|V|Erns+m~}q(>UzZ=KtfQClhSg z{<=7`7GjZ%0!j$MEBNd=F_sAjg}?5q`S!>=eNc=0f1e6)iO29>^o?vl0(-=uT*1lb zzy%A{U9-L|{PmHZJ~0-=55_qk&!M)p59S`8_xb<02F{`hc&HY`Iq=UF!iU)Jal}9^ z)Xo7_?@cJq@)*CRd9`nJR>Q9JPJ!Z7VQ<q^K-cq?PHxd2NMP|BXwgOmIa-jG%<8$I z8yowRY;@X|cksDd<H|9PbiqR98f3qn<g)0-$tk$Q{JxMWf!_*hL$W0JJYkaopZcOJ z)+n?5FLwS5Xzw^*>(kG<Vy@JWRb3;$MGQk!a3i@Hx$#dP1+536_iB(B;W?o`t)FV+ z`4fhQH!{L}tdoxm%IfAjPU{_$uAQm-V){2(j?=*fpS6N#onCip%`GLAG&a>{chn?n z&%K+_dpO=P7gpwlz!V4#l!iGPNa59r2-$-0bR+(7F>aBy5{3v(lv|L#LLxISRWcJb zA2dG*HWPXr(N0LXk$dBqr6Vd+SnrFj8Rd5>+Ix8_ksIOB?J_RtQ-ygj$|RD>^<-Z; z9E*=&C#ZH|*7Wqq^26fq4iBR{z(ZG+o5X&rT$G+Uk1F)c!y`He6s@$v({H<yc_r|} zCcPXaip4B+pfIuUjqI6W%+<m?QFLHgTe<}nI5|79RLW=veE~^_#@Qsk6!B+Z-X_Ei z%Nj?cslB-uc0_h<Kd0x=di40YB?GOU#Fs$T6`u&>$xMc{jyVe7RPiK#E$KI%Y7#xl zt=86{>2*8eCdf`9W`<tm5g#q4IMnC3v|`R15H&OPl>ag%YpN@L(i7L^O%XHq>who( z5b71ISR0(XD5s7E+^%h+ns&f9g+5#H5s~qbW}(C!hBCuLcVQ}x7OISs7oe^<d7YDV z8okr1bMi4xtKMnQIvrZ4L2x?oe7MYya9W4U))CSv*v{CECNq|j=1ln4cwg}UhhB3e z6yYId_VP-y3F$RsaK3~O4KMXkoiz7M8fUR!J>81~q-3BnKVS=X1g`p+VCp7!-CzC% zcOASx)taJgBi}6%4KbE$YmE27bPRLEnw#d-Z@6{M&Z@f4`W7s>FmET1&_ucWa&_i2 zu+!x{sjb%jp|VM+)u;O})Mrnw{RTE{RBD1F1Px&^k9_Yl5PZu1ASB=x>+y_5Ex@3R zEmxQRp&X=)D|jXZv?Sv!Xqzd{bhaF<rJ&`Chj~*7f1`RlJNs3eXj|2wTTl4yF^cuO zp64Ne)t67JH}Gb;zB04U7?kh*lM)P6f_QQ=Ah)RcO~{BNH+IBir&Tn;jA+YAi;?{g z<fK7+yyhI>AuSHo7$JX?DnN8Mp}G_T2!<e}h@vnWjulbJ11H^&!vudKE4u9eF+Drp zT^m~KG{flx<fXo3KxBFsxK33Zm~B~rsm>ll#94b~V7V=ms&=CWDo&H*W@a+F<epA` z1Jprypcl3WF%DF~nROHD_z|-Kqk(h!-M|owB=cXz!B)P<ZTw72WVC4Vnzr#Co+4S8 zGHdlgD+cqmPs2%@WuGgPfQ0}<91_;bqH1CNCi@uUkGBU097IZd-~O+`cvxIbln!Bm z)^a)*nOF1*#ek1mJRlr$R1V7feofjPq49||h)aVJe~(@<ELg4;(z)5Y*QBL|#_Ng< zIcd4w5X$_uIcei%|9v@Wx6-+o`5}Br8bLQmK7o7^X;^5Gu$X?wB*1dS@Jc%NlXnHO z4{JhU=rJHZ9&-?Ph2Gr^ol?3CBd9FD!wy#gId?XT!CYzzU`uwM-5Vk&rhTCsW5K-l zIFO6e9mh@CJ}E8M=C7WVrkV2aq_*p>T;C@f7%>A??UymEKLpGmqac;cM$2<uzy12i zM+8GfjvSWF=EbCq7mg^(BtS`xdNi`VSgIZh$H!t#2cPDbO^C%A@0w+-)iw>|g8u4I z%CMmS-cX8ec5Em`XaY_654d$*y)NmkfES^gkP%5-qh4WMQ@=j){@~f>4X*32|7Bf8 zL)Qh*DIXdS=^$s%ZD_4kPADHd*deBd#$N@WXRlrd2TbuIE`cosIEHoH@b!@o2iF0) zt5FIl`tznESLwb{U3~eMp%b!CU4%+S7XRgyOIPP*Sgfjohc|evL}hpnHF=KG%4TI> zl1S%_jO%{2UfIJi+QTFxQjn-t2*RW9U(+_qi_mW+c!A*%0gP%OvO6L@eD(7CE*$x! zFMk)wpoCgeo4&s_ecAW7Qr*7mbJ$tSY7G3xbjb?-wFPC5j(pcww04azJ)%|}xzOkH zr%^~YkC1GQ*8nu8K<u+PRn$dp*>XCD%fa(hu<lXb{df)*-du}y`KjWPG$#=F7zK8= zzJCFA3jf&`UBlfpZzCtoK7u&;;#zBZB@92Ee7$x~<tNwr)GCvArDTN=TeshzQ)n<P zUS{FD=W?dPWd^=`9w*$x<?ULA=;XOv-hrG#9)hdK|3~_64i{GQ;#$w43s5$fz05bw z<|0A$ve|q$qH1SxobFS;dnP>nBXUr<4Kk*I7p8L_ef&<;Uw1$!Z`hCkQ>>V@+gjW~ zwJCO4jh`h$z$-9rnB+@<mw<?A-X_-hN^npK(N0uVdjusA=o!S=DV(h4kHl^mwXJ>F zVb$r}<j$Do?pDV;R@i?|SiSC>hqX9ra!r9zfv(mI?XgGx(syP)s^9AIwdpK^7#)zT zd-i}^#K>|19cU_^*HolM4tyex5@TO|eyJZZ8Y?0PKF3GX+U8i(rgmL8_ou-(E-ZIP z+#2Y}UN?1(Nkz?w1J<1_NmTe0;*0;Cr6_$*r7MWFAq#UDv{ZVC;^&x0KCVK|C8I$n zALmg(#OM*sx=3=WB^hZlllN-!dtOBZA%4f6;t?VU_YyNCnhvY3zsV1)%?Wi-pHSKM zDbOjnUM0hqh{DS#402dwx*fko9W2@ZM^q|%IyR?;7hXj2aMO0wcK}WT7wX>m8{vZ4 z8cgIyTalwAU9-1Vmz(QD1)?46SFW-a@`V{bH`z{F97P9i=9jf5n0XRIA;|p%!wUzn z6vqUAJ8Jxuv^roPh~tVTwm5dS@lAJgp@|l8+c<oDiVKa63m&{ECWf}%Exd%tjMaE7 zG;n!K>A#P0;?Z$XJ+^aAE{>c1Io>Ys#M>!Fix%PIXs&4WxU|_t)95$PGhS-(&%ul3 ztGRJ|5EP6aT5kN=-O35;h(#+dX!G8fre`TzZ#@$8D)wqx9c&vG{~yPt(r-chiOY2_ z#}>Hk@x1WFkRRixg$R$nm06Dr?be9Vc;dHsxHq=Ho`kLF`R--PZ1TDCN1|gq45cMd zvX^yuMHsCT9O|_qj#3GwU0jb)T3vmWda-t|2BEnATu4k>NKA{>9*O#GB51!pCzYIM z^sE!V`5K?lOr~d@9ikEyp*RMnVG~LU)ixWF?x>;*T!FHm!}8?vndSHN@5g=Reu&w< zRep!E(C%6I60ZR=m>+0`;%Gt@TDDtZ$hy;FRa=DF7OTc0+-0$9EyCRvt6&l4SgbmW zG0%cqYlYdXknhwp_>5gnpoR6*L9tl9xLJ_v;Il+SRuIXs+6lbiX?)nBauP|!g!*3Y z?k)t}ALNB`cr}Vs$@raFi%#$s3f)2o7yd@{mWE)28CYEb8)`d@W_#So3+Dga<H>Rp z9=fRCA4(2|wKO}ePL}s}4<GnBDy6fhQDiahvX&<ee97Q}Kofx1Hsun2C(HQ%X0nF? z=OMffVpVkLEmWkn8=mC<+;>z)a@ReJTo$_^{qQCXu+UP{v-}t~DqLu-@0<-CyTkg< zIxlojR4*C>tuH&b5dN+eGoS{I%91Ww&|+?Bp%B>gGP7ZtOuc>ze?`?%bVyf9)maQ9 zM~&?!;2;UeIg&{=9smpcbCu&+-1XWR>ExTm5TLVZe!43Vj|G^?P5bYU35`=?EQDOn zSQU#fPW-P383+$~&`dnMuF@`4^F?CX-q<<2R)=jx^}W1j(nFp}fAH|d_s2DK<OglV zXMg8K+_Mgh5-@~ssr3lNE@yn6*W*k^#g?$&%xH%Za186dFsqv%mF1&w5(p5Y5v|{; z0ZRkP2L(G<bSHiU1zzfWwh(ot!6RVltHy@Aa=top2!-Qe{q48+ZK6FQ7cGVM=+zcH z_a=xMqzTlLMr#oAz?<HntgzMN_S_Cj9AuNCjceL6t-oJ~+C4556K0W~B#_%R5p}UG za|4FwaW<I0;IU_2T6Cv{e;r*$@RKgxSFppeAM`t}0pEh}pTXQ_wfo^WA?6h?w$7P{ zxm`r)heWUBBYGt+J1r3$+jH<alu@+sO=Fm-1~~(4Am-nd)d+&PvvOAqlGTbng}}bj zn+^%4(Ya2x!lMOmx7mZ5K=7lNRk?&(zzSyxM8_!>su7a}l<m~a{=7Sh^TnK}DvwT| zw&<acrp`)tqCoN2&|)38t_xaum?+V82ZJpLk)s}_QJ}XoYcn?ZzlVJf;P2N@XwNT4 z_dMxMY#7@fvS-)>;$aV%z&8!qvy43_=8PTOGZIi`y|U*jWzSP$2KSu&pL@RZe=m;q z?9qQk`D;!94|{eE?wQ9>|4;Vp_#@l1)*U-^&xP!q2losWa}QL^5zsScA0<|mp&T+w zM`FKct8MB#EBEQ(6`7I+>&4X4bQ>&C?>yJ3v%_I#%k%*C<dP~lT=jH@*pIsCp?~BT zrdx1^UqP%zx}cRWIQ-mRIRB8S2xUzV5<o{7Z7d_yQc)wI28b|FBUs{$(zDq^&u~pH zyEjq=?a9kKj{g;xrkEukc4}%_Ekq{OkAOsslax>sOb_vhWa0<bw9WSN0q;w!E=t6I zgGdREsI^vsFB?{lZ9vS6rAlQ<&9+pjEvY%EMQKURqFTABnW&yz@XT|}IjVH0$MwE~ zS1`Tvg=bvQ3D~{Ey~n*9eIBvOEG(V~+uv#JDiszkh5lN%;yDs&vq91db&+86tC0pv zM)s?l(j)F<;Or{HGq}9ytyki6Q~xWUltgOO&APi{B2x0Q31k~D<eMy<aj^)q2=u9Y zLMd^w|6UTBWDb=CiP-5rX+B_%A>w44a$6I^MYvuR{(IVEEyf|hF@@O08)!b5`P8R_ zn_%%nU12$Z8G5^lKRXQ)hv)!$E}fSBo#LJ_>~Hkji0&hg`Eh)+Ck(-mf@WwA=KD}M z-jt_6MTqY}NG0Kh*#H3}spgqNxCj_&lw}e$yH5T4s(1})&R+qd;udRqtKSs^F|qE= zr!9~?OMGlFS+S2irlV~85ylQ3xmv04)7bj*QRE!?!4g!j7HewKZmiapWZ#qrQWGqT zbLk3W*va5raCAVgg52kb)LJtBiDg`K&h$+a;B!ABse>C-RH$yuauw=AkW5;QsBZNd zv>K9=_j^_3d_x^161*9^B0BEg@HFA0AQk)-$ardO0<dxd_&BT1`7}@Tl<8<?h}q0e z6U$XF7|hR6A|-M2absHY#1yR5Qx@wICXA0#@4>b91(mg4W@{aox6w=UA{Y)=2UFrG z6kpN#&q60gH=YlYyba!52;RJQMG&ml-!Q79p(9~JN3q>n(E)iy9JPMK#ewl03u!z> zY$-9lMq316Cy9oFzkfzX$zULVLOfQx`o_E(QJxojz5DCKU|cTkoN9k9nTa5}AaUX? zqU(;{AhoUN)W8blI(|LXFJ!i2$DRLcj@SRk94G(x9J`0i@%7*w1vWN^8ejpD$2Jgi z@$#MlOt}#j5vT#(G;X09O%`2{xM}Tx5U>Tf@f?FUa&TDTYpT9J03-JpHnz~X<1o$| z!#Dhz_$DP;JuOfzvUeFu-U!HT=Y{K8M=s!HNsasy`M4Ujf6i6|R5_H6faQVIxxGP# zqfQr+vRNGk184?8%N!H9YY!`$sN}feI3lu=VlWnc+NywyYK&a4D2Qk(Gi2A<%nK0{ z_*ws3;$w7%{V!zzcOl8Lmni<~zMxHp-;d&UAXzEq!|Uk<P%F@?M$Ub1E%0HnApPzz z8D?FSM-4>eA>lt3`+MxxV62KGvlw=}Y&+jHk%RKHYI-oNE^3eQ9p!sduREQZ?hBT; ztwtPG(1!mc_=2VQkK_wF+E%0PT5EwXH}8C~Xt@<qqj>QvI9bpL)_QgiZmFjPg*u|- z0!L7Aa}d$M6the8hHRbjO3dyxumJ`PSL|6v8paHf5&{u)MLSlPth#}L2}<*9wCy(Q z0)p~J#Ggb7ghSwzH2^1d3Bl>QAX3^hi1M3xXgX}_A#ifz{u7*Bxc`SCSKuC?FiNLp zv<i^YA}^hlLWv)QlQ5O*h7(g=;)n^>jHWm)Ut$uO9mc@-1ZOyl2#3rR!&SZ;6FI8# zh^v+-RGMS(WeA-HP`6YHzjkZHO-&dNNXW#IOYQ))!{Qow^5v7C7b1$qtS&@lHBh&b z-4fPKK!XbWK{o}Zwrg3rl>-&6Qt-8V5lg-o#a1@W_p0#9<g<uP$6H9tpz9EYH(rh4 zZ_sqe*dPx&6w8ohnP9dLWYgx4anD^F2=A6rEZz^fINy}VFb^${u8*}<aC^3mLMzhs z6aHaQ7oq7)p_YPU8)vNztlw=$F=+Ne^b9hGz7z2abH_zrD)>u)sP$}!xyo$>-38F4 zV?FNjwF+vo3JXAslHZeblbx1qyeQD6kKV=695R;hzq;oGumHhI0T%&b(Y3wLC3R}v zJx<#}@tvHshY-g1husL{gUtp#R&htM2TLOM>A|I|m|;uis*_c=D&Ce1?v1EMG+b8j z19w&zSg@Pj*}R@!e-e!;)16HO@$~?&Cd{xP!#P<ctq72Wkqk8t{hHN~Gk}+D1<_az zcLL#*QmCQC;y1C8LSyd`Qwo-RO2oLmpBPWfn=8sQV{de<>H$Gx<g8YJa1ILNnS2T7 zCQvO~BFXm$21v3q%Q#3c9p5}fb1~*UWUg||_46y|8k={YD6fgllYZMnEP6EL7Z?1! zq-}U?X!8hs2d+ue0u<#S%im$u(Hh~7_lL|ez*|bdTPCq726#(;UM;9e>}cuko?<U} z3u3;bQWXYQ5K@{L9iME4Z2U&9;B^|mR$Vu>he)f-y5KjsgJ!BmdcT_0h(uwYff|uN z;hJQi0&0-B%>iW3{qUW*9{L6f?y8(wo=zTF{95uX;8aMiajDI^e)bl<6AE*I-=0W^ zFpBJafq(B(G~FSk4sED#I>Sy?PmduD`8rS|rl*+&B<G>hAr8G$-5pB=?DQ^$)YHrT zSVL3{mJ%7+bC>;imtfkDB~koO>H!-<(KP9ir#dwrnR8}D{TC!2y{qZp^Vl*XdMH|f z>p^@6=Dee7%W)p3C9A(!%S#^vTEIozblQ&=trXN>Hh)!ciU>aLol+}_I0NP_n9t6V z$go^udYvsd^wZyn2FI~8iku+wGgr*bD<izT+x@0r`uq@1#4CV*z_r}YqeS1qd&S!z zuxvt4)mn7yEvn9bnyg3y!CDcb2aa2jFKr@8m1bndr66Q&ucmk(?P8EGm(iNM0<J*a zn}^UKfn>0mQ5g*U-?#+bK%=7K&rksm9YFl36WAh%&y#n5GH7Y@o)#gjE%J?S!5PJH zjrmVa7>80)Od2DY^^1<IdKC5E9!XicLu7-3%>M?LnSjfmqHsaa1jtWMl;)L_{B*N> z{UNU!D~9}p<<<h<020*Qb1(G=?M~Lq>n)A<W15`A?BM!Tw)MkAi>ahM&O&<p5cXZ5 zeTwvn8ovUok^w!wRx~s|FmNc#R#fNNa$={UPKz|(fAU2a-!8zE;3~s$<W0l|n^(Aa zNFiB!2>oGjjMhYIewQXs8=Rc}WaW_1pF4UAHmyUHMRjq;YOD)!Cm*&knzHJbhp@7h zPx^r>g-}L(NV<ZFVZSKD!#VEv;>gBHY<Z!;vRE~pW}banY>lk`nUU}Fs2!E<mu2;| zAHwJf4e~TtD+wY7*^=$f#zKFm072Kh4j`&8nPyQtjrUxNDv#nzIG$_H$#^DTl&&X& zfE%=zRp9Zel;)R!p<{=#Rt2B?<zAvq=~2){<=z3>H15#<q)kcDS-zw*qW%bw51yg% zT|(XHLpW>@5}2-WrU>c=n5k%3)u0-4Kg-EL*r9{>*O*7w3g9qE;?l6ZD@AoF)b3S! zzZ-xrY7~xQ8!>Cc>RT8?qqsMsAe&-qVWJ-pG^2!z{Y*xgv*@`I9YL-Pe+Xe`>6uis zyuOVQ0ur2ASgl_A`zIkM-<{4Cy#FlZ%wB|+Agwj-6aqag8qol$0xp3tUs*Y-&y*s+ zes5@3vX?wqREv{UTNRxrCkS8nL3fNk#aS6UeiSXh{^Er!+N1yrLLGa<b<i)hMILi= zr-p79#TLV^NyX|cgSRb!UQ)mM39|(Nu+q_kL<2MYg}hYKhAU6>1CYH7R%R9zy!n$* zuU$UMd-#85rx+UdwFS;mFDdJnURT$beV8Md;omgBVEwa1>C6CW(Du)oG{hyL-Nhiz z3n~tE|BrmHkQ}Z6NfdPdwjV6EF9hHqsP?KoY91cWM!7BUz)rMc_JbDZNBk0MU+cL% zv!?=1sD>4#Hpt<qfUfcIrJf3{S6+@-l`>C-;H_Rh!D}!(m*>j!wUXyqb__)CZ6$mY z8Z|!I78vzC9A$}L!clgr-%$oWcBiryg2l=xEO3ro8;}evK~W8}J5oeskL!&qgzWhR zXpGCqVQB0v-N~FZ@7Z20`JCZ0e57ciNyKuQV?y3$io^UQuSs`5OV=k_W-A@P!E+r# zAnMwpd<C519z5*&{EH(e$rpNsoHqX;ZVcsbz1IppWd@_^UsqbfrX{o%64P!>M^=Zz zm`N)(G!|o0rQ^s8Skn+&9_@9;K}GPxxxd~zbgwmOKOJI$%1b22>J85_;}g8<WPD;+ zl|lWlm3@MdGq%fAA3E29t*w~Clfg+v2LV83BFuqx<8?*PPWdEs0x3j+uXZq_((H#& zPaE``Y~V0)I}%`sRmuUl)DcuiGo(4Q;1!G6t7$-|1ypLLr<RPUqihHtarkI%IScp( zstJ(ZA6t`lhxFq!t5Od_!SM1c*AO2Kj^>DwE)4sdFfDP?a3X-ZDx&6l)oSPpUoh(o z2ztMDhOHl4{T0TH@^Wbr&E=xHTgt6*`WMV>t9GKEzE)fJ;WHrKULAs;nYri|GVNoo zm#Y@*>fhD{b5cPA_Qsx_UoUeFH3?Lb#S~l@^J;fG+4@=P2)qDj#Z3xS!62}iBRYDI z=nn0FX4UC8aE-9DQYIk)Lm;~J@9Z-#-wrneRraN4bbf15fvX)_pbkPgdZ_P8j3lah z6S;~G@!BDKD^~VK9IXT!0nAMY9GjjA6<*W0@#BzdBxoj-09gzl`XQ*+Y}rEo8!Bps zLk>JaUNHz6b9SUNiOiM=RnAt$+0?wPg14#FwhFaPP1hKoYcfX!6H$@%MZg|wh|7BT zG+0nnYg9IheRksZn8dlB)5t2Y*f@_(mEZ7ne&KICHr`?btKc?4zuJj^5+R%x;h#zP z2mB*{!3B5Q8w(1p<5e&&O(<{COir+?kSH^Cp>^>yhvV8c@5e!xKAn40t3*Q7aPHr# z*7gzbaeiL_Ju;5_t|0HyVa@#`TBM!uJ8p!pvH&%vkdFM#iV=u!5kBFJpWTu@e@^*% z_&UkQ+3jJj$}c%8IKh`+;JQDjz|S_msR}QTDzY!bZwfj1IPvIhu1Jml3LCic(~uke z58#jTUVQi!eY=Y*`U;-VruR6QAQ72H4$UXxExfwsx!6KbcF0kg<#AlW&szsWMc+Gn zWN)AF*1*rx5XlCg>l23P3pofD#KzRrm9M}t<i*2hk8J7d-cKaNf>?hfMoliZDRU<A zO%cw<tKn2ZWdAE@wZ`KowwRCbt8tIVT6hgAxUA;OcXMVD8m<xxvtuBRbF$UL^G^RC zXQDOB7AOvC(+qs<?&SUtV{Zc&Rhj*P-?=k$XMmeAfQW!Kb9oyO4aQ0{wwMucG`5vV z4PE`MOoC|b@29iw`m(kQW5KAXFunn4zdKi1kfdO=GSq_6$V_*Y-pqUfk|ML#HM6pG z{@-(FP;>Y9|Nr;1*xWmJo_o%D&U2pgoY%s;;q60WJ<5<GsUD*|@MO&RLeBHet8zgR zSemI^FODv(st{>!*iy^V$ig7&^-8Gr!b~+){!Rqfk*qiC-!*dM?;oe+vTosE58x2Z zR@C4o#k;~UxsEZ?yK%lep!qSg&VU~qRj7B`t?~|!kcLA|MtF;S6V*7$1)eOspb$=s zBO4r__^Q_ML#7Z?Sk+gkgJoz^A<VOPb5s=p4}k_0%gX)nHd+Sf52daChu}yCZ~UGy z-N$&muj1&_Ee^R{gv=$mF2wEl7XK=gXYJVa!uYDEn~QCI!UUBtK^+KeCZvDJwCap^ z)9fk*!P27fDs2_U+um!rIfn%d&EX$t4j;!yRr;8*8(G9uWd5VpdN+K`DC?#f_Xn7? zz#^TKE}j_W=W=cv=q4fa9wh`&q$ZNB$O0h`0A2DeyJ1!#x*#5K(&M+2D)<=@cKAL( zp55u>^Fw9ZTN8DYK#1BS0{wx7F@79P6I|D5QVpKP@qwJZkby9;u&QJU0j|)gnk<l| z(aSj_*ZIdI6h5&7rV$K}{4`4d`;Ctg>Q9W_I3a*{)WezXS}S)a()`5}|GI%~G;{Uf zm)HtS2~;Y<%PKon7f)OuJ2FY735fH7Pom)J7Q_|7rG~&Fl9X~U3M%|L0fmV}+#)+= zPE=S4+IC)jP`l_`|D1VcZjP~UN1d2(UXy$^gr8{t=msA%XX(l*4XSvKcZn4nB(Xzm z2<IP6zA(fqcJO(x$8vl!A16M&^0L783CbzmiM)D-;eeWId^(FFyNjZJRD7v(o3-wu z@V=sm%SAeynQyqS57l5V8+3h!h#BQbNu<)BZu4C~7Ja$MVb<FULTm-0HgjUqs6K}| z$!;F)hzPTr@3Ti}1vbi#ZVKk{_U#>p`?k%Qmtil6FJ-$8QBFgoJ-NBtoY8HD(s@8l zRZ9z^ZDy0rJjQ0e-)4RQr_h@Q(R=y0W9l;snrFDn4e{G#CFs3d)ibk+hUH8~^_A*z z=7Q~89#UlYTq#s%jy`OKErHUeplgKG6?{qCPi;W~ziq(0HI0e{CpSJg0!Ei17>j=o z9#*5e=Vd)Eydtq6htLPx_NdDdnwd|`&|R7mMb%KQTzx=O^qGI=bUW<q+nFi93rCyH z@4_r1EXOw-=z%<O<)uHW;??}xg&%IPi5>L7*yR4ZF&q5E#-SQMMZ!bNS2ji1-dFCN z)+AiIoVc@C+8)(BX3ci2&RGQKCkCwIq?o=>x7%}3kIW~klZN%#a}7-qJh$`JCc!=} z(mpL}=i7XkbWqRFDjwR$&$8s+FC9$c!y2OcEV&PzG&piCj@$`9WZHA{F6ZW4&ds&w zPPFG*?YWao5u80D#566*w7nza!Hn){_jXUyo2Dh3*zmo&CWR^Y@nZdtX5ZEUvsEQG zi)k4Gd$<auyZBUQ{uZg>ZggJ>u_R_33!&OOa6Cr9Ktid}lUXu?4|-;>-<BVH2TDcR zbE0H~R^}{gF7qBl@AZbSdQXopZ{E5WX{5dlbWCv?jq>p$s1p^KXg$DrL3XXcYT)17 zpH{SOYa!P(6w7pWX!(uZQY`CZ+11Stdy~HIb+RyHICD9<h!E`32zvz=4OWO(1rH7W z80_aBvRmRDm|8xr+_2-Fz`5mWqn)L^r<CXf!<EK(&G8Z)6P?Y>^K|GL7rWy7Imnn= z5<X|19@lm|V+h$oS{=3wQV+?&q&58UJPv6U|IHZwu(cF@){yb_5I`+uch=ZH;-uvJ zaA9P{nXq4TXy%CR2RD8n%7?w@;ddqd*vm~o6h>@Z?cN$@cs5h-VPdkGW{+5>PkRZi z;>4ZdTTr~>A^03?e!JD3itRI0N*(Jg3j5K6arh8d+Yg>C*zVJqGI8;>BOM)!r|cK| zMlx-`Ywr2H<HUb8w|*1e@phTllhL}r?2BKivB7^aDy4JxW^Wkp=5@@z1g0+G^_^RN zd^kUxIhyd!OK60Jj4(LM@IUuseB4{@@K`OL(k>njYn$BM(bdsAsk!xNcyj~BY;S+( z5p{2q|DDl#DU5G>aWksx`@(b>r!k$aIN|q(h2sscH-}-F@uAXVJbC*N0H<LH%{oHU zJ&_sdN_Mf_oBlW<*&Tk|se7-c?9$@2WxSSq1NH0d(tpo+s;q^3uk9FH{7&!w*kkN_ zZBi$jbgY*S8(%D3s&~NMJ<MTNEQ;LPRK8S$fCWd26MAsqM-4}M4KHk#5?;hKpv(k? z3}N!bBYFh)P#n6NY5QX%c)%2<O^LkM@Q22D_3<$}Ot_V0BD0wXJS)D-cpxKtOgL^m z#1gM2u9RgD_{k9Q4k@^Q(k(X`zI}lYb5X*goO_7GX=M3e`=N77`JXqpsA{PgKVqOl zV6A_;M)i)Xpm87D6{={v=x=Qnn?glm6xouH3PTyrwePbizck^ZZNhayIE2%_B<&Zs zm*I5l6VdRBE&j0AuKZ$Gg<aVXr~iYp)Bk-Oxe#!L*HRQKowBGtCfOV+zJ+#ys~;<V zLeOV$?9cEzqlNq4Uy9$@lV43AnVy98W1H{@J$kz9JOf6?v-V`stL%pw!!Z>X{5AlF zZg*ePAZh?OPV1@OEt_DocsXAZA+@mFi)G^}Z@p_FV;2Rla=LxOBhx<}gCE<}SE6&r zz{KZSxf{xwPt<gaeoO<77_&p|gMN#oS9$}O%&I7oA@Aop@!veyNaZoUHnLTl<gg$Z zrKoBls(9{YmTEn}-!0du<WF~tF<^r9lweRD0Yg;*RHc#g)9lJz`($-#!u;{2W5!LG zKl!1Vva_k{ugEI#%no1^?42WH1CkLwyb^=Jg8-e8Yxd)1w!q8c^Wk~<_jk=yI+O^l zfJ02Rly#)c!Xx$xPa+f%Kuvgr4{^M&1pm90S*L%jB_EfZ|1@0Ykz3byfn%HowflXP ze3-U>flKRo0IgBc8>-GMzxFm0M-W9gHt^cXa2W>tBeiDxq-ioSN$scRQ|P)oaY#ie zAu9xs<>5D>bgx@;7sQpEB)5%)fK3#ahRsX%nT`N&p+_BZ5E%RW6tb9CSBgXq@DfFK zao`^C)knCD2it-WxMfmai{20sm|Cw_6!1>up4mYp?%Gz(QvAS?BHx$mO6FZdMU)AT z2Y^?Pdmm4aBTC7pDIKl?b_A$|72{<td8cA5!#^M7;OlwWe#Q<)8}P!fB(EHq*Emc7 zxb63$V2yy6tk^}|hKOPEH|7a=NqU+op+8$LRajvF%MtJ7Zb(lG4&92}#6qp7+bbV8 zRu$Bl(=Q^n1qGgxY+!zHIV!l8*dmi*R-dV~MW%pdY%^I~WRfW|(FT&vRD+eUFl)`O zg5}G`X$lb~NmWr>RM5inD7BSpe}(&lsGAZ3*a~Drl#7$zJl~QWy7YF?&Qr9BEH_39 zl84|47)*}#HJ*%fcC&nlBzWA`^Hr;*BiRR(`F#J<UNlm9;fKIbgLNU!ydB8tvZ@@? z(dCQdyzx9#*`z=93Y6;<Oxl>Z3A>%#TQR?4UhMsi59*@RqMfiOp$G)qHHG1jvz*^G zFZRD0AJpW(HZL~1>oJ_cP>Lx;5Q|e{GdL@D0^yFF4FUN%s%$&kKX1$3=r~~c-0&i- zT!L_c8_yVCs7Gc{Ku|rOAIHz?R`qix1}QyGq)c=DDKRV}5}n+Dp{BlD+O_Mjkv;W+ z^Uw+@(X&eNiB1qkd!?<2`RS9+T^5}nK>MB}hc2AIM#cv?@STaGTVReKDifr0`oywT zig$HRRw1!Siet-MI?<(P&gdj*s~01{_K}*@yrX?j*%|!>RP|kfAtY&6Jm0(n9S3Lk zjtb>xoxWiHpL!qHzZAzlG(yOa!`ip1T5wX@1LX;kFBc8->bq6hHxa_pkTr`=oCYu+ z2RUc>9X$aK#~~6Z-^^Ub*#U}@`44Yr44AVY7fnS`i0-tYn1%%BrE1C(WtIuqUY{bK zZ&CLZ4Q-g&yXe!6k|D~dnRS0abJ-R;O4DZ;IuQng`Ap;eqbYHPLS@FYU1~-2WOJUM z$)9O{w7y%J-7{x#V;$So%H+FK>ez~UChrGk*5Zk=FdFi+axg+y5;M!*g#b2pO6+i& z;o)q>KN&u?>s!WfpFDflsAi4@aS6(7o2uWCTHmv9@yDBT?W)gyzG{=s&3pot|Ga9Z zi7l(swbtpqYUG!P+R{wSJ`j9Y^*(*`cC4#H)Yj^^C9Q1H<cHys*y1f%XRS!dvm`#B z4<#COrMsO#6$H$CpM;8}%yx7AW}e<jd8;E)#JSI%An_x}W7guSZVvZ}<!-S|e0QbK zoNea@c1<r;wV*0xs6BZ!NiY>+wCu^LQiA7z;+UF3v_8v2oIZ9&6=Jc_RktreY*DxG z#<PIdEA0mxY;WJ)kkz{lY%u*=M4<|?q5zzt2#SV!#cV<*aBl;+seL!Tz%8o^a9a{z zma)J`9LQ(=7SZPM7ZC|f;+1tPiO<cS)BzWw^8JjP>l0*LpgL~z=<5g<7&@wbgo^-N zP-v}1A%_i&21$&Biy-_5T#ST^Al$@-cxjg)?VtHXS^}}r0k+}3AU^6Q71+8vZDoE~ ziv|ew+=aTaeQ`?=LE*^ji+|8<7`o)ap|B%LRWN;E>gc_K@Nph2%-#eEap?F_L)Q&_ zZc!(7-Jmbu3QpNf$b_uGA^&;qxA2uh)$cc|KHfSG3F9psCY}b9i6h6o5fuf2sMx|` z2JodOKsm2C8CMlHvMHkMOg`leLf|++L{0ye5p0E-@gXR$3W12`>{`%Bj_(+aowk-} z<WBuJ8r2eo5CRgMZRC`M{BpiW1nCnB`e=gmLFZ?pk6kkWs_e?UgRx{`<gzD^Y*Ba< zJVy?mQD69sBaQ><`Xqdj*qtCYZ$F?u7INV;8VO!n76W0&@!a3WAHyv^EGrAVV^5H< zowe`gpP8RFJG3FLw^W5a(w;mEKlu-QmH%fD2Ln;8piFNLRKn^E(l>9k-;iC0Ye*iP zlCib|k|$(T$cRhZ&_f5d(P!m88&4cUay!B)t*oG73Va&^djk&FI1thaDgW{|bxQ1n zM$?GFU_3~e$C&6N5qT4sd`k)rE~A)=Y-|j3QexpV8ZwJbiH(_s^u8(F!(e*nkrxq^ zfc*q}I`#@|4>q<RBGC|2_wlB9(ua4HdEZe$A1>y50WDrTfY)+kNY`y4tg?RMXH`(& z1S%vTsj}VLex4;kkcQdYANP9mj(8pgDT}qei<EUPMXd&v2HdIgy4-^(%MiwjE`)(q zX$4xAM9Zv^U2tRHHXe?2Tk2<Hv;ZW{J60)*mA#8D)duqVU&bIV#ZnEJ)RD3Q!?)AG z)Eq`0F8^tHJ75ggH~g|jap#gRPBi=?w+)GHMU!`Aes@rmd)L}HtyO6f{bPqFWajRG z`{VdD9WykWDWt<|t#ZW=Q(PI<u5g4m<9dcNbLIv)ly<P3l{&Mlr}6!H-AK6z)|t&N zI9Q8SoSt72Il;+l<1bz{KKw$rB+Wf=SMv^j*C&ep?|NKFM%VJl9anEtcWl_OHv$EI zPAZOtz$~nVSxt*ATK~XGQ_czwsu_hW3D0}QEX;|Clh4_adPD3Es7C)ECoG0JiiYU0 zC19T`c;g_r47$gZ>7rE~R6kNSv?$^IKztlX`7E0}Gv?|7P4wijyd+EwxwYgT83L1M zWR|j?`K@#$XgR>~`FNa<#$w^0Y2Ra?9MV6~<5fMlHdIoL^;$W%YTP1cEou<gY9uSV zNX$Z#N(f4G*>k2lJ`T0AQc9{lagy~4j^3EHW7MgedjDXNsSCk<Fk2vXSKgeY92;3w zm2#>$hx4xC`3+W$@%B0${?AXKn>mTJp#8)A*MmSem>)Y0xE6im4z4IpP8FpkMR9F+ zN4Kj?0oUEw`zKV~jR?_Zucy6zPxB5eg@#XiP-GU8&FTg;LQa^KgHH<<T2d@vw~>SS z3|6qG5xeF2;QQkcOB0~Cc{b5IJ5NM1IJ5}cp}9U0<$aPq>REKejTB<Uk&|kP$mnG) znk_LyD<9&bmxhq}+KE&+Q>E#D5DN{W;TRxy5dg(8d5h9(Wn9dNCnh_%AgJWXl3kN; z-SCRz2^uxl`IE7sIQ&{J+brMOM1{@ruV7WWRd_lOG8u*0Br`iquGUb)s0~1nBtRhd zxao5$UvV34v34?34vKOQYt;7M;=W@oD6tlvf@2~M?d0XMZinXbRV~W?uAYMHTf9iJ zrFyc)t*xzemIh-32DLE|8?!6z=5^Lf1iupSj|KdZCd*}$<y(`eFx`S*o@)=)05dBO zih<f<i``c8&EBrEpF7uh@_(GDjTbZDNl+o%!I_gC&r6;9h66pd<%W}6oSq{_6w0fu zS^Zp{uGUj$sBJ@7r>D6-XOdZpQFvpNz8H0PjOKC-(-*_KV^o$Hj%kL;2lg2qlvzPQ z32c4OK7I93efF8bsGbKqnMG6F2w0;QwT4qZl(Ym}!_jU9ao^|!bMNh>xUOr+)WdA^ z#ztg&j$)u#K}SI$2Q4ZEaH)(fi~*>DN*wX(W9qnlt2&dsJ?;;b_DNwVv1^~?wtLza z%=LPj+xHv;ag$nmB<Y?5+%Yv|dhshgHR2ZU2Wao+eea$YMQKR!%RMv9HqVinQ)d*| zMCZ(@eM1%Qq0Hr|343b}drr1Bl{4SyY{_?5e<SNsgDVaEZeF`3!1B;5us;yLyE<h% zl$HWGoYCO>UZyD0o!V*T2<L4+S}RMb%^ocg3=w~2Hb=U$6}obGbi3`Qd@(EXCMwbw z(|7%hMSNyrET2AiB6gSYioB&DNNFb)frVoZD4~~IEZJ5BqfN$uk~AdlwPuOWFRt&g zcPq@rTc$4v@p4tu-$Tt%&#zv=@jm|9_$sV2H&+c|<(?ef?&Y89-_`?qtqpDWKHW^) zmaczmPp!&n&<#o|)W6EBLLK#PR${Z<*8485E>-#1Y<u!1uY_Nbq6r(jOb1zik~eBg z`WghOF#@-x%Hp<ObXzY4o;b~iaiQdh%Q~$tg!U6^OWK6NS~TrmZ~^7!Z4mM{4n9jR z8BV2urGh7%wSzdDt(;9l^YO_uZ9u#xZHw1)!4+cZR<z?-*`jcC>g{6loVjJdCaD^8 zysSWq#vr<#C!}bFU3_`L+{@97mp*zI%=JYx_GpFcBvYcB-)k3NTQIj94;Mvz@-Nqk zZhFSKzz!Dgi&m61>s`I>Xr|+^9t`g^+zs})1Xlk>e>q};+YkZ%$Kegay+vKv$>+zt z+ECuZb1*QoTjteAOH#xE4d&-4plYb-fwRJ(!x6`xv%#LTk^e1aBD7Y_`@iScf;14- zK+!)pPj`j5IAH7^#1{j?(NbIvW*^cl?KH#9f_1X9KoXmqcY0$PpZM~Tci%YSjc0uE z3cM9d_1#{d=sogocRb@dDa9&2`4<rG7GHCnz&Z3(-Gx3Ne0ez2J)CfM-@~|i`|eTT z$G{Lcx9-&w@<(--&fG%2>?mRG>Xc!K+so(oFY1|oDhwcREp=kLV*s;+G?l<~w|dLK zh>mXbiwJ`W<@I6Y!FH$yUf(hVbP}a9Z>QcT@=1$(9Nh}1W=mBmY69n6bmm-gszz@$ zf+urEyEr)|BAIN~rAK3(nrg46YWhCxn2e|VWhk`W;;{HC5C@zEtVx;mIwwc-&p?~~ zZ(@3|d_z3n|N9<9hhp!TMRJxECRV}!kaHgx6+XRgite#&uvln@p!=O}QF1f=R&)@g zRVO<$JgYZjGHS6Di1#oNV9kco9&qDK8?bPQ%`?nz6f9rdjUEfb6b|v_<%_+;7{@RL zrirQ4IYjUB#h;w;4O8HO+D{zfYs(j}>cxZ%W4iH7QG`Qu)}C1IAQl{^sBYHR_Ff*w zw7x;6gW7*#Ho$V1zQKe<fC(`t5WJvlZD)%*?hQV_VMY(HDX?!|g2(`9HZr}ZH)=uS zW(mOYN0a`m2P=D3r&Ig0TUEW)>Vg`EJd<SL0lET2zErH;;8j&ke~D_Qc}Bh*lq2*2 zM2R6>rYnRA|ID+YNi%|UZA5HDVNXC=3(&Q;Q^+C8PPz|vdq>U&2bg}U#qx-}&&iRw zm<7mEOZvkV3Yh2(kJng{U<9!_xc?qLf1>%ut^K!C*5f92LaL${ONuTn*B*w0iQ99k zej|#r#O<@^WVeK1et*+b)K<MM)P>=(8`kv#?D+TAs%v{^bBzxVlMA1BonWqxS4YQE zI!W@(bSl0Oe;FqUE`dpDXY<}>5KjPk{A(O4o=%B<I9;Ic{w$v#sE!J?5KvjwX+{~| zU#LXN&4d(Aj1)i3?FC-`O)bh&n7OEM4K}xu=!jAlD+BV>r-C4C-BU*L6dU7Uq>oG$ zulP)thgn#*SWsoH>MZzr(`jLx8mAVNBWTeE>KajaBx<Pu<#3Na^+a)Yk6VhU-{_D+ z>k5Pq6w4R8#pY$^dbe*lBMn!$#h2^dSmR#$=&g764QJfL6||SHLal_?>d~5;>5fns zPe9alH0vSfdJgL^C+hnW?=^OV_p0UH-KcKr6a<2t9O6MO=Jwf~^%J+4De`R+u=bOg z>NoUhiL^{oJ6H7<KiC7Nz_#6~hotg~FV~sp7i?pjrFJib6QogJEOR-Ifq3%9DUSF~ zeImp&?hz!zx<@Eny#(q$o$F+e3|v6{0B`_Ne^gJ<A$$wHKeS;6Y17d+h~sx0;2=}_ zNB5uuU}u2df!)iif^VYaw>VhP`nF=W0{sgDyh(c*9BNR&?CgMH{if+xLtJe42MVHe zi(*yhC%p}+JtuqZQmDIAzhEwKsVkUoZf<b~B=50RC!Dh6-F6qVUq@p17;rmP2ZBSs z)^=Ww$Fc`fz_YFsXw;sdePo~h5*G3qJuQ0~DOV@fKCL+56cQFhNM6GIh8`Eyh=*)# z(ad>`9&)jE&xHkZoyJHU3+WO^FsBi1i?R<OV!@7LNLt1YQw~=OKD&(-b-!T6_C0rS zqI_UL%vmz=GT9RIHwA2obR^^V@z2N-6mhc9MbU?LP6u>;8_O*GlW5fhYXkm$Jyv1T zpjwK|=*U3lf%}lP8b<L;2@K>z@{zFgC}=<xN%9(t^I|`PM2YOd>(Fe>FnZIHZI(i+ zuRzf{bUK16ZxfqmPAz2*sA*an!b!JFj%X?m=yIf8B*AQ+Q!NOeQc2!CgaBZfl?=N} zzJZWw;Dmk^z@!C%<cNF0btnp@S#ZYB84Z1vPVMrWlsJf)@4_;+s^Yxp@nqcyEkxGA zdkOCvp+lBQi0s1|#TrsjvwqNq5jb%{bb7HXk+XMpC`nL*uF(`3FqO_lE%)J|L&dKH zbl}q?AZxnv0<s26rG<;z7tc4aL<-1)g0D8FjG#V!<xAHeP*TAw>|~Q2of#Nj?p*bQ zdYM9sP@u)8Hv&P5>h1^)YA-n>RE`MJ+>QUl`Ux!Sn@T*aqYKaIX+wvkMr&iSd3EIh zEfxc;zs{oY{%hyvn+NF%g`eIeI-AsKiSzLq1>^=a=+X;&YnsYQi^dj33N&m`<yQ54 zMQM%G5I$d5>RDx;ZzyeR>YSgs_k<-e;&AWDfAORkTh+qEYD*#}31XeB+6+^IlI^lu z`6)IB=+?N9Iqn72!WxEYG&FA{ty&QFR}5h!tkckohK7wlmz0lLZ<{>Yp7S{Tf?yDP zP8Cff)xRS86Vu>V@~L`1=AcCxw-2}=SJuc9alr^09<RW?L0^W<*G0{5VSanI=)l_b zd4p9iZJtvzr;=NvMO|0ZFmSFs3Y<<#-2`V5<(0U~M}^kbv}luUqpsRRqP;_}n(oQd zVxReFUPNBXgH#~E#G=RyRKocFC*3SW4w<K5Ok>fA#2Q+^8Fi{@GXzb7$L(iitP$<h z4RhzvJTntuiJ}r>iHcN4FrqLEu>*C9fo$d=1>`&c>fnlJja*4=cmT~cI2h0qXa_1# z!yjP21~+h8!dXe)P{0U6GL!V_IfrJ`GPA?eynHd#>Y<9hp^SH^(l=DyJyhc!$~uRt z97AQsx(vp;$x;Cs2F3zcfw$y$k)K$A8RO{XKp55Y{F-1Fq5#gMZ=D6cFuTL1ILO*q z?I;m5Y9ru>c?79E_!)o?81K=_OzyuCoUiH0H|-C<dMjXmD7;m-4|U03TIU?Bl`7Y^ zQUz;U&5thSx^ztbwZ?IlS+SMvh{~D63ln3WK#wA3oXT_IC2~za3rp!yxb_5=g%X4g z>+P@lM6UnvIRm#*-t$TG0fLMnZv7p0xJ`YiV|IXY+X&PXFfdVUDEu#xZ=nWP_9U^C z;9RtF9i8#=vPtw{@=-8@3W6cqV$ielD<*pK-FXi%SyymEM1vs9M{GBj?Ns#_^lw1K z#m6!6SSuldP!azUic$~m&z%GpV(uAd3gdbGC1`ZrVhFN1fKNJh287$K4fW>qN-P$~ zIUiyaL-~jfX@iv0<F#rf)j41*K?hd#w7&+E7XM6(w&9I)YeSn*iifOQVT?sJ;N`Mw z6;)TPc)cZY{V|pwl|O`J?#&x#*sLKy2k;GQI)SDu*kA4*q}#D|ci6Wk_MJc>p_?|C za(SQWdNa7s<cT#8uA>^Lfz75cL^hwfQ74JIeyk0xH8(yG8UMoTFc`0a!B~Kt&HEh# zJwNNiCn01<GFjg}8LJK~I}{sqs<OM){fpciP@3xFS~{UPRar-4VETpmgx?l0pGd4K zD_zQ!iIsZ}QF(l<GZ*$?S4gY0Qp)WSa=!q5J+oh`GY66&U>8*P$`sT}>T~UTKuMdr zr$uYCYQQ~74d<-zJ(1rDlaBsa{~P!ev=`T+W|uW2e<W<iG=TsT>%a*h=WqD9_8!== zux2XaUx>eWhGdQqEJ;f9o%b6V`X6pSlb*H8kT(ei7QzJzvppx<Nw_$3d!4A#mwQeE zE-`k(r8Gozu5`+{z~${p11^xw9OIM`aZc7c2@zyH01^Hf+hon}LmO&=2f-i2<QMQ~ zeFgY|7l}6sL{?=1kwxP+G;ZSu!Mj)iUg=I0tIh=Ppq`<+KW_vh<@Pse;LDTJl2;k( z%x~yE$%HifI@D#THSg7(%tY-p36VIWO3KMbY$euBZm)%9ExG3e7Npa!B}58Q=wgCV zjh_w*Q@jP{H<i&RFG|`2G<Y9~iMH!2zNF21a1Sucwf0lrM2-yt0t=Oy%U?v@H@8w- zIXt0!>5Keh$Ln+ycJ%_8%nxf<{8YU!qhnuq^$TP&cb78dYuDakm;3Ql<H>tR3X=5S z%?$@wepml<=L)`aQ@+~)REG(5CXL6Uv?yg;chtRx-@VA^9?zj*qH!z}mCfWLm?%3p zBO`}`i6+UxL|EEB*h?W(7CF{Jthh8q*AKu5+>=YWbdwY<%E{QcFlxN3GBygmr=y$W zxDpCJgW+v1!#ypt1vU?vFU+NA<$>r6%s52CWA^Ok)&t1Kg)uW}`8ls@dfx|Z^q<wv zAy=adLtGk<)C`8_zy8ud@rDU_$=XnuRS_(_N|&_coJ)t82P+LESus<{`%+6{S#yI_ zsPOD{H-!$0kO71J@vBtC(>dfy^hu?YWlLhllDt|&!y`O7>okU@!{;7^0WO00Ilw*L z%vY__^)EbE)ZljMN;%Zm5BRI>sA}tRmqhDJso<VHxechCPLmH=w0A}!8Z{kL44Y%o z?gK7Gp=R};O0l(A>>nw;oDDyL072l(`=L@o3b^ek8VzwVAad{?nINK@Z<qu|Iy4ti zB;zJ{#WC0zq8D5*WKD;jk@NCelmRzwbnMTCtaNCxeA6qsFm&{VYXMkb{>>*vl#k?D zF<}E#Pa$WZ0@XHFuMG-9S%akb-%fS!iAq0gCqdSv{R8&sl?Oz*2ZSYo$^5qJ7Y1o< z=I>55KEdW?Fq!}52K`;i$2#Rykc5ZZKuR}y6%CZFqKZGf)oE6M;w{v!$fXPv>%k-V z(PLiBKIYyhYKv!{Gh)pkukaT%3Em6RL`Wc-$cAmA2`ke?DGbsC8)r5V05nnl8%+>w z3z~zPpa}&z^N}}c5?G9LjWUl1V=xtk3d4j0$Tdq63-(kQ*`?|!#R%G)U=!ovE}))I z_nxAjPve+H_qYo+SXoli$k`gqT}j$(qo&D*PoqM&o-!}riBu9Kp-8c+$@_fhGtpeu z(Xp}kv2%3hVazFOJuP2ZRc$+ZtW!JBQ7LDux(O}I)YkK|##*%+EFGb;&c!!IwOp*l z#!ih^bA{Yqgb`<WF15<#ND%gmRPsm#mC%~07>7V|iW4$*D@@9|{Rd6mtVubre}XBQ zL28jLA{N<22ris*w1Z0XQRw+EGmda-g3K~nkh>D(2wC?jcT{<PwaukH#>%TkLkyz@ znh2&lpyHpAjwt$nbuRN%O$+jg2NU0!InZ)u<17@^Nxs=1h}|Kbg!BC9j~{t;>I(BL zxH4R-fPW$XhsxMc8+0V&ld<#RJ3@IkC)dB?^Est@JK`umx0@Aq7DhI^nJs#&=76G< zb0$;j54=HOXlw>vaSo{E>BHWRijxKZsIo%($?9%lF){n3o<JU&n(?6i>wAdWyzJ*? zTYE+T&Z2QuB<Hw-gZlvz91N(r-=Zv3<0Z37E9<8oW2GHq_^|$O{BWu^H&F5pI>{90 zowKXIFx1!V%CoEcQMPHiT(;>$n^^(n5~)TM@fc7oJ1Z2Jd^%+ODC?vZuo0OXstP%4 zu>aLuJlJ_}5Kfrm@jAfS{{`wE(mr?WE_psk$Ey$06Q#35{|_QgfeDI0h8YrI@)5<K z`Gwri3=3=Ia}LQY@)-e!g6D3L%9g|tt!|tP)OSVxK7J1v8qNi2_3|wkmfeEk%QgRb zBJ(j51jA@PtoT#EQNRXSEE#@N0~%0-XYl=V|Ly%}&z<<3bToSZX!-pg2j9Q`*86Ad z59s5zM8^E?8Zg04R$5vaJBz}<*op-C^`r3m_x;F9<zYhKZ?}9#vqvt;v~!4!2~1^w z>Ny+xxxon7s&WP4%RI!9587~K&jc8(7y##y&?cNPXwu*PMyl?I^HJbT5mN(FTUoEV z-;#(#WROx;;)AhMG~WfOw~!6+<@R%^2N%S3lsw;ugY!M}7OwXMX<e|MD6O^*E*fB} z&Bq38;BclTsM5iphx|seYur4w$uei~TLJwc)eSzs&GH$s@eX3+q*$2_^5^2==L}z< zs5`OgTZC^2WBz$fAzq1tFEmG)NB?v#P(zt`G+myb13{P*Zo&MoeS>S>Tyz_MWSy*x zP0JdntbY`n_bnT^`Q2(Pd8^9DLgTCG<`CBF6^Da@gw_3+z}NkT&LCW}G7851Xw4mK ze9E~KJ%hBopWsT`6NHN)xQdvfN7rEapdR&+eLx3i@a&0$^~J$!M-K8au;}iUi;Dve zm;rK5+f@T@R#VmGe)k5BL$9TV^V%-N)rr@|x^VZq{_2Vi&YUxL7R@m2IcH0$VoM<Y zFl(S_Q*~wiP%F%3K^+|D6bP#Pkrj7gtLz`#D&uQut5ltB(KyX2r|Pstbp}<`%t|YV zt<#d|1PyTFp<iZEmt2e&)P!Y0XWqD`5ENqw9g>3_$&exEP8=dSz@`KuNIOP0Y!A`_ zzVu@(GQ9csilsr)+y_|=+LZsW8nmg^7OdQdg@xd8#Dy=<wSxJPZBD@==`&_)5u=iq zCeO(b@c)Z9IZft&LG}1)i{Z&?G7PYD{-!6B-Wr@pz(!y@C;QX>fto3pLsy8?NczIA zYj7*3G?A_s#y^7?ZIoaubq3O+OUiSr5s6x=4X9tx_$)uc41=2cTkSP7_Zij8msw%K zvA_TWwMb>d5sWd6lNp468quf$*@9SDbN(7K*#M0I@4j<(kT%keA@X{w2@>LC*a$!$ z^J_#0m#WB&>Ttv(bLP=LKvqyxBdA|U1m(ey>-<6@tRo3G*O?m?ojz3XS}8>3v}|x% zHaaa;hN$XY?MBu)3G()N_lGPJt6><~hf*v7x)^VEx|Xp3XWdjOha!hiUVjDgck=n> zvnM_r<a1tLf6w2V-=YeFAN8Yd%U5|71>;N7QVTAvM=A>PkWuB~RWQoz(EVwdsx_Wf zUyf6@m7g8=gm3#YC<b|mn)0tM<q88GV<D%|n0(n;KCFBD^Y|72_A%^iQ(o04{Y8GO zMEhqsV=k57s{$K>;COCU@ssd5r!xirY^U8cN3^Q!2$kXnsy5kt$urDe--Fl@pSIDb zXatGQoJyvzq&LnIg>#{1BrWxKBXIWM`mHT+*O?h_qQ}J|4vuQmg;5^Xh4Wo1sP_Vc zAULNnp)XNHd>I_~cVVua(*D(p_nI-JrhoTYlJkgyC859TY}I%~@#cL7%RP|5t^T&N zL8_xvpS&kB1#hjsL$*A0_C(hp&2x$7#s3|o`Fp58@D=2XI-p0GcefX9UXLjVh`+$< zBu$ZY+}WX3X&mzN7mZkrbr6hMfqH?x3TyZSc7_72>7pM{6#VaM&jo*>x-I^!ElJ%u zK#2%4i9jkq+@fyy+gWJ`#g6NJ`i5dZP~UnF`A2v0JSc(4&pl@-Zy!`BTU_S#aYTpW z?SpiH%-?#pYNm@?Dq3$5qS$j*cA;T&CPI+xe|B{#$~scf30gnkgYVCP4k)!nvOhy! zKeKP~o_TRQA&xkm6488q6=?;9TtLA?xA?SQT^%11orY3jIxaB~4>hK7H_I8Ayh!-n zjHo_B-a0Aw%I!AF3F~Pu`UaVgJQ^6XLhcpXbR(%0gEHfwYzV~lz4G-jGVPJJgbV^$ z#9?6z<5y4`2bBLr3lvrsxu?&>HTS#E8b-<E&H}sQH{4~^m4>nOT0jN>3A4F9FoC3B zw5`Hp_CzKi+S8}ct2Yyq-i6)v*M29<+0j}s4}NJ5!6JY5LZgUis5&c$A>6JW=*XT6 zT+Rk)TabJwkBMh)?O%5hZIi4)+BOkfolL>{RRGO_p0u&;IF|$zAX)BHgN*cvaMD&x zl*Mxx#B+{+DHMT(!EmQ;PxGk{TJCxp7Uq8ESw6yvmePpCvThKpRc?(6B09DFOlb6v zVF=QisB*wlb$(sd7gqRpEQ#M^zVlL{`Y^Su*K?|U5BNz@R|D5oThd?7x;o(^gnw-L zVhZ(oc^SHU9XWim4Sp$jrQmRrMkwI8g3pS4SBFoz`eK;w7=^2*&f_}imLFPG1HYBi z5DLc?Tvl)u2F<-k$$jNEgp|Q^g*_<fq&lF%?gH)(z(%pj!5z{o7STnyp!#XQ&+zIx zG7K_sXhGc+1ghIhI+*$Jsyp-<%b62Rf&Eh25hlyij9WYnf)~8`21t!SzoPqAd9Kx= zu22UGErPk??~>04rQEOKeI?5}x?v+n{;tgKj~buQpw?avgR=J~B$?ze$V~J~bA_o2 zxnlYX>5y8;QMJBW25Zgyvxe2{0_A7|u5MEIgJ-8j5vzXBX6vt*x4jYM#}uSH$Xgm@ z!rIV+Kd(D_El^&dnd(%M{Eno+Fu1DQcru<uhpK|#)6oq9kQ&eAzscpL`2ENYp#>u# z6Fr*wRj4pi;XO3>F&IG_=9~@KRb_ybgSBh^=>j=$Mq2&`HbyM$DNmCAWJ{tWAr8?s zh3f*@tj5N1ae->1$Y$lRtI3r|0U)vdgD5)};rvj!v#?2c&%3i!ia?mWR2V5m@KRw^ zlVj)JCg;w>Qp7N+@Lnk*Mk>@xtVyz3BzBBsoglIIOV%8TeL%A2O6-G@HBVy4O4f-I zJ5I7%CH5i7I!THcAr&S`5%)-i$rAgBWPRMZJ!<u|H4Sx&q$kdP+Tiu+kg94sE4{7v z`VxJjx}gA{lf1rEepXV!*#qzn^)LOdRxvwtDFAn*G(+HNn2TyF!Zz+kwkdT-guVj( zJ_7Afk+cuT$E{>jnmaR-vQfjwT#U@ap^w*AZWzuF-?CA;Hl*q@ubiz66S8Nl)Nk1E zYjySW;epaagJ<OgnrDFx^dc$R;L__=LQb|Umr-Bq9T2c_>|OBnzyv)BwtI?MPXB&M ztkxmU$MQ!lK_kVM44z4#i%F_1uj=t*cYUI0xavpuPQyRfqG5bJPmVcFU9=JDfh`m| z>oih26ejZKb=)1-BL=T!UorZ9#>@SCw9bijPED<I;uZ(gJk7vXmkS_3$)jTthQkHI zb^;e(&BgsA9h$GJUN_1C3g>_iJa7)x<8;TX$`XX_$mj#d1Y$Y7;=DZACFtBti<!{p zps(TzC_Wz_m;N)1TQ{%bFT(C>czvy`fet>AkKfRq5R4;zZ!gv|(KinYNx{Q|^rcQ$ zf$;EjirYZ`NTVr=+^DHoKyqD6#E{-gGH{kR1^r%3zwGxiTkiMr6zw5{r?0@7aKl<7 zME=RH;lOclDl|!F{i8z7Yu9d#{l&vZ6{RDLLzi1LV4#jLXQ-?N2?K*u9wyKe=C5nL zvg-;(Rwc*)8vo@k1!GtyKl6*8FhQKx?Y)hs0t{vNxe`YfA-JXeUam_^U0K@aMNj4+ zL1y_<V%36Jl2UIG1_6hzQQYk}|8DKpdgJX(7KpZ^nu!#e2l$ccSrNYmJ_M@IDEs+s zx8?-j+>tY6DhdaDnZ<i8DAVzP2%96ER+8rw;(RR=vZ3!ZZ*LfO)_lBDGK3o;$tmKP zLiYn*0l7C|{Tp53MU@o9>BGi7F9qx1WyY?|mXuju<>SY=q<8#=%(c<WQ<1M?FVfk$ zi&b4nlre<ECXK}cv5oL9yLMoDbc_WhHdQt6EwXp&r;pS63_5IhM<ZGk6m=KnE{aUL z`z$s<gd6TgIKhy!^B390<^^*d(ad0AAff>W0|OBwh@d};2+Zk@LbO(-J&J)d+mad{ z2tC1W*8xvC!cYFLp97yJwl3C*bej)gxEg`<7HtLGkCd#wdgWdg!L#ld#`~$-6^37X zBPSr5!v`-tg=#gOaM8Amu-o39y7t{Ins~m>0C<a4g8=s30ub?sg8%|--z@;~Y67rX zXE7o{Iv9@&A1rzEkKP2Zh59%EK9sB=cpdL6?4E0Vn#~KIqIg$|m9Ql0u9NX&DLW;5 zG1@{nQtqKD`92624O5D<Lm>AO1Hh#}co`>O=8Zx+j55nEI(-LMEZBWC<p96npu=-* z`AUQrx>&n}$o~5lJcY<|)PQK-euhqE{109!MC#P9t}ol((cX;w^e~q+i7C-ukUZBA z-$I#B4d0$Y>S`IPsjA(n_jnBvE!tz;vlK=T05pTSpyZLdc^!w%3YRKh<Zwr1tjsG^ zuW2EwH6gZ}n8%Vh3133E$%H`Ck0o(sd>o{g3YnG)oG~WUS(LR#)-qv>3DJYfi&ZZP z!r#HeU|)oZL7D|W%k{Ma@(gQ++6fpcssfoVK`D2e41*8wwM6zRd^J0C;`TB+zx1D} zCJ~ugQ|TG@IgWBeKE+Ya^H5NBKyQQ%w*~e0Wn2AdknFVt_UeQo9lLccY<nBj!QL|v zG6rX5C-bQha@J_aSx@{DV3O>CZGhM2g)=?PI;7k;OYTsmH*_#7E>wZ^IFK9}a`=GE zd3}>ueb`*x`W=e=PG+iW|LB{n@J?pkla+BU6ay%+zMdR4s%ma>Von8kjj=p6)$-JD zEl=6ald2?-%c^SLZb=*_^Ooe9O5qJSD0t=qX`iSCx=A0Okvt2Vx3BT?RdnW;JWFv` z{yMz)L!e=pQtA1yA9c}=oif^dp4b2qGXwcS+vNP9$6kl>f;eg`S{C4hRJHoKfJlsc zqeY8_qv$_=rs&m*wV}a1cU2(J#-*b!Y{7iQ71$K+?J8#S<=C23Cf`Idrzq%7b*uYf z2Qmz;`nYbHTRq@Y_f3B{rlJ_SGd50lDv||PA(-?LaGzV<7l$s4i`}_>E?wmtDkEEw z2lcN1{FSOSq}wwP^f(Y&<!r+Be0)_gIl(!o6leH=?_1s#<*4aEG6u|)1a8Gt_{jq~ zh*@93Z%+{^+*sM&3+p62rVI6p7k#~^F^=WZ0fY?VjPR}r3{s6`5Rni!2%`WP1+<zF zWEf4$0N$x9(@()=JHR{nX=O<(CF!*71BF*QC*)RB0;;n}k<@*~r9(u1)$-)D5y|7n z!)L@h_?)uDm3Zdn-u_et`5Xp!`ndp{_7&mQS*}9B_Y|IDL|zen5?)3wnpM*s0?YsN zEi55NUG~V^N;L)O{8xc~n`l+?_X_gR5;r^Wb?2m0C;m!0KEB6U9j1g9Z4wNxR<7Rf zg|SxKaKg`z>)MRCQTe;#ckx}<zQA|=|G;+@dk4=1SWhpmX;F|5mdfT+z(aCmc-0fh z2|^zBzZUj@f<w%Pw=*2c8f?<8Giwkj8^c!>zjP)K<sZ<495SivCx3ZEMQ7qEG^tj) zN@>BpgMr+>@U<+W$TCb+$5m3IKb1l<XGlu;a+H$U<TYoS%wxuN!j5Bt57es25UFUG zWMxfO<wKp1x%A^Y(71C;?E(1=@xgOHKKf6zT)Kuo6Zna83jT*|piLa2L<(H5twmO= zswY*4a$(izyd0JWiyzg9kR!q)S~Msh)^_>%rZ8XH1aDC|=*u&Ze8<$Yx!;G)dI`HG zqSjF`g3Dyv`fnDDuxJ(O-jt1@Mx@kWyH0>1!LXo$4~2q<Nwjx<{>h0?{T07q8G6u{ zvN1gPV6r@a++>93{O-2LKmFvyaevnYSP`{Meso~1I<$&;!`Qq>(dv-3sQOc)*t{$@ zaAFDM5D3Daim&|ii(!FZIJJr;sL^G*^^30iZvRDq3-jNr_!-L!zYF}zu2m#|#O5Wj zc36Xv&K=F>2`rMa(-N1e?JQiJh;?C+g@uB5WhE4?B&3*RW78ajyFwolZVd&HlRsuF zB5nataW?>v_0GTwCJomz>jmz#!l7m4=JMGBe$<Wf5-g7APPQKy<l%j6FtgRt7jIf( z8WLPVv%)Hlk&DTjD8aUmgq4QjKLHk8Ht*<<`3XcuZt~xVCO2safbzb9=W&pRU!hGj zL2)}g55wtrCp^81TkxD!paIw}6MlGGPOsW0ZS9tjYdaE|?gtb{4xRdd^gyV)a<aN0 zBqB6}WCb6Oq|yuL<)!c0A<?<?n4CX~$iYM@=$&7dHY&7X$r-D<1qLEHqxw!L^Vd|Y zQ`~`B*Xy@1>)P}0nC1VrqFmwDDzf@0Z+VwO0*Mh25ZWh%4j?oqZXZ91&vNEux3(_U zzq`RZx$m8a7xIOCrG6<%JeW@)@f_Bm#6to_M8ES&U`3$FI|;tn<na$wY*z4#^^;aw ztiKd{#+&l`PO+DFis%%Oc@O(r6jiqVmHsZwYw=##+bM2w-2nxpG$QQ?_-+87_blPg z%PkjkvN1JYcED-r!*5@}k*)u)e%dma;yw61eux3!kjL7FxV@8(@gpm;Zqa0(!j0I~ zkOBT--U8ByBUgGu`ef1s$l{&Um+~+QC*H}!`C;5h1yi-WMFATwoq$^u4ZGx*<9xTS zMFXEGy&HU1!TJZ0;PU@3B-Wsm)E@#kBsJX}=KsbatRf8W#CppTQiieIgETJGe3|Rb zMmTm9gU4e*<rZ>k2$KFTD=G_V74asbXX+h4x!GS7ZKNMXECPa7eNoXT7t2JH`>F-R z2l}dAlo7ks^#TEqE&+h9p^96_CCVmY>9_%y0?Uxz{zXN{4SKl~FXuvUe|ff%8+<wP zC1JCc-##2;2nZ$f$_zp9-1W=Zl=;WYy>x@1h<5-A)NQ<t47UwS@BgSmyg}gh5xp+l z{vhZz_<nlub&7oM+AUKm0>E~iz5U_AQLz?e0D}i!oE!VUxq+P``r1$<$B)D!Kc?&! z71G~mzs5omv^6k6$u^V#eQMPKCWgKqx6hp#hpYzFJfVs+I)0eLTIbN#dfAH(>y|=w z)eE+yzhmQ2Q{byD=^gnawIqxfZRC7W!);M0RV`OqRU-6(s6=;zEeYxU+{;)SM0|np zY5xC-Pj3JpEoSy_*yBw6$e=NrRwzwKoUCl{8UbcjOPzzQby&6lDcDuFzV1i{KZXn% zX636;Tv3#*1{=!7U7rf<*Hum;_&IL;4eUp-k3{4R{rC0i6-)A_$nrt}=7{-*sSj}= z&mRc!iTCKcsl*`nC!nNAM!xzV{u6FQ5xnO^PJbit7`Nd6dMwD}VO?X0tN6>r+y6xm z2UZps5=*NjBKek75mdEDrQr6I{u7KUgP%X`!p^9wt+La*|HUb8(0@;H{_BBt`@oan zLn~vG*R33jX+}AIm^~-^kTs-cd`K%AnwD<M`Hht=#e!A}$(Dd05Xv2);iM>?+aP;f zrY7`Af&2XWE%*k(i6cHpXP7>WG=z;dX(f5>*8dr``28aIH9fwsC_H{G7+aoJm)aXO zRJNH#j|zoHkMhhN79=x8I8pGo&TWGc;jtFhX;C><IZlh(mAJ~{ROLD?oNMkXlPk(P zb(Jv5X2m&L-p!!&hTZfd_8Gz*kF&5F8%8{5MavUXV;wN(LU5>P0d#Kp7;4mss_TH6 z>{?&J|1=hMDV);+aZCjfdr<N|Rq>Evd{U-!B~0L@sL)Q;j}ZRjU?0Kx)s9p^4u(3! zOf{ev5|u?l`43zmopSIZdq>cb7r(cl4?zZzOHp*)@iEMyBM{n+g!Re_z{5_jI_zYp zRxNdNKRCtc>ZKcMzTMqqXkJyT<+bill+H=ET7}c{8ys?+f>@_JI?gG0s+wHtCIk|` z3LmGI#)v-5VGvZywsSwB)QQp~iHH*=w=k9U<KTU^i)AQ_w4jun!a#*;NZ_&B;A68; zm6tjJQY9@0k1m)mKZgoec(g*#lmc{n@|$=aYK4sek8xLyE<s|TL*t5G!Yx&LDnz+F zSFq}rhH-Xd7j!)vy6Yh~_Z{rF!&T0_?|7q+UFQ|oOYdlqe&{Sx7JqZvl}X1?CwIjz zYRfins9vRq&f=WNNbew*lz%4a;%U4ab=PHp)sg`<TmZ=^0v{xhFUH`)&LWSCr+LD& zfhtvn_#Po<wxmSNjUb3yBMfybJ<m~d+~|){^LwSAmag1)!6GxIXX9?G!Kj=(UJ%lo zNV4&4D%G4fGlsU0MqGOC+iQ=~=NtYJmwr6z_kV$U6a%gwAJwix-8j@oJlW>C=GW`5 zh*Ef&kWu~v`uH+sLOAYhiHLNHcUN|+!dxZV?+xGj^{#5zqEM7OHiG}5@>KBtH*{Z! zVXB2c$aVvaxo|fQj%Ch3vsaV#Zi_YCX4MVaVli|^PG7drk;gFOh0PMZeegScfvdE{ z4B;~VPviXnm;tB0><Z2=s1!fl%8XJ@&ruj&YRf<te`<Km_x|cJ;bkiUzMg)NE!*Mo zyn6=|@5HG{Zw%j})oPwnSK~aZzf!Ys^Di#1_;ERG@Y^z1!bf|VVNYo@GygY3exAk* z9~_fU6KlgUCIEp=ofnQy61RtosT=r7TU_jxl`4J`UQ#(g<1rf(HqT((9uP*qWk8#P zJ2?rPr!p3a$rkkHuly5T>S0f@ntnAd0hf743+|-cc8A`~-18{@zLjZ!_c|k(k|)A4 zfAVLz!ZSB)hH{-eMr(TI9$X@dAoD8SH*IG!TzaQXHshfA@*w@tpt-s>To4r{sp>Mf zN}rlhGwyrbDfuz9Y$xhEim59xBfQD;t-t1=Uu+8BQh!&?Ut3VNgP&2Bx)RXvHhG?$ z3gb5AxN^*~q>Gq-QVV;^QHMo5Y<Ys=qL6f>Np}iQFnKyAKB+{o7>-x2_|QnPUxM%e z@vbV&GVy_U^YC@q&CXVfPM_1EPZafns892)IG-(q0|<ElArb?;W>@fVz>HFts90om z6+O9mPL8zV^Xy6HIXU6>NM_#sY}dU^yztuG<#;_c#3+g3kNTYWZQpC9B^5{lGG^my zMIYDzP#Ib(Z-d3~{aSsq6EA8t>GWedaQ4o?|I>V_Dl8)PL)?mQAJWh)B%?htWUeKI zNoPx<!Yz@^$Q(#rywM~cp18XY&wxkGn=3&Rl)r)*MXm`)ef-2`@zQvm(=&1`f_^>e zE)+56BqL?gSXJZ42U^0&{b0<SHZ^b0P7Bv8P{j!#1C3e4K%VP(?dlqL2>NEba~O9H z7nf5~`ZYl%zjN7td}lSiQ+$fvDbD?WdFRr9e<$$x!zTU0#qoV(?|-<Us1o|8(9KB# zfoxR&p2|qugnOX^tC<DO+0EhN6CFjRo3f{&tI3nEg=UQJ$es|M{(N>4^#Fk^=x7CR zL!gv7JNV%|Tb3HQ4_?lwPRtmSI9}jm1lWTR`Cdy^qj<L3h({>41j#ctF}nO8<u-FP z%r4lOoW|dHJEM<LPxR9Z$l`)J1nW*8ZEsONO$N=4r}>Bxm*R4qVrk{ZE}Aih8L|ZH z2lgEvHYIHa{viK&6aMgDKmGtC7Bj%PIJNvczu`N7MzyNixRNg|8xvkKL8aG!0G3Ly zWa0~1DxzAN3&O^*rghh0L7bz<Q?5wESN`Pp@4>(2pZiS*dol<E!+G2bEkEz)o$@U# zAiT?|RDd312UIIoRSV%yma0~q1i!DS1%;eSH1bH;T*x?Ic}KofX$Dl!{D{Yf4XB;3 zoWnhnQvKv-YUj&u;qyFvX!$EXFk=!ngArQ@z!8@Uoj*OAk3YZPubiU$9{*)XewJVJ zLm)S4ooSD3ZSrbaez@<wA9!uYs+DMgK7D}mzIUy4)ynCGoICU|Z*2Rgzw?s6YDQQp z7<$B|)>^SPBzm~2J0v@0+r!-<IX}<tPD|(udF0gl9cRMbA;0Q5)3;@tka^x;reECZ z(v5d@pz4n{v)7;TP<RbfSv^LN8xNtv1#Km*U7$YZhBwjtM6LeuQ2~Ex_<NB40P8>e zWrBzbc+QZ{{m9vG``#~ww3XHBF?!|9(AL^&_i$$H8zI}+I9JKiFG0U;tl^*j@~{2q zS^`gV7=tpVQb_AI?SJ|~Y48XA{_@WPKPaoKb`FQke9DO~?@`Ryy&BXob%o;!09x+( z>Cu>DKR#-~Up7AH;P1+apB}x8Kdeu^qq?I~w|YtWRlnKezqCZRx-#1$I%BZ9%diDC zF*enHdt&SsZFEgzx#t^yZAjbK{@NM7#)noJaI$e3YQ92G6kYum%A;;#dU~$(4Cu?h z@UO1yj$yz}$B%DZU5Vi^*cR<QHJi&lXK0MmG=|5x%J7NqON!GQP@L3ZtWV{!mbiy8 z)zw$(Yn{jTkFUdy)>GH<(Ex1TqgJoQRa{+{3c|x7Ev#(RIa?kpTU&;^h-zH)$Bhf? z!WVr|Q{AePG?DJP3C^jHd2{wVME{c5^hN)uIo^zLj<RYbb|XVYLq+TMc><;DR$Lcb zGCCj(_R&ngp~(s@TX;p98|#=FI<Gz6u8P@OB6+I$2bZ+7c2VU}b=h-<g)LcLV$X@O zt6p`_6`WJ^OCHR#M@=rP=qM|n1AzW!9BWVf)l$x$m@sD^%0zb*{d(h^G2!@k?1Lk+ zlE?lnCiC60GC>E?9EZ*@QbSrRxeF-jM^Nq8CuPX%Ei=oXVZ!cG-C@(s6bh>SF69)V zT0*X=cE2cYbRXGYR+nHh##&<XKbp_DrBUQ}7Nmt+B#pb}vHE&^TitObJH4Y!NU(Uu zNk$=Mhbpd_gBA1T!xJT~bi{8+*{E+0H&@n(J*po4;%-%>RGQ!}d`z(Jw}}3UBSyEC z*Bn2iL!qhaZ-{c%FlIzH^Nol8{m^53#ee+6jO;Vv$G;)c^*zmGg?US3eTAW8_r;mC zF<YN7fp8DMvs=MGX3}<ft;52`jNj+A#z>`tyD<Nf06d$DAjgUrv%+7l+6eYTWN4dm zqm*cHsP>Cbb(EEayQA`LiNd^n+KdHsIcLtC%>F&|c8~F@{_^w4%q3-@n@h=$LU;>$ zcOYF*%iv@le;FN5jj#)5l2(c07JsQ#a0;wld@_9I&rGS(Cp&pALy%0;BE9gT;ETB= z=$yXeW##6wRUMeanw||^(38iz;-<xw;JSJmUcGqp$s3su*VyJJ;D{&8jdd#{(S8lA zCgkj=5@N&CGaslyGL#ntn??j{Qqt})%@fFuLSobl83@Czo<{VVp~T8?P7U1^Z32@W zw0Wu@F5x39A5ieh@g*iz7hV@O2F!-?zd11riCAELU&2q1cHr+#{QYn*!#swy?d<*W z(fzpA^!WYl`0sq&+kwBg@b_PENDbh>*pn7D-RQCCCYdKsELHI#HqL9|4ockH*}2vH zP;t`+cix+2ZXGrhKvy9$HU0iJMNR!;X&8fY&*%&44U3jUe`8#t=jZBp{y5yNaoNm% z%J@1N>U+iCdNkws(eT#&gqe2%)2k~xpl%w1$+?`C!H?=I!ih1d=WfP3j2S5M&Sdru z@s7+y+9V%Z^F=j&B0b4SA<=Hpk1E_q(X08a8Y>p}_oCuJ-gt(AS|=qxQoq<YjOpmO z5`A&V^!6cx5DA`-tJCj*XvNRB1N26yXOF*akH2|`6w8SF!drJAir%NjSW<E-hHKyN zi&aUnYOJc}U5z6xy}f@0;7vpL5da<`mooGzfPSEe5A#mG3B1Sp{9Y6)Pu=@8@@9aH zlx##xOjPJDG2-LaSkH{IHqVWwP+#N6Cue##`BB3V_`dW@d}GJeG~GltohPBR%d_HV zaaTrbGo`of49SBX`gCkfUYX~45};K#NC@{pbk;ci-d8H?H%h~4jslNMGnkrXe$TW1 z`W$x@$x`qeMsZJNeB9eLRn=ifQQTY#8S2Y>+kzz?J31@O?5gfKssp`Ij~tJlR1pkE zW%2luXT?wAOBu%@9(U2q?o@fXgM2KnYMs0itb%bYc?W6MVn@~diLl_S0(p8~obNG8 zjy%dOe8e0Y#WJ6<fId-XU72T!A9+Pj-mp&fHGU0qfm>$F>`B!a-OatdH8nd&EPu>@ zDMz<@Beu@(=d)dfeoOS@(NPc7T)94AzJRD|cVem|(HOnc6#dSyreP(aEH|5J`<GkX z(9wCx-C7sEWxqC~z5^estLI2jk2mgQyQacXNqB^`)~}RQUhgn<b$vBX{MB`$$LPOQ zr)%B`PH_xVfvynzT@Nv>tsC2yEJ-7$<RXK=Ey=%pSzu`d$^In5W%f+}K5Wsw{<ae@ z1iw7r+N{S2KpFhKXqaDmrE+<lV>nzTSHvYmYsU-#^7f+S>acyV7rHe=k7>L)Z_}<d zJR>V~k)gU{pAPZ_EQ^P`Q)FEe8y93sy+?Y*UtOPZ9B9dTmUS9QbqIQ@MqIWM&RmHf z>c}}HPtC}hyXC3L?^zO9QZzG5?wpw=G&9RW772enpmwJ)SOD%+BpoWGh7_>cQVl=c zk&+1yd5?x!wE8)Bq7kL(hO3s&!!-(4&ow%xPLmQ-Yhz17Snl^sTaCN=4;`J=?$#yY zOF;i+9r&<t;T(6=<69cpuDPJrK_3V&`WGIpcEqZ|lncu?@|upL;)%mIE^XDFde;}v zbjPZ&JU`yg<~_u$KJ#%pn>Uu}?Ywb;syOu?x^evYm7X&)Wo9uxP@m_MQB`R)bK=b# zy$fGBMNb_+ejf3ec#!Bfi|KsrM)xa~N9ugTNsK^X;kIuE)2Dj7=I!-i-}Lk>_Js`X z%X$0t_|aK+)%ezTe4{&#rGeuAdgg}^CSKnB@b59tit8Q6GA?0&zZ2cw4e`muzpLYu zl{LH9A3sjxbmts;J$_V8>v{~q|E34AGuR}tF7W#^9{Tqmp3ATJJN}W;gJF&ZhUo@d z4(Ivf@2*52ocbjl$Eq=xAWm`$o441$Xy0GXgfwXmsQc0~FhO-iG&w_1z7d8z?$-1q zV0uz-O%E2w(P5Y#$J|tTrbwP_9cDKD)wA#h7T?nASbRGkz~ZxTZzED8FH+&4Rd`71 z%Fdoxz39ciU@g{aCYfs|Eu2VEt<ml30kh$$8$FMUSeI#u@YC8}sf3MV%9!x@=cmXT zv&qJoLOH|q8>mpp|1mA`=3T>YZkS@(v_#MX&lslONXrqT7`^^HZU|GEisOtU`H|?? z<0Vb#^qKJ{4Qo316OK4nC$M>6GnwE2oFRxt)+9V~dQ2w!S5Mvz#9p;oubUFozJ?{x zpDe;7CRJ!j0^3!9f}9##6w>AI2MlFn63pXnptR>hX8wun-0+NPsH%6RBA0QqUI%-q z+;n5%G9vZDB_e6UW2H#u`wJ1CFaOe(aUBA@;W-HK^cxW1o}?STS1OwuQDm&vjGkM_ zb4Fz<0FO;=>;0ZHe`!m+E~PO(57(Wh_Kc8!GW14U<c;P=JcPtYNqD4v3HA$qIIbZU z9FY(QguUYlWSbt6*Kdum9<X>rhB_>VB-(V-J@>B1mWvQhc?lm5rOg*h82=ssE4Ch> zeCt+u2|E_RApf>IWM~|T6t5*9O-3&ovL1pYE0ko%5qa0vthfQ`(((5U@uhIAgn&?~ z-b%RCX&mg^S5w%o*Zp1VnS%4z%g<k5G;p0)T3ByJ4#{SSWz79dlF8U(s(xG@+-;zR z<M-HY;>KVSD$1A&1gbkYUv%ZYj_7GsWBEv=<Mee+{jy-GN-`kQN(K4xY-se%8$Jm2 zs(bdvmV~j~QszW?P3!iK-ZCie;f-%<GhXVTJxH8G4KWrnO=x@*SOWZrz!Ko&XkS(Z zlnRf1C8ofe#!16yTdp|oca)@7aEuL`&d`FzfAM&)BU7RM=fY{7d#}S7;3zR>Oxb9g zKFu~vm5~)?n?AJ!eU(1&^9kPQY0+Orwy@!y`Xs@BJWU5if0B(Tc<L{nW*TEB#_)-U zF-D<zO0HP&;&r0RRL4-%t-9iPrE=lY@P)F83`7y8F@laM*nIuCprbKtfAMUhF=}ZH z59LAe6Y+4ts_Pjh{miLYPxz5(8e@3wx+!|<%@tF5{g*2SW16C;!31QQJ`K;omO6bZ z7BA&fXD6)8tX`+rFSaO$u2l+ohfL5>qtY|0)*a8$@e_Lll1PP0%BUAS^zTH^itn>0 zW=zQmhhdLEeu}YiZ=1A3<Iuflu`Tay0X<$KM`x)Fe_q!yO^0;_;|ZQyD!2H6nu|ss z_j^`c$+$mb;h6A@2WX6kSQGaqA8~X7qzeEd&r9B$BQDvJQ%%Fv(;Gg|tMx;#jmlAG z8~*;|qnB_tor(YY5&ywl^7}X9vli#pZ*ZS!^80^4kJcDmpNC$Hb3;+#I^bmCBF9E0 zW=>zn4+Ua`NG@^sQYB6(+0!x>P7BY@B~UC+G10aWCR*{k&7U|gJ)t|D;$RO<PZ{c9 z-<<wVl!HCIbu0?f&@S>D#v#Nyw+}2C$5!MsdxaKd@%J~xQ#huvuZ?GYB2LLog5?9G zvPJiv@FR2<;*)(VF2`bd%fjwXMuV>h7-z&|mR&T?L~V@uqh~#bN!N-0*^;RCiKm=J z41VKMjL+@ZsH@MZ=_Dnmej~ti&S0EELQV9~W#Se2hBO0*=<lQ^rmXr(qjp&Np=Uj> zQwz}0pIwDM&uEk}!KtTKQ6BR1>gVu#cOg^W>R+;VQu+9rvP!9JmASQ6S60_iRwq{P z6l<FOjl(pEZCiK+CPw_bMH5l}%CnvZ8u7cIFyi(B3|B7sSLc+!SXZ`0&ncMl|HT!w z7L4wg$^hiWy5%{GUhtQ{;9r<i?TCU1+kq!<K7r^vs|p&gOrR*4I((Fai?sYdgnbEI z6KDGWFgbx}2}eM*HJJc{+AaxJ(N>#8L`B;r5m4!NmjsPyJqT(+M4N;Pfnqnr9$>q> zNvai5E5xI=Y8%i}wRTtSwzXZm>)GN_#als{|M#5$YJdIj_S2EcJ2UUR*F5L<d0w4g z2dOh!slB**xcEr1l#13+C1kSd_+@trxlGI0iH5vp7B%K+|1_!gH8wXzlj1Z)P`a%Y zXf`p|MQS+mjoS><D4lLQ{5p!2D?FdxgR5bG7hDY`#MPh{MsVvjR`HM3y@`^`&S8ya zK5f(V>_bD8Dzc8+R-;`8VFXysFlJ(uQoC<8wlNB1f}T#==inD@Wiz>bj54Q_2F~Pb zv${0n-IMsTv@n=T<b{0V0~`l59MZi1v-`&o$?(8R(L+O<gxIJpNNoWKv<$-m{|Nsx ztiOQ_llB?I-<A+g3y}>natgDV8X^i;Oj+T1miSF-(HX22bY@Jv-!83YY^f|1)oME# zp&0<2C~Y-eh0YsX0p`81@Fq+#pgr%123W?d@I1+uh?=ckMMDHwCuGIJQKX<OE4y@& zBT9=<i5+rj0$a=vw>-7N6Ho45(p55@ECGml3=2zfDTCW|2F!+HFpCMvO_8TKVRzOJ zg7;%xzyW|eV4&_DZ*2av`oC`egF%<z8}5%I3`aPQNF3~|6!mv}?=qa<!uQU8#@YXE zot-T=h*=Heah+v=8-_mzRuM8B7>lwyhgwNT{y=@=tNn!~r!P{CUh+4WTI(WzXHvFy zR@=^UqokWb9peR^=26xkrAPivW)gB?E01@KM_Ug|19DjFi-55ST6uiyZfTE73&zdE z#(qL8K&6|=Q}`%dykIX+3>c|%t=#D(Je+)bhBBZ_xO^uhU8H@hb!<pwNVx6WGS5Ns zi47v3*m?qLwY3FWq@F>k_OrJA>=*{36zD$ex3(2`tts*z9?;_t3H}G-_JG$T_LA7u zpnG<{cvMWBDrWWY;3Ezx6{Df5$Wm?Kxwf*_dSYp?R*|OK^C>m`w}gmbA{Q}KdICk+ z>1wOP=}(2hQ}q|N1BTC3bp)l>Q>wLW&uNgVzW0<?z0-TjQ@sUGja3a3-#c|^UnMWX z<}O2u0(9-CPJ5!DbzL|5rq=Ue`&U)FyulI|4-Nnfk!w6<uDjr+tM>-2N7{pw3fQag z>r3DIQ>=ui*8Pnb_Y^f{p2J<3>SLYwj`wrlF`vr=gH5G=tO3z@Xj7?FPuZR1)V@un zu&!W(t^K+Nz4Hc(_hR!uXr{{ABQ-D&Aa^3CT4Owp2g6|D<_s1+YHctXj5_IBN3DtV zm{=$0E_|Ro&!AkP@DAH`e<K8Cz+l_%n&BZ3r%+d-I3PHcbwU|~697f^uogEx!_%Z8 z?gQ;nZLP7BY&nsY1LAC3Y9z6EFz^iS-6bY!TqDu-F+wOnx*S=n&`0}PnXyf;_cUsJ zH)d#U-LU~w19M=|>8+Ieu)jz7X_<B8FnO*OdjF{Imevo}I^gL%b&_>D*ZJ$QED6mf z%kpuXMB)(pPsriLu_wwfN60U$+m10;B$s&>ks*JjlVJoc$H<u5d6A^6F|i734b~Rw zNTtipV~IJdY%nn6cNOQOST~ZV$&27=X4c+)F6=GXm0<(#-&xC<>>Xmsu=={%JFIWg zfcg>y=}n4uO^T^^)ZS#vF1mt+RJf*Tx6L(4=2|z;H6ysTgWW>64mbiy);IG=?NzH! ze4;M6Rs3()_sAh10mTFJn>L!KX$s+K3R8I+A?O5o-?h7a?;FUy@0fU7eF>bat>U(N zha|~0X+Z69HuOh0qJ|yrd!1x7+9L@*@^1N|dNfOJ?-}b0EZPO@a9|B=p`FhCJtKI4 zb;TS(Y=Lja5!)dvL8l`gHWCAgcBSCkyaOo5B>cULzwCclHWuxpQsEMu#M3+zh_$s0 zuOae^s2`D6hSoePub7k+(i&wa=RG2?3{%tF475)oOu(k8%P1G4P%|m-tf4DZ)Fj6E z(HqVYe$UP~U|#lxPc34YQJ;u4qy6}qoSbKTmmM_OD?4&H!}M*COSpMZ`t%=Y6a7)s zcxiH)AE}(?&4tr2FU77sQ&GF_4NZ#I<h3NLzftdt=}3|4_8rk^wVEk@Ynl?K<#}lX zD{<y5341$^^)gR4*S}FX&+jyc&Dq`0J%^mYG`r`6^dRb|geWA9t6jU?^9iw6oxEE& zv*lwJ*3{a!mV0)QqJNR1oh+sl6;o<vL=p3}&NW}-yrDM5LS&j4EYnsmhhhVH>BwEE zr*4FbKw7E`%ADXt7(rv2=M^GpH?AX7lS|cpdAIO^tW@~0th8*oXa0TArqAv^Dl2_@ z*Xu3p6PIRn*REl!UmG<h)*C}?Y0kA_o-6AS9nkmvRKQr+d#PtVOus)0GS;a#tmXel z#?s&45J6<DWKPCPzVQw(+?KQ4GnKUDJ<^hZj5YZ_WULAAfYJ*gW2NI)55>=-GM{$( z$4fI(v}yM-7a8N>-Eq;U;qfBu#zDULfXm0Vl{i@7>2}d4Jt=SWUDAawwEgZrCeWIe zZ+nR_^6GLt1n#F*v$ea{b2Xlt$y%-Z@eHa6)Tm9kZ=1$uq`*(SSD?|Xv!==MD0y%i zrRry$#H8{v%<8WZ?<I485GENU=?A5or0CzSV!PEmp;{-afO!FQJa)M!7df7q^X?L& zq9H^@G5>Wn-H*_fh*-tE*Lx}XZ^>j$@c&isVuJ|%?79QHbw;^ETzmVDSFCZag-Z`c z*2xF#;t7Y3+kSo(PHT?eiV0IKD$Pi7h#Po1;N1C??O)vz{$!qHz;d-W<_OVGMtjQc zCXY^br-Z3z9I+n{Qj6>D;yP=J6vzXsn*7VT&{W7EQ;mLC@l=s-5Q@;qNr60feX=z` z<$0>(;Mh%^5;d6+!#99SS&1VL#~RQ9|7EfNANb3%kNHE7kiQ*l8vZ`!XW5nbyAwwi z`U!rnYQ2*b1aD6&Hsu~;;ysg-^?1!IlK2&Z>2Ie?WZLtr#_TK-2E8OAu>hG%oGuZy zS}><xP$UX!3!>mwf9-sco7TB0YnIa`KqT3-xM&dcUTinG>BJ!0W>&lDezm<Rk<jx3 zdVZ%Solx@0wDD`UV*<4KwQswEgZ%Z<4Z$(UcG-OG4on~3aAL?f%#y8z`(bNg&mkgX z?b0Fbx^#XgYzG0pRj=!KM_RhE@q=R_LEf$ZY5GyRp<k@0zO?xySBbDa*Rz+cS0Mjf zf9klZPQlfYn+8Ma*8gOrqnc84QN+L_KgbP2WF#Z6_+IBP4m!rCbP=(0L^5MVsb?!& zAZ$K-ry!@*YeGdrR8+f(r4~rv5r)^UEcI+8v}OMtn8&^Ope?l@u>LgZJN)q4;!@8# za&0enZ5FPT1-~N*ueFqV{zl3_;>u^E+#$`IBd=Y{A}tbh#<g{1c!KfI3>w-8>_!IO zILYIgoE3XA&6R6&?n@-Nq7S>>5Y&4`t9#YJL&6wr@TdDH(y2scezgXx5uRhdzL;%$ zgZ017@h)xJo#wPV8Y0_jHFpfO2Eo6Y3GO<+fgWp5QtD_~b$OE`%<VXBUF8Rjz<-U7 z4`Mp?qgRhfg}KczV2UKsU<fe;Z!<@Q=r6D?fkg7ObJd!r8B%Mu-@3|eb-3*Z9Qr3- zwHtyR0-X+Ugi)gzz&5Z8eYGvTyEb99T^w4SX2**)OR7@<NJ_uS5|+lvF4k&JcImHc zJzhD0v8|{cMC6`_#23gt4@oceVjJ&O4M96l_QcV6hl?I05t|20b<qQC61KXk3CZx1 zFm4X9OE<{N>kkPHH0_<(VYTLJh-gTPg^LG*iKw=_&#*PM$14&Lyf+5BXxYxuVUyyT zZ`WuXRxdrEX;)bMMOMx0&(W5_ifPq@{)e3SRv3ILlX*}+De5@Ri4HiSn($^}f5Mx` zS3k;|f76x_E}z6$zO4yOD@+TU?9+a}5))X$SN;7qNp<kF+uNF$%7Y&DUaaN2WggjG zC|8f)DVg4KibY`qV^=CIpWm*oE_8$e<5=i8T||#XxJ1QFL<&*IXl;*i;aeoHfYAY~ zM@Q@I-a=wx(CL)1lIV%45*?j(cvcbp9Jg<nj@H_Ix0~Q9Ny8x4@oi1FsbZ<MDh!%A z3YPJ8ylovzrLav1Qz=&ju}zqiu@i%1v|E>XJYC?mH*W`Q6U3rGxNYvl0JB}&^$@dF zE0wiZZX@$vuWceZnb;<hVVmGZtNyag<Lp96-<jJaq>r;r@KBTL^zAVt&<GdUNLAOI zZ3b1u>g18$<k8xuHPYmIe{#S!QQoydCK{LmE(qHM{v~|VvCOlw3w-nMxBK|!@-Fbr z;<p}XNLf@mk5awTm1n&%hIAghF?YIZahHFov@|<8+o_JCw5!<U<aL@pr7D|JO}nq= zg@9wJ=`?f7WTJwkDfU;X>A*5dRkT(a+<CoRitvtKZDI=y8>Prw=5gNvpZnl8;d2W( zKIiMJBv#Q>)my`F@wuyH?Lmh9pvoogKUR#7jeKVBS4oEc_s?vz!A@%xBX8q-8XADC zC`Q~Skix8$0PSG}lElQ!kM^Z5^OTVGt-K9=>MUuVEAX8_jj5`VC?8g1)_BUUJJ&p< z#!&sFf%dI@q<zb)BpLs`eebz!UH81S7Rl)Cv}_ksU1itF&NZ=Q$S6g`GS4*9rkSKo zKa)1u18s^Kte90LncS;!1XS9xyH;cod7yOsF*-n-W>)ElUKKMDde!u*sr;T6y~*jo zVjc9Vv}AW$nDb3C9z?G?CSh9l=)y<Y!-u+<$P9;$836q=gWybbUQ6@Y*CCB&I0lm6 z@D{$E$m+a>zAb-l`8T=ni6fL;@Yjb`#$9un2G|Xw?1ogADaJk2>4$v6XpeTn905rx zLl;<q+JxKA2fv)ooAw6Esku=Z9B%u%#M9P^H9df=X%A-%7;sw>TFu}|*jg0Yl2$i6 ziIzNWj{~fMV2;7tbs0d_;(vl^2#jM(i6@ARqlk>-CxLN{Av6%<7*0l{M{^_N_!{i8 z*4G{$#~NS-*5YWuu@grk<QDb{%ewG)T^PY%-G^zGrrg|lH#-Tk%2XU_I4CNEqBRu7 zCw3bv%U*#jlW_Fzb1))Mf5P7c{3UYD>$d_@jdI+HIPKddo*!<5%$&GI$jrJ4pfLvJ zIGrFQAu?3<&$(v!o-9G>?jT(hzh=K(InEoy&pE`e_+t=qpe$Sgs_2aq0LmvD+O1QL zGsN<Z|6mPSd<>Z(hcZR-^<NRO!IaINf7x?xh~#Szl5+!S#06Fd{Mf3{G_bmfJ80n- zlztzZnFbr48>R>C$8WaAP#KNLL^I+CAqr5m{Y{^n&1gjVIrR^6oztHs%}vwK=rZoa zb56LIV3CBrW=y!5*JqN17i$Oi@cK9Z@M1=zu!Gfl-;{J^G*<k=>fLWPH?WzFfURg| zNBy94Ybrvp84rKnth~G%xv$vU{HC@RoMIW}noU9~*I^e^d2_UR1y0jM2zn;vIK;pg z$9*XgSXRF&Nkqg~^`Ow<lBxZGU&R>An~jG{%{n19Fxz=Us`*)a@`~JgBdm#)V#^fg zjj$u!iTg%a2Y1qhldB3`^5f*X;z(K;&NUMhniu4{bPB_4ilpYmudnd4eVrfBWqjq) z&i{-dAnvrlC|As*`tI%DWqkS3drv%aZ{LmlE|XY9Mih3XS*$OTvgDCTs}tvGMiee1 zQtC1>_uKLkn>S0_TLi>@+kHv&S7PTE<zAleFOrsPH=7!zhZ>s>N+HL>o7M8zil$w0 zu!NMI@VA8l{ZO(7X6M3X@_@H&SxDvEx`bKLx0VPJvPQKDse~nA=GUSm>xYXaS#9w6 zPC#74pmXUWGNHzE#h&=vkU@vtf(*Lu6eLiI7>tUNtgjW__s<S0;`!bY#?+oD_VDjR ztYmHxQPhO!Vn~*DMUW@xKD;K>o6-$}SkJNI=Ga?AzMciw;=OxSQfRo4uY(*?PuD%C zS*}S(6Q!A1^2TCxe5QzeDLkJciVp^#>(D<Ax#>o38U;CT6`^lc;O;(s3`?#O4jA|y z75J@>B!fAVZ{Yc~jrTGp=%u8bE7A&By^vhRUY9vxMm~$F<StZT&##Tep7Xcx!CtvZ zT*RG32Em8N7j@{+FzwEG!L11y7_*^S{@K!b*~T@Umgu#4*-ldwg;iK+4nsJ6@3opv zOV}gVEPJa9&2rp_x8a+G9g5PgF7|wN3ofy*Z^9+Ep2W?-?WL0%f9lR)(EmKfsSBry z1U!xAY>p@j4}w+}3HVw;RiRNUnqxAwB^pn3TeGD_{NZy1;l^dfo*%j~U!UD1I>RB% zS0UFsgMknp(^jiNz|Yic4WB2@5kwjn7JL5DZAze;x8F1+2wJ}C#{I@myNkA3@g|25 zzC5f2)Qr&Cyg6i$Oa{uhvl|WIt{b*m3oY8r8DTyC0U=&dBoLSce9@dj1Alm)R;$~e zXx!dyO_R>yhZ_yW9v^93U0>q@+5`H;D933VyBS&_S7@2mL_h^6(vjNqV$a5I0+6e@ z3HsTxp&Rp|eY;!l?#BDM>B|hTetw0F(&2?hEothko~9~Z?=}bo<W^d{rW@VHIBC** zTw{~z3M8mx)}RSJ`o5uu$0Qbe3T}bNEW8O<#QHJdJ&I-BTKJBMQbhEgQDwba51LJc zs1PU*+QM#QA-Si74_kfS9P$OvCF4}WH!kS5W#8&6;#lXxZm`Y_9f*x32)XCaK3Ex9 zl=l8zV{W&Gv10Bmx?5--@bkv!ZlN+VRN#v|pFHh>Q+i&XQ@XUrDIHMQiBp;}Ge;Ev zTJDWP;sP#ZoL4z+^BBeKSAeW%NIq;J1oOuM0e$fm&rs5971wJsu3(Ql@W|J2RN!#n zsK!CTXYmI94hN64D=DfDyf2LCb~Z|X_=dGenrU!LWRrtt2(V<dciFbDKrR5LwOnC= zRBmkeWLIg4iy)1t(*vpIi?G_>_{4E729BH?9UV71tV^n-fYbt8YyESW)uE_TV2d5= z>uEz`;%%+30E6HVw}@{#3bxSo#?wa8H6y=iciOQJE<s?pqiwg;8SU{3&xcjka=+UV z=Gjt(%^tk&S(S}^*nTJM70u;KMCq@?UlgaFt=JReNpbk1at@R>NU;&S@ncn>Mnur> zQc;b{#@$}QhraBbfsNh?9|mf7=%df?nKPHpDd;MEf5fe!h$}0aus8h`N)p}b-h)&B z!LXdocde}Q+uu|0+f$V5&>hJ@=a=Ot3nTv`Ib7yFbl?4Mx$Iy_!YGos$a1#AE|L`i z{uIMlPFHY(-~+dY2!h~4UX3bI5x>#qVGD~pti?`OG-cUy6T??{Iqc+O#i^@H2Y%=1 zzZa%%f|NOLAy}C>3=3ki>Ws~wx>kpLCHmy!fsIxA_`iJLZgJ>K`fm{fLIc&zvah!l zb#(f8%HppG$We77Nk#>*h?FaST+YnLLf-*kY-bXUqS~DmJ?O<)rgnRU<n<nJ!zLn% z9tZ}8j!TH&tH0LP-gKgsXB4t=;@Y;QdxZ_bXd?kiK2HYzyv4gdfnX*1jV<roZ`$4A z-|h4bq(~z*#Zur*3NOp+j5UcBLCDK^{ThCi1fR|g3N#*LA_*?6?65fQ7s96j!56mw zCzd<J-b5aeonjH_*XWAnTOA#RCERs*04sVs95dMR+JoL!ld-S%lyzFG$riY%tV$$_ z#`CpfSv=qCB{>^-3(8^fv_{&~8s96n(90VX0F4bS`VPRP_^*f_45Khb+16Gfrp%s5 zWLjJPQmiYxxF6+EZfJ<I-7IZTIK<dii*r%LllW9*;|dBb!6sl;L5`pm{P$*%w?9GN z-a$Mf0Z5>57^{-AjHnR}N#$vufP1h*!#I<Z&yETYSKL|Zi6y?&aW_D~Hq6JTtm?;V zuP>F*c7S{eqz)j)8yy8LBX8`bk8LQzD+e+cQ_Q-PjNn7H`|Tkq#Al|)lur|@Cu~*C ztJJ-fW9L1!f`mNC9Y-tIrKqx(g2>4o{zQbsJ&D-b$~fA)e%M|iW)-hfzm<ck<jP}e z(NoEcUr2@lNrRrGik0#qM<)X8JYlJK{qRJ3uMp1$p20iF>v>Pg<BrLderCc}P^JkV z;-BmsVw?E{v?k)%-RH*Q2!RZK88L#8w-?Zg53m1)Cr@yfU{?fY;tpV+C+;0&8nT8? zFQ>G_mRfg86ZsPCik__5E&q{^m(>H|mxNZ<1!?1!0^gU&?-+?qO;yR6OCXWZl=d8Z zGG01#y{6IW8!}egQ48~UMx*b`Fv;fGbHA?($~hl1FNHHzcZ`>+Tz7n;ZDU4AVxb5$ zZCvA>xGgy~&Kz4<TYcNRnOfUJnl}W?Jg%k9KU|0W<Nhb)pRdpiPWo|8pIZCfb(j+# z+#2n1EN%V=xz&@1Tfe+ctP@01^8Ece1*9g2>2(9=DtFCcwg_iS?i1zc*$~(CDXuw6 z*Tg;EIkC8cnvI87!QSK*M!XaIyV^sm@R0(jjWzRYdsC}uj}v>l!Unb3)BDXz2Dm1+ zc|N!?yvq382G{hLav73!@(a`S=iQ9c7f!h*wg3%QRy8miP&4Q5FyLjHw#hTI-KgJZ zpxoI`CW=D*jMEi{m=b2lSd;_Y!-Q*86KY4%;i?ywdRDVAoV<A*hLd$_nAKI)toMsV z&TK-$zjU|NTd5xG&kY33NFtIsb`R8?BB7Kpury2;*m&|!Rz(@>|4{0_Y?XgVW(`w@ zjQ+kaV_V(k_!qusqNgy^L(m3qxUi;L5silv89b|ce~EX<SVjpQlkh^VZIy&p^COu# zV;N$zAFNohO0ufgn(-U<5Jk*ggJ@gQJBsMLYEfHKu>!d{vy&<%3^Q?nM9oZ$mPAVE zVJVq$<v=M-j8R;_gP0d)q6`aqRtis(CFN--2g^>ydj6c`4~3t*>zX7!U>?1VyrtVF zyR^5E3VguiB3Sk9I$g9*7o$CON5|*GvZ-4)PiF|$%DWFAFz`3&!lz_RfWxW+pg{g6 zLwJUriPKCV&a7|Kf(%{@)VTIa5Uez1rXy@%N;=?S-olCNWri((#-&r0_5*C-ni?u% zN|=7^DwCTn5=2@v`E#O&8J}4NHDYS0`z<0yHwX!irQSpSh1;sDaCtKDy-+f6ZJE&c z_sXJu3J5$!%veY-bEC_C20CiY)1w)<{WaOr<ZQWW=Q5okB$a0{i07)+%28Wr#Mtnt zoG}BA(Y{&%+wqb#GkM9$#nRGzFEiF@cGmW<h3LF?r)0DDP}tm{@1^ULzdtT*?(WY0 zi~oD+5A_{$rFuav?)_vZmSyg4OuY9{?Cht$*Wc(yX>N`$ifS4DjxSdO%lQ0$jUNzM zLJ`0-wtQEKEN|qTLp8S2+a$vzWBi-eH2?M1Cp%jQQa#YwM$$d+ixfWW4g4t2UzaqW zyGB0fABe+X^(}m(4uz-YR^tb_O_xh)PhSI|DI=Xcl+_Dp(g4sDZu|2RPx&pFL%zAz zXAb%H+L%$6&#!l+NUPr_&(EYv7fXl$sRO@iyH1eQivz!~EF=i%l?<^iS!4V3I;N$% z94>H(0&ZZV1DHrerqSC54GDFSdz!C%c3kJ~!M(q_4ahKaw18p8>cWMV_17_7r6~nL z<VDjc{0l_|i&c@o#Pj}ju#}D0V0XzTG@j68*zvT#zjo3joi_qpNW09g9H;-s;yt@8 zTe@nubm8d+5&VkyTQA~%)NbnP{S7c=OaMz=B7jI*G-NpVC4{N`aYg$y4#Z<SCV?;2 zd;(q-OFI&A-gcKQ+LzULNfr`JuJIiOxK?o&b{qVR=GzlV!nq=4VofFYo4Z^hki--X zQCodv&qZ(m@A^c%4NcgWSTrOJr<Q(qpk}zDkJz_%!}Vo#*x<x~0DwK~h^uY-5hxyB z<=C2ei5MwDDH6G?EaXh_*tK~kM4$>WAVtcgoZ{ORXV4gGYA{7<G&o=@B0fFAwc6{q zdmLUn?7ThZ5n(#zSg%q!iLcv#%bn)0pyBv=UN%eYRVv`_y<Y)Ko-hHn%WaqD+If2~ z#n^eDo;YCV9XL^92YevnCHu5shqAh=>^vG;r4$l{-S)v<dyD`V%meznc%RCusM>!6 z+p!oWwjWB6#Yzlk2*&4dhIjmSG+52sVNU7ae7a&&+7`NLd)T>;5P80Zo_!jBbiqNj zN8m;s;Y^d)=2vPQ@WO^!Uz6LXiOX(Oe9yvh27HgxIRbph^CGzpi5u`6T%Vj$ag>a~ zoB$rgHtaQ*II_pqtF$G)_TO#2FkEhKwKd${Lc7EQ*it!5s;#l4xAB{YdTHOYFUDJ0 z{GEM)h2E~%z1Y)r4eK+Atk2T{yI=s%F<2paO_KDmU9bxN&`0g7gI8VDgZ8eV74Ke^ z4?)&BMR&O&;J1xp6!*#p344HXIYhj5&}FwW&B+MOg3k=UXVRuPhT&hHmoIaP8UB@f zYW*7(Ox)<qiZFSiKa&a5zg{uq>A~-{lCZ2R3ejTgN76)E5(Ux6yZ)(6Zbf1t;Ypc` z&+zx&Gco*6?}an`j`yzF<HjgTE3DJ}p3(|=cG&b!#K|-KILXY+V<KM}5|1cdCar^1 zd{qdyG=5wqKRVR2#@OavHAF6CA{UT`nos9(G5opA2jQJ#)W+Er4F4)H6E!|GJe0{a z*mG0xQ}JfSvB>9{EHM+gsO1k8Oje=f2?>4VL^+}Jmp#vhzC>4yrl@QDZ3}qj!Atbn z71tuCGI31hj!?b6BDvZR&SJIZ>BrnQMIFieH0<yzhHrvQg3amJ@GyOg@bEw{|D(p8 z*4=jf`|JW<=5DWTd_~j8THlv39lNE5FONV+&-|0$nyvJDEns7z=Em%S4BC$p1kb+x zO}8N{#2&fGyY93-tI%5A0!N=cD;R0`YMGL`aSmhx#`^v^=%5OrmI|!%T|oy_$EEEG zS%$zCd3%`ID;C-Lvg&Gkn#>+q=#2~x#q)*sO;4aGE7&Hlz`JlEr@d1+2)0+n)j<{R za=+gZwm@9@8Hva9bD)p!cGBsevK2xA?zef<wwohl>NtfVYrc9`3N!0z->ebBAZm*! z{zFzVzr5G~|2xIJ^8bMmG(|3)mttgBVIqVl@dZ-T35Eu~k{8Qe;(mR;k{RXy{rjmG z!xwS<7CsIay8FNvakR%5(NW|{Cf~})s}Fn;97X{)bZz<n`c??dKh_};Xml_l8`8Gx zKmQc%wnr|=oEDaseL8c7pV$ZIWq%OW3F&i8Hf+VC<J6I2<AFDllmD5QB3EaLRc)(G zpLZsk!{&}KZZF=#cR*<+WJz{N<cfTL^XP^+U!0<4@2aM1f3hR2a*x=($)7wXEZLe@ zxly!*USCHBNA<T`m`gPe8x2*La}$c4C`MVW|C||T&k}DTIY|z8GLd4{MgYS93CR)5 z`tc4EUp6mAohDPQUo~ttX+azrb$HCegx``{x$$1xf%xk>u`hT>!oVkLrX&mtHa{~I z?|mP4Y@yG&?<1U@cWw`Nzis6$WRVez_acvqEdDZArm8Dy`A-Mg+A1~w*!y2Xu6ev8 z1pI*Tfp)u{_;4Z!Htr|;qciDCq#pGy6CaKNG|<1N-8QcnGfLdd1kDzO(Sj+M7h%`= zQC}roTVLCUhX!0*4ID!6U5I5)F8Y!%V6mP4?8I@@u!}i&l_j=E#lj-bhgY!<ws&A1 z949nW%?sd%2P;0aV;yj~LkEX+@4=8*AApEwpg(`=>C?8pKE>Ob?T>oO(5K%3{Mq~a z=pE*Pbh?s~?WWAb==5P!!ZWn+DatnV7BW5ck^S8kqR7vIB5zx=3LU8vJDBSFwT*6P z+^~Ad1qeLVRjzPx6=UE07#zP-gMsa_8^pFJiZLt1C*Q;FfcsNGB-()yFsDZN7@i`2 zmG8?C`R=gwlUU(EEZKPEFB?GF!ivFXdec7GgtzvF1e${ftyNay)B6W21XdrvXIt-c z13LRX7CsGIY!QCJJeAksC^)){#S8^}R*^-XEHciyWSqAJcoR3y_}*sQ|CjGCiQr%H z&E?wRtGDy}5&Y{6yQB&n?SY}_H}J2j^H(5k?BZ>nqWae>h#3Ne$*UxJA;yO6#lmcL z2c6sBP1f=3=kJkrsxDeu)E&6-=ovOOA5srit(wo#1?WM~*d>mK^`QTYL-oN1xByt4 z*TM7G;CLGcQT(Mi2I6=E#|zMNmO+2tj^hsS&Yd{!;poOe;Tnx2b02UD(1p(9xP)T{ z>deDo#WB(Y7x|LWHmI6A7e^^RwX_I266vF-S%yL4E5xm04a)>86Qbyf`$4HTMZ*=j z(w#~xLhU-5lLjK=6~T6HXT`pl2@``@E)p~WLInT}mYB{&Dc*PmyJ^r1klAT8L_ZyG zN5TlY?MRT0w>=?_u254Awm~n)-|23!o%=njSb38<7NnyaHEA6kSyHX9Gh>1-lDd7C z79I@JHg&>Hqsg}FqA1Ojv<;CmmD2)MB$e0l?G?3Bcyv1p111@3x>38XGdZOL(0^dj z^cy>2^CztV%$&PKKmw6!9WnV#;^V%|6j*@IPK*dwm03K0?SvxTdL?yQi-!c&Yim38 z#TE$<=H=UFX@S5?Hx`&%KDlyqEeYI!t1RVWntA+5p(hB5$&l_v7)TkSopQ5CITpI* zMx}1NOv2ZV-~MEXSJb~|Ez+zDbAl?Wale7LZKDMi=o~?WUUTzQaVJ>3Pte%(ZbwJG z^ul@X6Nn?DD<%YaES&>)H*RcdifoOgd=na>Z$XW6*bdgB!<7RE<G1GpOUqkV8bXe~ z!rqyO()#A}Ncu{`jy-kFsK^1+3mF6NA1P~7oTUHH@8)`posAn$<Ixv8VIyv=Cy~JK zk4PA*K!9WI7>n0kQWxyr9Og<AwyeBz)X1JThTuB9QSF`rp`_n2BlfLB{-(hvKa?Xo zN!QP<En(MM24P4fPgtgOngnEcOGLGkJM+vP&^i&QRxFD)##ub+o$y@DyHb$TGL=+{ zC)z!h)J};IcG%l<V{8L0UO{7>xW#y-Ztl?u?0L^#A@|mS=8MJV^zVgO%1{QfoB_wt z%qtz)(s{E@GR#kyaSZEmzB@155JhDo=4(qFk`u`OI2Hq4vsC}{4Pz2X&}e80GquP( zx63g@zE*{c=L3XnV|0<|F${ZIH7v6mL@}Pbh0R(FC~QnbC5;D$EtFV}nn{>%3YnnB zjTrZ`nt<M0xSXu_qFl=IR7dm4n%|1y#oLaF9xG~K5j;@bFV=FZ&=W?2CWc%=(1hpn z`sVLF(4UTDzBFmhK#<H=*E`arr6i8t*TBLM1Ee=lZg|nL>6A|p<P}gP$lw#XhwbLz ztg!F;1U#>R?kVo<EA|Qi>En|Cg!OX$t?t|`vKF!_uP_Lhxt`*y4;AwaLb|8;QeUx2 z$k$)!_HNbW<wd&9h%@W+!0EkR9_mhRR=|7bHivmEzu=C(>nQgex`ChMQsTQ0Uou2f z#y77AT;XVxVLGL+zfpGRp}J5C-5FJQH?x5%`bx?^`Bi~;(<8T#%7fNCTsfA4Icg3A zeKB14UWQ`MQi*_Au<DzM-k=;?*K9Bd6(3zO?zu8F$q?S-q9^SFvZCpVe$KU_^%4T! zV`fs^ATrsMe)r|R(~mB59#q)XBy`(&O8?<yQv+@!>oN1j96^L}R-vcyGS+|NW%vn^ z4+X2=*l?N3hOf=)l2JxOIjjoKx8w%pSWjkoQ9NB}@PnR0U6D^GCs0?6)!mkg<$1I1 zjQj0Ev)3}AJkRuvsZA|6=PS~#<z*s~SfIg)7DGgalQ~idgP*84N>sGziPCKAQl&ob z2K;*<HU`0_+NaAoFJ??$wjUR>l_qat(Uw0$g{DfgLm3n}k+3J>8qnRAVdd$-auYow zTZuZ~j%SU^Yv|X!S>$~=l(FQpyfE;qD2K8vxh&7SS(=7xrYx8*`G#pB(9<PRhP3|L zWmW?}QipJ^sCaF$RZ{V=R#+5AnGi2!PKFmapcfiuQCe}AhLIv<h?yqFJSB!Fr6}$! z0mWrTAqgg!)tIn!73hNEm+SiYyWk=&y3x6;qoY`wI~@!IEF?XV(hj~mus);M>5SAx zQ!ZU22#&+%d>4?88<hj1eQ*QaThucCa*61uy1Qh~7BS%`BC05gs*SnZ6KI=FSt9Qm z=m2rc%<gbz6UwI1L>5Pd>n|<xJa!j8X!T`;hceypLF?(e5|J10pBHI6x2R?K<p%N5 z$Gh9-fsG(PUw>*~@x^TO#2*i5HQ4s@g|LPQ+YYe}wr5{FR{@q7f3>>}LJOt%c2UdY zm%*PO>n7>y(cOSNbYzhy><Z)|*=5K>!QCiVD6Q%MgN~S{P*}mB9}0Q-6$FjQ=!y+X zw9UUbY>Bic)y*)Yxm0=$yxDiV;mG`WQ3Ectu)idlj$XgNSAhCCxgJgGfZVYZGHW#s z#70nW;b_OvjiW!VPYK9ckTEz3BSQPZqLyENnZ!SOm7O#TQEmdr0tr!}vh`1y<LS1G z6f((LZoG;GVGu=3jEd7<d-c&Z;ot|B1hmQrOQQUjKnz{h5Ci|S6Y=`hi#$J&eZ;>0 zh3q2+IUM_l@jtWkw})~esA-=WUtW@ctn(wOoTdGc4U>-!qfZQfhgl7&XVA;*7j+|6 z^NVi9AFk`y+<731kholY!ne=S>6MiJjXSw%2B3FdOdAyy?Te(eix#!)Bz@b<^^GhV zY>EI$qx{YTA;fX#5h0}f&i_vciB!F~$g|=OiB0$Xg4pzy22Knqyra)v^lLGs?w6z9 zN5qhdKT$KVvzX8uPvp~=La@0HkI1L7=+|Ds?DxCu{B7o#k#_#UOS_WGd!kmVenHR~ z9CG#;xU_<?y}&tR7uX~~{PERY-n4_{oY+GSGJJoI0d|$oa*Cu(0@XKuapPnLvNP@a zb@xsDPZg5uhew+Dduz-LO$+fX#bAunWHaMP8`eL;rjJCKI`aAVuDjwCwkW$Z-tURB z!zwZ46LDq|QVxa5<$3CT-J`sJ<fi5cb=+77PaUUBPW5L_^Q(gG&@okF`}CA?lJ}>- zKU&S-dqSz^f0|PsqvjvTQR3fio0Szv){4%Ci<!7s_51BZQlt#mPKFN2f$N`tP{s%n zg<if7G8@B0VI9C>A&Owq{0wnej8y1f9WMAUUk?;NMaROH)L-yfYS}~+I>$#PqzXL0 zhHleP3eBs%6-ZWLw`~10ui~0c5HTcDsTlq0RN;|8#Bn;Yg_Xb-rr~IwCY`W&B0C?t z1gU!xExSPm{RE@<=Ryxd+>x=r5WHwSQGjs4#P^3Xh}1?n=)Je^6)Aj+3ux1~LZp$w z8c3v(yN($RC7veHrNZ?>&UT?_UDy&#njZB~(**&Yb&4XquiaAxzu~I^5x{3M3<|oU zX<^IlOQ?p=RTIz~2#rW!=!(Cw!VN@;-w)f%RvaJUI1#YJJfI8ig)Ki{!nbq#VY<*y zwkjNSL6}J)q8iw#Use*zAnZqiYcH;pOzPnlGsw7+;NMIx_&0L~88^Z!$}R;6!-x?5 zqQx+ZV7n&*C<i4lV{<NEd{s9hW}y&abI6`g1>eO>A?BFjfsexJu-5Lo)cZ+9+v8$g z-a;(!%F)93jKH@+um4?_kG~@+E@5E*_ja3yC2${DQ+Hb!8Jo5D$j@`9x`oiS@Vg$r zXTRAE2b&^)A$Dn?TN*EcsD8qx6Z65J7Pfpq1`#RG`<9U~pfBbswyyjiL|id)u~u^l z=uS-vq2OL6g{f}f#UBL;Coex2MkXqKVasar4tL-ky|jEMFuEV%m;`;18cb0ma6Ssh zG8~(59K->g8S@3$BS*?3jVTLTN-q@%LCOov0bNl@?Hmzld~#vS5>kHYq4I>NezJHa zq46J4LLZsS(v{G@4M56AF{+Z4lFFXBoX**Ud1bdBiIe83LN6iKER`oKkM;62E#I;3 zTqgl$FV!RLgz$EI6a~uc;^{IEhxrdIv1X<rrCaV{*LWQW8IqsGe|aAdBC2{?mw}fm zLl8Ajm$MYKKmOBuiqluMirXObAl6tp*kJmJ+X0H5nR)hkdU`~p;?4q3EWp`R^EiyK zpar%F0s*+KzqUX^7Xbn=M_MBA@*7L$v^;(3sE@^t=AvE*K)Mdy#k=+2U(C#PW7{~p zU|Rw(`aqZq4(1#X*@j)JE-r$~Ge=ew9}9GTajIZ;To>rdUiw^cR~t<=|J};8(oMdw z^{OuKgoBLWpbX?!;NNpi@o|w?;N$eoUfRV>@Ee5O2OOnPFe?%4%4HENVkjy~L(M?6 zYvv4+&VYO(CW^r*xG)xJ=J@<A{Pnx<>3HLIjtG*d5yQZYPa`BOGD8uzQq4;Pkph&R zX!%RIIikz%Hl+XsnG7?fwKy!G{%a<ZZ*MY9<PycE1ufSuVy!JAYmE;z8DtUF2FT*m zl%i|Je{}_uWs6wei}E;xw#crD)U+-X8v7EpPM5PLSWTzalw<n5_qh9jzfVxo>2i`M zGk)tmH9c-;ib#?II6jQ023?x!-z#*y{#bIOBLAp5v4Wu=>d$PB?()j+AP_6BAUV?z z28pw$KO7C7jEur)O7Q}+U*TQ>cJtVC@#q*<2-07)pygxI$J9r^CwwcOmoEC;RI7W? z?8V=CUc89B&WFzxeTRyO?J4J?gw9Z><}cvCx6P{@tN(VstQwdg%9S)6I_?azxqu;l zI0P4_^`3g`*-@^ec^@FjGBxP%`i0-ACgSNax`w!ycr|N{U(7EMni7UXfxx}Gtv4pR z&R|Da+>7_UOy0*1W?8}4cb`jvEXJN>*@-wGf%Dh!Hxu9ce*Aq4zeWGN``p|3I{|;| z@YjHAQ)}-&w<w&Vmf(Ot$C!8#3?|Ry#x&>>D8@*sjX{#uoLL6_`uSe>y%ND*q{<$K z#lKM~yYPF9v?vjY;d^W$bwQ~@XHp>O-Zr2EXuWDXWQ~mqt0QhNp9m=Ts#NRqzSG8B zt&>h(qm91m8ozDwVy*0IonmsiBu+PefcAEWD_>#aQ>O7U)4F-4X~B|_rt#6H@i7HK zCT!Mn{;#HK&lgA&WMqpUW6s5*25O!OCIM)N#lmolaDnIfi%_+vUL>kE@mN}3xJa3$ zrA7Gu0G9(~(3Gz<c3dvn{K#{6=6goo#&hGybMAlQIn%T$CZ!V9=jHKD<M$XxUVQjH zm*#s?$a~b}e&}|1kLv%tM}Z1V`HU%IifP)^XN9KxSS0cuzhiiXY1&IToAyH42d42K zNo1z+ZN}fNC=y2eMQC!fbD{?upIiaEG?&CD02+7z7r?i-Ojr~g!QJ>fBeMdxxj1}E zFT9}Fg6-w)aUz@@PN-5(AIKnTMG-9N!l>c_gDnv&BvX2f-y#yL^{DY%gu8HW@c@M- zcm=R(TpYU>%=FiHy5=BtPgGCCyUU&p2{gQpLpziL7gkuB?Bw#8Efd13wog+aEZX`R z7V`}J$Re9;LV0?-Bi8`EAG3%LbE*i_gpR@%pnv0X(N^lAYm(@`YrrWRzqkePOkTFz zc;FUMPfdj8<v>sGEZVB+c`6GJpxz>WP@qcV2sXJ`YT#3IL=nc)`5rZi7xZ5sVBTaF z&8qz!Yn{yn3of3I)EGc$e|!Of$iqn>@_a5JaKU^}5-HzC%0Ie?@;rnCCXjGIG{VFW z<q}F5W>N-zh;{&*Y?e+GMriZqd!8VvT|T%#aJhq6s1BAW);d92%#X0lnC}@tOhkXZ zfGiv>(Iob3zNlCbZZXXFM3M`27fPnLM38a_jh1jWGfS?OvZY0Mp^i^L@5G#<xopu~ z&Sf;2{Jd;wVYXaj;THnNj*}w3HE^<+ZwjZJ#ZpZg-<`%?%9iJ8(gKLyIs#JxTvkF$ zBAvQ5;0G;>FCJZZ@zmmrSLa`}zNYkTtt_ivKo{|Rbt-xBgH%|DCK5F%^F|ZQ76I8T ziwcyuv%{PLG<6pBL(g3&1H37V(&t?4oJeK`fml6%wKFfmOqWqCiPRX9GwYrD-`|2A zj+_V_8BAthto3vvcnW`H3lt1*&s?R^@hXf4c}!TQL2iKEAmVw0Qc-)M5Ghgbtc2*o zge9dU2E&8^4)tWnr5_{$!}#s0AFs>^GM*|VY%|Sch&a+fLNj&Kj;Ir0`p13~QkaD~ z-lOPv*^>+=&^+=2^zZFN|CY4kit574o}m|EMozu}GxFB%p8Gd}mTo8X6nx<H%b=&J z{01dNbk))GFNJV;2H9dH1=(Jckq|osiTiE-!T`>I$gUi|K)8h-^z!UgaGISvalZ{= zGSIDfepxtQv7->S@kix>@qWeNGCR$Q1n`eMUWT+2Tue_L{eQ8UG=Ns)x5H)?3=m%n zeF1KOqyJ>VOwcC|5|YUG+(a*%@11Y?2N8lKtz_%V)RdmSp-;BIokyRnjN3s=T5D!N zW1Q5=C8H+S>bPrm<i@W_1so1n$Usq4C3ubu9r-K%M&qx7#Qp&Pe04eMTEJ5aWJy{g zI7BdtUzSVapiU8eWCX{!X(WqEOGf-;@(4l~kSt0N)pPIZ|9P+0_A(QPNJ@-<s#Z~W z{$z@DOwnk4s%WE8(kd%YWMl&QaIL&BG9fyoCVJ<@er25%kZrt5`9@g<pYqHsYzXoG zAoLC;O4df1H($<--^uVk---4224<yI#wbyTHzHduf3xO71HXC8`Qy1QpR=BQB$uaG z8O0Sgkiu5h;|~-jA>BfLQkwwR6S?bda(y@JdFuimGUX>S)3O;EKeU*cmL*A&gcl~Q zF>S3(H^2zP^A+*-H)y{KLNdDe7dwxvl_Cw?oM0K={O9u=s_KHvC?W~R`XS?=2+8U^ z_6r@wQZ5}G($WR&*iC((QZD6^Ql8QaAn_Z5BT&l<G{sYLq259gj=>Uckxaqep7|H# zN%F=GfG1)Om|RLR=YlIDYv>UCa=~W$@`a(rOf=P#q;ERKNRhQJ+r`^2FZLHr%Pxw@ zDrHD#qLBf8NI53mg-IO0pW`u4S_+rr^^z$kxj^{_jvp~S32}Xh(F<h6WytI^b0BMf zUL=Sb*ociAz2iS8D<S%K&ju_0wA|k)Jp!~AmlAasO?Y1;2e(`1L9!bNvLwA^DXC-` zEeS8;A$y&`7m=N_=>h;C<3DBaMXH6s$YNG^$n2Dvnal95%G5&RnRbW1I>GquA}9zY zLZFqsL&$1a5z@dkpIlMc=!d<&`QIxxJd-Nfv|&?99X?-I(r7S-WelqFD)>1j>YVR> zg%GwD(fY&p+jx}1Fc0i6k<QyG=U|o4G6XUcVgGXDlgr^r=Gec3<D$!ezCr6DgQMw1 zX38XpGPv34vcY<0xg_z3nUL)g0VUH=1(5zB;DU*wXs!V1$BdIkfYUtQA;7+rknbb{ z<KB6O@h~1?1{&g_>!Ba|P3;?lG8y*_e9yA@5k>J)61oEV`*G3X5e?A^A;WD6^S%-_ zi1*U%^NtyVyq{;mpy_cfY6#gi5BRYaH1g-!N&X)Dc<Q+HNzsaaIYaKb;**&8MA`W# zW!IukjBtdT#g8%ZNr~YJuoWT7?hhDduYlyS6uYa+T>_uy>+{wsC&^vmaMvC^-$9Vu zz5!HY1H55Kv&!W@Z4DQ|IkIyY-8P2uh4Vl9gsw=X{Qfr&?fz&e$)yI*R`Y@L0sjdG zz>Dllg6%nXLu>b)Z(drlwvKqd+z;hjMLL|_=YbOB(%}R^es~OEc%R^N+o94xzEyG5 zS7P6U&+P;<fPAaA&r6XJ5v$c5$hVsKU-PYsy#kVNmGlu^L%vn}g#9j(aA;WVwo+h= zB~wpwq<R+@&F=VhzEv)VM^&(G)FN*<a60hK6Q~}8u?7{V7&pbtPGqvPWg{+NxOD;_ zBiMI(fIuGS#O$6t`KCmCZEK~auGH%$?lACm;Y_Nz^t_yLLpJ|J*BVJ3edWC0ANhk1 zp#xmfUl50#!|AqBRO<l#7rW_-r>P5vzZgbWq)@&{s>O0XKs+!=KJ4^?v7HqPO&6m0 z(U;G+4667+hr5oNao5=g;7~ArMi)-O^xlE(T{!`R5q#b%iVE1WCVaku<WX%dEcG*7 z9#w|ige2m~eF_rrAdjjBdVeeVcn^l^FsS_`;hJORB#Ejh>ez(+8wL$;{!=MQqM8;+ zqMFFn@FQ2leuTC9_b1Cy1D8Uz^<~WPJ_0muiYv#k4Rm10Fh3YIVm98%D*m+)d27LD z86j9;-+0F-9uCKFGqaPx^kyd#K0(QfE?_&QA?Lv|f7jlUKv?FJqEul+kXp&><(WoG zKdN*uVRG`kC4^o@C>0}0C6WJ)%c)INFPl>;694zjsxRgy@*0?rgE+$E+4=Ly3TgGw zN%StLZ?YRQhEF(FTQ=o_A(X%W*w#vU5?Li!3$>l?SPpAla0drKyMtEurHg6}71myE zC&Rj8t*fuJ_UCrrK$;VCefWkhwXbDd5Gw=O%?yZ1A#0v)N+M+52Qr_=t@(k&YHuwI zBq-&`JP`FrO^P{wG(jmx<&%&r_j7QFfg}@kYZ^!72Otf#;-_UK4Rw8Q8fu#8BS=I2 zKr11+jsy8gLF1XUPZ|F9nsA_1U}5HHdOlEmvSWhU{DsxkiNUGjfc9EXhV99a24(a7 zGI@ZW&nv^$xX+9r6#aK~FeU~ldXiGd-vL-&*17EaWd31rT69012Z83t0`GoJ4@h1@ zYiG^fB1+|Ra+6LVQxm&HED+ofs<DI%cx6As{!lp4hA=h!p3Kt;qI&Mx(sR!YUfEB$ zCokQW*>evOq#$GIpP!3yO%()W%4dImJ|vj|WP?aEA&NZ(1vF8z(xJ-8GD3_=3jqc$ z5Edlhcf}nRblO+DvK?C*1t={cvjuQR`gq%ri4-Idxml6&TGX^*4X6`fs%V@G4!;HP z+_%pocRnDKC^n-Ecfbi~%*Ux+2FUh};+SY#=t8dy)C%PGhCPww5eeKikb&5q{%`C# zn~J@wdWA|b-W*?d#c_gvl_5XaUht~F<2a7vN5Z#k6uz5e`4ScNGssA?8T(^VGT~!I z!W}tt`l&h=ICy>VqrV{6y3*FU+`ZoKZ1gwZU2bg*8}7hnuIW!xm`b3gQYhQv0<Zfu zhuG&vjL|Tck&pIy&137dvJerI@z~4|L&Dgi3H|Hi$=__DK?qNB#w4CMjx3VR)fiA+ z!q`-vH%kaLAt`8?lu;_0``tcu@Y2;I>{p^6MW6v~;PsT^bb*Iyhu)C*GxUZ-gf_IH zSeKK5NQd+t60tChQhZ<F89?qCOzvsrMDA2!2&MSCz!O2r2axi;#1=&<{$AkePs$=m z*~i?y2c85(kD{)VaROGZtw63>LI?qxs@U<<OCfS%T&vMB;V+~klPIr6_%onZH`pzF zm`%}dAny8v``{?94(*Nttgjh-q}K4p)2PSxKI*aB-Mhp!Q`9fM0F-GezvaeHj{Kw7 zk&O+NBtk<-RHJu~cMJ~Hp<4HFJJvkhj+X-MIQ!H8w;fOSv}4V$+hKdS9WMpiaqPF- z0a+*0e?xCCNVeWc6`(&2$|~tW1$v`e^wUO?MyZ5{wFJw6WS>KNKp_(a`$Rju?)zZt zIa9=5_u1Czi%iok_UQ|B(-$^w7$k{*`diiSFBvZ{SM$W`i88flk0wP5+^O*o*9k;( zx>zmRo|D2iPF;|Sb<u+ya}24SzTEBb0|#E4vm8ktM>CR*l^Y)~5N-jahJXT0q8;W0 zK9G`8U89E(a9R9I_d&Q2mBmXGGz4+O`XpzbB=Q?JE>b*SfSGa7XnjK>lx{LXV}3$M zti|pU(Q5iHA(Gb3A9+PPZVgR9H`H7Q3|wa<OydSg=pYG+Bact~7B3;8<oFoHTY`H& zMyw&@)7;z%18XQQFn1h%*(WIC?FcP~zHw`ao_w`BzD2s=Aqyb3#2D1u-Pq+%qPt4c z-6u*!uy+;>A%-&4U>+jStdp-7b|oqCcXrTyaMSTS&<x>&wfF_}#ILaqPLZ{Me&;Pw zJcfQRDdGA(L|!B({l0f@W02MC2280{wv+D??l31k%?K~Qr)Gp#4xdgGA&3@ydGb#! zzi{6Q&7@yp(mR;+t8f9PU)JTkVla<p%wyWHqD7ujKc`M>9`{qr8RCac6*UC)(kIzB z+`c_{d)Wc3q)OzQxikmc${`p<{S(PI<Ht9E;J!fe)iW2%4q6$fJ)F=&%zJVwA)@M@ z{G6G6bs?LWeKXrr-|;z~yQID+xcXjuxW0c}bZtgv)BjI})qVBlp}tMM_3iJeFNCYF z<l*{uUvzEyb$wV+54CX+?83uwjKDDxM=FjnIG)8Z4hPl<n%&`&4z2PxNE;nsBCQ9) zwur4Me)x)@)HZHA9U9~drL32wCojr>_yl#Ievum1_{G|@vNX}_yR2#cmUePu^*WLX zEQCw5`h)yX18zK)OAT{;RCji0lHUcPMDZW8(}F~dpYW$Z&pg5Qo&NCP^!S6*Zy%g~ z!^-Qe<hhxg9VbZ^pl>VY$di{OA~iFXkYfJ11tD<0CenLOC#N|5O6kxPh5uYfigc(F zupp*^*tLcT9)nqA=Q*sUo#%*M8TgA`=YZuIn!-e2EN%>q2T_AxspZ3SGiD$CiG@>; zhFueu6JgIHn%VR2KhD9>_1c4;Ki6ju>R0<=F(gBKaO98}MzOgVDYOD;)oKqqu!}}~ zEtf*eT1{3{6|H#cVr#@yxU_sqhM_k#S^3t@O1VNSAL?&vkXnE6TUV2`Ue%0!-RZaO zlzrW)Aq{+j+GlEXC_<D4Ue!7+!<QdN<c^r3sy`Rwjl)Ax`vD%Y8}0TS!;URn(s=T- z(c^xdyxN|ReXAn5XGW^*fp(&}j(g_OIAC5I2F1Z|nR^bT-Vas*50RL9k{2*2Vc2@) z<0XNy(MOZ9nIs^5CywwPtpIbwf#%;^$Ha}@Y_i>aIe_L4>@c^HQD<cc`Pdz{CG%Wr z{?W_i6?{~RP$OXvKdKJYt)k{U#22reeTXkUAK*tC(#YTDi|(GeyJANB9_EWbqMkm! z_<VpLJ$3Fk`QnbAKK`53VTvb?R&N4m8PUIOU!GmiQ_phsl#g^%c9E(CEdxna*Lqm& zgDz3~@y-9er%i`?+q9&ISMTa=lWYp#_H31UN=s&nw37FjgYUV<I%YHrv4B5*m>zt1 zzBZ-mSM;Ti9t8Sy_bf*D3~30)_5rWI8E6A;mJAytkci<Yd_FXDQn}>uBUy6EWZgPS zGd^rVu%@6~`{go84SxJ0(X^Lqe}86B2wcqgotG`g3>TE2%$5&_(OUis-<q$?Yv0zC zAC|XkjT8UYtucA1Je(X@WAbt*4Qq^9XO8?!jzVaEd6U*S{~|Z`tMwn0BTp~*@l;`Q zMY$$JZXF@l+RdoB0K42RX-FUgUHD+24O5!bQ<?+)Ya#tR+}FR}wIhk<=!M>5#@b=H zISbH?KcN~qk*hW{1i~379h#>2;+MTVWSCG~D)vTFi3ZrFKqa0GA#?##*>Dz9c?nV% z=mLZ;Oy;B%&MpJqW|;{O#gar3B1sz<Nh{i^Pd^KTOpbeoKsH;Xo~_hnPtj#hRnKO? z^VOTFQT#BltFi3>4K=&YB9;=<l4o}MM@q+-RioQG%+fI<@ktUGbi7i#`fPG$Afgi4 zjgW@TfHZ8H8`F8Dj;FXfY-dS&DZ~=n&%*6!CXePk%m6n(!PD3<7D#VOWK7Fzub4oo zL@^jvw0Ta9(rA6<SLk}-qiGoIX38i%o5#2dXjz5G$bT8(E4={&iF9o{YiE=$)8p1` zzfH2t@Hw)xgh7Bem<HwL$c^G<*6Ogzk@QcAQ3ZlNyo)ht*|5gE#xSpGklOS_sz9U3 zQ!B^o4CB15^U;^h848}+qdNy-dGc8Z%ST9VSw;73&p1+)Mv4v-nLsV#a$y0l|NB?| ztFyYtj*b4?{&R-(oaAGaF%-ind-O8f_m7mjru3G7-Ba$MLE&p+81XjjY4#XTvp<Zd z>BhI*hH>r05fsD8I+kx{qy7RBhyzFjmV<HMnT<j4$rcD@w<Ip%wuAv;bt2DI?7bss z4nK>X3}I>X3cuJhG+`)RF@&mF=N0;VZ6nq{)!8PZ<SwUwqqMQ!v%S4}N4vY;$r-^O zYy{;>P<q=Eohkm>EhWHWA+_V^oydf&`kvK{UNgE)RX;D4hk?bAjtw~x>unpcS0LG} zbJOQu{zjMnMS3Jv^Cn&gyw{M<iZF^~Napf|*SBly+mjtmbqv<r4Gk9rqn<&bL8+p> zi1BGTd*<jqHk}AsEvL@l^J^i*TZq?4_DzE9HEBe$QqFxL*dyxOyU#^pY?5${>KUV& z*>dX=4cLXKA+Cz(WsV@@vNO+z<Q0%%5{m4?Z8hx<GD@I%2hWf}0xn4SMNWax&h;3= zip@fLi~t?AIn?$Zt9p->r>;@_VV>FyCkZBYJog2k2<hpxBx3y^zEPvkaGi)eo3VtN zeP>$!MOG1*P@<@1>lr|Oj<Z|D=m+OG5k1gxO=$OA(suZSULy00eN-EiV54Myo0h&5 zVi$6G+CN-6HMocKS9$Oy{#KrL)pKV!FVddz4DXACa6y7v3{!-J0g?o^ai4GBh;#ir ziA?=P8_~@?HqunbnU??bG!-oQwKL#$C&-W!maG<vIjhuQ#T!ef_9VqDpos&fCujv^ z6>S+!6XFk(HrKnyJ96cmELhvkN($gJjBOrprseo4$&+|1)zt28@BiK(PY<9@UJ5&T zIkM&jHzQ9EqK*K-CSMZja2;Hmpr*eqxQ~xyZD3qf(X$`o(ZVwicr@J>;L+1btACqE zH=~Y^1NG<yWPEi2dL4)H)m}f{BS-83zAk37!N+g&@}rx4{!g}%?QhazHax?ZxIXgr zOBA$>JHx;wc8Q}6Y2>}2-lNF^ZO3R~t8uK*hr|o&?|A1AIJ$5I4FCiO2j*CRb{5(& zNzlN(|LfB$0&<LOmc-7ZC2v=b6q(}2)f{N+j~#X)eZ^Ef0lPp>jyP4|i9HK7WYC$G z^K8W+z$bBAz9hjkKBR2`n&RnCu11}Kk|K<vPE^=5v-S!R?&X%il7X4@&KkE@C^<Yk z;~Ug3OAoTc#E~B2jT@J|O)jZfpZrZa<_6W=JA-O?XOPDopCBo?Lkif_#OFtXn6_W~ zTD5jAv@;S0r5ueigg6Vj5aTpE;T{HsjLP-X7?u5G4fV)eq8^!Rcwh`v@6UQ@K3%6D zn$N9)`8;#_|2v;7FlviY&oUf#9HT%3KF8k}@S=OMJWa{tJWUw>PDLKV@K}l(hGQ%a zidscg;9i!!$F|~c!T$S?QQu*2Qz`Nh=26ss752zQ9;U<ieT0-@1DR)VedKV8^5b_Q z&i{mS?99z>z<D0d_oMt@INyZx132G<V>^yrI7YS*QEs$URX`>@$(G22WWz}b4x2Ii z^pgRCboeK1>;AVh1v$+hoQ55!LP`}#Eiarde8pWLde2O@d?(lbcAD&EfVi3iRa!*H zQMQBmUU!}Y<Rmb;8%1-qCx+tg)#UCqr%5(P+<mZKOX4O2_U1$_teq-4RjL?ynp0~e z5lKM|pB@z+%<%b=iXkI|Qng0q++;Z)sG?r*=*CkGL6Xo`ciy>#ZvbGh^CdO1ipS}i z63LKdisHH{k{F}md>)X);-D(U3UPXW%K3`ZE21jbicF%Qxe5T<2b#?l=Ox&()i&w8 z$xT_g>n?u3ch>eMpvDdDNI)%lyLhC)rJDWf_<*6q4i@ehWf8ikAX;2tPpLefy z7FIf|E7qFrV%j96>w;ih<cH<uEy;7VR<+nxvYt`JRrR(NtaqlkYMHH!MV8V;`{V(( zpMSQCLl9OvtO5p3`{Zc*<QRv|J{h6*_Q_g%B+ouG)*i{X&m3sy<F?UubawI>^w&Q5 z8AJ-&CqHZF_qR_TYv(^^pFGadVxRn+&CFIEwDW2E<Oyhki~m@)Ij`O?iIE7M1?6=? z%;Y~PG)qjA$D0BvVP#J%#x8+R&hE}59=SS%loB#d!-u&m2(g#m(6pvTDI}VJzb<bs zQL0S90Dt^*fz%a#WO;=|M)a);Y%YMX%p*AyvgV~Qk+8-skt<us8nZBwJb6kBrjx9^ zqwks2e4cr{RKMrkobXWnuAfvYmTB#lPs65#LANp(hELrx403zjil^B|=!)2DeuVrj zzC4a!<*9E@GFAwo%;x*R!RVImQ{Z5Lx)6+Xk};_{$wL;+*Q3Hm4M_=>@J8zs>?+7n zl7zW>$(d2%@siXkeS+@^MMJ)){WRpN%cme$J<dHJT(1`f!RHj7q-Xd%NlGY#DoFEd zg`8>hy?oEV$Rnr8BU0?`ftQZ1Rb0NHx_AL2Qb5-!l1GLa&tHIX4ZlazT%qdc3#9b@ z0+bdIOZsS9#bXs`FEp8@LlcrYsL4zkv#M%nw;$-1M9o!6gx1;Rg+rXqD(6sTbqb=N zvDtJJP~vnD))O!~#GX@<@A+#x>@T05BFRNgf|9};HUCZ}9ci=Vd){t`+S&ZkDYA2k z=M*lMIWWVOf(YBZe9zf#Jl7Psb_Un#RJPnxg~iV5s@l>5fM2k~m0T&$Gm&1*6+0Aq zTf4QuS-Nyywh3Vik$g44W7c+mb`YkOKz_3GJuBM*`FZyguw`BoOlFql?No}im=|Gr zA>Xr%Tzm5r*{uf&%yDsPJDOTdhg&A*dlr+6tGNef;aZu9fa0|Io`s~mk}IE$ax}^E za(kUBFJCTCke4o-QH!=Ei4ygGbr2OV)i-yOy~k4WJzKjGWwGoO*}rT8>=_PEfwZn! zzp2|=B6S#ZbHe75B!|utX`xx3Jd$+tWVW>K|8e#%@J&?d-}q#5X<9~U(-PW(noKXG zh}sm8f(Xg9lu%Hb^g>&1O|Yf7C~ZZ#Y~5|bS_0zQM%04nW&&ubAhfP7qU^R+5f!jh z5KwL+D7v~o*2O#Ryx(UgEyex)ci;EV=X2=fIWuR@Idd-0c`n~aMTKek$SFmhC~K1^ z^sWP#HJZWr?`^V>$y8My?p9}6*~;mAGu6{S&wSvHQ_V5^tFaT~JcsCtxW{j`-v3n- z;>}P|YU|>!u&DO^82=FG1G!R;n#+r2JaufEdib}dlm*WA@9OxN49(zKY>ZRAK=e}m zr=k8c7Nh!=R_E_}ON-pU>&56nW#xMA>&9B|kEyJ#v+Qcmhyjk4^|A-ilqZaByz8rC zE11`fPfjR;tOuQj2gXNQm-LqLyC(3(hoLot5QE8x@moixh{9L+fl^yYij@|H79;$j zb^V!<mhh8oMx5rr0(@mI)|Bytd0ubZ76!NCRG=AL=P%e*69ZET)3P8eHtOE-wI7d3 zU)H(y6ygn~ALy(*6|7tBOMkty9g2{fed!gxy0P|Q5A0Hm1f%MfwR@-cmQ~tO-ZnA^ zYl`$bdUsV&M*(hqYHxe7z0A{YI(2TfHr~6}BWBT{RnwsDu=jSm2V>kG|EJg1i~CFT z?Q>NhrKr3wd&G%!+fQfx#T|E0z#i{}-qpG|?+%YRzL#dizs^zt<K(Pyy^6n1iQZ|I zhtFn@IGVcu%d_y2vdTVE)?Q$Z;}vOI^KHEx!AzF0=HGq}DVB?U*28Y9D~v%Q9`+d@ zyAi0A==8EmQ(3vmnM@U1q;;`>^03b-cOet;BAqw&Rw?TPGB;FWQa4dHZ>qaJ#x&Z* z8StO^p)YcZ8RzCNun1sf7@5*!#?p|%syMbTbrqI{wS_LNyeJgndoJ~0MZnBn>Jc}7 zf!6P#Hinmk(X=EWmeGA4v61p#R`O^?=<>zX`bOx6nkziw*&eKG+s^_?PW;S=zGWHz zKgDGWn__|$CbVx?T1=z!ECxm0DwC{3g@V8KizYMHjFrn9N*YT29*D`~G%j@b$}bS# zAR|t_8u8a=dc<Y))+g~jXkkG1(l21#x>{%OIy_<x<^564TR?eBzGx@GkHKsAi1$(6 zYB}#7<kjj|YYpBzJYpr$y)wNVbWCP%`4^~SC5?7D64rQq+3mX!(JOsyyYp5LN-Twi z_GM@Nm&}5gQWqvYKFoNnbJdrnJYBKo>lXSu0M&9G-yH#qb#8dbtZKvfKDY|qfZZ~3 z(yJL!%`v+_E&ui>T?ABG+*yaWGDeoB47)u;*uM`ExOI)=zS#G9kHvn&rMO`-Kkbh8 z;L|vC3O~)9?c=AD<9!;N^OrMiYA&xh=u;0W))wuLUk3x4$0DD8CWjm5P5z?p^#<P{ z)w6mEi@`KBH*`la2P6OTtkxGLhraMv_`mc8*+7tK-$r?D>g$jhh*H%fXvT($H5a)w zG42b*ernjzuyNzsmOv!yi(*4+peTUFxEeKYLoo2JKTr@E&?MBgbPn3E5jclSec3~O z+3~(uwXY!27pw6V4D+cuU-lh7^>x1Ni2yYBW#8#j4-REd_GM2BX!jepvEDZ-2EZw_ zsR!@b1Gd||Zz+HmVDWL`^iTYh{rh5wMXj*dVF)s1Kd=4s6_53$3X8hm7TcfF_}bF2 z;%WC%(!>}^6N7N_JG2TzpOzBR*tRbEg|y_^=D{^MhzRWU96K(~X60%WX8?Rsza09p z5GF`@CFzjMjM76X%{WBc6#Dej)ZpY{|8Nnbz4d?2bgY;6{!VCeU_YtYKXCfSw?5Ai zq1?4A-_rT48{e`|fBo2*`xKkVH~wY+9o$U(8pVglPf$}nOE!k34?YY{44pm1pK?^- zDdK%unGhngvX!QhBeCQ@oJnvn6ZcU?4xZ__5UvO$ZGCDSX7KT!CYPcPd#E06#(Mu5 z)I&Z=8~=5q^H8-Alsww&ry7&&2dZm=b=cyGM_Wk8aKEPZhcY>^ALa;tF9MSC6a=Tf z*DZcUR=vB<I0|rLgTTW5Nm=Mkhmgt$$r}8$Ppdc;wOqpuTK*R_pxaH+^}P9?KO2P* zEB=^}ItzvE*TbxNWqSJuT4>hrd$;8q&2iPT;kV#=d8Rm?Byx^;{P&{;_BTO^&f-5= z=yxV;+HJNW!JW~t=LBInZJ6?{&A9bDXy5UB8{OKBTfegjL&Bs?<3Ua62KMW(k=1Eo znU)xsekgIyLXgo#Y6A(Z{M7UfcmfED2;f34PV|!FmX5fJ_Je)VzAXn9=@2L6gmL>7 z@p`K2{><Qk=uiSX9R_-rgR(6~pi;eknE!gh7m30L_3PTyHZB3q>plwrozf96s}qtC zJ@dv3$nfj91R$~^H?;LOC969~c27R_95~+B#3l~&S7mkxx$2Bume1Aj@KccS?lZKq z?+IM`=2W}z{YKMX<B;VT|LzfM{-sR3<17|x`x!8xzop?q^1AmhHa=9wsr_GN7$3!& z<`l>fyq}$hte<3l+uMBX6v&n|;$o65Wt{2w7ggOmw=C4@z+p}8vp~+rfTWB`jcBGZ zX*tvJRd`Gew5MI_`(^Su^DmQgl7B%2$e$*U#~8hM@TbWR{9c5=x%fK+>24$%v)N_# ze@Pa#3pn>YLA;o+Jb*?nXDul=dq$2J*%CA*kE~df;?Yhsx0Jt{T4?=J8dTw#GEInO zJTC&8jBt@XTbQzJ8pV(hThGDI5Sg%zzUsFcs?I2kgpUdO#2A%lZY@LTKJ*m+b9IIy z>(f-l8jseo2ryOUMaB`HAxXxH>#E;5-MIgB4cx6^55H^yOmtvaS5<cTg~*|zSk?+> z=P1~u!m<<*(%j)FLGMVgM+LY7j2#ujGT51-S^)&>`smEl5pj)yGVyN^b26=aNZ3jC zsF4hp(6G$ZxJL@d5rvK45We~^(hg!L0>J&-Aq9r^*&-ow@{pu57@!s=)ePZRR(J~e zN)>toPVSz<$VwLIM>ujC6M6UYG7+;MxZd<X-ZTjG93R7UYAaHQlaHrIYZ>}ETR({j zr9`{eoklovAn8@@S|2Lpt7_xKHKzwH<8Fa{Ox3|Bu!%H0v!Jaosp}MVLPOc*hq)K7 z8!pZ-YxOJLfIvs9sT*KTNuiEn5HaZweSHDjCZH-JQu8V53#dcIC(aNS>ddm%74)>I zLnp34m?W~zHKQ-YWqo}CQ(pAN(yM)O@BedOY)W*GEfeR`p&b7eb&7YQBjBwvrDESC z#{EcDjV>YVroy{dRl(AHS=h$}b=|Flw}-5y3|raiD%EX4baFaoH(GmYQ0RFriu0sI zBbtGy6g<2ql|nStq(sANX{e^M0zaC}96VeSJmt|In8QBJ?lUp&$|}4EZ)nnuiqgfy z*l0jKQrzyU5N7)|6$!!KcR)>GG+UDrPw!wWQ_*t+-V#r58ESIp^}hmzDQ+{@_^zPR zML9QlQsRp~zp+vsdV7W^mGH8RYa^^fB+t&(m_rs;nP0=}`=^%>rQ;sJUYee50-!Kj zfGH;=vQ{p9ZDl1qcy;D!?+KO1XH1!f>8Q-V1EtuXr<B97^Mm=~kG+_MKlBn~`3Ic? z-4}X$lx*pBUzBlUOh%$My=r~>CcAOgVC(r)o<t3b1_Z*O4YsKZFat37N&I4LSoj2- z1w-Z0HOI7}5$U#cG9jrxaVj*$QWL=hcCJQOBHnM~%k#xkz3_ASq!$qiU`~!;Ss(Yd z?OY870$PN%9ahgl1v;~Yss8HpG6aZye!ke<i?imTUUI<FVY9QrU*&^dbPP3q7ULPh z+Yg`__~ij?duQ(sttXBFn!7>}h9sqDw+n?y!Vo@pbVebcsZx3)Ltc}xARU+xlDlKw zeDTlJ9rzF3aR_V(n92J2II@EHl1%(CyrwheodD=xjW>i~K(MX1S)%}cgq<Wod%m}N z&*@(g!A!}xm5VgAFU+Y|+g`#ty$%WTUF(}me1u7sK$v75ORmKv`(NXAx^&*0dzyK~ zyX2tyLU7Gb|1NRQoZ@Kf_(}@xWcuMqxx}#DT`?kKRd_#>%u~<3upv&#r|><}Ck-S; zzYM8cKM{@Ni<x>jEKZp(-cNmSAN4`#cJzTyoxsEB6uu!(E&0E|s`IW}63{2~W9O|| z!mY(>P9~Nci51$dzZP(9gMOW>{3#h9&6_%3oJmK<yL;(~G97J07m<V;U~9{ia!^9% zz;LMP{oznaZVrhS7r<eEMC=fA?EH?2XvhwH2OS*FyF*W+EyhRmgjJQrSUpS7u3OZy z{M=+MTN2iq6jB|V;OjZiSG+`RP3;W<IBkN;dVWE_O#8xG1>ev5<2=#a3qKxHFL0GZ zq(5}Aa-TiP?z@GtPFn&W+uDmL*rJBFP+hUN-h|<16_&XAssJbF$xD9au>S9r(DXK| zsSa;mt;1GdxDLnWi44_2>Y+OLuhwD6?N-aLindVE#px#5ld6QQ!_52Vb^H_OPWYUA z_G-IBTf<}j>?3NM25A$<?M9^Mkm`~ANNbVKBL$IilHo6kzkft(KnftOM|ujW2`PlM z1?hRDW~3G*io?7ef63pJd`&;c^+hB$C`pV%KDSxdEP(p3&l=7dH}AfvOl>GwnUQpJ z8+atZZngK^8MRGg{Aw)8pDVc$TmSlDO;$qngXiprp=0LYCfX(WvW&h^^)$j{<>2Hm zWDOOv;-U3;a|TA3AAW?R{Cb*4FZI-}#77c<X8)E{`+EP30u4s}_!-*y`~Fa^zshag zO_LC+23Tzc5eMPtC84NMinR^QhrDgl#3&RKLeaaVP_w*z<NBq(iyh$$`;Wc8xNsS` z-&eqRUywrajIvz9lSTnV#-kxg+$=37dmAcL9B|XkS8p0~u1&8B>HFZHn&>TU0Dsb} zL;61Or}h0rZAh;PBSJMuzT>LCn>UB_p)mc?{+qXk^jpHj)nQ^t|Gf7R;7`RVl|pBT zBUaYcoe%m==oJvr6KGvy-39!FX&X@r01>DXSf<V&1EgE~L(m8Hk<|jrhRN0R2KipC zz-q$8`}&Cy0;>xX7xfb(1y&y>-h)6kv_qf-hgL|A#=%P1S$9j+)F^{Ja-KMkj$qav z#GgUTY@E4fOU}Pu!tHzk!$)v+Ld-0U!70rZiwHDkL=WUqyDvc=xL8YK&Y$LrPNJKM zp7jsVop(#7WMaPfLdHBpQV^xFOT2QadYZ(u5#HNQnfiPzO?^I=rkb#irRf1p!!igo zG*yMBAS8q-Cg(^At97`%s2*%ZzuIb?x}KUL<ewaN@qy#3x~G;lECH7Y2&7#6a7DRL zyeZ%hM?YN*KZLRGU4b{)_-Om}l1<(lkVUn>QCgG)ASGHL{x(;<cm?~y7gw+^Y>o}D z4_I@(XRdIO6ptF$=95>N*>xX#N6v)|0>M!UGE)xXOm-?e=VE29j8IHz)c4;9n8yU{ zf)tF7xqn8~f8Hd#Z(nKBpPbhC2#_zDBKK+oC$xdI2~gc5o~9~O?@NkyW!=NQU9>;a zmlR)A840l81@W#d*v3XrOR~RSCFJYvRi6r)>jAT8-+jf0PK*QS1+4QRlo;->>+>>o zu{v%kmTOy~$=*sG2CEmrz?yemalJ@G3ms<Oaz*Jv#ju_zL4`tNjCxdk51%#7T<XC| zjwhedxlspl`Jjr=DmTA<Uxu<Zz+~jj`}(xy$|*CfEmy1^pe>IGo1xvJB^H8Y4(@q# z9|m@-5UYjlu1Plj+I8PHmC}*6Irh~FN!}gzT^m1hzp~-B4~YKF?XP<zI@Q7IiWytO zdgHbs-utgK>+jN^T<N{V10ZlcjJtiufrc_6fD;CGVY6zvhM(%-M?@F-V)zm9MSP5T z_9qz&qcdVP=!=Y5y!A#;U{;cC+Jd~ixF$6>Y)~OLGVjGz_)K%7LTTx*#ehi+O|>-6 z{A4$HKMhWK!50y_p+Y(6*-SX-8ACWf<y|2k#F<y{V#NosDMq~OO8A_Y-FLR>Kj+Ok z`Lt$mlTMs+rKzOVenmOrLAKN=TnY1x@S`5e+b3Uv)vEF}?PIR&h``6kr*G(UCAOzu zkty^6>4OhVGJ%bpl_U)1p#hu4^AQey>NH~M=yL+gdun-o1PQK^FdJHvu5@lb2F<v6 z@tn{*6k|hep->0#f&*8Hn-b}!1l;r)Q9G^K_X!GH6L*tUxDR1OWv7l}SyJYJ3!cr9 z-siJHo<My9D9o=NtXX}<5BUIR{4o*&NFKJYSU7zqvxP+5J{RMQQu9&rvI$~RKT*p^ z$;&2)H}w-E_$YbV1aVkDF_MpxmrW3d_J)^DjPTp%$Tls}Xn~KG&ec(|-q+`dgNa@H z>=%-8W9`Hq%27dJB_YC~K})vJS&&Jf?huC5?kA1djyW)XCi(wS`8nDA*?Y04_Pzcs zwIM*uC-&U4d`#_bdL}prw%GK{e&v}z)4M+Dsoit+8D3s;i{;lcZQvvD&Q{o#=+_29 zktz&0!YSNl+S7!hLnW{huGoEEo>$8uL!q^+XSSa;_uws~LOjV|!b=z2CVrY+i#FVd z7)&OlQvBxe_jXEH*UH@1|B)OKnQBB+4JDIjXYrffdzW}(hn1EJvBR;x0Ht|vL|#Gr z!*V1y8L7Et3Kn4Fw}VU-zI!RQE5Sa^TSBPbvzOR>eW>2qXZc`U&5*95SqxzKc<uK7 zn7c0ZMA+w+@+OPV`Pf1Twet9oE40SMA1&pfSaNmB$lkNsE8nauOnO!WbnogZOQ3sY z25kVscRl=cK(DGKgzpW6{oOREC6rfnIg}q+lOGjG8wZ2?Hb@&I0qAYa9c(tAb+IwL z+Bh<W&oc6{!%W$AX6q7DcC_VX=WR<&e`v41bxEE-dai!;Uk15vUSgBM2!TOZ6MI9= zJH5-cvishVa&E;UX1`^QxSjUf7bQ97I_<YD62J)YRcdgeYnICDzQZ+UAuJ8+U}>l~ zI8AfF>tK(4PJ${?yp{IYpu89tGWP3FkNC6AzF~=*TW%9VwrTcV1z5b>ZH2+S2ZPS1 zrDX=guxtb<gNFl(^%OEW5vT@E*x~h|kkO%6?2q;Bv4qITXCXcpBOplpBW(RKN!Kkg z7fumG730S^*z$zhMzS`H8E-YL?nlHMyg$xX4DcU<Os`XX0;6ZsIq%11bYT1RGI%LE zv2mYp6A{ZC11sJq$N|7+lY;@<x(H~xkQs$Ax9A<BGGDx<;j%xSEuJIe{`qp*J5a#( zZxKp)lg0b-Z1FqFDaN2h0j<dLzIukk#v0QH=X~L)TyMtw!EEtEdf8nhg%e*7zpDmg zxC$vAvcmiEmtu=yOk<-?4=y!+Hxh@XoL0CWN|{>YW=r+fvK{K05lo*e#w566lpmlM zRR2SQ?Cysz2v53F>-@U}=o8>AVT~o7^sd?BMS`KYRqDq(xgbFUhetxq#JE&FXmXyC z0z(+^It>l$l_y`&#*3lZt!7zjWua~1qpPyN8|isC_Ey!jgEwv|EM4Y$_YDl`kKSfn zp<7Bza5-$54lyJ`RkK>6T|1`Bq?&i6##Q$NPsCLe<tj>a4whEzn;1buuaHT5*;#p} zF?b#mtw!5|@K%?|hZxcdfa~Vm4Ftxjs<@gdE!9ouxsO*aZyU-0!0&}&H*~C+jqCj! zeqCJL@qI6xW6a&b(~!$GnIWN<U54=jtT>^e%#0PNEEn<g+MDeD^X_dQ=Q@Nq1TsU2 zJohW-Y*}yJ>xZEqM(QF};~&oZWN2K7FGb&Z1fvQ<h178V>G)Xh+}Yw&^w~dw7FF9B z{0X1EvF1Fdr@G#IgS&8c$C2J<-CjN5BegBvK+TCEk*QLlVgA2wsBj!HuGUp|ly<)r zR~*6J>`EaCTUXcR(DM<PTWxRJxW#j$E*$RmsV9fTOy3k;;E6;o{^^k_PT%xqtA80h ztt(Y)#&Y_D8sC&?p)hjKt7$2rx8t@R>UKmx@FXN#F|R}FJJUAj09g5jQtoC4Dk=%d z>BH}$muQri1anR0?{|CDlYL^QCtFv8w-}dMSWl42d^0VXG)vJIZP|hb$me%x7LB3Z zGwMRKJfO|PW{Wq`c-|n(DY)=>w)V_7ufs9e0(++MvcdTd)+J0zc^?m%2hZ;KBP0R@ z(9|8eReplza9wXd|LT3Xw^@ISeqD=qWhr)>Ygkyuf_Z-+ptcRiJV`~eAdN&Cg>)-Y zIuhY*C*v>K*k|DH7^EDe2}l!>CL!671SC5DX5%kmFZG>)e}~_7NC`Lt-|mHNcQ0c5 z2_u-I>^t0rr8CxM>h@}I_{GV0Tg07F#yy$U?emKx`r+vwi`uK1v2KTYjXmX1xATZJ zZB@w=KtS8emOQ|vxUv$QJ5O_q1KQ}&o3=of(Qj}3?!Gmf*Sze{5b_h(yeSwoenH3| zW^<eq@`nqCs6f76$iG2gjY8H$fyJr$P8_s^tjQ_6@SS(Ca@cv(UKOq3uS<*dHF4oX z$nd5*MX*=E)F`Jrz{e~#+1qH*#wuUK%4a);D4&64qI|Yfh%J40s#JoCA@mtM{(L`C zEvVQqQS2vbgq=3bQQI<;{n<W|HoZ$H084pU%+v^j{g0*M)3o_;z1V!jx2fXmr9iXf zlh52Zl3uNM9OGSaN;y+`Gme3dYo+!A%U6GofRr-y&dO5p5n9@Q>>-mHxJHmUj@0;% zTHjC%V&$A$*T31!V(cp=uje7Tr_K*7)PAvtlNTcFfnW5b_q_`S_gG0`a1Zkx>-<vj z(;kR;PW8ZaKWuY<8s|X<^&(wNxfJS*m*v54g(+@DJbW1p26TjdN*jSq$YA5^vSVyn zCTj`xABmOOVHs><m{{0Pydi@f9ws{bi8p1iH-?FK^%Kn*tSL-%KvN{2h4L9VGbTl2 zxMmR3I4&yIdP}J&Pz<sc<wk&MgyX;@fL)S&o<}22ex05j!)v3*X$)4rR2)zD1|iex zIQ}(mbsqn^E+b}^+Ta{kDvl<eU;~}Ik9^&K9v@OF-b(Z*h(7--&;k2GN9ZKe)l>8c z7>wb4@TxO^@U=aKPUT#bDP036INNBG$*!qF=ioxnP>XPprD@2fLpiSLP@ZJ6_V$L0 z%V)OEmpCoSPQNb^e<tINr9C7&-G&v0j&8KZEbQ^?jqy<d7I7AsI_N{2Ox|A*3;>lN z(GsinLDr#=zb6h_CTe|<btuGd`-u@gRu?Azqn{Y*gRDcj^UL0_BR!--juLqhi^c{K zX4(zjgC*iQV%n$ofKyR;_A_CgoltnpZ<mPgQX8`5HteT07Z5yXgY|DEeU8DSd+v&A zhR66DEqv6Zb)HniP_o5f8lRnq-AZwEzmO{t4VLh^lX5iVIec3W#Sn$qt~+!I6@tH} z`l@|<t-^y_d!d{Z_~=bX9I@+;c-PDe!Pt`4Vbb4%E-X+9K}PUI3+%+Adm;ew?lZ*i zU~?VQc>C|>IW$7@ILzq-fIAR`Y_e6hKXA&YiNy+romMb9c>g))s>OAGXb%_?!LF`; z?Qa5`of<dE-doH)?ALHNLvf6KD)c<PueJOXx47Kh9biWVa&=9bK$;c&a6JnBw%7sl z0U>!5YzH(j9=qXE)t}V1ZrBo^MI!y{=iuS0pmQZ1Yz_V{MY<oUo2S1FBlC~Y$960d zfO4spv5fz=h%<&!E{jMCy*!L%JP_X6=rY=~=QZ;V&8MG9IBy8aM(%x?t;ABcQ!0)# zJ{ep6;%bj!sB4I}sv<ovZ#~!vmupDXL($Qq>5YZ0A4#3T>r)E4IeqJ*V-M>u!2`3S zb2wAiu=E{W<erwAL}u1s^bbc4^H(fC_iTjIeJqFc_Dt)$5_cdv##Ely-8%Q!V-eRp z7ZrXkvSEb@4_1DP2MdmEe9{#OgznWY!GdNHsQIlW;%lTD+$}3fp%VhA`KuCSF*Q(p z%HpdkMGjNMxC}$w<;Ugc3~p12_!2$WBC8Zf;xX@wQuW;9V3r(lXdim0tk48z6TRjt zW?b=1?LPb}D~#q+krAfGY3$F@YK5Z(HVD~%j4q#%oX>>Gz!1c+Ay^K^tS-S;fqC$l z%r84I5Bg%YB$^8r^%)1$UVxiJ-dJy+%!c@Pn(xyW1@y6D9Y~VbvFO?eEx*=*An42{ z!Mpz?p6TP;QxNlnDq{Y$SbUJ`@f*1wZq&o4j^!17Ova-B7Rv;6fldVMeCp;n^9RKp zr6`JI{G<>OUqoTXAyLHR-vwFUq6{{6E=xtnCYgsXlEaTEP8{g8Cbss+bQwN3?2rtT z<5;Pg-5zD$c#>xge6G<llE3$Q^QO77pnw3gFLZ|6u&Y?irZ!BF+u)<VR4{}Ae>|Eo ztCV-)Eye5ruMtE<1Zg}iN<UOWPvc@^2@LkTN=VHR;(Uk=Xr)xMf7g?IE$c~G=Zd)i z2y~^4$0m@ec2=GAX=7b#V`;G~%b4<7SZ}hXSiFJum{<vV6Y)9hF?bJk0`w*yE3d*! zWW`M%I_f~Z$;#pmZMaXNH|alD(HMAN<|{YEhsT8ZonAk?J>F-DUbnk3e{LvV(-hgX z2rG*B%&ca1puE&?SodRN?tnWWi7?!7>HKrBdU;lDqj)Y4VJ&$TYe_p&C(>I;`;hh{ zy@#|LX%EsHNQaQ(z*GJee~CXmfWK#vjv#%6bR6kpq?1U*lb*)kfjntEo=rrGC!Q2* z)|0*5zG8Jzx!t~N){M2wHG8#TNKdu#=SlA2a|bvEWU5ce*y1zRc?{|rgXV;4YjU^u zkW{j2%@f{((wYZgb)S{sjl{?|fFTXA8dug(S5`bg`<!?Gh798JBLT?gVi{M~D3?KX zT;<9i>N2RyPIbES<6Q<#*?m4&euB%OU0LDEPjqs>$wPptq(z@)uuN_JT>V0|!5vd9 zzD$e9Grh1!2tGz@&W7H_WaXMs#8@}<a;doV<TLK4dljYtXe6?N2HEZ>Xlta4ty2FQ z1!?gzllRmo$f+q}YV;}(6fEFSA2PW&(Ly2<)gCBV6r!wkk%?Ll6f6pHeOSRF(>Hsd zU{UCg_m{BM0|kphT-#54-t7l#8>hU*T`yI4eH^afALyP8)O1zfg|F|z8@{mqUh>4! z@e=E0^}|Q1;5VuWMe-TYs}s*CSttkH;lU&Y-&_$hPG_*T&l0O?lH`(t6MQpxw#AaK zSpu|ic->YYH_?lgSkIaMzVc=+^65uaEvGe@nrcwFHTAHBbF=tA8qd0uR&JWA6jQb^ zy87_FO09BO29{b>IH*d6toagHT~xF=L#Zb?+P=41NA_~M@NEvMdd&lJI|qb#hcBxl zEgc<`o&i61xkp?e%F<GWcxOLRmX<2S@%=<uTB;Do^b=)isX|Pb5DXf108?qvfZgSJ z5|$FvYp_<$0_G?B?`KlZDm-s0c-~mtPCV~TU&%bLfq35XS)!S4{U73ahkZpn@361J zJny_&;xOWEFA{G%lz3Z32UR>vG!p$B(L-M-JTI73XH1_|3%Z=aS9xB;SN7{<o>%w( z#`Au5mFG<<53lXxXNd=iUwl*M7d_Nu1m>jm?@{o)>l}fgD&Uydw=dTJFMROn|D6v$ z(a+ru;De9$69@3Yhx>^G_}~Kr_~81Yf9Hb-%@W@xKKRM2d~hd~1KG9A2dig^PgA=d zliT$)+7;%5ojpZi<5Rn<2l{Bu_E>12Ht8Er&%U~*b9&!`Xdhs+En0p-G<Nb$hRnEi zFME&94#jHxdOw9wO^YK>K*b-jZ;zPN<7YQH%;$^5W%Tm<<(Geim*WO(3%eWNzUC#g zEiixZL2ie%9SQwzz9PxKSOEV#c-ZPFBEclWkm7}zYVP{X*w*i%V;#<MclKP5!G-7P zTkV{U4d}See-XEZ>*5`^xN+QK^hmS5VPmv-!yLt|WCN|7P5P%+&>U#iH=dQew=D)r zk}u5|6z%IAZIN@rWe|`1ZCI9h46@5j#Z8trJ=dwft~q|wyWK$+dmp`v@irGJa?Hyl z;S3VIK)4Rp_##9+wWuuux?peA8!I8%8R?4RgsAH(6El;<4sthK*SSNtS9?&y-JtZ7 z`N<;jQ(`ypp9^rzIDUYSdb~(HNyJZN;tAze<_-ArA@|bHsHX-PNKc-W<)7A{CATbs zaHy?6N|qv;n7=O)zo&`$J{X0L@94!gyPX@91B97O!_+6HJHIImuw1h?lRtj1xJjyE zuRF*FAVR+mP{liR#VG`sq=gOpx)0&TA9*kWqF@Cd*1V`le1)op|4`rFdM#kVENoHD z&t^}Ni2A}HNoJfPl}gk1T7|`CX~1GUxq+`VW;o_}|FDQN$R7qMoA{e1>ug;`;-Bd8 z=OjO5zC*9}tM>uP6kOV-pYy^q@rW^AY4k2#RQsj;LGi8em-M;btfGzv$QirE6nVVT zH<6h3h~yJLO>RJ9+It7Ti@)Fr8eb}e7JYdnDz$tn4CEr1ORHiYj+)Tiz9(i+OKaNk zHL6`L4G`B3e=!)$4!ze4d;|EWgD-8&lU}$(+xnIC!YA=!YEkP_S=u{^q`g)B(q7}T z>(Yj1Oyw4ha813gvSd?z<)TXC!hpe@NFNn@dxd;3n1;Pwe6(<HL}ipX5l0Lbz8oNN zIxc?D`W?E4=2hKq^#mK13JAle>uO#F<Omr;XH4G5F=aV$$V%|)XuM%naA73QIIzKd zA_kpC29~f0vE5}_%X5&MnDPot4pl=%Ozvo$E`l3k?BmZO6jS>HG0;~5;B4h+M3h4( z1`zGUcKL?|2J59ld|`~8iNs_EPvFBNTX3ns+J0Fm-cH|Wto(@!!sC+Wag@ZxH@Sd! zYI#DQCg(A~lQCYU--8cBzO#@U<Yzm9r2s4FEd&e!{S`u(57b|oFH7FbG*g>c#A?J} zK)?LC)PewX5teh|ci9jR-3EIbny;#l@jX%Y1#A`;*3p(BOt6MdRA|_JBXI5*()b-L zDaOFFa9W1I-hrr(>)!IQ6Q^cI2!_Oy>oL*n&zA0B`_AD-D-l|v{5z7@+Mg~3^+<%{ zJjvV+N!}0SN@-B<aJ@A48_*tKGNUvIt#N2V$z-GKGYmuVO(C1Vy{_e4Zf;(7%*O1- z#>$55=xKcI<!NoxLI|8EOw3RZLCNXqV<4o-aOtfpQ56Co7>DlOlxTjuP<)3v8vkK3 z{9b8%6xwS-S_WAGQ-`=j@Ebl4zw{X|scq;71kKIVj);x3))iufg5ejAuCnayQIu&6 zTyL+c^tV~dN>`6zbt4d<GSkoJwZyD#v9&}y)N4Z2;3FZ=AZl}?<P9io?rX4MxXIVd ztkxL3m4)IN8g)U8x{gz_Ie0z9k~B!<#n(2C=JYgW<+bM@w@sr@+4s9v!fynQZjj}B zebnbq5;dW_j|yjU-v4KNb|t(zZ2o9O4}V*NWtGjp!2Xt0=e?YfWaPL{JE@8=li_~b zev*9Exmb(<8hz%;h2nDRzGZUvy%HWfbCvPpEkX534|aQ@_#(CBep<=Jc6>#$cb~8+ z-g_JMAaWMUId37y%bf`5hx8qIw;osI`YE)M;5~EY_Z$kphl4(sbW~CJi!Y^@^;8{w zdaAKE(;2pnsqQJUT#YAS9wTi-Tq@(a5%zD7JJU`JM^qk7OWEz0F2M~c9|1vrxEP-q zVIPSvI=-2F&@<QxsfZErM<!<-{E@vko-Qkk^JKTIT?IJ<^vvKo5d$oB#n85RK!+7{ zj74*}mHtX-e!AsN3q^(%=7l&!PCzu1oO_tEUCBkS$2+4>m*y*Kt&&Ek9zW>jRbx^u z!$Z(|T`cegmltcXjk;2F9XCk`px7OJ7u$u89d9f)t^S<d_j?BMLmGcP6<mAiQgO`2 zCjoBz!{1rmN``=p<3iaj;<u+-ww^=a$3zBk8d0g#-<okP9xmvJ!lDYokN0*5k0Rn@ zM<^IUAs;&e=0VUIo!ylj4*FQa6g`^I7<=-c?2(O6o<n%YGpA70#z%bdjB{*3ofPfY zUi#Ntml~ETVzTacqp7r?#LyP968TYVRaJkRd;P_Zrq;Ppd;a=M%fZO<TMjox{AMdm zR8B+$(r)4gH8=kD=t1o_gTC#E#`fR1R_ab*Fw&uXdipwJ<MRb#Jz?XYCY#|G#v{^U zBqAL)`XuI5OdtW)$d?;VnVRff8@fK4#)!X@S~fH^o(~ji8(%$DR;k%IIs<MBQ?7GI z6=Y1|2o5eI$tr)>i7xhzSubld-c)4>6P+)e%Fwi6oEK}|+fN~oOWEiK1ag^$xSsU| z;v!n7|0<tzjCj`l%qge0fK&SrH?lGY#)6s_e`Uw3y?fQ&VgeeCxSkaiS!Z?kNf(~S z0JhFLo}os}P-CWdJYW8zJfs<ORe`vTY-*cjyW*e1W7_H}F+cimx~d6^uIiqGj%WLI zRm0>boJaG~(S9vfNm)ucT-GH=&W#G>UcYavB=d302I#Vu_J(y?@8tiRF6+n+wQc)$ zwQV=nx=y6GkoF<%M|uy5naD5)@V6c55Yi^h^Dg`~V*YjG?;fN#kp7Bv4r!pgAQATr zN79!mep0Sp?rn#<=$>2MTk>Z_RYHU1Nxd2S@;1l|ZgxkP6km-*mWkk4Gq|}?h`q!g zu096+)ru#oKaxUkrmuK_8$pJh(y_fNUql>CI=%Z(_~JFN=?oY!P1rzwyf2sa0p~a? z(`R6P`H4P*+Lu4f$3{VW<;%Lm#}4vk-RWaF-Vou-8qeq7RQqk(=CqeBI@#Bdyj9HW z%AvHhc$k(X`t=%gS{?(<dxVqY{B_D{)5UnyR$iS>UiKAYna5<_MT@3~=ow~Nn}uuh zcFFzaN1($VOi-zK6|g64OtxqfOy(EpewnW3RWiuFLJ#%RHRd2xC~>B2lleLFx>4>o zZ<1ugGg-BQVhs$k;E)q8&A_<RJ{d?cH^Q^v>TR|bQ?RcnUOnDD<)J)2=B|i^tiioM z9}XqpqZpErY@S3il0Wnv9g7&VPpW=piQE(PYHHnYCFSQ;83KqarHS$(+=U2_z-Yy- zJme7%QLE_U!SIE7spJt=N<kjY5MC2!pZ|F}g}I2cKc6q&2Q@L%db)?=T+IF)TW9s` z&tZeP4DJEX<%<hR+4fP-@>w0TJ_nnLFc)xLZ^{=vMDHT{xz9j{+W>4ZtLOGLViseb zebo}v^|`wQ=U<J<rYXygDa$sQ+?uKi`NE@t$b%>gG+^+c@xe7|e3DJ}v3-RVFeOP_ z?+fdER^*FqbX04Vk7`e0+>p*klB6E&Q!IE0Yju8~-sExUO(^Ptale+=Pgo~FaZ*2+ zY0N9$p>K**^d{vV2_)!JPLtUtU&5F_t7!b1dJY&6IEMXQ3LnETj(Nufovd03$f^}? zP<QBUEJ=!HrO$s7@fN{19>x6q1}PKsa`9iT+OLQU1o$E74R`9N!VL4d1pt*+Z1vZZ zXth~id$}PyJ(wNcu%0*&_=0~UHNjADL<0PO^WnRQ4ITgC(6$FJHnJK(#`FFy_OzoM zN1VloC7+&`Y<`pd9QZ~W#b7P$amC!D4$UbJ>I+}8Q3%rBAqcnSD026de8pSr2<`va z14-U(AbD(jqWPf(u+m2<nQZNOOefnPyy>zPv20?>{21m%7B7$+<RjD4B=4dHzxJ-U z*8c#qckf@&ju9}d(B+G-Qj=bh?P-F?sZD~;$KD41MRLK01$i&Y%{_@M@5zq<)UO}f z$H92F97kMqT9aInzlx21Y!=CPDKPr>mF90;@D;;|*(A5{Vm%#C8S@t|@fo5%B~!l{ z(C(YenG61#-^EgV*WV#&qiqb2zsX1#dpKZ`9naWg;*XwU+$jslO;=|a7sp$Z7F-*a z+pn(u4netLuGZ(9>#UYCQW)cc;r171!5$2}c{o0v`nC$o5VO?<O#&=jN1?93`_SqZ zqaDSXeq#jhClYX}C|G2n_k`3q=3!ie_pN&@*_f%}V-wOgn@uhYt2iQh4@-4xLv<tD zA)H&wo6_uMz8IiP0!*7@z0XweSz~zh?WLut-7vl+iO;&d-pqI#%1tR02hzWJ1VDN% z?KuQepSIbu88ORz>M^PDrge@~i&+;991*1izB3xnS~PV2se#`qL*%U6eX;SV5K0(X zXvQ*M7;VwuCAf!l6_DQG`~2PoeKWq#tukL)0=nD;2r9#+f#Oo%j)gl92m*PR!`dj9 zOxy&b9Rt^eRr2nSoC(KyV86kTZit4@kF*R)WfPl{ymQMN0`20Q^12PtPfv(kw}|g# z>wM8`k}O)}`;(l7<#oRH#)5KET#k=iSBZRtA}dJ(s+Kxzn0jw0>$V&~|1jnPml#3S zRm;`&DKe0|T_Q`w9+?mEqsAFJd2Yq#ng8VZFYyBz^FMksS#$C%<*So|XNTIAb=!sg z;Bw5Fu8xa+{EE08c{g0LrD6=4S@YRmD1F;J%xienrGxAaRr!`K2&ML_4zgPx?SiZj z_Z;hm-S|fDCTG7MWYBBuYla=F&fukTu}l00x8riFpYF%`^nJVw%S{G*+m+2$W|rfs z?WLb@98@0mT#qcj3!dwV!@pd;ZHONjN6PTcR8Qk^DwM5*=x9^+s@k^h6}8P)$uKVH zRSJ-bkcyG=kV>JiC7tdZT+c%)L$akZj7QF+dl=?M%r^_tNTg9nw<4t@Wgv|~N=3RI zX#!F$k_pLyG>~tq!*3r_WEJ=(k+BDQxi^<<ioUqhS>&9!wphD2!j*C}&IE9GS$T)E z6H-XUGlq-BA=#tRZu6FnTa{i0c-XxW6W3wFUU;laeEDeOeyJ_W7>XL&mSt@H?Xe9{ zv<=fVz9qHgN4CBRXN@r%9)Q0HmlnuM2<7Wntm-r{Z7eY0M|I{K+j7}91KXA#-)2y^ z<tKEqk%6o+ompc8__-hoS(i4%JbkmCXY~~ZwkB(gMcdX9-Oo)m0n^i*;_OzB1@pf~ z1uL{PbL)p^K7IV?KcBh?Z+4$M@*sKSHg1+en;S4YU?bNEN0wkfx%QbO8)b#95A<hc z<^kKGtgH387~|&=J_FPE_<f3vP2*D%#1i361}69#9n{KQd<+>6H#$Z5v%q+GvSKi| zju!8AeY<%vBWSc7-v#>)uv>nqaUH!1?3uY<ve)-rKXR3OkQFSD?U+}AKNJjbc_cop z4kk8Db&81%cr*1aym}NFkAUA>DTx(FlrjbNt>$G?R|V~2^oj@ji}k5ucvW=Rn!Ac# zi$?lXvAoI<CNAzL#+mQMeo9&(+~cj3_;^@XUq%4##*>~v<S0c12tl^lBY`>Y53C?x zUj~R29z^}|Q+)RLRX~1JXO>jEvj47zK7O}xs^oUj%LCxz@+5dEhl?y?Jn>B9t@pwI z5;ucS#yy^5#_f=M4L8pviMoJ`IpGU*m(BJT5%D&gB*=UquI-Tk4jamAjP{eC$*iEk zp5zoW$yTcyjyWACJ_94@J^mROK@yk@cOvi_Hskjpyze+lut|&ct678B=tRsl(BCF{ z83C&(jG#B|>en{I_(v12LDy&AWH5q=erzh!lvTuF?KgQfRWPZ?g-=5rkBe2B20yWa zxF%LG72IN9aYc;9n}!uSy#B5fu>LB1%)j!)7l<zm$$TN{?Kw5Jdh<7VqDb^jGQARX zf@cT6_yetLpXX(=_p!}MGLEagv1cyy3&vGiUVR&x*`(|<U~TulRS295@Dt-{9M8;C zevq?Gng$jzSp4gICWc#RFSy72C4CLQ#$<{1w*FElo5`nXz&&Q&b}eT5*RWl|x&xbe zQ{K{0NAxIetF>!5|7r?bU&IK(|JkQP+03A92ySzec(_3riZs%&Y+Kn<PLqQ?T-uiU zI-={68+Ze=FykLwV8nV>Hwgi}S>2rs*ES+9j{9+<XZ3nEM__z!UExA?!m9e)8SXry zE5ILeYp?T}#RB;=U(U;pc7}TM`VHrxzhiX*X7uQoscM6LQ=a%tFUH1na@q>6Bl%iW zFMwsx&<wb5uv#t&^En+})9ZV^P4d`-nk~?aH5IoAxNhuK1_3S~@3n6rvJWqbW5z8| zlm5qgZ=nU!!)|sgI0{u-jEogx7XLZ3HFWyZc}M<P@dY=WL<@0D?SptRY!$di04UU7 z2U%jvZ4oE;0y+^p*M;F--Wz)|ER4&c@xTeqp{ui)iZ)-;otI?<`1Y-1da-8X)|A99 zZ)}fGuki^CA7mP+*OBkNzn2>pg6QcpH>BtOVtnsgqUbf0H@R>JnGhU@Xdro=16li6 z#=ClUbSS2-B@_%Dr8`N!JNm3F--R#6jEfM~kI0<lz4=H$Odr|2abxR-nW4z|b^mG` zG?;lWiFrL~Sj%5V#ej3@9AsejBryk){<2*gdQS>Xi?8E@(=y~Hn#bqi7=ZEorOasT zmUn)JS<%BJ&Gy6s7h%KKW_#-58g+l$PQ;kFMJ#X$P)dxW0hD1^8Qse|aR|R-ct_ zfF7oj7?~>!Q-te9xSoi-bfm}d`-=4QWDBlwM>@PkuZW<PAtv1C`0K{sUC3)fI*oW- z?0z*<hwHPzThx5<^W-<4LW~fkW+ZMc`oqgOzxoh5GjZ1r?bgID>u+ar0&kD9s6)YY zo}by)5f$A*;(?;vNRLYGeIHtJSf#SON>!s`2tMh@nGh{w*=fev0HNDxTD~nY+455L z&zXqihCGq-pszw+2k`T;F&VsH%>+IL@-|Z5Udr?BY$vRy^E1Ugl(C*NUXvf%4I5Td z*+LT*H1Dfn2g5WyJ~QTfo3f%!V;yRa7m{b9^4!lawodQB#8|h|o-|X4ixQly+$QcT zH0j0G-*lis>sFeF&*Tk*cqg7yaz9oY+}WX5^5c-t@lH)BMpJ%53c^DqMt$M96dY*^ z#jx0PQjSaB^->uG2~oka%hae>W@5KR-OH)&kIQxcqqG`_{GBt!$K<p9eEhHNc$DC7 zb}ds?@g@jSP#Pbjv9Fd)Ef4T9WSr@_hoS2vCgjxcd>N`^u9NJs<;bdJt1BfK&Es+! zYk&E;CrI+z*N&H&;!OM{fRTqyGYc5=iUL2|oCyZ$v8a=48~->HS|!LACn<O!yw9xx z1L8AlaB8C!pg@cNYYKEV@5KE*8^#9}InTQv>gF_oooBf(AOci)4IF60j7AX_J<q<1 zW$Vw`v!!ZC7-acJ0fSOJ1uEgKE6dh@V-Fm6m;VNo<r;6HL`DveAFq<P)<qioOvyct zmgnUf%9tT38ECrumAeHaTVqto!zk8UHdCBRy&6qN(~c?fSb2$|u~IS<2DQkEr2e+c z{oPi;C6bNGB*`|F&h69m)srOqMDWn~u|iXQhh$&wIY@0?p|L;Ysr^B@3fDw9s;XLE zUX%S|4a7jN|5Ucj<hD{BSLodBo*I!F=hrDF9V>Le_Q-DGDm-?^lf-yZXF_zeZf$ES zFhsb;TMvE!=vg~}COVR!j++Uwb9AeT?wC;fyeE4*V%N%<H&7<G7KY@M#UX2l5Y!8H zMo40;Mhq4_c?*sUY8uXKVX3u4&8@re&Ig%n>*Q1N!fe{1rNx*>;7!;YlU}>;I)1>l zykLj#NgqI;)OQVev3|hy9evjTqZ)?mOa(D&X!uf>`9R-QMiPNYQ9fQj7MF^K&4odG z!zB%^Q-c^i*22GGw%W?D4%HzAks^rKcQf|)y179+G+2SQc7Fh!oha+<GT9emhoHB2 z;|z6oM<b3r-6DJu2_4!z&yyjG8jIQVu{00Hlen#zwNAeWznvKc*o*q8ne0;!(D!rk zjP;B}*{7vzvePGNi?Ss18z0tQz-^UmUJ;d8!a9Yo%)1X0Noxv+1auyzk_P-f^sC?R z({E1-V@jnm_;SYlyI$vd+FmnUG;%UrDukh)75K)ztk?S1F-|+I(EI+eykAY+e8#*s ze>oc(p~lR8IO^m`Z}4u>N9G!NG7B%(Vy&zhN^`a*pT@B#U+38u_xI7@K`W-bXnp0F z(|<3>m1-^#t#P*<Q_Mh1)Xv&o>uYXg0n=f(yY@Tz%K4mRjr7QunXK!GO8$(=_>9(? zUM>-I$fZ^3ndKQ%UgQ>JK&1EWT?aK+$NR?CdwcQmg1W8G^$+-ky)>p*Dq}j=v-4-q zl>YJVmh%RT_bEGELA}e)xG>&JdtE90<6TSReO9kL-kWH=uR0kX@3OusJeCKerhVf* zVZikb1FmH~NcjHAeRPcX$N|?A`>rwGX|9CFJ53>ZXlJhKyHbRU;qiVusLFUJ>mSAT zr+EQDUD0t(dO{reV}66ec9I6uqJOG}28my94lV#wI*j+;=!Vn>avb^D)`)H#4yiZS ze9+JPL|q8M4Oy=WfpOHc0YT*xz@*8%PY9e2dm+H8LJo$99>AgE9esITGrg%v-_Z16 zK%h+p1}lMikfSy<d>0UC%7E~#iwI42lqy%tC&=a}GGBH6FmMn8`t1RF?+#xU<q*Gh z`Y@O1i|;yc+<VqV$`y)6Fcf1oXp-SxnBj;+hWpID;O@FG|LGa{qK=o}2<{7bXhk@I z?Ywf;+=96TIW5TpQchj<2h!xpZ8ZNRE!O(k);o{#dVB5XCcdFPBW40`{qTcJe9VLl z@XUMK6t0<@0;U;n0gvm_rwMus;aL`#?5dNw0?06UcIj^x^drOME1z5?-y-Nog~>k* zAWsqW*<tdx1ISYaeNLGCj{#(d{qLW^1-!3RVHo3*kH^H&kDc$*j#7k+!fd8-+u_;= zHwFZtL~J^)RG#Wx!nA~hL<ZjWVIPuGARdK}1eD+RGpzTJf7X74=LZtpuO0q1<=l~L zD8m@BZV}!P>_1}6X6(QFU}BV9^H2dJKJ)>nX$dK>6c4=L7JsAs3-B4@JMZ^pKz$kv zzJ;40yAT(5wS=H?rSO#s%tj*9QQ37h<|TkPDED&NZ)k1wlro+KruKa-S-a%b)l))* zw(ZidD7CNuih!TW677O>djd@Cf3Fz3qfnwGGVVi56iPr}K*Um}XqwKax7!~-a0y4+ zItr4Ci(H3Gmb;J@{38ck!9cEq?#8dW1I`Culz#>AtM)*DhF7^H>hfc`e*4N};DqEZ zgJi#+Wt<NkD|Mj|p^$OL9rkDw1Z}+Y;u#$2XXy;iTkjGbWT!Y4e!Ly$&p?*tJ%6UI z0G2lf?})p^EMjA9#KxRGgY_LpdK~r5cZrjTK7r`JIR$!Nk;(h<8H}T~K73MoSutZj zb;dbX%H{h{_8*_YTA=86Fd<A%z-h$Lg-b(&78m)N2H>?OYj7Qu^*jCUJmGc4x?+ZX z7)<AiHBh&bMV-Xm6566h1$<gNpR4la!YW)r4zvIjQ;~yP<A1<;k@h8r+Fa=|CDWHq zQ=5-D<rPw~2{mWU72r(`okpC=YM)D3gE9gDjLd<JIYopVeoDGY*6U4!Y~VJm2X)>3 zIve+xxv~&HW?Wo~HDm5@Egn{$!>ekNFyADI@c~X1o@omh>zBO_^@zAw`=J>Sq~h58 zMK2iePO%#Nl+hPs|J(fK-OiVs%l;hK+_{`zDO;~-w{?^C%4OW*S960fkV5(_Zp?B% zLvL@GzUnWD+SJ5{>qj!p$9G%2FU{YzvAyG^`6Ri1Lmzym9TyD^W$CLL<N#l-+YVv0 z?b+Qqj9DB-K#>Qcx!m9Z6E0EZ&e=>W|HG~g3tA6$H8ft{vm3MkmWMwbYTL>5h1T7* zAsW8>aGphGsF=x#ri0%T;m{;c(wzfClkC3ex70n_Ugy0h=%>XH0z|mJdmo?Cu?;*# zw>V$6XDilz+9E+);Yu;?Rqu#^0pWEJrD~ZBK?uumd^6y8j<fAEvb=mPcDD?j{M`WF z@!=fw{C|Xq%)xiVx^Le<hnyEQG2@1$Soh5tb&c~vAPGl4X&}~=3*YNuSOtuLIf7?~ z=p}Q6-^%6)8?etB4TG)O&SG`HlEudgbEDu2UOYoQPt&AY;g3QXrXe<~gr^|!)_M!$ zOz-k(6I?8LKL|$WPlsJYG%i<UMiK#|DmGHawNYGdd6%TKFpM*$3u>)^cGwPf?HZq8 z^aGZX)K|t_J*N+7VthiDtY723jdR*Cem9UnGlT~L^Ysic>l@^d+w>(XF<s(a+5{Bh z{p4_7-WWwe=JkAES7>s%^u^sJ85bI*eJ3UJh#5eWwvdY$nA~oWY%~?!i)n^vr|&Rc z{tjp9J81g8L-m|d|K&T7t<bHAM@_yD;I+d#u~!O6CswR-md(LT%+SVA?D%<eW@zwH z$q8kQh}u^wvE#9|^u>;M8+&;~4?Q=-dM<AVivx;~JRWnTh86Bor;cEC>CEtZQ{IrQ zAAR7y?r6q`DnZ?1%f56eJLcYdJTM^v1Z0}Z9dR_o+V9Qw0J-kw>=z6}%onG(A?g#` zq3X4G$ebvoLK}H?i~Y(G9B6HP1LUS|)zR>dNC-2OHH<fz;`l5wWpQY5Um4$kJEj^8 z<|EU^PU^64WFaHjjoQCF;{ISd!i2{$KP-${t_!JKmM`qM(6g8A4slSJ599xyT_K#+ zu_`hXj!-lUU}$Otp@z-c#%Hkhbx&6eW%mV{oPS{Q)vyJZ7Q}2?HsPW6)iG<AdD-{s zmNnD>0$`z*i_$&CFo+?wAm-lD?qA-8xz)W3;1S?%_y7O_^**Nh;}c%%Ln|M^?N!U8 zs~%1^F1)EacyQ$d@R_Zv%TBFib5=0k4f8_pnaQwNm)LmhI~qQZOWV$oZdEsITZUqW z2n$3%Jn@vVSrj!)7|JZxDf>K^>V5EoGKCicZlGQz=owP&-(#}>^+dJrP;M5w%~OCJ zwE$NQC1>}Et7NU9mu&&?z{@AV1zyeBEWlkudEli14{R0Su%VE*4In>nf8hiS$@(6* zd+=)d^0FI7xDKqXM)tKJy#4a&Vj&qb{0_zp<ZBTDFmDFF77#}O-w6^R<r({)?&_Hf z<)XYVc0&RW(E-W~XSzP9UG{IUvH$TXr|YlB<d1T*P_k02ckq4)3~-I-Yv42u@8`-7 z!dd$s9GGQa^KO3;kGz{ZnqHVM+X-f2649pi1Y2Llm>-=jU|sl+b7@}%)>F7|!d%LF zv<px|8CZ~X3GO-H!HBa=HsZ|e9-onsj2JTGXz|-)!~#_>?JH)iy@#sD9>M$ys9PG= z5LCm;<spo|uUH-M5^g&(Y(op+65`IqGnKkPRtv26LOOfHZ?a*|_JT3N%}s|5U!|@i zrKhq2^X*Gjx2T5j;iAejl<}q>3FAou{#8wr%dc<bk5nzY)Ud1p_I+o|;#LneRR5AI zenn7~aq?%1#%F4bIl@JNA^hRqc<<%hj_Z36@;(9>4C<C{F?ItXwKl1SEd%_*)Dy<1 z4rXeuF1!;E9K)lH$q=%zQ;ak6)`_!y=sa0Vv>ffWF_j{=iL%Occ<xY#V~=>_&<@t4 zj?Yjhcm$*SkuG!@p`yAX-Q0Iq`z{k`0n~LxxnFO+Lqb#-^TFH>!tvS>Veyc`2yJTn zG>{>_lPg{%y~J6<_X-7Qja5D;bi?tpXZ)8n*7~QJ=B_KS&c6nCK}cyJ-EeDe$NPAt zg1hi4N><K@PyqDdhIu=HKPBTX49}(G)IjJk=291QvmdB!kn{eykj_SWS!QDW^Od{U z-D<A0=+T>;*XPbzEBpG%3R2+I+~8a})1vLiGY`b+ypPP?xDkv=a8dg$QR1q(u<2U3 zN8jLS$3<CL8FoT!JaYh^P`>97P&4;x;G%X;;uiNgsg)fH=;Ps});O{&kf2FR;`IsM zw#z2d7^qZ$k;cDifwLOI96fi)hy5|j?oVFxrY}zC%fHd5G5E4<zPJcM6YI;rNysXI zy>eETy|WZ|3PEXVyvg2P8p0Qsty`KjWGZ%TEKCjToIiAEvEv+x5Ry%8Z)RiD=~fqf zeS<|SsBO@>3T_5)z&vjjS2wq=IR5F_L;t+<)2@Rgx4tk;GS^(Tzcru6GHY|t5SqsF zu{YUYlo&o{DjR2a<ciy5*{u5t$!1?5*{r?%vUjt5e%5$CvXSM6a){S7PVb_UG@N1K zcorH8_q1P3ysE4+x-5JHaw|3F=J`;orAE6SpLs2P*Ic6RoZCmmXHsCbN<&!!DJsm# zx#AQWi+9Rca~3o~4xeYeF;|>S00`r*z>I$LEg08*yn1|YpN-Y6SHd<{m3m$;$Tn8G zM5ghFyRX_<VTTr^df1)n?O+^%%dbSZyX6qn*)7{pc^+px>HU@s^65^-sg)bXL;YMg zw{gw)xJ9wXTK)Y%Yb-%0TVq9EAxC#iuFdnoF<tBDzWkKhb{XgVw;&TBea!O;k7%7- z3U(@>jwd|WJ4>$x!)voJ|7Nme3`7JBI`G&~-(E@Z{_XBYvc-ahk_<Hz*A{s_z1rdv z;=Da`WY3T^z4yu-R6I?ugP#lIJp&j@63Fe=H#BSsz8F2gy9Y9np@$)u5ZCM*KyA{$ z^W_iq=OwHaZ%h*p6MNAm+bVV8`}oxHwDbcb_PSCz0v$@uluaAg0Q$dfP5J;st+-EQ z+j=isiV4+^6DyTm3tRVVAL$MHHw6E=#`SX$e51i1y{66k55Qem)^vL7?j~hu78<;1 zr1`07VhdHRMaEPLetk{dJ}((g(eeI6-N3I~e{sOCLfuJz73tkURcK2DisrAL_QGS% z+g)<C{z={sN`PklA8>BL2*2SA1#i0Wlf-5Ego)-)9dOrp7%v&sOuie0Hpa8uYQqTg zjJvr+IxfODj4*E$9(evVaVa(I0a?!$cTKx?m5lnoXqN|$R7RJ<zNN&aiGNr_3(t@w zyI8{Igx#r&h~-77g75Px(y=JwoQ>bEd!SF9n3~Myq%$7&_99(`ebi6R$~iYzAak15 zSwVvee{Z~7NC7iEi589)N7)v;UlV#y<+IE{+bT7oAdG%_Y_S0F`BJLXhSb+1dYC75 z2uQ_RPf+a<Cc;r0HaS|@Q#IpU9kwb{*Bcn``g!&z=TTiOjBQG^^S5{7(2k!%B@JMQ z{;8$3N)_wv>*m=CQSAo0DdlJ7CfOgtq5tCY54ywBfOwq?O8%R@Q#;A+84Jn##8?TN zLuW8<Yw;m3_e)^sFL<Hsnt{KticFppcxm#rB-5OL*skRMLmD0_U%`;mtD?G+dli*y z?jgIUkG=DN{C{=RGym)7S~>*}@Y&(!_~aK1AnE7$<QKrB=cqKCB&%y!?-9xTB?;Tf zA`;~{=FfpxqoFO-z2)4lJ@&2_eNa#b`Sym*A#lmT7JJvnzRn$wca3gu$PRfw?tO3c zdpsc2a1&q5UP7F)q@+u)#|Vx=TpW%~e6c3vh-!1_1P8ZitT}X7NPm5JoMvJ?)?;7h zi}lb(h8%-Y2S00%g;IVCf=^-3fm04>i16~p&m6Jd4z}+|)i<9$oDIP!a(3$*56@or z?To14>-5NL)U<7pH(Uzs{2SIO`k|j8Hy1Rt(Y_sCsR+cy-KjB_N7`%e;-X|DL|4if z3?^4H9dKPowXT#=_*s!Srji&h&qrEM>PVMbhw<mvc+`UccNyH;jzD>3rRO}cEC!;U z2|nLmw>D{?3d^NS9p!sM!)GDD2`u)^D<oGIHL)0W=6dVLJ#}?kpjTo1G3m0rVGSZ( za*6#D7!BmJucu}*`$-n;Cb_V?vls<H-Jpv{cc+`SU_RFINi-$*7IQ<xQ*u^#O8$^1 zM-R!HMLmKk`N9Hi25^CR6M)SpWS{_H%eirX9&WuTb^M0D|8BK4-$CwAyLN5KT+l6^ z#$H+N=@p)iyfb3NdW{fq-GMD=2$@A*2go*<xekJKt}Wtv@EC)HBLK-A^%~(i-4(T4 zweI7J#L)`WFNBxiA+2pwLtAuyHNsgco(SDR4Z2G}IE_*u<__X>)fP1@QCiQ<-DO)^ z5qGQo`Kh6;*5y!<NHrtUxx2tD<4$xXo>0^6d@_#wR*a#X2y{}PVH=L0ncDZ?leIAu zXh%gO_!K4t`9R;=i1P!FeJ3{2yrj5K8uR~w$szYY#*6o!VyxS@=zR+Gth@L>+XrKI z_xAqEH_~gF9eC;Y=;i@SKvb_!&#k-YJvoC*Bufk+{*6JW1X#I(05G4bya-QO1_GFy zWOFQ95cZ!`+w@2n9~cN}D)WS5m}t0^0)`};#}#v{uNf9>4Max+$AyP+el*ph4e=EA z*Zg_U!%>y6HZOX9us3Jwj3_YHeW4&5&-6SNwJp*Zb=_Xw3~o(K`JhAo81q>v@YeTf zP3AMwB7fR)vM*0CZ+_q77|OH5J&t(ZVf=g2u22kYa!n(HCO*g)N1At)Lc!CdO0$?_ zzeJ=8%>U`BsC^(*J!0E+{ENJ)qVDF=b*V{c316IuPwtp#UOywlal3_`b`gBv4ze@2 zGQoVLG(%qCXjz~+j)kJDG(%qCaQSR+?Pnlf&AcT_hcLQYaVG>Etvh=<Ll;mC*9j>f zf|0hsb-r~Qh~zzwVA<hVLe|e`2{<s}gazEy^Ru}6t^v5KIb!Yiww!+4)$p2RKQXJ$ zmE_YX%uR~*qglMnr4xgW)feKeB&PP;IzAn?cR*nU!H1*SgHwqal})(3kMuO@ztI=H z7HL*VzAX&y*w305^(vyzCboUomWGC{4W`R=uP4=QNLtNlJHeH`Zd%Q1`DVtn!Q`FS z+j;$UG6#2DZ#t0P-oCW9rt3hA>6U2ID0*R<e%CAQRIGmEGv>cs0W)VB70qmj!Ly*s z-rB`_1TsreZZ@wdb%}Mz@w0iwL@Hs4LzOXR(N5}}c(ZlWED}n~oRULLjeP_{>AFYK z;W&s#&_?PX{i<Ik?*#w)CDK4UR&BAOv-(k5th2D**!KnYPFr$VV>RMkS!3mjg&gj3 z831~U$`pVeAWrC2h*?Gw6ohOmJSyuEJcT5naVY{Ckn;wRwJyCZpaFUMQ3z<RKCs!P z2xyR#GvI-(E=52CvV8#gdFP~~zAbf-(ZImZd(WX#mmInbuXe>lxe~6Z`;lUgZd8~j zk}-zdmppJAL-oU^-o=db@_U?Ku7(f#kI{$wFVA1SJiEW2I_~ZM%hCOpKy=W=InU?d zJca{pEBy~qeHHdD=aF~i`$@O5_dSpHCP90nv++b&w{k28zTVKSY$DytV<&LG_puXU z-AY%ExPgSjPm&I0%?T_^if-k-91#{q`qsyZ9(N3Mw9mWh#IJNK^(UN<4%DrzI>EE* z|NpubI`?25c2-H&#_1NVBUH3r?_-@F_Re+7Q{xj-EeZQzunz<;rvql)5svlPhlXqF zqv0eXQ^Fv-K7&y(47EAhz3WSJTk3M*46NM01^06r*jjo6IpPIs-z>DRQ|v_he1@TA z6%A`b?e#HhE4&}Ql?Mx5*zQ&|U|7RW6&ftL3?VrZg?Mi}AjE3~SEM68Rg>7nyO)+U ztZx^WmXw7p^lt{RY_!M2I`qi*^X|nZfEH_9Tv8Uc(C^F7R5wG_PI8z{iPrmaVDyDU zY=#UtbOA(8ok4i8mobmd|6M*C*<UZZsxx@4h>H)e`!e7W)|~%EXE0nUR*x8Ba2DnO zR2JhPQO3%>jB${uHvWqXsV5iny!uYk2bAXUO!H>1ZU17fu4RGA*U;V+v(evZ+Yd3? z#-_Fe(orIU5H|-45&EUAglQe?X&kp7cH$eG!a5k3WRKgAhzETNn&1ZLboS|){?cyS zPiJd?LnxkUO2R{k_OkoUhG*Iv8t+jKm4LV-!4uP%mecV+2o%E&YFgAS`e2Xc9W<Te z0Gzuw44k`{-Jw0jaRz)pAoJ!Z_O-)u#QW(ybe41iAvKo&KAk|Kd2!Ky;sv<V%J}n8 z9|L%h^k`*8oCVtf>CqhFbsc?dlL4=64(bH~3;Ua4J=&Ei;*+FD>yY(mAp^#W(Kko{ zCU2bmyD2z@BX18uOokGW6=El^D@{$b)ZYZ?xDOBu_$DEYM`uxIY#%Hb^w{!d5VRn? z*7xCXZh!k-Qod-+Vbx1u``}PKfpCB&-e3w8>%DL0f`|P-ti5|&6Ic2_J~NqI87(1z zBG@LwEg;e)s00KhAz(n;B>@p>?H8~jQrnNPcD1ejEQwtV*6u>OU4gZ`Nsx+ET1;<N z<+Ff_c-@wM+U<4My6d*J-LAFv>V@C?%mmbSU%TJm@Adm5I-Hp~bIx;~^E}Uau7aXW zFv@(-BHxI0p_{!GYH~gvkhslq^2^Cc_{3e~2+}}Yi0*X3(63=(;lfA;)J1@qc(xoZ zKwcTZ@(BT!cM@2Jbbq($V#>M131||#$d5~*5&H^>%_jC0k}DfN#338YgVn^w@;Ggj zms=%jf%Ec4Y5C1@M|EP{5qN=Uuq=`^thr{E-yx4KUG8Wp?vvC(RL_E(?v^Y_(hCX0 zA_{usICxB)5#_pvk2&_9MjcQq6SB5cmLb^sn{$k8IqleU8bO^Uwk9WXzR$Pq(nK4# z6$B%(EruM|Oz|?o-tu4Ah9;)h;yaCaU}SHAM}?#NbjaR9oR7(^Sk$gWY_Di<!E+@U zg1rTXx{U??{~>!iS116p0i9W%IPLgp0o1y%x74a};AML2YKP{MxZ%LVm<-~EZMBFS zHqsOhz?0@Yk9@alw;pO_$->6`1=}93oxwEsQL>qIg{xs{g*I_;9Us22D`1JVN^+Ak zmD=RNl&%qMB5HS+F6-Eb>j)6=DPQM>3v1Np|K4~j$;mwO1hx0R)3Lq#Uxo!1!QzdI z+yG`#atVJ16uE;ZY`fxa9a>Znj1}`3f4g=l>{?6P*=p68?^6;e?)S6>Zl#ty5(*Q) zhw6VRy!^7tUwOLs8AP1>%TAvuxzzg`qAu&2la#6(M(B7(LBO}MUFq8s?oE*meRCDj z9zs<6ci7;bwl+<1aMX@64N7k{Rr8j-Ch0cRFD>cT4j-B`b}0MoP$UTumr;YO)%6>y zYY$!6psrsH1Dd;sf{}yx+{PC8R}$KOhUD+rCAh*@9inPsi*iq+8dMeVO8`6fSgJg) zt*Z#<q5&mNdcU+S{d6NkR*>XXPCE^)zHft&S9zMIL0;g$gIHcpin&~sIHr6UcN&WU zC_<+{ZW}rx==8s>2Z+b~+$VkkIMC^TPIUUwQ}S%Bg9++Xn{L6O3pRCXLJbKX{xv^x z5EAiQ7b!k4J2k2LughY8fxoLN!fWWr3A2x;;Uk;hKt8@l{5Y}uH2mpkplAHy^<Gkt zj>K(Lts#`C26l-(l(y>921cWM*XEBWTle=@Ne*$}yV$$B(UEpnY65u@K^8L)l~i4t z_^UeRP>J@ddK>QXaE={ZR?@^ekLk2a!*#hfcYcYUS$>G;`GAi|<+805H94bKN3^z9 zJ`!;zw%W!>oyiv13AHUzne)5}=Q{G;O;?TEM_~bw+zN|M^8*yG$mQf(_$oQomAs?j zt-YhCO8C}51m$?`6w<(eTR>qT?Ty_4+hsrBDg>VVjVuieoM;xTn+3h=ItOP<|DN(D za#=g}og$dsp{`usi0%CmQ)s6eUOct;#Z$4p4<og9<o=Gc(<pBY1@sO~gU42`?^)X! zq-|)uv}ML^XleMRZK&+(Mmd@rlVupZw^}*oHv-mPof2JEorzqxjtl|$z&Y9K-`&#s z<eVpDUgW-vYW>CLrmFP~zdz*^&}XB(?dek`OE0u8ZN(cKz<4*<`~#$5aSoDj4f_`m zfo<C<AP)vwAL&|W8=5y^5F*H9fjJ0>v$S^62hk%^$Di}ftX?|iQ}Mj$YZBPW0;DyP z+}Wz&p*c0h6t_0Ew|n}j#zWaANw!;#L<Vw`oN-$fCaV%>9N1lqkJNzh=%qbymkw#q zSXm4hthuO%)hk6MdvvxG8hbu}p)qX~r*13ON^+ak8g0qDc%5I^#?P%1_=VLrq<|t` z<QJb3oDgCmb8P-!5&b+Zn3umKYyYb<ljzc-ap;~X`%kJh%AzUKUASUr&B&sf)khqA zdl+Z_g6?KwFG{oxeL7(;>Y9e$1wD`BXJt6*3x@gx-TE@_u^WwxH9RW%j2mo*8%*`O zmV9n2VG|^n-}1j#^lY>#*7*5RzwL9kMC+C4h)wzXZ(3XD5Ti0v0^aIxUY6%k`;Z5^ zMN4eU!>}#aNL(M;A)HRK+w${~kRb&L()i_(3(crA4t6nVcb*qAI+K*jb4|>gCWx5G zv#cExDv-l3&&p()n0cY*xEq?YOpH0yJne?&A`@c|HAmdgyx7DPhnlC{(7ePLHU=O} ze9Sm9Qhjtp7@=qv2XbQ!##tw-2meo~`EM98Zien0I=bm+KYpG%ox=)!2JrHWM<%;} z?zDwFk?k=}N1oA3$bxFwGzdWk*XYeuL80C9*3r<dIS<@;i=>uWD4Rl<mmcMCC-Crh zUrgd*cWx-hoG;)1C8<5MO0Wl2U^%bLCts9uzxem^3DNm16>N=d587Rl{C1^Bfrv!6 zUbioc+X|r)hgtH>k_j8+Wvj5(B%*4f1_<u!Y#2hcm9<|q-fPc%EXP=5x5iVGH9rt{ zdVhH+?)1L$|C_i|&v{8+!Y6{fUp@QE3dSyju7<tE_@4FdVv-0Wl;>R*-O1?|*#&3Y zKs+fgVwOFMJnwyyyO*5%=gGG0qX^0mC~s|fGJvEQpN;#OV=X^LaZw?)W}s9F0#qkM zYPQ}D55+esZ)+?3V%@qqMVnFiv$0%Z&7Wh<pKHyZXU)&F=9{hgSv68=O@3}o6s-Eu zHBmIOy}R=rHKo(mbm1?M$P2aV)yWE{l&y_otoe>rG`LS6^!1rom6Hz#@)w9fNxF=D ze=}LLZ!beW?;<uL(S|oW-`@m7@!pG<i4E^fP^^%y#gUv3+Qp-`4W?-P<TA{75~R%L z6$^+FFL6XmwMp$wJ=)0>)2=paj}QkZguY1%5$Z#k6uCJn1F~;DsqV~ZQysaGq3(PV zs2IR`W$saOULk+Mkk=+Z(wX5U1uh9=72T70xSe~-jWaLek#@$A72bC4AFUy^HPMDG zfPK#_9Xfp3yi&05?Ighh(4I)I=dlh)?9sO=U~ABgaQLl@rl=|SpWxSyQQf!WL*I|{ z71FkE$8}$iUp#pmRO(z<z&HL6<p<oblG?T@sHA<*t_&)f`5oVMd{$dO!@KLaw}RdF zxOZp0w}NCDr*tEy(S?kmYI~)+kI^05_7S3H$MJq`TI8^jX}zKz{Nvz7C4J#!EA&Oa zJuByTZ2#R~`a9LWjzQmUpRd>FeNNU1uL!oaccpg<JnGn!SzJu{Vv19ajE{TmTxd=F ze-!N=w<R7s=~_FgJ2vipo_tU@GTt#AgP5>mxPHHg=se{@R9fg=*Wfr;1g~wlI(zMu z>o=h%NN}2H|KB&h=~dx=IJy7JAKmXC=UT46-~6NdJ>#1my8ixu|LDFCW|!;l|LjNi z+sD^_cm4ebessTeoQt{se%fftbk{2JA-A6ByF>FtnDC~Ly$nfh;I>jaest5fEfKoA z7I_!|M0_%IN#UiCz2sKxhY2|SY@AEE{+)<XSZWvltM9BG-}LtN?<mN37@g(+{yTRg zXmvfru~a=NKtt<Hi^yQ)LT<&0v6Nna1}92dm-2&WZWqtaNFLZ`ANOr--P(czgV60F z^0PKJ#$;!Vaf`SVvjkrF2vjiVTkT>MccZ~N^aV~xWB$#amDgcM`k6P`PwgxX7lSul zVK=RXOJ^M-1#rgv-pM?KAsrGX<VqSRbMo+tXmaWlhO*2X3(JN*TK8R{$v#cbSfRYW zVWK+D>c2pQ=97Xgb?5c9ApJ#5_P4`I^wrV2j|*=Gl<tbfe}=q&P<a1^(EDlF=h=Xd z6Te^M99+*|URaA?4q^<qU7hsbHIginB&Xb`7KHi0?PM?c7qa^&<k*<*{;#$`@V zFwS=hX+MbmwS_1pdL-C=O&tahEXXHlfFd>;0$@a(>-3>5k_gvZ7Qav_2+8CshPy~E zPuI~E7;007*7ZIz<As>AmswzZcf7OHts&L6{VB&tSX-L~1q4LNhx80C-&+VR3>4Xd zEhGBFKaO(;gnF~2BB$K^0-=3i;W;6F%qtfED1phK023m-n%Fo9Y{~GIRXCwtxxrWV z2Zio{d@Djandd|K_I6tQeFALAztDfG@ipVu4l7_IiCZ*1!E(vLwLn3A9X5#3yBRk3 zLMOw)biE_N(rOWPG94uFa2R>JV544p1hO3)KcR}TJWyy4l@Ew6R^cP~)S~I}mUkWA zNsYg_2rT>=ZdijB*7DChZkC4_w_puRLw%bt0NxFOu{fUdxQk(5bnA_1vfofMz$%GL zfglbKaI<d6L7crrTLdF&pl+-I$A~ib|FIx+5%8@O;7e>}CdmYR`yKyD2HFWcBs!V^ z{(lC)Q2x9IzawSHEhqgTPYm`?^7KUA(~dYv2(+68T^Nt*9l#+&Yesm}W&!VNsOVKo zh;Ap7HVJPhYqYvwIYJWoQu3CE+4N;ehM_4Vyrh)8vz*bHG5%<4fibf11_x%31W97_ z#PW~)l@ftuas+XuNBp_Rq1E>)dUF-69T(u=je{Mh_~sL4<Ppj%k8_LpeHtA9(eJ`7 z>E-svw!<F~u7Ied)RugFQqxIlINdq~N1&L=8cyNkEnj%6r;Pc$#AWYw&lmm~$9sEj z3hanMB_}9JTMvYnpSYzh>Ud}SSsXfJD7Y6w$#Le(IZ2%<L<w>+Z$b&uzGmqAYb{@V z^5MnmDS{rP7kZFyU;p?+x9*mt-!p}?@oqx-HB}pP+#f&K*^aqF;n(`);kf<Vvzg{Z z6iyqhK2lKZvCC?PW<jaChOQY(U85HK!4jZf4Gw9ChZ4qy!p{!PxHzOID86~TriZdd zQjqOevys(*%=04wIBG1ujrcPu(U~B=a}$YEc1KfnE}}58X{)L&d9{O<4dbp?OTDOy zQwvA_Ut3XH%NGCEVaghqU0f7fi$8FKn_dW=io*ZyF*spjg?m(c-#&(w>hEZUqG(r4 zbXzdbUrWMm4+tf|-)i}S=zhNV@aQp4Dd<#mdwcVSUcA;5Hs*T=N)<`(fU@O_j@Li= zkmyxDY=0fFiS2-LrRX)RH&GwP+-Cf$BrQyIH}8@B$lJU_61_3ZDL#u*0q0BpQ>g$4 zm6vvhS<1~a#fybMh>aP0H&=z-i)1F;o=<xdbti*EGjRUy>eimLmdfmHeUhS|TIpFe zD<J_-x2hwprQudO)tb*+eUvqy5*%Sj1uXGgo`x=U4<WgH78BYmPm;=;x<e%sG;xWv zxrn0bhKzTYRuv3F8*D$DIR{$d!K|~*5Ncb_n$MQMz}7^}utvn@6%JO9Ev%CTl1OgU z>TRWfe4VU*Rei6o>fV}>!FpR|86K;?v#jVWG}2J3#@d$i;Ll&rky)(^h_VpY2IK6* zP#H*g;(Gh_5vztZpY1PI8<q|l=K2g7KEs@q@WnNz6inn#MafHR&PXa{6=540Z+x<Z zm<VqOJ^8U7*VwZ#=p#PzAdM*fHRekow2{RDIM-SnPeOc)Nr<mlEezFQpu-Sgm3||v zG?}`GCIN*{{tF#6F(c@v<@xncZKDP^&Kv%{gg%BS)1A7y$qs(#8zAE-;{}^e{i8ID zIf>gzO>!NRH^g0oqH6%!F2p4K>4tu9(>Y82Qw#`^`@g?>-Ou$K=zs)2*P4a@@{IY< ztH}8ai|j<s-?%H1JnFI}uLLx^62H6gy9d82{A%#ayOpBu#s3xfIq@sQuN=QR{2s>d zM!Reff4_*|JQr0}wSJAInlE{RX_Up)kX(b8O0<_&Pm8a<wFD(aHmIp-dDKIK%pu$K z-8zBYt$T=&@y1%JVdQFsyu4s`wQ-@4&JpVQSuG79CcEX)y{T<GY;{Wbb_J639o4|l zjq(BM{i-EgpZpwq(tmRN!(SfSz1@FeJp1L{8@SZKqL{!`e)*QbqG*5F5l;g-x2_E= zQ~Eod@b%f9>3{0@fFiI=5jd*<#L@lniS}xKS!~KjdZni!>nLP8vxVoi)@3tHi*oxE z2)2bL>ZS3utSN%>G>BS<xL-r*fPo|Y*rcF&7?{O${d>l(J;W7DXqWJ?FpKTGCL5(Z z?8{=K;08;cq-ma>=;8MhPtqifW9UgCJ(2JvtLuQs6{*e8>b6hFUeL!rHIBiFLkoR9 zg0kE*{KJ+%SO2gjI3l)K5)OXsxUNV+m#eQ@pQq4kJKiD6OMD)Vg}89y;*p7qhbJx` z8egFl#&9_F?9Z+biHk(f)~WI09piVe8&HgEDxZn`=L;A5*Ag3tofIbc>U9t`*QM7{ zn1BeL=7k{iP{vzG-kmRA2mcoH@t79+t4aHO(!S}BXou4m3KO^{6ElJiB5i^sG?LF= zcUk_1VqAT4(Yy?X6w1eg3o#!LE++HwOoZ-P%s93X;TB45y>v}-NE=aUT9hNuhVX@c z9nn|D2>QyO082PV26LEdp+A<iYlQZ48KEQ6h5l&LHdSc5i#$8*U-lDlAFC>kc#bUn z2^=Q>o#%)_Jny5Hm0fc1Ud!qQC@YmfXduMH{`a(jXNY_QQAd%(!>N>Y7t^6A!khda zXI^N6Ox%Iry~r~r!@j*Y0kj+c8<LSz48M~~cCrrXUjgOh>5;Ct7WgmXJJeqCFU}Od z!>6Lh!d(9x=ZFg;Y_7)7$Dt(J`yQ!n4Fz3*neX~^y!TlzA|zDQ-lP$t5b;}3D;FVm zIJ%23wexU=hu*!lXFbm90VF^7J&2g<fF0r1k^qy_&byz<dp|o65f_Yz^|hQu@Eu`X zy`E>LfA8PrfN}YM$9+BFP5ah2H9Z(8qTEG{ujfHmTYj*J4irI&GkMB5G0r`ELzz@D z_q1<;e`NB!<vWEnA?MX@@yy`bNhVAtzkLBJy^zTV#mNi#8{I6)KdpEDY5`7LK*eXp zdqM)o`=H<TDiUFA6)df;`}3j25Ysdk>oza&_mGbwgFX^b{td20y8m9_-$|M}g{DtJ z;~=`h%|x_yPBE^?C;kH=4}}WJ9jXbZRt#c=q*gEER3lIiLByCJ>p>u{+dBVc^F3ZB zCr-iTx0*K-JMMgcrDN}14k&o=T*Qpd_KrY%Ag^T*hqEp7|M86ZylX7ibcjqepeHhb z>v0EG$)nh6>)q+*Rfg<voPwJ&np}4}A$^-_7^896Gi;J1wDT65103I<?`SncO&gxM zU(wVuxJbb?zk_oZ;lIR3f$(|)_qgx7-w=`$>GBp}dt=^rPo6zO`ht>vl3#LLY;CNx z`=8`l*SrNor2zAozj*SjPI%ya;2%*Ik!$mKhzI&bo%)S>))EDqS0-ok49OH#3%swx zuO7d(_?<^?yi53fjo-KUeUIN2{I20=$G#}W?;@^0!|!waF5t(YEfT*Q`QQ@#eJ6gf zQ$s8&vRLU7*c6KztaRCON0G}CKE9^9f?apv5;s!*R7S&w+$Ac)#8BkuyEa&gkbX~P ztp2NYqpa~yvOqFX$l6f@=~2St*zVt)aQ$&Sbyv%;QRT=~Hlt-d)UdV~*Xu(mFM1UT z`f9H&8oqJfGG*I`CEvCYC;RtD&6Yr!qNic`V;yrk4)bNPCR@(Mvbc8HZo0>1JT#;m z7~icH@@FT$?dU@o4f1D8TG}8>x4klcw+d@dw3{zM1$Z`e{lYlnYy~wZoN;kM_<&F> zkX$?`=7b|^&$z82R}7>gkkGtDs7&b9>Yf=FvR-&evxJujl?l--<R=yyk&uif^#;-S zG_uIk_=eEl#Y+OAcA@H#(AdpOc7_^%O-6%8ljIqlmvBe?X~LLBuNg<Lc_;X>PRPLL zMEm0tqu&~0Q8<E%uYiHIwGDzJ-qaFa^~08PhsBn*^8HZd;yU!j=dKAXFvKp6VuBPX zJ%rR0PFx5n_{hb7jSJ3dgjwQG$J%kz^OQG=D2@#XCK9~tyl@qR#L)&vFp^&7@}0<Y zV3<28btF2HUo&K=c|`&#TzP-4|8C--({c@tTJf(DM=k!fCZ`YtUz_VMCqxRVPAZ0O zdu@`BR^|E~q<s@<?>&X~k_>^5-Z8=Wz(*Hf=cC9V7I}{FQC3^RRxMRGEuG+_xDfd$ zE++XXidgV!cnCU@C%RjTy7dnwg!pKuKEY(mPT48&(%fACN+M@37v$`tgg?rfAt-0& z`d5(lQlXvX?GM!fG8%IyVso;tU9TINeM8;ITdWi5j}bq$ZF~e_0;n6AT_}XpEW9>R zH`4zNCVq1~4RY#`{5d^C;Q!H^*}c`v_j`wx61S3RI;kEU)w;#X??`&kqFwC8no%d! zP205nuQqwZsHS}ucRm%&r<?k}YVthj&X=?{MF#U3cRm|!legWue6bsc;!clAAqk4| z;e0LBoo>jG2h>!Cx*vI<HftXz?$@0eK?(I+@d|rpOx!b1YsVzC3ES!eHPxYh4fvO( zZ5p;Tby`d|w#ogb!E70}QC=JEwlP7Q#AK5meA8%He!vQOJlp1GB_@_3IS4mvO)PC? z1;KL;NWI!JJdQGapx_3(C5tu{P^c4YEx-k{Bl=U5<+kM*QgH^pY%nC43aNw1me}Q= zlF=1sSS1oCMhBy0fz~OG4#o6rY9JJ3Gt2({h71cjHm!!Q+9SMi%5p$9o97uyn-B?k z1vGvk^qGrD-ZVdz<uWl0l^_3B8MWjvIa*qu@3&fT7!G$bwBcu#ybanj8S0Wk^r*Em z)S0E~yd+D_^P9CxwN=Rm-V)9~|Clzzz(4<lcB$bEM9t@aqqP}$-xV#gX(C@)ByWl0 zEz!JX8jRLXON7aywpuh=rxs}jQ|oGERI2gu4{P$N)CJCbgfQ2-|9+OH#%Ow&W`eXN zK(k(2%G0uow0w!8hE_JximGK6_>#bn-f2-dX_bi%E7@RyO>14Pw#K5ouvBeWZK+zS zt)aOKKUF&|Dm*Vd9Ok5_;4wTbJjvD2Q}J*W{zMeJWr~x&<%YZD)|u57I8!<;w_NyK z{Te#?TzlaI^&l=j&|WyH?#IPREn+KtxHzCis6{I-dbN<Tw7BTdo;kDr0*1<~OL*;t zarGx{@WOg+J*+wX{p*qbueEhObk!FwtY5ZS8Ab$&&lH79I1+x?IsSNccKP|0jWVi6 z3NNFo)rOh^s&@0a=C8&-Zj=2F!nb%j%<R(I5VFTPo){-Url$a^1l06Y0&V&h0Q`~o znxXJY`__5DJ0Mc5$1ulWvQlAut>>J;$A=}f8;EpL4SZ}msdY;z|7}Pdf(r>yrpZI& z+VyCKZ%6pnAjz(?m~MMv$?#&T^-B1K3ttV6K6r64GrU+bETe)l`pijn)d6+?N$uXv z7Nn2CMNkI)1bgNHjqAKTHt!{JQS~DE7ktBTP`lXVI{``O($<W@QOj^X-FhNCm`@E3 ze$~J4!Qp%+m@f&+Sd&aD?p4D9tw|<1OKT1HX-#sXY-`G(4Yk<4zL&*b`uABt3R+(d z2R`-pe^piYAV@(?z64$tHF6rqyQ&N=^||`YU$tX&!U?jOwr2RA3vc~hIFd>mK2USA zv-y;-$AZ*Cm_Mneo=<Oedxbt;d)rcDr^f6k_(M^1#Pfk4c{YREVV^4T^6^$|9U&g* zI|xzpEL5Mgq79ww$#BiCKp!Ig0l)q24fLl&pg%3z7RjE+jPVr$t;+V`Srcd#o_$h_ z^Dd!Ph{5hqgIs|4WI=YJgTo5rv<j#%4F{UIJ*&Pvz9Tv~9AS(gO?|TL14zA;c=7m- zEtaVjrePACLWqVy#y~VOw5Da0*|kGsk>TzP;V#g_?lRe^ZC~-ju|}$5f@1ImqKymn zp)M~&W2?K#(6ino93Tw72My*2O?HWCm_;WzNwj7(<$2Z*NS(C7noqg&>Aa=~^Xv~U zr``Ebvq=z)?xg2zd-m}Fl%1Wu+@5nE9gm(z2Qc!#Ekl!`x2fu7EeiJj{kZWj%dEpl z4-XpJXhVttOQVgp4$nYC9gPuY;|O`F#ztkEKs2x*fOlKmon(BxuZIzgNS7cOw(Ys2 za;tphOkP<=+2SdL<^))9B<vqm*82fo5gEqISfmR@m}w+Gd{sun-zjoF%*2uI(eQwR zH7T8_BSFQ-C-<`OE2b!uvJ`*q3NR+SkR%G<bzQpy-)-W3eUc#Z%iOJJx-TAo{g-z< z&7|468E0W@RhlnOaZ>x@n+6m5U(jI`)Oh^<7pS;A>bO7o_Aow-8a!>#o(wO<=ff!N zNv%K)u+1oad{{><Ga$;`e+zvFhOFUx#5u!+UBtlz!UiGB9S9E=vu>Y!%Uvw-yILRS zsa0GI>j0UdTH?cOVHsh)wTdyZuh;Luf;DCMV7hYq6z+V4<_Lp7_xIz0Ly=rq+TB<K zeB);vaJrhx8@yzBCcBT*vk;Gvb@mw1(mblt{o#%P3OqK=K`aTPR4$Iv$?Z&`6PzCv zDVnROWVymE+gWR8npdDLc^T7u7v)Z3y&9U=FpZ=7?WP4mjdV;SdnI@7-tQhro`3tx zYtn)m_QSK|V<*1G_WRR<nPVEsSwAi!wP$@}r|2^u>iQ4(&V1ko-Tl+EilD4#+NVsj znF>xX?%!+KK0o^vQ>J&iQrCQ^HYMQINVTb!?WRPpMwXm)n>RX@*RaVQ(eCNFyhak{ zNp25w%X)YpgA``bH7ebo7ZM|(QtuV!H%iwQhx5_t@)}i8wua-i2g0KtQRvwL2sVba z*#SSv$>EMpUxL@Qe0e&UT`>~M)6m87m1Kr|B?7c1e5C|m<tvdcU&>cXd5w&(l<DE$ zMeILZSo0Lh3AACBMVH#ypa#w;3j1SyvQu&>S!Z70<min%A>b^o;%1G|)cs8J7vogi zGnN+?4r`!%K;EJ;g?<dZ>Dhn}6MzGn27i@TelPfO_)v=iYuGR^8@q>3rt)@bv4mJi zJmYJf!(FVt<BsH*jl71c;(dC?8<F1H%9bCKVHN8cxS1zcGH~4R$hnANy;Zwk3+{z3 z;PZKgquhAO<MSwZdzbE43xNy-fO4LnM@Azb`VbMkMFBrEKx~PHGHf6O)v3sE1H&iR zppB&I#q?l<2($eBhtmNxs_yfR%J{f+t(Gn4uK;&34>r4`^^#srCd23Vu^nnMj}pw| zepS0V`KfT-{R{h)aCkc*fCc+Ixqh0iPH4+{R%ip*CcaJPD9fT;RSWYfEP4fjCDy-% z7JBv2cyd6|uCC3VqGRvS?(y}g0;)Cg^HcO;eM+G#?nLuvI19r8<Xy$v@3zo=N)!uh zmvgcGFT=~l3P1r|IOd_L(kC?GZ;13ueQ2zca=X2SU2V&=>y$l7_@oL=1FB(JH*zcO z(FO{;J#<eY@ybvlvJ}C53aVYbkM=0<S9#2R#6-F6?{+CyP!pL><dm}XW(idx5BQM| z$uz*8VsS39Y9RDsRkL`G)R_dmYIrdVpwr`A0q}8O6W}$?0X96X(%rgnbvrW>PjREu z&XbkLdRC7t;dWH*_w5TC3)^}0>7Tj7x);@{?F@IHV6`H7b7b(3q2z1AH_C@rAvTb# zH=+u0%Eq_3KULX$cDB*B)1uAZ$o3>-ij5i^wyReA>SUWXxMkf)AJbUaZJ&dl><qpr z^lRegb8FGUDVota2anWY4I%~=`r$t50C8+3h=V)82Miq!;y)KAB^7bo>AQtYt7^`G zO83bE?$om1Fok&(<}|W^%*oNVq@*67_sVuAr7$B|2<O@uJ^a3MI87O>rh(P_u;9yG z^;tcN;Z$oMYxP~tLnsA{JJ!OTRt;UfGRwM*wj#t-Ze7M$H4^JG3G6S{Wvo>rwJwud zH8SfmnO!DYMF<$Cl$81G(sv@8q3cJ)DF)$uQ(5s87KoctTU_hZ(EAFV%j8ataBG>u zsgazLJC{kE8rHdttzgL0tKLzQ=jS>LcOng_&;_aq%w6{isY&TtkToP5uTTuI&P1{T zXbM47VNIC9#R8UZtMyC|EdX&?L%lXY(n=680*2MM6Y%j#H`4~~9PY}~s)mjQ-00DW zd#BY`<C{9`5-q`oVA#&uStU3l<s699zw&e;$V06AZD`(R98-4?M6Hvx(=|!fpzmrQ z+y5%@1Gk1ykrevt(#uEHpcI6bn$YdAgdw9*=;avNzgTAl;X@WsSIWp{4PAi_+kd(U z_CBOO^08;&bFpqgu1ZKF^tM7MfZ8^FiHB|V`r4J)JUvBjeN5oE9>d~GY0&9>&><x1 z=J~rrF!%{M3n8ZWALcyYB|QWPLR$z9<$<mwN807*mw*AJhJ&pp@%hQ;7wr9VypQHK zStT&^th(!XstZ!uqUj2pUm7nqE1`p4ya3Ze!W2@bgy%`64UU02kON(UB*F1q*a#4t ziJOH9TmG>)ZyTtnTM>AF)RnscKJ;YM1Dd2f7*rSB^t`3M3aPswaMEkiP<i=2GXj|d z0xx$Ann5U$P}p-Ce97-A;_k=CDx_FYXJY<rRUaV(s1d<k;-rf@Ror2#m2z6y5f=ZF zzAdL0=M`X&TG=|Ql|}E+Av$Se>;iI1H^tu#=+3+_8}J`RE^w@YV`u1lmqFYO{<Z(+ zdx}M!Qtq$}3GdxjDkx#L-Io-bGD6%%@m(&qWNGVQ0Ww<-T0TL#yH+?kTAnV(!N^`F z$Xb-6qu9PQAWZ}A1~6cnic7%Q-8T&KVlD@TCsGTEqZIkvCi4&JTPvY&PpI<rmen28 zb?0&cayUGSY%>U7MZ~>her?+p17TqJicYVpX7?0Y-Xjmzfxp(grKo!gq02JL4EAMu zLt%blfB{?t?#0W`mnFaJ(95|QzI{L`t3cqf2N>iE;`Dl@+uEfY%>_1iL~pWLSX0o- z8P`Nw3En8jaPTRCq4Y^10^?nxc@c14XD9QiVEVAL^YiQ$tfrn>L7dF}Q;M+iL!bR( z%t!JGBQG0p^(i?w3^}A3w3Emqy7I+Zn-AhfM4BLuAZVM`?aT$6p2U5!rnd_)gA*js zKCjM#-t^Fhl5bqHlW$PXWS=qAI>-y(&Q>-2I(JKloI5-chqa_!xr+lDx~bOZkq!2$ z+wH-aVsA`t>u=rLvz-VIu~HEDdhFhcG%xCF9@l%{QMglP0tg<NSJ4fRj@m3kkJLMT z_VDyHcWTi9+j?>^;3r8M>tq$u;pjAhqOpLJl!AyXV!;HSn&r?c+_3(T$FF1pULFNl z0WykU;n5L6|8D`iEi+<V5sL>TO^^9{5Ip|O*4{X-`?lkd!Y~c)gz=u-KB-x9ip3Ip z-r$Hki^wxwACW$xt-rC;yitp=trpFQv0N?2IXZ6%wh<S`X`1G5HrZar{uVkd5;_H< zzM-(c0bHI~*D=y3%+lx+P$vTgy&>}06RPBx+jSoo=k-`1SYxS}mv@|nH1@F}`R&=d zxw+U$dS?D1fv_yZODJGWKBT+-Cd4K;1SW~~)x9FX1UNJal2Z&B{Ke!McVT^zQA#_@ z=V5q-v-~29#T@gU@g6@1UEB8DMP3av_T0XA-+?@Sb{F-h1@pMRS8|QP>G8XMD-BFf z-aZ4)h#+&kDa#!2%kvHkd?k#F0ENM*FtoU5Ii?xAcNVS(7>kq)6OL3;BI+I%0fI4B z|B{SRFB5Pu1dS$)kUNn){jO>C6}p|pZg3DHZF&_ux%Mp`1s+-26d2@?_3<vQ7>hOQ zg*fgG)hgyV9t<1~$Futsaa{03!z%iCoeXfUNivFzhzk>>B5tSEx>NUI4hA$q5QZn= z7Nr&TpQA1l5aJUlupP1?40eQg;2}izV!S^ju}2ooh<1XgK2*Fo0J6G|<?arixM$UO z$2cj-?F7~u59i!ST`4Nzo9_v2MNSEUru(mqqvQlmT_vwwLas)i#;5N;8$tc)cei*V zI3{`eEq#PB5a~YFv%USp>+77G3I0{VaAaKf6CnVLtlOQlXa-~wrrgF_{*YP0_9Q|I z^TgN5g3}qd@42l9T)m|$R80r^{kuy&NsAAlYqC6oNTw$O2?!I<t06=n&lsq;9nRv` z|5aKOqOf=;&tI1_$RltK0h7)u)*}gk&nyvMP46MRl#H@M<g+eK=F`#&1!_+v=C|k| z_)4i2Dt}t>nHsf6w}!5-uai9rv0IMdzZS|Z>*9{PN3TFbwq-xl{1k=YSRX+HA4mwK zU8D{y9w6kR?SULr&>#%o(~drgu$+|5jBKU+QN{b{{abq!af+a-yXo=p@{KwO2F2YV zMc$O~0Y!_hkAb+1bOdtf4nV^<ecC5MfE-5c(dp&x!Y<PG>_i)OaP)U^kX<wDnC6C? z2NAd1bw|$jU(aq=z%KcYvc024hkiY}+Uyy|FN^GSaXh3jQuq&cV+aQ15Qy%)(dnz# zm`HY%j&N^zdb@&4^}eI>rf5QM@2G57j22?J?JYPwK;?8&k6zt6ge{YNVnoJ6Bou(J zmj`|Db+Jwi6-=P8Yvu({A?mfyXh;3lG@-}#LQdt;1=i5s!*6YC@gDwQTNWs_y=5bL zy)ilTx}5URj*+6RbCFI`>dfylVU&Mmn&%-u?H@{@UoKB?4x`Y6r|{qP;eWZPg09RC z^<k9e1bmDWId0#CVU^@+jqX*LC8LFet!_qHb%xB1$Q*z#_ZYIyl-p!_vdjP(mYJL@ zZ=Rx+OmNz&g$Iu{3U4e5zmmX1?O@8_^%Ue!K*P|b6;~7TJL<yxZ9Yk>67=Qbo2Gb@ zZk^C%6V~&uXGt9&s_EL#DWq-xZsB=ipLSuRuP@To={Ti-b5X;+^PunH5~_+epK+^; z)LV;t<WQyzr{-hRNLno3YAHEF=yuaJN3Qud6nQM|j%~5tLfR{%%avhUw-PxIn8R}R z=47gEXnv2)or3J+IN~LDI0)7{IDL7s!b4B13v;tOli=D`Awyt<2bt+a+!mjzE&h9t z(qjuoNpbcZPMzJSXtBI%#J4?`ea67_1+ZTFP7F3}3vYM4)lLod%n$PndbF{gp<|?w z<CYxluGpC#CB9BR&6T{Q#kbv2th;O$H(drk3+iol7t$VG`P=G%jDESEY0jgn_m5Zg z`s!3Z8D)G@0At$YA{24<H2zX($$4)QuF%XFTSRChDeoJ|;$ce5DP$?*WAlR~svWYX z&=^N@)x&|Zf|jpZ<Yc>?N4~>G{5o+yInFZ9M6&Wys*VO4+Pa*+YbCYe6>>s8tOK$& zG;TTm3ts_A#x8Kasc<IFKpW2j3AmeZhmTBm>@Gsdy^_0h+m0B&sxa{3d|CR)RLs`7 zlY*iif1z@WZKsDOc*gV#A|1gW9OEG;f~V;om^bt=Oz8s>L}2e6AQ-78__LGHHW#(` z{kfdd69$w3uhp)*)F<h%0Dm|>Sk0KAN=w-cIJ>^E?^ZW$@c~85igwGk$Pj)UQ+Xxb znQK_Ch~P%{{2pcCUFE*c4ojc>Oc>Q}Ii;*EW<Ba@b#iXG46*1G)voNx2c7YzBp)+^ zB#aull=5s@57(X_jFJE`#()^g4$G^$;c5v{O<4Bn0x=6v4$Sx7VC&Q2qsF&7sMmG# z!#ZB;(8hMWZXFkxKEVxd8Wo6Vg}%ekbKua**q6AwySE+VVu-wvg&~)(4-+v%mP}a& z$Mbr9c9jpS%gyhTn<Y15hC*n$0W+`-B|;nU;6}u_nk^y*($^Af5fEeM1*<0AF~6v! zOjx(499t@oi{4tAKJx-uG@BNeNH&qb)A;CIkJ>KbW?|W^3DzE(tQwKHEcCp6w4EK| z#_jixb!Q80;J22Bxn!LZC~#YF5pr(E+HAFp3SG!UQrbB^owxh>00rABUy-iI9tT0; zE@Rn6woA^Xu1D=!-=(Ilf^5=5)MvZdVMX_VB6Dq|<5+gid%#Sfr8|+7n+DCKI**KT z^l;dk*p9(d;lqp9#2%<^Iq#jG&PA0h*E%cG9S5^XM7i9ZNRk6g@^^g1(0?g!aQz3; z?r+D%C@n#^w~)-knoI#vtqJ)UK4xgCuydX~D`e99RbI9mu`N65jL_ne6Vr{f4~ia2 zUcb)EcGbqzLr+!T6hxW7Vr1@W0sJlzpn!qVPqSOQgDN_pTodboUtgdIgRk|R_eQ33 z(@CghS-R_&*#oFx#i@j&t7`ZN4cQ#S=WRIdPtxp{30EZn2gc2zrM{5{Ou!U636(IX zq?_jyZ|AlMb9#czY28ENJ60PTemtjU(958d#^8dsoM05~jAB~-tg}qZCBiTlEW6EH zmM*W$1Er}=%&w3PfRd2aZxKkzitIi)N;N|1qNsQYbfgjEm${+1=b_FZ1-|<CkvR}r zaPqv-fv@ABOt5tph*)T?hL9n7&X3om`pZSThpNb$ROe@70-0+f%`)VH5D6w$g^<Bv z(E6ci$e@fJFAGT#SOUm0g|Fa_{9~r@B?`-x^w1Qpb61QaX$^z2&m-_v#?#`q!5#vg z?FD_fxouBjH#Hn3sqtSrI&W5W+?wt45?`+8gHh~<((h|dd<`F()eAJOpZH?05Jmfa zzBB)H!zTLCGaBPGVVd0K(6;<c_9S(7W^r{y_L&bYA9ZSWL2j9u8`iOXhr%0~`bq~g zG7p32Dn%&<qmS+lYnKm5yeWoL5>a^$TW6NH7=9SEt8bCFQtpjn1{iOp!W$*Y`OI4> z@kX)SDQ_j~m7+R&gf~j&tyFoV<lf3KZ<NAY$$6uc-pVQ7D3!Nzsy8akTX~B&it|>6 zHxaGR?wEGDe_$y-hi`Lh@ExL)kD|#TI0~A12_FT`JWHy#R!a5A(kN(xW(93K^>X_V zR=WR1Eo3Nx=*#Z80gBw^xIMD6n-=D26_%!12f<_jv;p($czw*ri}r!`*Q;0B@pZcm zpS4CRP2vzL75ILYEg%epMY=vyC2g&gS}SFyN;w&qRK*uZ@KLZ8sQ4(fgz-@dzLMjk zlzinBK1#(`PUWM*_{v-OD2}fTpAaPrGr$pU#F=8IIh}ym4bV6Uh~18GuY<tYBl9{4 zjKTiB4gzFPo!3IZywB!!5I_U-90b&-Xs<&6wnG56Ljbnp7HsS*y^s)WJ1d6la!%j$ z5+S)F%%IA}AOubBTzK>nv2^Iq--T=eM23T*`zDyCaX@?-^gK~C#`v~vR~A#abbO>5 zh7rPA1sW&&SNrL<MZ4*$8ehB2@?Tj2Wp`$MxEUcj;&#e;PiDirUL|%)l$o7mG<{6m z6@0Ea7qBAY1&AHQ3+U+arXaG5o2_{+6cC^tJu>eMdi(slhi5Ra<dg@a@NdcX`FDW5 zdS^(s|JDX^0oWBqn`Qu)fMbH)hhP_QjMc{f6w9eEG({+NA1>0y2T&H7Sb-{Ku*8Vs ze{(Db>A|;!z!_6qSQ_U{BEgBUEv>Fg@jm|t<Vtmyr+Zi~)%`XCZ8W&I1KQ3sLTEi6 zavV59bepb$j6O+)!c0Rf0-@@EA)F&plc}(45+*Z*1biVH1sc0ILknAq41@|Q2uLcT z*2;CP@XSN%hwXNDwkiN3RUa3C9QtsyF**yD6-mx}!l^C>>&Pi(2Feu<O}QYa!1@t} zwxnXFFqN8CqYz$W3X=&bnAIO777-Ca0Bjjo@4Kl*x2KS6dALz8_u6(kk6d%sFi=R7 z9VPH(c!h`0sbGY&YlZx2RY2P9x@hK(u6tP9SkPUe=&?aZjs%g!E=4qC?X=#sLWKdL zMBWh-n3Po;PlP*&sd^bqB+yq3NKO%4<YHzc3#EA0zaQygE?E<A<~hxU_p1b+;|471 z;@qIT`=Z^W7k4OJV`fsbG3Pyj;}PbLoAO!(@0*%DovGcY<<2I9qh16D1bL2&Ae>No z^T$Q}-cNL^)s&&>l5t5!pTaHy3kM^|S&gL{Y722Lu3uEao+7h;T4H(8?9pY`-x`p1 z#l>gNhz>}1axY}gm^!)2F*)xQ{)8HYe&@@~&Yy_QO7oMzd9pHhQdZ%GNTzu)g}6(U zA=1VVqO6#;3)v`J;Zs+?8c=|nz@XsS2Zz@TE7J|nB9pZn78J8`0H-E_UE=6I40t0$ zpRnn~Z+LXZ?u>RdF`q8tjt2^M%Gcgfp&a`2x1wbN<{K$hf#)IKI1`QJ4@pmA{W9nz zDx{k>dZpcvPe>qc0WL`7X(7@n^(f&sGnPuu<%<4;;Y4R}jD|SNsR9LEH@qKw{*5td zH&SK}ga;?yZ--97tQ@5`J!^`$3a_Kn`qgGx9OsmD4;~5Mv2E?wh_P|zcZVQo{!-W` zBN7lPVPcqXICL8#cPI9ezY^aO>&>!B+m(Vdjp~Ps?Cc70*F;;2fgWb|2B{aj1^QAO zn%j}T0NMdUYQ){LiW$+vF3>K6pb0aBuvMUCR#Ng+TstuKI+>DzO_Gg-dsv$_tuJW_ zzk*p&z-A{7FS>$^&{lE0Rq(Xx;Rh?^u4FTi=l_@e0+a;|9036aH}93U0|E?M?27xP z^7@B{*)HzDD?1t>O%Vx8YiezwF%zu$AR?9K4mzykHG5FVt`#b?K4NvjG63n|qsbjI z*}9D1XIh`XLKOT&x=IK9b+=@gQCgSiuV~bERbT=03P{;joB{H?ksJ;CxmgPsPpjYH z#PM%c!*$`Vg9fsbPdni!Ip~NVZ>N#U22P)D458#w)6(#VJIKeKlwRq4{{2R#d&u~0 z$+B>#wVP`MPzl+95~4^@LKMm=;~SYjlBJ>MM9eJo2-kIT!%|ul+qo&LUb{BI&n(oi zlnJ%ZJa_trc2|AD^|M5`>(xw;B6H1Dk-+4<2NF}rz@9?F(sS^~_5Lgi$a)}GE(BDl z)yNqD$KquLTr;A)Dx{E?rQKC)!gtgfyMH`xBo@ONAd#1L)jDs}vy;NQAn5AZnu0Eo z3=4Cg_+~X_Tv&kb7)(&~agjBW(!4@#jilR}UuxNwnOPe#xp_d4uy`Y-6jg%+6uvX= zk#j@^k(mNH#C=S>p4k}11fSd2zoiMc0=uX!*<sK|^zUoJ8RV7yH}h{%T*$+jU85V; z@Fle?otng;CaGitE)oWht?b{ova0pcx~5A<pHe$D`d6L`b86zZKP7c)lD9-T9FLlM zq&=xE#tz-9gpL54jHC2Eb-T`8n(Sde0AE!OmnH;DQ4S#9t)JbKe@ZqWe}|YgE2MAJ z6?0$fBQ{q|c+;Dx;^oXQt(c%^Bxew5KR40N)n8Y1ea|{2rPIz8Io>e(qf3P&Mj}EM z7mUFM1<US(PEktLBnaLjdcj*HUNGAv6KR4Z*d=1BRZ<FLWP+B@FC|L>orCKSMyx$_ zff6u{<ra4}$;M-On>a~<aY5De7*t~`RCyc1+bx#F%pIB6S4KQ@$QlV<>N5^Vh|QbO zc5gKcRZ_bp;5!qHp@S#Rk!8qE4#r3(u49K|$b#)ZiA1PaucO(j;TU%RL1DRWhb~N% z|4c!ja@eOO<N1wI&_>>XUV?^I2DG4{>TO;^1!P@>8WtlS!q`~YwNU{?oX|#gSYRh> zx0s@NXN&}2GR$2Gx7p~VKn!g-xpL5ODNAjN))}%_24Wa*bYhmyu<lZ8_R1c10BR8B z#Z-L{Qo~+CRB9kP!9#E9)C8jS9`%;aut0SDhE8c9I(gZQpSZp;I?EG#6piJ&o>YO# zILnhOSa*4XM-BPns>)ricP7s6DQql{AJq*=z9an0@rm(Uqgi_4d9BE>oU+nQZ@`J% zR9FgoVZG@Ml__2W{EyC-nPjEY{<^|dYV`lcX;uv2C_b_N;4MEjiR&LNtbeqy{?Wqv zN0ap@K0{>r(Fc|v!c1XlA<lekP#IF7K&~ZfG=dWcMLm0UmVg&B0WSzeVBxjpciN!1 z+*)jhJRuxGX9hv0-`y1(W&GVda+bY;Ulp#y(xBka15^OdoCxcMd3M(Urn#Ql`_XuR zFZ^MADk@G|vOK)}!5G&s=Q(ZN9%!TmY85^pjoX7QqnAyRlUK;O85+FiN-Q~wO3~c8 zWz!kiGU_^&Ch*)eFRpju0Ny=(cn#V{?35Ref3+-zDO`-lfuVv{u!SCm%LdW^Vd&mO zN>EoR!5KaDD7-kLw{FubCe-ba`G~r`a6UdA3DG(=BwClHd!#pt)-ycPQJWxI$MuTp zXtM8#z(N#@5Dlc1EKwMKTmgm;@%H+7aF2^}+MJHX^SFACbW&c&+Pm4(X&<lf$o$h$ zZW5jgIiHbz4-&r7Ev|c{u<nt<x<?A@9x1Fl!dA(;J6W>s&_dZtiTcDTrQ`VIr*t8< z6w;0V0M^)WwyqGpz5p5Xq9|upzhEHrLd1(KazF!ew4KZk$uE#I+3s9fX8mo@GH`FL zj+s_H9pJ@j$d?OScui6a0lJJDRm;}`g@i|#ku;QQ9fi+_A#I9ak3$4N%PF`j#l93c z{7{EFv1l~tbM?vgzZl1@vX91bfsydw;fC%-qdgKZ=3uI^PlnS&K&l$7QEQV1Yotm< zu=$?RR*#Lthq}H7yg5(~k7&**4I>$bmujm|j@R=d%hoB3aH~lqNwXcD`R!^V^5~fw zusmejEa=vo06^|6k-sJTXfW}i?5~L+GNHtSJk#)i!LV7YHED4$<6?P!R$MRCLGYxI z&xWC5R-8&$_!X+^&kY_rI-8AV*tVbN4=7rngt{SaPkRyY@0hKF?#>=fNz}`%1yg%? z(^4`Zv%H-)$In&`NO2s2tc;_vkgIv-1-)$Oqwi3}M-}(%Sm1ShjGRLb-e?P~hVzr# zLUA6qg?8x-NVejhK4pM*J815tyKAc3!K}JOY=+>)cjt4{v5a`ywP&utlM$1b4_4;Z z$8obn_m_Y}5`-St&)uD97#*f5^fy2!ULav#<c!Vrkhjwe=mu6+pA4G7)&tOt77hLL ztB@*CL5Z)S3Uv2p6YoJ_;r8KGWRn?eN1VoB+sP}z=f;sb7BPw3L8z1wiHL<l?4rw* zzv&%8QwmZNg#G`wNFCHYK%e`FboLqW^K*iuF5>6}XSL*fr$)*(V?gT~eNKyV)(fX( zB^8!fzg-T`{&Vr8ZeQEh$Gi&4si3_Ujnfk8RWMFCTl=2c|Kcgx0l(K0<+Ma6>PEHB zRxcen_zQJO#h{zkkcvzl{?>La>IA{nf9o&A;d$w3Hyw5T<_8GLa!uSk@j~xTAaC60 zfxV|>fx`{wVn>Z_SFF#CXD>BHApw6L74&0YA@l;BnU-SVH~lXp)S=&_7-Tr)Q{$Vr zbN51=&4VL*d{GFXk`O=#=<YvFz|;7N6*Csrkj!s0XR}%;D`u#mtQM73A@N$2Rttxz za*vUjzHo|-#Z1G_MT~0QtpQpku7a0Vl3XOce$-uTqsE1V85kKt&Ac=hpu@;bz@Ss> z|NdI+-d@isRs=%e&_jt+L+F8ZPCPv^E)0sR!#d+5p>=j%33O57I%AbXp;TDqSFK!D zlN<W*fTBA%Jy}Q~)!inW+hcE64o`;<2rL%FggJqO=Z;Q%!_`aXj(6d1fgngI#bG@G zp32uCn0rm~S(Y2i3`XEA4TxA6lZ76j<Kl?RmC!(Q5!OQp*3a{9hU4?eHKs$C4c^VL zZXyd1u#9_u)e!j*!F2^D;+D{4OIc{Q2K``Hxit*OVOO~|61PL*Mm;l))a_tR4(Yi8 zyh!l!Tk@VpPTnKWBV=8Cp1UHxfydpF2)9M$)~MVLnOhU)cF5ft^r~=crnntSw+8zb zcW*Ii!rhKAlY>j#C-xmDjOkzW9f!BcX#PL+y(&oh27TBy2XOVk<R*{=CE+}tq->h| z*er?l3qnd1W(EQ^u_oQm5l{)RYR4Vd_BpYBEDCxN*jf~Nn4|^go}G9WwBR}!IDUB| zOUtmI0>V#bqi!=;xmm59Ae|rs!^-adgW6zG_g=Y`Q%+P5-7B?ncTfJoSSK&vw@hBX zd;Ril%YKiDzE}{S6a(%KOpM7AMQ}<Gg%PF4-HW&>$3@`PrHycTYD~@to<X>bGe4@@ z@}wfJ&RysqfqY^r^aH(Me$_+Wf&Spt8t~JEg2O8*6+3u<B|L=u&3#q!3ikAbzwdPz zuIii^1Gf<v0}R}Rp3v>Nc5(yj5~mm1<I>28x1*7?nZ>pow5|G$*yj41W#U{ISLC%& zUKBL&t@k=;@ARYrsAw7Qbe(&8V%!p_b%7@5yrKS)QEKwN<^SfryT$ib{VMccLvQ*M ztTu1G9-f{5f*TTd11Z^{;D{-=gCq8`(T!}|0Sh?dud%GBBq5Fnh1{xRM^h3vUE~X< z>Sd;-@VK}B2fhfIaY*-Vh%t7(CNf6A#n7}KIdeG)Y{ML162IB#O0RlGOWYLm-GUy< zx9(n(@8=#mb30Qwi#Wd!4cOF1gg^N%8#2R_;z=5wsvb*Qo5g2X-}+PEMtS43^mRXF z%fFFdc{>Ol-Lh9+Q8#>*K16@JQQjxpxO%MXpFj;a)NnJdZF_KCd%su7MyE*EZS02& zwPZkcO8Nnd@ex~GQq+9+=to>s)3PTIN`c#YB|0=Q-JDw+A8tIFv4goucRE`R1PED< zvVldyUIT4yS|7KZW42@|bXTuxJ^j2wI`hH>BG03)RYCgRt0)1*)$=^CnRxvn`~&K; zfI6=ieA?R78z1!joF67f)mrc0{L3s@r?hR|$BqK8@c!I%nB=%RJm1u-^+@ozSar+o z`}vj`Q(eEyAnHsa`r6R}oLRky7x{|#KvctR+ipFiZ(0VI2XO=CS<WD{^DnTAJc=TE zhuP7SKJ*o$VqrX6g|CkJ9t46o=2_|s_OXs>>E-WHkk13YecqH=ApE;oi^0OJt$)l; zoaYbctop;zw*Sr`_HI=$H8ODco(>(P!FFBX@Ja-h5?`1|yycZ_ug%Ite9ET4;mE{; zN84V^+Xs{6(ts_yM>-s%_ofz6C*uQtDS1|t`*Mnmiy>PXN@=exE6ZkzV1^?oQ(3AB zt^ztZ4i*ibY{jM?9JXKu;v}ZBbmNMQQ%t*LKu)}E)<877h`xB6A5fPIu@zB)!)qFC z0l>ap$`MUm4?Tc-(J7HB2`O{%tn2$cv!uSRUFOQE;)}W(i*^d;h?zZV_i~aO$G9ag zz?OP7e4Wf&rt@l&8f{K*8SmA^d&?5Nnq+TTQrxTFvIK8gyw`8{mZ3qv=@W#RbE)93 zUR!C3EG0T6DP<n7vBGm+UNcoMB{HoE-gl?M1eD-yJ-qE@LSNulw{JFRpDBsr?iJAl zWC}Rq^IgJN9DmF^V^tT=-6wfJ%xF#@`UO0zA)TVykPLT=e_>V}e1VfZs_@90Hp69d zTc<}BI1a~#xdc5jYV-eYmK7Hu<xdZb$B`Y0HBJEv5v0bMH{@7D?Bm;KgNdWK-C2}| zGz_rAJ}L28MJf@)dK`L<R0ejmS>h~4!qmI1m4wF5yzrCH4&Rv|y}a-;@GtH!0uEMx zZQ@kUB(R|MqE-dc7LaU5Z-tEOoYb>Cs&YIs+y6gzmS?J)VWYk2UU~Lac%cdENW;3L z+A&`w-bXG)oWP1{7~xi^%1vP#aWHE9lXByBlaI#c4;;Vhi+_?YU`>&d`x2wyNNDVR z|KW^=x5w9I1PpW58-Chq$n-V5i9daf8fqGj%Uh{NR=sTz{>ofE4H@<dq`^qQHFzRI zmr@Kin0lc37bFgX+YF+V`PT^JJF}4;1BqD@g@O{5m_Nx*iYUHwPaKtPp!i6NUn=7x zX@04kk7W3z3SP>djA(|?!-n$(5hL|f&Y{c*W~7dC7qdJ&_3;<^VrgTgtg%wwSgB~N zq`9^C^`2XIw7ClK5NFSEX;aADcQxKH_r{2SF?Z8uQvvIZl(>&XoOm$0B@Bf~Oug@C zXZghGceNU_eJG~j%kaTha9aIh9&@+yn0w7M@39EoKZ;uWFCpox_COOR)LnP9ki*`j zKowKMGtWlrI%oU0kjxZ+7oyIe6AoP-x({RlI~N&&7;bI%qep`pWUOZoE=Io_&T4c| z%=SM*UU~=4Zqi}@L7+WAtQ#u|o=69P*X^44T=h|z9NoyFDuMH9pB%+N>F$k3J=nAO z#M*Nkjsjfwb@K(%$6qAFyXU9?Y)%076am;%39wBv8e~KO_pLHSRGEA^nclfbQF$HS zkTGGQg?SdXSpxCEaas5Bqi_gb8#ofNs^RE~ZgP!PfRk(JOiyUOiJb}$0E2-gXmVJA zL98l2+Uy=D`{r00FdX|P>`t<8B*TQPs<3ac0bqI+7LJdc2fWqlU{+-K$doW1sv_Mx z3$+<Oy@ZcQg(^{}H|azE-XR`ic_9rn!Or@>y2F|PRRs4Bj)M|_s~}y%hKWjP5@i$e z3Fx(Vz|<^@eSzDyxcA(Wqq=BQAA3V*gubXv99$@Vuq6*>J37<+AKWpCY}_e=Y<BE2 z<O(dNFysMtaqqBC(Y@#g@F4SkJT&jOibC_|Cg;t=solSjOgRH;XH-BXs!@%Ws7xiu z#>49VVZ1&-($~f`fkpYPNL2#bqaC~?);bH(o)3*6I7Eb)j3K}~_oextzXLwx{h)OQ zyulHF_0S7%8m~W1`mZ9e#2P&-jFlPosmFZ8kBG0NbjN=%mZhO*eG|_jqZ%>wqHDli z_diBZ!|S6LY?A1lTh&yfE~y2MkR+{e(s1Ob9gJ_NTG%7Ssn{bQkWG5ePx{V#<n2;8 z)HkLe8i*Z`fs8fFC~70DkCMjZVxfWj0qIx#qeAL`q{x{_kYO94&2XQ?fI5v<G9VL> zT+l&<@W&M&n#TiV9xy=1<%skg?~pA)>9#@fxE?P8CnsJ6tS}dcX(8b_tLkLLy!|n= zp>CG<`Gul|yZXP4T&hPlsWjX6eI1hRkm!qM=;03Op>pCixy1!9^9Z2iG$0T74~2KK z$gl{nGsZ5&Cxmk|R2Oayf@@OUrKy9XKXrXQi(BJSh}sMU??Yz|GC{<7*lacFX+jJq zaVVpx1>iMf&_Vn!es2+71pLG*j7FApUBL>S3#=yGdT3=IOeIplYK7|kR99V^{|l1g z<Hf5aZ&Tn6bnTVg>z1s9dW%GJw`&L8*iwV8kBLI7$=xI#SG<y1w`7(00F)6;NcAys z%Pm<QICM`*h1T_F!9>NAS74wTfLnQDq$txh49>#9%yOWJ(<eh5AcSF<vk*fBE`rcL z?ozI55yJZPlqJd7$Jp63JTgwgdz+L;vixyD>SG>7ZT7sNq6<Ftu^QLBw4u#cJ&LL> z$dj@$)L%m!2JzlPFc&-u`lP7|SOz^q;10iA9M5;H$qOoWCM}L|C8rHND8A~c8w-3H zdh@FIW@<v8H1wu5BHd)&X?k`XX%bCN0(6~ip_Y`zA=iL+!{h(gbNa#nLqh^})1*2= zlbVZ3CEXX{qSJ<cGC8g;;yV9tW<=p+H8H2y2-n3~LwVQVjsAZ#r(15CldF7|K!@^# zxD@o`YrU6<-7yAoO!;=p3_apKEcY$o9?vU=f0#8gebK%0JUg57ao)bomVE{^5kGH| z_*PWt5`4FiJ`qqZ1WkYklJ&m0LY3SuA<rOY<a~MZyQO#l2UVV5EX3i?R+X!+c_dyR z4a+gk48(FwXpm#c0*s)f62?L>f`Tr`Zw-PEqBC(mFdU_JKED8Y86BY)BA?;=Ivx4G zNr+(q+7X095Ym_Tt1_eN9p(jjW=lz_&m--@+4RTJJ?&BtGaQo!?IJlxlM#3r;2B1Q zh(UM>A__qYJR=^zB<`ZrPWaz4LR;Yrvff~-oTQW?1^0`LKm%qh$g{6U@WH4gF2>Du z>DCy8c=|0_k8m+!uHm+?#<zPCr+pkLuUl<q(o!Lxo4X*Do?JspH%+v>Fu)=>+e3n8 zguq6Q1a66cBESIGwb{s$9h7v(Nel<VNp63|w)f0mVts=?9-tsWZ15ZCW7CM#uSY+k z+f3RlOdvF5oU0sr=L3eu&vFr-RwE4ueL+09S+XoT-tp{w6cMde6UE|cKX$%Hy6KxL zp;%<qYAyb*Sw%SpQ~TID>7z*Ch)P7liTCT(os0|~<&v)IwYjx*s7X?&qa4Ww2pR4~ z3d)hUVLML7`0-a@NHkGIl0PNc0-%r$;N;sLX`lFDDtr(yZRxXq;k}f*_96&hL75J% z+;+ZC^6XxS@~cja5ILJjmT<`?ULC1m3BVaWysHp7BE}*U$Nga#wRoVAbO3=P@e^Qp zT=1K2_+={K5Q<AKa^U9ulHE9^1ECR`o%|%*{4hSDx5#VMI)AP<(FglK;wUnsnUVFB z*+NWW;SfS<`EX-LE>fU^NlSLt<}-!&Q+C`<E@L1i8=uUjBJ!w2e*k%BHro|1Bewls zYVTjh8~$?pggJ|2Mix<l$kaeN8;DGopNESxYR=wTIE_p(z^<8g{vSPZ;h3u7Dse_F zKd)&1db~%z&jvf=+YeWbXbJ6|f=7Fj>r(>k?m%HgAaZG-JS-4d9w_Gmk;?+*Qv#6{ zf%2(=$mN0ZTLO`lf%5PkdDY9>z`OF{)H$RBj&c>Hax*Fv9t-@r5L(#dAnu3|q8`MK zuvk;~IV#v8<pt5JCN-YGn_0t<Fz?iOK!!<?n35^<WO^gy`-51R6zHUTY-lmXv!`f$ z5146+MzD{mY?fI*KoY*2;xo|bNKLJ?K(7^5@-oqDiQmQ%?@732fUrc6vz{4KCY_h| zNl(c>p#MQsVcS#(d7gC0m(7AdBrOD~WpE@Pfi61LV?kJu;88Djh<)INO-4o>1W7z5 z0%A<uWmxwoHVC0H3W67AY#&gVN69w?obXj@ffK?uB4n;1`P~O}vAKv{)F%1Nj6P#q zz#T#J5h(7f<4Y4=b+<!Nq=!9Oj7XY+FYuC5l2#ya86H|Qd@m8_G=UUy1vtbb+Qo6# z?R_${Q~(L_%Qee~`u=$n1r%kDGbsdbCD`}yp(FkJexBUPG$&Ko&@eiP76;dsuf2P~ z+gsgHAlC43fW(6xj2e?pgu*1|lXd;7?b94sW|z%SY+YU<jr%@O;CE!-zO|)C+79<R z#hB9XdH59I07DdZqy)kXeAY>*z4(_92PKeE+>(%>DDsCHe*kjAb3{`qI7gZZsV1-^ z@a<2@^TGX(@>N(c0jp1lo%hYr#ooTC^A^N^NnkfE#Jq?f7G)XE$t&=ASRsU^&_nLJ z^@Zd+$U$-=B|KpMvQH|weN50nY0mrjD(D~yyybb~6B1fxJyU(@4(lNd;_jL<##ts2 zJ(+;X7@x4j_}}$SdQd_^Cig-8tnesi9pWZ};3(>SQBG@kl&pmlpx;S+V6XsytK&C0 z2&;q>4EOE*stW0r4n}5znXxM_tKn?=_8A;;pZjEcXGS5ZWz|mHUPF#qwb_3S_}Y5A zV-Z%E_~?jC`-A&Q#ecc!@nY??+L>PI&f1P?#H~(rGkRy-?Hh-m5%(48--GU<eh;w^ ztGsrhQ;J}hi$btV2J(7TuJp>N8W~N*!CEccAPJdwl45+b_$^PJF&3o2eNd0eGT14n zh~iOXB;X^K1u3WCY{nJCr+~W)XL|{itKt~v@o*0-CYj9kKA{Q}QNDea-86Eg`Fvjq zsXG}rvUi3aNqy=Gm2e-={os+sd~NVWG5kRcTKfs)<VZrht107cKiC7p7QJ7U{3O%- z3DxFF$4ZzHz9f($DE1^!?5$7|ujvx1AwB1eNxe^*z5V}T@7?2?y6^w-lanjqXi0#8 zfHpbYBBCadD$=SXP>i(QOaw&Q?n9y?+IAnvY(Zx~OHMls)b0~vTQ0R*a;g<ssgQ2g zY1u+-skOK%>utTP)?U_j-Da&-ypiAYeG;_Y<@fvk@q7IK`aK>VdFOr3`<(av{klG1 zeF>p=6GC$e`zqtIzh^fEcg{X2?NcKEvrT;oesb?LRL=?2$f@XOs$u1L0RC`*c$a@l zSNwr0*#Lf_Hza%7|Jr$If4UCQvLY(@Ry5E<^b85`B;4aB?#4535d%xfRI!J7o*2gp zYXbY;T-0lHn4(G+4M;xu0%F#z1)y;&enT;Tw8-}0Nz?uh2*p~lr&xM0PuLgc5746z zQ&}{e>?-zCux|_hNM&dVcfN5m5Xu;FZx@Eo1Z2l?cqd)^apLA{$$i(8d#@+=+}ztj z3a+NIvV{r?-!h_lZI8fj;(N1+h;0N^!rJk`>uo-YnRn{bB%qDu%_DIFo8P$^9a^%z zPth(KSMF|jlx{1fm>qB3BF(!yY1B<MJVjS*rkIZw&0JscAk~<_7f76MCOGp7K|efO z=M{BJ9XHMHBj$<DJPHnjeU;8U8R_zeqol(>LWj%HN3au-xx{-0XwV|gvOUg#%vrV@ zVpXB8#8$7f7tZfQ;AASG?STY)<?hgtY1k0?W6htddUWCSs!x`Wy2P55HDRYX)!m|M zdO+)NPe2*FX+2u+g05ejKBvqiP9xg>1zN|}iEiDdYSJ-KtqQXVg9eUXm`>=D1jJhc zCAU-f{h2EE2uwFKhNo97#L`aas}%H(g=oyPTRX4l(bfb^FNk@+Gx0`NM7wopYA^v! zg{88TK{?`#i61*Ik=c>^DiOke1SV$GNR@O!K%KB>`9{^XnY5U>2bBOYio8MXsnw6% z_;>8!#DWu~ZtRWs3Sgin0=q=)I6dFj1JAo#vF%-A*(s2}fCgQm-}WTD{@}E20YPk7 z<QDdG;AfQWj&I~>9LQ39DhYJ!RF@PZqgaFrK934|iuHQzwkt*^{}v<N;lm3LtzrF0 z5~$4KX(SHPc+i3(@$<k@s3+$cahHyrX9Bj)5@r75bXy9Q|Hb#oaeKS1^k%GSY^tqN zTjyM84M0bNtR!aWp;y+zO)Pu#*-EU&bocY{x+Z!tQ$R-O7a3(*etpRi%9woj-ihz{ zKO1M?3_92<1{0LO&Tj71*Gl5H9S_X)ifaKz9y9jl^#l}v7~EQmaK3{z`VzjX?g(uD z=IJiwZ~GPW?s}Sdhpjb?p*awd%Z3ScLHK-}Ddw;888Or$PYdc0NlYC=ti(VKgEi}w zgVz=|Sjf6}zRCDWF;b2Zn@{J@{g;yQVi_^~EmG#a7(WXJ-Eppj$USOmr6wHf<#QRa z7joDbXE8u$E<o9avcEEG-K@&MYK^buql}=e)e~nka*l(h7R;`t=ri3N`pSwaOIT?w zIFy7XN~^c;R&)VQSg~O568pC2%@VxI%|U!WEN1TFkNseM(rCQ>oqr(rKy!4o!*8pd zPoD>=4RrN2t0@2e3s5=4IC7!QoO(8|F7m4v>LMlX9!@|eIMuG=)rA0kfG7r50O9Q= z7u^q=nHlc(hdBFOe54L%#D5dny_tx(@T~)7$>v%5;3X1X_fjmB%YUQJo`Di@@CEQV zIJHVuS8kQur+D^tJZntW2me6?<Nt`okhvReFF*uY{-twuc96JIojae%%Wk?prcie3 zdP-0|FRhu7v+4P!biLJDuz(Fbf&X$cAyDPil0lfM^n~5*0k<~*YHZQLYR{INnN0UX zyt~~Tzu6P;;op%kWJN&UesU)OrtK2l8-*N8+;!t;IBlv*5O_a6JN=ZB%FAG4oL&OU z=Ef?8wxi+9&iv<7j34BWyolytvsz13WI=KintxaVU0$(7^O3}OM?TYt2`s4RK<>tr zG=hA<_(I|KUaePRNuSrXF5N#6^}z$OcAgcmrootCV1PzPl6MR0rdfD1=qHEp?Z?ph z`M*jv|1N)I7kZvZOk{9*91ku*ks(9=lv2Dlk&sUyoWR54m<6oR@{&_d)j`#!qjxJe ziUKFr@qwSTGWR9!eTtSXp!yO+1!WP32#<pgBGtTnRP{pdY%60=nb##4v_s<x`#7Vw zFeC}W@&!DoP&=X;0#{0<tzXB>cQ^FQ8rI$^1Ha6?`$DgM@6PWR%Rupf@7VS(HbYp6 zVndT{dlDJ=flV2khS;=xxABpDtGF)*-Cip)XTig~Zk<(T-~X;tvWJ-8mhTbFtSTV? zm#?2;mp|RGCz<*6>YdYzVLm8>bE$xlC8nTj-$M*AVr!d>RX6FcgQ=b$<&Ug{L=Q9@ zd}K&}HDM)s=n||ZuVPo<u56FJklYmfM~RStpbp@5pFAJa*<(*HB`BZgHi{UG!8tT4 z|5usjyYokG{?;(~9is8z!x#y_PGtUKF)_khcTlEz@`m7_ijQs`NcfG4IFze87Zvii zHTESOlo2K|vGH_4-uu!X70{%C_ni$QDC>=G)oSsgEa_@-(zU}cW_msIj1}smdE1?I zo1R+D(XxC>zLx01O+om45Wg5Ob?dSBzyrEgcJC!Fb)G*6B+MjVzm~6_hZd}Eyn)~U z2jG`OjOnkQhckro1oI-P1u*d;jK~T>PGApeS3hJf7QJ|6>*iv)MZBl9G^L@)0QcQR z9~YP(&x<4%HcITtb4_`W0*Hs{m1AKtwh}8&@)ePkLL#dsEFKw*t=KoV<4W&}$za>^ zm=4gli7`LRB}C$ym>)b(B(CRUfbbl8e|EB768t)<X9ZJr@}9z2dD{bdOd<?Dk8ye; z$eEp?mzpXOz9eB-sb_;1qQYXudU2f3dyv-4cvi3_+?e;MQZL0Gq_+r)DZLDi2c|oe z0|bO@*TYVULZ9MXPB|qwrk!Qruk46_B1Qe@3iy!6VtfhDCi_`65Mp~fE^I_Jp4SK4 zRoE_l-DHR9Z)g6reKG8Cu(uBGQ~CPCupQvlvvDi4KhVSR`#1IXbQRw)cEnG+vViuk z<t#2VELa?IBPi}6O|Y`W&o?2gdk-Ic(c<edLrn~0EKXhI_WHtoDtAXX_-8<7_&_?r z0?+RRV-=h09)1q5UglRrD+?{BD6nq?2U3Xc;Pg3U>%l3gw(`!I<TY`#z9=8j!`zF5 zSzjXdP0pE>dlqy3V62^k52*~^a7b-66bCr9X7I2NfoK5k`iN@qVAwMp1!!Z(BPffK z?vrNs(d-j{48NHra(BKy_$QU`eK@2GTkapjMor21@ed47@o3FJ!XToWA?jglKYl9w zHt)A<-swNdEk4now2$4#zj-g-_%Yc(3|_K-XL?O+rYTuc0#w~|2a2VL4J#8-%mT#2 z;nWGl8nIaAUJ!;#8@oSl>P|!p4wKHglT18GY`#3p8?QneD+35da(;KJ?$g}h-7&9! zgc6`I`V}J3T;iIqug(=C;O(Dt0sF0|g-Coc$LuWi1#<4`zKnY5UEN-_?!(1Eru6Ey zvxyU62kWsfcC$(NpzfQf=Y=`=emjl-yz~>T1TtL@vWOxv@~TLEz~7DLGX2B`oXE|L zcjUzZxogFa*Q54aF`Fl7vQq)c)TiFH)i!5Nh*s1}BXojbwoJrBcPru1)G7}CHQKs* zXm&Ib_!L^9RxzJXzeo^ax+RY)yVnFijt<kU#0bto5mHqQB6%@pJ1nYkZUBaGt{n5C z0<KXM%Cw60bn7C#riPo)i(_jBHMv_k#_8do$g=;1%Id`f(l|ka{;<u;!|qB%mVJ59 zX5l3q{p5X0+s|^pv|@SA!Sdt-#4dVvMr?hO2z5{Dfs2S`I!u-+WJNOJeR?VR#N8xI z%Jj1=i`2|BqnL|(k8XIsGe&n{?;_l|Mdi5^)#ilV79W>F>B29NIq0j>B2KVZ=U$NQ z&gML4qXo0wTuA#1V+ZH{sSYdD-91QX1TO5>XTNEuxTCp9aQnmC=@ieGxxv4X2o6JU zL1qno&jGStQb0I`@oI>7+^iPg#z?YN!hTj78%HMFWTuU)a+$4G@th$`&i9XtAhyKr zzoXI;xMZ<Wb`_OX!E9cAz?k(Zvu^c)f?M*Ks?`UwZ$H44uRefKKkJyH)dy0XfhU-p z)dv`7;1ZLv`hbX$pf_!{sO8pmmH=hBb-nqQ1sZl5cEj)_KrLA|kMxrSJHfSIy2H7x z^nG+6L1lbUNqpvGV`agUbCq9q=*7X{q%fn$zJSge(m65i=<bTPWkCMK7GT>afgd#L zNyrZ(dJsjx*+T};W@<`ATn-iUQG%$7&5S+Tr{1y23)vJY7Nc%SN-wRkPw1;_=!v#Z zqL@<ybn9|qYP#|Z@z<4`QnP(hFaFMaB3b~{uN`>xu@njP5la=tQneC2q|u5{Za&NE zm|o!?VDnfVD3DOLp6N#p*$6QwjZn6?=9<KXCQB1hZ2iz=`H?9H@E7C^Fn*SEH{#en z!h01$t@%inkb-0_VkjmaijayxpHKRRyssQG5h@UkDnyr;c_o*Zb>P~8>-U(K66DEn zok03k%+E^XV{O|8Z?XiUPAMF5H!lZN`oK-h_U{P(CEpeNZ<JW*t^-wc+b=|pkE8YF z&=&=8ARC(&6+dqg&#d{?eHG7%0t>?RYm=Dd`l6kqy&{Xc(!|bmv00Aa6_*s%Z{W?Q z;`)sOOuTdEVs_I4SS_2!qbBF9#inAl#jY4j9^D}_VJlzY3zw-3MPc(;v~+>bluTXt zh?cd9jITy5Kzce#0#6|mSo-i7UCbL_j#~I8WEc#Op^(Y0k^NZYRNvxKFHNjio<_I* z7iFQ_H4mrdr6?M5=+PQV)<AU*EW$}+Rr?wPtukI+=}f6S9np`!r1!1SZs=8o)Jyo3 zC3~M#gwhK5v^je-6GLh9_<%d`OD(^89^TBqRO_l*>QdhliXd@|i{6oSyQ_Q$<R1<i z@}l+Tm-&|rp@<>t_C2LYmWLwcS+{?(>}40->lL}mdtG!pS7mjTx4YC9j?HvcSzPL} z;1`QrRb?*q3T_>8R<!0YS@kX9KugjVw!Y=Gt5)o+rJL_9cBUjWJ;Mj~nFkN40*Awa z!vO#k4;~0Zz0Al4M<42c7NL1Lx+emA;qso(RB!7BrVmfcEq<Att?C4vtxa3`_$l2I z-KgG};#`-B!@6mU8GDDTmU5}B@Qv&WG`}$0o6s$XH8rFd#D-chpoT;-rk~0kmer3E zS+G?u@B_)CI1kPJv#l|`VG6IdVv`wFQX9JT7=gSLSzZp)hFJqkqnpWDMiRF%%=-JH z1fjDX|JiTZm2B(*+h>J;U#38~=V7{IDiyOOMP_~x=FDOi3&y_8q+Xhd^L6QHlya)A z&5^4lyn2PIeqGqSGztib$_h&gbzz;1Nf}!pn?~Is-r8W&V2+$~|0vtwFu$25G8kVU zT&prPgbfRY@OAa)Olpnkh_0l;Y1c3snUUJs!2E@DNe$(AGzaq}pRCT-$XJ()RgEoo zv6`l`hl*ta%`g9$G10xuV~ZY^nCM4#z=jQVWF(Ac6s9{C^%4`^kywt2J9fk<nKX&l zjg^^#5kvV}6WzXR6=o}%llVZ((}{+KVbhUG+`zM$>n!$VFusVd2?+WYg`1h^nFXq? zKjPA;W+j1D+WI3G^h7NxcZ+rl-yEIXx&TYT#W#`Fu!yV%RBQQKT6O@#N(isa7GKK< zaM2fiM7Mb<llm48Uw(RTI>8k~W%81zYo6COWYe;>RK*625ml_laCkmkXiu($7sYr) zfA)ypt61FwMtlh@9=m!Ke0qUDeNI<KBG`F<z)ei=Yv<v$-8{Eysdr}2)9p9%M{2QB zvTpyA?xJYV4KMRYVvFOG=`VBi4*p0vSGFUzM5bYun*G?lSD885OQvv{mqR62-NMnm zTv;!Ng;Unfsh4r9mT{mP%Q`r$pj8%5UB;~{<J2qsYf*Lus4fms%xN#T`?R}*<Ha+$ zwOLpbfltC*Sr3<NMbJ$`WX5RK-%K)6EC3Ak=~_^r=03Km)yE}QGPB(Mr};HvZVes$ z*&;4E;cZ=@kDmb9`rWm6kgUB&rGr1)+26;nkqiSZ?{ihI=;h8&_3tbD672S6Yt+!E zoGr**lWbp`2`gTN<N1>ghRW~`>=u#fo`4|{=6f>c``fzDR0Gq7r>`%I+AUtY-CS`a zoPYJgvJf6h!9%hcl<_aw!N;ybSTTNu#6>3@cpEmxMd>NV53_?0PlEp)8iPBtG_vPQ z+!KaZnwLFY2Hg+lr<p87V)7;|!%vE$=;CcZG88A7EWNmo6^Vy{aJRlZ3N{+Bzn@qU zQD<pM10#0YmtubJDl$GtYK8B(f0cc0xti2VEST;D*<kE-v-PS)vaY6zvIHZg3)WiH z%N7+WEm$hqf`5N6W}pQ#kUYHTu_9FQ*^kKGhhlf3!YF3VyBFR@PK(7Xb`N8Jc5pRm z^W&t=&k(+zNj6_uV3){nqAgFo(R^tE&a!G1Mzc{urIu2wgWE2wTy3ZqJiXUQ7|HTv zp#tjCa*4LwK=`ITw?|FvEJw#e!`85;ec?WKv8lc#spTL%Lnqt*5;cmmo%=~|^4TPI zmarW`_)t=mSy^A6RJp+X<Au)sVWEab{Ui=4EMD9we4xHui)vU_Q5A0@h6c`k9JgkN zo`8{1JB}cPSk~v;7fZRLBF>@_s9nO+&j|&H!uz-qvT=a|CWuUV8NWB*n_VpFBd+L6 zlmql9sZme?kh{qwWB@ZiNssE@VVPb%Jw=uhTYr2HMA~BA3X$Wk?Dy2gvJvZ*;<Xq} zXz|9MsYK@$%VI=_?HFtP^A)RfpUMiqe(=Pw`VikCU6hfIS&=0vwQ4Pv-s|*ln~}_$ zJw;Ja-Y!jVVsS<rcK;n^OtNeaMJ=Jdq8E#?%$T0-i)VIA5RV4n8wa8BH1RwF;bb%0 zK;Kv3EP#eef-FvNf(zd^G_-k!en8v}+`z?z8IS~jbESI?Bq4+YBB+Ktj&{rWBQbZL z8OY(YGk0Zp<G$&5RrVC!m#pca1cFeY{LoWz((&bQ;EF7T1+g%3Dt;f;%lcF?T8gk$ zpEV1zL(tK|-YZ%zpw$oZ%5|XR(Ub0-K6eKRC=7<OqutGNS}lTCsPHVPu)_w@-?lIE zi=}*aF$T#=cio{h(KGTY=+SbVQA-*$ben~8Tw<qA63-9W2bHknb6@ecqQe2iCj&#Y zct8%upZJs39G&L*<ff8x?Aq?~q*k`K$h`nU`Ec_m2&|m6=mmOo9@WYR-@mDJQJ7>L zk~eJ*Z<o)Qd1e==h$X%S<5*OQEl>}+?8{^r9%0olW5hTKa13;fxYTA}iw_H27RB}h zxsLo3Wz@@d9=*x^a2O0l=dtMa#Yxy~GrgRB8K<u7Xc_%Fiuu3PFj#LW4_oX@tx~Li z;rP$Puwv2_%Y-RfEJfq9NrYxH#Req8A$d)QP$<A%2(&QdA5Z0zNl5z4M0eedwK*fN zj2>Nr!)ZxFGTnAFWgK7yt`SdobnH{gRz+~ZmDZMFx}89O%fS@G-*Lf%1bhVwTUE^~ ziN>y*DsM%<8OoFT*xo8bb<)bZa1bFitCLnAqDS+nS{^Xa_~omP_|*hP>L$8E2W4;2 zbJ<&aTrLa;x@jeNww7?L@%EQRD{Dt^JfN>u*7~rBJ~=xH!#5ILZT*Ew^xIFO=r;o* z?k&FI+nrWjfne>R8P(RN1vrtH7R#Cj>tnkm=`*2&Vlvc10rP|OOBLvJDjbbYfM)+5 z()JkL-W)NR5L8kwTa=Px44ar#1eGLCb+-n|b|<#)2d*{Q=}K=EHXej}x2Kv|n$-2; zq%)#77>aBsbUU_Maw$s=!MWz>F7uN7npS~%B3M7f;LNkNh|?!>ikX_vlJP)8`h$LU zmX{@NmhTXn1K;AHV|+W>rO4>4V4?8z&!&cqm;JM)k*7Dr_;^l7b>6hp=hb$exL(Ao zelgvjUfIWb^+ZNA?<OMN^Pa|w@z(Q=QXk|e=y8uZ(c5|CdNI%0*E$v;CKRI}UtUEj z%^kf8c-Hg!=~(0FSb-DFLDjKi!kiOqVH$oolPPZhA3#AN@H9#~SCO1;idY7tcQ=qu zBDv}nwNfD|GCp;=Hg}i?qy^*`EZudUO=ZRFcbsK`g+O@P8^LqI?7D2dNiJhap!&tS zADE^>GXHa+U<{;}Mb|;_4;c`X?rY!K*+E1t=snp!K>&<1febhG_<O>>V|yo03;R0a zwz3&PEwFy^y}3%~G5vcPo-cJV;p1DEytR?NS4nH7q_sFR3Iu(Q$-cy5w=&74<vx?8 zD_o>1Eej)5k)hmIEVbBI2v#@+aN55abFNluc|&2!nZMX&$}ukXn{o_{WHHBNn=CU- zyH8szX%<U53Fo|Wn9nUX*%erO##uV^ND=%K15f)(OK=>c=C>yZ{ABa9dH2y)xn9lZ zltAW;hdGV)4kaP6VsgB>MFTR3@j?*eDcUt&IS3}A(nt@120}aJD*?x@FDC898vkpw zn{`(QV7X$~Xx!e-_Lq}Z)(&#~^p0vz;Z2RtxU2btqLpjRo2ng86=7TQ^@i(vl8CJD zn7ilnoWocEzFpzE!^o^Zob<wCS|*}8dhn}<t!4f6jKH37eSgy4#WU-?wetGLBtc-6 zHz3}~V*N?6@5EROr@FG1HQsPjef4Qri8$2>FcdK?<egwq7n@C05@(f^5rge8Rms8& zRrPCyzHaap1JV};FgFiK?B&y)RSL4e<rXK{85lv4?!OZ`WY8CmP><3E?K$J!c^K|) z@s<()?1k+ovG;?1z{Y}kiu2*5<{bbA7mnrL^-`ZWvjKEusGtC$jiCTxZIan4hIX!A z!kU$=c{;ODFLo~PVp$8MIs>B6NV?rdJj%T%83~(iwb*2=O##`I#Rg~I6iBEbp0WfE zl(Ih7mI$Gl2u@xoB$RmX7yy_dfmvOt7b8!Y{Mnpi8g8}$41maO;GG0TZ!VL`FsL=w zh1`3xafD4@Vo9&WS736CqtTSUv{tVz=SoaEQ&C+xlZr9cmM7UOB*6uf6*T2ctE{Wh zRwu2=ugx!AAJ#S`Z7BJ|RC^14-5S>BBw0ta@HD7`3l$8#U5z5v+D`n~tYkm@kZPWe zc}FmmVal@*ooIJVM@86U`q^LU<v>MZOE91Ijpz<t4j#J9swqB$LY=67m9}52d*QM_ zS&7VjC$-wgSci%g>rCQgZLZnmNHTsFB_f65&87;~61is2>^@lFk)H4S%I`=<-}k{w zk=RHT<bpII`Y71nX(;c9kh$~KmApp8Ra-Or`RXN1C4XxdQ^Hr5vbT0vBs2KEt1P$9 z@avNK>Vz}<RC|kbP7PS-O+7e8u}fHT@&*+61ZE;AuoO%6QasxHdagy6G)&J~XO-7) z^a<x}4yH%_GeiZ=>5|ypr?q;HUq6$Le9-q5yFQCa-1C!3R;RK&-KQ-NV?NE5gDG78 zf|^5KaFM$_>^+HG9PEy1mTHY9)f&M>DEEaot4f!LTgBmWpQU<*<t>FjXTJAj&;9-! zBOEv2qqO3u=G$KEdAxm(rCMRhFBp(U9BM`$3TRM~EzK@lk}I{6k+^J>3y1-Wwy0b- z36thBPj3|`1+{=y!CbP~7&w*V-0sW8!~Rrj6SyoJ&;b>JfW+71<IO1%ojMH7L~l6! zst=~cY5v)zE?YvxmWY>-847sEL&|Qk#XKE%gqe=4nvR4IXK1}2c29R71ic9;MnH<5 zcBqM9WZM)3B%F^zD#qio4>p_OrsS%l<1S07h%c{BY;o0zxjKm@b!oBKQm4dUEL#GU zn7TC3t0i!W*=!`2=2b~#8i=7mOFperZ~NM`hB2*~W?D1dwB`oWnxx|Ch=**-Hu7r{ zeftEP$JEN!T<eIT<+Q1ahGL*fVoJ4oM_g6#0F*X0Ng(ucS*Po1V$QQD><S!UQdsup zrUgDrt!zMHswLVV{RpIf>obRC>zgK7X>X}TYq_--<UhpIF-u=8#p6;uI2R6_SfWJs zU6G4bVU=2P7GiwvP-+e(5ToY8^=U6PO8J-c0=Py2Y$Tk?R!-9Etg<@QbV%F*0gAJ# z(y11Q$~!U}oK;Jh3TJtjGr6=@>Z~edH1%FBSKhmAf~!j4XfUuMY@r?fV43Z?IqrTR z(d9@fe%(ymwC_H>vX-;I{DFO4){10{TIwuox2yuwC$g+Ev$TjU^RnXJdZ*S|);sge z09d1E0FI2hH>c%l>q-2m*jb3#il*UknX5G6I4tn!wL#M)baBZSAq^in8x_tG(D}l7 z$Pj#Xi@nnPx2V%@#U^dBC&a`<WW#IlLH}pzGFhGw91{wh_7xzJLV+~0=5j2S8RT}F z2`Av|3TO8GjV@=l5tct2{fjx{BZqMsjy-Otdke*g*9u;l&mpv{vF1keMbmdrN3_F3 znK$3a^b-1kC5n{HAaEB-C+8}SALLZr0)KW9$g+l8GHS&jV}yf94dRnv)CoUQ!B#cg zo)rJ3!85owI+JS1N<j^lum52!gxA88xx<VsjcO>o%Xa$4R;eIj=UB~y%3W5kxEmHd zE4o+kk=k}M7K+zQ`YN)k_FH!hoP$^j3AbvAOYKcUC78t6%LnMe*9b|3&&dQ+7&U&_ zMWV!NjL7+1?R)Q_YHT)@*UJc}0-=+zyMt(g!h{&Vl6L1B(e4`l3}&YiGHC|abX<26 zEHH|4W6U|V)qE*R$Ob6P9ts=J6AX!x;z}zvW61NcAH&ohlEAZsAFK3Q(y5kp5++0Q z(KK+W=0|dte`edzs32(ZK(Ms*)|9F2bk~mRywn>iEEHvX$!O0_v`c5!ynMs@J0@)l zF70FOc7>gtg+6qOYZ35d5t;>;%wyBQVc$48AeHGT%1-y#EgINxhUh0=cwS}hxN+ox z39IDfIIx{zI4Yqc^b-Sg_(+(^1Zd!T?WEatbK(Na>r#v4DC+tuq}WMsK13xh*!D0a z)|n7>Y&M6kV#Svt9v%*vB8kcJ$fyYXv>_~6pEXHjFHaahoyGJLzb_WM43hzw2y6(8 zlD^#e>{hca2lWN++VfgraOR-Sns+2t2n&Rhp%9vAA?nBSb;ZVt947OcjYjVAM1l6O zO3)Nc{lVwMmYhsjN%0XqiiGH{yg78+%h9&?2yu$>fanpoh(sQW*5a_o^;h=-pU0Sk zY7--bTZ#l)I}<g*jN(W)bUegao?sG>i$A$xQuk}L;krNq?*p%CoZQiC+&_ynjqu<m zTEhiqErQwe5fQ?S8#B;0FND9sGA4TS<H}tb*BWr0K_W7bJqeS#r@r$EQfFiLtl%#v zV7{b<K?gD2FiUettR_ys7_ZwA;l#bS({MCo%X+c6fT!X9nR!P#y9$x^0JTj>nqth? zSo=La6L3O4<~f%wc&W!;K{nS~=v+Pp&2Bn%aoJ4RDW8GvHHhCTq#2~6(GQ~0=s%(h zyDu*zI@KKH>2djR4dVJ0u7kK3!~xPKUs#rd%ZIBJbj_Q;jYci_+y1j?v>bmcaMj?d z#Z`yvE?hsrRfzJp<L^>jeq2Ap<-=79T~7)Ap2GcwL5f*xGUpeHP3AoGh|xByW}LE$ zhfcs2s+13qsDI`s4EFsufGzP#R@NqQfm7~k!WgZQ*mSeF=O|06c)LXH8JiV+iI_ed zi6Wfz5whEQjzs;>QFyXX0n4q@6{OG#g(X$u>H9r`1Cv6(n-x4n3LPMYej^n6b+j}1 zdpybOsn7^;T9SM*Az3434n?`AOK^)@M|qkJ=KX|KLS%}J(iMb#TS2(LZiTr&8X3_} zWmy40_kFZsNAJ)Rzvo8~%X81ZBUUkVHOLQ*<iU3Y4g7iZ#Y(RjdJ8>4(;~KQc)*lx zFHAg6CdjiT#>Zy`pMb>|HMB#p`wBdVY#DUUpzHuh6A5T@cONl{vMnMOp-~~5w1{+^ zNb3go4K<WiTUw?yZYR}UA-0HeO`;s!A$bqQ@{CIi7M}E!SB!^+$BYj~na#1(wy0(I zW3l8`B;ON~<}FcUYgFKPSBQ-*QOlm3*dzBxnIa)&ky6G}M-AoLSp0FzTBzfq=4SFm zix7g`EQBK`=^sYT8@AX!w8n4U8@;P4p4=2Qe^2OgJk>~wa!72LO01tsteZ-#B?<DW zKg_p?3yt-{PZaqtqMIu%{S|OAaZtx!erMFa|0gkV=*n_3grqKSO~k+Q=2YU1sl>{t z**5i|?@cAP#H%Ni65Y07`Od!^ld|Dgh>$RFPn(VL^^`|}iNu1p%m8&?%92m9wG=We zzl{EK&cJtbvSWPxJS=%#QPkM52W71YB}3k^nAZJaJ`9%PS!CcA!$?AcbwwpmigdER z;3se;itstO*R9w)BMpB;ddef3HF6PJdSY=0Q!cVtUYzfLjyxqS7X0l|1T|5Qr399K zf|ZQ$zvwpa-tND9{xK=!_9#4miEg_nJd91J7<<jHK_9i??*aTB!rz1VTaUFq4|_}l z{^q-*(Od90K<eh97TZj8I!<WEZ-WiV|6`(O);uIPN{ud=(PUSeWCq921`RE$4f15i z8#9BSMH^*9WAM9_j(i#gP3Y+ubgxxym#IC+X9hna%lIV{O8!H#jPF%!7ppz5%nW`& z@_$S6-zWL7%{DC5dfuA^n}>RvY7uYHwfnS;#O-p)=9^^m9L=#$rZ^7H489h1=21iY zg>SwpeDl7kZw}4`LIK{rm%RI>>)-638H|wpAjuDZ>zlv();DLm_PpoV&W6+p#j=Q+ zL{KwjFM<M|xF~2g<#5OJ?Pkx&d`{8kc1xa8Xg-tp=}bnEwy~gF7NWBR>+AH__;yFq zh?Y=Aj$KMlM7g_tFwXGr$?*v`oFNoR7)VIFM-`&enHgPACb;+Q4EQ#~?U@QbIe9M= z%7{S_B{9#&afs@uVCmp#I-OT41A~&lNl73A2a1MS^0V|z<_Bk<d+5WBzd%guQ-`%p z?;}9A>cn9!N<!^Cv||!PHF}i46UTIBgid3W2j)m%K>Ev_%uJX@4e!L`ILX63T54t~ z^;!^#Q~j!ug;xj`S1WPr;P0aN8B}CHf#L}FlL^kRp@Lsuh|NG$?d%2Q`H?s?mAHqL zBRQL<66>QoevCY>j)awXErk8n4n;=Rw$Hm1n$EJB!5>7s6NXAAyVpeaTyA#=eb-qh ztmQS7=hTJH+UU^lmXntPv#WCQt~Ie_=PQ?D!aax;ZzG?wBT+et>IMS88tm7`+m6f? z(StVfeI%Do4v6E)TSyt?c|w<%b|mq3XjgPOB)gr~-9jp`h1Sumy{uaZZfVcefNI+D zF|l11WE&dd*90C*)@K%e69+Pwpu`9QLU!P1wpnCg5!`uPfjx#@JBug`FxF%b_)^DY zUIU`cCbY7GdheJYs*{-gT(9oMd7k!HQH^dI26aNUNZ}u1-9ip@H{9n~8v_I5X4aMj zsQ&lVx-(h92^f|P{pG6O9toaB1<d0*KA;3E!6XWF3c(l*6lgV@@>~H5JhscMY`!VW znMwoY)|DpZlrx+*k<&&2Zr{Dvz4sZKw^6<)!Y%t0O$}jpTNtQKPL*Upv{BV40ap#P zc}9+P&jq3cG;DVXu)@3&<{3^8=3C~pDO~217_Y5>58_NNqHiDJRHAMbXJa^frB~9^ zERciPoC%MPJ?~Ff0oRCa`4I><0uaV+)Iw;1wmWMn$N%hi$`b3{lKP;e-Y;REFx>Od z(7vD7dr5@yCg3o7wZtXKtF3R;dd99^E5}I_odMB#J>9fHTkqcNI5E#9Yja8!;GyBQ zajI6;)SzA2ptZGL=Jx-De5#tVm0fTgA~S)c2d>^#6H9_Iwc8VFn;p+ywL7yIA^^5S z)4%U(Jn@_`4}~0;hJw)F-9pw3u?EN^>w`R;JC(?pO8jD~_)}Af{|dNd`F2^JW5NFT zUb{6b_~<0|+GcpFOGh4=Bzx`r{qFVHYm+^$te}^$wHt|3|47?pY_pZBJ@;k>A0ju_ zUd6`8k$h~naKHC>u0sArDpX7DdO8LS3}AW<xBz%jOZr9x!6Ok?Tm#{ak<oTG%l!8I zVz%^F-sGH#m=IuAR?G*p0-KzfXRbY*3w<QeI%0kknC>Dn-wpqd^PQUK`GzdJ@6LBA z3yt5S7ngP5N|9Y&=EPaG4%Y$DtS{pFEv~n5y@P9^NMzIKKu$OXdAKugp~aDezG{>P zI^g3$<b9kY6&ZIZ85uYRUFv|0k#9Wdv}KjvvlAO*eR#9WmJZM|$IeU*)1s+tWeOs@ zPxICpE^C_0njWc5;LB&Y%F|rs>Aae9DP}Zn4MUjWdSx=uQic&9+^cHp4>xTMG_?d= zjajWy{;1ydmco@^fDeZpDW?F`rArOzQkcCVYnQ9m>QVzh##LMC+FjzRUC}BH1yUe0 zi#?BrTcvm$FW~d%cW!xMUn`$)bmbfNbqC-4g})Y|;%58Pty{c?!z!0jAKd$#-=PXQ z)O!<W1pk&f^vRVz<p?!7ULXxlUM20GM!xOtQUwEeFnMo6M)2dzq4%!v1=PsIRr1*R z>yO>5+$+xrzLz=lx^VxjaR1Ep`+l7&qD%Je^Mwzo{5o~um*JrqR|fli;ooSReyl}L zkcnSM&^+>s$+scj*QE{}nU5~Jxut*a;MSxqdY4*0Ac7Yfk^QL^p%H_S7P-`kkOHb1 zA_$aYha&q_E(J*-d5;_dv?OHPWDxIRd+}}Yh0*62g}{M8i?2@#p<tw-w8?i4p+N-M zp8=f$>vVj+Ap=G#B1cvxpGWZpL^1!MGLlROFD*LR5Dh##7@^^#PKCn=@2NU5riD`l z8WE|Z_&oBgV`T2hA4DUv2A6I6vE$<m6_KqAzppxRVsrRZ(W$>_Pn*-jADe~5i~w@p z*N&SrKD0;2W$OdGi{APB>FHGFSorU%Q?OSzXY$8ICo3(HighR637vS~ccMScSFCTU zzu#$|1-$`3qIcTVPPNi$OU7JwzNvJ=cveO=1&Yv)^K~?TOzN0CN48+uy2!|qLAalh z*UojS()nDf-eHEL_jo~u)24C;X!M)Yd?O!_Vg>}~M<b#opfiGliy-Fg|0UkB=TDJ7 zL}&x5nTn?wh^m9z=i)OFWgGfJ^B!1#>4rz-5t^wVOM3B3CoTE%%|2;l<Q5beFG$DR z@8M%}YnRd~x~2XZU;U;4zb7Zq5WptPWWf>_Wf@s`MAC-c;6A2Lx*}buA9kDpMZ}Rp z26h@O)A3PZ>&YG<vjH23vHHrri9CWY>r!x_5B4W9zr@*&QQ^TCTpA$Hiy1>eLS+&R z(V>SexN8`aG#yqMOcJCC>s6u+uDB8>E-{v<NhXvqH}4G5l0Z=62JO_ZBE<}w!^gBR zl?r}y5uRAFkvE3F2^L=s3FiX&<bo@xOspocN(2YLVF*cK0>$&(H}S;4R6>6xo|7L> z7<E@`DkM%?&eJmDGPsF+#|eERonWFBBxkMG_=<4ykjz9At&C?Lxt1w4s&TkUVg-%T zE3wmQ6=hOoonNbPs#J!BK9eoWsY~KjS@jEjVVJBf3`4r?@P3onj|QUto7SQ@UqkV# zbjSJ2xEK5REeS6f5*hBR@j_@NAkQt~%e!2vEC_lrs_1!G7((J(zaiYJ$CBLI&^$WV zUuDI<(A1E`suMQ?9d3nl_vszugHDyUA*{^{XxV_a{#<bH&s(LevcOrDz?N&+w-iox zK9G1fZg#RpplED-Z1%&t_DLqMAe%JNPB~QP7+R<>i}Ul(pSs>sZdwb?$@O7CJ2X^i zAo@=^L&jUL(Sjk-jChMh=@|0CL)u{TWdGC13)N8}Q6?|Sh-csXt?Ze+C@Y@5qj2i! zU`Js{G;8WtNCa%Kg@c3Tcn->gU^@ZrnYtNN7e;hRA!T83&4*KY{*+2yG9z4C9@rP| z%>M>;?%heMwgwS4se6?%x+gB-sG-a&CjI+=Qdx#4pwcogpJeX5_G9=Gwu#CzX9|S@ z@x>I@cqZwaYfntSo|Ils4qUqSz_Ztqx-b7`QKbldZn0Ck&+#jD>KB`zM5Y7OWTHaz z$A5E!)?&4l3&1CnYOR8CG^T?<Ulszej1a!~ZT$UQi#|)QHx%(~<4ov33$l$%=aOKC zjkBP9VrvsfL~9Vt5T6yIh>S2nyGr62*c6b5W&bEMDv;H%iY8Anin$8G=iZTZBi3}Q zY~_i~!uh%Yp>iY;$>V^q%0fX{m;gU$ZX}Qiau*E$^*lY|s3s!EQ05C)sh~2ny?pLW zxvH+pl?temb2z!`s?aPKD8CyPHYY7yxnR(qOnFK_UAgk(rfO}Ra9TxmJZws*?9V~0 zd=7y|Q39MR$r<=gj`7EZOhQQ!Zu_x)Y$>#PZn^gBfx>IamDiKsyPmxLS`sggeaH6p zQ?XCEq;pKt0$cyHpb%Hf)wZu@1SMB$r9+=xs;wRoUjZTKdFEO7D%Ez-fnUrBMlXX7 z{19dUBa_5cGscX6JR^9S<iAVuFOhtY{?f|TS|}+x%Hum`6*0#7XIm54EqPv?6-t(R z6%j;YPNuhgo_W}JI0+(HX14F}k2rnN>0~i5tj@d-4)YuiQbcARpsx}uH36_#%vDLa zj7k%fSt5zsV>XqGOe%`2f~z7DB51e-K1oDHqYFQz9+Y6J%|6Md$^B`GP!h8?icM40 zmu?o)A~sFRXlAR}G#T{KHVG?N<4hyB%u3xqqH9J9dKlW5w-f4a-T%&Nr0=G|wvfFo zEzwamAF4fl_J$1ocp6B7rH#_?@$h(ZCA`f~jB(J+I`ec`p#@{)c^gd1DQb{C&4Ra4 z$-F1A3p>pzXBt(T`alKgPl5;v1rC4+g3_F~B{DQGn$Fr1@-hGdg777MQq&8y38)g# zBbwex)QHW6Ofwx?^Z}xF2bUJOF)-&L4NGaNlC4tEtJm~!b?U+~NX<X_fpAs}D*cy; zN}o>?qYc-$Xf$hN*8EUa<tx4EebS@Z!a>VI{fHAb5Il!Q;t-CcDbFS^8Bbn%CVJ+~ znRAKnpH8lP=Yz!P!R#}W9LDNUbZAxKU^FR|Qu)d-Xrb__FS%1+_y+%e7G|)cQVP9< z9Q04%?_rYp*YMzP&kmkC7reFb(qtf-bTNmyaeUP+XUp2XC;60w70Je9g&hrs5<dJ4 z4!v;j)33211R8u~F4s`TH|I1;;g3};M!$!W^CQW6XP$mQ@~5vp|M09pz?;$}wIgSB zNv3KbTvi&4X28~)(!^(P6@B*Mxb6l7_%l_DPgje^tA&XJ8MZw|?oUaCr@q~Ww1P<& zk|KLDdU_2qC3cB0P4IwOX=@-NzPcVp>Z{#pH&3@oXK}gES6DD#`IN-YWAo6(-t4Z7 z+2bi>nsmpf39Q^>)5JfUOp}f=NG~u=MlnsOLGNkK2Jdph7^{dG1>{Dsap24;VU9qo zae)Kwm>C6djINncWSy<)kl<rnO5z}~Vvw^{3SIv^zFeK(ou!vz7zJ4a8_6b~BsjSF zszf$<DO;t4M!AYHRZTNhO*d8DV5&-D12LNs(iiaGIXBf8bi5~0q&2ySPE(5BNWscM zmjKAhtR&5Uc_t>MR~qjCaThZK0Hcf|(7qF`>CWa<3~5h0X&{<}hW)!%#pX4c>;S$* z36*R|Mo1;9l@5B$PzWB)w&$_~G*>0(VDSR`VmjWMay1&X?dv%#8ud?2BAWu?C7+u4 zE!jzKOm-5#hlV!zmAW?zST+-cCtN_6&2h5<J-q|10p=&&g$EhC;CGDB<&V-Q=K8_{ zfug(T3TT_-l7c)zTux5G|1GllinMbFEwBSQl2uyz@pWOf9pF4V=1#4)+zpphyH@uI z5K_(+<Y7j`Bi|yP#)=st(zj@JHCJpy9}9QzPK)>kRy;j^$9AQz=K2kolO)A&G#5-| z>;AjIB357fb#=CdF4R?gFqOfkQsxU5t@c-?tQJkj*V$@B`lIe8TP9>qCrZn;IfTeW zw(je{T9T(vmDGKOUpGwsGFxZrVG;n<YmyMJ1YRi^HkVk7!(R87zXn>g1$l9%4lPfm zT+fje(-ae&3tw~zV)AP_x+f+;xD@1pzx9ex($|vI`T1E?#AT;?pJ3!91&Q1zXW!QK zJ`w-%-r1w7Yd;>I7#3gq!A%S(rharI;4fmL-$W#Z5}fpc1Zi&8i%XPPt=Ds46daov zo{7sHZR87(A6~ege7xXV?#}DU&g;p0t|vEMPi`pa04*y(f22~)KPv(01$q}b5EVJT zdeSAEYnK%|UhWqJH)=;>dhkX-L=Mpx8*4^pUcxcr8R-|~HfoO~J(zI`$M59{9KY$8 zP<tH9IIbttf*O+l4arX-`7yCgob*8OuPL=-Ov)G&Dq>wQdWa7>SmBdsw=l$qK3kxb zJSVdT#9qME;(X@x3-Lm%0kV$j(g0?OEH;)!wL-4471uUgv&|IsKr=-NK8g;?9L}08 z(!;k|pz|OZj|4>T3sBCv_R22XR}+rgh}xx93Kzxt4N1)t1z@NkSwr4NspE_2HEG#r z(X3aHNn~N4B0g|Dd1?X)A}AXp2~J3OP6<+Ar2ja<?WeAZ)R+mluEZZdc`+umBd>dH z;@TteyQ35LDz4=*eb<YXk(o%!n5Pn@Q;EZ*0_4`Asl<;ls)9J~`>|0?aXgV0+;<V8 zf}uwzh&*oZMKZ3p#l|(+^Ru+z?u!_|pH2{Y9DniJz<SeyzaTe$LI(EdBp(Co`S}Dy za@XW>fbV=7N_vRni1CDde|U*<wNh={k{0|qfXj!PCTgpRAE%VEWt?^G4?9z-gQD0R ztX}{gmh1q)o`Gi|Xkmeu)(B!e=;Z&CP!DtAe=y!|TpX_3pbx^_Fqda(>o@<?fDgV) zHglMKR(2WhpRnCKim$bb83jVnH5WzZDnTD3XN}nSWi;yzq&U#LUqoF3`%KcG2?L76 zdZBNTc;lSyW0Hw@dd52@Y=W|oq;H?FIi~V!F9L2b{<b@&3f@i<<elG}0C|q?YnqD7 zXS7b-E5DY<?2T25y!7R-Y>Fr2#g2UClIF+LBVS>)#?v=Xy|*NuFiG=lC-)H&J3TE} zcoAc81IA#a;3CGr^ZR{q5?hrP%qK&uAVZrQA9Cos64Qd&B%dbvI+7owuRYp{_+Wu+ z$f4?=i4B$(1CH^EjrkQ#P)El6>kHS${Hd>EW6mi5b<B+q=!^f2%r<^5diLo%KbVb1 z5^W+GC8!EF>6r|#Aa<uG;_5?TztH_z<E8ubka_88&-ydW486&3U5}9`?`pg%;NTeF z(A)<VL>%10b}9Ox(kewWEIAS|S6=ZQN^dbBuF+skk%UX3nOC;Ipsy8YvOvip&csTp z`Inh@D-pp!!sV~PV^+9eTZ>S(;)^K7bZuYsG>nR1Uqi48h|jIi4)7iH0vtRYeje!g z2_harCd?wgit<;9=J>%ocl7+r4f?kKa6^30f4CueBzD7(Z<H&a{0~pb4*!Q6@^}Bk z4aMdEa3jGVQT_YMEB%q=e|LwCq@o-ARf!!OD+JwP(G6ybRY6R^kgg)WC7u^d|9@Yh zNB)oc>fZmC`syAKVi*|lzZn<-Z-b1B?f;{1)jxE3*|WzkE{hPIp@Vua#deuk9$-(o z9L1gzJc+gSDE$-=Y?&uU=TMaEl@m>Y&BvvC7qXe<P2qEGAfUrzfu=EEWb8y{Irw<Q zDdAr^0R_q41D|AWwn(VkJNBj&-hOOviuv|}y^lFES76a(zU{YC2MX6D?mC_TuS7|Y zX#I~yx<$Pmy^oEmsBIr-_LTM{S!PgkdMs9|)M~a^MRU9riPW~2ZYFoE3Ago>_HD*J z-YO~$++S+FpSRK$tN1pr45v@(C`COw?J3C}a#Uu=a?MZA!6<9&eytadnpB09(nX@s z{sWdb1JPL$$N8D$$VwF~Tyd@$!kaNZnir{|Ge-U;(O}5EXXA*lw*)EMtCIsFf)AHX zVG}l~ixzu~`=jwK&MIz=2>TNwX<LBx#ih}X?Z$fVAeT;E_-uyP!^r(d&%<S-b!Suk z=8c`2bvI}h-Y{B#y-?Unfu*JNT3hAt$p1|c`(3yAV6c1feaeAE5VC#^?b&P`y5H#T z85C65MAnT>T969TOmA07nV(+ge>Lj2tn<UGa5nKP?#3Gdeuqsr<WS-zu{R3u>#WM? z^K>VKWYYy&nOG!LK)%Kt>pC>O^Nx%G8Svm{uR!jOlFV}W`_)`HJNkP#9JY%42+{&a zuX|9r{9qEQ?(sH`G)0Fc<NP2hjT-~<QuMTC9h*%F2p75%d`b_*Wq~l%p|kbkK9-yv z(g&4#OYok52wC?j^`-$i847xo1uZA`dbW32y`3SAWLKYOHr~;yh{za0mdB3E5>LyB zy*C^OJZ#25B4ANvG4>=A_E*Hgr4^1WG3*5y;qvfP)S5p`K;+|X@Z$4cYw)&zpxXB- z$G+$m?bz2X4KDvjcRS*}linJTcN3Sv8rcOh{$p4pU*eLV##(_*pb-Pl=a7D`johK! z@lCB52t4*&>CoJ0g#Q`~r<NW21esrBB@OA3M+}&2O?npEbWTmPfrAC!6JC{j<+%%u z(*Xkkv_|{Ttms`NPNMFj!E?!=%^P$=`zOIs4tFCEff#V`j{0lRXw()`7YAjJ7@T6s z8j<a<h7%2{x|$gGR1KwBk!^cEhHvHSfE~QNbdP*J;teO-UzXU*5}V77yf|^|191EX z69?ZXD9G^zZZ%+(mD`TlE>7-MX!@i>7X=OBCsEEJiUeL46geV3joS8FOq}lSh?i;} zH9&T^^?}$snhTBme)zj{8VU|r@X7+rYWxE=)U!FxWZE-gXlfV~$nTFqdB?d&Kqk`b zoTDPAWnH6`&x`rT->1}UkZ{SgD{ydYtA6}Mi;7j#2#tGTLu#uu_#^>?`NO18ziJFH zrxP{z89Mt7P3$1p%NTR%-Y!%VO#9nc`$U+JVsJH>i<l<YaW4p6d*W)A@;XKnqgbNc zo>9T6Dceo?D{BL_(#BhBS*}jJro^tMoudXjf;P}JTdC9yOxDI?y9;1`IRgZ43*-vy zLE^|7OgfQGhhp=`88MgxlVe}kN`jY#Y4eN8$kTP0BCcfGw#Be=_2ASf*2aMYTO)TX zH5U*<P3Q(My1`4j!QDhAkXI6{gGJ=fqm!6Gkkd9AIyV{I>>w(R?uX}PQ!8mdm}_14 zRbbCtYyWp}KN?|!I!5&59?FC{MY|T8w>@uI2={GQvCE<^()=;aVK<zp0=%VDL#?r0 z_>@K*RL9@*PCcyZc%W6@?r_QX<o|`1Jq?o&tuqjXfdem|4m9t!pHrSiGX#@YZ~BhC zsAAd|bVV1{)=eQTNBS|U?QtwrSF+4yrbZdcC8e^~wEQNybM@p%?PPZXR^!HD`FPNe zCE59Aw5i4CYY7}p(>yzUKng?f$D%dL>HcK88R3XURMVD0Ows0_0GR&Vuykwx`e`Gr za3hUv2wsORlGky6s~nY;Z;-o0)NL*JX0zK+Yx9e!t@o1^(L+`Qj78!r0`vXVSVuC8 zuji_Znx`8OM~f72e;j+XHKNIvpdwu0VC#5CI|j*>MhmN4<;j^0o*@PoIj}T~jnm}( zAZ2j3#NI%b$;xi>N&jl95q3k3d1MX&Z<1ao7&EWKie`2)nwAAg#?CxL5hS7}@gAr$ z>(?5JS<TaO%>#0#`w?eLaTSr(QJ#0x2k2S_ULtUe>BRPoSfgu{Qjg~9uo$MWO!t}r z8Rw9rSG~<d3eXz&Yc>IHs(VqfY{#M{a@pUayWSXux;5cypSf6EPXM)v7n)Iuxl}9` z5M+uYnzeGrvHA97y8iw_KuBEp%MGT$!IGQc%LrCxY$sgpfi?BfRh-6{S<J22(Cijh zX_ZgsdnUYI#nK6YQFZt)cwT(GzS^g)m((|?+znc-M*_`DlUJo>B@m^NoCa-^w!HpZ z0xjZZlml5>Shq5&MH)P=09Zu6_m(Uab-a58kT<QeVR7qf7@ojJKs?<Qh}LGe%%ElK zqcUgAm)`i|RaYd-D!wm<$alBWc>KyJ^hIJYD%SEi+XAm|#8rkQNwEGUzTj3@&F-tv zf=C6IWSrl*hUgOIBmAEE(USha;N~5djay(1QiQ=GR)Z>Z91fJG9l|*RUgv--+4I!Z zkzXK211!}Whw1U%9eAzhLX-$k*}zdX!|vDtwtrZ%XFWtBGtX4QNAi2PsAUv24VcWE z{esV=dE<Qe2-qb@WdVrrfwU$m-Ii1%&vQI^g~_zavXqvbIcUWlO3&V}R_^gZuieoB zV=8;O1VC%xBDgBC=ksVsM<|^NRY?#Y`A|RH+g#;RtfIj0%%SpWLmx%?a%S*Q(%?Z| zs2uPdR7hPE_+|ME8JS3X?!7v4A6kJ7n5d5L{t~c&Xb8-?XqUVZc=3`AU&yz8fmzO3 zT!?kl@FYEY59RAKb14$OTp0;2+YUvDlhSNT|L{+_zNVB@hXV%_Ly3FR?$MpEOC74Z zI#PZ0VB+{5X5yaDMZ*cey7)}wmni+OUI8Dbk*A(tL|2qid5dV7jl@#Ity6yuaPz3s ziUXQIOE`%nc;kGCW#A1G@CHt&Q;75%90ZCORXD9jb*kwcmYNVqi%SuAtA_r2K36C5 zS4!?v9(v)<{^JR`uZBIcbRrMCYcwD0)BOm+Ab?d_(>c6oSbkjIqxxLL2bEdJ@uK?> zfmkvmo*(G<0hS;AICSTH^y8sJp+qX{u22O%r>$G{ndpTVrCB`$w_qeV39z~FYk?3$ zb!95DKKEA$I?vM;RCi%!f8yce07E86E)Zz3Rz;m3r-ft`q7(w=7~)REhZ+wMy2Yct zLaInY5i2N!d5WZnnT@dI^o?n|WuVaE#5T+@kMcnRe}Ir!u*F0_xhiRY9gQAplyQ|Z zXPyx)7?n_tV`*pwy3CnZfgDETESEauSAvsYHp+%2jd{o;LUi*;8klp5C8q+@D-#Yp zIRt)VbIs1TbZY=Oa#Wz75r0oz<XD?)PnOhg2sFwTi=47O?whjZpGuyruAr!QQSRJ{ z`&Ey$IMwrTXtx|l2V{nQbdZ@*zah-X>$mJ&xoUG$(`K27veQ3c<WBYc)d!O6f0R_e za<e}mntBLNtXw-@zrhXY%9>FMJV<2&vwOqt8R+Haw=V|+^I8#ZsPz?W1BfCbVB;>@ zBiZ(GX>}4KyF<pLjn07J=5n9nU}f;}dC;H@D|hYnikKXyLW!!>rzAGiKen^6*rE|T z0l*-l>Odi%V`dCU7v<81z-Iq#%FYMVRz4K&PT+4#BpB3piY<3a+{M`l00<|OtY?yG zOgZ#EBmXq{F%s<nbjPDKtA?>w0hYXv^??OpYxO3pBPO5y>DQf`(y*%``cF5|E6sk3 zsFTj-EEIkM<D9dIeZFrz+rIW&XyGZGRGdZP_L@11pzr!CXpa1kg#Cu2#eSN0gYazE z`e_kQlcSFE!ZT7!A_;H$n%KDz>5re5dK$lGX$kHl17aao+i6WB?iDOKqGl^RzwV*3 zRRl-whgae_as*9I8hK_n*}m3%-8s+`D|x*P;y^-%i1vC)=XG9<7Al!J+g?Nfsnh#^ zcQ#PUf>m<fjQ;~{(rRZ466lCiY|@!)d%a+TKgcGfP2CMchw-hu+|jYF?iYmlW=7%7 zdAzc)b-Oxq%vlJXPN5SRp$7pDk;q~aQQ-V1@r=;NIHC;Yr}4Q;*1(>{3s6VoA)|!F zjZ!v@Z2TgxCindCSE6V1B?D<-??IYdEAl3f=^1@{vNw4U7(o4DKpO#?5x-eJSprCc z?IqL4YR5|atH9+0ssP{b?L}dZ{3iYJR1V(m2HC{=yo#`2rJWt_9RG$_SfQ!z^`jrb z>vjI&8!lbn%i<Sj$05S}1+umv@o@vr1tT*dY;fvRG7h>oug~!K&X~&^@z?kIOzKLP zIst)tjZL|*!Zj@783}Z(F}O<utk3bUC5&a)w0>vFLdWOP#m&Vsi!I5NT}pgn1^;g7 z>Y%j4@l~TtXqH_L0cA)I=;^~MH;D#q5WHf?11ujTs2O&_Ep~~Ll9mp-JF$~;*k9`8 zT%E!WG#@y|R@>{uw%uh%S&+~G03p7y<bNstXZJ_p7;DLceNmENsKH`iVG%oi)iie1 zbavGZ?5ZTa9Qr_(HS((x2gIP{<6~|-b&1O+!fl{8VixY`pTg>EyBL=dV(e(BK%n#2 z?~IKzU_CIFa5uzwBzj}e$=J5tJ%MnCD$p19y!t*=*&Q8`bc}fyW(9Cfv6D6wPxsuJ zjj`}5+z%Ix($FRT`iqVZE}f9v?zgku?$_Nz=E2{D-yEP|!!SPZzb6iIy@&n5ZCzi| z{@`7`JAIEtd|u9HGy`(fsLTcQr)l7SOL~C+>Fef9fhW427A1O(xnBY#wWJ>(!d}g) zt(YNUlS-Q%HfDWkU@@{}qAofpB@d8U5z~QgflC7b5Wt^$Sr!NdePKvtnDqQZB1YlX z3Zf?JCD0(mmkjgIbmVUcO>4G3e!kJzc?ogP131UAig#pt4+6L2O6zDMCcZ_ICu8t` zK^s7eB!#jB{I745Q=a=S2meldC_V*c8wu`0&sT_W&j4Eji)5a~qOn+dgn4d?|7GbN zvEO!!#a>1#4PP~~4kn|_Vzi`Bft86(sm2aC$}8A)kk<qDiL5={hD$J3WLYBCXW23g zKJ%JxNi;8Gx);Xxg1+x&)BtdsLZl9WY!s1a;An#;$hAWM=xQ#FAPy}ZyiW(CGG=ZF zJ2DLrZ+5P-yOviJ!bF+u&<f5%dGeyXMHItOzKbESI^;zr?58VZd#bMN5>xl>>X<X4 z4H@%UF_kruUtFTQIolh0FWr-K8NvYc(OEERk-!zaM;|gBIky;LG8r`_8G54H5!Clf zQI%mO&cv)a3<6>dAc6~!9*P9Qk+eVmpT2j#Qpvn_zTn2Z3<ifB!{${kslarE3YywA zJ}M%A^VF&6q;qgUh5IDI9hvG9-9O;;5YM|s_-@-babHc{w13mjA5G>JT<_;)|FNG* zJ+EHGIO*wc57Qq}d|GUnfK(JOjSxTIsS_#t_lw`{)4YO|^Ci-}j4Y5Pc_kXs$XjG+ zBx&PmOg5p78np57zqXOm{W{)ArC$B5HmWce)VPvx3F`oQ%oC)}mK<{OSaQlxb!<K6 zXC@mETliHr6kr4#o3xtG<oq!>&}=?mFwJv>WnSa-N=~7uX_WzMWV?E<=L`IAgmP<< ze;HAnqr*wa5$Ma5(4y;44=az0n3;c5A`h`d1=YIV(k6<h><AN+`Ls~c3J5HpxD<Sw z_-(9<l1QQa3%J1~LdlCLG~XIXj5q1Gz(4id4){;!Rn8kF5F3>4N7wqnDZC!*lPsPe zUhgyFs!Em$dDo*X+V7<AG&f8#uW8PU8zs!0f~|29wp^$*e|qsg3?g$Ue8CxIB(M&{ z$tV&VILn=&y$V-k&DpRxaTpk*HOyV>Q^Wth&Npad`<3e=)+6AO+OcyRAeRl0g@*N4 zNij#cN|EPQkZJ<$jcl_1=y<tx@p3<om1FKB#rhCK)^j(@&|G>BjvnDPo+7Z`pxxu; z(@~y^^L?u>j$A=FjNm2&STJBG7!M?%7p!8~2J$(?w%hg%*#cHpCJ|}0g*HE}E$v8h zyT1YDRV)tl-OpP96t=;HJp_<b7Rs10xw0;)v@(geNLSXHOH04OGsR-NMP{+cc?+1p zy9Nl373t^fcsoq-cC7eTJ3MpI1Vl;a(zE@-0UB!v{q2TeoFd6oR^Q6NxvV*_9K6w^ zW&P<nuPoO1lSQWB@~-EnnbLE+7RVz2s;SLp5{+M9#hwCI^xBR>QS;+<P{r$@kJn)U zedS?<I^_B5#D3s*)=BVo1Zn?vef|ud?^?&s!@Kmj@^Q_^H5XT1Y@c*ooX`S`2**0v zy@j;}S?9TE{$uoL36)rY9sj(EaBvLUP)S!*P@ca>b+26A{uo_hpq3Xij=x4X;L!rA zq6la0=TY2f%c0=WxIKk#n-8%i_R9l$8sc~JpLN?l=Ot}8Hwf5xd7EEMZF~Dnk7|2@ z+7r1Le2?tIK5|w)^Ca4cyLec5z>RSgN|@lqyEc+iS}cQx1OI^T&h#>Oo*E<kdwjpV zQCNv>X)sd-AOl;8+lWna32RkYnWl;hQQ=Xgo|BQ-W@PF6+puZrI<Lllg#_AVSlK3{ zbh|E&+zTvVM5lEQOUIuXCGYwRW+>KY+tq*Bx3kc%dicDMb^7!KnZI=K(2e9QdkP-O zG&OV)q5@_|X8)e|e}`#<V{G$Ph!+%C6W7+jDfi`NAH=Z2b^eJV@(!E@r^%*AWawFQ z#ty+_jNp67*8k~u!?bSQzt%&HdKlvM@WkuU{qO3L`$oJT_J66z(O4aVlTnDOA_2wv z@!xq?5FaE?PYoa}3(&WU1UKvW8ICqLH%#DsKy<h%5&$kc*ynC{+<Y~!PR6`;r2u3} zvCMWCu#yw_+)RWq#JCkhos19+%xy@|JQMTAOJITNL(bdLD4_fPWm6^Jy6r!FOZ(k# zng36|wfO)3TROu8R!1>8Gh^W>jq<AvC0ehzvp|QA;AdwF8hNO%Kyi?Uklh-T0uzBi zD&AGv5YelTodu@l(>ahi6|ZFqj!*43Xiw<KImW`?Ni!UKr$m=B;iYwI9Z=nQQjDdW z#>RD@Ux^U~O1+DG0X*uB7-urq6zB^?3&}1+7v2HPkt+>#`Nd)nP1+7SKt1VczqMId zB&EBtp;|%#3Elx(5i205B2#1JZ&A=ZcL;SS@pdCDLiCCeJ59(z^gn#7F!nw3)hJHl zm4oM&tC{7d`yH2}`3DMRnLvvE^g?hFpby7U7n~Oi34H~ZM;sR>L}=Fi<_Z=Vdlv*C z=65dy&&{$*jw56UdGJ9T=(eFN%nYxzp8dZ#dl$H<%KU%)%$Y00(U<{YghA&V7#I+X z88y&oV-7HmWV_6mgrvJN#YkHFO0v~j+hxWLN5U4yEy1<jnK6>s*ko$WOC(^irnui? z+cHx_lCstdUcwtPzxQ(nyj1)8zh3`d4W4tJbDqoR`FuXl=lMLJO9wLbGRy-?-G^&9 zgR)gz_jVQf5XdJ7128Ek9fCw<+<v+9d4vdUC3)qy%7vE58icbK_I(|**UjDY0E``~ zk~SFsJPbyRtVASHm<b^Wu~|AVMf`W1811|i@VPzWcElY2MOP=$jMc{DSU!Vxi$okC zyY4KBtb#ZKC~p^G!tlZ@kgi$e5eG&1Djtgl2{piIkeS~7C=zlp%NUaLd33!t`*qAd zZ}L6D*2eV==?Mskn00}GvhnGW0K;*Q-otLZ<p1?qat6S0ab0_L%oEHnM<Gv9r*6+< zgyZ0LF$^IYh1aL|8Mbw)sn0e?d(;e_s)=qL_t8OuGeWk21kc8XqhSL5Q+SV$jmn@~ z1-7!R8Mz8-HgFLloc=<It83KlGK9A)Q{bL{g23{~|Br7N@SQ5~j?MUW;Wvoihxlpn z{9XLpiQjwp?ZK}DKg<`_81qAyY{p?@v99b~=oDv=w4H%ml?$o^3|2`E68P64#CkCG zE+(B!e-!Zct<8KhUAq)=nvkc*AZdOp>~GM#CH$259tdYiL?RQy)Jy$`Z-%Ld+!sm6 zwY1Vl_NtY6m8)R$9Y|fm<t>NE5XgJf|51pU8}x+`2$0KjHf`F2L;`YQ;*8q!TwZDA zBMAVsS6p2pU461@9U{y{xbv#*dXsz0AKdeDq1G>vFq`apvIa@96jrbP4?=I)^QyH{ z`#dwF$7uj^ZSKHP(=RF?xo2)E&N!viN?4vxu+QWDZxMQ2&E;WxGvM9B<vocGLvUZP z1&7DzuYcu8yOeo+!CU(JJ#7CO%v=dwWLUxFJzJ!E+Mf3em-pMElBd}tXY6^aQD~q+ zvRvMCI)j<Z`yH`H6e92&B(+#1NuDFiRV-`RFp;2$@ES>`{C~vK!{~9-Rv%(|5Wl&+ za*xnuMvWeKt_NHmo~sl(U0Z1PJ!+q40LkFX&b64lUj%$+1l7RjAQ(57Hy^MNzH^1} z*4*^)ce7TP+w<&rV32hFmV7mL77B!K0$koaWc?P3ej^kWhKmZhH{a*-9t47d_qkrZ z#z5X}SB6(4%m<!73ojKriCNf5aLc$h4OrjDsb-mi(Uk4WG$=({MWwqlGW6wpOsa9N zg}waVA?OQd@1U!3(yEHA9}MyPu97D^Y1urAS213{a9u<t<X7dpk$wceK>Yh6cxL6A z+1Xp@>N%9rbuG|2oll~Kh!rHrRB^n@d@NMR^Dz|aioGZfzOO;srMp{kYAY*Ww1;as zVq5rSdU6pL&?T=x5<8vVXIt=P5$Ch3p;f>_D$%hLD4U8n9nodj{_<a}FltJdBH_%L z1~D^E*ti5mnW(XI`e_okuXuli0jwz#C4`fx;sq}SL}V(J+f|XgEyiwB*;Nd$qU<)c zT{VukO|aXdd6md6VtHF^(eq|rg_SPfZZ?*Pd0U)$`DEaANmEyHLa!>`Z8l+21DzZ} zZgD#jrYUf~9(Xh%{D^xr!5|K(;sv{cgkYx@9by*`F{QvHLTtDte5Dhz=Mf@*`i1$a z_-}ZAY>8>JOnfv|YR}D`9-KhUF`J(vlU2BTnV)&Qyl~I*pHH@KJrZNix`fm@NcDw3 z4|WAs0@Qq}l9wn`VjkpKNlMJm%~heY%~x{ys-+G9ALpX(2~_>!v}GP>fpB#HSlOnE zcG%A|kLwHepvWPU)-Omy*<-d%6}Z7{J+{2UoPs34zofcjsEUWocMU-tgsJi}zvtw` zBqvAhCbvw|VBXk3Tbgk2P@FPi`71&hx68a~Q<(kGQ#_$u*2X;kaLd5Y_IS+x-6L*` z#DiiFNoFVeEVOECrCc$TN<`|)Xlf-6X!EHC8%zbCd?qU8GrBsLs=ZiI=6;Q;s*b9B zjasRpyYHb~C$BOss}yjjt4xjVlT)!R?DB{qCUTYB-!K(U#s?#{Q}MX|msgl~5Ce~i z+r(8Cig4_qMt+S+*cuC>L%^cqqN#dqnoc*Jv(WdywmT*Egfxttn|7O8jv(H{v^}%( zjsG~-uskzAkek0EcY0lJp3fLOmYMG}#ZWu~Vb6)m%#@^jBE}Ax;(c`PG^D;1n^-AC zmUcjvQJc(C{at%Fi&BQrUlit(c^s3uY4^a?J*H^NYRkM^f-ewQ7jN@sX?ez;N{iCA z?JADKu@zZpDWs^fH?A`At7Nx~SH1k;_riD=lJUY?Jfj^0W+r+IMfJKXjKN(<Z9>3h zGT_N%z#J!cmyx)7f!XO8w8w=pr*P5~2T|ofESXJLL(edq=H#?fEr+l&TM2EN8@spj zh)L?+cNIs@YfUouY-KkFfl`cv{g+|cZVaVMuH3y<x4UXUx99$?wV!xd8JVtiQCxsZ zZAc(5zHh*5>AL~XNqf*b=(bvgYACkd5C%6X0~cu0?n%#Q7aTLa*`W)=JGm~G_p!yt zboo9mhO#c#=_CkOlk#sd)GDy%&E#~p@~hlzF%~#^SSCswL?CT;q+us;FJ%*LStx{_ zCGkfI540G-Ui#*%X3YQ(H2;P4s}OC&8*w0Jk1=i#As;YiGC_sA2cq{Fw~fr2fmwnU zGd52W+)MaY;qE}^B<Aq})gB&v>&|0^c}3yAK3JDq;ImCRR+R6v12<v_-^w*h;GqZK z3*MYujpI-pNd5Y|!udR+y{abUS|oT3-$lDEinratt73VZidRWZw(-0zl2^%$^Cpq_ zkt#WF8^?<#<j%)_J)bx0`J@Cp$nrsnIpu0llw2a|ik@!&kJ7G>L)XBP7Aa3{f;&Mp ziCE^zMx5}YbXO+{c5INeL&*cTMQPv>@TyoK1Y-2Fv%V*+3EG95yoszS)4%u6MK%^D z5^4`!$3-R)HQ)@!R7e>WSFuk|A_Cs%`jhs(e^<s&zkB`4E$@ax*Ra4!s3Xwt_Jj9v zh>H-9-+d>*2g_)lrZS$^Ce8i_-R+@xS`_;U%hUAsKhU!0DciO0v!%@>CVbhr@1Ij< z%l!XI4F^3V0l2fL!A6UOmtOv_)a*RrnuNbejGdksh^JlMsW?!qs@c{7O*FD}!Nw=u z;NO>8wQd`Znd|CK_=K!p;Zl!`DTT{TJMqeJ)g;#co0xD5p^W?=Bi*eIcZ~`+y5%7` zzZoI#eWO3%8``=qi}};+b+pAmnU9>R@B1V9P68(*Z1yv8kR{k`tdrnrgTy7<02--( z#)GGpSSk`cc||2H8d|0E??gJWu#P+E8??wM$X?yhonC`Y<HCobJ!K+gB4AR`*K!b1 z2%1ED0x@Fqe^c8<g?LbY@;!6=Dc4!A&<dKszw0Ehkg!VquVSHSdj!@zWLY-9o4D%j z;;lGVZI?Szrer9gHfxt>Fi$97f4hA6J=myO;wmkgvbQIJoE@b~M`;A}8%JR*B9b@? z6U)4UT|1l&>O$_<$dKUq;HE_mnqI90cyWxkRhCd9_16$1GYd?h%-*uxF25Y;>1A`> ztl4%T72!^b8n@Y=zJkvk3lOH+6it`?G8GFgqVO%=;wu>lf@AGB;2W&1wO7HH@+%p! z3^D-o6c`qzy+AxjfU7t0#*#vrs}swfznJ}Y@dil=F?F)*k@QL@&_%mAgTe65yk{zi zGZkoz&rLGTSDNNWFi)8ZVzC!0NHijl*J~6yM9l7SL@bPrT+0)Y{|V1MVx|=GtLx`T z*jpud4cH%{OerwE<bi)i{z`zxMhJVX><hR@zqJ=?OCiCLo`?NiE(7<~z<CkmvsDD| z(SJ1pbBktgmuQo^SHP%d+|ZhfCVKo(-WfYBNhzR*^h)hzlP`02Hr@R=h0N7OBod|4 z?)z(wc=imsdkG*Q%@J?UhtUX*pk>?jbhm@D^{id;54w6WWi%(+#ntiwdMNo7J}I*J zeTnVfiwFV))4L3?4H8swk+NL^*u2$r<UPJ1jxW%d@1DfZSMq?(3LdbD;R_PYF=McS zv$lE+HV;ysxA2ZtgLkZn4qEbC-bP*7UQBmSr|Lfl)j4sZ?h{Vvt(vl~kgF@yI*Kn2 zxRBB^L2Y{nu&-Dtb<i?+#nd?w9VW&Vy6E2_<N$kzgoo+!rxAJ#h5~Q?9yE*I!!87Y zcIupjAW4*+t!E%l24bl)Ln^Eh7PnM2z4IQr<Fu&UYEi{o?qa1|4K$7D9uHrDx3GP+ zBw~>RE;$`mjYFYHaY`6j__EeXZc@k%J>FrB!{j(hln%^NNksEo=w-XaQK)4eKhRR% z_MR0Fq+bLa`3Y78K@stvz?vlr6c(%eil@gJkRJ!9Or!CWGG4rPpANqm{4nnvO&Jes z&7WV0?Tt3PRqU3OAVuS?_)3#GDc}1ZR}jY)XxNVvx%o;Cb5hA+PSjjMBKzjZD89mg zt`*k=wszua<<Gok=x@988kl_TF2h?KogjBeWcOmgwuZ}|w>SivQ6vcRu?nwX+o;qy z)wD%V#kwg$HlVwW6yhqi{X0Y?#uXrGM3QuEAmJQ1#GF!UScTSU$n;2i=?uX?>u1Dx z0AgJ{+Q2qVPy-3Uq{7Dm_o5lH3->DH8SAn}BoQaJY>hfs)kx=VLR#R=w^XJ*kGil< z6{lY#(y~G7I*smP@%mZYwotDk1LjiT4y61F6l%6dE@Po9kqV;teL!efN|xSKsA;*x z!DP@}m{(}O7uFaVc*SqEU=({Lwr4K1i$M-x6gTKW;1x}O8{-v~i9g~MMPslBfB5+r z?B{_1;TaQY&zsmqQ?WTBV}B^vB??4iZ<GSWoYkU#@xAP~Su=7YO~ejo88JvfxR0XT z6_6eQ1{3lkkFp9%`%``X`DmZ#{*OMF`^NfQ@Z&xw-O^|F$9<0fVV@ri_j$lg`aA)B zj{pDa^YDFwKF*|uHL-~Isk4w<hQ-k~wLOiNO~!fdaAw^_guC51?Me5(VeB{7PFv!p z<wMpoW1JRx1o^j$A;Ww(EsHz(3+t96kGj+s+9i-JMw5%SOPHS5x9Gj^dA68nIU_My z6(+UFR6?UcQ;FCF;9C)sL}s!^g1nsSNVaLjxGg0NSdsw;IPe6GBHQqJ<F$lS0jrd` zpHGGggsh6amk1h3$YyVXfJOcnuL%k>lAH^%*tZ<Hh<u3qIc^HFjnmZYTacf=6#7cO zP{Eaok@1u-BsooOS3!HfxQaJwzcXy%=}7sba-NRRB7ftrVBuli!sRR3cP<4akrlMS z099as&0B)Xh}!#85+-!RwhsYrBdo+F2{_(!RSU}xE8TW}M0g650Yg}mPlyT~BD5Ct z(YOigxmH2XR3b%gJp3?T<8X+fvB!WHQ~AF~9uPYN=Y)GC)7Jmrh%<1(_}mxl+v|BD zoex6R16Vw8`fNDTB?)3b`sCEulVtLQn@6!Nh)HAOJxHNMs1$9vT$g~*I4}D$1Qn)d zA7XQ1pO}{tt(1wO^3(4df%wu+59}Xd|D1p%NJwpV^V`bsxA3ke2|5_zTV}`B?D)0= zA!oF->7OH5_XqZl7}qDb#p~SrLdcLMv|C0*)9p#**u`9S3AUvY(DQ$kCI2BjNlKko z7H^W<exJZ>_ewp?s*QL5+Jg|nq<<$7eq%gzv<hlT{J07{#B@}opkWzupF5-;u=4~b zpR92dcnAOwk|3*Z)NmroT(Mqfs?#O;jCX#K$@#*@4u~jb?wSTV#+D(Bag4$OLB&7} zticwc=M(xVCJf1ZH#&;lFbo5fo<pb^E@!19ZV|P)!XrVFP|`cnCXQnnltKQ();rwm zYymP>+zHE#1}7oV+mbbh=0qa1d8}*l+qxF+5&JWM-4hA0djw?pB&>flM_;-ZU}J|v z0uPOYN>_l}tQfmkk}_dpi6kfndsUVU9Hf_RIXWJtQ<a-*stYMLEx}H&>-mqJ_Aq;y zU{TT<O995}juv^NskJ+0TFzp|y**maMJpaMoh4Mi_@ZlQWJ&f{u#m($zA^i-BRbL@ z%`D0O*d49hUVgyVlao5*1N*+Avh4?P;_%SjJMGaC4nHooCCu09-LMMMalQm@5UUc) zrW!V}iu3-bu9VPi%deCS=p01ebBmeULU{!(`!Zw`C2-Ped4Ck=Q^!@%78oswrA*q! znrGrpD!sTgpkVE~Wf)@IvMC11vMs{OsKKNl74a-gx6WOsGx%I@9fsX2r>5firDO`R zE@8I-;$!Y1geYlKl6;^BIBrcB&d&nn3AN7>C^Imc#BLfMlL9xnSKuZT6{kZCcw*NM zE&HK!WuL`o)3964<9#8#U=vNeSLv3@W^0nn)WnPkSZq_8Txy*k^Vlr$z8R`&%!CAl zQ$ajfC$Z8@I-i^bEa;imoeY2nqb1vNSEM|8mz748Q=BpQ4{4Z4Z6e-)x$FZ<ErM^9 z>)(SUlux-f3<*c2)i?|R?_o;u`axy*-9y5=$YI>Xg<tmIq|S&`;jl2qu^gW~12tyL zHYc&}p#xh8V+tS65QK%wRSOl|uK*pB<w=uN#*s`ili40kh7|VK=(v@pqI0Pk{?*@S z&d3D);1P*DOHuD5uIoPhdhq)Qzn1~0Pw;OCet?&W7Q10D2pjHf9d;gAUm&3%L@~fo zwMJ(g4EZk-p<*3Y1UVLyu@|LYT5{Wq-;BK#=|;?|(dr_+2x@g}bzhFXb%&cCKlau* zFU{aBv`E@Tqo0P~(u!vVGxzG6?s$*=B;@wJOu9k4dP9sFS1?apbPoDu9DukDivUAo zX*~4W!n)*2I2_)O;yp-1u0M|4c3XSfErC%G`-ijmO&JjMh(Ro}Q)JpC%fo=YdGb(# zJ#3?c{8XB*PI5l{oU-`4>%2(CJms8DSKF}V(=x51^2GPNU2&}u?IJDHSl@KLorzvA z|E<HfW&?TBDyzy}Q9j)6QV#jD)>N9KRw>XB)KRNG>*|bZl|uF87O9?7RyEgEwfKTf zIWQ}BS&|{^)U*)oygt+prq@uv`F*=c<!<6(;a$|?!>hJ?$xEdz?GajLV7PtrUZFhY zM!9RoXeBa~Uu}0lBQJ__eNm(1RCseOt#S>W^Y0-i=6^>ZpoMb*Ocz}Xm*}-}wd?FT z?4(h&6-8aX`6z>d_n%bT{-Em1Q$c0DRTl66`dr&zuQn?e_8cnpzZqKR@|H!wji{mC z<05@1_4(iV+&ACnZ%^_$b-EPYla;!<jXF#>B3mOc_9%~^KPs+)w*xF%!_X9ytK<6w zq_jOK5|%OIsLU8P?*eD9GStD6lJ$SC^Y{cK(i50zNYmlyP{R6vI^Y;Zs`;(!??0|4 zwoo=&59g~rVgBRixdK00*{{ZlB4vJI^ggR!E{mix`mtPsvsLY=t9rqQxZ1fMUlmsc z>@yxq(rvpq3(BwZfp$hgNEJ_^10p*4;dW+p!FtCZg1!dbh7DXs*bWX09dg7)=0QCS z*-gvM&c2s@eWJN}&}7fWu}6R-W+}!9BYPgoX~a~>Y>7e!8VvJwMc8Bo50I)tmrkCg z;joF|G2wp=6Ww&Rykbh+NrUU9!7g<!tWA4-u;9VpfG;BGlM)jL95vC^ZXby(>*lLR zzZEJ$9j>(#p#-%)EZh^jsR}|DX3FN8$m#EKa&yh4-!nCWQ4_~SgD1t-FzmB~ex<=c zXG|p~3XwUd@R)ho0ll#d*{BLd#K=Gw*iR4iwhM7W1+|xq@K>jLmD%z=0?T9A!g4`s zEOQRV?h?b4#Q%LNDx5oYtV$1*vY2KiOooUWVoFQX!S>)@U7(B0VDtxXsoNmyoO+Vu z>;Yd@2C<iTqma!x=kI~U*M>hxknZaiQ*72b|332QpTeWpNT+G8{2l;=z_MTvN9i~{ z&ztB$*f0Q%6AsVgzyIOkIfg;tHgn?YUX!94hvd4XC}Y(3oV7YzTxB4>{jn|3Z4lPc zEyByDq{+B6P8|&Rq%dc78}d;38|j#>Y%%5uwkY_^Y#N;`F?2%J(9>q?Onfz&6w<dz zgV3*Wqn|npH8>R!R!}llHf|!8BS!+#t=OlBQG<%PD){ZQBT(fE@{?o{T{dp;)E0B? z<*8yQ0$}|MtR2|V4p$dZ_E+sv^l<pu1P*6?%krIpBTQG~pz+1a3=L&a_+9<>b}Qbs zp1`|UE_a3BorZU17X^he+7bMez_((P;fF%m4qRjykMxGjc$A4cP7auv9cwqqYNx|F zBcI|$)R8|}@s1#qF=!2yGr_GUocZAdj}r;UJ_5Xto^6|bN${#UspUvD3ZG$3c<$UZ z<@F)P!iu%)6mW1>JRS)<JZJQU?r{J=l~O40h4rTrN-)F=ct?58f(2Wd`%y<5B3|zI zB(z|s?yNbL(5QQznAK*@I#>;NDI$YrRE)}?14Q046MeYr<%=n5+G&b1DE!Hn1k0dF zj1YVX4~D{r#FGS@ol!dTp9{f+g8<v#UPrnUuBZNWjc$#(rqLU*5Hd;?*Fn*_b-Ffa z>qoz9yYDg%M7n&^^1s~pu5IEa;h94J%8h62MvW)ftazia{>h66THreZCk1cX&!Ee9 z)tzk!dKAsD7nlKf8G^{IM(_#pblnQ$IuiIj@`F`-VLdJGShL}vLN<Zws9MqEsI{7A zkF%&Kf7RLh-)UAJ`fi=5QS~7UnivOHl?K&5_KljLoT>9kw*FaHn~#WWh*rqZ#U+$e zFXen9ZuYp%GEP2@gU<^N;pN3EuTDiyE+&Y!T~yh!vrJ?O{Fk6Kz>GoWTyDOYStV(Z zFH(jBt3!UrGO*5!A%I~XmAz5p5K;d0b&FrFTl|=>e)1vc$GovnK@(k;zt4SB5nW6% z&%{10y}!JjW*%>q^_EGSYTEhvQmYvVR=`;0?Z^tCw7$>0MX*eL$hP$@5m-RMIKw!9 z|0M$l)W&)#9mhm$RI3c~9cChynObFyHau^zO^p!dri?Pq(tuF1_gbJ<rTA!RYK#Nk zX?Y=r!wXny>O-EYlDewreYT6A6?uGi4Y6#h3&$)ep={}A{r|k=kzx}A9Ub;s3W(j~ zY7belTVP24k^yS?no1E~JRAoRvxbJumoD6&M79)+aB=}}K#1B>oZDWmMidRQPhw`2 zefAkB59e!kA9CzbmnsZ6pXt^>pm??&_fV{_-7v|eJlhHr=yuw35^dKW#uw0*yCsw} zo5nTq`MK!mp6;CSuKk1SOf*9mCBe8}gu@szf7j07=tCAZ)n+fp*?KQH;|s09N{Pl9 z$D1UH#e2mE-ew+u!9P&h&P%j8`{8n6#b9x|ZGBYO3tFWCE<rf#*2B?CjImm=BY-{u zJ2VM|)XJ1;zckUyW7kM=V$qL`8=0M-;H(lhMzD^-&Uv|Ud7OC{QGu@#=gub5?;J?1 zl|6YtH~eRueFg_mCYT~&zgCI)Eu_jDKg6cvVU9B~@dyY>_WuIu5>)_!?Ni}3Pq+9Y zyO#`)24-S}5GwG3t?`0$*2KlSm?NgxWQ8y-#4scaMT{D$3%LEmU<}*2^4N6Q;>Gze zrg?c`S?5=XIk`CB7mPuW|LH@&&1N(d;?{cn3s=ncD6&q@dg!DI$6L;HBhqhu65&X` zyBnQ%#&e^$Gq4wuQPmP0`PH25Bo@QHfx8UE&KGf5fEo5=3+A5meKB&#_$E`-j>c>E zDK^1w2KOB=Ub#<!dkX(%<KGhe8t`kzuTHS<gH^{0<GGM|?U~qKn7dA@-A`8JQFKG_ z`et!$3lUBBUkqD$G$++=GDvRTM&EXel2@^1DHIqV6WQf|w^giP*3KRd*$&*r&5L9i zw|$<Hn<v+D$fN_$j~tV2nTE?t_4kIjH(%iL48&UI&A%{jaCvF=c})3|cK^W;o-uC> zINP~@i`>57yZN@&Zq9tgAPM@ez~F;P-_<7UHK!_1m3kxr5fXh(NoYZOETRLQv^l;@ zbOp(@3ftYHE2gALHPg5}$aNZQCs7Hz9kt^zj7_3Z4Y8-It!WE}kbkkZe0DqM%N%|0 z?>F9yx%plT-pgSI^4l|Lp+m;4<SoH;r3!BmtDwy-1`@c7i-&xOTL1`BBu7%pkkYx~ z@4_E-HiQB`*RD1^uRR?8YGUx!NI_X^yn3GXhF}ed?PCfC2758al$6x=B6=X`IAFdi zX?p=yF1d_SXa_dw965*+5Sz#jNE4&+(oeV2Rk{^x7bp@uP7h-2f*&W4o$(8Pc#3%o zpBCf{UDb-n1}K>sdgz(B`lX>j#M5gJj|WR9Z@T@yW?f(o-W*%QBHdUyhgL<qeid5% zEv3$_OLKV@PuFo#oE2|v1|FjQwvv#}x57oVX~6@()p>PY3Tk_fx=SH)YUK$;r7aUt zM3`9dXU{tg$C3AfQEW4;iCZe!L>`9wmAk@a3BgspP@j&lXZJp#;JPxM6DPXfI*%Rr zA!Wdj2mw04qpMVE{J20KRan6Ag-*_rL#!Pss_$z-9zuQQ>7kG8s`RHp;ALCRKf5CK zg486xxALEvN9MU<%Pb!+Y(FLg)TY_vtBIS8=@U^<96WUo@)YI;ji*Dv^e*vu<IdAm zPm&<Og=M&~EphscS<}7Zdl@;24YH;(@7`)8Oc3gKYE(aNAboymKDbnVPB`u=(gzYF z!^FWeb%G3z{?<-|X+j<~WO^83T$nYjl5N3l*eB}~+ns8wOBC`-C=QB!m|IKgI31Ty zc@=lUG#V?T4ptg<E4=wAzl$k^6%+jM$TQsvyyaF*C1M8>MhhPab6Q5(es$h>ig?jg zNOk<S!aV5p0+OFOQYQ27XM!8ys3)JPfUxFB`4w)VD`HZXC{m$=;>=Qm)NO-EFLy_e zGeK3yiQG1k$t;2J2vqEe$Cqe?;NvGF1Rq(3j%=(W0vvhvf5Nkj+n((go=qKd?Gj|b z4@NkJE?keRYlPE8hOccTxyy=xev*DlFp!U9UTn$6x6=Bg_Mm<eqX_seVb^vF8@8H< zy;7>i?k%7aJpa@vXO%pZE(HWP>IZ~=xLQ$vChFAvQGmbe^$`%B!r0b25^JE^u7+}$ zCTTm$`$o(Cqvcyh%eA#lVp8rCcr4{=94+^amd|CHM8fx@<@KZG8%N7Cn5NLXqhlIA zXWlU4f#qtL@=K%)W7j9O{c+?p(<*^w0iwdWMzm17i-I3yAB0+S;2OAY@B`~XN%=KY zf>^q|kK)a_=5Nno7Knl#GS{8>&LgoshwMWsP(wf+B{}}=2ofc=ieRQH?d{CP5^P&` zTgBx=;fizL*EM}lx+mylcdTfoYyaD}ctpztzYqlvWDi_GnU-maBqJ1fglhrdX~bQ2 z7+!5HAwhoCG=29jmdQ;jfV5SttsVIGT_)O>v<8?b%mYrVg!gjwC*O4=y#yVW^uu-L zqt0nz7`e>2o<4g0GhELIU$gg)2=$;o9p`iVi>d;3uDeIDyQpfZ>hdWA`_=kyN8!v) z3%~2SbHsf}6jTIH-B0$zLDz*5Lg|X}u05wf=}<j^&hbAs*Wo=ini6nQM+ip8Z6lm1 z2dMoaTrvd24#NP2uDB6W?(r&efTr$!nGEfm8R=Dw!`L#B{8`w>2z8Akec%*tkJTL^ z+*`-)St)3O>xJU(A2-NC_%3wai|^+AgNg8#d@%}-tJl#q9tR@+vH97c=8M!X)QlEf zn#%BR3+f_Uf+b%B=KLd!_h+vQ?d}|F_rJoub;sEKH{tTJ`;^|h<|<ON)y%$>U@CJc zrHf-$Io%V$>!^%<Dd%In0V?OvMm3YODy3fzO$i_o-b#Vid!{ks?kJpEI=Ld}qYu1h zot6?k&1gQy%<>SWzS}^yh}+X+NfI{LT|*703zU-(O~s|d)#E8951TV6fDLjcX{Ho` zmMP?;SsUFF)-0zQ2GgYQ&PcFB$<j0dug)@QxvXS_XGY2rY3#fa*|kxBxQu;k)p4oW zO0Em3w^Os_kmYj@tyN1HY+ERXM{%?&D?0){eT*h+hb(arr5hwuZmvnw-0UNN%>08{ z=Lu9jZ>};B<+{&{NFx_BXLexYEbz86>J|E^M9VR<t^n2Vr?m16NrrXsHC1~AoH!dr zAF`jTzBTHvg(7S4VK9);Alk<sQk^ue-A#8FQVaj)PNcT(UeIwlYV%#5az;(X=2Dy= zhstT?3|-ArL4U>8-Lxf_>e~^uInp!#);H!?4~5SA-rl;0wq#SY6?8RHRQguo_3G)= zN)IiYMpYxpp08>fD!;>1aO<Z9@Kwn<u=O6(+{kT0#WQX#onh$<Y0qxGFD9!(<&oZ6 zBDEw^9Xq0G6J(!+`kJFQ$N#WL6CmS88*=f=e?2%h&!v)t!RWgWgjOnYJQHp{ngFj< z>Pa-7;F)l16BA^eA&e%<qrdg3erjZbQ>$4EAO5XG=V7L_Ctp!yJtAWisXImMBW6DW zllN7rGikSvdWc-V9ll;du5-fID<6?Bd_8=*7LWZE;p>f$C`<uu>NN5xQ3qHNXASk2 z{R#RUQDq8I>Q<(bQ1lhD=aj<1qz<;`SS=N0--iw=j-r9k;vI;6aay+dx2c*5=OYsa z8y`6znG%fDUOl?2hvXFLSOKvt`w)WcEPkwG@yrcO1QWYH!dJav|G_68TT|s*QP=|~ zygtt7k=D$uU0Q3&dQ}Iinw=C+5Zg*u`mXa5O=LbcEVJK<Xp~yM$A+-DWQ0(~Gz2ia z1A0#M+4aOCUA?&~5LML})zav?62cxD`IM{DqN-Y=(p#WduKzyd`-8bIJql5V(uvV) zmBE~D03#7#>XB;GU)Bhxq6Z~K|Iz99hBl|W-xSrX>DjRkasdg;e^lDkDa18_{ovAn zl)WA5^Qtx#mq^`GMXwaWfmbk6r)H8Zf3S5NF+Gsl^^+Tq@9gYF?r<q}=;Ixo4aXNL z86{L&Hs<x^0b7(aj@?x4L3XL}0fmBWQsd(?oBDm84$$c=&&$mr!Vui%@$P)8^R7V> zh8tcMN)NMB1&g$x4GFB^=iYeyL(+uFMwyWFT!Drfj=OzT30%$kD!AmooNnN33PZ%c zPL5WzBCvc!kq(y9F$SjB2J_=w)Zi^6xx=4OYJ&~O_jMLul{QCks;I#JY@A^u7dlR~ z4a+&ik5b`KTgs^-xKbG>is1^!bE-(LRAGR##yyS4QANY?lsKIs0u4FUYE+RqzdwC` z=8S$5cHxAz;SrZlO$Emh=8REvJ`!qIR3Vhm>%L~?=2@u|RlQ2BTbU40rubT`pt17p zek!5SIrA7pzd~m`z)aF=kvZJgN|age%!=EZE%h}MrFK<Ie{l^(P0XeK?nh3CgvNh1 zeu_pyAu(kEPPe}BMaA7^BAj;h1Uj{*GA&o8sw_+7%O=~)COXRE^)J2)!)KH>t$!DO zekN!h&xKN=<pEaJ^gU+W&Z^8aL%B12@QsWXH&3(MCiNV4u&P{(4{4_IHkZQ2FDS;D zN=|R5w*2p*^*C0^lU)jBFL$#l-LxpgC~%dfg~*jFyS{Ig@T@-D|E!Zd@@I>@of>i_ z%2qKikqcEe>n#%=vDrp@SuE7BX+~`G#Yjjp^Y}JirOQW(c%ONH=pzpCgo3)ejJZ}8 zN$t6^7_M_VR~Dx=ydpj=UL<}%Tv;~BQKsvDceIB`Mdh!O4j!Ia{aMJtMrY&=rl3C^ zV=TwP#&Km63^E5x64s|y)7?L(9PA|a%E(e~6<smA*2y@zvV?96wId5V;a5UIR{emo zX*=qK8)`orwfJRS@ps7qR_!ih2WmoYmTgxwy^Mcjf^tn}Nr!KK$3by#XZC{QPbkax z;j=|beDw-lyom+8L1!`)Hob!a@>ptdQ&d!n&p-#*38^*2nv!D^TE(mAd$2%@^)H2X z%zgk4QB8lsUXX|Y20uEatGl>J*(&jtar)M9MP8OGUJ9={C@cs5cJt9JDLUFzg$Iy^ z(cj+-{Z+OqnqI)X2f}@>>CkyPppqiJc9)IUx8L~w$gFUeX_S<|5kiO2&U$5}Gd6p| zr@y&qnMVP38UdJqWc4r5cO8J3wOIx;lmI)4akg*(W;Hn=-!U8D^bl|^Qa1U~#8f5n z(VUhQFO3QVQ~#TA=c<}@O|CI`T04CCVR+6V@O%s3Js^BX7k|gx0?z;nNOcm+ond%Z zj>0o#44!tMXh#;;Ed~q-9QFPkvvqwJ32ghz*rwlwU=s+RPklqUqJEYw{!WU{!Y6*< z<(to1Agwno6JV#-FN0Mig!kWsykS7D>i};Pz_{-CRAp21jn8g{<G@C|9)<b|9BX%c zD*GN>a8U$U;sfJ3HaY<Si;mp^xJGlns3jaN`+10CV*zGxv$9x@jdOGlb6vxZG7ZSU z!Nzjk*I(`uG3w2$$O`Q6JId5>cW{&;ijJc!y80AZP81PtR%<wJvQj2?YU_9|k0Pk^ zD|7^L7Ldoj{Ffo)%n=8R3`F1oCb8nkTW)rumxWG?a<hqnIWS|*;7dsIMvDw{X<{cj z*!VymDTL64LVF3tFCfqDcrK=bQmVWhbEx&QQ;#ZxQ0tI9WRv?NsPjHbzX^aL>oL|f zusth7Z_Kv2{x#xOP$?QqXY9y&8fe@RAUrcYOC5ECXSTGCvP{lt`jVmFnVGOLTZWh} z-RKh19555%`<E8piU{jH>Oa-%Oo~h`r!C2pwu|uPl<1-2X%X`BLDqYQnI#<Ga~#>| z4y7L@{*2D27;S%6`SRJOUt8i(uXBr1+dsR!%;Z~Dt)`gX)D5_QsN81qy$zW*!;!in zLfgNj+?=zwTS?_q3b!lEO$)ck<WxqN@b=pBB$K~FCZ=-m^>}Un#`0*0C9|iE6LdLr z>IRASt6ZX|MSqK4)~%<t{qk=Mhj$!_W;BblHw^FPJ{ZwuZ<s0`PD&hfMvou5dkXi# zux`zUsfts8;#7q*Njp>=XaC?T6H{bevq;kOYT{t74z=n?t=fKJJ%T(dIVe3X!#d83 zGVP-24wd#uKzn)PhF=KFKfU-<-M}f#%<y+$QVJ+gv?t}?Ok>j9#Ybh0qHk6D|Dv!# zbW(NXFdjx69Dh_c@GTzod`I3nC_O6AJ)s-8aC2_g)2G}$Td*8!-`7oFLu^8|UCwB_ z`d&;<3XGTTp^EGh?Os^WkPdqHUI|BoArshB>3#o7oqGcafmv7gQWQgLPhztbfJl!c zGvB&3P+#?|3cP<2m$9p;qCZJS%P-tseqpryrLpqEx0fFtEq{5e{KMPJKO8OJI9C42 z?d6}0mN$gUO?&r}^2~7mD){&J=B`^)TT!$Cb1^#1T<Ci-&&$;#Fx%nel>d&A6g7#+ zJ+L~&mRzsD9MYxuJhZ{OQ7zw*&G}Rt|NI1}5vMxzmzHwu!0Fp@wlE7-4Dm*YC<PSb zupow`!=P2Cmd<3qxcyaUJVVY)D7=|Rq!mI9T4>mq@d$F!Dmy4)rd}UkzF3g|a-qY@ zgItl1ACF%yehcxe0RKWZoYSVuUBQW}o~d8pf6TSLl9ufe+b)D$hU@TRGthmHs(duH zw89{>Z@J8=#i`F5cDVM{_p%dPCFO%akK%ZZJ<MGYIUfvU4jeD3KmpY~3H$^cBXRWg zem4F*n?R1Rz?UoW;i>Q7K$!<4BrqR4k8dX;^jbhlt^2rXQYgSr52(fE4}{o{aZPzX zuEr6fL52?Kbjfc7cDTCO2=pQMRh|AM>BRm!yaKo4A}D|bJ%Ie7ccWH*dfCwM;$)13 zQ%iNa7^hkW*KU{$P)-hKn>dc{f&Z?T)u7|#*n%<Haa}<5<*N#d4N@;ViK9&@L-ht} zC4#%L@s<1(TvYNIh-TnSTI6LDOcU{3YqG})7l|gj#uR~&73n5gaY}4_{4_DDR|b+2 z*L^IgN8$71`Iw`{J!(t2ScWrBoTZ4_p5bhNA!nfN>|~T-UWFNMs4uh_B&g2nGVunJ z1aQ)r_%xH0$T=o{nhAj{d6Tw3RYO;s#ae^REC$S%Rsay_D)@dExzK`X_fN!xBsA2Q z$a*yt2H<f4*yk10Gomz=eFD9JZQ4a3xik*L8ji+vaK7tkM!OI4T&-F*MQkj&&NQQt zm@1}<vjJcSn`qC22O1^Q1EAmnvLqN&p%t`PDOTXT%{`GiwedOWB84mc^sOr5Jo0^m zNi6P(u8t9V{8-G$xeL|ce@@|upd5J!Rcu^4{NzfXLqXv$!gBgnst_e}WiP^MJu|In zJ}JOo-+a~L`Mo$Ovp*sUqd*`+Sg@{+1oEaER}SN0--D{sr`!=#g&cF`woE~%2yBYu z@C-e5TQcy(U97?She}gpAs0<%ERH$&fU~6INDi=`j1UjP@`yJKatEJYnp8nIxX#NI z!3e5XHoaA{ufFGxr|;0G0f_j78P7~EH$Y~cWT1H&wO+~driS{`X$CRol4lh^m`u#1 zmLqfc5qP8QBU+e4ylIflG}~zy=S=CMGkVpCMo_+$%u<20`0#LTQuT2W&gm3yY+-YT zF=LRjvuTi%Nj#;&Wh$T$Qb3$xvQR*NIt@tN{Tx7y%F<3Nt}9w4U0nud>bj2y5<{Mk zV|QJvu7V#!WQhw70)z@%Wdm+f(4zFxX_fSJyE^jOXS{U!rj^@XQWZ6J6fN-8|7ZB4 z`Kr2?f<?bF)-|w23p!TLSjo{EY=a~1IM#kBi;jH@_&|h@fPw;~2Kq+YX(BX7EmD?8 zgFh7)KA!Dr#bGK%l%7!oG)Bkd4R10kh5>I(dxdMCxF6rj5VX0g$8c22Ode2&m?TK> zrZpDK4U@-6p){hHX^^^@yhV!2z1OiUmR-Kqm#jKz9!i}GV5U3!=TQ4(c2>K?)yqx{ zGou9pGeV`pq{Z%+S^fg~%9)gmmK$9CRw~`OPlis9Hr&^@g1JK<i4GF?bzn}SJ%ak? zrAg_|5}949=y{1?$ppKF!g(UWAgLV?7nmZx#DjkD>jFF@@Ans^+djGmbWGPfCc^O> zXy}+9hfAQVW4;C?0FXHfrr@H%<tWG?|JFMS((F=$1B`ACDGtEDDuS}Z9Hner`GFDi zCr~h*yy$lnq=Sn90m#IQG4Y;{*|)D{x9ReI1_|MBG_Yh6Sd0O2mZyQ+k$+8uj(<t8 zcOgVcu#ifEe$SW#a7m7r0=s~O;0IX=aC8-c#<N}EBcA&6Vo*oCi40lWB_mvBrsx?G zLphCYdYYhWX)nfP@?Ga5s8lgsy%(mpmRA5j+rkl7=?H4{DyRhFNPzxoFK6wfyK_Ru z;t?+x%}ly`Ci*hU#u{AUV&@~sveHoBuK_1aaD(<HQ0s0q_-izHT3MWapafVK4@gxi zC{9>adMAj1c=B&M%b&tKCp&AG_UBR0jjxshzCiehFv8CR!uQm;QKDdY_>go>h=e#L z2Y|cE82vv8jG>x{fGJ|Sb6bY0gX`$%^0CpwAN8no8NrVKGwKX%i?gGv!}IZycjIhH zBb=0iq+dV+X<;t_o^G;esR|b+Dk#+eTm<F&M?eOL?-4Nkpd3${dPmkPH<#8&kDw`h zKIg{g-Jgf3Y?qx)1ikF5@0S8KkIF$1$H@mZtb7F80Ad|YK|_s8A-*xi`Do*eYYp`v zCLruSv3)Kqu@DFbZdeZE@O1|>rP6n=J(@E4s3lnn<CW`~&N@>pRWwg${QmmtA$X9P zwBn-T%*^>w_Jv{x(4J6{AOnoi(PJvC#7!4RYzf!aD~ldPL~o>qi@hq7?H>VNB=$#O zwM{7@bS|X`5zCo7nm!$AsE3LI3#HhwUYRw4H(>>aek|L}&{>nF5B*NYF`84RHzu(k zU&n}n9XAH|uj{xZ#`jPV6Ve9;Cc<6WLK&}J#VAp$803i6rNNI%As;pP(T+V&Tz26q zSq$#Z7V~)HPbM*KZ42vr8rpd9<vhC70<6iF*k$N<f<14FeIh|``@A^eiPoN%fhQF% z`#g>CKx4-_Io2xxC2ty@G}PPk(uKARCU!C=9BVfeOwr?bb`lnEEY+6hN1$7xA!bYh zUUcK=XkT^J2obP2nmR?_5U!d^3GuXyLwA76Kw|9P1V3ER8NhMd1T-SMUaO?(2(X~I zMrqr5l}Io83anU@95NGx8;6yupgnC4ncjg_jdsXrJTVdR1<WzQKtpbEgasIQ+5^@Q zU=U*14-p3ZgA4>H=%X;4!UBVY7bGo=##3+N2}{6Q17S#kWeuW<!30QSu#iz;%L2{- z8HETd6EXGxIF^EHsv3cK*Bv8*)B@-G-s`d$5s+kQ1>lw~TVM{$57>8tzkr<-7eWdf zV*&N}9z@}BomWt47&R9SKBK>jfa>rICYH!7{bC}soQW#_SIs^dFpf!MrUK`%9KT86 zvveJ!x4Z+K;eY|AspGKSoI3vWxC$4J4bICb{Pl6FL9VxA8cd6rL#YTMpc&~q<HP^H zGpfNey)YZ>yZDWomPL<v{0_00BO-$otM(lu2qJiWx&FEX7RGWa!3kBdg9lGr@($fC zAE{@rJ0hs<chlVxY|hD~24z&2f&kuA-ycix&7q)rCsL1LTyQ6y$u_YVS8aUv<?F_R zt6-u)?NykKcvNGDf2N%3jT5)aiayZkQ$m|(u@NAX$wZa}RRFaZsq6y)s$GJafwD#x zirsY`sXSX{?b621@`@46b3-RuT%=q&ZQEn2I%h}S%f7O{s~<J07C#oO`>Szr1=}*M z?&XfGopB(y`g6kqX94uV$>xBQb;lD<HhVfWWnoTM{_;q1=~;}b6?;?gF@5#O=4aXd z;Tv?@M=k}rwfqHL!=z(6!N<rFOBVL>mqs>UWk0?7!6!F9V7M?n$?7Opbk$Q2Q3q&C z8wm6_(3Wa|Z!&g6b11g^=I8I<_+0ioirqV`bJlUO)RPV!yJvXyC5N5jqQ#4sWa^wz zj(K2gld-ZedFT~5$!+u%-nBHnHe&qh%6cUcO2k~TxHjJ6z0S#|j8Z7XEQsC-96be; zY7nC?hdK_v!49<sOLz%ro`_(O{~$)v>7XTSX^@vgNew-9N7=zEiywuvsY9kYk`gP% z@|uY8pdQTR91;zhe1z3QjZR{jW;?Hpj$hHU1r+M><5jYI0m+h$hnU@Y#la>B%RQ)- zP@x0>(h_ow1(|}t<A4=}eltM&pkEL?wif(!vT3=6ki%3=NSH7&hS0TCU}9(sJd6kt z7Gk1VbbTqzkio!?5Xsd9D9k}KS~yv84+@({Pd!hkVY+xefv3T^<9S}s)20R&&nNTr z6rN8+ibbBE#H-_YdlawM@OBkXPv`j*o=)d^E%pZnnTbd)3E-pzj$oI1!e5D=nNEhL zo}D{PP+x%n4YAo0);cVZf^0lt&IYqdMx{p6mRCcTK#09>xDw$do+LobrgM57;weku zb+;0xF)~=`G|L7<OhfmX5YcK0`+I-+m7tI6@-gMHyX)hw;sDA$hpNvQCV!_0f2Wea zg3gDbjSH^KayKh#TU_b^!Bc|7v%jBn1_sz~zXg<fBMt7pu)P~}2dwxivBLl=ghS_o zGf@&^|NT4I!hH&VU)cJ&MI}(9tTVbUUwK8GhGe}dxw;j+$`DXcGgWigCp%VPH3zq; z6g_BC-N}m<GtJIfboWZiB_DRfvTz5pFN4o@Z?HT?YHu@M+11>vjExudDitY-v~z+Y zpcJLX)3RmM{T^rY@gpl-d%g{9fd@i+g!_=xvkLt`syryMB!QWwAS_@RRXdcDLRbF^ z;5Kc!T(oZu^kJ^{Ys^#bGHB9O2W76mf7>1bBVimR<NHSQhc=-OZF7TppDlK2Oy;a8 zXX-d_1g$+J|CY8qKmvC5{1eH=w1<}99ykx1yg0mo2UKIyr*l*?38g)RDD)Pd!e?3E z(z0C2wd=&({o&9JQ$DnPZblpHmGxIIH;eY!>Nfe-MI186UXFxkWj4!M;b$oYN?2n| ztjb}fW@ejMb(d8<)0(Za!w<70GTYb-PfV-E`1@}wkQ7%INHM_pRS8?KCzPgtOJP0^ zdr&cq{X<JzbW5WcF~coRTH`Tiy)@1$3b0WL(-B{y8k8|r+>>u&qkx?}8wI-JtR{Bd z6_XYGimJ3u6Br=ty9TFyo-%H_hJAh>Wo*30DDW@)(lurap0h7sLuc(2&hpu11OC;- zUjDbRmq(B#;EwikH71g29@V=p?zmW1drgO6DKg@thaGZIr1PrOZjqrj0GG9lJf;hA z)Sz#)K6^ZPx$m&bnN-AWxvXo9I((;xW_q);vtnr33@Y22HGv#RKdFmxEA%}9ZEuQ! zmfb~W11<w{ZEvw6(jtX0r$h;Ms|G>&)SCj|em!;gm}i_eVA9Z8>u4E=)SuF>lE|P{ z<1G<m8-)L~=ba_X5ff3D4&KcpUIw4_r!w}%%YCy{vv@1Xgqt5@mncZox73$3wn^VI zspM!<7SNNlc(z%gqLwIM>V{cJ`e2@WjmtB^HXZB-p%sv_{aPSeOt^sc8Y4l<*QT@) zmcJGNL!d##pfeB<v;<J5V{eEE*!53d?sKbB#K|>jJLs-Rs^?VOxNBPVJJCdk5!Mf7 zC=B;xsReh(6p6MbEt`ha-Sao281H5MX$j%C&M6W@-fZs|HS0VI7^d1wU`;Zur&8PN zOq*?y6PPKqy~8`Ju}uZgaP6FUmj#E5xR{xOrK`sqxf1;uN>w1+o|B_1t(riIIJV_- zQ{o64eWUwA|Eq{OV78LwFT(-HpuiqZ;5YuCUB=MBl3E%XB5IKdOq4oNPRRHSBpYIN zM*x8FyS}}Q2E(xM8!zJnxU-FYlTgP!B78FntIQRw;d0+JOp8Zie)ptTp*S+r3yMq| z?}aU@LM#}FPwtDLW^q<YGi^%F!2v92!}#e}%_I(LQU-1q@l2XMa2XRFna=~GPh16F zhx>B;DlBBIq&EV8b?y7gzyIP`43;jP5U+&<YkB1)sVp3<g^c07ul&DA_=)#6-16R9 z@Xg1F9Wm_a628Z=phH^AykEQ>K62uWD?+pqZSvZkv?U$xIJDdMm$egVODe8KZr=;! zI+=3A2IUG~sb(qj>XU9fI20K$L;(p=LS8iEf<_WVx0&|Bmv4faqa`)#+{lA&hSy^> z!V|goA=5ZQP&;h2!zQkBtZ|qb&JU*@iVILF@ie!E;%stQnTn8j3+AaH>IamY<Jl)q zAZQ(E{r`w>%$6m1OkyR}wu;*&181>73GibFE@E76x)!9;<<z9H^G=d=MFw+j^bxMD z@vdK<@V`e~$l6I<>@B|oXT))Qel1SL!~-Y8^^{TOf0KF~l3M12;-N^mynEG@R=+Wu zwq#(K@<5Eb<@L4cbhm*TG7uQSQm_uFcGt!obaxVxH=T6rZ-NH74dAOd1{AqFMjadl z3Mvi)Vm3I{Lu!CQftY|v63t0Q!8BFI#8#!O;eHZCQW(wMfYBlXqtp}rwFE}h0*tm3 z7;#)afss`I#SIv3z7<A>G*<Z|7)?0gf11E(g#e?2x5B9D)3JJ7>{tGzG2G1TxQM(8 zc+vF-*zUSD6K=#oKK~8Wn>S*>0#^ab)kxPJmFc?}^r?$IRNJbH-iIet?a&P%D&Z(i z4tyg-kG;ojD8)peUK~M+2mW=V{Ajp*%I)PnH_ET}6Fk5vGb9p23BGR?Gm!)P!+t=Z zmxIFh!aIwFAnQW?`)-tf*Y7`dVU(VPu@R$fAW9+Sno9<#(2*$7yMH(~P(gTDLk2}X zkMThs(v|NOx<z=E>yv)}r?=HhU>2_TZUJzS0GzAowt9VUheG%kIO2VCap!Po6D*)F zA|n7=(oWf!qo_9s4K0Wqc=yKmclG<<{U7aUg?5yrofmFvC)|d1fl%+-or-#OxL#%X zJ2&cmwcr2RZS~%Si%ftEL*VlCZS_*bFQbfd05+NE@pcOo@|5}N1>57_$eoKEk~Fs@ z)nTR`F-W0kAZ#H9_AwNggF~Wr$Bc8B6^<CD(kxnjCbXm>Vr|wPj7(TJmSjnpShCnG z*ZyWn776WQj)3v62oee`g8Sf{KvNY`L0-{;`YS;VDai5i#!9z@S?q}_-Y2Q5*tYah zuPmqP$rZ6XC9rT>b&Bjg^ma>*U|CHTS$VS_AKN9&5~+5*ysBhd>4Oewjx$AxgXe-A z`v;jgryyUR;81@gm(LKBKgu1$ln{Gk^uN-K3z1u*MO|*Qq+~)Xaf*q3_Dc8p5YQ4v z0>Vlh=J#{^{Xf42zTx=d0^0rk0twE|xHaR#!LVK0TY-EgY(E7YL0oh1zB9m(QS@M| zIwVKl^{Pc5S5<N!p2glh_1<wCv0QGt&<>{u#%mu}-gskvGy45^{&f2<3hm3?8pUY) z!(ZP**kRo1JodlZF1x+$-wJKZy>>+tB5;n<{J4Jq9k;X{j>+zN679MbEYK=UCdY1V zmeAB~G*^B>pgC4w8-^;%*-OX$SI)y@rURZLa0VrO3R5K}%jkixrz$<-gckQ9ncI*K zQY2A#v95w82w~6!n(g|U@FK!1$XipuQt+a{Po5v+7woa){=Qq<2uB+hng|L_1Po=s zBAATYMW`OO!$b@i9e2yu0W}qF069VlK@n!8uOgMB|E_-?_kRdC0wHGG4|q|U0Gt_w z<{Ewo7qWHIVDsc&^NPYX`2x_Po%UL1G(Ah|{Q~Elhr%}ee3&k|q5P~!WQ9RcbhY_% zC_O(QfkRg)9lKD92uzYziS74a8xX&cL{grr?5PQ7ME*IDnJk|Ar*FYy^V44k5h?~E z5u!60?g#9IQT2Rhl?2rYE-*Jh6Av;n&ZgyK-;upt8$2J0pO^%nERsASc}~*1m9oT8 zy6QTwMilrE)?^olo|VXm*!)?964+Ri4<9_3Vv@9^pbkY1aSp@g0BqsWe*b?%tK@Ba zudjNj^V`tpBG^D45@}Nf1r*R`?cH11`@e3LIylOaVgth<;n3j&gYnfqghf+6uw<-n zWFE?o`<MLmJdiYAB3Jg;x91EX-;^Bpm*N{t8_6@U2*?RQ2#DOa>%8z;S7fU9K&mV4 z>tLjz3wg03fNQ}*F*1Q+)fBLS2!p5#^O<v55H!M+oqbmqE%y5UvT<`t7i2Eq3mZ2l zcG04LX2;cUIUl5Hu1nN4CzYe=;2Z-tCk;&xlnTQk{W2Z*Pyf+aTrZs`w5Gm6YvLc` z)NQm@b6%h|b@}`-lt{hW<NirMuJ`vsz0o)7Jw0#>>$shUvlaC#!u3WE{NiT4vg3Zm zkL!I*s8@TV-p~Gby;zTb8Ln4bUU;+K!9M@_b3aX6cA@g=WM(^mx?b&+A%n8sdLB-T z?l}k<Kaf8LU-odH|H!#9p400)FZi7q-y9(9W=c?CBwRuZa3R3|B+qFY2+-gO3E@}S zF#-a){A{cZS7)Dp@Bip~lF;`I(s%Dq_Z^~_Q=_P#7=}rPe&!9Buz&0Gx8CS`Mq=1y zPT*y~7y3^+1vB`}z<%Pne>=wn4zPdj^S^TAdw4}o1w9#;3!h@(0Rsv52%i^T<o?OA z1IN02rQUrOh}6Jzbd<<AXU_@9meO?Rjq$ts{A>Ql_`gCZB)7su#&7?h;~xS}d>*dW zgo93D6(%^mtk3_%E%h?@j*+bEAgYD?5+bs?6?eG{Y1cisR*r8$qptVQq1RsPog58g zRL*)=Q&PBUftNqn=P$mc?pyMXxV8&@o=W<xzqMNOo%zjkWc`saaTOBg0JxhgaRB}Z z#I-E!k5K&V2uHFCaQRbP#pT*D7_r%X{#iHXqSt383}|feV}4>bJ>p;&BLAaSW1!3U zqv;jKkkseb-!_JuGVJqY4Dcg^Y<cm-4`>{6zw0>y8z$0QqSE82dUXA}qtCDUAN4I4 z>Qj^Y`hKdu$HwYY>&M-w@7kCC>w`CGnrX!_+*`&o>rjomRN~T~#{?4os)1>myHp&O zEB5`ce)G3q`u{s<m4J7LL;1I3#kyAsy3|e>nk8bS=66qEO-`n|_J;jJlF$w&0j4`# zo`@JA(P3Xn64rlgte<@8|MZr=_4-IaQl<gDaBsPe{xMec5P=d3;biE>W@F2VAFV0u z-Y@+h436;@(ART>z8X*5BFT`biunEpc@dH2rabf3m;Qg;(ubS)4b&q@UH#)W%U=5u z_-B>*w+;%hI4EWg0vd}*G~&Q~5l_>#`6)5+-O&{Ln-d7NE^N7pZt4}~dWi+HDg1P+ zd{q~RR^3@YJV?wNYqr&_3o3G$2(4lJJ&7eUB!%{o;FZ(h2D&>5KB$O9MIsH57gnF= z=1bVcC*0)RzHtJA0>d%vCQN_-rQdbSct+*Me&~1HicE|t49TJ&&M){3#snUoozim> zH|(c_m`*+uC*R2TQgGrn`ik9uojHIV=-1&CjshL*A7my942tqvr|AcT63{A8AY3mu z)!aGA<r~eW6YPhBKop35VOKc>`0gHL7zB1APO=@RgqRXYEC(YHfeTU8+u`^aog;8R zE7~UHLn!VrZ0l81@4Rw{M~w+h)r`k1-^hh<Jp7@U?6ttdW_`&-B3#=rVr^zFoV)D{ z;<Mz6x_x3HXO%S$IzAO~vYngN?9?wikE9ytz^e+J770w>EIxs>^~fg$k6mIr`o=DD z6WOfB#P-a>$^GVlLBiYtpUNwuD=Lml^sm%qL^9f=cbvWhuiGYm3FL((vA|CV7k#4! z-Z&Ghf~vaRfJA1X$%MJ?A{mf~%Y$1?0p&eX@E+VHaL&q3s4y*WkI_!wS4=#}8r4Az zpN?069=YqU-S=qJrTapmkR0P-hhg@w5W-P$?9~txgK$(N64i8n2gxF^8d(=Ji}Iro z=Lh#lg+?1ggSNBBbiB@iGvB+lU1HIZ$C()PFn71kDh)I#_+-*Y;5rkNz?t?&I4eJ~ zz4sLfw8^ai7>siUd*WkP=*-8CF${n)1s?o?*GN7mNXkU-M2Ns3eS+lS3UD)po9A$Y zlDi<>DXD|X^-A3acGFhfM=JtK>Z9D`*@tn0N;OLZhn0c!taWUo@k7z)D!l4p8;tuz zhg9#@oK*PV5A}WBac=h&-<hcNcLV;MmcM;-pY+`6Mc>>N+je>oH3cJ8R7(=IJ8A2b zh)o-0SaKtSg_Iv^&&ZZWWRg7^)$e!AUApVaccJqj&~dqggKdL@G0yv<SAXaITtvm> z`U+ivh-P1YRJEM?+wQG@{<o}<YAa6N`nPB%KKuq%=ojA5@pGCJxVabI`y{gwZuCHi z`?ttWH}h|fAkC?rZ?@Ba^NR*^3!?0F8_)lZe{&D6dA^OUJ7z_m6cSkV6<TZB8cb#1 z8#KOftcxDcB~fr{40|*JAK~dpmM+8!qN!@wFKeyvxrB#J9A%9_1R{4C?JW}nMn2!8 zb5D3!FDu^qHXYdC#>6mE--By#3N);D>_55q!8NCv<_<g*pW=JVylWm@QytP~pD%gq zrxSL)gH*X&A09`==Tfiw7cbR03YrVKwcKAUheNFM23p<AJ{lT}akhE@xK%X6l{*^X ztXqyia3Vf0D7z49R<u1F^1arvttG0>eg!^lvUft=Z;q`|b7}wHv+ZJCm#(RBr|TET z5a~j35YaXeAIJs74%6}i7*o~bhjXp~Y<`|qvv+;jS$EYye~d_xj_^v(<JhJ7Y;OLx zLf#?CffqDRpOC(anPJaoP{vFUitPFK;wE7pxe1WyU4i{~>+^P+Bfmn$9*J+)HbgDk z7OV;$xErl^iRC*aDDa9EUD#fWBf_dnH=WLmU#D`5X;6t*EJl#D4v(%^Eb9_WC?V*p z8?gkZv{v<qs*b9d1f&42I;y))VhWa!>Tq6R*JtC-L^D~kg^W0J-nLS^Tbh%(c*PqP z3DcZUokmO-teXWnSTWd($Na02Ri|y<Rh;d-N6vP-u{WelYQ|xnV6q`T=r|5IV~ZeO zP?A7r6xa})y768tIXMDv_&=bv0`QxPUlxI*e+-UCk9Gcx!12-zIKpgzEk0W`A3cIf z$022qAwl+6tUf%(YL4=nRbI2Y_D@a(W42Qk4?4nRRTeP#O!$T`xYxF$AA?*a1u!d9 z7wrl*x(GDol!ty!+Te;+$h|5>i4?E&YsBXjjMqkaMe25mmnh29`CeGub!kLi4X|Ei z*SGd+XuuD^3QB^fra1D0=1XUZx36TpdGApW2A@3Y?aL<%-o6sbDo5S?Co(=c8{|~| zC?fu;-_6G}lS)y6`16!Wq-Lg=%s6XHXI`AC>WUE|q&-?QrL^|O&_zAE>m<p#r5IzY z;9_5vl)Zk`|M&>Wyo`L)%yW&dg*n(F^Mw>IhL;&Zr65L#xIqXaSUzbdVt%0Qg=pI( z#=&{!v~9CY-n<-~N>WDGF@MA`@<a7q$)4BwXA%anItR^AJLu)h`eXkqw!L`NZyUiW zWTai6$>cP;AYDjDn_3iZ>i(8+V@+{89R<n;*XoP>e37?+#8HB!pD6ZuvF*8|{@fA7 z`(;+6mR>|#{6Q57qzWV~h~8<Hw<75x=_?5qUBPWGF8lRSzmW`9ioq_-flP&r)MrEH zdB^;RuL0O?!7F^SwDXA&zQOoQ<YBt{4+%d22SG+c@LEg>qvrE+x{<{x|5)d%2$TPD zSt$Dv_`^qH)Y<grJoCJxu<ysA-e`=)nKV&mG^=aBGe2+?;Y+MYY)xV>&Qy=Cd+h9^ z{yAq5Q0o<_uON&HOLLp=>}b9<*-k;yb7}g2m~V~j8?r~>ee9JG?bX_eoNLAiQv)*= z;$pXnEQvc5tFP9zWP(W{`6=!j6|N~q1u+F`n<(%Cw=Y^dW$TVefBhMREP7)gw1a`1 zQeHgbmI%wNW-_ZAVg7(n4fr~nCSf@K;9q^Q>JOQj9uoIv9oE=U{e^47QGeVS@Hs>Z z!Su)p10w<q^l%9O3zj4rxU$3e&2gl?x^c8c8NRr7-^>4xw0D7P^2q+ipC^|m0Uj;a zh=kT85D17ZpjEJTO9CQjy9+1?Zo5m+AX;se+Je^pn#2|YrEeix4b<)?S&@r%)!+rS z?gq59wb&|cy}PAWtXkVztrxuI|DERvi0<wE{a-&m<hjhunK^Uj%*;7w&cQf-9~auA zT=<htP$Nr&twc~%Z~+@q^G0!`pldYMrH3DyJ0~6PJ6L_feHc*HX%~bK13SRMKR|$x z4*?#ow3~&JQX!VczC}WxQk`Fs4r7?f(Mb}6#5#mZ%#rAHKIw>Wap9z6BPpxL?vJui z*EkY%X^b!EAI@7B$XnGvx0ebfMM7z*&L>Ccqy5@br1Q<u`DH9|3R(0YoPFqo3?eY1 z<is2pV<hUN37fu65>}`{`O2P?I^i&s?^t=~)tB^L@Q)HN+b8L9V49A*eXrI8lHpvt zRVXn_XsgbrR3bp#QStm&0H(<PGw2SG(1u%1v?3=+e5)-7(8M`9DV%`h*e_*u&o-QC z$Nk6Shq;}`Tdin|`y;pER=c+5+a$!N<AXzXg;U|f_K3W#<S@qdNn>xjQz)@YXeS5U zdJp&@<RRE&m<t|d#i@?7H^5!3;I1$;LpLKH8(CB<Uq9uL+yYPk#|`lGw+K%s)WOto zzATh)pLD$QBZqP=Pw9NtEjM5d9rv`nweJXs4`)9+)r~*5^F;r9Pz$#t98fS38hQ1k z<Fy|#USJ?f#!HXAAAn5%_;HM{OY?}lwbOn>_B_=m{41oIRNsYmGn6!lSD5iFPxn|~ zdJ98Yc%{CyQUAq{7(Y2tkJzUwWZURHI7o~_`skgk-;OY?>5nHjiY?G_5o?wl`wbj% z&Ptn|U2qcBC*H^R(Y*I@XYnKKt82qxY%4N+)~<?z6Sk>3PDhUcr5xB-n5gV&CmqlH zm?0kAcRmAZVnw=H*k&<L`sV#A(%B2ci=kmG(#jCL4F;yJ4w-)kS>j)u535`Ro$32q z`^jAzE~s1<8sFWj3Zh}0Hl6N5kQO$v;vqzPGTTckSGAMlBjKvz;4vsvWiNsL1nfQw z+^@T}2ziQ&rqe{l5)~_gNftC6Y0;~WS5U;_QF*(Ub38a0M-S_i?C_J0M~2pY3|IFj zF>GjzoQhGD6^c>2%o_7MvsSjKiPZc6y$C1AeW;VIRw2EIu5Gc`Hq<IwYRP~#xZ1nt zrxPQAl=KzyvLbuQ+%+G5Fee?S2$>=wT`n%{vKKC>Rdm&sM(1o4g+DLv?nTU;aow{j zXk<bNgH*z<PcFeUE>F{?(#WI}P*b)`O6`TLsOyABx&MJyfX|pH?S&JLix>0B-XC)b zI<m*kfZo{(46Ip#qFHni*A*3#@T(XqMd**Y`Jz&-4AH|jGF+RGI`0DZK3s1!wm;{a z=PQE$e%oyjW%z4*#Nk9LFa|Nk5Kkx=yieWQuG3N4re2Ju3=!y#pPyjH33&qPIzh$5 zu$;`Xm&{zf5(b9Fve|&Fx(~8o0P;fL+YR|5$7{Dy`8`aJeMG07I6lYOPk;kM`Ad7z zWC<%PnoQ~6>fI=Yd0o`A=<=K(fjl>7x<IZXV65vIoS%ZvEJ|tmCmgMY@1(!LmcZ{U zH+HjcdoV(Z?37N-$bO}8niNMH(S57iU-OkU43ihXms|YG>8{5p?VXDj(Mg*n_+-8% z5>cu#R=G&t$FD;h-{=7ew@1o;FU7WaL8G;OZLH~~laB9+D!S)7@kO_uh??sD&})JD z6(oscdwr?m*3j(#Ik6Ew$5=mI<XA`!Fj_{WV~>FT_d6hVu1mpb*ShT9!s5*upZRmh zMvVE5N;RseD;`~t@Zt%w$z(Oc=14da!vu_%tRN;5_J`2%j0Tgy&+Y?)zLg#Z2Ap_x zK%idfVI|Nm!geKCkiOpoKNe%)KoHO8h)%^pW$(SH-9b=N`q9e>&`=Cp*|D&2_1h>S zj{o}JXqU}m-%Bf7bvk`CMID?IFtwukO|x`TO6?L^sGmHoc*zC!Jy;6CPm(p8A$$s6 z0|=ke1|t4!O1jZlR%;$XEtdD1vnAGOYO29{%+DF)UsVT$SnA3pa2Z+MQF??ajZQ=g z=oz#@RdvuiVmVs(ny)#1lCx_(R}*u4jC$<|<;atc^6OyC_><GwcoZlg>JP*5JDhi_ z@X?SvAA{EzG_h2`T$}JChRz`m`&oLwhuzKG@W2oO{f(tyRb9QQ@wIlF$r<8H*32OR zmb!+9dZjf`WNe8zyzENFeh*dTrI{BAf^>GO2sCqTkY>~`5t=z3AWs9$EIG|+DgC00 z76vpU1I<K%W_~*1&=Zn)hNGEeLNhYiG@M5O!M#Xm=IjZcW+rnq)A$=gGl#x;fM$L< z{vgdTI8#mGw2gCJ7-acNJay-fJ3hFj@xf9OgBF6e<%BdM$o`32wO~eip*?%oH(0QU zu^hxqIyD`OJdGG@LQZDFd8LAZ@R8$$&9fSxX4y~@lYtq-xe%eJ7d&0VDgA-t#<YME zCS{wVC~8m+#!#=p$+<Tn&SbL^2K*2dmA=!1^-p?H*PXfB_7d^~-C>3RPPdN}Fd0<# z2oH+`OU(B1kMiRY{bP8peWCBk<Jm3(3G3|<iyn}<rB46~c+~IJ242kGaj|IMtEDh( z8$q11yq7!o-CtPoK|{c-?Yp)X>7_+}ld_;YAJ58ji(md8G#f|3O%pnzzOF~_+xKj{ zGuXFO8&Db?V5?iUY^ky|P;}H`Y>GJCKwT;eDCKFpD4PLQ=@UHIVinG<Egx1SgU=E_ zXS9D&w&a)tBrR_(oZoTOfk!CawLvAryh{E=FfEH|q3^8xSxZ3VQzkh-=E&NR+a43V zHcC1BgkvuZbhdO}BcaS2iGK{xHPiP2N7vz_F^_Oky$u{~AIkW~HVg(_&X|XH)^Tv# z>)!WuPW#PKhb;Co^C^x%QM-BCUF?QGFG9OH5=M5F!bHaNyD31gEbJj5u#C{|cq+T& z2a6cA8v@!@gLa=f;cy|I_Le_g1HW5mAhatU;CHEnb|-jgcl9;G@7B#Hw5xiMc6ATZ zu8e`WgyVM-=Q^o6(^D7n4M<YsGj%fIcc4d=mlzYqdWlik3{~zuekaDUZ#d_&3m}tF zPxg@WCfPAOm89&rUoN{)!qFpPgpE26%W(7<B1qroVMo+VhDXksJNAx&cM#B{*7O7L zl)dC`vZ-|6%OFP3Ei(z6aQGles>ij<CJuiux9r_-Dw3!i0SgNewV(nr4DrFo17@{> z&ip1N*AX)7Vsk#CIXZ*k)gaHQcNoSGp)&_hXJSHS)m|#ApkPh{B9rQEcfCX=97<#Z zBnGk?ATeU+S`<YHEUAtSoi%;dl7+rQ2<)-;7|~jp^0VWPSVCa<lhe751a@vVfxard z^wn%)1?q}Bkhy)94*!C?;oFHq6Q$Q4Ki##@lkmYmY{X!Y&>Nxhb_YjovJ1a3pAcFj zYuSV!5(PCM>`mx8#)c;e9hRG1_+j@+Vn1M7`wz~Ffvi2B1)ad`tvFPWsH@?(TqM7C z<v&!B)N@3H>r_1j7z+_ILkc-1;#hixx-g1^^K9oz$n3FT4t5do4vxa3DP1EVLlCjC zoabXAqLy6{Y1bXY5|IyY@*7qT^n5tAM8t+dVrtwCwgs7P!hlRygs(+Gh%-hN2?a${ z1vnB?G*wuF^<@IS5czH!S5wl?dH*1GdJ?B<Br2IVRivyw<`Pn76+*FLw`klQ;A|WV zp>e0((_@#Cw!)<H!UY_3falHB_C&iiaTb;6BtBIWj)bXH3CYB6Z~zaGb7%j<SQ?=L zb6mos0*iD2f>`iv-|)+M6Jd||zHhvB#iH1iuz-N#ajkA`48n7ZRI0KnB2%)^W2DR@ z;JYEil-(EL;mj=9$#&+IFshHEVN&z-IXLL5$$VM>7sbT#K6Vhjc@1}!Gml|c<5bNi zO>4aa1ARC&<r)gdpi?ajakKjh{NqVZ5qEbu{u`$I(vNp6ri&zoC_sI2kAKY(R7k=Z z{5^>pJw33mR$lFY_|lA_{<Mkw|5(g`jlOBZG0oupsN?+m8RU#R@Xq<))(+a6a%&j8 z=YHoPP2l(aPyGfL-eHY5(QKQnAAY=Y=R+38(GTN5gnjRHe1=+=Fzt^QMTI%V!Lhp! z2v3RF;pk$NLh}8@=cBy&ejxdNK)$aB^Nsvh`AokaJ0P@4O|U7732jeuN>MaB3>yVf zxmfR>@rVa8a#b!BSr>NP@@N9#m}wfYL(&j?5(58oxFUt#;R!4ap>Ky=6JA?2Yr>)v zh494v#Msz~7*Wz>zp>G6A<84i9G8g!<zCGAh)z~Zh=_BsO>9yo7tm~8J{-Mo6d#}s zH$C0QL50z_i)JAWbF$)$?+QemI;I?W+ouz!+{QI7Rh%*z__O1_8P{f9C`-HN7<_SK zaAC>H1@3F~m_@;y3GTIw2{Gf8IB4M;BT~Y!by`fY@+Z#$IwmqXt?_%$mJSb`96jCG zy92i1VKI*L9>Y6rhMze@B(f7Er!hhs@9a>1=Rtn_2_}Cc$vO^jVF^DCK55lgu%$k^ z%SAJ2!H%Rb)0>`V_**_8dZHC5($Nf=7)82Nppn&av~VvkV1aDI%(QsKIT4$KugiDB z7nfNpF)bmbgks+&f3*YUkc{{8_5DC#Hdtx#@}sc+B<V~3IsJ0rE}zhwlEy$(>2Yoi zra-s}!sen>8RY7izERTI@wDNzCvTU(ik`vdX65)7PyQ~4o^Do-tbBL!h|_}fCn&`A zbJ4jP@e@sCV=SOlbnXP}u#F;w_=R)QzV01ZfSc(V%UueMze<~@36VD;%v)zi9@3`w zc}V&vRI$Ysr#-B0@d=Mg4{4lP8R+WB+9>Vp$S~_e4aYrs)jm!-n=Pnq@Gs8nwbD6H z)HkT2w+GfuKIZtsWAoXP;IS2SI)$KFE1iX;)+v-r8A=jXI;YUqDS{_9U_b1lbBv!T z%=$2-!-=F)I%ioqa|SbjCgh1G;<1d>AIAi>xhm~+wn(L&p$XY2VV~&im`>;ue1LRA zcChF92+QPUs_6DErpKfH+|#kqQyzlF*i^FYpFHiACuT1z_Oq~wbK4vFKGpIZa$vka z$&V@Ez3z@ju|f-n60tGRW-2rXRh@3UCVl-D$2XvtWTou1XMOfJyQaeYagFUNXMc@E zh^gb&1jJgDzk5YtspaBfL~d6-0?D>>6LE>|ry{Oj!DLkmw}K0kK^PfFpOCi<$^R6| zk8EsUZEfVWd7&r@C4kw&O)OmDb1^#+PladlXoEMeEug_t7yk+Y#$^Xc0EEJ8AOqL- z$N09^-9;!Dno>nLp<8H;h;H?hldyPjR#twIANZJuUj#jF#I@WX{{EnA<YAe1e6d+Y zR|<kn`;R)Vb1@CcUvbAZvWqoc^VDtn0uAJ1jPh+IocB>4uIa7^)s3}q2M<u5sq#<k zQg3R4mU_alZT?rE^3Zod2sC`4(Y+M)0cvB${ol#*Aa)6-_w4m7LF^ogub1hHhaGue zIow0tPae=HcG^4=>ZROU>tAWSb=ptf_qMK&OWQY?*7U-k>RwvlE!5xf&EN;V5a5{< zLY&;=1q8@DJatDr1IhVUIe)VLl^S^Ebkq){<zCf|`xB|$XM^RM_In)rNeS)Jy6rF9 zcl%@F$J0)!=_CHFeZxI*b*HCJ`n<Pjz5;xqheHP>+Wd3y^Y=Y3_W?|H|3F1Jnpg{b zW1&cSfMF^NeGR-C32v!5c;hhw=fM;or^p10Ssu?@t^i%$mS6JJ#qfxV`>?jve{(B& z-$IbxE_Gb+pxRq5c<y@(Dn<L;1MU0Hv!#kO@e}Fh4~g^~P3|3RvdcbaNM7g{O<YGE z9mE?lG)wEg=H7li_}28L$7;XCeH*A~-C~cU@MQwWXLGl|y_;0?Q=hsQIM6--ZQsDv z+=t7xyo#V|>OEB1(#0uuT>cs26e!744&wgc6miN2_&tY9gZnwSY`E+kPH#Q+A;!;~ zJMeM+EoHjofv4yyv*~A#<EE#|YWm4jmBW^pb#bPPo+>B#BOreQ$)8fw51uL&`IAWg z=*XX<1)rF8W6YcOnRSnvH|;X(9#ftrRksL?#xt8Or0P|IzK5~6G}|??b(fq0&P*&f zE3KE!9U3<9*^#OYigS|+zGc1aIP>`)y3?MeF5RI#g1Mj9Au2B%#^TegnU1kc-pv4~ zB}DSXiT<bdqb)~ZXR!qL$MCxmzbEk9hu>59%_20Sr<7Yyz|Ba+WGvv41Wr3t!_vfv zN!$}|lOk{jYYRKp-98X65KgXBX+_G<4o|`YmU4Aq?fE-?^2(d&qoakU`R^Ok=tNqe zq7l)asuTs9HXL!BB$AL5SW<PI;P}p*_Yt<LQW$7jcf@g&eEW)gJIsA6eBY=-grz{! z`$rsKl5Ypdw?pKcd6T<R9B5i|#PK=#@G<#tfXg)VeMH1fnM`6MnLhO>A_#i<HKel3 z!wT_4B6}(LaiOd{k|f~bIh)vzwcqzW>5K1~QiYD>(nwdAl77-iO<WYOW@&7za{lLd zV-YC-&*AD;g6Lu(LTNZbkbe~W8e%nK0hSPS2~U%_C)`?+xH~os(Xg>UzyrxU8F`7x zl_n84+<c@w*2RX}po1FX@3`)(E;i8O)7@+-=q|Cf!2Onyo7ynEJ!HMgTFg2jn`G7r z*mGtbu^z$^t+9lcgTO2=n^Q@fZ346b%NV2asyS7_zmT3HFDzPfDvcMY5LrK=RDa;6 zkjGEL9S#9PS>QOU-MB`uFd^%@&h9Y_g;PQm+TUJ>9*wBbywTv6_un53&J^^8&Td56 zx)NC0p5Ttq65$rIC)zy|LPsS$NlGBK5t3rk9Og})l#KY=G{Q`Dv*BcHji5AP>=2L% z{|)5z&)GM;5UCTORsxiC#l-vIj`}ZfW7Y^3B!mpYRU$6oe`>0E4rMy}IU5PUnNri~ z<JjR6m`@CW`EY{Z0hr5g3^p}WSXuOPLjN@mwP902)!OUV*qEUZosl?9b6>1Iz|`*k z-0YwLv`VD?=r|h&RqR(V0Gf#XmrfW)P#ioe;S4D$jUd?~gpmxD=~&*Mk{NI0aGWVz zQ?xMQ#30~E?Xhd@$f1CnAB^!w;J*L4+3AJbbX*rn=^~#R0y8|}<7)#Dt()!wXl<s6 zhlf55_aV6b8xIm>q||<R?S6pwlM%tK>GN<AkK4C6++qw3yAQV;ND)XeKu7oCHcnb; z7F0a#Q97;xCpv*}La-v?&!mb39~nfiY!f1fB_8{NlngTTGldCHc{*Gq%y6?X;eQUZ zeo4X}#~%|T7;r)DA3l%c_=pH)sSrwV6;9lGl+^=`7La1cLaQ7<F5Wm`Y7^(-2A6_g z_b3aFTZmnlQ$y^n5Xy|yL24@hx}lXwM~cxn!bJ%6a<`lbSrmV(dBOX;0l!ci5>qXe zDx6~>oD4<>Qs5?oA$g;{c@}wpKj8E7Vil5C`Q9C#mTV-d8LC4f8*wt7f5~5Bj&Br# z>vOw%qG%>*{n55iT!pxLFz0|bDbskA3nm0dCg`rQYA@0!6Qr9Xs2q&<+<0TIKNvRN zWD2!E6I3LLWGkLtGy8=c0fiwkB_vWi_F9}29;&F26e^$O#pzY>iY%_nvhqpZ0+IGx zPYy?xIUrG*r_0}fE(b~(rBz--0Lxr%EQm-^1sDri1q41<fMoX4fwU^E>>3+76rv4g zt`EQ)_B9(q%pd*$AleR6aRT}DF)|{EVGFSnGxJRd9i<fv(5Q&;x?IBRvhw4-L5$`g zIA5i3-T-)o_WITT0=&_~s`+Mj9U}uD@B)UwdqjKos&`Cy;i39Nz>Rq6#eu4+v?s1U zE%uJVH@V>;T7K1-OX_BPlcNQZw%U{JDdpj{4!{c<0#B*kfAwh+9TaKuIfzvb!m+C2 zvpB;F4CC)-FCG9Hsr~!a@CQJG7KXwkd}e_s`^geEj0amY05)(4*iqUKu7*DV7W`uX zYL)2v>_r1WBeafx0(yTt3C!PlvcG?K0OpJT8s<Cy8K&f=h4)~-aW%(o{4dB&^klc) zMk@*V<PeY?KOHDTp?&EpX5ag9dtW2j%r(M!_mY=*d%oG*4_qVd_c}9M=F!;+L)96m z?B9O{rGJk4S?F7>Fb21KW{!NsH1jH~Zb(l`iRn!mKV`rWmE<X*nr1IRQZh1OqVx1s znA7kkI;#ln<V%<TTFY6j)~+J7Q!mxtx|_3(!Yzhq%2(`E(moaXaG;D)rYEklZ}I>$ zIDqdW5Nqwb@hSBLV7-*JR0>CE&);Rq>I`$8FV`!uh$5C_;nGUsNbTvnT$hm!6!7EE z`}t{nmT8X@PL7<njt-2?WI{xCW2G=e`=$5euLu~%jiV>XHwQ(&b$h@4IPh%}zM0B? zsazpQ|LShSzPlYCaVdleop)J30Ks%|`KumBNs=&WHs%WEv%9b#6p&d00cYu};DG-z z;4Il&_Z%hb2h0tRVs3z_IyN4AZ!p+#;HxYy?CoAB>4*+{2|&h3iRo|#X`w)Azq|Yf zcX#q7)1MlYSNWMm5#wL?*mw7~^;8ndc}n*XbqsvEV8o6?DR@r9Mar#hP~Py=aa$A( zSt@cO0sLaGyn(BlpIH-8Q@)X${OdwMA8d%C+XGBnzj9n8YjM+Egh3_qi?fF|nggn< zjpog6Cj!)J6|ru_4N;!)D5{-!+-wUl*1L^WcB92^taigUeoeX6x!71mZtG5X6s=Cu z5+8eu)<k`$JnFgB8eru2r~>8O2G)YF_hu_4)Qh1cy+HZL0UU5^>biLiCKo{i>Ysmi zc|U)*^yuJn)H}~9>#p%@aNm8VGpD(d@CR$?cf@%a9_5wWPREycfz^57nu!9$rSygt zq`Dzvifc!lFc?ZH5HE~^-2GYDfl-kZ_2i^UlYT#I)~w6;cahAAdMf)@4|KB&SQ!rT zX$5^7w<o;%Wd@Av2t{THxBQ48$(oKIAy4I>f8d^f@UUUrbH@eGmh<ElLL!JL?abTd zqULDO31qXrT%`64q2rI&bdkASYSvd5DZ}03XTHi1S|pG?f1-;FN8jv0L;#Y1!chy( z?G@k+evhJK<@atw$Sq|3<kXY}#q&`QEyD0HSn-VBA}2D_i@s)>UfXUF7EMOV--XAz zIs{}B2#*-^%`{bmkmVwoiZT5Sy5DLu%NPwS;NB)l*j-`T<*7E~v1WT>L?CF1KktFq zp7D-bSN0&-F0>2K8M!=9`c_)SupNO}O}?aKlPBK*YZF+B{N*vQEV6x4aTYyX-z5Zn z1;Ypx@S#+H`HZgxwozo^Pxh^}N+l!foSR3uwbAeKn%lIY%>*GxN}4ajE!H($^2bSX z7V0wmYJ?j_-fbFLW0}q$A%<Mggpf=RBNK>-ynoGO4y7dL{7lT39DR{>7ojiXZz$>t z-~Y-x9xOv+Xyu(NIsr}AqPMTG=lBJ4KDR{AaB%BaFTb5lX)pIAA*9?BXjb=BUVfM( zpvn3^BsSsV6)Y6kbA&R5WKCmnEWc^2CQDg1hF{}&*GIyHJWme%w5pjhDD{G<yxfP) z0-7-V(75aqS1`S>=TS<tm@H4~9m{XkzDFW^JMG*oQtjZEg=Pa>mWjF_&-sg@fQFs4 zIuEsyP4(nN!qdMXNBs=+oah%>^@w|g@B0shGX&a@!n3VM27FPBA|?9<S;U;vjuGT3 zHjwk~;i()MYx?UIOd0G2RJom-G+JSQZU2DShO%#wS?fK=fc(fJM%Bz3EeuK!-Tne1 zX2U}WSH}DQzKjj`myscIMsgK8{yiE-=DyI;+PCjDj6>2rtg-v=Yu6kqLu^`iSND}) zPNX7(p3)v@D)|z=fWR(qf?akxh*gMb-OE|)z~P)Op~&8-^=kzl69qIkcc_%5SN_}S z5T*XA#tB;W%BGcuE2t^S9U88jO==2MSyhNYjjGwJO`s6GFc(qE-}m643J~-hsYK!t zZp#d^R^pL}DIP(Y13VJ(!U8Etky;sZ1fPfoRz*h1)E<xtDMH2Nfx1@pM=lo`6D4;c z1UFiprtNoY>$TPlva!JX1kIOtZxK2%z_17U>s?nUg*Zye30GYCSQ~IPANiPR+!gok z0Q7XH{nF;mWV+LEy}jE(`e!ZrymoE8qTavuJ$|vF5hf*ic?p5>(0wr81^WjS#i#Mg zN3KAW=n~MK`NVxrwER(1*cEqoz`@-Ch#k|z2_OLo0Vca0<nJEG=6VjyS^~ye0){XY zj_Gy8%7Q0#jt4BqJvj<S+WyU9GMD=~HKAxDr)}f*R0+opV@|h_D1<~H^eC{FBm`Sa z{1OrCBJb6o*mF+bpuc>`Wv7awsGj{qW$l>u^#Q+w2Y-delGQ-VKb1-j%Zx3UxCaMF z{QG{hLD_kDBSSilnC$WOcuv6L4e|5<3qKLcU)yRC)TCE2ur#2m#7Tmh>BPxTg@~FL zk`8lufku#*2s;33-sFcbm8hX^ES{&HF#ZzWaP`kec{PaRjQFkyU0l6ToG(s?tw3^M zfv{$LG6Qv7vLFfGvgBivRTH+-$%!Q6>3#iAWzFt?>etTxr*7i9i|h8^sFb)D#VO*w z{ZGkoQ3{H(&FO!t99KTBp=oQ&AfJ6lobuI5aSF*F`gba2!Rz9bi@3;h@LcFGOK=(b zp9=V>|0&Nkk0&F5N=d=95o;z2b$A2M84pt_p6edZ=H8o6DNt5BE(y~6;F|Lj{0snY zJFXkJ))w|ZwGQb%YID|ASu7UG<VQP=*)(<iE05<Iu9cCQ)-4kS)GgBoeKQt&JTGlt zDBIFs)7FiAT{4R5#O1{G+w&gJ*Z4hx>q}e&PBhy4D6a9iA^|%cze%`mBkv^qPQ&#( zTn|N4)J*(tXl;%CJ$?<i3UR%ND;{-QK+@y#M>@rC(Lq!SF5~MI1>r7r>2;516nTbT zfc(3JU*q5Li_7T23lHpGw$u}wxK6vek=<_Hch_lGvC=iW7;`EYupy=Mw7hwLN9)Q? zmh#)#IgLtDb=D-l?aTCgRGCzD#M?s5%@ntuhxgzNN~eR0%}*6?bI0r4Q)14N7z6l@ z@c`<Bez1>NNMpWMQgC}Dfa+q5D5nF_#4<vX1(|_K>Ws&eRhfy@Z$j2bM3*XQcWOY& zOm|VIf9c13A|_MDC5p-%pYxG_QI~(2`fL)N5s=)O*^{KqNJu`Nd09||=mZ>$tPCL= zOlHC~M@nXpzk(8|{7X9!<0(HdQ&KP@LzSPH8C@`e`k#>X(b1M3_mqH?5_e9gzxk6( z<*3q9Kr2U;mPYA{g*>>*sJ`+*R3@V{zlSU0bpB;h1REIdjTfO%76LZnLR)*{&6ihq zQir9qyguIICbr4c`cR=?{Y1+cpC<?G9R9cI-xt0uNO2m^s%0rUtxaeV)C;PFereNG z)5e|+{t4KI_ekjK;A~NDK^GZg-SYagf#<n366pg)5t*b9@2BJcqQL0`+^^n`&f#yL z6xkEoNS|SRlXD_tglEHuw^8n%u}8L{e9%mRG9@dxAls5%wC^?>QuyY|D!rmGm{oV@ z*|JOYwRtP1nyct*FFl<y);uw>3ufEh?>0+pObb&lsUWcp5UCixLaP=-xo=s#P%_sQ zl=6z(rmR}LQBt^F0o}4?@!7EbQ!Nvc1Qlh}LTT4EP;0zNn_@9n7x}HI3W$0sFXfy$ zuIj?+JAw&2pNwCrO<8I_s$AB&hutVx)_s1l`WMep<sIKW%(AXU>)rh(^(D`_#g}#j zZ2p`3sPe$@g}xj8mhJBQ$#cW>qwi7W9%kc12Zs0k=vnC7y{(zC30eg83_}780Aq;6 za7t`A=dlHp(<$}lr2!2^_1bv}@R;d?HE{PfTR^*{*=MIu3o)~84&d8n=<`?trdp~3 z*wCqEW#cFEjYB+LzHPBxmpm84y0=*pnwfU#PNqeQyzL1j>H}haee1C$u%RjS?)rq3 zVt3hgLHbyVD}eD9a5(HXGlrttnP$mONehF#8zp=_`%ZbLmLU@x+V!mmb(2__dZtRk zx5bP1#uFZb^Wng`MM*MZ3OXBh$VN}Cucu4s3ELNRUH4eDwt%Tg6BCnZ#i#Dt3GVpr z)S8-&0{0F#DtN?WNwCp{C2r%V?v!qKVfSo&lel-{Ti@5730wV+DnU_god-nfQ=Yk7 z!;|R32zSc(&aRg|vNwN4JiEMe{Tyvne8<a1!5_eT;$ji>0?bG1Wj?TBTIGMZhl)Fj z7YbOx%PVN`IVUk4+1zGSZ}kvT9po*Iw|L${cn!8$AM^!t(=NUv3*uFF+9`IUS~z4b z=F=Gh|3$h+9L58qBD{;(WZh*eOPG1|LZOwRnrV4gL$ymvFWT*2^Ta|n{iY}GNLjt_ z=q@WmqmCHoaXZTDMR*$BwcuKz!T;iRc0|_P6_X^`0F~8;nOUmT{>>tb|Fe~4p#mm~ zva)ozcyu>IQ*2Y=%$54oZw`rXv%Z@Tugto0x<4T6ROj2i&%QFL>;~QN^XcI<`@8GI z#nw*`Vl4Ic27fr*@25MG-fJr_)w^f5M6O;&S3Vis9I&QU?A+uz66%*_F|%RSRhXEU z-?Xxnyu0E@PqA-6LhLuDi?=qfSQ!_QEa=|XC8msu!p#Wqa)zq$g&CtL9k^yI(@%I^ zs1hFDSG*0zqp(Uz`AX3U->Mvf2!4D9@nh!jv%R{Z(}!Nv?O!u#p&ySQoA2oDX5c5> ziyxZ^Poua0Gk$DgRzD6u^#ng71vrFc_9OV&J%FF(*Rl?Gvc6fxr{@K{??p`Y0AeKO zPYyC<P9mszWB@f5_snMX>S}t;lOaweUCHBSq+eD&aMNJpaAWqP<h#2rdSHqfr!EjI z?*{^E6@_l=%9=BNyX{Y`<WRy^cKyRck?8dVAGt&DL5z(E!GJ$z>I)XnGcB#FDJ?JR zo`B%Fzun+c2~KzT_jJTxwo5^d2ZZMXj?w)HAH&n0gG$tkb$X^?F-(=0)~U0$J?UFB zt9*X<2*cD3u86_BB1NZSqc^Ym0-slpyp&E)=ja8EPjmS!^SeX)(n-D^C3RX!-%uVP zZjZhnNUzgVIeNNCFQ_qFit;irUiwl=4F^(_&|`)(-T?snrUT-`Z@{(uTgigummj`l zcEbH1lT0UTS*hQ+9%bZdrTVfmDrLpWje_M@_Ru)tY}Vr#r$qfcb=FtJ<s0K$Gb4#+ zc|$GW$V4sG7ii~YH)^+)YxfA2(&gC)gi8a;^`}HjmEJ`H8GBlqhi1~=A^`75mR|u& zrU{$;k*QKvWdls(912BqOoMa)=rI%Cx92JQp4fI2!I5q#agIr7;F$v{(}b2smg?1L z)v9}~B1lZsi_CV)ZycJk{0d4wZ8s*`?WIoXg>NSw3V(<|h9Nisds;8=(T82uhxa}E z@7stTiQqx0$8NLFQXGcANc&r=`IKrCjNnvyO2xyAh&Qi<;|LC($_p>{5c>sb=Rd*A zCGb#8j2JkbejiS0f}-VDOxJD>)_vk3H1xu^>=$SRk2n;_SL?oJ7_tZsC8b#PaX2*5 zeD##y-PGw-G0K>1u7WDNF;=OAcXhpdsuCru^kFDiWtXb-;oin(Gls}*J<71tO8I4F z_yHja8&7Fya;R{yY>Q~12Wr}DR+g@p67zbpJW6z0;Egz&c~VN6a=4uD9;_e|H+crz z)cdV5{*aOHj{6#+P9tj>4c&qhtAM7_!rY8gWsyD~?2DWT$`H0qwvCdRDIRn>jMe~H ztjcD_h-2s&?ctY6N5%N252J?k%Y|<TI;B9FqZbd7K;tAYSmAwO2Vv$oEg+;KbgW*T zlg%u@&WbO5J0JbacSr$UpydiI1py3@m0<!kGgewo=S-pUwFN@bDJTyGEWeIqrFJ8l zvutsW-HzTV)ys8G%dEvZ*p2JMSP@$Z>}JxL+Dv6;cBwwx;CHV-KvKfS1ZqmGGzq8w z5vL(pz?H3}E%5hVW2<?|x?XC{W`L4^(-*$f;D|@3fR({c(K`^;asM9w1LIxrFUGr? z-xToU{f?y6X#qVfzrjlG4fUn;QZ3G8=;5DG(x|4&Vx<<kG=nPFF6D7EFy<R?Z@o9> z5ek@R$%H5K+?PW-_8~lf=6P`AyF6cXP^EgG(hmPpJzd%nzm#Sxc|KmM7pSifDYntd zr`J;@5pN6TZWB~QP}U$uwayq_CFmMOl}~R^)d&}r)h>EbyjkU5_KLh{(PHJS;=;0* zHcFf3#qW_+(T)4IF7&m~-SgQ_csIwt_Ea2E7`F}Om^Zu*;|yqhYAp)$bf!W=E&3QH zmz3I@<wASvMya}UtA%DeW287#J}-6Y^w?rWnR}jaX+)MmF?SoiQ0$DL3cJVxzwbBO zG!ca=cT9vvIKOC~kc<dj5c9M^5vfp3X9z<FPt;QjMH!+@IwPuP2`kDBcuoZ0GB{f% zLt-VA{1oPw3_3sft+Y&9w(YJhV$C)|7lfrjOzApfS+#%}MIA-6%Y_F|)gJt_cypQi z_%ZpKgIeXR`r5RYn&u~<D@BHFTi^HX4#RMEMTpQSt6pGGZ*v7P&JC}_;>?Bc$*l_K zbjGGcqsgKzWuKyNE6H;cZ5H&owzB&&1&lwzSAFWT`bA6J^}@{Q?~9kBI`sRb%`PQf z`>CQ{X?Sd#O_>o<o951p$PhNH%805LX3cOHMCJ8ePXE+11OaGdRE&&A1BJORM<1FK zgg}iWF_y{<qjDlddGFGw%hP^_maQ$qmQ?iFUVb8cT3j%l6&Ga3iF33gC*e;RD+A(C zJ9(}dI<-$u)Qrs2cv9YUul?i{VZTB&$gGzeP9hMayx3Qe{ydeDUHwK?whm&`U<}>m zH!yA!GL<@Qs!lJH=T-%1+irCUsgzbXarUv^VYeu%XnC%SM2%seHTZ0^(0RUhr<90w zb_Fs`C=tbN#jjON#jTq%Qj(Ft*26;!rBjB5S4~^z)Q2_2Fo-5VnC+ApQCyl%ABKn@ zh|STErrUQrL$o@L%1pr5l$65E1U52-2gi^j(J5(md9E?77A?aPt8(X0nF+X!J2S=h ztXWJ0ob7P}#xiY{RUbAwca262KovN_su_d>li_MFoN-(rl;yuN2(pn2o>h;O{}M=m zcF8TSxt(^Q;pW!06H}(TpY|no7E>KqiRY$FRbV-T6prU_;n<k&Blsx}ZM?o!7ADM| zd+X%OIm)o*mRED3=r@1#^IN&sEK}p&g!2xHI;6iv_zPCEr#lMO?yZo3QHP$r#d9?N zt>Ga=35xQS=4UU<Eyzx{5V}dqPDvLnznsFwNX*fP;Y=Ynek>8?sf)^|FBO@EsWlpT z*-}xtaOPZbxo9+Z%a$xE_g^~#AK4M?FyoPx`1<{0T{ydB-a8VfH4hN_5VH?sphLK4 zp^JTmgeK)>&0}q%+6MQU=#vO(aD2ri_}osFzh)LrUiQ-HQ|2ic7kk8=dsC4q%D1~* z1c}EyC{Hb8Sy6GOcu~1KWy*9?waO+D9+suClEl4XpeT~<fDlf)NxoI`vMJFQ2j)sW zth5mR>jmrH)H1|&d55Z;5LIfQT^5>GIboQrU4vD*jrbN}wqTh)rz~`SseN8q=$!P8 z6rNuq-_{~aaH;)8+*gdj%SEIdM2B04`<KbR1~=v8W-?XrXUY-<;%sh-D&4DViV<0e zquk0EVO&O4l!YmYns0&k`x0qUsxEysbgbo3W%H%enp&d5EhHkQW$t`6d1}%~%4Hy2 z{43K4<EAW)Dkpi%N<Y3`w1(;eKjBk}%Vp_E^<bJ3iQ^wP+2+Gh{)L5waYwqIr0xfW zBen#TiZ4V|PU`qz8AT)hZ{Q$oGiz~uR>w9uI&N;RTuHV!sgoUlyGiKJB8-zPDpxEO z0zHo1H%n6|TS$XTq|-kBG%EZpNOAd_xh0B^M>FNJ3ew=R(GRqD1cgyWeLNa%B?-z# zi{hq~77GRuQX-L*FaU(XEew}-uWlEXZu(}?tNx`hyTcMNwLNHO#Ok*YWor43Ma%t{ z3cJ&5mnvkxr(g3iZa=+wml58F{K{NYC}VMF-uAo2mf#Yhr1+tdAWQ08jkNS*Pmw*o zXbQCm@{3gXyJ$xXnx~gNFP*ky=U}HjuO?4BG=pt;pwCJq&OCxmKGna*cL_uvEHf|l zHJ|iAsvJd6TT>skhR^{+L^tT4d+q)th$Dq^34DS``nGMYnYgIc-4aw1)J0PuJ9Daz zmCZ}Vk<C;xpo9nLQ=%Wmjh)yiW2|F_JW5`R4oDyqi}Jl#A{=p6nlx5JD<Y<2jmebm z9mx+Vq`;6OX+Dt`+s0aGXtW_RO#hYe2rXra+$iv~R7Da==;3BayVq!f<BdzAY{M<= zX8RJkt)6uuLKH=*(`kMku7yCpG-9MO`KBV;zdLc(j4qbS%GTm!t(Z!Qu5|@ch3m<N zTs@DD@_nTAV|wPA@5wlJi6Caf`^Fm{d0LdOXy&Smh)c`wPxVxOWcTEP;4$KdFXcpx zJYq=67ophl5Q})xVl56yGL&(3t!pGFHrY#-9){Vp1?5M|i_4<ED~ZH;*hR0nmqxyo z+Z>rU|8|$aD`3Iw*7y)jPNc^Kdtq_&DL<LknDdMBCWG;)pKHx#Zq8gOP6{LwOSXu+ zS7Ag^*#g|tNr|YIq;ELp;Wd3y=iYq(07YN^Ry<BHh%g~vBx+y?bQ-m^Y!|IU+9Cle zp+fT0VkB4peyevr|L55mTm65UoZI=y`G5#>GaT#x-_OlQ`v3jh-1rVwX#Z_)#!1%y z*SQ&N<KNHBfAG%C6YigxC77AHG4lUBH{1FL=H^D@f0~=$=^vb%`(ESbW@G=qn4ABA zxfv=F>d+hg7;oOW*^ti9&9C<lotqoq^$eMtyDT0;2d9T~MBt^F#)(_;IJZbpfv79l zWSvXq>nr?x&C3WHlZPzq)n5<p7fj-}MY@QQIr?=)`o>cIddZmp%>8T5_<_94`li0e zwwjeqSSTlCYITk`rfM^@wfX&QrB44x?aY3izEGRi4`~(tz0Kr6@vI(KBAT@taXl8* z`^$Vppc<Q2o-41f*V=*#pb@AK%88)Yhdh)o#LBIKBrK~siJr|-76KaKNMI^}2;YwK zlJpCnxLNX&CY)m)Pt_~yX{(fuYn)jx4i^{Dqf4G+u;wERHslr{y6Wa_wXV+&y7U5L zz5<;kf3xVbgL8MD)<4?MPTI(j#>^p&SsPn8-_3@Rkmd8SuzF4kzjE_vxgiID?Q>@) zjWgQ~m5&Q5im7MYE8i7#Jx<L`@{@^2#N}6pOiwSuI>tU5@0kg>nS-13D5~pO+%KvO zd1YqONVEL~@)fz-1q`M<`@G7K*D7Y9mS+3Ql_3kw_VUV*nP&S-l_7$z-%=GZlqG0= z=tCAELYB-NDPW9L7ef*&3pWZd^dYjAh27=4T)>o4=}V~mASj-43xe{sRYG}gfws%; zvC(me-ar_b4Pqn&B*)r0TuKO^ZLWZ<RSIUnLPl@3zrbe9jG@`2Dm?;5IvsBmZdceH z#>R3WhI(2ID~bYop)VVP+0;UNpTS!66;UWa&D`-==qV+F^fx^DT1m;HX61Uao^k5e zH^qp}%0}d>#9A9C@z$G_>#WN44P-@Qks?BSMVSXpx<5HMStat>BOgp(Anke{v`ZTO z0Ka1g`CTreOR|p_=-I}Cfc&8KAwK!^T*D(>L>>xS;@KuhNjCp3v)PlcKl}J}9G?gK z$C)xvBu9^g8rP4M$}LqwhU5dvz4@e6-mY_8k2Ji?k?3a?KY4nbwS&Vl?38*2#rRQY za|7|3jNk*puv3OY3R4Q0yY+^w@ALc98+^A$g{h-ri5YdpTR6-(z{C6QwrLV%MVAvX zfM?6oKlV2KfdPISiM;z)?|8o5_Ka`Me9Qbi4b^z9#kAlCEQmD0WIUMWbN7)9<{487 z?rF`q#{RZ@;(|suH~jC(53djT*!Q<V-k_%n=y?H4m4njVOD&6YZj_PvEFEwbXW^bn zQl$e9tgrBZ35|zB1~POayLdQSs#qxICn{?&W8U-)w*BTAjO8oX_Su3zNV1%%Y<Wl{ z@>9i#h%^gMJrT1OMTiXjlx)`Bic7!=rAf1h)~YI9{(j9WUuuF?Dz9%5)dvG9s(ooO zU$KcXXH@&rV?@?D{#Cywrlqrin43AJEY>5gh+(oHX!G8*O1T)F*!N+ZIRd)Vm@lh> zqC*+Wl`4`@lWGoPVjwq&35pXaG=oBe@q|a-&jRH)z$yt347&jy$TLr^;09Y+ftvE1 zaB{*BPB`*kaY912_c6j#=slhh4$?1Sg{@$P@ZsfUg%$U)LWZ!yqE7_>x4iJ@>t0@{ z4*p;8Lgo)%UO0~9g<nT-ypWkS$P330@Io~OR>$$e(tErRxxfpRJTF|D{xopJ@xpl= zFPzTv!U}{U);z!qmynRe5As4yLY^xu{e^$xgXxa{Uwp74_8uQpYyJx#OdmCr4|e_U z`5;2}-Ny$Ruubs6f6X@wr0EMhY;O9u9ykxZ$Lb`6)ycuKKr8$l0Y2Aom)Xhjxf%aE zK6mrNf97+IV$L7q+1!x(`B`Itm)Fg_F8k=<1K)PHMTLcc*HujNRIDVjgymNtOGqJx z1B8uv*Q^+q<q_R$Y_r+W<=1N~S5`%o3#WV^S)vZFoK{h#u8d|%LI`fCxzVDy^df_x zM4YdlRb13{y9Cbk7Dru&)EXN}dG3^RKCtYBtz$a8aoI$cVDNX5Edm>mVDR_|S(WH) zsGm6k$bx=fO5Luu%$DWfE)E@O6E#n_`cMrG_>-4>>%*_pCDhuN2@fyUT*F6+_ai-F z-f9?vM1?-A5r&HtY5v_?HDl$fn6aAKHGw+B(oAKgvvLYjy)hUa)N8_o5!V-rEkTIp z7g0bbD-(jQ=g&>nR|O<IblswdKbEW&E0UtC^sKZh+i$wr@$AfYHs`N@nKeDp@mxW6 z;#@)E$Km;sWNpIE>G6*%k|l{sQI4H*MN<Bac4sUc2~%*T*mtB&7A7eUd8Bzn_kOmz zUD7hb>7;N_v_;Y`aki4ftz>^p6{|-!OU&yj<9>galiIO%O1R(75iSP>A!LiBIofa6 z&gc&snnm*O<hyo?;HKD_N;L;RIoz+cCHQPuKxZ@%ciu$oCRpm6DQ~|IJibIdE`X!9 zoM<}laSBuLi2M=ZzFSUS%bMkGo;hoG<CV4_g_BrT*fo-B7PZg3>`UF;jXKLlGwqU( z{~WU8`9MpyeC*nGKMO>E*#*(*Wd6-Qa4l=M|4vB`Li_xdlK+$+jAc&n`VilI5!N{( zGUZS?q%xl_K95MTnB6~Fe9qK;AwL@FqVuEk)cxrgp2B=drQwl$?f2UP{Qh8${v%np z3sUxxmDG=7i?;Gl0wxkxw&846w}0NVlFr}a^U)C+eY^I&3C3jk5>3=O(@cYOT24V! z_!|(tNDONJerBXdL*yaRk-|7#Oq7Pnh?=TWb;2XA6G9>%YFbYC8wF7_BN+`ZpoxwY z#pzVVf*}c81eysToCz6PR*>?7d*b+#DHF#hPr=?gkWBAHK0T=8H2hB+(Tx%vXJdJb zD}o--S`r<nA#Gp|hfweV9cSaqEiTnyYNF$8)Osg%=ow4(k8Bi{Iz>eBl%o$X(mxC( zMBnk|gcq*$D8rNMP9r?E@UrremVlP*<U@&i7%mfK=K&G)QigX1${El@sFw^`JE(7Z zKNCH~eR|%;#avs6p11FL(v|@o@lZW)Upe2Vf7UBEmXH<=<Qb}0M%Z?;1Lt){m^RTc zG>7Q6pfKW9Vd?|Tizi%zzHw>YfKqAMV(5}$7qik*=#eU`4w?0Vq`A-`spqy0>h#E} z4k3T;l|KY;5k#>E72wCs35sjbdL`GvxR79r)2Bk2O3EYJ)B)|+pvFu6suxMX(ZAKh zH2z@-S`Bjt@bd3<J8FZso|Ng%RYcz*2CjNh-j|f&BZNcULlY`U7gC0Ol>ImnDF9Um zL`m8oi2-`CuN0LRC)%rdB^jYZE!CLU20u}QW)N_$!izcxjXoz#itLUc@|VOAX2NV) z(qvf>og^v>Vc6(odeJNXC!@O{jR(UO_dQO@Cf@B@i$WoEds3o5e3fJB7P?%T6#AB> zik3xqY>n-2qK1;fFK5GW=q#eU{vXN~*;-~F>$bPJTO#us?sR?UDJ&G#RNO%s3nfe* z&K(d{Y7zuCCBnBXNkJ$`=y8TH*Z`eVS5_03+uyg5P@lZwrb|T~%`F$VPln=VbEW&> z7vke5<)0i}ten_g72qy|>LwA@l{AiQ`_Z>MmVw~hr51H6>C-SasA_YC+^@UIWzH!X zn3@8O(C?^8rjrfrlOgjN(WVPw5;wgbKh8ffmmwMy=J%MU0?tofnp^#ovCMs5yj1<8 z@cTCUN1;<q^?t6v9_+lb&)RlQS+4Fab1zkwi!XeCUi_M{D;SpQ<&&Exh{|)z+BCf{ z%|=oJuC}dN-7bb;Z`tk^^-l4{T^yp{pgxFYQh??|@mJ0@9{h6lqEkJKPMJB(GQGng z;Rj;7CQ!|h%Ze9`buU^5$yVN)ixqEsN`S;9<}FK!tcqqIlAXPqw~1KIx$M3N7>wMS zYWcGGGItm0LisD~C{!D`Dg1u6O?@=CX?OJT`tMs*2YmJj`xBs$s%UE#+mw664XrKk zN@aKz7F{<IK0IDAk~;F}2)?8H6AlmuEbsf?NH`l7N%S^A1Bep1?oTk7feD-XMnW&- zs%o3~LVdmX{o%D`?mP)mPi1X`)=T{gN<BICj-)xVVQejefj7A8Bl9wUt(b+a0!R`{ zzX*jYmsk3MmSs*HgkX3BkcbwO;%en8QAS`Fjya9OtvG{|$(bI;J)MzgnNt;M4rV5l zj50@xWHuUm7E{nwV@pJ>&7Z_@i(j%fxr>;c68aYPNhriBUw)%2gfdnutdS$JvoY<~ zlP%7ik(RV(k+IcnnNb<*LlQU6r}AR&SR&=EL^^5_K@ci}0VBSL`2x(_Ldm><;+4bE zOiZ_pbE&*pH{(|*_+<qdlZJ=e_yO5?*<+7YaJD(>@HXNDcNxX)1^Yr;Oy_^C#2$^` z3x3bt^LxQQ+|x<pupTqM5i#M6Zps-6yDC%ArJ$(jIWc69bc@pMO`F2)ks2?!u;=*_ zTO!@26Db+~y6Fs_gECSxg?PulfkVW2rGwUR4owm{jVTs?os*gpDna%42n`b{07_Aa zYI?AviqK3~C<<d{LkdleI74fu$3$eL!dud+KqNwK%I5f>&xY)|U{@Odt9lt#9Omyg z9nr&z?00957bj{dMoI=9?=z@p-?M$2A-W!(80_ux84O`k&(W=mSs8i+f@p&1!xkYC zL65YEAa$|=-y)Zkih55_0e_;zgD%Fpn3RfD0_^zU`IVL0D^|ei3>Mk<@<31^!UCha zTn@*0jbv}hFJ#d#=E#w#F3!Y&Zq}R=JNM-qZo3HGy!q=O-Q=C8j13Cw3<fkpgf(+U za*KBY^A}HI<j66;lJES`kTu_N`R};6{l1n`-*piOJLuwS${fp({r>f4(<1bxi0fn1 z3%F&HBGbuI*|dP~<2?d|wHF%T1C<kn6WYO~uy(c?hdSDQI8M)19;Ol8%EN14h%|;G zO7;@XrSnC)#3J5^$D7cb4zvPvsrIHtzc&WjY(tkTZz3#6VC!Qy#(bv|rnh{ln)<p* zIN7=XHPuvFB}`LIrCNlD%&dzTerZNP)<=rIk6dHmhxYc=`5R&F3IEGu+vW*lzAX5T z)6Sv3#X=$WW<!Ur`dqUq@mDflIeEGX{?iA??xVQJ*hNQ3&JE{!L5f}=^7QYxj)=I| z5hs1_4b(%0{6Ixt@p1{HB?1E&hx4M({dUSZKNZS5tzL6ZmCjHTN)iZ-Y*nZqrPj{k zzWAxoUl7HkzfZe3grcD3<-B~OCDJ*E!84mdy8E8I!v=Xr3|yl^zVU;nCJdH%Lu4Ol z0M>_)Tu9DMh5u1anlln)%L_i*RerqSV<!Y3UCaZ54<hgw5Pl&0g?qHrcyxf4498qN z|L8mK<sTh5CdEMiJ=wn|xB@OtR!R=<rt!*bH)gF7JuRxuSYf()8iK(bjDK-@5I6Wb z6pih!)ywW=pSfaI(m4EVJ=)8L)XrF0cc=p6d5ukOYcu`hN@abJc^zd;;~2#{IJ*e0 z;Ar&Q(_ZFbH)3VJRbg<tz(Gzn7&9W)oYS!?-e5zucS?*fCKb(s>Zz{#inYjh&{o7b zn{v(;WlmrFI4X=u_druk0|2vud{&MxqDW(Y#Do$7Gm+BnJB`!##<Yn1ATX`7A<~=( z|Fa<iXeBIdvV0NilMn0ix=Z=+%7GzJGov#iq=JR5$_lsu6!4L74)_-PDlCGv?aogw zup{l6E8wm$?+sW8d}qvDAq(~^fSEsMa1uRdct%i4w>#s@nlxR6Ke=mbUjYl;VZAtV z8^jd*4$BbKyb*qEO|U3@-kMcUX;)t{zTwX^S3-W^s<Ww&OZ<v`#X1$07m22ZV8G>I zU~cHY$DeCmM1Tb*0mjK0(7@b;%1D*Xxt=dH)&^%HhE__hyRx3POs|T72{&c=3#kUN zDCF#*9|FRV^`3D|YnnaReKzC>bAa=?VoA*#@Z>dg`rOoP%DzJ87k&)>4)>xYGJl$$ z!L1-sMWzR%EkYJ^+X?~hc`4zCd-Dw&To^o<;|*s$<_N;<z$`&3+{ebh5(34T?>?=Z zer3yyE6swwNo^dlsQ*eRR(+k2Yc01fbp?VreT=*P2?w%MmG6lRxB0a%H_z)Z&!>T{ z8ycInQCFs*a-^bKHEsuFm0A@Zi1ICn(LQ{|_+~`b41Y{9C&eI3DC9sP+Ry$-qT$RQ z$%;_P%pg$a%o5@+I{MsirkoqjzFQy|KwZV7U<`7Ol{a4W<n8xGsmqs;+|wE7Y=Lt& zLk3tH$PX_dekRkbTrk*;>Lo7FBAICmf~JJ{Xs*NvxfomM$?h585yHNYJSZS5<<}Hr z@CO=r)Sb?le6MU_uQW^5(QRZ@zKcVY?7K5pF(kR+py!j+jFs&xj!uV1{Mi&}t|f>S zoDGwqyQ3RKaRMykVuDb6ZdekY1-vKpU+x}9cssS_`enE*G<@A8yKontv4xFaHOZ#l z-ExJz?fbF`5q>y(5adz*%;)9i5AuA``;1{g`ciqGe^y()Jjc*KxMu0Abt%8aXOd1` z>(a&gKk3{3Rd{P-t;;#ve~&2q11vvW5&p1+s%zr*Us}R=3<9d}wwDq>3l0j)0KD!) zls%#09WEi}K$O{6?J~zc1jqa(RNPecTdtNX?J%b`@TTtM``YF`!e@L@yqZdymD99f z;^XmI!3zcP?<9=zg&9=#vbkB)U0JzGW3C&TCH(JwH-HUUvvO4SOWc>4_rAE_4X9n| zW}(QSYx7rJdNUv^-)P!!*_|6;%r!P9H=9~6V>2epfLy9_rLRR)!q}E{->4w&qZ^gY zdHe5HaBE3cxF#yxc7_dI6Ez%%jc~*<Xw7;*+nF^{FcQVGWBHY2$hW8}bCS6@NR;s_ z?lay<Sa~_+#f12Au8HH~pHLQ#b-yiij}0)6b-QN=#E*C5UjNqR_;K#S*{=BCCCr~) zXi%mUyWQylg=y~ialILWsbez&lLduy+!?BQfkqgSsV22gX!em8&kIc4yAQQEyn^!M z9wy<mTi~Sa6V}5QdM2W7?du}EoP6dUCnX0aslt~`ST`-B6bVW*isWf$mk2A62E<*I zxc6K}VzMephi{2l)9v}<DQZF27%B@Oae^-DFXCh!gV{bKhZV}xl69Fm$)!vbb$Gf@ zMkxTGIKQ;jkrW!u&dDswNKD)tiq|MHZ=57a=QnnBDwV9O7(w#4CF}ggCFjJ)2VWEx zH9emonLB?@{CHR4I|=cRD}kE$v3C6LT@k<rRj!UoY<hm;IPKly_!kpWQe7!il)wzs z%=qt43rI<IvocngGJb{5v0&=h<kBP^>YgM{PV5VB2K92Zrk*o|)(mt0iPqqjYV_sW zO$o*-S9O)qn1B#j4$WnIyLofHdvyWjh`I~~YHPhieYw@*7<IY!?+Nx6S8I!XgK~4L z+r2BGCBnXe{F1*2$XD-njJTJmaUf9;KKF8;>xFeem!D{^ZE)HDp3u-xYgGbJZT%(e zkzQ@7ZTL(5Y}U7_nW^);y!<BIGWuRN{ym}A=3*xyhWVdKTGywyH?Li>MSS^?`10nR z=3SP9M_ovB@Q8BrDYvV2+U7lYx5e{|@#loi?XF$zo7<JWyWOWhyWRWYiq5~Tbbn?( z-E?rjrFVZo>j(B$yL*4Yh3?w(_THcD?$7P+19sMTS9jBU!&o_3`oYmFYd5U0<D|<c zPgorbT6Z@z>}c_^{&gj`{jIy@-PYz+4c$9m`gA%Qv*pY$?1!8(pOV)DiEBQfS)a`< z_GYx^N36}qveNq0sudg;BRs&8W8JjY*|fme(q?Zq+G~SPep>fNF>nIR)V|9j#a>%) z@7)Q#D7~X0&beu=70DagfR$y%#!Un(wQH2XI8x!iyFQ@S0?je&V{BMqDb*CYEdfSz zZG$B)uu}EN*-x_Ao=TPYtSzHLK&@|24-c$#K572s%y!KLSiUN^{ZgqKiNDd!@ye~g zM2E&kYa*0wzr<R$CyinlO1TB^WZYkW<>p_aZ4CA$ggcW}1uq;N-$C^qX;Ks^oO)@g zor28NZ{?Z^f^@B5*=l*3DwBd$j0!GCI#0-AsJy_t-GR&mL5~P_D%JyEv!QUehV!`H zJ=OyUaoe3!opwrq;i=mvKqe<F+dIF&cdMO>p6CzGPqQB!J7nm+ee_TU{k|`fJUy$) zDw3yR*gHG7kSNx6&5GExP7(F&ELHajWR2b>NPk4&sQSgOvTFo(um`hJs!}sXm0hI@ z1)pwQ)wHbjZHeE?MJhLHza~kL9w?}Gb^1}&+i~JjZfUYzs7RxS<Qheoe%-xX*s)Vw zKG8qr8_(wxanLaT_q}~D8xM@RPCo!FJ!WVooTzK8zL#kb*7*msRmf?JNu|-Gi{a^B zrAdZdjr>NZ(_D)+QDjbfv&o9EXCq%;wBER=&3!<SK7(q`RW+|-ABm2o;flF;iSk>+ z>M&Yy(`Db3aOtYj?r~rKA_$X#t7*aJR-;uvyhlImyu&c>Hj<okkQAE|jvlgoi-c>( zsO+;lVt={rl=U3=TB-SE?J)F<GUAtx$X`$k{8K7^VPg+P{9><vskdjvvh}D#?|FBH zf_$iZ<d@FwweFY|J!&CeJq3c^eRq5HuIIZf^wG(-++|TnFF$qe@zuv@(+&gSUi~h< zj+Z=k{O|PyT<Uj2IF13<+Ol)Yu|ww_jeodp`oLiSbAr)Z-&&7*F!j+x?OQJ0bax1U zLD!tToep2RaXBh2Rr6Ypmfk)uFkL{!xl~%3eFmea=hK^c&rqWsjEL&EerdEL{D;P4 zx7UaLI9l22-16(CzCSc^4LU&Mh~DQONVU?9bZZ&2l-?*dxIORtHs>m<4XayeMJ(Zg z3bhi}=?aw{|9e#d@X!KTJ&?Ss6*x9bzx^*$*}g@(!=F;^xz6Tyn>GZpBhkw>EiSd# z*}ST0g8+V?9E%MNR(p&K9Q#2KF>Y1o96J_1;5I{9&9MNk;vIjxbg;)=;q*|Sp!ij6 zU{f4MDTdHSaZFwPx1TzW9g6AbYx8{K*yF35X|R2J^w5ot)p4{U&gK4s0CTGVAPB2T zf`9u5gjig9zhj5`I}GWhJvTa#h$ENwEg%?`yE%9DP1=-Zuz!(Yyx{8XQ@Ve0gCTSO z19~sG8SEXX&ZY(XTkF3iz1iQ<r@d`T@}|Gh@jwpJo3?L}@9<kxCqc=(O>se+Hzi=k zI(z}~OyHhl*Gf!l6f3{ux9e}keiA>G%RU=j>$J~ldQT+B6UFz)W|cke_{mX@*Dpoy zk~s;ZvcI#krrl{D?bK58E$k@F`Fm)|&w})=#1L2c;-$JpmpZ%O1^MzsAULXKvLN=; zsH2?WYpsV~yrlSZ!oeQb!9&X0Q*KCmdrt)b+hpl*K&ih}_ebR3aW6Nc^&EYf@0FrU zpu(e*J7!+up5>>Qi5~t-&ZVOvUE@7|5z*kceblljwk7=}WmB`eRCanztN{BE!nHaz z9QPq&%D%}>b$5SWw(Euu7~bAzhb^*lIQ|$s?`sO&^oUhn9itLZv71i&(#}o=4)OW@ z)Ei4!G#S9$x9atfn#e6XY@fU)?dqWTsw7`Jsy-Kz{=WAy?$S|lx<6mDuD_9*)pu?4 zev9Xl-Viep-tXHfn?WAEtfD)4(o(Q~>!<M$hIKVknwM>cS5-_rh4EA4u^HGRzn$#E zwWC+sUOoaXu8um{u%Z6Y-JcaPZXot}&%qw0;;{t9DR<WsAe&mJTa)YB^q#fpdBuBe z4c6Mt!6)C_(lV#^i-gTPU7NQl-MihJciZv5cXz;!`nVxUmG(Jg^u)N>VT$N`qtuO2 zTJMIF>7Eq_TiuhMSwBmVuB0YC$0#VS3o70~LzYFM{$0x`je(u#=TtPT)V%zv>d@Ce z*Q!V*m#rVDCOBEg>7P;Aimto1T;+;6t6ONrF&B8+!LOBeLLqkiCq#10-6i1}nmX{d z;<yW}3`sa58c1^7&G*9RKQnE2(RQ%(rUkC%Rk5)<T7Bb=gJdD*>=IHS<db2J{Xa+V zV&it<EgROlg&Pl0#ne>8A%19W^Gd8N;$}H9@olJCIEi(BCg_|-Z~5EL7|ebCO;+V_ z@6<t`^7)aNPf(gSR|op54>h$o3`?49Z#Fw>A4@=M6_1GzS_9BGc9s2{x%dC0>|5ZP zI<m%ZLJ|U8E1`;yV4H-OsI&o89@RA<Ma24jh>9V!E`$=4))r8Uva}81kr1H`kylb_ zZvvN)l($y#*#L@<;#RQrwYrNSqSglmMQwrmKQ{quyLR{c`*XNAb7#&uGjrz5%$b>U zIC1V<4OyQ(;1E7ieRD>KNsr-NsDwe2`C!v&-P2Zg+tIGv2Nm{EOQ&>Ky1Cg8KwR8u zKKBpqojcIaL2O|6&F0rwJ-r|zSms(zGuNT@%Ljwk$PvUnYcy>8xGCM=KOOv=@Z6cD zy^O^73~F~KxAXzjDa<leU(q=lOz(x@(+#NIS*pYNjGLfoMJ_gTT5=m-_i1c4H-1Yu zAI9c7XnD<4MEhDZ7*o)60NW#pNe0-}&+sy6&h<+SA5&ojfPc{F2RIoX3u4reFdceN zfiF8W?D&|sZ9!#*1TLe6kv2fcnG)<x>3MLO?hV6Uw`OdK`^c|GO1M)1<sd6)p@J3Y zR2mM(vlvuR+bnVL%cll9>3I}OY7a8?FqxY7EH$rm6O!))LJMXxmh?`6JUx%<i_I|X zh4eGs2g&rl&(iyn>3I|BX99d)ps$`s^TiwtdtI9`)cqcrKI&QeD3Y2GDED^?NE{Lv zRUYMXO2wZxdfw+sg6gk6{FTivmjrKeVUc8AlJtbKR%o~(hW8^h{J>__|N8L#xq`_R z4J`Kf8nerBRnG1J-|ClHU49SHmt4MYI+@^dKE$wvu^2%QyL1M(C%9beHN5xp{0EF# zP_Xh4I3f`uv0GUabuh$1tBF!YPIEamS|Z4A1`4FP+(?C)v|XmadW0;OOB*ztJ6iG^ z%n0OMn1x%vku%|Z^E;^Yo$Nw-O-KdPV>WHjgq7QC{Q`YSYRW9DrL#=)X*1h&+SeE& zF#*QgA#4((nZ&rK5un28l*=_wLhU&P7*A?A5nA%w3o%ZWuC-t+_w|@<f9?!+3N2fp z1zcrw)z<YHTqpa|fMt+s0{4FszC21e)m+Kqo6G?`0jy1yvtV`n>~Dl=&A|QekO1Gv zb+AHp@DuqdqN?5gA{9&<%~`WOLHeOjWOy?)$g?#f*&yXEWP^l9u4{&+c;p6d+@#6? zGyoflDQv$r=kLd#zaN+;60T-$*iX&di-@r>d39`4d_tRUOSkTWUc>uwk<-+=Eu(m2 zbaUKSKA?C|O+x8e&r<6?*ig#36Wv(S97*`Vl4S7tB}oa?yXu|n3OZY&^^=$G3nN`- zC6!ad79ek}Yu0U9vjWh3&~11hw4DOgG%=t#9r<pv;42@{2Eg7~oCJgaJ*6zM?t`*o z-j(9W&CRL@K5<Fhp2?492`g^1x$z55+@5UJW)A2X970#jZ3@BO6ofAa3mE`2noe8e zognz!2S5W{>15WPJQA+Fm?ty5ugr-QHcO#+8-6PuR1$C)lwG=cH^5yZz8|?(7Acat zdl=$l?}I%c=MHBvkFGbopKRJBLubWlmT#Joq-Ad!P&{stUrKMRHUq9Ce9jg-185Xh zBYCg_il_8DfB>Zct<EAR@>0SkTj@13>axe#;7&nN)cGP#K^bxHJA$Z2AnGjRSri9M z7nIsfRh9BRW>Gr=5$P_o6pM>fX4g=a>y;*juaR0u&8KKsi3f=qUj+pW{3*@OPaJN} zW!z*s<be>&d;()DQfOD6ru5S)F5IFy6sxdlGTr;p8FsoGVse3>-wb@-_>9k6STfy~ z1Dc&Mf@(vt;${I%8_RxMp^^*FP_th5zCgJf_JjqPg;##jb%`M%B>&wM6IQdj4-ORb z$O&#JRz<?X45XF-mg3}U9CQSsW?&1!7rV=9XyllLz^XPsP2x-oe+-0&crx9m8U*X5 z!PNV{?KDt|Y?ehV7ld#@Lt^3kLC}g=RWW}HT`4B-R#-MZ01jd&KsaN|25ad81bO@| z4*v$7Ag%{NZWtl1hiXP$$Cf<+yFjo$2V>o>kBFv61bAKHju7T@X`@D}_ChcXU&CCb z04FZoyF}~H;3x(>zZskAsI3o(rUyh3cr(3En3d8-g%tE^Dg{5^ewE2ndl#(v_xsmz z{|WZu;TR9}{u@8V-$@_4la7BeQ^RJ@)XbcfGZP>Axo126b29#@r{{wk10Oy9DgN%A z-k#LKk#zj_-I3IvdeR;bzV}nlSnBPb)Vm42cYaRpy)!bH^tk8e!N>1C?%C9LC;jeE zj|Nj8J-+)>>Z5x-A3wTtKW^mbJKG0F<8JkAnoYglbNfbS&rk7>M|yhV@Acf?eq-Ry zVCvmFBLMHt^}FdfUZtz;H$pf7K?y+(;Q?0LKM0`%!gmlZL0ABRj5B;)+n-rm+rI|F zDPwKFwx+hfs-d<&8$vVu4uo(G-uKkk_S4|G8`6ISX>B3hF#P@jLYK)JPo}ehcQSr1 zJd+^Qd;@7F0tq|in@X&`?VSGGqvx87vNgNUUD|#5T${PI<J>pdQdvoMwx;x4WqHw; zW#vVhlzk;KO<qayxl-9z73ZonU*=o0V0&`2&#Cjz9o2kMa&Et-WKZ$AqA!cjRqp;O zC+FOeBDt*O%iSgOpWYw1Gkm{)*LeSfU88r1TYd2U;Lej>w+DLrd+zrS^xo<t?)Pu4 z`a*d=XHVW&W#`ou=ha1f^5o}Ld%pZqT~T&kt}ZXN#AX%eeOX!|?-bq0J#W5vHFx0n zh0c!L$9Hb!cAWX{!kN?NUAZ^TAMZSU{N!mfM4dWy{JYi*%Jy^Lb#!$?g0JwC7tP22 zo`dI}yxL{HklTLIY~F>BoVj@MY7TzyOt%&vI(xiJn~UGMk6&N3M(Yis9|9M`JqV{E zoPf{@;VguoA&fzI3ZV!>1%wg^8VI)`Jc95egf0lzAY6vv4#5k;A_!R!3L)e}Ap6nt z{|-W2E`%lsM<M7S)Il&p_y$5raan1RYPY&#&y9hb*L(WNysHn?_G|Kl+Px4&A{<|O z1jh^EJqtn;gxMmIHW!{PxkBwy2;ac_sh<*V>?y(VB6zQbI6DY9gro4gt-ZZ{)8@^a z-;oQo74W+R;wy55+J1P?hp^LDsQnSbL3r<H2(^Qd?k<F%APhj*1z`*1`4&PWgc3-n zg>)*2Ukh*!;`j+Kcc|O-ky;TD2Sqq>9ln#W>iVIq5Skzyg^&fI5JCxrA_!vuLo^Ta z<l?vne)mH-N{`gy?v}cA-+cprcc#dA)L4^%<HufcG0rh6YHaIq{|}=U6?)_@>Ka}U zYy07w^rardZwp)2<B<Nw43V+A>^fd-FEZBo8}PkHbW^Hde|1JZ?)w-0G4EsY%D;;6 zB)a>DulW9@{+RdcQ_*Tri$Pvb1Aa`7d*^MvC-T(c$GknS<I;BkM&&9I4xdTb(kPM9 zKwBa*25ws>s?_1Qto&fEobE1PbZkj(?wTbHOB+0EanCK=-KTds%?fQ<pR<UBY{~1k zNR%^Qw6xA`o~Y1ZdldIQP~&+3r_RxP8Vs+?T{l`10uEaPKGz`saC>fUmvM<~&q1Rh zp$Z2ibU@;5TZh|zxSbBrUH+$1j^p`%HyWJ2HS`_AXVg{M(lh8UeRKOYr)B-0dC#o% zhqUi+rzduazpP7?@5}u>x33vuX4C0iYrn6B82|U*PpHNrD##M`l_d(zEy(Sw!EYD% zev2LRuB^rJ&%8Cqj0at-@%8e3iMF}Zmn1Iw+{1HA)dYNc*UO&=dwDFVhJqgRP6(YW zhw)SCD%?0#5KdMel*{<KG#t-w5UhkZWF<uIK91k$6FsI^A)%rvy8Msi4frXY+Q0VL zR8;rq(FxbLMVe~0e;xVLbr9;XEGfC9q|4~7o}(*E`gC*0%t~pv$n_5HnKawoz3bp& zp0lCy2JYEV<++87;5i>DR*8;H{YqY3B&w(`k<%*-sE%1(c@tpKibdufq8yoMz<{^^ zY;gS&uc*xT_OHfyM+|)x__5MGmFAB{6_uXVc>ZGbQbS)UE<K8uHwd<h+OH2Rt<3)r z+L^kv;@FZUl?!srd+|#R<`mJ=O79$bEza}LCF2E6I9et6NaS4!H6>eO1deLQk^MNj z4@nmlR^~4S=Hx9ocT8STx%TJVIW?l(>-0h$-GG<mHVvm^Q>tB$;w7{bmCbmLUUWk* znqugm>UpD5^k6D#pwn)YOx@7;4HSi0EnR^p)ZlZfw(Mi-->k+H8gPK_0VPxWG?UQH zMlxctC8Cmy=riCsk+H`8WdpdefiCrgwgBD^5z#--6>Jd|hsJtW=T8NqsU*=0s?7os zUG53pCjYP0B?m1r!6L8k>GJf-Na*cuVX?*|{`c^Nb<g@q@%C8b(ZXsdpwTe!eo8-d z)!eSlEBxR82zu@2lhU_EiUyE%Mnit8cQqjDT~b4WMWO&vqAT>z{8y<<pmPH5wW6u= z%C#g@0gdLriXMt%%NqtTT+uKbUrCFL6(ow>9AiD}@a$_()?ORSc{kSBl<Q3|tb>X) zLw7wuW%ML`jU#JCbVj1lK+jrSS%V8A;e-0~eAhZ$8aesFBcT$<rEAD9Qx8-caNHbC zX3wiM8h}=X4v@zDOq&{uxQL3E#Fka#*`>1V{rkK+vh$i;AuDcP59EK-0=NI+ncK47 zOg>A1a)l25ko0f8i06Nrn|lJ8h2K~bJ8em<x6W8S-G4@|eeojy96IzYl)irIKBxqF zQc1nH{2p+kqITFtxIkB^t1q=BB~*b9nS&39#gZUNm^XN_)4V4D+17h6T72VqAd?`D z#Co>k&%rRWo`(Sf*5g)PZlG%OX#bQF<590y-MV6zEw!!11=Db2U41EthT$*}uz;_! z3WzXIC*{=egNb&@waqohijc&~zMs<`>rKiy&n?xSC&_xrZ!j})U^`r3hkF~KVGZ!T z4sTz!ihP&Ow8E*%8IOI~6MLg4wg4;86_3W|jK&@xjV-9oxgLA+B%U)A`*1Aw#{F1h zHEk$%k6~12en+JFUxbPu-xKRr8e3Rt{OB`zL7jVHF2VrVmBvqRHS|^C^!~1FpIUWO zWji-J0ceoEELvC?TT$z}52t+=d(SY|@Y&!{ld}H$0MP0vB4ysR!q_px+4_?Sv2A?4 z@pTY>@XxjfA2Tp@#|9rmIyx@+3%-|l`$l7Ih0aKMcr<q4CVmey?)~h#5j(gPMCj1| z!i$njW9^TA9*chLTB-M!{B6;BkDa`ooQsm6AAjuXuK1=*@+OQ_Am5FcD<F7Mee8Of z4sTy9F~5X+eVd>%(5hpn3591HJ{umbhl(c!lcB;eP>r|yMBfkzD}X8P83uGXiQ6#L zR9An!zVxo4@2?`a2;rVOfsd#-T6n9$b_6%SCfdv0U%XPN_Aw-s;0sp^jaWr3*_MNk z9(55HF6!}i-wm`C!iy5&)rR|n14DS3L<FB6-^8UpqVk5eZ?i9ci}(8GdNzPk>-E>& z+Y_NZA1w8+#gAS0@5LWnX!BV=Elqf}{`fZGy~+Vybvt146)j8`de`>t!_OK@?j=H| zN9`ToU+Z6VVwv|cUlPES84dUYbjAa`{(8G^{r5LvMDjL3clNwVGD<1Q9=(fKo)}C7 zTITA9%^PWK;erNNHxW)t6INaU`9s?(M7D~iZ5Q6F4`k&`6OI|mFg$y)?&<QAJ@`Y3 z@Gb^YyU+l_4)GK9T@cYe5JJntKPewLxH|_CYAC=Zla>3p8t-k4HeZ7*au^)^_f_t} z@ti>6s6k$7X!kcHoD`Wa<1k`+y-srxO1F#pMuC=>ga>CxuZbQm76Nkh3`4?ac#g9$ zH;-Ou06~<qOqg)LD(7{f1!lItp)y@m{F?B_Yr?|n0$txvqKDqX<8)ym2C_K^&zUcT z8O#7Km@Wbeh99rXxopiyVt-dO{J&9sO?VE+nh0?a75_^J>7bE^ZCB;|@EZ;%5pqrB z_PP+Qt2E*{e}DENVTNeoDItw3EUYbP=)-UUY$)|q;nUoOh4p*WKP)pCzLFQz7he|M z=m7dEU`#gj<%){Og<r}Gsw)#kNV}+bOnA`mUbS3@KTetrEi?48p)Wvm?E2kmK`RWl zARGrI30~K;7aLrCMa3h+hd&Fyl2>2@bR5RvGWr#y)7n3uG`M0o{ZUst=Nn_4ac}=w zj}zAurI$pN7>@VmeRDFt3M#t)hWq2|xVaO*Re3Tl+G}q+fA)hLmN_1BRm7|^)+47y zmETt3(kG&vGT}jAO9wd_Kl{Xqt~Mt_U$=<tHRf?qg+a6RVm02@Z0NgaiIWnd;!@#B zI(`zEe3|HEHBSFm?(o)6X+1(neiDPbF`pt!MKB4Vf1f)%mPzXu3PwebF?@51)K>(B zeA3`G()SDSps~?B2=L|AFdIqmx(6-nIx2EIC<I0x9!r6r2_qu67U8rkVPW0UdfTKX z-&YNlPek&hm9!dRL7iK@aB0Kq+(q8>X@`YZ>-G#()ZcEqIDiifRCOL0mG3F*`&pDz zJJI0tM8&Z&6AkX4oD&&i!As)!N_0af1XzW-vAPdVl5KKbw6H-aPg=7_UQt`1yWKS~ zfbTgV9TH8$glN61s|Xj|73BzGpe+rLp)KPk+p-Ya5~QK@p0yWb`(yH?gyFLHkFSjR zAv0#I@`fm8j($|9z~<^gg)z6kuYcwC<%GjH4kJGGNVfP$WkH?m;#eGS_h>56RUEkS zR!pJ%gTXzz0{tj(xCsA1-nSobFYQf-sl1^oZOIqKAI3cVAm*zj6(IOameB9jR>;39 z+EaT^ZquZ{cR)?4b=BcsYwjKB&8x2%IGz%-M_*V5B2%8!R8U!20~Og6Qs!1rSNYf2 z8`GdTg}O2W{#Y_m9M?6m4`;-<ImaB66Qu=EImlO{LfxZM`bh(>Ng3K}=vx&_4y@8W zq8$4eBldUzmtM8>y#ue_(*=-KV{AGZmvF*o@u}K`{dkT|jJ1QFC+Cml4Z{>CdVkaK zbtkDx^l)KJzW6NWS&4TaHS~QPd#t?^LrO(Z@q!B$kSkdCu$jMsWGy~b?{)rh+}cN3 zi-+aTXtir*tQqLw#MnN@bN&%CDKT8*Vv#RJIg4UYLjuSuWP#}6<(PYh3QX;@A)z7` z&$$qzp;Q>27=SH%7uO4VfgMS{Pl$_cUu>wX6B+kQKNFqB1}gE3@tIz|7vujn>?9+p ztAru(SbMv#Az>MQu@Xf5I*2is;b$@O>sibe;$WPH_dXqdqb=qn^u;z23_8O_Q;>@Q zGG7cpyM6Q)V9Q0g##!wnzgSsi-2YgdV61!O;o<(MYqR;Hc<qm>#a<U6nW2vk%uyDf zU_4-~E%EnQRMNHi!a)4m{=CI|SJ+B5qQ0f@U7Aa-<OXo_2@y2Z@G#AMP9!)idbkH_ z_#QSFgQ2o}aU}>H%yo@O<2bbV*hO8HvC&_gu*mGOxt+vk_V5~p1a*Df*vFCtW0SGr z5yb=K%`pG%GRfMKp2d5)Z})|X@M-xm#f33b>I<uLrzV=sBHG;;C|bh#*qqO-O)VX> z^23sxENB7OA7gW*)(^<A2v|+dSY2Yf*qo17eh-AxzKTJ<6Xj&bfN;fOsAxr6a7cug z=55Wx&AUX$<hD>AA~weqlc2MFKla@B{Ab@2hGTQ;C-6Ta@f&ryl*MHq4wjU(-Y~_; z>7vT70Raraz@a7PlI-P`GXA>0yRrC5x~PqBNa%}&Ar>#0T7pl_GdDsyTUfIad0QQ0 z1yT{@k@4da%42gjYy`nfa_C*rV*`GxVHkP+F&$3o8Ttxi1$xoLog05+Y1cep>62#M zTqzRtku=S07@ol!!{!=5UK$%OCM5jGS?qP~WWw4L(#69ETo3v)b+W~JvkC9ZgQ`LH z;e9!=cqJ_PVX{<v5vDHU%>Kn5i~75UuX~&n|Lw$0k5jt6t(mU1keZy|=B(bBn2Q%0 zU<I-FqRvgQQT~z$B9_+W7JLIw5S}YG=Byyo{1%myvC%EV5@lGls4IJq4wfe^>x~AO z4d;Bi(Rg%$!MdK1!bEB7Mq}-iI^zL)fya`%iFtbQ_KhH1VD%58pIN<d)5gvB<OTTN zq}ak*;K&E~?b6%|4+X4vfj(N|Mt}MxK=0k)?tYH9XN_ATiMe1B*1>m-M`VSyZtRV; zSsPueV7+8{D|vk}exM&Opgo^9|C+4gj@v66-972vb$jpW;M<hCg>yD8T1FOiNuBk# zBmB;_{GNpU(ncC;g>89zA#7_}%*}=@8vM1uvXVge{Kk01XmBrBY$^Y7+*sXL59MDi zx-oB~w{GP<NV}lQpDOCBhBkp8-c`rEEpe829{NAWN@aP;);i5uw9!arC^Wc}iy^D- z!)xP0FDu4L(k*o-=!bjhOdG-`hd;Qi00QWm)l|fs&APf1odr9H+^57mKiDlpoy_1^ zh`betAmBs@eR<wohzO)|hlzO#c$>@gaC!`SWR=>YuU0r6wNZx3_r0p%!D%yI=P89R zJbgRE6(R5pf#ao5i4JnRvgje9+O1O0LR3|4Dn*+ipl_uUxf$gGcIi0~NZt1sfqDT7 z((Mojp5V6UDUlg75o7fTW!=AmwBSG3`1`c?h|J3`OlxtB33rN}@_G5b`5^!T9i6HG z`bQl`r;bBVkaYsT5wc$5ku|4@9Zr#JRZ-KC6jf-XyjPmIEpq)fsWde8XJXIkjE`J? z=}9LyH~?F@Ef`IibYud%EQkyEAOoY1=qxfeUk3>xRlaTN4T7B)l-_2Gz(G0bHuH9K z(?5x8c41WHkO@vGLYm9=+8PY3KxxwF{gm!u3$BS#`wmA$);>NmcY4;3M0toZx5whj zL&Gfhg$$aRSzSaq@3~mA=`=ILXo$824i&J;<}x|}whaOI$Wzd#DR>WYiUMw;PVvv2 zNUB|jGO~^m6^uL^L|F|)uq9-Ed(uj^$2~FN^_U)ifY=d|oY*5FDcs4}LE_!%9KRR# zAClK^;=wi?L~N#S0xlq5rsG$LHMNA<l_iQooh_f%BoZRnjYou3kLi!O)kM632=a}x zK?D+WWK=L*hK6gw3WE|u-a*|9w>6yc;iN(-fMb_Az|QhA{^aJ6hz=!V^wVINzE z6x#U26Puj)0V>~@kp)xulHNd8+@fu9aiMY7%z<3gzJh-4+%{3P!TF^cu1_8j6x3sJ zyH#ToxhOc$=PjE^KXV|Z_e9T98fu&8fgnRR;J$_;B`C;YRwKb_wy`<IwLGa(O9a9Y z3^o?Q_3<+YTGNQe#?Ui|p>Ba*BY9bcdDU=sN`9&)>vHhz_@`_7!6$8MdDf-iTk%iU z!1=`m=x^WL&k|48+={;xT%M&!g~O)Kj>sGV(x6K^X4^s`J&iQzPEpwDZJnIcl-|Gh ztnzE|IWU77c9DoQhdRH-IJrMSkdB4eBEGgZ;9Xa+oa1XtL11?~6ke!O%ZrL1%8vtc zD*}O_h=0vY!e6N4n>YbZ;jE)ffnRTMFu`9G9N}lJ6Qj)nn>y--y_WOHXYJhE!7MR( zMzoMR65@l}p|kngY!zqQ-4MPi=k6>+Im!*V;NMIsw3Cuv$+9-T<!$fZLREQj;CK$% zsmLSlh?F@x6<|21(V4JE<$jc=67EK+_%DR#?D>K>gFRn%hr1+^>tw+rq+E!QSy{TA z$(Lblo`wmRx;F4`!TBK)mWnpGZ0206Y#13wS3<2nCmV*w-#<7JW0eiCcb0kkcQHkS z1pHRmNoJBFi!2+sW&VTT@vNS4mp?%M$9U%NAw%YARyx2B`*RRE;8Vj50(_%EKs+Gu z2A46(wDHJUx*kJP4shDy5&RAjMd6>Kbj~AdDFuHR?M_E$71{}McSpC3^YgQ#h2s^> zHFt@oy98J#P~N!plIRj3x;;hNck87?m)IK154dQ#N?{26mroy&vNIT>PTM%7`&=hd zz!oZWOdIrN)Rwa~J4L!JTKF_BJ3IQxlaHA`SBT&%7O3iSyC5MX)X<fs<#rK5cDm(9 zN(u?p|6e{Qi3#cN^F3KgFY@XG)EQ|&8@0!KE%!;JcB4~KD4!!)M)C*`T=u+5pmy(2 zz3s}h)G$xDI#*~HDa!`AQ#O;d63drm!%H3q5x56)8Xt1bJ*;51enVWp2d3qJ-baMN zL07!S{>&!8Xk=*X?o7x-FZ*A}C@+RGVG~1th4hlR*`BRgrBGoH4+MS3t(^4fEC>u9 zgmFve;K%Xfa4%2z#tWqS?0#09A18}r<<ZG9%}$&!`DNu<G>E)OoU*O|d&1gIaU~B& z%bXVySx<;O(#`@RIDjb)Ee@otB&+VAJ)|!4zZEPc;x?1b5kqs31h>GIY_d5v)6i)s zgY#~795lzRU-&uM(TZQzG!kJ<q$ivektW)-!*)`zMl27fi7$*=MD|JsS#<$dd=j3~ zk5AHX;bBXA1mUMA@AnK*I3S9^c|_!ooRk4hA`FdG&)F-o))Fb(9|9qBnG&bRN5C2f zw}^n#x!_Bq2Afx2W8b5h7$e9LDLvqp&x&UV70(b(+-*dsqjsE<Y?W%;=t_Rf?z@lB zd89F;#8yHw+YS14$Z-O$ensYTr0dL)k=tNk5bYL4mD>sFY{iCyw>#jRAuzu6$Tq@s z1pa|Q_Qx>-PM-?YocW<ZsfLM#vWlJpsD}U(Wx~-Nh65bIw6Os{UeZpBj6T9?vq6H4 z;EKM@hQd}zJ6RK6>Fwcu;wrxt<>w~v-elb#`(t14AA5f@;Q7t5At@Fta^YWNE@U5j zPQF|o`-3#Gq!n1{MrWZ+l^>tOp`l)UjK(R4b8DQ)NE#XuS+iRpprO0KyAWpNfHjen z6q<`eO3QAzsJ{ShJj97RwHqjg?Rw;}D_}fm5t}3ps6E-T1}FN6A2sore}&)TZAbiQ z=xn%8Mc)14104ti+C)8$5=EDZW~z;z3Ii8hoq(GWoMtL%%>;a1t>Te`nbm_LoFXVI z|B?Iiq|-$3ZVyygc!c{CQFMy@rJzENnqb*-uzEs~VvoR^xPCcRw%lfwUzz%!mU{Rh zcyO5+0@;S2kD>X$ue)7inL8my4@VKSq;LkmSukU>q#=(%J<0;~q<2>%6aFadJgoBh z+yuOFtBlq#t-dHN-?P&H4N0mM$?qFeDi~aL9N<X5ooYrV;QdN8LG_FhaFOomvtpkk zV7jK%A2QXD&P9!uYI(qTY^@CI9QV|}(bHzBok@BH@ZEfDs#yxp&fjqTN)-J{{1GyE z)|~KCnbq_R2ebm<o@?O%pc^qyHCy{c>ljgVmi*SjRO-)|4%(BA_P|o{P%bjfX@X4i zuNS77i9I6Qg(HP4Ra}cBcLmi2E|NQ5CHo*%GIM&CrJM@phE4YUeFRuFz`^gNWj+r1 z`UgqF?(W0DXYK=*IRTs(`;Lr*^T{AGoik`~WwDOpf+lWmh+GGgII@#+vZS11soo9& zlYMNSN=u%il{DWvN~xoOR~Yi{#93;hq#@+EBij$9Zm6Vp3=wdb!~GPA0s3GT(tmsc z2Y!xl1|J=*jz?`=Q1=824l2VDfm^X{m?OZ8Zvc2SNQN@St&YlK<zl@J>G_DQ;0N)2 zS0a*@0WffX+%YgXfW_tot_k1<#s~NWrf%RJMyX+N7-^{A3}|6Kd6d?MF#%Km+YRRu zSiAO}Wz^B#-)?X}VmV<0#C1kw4u!cQh`8fPatS|jTjY-zOfXSfRD5Lst}Cpz*<uG~ zF%)ZRg7aBM3Uri+dT_#clz|rP(!sQ_=(bK4Y}+5*K-NRz2{08{$H)&>uy!?}1^H_d z*EihKT`DTi0_YB*H>VwlOot=v<ZvE6^wbxtj%sz}yeSQ#A^y{-Vb=&=8$}|!!^4pN zeU?fCzhI`o&-wz&t!pvx3)@o(>k>V%pEN6YRgKD|k5yn*!KNDjLtw#e&S1YogR_X> z`${n|%77tFL&RGjqxF^}k8M<BmB!o_eC9jw_0<-R3{jCbDrInRnwemkj|ZE-=S+N| z3{fd<RO;a1Lb&c=?s)DC6{6qZna%4aQreVx(^e_q@K-PRD7A}KaN5l`my~+Gyxy0J z6rBe$f`bBmq20m}5L9mjG&W8%A7)8h&_f!Y9l{HzEa_(0l0=Z`4|5J31Y1eX;S?T~ z!r?4bsWD3;>XL4DHg7q32d-c<s^^6xvQuzt0G<U4;UH!{&2mo?&cEsq_tE-yNc;2t zNHZpF(}DYz2Iz_?L-|pfEt0WayaMcGNiKjrU({aw=2CRV7W+c`4hFC$5~r4e%`0gO zM^!?;uqEo#Qq_UohfMyZea`lFSjx0$0~6B+V<uJqqxvoO&Sz{3?JI1-xsomFa?O_U z3UVl|*A}_69T0g8Z0h}c``DD8(QMQ8G_dGo`b8s&Sf{5@(kKXaBN!HpJ?WgZa3qaF zHJex|y}>;uPA|m<v&8Ge!S4a}jha2TC9`Pr6)=^Mc+uF3Fa~J|7=KV7iF4c^)RRqJ zXkTa7{2j&ri|jasS@tdhU+{bN-VCy{UEO0@yJtS(%;gusqMO-4N0gOd<BF}|nE0>= zRhi%d8D}o|?d7j1zmYl2apha`mA@!ovpvG8*^Yh9x8#zNcS-nc#qaW!{+5p;eTdrW zekFipM7tN7l&z5-=7WPr?69htjYt*2(p~%&n!e0osVfYx4=s3$|2;pj2IPlZQqq>- z#v}a6+^j|gALapU%?eG=^B|C`yR9&ua=iE))i#(6{YsGM94E>R=j*g;XxkO#_rNP8 zq_N<&_N&b2^N@>WYgN543ptJl`JzmHLjeO^;!(+?cxb+~kp>;oITpc4>b5y(U>+5n zKhEa)tN$@+$K*Qlmc4I0ix=;RchxVocfNz}e;4dScDxQYKe?>8n4T?cUMnA+Ep3vv zwT5!KIqnrm^p!D4??UB4J}`vFb!_9ZcnJu|^Zuy~h14a<N>?C(tpHL%#Ur`&AfFN# z-{Zyt+ou-B*0;`-YNb+KT4QgVrL3;8R~8v(k*5s%*;UQ0GvO+cEnbSOwvQG)wgNZW zfFmJ$kiKu9z+9yvR0Pa|M27N10Qi-AMv4m+1wX)+d|s@;_?@Z!q_d1VxUOA4c_0$j zMWikQ`UPdx^)Uu%w=;3jGNVC|9aYH}qYs?C^^X*e+x@>EZEcvE`Dk8;e8tOQ{2EG0 z*x03V>E?#Vp}U%53F6qrxAS={)qA^B%f~)jzO$Ok+_zHf{>q48ufV)Uw9&(Ka{ujj z9ACe%c3LPk>!$9~sb9|z+&p`od%@PfT|VW<hxew5-lX5|Gd`(&FnXE#VUqH#d4(Z? zzYtj?sd8R?#TGQ6e=PLQu`1*D|6CQf>hMU)k#CQ6eDcNIUp#epa`_K_pwCgz0?++$ zxnJ{-n@=+JuO>#<9uMVtJuD;UEjPFpe;tVJ9&L|_O;mTHpMU)D0nznNPVWDHQuATY z%?0DrmQyNqEav~nK3V&C(NNIQ!`&C>6`jxf3C1I#P3kd1!Q12;PAzxJ*dCEC4da9T zg}6|DM0(B3@hyboN<m6`mNvb`R~61rP8O_il!o#TNsN>TNsUvuD@ZiQP(hp|D??Jw zTgg)9U@Q27Fh{Kd0|?<Qenln%`Cow`G%GnYC6BNDLYm`f(xfQ(%KY->NQ6MD$kO=K z_!Q}g2!&Rgu`{li5B7cHH2hm@wdq9_li0shrYCO}l=D?(jsgw;AXh7CNhm6vz^wfu zLlUu4TE<tEI!d8i73+$K@U4JVrO7f?C2N$*lxjX^bWAbvO^TZAgTcl%Eo*f7gcZH% zYpo(9BhJXjY8>MrMS9I{YmtrdE%7=jp-eY@ot&(y;bR6zm5G0<(j)<Qy4EtAYBMBS zt<=EBsvV_}S5vdsiq@FglB(NEBx_7xKZpHNJKQb)a1w9bAMu`_z?;>QrIY*-?~^{j zE1tyL@EhKiVZiM3Heu2Py<tTTCC*M+%;yI>ruYFL2PwcEv$d>RMNm-2R#gB$&d(7R z6E(p>={}K!<0`U+mFYo2$q7<_zRJ&03g1$LBt8*@;|gor1_fz%15BwO2{S0LD3ovv z5%B%8lKr$L%KW(9e6TbPtp;~?ml4QYWU~e-v|ncI<d^f~G>&}ul3o<}43l<G@@8l+ zzQ)pClA?vr@MymX3QQ^GOEr!u8h(wB*01Qb-!N&P!&DOwxaR(b3wY;wT)f|Kef1o! z8sMBFm*22ypU1WausQz;wk&OVmLrJ`cq#}uDq{yfpC6}i<SY0!ETufvp2P>GCfhVQ zNwtH|Pj^(M^D`u51y*Op+Ym}q^1DHcrOAAi#8E2YC;O!m<JLMf`C$qCjE}Wt(vKW5 z$fHU9WqcA-#wSX7+-83Arqq#f#Tv)AEUmFaD=``PJNa?xd_`)8DRpq%@l63{%F5W0 zYzp#MeZ(iB_@(|d?kFJJDC1L;pSCP618CwaC;<NEII@x~NXCvJO>z>pl@F9Ed@>}d z*T?@I1HivJ34hz~;9s1CpZOd7jGbBM$IG(-KFLz~LFvhxuxvir-z8aRC!i~HGbE-O zz8vb0U(QvUvQACFSLOr!01y)}YLy2o{j%C8Fevj)ei=LBlzgb}@_1!>)-kdKf5ea% ze~`ogt&qGWLt(1sC-I@8i@q68PS$<_H3ULRDS-wjSrS@JyW6LMgip3;P_iatt8_8& zK416scu=|(dgib;-LyWg61qMIy1p{kq*zlm?r4!(846V;UlfYfa6qgiziW~Ne>LtH zX2p@RmLEYxMsuX=`P#2UnqbYiV=##(StErn_akFCaqIaRpNP_fi^ma5=hLRg!Ix{1 z8#t=<d}X0X5&YS>kUNPf;!V|BJ{bQ=Sr3>*l3>N}Fm+B~+9T4`P=aN@!xb@sYa8JD zcwD$<5?jQZfNug@4q!|FtyDnA;R#&ti6k|_!KuH)7BPXXSfpvm3V!c**j7D<Epc4v z^8#!&smh$-zmAI(5fPK6OMX|ioG%FHq=fQYSP_!om<fCltCSLLaSD731Diqo2#qj4 zc<p!%^;uo|@gv^k2Xah`d}^E@KVw^qQ&9S$l~$w~+eoL-L7E83PA3g-v+tZiitC$6 z`Cp%XFn;w=`A6$~9mzHAuS7nT{Nt4M3z5$w|G-QtKO{d2CS&kj7!sM&m>;sCg|R7$ zEfI_9iYUPr_vB5RqaxR?tDXK9L!^(4HtWyKBsEhT7KWasCw^LAM{RDKnW!X0evzT( zcW4m_pmnZezJ=l+*B9C!C5>j{3L@%+dCAkr{bpI)%ngA(g8jkRVOAaU&|cMXNB6(M z)WxbJQY=?DNTu29l*^ZlDl65YGo_t?ZB|J8Ow?hdz^PwVPx{TpvthA|IxHy&qabaV zKcq?gyk4=q&PJ9nO|kYUO_ne{F^f0~ns-<~Z-*@4tn@ASLK4ej3b{yp0BaK1!+|?O z%H7JG7Q0i-Itn<jWlKCu@6^$cQW777e$PTvO0z|G<;#1epi<4_%6KlY_asX|e0i@r zzf6<yTmx*>ycuBKL*<vy%yWh<I6ZHU_VA%*rRl8A{KNQ`dKu3-NFftD%Xl;RuuKro zfJ{n18ShnJv1=ex#+!-S_|LS3uc(vM*J4FN3KpQ8U{0#yBFH#FEOUhS$hlyH7J>?F z%N0W?hp;$nKCDOeUDF*EQcxSTVL2h25d4$+q9??;O4e+R(e8*xP)1`qD<ci1fmWVW zOhzOrC1M8B+%>&Xf|WDap<uF@(RzoN-FXT<>DJS62HK(P77=`%n0@Wi6g?&ls=zd? z2#r=fU$dH#$3RruRI(XJ!L8mdwC5wtlrGzVglwR&B_YQtS(gc*1n$Pj-7d8<&ec)i z{>=7zl*WKNm_^?avo)%1SlSGP9SX{GM+H{SOxXbz@zX9+G)%{IOkoSVnYKyAKZJDA zcF<bCB|x=1AH1NX?8`o*3+ZB_%(zP|)b>hOg>7#aE937PG~?_kbXEEpO<NUmvg}UR zVdC5^*6eE)_P3{?Xa}fEt{)(}XCbri-+GDNiM%8@H`p{dxDE355ZJA$>`!)1O`Am# z+{d~%B54~bt29Y_&cdDN7UswHb+pyCVD_^hOyX=SUI*4gJC-A|Y1Fi7$g1Lu9cd6V z8}$U&oE?nWNY5o!l3@yHt*_jGwN>vc$bn;1ul&$F2bKiQF^K*hgaJEG>F}Clc)8~Q z%TVJgxP=}10TOo4K`tJfE@;7eXCd8eNPp#@-H;;|f%VU!eLy+DW2YZF3VGS4Rhpyd z$$3SonXnI#@e!<GGjhQ3l3IvlY?F12ftpP{194CYG?;o8nBy2_Yt$R466S4v$2fSy zvV*Iw4hrcRvj>wYxP$@XvN`ut{$Une!&1IB!v-mWoI8N2W5MZA#-a2DLxY(tw#GSW zu#Q=1pZ7C?2;`V-CZg_|t|D8Foen(1O!B;S(<4;(4$&keW`lySO~(OVGq4VsOnTH| zzR5khzGy9h8CY6~XwwVkn}8eE)pxBX`0b62ove?ipfk_3p;N$pRnL#C-md9aK4Irp z*e<XKa!%Q{*s&FdjvTaIrIDKkQM*DrC?V2gWMKw#jXg3;fS7b91zV%S%{ONcpf25K zM}a!h4|%8V%4LWCFcfx;>!!dBQ`?G{I&6_Kd;OWwmf3sWfX?D@n5{WD71LlfcJoa} zJ7^vU&COX?9TX?a&xCzPkUgUuYq1klV-*e^RHSz{#X)oDZpMAt|4;$Q%~|)(9bVfg zF|!qNyc?V&u~0V#EcAM|vD&((XB1fcPGqDiC4&;yW?OdX3j7A&ud&gO6~u!zE3L?$ z(7i-}FQAAhE$P9oc88-7+eBx7w3Cj~Kc<J-AaRW}()-WfIC1gdz+^-Def~O?X?@yy z=r&yxOQ*c()(Ylt`5+@aU_ICLbXlYif@}h(F7J@{+v4e{gKxJhI_;iA$l8@)ic7~q z#}bc{x;FL#v>Th+3kt>~#F|^<zPeY$I*P+`*d|E_t;yA-q-oAeX^dZqrF4h2qBL;l zWQ!DB1TneV#-%U*2GQ}90F&O+d-7m+V=brY;<#8RNRB_$e3k}^k^WceoBlzZr5|dJ zsCIv)UU!)gEnM(E$qK&lSmL63l-Y(670ji~drW<|N3%{a`|zFjni)v+7mOn<LGdF2 zuW+uay03Yp&9Q?X_Kw{(hbteofx76LyyDRnKd9lf*|S_wc6yp<7JF-37?P1HJ2f`n zPX<XeVoZrLlV(vF%MkHwc2Ft|Tq3rMH#?zw1(F<}hJ8BUFAa?Rdn3;IbU+ozPMd9q zPD$A*O%vH&`3RjlMB*u{7{1~Mmh8~FvZb@qX3utcl|(k1y>*C0Hs4QudMpp*XWDEM zGJIjPw{}l{d8A%}oMgX!<Wf-TNC1cPzDj(-L+xy*Emud|i7_O(tZgM|wB)6alKn`f zfEbE0l_YW&I{|Pf$6JdMhH%~^bEY}lq0q_FqV0m>o58ZYUj;J{^t}qyPO^y&dC3C0 zFfF;E_{s6;lKFm6BZYR|T#SAH;xYPJ2Zn(FQ}E6+X+cFJ0k1v-3pE>Uhcc3PHj|1t zD?P6OJ>4F9=UEx4Y?D5EmJ36?5}Bx5N{6$h&UBDsByc7Wma!8ce9TlPLxr+IU;apG zsk55-eq{kOWzMtNKeH9G=-DpL;s_+;(}_AmWX^2$=||)jwu=XR5w}t@K7u*}o}BNp zq#LsZo^;<$h<Pj-&k6M;J>;b8z)M@2*lE5b%oe!2P0=mi&tT`}w*g`?&na$GuvqK_ z89=Km7PH_bjpsCycR^N9C_~Bop*lf2CsqOw;4|p(!rOLqr|)B?9jBy;QE?~|!gCUY z2ZxBALU^o@<4;1wEO-IHBRM}ftS5aRuGd9MIDjKI6qHQiZNlyi`|R24qQqzv&nfCf z`GJO!ydT%N5LqsSi<@X0^q!0~WxCpy`Z2w8vqPwab_YZo`eyY)276r?Y}UOAg$+3| zIzeqXXO#rV0ctx)e4DzH0N=Y}AeQI!XY`Kb{0IX(Lgc-SM3jMM4M@<cl^V4jRnK!G z;c9en%ttMDdP4$*fLbi?F57R%F4eTDc~0s-sYs|rcIXDTIuKTO#&vhb(O+BdjOWcq z*g48nhYeA5WQgY^5}W$963%^9H-p;y3I*_z*zW6k9&mcaPRU!K!Z)>D>b|(&p}T|9 zEk?U}PThZs?uQL;&{i`UFC(J2q0XXC3_`sC8WN&~3z8G(hg#b)kBJD$n)$|#ow&J; zte7_uXpTr>aFp07ipPpN@gz#jf|rrp3;z44dEM51k2GJ<TpxJ4Z0<A!*|q=avV|Zs zckP4F{B)TEgkA8P5ArmeoKt}<$Mg2V*cfUP5rWF2FjdgIB(M8z*!>7C4O#~n*?yAY zM`(JKZsv2J<WVsGJxi%8A4g*speB8Pf8AM_hQj=F41J~lT>=GzjSEn8?4E=ByI>Rm zXmvuTAun6_6$~{3zxzSm1+;~Cuh{Dl(oP8xqana0%VE9=2Xcaa#ZHjPxBZE)m<2B* z*+0Mx7`hRT5!X9l^XpEpuMP>`Hn!#j(Xj)BHOwnt0*3~C1t;w##P$|7ZzH09iQ4=U zrS%9Q)vy{h9P<HECH%(yLv5nN98x_@iRf%Y!GM$iIjn>2Og%K``+3j>p+Rf94bTUx zjcv_;(w5DZKG<a-GU`Cn-BnFk3?rD+9VgoIZ)A@)Nnk*>z=IwM@IKnvHuNHR%{<l+ zz}s~}tRu=6PmSMAXeDh7Bwh{A4jUx3h)`_`P9~3grK*VJBt3lkoH&z~oRs<*A!blB zIys%HG#AUUA7CSbb7=pN*r{2}vi5|Q?gM~(|H1zvPg=JV=0jMEgQ>bvV<`pnDA+m> zJLxU`bQ396_S>^R0-=(|a{@*Iru=u=1act^c&{mr$WR|j??T5o>8i9Dlq+OUov0cU zhkc){>&;L(R;YGl&HP887eL{?Ll2!#&vQyYM$OA6Lb~ULO!M;X=KI=M`aeiP6DK(V z0F!dX7Fn^^p1u4(@Kh9!Me^QA?vJR`3O_0jBd@a~<z6uE!8#}(o&?MR)UYn;hW)y& z(62z(9L__T{@Y#-;W-M^HmL>c%^?_N!+y$YW+5${dNn7C_i6~wRY;G&Pr$bg`<YR^ zIT3G?d>i}|5fQTH4za0Ov@WI_rALXKqr@{-wy7D&j$Xu8ph{_i8r{*0I;Wj{k`kT0 ziClZe=!LwK{jO>4qi|k=k&>7VG^?S~<F=90zmIe&JIUr@ukY{z(J(7|{TO_QS`=eD z$nO$eToNhOcdfVZw2*ASZy4<DJKO$Dlt6=mG(l&Oxq*)?W5TZWz(iI_WY12VkkNlC zihgAL0G0L(k@`gm(=3G$wvEUy+`U!9L)o6c*wqXz7&RQB!k$<iRYOVKPbh}UDbC^3 zTG}EHo7souhb>kopeLdBEom~IBN&WmQA2E4I5IyyrcEt&O0zI2P)Z`VBTGs0(~Iy! zB|#}Wx1;V^a&mf#pt&H2tQj5BPEaQJ`%km}&@o7mWpH{0coCWL+sKo4(h=%v2RZT_ zuxFR4#V9lu4E;a|tp1>-AQ!YQPzo<2@*j5$Ijona^LGwK_y5xIGT6W2Il>2Ju2gzl zDU&f(kedXr&`H6xHMC<oaP<yyc5uLsEzfV0@tj~z^e4bCu-ESxN?-IfOlgtME0Z-u zPK-f*Mi0|;5kxaAqxAwzFLhVe=~j?GP5QUc#QZv+H;E{oV~}s4-sk;scr>HgfxQ7k zL5qCFj^M*$$d@-u*v9tr70&`Dk1m<s@gevF;IW*Y?K%?zcqjW7cMK3{Hq>bVIhEM! z5Y<kJvd$&`T(&b{=_M4S%b|xuxgvLLe>NmSz3n20^#8m3aqyF_XGQz{%IF}FH>_jK z|Cx@?Y}6I}9#Kff`2Q^f=|c_ZCz}n1l-!AC6L&aT<QzGxvm<A9WV`*T@VwyQ2YNu~ zzJ9P+jvxV4-L>&rzce0K%yS9hy%LvXKIOETX3`%eU5Z3!(7+Ljm~FMj2@NUcxf+UJ z19c7PWqe)9^9^9_g}*2v8T2#w+By(T{PpIb&=9d}!3kfB0D={vC^|~)%Hz$LGuUAK zU}Gc93sR-FQkWa)Mu{#k1YD)(s2*Zp2cI*^IGjgVmD$<P9?fieOn@bGIPc0tv|kM| zDf7I3(F`%ES|0hZu|8<l2i^K$SRc0JL(AKxxbwuY%#39R^A(N!!8meZ?n}=6gW#j` z!BVE-FAo~?^;oD``gyS67E21&vhK5#pGh_5Mwz~D${%8R=7M(%ZTNT1dAGssA4|)d zJRJ70(Xvkq`YYI;R`4U1!#-^u=xEe7h_otLMed(2<R~x&Q&k*{!7flvForFJ(<U4Z zR&K}kljieR?C#DSlJZ~&cjD}tMOQ|vf4VH!F@(v1aiRz8`o+U~^cLWfvJvD5cw!L8 zu_MQRf{1(xbXrabk_c&Dh4gL^gplTH1EdGt&D-$23h)+lscG@A%eb$H#J?6!8)HQD zg)^h#7ethbxuNKrk<pHsPt@`AqT;<}@$)-RsJRQIp;Faf&7yTt@$*Bt^VwA^l=LX> zf(_p~0Squm%6-j?>1CIBo-rGQK)6hyFCPktcMqq^;@#BoUQ0Fzoi_DeQm=rE)@N-} zJBgG~ES!eX5Omtgw3Q(tfRnM=cQa2ANlPlB<^>@G(BtFXu7Nju_jedF`0NHAEB3sL z&djHNJax5A*ioB-y#r}B2z&WX9-IJJ$y-gje2gL^VtBvh99ZZID}vQFYJf0Ty3?^> zfXvTWfPg2NTh{EpdEiHx23mlfz6xH8ue6-iiW7%4=F@ufPIF3X@R{_KZNZHvSt*@n zbjC@|)CG2`!;YPQld2Y~Pd`!pEnCg?zGi!OmNX}LS9vS_Logams!>{W2bMU1`5X)@ zf&^IpZs|o%!98@2g&Oej4ODdOviW#wm=i*lXA3<FN(+D72NurlKrC@qn)4m^w19U{ zDmpVv3S0gId;8eSWj2ridXtPKn;btuYD+k~*6&|rj+46ON5S+ZUmTYZ3|`5i%Q=x! zH~BYj3@mi}BitRRka3$B*n4{dB2)y73x9x__kchE0>Tu;#T8{Lz!^O{#hFeY$qgJ> z$onHiA-XB=hvy)^fJPY4kgWe9uBesy;&51$Jb_sqEK!hwg@J#BR)g+fw35(LLkKAH z6?Mi=7=zf$q3Re&(Nf}yUaOU@B(-{3frOfdT+u6)aBvG$uh&LaQ#*bnWZhnRCRfem zNKGu&6^@?is%G-YcO|E&Y7F|Lyuvoj#ai17cI2H#Msi<RPfG$AUx9!Gj{Ebv4})^W zNw>-3-Jw8GEK<fS31{rHu&bIouk65}jO*?Ie(yo|===>Mdd}0ZSqNI5_ce8*wIRs^ z(8mC?&)8(QU{jb3R1Lry3lw3MmY0EjeR}RZ!I$O~rCFMva88i`hjeIXnX-7_?s&i6 z_=Q99i`++RWnABGuHO)MQ7?C)GE|ukX0oEE{L;|~^hg3wXb}rAw5FpFmN6gc?vBfJ z960OWe7a5DCIG!stok{4iBs#WkN~8b3p*NUfgV#S54M4gLon|92>n87Y$i=wN}fDw z*3CpSEj-jl#wd*k${(rgZ)r_vfm-*f@{lEu{NSU!2nvEu$@+f$ibBRj<lh9mkda!# zLjDUQ-6vr0PIqkl9H_?OxC-<;xV56uVRe}LG*M#@d&ScAW-H&CG@L?A)55;Ce`%hs zc^q{B&8ZHY6IrT^Qio1~x`J|&4xC38y_lX`VXyobdIpKCigDc+)?&q}+>|nt0(u~D zBy>ggH5ihY>RbZyyYuWRMZ3pg2Ba#Ny@jez3$$u|Yv{8kRL6VvKZaKHY;`!J*KtfW zkg|WIR;L(Ob3K7_V_TK9|50s?7@CBm#1t+1c)l#&2TFi4$uhtK9}+5!mLpM)CaifL zi+#8`nWg9Y7{D4mGoO`DIm$$5gEen;Yv>t`I^Lt)t}TA9RxzkxooQv8@?ErtC5QgC zf4;5m{c)2b`V!28_3?`{pM-^284{#X$J-$BJ)60U4;kC+5$A%J9BaWgAb<i5wmq3V zpqcA2Xks-s($riJeY`(;qL&+>Dhg&FhE&b*0SES6MU5u|=c~DkQ;x7yhdI(OTv0aS zB0#>=fp!=U1bH?dQmJEAXH3nNgyHc04h|WIsfrsls%DJ}pme?`i%}hA%1(`A#$ePA zb|&;(e@sPF9X4k^Z9K>a3RST3{)b(2{M_a*96P^m=FXMHI>NjkvH)42%a8YfC#DMq z3RQc|=plpVa2wY@^Qjr5f%$dJ$ZxJv0hmK3D5}b&Y8D}F+{Nt9w)n+BH(8^g96d@j zbNL?gsf^tS;}ZnE1+Gy$yb-}?=IXiB4p$_LJszhjR_1dQDp@&F+5*m;x$;E|qr>g; z91zsF;h<ORwDHVeVXTP5ieRaMVKkHCjKZ4y!Yu~dIA2q?h*n{rH$uR0HraunjSfN= zW?uUEZ&LgPG8bqHpfauzFtG*Z0Nda+%C1~;+|cNr-T#6CWPWJW3CFC#u|JTj;Yy`B z;Kn4+4rzr`>88wI*;>T@h17;4b#@((39>A4MPTp{q#^oL9>~h-8Y2b1n(NNKrVgid zECd#HmmGBJ9CHEj<vt<!U1oM{B8uF9QRd4|4MLZOse}BRzr482bMu1!bD3paw+<M( z0FfIylN^y1ItK-uve0wgpOIH|U<^8xMtyn^bbPv+F|EQ>2ZWjQt4xxEc14Y2SDLk7 zG~4}A#vYrHv7~^#23?M95?I(xIn}IaQx?dNQW>8R7t0w8t6+B#hWQaqUykY91dYwo zXWcweSKG{U$l5ig+cl<yZOv0{fcCIER{KoeD#YOFN~{oHcya`o>1H?+y}jX}6WH_x zHlLTGHCKC4^T62eQ-b6(9t=Lk7M^MRjm3n|SS<6`wyMTIVX-HFV6lInC%Eij{A=vL zjDJ=h`{#e;vA9iE9{U}slk5eyuSwnlI{%ctgcIy_jS1eYp0(md=x?D2Io`S`7?&&} zO2(ZhKQP!$4z*#81k_vLEH#Y+Qyb9DN%J|+rc4%&2Ws?KqlxTs>T*Pt&%LmjikjF; z=#v&MSAAjWldv1wct*nk$)iCotb~1d=#SRX1%?@!4!LG0x1+)`1--K&XcqJ^5}OH5 zH2*ucW~}khME{n>dq|Dk3#X{)*D?@DUuTXY4uZJGB9NP~`F^ONx$60(7s8RF_KZhF z8`lF?`hb%pFs=v#r$8u!oqi1k!3pwAy@E17JuHnt&YjDVj8PfQ2&ug<EE*q$3u{VE zxt%)Rt!Q*qnSY51y~Mc%%n>bp(HQJf9u`0L9|a3!XTZGY-#Qs|eQWb5ul<`moM`+@ zQ=gNDi=sD?;+vF)^I9*A{;4!%+FGR{-69QP&iDdetzj(uzwzq-O&<P^+*80n6Vi~} zdvC2B{g2{sl3$;(Y7zE)6MP9xpdjTR*$Q(Re=6%*@`%y@)(kI{b<dgsgc|H#kcbw* zt5gnx*{iI@QO5NysF@JH3xs)gFerL~e8lq2YVLdxGAi%`#$BMyPbuGeMN<~Ei~;M) zB|=z>%nf_T($B&W1o|S`*#@4^I+>4@;lQU{FWA{u07{3#=zF8rn0eog1IsXx?z3aS z#%d-77*@@szM)XBpuUlQb7|krIn=ziaYzB5CEj!ylOkI|xsslDbX*Yy%J#4mqcHl} z-lj4F$fb$=o1hnt5et}kP5-&x$V&USwM{PVPu4aI%JVAz3q0!@U}90@@IwAvP{Sw~ zeUU6J4`E*e@uX64@<T>e+rn^doo&s9`euevEI%@z#5is4jpDjPZHu{X{7|zm_q7<A zX6UkdvtG@8eWlG{x;cs)y3-CVUdmjNO9kKZnZy3&)VzgAeC4lARlmk1>4j-=?*%tX zWZ;1cR6LQ9kI;;wFMkc=f$rG`iCEojLlLdJ654G;jaW}UY^)EO^+C5j7}kd^`G{D* z%kRwjq^0IKKe)`;IC##YUulD-xZfH07<6{bCTYn7)k1w-x|zQ$SkTVmcbd(ete_=8 zziN?wi^Csc*P9EHmQEc!W6`gyXGOfZGHogIDiahFOKoi>cEXU%UN{dW@ZC-7NFL53 zb>-2rR!8xrd70(tOXLc5W$Q15uViVjWQi)512<%D(_qd^J#(h#pPZqt`L~1J2gf~T zQ!gYVpmm^u&{WXG9!uab77d&?O`J~xnD?l>R>!n%xc2H5oT)~`Tl)zP9Juu0_$Doh zN?HnVy(mX%<}*?&*#0}?nM0kkd7ev1r48t`ELL<?9MJKrLAwTe7_g@ch6xZPISO7g zA;4Ik2JhepW+yAqr?b0&=0$UMP633Bykit3z$Zlfim%wkSImtP&k>7Xg%eHF=(lKj zko6u-!K$#4i8<)Zxboeqlx;QC3Y*CC-EjD+SIkqDaj<~wvfUhC9{XygFK>2%-zAo0 zHLKuV1+8GN!lyv7r%b`vBfPq(zzwvlv;t4~%gF4TQ1F$r&?!-;N6~4KKV<Wla(u<J zeR(r3uZgZq^ySTrUY-c|k+?p8hs*GRO<}1NQ1|RmNBEDpz8t_+>nLzt<>xk{tDR_V zC&B^|McO5<GAHWPxHRr~B>%XBBFGnX&b~G(i`v;tI=AA>bW}mPS@mT?#7fnD^Gcbv zV)YafOcT-7Oys>pDkYMeWvf(4L9|~E%T^(fiyy#mGQoY>eVlC7Aw^{4@wS=B6>_Jo zEfx+<MG29(xZ~{g?9j5})|K3jS;(d|P!1*UYivAzNEQ{Ya=3p0U@4+Vb-_wmM$Z0# zpyW{T@v)HO;{w6)IO*|-kY<`n84^NM!Nndac#c}dk6g!(jNHdrue!26WIAG2NMXhh zBBY4n2#H@Hx8N_~vK0r*F3Ef{FDh8)z#Xq&!sXyVb?1%{9p&OeDq|i+&6{?Kr=i4u zLbOnXX{gub__!^OjbH2r>W`E<uU!+|dQq_2G5Y_p_wI2~Rr}xgo;_EXt<DJI1*|=z zBjBY5@B&_P4<ab#2~hD;ofvck%nC@;%uX|C2!sV_3Es|tO(Mn#C=D%YKm|1EsFkUS zDV-^`8=7~4{k+$nJ&2yp_xn7*-}C$Z@jT6o51+L@>$BGStk1gcbsZY7o?tW{7$3S- z1~u)ARLH4Kvl8S5<NA3sgZ4zwjT0r=IDAtw*EFZZm3^D10&XzA8^=jzC|Jy@jm|Mm zx9yuA8<{LCh?KpVma!H-9+u!ayyNzQd4;E+n4hrDt3_RA$0Ot3b8UEO-RAdoFY{b} zF<IDa2$1-7FeeM0ozC|5t2aI%k1ji%2R1!9KOtFOa5CeYx8(`)H)HxOjDL)u@A2@n zS8Ad2y68bM^bb9R#ZSKL;f$i&Ls;@X!TZtCr+Fa;T5*#1dt8=mFIbGonO==DDz)_V zi>EDE%T88MDY##t1KUedO(|P{_$FdN_7R@iHzPJOOIA?XCpQBrU)O7EFGUl-u2*HB zMd5uy`aZGa16py3LVw5LbkvT`bmI?HvAO?C^6Pj}@?X?RNqCvxx&dn^(a~e6xmP0T zS$L!VivP@cWsy^;@EVk!xOh_njBV<${IG~NG#kQFMHyj<s9~cDBEQmw`cB7M#jNR} z_E*=2(b?;$@GH~G^1`r;(cBptMNKQi%tMr9ZkZihB&O1H%aY%>PMD3Ax0*~jg}Fwu zhBlR&+oqnKKW3f~!)x=}=9XbmzHDBNIryeMZq58eV2)cD8;#{#tma3`s2yV^Gvq@2 zLlS(`{AVZ3N;3_*$%T<?CRqIcQWxnn-9HMumJ~tMv@3HZsgn6obIYb*iEQi))%!#u z#xiwS=u}B+nGq}g(R6BACgfU_R+d_mrJyjINVbebQ>kt0MfqdX1i7-)+EUA~kXn{j zlOernOj?8GVd>4dxP|lQWR_x?n1X2I#!2wN$LxZHuZM*8OUsdj?w5qlPTLdSKjilt z#;Af&-@DRblOx2-()+4&@c2WruVM<$2gyQqcTKxu{CI(X)V`Wfb-{G#(tp;xGNQ<u z1euT@Ft(|q@<&e>q*^n*&CN2s=H7(kO-H;WcjQ2^S$RtpiOd;IHx7j^)D?MA&_i=4 z$zzfmI5Ujg!G-{mJO3eTrp{|qU@DgBnKunL+<DV*!)V0be0Sc2N=e>Kk_)m7N$??g zGZP9hhSc1z03mzGKB$ltT}ZKz-m+w$(Bytu$-c~h@XWcS7-fcMovg;5*ods~qP*21 z$tR3C3v!F*Od2xn3RcfzJ{TXe`NsHA;~1xLW`S``J6^>zjx)u4fag5Nz3@P|4jlu! z60&Qe&CIw4c3r5?U-@>PoJ31eiGSOkqs<Qw&r1BhteCJCCF`c?L*{gillh(u$?t5? z>&o<sqjl`jBTm=CuARv_TEB8xs9u#g1^@Ml-%HU)bgagvWK6Iae7jD}r}TP%bcIDa z`Ei}3D0#r5N&cmiy6Q)tsFPNdIS%bAHFeczPQdz-)YZHzq6p7OJ<?f*6(*bzU)46a zJzSC~{W|(@e5G*52kNYsqAyQ<vzLyR^NM2_LXtIdrWZMp)gt+&SEqcs#PYgu8Y^-3 z?Ahpl<E$UzCWTIZM6oqXXDq21kz)+6@h_<kNGrh$g>l<t)BDcTmn1|)R_)dt*<9+^ zRp0wWMVZ05E1tbsI{0Q>f;A!8J3i(HBb}cxuZCoIyf4`x0$T%?)%#(EGU7@^QAAcm zCg~xug(P`kX!3y2<o;OiLQjg!Ls1S*_L-L~bmD_UNpFtr$>>mZp(HPc5KT0cajx23 zrSwf=d5kgC?h@C21oa^uLCMe}urM+qXV9?!H-K^M-i5wfl`C@(Si0$k4|frYz#l9e znRNTTYevsXo>5NR<(KEpsPf1hx-fyusJ42yoyO!~Uc+%O3P)+NbN0x-PjJ3*TsR)k z-go#4LtU9p9e)gc&yOXi81+{5I<-QHC**T*Ffi|QLodqz<4s#|K5*0UP?`#zK{Z5D zF`LgVwqTnqw!TTgWj$=IVJN%{(9QK2RTD|+87fpx?W;jt`}XP86b^0bu_0)7%3DpY z8A5u5cTFV{a?Y@y-t235beDL}5KqFBbA~u**pD1E93&hxtf`M{sGrqJyL{c}41KYn z34i3Ap>Kn(pI$g;Xvy96zvrBxrMKstAqkwEGjy!p^&ig}M&5VM(BUndGqg<J^*?jY z5a;Z&>=gG7n`Ij5*kX?~t0L=1`d3UZWqi}j(=&F)&nskP0b?7rP)U}~x02@OI&oxi z;_-U6t=@Oeo&m8p9C)O9IMHW<WMt$4Uo=Xlk&SXnbD4ENBAqy>i`!wvnRmHiIb=%E z`OX>rfl#JwlqLR-rj)fL-bu!Lg$l%ht^U^a*1R<*Rn1<cU><GNS~BjC4gddQ)GhK# zi6iljBkqp7?CK=Qy-2fPg1J8<jSivEBP7`IAhV&so?zA(=PpYyJ!Xu%R%Z6i()CL) z%|Le)sq;%P{RP>UQ16>%)>hJ4^^Y+lkJm@F)lck{N1FR&nfr#C9=Dto(^OU;6t|mg zu=`q`*@gWw*+dWUjb<tCAR92_7m48#-jhol-ibr)@_@&R%mZAhyNYxJ0v@gO%Bl~t z7hCQ1*5f!v?nTarI$Mkl)2WX({mVZpOV@wx&<_KmxR?c%ikkW$Tp(iE6}yOA?o3Si zeUwrd^GhUUb`GTzsdTZs@EYcxg>>UcDpc1m%g&9f^<@T$1yeFoYUxMy6*xmZr4lc* zLrmAxyVgl@`Zcr&Ur@s7*D1p3S6lG;bE9$kH5*zls}H|>_O+~@&D%r{z&@I@bKtn* zHgfzmyrG_LRT}!>saAK1pN=<9Ec17*!{OJw&`1(8Ir=JuJW@&uWcc{{R%P({T-!^R zBMKdA?0vKNA@fNad;ghN$7OQ=fJCxYkz5~{R*w@S!_sWij}@7H9WU7DolnrQk@Z}W z&UgCdqf@nM)m-Y*orRGmuB0^CWSSvoyaR4VYq9uYDl$z;Hbqu!B<D$($Bx$<+v?ev z+P<A$S!Q26q+Y3rJa7(0SfL<A6QLvL5Gq~>F4)OJ`!j^H$@(v@s?a7CT%9wXh)eEb zFa(k^Y8d&S%BVles3AryqyD6fT1MWn3=_*JxkG9~*s2D0y+$7turag`9^}%e2IzzQ zamYFq9a?vLJFPFHNT8W=8lNYxDDbFw$6NkUXXa1SXXyu5(x)Wk%7-%QoC-rrzu_`< z1=#X`=xAPb?O7Ezx?&158xzMxc7Ef4ehGGKT&)JLpKe`Wu)F{RO?6l_Mi_pH+ixdC zGCS$%eMt!;z2d4e=-y1F_FX5<q!~t9PGhrot9+|8K+Zgn*d+5`^z-mk{S_iXuC_#S zN_R0NX^$XBA1X&%EIFxb(@FhSD%2J5w<Rop1PKs3JEEyc>KZ%W2$3l4C~xwglxer7 z-_bBk`xoo6@xobBfB|ZY>~?1~2A#gth$As2>P#YAT3>xHY-jUtox$AL`Y-<+_3Uhf z!T2OzyRNvv6Pfe(-kQAT(_52e0OZdrG?U;rIubV>%<09@p(%rdHwJ&BPtgYN2>wx@ z(l_{{;2ZiBpWr5aibkK}t54~tPw~^I^w*~hh)nTMNC`+zd7x5RQ$|@_{La8h-b|?9 z;z|0z!B`EIHrUBiF~f$-6hA`-lykjQLO$LiSv(c5fB$5lFWq>7+9?s(aS=#^T}Jq0 zX~j9Rd4O=^`Jx0?FQp@;QY-EQ7|LD`r5nGc;-;CB?R*OSpQLgmkquoV^uu$K44UNk zxyAZi2~PV5d>y!(&OSuNAK>FW@1;`uGAgEqZahSZ0=AI&Vg}KQ1Bgr-DV4e72wsk; zBXLiV5M%IKy;MFdRH~?>sF!Cxt3-o7Krg4xe6_Z(x~Snhbe(&GX*>$ZZZNUz=%Se3 z`j|eXEUoQJM^{mLxnxfyt@sC}kJk7{O_+_FAx1kJ8?aTyEz7(ACQB(~fwCm-*pVyI zAMtMH?9KNxH@-!VEzmnc>Fl>DJ=T&A|HjTT%?nxLVv|Pi)WzvFiTa_H$^f<Ha~@Y# zj90vYjK~QI7-(HokiN*Crrr5A<F|MXrUn-~P$jTZyeLn<@$H{0mF+cJ+*#t6$EIo- z_0AJ57+!3$v?(ZiM*(hmkWlTZ1;-Q7aOHh_^yt;Kc)qR<hiNVysj9lVXz$lKy1-gm zkx8ZRVDY-VV?Xcb9WYm$d_X%bq|BnljYo3st@TVTRF^G7!B8ODm|8mVrGfMJMPe;` z_6$YfTNhGwaql`4y{}|1_b4m-iF?vN${Sf1J)3$;ilGLU)Do#kIkifmZ}==lMrS8b zD3<7+%`(TwxCY8M$K<!q2OC|EnfUW2zHDK?#|ENDI=xU$4vNL@KG#@Kqox`HDElIN z)hAj0QF|2|H=Ij2XiC)IR?OiO$|xo>W;Y%Eh(`qO0P8M1SU;P#oJsb(+H2Zczju0} zm@`?!@I@0wjhHeaWt5T`P=v30<juj~@&_ee^G;82R(j!Xr>F3)QhG&I`5?dBUg@)| z<~sbAc_q-A^x5_VLqEUWDu4ZmsFb3EdS&lOWgj*w3sD?U7JR6!`JB_+`Hw<rq^?rw zs^rU31|AuX$GNEyA66=H-q7(LNQ3-N%jV+#l8FAnN_`9y$E^wUeIy}pFxtS_54a=F zN~JpLoScdc+o_De1~8#QV2B`8h)s0%AfC~q0cRr7!e#-I0XS<}FqoqLiMcb`zFU)z zVyOZBPN=yr?(2FAt;n7zTJeoUFYg^WwbxO-Hu$n$-Uk@>N}zF>?X91!*3V`zn^qcJ zA6yuHP@?bG%P&hgt=@mM(Rej*!;+lR@P7WO<?^JYtBgL<j(MCjgTf7&hQXC`(m0^; zR#JYk&u2<0(ul;cYQ4Gw_j@HKbVl^6KEsE;e{!c>Kb0|#)_mkcD?XH5C_NWt<hY@U zvz9Oqb_<Y(CmPY3N7U;L14HG#gH4c<8Nd$73N;L3WFwN<9A~gOB4c`d+Ogd8+51sn zF2vt7GqM|xNQ2H_ie#jWA2)V=+>ol;qUPhr_1a3g>+kr^IkA$mvq_42@W(AJNZ#oE zULKBE(w4XR6T>ORFiNe*!e?KO3MviE^Cs)O`cgK?IlQ7`QSuz`*r|G%=7I?gRi?gQ zkdj@L#bAH6F0J=X6QgL4w5Q=k*G0!K$Awi*+n)M;=#ail--zmozn`o|6tWhDYa@ST zpI+W;SSXDPh8nRC?L;i4!0aYv-(bp5+oTV~TuZvdUNG7(S61g$DK9enxbo3``{1(> zQfIHn;V}2QY;oyEw|LkAUhLddQMjz@f@wH*a8u_>w3|NNw6WN$pd!m&uG^{h*9V5t z(P#O_bNo$HsGSe$Gd`3ZvYidmg=gp+tokWbV>-U`O_#^dYB<1hLoxfwX6cP9=w$3L zjWI5FTE{xu!?G5q8Yk*%vySV7lER#eH<analNLH7^#fL}KEIF$mwke>Vi#BEJRQZI zc2-2~+kUPh%lLg2wgeg<aaMg#{-1w>x4(x+(zDuIv#LJPAw1)FC!S>EDx9%<kDk$S z)1CHKXJm4C#Wc(WPR}|W6Pc{Roj&8EkACAcj&<&(vyzR+lY=73=OX*4zNs&b&CEAV z;Tc!HlLVPeQT(myV%nT(DNoMPFD^-qtd`GO{8Cbh)1K<Y)O}uF(h}Xtz84ajGp&o9 zc^_d#XGQ3ycQ1F$1dH=o=i!$0v(8J)(|>lh|C)9AVgB&)(~a#%vXZV>;YOsS=bcs8 z$^Xm4dFK%wQh>l9bJ7wgKJBs1ZRNM=FFVs$Y*<N-+MN4YmpMgwc%@)>RyaYjmv5+e zCv%D<)0@Jh!<kbQmtKPFxkb*EOV3>-4CgLvxb&~gDKyST96h-qbBcWNilkI$QtAe< zEnbMm@AOwImmcp$fi-!GEVcUh6e@FyRNuh99+m<{)Z-%33-MXaod2)685iSk#s?h> z{EWuay{PEZY)7wXQGafaCiUGEv}{J7aW!ODlONqRxINXD6zQxr;WmfYs#2|06WEj* z+8XLaL8WNUXe^A#0Oq*DW>hv*D_`g6)wrQG(dVI)@kd9mPFz3gf-SWWEa$jFRP)Gq zN*#4NDl%RIQj$ob)lr8*k`@^TE<zueO0~aPkZUg6&SzsXKiM#-)^vMH(vYg8sH#OD z_coevxgZPkp4GIzfqMmK#IPfT!a(r2jLT}a9&fQO`b=BX5Z=&u(>Y=_jwtSnB7-OY zs5Zyub1hjlG*$7l^Na1y!@Bd%uEU=@of{5+fe-VxvTqw=C~LFbdIXOlXW`W6=`$5A zM_WDs<FVacPB4PArEP~Fn9t>8HN;3NnyvZUt$Dh<*R9qKdF#;s`Y+0gq5bs}mf!HB zvrqFuX8*9^CDTkXK6G>oRNd>0K2zQ+HJ(y(?dgTf@yz8sO0k$~&(dOe?rvGI?eJk| zdu<l0FR(TjFuj70?LCh+?ojn9b0eB<JSIEv^v{g<xnBz|wN3IK<vqh2J5Vy!)XK0- zwPd9}Q%z6!cx6ShPMfm%LTz>Gv3<WT{?$Kft*<(@x~}))=aS7@#Z7Fk@y$CzsY&+X zKg*K;*j0&}()80MWz*>iC8NA<OkCe=zHmP8$RYEk)^IZt5k@!uli!K~GTDxjYKk-r zY9E$W=GZ)ZXfn;|X<UhBwZEGcxt)()iI&5@V|!NFw``^z=SQrIvT(AyVTa%1<<5qz z*pJd*-X8l{`aYfWz;=6uuBs{tIzDc<W<1#yjcto0%Om&SJUxs{UOmc-k!53xKb5qm z3i^FLs-n1{V8bSIfDAVn?JGW<11q$@X=C16(7;j@Dane&y<=PH8>0`s9+qQT8}^UJ zQoc4GnyXswOkZ9wiAIsZQZto>)4TCmQ-CEC^jT9R>MX2}P6$)47Ir)~jXrx4rx#c1 zzuBX}xp2IXN!1tzw(0s-%3CDodQ<PMylD$UeZOT3S{80Y<D5OQYg%ElPO~^_Ix0&} zVPLH{)BB<=8|U-;x<7H;y)k-WM9xx@0OQrkFr~9@ysDt>_T-^%^OHQ!e<yIEC&Ii_ z^;I6%*;X}ZO3$YjUgtmBvdBp;X|$J-+Z2Uc6U$Y)UwC#n3wy8%H#gd9#=%%lTk|xf z7kPUQamb~iBY`@hB<p<&BR9BW^M>H0JI~t=T!pciw&rSz>_25c4FSGsqoXGfKea0R zuI|WcRi(#y>^}p2r^<GeFWpEY6IiN`@}8R|V=~9+j_{@LlR#@}c(1WPBf5D6QN3KE z7X)F4YuI2CUa)F#J5ad_qAt%2obd1Nx{r9<rXGTR96bhOdUA)>kI5`T>k*XhJ>K?a zH|xZ`jl-$?7~bJ+Yr7ekz1di@C8@ouT8MFGASlHu-DX?_MpO{2!p0gwM%_kUUDB=e zH+U$O(23HmIIqT1CA2OZB9LntiCPIMm)5P}ZI2R#37Rfk!()Nk?O^3?3-3x3;i03z ztVh{EIk0u{xLp~=)V7RVY&$$?OYR~c1v3OIC)kTRM8^1#Z(M0;BsmO)8X^?6Sp`=o z^KbI}Two3`4S=u^(3$UX114@&7i0;!H3k>^7(H@d<r|d<)8`>v^==a`PA;ZH+V5e( z6Qg1xjNv2&5j5h%e2ZgYIhlFJKju+}v3Qj;Oe@1YN?g<+8U~ab!)N2BiwSU4!jTwT z8JAc2;Py1^vB!K|f=mMO^kzleP*bvu(wk*^8J)Do#73D)Z}4q8>>ryhNvawhcXTw{ zK04PnJ>GK3kz?DkV3^NPqkWdKah7q*EMw;EX=cPk(!spLtY<!Aa+y`kVw}jMBJFsh zT9#?=!<=G{Fqg(H(k4~;=GsaM4`o>N<;@wzg*molyDCN13vYW{t9*;hUM{x0xNw{W z7wN@S`I6b*2g{RnvIM(ojzWcRB=~ncP@ZZ|u>U&8@4<1&xaW)&_$-6VLv?b!T@@%* zVUp2U<!cB)O3|hv9~J^q0Z#&kK7Mtw5qLBp954}pd`e94W)@o>FJ~4zg3B3yW-;`K z3sXa07qqX^y*>svHL>n&Q!y)DkCihk4T0shi#(G@@(0)Eb~_s$Eobr!hH~5YJhSQF z9H*Bvn=C`hnF_}={B!BcnSHJp{4?mwZ71Ea;o2&82+3<SGGFl_-?hM)LmR_2(Zi`> zed+As*sSG<DrYXa9w@J)nM;;l<+jiHkR(yoq<dsNY=|sp4qF1sZTorV^!?&kxN_#S zWl%XTrDty6>xlbfEsvBlw;j;L9-fJHyWSPeF|nM9b@`Pu!(9{b&)|olE+2BaN)*;p zRzrs494a~h);OzDYKbVvB(o3xG5!X+oKd%`Tht(*+krdoe%Zl}1&?7IoGn^`hhZGw z?hp#LKOD}2%W-K3I}u!t(O_`(CR`&>!cV!mMv!Y&zXhA+!VWeR#orQ20%K7AnI~FN z2VAG%$Og@}{ICNvg+^2qhd2INTsu%$RP5Es0RT*jOdbjt2|$%E0909t8Gy1<dL1{` z@#rCNzK7|9<X#}R*`6fV>Nb1fU#%MdZh4os^USMm(}FIvBW2!_Bl`+}CYe;C!l4g} zx_pUOR}c>3b*Gmtv8!~<d)D==?Yx_*5Cw=h<$Ad(J5`m$n&X|gLda?_G{<QCjuXp8 zT6c`#Q?%|V!G~y_aH05K+I`uf#x1*z>#CI2s3aW|TGY&d!rOfH=lrquWQCF<eu(tP zpCQH^wL6XrUOBY&4UO``ce&mQ?0<j4g{yK%3v?6V-84cUW^$i2e1ry3M&r=LFdlaZ z!5Xe2wkdpBgD<Yn!9~1%?L$_>AM^*Ecks3|geyW7vWvHAKY=k<x=t$iOMC%$Q{eJ? zvYO;xE5kf%sF}j67Pi0hAy-oce;!se%Mwb6#Bc>Sy{?sBanEzgAfNR+wbKsFsyfO2 z_;FTW%uJRuIg!@&ZJXZOSW8Dg3}IZq^8weh@u^M~R<E>O;pe;?T6(*)V7&&nOCy#N zRW)|(TlvCY_`G-Sy}1};<b;FgLie*+wXixQ@Zxzy15w2#=#C6PN8vvkcXKnU((ibD zd1Df%q8Q(Y`wksG(98%|k2j=I)`F#TB7Wee+7s-;OnN*2^KhGmFC4uP@uM2zf3Yg@ zC8))4k$<-zt@xT;S48Gn-FJ(oyZf!uE*^IWSJD%oaD2@p+j6wIG+C6Sf}jH=F9&&5 zL{pC`lF~FY=mMkfmPG{#qw|*?osEO?JT_V|eTRk7inZv_n7)4B>lVS1O%-JN7OcT~ z%%ULy*na+$!kVx?arT4h!&WC=dEhC<I_WD4g|H60Cy>rwN%@Z(hkNH&P){i)dDpye z#kC(*dodTw^sO4Xey=1~cPIom*B1`sj|GwJFZL=m@Fm*9A$)TPtQUmZLn_nFUdINb z6DHmCp<WHXbdIir2|4{ftPx(3GD*nmoyO6uslQO}7E&RDcvH$QI7TiYx|$|UT*^m3 zihYh6{^*xlbt`D6n0j01nXeNV$&uahYT|F6m$0q8-iueyhV_sa*2a&?iOVUkB1W=_ z5a)Sg`)z!BXX)d+;!4=~J6)ia$m2V^7$RwjyilO*B$jfo#FfPJT)8?7s*EdGYMi$k z`=0tgQutd}#wEe0vPec}Jk^<A!e(4>6W~x7P9%>|hPX+j4irm~*}&mSG#hwkB5o!d z>MPCvVU7>2_oXpcC5;=h9*2*TeQD!tV~TuA{968Kj#ixmKe=-AYkd3{B=|IWf=p^M zb#k*=(-A_LCo>5S5weh$F4G_q?{pHMps-?Xh*J<s8uA&z7o{Pe61-O$Qb+JDR7Wz# z&Y#JsUQsD>u$D3!^?xp47GN|*Y52)bJ{0&np8xGh&@jI4lLU;qXT!5LWQ2G3u6Mz* z>XiGgay&cpD<44gNUkrhAoZ?HDEH;6jd?c~MLq^Xu}W{J-CeM!P6X!OK+Cx5xZvs; zHwqTr8H^)IFz7<1oxm9D(zJgGIkH79($5o^^md7xNiW0|q*Ausu(j~3Y6RDN!#jL8 zyx+*X2ts%hN_6{qG{S5NF5o3&>+AuP?#B+>Cp;oM6D$O?<ccRCvh|jf&vF$m1{Xgf z1goxwjBwpyh;5E-7r&}V@bB?0SkS|I?6w_zbvY>|L8{W`jw-#zu6L(bAQkSq%uFoM zYn&p{w$062Rip8IQV4tnMH)u$8Q0kIvFstl<B3GDtUB(olJ=Xd;~Vz!`Saa(ms7gX zu8_%JfRT()hy>WXa0Z=><sHoRCFXV3O3+!`@u-n~$og*oyL<T8cZEEBpZ_DozuoP> zQW`D^_}ut0YuVxng#Y{VT`H8Tp`T%WhO~WVD*j2*#Ul1d14Sk>NAvM>NvWMCC$=a) z-m9zd3Q<9h9J_phbLH+!`0w6ie?55`E+F6{alrGsep02xRlz5YSB6XUWz@K=X9TYy zvM<Cm%Hy|pk&B<-<`Zwr(6&EXZOG$mF~wO`!(!v#C)=@-=X#g#7#<|qnEa6LVrTqy z_b4uIF40j!GNmi(!dTr<#2>j-`cL9No3D{zP1&`M*PZRGl!0q59XE?`&!cq*i0pUm zhJNl|n4$)tZJ%NUhCV1OixS3CBVi5#bO7QAozhSp;6ptmQO2Xk^}O1`JnE@{2)|s# z1bce0GCO5?7!L+8kGdY>Z9npO7NGPfNkXnyp-X)41IF+14NR&R-VMN~?Pek+>hd`r z%Y!iDWA$SV&Pc(yS7rNFB<<?%CT)W|3U82X5^|x`ufx;jB6gR8$44&{;STW&_W+c9 z{gTjjs!BiSZCgmpWvNu@Arf-YVhaC-juIOO<~z;`m%T73BS?4YxGu{we1>+GW)R+D zmA!<N0*L*bAeEQ+;qAqEUr$z|s1)e!<uo{gRGzA;TR=F`ujUa6a%oqGXV2{vUP{I_ zr4MxBdkV$S@f?3$@1who>(-sRQUBnC*N}o2pubUPu{sl1tX1pndUB$J&0%%zgw4&9 zyTHBQz(ncPLg`57F_F?Y@e=BgC5^XPT69m7H0RRm+_EKRVw;gGMM$ZY$Pg0OX*+xe zEX7hxFc4O0$YY(hoG=fmu;GsQ#VZZD(pl`2GsK$Pur^dmYBPq|X(;o2)({%wXsbTU zkj&ebtgz}ew)aT1XiFz|+FV2pxip(a)DWZ+L~uM!L?H1SJ53cN{v0U|J_ApehK%eq zrIPpslCA8HHH!Fz!|~1>pJ`#-w1$}O_{}7K&>}If&sjhGxfaQr$LnHOuu&S_>qLm@ zwC;gUQ@;|yI73i_Opw7cN00$+L7z@@E|Fn{ymW78QVJ0xO&;&vX^tUctdN70VZDQ^ zI|PT+LBnU+SF&^V2s%iOO-g9PwIXvqRFRiKT4mXNgvWSV<*q0A#C@G{8=Ofc4Y;Kq zgPvAJuB1e3nU8U2u{QDc9siugv$0nwuE8{Xccs#J#J(~7+qkcsmbqxS7~0+bHH+`A zb@AA8jQH<%h=bdQR$ZG+0a!o~0QzLDQJ4+v+c6Du2&KXtLQyhxE=XHZG<*nN?;<^Z zu-BrTpD};ndFsObzJ*Gee1jAwgn{qSqJMPPGWaOL^bhD<GK)97n0_68uIoJBei6n) zReQ9<U#?W{`@nD$>!4@Glhx^w4Bk@0qUd5QKEB<GK`I%Y%Lljrgn6}(0nY#?0Mr0{ z_NP1DZB6`p9i<PFd`OiSG7If{H1Rt-Z0wyKn-c{ZuBs-o$nmdOZtj04Db1Z9@%9e$ znNWd>foh@8odPkVaGpY-PRL1qpMsv@ij!F&rOC~$e72eT<_8*QJwYg!i>(?7yj)(W zx+6Ag^5xg*Y!*|P67$-QpUZ{dY+bj-szSJP6!CSTadS1cYqzblN#OGo<|aNm)*Wo& z)!XVEPgumaBEBXxZl0#_;_U*FTc9SqPk|bj!^S^H1`D|g{L7J>8-Ghm)nwT}ZuFz# zQ#)c_l$)!0%qso3NN%p;vnk5_KB-$MtAFh<pB6sH<=t9&qQkuLu2zoTzF#XZ-=mer z2i#+gRJljZ$tuZ_Mz<IZw;@KhiX^F6Zu{)EdXYG5CXY9DxTn{O<<JSvR=UNR&|&_F zh?67tC_H{#hxr8}4k4j=xb5LJTlx5qj?!<1x1;1agJP4JekrvyHnLg<^AkG@M|6~y zbkvmc^`knn10f@2P0+?vnh?@nGW?t8ZC+X)Kg{hL_EdS|i@Z(Oarqhkd_JM3s`6%D znw=(pH0MU~&!PLd$OBHSP&E3I#LV;7SxBA=A?cS8QV@f-fn$BSNZk=VG>jz*tij?z z5(UiWl^wR_9g7p(PwJ)0^JdSVnI`wwvvEsf#+;9qQ19Xi5WEQ}CxspSV@*_<U0!3C zxK{9{?H%J2Qn4{jXf@`Jj!S4u9K&Pk$@MIsSkaX;dfHIy%r+|~>7yE~s~h~o<HA>S zXjx`C<7Q47Zi%MJm*;yJJ>2ovrxaa@3v)(GDXy%+u^p|<?N~h*<{UTr*Wp9JNKqCH zMHb&uhZ)P9Klohs^bxkKj$l>9fayW=!qcX`G}ryz+m4+WI@5b?_A6Z3;hWSTvV6)6 zz!F{~UVX&zgAmh}A@<)rZegX&KzoTZ+mA|rSgz4au+h4Gwf0C3o+RP)Z1zx!O4+YS zU#-nojgqFnDo5ayiDLt8cwPewDv3E=8P3nshp^Fuh;GcEes0V(rbK>{GUYtGcA0VG zGQXSG{c>+^%EA8kBt2`_Ym&lPdzi+UoMqIPF&o&YP5B0Olz$HH*Gtmda2Zpi-OA-S zBkf%=wfYl_@TLuJ&CLIyAV-p?NA#NIl5{;gxE%?EB-yw4w{ysLq=Fy`R!gkbq^$}Z zY`or#52I47w=gQdop+dls3+ODCPqvjIrT@4)luV$`k9M9Pl;3#t&zSjJyY8#ftxXt z#dVtu&G@9d$E!NZoC8L6%KotQ7qstvLp*@l?;CgTkFd;Ex4RGA^S==TBkl+m;ThlV zFL^tY3JeqCqQ=$SAP#TSycktqMw%{6jS#ua&-RRqY<6_VC7j72?v{Jvx>uI&xW?5e z1rLE?LLYD<%M%y9>UVdtgt!tAmLg?JA5W43#rKGi4!@0V@d=-)V;2`j9_MhEA9g$I z7pvMbQz%8(P{P<So2QWByp~Y#t}P)&4sLI6!j(0psBhTFjw!%GFyiXKc5GIPH*pU3 zlYLue+pnQCl5n`$HeAyv6i6)2+piMx5>h<HaAuWaiHNMvadCxUM4?NcEZ2l#>qhis z>d05^uaScLz~@{Ti`5h=<)E5-P0Qu5`9YK9qhzG?hLO^19B0c8!?y9PE|m1dpsoz< z=jmhEMj{_6!+k!Fd%>78<^7bYXN+qcaT^?dE86`|T}2u8`rKW5lV-DaoYnG<OU~jx z$f{ao{b-NGzk;hN6O6bMR>IX}<xdbw9^(}UmI~`f`{<%W67GYtZgZTz%&xcYs3G*Y zu(C~I%!kH#rXvRbC^e}L(5YA>w)3bF?NQp8+7TzRQ6siA2zA1VIuRz;iLjn^!apqf zCJOo6#kio+iT%%X<Fy`jLrv<&5E~XHF#~!1WB?xNVHenps4Y^Ay-{UKZV7@%{|jMw z)SLYyPs%||QLj1c`<ojNr%X`^jSVTs+zVQEIjf+lxEDypf%)FL^D(%4ryS(CWm;Uo z`N?wP(e1}?xo7-L%5}AyZ-ARGU#KH@`4ADZ<?U}IZ+}V636sxRuL&HDJ$NXS<Hp<= z_ZA&fb6KcV_$c#;f!LV4Rg1`PF1}9|Qb)Su5Gst&HkjYIUzYo2zE75znqGo$w=999 zg%<k6YW^Ns?p8fPmSu=Tkunt<e!6A2AyhfH0{rH9>L1zHiMP9kXc_%D12zT4ge#f8 zYd@qh8A3WGlv%+YuQBS!jrl`&!bbQ`)L=O(=|qCCi#`;qBZM|n0vhf|8E7;nvAFIh z%z0u6<uVFuCvZ2KlHwmb%voia_KPO-e3nw)KAg4hWAXK?Tqwhr{ZrnY$%M^o__R#C z+8JkHPpqd(Cm*hp8+L3HrXNY%Tzt~A^ea-OYnVCWaK`w<(Mp8nY9?V}yF-h2tGZHw zXFHV^g`<go*83GT+6T6QHGWBgt&=7iI!7rcDNo2GrNa+b4?o<ZXjM8Se;?&NNsZKv zwUKMQ!06b>@08TZ@f`z$76#h!HvbAPh@a$LsdT-?@6^?5%O$SYw$<vM#nO@E#cf-? z>lBrWk_^{2zBt3L;^9iKIxmA@zVuKX_8uEnZ>#fmZGmI{ChRAsF$qze@!ouhTB$6_ zFxcQ~*i2k2Fi=)nHjz*k2Vwc1tZ`Dd$_jAihS=^Ls#M|$vXGJtwpo*7(%nAf3|eh@ zh4|h`d>^jE%T<uI)&&2<sp|GaSvqN{xhZ{x24B#){22oaB(WsJvO!?a2`SxJVf|2J z`r%Mj?0RGc_Kp{sm6js7G6DIQ;QnR>cIL*PJ;Vf5&0i0{m9mnILuN|>&pg2NvY%aF zC##fQj6W6PT1ry*20UUbLVP}+O8K#PEP|_)3;gT4`Q?>z@S9v2g#UGs-*31o$Mho( z>OMe4r%@pp73TUwg6D{kG!qx5F+9J`^x2_0Z)5ao-1(n>*e$ASEuU&aI?a0y<%EO; zHetMN9IGMv#Z)IILi|ossUb<B8r?q*nV+gK4qK0<KPb|&hWDG_8=5iCsYnmkWb8O( zd~rQC6;g>EOu3{a1KLa_D$OD~swkJ#dE?f9D0H8^Oy_o9M4YW|XDysxCC-PX*vT!0 zZWj{QzY*6>cvV2^cm>8Sm&$ZB3EGkjSIa8mVSKN0U7fe%WtbCJGDK|GN<RN|NN9yQ zq{0ZXZHFMUP#|6+^pO?j5f#R9nv9o;z~LeJUxox$n1@wh|DEZ@L&oU!siyoBA^Hll zzQQ<06Q6O&n7AIH${dUNN!}>MO2c9vD%{Q*=5MRE9KuXMogC$tcBEp84Ed-uq{1Ec z>D#KGI%G-Vw|bN7?kQXEiqc*cC~>+c59Nkb&p+fGzFv{Who~yda}IH<H4!1E#6uyn z3hR{h(OdaZib-B*6C{!>ovuj7k}3uvq~sGft@@=>!yA0F_M~K|Zf^)40+bupxvi$X z@r28g&+jzv%@91n6$hGj+V&PUn@+};>uN(>f8X|tcc;49cCxVCT$|Bm_Pt{6XUW~x zrt`g`>xXyS)Rn#K`n2?JC8r{=<<3yTXX*N4*PWZeFE6oDRp-^BYV|@5zsKd$tQNWz z>qE$`l5M0JvAlH;!xq%q7Pz7zajn0{#qYL^JHWQeNn+fwy2UcQC4}QDxQ83z$XdXO z=Uy#u-s9pII}N9?>lHB+RVqDHEj^^G+PU+5aQ)uPWoAu{SsN%->pGi5_-4IXgSW>1 zFizJxAx=jwuh(fpb=sau+_JAl=9Ut*ruqEI%RL?QW9xrtKIUpRB{n9Td*cvpq*;?` z?h~nFDitR$Kg%?q=Voi_lrt3AGILKN(K#iuJwx(~m88~}9&fHb-khS8mmY1d{@c!- z)q6|JwY8EK@2YRvd%VATj|#RNE|=8SoA)<oG&FzYEjQOUXFR_X7vcN8BuT4pB<oaZ z^|htt)mZHH?iq|@CI5<dYIS*O+W8j6&dXSKSG0PkKeN94eC_45^Nv+e3L>_wxF@pw zL5uum*GkH@_lM?MMnXgTo@~~%D9X&*?(oWVni`$fvD{riUbrVXzfI~ze&n!A^hZ?T zhGtt4RJOC^@+)4&r5EdS&p)gB(MxV#*PQWYGujZMidHqL4X#Xgjy=cc-*&60RgEvd z)blGY=f|3D%^B9_b&3lTbNj*KdQ3MJ{7r-DCU;S6mF8;GB(BB$mhl(r%`Y}*ENlKz zDmO1}&d~21g-(t%^#@3U-YQ20_Z#j%t=_z(Ib%t4j9hMB+?+9B=M2SD%Irm`;N|s+ z;|G!oM#So=Sy!rCyoL9qbxWRy*RbFo2fvlQ%5<{Y`1^xFi%3X@q<grxY$`VqUgVAA zulKn4-By+96tx-mhvRzMEzT47a3dTv20}Q7`S-ZswbL@4s<!a{a4b)_<(YFY_a@(R zo157&`yQ9X+kNj=|C!LG#5Sn8aA5O^nUrlnb75ooDAgpdp8AgGw+ymrn+r9~CuUQ& zKFx)7<ug=Id0jZa<&g`eHg$8Mck_wAQZ}#V!jH;xt4m6^L}y`KDR0h@HJ_MEnWfDc z)#Yj0mn6;ACre4A<Qgxul4L+b+8I{_Pm)xrs8c%rvaS9`)3M*19N_{BX&;FXv27g3 zlOV|WhWN9Lb^9YBj@ed!vFVtr$uNc|4X3+>#BniQQF-b2O~Lim=bHkh^3ron)o+v& z|Mjg+$Ido2UhgvJmFJYE)fd;BPc>znY}%-jo4;wwc&(fiXY*H08DBMJC-Bs$-jn)} zBnx9pGiBxu8ed?!cQtW)G=>5E32zzc-DMW9ZRnY#l`;o~zR1wF6~ivH!VbQxPH8#6 zwN_$LZmW}`k5XE?y6R}huOJx|7;TZ+R9U6mB6s_jJ36}RWQMbD|4PRlFk4!Qf2rF) zZMofru1)E<1folV5THCoiOwbEi*<g74V7fPCYZeq)!UmYWd<4!iTh;L_9jFlK?e%! zVbVj;kTri_r4j=P7vBYHEE_)+@9s6lMQP%Tn=pdq#;ivtYx%wFS&}xT>q^&FZ(NN= z!3j4m>nv?sF+S*k*ZkW;cz3!OpJLs6htb4Q_VFwk!$Gp|z~#CHF2CDqG6paZbK-b4 z&b&$pC$=(>u~(6qHnfreZwRt@)nR;PI70~631PT*vBdmblkK^tkbv@n?Dd6b57a3! zC&v!aR4UmZ)^ZB05EVle!~s#)De?!|lA8*@I#4IGrs0h`jHetwbQ#C8b!4z0b-AEO zJj`Kf+FCuU$pD*-kS+h}62=&`>wBVTsq4$F)sHn9zDLsWRqY-(>Kw-rnd4{3g>kM7 zMAuI+zc=1JOw>7!66Z@G`BgBLa+LFnFf&YkET;V^CLnQ&+O3;ITEiD$b^QqEW^LkW zFY}lt+nA=p9S1_b-{H(&kMz~axha}TIUd8Zd`?p6>O!8$5s~9xNFv6Jw&141&F(bD zku+LPk~BUg<e1|dqya-r!``jcY?JGRJB>=iiLM#MopyXp(kOEr+*&=L$@LXUqk`lv zJ{^#~2S|KpyD(c8zP?x&?G#5u_;$kK7+pV{;XA+TK&7I^>)c10b0;-qU=&>H3gAzy zRFaXA@Bw29-$rUB8LE(4PByzaZg&x9%k8Z>w&KE_y7E%ux;F%M`DPdC+g&%eHtSA? zI7V+H45T3tyrbS<G~dc_T<>ZwZIwFI+X#~-R0#iq`DO;$sw{Lp7^u070$H#ka1yQI z_bxITb6pXlB_Vo-ZjQ@Bh?dJjw1!b)wB@Dli0h;zTElN$LQ@4P3^E~V$M9`8GcK6d z^%$*@cm(FIE+RUS%FmngjMcC})=jN=r2gZ^V;?sXrC9EC(-ZTQMCSSr8;^b1h)T0l z=kbwvNnT!BC$%4DTcw7ZU0W8D@fV5#8Gzlm>woxIo1?L?tntJg%C^0+Fe$b{=Z&$R zwVbUJwBTwJc!ky#Ng-+=0ym-}mg&4(r7b8Io>VxlZ6!&zT<#8j%RV9lh?wLJ*13M` zcJNy)%SH%h+A}uugaM_JFbu!kWu5QSJ#=*Z)J;yjq}^$P6hXRRlQ3!)OAC?C^)mt? zz3YX$?6-S+h8c#R+^()4?z-;NTrk-dG!`Z|=KsZJZY(r6>iX<Be{8?rOcy+)xuC;o zr7(?q6ln})b4{UUx#I_SYTLTD%y$cj@y7YCBYC#?#=`i<Y)ppQ9&arCOJkdk4*7Jy z(B-2%6%5gwo2r?lGPHDIhL{xW8QxD}3tt^=IMQ8W9G`Ek=NgYqY;+y&5>zj3QPk0` zN|HFop)S%b5uX@y)ac}nX170dZfN@JLmQ7h)Y$k}in?Dbj&I!pf76}pEwQML&|531 z;huuy=Z&$0I8yWEit8J}tK-YNT$}oN^l3TXO-&r{`>Z!IHrX!G>*&M;pMT5VFNJ^% z|GewPTWgay7Rnm)qixd0LTTgqs&{oS>=#5RNY<QNt|8?CgTITqTvJ-S<)7{VKJVHR z+bzK1t|KeWR}W@fJ&4(U+vS6Wmk&Oxdd2I4q%diJkWToBDosbzC}lB>T){eacL|jc z=b7r{twI}P`A`suL`7<!<AbgB=MEnG?x3rti+J}Ge?kA%Xbj6spHdV3;<T8fsyo{( z2e;NAKX~leLCgC>45U6Qa4-Nh1$C-tRdF?JZN*^T@o86(j`6pTSRdS7aia_QQ9Z{H zSi>w|X3dfmzVE~a`O?O%*m6=(tixge)}hJC%^=KP3iDI89nQi}w;Ibe_LHX4-3N_( zHO33e*b0rcL2~pgOSVG&q^+u5#^z|wwX)XlB~=qyd-F1wonb7CTXUODxVX?>$y$RX zpjgR%8n%GUjbi?39epAa7h74gi~(2j!>u<tb&x<mG86aaka?{|Qe1ap%%-UmFGyBh zF@_o&rPRbL`M-};8Gq;UhN$%rl2Iu-#C7iXzQP%oGMq=x@?Rg@u*1JUR&S^p6;+0( z%JB}_4u6Gxgp;JJsrZ60PdQ2^#3z^`&sOO=?Dc5zO8k0IOawWLR&|y0`&LrrOrrcb za=$6VvCcwbUQ=3dge8WuQmgTraZ8&u?yB)f16886bJyZVW^vQmzz==%qSRZ~j#dYL zsA@RUl^2CFOtpBiQBLE~Hsk09O0Tusug1;HvX`-Q_W9&hsE4c_?>%RqGIW1eUPUxT zO`@qITIUcpuENPkvrW{I(aZoYr=jX5cjR+xiPOqmvpTObK8hjKNNH7=lZca3N=dnb zbA@mdMV4}GTp@S14J)DG=6-FUTD5Tn*PM@J9X%zcU|gMFUaR_{wUc^{tMhLAqARae zK^9%8Uua{iliS+HwUUHk|D1DF7IxeP?)AwlQBPVM;T^bFdAy}7uLQETN~uS*Y>5*W zd~v7RxDpbLJ?@$_I4kZcHgI>pyxHngYsWBwyS<7Ib>+=&B;jxE#m;tehBj`hs0-(; zySf<a)&;K65_B<xrh>Il1ddSqUH5gL+F@in71R9`aTGP@gI<2uF|Qn~DDfL5&3=?J zUgLgVA5){mUALp8jWUYUJLBd#8K1!M*r!)X8xK0MnKDtcQ*p=-s+~-YR2x5bB2>;= zNZ$Fuvr=<eSPPtman@^ug3QNxq4vT8p0&Q$7I*Hd^+-ee(Q8zN_S}}NqZKUSi7F-k zkC$%T=QqDXJ#x<YUK{s$Bj@K=xb@jW7gRW{o7${-M4z}3>s)zOdkMQ^uh0Avb<ms$ z?;U%U*v&bg=yM%SjU=^@%PPZKON)vt%UT;DUt2O@M_oTI)~VLV&2=&XF-Q*MJm}1Z zHfMN$63xwUI!m0)pqNP##vA@n7;r$1l!U!P!7vtbkFpVd(-pWdgQg}aMqw){%9;CO z7m_7^{{Ga!pBng61Al7ZPYwL3fj>3yrw0Diz@HlUQv-i$;7<+wsewN=@PCO0V$IJ* zTass(GfnB4Gt4i=E_*I^*%H&Tl$n<F#}_R9%kwWrSr*J(_S}r;pPRMJGRLxTR_e0o z%(R*2rJ{Zw1jcSxYCd2EU?X5R;48rI04?U%jDWuY2rr(E6EHa+K<pme)7+ExzsgVc z=l-X#JmGrqKeo%cul|38Et}<>*A_Xq4B)@j9rqgGoNaP$@89Lzmw=w~1l#Z0r;6qe zf%gNx1N1JHbNvCI1Lh*kX=QRQ=D$eKBE<g{fCKMs5lDRB5Lt*D%)Jn<N0vb_j|C9A zC;n;hN9;#IZx`M6BK|ngZvgLx3@`7$HThM*YQS2+>wq@_>j4`9n*o0ZYzOQB>;ilM z_yo`ZApFgM7Qk`9DZuxDp8!_@odC&!Ta)DgFF-GV7SInc5WoTg0S^Nr0Fi*{fCRu3 zfQ5jU0ILA60{&Oy-v~dO01I)C$^9^E!L7;I<|_Vz$j@WBi*q#h{$$-hk!})xl0W#l z86t%r{Rcnd&Y}+dpZ+t=oHBj-f04-l&b`mUf6u%7^OD&4dwvu}mJ5c!@5LW)O&$i^ z{)U{RBobOe(^3MoR4VgeVwTEe^84)`I&qW9<%<8#{eFIrKjK%eP$>W3`v333zdt@t zyd-XgQmNv-loaoSYb~j3fa?@5l~MdHUzo|x@5_KIZd&KPG@?ra|4)A&{~k<^D%}qr zw?D%FUA%wf$3we69%8@W&13iA{}i9c-4n+BVPk2Jx*t3|9=gZw!6eN4e}v|7_u&8J zpSb@~7@jcyC@kW~6W;yU6W{&#em;+V;S`E{6p#j(E5cL2HGtOvZv#pJl_IoHr?@-Q zD6TiK4lo)J19$@P9KZ_L0N4Te2yhtC3iv9P;`#%E0HXkp0Hy$D0_FnJ0ILA&0CqqX zU_W4qSBBS%UN3uDy<YRm^Lo>3gI9^yHm~ho<z7&NOvPw?{00U*s2>^_Jo2I5-YTU6 zi@bJ<l^CfiDlTSnc<4x~ZJB-7@d01`v*`8BpDn3+lahRYebS5bK6rIN!`y#f|Lr&E z|I_PBmW;2Kde0v?(E2*bkj1qnX=nRKzxw41i%*f9kStJy7M_m#d3Htu_WzRK$n^;o zOPsT!S8LsN>Vq46N83xk+g}jvROv3;6HPx`4IVp1AF^ssR?X<PQ}Q>4-g*ZIYrB8U zj-;XAblYGE*fMNyPdhd2)c5z;sVU3vwNttG*(J-<Q<LV-h?yKRd`LjQ-sC(+&!2=0 z<nI0?)a1Jsp=5sB!%hn0`*-a^xsB+y3s$<&V;8Ix^_FNCt(3pp?y(A&vI-Ho>2yDW zJ+3g3LGN8FmWA)N%C_F)N=Y8?$qc_glJI)|RBEOVEm6q5y?XbelrpK6s`5(uZEvTh z@8AEGwy*N0GrYm_xMD-cz_W|}pZZIAR{Ad&e$M=$-+q4Ao|q`fdxk@|-!Ki*eg0*y z=emZ?JssMI-MMv5v3$$N`uqhy9z6d-<NHIOSi30j#+<8fSAX>6>tD}$>AQ;Sk8HoJ zJ$&t0|CiUV{-iG9fuH_y<ir?NbKZw-EuWn_8aHq9jO5YY({gqvKK9Tv+m26~DD}Cs zF@9NWVaAY8UmX7Qt*>UQ&x{N4Tl&rN9X}|)edpom-_27~zGuoN1iUstHaOV+X3hMQ z@BZ!Abu%9=-BjOu<#fkL+kvLBBVL{IR@jv#sn534L0`0PzVz3URleE(bVb&3D@KjK zxbVTEf>$D*KbLEijA~o|>C}GzSRq~ePHp%<C#zDtHvBZK{F%A|qy0brEb|68X4;nc zhbPSb-ud^FU;e(Xn&0urne64?ysN!)bzf28!qu0<emgyKH(oC}R`PlNn!&!djTwiZ z-v0WWiCG5{o(#BPmwotJ>~)`6d%j}^y>a$jL<hTh=wEggZ`*Yx>FAP6x0_B;Up@HT zluv%1ncKDUsp*G88*Xj7`K;f!^WKiS*z!Yk<eT30NA_B(jyJydfGIinq25d5==u8% zFXs(^qFvD|=K1ukf75)?H}LDn9zXGtF?H;+SN`>jb#cMCvcJAqaq!hi?>k%r&7Ct= zeWd=i@=^V@A72=vYnGp1)cV2Pv;~QMN<-f2uN)tQ@`OveLJ!@VOr!1isqxliDfYrt z1It7#??X|wuq)7Lo(G>&fjfs_SBrK=gZ&?{_Y%X=pprcWJ}vy80KFgDsx!cTBJPjI z`Ec{C$pb_@P>gqwi2X%+fQSc+_yIA#2Sv<^SSPycMJy39jkc)`@k&LzOyrlNikt?W zq^AyYC`ES__-7x+SYO26B36r-fqX~WkWSIwTf}`t{~8f%MS5Q`9v}D%hd%n_Vw@y| zKR~2EDDtx+)`@hzh=+)HsOWBh-v5elhKV>3`s82_5^*r}uYi5Hh({nFE+U;H#dMDn z!+A)=4~yX&MfVWV9xCE65syarml4hwk#DSs#{m=lg^PR<NZ)nvjTh|`ME8j(A5_z= z$&<wL@rbCO$s*=NY!Y##h?AF^pGjW2@EOv2_0{lMo!<Oa?8lk%6Z_e!>jlQD-sS5C z5I60#mmVlxe(Qy=TZTUKi&nE>#p!1Ltq}u}`g_|-V(<Cu5XanI_l&)Hp73}`_q(P1 z;I;U*f24ez`TKJd$6tHg@oGZv`21A)=3S>&KRB@E+!MtQ=S3Dqjm!Aw9p`Sxx4SPs z(U2H%S$lcjJ6V&9zW!^#uHp*iNy!td`+oXb$k6?-Fte9F^=W2T^;zo<#hJ}ZFK@1| zPuu*j?3hn~YusAj=SV3t^!bq&M^&s@8hd7E)sv@lZoQZg|48w(jUnaDfzqm`SLc29 zyZT&XOyQ2N;};xOqyz{1zUKW=V7Sizp^j%q&hY6KK6BO!-j<KO7r*$>p$6M)BQuLi zFML+^=%PX8>90T9uswcB)4&Tw$A&6OPP{gz_tkX!VvS$@I|Efq#y#-Z@@av)KdHjQ zG64~>6(|4l_~9*2{QmqyslR5ux%Bx3jupNun%Ai4ru^Idrv*PPiF@b9_FJD`S&`9r zRdSnpn_5UcN`+$11>^AhzFCNF2V~xw{M5QTlO^c7SeQ{<C^_D~Zl59HBzSzYBTB;2 zz_n8)oD_Ifw1krrJFo(niji<i;3!}fa6YgX@JV2AV0M~>(*Q37jsX4&csy{xbP1;g zP69Rpe*zo=OvOsLP~a%wF~9}DV}Y4RCEPgR4&ZR$HIGTS34{(g)xhPzeSt^*MZ%eY zlfZ}2{<r;zUI_eu^&@5c{_s8Jo?v82_m9~BXL#!dO>B9$wq$O}N8C>@C-JdylQqY` z|KQNl@TU)M|LXem$*&*J?RWHzfTcr?zr5Knb-{~I_Dh)m*{0A1&;B&rGJT8n%nw_~ z^qwY>9{INO>U-M4tH14a+`719^~k@D{B+}$<I*a&yeQ;vX4jdQBLDgNmx-^uaF)o0 z->VSRO7OM#&&H*4dp`f-uOZLO3HxG%-?l!hVt@Majm@tP>S~Mp{_(dPice0BD7|VA z`)QQz73uOT+&c?gKYVgCCUWHYE64gjBO#q1KBv({3c7z8?Hdi#J6R};PylJaWx#7e zC;iAeV6qo&ANmEQh{^qD>p>^_+YXH8liCTaMmQU6DC6LJA9fP%fz>G6u#<LMC1M8n z6WB?!N%|==xA`gfeIV4+pbrx1WWJNMzjH))Ac3FAz6W$PzmyXg%`VjhjBdl--vPJ4 zPUIr~iM%9!a+Wd&cDx2geGS|f_$)B_n*JV`3{5Wp`vK2^9>|wC!K4xX4RkWJRU(`K zU?L|OS`$p>L5ch<@D*Sk@O5B4Fa`G^K;FP3fwjP+fCGTZT?It14+9T@Jp`D<hr9Qv z5ZJ?j#{rKP>0?AZ7I*^a;lN42WQb1UCqrq%KM|P7F$s7w?2iKzJ;wn@!5)u%*<zJ& zc=}b~n+Z(9n*~gMvjHc;FQG<J&R2<^<EiwQiJp~I0I(dmc_qnTH8m0L3Q9&5!>*zp zqS9B~nmm~rO!+Q{|Bf6*9FYfc(H+xr4!kPih#b-m6;0$NW_gFZ7LxIjqC@313;cwx z?3kASn8>d}ICI5tygG6Oza&iWj%jNy{LLMvMhxdk@Togg5)uXhZ4Yx_k!JyTjG_!@ z!4uM<QhWzY%1S8ABoBz+F&!#-nkdiM4waPTJ)w{5A%A!eb3~6Y$BSV;3qPg~l`2^b zlk1RD8K4n8M|MbsFo}6ehjefi;wR<_J>u%!F?IDCq>;!L)gc%7iCMzZs^h>!9-0iW z@FQhhDw@f-NzT&UX;H9rpO--+{7R9B=v>9p>}w+3tB2W}rMq>gW@+V7_#=K9mZph6 zV(!J#1M}dQ#NAsAlhFJ02w&5Ku0=ScoDrVBJ<L9=Pwx|`2P7O{mX>c4dHS(FLS7fc z?kAcFPk+cc6Z#}$*#TnsB)tP!pMb5vgl7=z)7K6&(UrgGmzV>3@DJ{h#s^qhO2+;~ zwg*KX!q1Ab5wni<>DIrV^--)q{DeM4<R@*xP?naFI!VHLSfrc57s%3q4v`+zBkjQ= z58)p!nu&f#h&)7JBYT)f^^o}?<b|gm8AQJ%?Za4_b07?2mJA@Rqx*Y=9w6(^Q>jQN z@ydG8<-S@WOj4F4zH-4#(nX7Al3uB3COit!{65S|Uw8T31GB0JkAyVz_<c;m5zX(A za743ERz)-E7raC>NxMwrmbnIUsx|JkkbIIbRCoC&T^jk3w5S-j{6x-Cj8@1mB4-Fg zb*DXyp_Fx?5&kg@_rTRx+-=CqqF<8URg6~1M-tA09&yQ;D6iU8ZhpMCAjC`Z%bU5Y z+g^-JN!ni$j+Tk~eJJ<|PhXKv!t`NeH;)1n8GOZX{t0_O(M)*!7+H7z_U}O-(1Sj( zhYWblr#p@QBAv((z{tAG<lr9k2YS#S>=6#zBb*^3eLun(%E+V#fQifokxt|s)<d2^ z=5Cn@V&vUA3}%GS72&&hIHT;A^PwK`KHMYTu|2{W*CU+p9{draxdAebXQDc*UUuip zWJcyq`Y$49WDou+J;IObL7&=#9^Hc;(}O;(2Yq@Edb~()f(!|a>~gcHpP8ckq=3xs z;Wx2|-#H>Z0qw)w9z64U@XYT)f1(HdX~tdGNcc&NLMU&fzNCuuFJN9G`X%+{S>%zY z-Cio{pV*i6Fu%ye@GNvl=*z|Y`U-wmFiNjez$C9<>LJg{9`d{*(jP-w{wA6U|EoR9 zhP4OX)`Kop$-O@o+kctLU4BTqlq$LJ34}q+ULu{;WwpwkUP5O?Iw|M9RCmi;Z<V`l z5*hla?$#rXO5X2=7^YSw7y4zwBf%QdIfOyNq-Acur2Jsb#_KHT#EjKN;w-c?a+$1` zOXOF{WI{hn^zS9RE1P!@vs$L`n+4qv9$bIb&EHF==>H37gx<Rcy$_bONIyd2)5`AZ z#7A~F-~08T_m{cr6yYBzlX+hi{SN9OTR;!L5BBiOissw!6C{&sdC_mMOwmsXnMs&< z(oiU4#5_W#@FL?=BJ;=|GLPzEen_V9CSy^;^KcKkQKlFcFX|zz2Ys{{KH;AvlTXly z@jfC`Odchgr^*!3kBWYg8D8^6I@cqOCYe(GH0VzNB4tW_3h-Iv?-ZH4{UP#4$&}2C zqF;ZRyT2fGh0NVw5cA+3bSg<k-BfZkzQ1_>L5k|imvGK?_|ADl!W{*46iB$mZ@Mut ze;}IGFcbS+Kzrf8!}Fk>7a>=~ABdRnOW%@kkFS?-Qvn2f?8K~sTP*Of%@Xcmz*xX! zKs4ZSKqBC2Kq}xlz;eLf03>a-S+^!%*l-8=Dxu!Ha(gnSKZW14Z1kUR5jxQo#*~<7 z#L~FnCin5}Hz@e-ypce4I|=TBZtzd2A;LcurGjt45wlHA_*lDML35XSz)aD6=v|s4 zFr(b<t`@O}w-tPmJMIPIM(7U!#_x2S?cmYC-VZ?HN(X%bFoAS{C%l>9BjB+U?4gk` zRe;yvcO8J33G9cN@GXbGnjZ440Br^A1lmcMVz_O<B&<Qe_sjlA_9y=vKI4Dk{v&kP zGfX1qSD-yF%HT;S3FH2B6MtWWpUCRrBbe|lyh3vyUjBEueSzkNT)az{{Cd|+_^V(K z`i189{S4g$-u=n#9{vYmkvMw7OW+~!NAdm<t+k!zUI$eEhBP4F8kq0rTYH~;M$!HO zWc2V_dzd}6|AaHe^myElT)G?18t5gVhi(W@aS!*2J<Okod`i$LiIn_NYkt2ynSAGy zxsHNNnj;lx))tzB6IFGD=1A2#aG2&W<xZt8r8x!gRbVA>z%rU6a~w;7$&gs{BF*&z zz5q;y)W+pBnTn<cz<)nrW(CcWxen?jnj>=^1>eyend?|{j^+jezte>B3!L6ab7byg z=}MX-b00qglev#IFQfheHy@-qG>g<H3uul7wl1VOG6$ksg}2Utp9Ci9iHmcm=M!L( zo((8RBt1vt-RX&%?@muGFiFqSCs6l*eGkx_7x3r?n)3#pSnp1!z0RFZuGXE-$3CLD z-f*wlLvy4}OM23s?pc3zr+esmn(GU?@hr{x0Izx4o$lr&ce>A+-Ranp>`uo`U>*2o zAzdULIlx1Jr&(xjDDWy^18_U=FyQn>G#3cWBK{!YX}f7I7`PyX=7s}DrPAC8U}M_< zXzx4VnrODZHxPOe6cG!$s6mioC?X<Y=pdm82#R6|DG*2_2~AP4VDDXd>|Gxf3pPaT ziVa0j5fOXG-cfnaY!V0x>V2R4{qFaD*IE8Mvoq(MnVoW`vQeYif^C$nMzaGu3T%6@ z{|37kdQMTJQNcb3wgcD`_-Zsqu#fLnqoFmSYrE8F&S0Mg|K4Eh3)E;XVAH|w1NMBd z(b`b9P>qJxhVFsw2DYnMjfU2U)`IPh{CBF+&>9h*sz&n!d-i=b8Yq8EyhDvf1N-IQ zYBVpf1Gj*F0edaf6JyK;L+eFKBO+O;A@>Hguc$~B##p%xjOoByP!_hA@V|vck}wN( zS{pz(fDL%pO`Rs~s!r<+7yyU`KdeV@%mzbmE;l{98etk3Ned%EyMVhsrfz_#Ym!J> zB$7T!-2mE+nwGjg*+9cmvyYZ7d<zJAFH-&Zns$ylp_d+>pE~Dc#qr}b3$xHc6W`vL z+IGXUxi#}5sb*)Ki&vi-k~r&tf#90ms3_f-MdH3?Bc613%B@{$ej9o(3~DF*_#%9E zAJ>K(JZfV!EJvQIpS&YRK}(l8^1MPhgmOontgWkO*a|~@C`V9ksFMjVv(WJqW-Kf` z7xe{1YviVSY?61kP*_QpWZE@AD*$}KgK+Ow*vKDYdiSPiZB3>Pvm(=a0ki=f0KR~e zJ;^i~AP~?M;0%ZZ1i6!GJ3Qpj278jiovGrl3`e#x_@g{<pZ2N$$AxwMb1+@(X*8L3 zAFw)xOuGfP`d~8cz%Vi`Cyq?Jt*~2zy8{6EDecz~#{c-4SPNb%Ak+2$zDdb6Cn1@J zi{<g4xR62nDf(dVhq;2;-|%kWKB91=N{Hqy$RFvllL~(W<gai;nGj=lM5F3f<wbf1 ztw$glRktd=s#_E2(ViuuZ%Gc)sTUy)*EWy|{fgY=O^`?6kLG6Ir$<#jN&{LyqHdO_ z2f6<OcUSO7a}uzyf7Ok2{!K{3_q=_J$h2TUe}EsLCm<1ESWc$d0J;NA6m|!&y8yDT zl4;kkK)nKcg2IjD=FIrif7s$WSQ{omeGeqnVS(BR#5fUNydDvO!BKNMj9m8s8_}zP zfp+&nzUe`IS+5+P%7ebU%g3G2M|}QF>__Os><yI(GPh>K+Q(A)IQLikF2CBh`PIIU zx`AfJFo*Sn9?WrNEH27_K441exXTM|KCiyIb>Ta^F+tPY22MB~eGZGHoYD~Bk3Ps# z_<zsc;fe-JI3V&J`=rAqm%@vd84Rtzp1*S!|GQFH`;lV2Zh20bwa@5p$5x02ueb1B ztRu$TQl5O+FUmbLCU<k;vVwbAE3l#y9rt-J%l~)9`|pxdZ?^93i?ZPfHYWO|S6;<o zJ#NgHGm$X|4O9Lt=7zckZHk5lEksL$c1}lw=3xLZ)S!Jc)*$p;V<brH$qjT%O6PCe zG*wEZXnrs`sy?uVM?z{Bi-PurbT0|DS5oow^WUoKM@~|bG8BD(aeck|x%wCN{p-JU zdEM&KxBeey)pvr{%tWo(^>F<d_$8^(Xy3@k&tANK_p$Dqg5QSHrF|O%w7p0e*cDNi z8<Lv321%D>LTUx~)+FRcmj+zgBoj3gbXWN30!=G|0)CJ0Q~yr@t*5Y_3g`^52J{8^ z0tNxNfDFJSz#_m}Kmp(w;5y(b;2S{m8R!sz4WJ*u8xRd(0fd0D3QPt2FThT~alm!J z1HgL#qS2{sq(#r>@N5t8QTRuL%~7~fcpA8;0#*Qa14;ll0dD}>aGu&6U;(fM^aS(* z^Z}^B;*|+brNO8L4PVG!-afv5{sDnO1A^%xp<&?zBO;>)MaK*t63a|ru{qqtBwlg~ zUmz5TQzcSaT6#ui)(EPDqmy%Qmp-n2ZP0KOmIDlRI(2N_*0sNjL-%ey?Zg?Qv-l|q zoWL-Duc*k_xLXgOKmJnp`rWmfE0>NRJ9B>aqUB4bPaBuJar^pJyLTNZI(4|@Le-6m zvigs&-rv1f`($ta{zF^-UblMI<gpXy&0n^(2X1ZO&%L)}7c*m1b+UnOO!$!D!E`@w zQ4*6Ym5mxPW#*)u1#|QM+Oem2-`34*)_(f-;pP21PoEt*S$ewq`sH$-Ffl$&GBSH$ zG-Ghc03YA>o!c2{sOjljSoX5=aC34F4Wb1^3>r2xJvDPovVhI<>`U#_m11k7Nz!iB z!Q7<HwoNNH>?}A~xNy$m6;o$S7=N?!;?<)k&YgX5`_YTfU*EpL=G>KNExeazxS}>& zXYrGfoo3VvJ5K$`Yd!u|eA@}{6J0k|4d}n^Mu^LX3SWnnWj@^tPDOXyd3a#Y!ji#u z2QM(hx96#4JeaRB`o%K+tVc`r_+MvrPWe2!eZrfuMx3`3+XYr`aSOZow}=1Lb<SQF zS35<W*lQViG~Xij?0&1bbBB7}N>!ixFrB>M`51%09%t(2eGzn-S(j`!<u%JV=N;R0 z(zT#|n`=Vdw_XY8z4j8#an12TJ@y=nz;~P(YQ69LF#F=!B<Y<+nzH-LTa9|QM0>>3 z>E@zu(>f%58rO#TGS`IrVPoIm>)So))$9BCm9L_DU*1iLIk~HA_>luPLrxdj4ll(p z3nOowMV&xf7k)DSp;&vY^_&5#Qg%!~vh~u1+b>=@v^G+cI!1IYh?wvFL2@Ob?>w{d zBX`BFDZ2dEvHCYR?<REjamL9clLzcmvbDasQOWCq3#@W=7CgUS`tI)&Gb$ooB$mde zRL!gD@3{-2cl!_BJ7PooMXr--K74z)?CQZ&#{=&Vo|v>DlcvoyQ?u&kdak6la^~ah zp8}`wmgsJ>+5axKe8Aoj3zJhjgzGxFweI<~>c-jPy5&!^@&-@qSJ+|8dj6#Bd-M~- zy4tF{$Lo7_+EzR3>$CIct9x$MD@vLXv~1DnJ;I9NZ$sO7I@%BHEH+$Gf9OSZ&6m=S z#ctb&tjL@-dCsP>XLdYYrGLrpNa!ok?Hr?3*iq_ToE%P}`HK_d_m5vZuWrrtT^`3e zT^@6H_?sPSvs=IETISf>+aw|*AzJdJ;Ox4M3#Q}>--X?`tuQ!o$N5<Il_q1!Tv-6S zdz6N6)rQY|mrUBXi1Bdr2lG?zS1((>cA2A@ZyLi*PjBn*98Iqjlo)>M_4xFX$5W>6 z-?GVfFegwmvq#clv)kI^T-R8QIy<bY|I^NOpQc^QE8McQFl|6oY@cM)5wCPFcG%T( zuABYWR<-=<kn@|1rfq$+tYn5|wicf~%#Xg>eZ1|hPDk{+yzs1#E6uLS+kT+9a@NNc z?Sw9)2ZhRp&$Hj@dCBl)XAGNS+`3zyV|V|pF)o~9S>W^|%VM`*KEywBziRa34<E-G zX_MwTb?CY-+BRTsnkT#DFWQW%;)rdv*V$+5KczoXvzSITQd`o-GI4vlvv1L$0b7q9 z96a;V3gOd-pR-TDs~qp3i_d9oroJJ=o?8&*?svAx`|rx-;j>=Uai4s>CMzL(&xkZ- zt`OtoO>G@}6uQtaoTwRId-Y4w<l9R|Y<Y7aH$vZMQEKP-RVG#%yZX3Up1<i^TJtsf z+2h6WQ|byOn>AUpBqp?F@T=xqoT-}o+l9V3^=;U>it6M|clTvZeU&#!YM8Jfypz|O z-aWhTFm=@`t@nRkeIx4p)BOn>KP?qc)1EMPL5B_V_Sha>ciHpy-j_7(lJ*fcRc`Fi zT1L8{K6}c1EH`g&>-Ag9x*sck<#OwYS)k74ez86859fz{7&V%&yKek$vx##S+27sp z+Wm0BC2#AquHm|s9l4?xqh<83anlOa)-G9SG->-A%R5CEosS&rJHYBvhrxOe#|VY* zhGmE7pUl15`TnA}RynKYxUJc>(|5r6q0zjW%y|9B=8|4@o-?kHPpx=odT-Ngd~D$^ z$JHld>A_dCh9}+blw|Ox{|I}-hm+oSI=-Ny=c+aNuH$yh^G_)q5fxZHB*E^fyV&qk zmsuY)A1o_3Ik9C&*OmL{QpcYf8Jb)%cv#R~k7V0doimB?_g?cOWMRK?I+d0_1~<~l zZBkNBwA&dnv4ci<K<9n6+Lo<emUO*xWoj?x*<c%Xo__Dk6VE&7uAJ#!R21eat}>>d zI(ad$^R0P)o4!VP{k^p<qho&g(4z|%MW;=RjyUboK6#AIHQ{=LJeILhY@!LxJZnwd zjZq^;t`MK+4wv29(`|9gmOFpVoUv+7-`VjC+z<DdHm&->tcbdG<L*CTPaHhd=FkiO zCkI^OH|-reDrwgQyIxzJsLwY&G2Oa0PLIEGw!pExhxpCKZ_)YHLBXk&^o}m4>NGzb z>x%Ebu)rhjj8%@?>lMrD-uoBst9!LRtN!hK&)Ysv>+df;fAEpr#Zk{P#1owl3j(O^ zgUKG-qEGbQqB*Wdr;a||PIzGU68uQd(q%JSXXb>Nu3E3((X{Y<mo`tQlGeTt));kB zTl>uU5`C>Li!$@~L}&A6w@tk{qdcvudR_|uaD=GffpLOb-9>J(|BB(-Lx;y+8f6~C zjlU7eqUME^+r<VM=(YDfV0w+V=;XS;@hbMlPhWei3%&JVRdD{Q;xAj{3n|mO?U}pq z&dy#oTc<8|;m`Ck>NWno!ShLP;x;Yur6ny}#<iK<bL5lx56ySq3dhp!O|f)&?Ah-_ zZNHTKH`CKoKMV?Y{Cp?m%{Ru&gC`%=jymda*0XftmHM;eC+@3o&da(~TjX{lc4ghQ z=eP8EL%yCD<W$X!?{hMY?YK~TMDDbb(ZjY*l|Ic6&WJW3hut<h5$x(R(SMdrfcMmq z*f0<7k-_(9;|4{>`3zj%&zxdydBfr*w!${Re7Kc&NPCxe;ny5()ARc0rNs8LywX;E z&e?LUz}iK+^)I6hKd&@43Msm1GCyx#`)(5>%nhS^z1koA{9U|Y>&L5N{+BY`<_^c> z$%BI(H$BzUOnR}Wu*X%>`UjV<<*d6YTE@Pfe7@W9>Wg;{li#m8zw2py$><rLMJ2QA z_Z#gwxO>BvQTeOu+_trSP`CNq;e8uMR%fj_8Sj#pI_krUjYD_O?c$%du!E`N<gI#d zrpxT|#~!1m<}R5%HO_uU@Q@E%w4-QyO2Yjf%nW^97dF7AT0h{g!{>c0MvWV}Fy3cO zm_H`@IP^&RSG|cz155+>^QdHIce@ju$H95V!=q!{P7=2_qYAEd>g};YZ5%#abEu}d z-m{K3S`A!3ug`<R2&ewbj6EmkTy&dpaZz`-^U?U-r)}+`-j`cvS#COUp<mLGcIGzc zR$@<1uM6LLrF96u>}*P}n(XxFRY%UQx|@C_{^9nQ-JY1$-g$0bwC?5RmF&0Di9J3Y z&wKDy=j*;Hhi+xfNIdD5bFr#!LdCR$OA{83T3(p%IZuCU{h}R4`P(%OQn%FDIId4} zd9zx;-F@)-$h3XxaV`bBX&-i=A>cx)R)#Ip@cDs(I!oFg7ii6Tn=J0Vj`euW0`_vp z$yJ7H_ua_q{J7%Q<jS%|HuOC@McF$>YuW94ILEwrHrr^g`D;8sIWTqqo10#TCX6b- z-r?!JYQeyQ^0%jQFOQF2%x`meV+wo3r-ZN1N;p%)hLKDv`I;=2N2|~8476vQ#)bWc z8}aD(yy7b)sfnvE-BWiDC?^Mh%{3@XDbQW_d1FCu{^Fh9S4s-2XrB)LeV2dDF>P3l zU#Y>B8$&!UZTXv8Y3YXD9GElk>S<Hv#o~guyDhpM-xa-N!GY3N>x%X*-=}7!Jz0aX zvr_+L_s4oWCS{9y8Pk&nZ!u>c@v!6WneBBWT{E?cbPz9F+|#Jy#gyC~sa*>8Xs)|g zyuzt`-=ozfTA9wDuvRlS>MS%{Y<RoSAbE_Phd_G~pFM{(jP>B{z?75(Cco1)DknD- zOL$$oK$Aam9jW7yx7y=kj<<SuvNE3&{&;WeC;JXf%bvXdOO1JTLXh3{wr{d8Pv_9f z>jpD-hFlm};3k9LBfUc{EcaShGvMliYaW8*m)6$3y>dDEG0*2qrO?@ba^lvD`{J)l z?a03O&DEV4bluG**#_0_sT$#%z0`Ub8R;FGi0hY73X)=W<%)2fa_;^W_m~$9KiwR@ zxTMm$>*9;~yEk4v)y`wrkg*24?fVTY+Pjs1;4nUZU+tb<#Y^??>``A@wnNr8pyJ8) zjIw2IEvv}mO>anB>#^=m=*OP#nJh5a7@Isouhj6~vU;6)J+@)GJC<vW@}1Y}W!W0- zNlC9soxdH`<i*7#d^nrP$w_tLw|}UaB24dC{_U2{<tecvt{a^jP@O2M+5hR&i$gPg z4()AMF*85@(V8n)M$fyn>iE%Xt`V<m!d@j7UP_EPxV~DmpntH-&cN$72G{5vb+^AC zpzabsg6wtdMSRVmn#7GSW(pm$4)Oe_?_!?qFrIsGWtoWLawjQbL5BW0^#HxX{ibSN zds%7>I@IsL2`jy#opWP%+mMrY4ckzE^{7MX#e!+eD{alU-5i>Kl$~e!n)U3jHOXnZ z^8{*}G<E*!?_&5gH&IK{CI-_OH=uZd$%uV-w%P0$>DqCRe%{Qoxdw+S?(cnZBio{; zO0T@^@<i`D<*z>Os!kG)zux7%>7lVhE%(2_oslof2-s`(AXa;_IJs5*nSPqwVR|Iv z`sJKiyln{|FW09q{Yv?!nRj$oJ})!48a19AdUTh1U#4Z^h7YFk7efMgK~)(-&jHDo zw%v%mQpwe;p}p*Ptxx2(gPTq)FT6RXbZ5Zh`U3b=YEjYDqX*7V=k1DIzh-xL4VQ}t z=4oC%Zyj?psyMN-oBasxu6+ZT$JII}#m%=7_3U#<Z}+O1`o}ufXvEHVp=KvvW2>(( zX?1<IMbc5{<0liQ<=p6W$yzN`durl2nVR0A_5Ir9bsacBJ8Pyhx%$O|_Pfrz`E;b( z=n7slO!|b~?kx}uJnDBZw;(-X_~?^w>E4gm_o+?Ms~@)Kt>)g^=dLMru~Sy8+qR;+ zadvQ*2SHZcfzR#@^*D-U?_0$x)>wQ!(52I$%S(Bt{WpH?UdkBHiR*S_&DMpT65d4P zxe<lSE3CD|3l|C!^?Qd7IJlVnO2*edV`h=<ID5Fiy~~Aucb8|_ni)=1&+9RM^)s#2 zvkFecy%f<SN^aVmeZOFEJF~tEg0i11NWR~;%+hS}XAPsal9{nnHy^j#>eSAF96rKn z;~<MIHJuKypVj4(2Uoq&o%$p-CQeg-)UHLXa@XI!cWTSKZPTlCoUV4BKL6GL3Uk?o zyJeOg%ATjZ>h)Q(a;i4_TDqFl^K>#hqKl1LyOFql;q7)YBbagg44uh`4^;Z!(Y_P5 zQg(lfgHP4aFSouL%?uuQ3EyO)P3j<VZ@ppCgR7HMml_ov7;3rXSP!%0w|Cq-%ujOO z(^l^~W&GnaJ<I8jstS)*k#ElYWIywZNtZ)s)>~x{2?$L&9JgfW!myRIkFD<3Z`H(s zLm$?5VOonX+_}1aU&rcn3vpnli<)zKROH8Qnz#GO;u*85k4&uJdt>(c!?Qx(_AYT& zn=seq*yr74*<#Bh<u`W5Tl(KDN$Z^MaiCAp$NKr2TbD-~-mh})<wYfJ%TJE1o!#S_ zL%T&i@+ZblF}v<r^|Un4q}KNW|G<Uv!j4sAOadO9qXawQ0|(k%-R>>g_m<RWdRg(1 z@n=XUgXcbb>G-7WC5gHE+i_Pf2xZ^iR}2^T@?We!u3#h0VYXhU<wG8pj5&1b(VK3Y zMvQhjH~CO2bHBaygJVwwmuu~`@rv4fZkAwlap3K1Cg+BiwaV#pYr~?p&tK==wbEQw zF>UXO>*?>pH+xL&QvC91`*S<iw5b?&J-XzX{p*E}u45iu6}pp?$ey#f{R88lw=T9D zswb0Oc`*M|XTc%kA+j}dMXkTxzvr5fy=RkS&Gc)Bj$f4ScR0}RwBw!`%PwQGE*pxc zehH|hq`#k+vbH<dZ42wK*n97ioV)Fo*}N*r>^95v?A>J?ySrca9r`k1YGv21_T;td z*;;L$#%%1+?d2(F=@&Nt2{k47?CFWU#^+XlUKTuN_2Eg6vXY$CYll|5Y1+8I+qF7# zy`X2CkNtf=+SNE1-jZ!ecJW*EXvs=S+!6MhPA9bebIm_(32Yx%J9^cQ3ZtUY4@0D% z-=rMtT)H}`_iX>SPbaOIOVjb07TAe@b@EcozT&y7O-Xx$^<UJ40SgA-3y98mym>h_ z{7!oG{F>8Uq95h#7pBIS<Ww)Ny<DSg_i9SV9|iD70sPk}fOE9&%6k8&0sJ@ifSL|V z{#1bf<PgZM?96|60sOr=>HqBv=qBy)pM8M`kz@bQCcw=FZ-`*;3k}*U0QIE??IGay zHw{|fR~ocwfJy**KKNRLX7dKV{RKeJ2<*3VyZ*fft@wim?F~Q~w&0`O&H4o2Jo^ma zC#%z-wfX|zEdwZNly*CXymGL)?=)zeAr0<dHE1^>PIo{BAQ8g0E9jJb&DkuVT>?l2 zezY%(&bFXUUO1TnXR+ibgwfd)biT$IfX)kA0MMx|F8~uT7H|XrJIL5r011SkGmhwc z3?w+DL4vJpILw8i{|_R;AsG@5paN)sc&tSOqR^H!ktSujlxb6@52X>E13^HW^ayC@ z908>pL017iuo2MyHUfGl1f@~RR?1Y$Qp!NQh#oDJqr5<83(*;*j({$JZU7qqI=hF? z-}wO089Ej~3K$Pq12_h_3s6HZ_nStU7fKuDhbq+JSrsUMRDs?}74X<#jEq}j+FClA zx*B?9eRTshLsBcEEKyuY1~O=E53SFkH8!+PhSs{!dKFr8LhD9o?FX&jpfwn@j)K-g z(0T@1lR*4P7D^w=Q<Q%wztF*?F@SmmAgBj|dLTe2fzbK;dLTgm5nT@i&7~33*46=| zt1x=s8U0@vgMVn?V-9UhOxm_J1=9|UnZmSJm=52Wj^CM1zcA*%Fpz6dOz>R-g;AWP zXs{YSlGlPm;~yH$|FF^eFE^lP(U<1nt8(yNIWXD^gW3c#%66f&ziS?Pzi1x%ziJ+a z|IoDhheq-3$N!jR{2w-`{Ud{P05VEFptKtlK?{x+)WUCj|3mfhPubCntC7@6WH=0_ z2}i`WNjh+$V`F-7>BD89xC}}13mqIomyzN!CN;fU!_hO<s|~5?WdeuLRIj$ApI@e= zpI_}rKflaKKfl_O{@K-m^v|x2q<?mGBK?!goV3VDlXk96Bf^av-N=83N?1$Jh~{TN ze3x2l(!v3Vt{cQbC|(UsEo~iLJ$(biRxmb!|C%#xXV$($$4=&*yWkdGyLG2n_OP<< zX=7_=->dPQom)S556}LzmJjO<9Tqp75#REWy^-0YMvuuEJ8t}h+=-JWPnkMx`iz;g zX3v>BZ~lUXixw|gn)lbT<ttXMTD@lNy7e12ZrZ%%@2%Um=kM6LYj?q(z5DhbC_Gqn zsQB=aqsNY)IC<)H$(gg~&R;0Kc&Y4idBv5h*D9}9-Kf4<bL;k<yZ7!tc=+h?lc&#W zpTBtd>h+tq@7{m-_~~=qm#^P{NlG~_`tPyjYWL6mzcvT(1lv;Ul@tu`-hQBQxpso> zY>#h!9h?(vYr1NfdFq#1f9t!_#oD3Nx)NV$Iz?|K#lhLy!P9mnWwv>o2~!vQj=y{R zny!`jZ1e8zkF?1%c%eDaSi@|kX`IPG<2(a~&M9)awx|9SJ*IBC_6yBZWD%Uz);7{n zQ`a>%!`rvkBWvil>0n_+weH%{#6VNaux+PqJsn*8I@)wMH*M9fGsV`)t)H`<WtSfI zz1=-rdiC+_KWhd?TMpO;2nVDB7=R;y+koeQae%oqF`5a$0^kDh2Sfw7fKdPphiM%S zlX^S{!{VVf-~eP=@PD@gzBvmZt;A?r00Tf9Kzl$J00m$JZ~*iHcmR9=L4Yv8Aiz)n z6OafH0HlB{z!*R-U>aZ!U=iTfcUT6`YXF-7+W`fDLckHgDS+!L_?|7m7cc-24u}Q} z10(>F078HaFanSRm<X5-m<w18SPobV*bK-A>;W7E90hb=jnS@veFJbu@r?YG_yB%- z@azW&1`Gtm0O9~F01qGnqya_(#sVe*W&q{^mH<`&)&aHvb^!JQiU7v|C4f=@Z4E}N z1^W%)lj0fqDNzr8=J3n}Bmx8gDIg0l29OJw2ABg_1Xu=G1K0%E4k!Q=0*(Mq0nP(1 z11bSEfct=_fMIJfnhu~9pe+DBtD+-3_XR8i90D8%+y^`bkk?_f)-3=Be=k4+U_4;$ zFJQX?(h4-U0i^X94Lz%(EBN^U*nkOuwSeP*`v6U#4FN;~;sIQM6p#g&)B+ZOe;!~J zU;|+5FVJ@*e192eE&{Fq(6cITfZr3qOTc@;7l1C%m;o#S^63F_SBHP5gnzX_a|QTE zMfgqxd~jWZV(%oy(T(E72HTPC)^NiqY+bCI9n}WMlK6BC{*M6u$pC8{(8xzJDjxEo z3r3Mr?0d42MMbs^Msb8E5Z$ZchEe!w*bqC4z>dPk?0cp`u#=poF?x(*Lv`Y_frrn= z;HNh*`0Wi0etZLiU*7;b3xnU^0Pr!dv_uSkf&+u!;K1NVI57AX4n&{Elw=_u3E==n zRuW?6@ev~jab_XbG^q@6%Q%7rjs(dNAsgh#JwTY;0YB`4!7qDY@Y5a`{I&-MKkk9S zuX|wV=RF{d4GDr^WC4W~*+3<fyMR_gcmV?n0iHAoa!>-@C?Rf?NQ@%rMS=VQA0|#o zz$qMD8H7`YU|u0uct~?Wu_#mkITs|CgHyy<R4f({5`|G5s6&TS?fTl<*u_yG>6D~2 ziqKx=j`boQ+*IyAlx1`OIRZ<Y;bD<MgW*GPUUvRWJFaVAWu1t_Z0xYi!KfSH3E7-X zH>g5*I+LHqal@&Zl+5pLXl<4wk%%O2xR}ppu$X+DlgZ+6*izh4Ahoct00P{K!nUQb zt#P0wT;Pz(n2C@<Y&YB|z$+-!10wNPIBXl}DeQg<9-xG3W{U$qgZM-7A`b-#CgCJ9 zcp$|Vhg36VOmHF+4E(5$Y#e98DMbnu+6OL6lqp=0ZiP$AQMi~gc_6`?AmfQ~NT@`n zi?KxFEZiPR#<>!a0H;u0GjW-Sux)WZM@YDIF)2re+b2k+kWJK|Qzpn5X)+$4k&wo< zXJK4{jKP8$CX!&v0KPyB0p4I-y^%!^1b_o9!WV_Wll;+vN_Yk$0&fTB1`5nO(52zQ zI}r1xdn3{W89xQ%^Q1CH5?g{>c;KOf=yZ5V2J(Ygk=5YM;ma5@5ktZeG@<^^+rtA# zTy~yZ9{h(A_G2jWk#M+3hMlL7lPSY26cI9bQU*sLmStHX369oEW+t26Bu17<n8fDe z?jE=|-H+iD78>g36BQH|$_ViqjIk3E88W6c1yT<`LXyT4%A6b-GHWhR$blkEgmQ6r z$Enu1B|cgu7>cQnKVht`ad-tP#$kd4C<73{63X}tLO`Mn9tF}A2FT%B5tI%Xhs9!u z9ecX~J=79eniL6$hzSa3_yzehBBQ*b21PQ$g0UoL86Rkfl5>Fq3q%DHhzb>MP$Z~C zU5HB&=0cR8lOv+=c0}dpf{NM+5kql8`Mbaa;qB;5$bp&xhM+?{K<DD^0F1<)5TinY z1j+pfUP3mJC`d;j!AivC?dS|Og$RW^AslSP0#8thP=&<kC>bbbI@n+kKfDDU3v@zJ z_+f-h@Cn3FO(k9g^LBFZCLTdJ3L=<#gBN56O0_)kge#D!uHJ!kkc(anSxB-xao~gE z4}{1ePIQB8L1{*@5^0xb0z9E?fmG4ykc>d|K5_?m^!Dxza+Nml69#1nqWW1V2ygfU zViXD7h}S_+5Cz;(b0bO}OJeaDL`_iE<L0U{B0_orDhyX75ilE@VG4)AN#_Vr^8}}W zBLIg`#OBy}vP2R|niv#F5{H$7Dq*l6gB}za#R&I`it>vH1xe7m*?Ed3oOGTD>Z!89 zt26|V#}LaTxF_D&c93*y3~@1#vw=;PCFbDnD3%bv5QaBB%qN&=f&yt`0}V=|G!c@B zng)lF#1yjm9BBC93C%Qt&l$>#v*)G>iI-8dTZP;xuSmH(kU?<s*eGdDnsuT?Bt@$E zC+%9%u$Ao^gvodUjs%iK*cd+nocsi((%`cgpmD|QG~~+@rZ9MHct_AIj8Jce7wDO2 zKd|T+&~b$6Llq=(jW5iXC7?hlON1m44uVpeB?QqRk;jg+7c+#ML=i*GlrRN^z91AY zq89SFs3VYzNAGLrDHYpChWiEvbFxsO(nA<w;eHW}aKBLBpwNKtDWx1111c7x<TCkE z&iCPb0YfTgh#mSmGT2EeoGb>>nE^GC0xP}<`tE4xz8mzTgA1rn(2vM~j#TC&pUq&h zQ1yg6dJnlSN8K0$G(3u4E>K>#2qCge=pYkiNk{`bsc2x87##flU6nC32$pf6gA%CL zJgB6gnq`@gJ#c4>gdDj>1~*5_f+EXQ=w?M1pom^xv098A-mf8YRmKFKOvL4W-*2d- zn(EY;FRF|zehM%;{ESm2M^!l`nHfBxbi~g%p|?`zlq#n%ft8df5<#VH+RdpZ7s|1L z^``}n`a~rq8!9H$>Ld=dLWw95_e8zq_nz*!qq2R<^IRlMKq+x;zPSDUsZ^zW#Y+&q zH58(V!<NW05wEifFA=J!j8uo8@k$8Z-YxMuHp@%YP!uNwH?{ypq)^C2BWNzcvP@;& za&Y;P6W9pW<~Sv&QT*gJQLN4LDPwFVsYE&<((f3FBH>CnsXr-_J}nf9EK|wYVtgvK zN~K4UG%%`G0+oVn5+mwJq8Jf_ef=VR7-9bYk$zFQ4Gzi%l&w9Cj3o?-qK%_j3EmTr z@C#rxVTufj^&?t8Xb285nwCIsDd$4^0tsp2As@?OzfgTGG;z7c0l6qkRdYtAy{Wb$ z)usxyO$KAzpRppH+gu@nZfxXL%~zFZseKw7SA#AUCMa4jG+x!T00B?Pf;qKFD&vUJ z%Q&>4qWvIEEhI_66Cw#esa*~~)-EE&FfWrAi;};EtfW#Mnyu7GVf@4NBN6}m7eL(q z`YSXP3+jX!ND)B4NmWk38s|fn4TPy_oHP#Vd7<C4#;h9riE#t!hwY_O0)!-MJUbia zyowI`2O5~%z~D(J13sw~7D7}jge;RK$rArCTT-oGRH{>R6+zO-*;37PYQ73dG7}(D zqVly={?5&F!aG8LL2x>#=wH>;x;An)<cLJX=b(&=q<g`zE+UNX*EpO}hJ|=V!r)mR zXeG&nbp;p?dPPKd4PnszLajhGLD4hBDKH*^@vszf#L^PClKlpuGQSC32*bn17OndB zDw?txZ6N1m3dDSlvOj2{2ZB6r%mLNT7N)dp4xdTnyJ~@{MBGfXB|;@I3va6S8kw5R zrd8t;@mYwgxh@toB}(P@`h^h6Y&j~VV82%j1W(3q@(?A6#;`;?6f<Fr3bn#(kZ({J z!`Cay3(cSc8G$}Q7!-E`i&z_J+E|no*Rh4#N2NL|+X{$aNfV$SL&JQfo9N#->BPVp zET|e%nIw%RLtUSo8fJZ{p`r;xPlyDb>^z}Uw1)Wsnp&X*`$T#}*U9jUj$*`k1w|>P z%M>wj(NwXSZcbTdM2R(K<PWPdmXH>%fJiBq#}yIE#R^TLAOQj~ngOY%8YsCEpytbZ zS~q31=QE`;NOuD(C^D64LV6|(rirNJRBNMZQ*J?hu%y4=4?~K0!c=()faAyPZ=C)z zVF6H>iW1v$ZE7+#Qq2WI_Ad)AD0E<Bsj23LB$LDYZMBBpNy=ghzkeB}KPr8dYNeq4 zb>bp@yh49S9#Lu7JZ7R3$`!|E2I)@nw%lxEMvRV#v3X@BXH_;BRpo&gi3ycz-B4Cw z&>V=fB|hrU$`3f3<CA5Gq=dSH$;J;e0yG-&_h~*tS%yULv-niTlc+mV&YK&TWEv|V zth{hJGH4VDB8f~{51Y+6#T2Ev7f}jP@;CcBkb&?<N_MC>VpyJ+HxlIfzG4x6#N59@ z1%-PB_%&Zwpcx^0W&F*iU!nh16Tm|2u&PZ0Euruee&~2q^@GYF5xoOy6N;B;u6YpQ zNVBSF((tBr9;6U6U%3=%b5anAA|iQsQ-P5`3Y1Bhyyn^}D1Hba-ny|5kbC|{9}pQ8 z0UIfeMZkxZBmmk&01NK0=Ee|nI53eCGa0a>1FLGp3`oM{6ALE<0kJC3A_Yt$&=LbI zGz$5!Qb<LTmFs6BF)<E;F%q2)Gq`YKMG%E6Rx^d13`Pc%2XiyN4ESJTmyVV)RZEza z1PeIdx1A>C+t^m+-5?Sn5<;HA0;h~4L49G<0L4JJNi@G+V}a(>*ckZi?~;k8Dlq5x z-_Do*_j8SZeV(D3yIdY0vPdlA^H@I&`BXBwnWY&bl*vv{V53>9a=59gNL2WdDp9s$ zqP-C90amrxq6{=tXgd8Q>Kjx@DTip-zcY$LEt^=S{c)T^l)WsInCV(Kv%Q2Au7sV{ zbl8EmqJDq;pqir%t46AQl1f&zl$F2-t?#E5y>W&m%S3DMX!k?DvjCeF80^A00?;-Q z@{|X`-iR~W7D7I~VHZS^QlgK9Dw{48rx8nX%_?9hG$^=+9u&1tMZ4w0!ZBzLv<w4P zfFqIdr0^j>#eftVGHeR6c<o#KjRZSOVB<;0VzozcqSED>^J)M}&JZBK$)AVi-|D zAuz4-3uVwFy{&Q7xmv-NTnjWX2@6I<=z_+LG)_ZuQ0)>nO$($0svA=PdmSl|#4Nsu z$yTbRaIYbBh}Kt`F+@ShGU25Z3vvH)DgL@8G-#2g)kXrb66N1VWo)5Rai~<+hN4jA zM7oZ{l5q%LIF!~nFi~NKnR2ttJYhx>v9F6pUoEWhIJUrx`VAiY*YDfV@=-A<c6E?b zS(jiBg4iBG!v^_&sZSWgFCro=f)T24z(hqp)nG|DXy*vt8PzD|K8t+vp&&t9(n6+y z1N+LUEfT?W3N~PfA&aUU%mTK&SOT$?rJ}|pz{UosH>l-o$xv#XEpDlZrKtcr&mRcA zeHmW9z7c3y0JP5Uiv2$E|2Dx*GwxSnt*p=sbKuAVEVmNdG|*^0aA7(dHsztw%S195 zAV_&5U@H)LLK8!uhJ~H6fFK{--z$jj=c|j!spR~KUG7pgH9`l$b|#C%Ok~Mdy&YAT zYZ}J!sQxw9UI}a|Nn!jdmGaQmm|qC)?G@>#IB6lt0Q~~KU=t@6#H=h>3zEY4gV1DD zDunRR=ts&I!D_G&R<s&I{9)Bieo#d$<H4R898j@_gDz5Cj3Z__c)&RqINo84!-J#h zgHz)}CMz9fTZ0E1XcZ5-a4-cI2-0wL7DO&cEP?}CAQGJ;5psEnQl6MNO+&;I86Ff9 z?uO!Y1Ol|(<wlX(;w<PIQ*bsf-3=XOK{XetDda{<ji84#f*%pig{gHC4lRa_!?6~0 zE(YEOR==~*c^!Go(lh}IQ^aIJq!z`P1gBWoxQxl;BU>Uur&~~rjVYz1+2T!837d^+ z5)Pgq63KA+t}_?-b+I&I3O2|qB8uT178YfNTvTh!H!LQU9_Hn%;@JxYIrNG|>nss| zK@5MtFh(>S{P+#hh~Fdi|9z>5R4El+li?2we++-RS7acOVl0sGY<zB-Y6m%ySCpUJ zL4l%9!y)%&Qiec2o(CsXE~0+HxiuVjg*7k-7mP}Eb98j;-3QZ!12d>tGNB?$t!+`R zHa_ZNXw(ed91aZ#m$G4*Jqgz8n|j08N{FfjlmMJ%!dYm~6zz`cVxU$-{JcWpyjP50 z1RRx#@PnNd%x`cMBXUTj;wdsl;RuWIg*_O8!q?9)JdzGKC5^nO5OY)j711^FM+G=E z^@xb_Y3dOa8Wk}p5*^i%OOFab;XdJml+t5V9u(Y-p(wSDPl{mg2&h(!utCZME4;x{ z$PD81If+bu5G-}01vO~rSY#HA8Tfom#m^s2u>H^pHjEA#7%3A;IEqI&ZNYa4Lh}lA zx&rg!qroch$~cJ}i7zjm$L4rv#d0JfEZhfn&eIfp;V{<XLDaCW-XPJ7&r1{vph030 z94Mf42qV%E9^~%}y6C(3oA@f}yg=RjNZ06#=%VP}Av~#+kd54Fd>Jp0CnKJT7i~zJ zs+TB<2Rq%W$yLf}NWZGE2G2%e$SYjZAcx3Am1iFjY#g&djf*5yU!D{V4B429r$cj| zj?H;GHRtKvoM-RmJYAae?9<>mFenTg2sH|Wx(=!c9E2)}@WmqOVbDf=F?V4apYN%1 z#*%2}XlVnTD^XL|!Zb9<n7X<i21fuGY)QI8+uEk8KCo3ESW>F$V^WjA46#ZWbSy}> zKnK7_ryWq&#uGb&B^2QjHgsN6*x*IF8uSmGzodwDF@LD-NOdGIp)Y~siV0~j3AE!0 zK|=@xa3lv#OQJcUgadbb5Wr_4d0^20*CPYJc9f054?&xN8)3p3jCNWL{;wSUGq@q% zA|3raoT2{>x{sxB2LCtca>_7T%5Ts;3)ZBe|55){`rZQFHx+rn^2hwifj>F$CkOuI kz@HrWlLLQp;7<<x$$>vP@FxfU<iMXC_>%+wpX9**0P;R5aR2}S diff --git a/src/common/platforms/esp32/rom/rom.elf b/src/common/platforms/esp32/rom/rom.elf deleted file mode 100755 index f65fbf09996b1f49996ff815c7e28fdabe12fd06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 521912 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%0DU(>2#J>;ph$jnn8-qLgkJC0L+XrH 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%0A_Geu3 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 Pv(sy@xEW&j7xn#LgnEZy diff --git a/src/common/platforms/esp32/rom/rom_functions.S b/src/common/platforms/esp32/rom/rom_functions.S deleted file mode 100644 index ec3b76fce..000000000 --- a/src/common/platforms/esp32/rom/rom_functions.S +++ /dev/null @@ -1,1852 +0,0 @@ -// From esp-idf/components/esp32/ld/esp32.rom.ld: -// sort -k 5 esp32.rom.ld | perl -npe 's/=/,/; s/;//' - -PROVIDE ( __month_lengths , 0x3ff9609c ) -PROVIDE ( __ctype_ptr__ , 0x3ff96350 ) -PROVIDE ( _ctype_ , 0x3ff96354 ) -PROVIDE ( __sf_fake_stderr , 0x3ff96458 ) -PROVIDE ( __sf_fake_stdout , 0x3ff96478 ) -PROVIDE ( __sf_fake_stdin , 0x3ff96498 ) -PROVIDE ( __mb_cur_max , 0x3ff96530 ) -PROVIDE ( __wctomb , 0x3ff96540 ) -PROVIDE ( __nsau_data , 0x3ff96544 ) -PROVIDE ( __popcount_tab , 0x3ff96544 ) -PROVIDE ( lmp_ext_desc_tab , 0x3ff96d9c ) -PROVIDE ( lmp_desc_tab , 0x3ff96e6c ) -PROVIDE ( co_sca2ppm , 0x3ff971e8 ) -PROVIDE ( one_bits , 0x3ff971f8 ) -PROVIDE ( dbg_default_handler , 0x3ff97218 ) -PROVIDE ( ecc_Jacobian_InfinityPoint256 , 0x3ff972e8 ) -PROVIDE ( veryBigHexP256 , 0x3ff9736c ) -PROVIDE ( bigHexP256 , 0x3ff973bc ) -PROVIDE ( DebugE256SecretKey , 0x3ff973e8 ) -PROVIDE ( DebugE256PublicKey_y , 0x3ff97408 ) -PROVIDE ( DebugE256PublicKey_x , 0x3ff97428 ) -PROVIDE ( maxSecretKey_256 , 0x3ff97448 ) -PROVIDE ( BasePoint_y_256 , 0x3ff97468 ) -PROVIDE ( BasePoint_x_256 , 0x3ff97488 ) -PROVIDE ( hci_evt_le_desc_tab , 0x3ff974b4 ) -PROVIDE ( hci_evt_dbg_desc_tab , 0x3ff9750c ) -PROVIDE ( hci_evt_desc_tab , 0x3ff9751c ) -PROVIDE ( hci_cmd_desc_root_tab , 0x3ff976d4 ) -PROVIDE ( hci_cmd_desc_tab_vs , 0x3ff97714 ) -PROVIDE ( hci_cmd_desc_tab_le , 0x3ff97870 ) -PROVIDE ( hci_cmd_desc_tab_testing , 0x3ff97a98 ) -PROVIDE ( hci_cmd_desc_tab_stat_par , 0x3ff97ac8 ) -PROVIDE ( hci_cmd_desc_tab_info_par , 0x3ff97b1c ) -PROVIDE ( hci_cmd_desc_tab_ctrl_bb , 0x3ff97b70 ) -PROVIDE ( hci_cmd_desc_tab_lk_pol , 0x3ff97f3c ) -PROVIDE ( hci_cmd_desc_tab_lk_ctrl , 0x3ff97fc0 ) -PROVIDE ( lb_default_handler , 0x3ff982b8 ) -PROVIDE ( lc_default_handler , 0x3ff98648 ) -PROVIDE ( ld_pcm_settings_dft , 0x3ff98a0c ) -PROVIDE ( ld_acl_edr_sizes , 0x3ff98a14 ) -PROVIDE ( ld_acl_edr_types , 0x3ff98a22 ) -PROVIDE ( ld_acl_br_sizes , 0x3ff98a2a ) -PROVIDE ( ld_acl_br_types , 0x3ff98a36 ) -PROVIDE ( ld_sync_train_channels , 0x3ff98a3c ) -PROVIDE ( llc_default_handler , 0x3ff98b3c ) -PROVIDE ( lld_pdu_llcp_pk_desc_tab , 0x3ff98b68 ) -PROVIDE ( lld_pdu_adv_pk_desc_tab , 0x3ff98c70 ) -PROVIDE ( llm_local_data_len_values , 0x3ff98d1c ) -PROVIDE ( llm_local_le_states , 0x3ff98d28 ) -PROVIDE ( llm_local_le_feats , 0x3ff98d30 ) -PROVIDE ( llm_local_cmds , 0x3ff98d38 ) -PROVIDE ( llm_default_handler , 0x3ff98d80 ) -PROVIDE ( LLM_AA_CT2 , 0x3ff98d88 ) -PROVIDE ( LLM_AA_CT1 , 0x3ff98d8a ) -PROVIDE ( lm_default_handler , 0x3ff990e0 ) -PROVIDE ( lm_n_page_tab , 0x3ff990e8 ) -PROVIDE ( lm_local_supp_feats , 0x3ff990ee ) -PROVIDE ( rwip_coex_cfg , 0x3ff9914c ) -PROVIDE ( rwip_priority , 0x3ff99159 ) -PROVIDE ( exc_cause_table , 0x3ff991d0 ) -PROVIDE ( spi_modes , 0x3ff99270 ) -PROVIDE ( sha_blk_bits_bytes , 0x3ff99288 ) -PROVIDE ( sha_blk_hash_bytes , 0x3ff9928c ) -PROVIDE ( sha_blk_bits , 0x3ff99290 ) -PROVIDE ( dh_group18_prime , 0x3ff9a0dc ) -PROVIDE ( dh_group18_generator , 0x3ff9a4dc ) -PROVIDE ( dh_group17_prime , 0x3ff9a4dd ) -PROVIDE ( dh_group17_generator , 0x3ff9a7dd ) -PROVIDE ( dh_group16_prime , 0x3ff9a7de ) -PROVIDE ( dh_group16_generator , 0x3ff9a9de ) -PROVIDE ( dh_group15_prime , 0x3ff9a9df ) -PROVIDE ( dh_group15_generator , 0x3ff9ab5f ) -PROVIDE ( dh_group14_prime , 0x3ff9ab60 ) -PROVIDE ( dh_group14_generator , 0x3ff9ac60 ) -PROVIDE ( dh_group5_prime , 0x3ff9ac61 ) -PROVIDE ( dh_group5_generator , 0x3ff9ad21 ) -PROVIDE ( dh_group2_prime , 0x3ff9ad22 ) -PROVIDE ( dh_group2_generator , 0x3ff9ada2 ) -PROVIDE ( dh_group1_prime , 0x3ff9ada3 ) -PROVIDE ( dh_group1_generator , 0x3ff9ae03 ) -PROVIDE ( Xthal_intlevel , 0x3ff9c2b4 ) -PROVIDE ( syscall_table_ptr_app , 0x3ffae020 ) -PROVIDE ( syscall_table_ptr_pro , 0x3ffae024 ) -PROVIDE ( _tzname , 0x3ffae030 ) -PROVIDE ( _timezone , 0x3ffae0a0 ) -PROVIDE ( _daylight , 0x3ffae0a4 ) -PROVIDE ( _global_impure_ptr , 0x3ffae0b0 ) -PROVIDE ( environ , 0x3ffae0b4 ) -PROVIDE ( rom_phyFuns , 0x3ffae0c0 ) -PROVIDE ( g_phyFuns_instance , 0x3ffae0c4 ) -PROVIDE ( g_rom_flashchip , 0x3ffae270 ) -PROVIDE ( SPI_flashchip_data , 0x3ffae270 ) -PROVIDE ( dummy_len_plus , 0x3ffae290 ) -PROVIDE ( sig_matrix , 0x3ffae293 ) -PROVIDE ( r_btdm_option_data , 0x3ffae6e0 ) -PROVIDE ( _data_start_btdm , 0x3ffae6e0) -PROVIDE ( co_default_bdaddr , 0x3ffae704 ) -PROVIDE ( r_ip_funcs_p , 0x3ffae70c ) -PROVIDE ( r_ip_funcs , 0x3ffae710 ) -PROVIDE ( r_import_rf_phy_func_p , 0x3ffafd64 ) -PROVIDE ( r_modules_funcs_p , 0x3ffafd68 ) -PROVIDE ( r_modules_funcs , 0x3ffafd6c ) -PROVIDE ( _data_end_btdm , 0x3ffaff10) -PROVIDE ( _bss_start_btdm , 0x3ffb8000) -PROVIDE ( co_null_bdaddr , 0x3ffb80e0 ) -PROVIDE ( ld_sco_env , 0x3ffb824c ) -PROVIDE ( ld_acl_env , 0x3ffb8258 ) -PROVIDE ( ld_bcst_acl_env , 0x3ffb8274 ) -PROVIDE ( ld_csb_rx_env , 0x3ffb8278 ) -PROVIDE ( ld_csb_tx_env , 0x3ffb827c ) -PROVIDE ( ld_fm_env , 0x3ffb8284 ) -PROVIDE ( ld_inq_env , 0x3ffb82e4 ) -PROVIDE ( ld_iscan_env , 0x3ffb82e8 ) -PROVIDE ( ld_page_env , 0x3ffb82f0 ) -PROVIDE ( ld_pca_env , 0x3ffb82f4 ) -PROVIDE ( ld_pscan_env , 0x3ffb8308 ) -PROVIDE ( ld_sched_env , 0x3ffb830c ) -PROVIDE ( ld_sscan_env , 0x3ffb832c ) -PROVIDE ( ld_strain_env , 0x3ffb8330 ) -PROVIDE ( ld_active_ch_map , 0x3ffb8334 ) -PROVIDE ( r_import_rf_phy_func , 0x3ffb8354 ) -PROVIDE ( r_plf_funcs_p , 0x3ffb8360 ) -PROVIDE ( RFPLL_ICP_TABLE , 0x3ffb8b7c ) -PROVIDE ( bt_util_buf_env , 0x3ffb8bd4 ) -PROVIDE ( sw_to_hw , 0x3ffb8d40 ) -PROVIDE ( dbg_state , 0x3ffb8d5d ) -PROVIDE ( ecc_env , 0x3ffb8d60 ) -PROVIDE ( em_buf_env , 0x3ffb8d74 ) -PROVIDE ( hci_fc_env , 0x3ffb9340 ) -PROVIDE ( hci_env , 0x3ffb9350 ) -PROVIDE ( ke_env , 0x3ffb93cc ) -PROVIDE ( lb_env , 0x3ffb9424 ) -PROVIDE ( lb_state , 0x3ffb94e8 ) -PROVIDE ( lc_env , 0x3ffb94ec ) -PROVIDE ( lc_state , 0x3ffb9508 ) -PROVIDE ( ld_env , 0x3ffb9510 ) -PROVIDE ( ld_env , 0x3ffb9510 ) -PROVIDE ( ld_sched_params , 0x3ffb96c0 ) -PROVIDE ( ld_sched_params , 0x3ffb96c0 ) -PROVIDE ( llc_env , 0x3ffb96d0 ) -PROVIDE ( llc_state , 0x3ffb96f8 ) -PROVIDE ( lld_evt_env , 0x3ffb9704 ) -PROVIDE ( llm_le_env , 0x3ffb976c ) -PROVIDE ( llm_state , 0x3ffb985c ) -PROVIDE ( lm_env , 0x3ffb9860 ) -PROVIDE ( lm_state , 0x3ffb9a1c ) -PROVIDE ( rwip_rf , 0x3ffbdb28 ) -PROVIDE ( _bss_end_btdm , 0x3ffbff70) -PROVIDE ( gpio_pending_mask , 0x3ffe0038 ) -PROVIDE ( app_gpio_arg , 0x3ffe003c ) -PROVIDE ( app_gpio_handler , 0x3ffe0040 ) -PROVIDE ( gpio_pending_mask_high , 0x3ffe0044 ) -PROVIDE ( gTxMsg , 0x3ffe0050 ) -PROVIDE ( RecvBuff , 0x3ffe009c ) -PROVIDE ( UartDev , 0x3ffe019c ) -PROVIDE ( ets_readySet_ , 0x3ffe01f0 ) -PROVIDE ( ets_intr_count , 0x3ffe03fc ) -PROVIDE ( user_code_start , 0x3ffe0400 ) -PROVIDE ( ets_startup_callback , 0x3ffe0404 ) -PROVIDE ( debug_timer , 0x3ffe042c ) -PROVIDE ( debug_timerfn , 0x3ffe0430 ) -PROVIDE ( _xtos_exc_handler_table , 0x3ffe0448 ) -PROVIDE ( _xtos_c_handler_table , 0x3ffe0548 ) -PROVIDE ( _Pri_4_HandlerAddress , 0x3ffe0648 ) -PROVIDE ( _Pri_5_HandlerAddress , 0x3ffe064c ) -PROVIDE ( _xtos_enabled , 0x3ffe0650 ) -PROVIDE ( _xtos_intstruct , 0x3ffe0650 ) -PROVIDE ( _xtos_vpri_enabled , 0x3ffe0654 ) -PROVIDE ( _xtos_interrupt_table , 0x3ffe0658 ) -PROVIDE ( _xtos_interrupt_mask_table , 0x3ffe0758 ) -PROVIDE ( _stack_sentry , 0x3ffe1320 ) -PROVIDE ( __stack , 0x3ffe3f20 ) -PROVIDE ( _stack_sentry_app , 0x3ffe5230 ) -PROVIDE ( __stack_app , 0x3ffe7e30 ) -PROVIDE ( _WindowOverflow4 , 0x40000000 ) -PROVIDE ( _xtos_alloca_handler , 0x40000010 ) -PROVIDE ( _WindowUnderflow4 , 0x40000040 ) -PROVIDE ( _WindowOverflow8 , 0x40000080 ) -PROVIDE ( _WindowUnderflow8 , 0x400000c0 ) -PROVIDE ( _WindowOverflow12 , 0x40000100 ) -PROVIDE ( _WindowUnderflow12 , 0x40000140 ) -PROVIDE ( _Level2Vector , 0x40000180 ) -PROVIDE ( _Level3Vector , 0x400001c0 ) -PROVIDE ( _Level4Vector , 0x40000200 ) -PROVIDE ( _Level5Vector , 0x40000240 ) -PROVIDE ( _DebugExceptionVector , 0x40000280 ) -PROVIDE ( _NMIExceptionVector , 0x400002c0 ) -PROVIDE ( _KernelExceptionVector , 0x40000300 ) -PROVIDE ( _UserExceptionVector , 0x40000340 ) -PROVIDE ( _DoubleExceptionVector , 0x400003c0 ) -PROVIDE ( _ResetVector , 0x40000400 ) -PROVIDE ( _ResetHandler , 0x40000450 ) -PROVIDE ( _stext , 0x40000560 ) -PROVIDE ( _start , 0x40000704 ) -PROVIDE ( _xtos_set_exception_handler , 0x4000074c ) -PROVIDE ( _xtos_syscall_handler , 0x40000790 ) -PROVIDE ( _SyscallException , 0x400007cf ) -PROVIDE ( _xtos_l1int_handler , 0x40000814 ) -PROVIDE ( _LevelOneInterrupt , 0x40000835 ) -PROVIDE ( _xtos_restore_intlevel , 0x40000928 ) -PROVIDE ( _xtos_set_vpri , 0x40000934 ) -PROVIDE ( _Level2FromVector , 0x40000954 ) -PROVIDE ( _Level3FromVector , 0x40000a28 ) -PROVIDE ( _Level4FromVector , 0x40000af8 ) -PROVIDE ( _Level5FromVector , 0x40000c68 ) -PROVIDE ( _xtos_cause3_handler , 0x40000dd8 ) -PROVIDE ( _xtos_c_wrapper_handler , 0x40000de8 ) -PROVIDE ( _GeneralException , 0x40000e14 ) -PROVIDE ( creat , 0x40000e8c ) -PROVIDE ( _isatty_r , 0x40000ea0 ) -PROVIDE ( asctime_r , 0x40000ec8 ) -PROVIDE ( isalnum , 0x40000f04 ) -PROVIDE ( isalpha , 0x40000f18 ) -PROVIDE ( isblank , 0x40000f2c ) -PROVIDE ( iscntrl , 0x40000f50 ) -PROVIDE ( isdigit , 0x40000f64 ) -PROVIDE ( islower , 0x40000f78 ) -PROVIDE ( isgraph , 0x40000f94 ) -PROVIDE ( isprint , 0x40000fa8 ) -PROVIDE ( ispunct , 0x40000fc0 ) -PROVIDE ( isspace , 0x40000fd4 ) -PROVIDE ( isupper , 0x40000fe8 ) -PROVIDE ( srand , 0x40001004 ) -PROVIDE ( rand , 0x40001058 ) -PROVIDE ( rand_r , 0x400010d4 ) -PROVIDE ( __sread , 0x40001118 ) -PROVIDE ( __seofread , 0x40001148 ) -PROVIDE ( __swrite , 0x40001150 ) -PROVIDE ( __sseek , 0x40001184 ) -PROVIDE ( __sclose , 0x400011b8 ) -PROVIDE ( strcasecmp , 0x400011cc ) -PROVIDE ( strcasestr , 0x40001210 ) -PROVIDE ( strcmp , 0x40001274 ) -PROVIDE ( strcoll , 0x40001398 ) -PROVIDE ( strcpy , 0x400013ac ) -PROVIDE ( strdup , 0x4000143c ) -PROVIDE ( _strdup_r , 0x40001450 ) -PROVIDE ( strlcat , 0x40001470 ) -PROVIDE ( strlen , 0x400014c0 ) -PROVIDE ( strlwr , 0x40001524 ) -PROVIDE ( strncasecmp , 0x40001550 ) -PROVIDE ( strncpy , 0x400015d4 ) -PROVIDE ( strndup , 0x400016b0 ) -PROVIDE ( _strndup_r , 0x400016c4 ) -PROVIDE ( strrchr , 0x40001708 ) -PROVIDE ( strsep , 0x40001734 ) -PROVIDE ( strupr , 0x4000174c ) -PROVIDE ( close , 0x40001778 ) -PROVIDE ( open , 0x4000178c ) -PROVIDE ( read , 0x400017dc ) -PROVIDE ( sbrk , 0x400017f4 ) -PROVIDE ( times , 0x40001808 ) -PROVIDE ( write , 0x4000181c ) -PROVIDE ( __get_current_time_locale , 0x40001834 ) -PROVIDE ( __time_load_locale , 0x4000183c ) -PROVIDE ( time , 0x40001844 ) -PROVIDE ( tolower , 0x40001868 ) -PROVIDE ( toupper , 0x40001884 ) -PROVIDE ( __tzcalc_limits , 0x400018a0 ) -PROVIDE ( __tz_lock , 0x40001a04 ) -PROVIDE ( __tz_unlock , 0x40001a10 ) -PROVIDE ( tzset , 0x40001a1c ) -PROVIDE ( _tzset_r , 0x40001a28 ) -PROVIDE ( _cleanup_r , 0x40001d48 ) -PROVIDE ( __sfmoreglue , 0x40001dc8 ) -PROVIDE ( _cleanup , 0x40001df8 ) -PROVIDE ( __sfp_lock_acquire , 0x40001e08 ) -PROVIDE ( __sfp_lock_release , 0x40001e14 ) -PROVIDE ( __sinit_lock_acquire , 0x40001e20 ) -PROVIDE ( __sinit_lock_release , 0x40001e2c ) -PROVIDE ( __sinit , 0x40001e38 ) -PROVIDE ( __sfp , 0x40001e90 ) -PROVIDE ( __fp_lock_all , 0x40001f1c ) -PROVIDE ( __fp_unlock_all , 0x40001f30 ) -PROVIDE ( _findenv_r , 0x40001f44 ) -PROVIDE ( _getenv_r , 0x40001fbc ) -PROVIDE ( __gettzinfo , 0x40001fcc ) -PROVIDE ( __env_lock , 0x40001fd4 ) -PROVIDE ( __env_unlock , 0x40001fe0 ) -PROVIDE ( _fclose_r , 0x40001fec ) -PROVIDE ( fclose , 0x400020ac ) -PROVIDE ( __negsf2 , 0x400020c0 ) -PROVIDE ( __addsf3 , 0x400020e8 ) -PROVIDE ( __subsf3 , 0x400021d0 ) -PROVIDE ( __divsf3 , 0x4000234c ) -PROVIDE ( __fixsfsi , 0x4000240c ) -PROVIDE ( __fixsfdi , 0x4000244c ) -PROVIDE ( __fixunssfsi , 0x400024ac ) -PROVIDE ( __fixunssfdi , 0x40002504 ) -PROVIDE ( __adddf3 , 0x40002590 ) -PROVIDE ( __subdf3 , 0x400026e4 ) -PROVIDE ( __divdf3 , 0x40002954 ) -PROVIDE ( __fixdfsi , 0x40002a78 ) -PROVIDE ( __fixdfdi , 0x40002ac4 ) -PROVIDE ( __fixunsdfsi , 0x40002b30 ) -PROVIDE ( __truncdfsf2 , 0x40002b90 ) -PROVIDE ( __extendsfdf2 , 0x40002c34 ) -PROVIDE ( __addvsi3 , 0x40002c98 ) -PROVIDE ( __addvdi3 , 0x40002cbc ) -PROVIDE ( __subvsi3 , 0x40002cf8 ) -PROVIDE ( __subvdi3 , 0x40002d20 ) -PROVIDE ( __mulvsi3 , 0x40002d60 ) -PROVIDE ( __mulvdi3 , 0x40002d78 ) -PROVIDE ( __negvsi2 , 0x40002e78 ) -PROVIDE ( __negvdi2 , 0x40002e98 ) -PROVIDE ( __popcountsi2 , 0x40002ed0 ) -PROVIDE ( __popcountdi2 , 0x40002ef8 ) -PROVIDE ( __paritysi2 , 0x40002f3c ) -PROVIDE ( rom_phy_disable_agc , 0x40002f6c ) -PROVIDE ( rom_phy_enable_agc , 0x40002f88 ) -PROVIDE ( rom_disable_agc , 0x40002fa4 ) -PROVIDE ( rom_enable_agc , 0x40002fcc ) -PROVIDE ( rom_phy_disable_cca , 0x40003000 ) -PROVIDE ( rom_phy_enable_cca , 0x4000302c ) -PROVIDE ( rom_pow_usr , 0x40003044 ) -PROVIDE ( rom_set_loopback_gain , 0x40003060 ) -PROVIDE ( rom_set_cal_rxdc , 0x400030b8 ) -PROVIDE ( rom_loopback_mode_en , 0x400030f8 ) -PROVIDE ( rom_get_data_sat , 0x4000312c ) -PROVIDE ( rom_set_pbus_mem , 0x400031a4 ) -PROVIDE ( rom_write_gain_mem , 0x4000348c ) -PROVIDE ( rom_rx_gain_force , 0x4000351c ) -PROVIDE ( rom_set_txclk_en , 0x40003564 ) -PROVIDE ( rom_set_rxclk_en , 0x40003594 ) -PROVIDE ( rom_start_tx_tone_step , 0x400035d0 ) -PROVIDE ( rom_start_tx_tone , 0x400036b4 ) -PROVIDE ( rom_clk_force_on_vit , 0x40003710 ) -PROVIDE ( rom_bb_rx_ht20_cen_bcov_en , 0x40003734 ) -PROVIDE ( rom_bb_tx_ht20_cen , 0x40003760 ) -PROVIDE ( rom_spur_reg_write_one_tone , 0x400037f0 ) -PROVIDE ( rom_spur_coef_cfg , 0x40003ac8 ) -PROVIDE ( rom_bb_wdg_test_en , 0x40003b70 ) -PROVIDE ( rom_bb_bss_cbw40_dig , 0x40003bac ) -PROVIDE ( rom_noise_floor_auto_set , 0x40003bdc ) -PROVIDE ( rom_phy_get_noisefloor , 0x40003c2c ) -PROVIDE ( rom_check_noise_floor , 0x40003c78 ) -PROVIDE ( rom_set_noise_floor , 0x40003d48 ) -PROVIDE ( rom_chip_v7_rx_rifs_en , 0x40003d90 ) -PROVIDE ( rom_rtc_mem_backup , 0x40003db4 ) -PROVIDE ( rom_rtc_mem_recovery , 0x40003df4 ) -PROVIDE ( rom_gen_rx_gain_table , 0x40003e3c ) -PROVIDE ( rom_stop_tx_tone , 0x40003f98 ) -PROVIDE ( rom_bb_bss_bw_40_en , 0x4000401c ) -PROVIDE ( rom_mhz2ieee , 0x4000404c ) -PROVIDE ( rom_cbw2040_cfg , 0x400040b0 ) -PROVIDE ( phy_get_romfuncs , 0x40004100 ) -PROVIDE ( rom_chip_i2c_readReg , 0x40004110 ) -PROVIDE ( rom_i2c_readReg , 0x40004148 ) -PROVIDE ( rom_chip_i2c_writeReg , 0x40004168 ) -PROVIDE ( rom_i2c_writeReg , 0x400041a4 ) -PROVIDE ( rom_i2c_readReg_Mask , 0x400041c0 ) -PROVIDE ( rom_i2c_writeReg_Mask , 0x400041fc ) -PROVIDE ( rom_pbus_force_mode , 0x40004270 ) -PROVIDE ( rom_pbus_rd_addr , 0x40004334 ) -PROVIDE ( rom_pbus_rd_shift , 0x40004374 ) -PROVIDE ( rom_pbus_force_test , 0x400043c0 ) -PROVIDE ( rom_pbus_rd , 0x40004414 ) -PROVIDE ( rom_pbus_debugmode , 0x40004458 ) -PROVIDE ( rom_pbus_workmode , 0x4000446c ) -PROVIDE ( rom_pbus_set_rxgain , 0x40004480 ) -PROVIDE ( rom_pbus_xpd_rx_off , 0x40004508 ) -PROVIDE ( rom_pbus_xpd_rx_on , 0x4000453c ) -PROVIDE ( rom_pbus_xpd_tx_off , 0x40004590 ) -PROVIDE ( rom_pbus_xpd_tx_on , 0x400045e0 ) -PROVIDE ( rom_pbus_set_dco , 0x40004638 ) -PROVIDE ( rom_rfpll_reset , 0x40004680 ) -PROVIDE ( rom_restart_cal , 0x400046e0 ) -PROVIDE ( rom_write_rfpll_sdm , 0x40004740 ) -PROVIDE ( rom_wait_rfpll_cal_end , 0x400047a8 ) -PROVIDE ( rom_rfpll_set_freq , 0x400047f8 ) -PROVIDE ( rom_set_channel_freq , 0x40004880 ) -PROVIDE ( rom_phy_freq_correct , 0x40004b44 ) -PROVIDE ( rom_set_rf_freq_offset , 0x40004ca8 ) -PROVIDE ( rom_chip_v7_rx_init , 0x40004cec ) -PROVIDE ( rom_chip_v7_tx_init , 0x40004d18 ) -PROVIDE ( rom_chip_v7_bt_init , 0x40004d8c ) -PROVIDE ( rom_txbbgain_to_index , 0x40004dc0 ) -PROVIDE ( rom_index_to_txbbgain , 0x40004df8 ) -PROVIDE ( rom_txdc_cal_init , 0x40004e10 ) -PROVIDE ( rom_txdc_cal_v70 , 0x40004ea4 ) -PROVIDE ( rom_en_pwdet , 0x4000506c ) -PROVIDE ( rom_txcal_work_mode , 0x4000510c ) -PROVIDE ( rom_txiq_set_reg , 0x40005154 ) -PROVIDE ( rom_read_sar_dout , 0x400051c0 ) -PROVIDE ( rom_get_fm_sar_dout , 0x40005204 ) -PROVIDE ( rom_txtone_linear_pwr , 0x40005290 ) -PROVIDE ( rom_txiq_get_mis_pwr , 0x400052dc ) -PROVIDE ( rom_txiq_cover , 0x4000538c ) -PROVIDE ( rom_abs_temp , 0x400054f0 ) -PROVIDE ( rom_iq_est_enable , 0x40005514 ) -PROVIDE ( rom_iq_est_disable , 0x40005590 ) -PROVIDE ( rom_dc_iq_est , 0x400055c8 ) -PROVIDE ( rom_pbus_rx_dco_cal , 0x40005620 ) -PROVIDE ( rom_rxiq_get_mis , 0x400058e4 ) -PROVIDE ( rom_rxiq_set_reg , 0x40005a00 ) -PROVIDE ( rom_rxiq_cover_mg_mp , 0x40005a68 ) -PROVIDE ( rom_rfcal_rxiq , 0x40005b4c ) -PROVIDE ( rom_get_rfcal_rxiq_data , 0x40005bbc ) -PROVIDE ( rom_set_chan_cal_interp , 0x40005ce0 ) -PROVIDE ( rom_set_txcap_reg , 0x40005d50 ) -PROVIDE ( rom_rfcal_txcap , 0x40005dec ) -PROVIDE ( rom_linear_to_db , 0x40005f64 ) -PROVIDE ( rom_get_power_db , 0x40005fc8 ) -PROVIDE ( rom_meas_tone_pwr_db , 0x40006004 ) -PROVIDE ( rom_rfcal_pwrctrl , 0x40006058 ) -PROVIDE ( rom_tx_atten_set_interp , 0x400061cc ) -PROVIDE ( rom_target_power_add_backoff , 0x40006268 ) -PROVIDE ( rom_get_rf_gain_qdb , 0x40006290 ) -PROVIDE ( rom_correct_rf_ana_gain , 0x400062a8 ) -PROVIDE ( rom_phy_get_vdd33 , 0x4000642c ) -PROVIDE ( rom_get_sar_dout , 0x40006564 ) -PROVIDE ( rom_get_pwctrl_correct , 0x400065d4 ) -PROVIDE ( rom_tx_pwctrl_bg_init , 0x4000662c ) -PROVIDE ( ets_set_idle_cb , 0x40006674 ) -PROVIDE ( ets_task , 0x40006688 ) -PROVIDE ( ets_run , 0x400066bc ) -PROVIDE ( ets_post , 0x4000673c ) -PROVIDE ( ets_intr_lock , 0x400067b0 ) -PROVIDE ( ets_intr_unlock , 0x400067c4 ) -PROVIDE ( ets_waiti0 , 0x400067d8 ) -PROVIDE ( ets_isr_attach , 0x400067ec ) -PROVIDE ( ets_isr_mask , 0x400067fc ) -PROVIDE ( ets_isr_unmask , 0x40006808 ) -PROVIDE ( intr_matrix_set , 0x4000681c ) -PROVIDE ( ets_set_user_start , 0x4000687c ) -PROVIDE ( ets_set_startup_callback , 0x4000688c ) -PROVIDE ( ets_set_appcpu_boot_addr , 0x4000689c ) -PROVIDE ( check_pos , 0x400068b8 ) -PROVIDE ( ets_unpack_flash_code_legacy , 0x4000694c ) -PROVIDE ( ets_unpack_flash_code , 0x40007018 ) -PROVIDE ( rom_main , 0x400076c4 ) -PROVIDE ( ets_install_putc1 , 0x40007d18 ) -PROVIDE ( ets_install_uart_printf , 0x40007d28 ) -PROVIDE ( ets_install_putc2 , 0x40007d38 ) -PROVIDE ( ets_printf , 0x40007d54 ) -PROVIDE ( calc_rtc_memory_crc , 0x40008170 ) -PROVIDE ( rtc_get_reset_reason , 0x400081d4 ) -PROVIDE ( rtc_get_wakeup_cause , 0x400081f4 ) -PROVIDE ( set_rtc_memory_crc , 0x40008208 ) -PROVIDE ( rtc_boot_control , 0x4000821c ) -PROVIDE ( software_reset , 0x4000824c ) -PROVIDE ( software_reset_cpu , 0x40008264 ) -PROVIDE ( rtc_select_apb_bridge , 0x40008288 ) -PROVIDE ( ets_timer_setfn , 0x40008350 ) -PROVIDE ( ets_timer_arm , 0x40008368 ) -PROVIDE ( ets_timer_arm_us , 0x400083ac ) -PROVIDE ( ets_timer_disarm , 0x400083ec ) -PROVIDE ( ets_timer_done , 0x40008428 ) -PROVIDE ( ets_timer_handler_isr , 0x40008454 ) -PROVIDE ( ets_timer_init , 0x400084e8 ) -PROVIDE ( ets_delay_us , 0x40008534 ) -PROVIDE ( ets_update_cpu_frequency , 0x40008550 ) -PROVIDE ( ets_get_cpu_frequency , 0x4000855c ) -PROVIDE ( ets_get_xtal_scale , 0x4000856c ) -PROVIDE ( ets_get_detected_xtal_freq , 0x40008588 ) -PROVIDE ( ets_efuse_read_op , 0x40008600 ) -PROVIDE ( ets_efuse_program_op , 0x40008628 ) -PROVIDE ( ets_efuse_get_spiconfig , 0x40008658 ) -PROVIDE ( ets_efuse_get_8M_clock , 0x40008710 ) -PROVIDE ( UartConnCheck , 0x40008738 ) -PROVIDE ( FlashDwnLdStartMsgProc , 0x40008820 ) -PROVIDE ( FilePacketSendReqMsgProc , 0x40008860 ) -PROVIDE ( FlashDwnLdStopReqMsgProc , 0x400088ec ) -PROVIDE ( FlashDwnLdParamCfgMsgProc , 0x4000891c ) -PROVIDE ( MemDwnLdStartMsgProc , 0x40008948 ) -PROVIDE ( MemPacketSendReqMsgProc , 0x40008978 ) -PROVIDE ( MemDwnLdStopReqMsgProc , 0x400089dc ) -PROVIDE ( UartConnectProc , 0x40008a04 ) -PROVIDE ( UartRegWriteProc , 0x40008a14 ) -PROVIDE ( UartRegReadProc , 0x40008a58 ) -PROVIDE ( UartSpiAttachProc , 0x40008a6c ) -PROVIDE ( UartSpiReadProc , 0x40008a80 ) -PROVIDE ( UartSetBaudProc , 0x40008aac ) -PROVIDE ( FlashDwnLdDeflatedStartMsgProc , 0x40008ad8 ) -PROVIDE ( FilePacketSendDeflatedReqMsgProc , 0x40008b24 ) -PROVIDE ( FlashDwnLdStopDeflatedReqMsgProc , 0x40008c18 ) -PROVIDE ( VerifyFlashMd5Proc , 0x40008c44 ) -PROVIDE ( UartDwnLdProc , 0x40008ce8 ) -PROVIDE ( uart_rx_intr_handler , 0x40008f4c ) -PROVIDE ( uartAttach , 0x40008fd0 ) -PROVIDE ( uart_tx_switch , 0x40009028 ) -PROVIDE ( uart_baudrate_detect , 0x40009034 ) -PROVIDE ( uart_div_modify , 0x400090cc ) -PROVIDE ( Uart_Init , 0x40009120 ) -PROVIDE ( uart_tx_one_char , 0x40009200 ) -PROVIDE ( uart_tx_one_char2 , 0x4000922c ) -PROVIDE ( uart_tx_flush , 0x40009258 ) -PROVIDE ( uart_tx_wait_idle , 0x40009278 ) -PROVIDE ( uart_rx_one_char_block , 0x400092a4 ) -PROVIDE ( uart_rx_one_char , 0x400092d0 ) -PROVIDE ( UartRxString , 0x400092fc ) -PROVIDE ( send_packet , 0x40009340 ) -PROVIDE ( SendMsg , 0x40009384 ) -PROVIDE ( uart_rx_readbuff , 0x40009394 ) -PROVIDE ( uart_buff_switch , 0x400093c0 ) -PROVIDE ( recv_packet , 0x40009424 ) -PROVIDE ( RcvMsg , 0x4000954c ) -PROVIDE ( UartGetCmdLn , 0x40009564 ) -PROVIDE ( GetUartDevice , 0x40009598 ) -PROVIDE ( mmu_init , 0x400095a4 ) -PROVIDE ( cache_flash_mmu_set , 0x400095e0 ) -PROVIDE ( cache_sram_mmu_set , 0x400097f4 ) -PROVIDE ( Cache_Read_Init , 0x40009950 ) -PROVIDE ( Cache_Flush , 0x40009a14 ) -PROVIDE ( Cache_Read_Enable , 0x40009a84 ) -PROVIDE ( Cache_Read_Disable , 0x40009ab8 ) -PROVIDE ( gpio_output_set , 0x40009b24 ) -PROVIDE ( gpio_output_set_high , 0x40009b5c ) -PROVIDE ( gpio_input_get , 0x40009b88 ) -PROVIDE ( gpio_input_get_high , 0x40009b9c ) -PROVIDE ( gpio_register_set , 0x40009bbc ) -PROVIDE ( gpio_init , 0x40009c20 ) -PROVIDE ( gpio_register_get , 0x40009cbc ) -PROVIDE ( gpio_intr_pending , 0x40009cec ) -PROVIDE ( gpio_intr_pending_high , 0x40009cf8 ) -PROVIDE ( gpio_pin_intr_state_set , 0x40009d04 ) -PROVIDE ( gpio_intr_ack , 0x40009dd4 ) -PROVIDE ( gpio_intr_ack_high , 0x40009e1c ) -PROVIDE ( gpio_intr_handler_register , 0x40009e6c ) -PROVIDE ( gpio_pin_wakeup_enable , 0x40009e7c ) -PROVIDE ( gpio_pin_wakeup_disable , 0x40009eb0 ) -PROVIDE ( gpio_matrix_in , 0x40009edc ) -PROVIDE ( gpio_matrix_out , 0x40009f0c ) -PROVIDE ( gpio_pad_select_gpio , 0x40009fdc ) -PROVIDE ( gpio_pad_set_drv , 0x4000a11c ) -PROVIDE ( gpio_pad_pullup , 0x4000a22c ) -PROVIDE ( gpio_pad_pulldown , 0x4000a348 ) -PROVIDE ( gpio_pad_unhold , 0x4000a484 ) -PROVIDE ( gpio_pad_hold , 0x4000a734 ) -PROVIDE ( lldesc_build_chain , 0x4000a850 ) -PROVIDE ( lldesc_num2link , 0x4000a948 ) -PROVIDE ( lldesc_set_owner , 0x4000a974 ) -PROVIDE ( roundup2 , 0x4000ab7c ) -PROVIDE ( multofup , 0x4000ab8c ) -PROVIDE ( sip_alloc_to_host_evt , 0x4000ab9c ) -PROVIDE ( sip_to_host_evt_send_done , 0x4000ac04 ) -PROVIDE ( sip_reclaim_tx_data_pkt , 0x4000ad5c ) -PROVIDE ( sip_reclaim_from_host_cmd , 0x4000adbc ) -PROVIDE ( sip_install_rx_ctrl_cb , 0x4000ae10 ) -PROVIDE ( sip_install_rx_data_cb , 0x4000ae20 ) -PROVIDE ( sip_get_state , 0x4000ae2c ) -PROVIDE ( sip_init_attach , 0x4000ae58 ) -PROVIDE ( sip_post_init , 0x4000aed8 ) -PROVIDE ( sip_to_host_chain_append , 0x4000aef8 ) -PROVIDE ( sip_send , 0x4000af54 ) -PROVIDE ( sip_get_ptr , 0x4000b34c ) -PROVIDE ( sip_after_tx_complete , 0x4000b358 ) -PROVIDE ( sip_is_active , 0x4000b3c0 ) -PROVIDE ( slc_has_pkt_to_host , 0x4000b5fc ) -PROVIDE ( slc_reattach , 0x4000b62c ) -PROVIDE ( slc_enable , 0x4000b64c ) -PROVIDE ( slc_send_to_host_chain , 0x4000b6a0 ) -PROVIDE ( slc_to_host_chain_recycle , 0x4000b758 ) -PROVIDE ( slc_from_host_chain_fetch , 0x4000b7e8 ) -PROVIDE ( slc_set_host_io_max_window , 0x4000b89c ) -PROVIDE ( slc_init_attach , 0x4000b918 ) -PROVIDE ( slc_init_credit , 0x4000badc ) -PROVIDE ( slc_add_credits , 0x4000baf4 ) -PROVIDE ( slc_from_host_chain_recycle , 0x4000bb10 ) -PROVIDE ( abort , 0x4000bba4 ) -PROVIDE ( _malloc_r , 0x4000bbb4 ) -PROVIDE ( _free_r , 0x4000bbcc ) -PROVIDE ( _realloc_r , 0x4000bbe0 ) -PROVIDE ( _calloc_r , 0x4000bbf8 ) -PROVIDE ( _system_r , 0x4000bc10 ) -PROVIDE ( _rename_r , 0x4000bc28 ) -PROVIDE ( _times_r , 0x4000bc40 ) -PROVIDE ( _gettimeofday_r , 0x4000bc58 ) -PROVIDE ( _raise_r , 0x4000bc70 ) -PROVIDE ( _unlink_r , 0x4000bc84 ) -PROVIDE ( _link_r , 0x4000bc9c ) -PROVIDE ( _stat_r , 0x4000bcb4 ) -PROVIDE ( _fstat_r , 0x4000bccc ) -PROVIDE ( _sbrk_r , 0x4000bce4 ) -PROVIDE ( _getpid_r , 0x4000bcfc ) -PROVIDE ( _kill_r , 0x4000bd10 ) -PROVIDE ( _exit_r , 0x4000bd28 ) -PROVIDE ( _close_r , 0x4000bd3c ) -PROVIDE ( _open_r , 0x4000bd54 ) -PROVIDE ( _write_r , 0x4000bd70 ) -PROVIDE ( _lseek_r , 0x4000bd8c ) -PROVIDE ( _read_r , 0x4000bda8 ) -PROVIDE ( _lock_init , 0x4000bdc4 ) -PROVIDE ( _lock_init_recursive , 0x4000bdd8 ) -PROVIDE ( _lock_close , 0x4000bdec ) -PROVIDE ( _lock_close_recursive , 0x4000be00 ) -PROVIDE ( _lock_acquire , 0x4000be14 ) -PROVIDE ( _lock_acquire_recursive , 0x4000be28 ) -PROVIDE ( _lock_try_acquire , 0x4000be3c ) -PROVIDE ( _lock_try_acquire_recursive , 0x4000be50 ) -PROVIDE ( _lock_release , 0x4000be64 ) -PROVIDE ( _lock_release_recursive , 0x4000be78 ) -PROVIDE ( __getreent , 0x4000be8c ) -PROVIDE ( malloc , 0x4000bea0 ) -PROVIDE ( free , 0x4000beb8 ) -PROVIDE ( realloc , 0x4000becc ) -PROVIDE ( calloc , 0x4000bee4 ) -PROVIDE ( _printf_float , 0x4000befc ) -PROVIDE ( _scanf_float , 0x4000bf18 ) -PROVIDE ( _xtos_set_interrupt_handler_arg , 0x4000bf34 ) -PROVIDE ( _xtos_set_interrupt_handler , 0x4000bf78 ) -PROVIDE ( _xtos_ints_on , 0x4000bf88 ) -PROVIDE ( _xtos_ints_off , 0x4000bfac ) -PROVIDE ( _xtos_p_none , 0x4000bfd4 ) -PROVIDE ( _xtos_set_intlevel , 0x4000bfdc ) -PROVIDE ( _xtos_set_min_intlevel , 0x4000bff8 ) -PROVIDE ( _xtos_unhandled_interrupt , 0x4000c01c ) -PROVIDE ( _xtos_unhandled_exception , 0x4000c024 ) -PROVIDE ( _xtos_return_from_exc , 0x4000c034 ) -PROVIDE ( xthal_get_ccount , 0x4000c050 ) -PROVIDE ( xthal_set_ccompare , 0x4000c058 ) -PROVIDE ( xthal_get_ccompare , 0x4000c078 ) -PROVIDE ( xthal_bcopy , 0x4000c098 ) -PROVIDE ( xthal_memcpy , 0x4000c0bc ) -PROVIDE ( xthal_copy123 , 0x4000c124 ) -PROVIDE ( xthal_get_interrupt , 0x4000c1e4 ) -PROVIDE ( xthal_get_intread , 0x4000c1e4 ) -PROVIDE ( xthal_set_intclear , 0x4000c1ec ) -PROVIDE ( bzero , 0x4000c1f4 ) -PROVIDE ( isascii , 0x4000c20c ) -PROVIDE ( memccpy , 0x4000c220 ) -PROVIDE ( memchr , 0x4000c244 ) -PROVIDE ( memcmp , 0x4000c260 ) -PROVIDE ( memcpy , 0x4000c2c8 ) -PROVIDE ( memmove , 0x4000c3c0 ) -PROVIDE ( memrchr , 0x4000c400 ) -PROVIDE ( memset , 0x4000c44c ) -PROVIDE ( __sccl , 0x4000c498 ) -PROVIDE ( strcat , 0x4000c518 ) -PROVIDE ( strchr , 0x4000c53c ) -PROVIDE ( strcspn , 0x4000c558 ) -PROVIDE ( strlcpy , 0x4000c584 ) -PROVIDE ( strncat , 0x4000c5c4 ) -PROVIDE ( strncmp , 0x4000c5f4 ) -PROVIDE ( strnlen , 0x4000c628 ) -PROVIDE ( strspn , 0x4000c648 ) -PROVIDE ( strstr , 0x4000c674 ) -PROVIDE ( __strtok_r , 0x4000c6a8 ) -PROVIDE ( strtok_r , 0x4000c70c ) -PROVIDE ( toascii , 0x4000c720 ) -PROVIDE ( __dummy_lock , 0x4000c728 ) -PROVIDE ( __dummy_lock_try , 0x4000c730 ) -PROVIDE ( _fwalk , 0x4000c738 ) -PROVIDE ( _fwalk_reent , 0x4000c770 ) -PROVIDE ( __mulsi3 , 0x4000c7b0 ) -PROVIDE ( __divsi3 , 0x4000c7b8 ) -PROVIDE ( __modsi3 , 0x4000c7c0 ) -PROVIDE ( __udivsi3 , 0x4000c7c8 ) -PROVIDE ( __umodsi3 , 0x4000c7d0 ) -PROVIDE ( __umulsidi3 , 0x4000c7d8 ) -PROVIDE ( __clzsi2 , 0x4000c7e8 ) -PROVIDE ( __ctzsi2 , 0x4000c7f0 ) -PROVIDE ( __ffssi2 , 0x4000c804 ) -PROVIDE ( __ashldi3 , 0x4000c818 ) -PROVIDE ( __ashrdi3 , 0x4000c830 ) -PROVIDE ( __lshrdi3 , 0x4000c84c ) -PROVIDE ( __floatunsisf , 0x4000c864 ) -PROVIDE ( __floatsisf , 0x4000c870 ) -PROVIDE ( __floatundisf , 0x4000c8b0 ) -PROVIDE ( __floatdisf , 0x4000c8c0 ) -PROVIDE ( __floatunsidf , 0x4000c938 ) -PROVIDE ( __floatsidf , 0x4000c944 ) -PROVIDE ( __floatundidf , 0x4000c978 ) -PROVIDE ( __floatdidf , 0x4000c988 ) -PROVIDE ( __muldi3 , 0x4000c9fc ) -PROVIDE ( __negdi2 , 0x4000ca14 ) -PROVIDE ( __ffsdi2 , 0x4000ca2c ) -PROVIDE ( __clzdi2 , 0x4000ca50 ) -PROVIDE ( __ctzdi2 , 0x4000ca64 ) -PROVIDE ( __divdi3 , 0x4000ca84 ) -PROVIDE ( __moddi3 , 0x4000cd4c ) -PROVIDE ( __udivdi3 , 0x4000cff8 ) -PROVIDE ( __umoddi3 , 0x4000d280 ) -PROVIDE ( _data_start_btdm_rom , 0x4000d4f4 ) -PROVIDE ( _data_end_btdm_rom , 0x4000d4f8 ) -PROVIDE ( _data_start , 0x4000d4f8 ) -PROVIDE ( _rom_store_table , 0x4000d4f8 ) -PROVIDE ( _data_end , 0x4000d5c8 ) -PROVIDE ( _etext , 0x4000d66c ) -PROVIDE ( _rom_store , 0x4000d66c ) -PROVIDE ( btdm_r_btdm_option_data_p_get , 0x40010004 ) -PROVIDE ( btdm_r_data_init , 0x4001002c ) -PROVIDE ( btdm_r_btdm_rom_version_get , 0x40010078 ) -PROVIDE ( r_bt_util_buf_init , 0x400100e4 ) -PROVIDE ( r_bt_util_buf_lmp_tx_alloc , 0x400101d0 ) -PROVIDE ( r_bt_util_buf_lmp_tx_free , 0x400101ec ) -PROVIDE ( r_bt_util_buf_acl_rx_alloc , 0x40010218 ) -PROVIDE ( r_bt_util_buf_acl_rx_free , 0x40010234 ) -PROVIDE ( r_bt_util_buf_acl_tx_alloc , 0x40010268 ) -PROVIDE ( r_bt_util_buf_acl_tx_free , 0x40010280 ) -PROVIDE ( r_bt_util_buf_sync_init , 0x400102c4 ) -PROVIDE ( r_bt_util_buf_sync_clear , 0x400103c8 ) -PROVIDE ( r_bt_util_buf_sync_tx_alloc , 0x400103ec ) -PROVIDE ( r_bt_util_buf_sync_tx_free , 0x40010428 ) -PROVIDE ( r_bt_util_buf_sync_rx_alloc , 0x40010468 ) -PROVIDE ( r_bt_util_buf_sync_rx_free , 0x4001049c ) -PROVIDE ( r_E1 , 0x400108e8 ) -PROVIDE ( r_E21 , 0x40010968 ) -PROVIDE ( r_E22 , 0x400109b4 ) -PROVIDE ( r_E3 , 0x40010a58 ) -PROVIDE ( r_KPrimC , 0x40010ad4 ) -PROVIDE ( r_XorKey , 0x400112c0 ) -PROVIDE ( r_LM_MakeRandVec , 0x400112d8 ) -PROVIDE ( r_lmp_pack , 0x4001135c ) -PROVIDE ( r_lmp_unpack , 0x4001149c ) -PROVIDE ( r_lm_n_is_zero , 0x40012170 ) -PROVIDE ( r_lm_sp_sha256_calculate , 0x400121a0 ) -PROVIDE ( r_lm_sp_n_one , 0x400123a4 ) -PROVIDE ( r_lm_sp_n192_convert_wnaf , 0x400123c0 ) -PROVIDE ( r_lm_sp_p192_point_to_inf , 0x40012458 ) -PROVIDE ( r_lm_sp_p192_point_jacobian_to_affine , 0x40012468 ) -PROVIDE ( r_lm_sp_p192_points_jacobian_to_affine , 0x400124e4 ) -PROVIDE ( r_lm_sp_pre_compute_points , 0x40012640 ) -PROVIDE ( r_lm_sp_p192_dbl , 0x4001268c ) -PROVIDE ( r_lm_sp_p192_add , 0x40012828 ) -PROVIDE ( r_lm_sp_p192_invert , 0x40012b6c ) -PROVIDE ( r_lm_f1 , 0x40012bb8 ) -PROVIDE ( r_lm_f2 , 0x40012cfc ) -PROVIDE ( r_lm_oob_f1 , 0x40012e54 ) -PROVIDE ( r_lm_g , 0x40012f90 ) -PROVIDE ( r_lm_f3 , 0x40013050 ) -PROVIDE ( r_lm_get_nonce , 0x400131c4 ) -PROVIDE ( r_lm_dhkey_calc_init , 0x40013234 ) -PROVIDE ( r_lm_dhkey_compare , 0x400132d8 ) -PROVIDE ( r_F1_256 , 0x400133e4 ) -PROVIDE ( r_G_256 , 0x40013470 ) -PROVIDE ( r_F2_256 , 0x40013568 ) -PROVIDE ( r_F3_256 , 0x40013664 ) -PROVIDE ( r_H3 , 0x40013760 ) -PROVIDE ( r_H4 , 0x40013830 ) -PROVIDE ( r_H5 , 0x400138dc ) -PROVIDE ( r_HMAC , 0x40013968 ) -PROVIDE ( r_hashConcat , 0x40013a38 ) -PROVIDE ( r_SHA_256 , 0x40013a90 ) -PROVIDE ( r_co_list_init , 0x40013f14 ) -PROVIDE ( r_co_list_pool_init , 0x40013f30 ) -PROVIDE ( r_co_list_push_back , 0x40013fb8 ) -PROVIDE ( r_co_list_push_front , 0x40013ff4 ) -PROVIDE ( r_co_list_pop_front , 0x40014028 ) -PROVIDE ( r_co_list_extract , 0x4001404c ) -PROVIDE ( r_co_list_extract_after , 0x40014118 ) -PROVIDE ( r_co_list_find , 0x4001419c ) -PROVIDE ( r_co_list_merge , 0x400141bc ) -PROVIDE ( r_co_list_insert_before , 0x40014200 ) -PROVIDE ( r_co_list_insert_after , 0x40014254 ) -PROVIDE ( r_co_list_size , 0x400142ac ) -PROVIDE ( r_co_list_check_size_available , 0x400142c4 ) -PROVIDE ( r_co_bytes_to_string , 0x400142e4 ) -PROVIDE ( r_co_bdaddr_compare , 0x40014324 ) -PROVIDE ( r_co_slot_to_duration , 0x40014348 ) -PROVIDE ( r_co_nb_good_channels , 0x40014360 ) -PROVIDE ( r_dbg_init , 0x40014394 ) -PROVIDE ( r_dbg_platform_reset_complete , 0x400143d0 ) -PROVIDE ( r_dbg_swdiag_init , 0x40014470 ) -PROVIDE ( r_dbg_swdiag_read , 0x400144a4 ) -PROVIDE ( r_dbg_swdiag_write , 0x400144d0 ) -PROVIDE ( r_ea_elt_cancel , 0x400150d0 ) -PROVIDE ( r_ea_init , 0x40015228 ) -PROVIDE ( r_ea_elt_create , 0x40015264 ) -PROVIDE ( r_ea_elt_insert , 0x400152a8 ) -PROVIDE ( r_ea_elt_remove , 0x400154f0 ) -PROVIDE ( r_ea_interval_create , 0x4001555c ) -PROVIDE ( r_ea_interval_insert , 0x4001557c ) -PROVIDE ( r_ea_interval_remove , 0x40015590 ) -PROVIDE ( r_ea_interval_delete , 0x400155a8 ) -PROVIDE ( r_ea_finetimer_isr , 0x400155d4 ) -PROVIDE ( r_ea_sw_isr , 0x40015724 ) -PROVIDE ( r_ea_offset_req , 0x40015748 ) -PROVIDE ( r_ea_time_get_halfslot_rounded , 0x40015894 ) -PROVIDE ( r_ea_time_get_slot_rounded , 0x400158d4 ) -PROVIDE ( r_ea_sleep_check , 0x40015928 ) -PROVIDE ( r_ea_interval_duration_req , 0x4001597c ) -PROVIDE ( r_ea_alarm_set , 0x40015a10 ) -PROVIDE ( r_ea_alarm_clear , 0x40015ab4 ) -PROVIDE ( notEqual256 , 0x40015b04 ) -PROVIDE ( AddBigHex256 , 0x40015b28 ) -PROVIDE ( Add2SelfBigHex256 , 0x40015b7c ) -PROVIDE ( SubtractBigHex256 , 0x40015bcc ) -PROVIDE ( SubtractFromSelfBigHex256 , 0x40015c20 ) -PROVIDE ( AddP256 , 0x40015c74 ) -PROVIDE ( AddBigHexModP256 , 0x40015c98 ) -PROVIDE ( AddPdiv2_256 , 0x40015ce0 ) -PROVIDE ( SubtractFromSelfBigHexSign256 , 0x40015dc8 ) -PROVIDE ( SubtractBigHexMod256 , 0x40015e8c ) -PROVIDE ( SubtractBigHexUint32_256 , 0x40015f8c ) -PROVIDE ( MultiplyByU32ModP256 , 0x40015fdc ) -PROVIDE ( specialModP256 , 0x4001600c ) -PROVIDE ( MultiplyBigHexModP256 , 0x400160b8 ) -PROVIDE ( MultiplyBigHexByUint32_256 , 0x40016214 ) -PROVIDE ( GF_Jacobian_Point_Double256 , 0x40016260 ) -PROVIDE ( GF_Jacobian_Point_Addition256 , 0x400163a4 ) -PROVIDE ( bigHexInversion256 , 0x400168f0 ) -PROVIDE ( GF_Point_Jacobian_To_Affine256 , 0x40016b0c ) -PROVIDE ( r_ecc_init , 0x40016dbc ) -PROVIDE ( r_ecc_generate_key256 , 0x40016e00 ) -PROVIDE ( r_ecc_abort_key256_generation , 0x40017070 ) -PROVIDE ( r_ecc_gen_new_public_key , 0x400170c0 ) -PROVIDE ( r_ecc_gen_new_secret_key , 0x400170e4 ) -PROVIDE ( r_ecc_get_debug_Keys , 0x40017224 ) -PROVIDE ( r_em_buf_init , 0x4001729c ) -PROVIDE ( r_em_buf_rx_free , 0x400173c4 ) -PROVIDE ( r_em_buf_rx_buff_addr_get , 0x400173e8 ) -PROVIDE ( r_em_buf_tx_buff_addr_get , 0x40017404 ) -PROVIDE ( r_em_buf_tx_free , 0x4001741c ) -PROVIDE ( r_h4tl_init , 0x40017878 ) -PROVIDE ( r_h4tl_write , 0x400178d0 ) -PROVIDE ( r_h4tl_start , 0x40017924 ) -PROVIDE ( r_h4tl_stop , 0x40017934 ) -PROVIDE ( r_hci_fc_init , 0x40017974 ) -PROVIDE ( r_hci_fc_acl_buf_size_set , 0x40017988 ) -PROVIDE ( r_hci_fc_sync_buf_size_set , 0x400179b0 ) -PROVIDE ( r_hci_fc_acl_en , 0x400179d8 ) -PROVIDE ( r_hci_fc_sync_en , 0x40017a30 ) -PROVIDE ( r_hci_fc_acl_packet_sent , 0x40017a3c ) -PROVIDE ( r_hci_fc_sync_packet_sent , 0x40017a54 ) -PROVIDE ( r_hci_fc_host_nb_acl_pkts_complete , 0x40017a6c ) -PROVIDE ( r_hci_fc_host_nb_sync_pkts_complete , 0x40017a88 ) -PROVIDE ( r_hci_fc_check_host_available_nb_acl_packets , 0x40017aa4 ) -PROVIDE ( r_hci_fc_check_host_available_nb_sync_packets , 0x40017ac8 ) -PROVIDE ( r_hci_look_for_cmd_desc , 0x40018454 ) -PROVIDE ( r_hci_look_for_evt_desc , 0x400184a0 ) -PROVIDE ( r_hci_look_for_dbg_evt_desc , 0x400184c4 ) -PROVIDE ( r_hci_look_for_le_evt_desc , 0x400184e0 ) -PROVIDE ( r_hci_init , 0x40018538 ) -PROVIDE ( r_hci_reset , 0x4001856c ) -PROVIDE ( r_hci_send_2_host , 0x400185bc ) -PROVIDE ( r_hci_bt_acl_bdaddr_register , 0x40018900 ) -PROVIDE ( r_hci_bt_acl_conhdl_register , 0x4001895c ) -PROVIDE ( r_hci_bt_acl_bdaddr_unregister , 0x400189ac ) -PROVIDE ( r_hci_evt_mask_set , 0x400189e4 ) -PROVIDE ( r_hci_evt_filter_add , 0x40018a64 ) -PROVIDE ( r_hci_voice_settings_get , 0x40018bdc ) -PROVIDE ( r_hci_voice_settings_set , 0x40018be8 ) -PROVIDE ( r_hci_tl_send , 0x40019228 ) -PROVIDE ( r_hci_tl_init , 0x40019290 ) -PROVIDE ( r_hci_cmd_get_max_param_size , 0x400192d0 ) -PROVIDE ( r_hci_cmd_received , 0x400192f8 ) -PROVIDE ( r_hci_acl_tx_data_alloc , 0x4001951c ) -PROVIDE ( r_hci_acl_tx_data_received , 0x40019654 ) -PROVIDE ( r_hci_sync_tx_data_alloc , 0x40019754 ) -PROVIDE ( r_hci_sync_tx_data_received , 0x400197c0 ) -PROVIDE ( r_hci_util_pack , 0x40019874 ) -PROVIDE ( r_hci_util_unpack , 0x40019998 ) -PROVIDE ( btdm_r_ip_func_p_get , 0x40019af0 ) -PROVIDE ( btdm_r_ip_func_p_set , 0x40019afc ) -PROVIDE ( btdm_r_ble_bt_handler_tab_p_get , 0x40019b0c ) -PROVIDE ( r_ke_event_init , 0x40019b90 ) -PROVIDE ( r_ke_event_callback_set , 0x40019ba8 ) -PROVIDE ( r_ke_event_set , 0x40019be0 ) -PROVIDE ( r_ke_event_clear , 0x40019c2c ) -PROVIDE ( r_ke_event_get , 0x40019c78 ) -PROVIDE ( r_ke_event_get_all , 0x40019cc0 ) -PROVIDE ( r_ke_event_flush , 0x40019ccc ) -PROVIDE ( r_ke_event_schedule , 0x40019cdc ) -PROVIDE ( r_ke_mem_init , 0x40019d3c ) -PROVIDE ( r_ke_mem_is_empty , 0x40019d8c ) -PROVIDE ( r_ke_check_malloc , 0x40019de0 ) -PROVIDE ( r_ke_malloc , 0x40019eb4 ) -PROVIDE ( r_ke_free , 0x4001a014 ) -PROVIDE ( r_ke_is_free , 0x4001a184 ) -PROVIDE ( r_ke_get_mem_usage , 0x4001a1a0 ) -PROVIDE ( r_ke_get_max_mem_usage , 0x4001a1c8 ) -PROVIDE ( r_ke_msg_alloc , 0x4001a1e0 ) -PROVIDE ( r_ke_msg_send , 0x4001a234 ) -PROVIDE ( r_ke_msg_send_basic , 0x4001a26c ) -PROVIDE ( r_ke_msg_forward , 0x4001a290 ) -PROVIDE ( r_ke_msg_forward_new_id , 0x4001a2ac ) -PROVIDE ( r_ke_msg_free , 0x4001a2cc ) -PROVIDE ( r_ke_msg_dest_id_get , 0x4001a2e0 ) -PROVIDE ( r_ke_msg_src_id_get , 0x4001a2ec ) -PROVIDE ( r_ke_msg_in_queue , 0x4001a2f8 ) -PROVIDE ( r_ke_init , 0x4001a318 ) -PROVIDE ( r_ke_flush , 0x4001a374 ) -PROVIDE ( r_ke_sleep_check , 0x4001a3d8 ) -PROVIDE ( r_ke_stats_get , 0x4001a3f0 ) -PROVIDE ( r_ke_task_init , 0x4001a650 ) -PROVIDE ( r_ke_task_create , 0x4001a674 ) -PROVIDE ( r_ke_task_delete , 0x4001a6c0 ) -PROVIDE ( r_ke_state_set , 0x4001a6fc ) -PROVIDE ( r_ke_state_get , 0x4001a7d8 ) -PROVIDE ( r_ke_msg_discard , 0x4001a850 ) -PROVIDE ( r_ke_msg_save , 0x4001a858 ) -PROVIDE ( r_ke_task_msg_flush , 0x4001a860 ) -PROVIDE ( r_ke_task_check , 0x4001a8a4 ) -PROVIDE ( r_ke_timer_init , 0x4001aa9c ) -PROVIDE ( r_ke_timer_set , 0x4001aac0 ) -PROVIDE ( r_ke_timer_clear , 0x4001ab90 ) -PROVIDE ( r_ke_timer_active , 0x4001ac08 ) -PROVIDE ( r_ke_timer_adjust_all , 0x4001ac30 ) -PROVIDE ( r_ke_timer_sleep_check , 0x4001ac50 ) -PROVIDE ( r_LM_ExtractMaxEncKeySize , 0x4001aca4 ) -PROVIDE ( r_lb_init , 0x4001acd4 ) -PROVIDE ( r_lb_reset , 0x4001ad38 ) -PROVIDE ( r_lb_util_get_nb_broadcast , 0x4001ad80 ) -PROVIDE ( r_lb_util_set_nb_broadcast , 0x4001ad8c ) -PROVIDE ( r_lb_util_get_res_lt_addr , 0x4001ad98 ) -PROVIDE ( r_lb_util_get_csb_mode , 0x4001ada4 ) -PROVIDE ( r_lb_send_lmp , 0x4001adbc ) -PROVIDE ( r_lb_clk_adj_activate , 0x4001ae70 ) -PROVIDE ( r_lb_clk_adj_id_get , 0x4001af14 ) -PROVIDE ( r_lb_clk_adj_period_update , 0x4001af20 ) -PROVIDE ( r_lb_send_pdu_clk_adj , 0x4001af3c ) -PROVIDE ( r_lb_mst_key_cmp , 0x4001af74 ) -PROVIDE ( r_lb_mst_key , 0x4001afc0 ) -PROVIDE ( r_lb_mst_key_restart_enc , 0x4001b0d4 ) -PROVIDE ( r_lb_mst_start_act_bcst_enc , 0x4001b198 ) -PROVIDE ( r_lb_mst_stop_act_bcst_enc , 0x4001b24c ) -PROVIDE ( r_LM_GetMasterKey , 0x4001b260 ) -PROVIDE ( r_LM_GetMasterKeyRand , 0x4001b274 ) -PROVIDE ( r_LM_GetMasterEncRand , 0x4001b288 ) -PROVIDE ( r_LM_GetMasterEncKeySize , 0x4001b29c ) -PROVIDE ( lb_hci_cmd_handler_tab_p_get , 0x4001c18c ) -PROVIDE ( lb_default_state_tab_p_get , 0x4001c198 ) -PROVIDE ( r_lc_send_lmp , 0x4001c1a8 ) -PROVIDE ( r_lc_send_pdu_acc , 0x4001c21c ) -PROVIDE ( r_lc_send_pdu_acc_ext4 , 0x4001c240 ) -PROVIDE ( r_lc_send_pdu_not_acc , 0x4001c26c ) -PROVIDE ( r_lc_send_pdu_not_acc_ext4 , 0x4001c294 ) -PROVIDE ( r_lc_send_pdu_set_afh , 0x4001c2c8 ) -PROVIDE ( r_lc_send_pdu_au_rand , 0x4001c308 ) -PROVIDE ( r_lc_send_pdu_in_rand , 0x4001c338 ) -PROVIDE ( r_lc_send_pdu_comb_key , 0x4001c368 ) -PROVIDE ( r_lc_send_pdu_unit_key , 0x4001c398 ) -PROVIDE ( r_lc_send_pdu_max_slot , 0x4001c3c8 ) -PROVIDE ( r_lc_send_pdu_max_slot_req , 0x4001c3ec ) -PROVIDE ( r_lc_send_pdu_encaps_payl , 0x4001c410 ) -PROVIDE ( r_lc_send_pdu_encaps_head , 0x4001c440 ) -PROVIDE ( r_lc_send_pdu_clk_adj_ack , 0x4001c46c ) -PROVIDE ( r_lc_send_pdu_clk_adj_req , 0x4001c494 ) -PROVIDE ( r_lc_send_pdu_ptt_req , 0x4001c4c0 ) -PROVIDE ( r_lc_send_pdu_sp_nb , 0x4001c4e8 ) -PROVIDE ( r_lc_send_pdu_sp_cfm , 0x4001c518 ) -PROVIDE ( r_lc_send_pdu_sres , 0x4001c548 ) -PROVIDE ( r_lc_send_pdu_sco_lk_rem_req , 0x4001c580 ) -PROVIDE ( r_lc_send_pdu_esco_lk_rem_req , 0x4001c5a8 ) -PROVIDE ( r_lc_send_pdu_auto_rate , 0x4001c5d0 ) -PROVIDE ( r_lc_send_pdu_sniff_req , 0x4001c5f0 ) -PROVIDE ( r_lc_send_pdu_lsto , 0x4001c64c ) -PROVIDE ( r_lc_send_pdu_enc_key_sz_req , 0x4001c670 ) -PROVIDE ( r_lc_send_pdu_feats_res , 0x4001c694 ) -PROVIDE ( r_lc_send_pdu_tim_acc , 0x4001c6cc ) -PROVIDE ( r_lc_send_pdu_feats_ext_req , 0x4001c6ec ) -PROVIDE ( r_lc_send_pdu_io_cap_res , 0x4001c72c ) -PROVIDE ( r_lc_send_pdu_num_comp_fail , 0x4001c770 ) -PROVIDE ( r_lc_send_pdu_pause_enc_aes_req , 0x4001c794 ) -PROVIDE ( r_lc_send_pdu_paus_enc_req , 0x4001c7c0 ) -PROVIDE ( r_lc_send_pdu_resu_enc_req , 0x4001c7e4 ) -PROVIDE ( r_lc_send_pdu_setup_cmp , 0x4001c808 ) -PROVIDE ( r_lc_send_pdu_qos_req , 0x4001c82c ) -PROVIDE ( r_lc_send_pdu_slot_off , 0x4001c854 ) -PROVIDE ( r_lc_send_pdu_unsniff_req , 0x4001c894 ) -PROVIDE ( r_lc_send_pdu_vers_req , 0x4001c8b4 ) -PROVIDE ( r_lc_send_pdu_dhkey_chk , 0x4001c8e8 ) -PROVIDE ( r_lc_cmd_stat_send , 0x4001c914 ) -PROVIDE ( r_lc_init , 0x4001c948 ) -PROVIDE ( r_lc_reset , 0x4001c99c ) -PROVIDE ( r_lc_start , 0x4001ca28 ) -PROVIDE ( r_lc_afh_set , 0x4001cc74 ) -PROVIDE ( r_lc_auth_cmp , 0x4001cd54 ) -PROVIDE ( r_lc_calc_link_key , 0x4001ce7c ) -PROVIDE ( r_lc_chg_pkt_type_cont , 0x4001cfbc ) -PROVIDE ( r_lc_chg_pkt_type_cmp , 0x4001d038 ) -PROVIDE ( r_lc_chg_pkt_type_retry , 0x4001d0ac ) -PROVIDE ( r_lc_afh_start , 0x4001d240 ) -PROVIDE ( r_lc_chk_to , 0x4001d2a8 ) -PROVIDE ( r_lc_comb_key_svr , 0x4001d30c ) -PROVIDE ( r_lc_con_cmp , 0x4001d44c ) -PROVIDE ( r_lc_con_cmp_evt_send , 0x4001d4fc ) -PROVIDE ( r_lc_dhkey , 0x4001d564 ) -PROVIDE ( r_lc_locepr_rsw , 0x4001d5d0 ) -PROVIDE ( r_lc_locepr_lkref , 0x4001d648 ) -PROVIDE ( r_lc_enc_key_refresh , 0x4001d720 ) -PROVIDE ( r_lc_end_chk_colli , 0x4001d858 ) -PROVIDE ( r_lc_enc_cmp , 0x4001d8bc ) -PROVIDE ( r_lc_end_of_sniff_nego , 0x4001d9a4 ) -PROVIDE ( r_lc_epr_cmp , 0x4001da88 ) -PROVIDE ( r_lc_epr_change_lk , 0x4001db38 ) -PROVIDE ( r_lc_rsw_done , 0x4001db94 ) -PROVIDE ( r_lc_rsw_clean_up , 0x4001dc70 ) -PROVIDE ( r_lc_epr_rsw_cmp , 0x4001dd40 ) -PROVIDE ( r_lc_enter_sniff_mode , 0x4001ddb8 ) -PROVIDE ( r_lc_init_calc_f3 , 0x4001deb0 ) -PROVIDE ( r_lc_init_start_mutual_auth , 0x4001df60 ) -PROVIDE ( r_lc_init_passkey_loop , 0x4001dfc0 ) -PROVIDE ( r_lc_initiator_epr , 0x4001e064 ) -PROVIDE ( r_lc_epr_resp , 0x4001e0b4 ) -PROVIDE ( r_lc_key_exch_end , 0x4001e140 ) -PROVIDE ( r_lc_legacy_pair , 0x4001e1c0 ) -PROVIDE ( r_lc_local_switch , 0x4001e22c ) -PROVIDE ( r_lc_local_trans_mode , 0x4001e2e4 ) -PROVIDE ( r_lc_local_untrans_mode , 0x4001e3a0 ) -PROVIDE ( r_lc_max_slot_mgt , 0x4001e410 ) -PROVIDE ( r_lc_mutual_auth_end2 , 0x4001e4f4 ) -PROVIDE ( r_lc_mutual_auth_end , 0x4001e670 ) -PROVIDE ( r_lc_mst_key , 0x4001e7c0 ) -PROVIDE ( r_lc_mst_send_mst_key , 0x4001e8f4 ) -PROVIDE ( r_lc_mst_qos_done , 0x4001ea80 ) -PROVIDE ( r_lc_pairing_cont , 0x4001eafc ) -PROVIDE ( r_lc_passkey_comm , 0x4001ed20 ) -PROVIDE ( r_lc_proc_rcv_dhkey , 0x4001edec ) -PROVIDE ( r_lc_ptt , 0x4001ee2c ) -PROVIDE ( r_lc_ptt_cmp , 0x4001eeec ) -PROVIDE ( r_lc_qos_setup , 0x4001ef50 ) -PROVIDE ( r_lc_rd_rem_name , 0x4001efd0 ) -PROVIDE ( r_lc_restore_afh_reporting , 0x4001f028 ) -PROVIDE ( r_lc_rem_switch , 0x4001f070 ) -PROVIDE ( r_lc_rem_enc , 0x4001f124 ) -PROVIDE ( r_lc_rem_nego_trans_mode , 0x4001f1b4 ) -PROVIDE ( r_lc_rem_name_cont , 0x4001f290 ) -PROVIDE ( r_lc_rem_trans_mode , 0x4001f314 ) -PROVIDE ( r_lc_rem_untrans_mode , 0x4001f36c ) -PROVIDE ( r_lc_sec_auth_compute_sres , 0x4001f3ec ) -PROVIDE ( r_lc_resp_sec_auth , 0x4001f4a0 ) -PROVIDE ( r_lc_resp_auth , 0x4001f518 ) -PROVIDE ( r_lc_resp_oob_wait_nonce , 0x4001f66c ) -PROVIDE ( r_lc_resp_oob_nonce , 0x4001f694 ) -PROVIDE ( r_lc_resp_calc_f3 , 0x4001f710 ) -PROVIDE ( r_lc_resp_wait_dhkey_cont , 0x4001f86c ) -PROVIDE ( r_lc_release , 0x4001f8a8 ) -PROVIDE ( r_lc_restart_enc , 0x4001f8ec ) -PROVIDE ( r_lc_restart_enc_cont , 0x4001f940 ) -PROVIDE ( r_lc_restore_to , 0x4001f9e0 ) -PROVIDE ( r_lc_ret_sniff_max_slot_chg , 0x4001fa30 ) -PROVIDE ( r_lc_start_lmp_to , 0x4001fae8 ) -PROVIDE ( r_lc_start_enc , 0x4001fb28 ) -PROVIDE ( r_lc_start_enc_key_size , 0x4001fd9c ) -PROVIDE ( r_lc_start_key_exch , 0x4001fe10 ) -PROVIDE ( r_lc_start_passkey , 0x4001feac ) -PROVIDE ( r_lc_start_passkey_loop , 0x4001ff88 ) -PROVIDE ( r_lc_start_oob , 0x4001fffc ) -PROVIDE ( r_lc_resp_num_comp , 0x40020074 ) -PROVIDE ( r_lc_stop_enc , 0x40020110 ) -PROVIDE ( r_lc_stop_afh_report , 0x40020184 ) -PROVIDE ( r_lc_skip_hl_oob_req , 0x400201bc ) -PROVIDE ( r_lc_send_enc_mode , 0x40020220 ) -PROVIDE ( r_lc_semi_key_cmp , 0x40020294 ) -PROVIDE ( r_lc_detach , 0x4002037c ) -PROVIDE ( r_lc_switch_cmp , 0x40020448 ) -PROVIDE ( r_lc_sp_fail , 0x40020470 ) -PROVIDE ( r_lc_sp_oob_tid_fail , 0x400204cc ) -PROVIDE ( r_lc_sniff_sub_mode , 0x400204fc ) -PROVIDE ( r_lc_sniff_max_slot_chg , 0x40020590 ) -PROVIDE ( r_lc_upd_to , 0x4002065c ) -PROVIDE ( r_lc_unit_key_svr , 0x400206d8 ) -PROVIDE ( r_lc_unsniff_cont , 0x40020750 ) -PROVIDE ( r_lc_rem_unsniff , 0x400207a0 ) -PROVIDE ( r_lc_unsniff_cmp , 0x40020810 ) -PROVIDE ( r_lc_resp_pair , 0x400208a4 ) -PROVIDE ( r_lc_feat , 0x40020984 ) -PROVIDE ( r_lc_hl_connect , 0x400209e8 ) -PROVIDE ( r_lc_version , 0x40020a30 ) -PROVIDE ( r_lc_loc_sniff , 0x40020a6c ) -PROVIDE ( r_lc_rem_sniff_sub_rate , 0x40020b10 ) -PROVIDE ( r_lc_unsniff , 0x40020c50 ) -PROVIDE ( r_lc_rem_sniff , 0x40020ca4 ) -PROVIDE ( r_lc_ext_feat , 0x40020d6c ) -PROVIDE ( r_lc_pair , 0x40020ddc ) -PROVIDE ( r_lc_loc_auth , 0x40020ecc ) -PROVIDE ( r_lc_packet_type , 0x40021038 ) -PROVIDE ( r_lc_sniff_slot_unchange , 0x40021100 ) -PROVIDE ( r_lc_ssr_nego , 0x4002125c ) -PROVIDE ( r_lc_conn_seq_done , 0x40021334 ) -PROVIDE ( r_lc_send_enc_chg_evt , 0x4002134c ) -PROVIDE ( r_lc_sp_end , 0x400213a8 ) -PROVIDE ( r_lc_prepare_all_links_for_clk_adj , 0x40021430 ) -PROVIDE ( r_lc_sco_init , 0x40021dc8 ) -PROVIDE ( r_lc_sco_reset , 0x40021dfc ) -PROVIDE ( r_lc_sco_detach , 0x40021e40 ) -PROVIDE ( r_lc_sco_release , 0x40021eec ) -PROVIDE ( r_lc_sco_host_request , 0x40021f4c ) -PROVIDE ( r_lc_sco_host_accept , 0x40022118 ) -PROVIDE ( r_lc_sco_host_reject , 0x400222b8 ) -PROVIDE ( r_lc_sco_host_request_disc , 0x4002235c ) -PROVIDE ( r_lc_sco_peer_request , 0x4002240c ) -PROVIDE ( r_lc_sco_peer_accept , 0x40022780 ) -PROVIDE ( r_lc_sco_peer_reject , 0x40022824 ) -PROVIDE ( r_lc_sco_peer_request_disc , 0x400228ec ) -PROVIDE ( r_lc_sco_peer_accept_disc , 0x40022a08 ) -PROVIDE ( r_lc_sco_peer_reject_disc , 0x40022a8c ) -PROVIDE ( r_lc_sco_baseband_ack , 0x40022b00 ) -PROVIDE ( r_lc_sco_timeout , 0x40022bd4 ) -PROVIDE ( r_lc_sniff_init , 0x40022cac ) -PROVIDE ( r_lc_sniff_reset , 0x40022cc8 ) -PROVIDE ( r_LM_AddSniff , 0x40022d20 ) -PROVIDE ( r_LM_RemoveSniff , 0x40023124 ) -PROVIDE ( r_LM_SniffSubratingHlReq , 0x40023154 ) -PROVIDE ( r_LM_SniffSubratingPeerReq , 0x400231dc ) -PROVIDE ( r_LM_GetSniffSubratingParam , 0x4002325c ) -PROVIDE ( r_LM_SniffSubrateNegoRequired , 0x40023334 ) -PROVIDE ( r_LM_ComputeSniffSubRate , 0x400233ac ) -PROVIDE ( r_LM_RemoveSniffSubrating , 0x400233c4 ) -PROVIDE ( r_LM_GetLinkTimeout , 0x400233ec ) -PROVIDE ( lc_hci_cmd_handler_tab_p_get , 0x4002f488 ) -PROVIDE ( lc_default_state_tab_p_get , 0x4002f494 ) -PROVIDE ( r_lc_util_get_max_packet_size , 0x4002f4ac ) -PROVIDE ( r_lc_util_set_loc_trans_coll , 0x4002f500 ) -PROVIDE ( r_lc_util_get_offset_clkn , 0x4002f51c ) -PROVIDE ( r_lc_util_get_offset_clke , 0x4002f538 ) -PROVIDE ( r_LM_ComputePacketType , 0x4002f554 ) -PROVIDE ( r_LM_UpdateAclPacketType , 0x4002f584 ) -PROVIDE ( r_LM_UpdateAclEdrPacketType , 0x4002f5d8 ) -PROVIDE ( r_LM_SuppressAclPacket , 0x4002f658 ) -PROVIDE ( r_LM_MaxSlot , 0x4002f694 ) -PROVIDE ( r_LM_GetQoSParam , 0x4002f6e0 ) -PROVIDE ( r_LM_GetSwitchInstant , 0x4002f7f8 ) -PROVIDE ( r_LM_MakeCof , 0x4002f84c ) -PROVIDE ( r_LM_GetAFHSwitchInstant , 0x4002f86c ) -PROVIDE ( r_LM_CheckSwitchInstant , 0x4002f8c0 ) -PROVIDE ( r_LM_CheckEdrFeatureRequest , 0x4002f90c ) -PROVIDE ( r_LM_GetFeature , 0x4002f924 ) -PROVIDE ( r_lm_look_for_stored_link_key , 0x4002f948 ) -PROVIDE ( r_lc_util_convert_pref_rate_to_packet_type , 0x4002f9b0 ) -PROVIDE ( r_lm_get_common_pkt_types , 0x4002fa1c ) -PROVIDE ( r_ld_acl_init , 0x40034d08 ) -PROVIDE ( r_ld_acl_reset , 0x40034d24 ) -PROVIDE ( r_ld_acl_start , 0x40034ddc ) -PROVIDE ( r_ld_acl_stop , 0x4003532c ) -PROVIDE ( r_ld_acl_flow_off , 0x40035400 ) -PROVIDE ( r_ld_acl_flow_on , 0x4003541c ) -PROVIDE ( r_ld_acl_data_tx , 0x4003544c ) -PROVIDE ( r_ld_acl_data_flush , 0x400357bc ) -PROVIDE ( r_ld_acl_lmp_tx , 0x40035b34 ) -PROVIDE ( r_ld_acl_lmp_flush , 0x40035d80 ) -PROVIDE ( r_ld_acl_rsw_req , 0x40035e74 ) -PROVIDE ( r_ld_acl_flush_timeout_get , 0x40035f9c ) -PROVIDE ( r_ld_acl_flush_timeout_set , 0x40035fe0 ) -PROVIDE ( r_ld_acl_t_poll_get , 0x40036024 ) -PROVIDE ( r_ld_acl_t_poll_set , 0x40036068 ) -PROVIDE ( r_ld_acl_sniff_trans , 0x400360a8 ) -PROVIDE ( r_ld_acl_sniff , 0x4003617c ) -PROVIDE ( r_ld_acl_unsniff , 0x400361e0 ) -PROVIDE ( r_ld_acl_ssr_set , 0x40036274 ) -PROVIDE ( r_ld_acl_tx_enc , 0x400362f8 ) -PROVIDE ( r_ld_acl_rx_enc , 0x40036344 ) -PROVIDE ( r_ld_acl_bcst_rx_dec , 0x40036394 ) -PROVIDE ( r_ld_acl_enc_key_load , 0x40036404 ) -PROVIDE ( r_ld_acl_clock_offset_get , 0x400364c0 ) -PROVIDE ( r_ld_acl_slot_offset_get , 0x4003653c ) -PROVIDE ( r_ld_acl_slot_offset_set , 0x40036658 ) -PROVIDE ( r_ld_acl_lsto_get , 0x400366b4 ) -PROVIDE ( r_ld_acl_lsto_set , 0x400366f8 ) -PROVIDE ( r_ld_acl_timing_accuracy_set , 0x4003673c ) -PROVIDE ( r_ld_acl_edr_set , 0x4003678c ) -PROVIDE ( r_ld_acl_allowed_tx_packet_types_set , 0x40036810 ) -PROVIDE ( r_ld_acl_current_tx_power_get , 0x400368f0 ) -PROVIDE ( r_ld_acl_clk_set , 0x40036950 ) -PROVIDE ( r_ld_acl_clk_adj_set , 0x40036a00 ) -PROVIDE ( r_ld_acl_clk_off_get , 0x40036b00 ) -PROVIDE ( r_ld_acl_bit_off_get , 0x40036b18 ) -PROVIDE ( r_ld_acl_role_get , 0x40036b30 ) -PROVIDE ( r_ld_acl_afh_set , 0x40036b60 ) -PROVIDE ( r_ld_acl_afh_prepare , 0x40036c84 ) -PROVIDE ( r_ld_acl_afh_confirm , 0x40036d40 ) -PROVIDE ( r_ld_acl_active_hop_types_get , 0x40036e10 ) -PROVIDE ( r_ld_acl_rx_max_slot_get , 0x40036e58 ) -PROVIDE ( r_ld_acl_rx_max_slot_set , 0x40036ea0 ) -PROVIDE ( r_ld_acl_test_mode_set , 0x40036f24 ) -PROVIDE ( r_ld_acl_rssi_delta_get , 0x40037028 ) -PROVIDE ( r_ld_sco_start , 0x40037110 ) -PROVIDE ( r_ld_sco_update , 0x40037a74 ) -PROVIDE ( r_ld_sco_stop , 0x40037c40 ) -PROVIDE ( r_ld_sco_audio_isr , 0x40037cc8 ) -PROVIDE ( r_ld_sco_data_tx , 0x40037ee8 ) -PROVIDE ( r_ld_bcst_acl_start , 0x4003882c ) -PROVIDE ( r_ld_bcst_acl_init , 0x40038bd0 ) -PROVIDE ( r_ld_bcst_acl_reset , 0x40038bdc ) -PROVIDE ( r_ld_bcst_lmp_tx , 0x40038bf8 ) -PROVIDE ( r_ld_bcst_acl_data_tx , 0x40038d3c ) -PROVIDE ( r_ld_bcst_afh_update , 0x40038f3c ) -PROVIDE ( r_ld_bcst_tx_enc , 0x40038ff8 ) -PROVIDE ( r_ld_bcst_enc_key_load , 0x4003906c ) -PROVIDE ( r_ld_csb_rx_init , 0x40039690 ) -PROVIDE ( r_ld_csb_rx_reset , 0x4003969c ) -PROVIDE ( r_ld_csb_rx_start , 0x4003972c ) -PROVIDE ( r_ld_csb_rx_afh_update , 0x40039af4 ) -PROVIDE ( r_ld_csb_rx_stop , 0x40039bb8 ) -PROVIDE ( r_ld_csb_tx_init , 0x4003a0e8 ) -PROVIDE ( r_ld_csb_tx_reset , 0x4003a0f8 ) -PROVIDE ( r_ld_csb_tx_en , 0x4003a1c0 ) -PROVIDE ( r_ld_csb_tx_dis , 0x4003a5e8 ) -PROVIDE ( r_ld_csb_tx_afh_update , 0x4003a5fc ) -PROVIDE ( r_ld_csb_tx_set_data , 0x4003a6c0 ) -PROVIDE ( r_ld_csb_tx_clr_data , 0x4003a71c ) -PROVIDE ( r_ld_fm_init , 0x4003a760 ) -PROVIDE ( r_ld_fm_reset , 0x4003a794 ) -PROVIDE ( r_ld_fm_clk_isr , 0x4003a7a8 ) -PROVIDE ( r_ld_fm_rx_isr , 0x4003a7f4 ) -PROVIDE ( r_ld_fm_frame_isr , 0x4003a82c ) -PROVIDE ( r_ld_fm_sket_isr , 0x4003a8a4 ) -PROVIDE ( r_ld_fm_prog_enable , 0x4003a944 ) -PROVIDE ( r_ld_fm_prog_disable , 0x4003a984 ) -PROVIDE ( r_ld_fm_prog_push , 0x4003a9d4 ) -PROVIDE ( r_ld_fm_prog_check , 0x4003ab28 ) -PROVIDE ( r_ld_inq_init , 0x4003b15c ) -PROVIDE ( r_ld_inq_reset , 0x4003b168 ) -PROVIDE ( r_ld_inq_start , 0x4003b1f0 ) -PROVIDE ( r_ld_inq_stop , 0x4003b4f0 ) -PROVIDE ( r_ld_iscan_init , 0x4003b9f0 ) -PROVIDE ( r_ld_iscan_reset , 0x4003ba14 ) -PROVIDE ( r_ld_iscan_restart , 0x4003ba44 ) -PROVIDE ( r_ld_iscan_start , 0x4003bb28 ) -PROVIDE ( r_ld_iscan_stop , 0x4003bf1c ) -PROVIDE ( r_ld_iscan_eir_set , 0x4003bfa0 ) -PROVIDE ( r_ld_iscan_eir_get , 0x4003c118 ) -PROVIDE ( r_ld_iscan_tx_pwr_get , 0x4003c138 ) -PROVIDE ( r_ld_channel_assess , 0x4003c184 ) -PROVIDE ( r_ld_init , 0x4003c294 ) -PROVIDE ( r_ld_reset , 0x4003c714 ) -PROVIDE ( r_ld_read_clock , 0x4003c9e4 ) -PROVIDE ( r_ld_bd_addr_get , 0x4003ca20 ) -PROVIDE ( r_ld_class_of_dev_get , 0x4003ca34 ) -PROVIDE ( r_ld_class_of_dev_set , 0x4003ca50 ) -PROVIDE ( r_ld_version_get , 0x4003ca6c ) -PROVIDE ( r_ld_timing_accuracy_get , 0x4003caac ) -PROVIDE ( r_ld_active_check , 0x4003cac4 ) -PROVIDE ( r_ld_afh_ch_assess_data_get , 0x4003caec ) -PROVIDE ( r_ld_wlcoex_set , 0x4003caf8 ) -PROVIDE ( r_ld_page_init , 0x4003d808 ) -PROVIDE ( r_ld_page_reset , 0x4003d814 ) -PROVIDE ( r_ld_page_start , 0x4003d848 ) -PROVIDE ( r_ld_page_stop , 0x4003da54 ) -PROVIDE ( r_ld_pca_init , 0x4003deb4 ) -PROVIDE ( r_ld_pca_reset , 0x4003df0c ) -PROVIDE ( r_ld_pca_local_config , 0x4003df6c ) -PROVIDE ( r_ld_pca_reporting_enable , 0x4003e018 ) -PROVIDE ( r_ld_pca_update_target_offset , 0x4003e050 ) -PROVIDE ( r_ld_pca_mws_frame_sync , 0x4003e104 ) -PROVIDE ( r_ld_pca_mws_moment_offset_gt , 0x4003e278 ) -PROVIDE ( r_ld_pca_mws_moment_offset_lt , 0x4003e280 ) -PROVIDE ( r_ld_pca_coarse_clock_adjust , 0x4003e324 ) -PROVIDE ( r_ld_pca_initiate_clock_dragging , 0x4003e4ac ) -PROVIDE ( r_ld_pscan_evt_handler , 0x4003f238 ) -PROVIDE ( r_ld_pscan_init , 0x4003f474 ) -PROVIDE ( r_ld_pscan_reset , 0x4003f498 ) -PROVIDE ( r_ld_pscan_restart , 0x4003f4b8 ) -PROVIDE ( r_ld_pscan_start , 0x4003f514 ) -PROVIDE ( r_ld_pscan_stop , 0x4003f618 ) -PROVIDE ( r_ld_sched_compute , 0x4003f6f8 ) -PROVIDE ( r_ld_sched_init , 0x4003f7ac ) -PROVIDE ( r_ld_sched_reset , 0x4003f7d4 ) -PROVIDE ( r_ld_sched_iscan_add , 0x4003f7e8 ) -PROVIDE ( r_ld_sched_iscan_remove , 0x4003f808 ) -PROVIDE ( r_ld_sched_pscan_add , 0x4003f828 ) -PROVIDE ( r_ld_sched_pscan_remove , 0x4003f848 ) -PROVIDE ( r_ld_sched_sscan_add , 0x4003f868 ) -PROVIDE ( r_ld_sched_sscan_remove , 0x4003f888 ) -PROVIDE ( r_ld_sched_inq_add , 0x4003f8a8 ) -PROVIDE ( r_ld_sched_inq_remove , 0x4003f8d0 ) -PROVIDE ( r_ld_sched_page_add , 0x4003f910 ) -PROVIDE ( r_ld_sched_page_remove , 0x4003f938 ) -PROVIDE ( r_ld_sched_acl_add , 0x4003f978 ) -PROVIDE ( r_ld_sched_acl_remove , 0x4003f99c ) -PROVIDE ( r_ld_sched_sniff_add , 0x4003f9c4 ) -PROVIDE ( r_ld_sched_sniff_remove , 0x4003fa0c ) -PROVIDE ( r_ld_sched_sco_add , 0x4003fa4c ) -PROVIDE ( r_ld_sched_sco_remove , 0x4003fa9c ) -PROVIDE ( r_ld_sscan_init , 0x400402f0 ) -PROVIDE ( r_ld_sscan_reset , 0x400402fc ) -PROVIDE ( r_ld_sscan_activated , 0x4004031c ) -PROVIDE ( r_ld_sscan_start , 0x40040384 ) -PROVIDE ( r_ld_strain_init , 0x400409f4 ) -PROVIDE ( r_ld_strain_reset , 0x40040a00 ) -PROVIDE ( r_ld_strain_start , 0x40040a8c ) -PROVIDE ( r_ld_strain_stop , 0x40040df0 ) -PROVIDE ( r_ld_util_fhs_unpk , 0x40040e54 ) -PROVIDE ( r_ld_util_bch_create , 0x40040fcc ) -PROVIDE ( r_ld_util_fhs_pk , 0x400411c8 ) -PROVIDE ( r_ld_util_active_master_afh_map_set , 0x40041308 ) -PROVIDE ( r_ld_util_active_master_afh_map_get , 0x4004131c ) -PROVIDE ( r_ld_util_stp_unpk , 0x40041324 ) -PROVIDE ( r_ld_util_stp_pk , 0x400413f4 ) -PROVIDE ( r_llc_ch_assess_local , 0x40041494 ) -PROVIDE ( r_llc_ch_assess_get_local_ch_map , 0x4004150c ) -PROVIDE ( r_llc_ch_assess_get_current_ch_map , 0x40041574 ) -PROVIDE ( r_llc_ch_assess_merge_ch , 0x40041588 ) -PROVIDE ( r_llc_ch_assess_reass_ch , 0x400415c0 ) -PROVIDE ( llc_hci_cmd_handler_tab_p_get , 0x40042358 ) -PROVIDE ( llc_hci_command_handler , 0x40042360 ) -PROVIDE ( llc_hci_acl_data_tx_handler , 0x40042398 ) -PROVIDE ( llcp_pdu_handler_tab_p_get , 0x40043f64 ) -PROVIDE ( r_llc_llcp_version_ind_pdu_send , 0x40043f6c ) -PROVIDE ( r_llc_llcp_ch_map_update_pdu_send , 0x40043f94 ) -PROVIDE ( r_llc_llcp_pause_enc_req_pdu_send , 0x40043fd8 ) -PROVIDE ( r_llc_llcp_pause_enc_rsp_pdu_send , 0x40044010 ) -PROVIDE ( r_llc_llcp_enc_req_pdu_send , 0x40044064 ) -PROVIDE ( r_llc_llcp_enc_rsp_pdu_send , 0x40044160 ) -PROVIDE ( r_llc_llcp_start_enc_rsp_pdu_send , 0x400441f8 ) -PROVIDE ( r_llc_llcp_reject_ind_pdu_send , 0x4004425c ) -PROVIDE ( r_llc_llcp_con_update_pdu_send , 0x400442c4 ) -PROVIDE ( r_llc_llcp_con_param_req_pdu_send , 0x400442fc ) -PROVIDE ( r_llc_llcp_con_param_rsp_pdu_send , 0x40044358 ) -PROVIDE ( r_llc_llcp_feats_req_pdu_send , 0x400443b4 ) -PROVIDE ( r_llc_llcp_feats_rsp_pdu_send , 0x400443f0 ) -PROVIDE ( r_llc_llcp_start_enc_req_pdu_send , 0x4004441c ) -PROVIDE ( r_llc_llcp_terminate_ind_pdu_send , 0x400444b0 ) -PROVIDE ( r_llc_llcp_unknown_rsp_send_pdu , 0x40044534 ) -PROVIDE ( r_llc_llcp_ping_req_pdu_send , 0x4004454c ) -PROVIDE ( r_llc_llcp_ping_rsp_pdu_send , 0x40044560 ) -PROVIDE ( r_llc_llcp_length_req_pdu_send , 0x40044574 ) -PROVIDE ( r_llc_llcp_length_rsp_pdu_send , 0x400445ac ) -PROVIDE ( r_llc_llcp_tester_send , 0x400445e4 ) -PROVIDE ( r_llc_llcp_recv_handler , 0x40044678 ) -PROVIDE ( r_llc_llcp_get_autorize , 0x4004475c ) -PROVIDE ( r_llc_init , 0x40044778 ) -PROVIDE ( r_llc_reset , 0x400447b8 ) -PROVIDE ( r_llc_start , 0x400447f4 ) -PROVIDE ( r_llc_stop , 0x400449ac ) -PROVIDE ( r_llc_discon_event_complete_send , 0x40044a30 ) -PROVIDE ( r_llc_le_con_cmp_evt_send , 0x40044a78 ) -PROVIDE ( r_llc_con_update_complete_send , 0x40044d68 ) -PROVIDE ( r_llc_ltk_req_send , 0x40044dc0 ) -PROVIDE ( r_llc_feats_rd_event_send , 0x40044e0c ) -PROVIDE ( r_llc_version_rd_event_send , 0x40044e60 ) -PROVIDE ( r_llc_common_cmd_complete_send , 0x40044eac ) -PROVIDE ( r_llc_common_cmd_status_send , 0x40044ee0 ) -PROVIDE ( r_llc_common_flush_occurred_send , 0x40044f0c ) -PROVIDE ( r_llc_common_enc_key_ref_comp_evt_send , 0x40044f38 ) -PROVIDE ( r_llc_common_enc_change_evt_send , 0x40044f6c ) -PROVIDE ( r_llc_common_nb_of_pkt_comp_evt_send , 0x40045000 ) -PROVIDE ( r_llc_con_update_ind , 0x40045038 ) -PROVIDE ( r_llc_lsto_con_update , 0x40045098 ) -PROVIDE ( r_llc_map_update_ind , 0x400450f0 ) -PROVIDE ( r_llc_con_update_finished , 0x4004518c ) -PROVIDE ( r_llc_map_update_finished , 0x40045260 ) -PROVIDE ( llc_default_state_tab_p_get , 0x40046058 ) -PROVIDE ( r_llc_util_get_free_conhdl , 0x400460c8 ) -PROVIDE ( r_llc_util_get_nb_active_link , 0x40046100 ) -PROVIDE ( r_llc_util_dicon_procedure , 0x40046130 ) -PROVIDE ( r_llc_util_update_channel_map , 0x400461ac ) -PROVIDE ( r_llc_util_set_llcp_discard_enable , 0x400461c8 ) -PROVIDE ( r_llc_util_set_auth_payl_to_margin , 0x400461f4 ) -PROVIDE ( r_llc_util_clear_operation_ptr , 0x40046234 ) -PROVIDE ( r_llc_util_bw_mgt , 0x4004629c ) -PROVIDE ( r_llc_end_evt_defer , 0x40046330 ) -PROVIDE ( r_llc_pdu_llcp_tx_ack_defer , 0x400463ac ) -PROVIDE ( r_llc_pdu_acl_tx_ack_defer , 0x400464dc ) -PROVIDE ( r_llc_pdu_defer , 0x40046528 ) -PROVIDE ( r_lld_evt_delete_elt_handler , 0x40046974 ) -PROVIDE ( r_lld_evt_delete_elt_push , 0x40046a3c ) -PROVIDE ( r_lld_evt_channel_next , 0x40046aac ) -PROVIDE ( r_lld_evt_init , 0x40046b3c ) -PROVIDE ( r_lld_evt_init_evt , 0x40046cd0 ) -PROVIDE ( r_lld_evt_restart , 0x40046d50 ) -PROVIDE ( r_lld_evt_elt_insert , 0x400474c8 ) -PROVIDE ( r_lld_evt_elt_delete , 0x40047538 ) -PROVIDE ( r_lld_evt_drift_compute , 0x40047670 ) -PROVIDE ( r_lld_evt_schedule_next_instant , 0x400476a8 ) -PROVIDE ( r_lld_evt_schedule_next , 0x400477dc ) -PROVIDE ( r_lld_evt_schedule , 0x40047908 ) -PROVIDE ( r_lld_evt_prevent_stop , 0x40047adc ) -PROVIDE ( r_lld_evt_scan_create , 0x40047ae8 ) -PROVIDE ( r_lld_evt_move_to_master , 0x40047ba0 ) -PROVIDE ( r_lld_evt_update_create , 0x40047cd8 ) -PROVIDE ( r_lld_evt_move_to_slave , 0x40047e18 ) -PROVIDE ( r_lld_evt_slave_update , 0x40048138 ) -PROVIDE ( r_lld_evt_adv_create , 0x400481f4 ) -PROVIDE ( r_lld_evt_deffered_elt_handler , 0x400482bc ) -PROVIDE ( r_lld_evt_end , 0x400483e8 ) -PROVIDE ( r_lld_evt_rx , 0x40048578 ) -PROVIDE ( r_lld_evt_canceled , 0x400485c8 ) -PROVIDE ( r_lld_evt_end_isr , 0x4004862c ) -PROVIDE ( r_lld_evt_rx_isr , 0x40048678 ) -PROVIDE ( r_lld_init , 0x4004873c ) -PROVIDE ( r_lld_core_reset , 0x40048a9c ) -PROVIDE ( r_lld_adv_start , 0x40048b38 ) -PROVIDE ( r_lld_adv_stop , 0x40048ea0 ) -PROVIDE ( r_lld_scan_start , 0x40048ee0 ) -PROVIDE ( r_lld_scan_stop , 0x40049190 ) -PROVIDE ( r_lld_con_start , 0x400491f8 ) -PROVIDE ( r_lld_move_to_master , 0x400499e0 ) -PROVIDE ( r_lld_con_update_req , 0x40049b60 ) -PROVIDE ( r_lld_con_update_after_param_req , 0x40049bcc ) -PROVIDE ( r_lld_con_param_rsp , 0x40049e00 ) -PROVIDE ( r_lld_con_param_req , 0x40049f0c ) -PROVIDE ( r_lld_con_stop , 0x40049fdc ) -PROVIDE ( r_lld_get_mode , 0x40049ff8 ) -PROVIDE ( r_lld_move_to_slave , 0x4004a024 ) -PROVIDE ( r_lld_ch_map_ind , 0x4004a2f4 ) -PROVIDE ( r_lld_con_update_ind , 0x4004a30c ) -PROVIDE ( r_lld_crypt_isr , 0x4004a324 ) -PROVIDE ( r_lld_test_mode_tx , 0x4004a350 ) -PROVIDE ( r_lld_test_mode_rx , 0x4004a540 ) -PROVIDE ( r_lld_test_stop , 0x4004a710 ) -PROVIDE ( r_lld_ral_renew_req , 0x4004a73c ) -PROVIDE ( r_lld_pdu_check , 0x4004ac34 ) -PROVIDE ( r_lld_pdu_tx_loop , 0x4004ae40 ) -PROVIDE ( r_lld_pdu_data_tx_push , 0x4004aecc ) -PROVIDE ( r_lld_pdu_data_send , 0x4004b018 ) -PROVIDE ( r_lld_pdu_tx_push , 0x4004b080 ) -PROVIDE ( r_lld_pdu_tx_prog , 0x4004b120 ) -PROVIDE ( r_lld_pdu_tx_flush , 0x4004b414 ) -PROVIDE ( r_lld_pdu_adv_pack , 0x4004b488 ) -PROVIDE ( r_lld_pdu_rx_handler , 0x4004b4d4 ) -PROVIDE ( r_lld_pdu_send_packet , 0x4004b774 ) -PROVIDE ( r_lld_util_instant_get , 0x4004b890 ) -PROVIDE ( r_lld_util_get_bd_address , 0x4004b8ac ) -PROVIDE ( r_lld_util_set_bd_address , 0x4004b8f8 ) -PROVIDE ( r_lld_util_ral_force_rpa_renew , 0x4004b980 ) -PROVIDE ( r_lld_util_freq2chnl , 0x4004b9e4 ) -PROVIDE ( r_lld_util_get_local_offset , 0x4004ba10 ) -PROVIDE ( r_lld_util_get_peer_offset , 0x4004ba24 ) -PROVIDE ( r_lld_util_connection_param_set , 0x4004ba40 ) -PROVIDE ( r_lld_util_dle_set_cs_fields , 0x4004ba90 ) -PROVIDE ( r_lld_util_anchor_point_move , 0x4004bacc ) -PROVIDE ( r_lld_util_flush_list , 0x4004bbd8 ) -PROVIDE ( r_lld_util_instant_ongoing , 0x4004bbfc ) -PROVIDE ( r_lld_util_compute_ce_max , 0x4004bc0c ) -PROVIDE ( r_lld_util_elt_programmed , 0x4004bce0 ) -PROVIDE ( r_lld_util_priority_set , 0x4004bd10 ) -PROVIDE ( r_lld_util_priority_update , 0x4004bd78 ) -PROVIDE ( r_lld_util_get_tx_pkt_cnt , 0x4004bd80 ) -PROVIDE ( r_lld_util_eff_tx_time_set , 0x4004bd88 ) -PROVIDE ( r_lld_wlcoex_set , 0x4004bd98 ) -PROVIDE ( llm_hci_cmd_handler_tab_p_get , 0x4004c920 ) -PROVIDE ( hci_command_handler , 0x4004c928 ) -PROVIDE ( r_llm_init , 0x4004c9f8 ) -PROVIDE ( r_llm_ble_ready , 0x4004cc34 ) -PROVIDE ( r_llm_con_req_ind , 0x4004cc54 ) -PROVIDE ( r_llm_le_adv_report_ind , 0x4004cdf4 ) -PROVIDE ( r_llm_con_req_tx_cfm , 0x4004d158 ) -PROVIDE ( r_llm_common_cmd_complete_send , 0x4004d288 ) -PROVIDE ( r_llm_common_cmd_status_send , 0x4004d2b4 ) -PROVIDE ( r_llm_test_mode_start_tx , 0x4004d2fc ) -PROVIDE ( r_llm_test_mode_start_rx , 0x4004d534 ) -PROVIDE ( r_llm_set_adv_param , 0x4004d5f4 ) -PROVIDE ( r_llm_set_adv_en , 0x4004d7ec ) -PROVIDE ( r_llm_set_adv_data , 0x4004d960 ) -PROVIDE ( r_llm_set_scan_rsp_data , 0x4004da14 ) -PROVIDE ( r_llm_set_scan_param , 0x4004dac8 ) -PROVIDE ( r_llm_set_scan_en , 0x4004db64 ) -PROVIDE ( r_llm_wl_clr , 0x4004dc54 ) -PROVIDE ( r_llm_wl_dev_add , 0x4004dcc0 ) -PROVIDE ( r_llm_wl_dev_rem , 0x4004dcfc ) -PROVIDE ( r_llm_wl_dev_add_hdl , 0x4004dd38 ) -PROVIDE ( r_llm_wl_dev_rem_hdl , 0x4004dde0 ) -PROVIDE ( r_llm_create_con , 0x4004de78 ) -PROVIDE ( r_llm_encryption_done , 0x4004dff8 ) -PROVIDE ( r_llm_encryption_start , 0x4004e128 ) -PROVIDE ( r_llm_ral_clear , 0x4004e1fc ) -PROVIDE ( r_llm_ral_dev_add , 0x4004e23c ) -PROVIDE ( r_llm_ral_dev_rm , 0x4004e3bc ) -PROVIDE ( r_llm_ral_get_rpa , 0x4004e400 ) -PROVIDE ( r_llm_ral_set_timeout , 0x4004e4a0 ) -PROVIDE ( r_llm_ral_update , 0x4004e4f8 ) -PROVIDE ( llm_default_state_tab_p_get , 0x4004e718 ) -PROVIDE ( r_llm_util_bd_addr_wl_position , 0x4004e720 ) -PROVIDE ( r_llm_util_bd_addr_in_wl , 0x4004e788 ) -PROVIDE ( r_llm_util_check_address_validity , 0x4004e7e4 ) -PROVIDE ( r_llm_util_check_map_validity , 0x4004e800 ) -PROVIDE ( r_llm_util_apply_bd_addr , 0x4004e868 ) -PROVIDE ( r_llm_util_set_public_addr , 0x4004e89c ) -PROVIDE ( r_llm_util_check_evt_mask , 0x4004e8b0 ) -PROVIDE ( r_llm_util_get_channel_map , 0x4004e8d4 ) -PROVIDE ( r_llm_util_get_supp_features , 0x4004e8e8 ) -PROVIDE ( r_llm_util_adv_data_update , 0x4004e8fc ) -PROVIDE ( r_llm_util_bl_check , 0x4004e930 ) -PROVIDE ( r_llm_util_bl_add , 0x4004e9ac ) -PROVIDE ( r_llm_util_bl_rem , 0x4004ea70 ) -PROVIDE ( r_llm_util_bd_addr_in_ral , 0x4004eb08 ) -PROVIDE ( r_llm_end_evt_defer , 0x4004eb6c ) -PROVIDE ( r_llm_pdu_defer , 0x4004ec48 ) -PROVIDE ( r_lm_init , 0x4004ed34 ) -PROVIDE ( r_lm_lt_addr_alloc , 0x4004ef1c ) -PROVIDE ( r_lm_lt_addr_reserve , 0x4004ef48 ) -PROVIDE ( r_lm_lt_addr_free , 0x4004ef74 ) -PROVIDE ( r_lm_get_nb_acl , 0x4004ef9c ) -PROVIDE ( r_lm_role_switch_start , 0x4004efe0 ) -PROVIDE ( r_lm_role_switch_finished , 0x4004f028 ) -PROVIDE ( r_lm_read_features , 0x4004f0d8 ) -PROVIDE ( r_lm_acl_disc , 0x4004f148 ) -PROVIDE ( r_lm_get_auth_en , 0x4004f1ac ) -PROVIDE ( r_lm_get_sp_en , 0x4004f1c0 ) -PROVIDE ( r_lm_get_sec_con_host_supp , 0x4004f1d4 ) -PROVIDE ( r_LM_GetPINType , 0x4004f1e8 ) -PROVIDE ( r_LM_GetConnectionAcceptTimeout , 0x4004f1f4 ) -PROVIDE ( r_LM_GetLocalNameSeg , 0x4004f200 ) -PROVIDE ( r_lm_get_loopback_mode , 0x4004f248 ) -PROVIDE ( r_lm_get_pub_key_192 , 0x4004f258 ) -PROVIDE ( r_lm_get_priv_key_192 , 0x4004f278 ) -PROVIDE ( r_lm_get_pub_key_256 , 0x4004f298 ) -PROVIDE ( r_lm_get_priv_key_256 , 0x4004f2b8 ) -PROVIDE ( r_lm_get_oob_local_data_192 , 0x4004f2d4 ) -PROVIDE ( r_lm_get_oob_local_data_256 , 0x4004f318 ) -PROVIDE ( r_lm_get_oob_local_commit , 0x4004f374 ) -PROVIDE ( r_lm_sp_debug_mode_get , 0x4004f398 ) -PROVIDE ( r_lm_debug_key_compare_192 , 0x4004f3a8 ) -PROVIDE ( r_lm_debug_key_compare_256 , 0x4004f3d0 ) -PROVIDE ( r_lm_dut_mode_en_get , 0x4004f3ec ) -PROVIDE ( r_lm_afh_ch_ass_en_get , 0x4004f3f8 ) -PROVIDE ( r_lm_sync_flow_ctrl_en_get , 0x4004f404 ) -PROVIDE ( r_lm_afh_host_ch_class_get , 0x4004f410 ) -PROVIDE ( r_lm_afh_peer_ch_class_set , 0x4004f418 ) -PROVIDE ( r_lm_afh_master_ch_map_get , 0x4004f43c ) -PROVIDE ( r_lm_afh_activate_timer , 0x4004f444 ) -PROVIDE ( r_lm_is_acl_con , 0x4004f47c ) -PROVIDE ( r_lm_is_acl_con_role , 0x4004f49c ) -PROVIDE ( r_lm_is_clk_adj_instant_pending , 0x4004f4c8 ) -PROVIDE ( r_lm_clk_adj_instant_pending_set , 0x4004f4d8 ) -PROVIDE ( r_lm_is_clk_adj_ack_pending , 0x4004f4e8 ) -PROVIDE ( r_lm_num_clk_adj_ack_pending_set , 0x4004f500 ) -PROVIDE ( r_lm_clk_adj_ack_pending_clear , 0x4004f514 ) -PROVIDE ( r_lm_local_ext_fr_configured , 0x4004f540 ) -PROVIDE ( r_lm_pca_sscan_link_set , 0x4004f550 ) -PROVIDE ( r_lm_pca_sscan_link_get , 0x4004f560 ) -PROVIDE ( r_lm_get_sync_param , 0x400503b4 ) -PROVIDE ( r_lm_init_sync , 0x400512d8 ) -PROVIDE ( r_lm_reset_sync , 0x40051304 ) -PROVIDE ( r_lm_check_active_sync , 0x40051334 ) -PROVIDE ( r_lm_add_sync , 0x40051358 ) -PROVIDE ( r_lm_modif_sync , 0x40051578 ) -PROVIDE ( r_lm_check_sync_hl_rsp , 0x4005169c ) -PROVIDE ( r_lm_get_synchdl , 0x4005175c ) -PROVIDE ( r_lm_look_for_sync , 0x40051774 ) -PROVIDE ( r_lm_get_nb_sync_link , 0x4005179c ) -PROVIDE ( r_lm_get_min_sync_intv , 0x400517a8 ) -PROVIDE ( r_lm_remove_sync , 0x400517c8 ) -PROVIDE ( r_lm_sco_nego_end , 0x40051828 ) -PROVIDE ( r_lm_master_clk_adj_req_handler , 0x40054180 ) -PROVIDE ( lm_hci_cmd_handler_tab_p_get , 0x4005425c ) -PROVIDE ( lm_default_state_tab_p_get , 0x40054268 ) -PROVIDE ( btdm_r_modules_func_p_set , 0x40054270 ) -PROVIDE ( btdm_r_modules_func_p_get , 0x4005427c ) -PROVIDE ( btdm_r_plf_func_p_set , 0x40054288 ) -PROVIDE ( btdm_r_import_rf_phy_func_p_get , 0x40054298 ) -PROVIDE ( r_nvds_init , 0x40054410 ) -PROVIDE ( r_nvds_get , 0x40054488 ) -PROVIDE ( r_nvds_del , 0x400544c4 ) -PROVIDE ( r_nvds_lock , 0x400544fc ) -PROVIDE ( r_nvds_put , 0x40054534 ) -PROVIDE ( r_rf_rw_bt_init , 0x40054868 ) -PROVIDE ( r_rf_rw_le_init , 0x400549d0 ) -PROVIDE ( r_rf_rw_init , 0x40054b0c ) -PROVIDE ( r_rwble_init , 0x40054bf4 ) -PROVIDE ( r_rwble_reset , 0x40054ce8 ) -PROVIDE ( r_rwble_sleep_check , 0x40054d78 ) -PROVIDE ( r_rwble_activity_ongoing_check , 0x40054d8c ) -PROVIDE ( r_rwble_version , 0x40054dac ) -PROVIDE ( r_rwble_isr , 0x40054e08 ) -PROVIDE ( r_rwbt_init , 0x40055160 ) -PROVIDE ( r_rwbt_reset , 0x400551bc ) -PROVIDE ( r_rwbt_version , 0x4005520c ) -PROVIDE ( r_rwbt_isr , 0x40055248 ) -PROVIDE ( r_rwbt_sleep_check , 0x4005577c ) -PROVIDE ( r_rwbt_sleep_enter , 0x400557a4 ) -PROVIDE ( r_rwbt_sleep_wakeup , 0x400557fc ) -PROVIDE ( r_rwbt_sleep_wakeup_end , 0x400558cc ) -PROVIDE ( rwip_rf_p_get , 0x400558f4 ) -PROVIDE ( r_rwip_check_wakeup_boundary , 0x400558fc ) -PROVIDE ( r_rwip_init , 0x4005595c ) -PROVIDE ( r_rwip_reset , 0x40055ab8 ) -PROVIDE ( r_rwip_version , 0x40055b20 ) -PROVIDE ( r_rwip_schedule , 0x40055b38 ) -PROVIDE ( r_rwip_sleep , 0x40055b5c ) -PROVIDE ( r_rwip_wakeup , 0x40055dc4 ) -PROVIDE ( r_rwip_wakeup_end , 0x40055e18 ) -PROVIDE ( r_rwip_wakeup_delay_set , 0x40055e4c ) -PROVIDE ( r_rwip_prevent_sleep_set , 0x40055e64 ) -PROVIDE ( r_rwip_prevent_sleep_clear , 0x40055ec8 ) -PROVIDE ( r_rwip_sleep_enable , 0x40055f30 ) -PROVIDE ( r_rwip_ext_wakeup_enable , 0x40055f3c ) -PROVIDE ( r_rwip_pca_clock_dragging_only , 0x40055f48 ) -PROVIDE ( r_rwip_wlcoex_set , 0x40055f60 ) -PROVIDE ( r_rwip_assert_err , 0x40055f88 ) -PROVIDE ( r_ke_queue_extract , 0x40055fd0 ) -PROVIDE ( r_ke_queue_insert , 0x40056020 ) -PROVIDE ( __utoa , 0x400561f0 ) -PROVIDE ( utoa , 0x40056258 ) -PROVIDE ( setjmp , 0x40056268 ) -PROVIDE ( longjmp , 0x400562cc ) -PROVIDE ( abs , 0x40056340 ) -PROVIDE ( div , 0x40056348 ) -PROVIDE ( labs , 0x40056370 ) -PROVIDE ( ldiv , 0x40056378 ) -PROVIDE ( qsort , 0x40056424 ) -PROVIDE ( __itoa , 0x40056678 ) -PROVIDE ( itoa , 0x400566b4 ) -PROVIDE ( atoi , 0x400566c4 ) -PROVIDE ( _atoi_r , 0x400566d4 ) -PROVIDE ( atol , 0x400566ec ) -PROVIDE ( _atol_r , 0x400566fc ) -PROVIDE ( _strtol_r , 0x40056714 ) -PROVIDE ( strtol , 0x4005681c ) -PROVIDE ( _strtoul_r , 0x40056834 ) -PROVIDE ( strtoul , 0x4005692c ) -PROVIDE ( _iprintf_r , 0x40056944 ) -PROVIDE ( _printf_r , 0x40056944 ) -PROVIDE ( iprintf , 0x40056978 ) -PROVIDE ( printf , 0x40056978 ) -PROVIDE ( viprintf , 0x400569b4 ) -PROVIDE ( vprintf , 0x400569b4 ) -PROVIDE ( _viprintf_r , 0x400569e4 ) -PROVIDE ( _vprintf_r , 0x400569e4 ) -PROVIDE ( _vsniprintf_r , 0x40056a14 ) -PROVIDE ( _vsnprintf_r , 0x40056a14 ) -PROVIDE ( vsniprintf , 0x40056a68 ) -PROVIDE ( vsnprintf , 0x40056a68 ) -PROVIDE ( _vsiprintf_r , 0x40056a90 ) -PROVIDE ( _vsprintf_r , 0x40056a90 ) -PROVIDE ( vsiprintf , 0x40056ac4 ) -PROVIDE ( vsprintf , 0x40056ac4 ) -PROVIDE ( _sniprintf_r , 0x40056ae4 ) -PROVIDE ( _snprintf_r , 0x40056ae4 ) -PROVIDE ( sniprintf , 0x40056b4c ) -PROVIDE ( snprintf , 0x40056b4c ) -PROVIDE ( _siprintf_r , 0x40056bbc ) -PROVIDE ( _sprintf_r , 0x40056bbc ) -PROVIDE ( siprintf , 0x40056c08 ) -PROVIDE ( sprintf , 0x40056c08 ) -PROVIDE ( _asniprintf_r , 0x40056c64 ) -PROVIDE ( _asnprintf_r , 0x40056c64 ) -PROVIDE ( asniprintf , 0x40056cd8 ) -PROVIDE ( asnprintf , 0x40056cd8 ) -PROVIDE ( _asiprintf_r , 0x40056d4c ) -PROVIDE ( _asprintf_r , 0x40056d4c ) -PROVIDE ( asiprintf , 0x40056d9c ) -PROVIDE ( asprintf , 0x40056d9c ) -PROVIDE ( _vasniprintf_r , 0x40056df8 ) -PROVIDE ( _vasnprintf_r , 0x40056df8 ) -PROVIDE ( vasniprintf , 0x40056e58 ) -PROVIDE ( vasnprintf , 0x40056e58 ) -PROVIDE ( _vasiprintf_r , 0x40056e80 ) -PROVIDE ( _vasprintf_r , 0x40056e80 ) -PROVIDE ( vasiprintf , 0x40056eb8 ) -PROVIDE ( vasprintf , 0x40056eb8 ) -PROVIDE ( _fiprintf_r , 0x40056ed8 ) -PROVIDE ( _fprintf_r , 0x40056ed8 ) -PROVIDE ( fiprintf , 0x40056efc ) -PROVIDE ( fprintf , 0x40056efc ) -PROVIDE ( __ssputs_r , 0x40056f2c ) -PROVIDE ( __ssprint_r , 0x40056ff8 ) -PROVIDE ( _svfiprintf_r , 0x40057100 ) -PROVIDE ( _svfprintf_r , 0x40057100 ) -PROVIDE ( _printf_common , 0x40057338 ) -PROVIDE ( _printf_i , 0x40057404 ) -PROVIDE ( __sfputs_r , 0x40057790 ) -PROVIDE ( __sprint_r , 0x400577e4 ) -PROVIDE ( _vfiprintf_r , 0x40057850 ) -PROVIDE ( _vfprintf_r , 0x40057850 ) -PROVIDE ( vfiprintf , 0x40057ae8 ) -PROVIDE ( vfprintf , 0x40057ae8 ) -PROVIDE ( __svfiscanf_r , 0x40057b08 ) -PROVIDE ( __svfscanf_r , 0x40057b08 ) -PROVIDE ( vfiscanf , 0x40057eb8 ) -PROVIDE ( vfscanf , 0x40057eb8 ) -PROVIDE ( __svfscanf , 0x40057f04 ) -PROVIDE ( _vfiscanf_r , 0x40057f24 ) -PROVIDE ( _vfscanf_r , 0x40057f24 ) -PROVIDE ( _sungetc_r , 0x40057f6c ) -PROVIDE ( __ssrefill_r , 0x40057fec ) -PROVIDE ( __ssvfiscanf_r , 0x4005802c ) -PROVIDE ( __ssvfscanf_r , 0x4005802c ) -PROVIDE ( _scanf_chars , 0x40058384 ) -PROVIDE ( _scanf_i , 0x4005845c ) -PROVIDE ( viscanf , 0x40058698 ) -PROVIDE ( vscanf , 0x40058698 ) -PROVIDE ( _viscanf_r , 0x400586c8 ) -PROVIDE ( _vscanf_r , 0x400586c8 ) -PROVIDE ( _vsiscanf_r , 0x400586f8 ) -PROVIDE ( _vsscanf_r , 0x400586f8 ) -PROVIDE ( vsiscanf , 0x40058740 ) -PROVIDE ( vsscanf , 0x40058740 ) -PROVIDE ( iscanf , 0x40058760 ) -PROVIDE ( scanf , 0x40058760 ) -PROVIDE ( _iscanf_r , 0x4005879c ) -PROVIDE ( _scanf_r , 0x4005879c ) -PROVIDE ( siscanf , 0x400587d0 ) -PROVIDE ( sscanf , 0x400587d0 ) -PROVIDE ( _siscanf_r , 0x40058830 ) -PROVIDE ( _sscanf_r , 0x40058830 ) -PROVIDE ( fiscanf , 0x40058884 ) -PROVIDE ( fscanf , 0x40058884 ) -PROVIDE ( _fiscanf_r , 0x400588b4 ) -PROVIDE ( _fscanf_r , 0x400588b4 ) -PROVIDE ( _wcrtomb_r , 0x400588d8 ) -PROVIDE ( wcrtomb , 0x40058920 ) -PROVIDE ( __sfvwrite_r , 0x4005893c ) -PROVIDE ( __swbuf_r , 0x40058bec ) -PROVIDE ( __swbuf , 0x40058cb4 ) -PROVIDE ( __swsetup_r , 0x40058cc8 ) -PROVIDE ( __fputwc , 0x40058da0 ) -PROVIDE ( _fputwc_r , 0x40058e4c ) -PROVIDE ( fputwc , 0x40058ea8 ) -PROVIDE ( __ascii_wctomb , 0x40058ef0 ) -PROVIDE ( _wctomb_r , 0x40058f14 ) -PROVIDE ( __submore , 0x40058f3c ) -PROVIDE ( _ungetc_r , 0x40058fa0 ) -PROVIDE ( ungetc , 0x400590f4 ) -PROVIDE ( __smakebuf_r , 0x40059108 ) -PROVIDE ( __sflush_r , 0x400591e0 ) -PROVIDE ( _fflush_r , 0x40059320 ) -PROVIDE ( fflush , 0x40059394 ) -PROVIDE ( __srefill_r , 0x400593d4 ) -PROVIDE ( _setlocale_r , 0x4005950c ) -PROVIDE ( __locale_charset , 0x40059540 ) -PROVIDE ( __locale_mb_cur_max , 0x40059548 ) -PROVIDE ( __locale_msgcharset , 0x40059550 ) -PROVIDE ( __locale_cjk_lang , 0x40059558 ) -PROVIDE ( _localeconv_r , 0x40059560 ) -PROVIDE ( setlocale , 0x40059568 ) -PROVIDE ( localeconv , 0x4005957c ) -PROVIDE ( asctime , 0x40059588 ) -PROVIDE ( ctime , 0x400595b0 ) -PROVIDE ( ctime_r , 0x400595c4 ) -PROVIDE ( localtime , 0x400595dc ) -PROVIDE ( localtime_r , 0x400595fc ) -PROVIDE ( gmtime , 0x40059848 ) -PROVIDE ( gmtime_r , 0x40059868 ) -PROVIDE ( strftime , 0x40059ab4 ) -PROVIDE ( mktime , 0x4005a5e8 ) -PROVIDE ( start_tb_console , 0x4005a980 ) -PROVIDE ( ets_sha_enable , 0x4005c07c ) -PROVIDE ( ets_sha_disable , 0x4005c0a8 ) -PROVIDE ( ets_sha_init , 0x4005c0d4 ) -PROVIDE ( ets_sha_finish , 0x4005c104 ) -PROVIDE ( ets_sha_update , 0x4005c2a0 ) -PROVIDE ( ets_bigint_enable , 0x4005c498 ) -PROVIDE ( ets_bigint_disable , 0x4005c4e0 ) -PROVIDE ( ets_bigint_wait_finish , 0x4005c520 ) -PROVIDE ( ets_bigint_mod_power_prepare , 0x4005c54c ) -PROVIDE ( ets_bigint_mod_power_getz , 0x4005c614 ) -PROVIDE ( ets_bigint_mult_prepare , 0x4005c630 ) -PROVIDE ( ets_bigint_mult_getz , 0x4005c6e8 ) -PROVIDE ( ets_bigint_montgomery_mult_prepare , 0x4005c6fc ) -PROVIDE ( ets_bigint_montgomery_mult_getz , 0x4005c7a4 ) -PROVIDE ( ets_bigint_mod_mult_prepare , 0x4005c7b4 ) -PROVIDE ( ets_bigint_mod_mult_getz , 0x4005c818 ) -PROVIDE ( ets_aes_enable , 0x4005c8cc ) -PROVIDE ( ets_aes_disable , 0x4005c8f8 ) -PROVIDE ( ets_aes_set_endian , 0x4005c928 ) -PROVIDE ( ets_aes_setkey_enc , 0x4005c97c ) -PROVIDE ( ets_aes_setkey_dec , 0x4005c994 ) -PROVIDE ( ets_aes_crypt , 0x4005c9b8 ) -PROVIDE ( ets_secure_boot_start , 0x4005ca34 ) -PROVIDE ( ets_secure_boot_finish , 0x4005ca84 ) -PROVIDE ( ets_secure_boot_hash , 0x4005cad4 ) -PROVIDE ( ets_secure_boot_obtain , 0x4005cb14 ) -PROVIDE ( ets_secure_boot_check , 0x4005cb40 ) -PROVIDE ( ets_secure_boot_rd_iv , 0x4005cb84 ) -PROVIDE ( ets_secure_boot_rd_abstract , 0x4005cba8 ) -PROVIDE ( ets_secure_boot_check_start , 0x4005cbcc ) -PROVIDE ( ets_secure_boot_check_finish , 0x4005cc04 ) -PROVIDE ( aes_128_cbc_encrypt , 0x4005cc18 ) -PROVIDE ( aes_128_cbc_decrypt , 0x4005cc7c ) -PROVIDE ( aes_unwrap , 0x4005ccf0 ) -PROVIDE ( base64_encode , 0x4005cdbc ) -PROVIDE ( base64_decode , 0x4005ced8 ) -PROVIDE ( crc32_le , 0x4005cfec ) -PROVIDE ( crc32_be , 0x4005d024 ) -PROVIDE ( crc16_le , 0x4005d05c ) -PROVIDE ( crc16_be , 0x4005d09c ) -PROVIDE ( crc8_le , 0x4005d0e0 ) -PROVIDE ( crc8_be , 0x4005d114 ) -PROVIDE ( esp_crc8 , 0x4005d144 ) -PROVIDE ( hmac_md5_vector , 0x4005d17c ) -PROVIDE ( hmac_md5 , 0x4005d264 ) -PROVIDE ( MD5Init , 0x4005da7c ) -PROVIDE ( MD5Update , 0x4005da9c ) -PROVIDE ( MD5Final , 0x4005db1c ) -PROVIDE ( md5_vector , 0x4005db80 ) -PROVIDE ( mz_adler32 , 0x4005edbc ) -PROVIDE ( mz_crc32 , 0x4005ee88 ) -PROVIDE ( mz_free , 0x4005eed4 ) -PROVIDE ( tinfl_decompress , 0x4005ef30 ) -PROVIDE ( tinfl_decompress_mem_to_mem , 0x40060050 ) -PROVIDE ( tinfl_decompress_mem_to_callback , 0x40060090 ) -PROVIDE ( tdefl_compress , 0x400600bc ) -PROVIDE ( tdefl_compress_buffer , 0x400607f4 ) -PROVIDE ( tdefl_init , 0x40060810 ) -PROVIDE ( tdefl_get_prev_return_status , 0x400608d0 ) -PROVIDE ( tdefl_get_adler32 , 0x400608d8 ) -PROVIDE ( tdefl_compress_mem_to_output , 0x400608e0 ) -PROVIDE ( tdefl_compress_mem_to_mem , 0x40060900 ) -PROVIDE ( tdefl_write_image_to_png_file_in_memory_ex , 0x40060910 ) -PROVIDE ( tdefl_write_image_to_png_file_in_memory , 0x4006091c ) -PROVIDE ( rc4_skip , 0x40060928 ) -PROVIDE ( hmac_sha1_vector , 0x400609e4 ) -PROVIDE ( hmac_sha1 , 0x40060acc ) -PROVIDE ( sha1_prf , 0x40060ae8 ) -PROVIDE ( sha1_vector , 0x40060b64 ) -PROVIDE ( pbkdf2_sha1 , 0x40060ba4 ) -PROVIDE ( hmac_sha256_vector , 0x40060c84 ) -PROVIDE ( hmac_sha256 , 0x40060d58 ) -PROVIDE ( sha256_prf , 0x40060d70 ) -PROVIDE ( sha256_vector , 0x40060e08 ) -PROVIDE ( jd_prepare , 0x40060fa8 ) -PROVIDE ( jd_decomp , 0x400613e8 ) -PROVIDE ( spi_dummy_len_fix , 0x40061d90 ) -PROVIDE ( SelectSpiQIO , 0x40061ddc ) -PROVIDE ( SetSpiDrvs , 0x40061e78 ) -PROVIDE ( SelectSpiFunction , 0x40061f84 ) -PROVIDE ( SPI_user_command_read , 0x400621b0 ) -PROVIDE ( SPI_read_status , 0x4006226c ) -PROVIDE ( SPI_write_status , 0x400622f0 ) -PROVIDE ( SPI_write_enable , 0x40062320 ) -PROVIDE ( SPI_read_status_high , 0x40062448 ) -PROVIDE ( SPI_Common_Command , 0x4006246c ) -PROVIDE ( spi_cache_sram_init , 0x400626e4 ) -PROVIDE ( SPIUnlockXXX , 0x400628b0 ) -PROVIDE ( SPILock , 0x400628f0 ) -PROVIDE ( SPIReadModeCnfig , 0x40062944 ) -PROVIDE ( spi_flash_attach , 0x40062a6c ) -PROVIDE ( SPIMasterReadModeCnfig , 0x40062b64 ) -PROVIDE ( SPIClkConfig , 0x40062bc8 ) -PROVIDE ( SPIEraseChip , 0x40062c14 ) -PROVIDE ( SPIEraseBlock , 0x40062c4c ) -PROVIDE ( SPIEraseSector , 0x40062ccc ) -PROVIDE ( SPIWrite , 0x40062d50 ) -PROVIDE ( SPI_Write_Encrypt_Enable , 0x40062df4 ) -PROVIDE ( SPI_Prepare_Encrypt_Data , 0x40062e1c ) -PROVIDE ( SPI_Write_Encrypt_Disable , 0x40062e60 ) -PROVIDE ( SPI_Encrypt_Write , 0x40062e78 ) -PROVIDE ( SPIRead , 0x40062ed8 ) -PROVIDE ( SPIEraseArea , 0x400631ac ) -PROVIDE ( SPIParamCfg , 0x40063238 ) -PROVIDE ( __mulsf3 , 0x400632c8 ) -PROVIDE ( __eqsf2 , 0x40063374 ) -PROVIDE ( __nesf2 , 0x40063374 ) -PROVIDE ( __gtsf2 , 0x400633a0 ) -PROVIDE ( __lesf2 , 0x400633c0 ) -PROVIDE ( __gesf2 , 0x4006340c ) -PROVIDE ( __ltsf2 , 0x4006342c ) -PROVIDE ( __unordsf2 , 0x40063478 ) -PROVIDE ( __negdf2 , 0x400634a0 ) -PROVIDE ( __muldf3 , 0x4006358c ) -PROVIDE ( __eqdf2 , 0x400636a8 ) -PROVIDE ( __nedf2 , 0x400636a8 ) -PROVIDE ( __gtdf2 , 0x400636dc ) -PROVIDE ( __ledf2 , 0x40063704 ) -PROVIDE ( __gedf2 , 0x40063768 ) -PROVIDE ( __ltdf2 , 0x40063790 ) -PROVIDE ( __unorddf2 , 0x400637f4 ) -PROVIDE ( __cmpdi2 , 0x40063820 ) -PROVIDE ( __ucmpdi2 , 0x40063840 ) -PROVIDE ( __clear_cache , 0x40063860 ) -PROVIDE ( __absvsi2 , 0x40063868 ) -PROVIDE ( __absvdi2 , 0x4006387c ) -PROVIDE ( __powisf2 , 0x4006389c ) -PROVIDE ( __powidf2 , 0x400638d4 ) -PROVIDE ( __mulsc3 , 0x40063934 ) -PROVIDE ( __muldc3 , 0x40063bf4 ) -PROVIDE ( __divsc3 , 0x40064200 ) -PROVIDE ( __divdc3 , 0x40064460 ) -PROVIDE ( __bswapsi2 , 0x4006499c ) -PROVIDE ( __bswapdi2 , 0x400649c4 ) -PROVIDE ( __clrsbsi2 , 0x40064a20 ) -PROVIDE ( __clrsbdi2 , 0x40064a38 ) -PROVIDE ( __gcc_bcmp , 0x40064a70 ) -PROVIDE ( __udiv_w_sdiv , 0x40064aa8 ) -PROVIDE ( __udivmoddi4 , 0x40064ab0 ) diff --git a/src/common/platforms/esp32/stubs/Makefile b/src/common/platforms/esp32/stubs/Makefile deleted file mode 100644 index 857512afe..000000000 --- a/src/common/platforms/esp32/stubs/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -# -# Copyright (c) 2015 Cesanta Software Limited -# All rights reserved -# - -STUB = stub_hello.c -LIBS = -PARAMS = -PORT = /dev/ttyUSB0 - -BUILD_DIR = .build -COMMON_STUB_DIR = ../../esp -STUB_ELF = $(BUILD_DIR)/$(patsubst %.c,%.elf,$(notdir $(STUB))) -STUB_JSON ?= $(BUILD_DIR)/$(patsubst %.c,%.json,$(notdir $(STUB))) -SDK = $(shell cat ../../../../fw/platforms/esp32/sdk.version) -XT_CC = xtensa-esp32-elf-gcc - -.PHONY: all clean run wrap - -all: $(STUB_ELF) - -$(STUB_ELF): $(STUB) $(LIBS) - @echo " CC $^ -> $@" - @[ -d $(BUILD_DIR) ] || mkdir $(BUILD_DIR) - @docker run --rm -i -v $(CURDIR)/../../../..:/src $(SDK) //bin/bash -c \ - "cd /src/common/platforms/esp32/stubs && \ - $(XT_CC) -std=c99 -Wall -Werror -Os -DESP32 \ - -mtext-section-literals -mlongcalls -nostdlib -fno-builtin \ - -I. -I/src/common/platforms/esp \ - -I/opt/Espressif/esp-idf/components/esp32/include \ - -I/opt/Espressif/esp-idf/components/soc/esp32/include \ - -L/opt/Espressif/esp-idf -Wl,-static \ - -ffunction-sections -Wl,--gc-sections \ - -Tstub.ld -o $@ $^" - -wrap: $(STUB_JSON) - -$(STUB_JSON): $(STUB_ELF) $(COMMON_STUB_DIR)/esptool.py - @echo " WRAP $< -> $@" - @docker run --rm -i -v $(CURDIR)/../../../..:/src $(SDK) //bin/bash -c \ - "cd /src/common/platforms/esp32/stubs && \ - $(COMMON_STUB_DIR)/esptool.py wrap_stub $<" > $@ - -run: $(STUB_JSON) - @echo " RUN $< $(PARAMS) -> $(PORT)" - @docker run --rm -i --privileged -v $(CURDIR)/../../../..:/src $(SDK) //bin/bash -c \ - "cd /src/common/platforms/esp32/stubs && \ - $(COMMON_STUB_DIR)/esptool.py --port $(PORT) run_stub $< $(PARAMS)" - -clean: - @rm -rf $(BUILD_DIR) diff --git a/src/common/platforms/esp32/stubs/README.md b/src/common/platforms/esp32/stubs/README.md deleted file mode 100644 index 926577123..000000000 --- a/src/common/platforms/esp32/stubs/README.md +++ /dev/null @@ -1,13 +0,0 @@ -This is a ESP boot loader stub development environment. - -Code produced in this environment can be loaded and executed -in the bootloader environment. Usually it is used to implement -functionality not found in the bootloader. - -Stubs can be executed using the `run_stub` command of the modified esptool.py provided. -`wrap_stub` produces a JSON represenattion of the stub that can later be reused -or built into other tools. - -Example usage: - $ make run STUB=stub_flash_size.c PORT=/dev/ttyUSB0 - $ make run STUB=stub_md5.c PORT=/dev/ttyUSB0 PARAMS="0x11000 10000 1" diff --git a/src/common/platforms/esp32/stubs/led.c b/src/common/platforms/esp32/stubs/led.c deleted file mode 100644 index dfa692107..000000000 --- a/src/common/platforms/esp32/stubs/led.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "soc/gpio_reg.h" - -void led_setup(int io) { - if (io < 32) { - WRITE_PERI_REG(GPIO_ENABLE_W1TS_REG, 1 << io); - } else { - WRITE_PERI_REG(GPIO_ENABLE1_W1TS_REG, 1 << (io - 32)); - } -} - -void led_on(int io) { - if (io < 32) { - WRITE_PERI_REG(GPIO_OUT_W1TS_REG, 1 << io); - } else { - WRITE_PERI_REG(GPIO_OUT1_W1TS_REG, 1 << (io - 32)); - } -} - -void led_off(int io) { - if (io < 32) { - WRITE_PERI_REG(GPIO_OUT_W1TC_REG, 1 << io); - } else { - WRITE_PERI_REG(GPIO_OUT1_W1TC_REG, 1 << (io - 32)); - } -} - -void led_toggle(int io) { - if (READ_PERI_REG(GPIO_OUT_REG & (1 << io))) { - WRITE_PERI_REG(GPIO_OUT_W1TC_REG, 1 << io); - } else { - WRITE_PERI_REG(GPIO_OUT_W1TS_REG, 1 << io); - } -} diff --git a/src/common/platforms/esp32/stubs/led.h b/src/common/platforms/esp32/stubs/led.h deleted file mode 100644 index e79733d92..000000000 --- a/src/common/platforms/esp32/stubs/led.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -void led_setup(int io); -void led_on(int io); -void led_off(int io); -void led_toggle(int io); diff --git a/src/common/platforms/esp32/stubs/rom_functions.h b/src/common/platforms/esp32/stubs/rom_functions.h deleted file mode 100644 index 1b2eee4d6..000000000 --- a/src/common/platforms/esp32/stubs/rom_functions.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef CS_COMMON_PLATFORMS_ESP32_STUBS_ROM_FUNCTIONS_H_ -#define CS_COMMON_PLATFORMS_ESP32_STUBS_ROM_FUNCTIONS_H_ - -#include "rom/ets_sys.h" -#include "rom/spi_flash.h" -#include "rom/md5_hash.h" -#include "rom/uart.h" -#include "rom/rtc.h" - -#endif /* CS_COMMON_PLATFORMS_ESP32_STUBS_ROM_FUNCTIONS_H_ */ diff --git a/src/common/platforms/esp32/stubs/sdkconfig.h b/src/common/platforms/esp32/stubs/sdkconfig.h deleted file mode 100644 index 0ecac1317..000000000 --- a/src/common/platforms/esp32/stubs/sdkconfig.h +++ /dev/null @@ -1 +0,0 @@ -#define CONFIG_SPI_FLASH_ROM_DRIVER_PATCH 1 diff --git a/src/common/platforms/esp32/stubs/stub.ld b/src/common/platforms/esp32/stubs/stub.ld deleted file mode 100644 index 84085bb36..000000000 --- a/src/common/platforms/esp32/stubs/stub.ld +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2016 Cesanta Software Limited - * All rights reserved - */ - -MEMORY { - iram : org = 0x40090000, len = 0x10000 - /* DRAM startin at 0x3FFC0000 gets stomped by something before mem_finish - * and is thus not suitable for initialized data, but works fine for BSS. */ - dram_bss : org = 0x3FFC0000, len = 0x10000 - dram : org = 0x3FFD0000, len = 0x10000 -} - -ENTRY(stub_main) - -SECTIONS { - .params 0x40090000 : { - _params_start = ABSOLUTE(.); - *(.params) - _params_end = ABSOLUTE(.); - } > iram - - .text : ALIGN(4) { - _code_start = ABSOLUTE(.); - *(.literal) - *(.text .text.*) - } > iram - - .bss : ALIGN(4) { - _bss_start = ABSOLUTE(.); - *(.bss) - _bss_end = ABSOLUTE(.); - } > dram - - .data : ALIGN(4) { - _data_start = ABSOLUTE(.); - *(.data) - *(.rodata .rodata.*) - } > dram -} - -INCLUDE "components/esp32/ld/esp32.rom.ld" -INCLUDE "components/esp32/ld/esp32.rom.spiram_incompatible_fns.ld" - -PROVIDE(ets_isr_mask = 0x400067fc); -PROVIDE(ets_isr_unmask = 0x40006808); -PROVIDE(MD5Init = 0x4005da7c); -PROVIDE(MD5Update = 0x4005da9c); -PROVIDE(MD5Final = 0x4005db1c); -PROVIDE(esp_rom_spiflash_attach = 0x40062a6c); -PROVIDE(esp_rom_spiflash_config_clk = 0x40062bc8); diff --git a/src/common/platforms/esp32/stubs/stub_hello.c b/src/common/platforms/esp32/stubs/stub_hello.c deleted file mode 100644 index 3f64a4060..000000000 --- a/src/common/platforms/esp32/stubs/stub_hello.c +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <inttypes.h> -#include <string.h> -#include "slip.h" - -/* Define the args vector and put it into the ".params" section. */ -uint32_t params[3] __attribute__((section(".params"))); - -/* Define a function called stub_main. Do not return or reboot. - * Use send_packet to communicate to the host. */ - -const char *hello = "Hello"; - -static char buf[1024]; -extern uint32_t _bss_start, _bss_end; - -void stub_main(void) { - uint32_t greeting = 0x4941484f; - SLIP_send(&greeting, 4); - memset(&_bss_start, 0, (&_bss_end - &_bss_start)); - buf[1] = 123; - SLIP_send(hello, 5); - while (1) { - } -} diff --git a/src/common/platforms/esp32/stubs/uart.c b/src/common/platforms/esp32/stubs/uart.c deleted file mode 100644 index d6d1faad0..000000000 --- a/src/common/platforms/esp32/stubs/uart.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "uart.h" - -#include "rom_functions.h" - -uint32_t set_baud_rate(uint32_t uart_no, uint32_t old_baud_rate, - uint32_t new_baud_rate) { - uint32_t uart_reg = REG_READ(UART_CLKDIV_REG(uart_no)); - uint32_t uart_div = uart_reg & UART_CLKDIV_M; - uint32_t fraction = (uart_reg >> UART_CLKDIV_FRAG_S) & UART_CLKDIV_FRAG_V; - uart_div = (uart_div << 4) + fraction; - uint32_t master_freq = uart_div * old_baud_rate; - uart_div_modify(uart_no, master_freq / new_baud_rate); - return uart_div; -} diff --git a/src/common/platforms/esp32/stubs/uart.h b/src/common/platforms/esp32/stubs/uart.h deleted file mode 100644 index 99e351ac1..000000000 --- a/src/common/platforms/esp32/stubs/uart.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef CS_COMMON_PLATFORMS_ESP32_STUBS_UART_H_ -#define CS_COMMON_PLATFORMS_ESP32_STUBS_UART_H_ - -#include <stdint.h> - -uint32_t set_baud_rate(uint32_t uart_no, uint32_t old_baud_rate, - uint32_t new_baud_rate); - -#endif /* CS_COMMON_PLATFORMS_ESP32_STUBS_UART_H_ */ diff --git a/src/common/platforms/esp8266/common.mk b/src/common/platforms/esp8266/common.mk deleted file mode 100644 index 8ce894eda..000000000 --- a/src/common/platforms/esp8266/common.mk +++ /dev/null @@ -1,77 +0,0 @@ -CFLAGS_EXTRA ?= - -XTENSA_TOOLS_ROOT ?= /opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/bin -SDK_PATH ?= /opt/Espressif/ESP8266_SDK -ESPTOOL ?= esptool.py -ESPPORT ?= /dev/ttyACM0 -ESPSPEED ?= 230400 -# For flash = > 16Mbit -ESPFLASHARGS = --flash_mode dio --flash_size 32m - -VERBOSE ?= 0 - -CC := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-gcc -CXX := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-g++ -AR := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-ar -LD := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-gcc -OBJCOPY := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-objcopy -NM := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-nm -CC_WRAPPER ?= - -define link -$(vecho) "LD $@" -$(Q) $(CC_WRAPPER) $(LD) $(LIBDIRS) -T$(LD_SCRIPT) $(LDFLAGS) -o $@ \ --Wl,-Map=$@.map -Wl,--start-group $1 -Wl,--end-group -endef - -define compile_params -$(vecho) "$5 $1" -$(Q) $(CC_WRAPPER) $3 -MD -MP $(INCDIRS) $4 -c $1 -o $2 -endef - -define compile -$(call compile_params,$<,$@, $(CC), $(CFLAGS),"CC") -endef - -define compile_cxx -$(call compile_params,$<,$@, $(CXX), $(CXXFLAGS),"CXX") -endef - -# some of these flags works around for gdb 7.5.x stacktrace issue -# while still allowing -Os to remove padding between data in .rodata -# section, allowing us to gain about 1k of ram. -# text section is 4k bigger, but we care more about ram at the moment. -# TODO(mkm): figure out which flag(s). -NO_Os_FLAGS= -fno-expensive-optimizations -fno-thread-jumps \ - -fno-align-functions -fno-align-jumps \ - -fno-align-loops -fno-align-labels -fno-caller-saves \ - -fno-crossjumping -fno-cse-follow-jumps -fno-cse-skip-blocks \ - -fno-delete-null-pointer-checks -fno-devirtualize \ - -fno-gcse -fno-gcse-lm -fno-hoist-adjacent-loads \ - -fno-inline-small-functions -fno-indirect-inlining -fno-partial-inlining \ - -fno-ipa-cp -fno-ipa-sra -fno-peephole2 -fno-optimize-sibling-calls -fno-optimize-strlen \ - -fno-reorder-blocks -fno-reorder-blocks-and-partition -fno-reorder-functions \ - -fno-sched-interblock -fno-sched-spec -fno-rerun-cse-after-loop \ - -fno-schedule-insns -fno-schedule-insns2 -fno-strict-aliasing -fno-strict-overflow \ - -fno-tree-builtin-call-dce -fno-tree-switch-conversion -fno-tree-tail-merge \ - -fno-tree-pre -fno-tree-vrp - -C_CXX_FLAGS = -W -Wall -Werror -Wundef -Wno-comment -Wno-variadic-macros -Wpointer-arith \ - -Wno-missing-field-initializers \ - -pipe -Os $(NO_Os_FLAGS) -g3 \ - -Wl,-EL -fno-inline-functions \ - -D_XOPEN_SOURCE=500 \ - -nostdlib -mlongcalls -mtext-section-literals -D__ets__ -DSTATIC=static \ - -Wno-parentheses \ - -DIRAM='__attribute__((section(".fast.text")))' \ - -DICACHE_RAM_ATTR=IRAM \ - -DNOINSTR='__attribute__((no_instrument_function))' \ - -DCS_PLATFORM=3 \ - -ffunction-sections -fdata-sections - -CFLAGS = -std=gnu99 $(C_CXX_FLAGS) -CXXFLAGS = -std=gnu++11 -fno-exceptions $(C_CXX_FLAGS) - -# linker flags used to generate the main object file -LDFLAGS = -nostdlib -Wl,--no-check-sections -u call_user_start \ - -Wl,-static -Wl,--gc-sections diff --git a/src/common/platforms/esp8266/esp_crypto.c b/src/common/platforms/esp8266/esp_crypto.c deleted file mode 100644 index ab8e97e2a..000000000 --- a/src/common/platforms/esp8266/esp_crypto.c +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <stdbool.h> -#include <stdint.h> -#include <stdlib.h> - -#include "mongoose.h" - -#ifdef RTOS_SDK -#include "esp_libc.h" -#else -#include "osapi.h" -#endif - -extern int sha1_vector(size_t num_msgs, const uint8_t *msgs[], - const size_t *msg_lens, uint8_t *digest); - -extern int md5_vector(size_t num_msgs, const uint8_t *msgs[], - const size_t *msg_lens, uint8_t *digest); - -/* For digest auth. */ -void mg_hash_md5_v(size_t num_msgs, const uint8_t *msgs[], - const size_t *msg_lens, uint8_t *digest) { - (void) md5_vector(num_msgs, msgs, msg_lens, digest); -} - -/* For WebSocket handshake. */ -void mg_hash_sha1_v(size_t num_msgs, const uint8_t *msgs[], - const size_t *msg_lens, uint8_t *digest) { - (void) sha1_vector(num_msgs, msgs, msg_lens, digest); -} diff --git a/src/common/platforms/esp8266/esp_hw_wdt_register.h b/src/common/platforms/esp8266/esp_hw_wdt_register.h deleted file mode 100644 index 681d31acb..000000000 --- a/src/common/platforms/esp8266/esp_hw_wdt_register.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef CS_COMMON_PLATFORMS_ESP8266_ESP_HW_WDT_REGISTER_H_ -#define CS_COMMON_PLATFORMS_ESP8266_ESP_HW_WDT_REGISTER_H_ - -#ifdef RTOS_SDK -#include <esp_common.h> -#else -#include <user_interface.h> -#endif - -#define REG_WDT_BASE 0x60000900 - -#define WDT_CTL (REG_WDT_BASE + 0x0) -#define WDT_CTL_ENABLE (BIT(0)) -#define WDT_CTL_STAGE1_NO_RESET (BIT(1)) -#define WDT_CTL_STAGE1_DISABLE (BIT(2)) -#define WDT_CTL_UNK3 (BIT(3)) -#define WDT_CTL_UNK4 (BIT(4)) -#define WDT_CTL_UNK5 (BIT(5)) - -/* Bits 3, 4, 5 - ???; set to 1 by ROM. */ - -#define WDT_RELOAD_STAGE0 (REG_WDT_BASE + 0x4) -#define WDT_RELOAD_STAGE0_V (0xf) -#define WDT_RELOAD_STAGE0_S (0) - -#define WDT_RELOAD_STAGE1 (REG_WDT_BASE + 0x8) -#define WDT_RELOAD_STAGE1_V (0xf) -#define WDT_RELOAD_STAGE1_S (0) - -#define WDT_COUNT (REG_WDT_BASE + 0xc) /* Counts at CPU_CLK (80 MHz) */ -#define WDT_COUNT_V (0xffffffff) -#define WDT_COUNT_S (0) - -#define WDT_STAGE (REG_WDT_BASE + 0x10) -#define WDT_STAGE_V (1) -#define WDT_STAGE_S (0) - -#define WDT_RESET (REG_WDT_BASE + 0x14) -#define WDT_RESET_V (0xff) -#define WDT_RESET_S (0) - -#define WDT_RESET_STAGE (REG_WDT_BASE + 0x18) -#define WDT_RESET_STAGE_V (0xff) -#define WDT_RESET_STAGE_S (0) - -#define WDT_RESET_VALUE 0x73 - -#endif /* CS_COMMON_PLATFORMS_ESP8266_ESP_HW_WDT_REGISTER_H_ */ diff --git a/src/common/platforms/esp8266/esp_missing_includes.h b/src/common/platforms/esp8266/esp_missing_includes.h deleted file mode 100644 index e6ef8e7cc..000000000 --- a/src/common/platforms/esp8266/esp_missing_includes.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef CS_COMMON_PLATFORMS_ESP8266_ESP_MISSING_INCLUDES_H_ -#define CS_COMMON_PLATFORMS_ESP8266_ESP_MISSING_INCLUDES_H_ - -#include <stdint.h> -#include <stdlib.h> - -void pp_soft_wdt_init(void); -void pp_soft_wdt_stop(void); -void pp_soft_wdt_feed(void); -void pp_soft_wdt_restart(void); -void system_soft_wdt_stop(void); /* Alias for pp_soft_wdt_stop */ - -void Cache_Read_Disable(void); -void Cache_Read_Enable(uint32_t, uint32_t, uint32_t); -void Cache_Read_Disable_2(void); -void Cache_Read_Enable_2(void); -void Cache_Read_Enable_New(void); - -int SPIEraseBlock(uint32_t block); -uint32_t SPIRead(uint32_t addr, void *dst, uint32_t size); - -#ifndef RTOS_SDK - -#include <ets_sys.h> - -/* There are no declarations for these anywhere in the SDK (as of 1.2.0). */ -void ets_isr_mask(unsigned intr); -void ets_isr_unmask(unsigned intr); -void system_restart_local(void); -int os_printf_plus(const char *format, ...); - -void ets_wdt_init(void); -void ets_wdt_enable(uint32_t mode, uint32_t arg1, uint32_t arg2); -void ets_wdt_disable(void); -void ets_wdt_restore(uint32_t mode); -uint32_t ets_wdt_get_mode(void); - -void _xtos_l1int_handler(void); -void _xtos_set_exception_handler(); -void xthal_set_intenable(unsigned); - -/* These are present in mem.h but are commented out. */ -void *pvPortMalloc(size_t xWantedSize, const char *file, int line); -void vPortFree(void *pv, const char *file, int line); -void *pvPortZalloc(size_t size, const char *file, int line); -void *pvPortRealloc(void *pv, size_t size, const char *file, int line); - -#else /* !RTOS_SDK */ - -#define BIT(nr) (1UL << (nr)) -void system_soft_wdt_feed(void); -void system_soft_wdt_restart(void); -void ets_putc(char c); - -#endif /* RTOS_SDK */ - -void _ResetVector(void); - -#endif /* CS_COMMON_PLATFORMS_ESP8266_ESP_MISSING_INCLUDES_H_ */ diff --git a/src/common/platforms/esp8266/esp_ssl_krypton.h b/src/common/platforms/esp8266/esp_ssl_krypton.h deleted file mode 100644 index 75a2353b0..000000000 --- a/src/common/platforms/esp8266/esp_ssl_krypton.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef CS_COMMON_PLATFORMS_ESP8266_ESP_SSL_KRYPTON_H_ -#define CS_COMMON_PLATFORMS_ESP8266_ESP_SSL_KRYPTON_H_ - -#include "krypton/krypton.h" - -struct mg_connection; - -void mg_lwip_ssl_do_hs(struct mg_connection *nc); -void mg_lwip_ssl_send(struct mg_connection *nc); -void mg_lwip_ssl_recv(struct mg_connection *nc); - -#endif /* CS_COMMON_PLATFORMS_ESP8266_ESP_SSL_KRYPTON_H_ */ diff --git a/src/common/platforms/esp8266/esp_umm_malloc.c b/src/common/platforms/esp8266/esp_umm_malloc.c deleted file mode 100644 index 15869a712..000000000 --- a/src/common/platforms/esp8266/esp_umm_malloc.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <string.h> -#include <stdio.h> -#include "common/umm_malloc/umm_malloc.h" -#include "esp_umm_malloc.h" - -#if ESP_UMM_ENABLE - -/* - * ESP-specific glue for the `umm_malloc`. - * - * In SDK (https://github.com/cesanta/esp-open-sdk), there is an archive - * `sdk/lib/libmain.a` which contains some files, including `mem_manager.o`. - * - * The `mem_manager.o` contains all the heap-related functions: `pvPortMalloc`, - * etc. We have weaken all symbols from `mem_manager.o` by - * `xtensa-lx106-elf-objcopy` (see exact commands in Dockerfile: - * `docker/esp8266/Dockerfile-esp8266-build-oss`), and provide our own - * implementations in this file. - * - * ------------------------------------ - * - * NOTE that not all public functions from `mem_manager.o` need to be replaced: - * some of them are used only internally: - * - * - system_show_malloc() - * - pvShowMalloc() - * - prvInsertBlockIntoUsedList() - * - prvRemoveBlockFromUsedList() - * - check_memleak_debug_enable() - * - vPortInitialiseBlocks() - * - * So when we replace all the rest (`pvPortMalloc`, etc), we can check with - * `objdump` that resulting binary (for SJ, it's `fw.out`) doesn't contain - * any of the "internal" functions. - * - * ------------------------------------ - * - * NOTE that to make linker actually consider implementations in this file, - * you should explicitly reference some function from it. This is what - * `esp_umm_init()` is for: it is a dummy no-op function that must be called - * from somewhere outside. - * - * If you don't do this, linker will merely garbage-collect this file, and - * will use heap implementation from SDK. - */ - -void *pvPortMalloc(size_t size, const char *file, unsigned line) { - (void) file; - (void) line; - - return umm_malloc(size); -} - -void *pvPortCalloc(size_t num, size_t size, const char *file, unsigned line) { - (void) file; - (void) line; - - return umm_calloc(num, size); -} - -void *pvPortZalloc(size_t size, const char *file, unsigned line) { - void *ret; - - (void) file; - (void) line; - - ret = umm_malloc(size); - if (ret != NULL) memset(ret, 0, size); - return ret; -} - -void *pvPortRealloc(void *ptr, size_t size, const char *file, unsigned line) { - (void) file; - (void) line; - - return umm_realloc(ptr, size); -} - -void vPortFree(void *ptr, const char *file, unsigned line) { - (void) file; - (void) line; - - umm_free(ptr); -} - -size_t xPortGetFreeHeapSize(void) { - return umm_free_heap_size(); -} - -size_t xPortWantedSizeAlign(void) { - return 4; -} - -void esp_umm_init(void) { - /* Nothing to do, see header for details */ -} - -void esp_umm_oom_cb(size_t size, size_t blocks_cnt) { - fprintf(stderr, "E:M %u (%u blocks)\n", (unsigned int) size, - (unsigned int) blocks_cnt); -} - -#endif /* ESP_UMM_ENABLE */ diff --git a/src/common/platforms/esp8266/esp_umm_malloc.h b/src/common/platforms/esp8266/esp_umm_malloc.h deleted file mode 100644 index f838e4f3d..000000000 --- a/src/common/platforms/esp8266/esp_umm_malloc.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#if ESP_UMM_ENABLE - -/* - * This is a no-op dummy function that is merely needed because we have to - * reference any function from the file `esp_umm_malloc.c`, so that linker - * won't garbage-collect the whole compilation unit. - */ -void esp_umm_init(void); - -/* - * Callback that gets called by umm_malloc in case of Out-of-memory error. - * - * `size` is the size requested by user, and `block_cnt` is a number of heap - * blocks that umm_malloc failed to allocate - */ -void esp_umm_oom_cb(size_t size, size_t blocks_cnt); - -#endif /* CS_COMMON_PLATFORMS_ESP8266_ESP_UMM_MALLOC_H_ */ diff --git a/src/common/platforms/esp8266/rboot/esptool2/Makefile b/src/common/platforms/esp8266/rboot/esptool2/Makefile deleted file mode 100644 index 4cccf2a7e..000000000 --- a/src/common/platforms/esp8266/rboot/esptool2/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -# -# Makefile for esptool2 -# https://github.com/raburton/esp8266 -# - -CFLAGS = -O2 -Wall -CC = gcc -LD = gcc -BUILD_DIR = ../../build - -all: $(BUILD_DIR) $(BUILD_DIR)/esptool2 - -$(BUILD_DIR): - @mkdir -p $(BUILD_DIR) - -$(BUILD_DIR)/esptool2.o: esptool2.c esptool2.h esptool2_elf.h elf.h - @echo "CC $<" - $(CC) $(CFLAGS) -c $< -o $@ - -$(BUILD_DIR)/esptool2_elf.o: esptool2_elf.c esptool2.h esptool2_elf.h elf.h - @echo "CC $<" - $(CC) $(CFLAGS) -c $< -o $@ - -$(BUILD_DIR)/esptool2: $(BUILD_DIR)/esptool2.o $(BUILD_DIR)/esptool2_elf.o - @echo "LD $@" - $(LD) -o $@ $^ diff --git a/src/common/platforms/esp8266/rboot/esptool2/elf.h b/src/common/platforms/esp8266/rboot/esptool2/elf.h deleted file mode 100644 index a69971839..000000000 --- a/src/common/platforms/esp8266/rboot/esptool2/elf.h +++ /dev/null @@ -1,76 +0,0 @@ -// Based on a small portion of ELF.h from LLVM - -//===-- llvm/Support/ELF.h - ELF constants and data structures --*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. -// -//===----------------------------------------------------------------------===// -// -// This header contains common, non-processor-specific data structures and -// constants for the ELF file format. -// -// The details of the ELF32 bits in this file are largely based on the Tool -// Interface Standard (TIS) Executable and Linking Format (ELF) Specification -// Version 1.2, May 1995. The ELF64 stuff is based on ELF-64 Object File Format -// Version 1.5, Draft 2, May 1998 as well as OpenBSD header files. -// -//===----------------------------------------------------------------------===// - -#ifndef CS_COMMON_PLATFORMS_ESP8266_RBOOT_ESPTOOL2_ELF_H_ -#define CS_COMMON_PLATFORMS_ESP8266_RBOOT_ESPTOOL2_ELF_H_ - -typedef uint32_t Elf32_Addr; // Program address -typedef uint32_t Elf32_Off; // File offset -typedef uint16_t Elf32_Half; -typedef uint32_t Elf32_Word; -typedef int32_t Elf32_Sword; - -// e_ident size and indices -enum { - EI_MAG0 = 0, // File identification index. - EI_MAG1 = 1, // File identification index. - EI_MAG2 = 2, // File identification index. - EI_MAG3 = 3, // File identification index. - EI_CLASS = 4, // File class. - EI_DATA = 5, // Data encoding. - EI_VERSION = 6, // File version. - EI_OSABI = 7, // OS/ABI identification. - EI_ABIVERSION = 8, // ABI version. - EI_PAD = 9, // Start of padding bytes. - EI_NIDENT = 16 // Number of bytes in e_ident. -}; - -typedef struct { - unsigned char e_ident[EI_NIDENT]; // ELF Identification bytes - Elf32_Half e_type; // Type of file (see ET_* below) - Elf32_Half e_machine; // Required architecture for this file (see EM_*) - Elf32_Word e_version; // Must be equal to 1 - Elf32_Addr e_entry; // Address to jump to in order to start program - Elf32_Off e_phoff; // Program header table's file offset, in bytes - Elf32_Off e_shoff; // Section header table's file offset, in bytes - Elf32_Word e_flags; // Processor-specific flags - Elf32_Half e_ehsize; // Size of ELF header, in bytes - Elf32_Half e_phentsize; // Size of an entry in the program header table - Elf32_Half e_phnum; // Number of entries in the program header table - Elf32_Half e_shentsize; // Size of an entry in the section header table - Elf32_Half e_shnum; // Number of entries in the section header table - Elf32_Half e_shstrndx; // Sect hdr table index of sect name string table -} Elf32_Ehdr; - -typedef struct { - Elf32_Word sh_name; // Section name (index into string table) - Elf32_Word sh_type; // Section type (SHT_*) - Elf32_Word sh_flags; // Section flags (SHF_*) - Elf32_Addr sh_addr; // Address where section is to be loaded - Elf32_Off sh_offset; // File offset of section data, in bytes - Elf32_Word sh_size; // Size of section, in bytes - Elf32_Word sh_link; // Section type-specific header table index link - Elf32_Word sh_info; // Section type-specific extra information - Elf32_Word sh_addralign; // Section address alignment - Elf32_Word sh_entsize; // Size of records contained within the section -} Elf32_Shdr; - -#endif /* CS_COMMON_PLATFORMS_ESP8266_RBOOT_ESPTOOL2_ELF_H_ */ diff --git a/src/common/platforms/esp8266/rboot/esptool2/esptool2.c b/src/common/platforms/esp8266/rboot/esptool2/esptool2.c deleted file mode 100644 index aa9b457c8..000000000 --- a/src/common/platforms/esp8266/rboot/esptool2/esptool2.c +++ /dev/null @@ -1,561 +0,0 @@ -/********************************************************************************** -* -* Copyright (c) 2015 Richard A Burton <richardaburton@gmail.com> -* -* This file is part of esptool2. -* -* esptool2 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. -* -* esptool2 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 esptool2. If not, see <http://www.gnu.org/licenses/>. -* -**********************************************************************************/ -/* clang-format off */ - -#include <stdlib.h> -#include <string.h> -#include <stdarg.h> - -#include "esptool2.h" -#include "esptool2_elf.h" - -#define IMAGE_PADDING 16 -#define SECTION_PADDING 4 -#define IROM_SECTION_PADDING 4096 -#define CHECKSUM_INIT 0xEF -#define BIN_MAGIC_IROM 0xEA -#define BIN_MAGIC_FLASH 0xE9 - -typedef struct { - Elf32_Addr addr; - Elf32_Word size; -} Section_Header; - -typedef struct { - unsigned char magic; - unsigned char count; - unsigned char byte2; - unsigned char byte3; - Elf32_Addr entry; -} Image_Header; - -static const char PADDING[IROM_SECTION_PADDING] = {0}; - -static bool debugon = false; -static bool quieton = false; - -// Print a standard info message (unless quiet mode) -void print(const char* format, ...) { - va_list args; - - if (!quieton) { - va_start(args, format); - vprintf(format, args); - va_end(args); - } -} - -// Print a debug message (if debug mode) -void debug(const char* format, ...) { - va_list args; - - if (debugon) { - va_start(args, format); - vprintf(format, args); - va_end(args); - } -} - -// Print an error message (always) -void error(const char* format, ...) { - va_list args; - - va_start(args, format); - vfprintf(stderr, format, args); - va_end(args); -} - -// Write an elf section (by name) to an existing file. -// Parameters: -// headed - add a header to the output -// zeroaddr - force zero entry point in header (default is the real entry point) -// padded - output will be padded to multiple of SECTION_PADDING bytes -// chksum - pointer to existing checksum to add this data to (zero if not needed) -// Produces error message on failure (so caller doesn't need to). -bool WriteElfSection(MyElf_File *elf, FILE *outfile, char* name, bool headed, - bool zeroaddr, int padto, unsigned char *chksum) { - - int i, pad = 0; - bool ret = false; - unsigned char *bindata = 0; - Section_Header sechead; - MyElf_Section *sect; - - // get elf section header - sect = GetElfSection(elf, name); - if(!sect) { - error("Error: Section '%s' not found in elf file.\r\n", name); - goto end_function; - } - - // create image section header - sechead.addr = (zeroaddr ? 0 : sect->address); - sechead.size = sect->size; - - // do we need to pad the section? - if (padto) { - pad = sechead.size % padto; - if (pad > 0) { - pad = padto - pad; - sechead.size += pad; - } - } - - debug("Adding section '%s', addr: 0x%08x, size: %d (+%d bytes(s) padding).\r\n", - name, sect->address, sect->size, pad); - - // get elf section binary data - bindata = GetElfSectionData(elf, sect); - if (!bindata) { - goto end_function; - } - - // write section (and pad if required) - if((headed && fwrite(&sechead, 1, sizeof(sechead), outfile) != sizeof(sechead)) - || fwrite(bindata, 1, sect->size, outfile) != sect->size - || (pad > 0 && fwrite(PADDING, 1, pad, outfile) != pad)) { - error("Error: Failed to write section '%s' to image file.\r\n", name); - goto end_function; - } - - // include section data in the checksum - if(chksum) { - for(i = 0; i < (int)sect->size; i++) { - *chksum ^= bindata[i]; - } - } - - ret = true; - -end_function: - if (bindata) free(bindata); - return ret; -} - -// Load an elf file and export a section of it to a new file, without -// header, padding or checksum. For exporting the .irom0.text library. -// Produces error message on failure (so caller doesn't need to). -bool ExportElfSection(char *infile, char *outfile, char *name) { - - bool ret = false; - FILE *fd = 0; - MyElf_File *elf = 0; - - // load elf file - elf = LoadElf(infile); - if (!elf) { - goto end_function; - } - - // open output file - fd = fopen(outfile, "wb"); - if(!fd) { - error("Error: Can't open output file '%s' for writing.\r\n", outfile); - goto end_function; - } - - // actually do the export - ret = WriteElfSection(elf, fd, name, false, false, false, 0); - -end_function: - // clean up - if (fd) fclose(fd); - UnloadElf(elf); - - return ret; -} - -// Create the main binary firmware image, from specified elf sections. -// Can produce for standard standalone app (separate .irom0.text) -// or sdk bootloaded apps (integrated .irom0.text). -// Choice of type requires appropriately linked elf file. -// Produces error message on failure (so caller doesn't need to). -bool CreateHeaderFile(char *elffile, char *imagefile, char *sections[], int numsec) { - - bool ret = false; - int i; - unsigned int j, len; - FILE *outfile = 0; - MyElf_File *elf = 0; - MyElf_Section *sect; - unsigned char *bindata = 0; - char name[31]; - - // load elf file - elf = LoadElf(elffile); - if (!elf) { - goto end_function; - } - - // open output file - outfile = fopen(imagefile, "wb"); - if(outfile == NULL) { - error("Error: Failed to open output file '%s' for writing.\r\n", imagefile); - goto end_function; - } - - // add entry point - fprintf(outfile, "const uint32 entry_addr = 0x%08x;\r\n", elf->header.e_entry); - - // add sections - for (i = 0; i < numsec; i++) { - // get elf section header - sect = GetElfSection(elf, sections[i]); - if(!sect) { - error("Error: Section '%s' not found in elf file.\r\n", sections[i]); - goto end_function; - } - - // simple name fix name - strncpy(name, sect->name, 31); - len = strlen(name); - for (j = 0; j < len; j++) { - if (name[j] == '.') name[j] = '_'; - } - - // add address, length and start the data block - debug("Adding section '%s', addr: 0x%08x, size: %d.\r\n", sections[i], sect->address, sect->size); - fprintf(outfile, "\r\nconst uint32 %s_addr = 0x%08x;\r\nconst uint32 %s_len = %d;\r\nconst uint8 %s_data[] = {", - name, sect->address, name, sect->size, name); - - // get elf section binary data - bindata = GetElfSectionData(elf, sect); - if (!bindata) { - goto end_function; - } - - // add the data and finish off the block - for (j = 0; j < sect->size; j++) { - if (j % 16 == 0) fprintf(outfile, "\r\n 0x%02x,", bindata[j]); - else fprintf(outfile, " 0x%02x,", bindata[j]); - } - fprintf(outfile, "\r\n};\r\n"); - free(bindata); - bindata = 0; - } - - // if we got this far everything worked! - ret = true; - -end_function: - // clean up - if (outfile) fclose(outfile); - if (elf) UnloadElf(elf); - if (bindata) free(bindata); - - return ret; -} - -// Create the main binary firmware image, from specified elf sections. -// Can produce for standard standalone app (separate .irom0.text) -// or sdk bootloaded apps (integrated .irom0.text). -// Choice of type requires appropriately linked elf file. -// Produces error message on failure (so caller doesn't need to). -bool CreateBinFile(char *elffile, char *imagefile, int bootver, unsigned char mode, - unsigned char clock, unsigned char size, bool iromchksum, char *sections[], int numsec) { - - bool ret = false; - int i, pad, len; - unsigned char chksum = CHECKSUM_INIT; - unsigned char *data = 0; - FILE *outfile = 0; - MyElf_File *elf = 0; - Image_Header imghead; - - // load elf file - elf = LoadElf(elffile); - if (!elf) { - goto end_function; - } - - // open output file - outfile = fopen(imagefile, "wb"); - if(outfile == NULL) { - error("Error: Failed to open output file '%s' for writing.\r\n", imagefile); - goto end_function; - } - - // set options common to standard and boot v1.2+ headers - imghead.byte2 = mode; - //imghead.byte3 = (int)((int)size << 4 | clock) && 0xff; - imghead.byte3 = ((size << 4) | clock) & 0xff; - imghead.entry = elf->header.e_entry; - debug("Size = %02x\r\n", size); - debug("Byte2 = %02x\r\n", imghead.byte2); - debug("Byte3 = %02x\r\n", imghead.byte3); - debug("Entry = %08x\r\n", imghead.entry); - - // boot v1.2+ header - if (bootver == 2) { - // extra header - imghead.magic = BIN_MAGIC_IROM; - imghead.count = 4; // probably a version number here, not a count - if(fwrite(&imghead, 1, sizeof(imghead), outfile) != sizeof(imghead)) { - error("Error: Failed to write header to image file.\r\n"); - goto end_function; - } - if(!WriteElfSection(elf, outfile, ".irom0.text", true, true, IROM_SECTION_PADDING, (iromchksum ? &chksum : 0))) { - goto end_function; - } - } - - // standard header - imghead.magic = BIN_MAGIC_FLASH; - imghead.count = numsec; - // write header - if(fwrite(&imghead, 1, sizeof(imghead), outfile) != sizeof(imghead)) { - error("Error: Failed to write header to image file.\r\n"); - goto end_function; - } - - // add sections - for (i = 0; i < numsec; i++) { - if(!WriteElfSection(elf, outfile, sections[i], true, false, SECTION_PADDING, &chksum)) { - goto end_function; - } - } - - // get image length (plus a byte for the checksum) - len = ftell(outfile) + 1; - - // do we need to pad the image? - pad = len % IMAGE_PADDING; - if (pad > 0) { - pad = IMAGE_PADDING - pad; - debug("Padding image with %d byte(s).\r\n", pad); - if(fwrite(PADDING, 1, pad, outfile) != pad) { - error("Error: Failed to write padding to image file.\r\n"); - goto end_function; - } - } - - // write checksum - if(fwrite(&chksum, 1, 1, outfile) != 1) { - error("Error: Failed to write checksum to image file.\r\n"); - goto end_function; - } - - // boot v1.1 - if(bootver == 1) { - // write 'ff' padding up to the position of the library - len = 0x10000 - ftell(outfile); - debug("Adding boot v1.1 padding, %d bytes of '0xff'.\r\n", len); - data = (unsigned char*)malloc(len); - memset(data, 0xff, len); - if(fwrite(data, 1, len, outfile) != len) { - error("Error: Failed to write boot v1.1 spacer.\r\n"); - goto end_function; - } - - // write the library - if(!WriteElfSection(elf, outfile, ".irom0.text", false, false, 0, 0)) { - goto end_function; - } - } - - // if we got this far everything worked! - ret = true; - -end_function: - // clean up - if (outfile) fclose(outfile); - if (data) free(data); - if (elf) UnloadElf(elf); - - return ret; -} - -int main(int argc, char *argv[]) { - - int i; - char *infile; - char *outfile; - int numstr; - bool binfile = false; - bool libfile = false; - bool headerfile = false; - bool paramerror = false; - bool iromchksum = false; - int bootver = 0; - /* Overwrite-friendly by default */ - unsigned char mode = 0xff; - unsigned char size = 0xff; - unsigned char clock = 0; - int opts = 0; - - // parse options - for (i = 1; i < argc; i++) { - if (!strcmp(argv[i], "-bin")) { - binfile = true; - opts++; - } else if (!strcmp(argv[i], "-lib")) { - libfile = true; - opts++; - } else if (!strcmp(argv[i], "-header")) { - headerfile = true; - opts++; - } else if (!strcmp(argv[i], "-quiet")) { - quieton = true; - } else if (!strcmp(argv[i], "-debug")) { - debugon = true; - } else if (!strcmp(argv[i], "-boot0")) { - bootver = 0; - } else if (!strcmp(argv[i], "-boot1")) { - bootver = 1; - } else if (!strcmp(argv[i], "-boot2")) { - bootver = 2; - } else if (!strcmp(argv[i], "-qio")) { - mode = 0; - } else if (!strcmp(argv[i], "-qout")) { - mode = 1; - } else if (!strcmp(argv[i], "-dio")) { - mode = 2; - } else if (!strcmp(argv[i], "-dout")) { - mode = 3; - } else if (!strcmp(argv[i], "-256")) { - size = 1; - } else if (!strcmp(argv[i], "-512")) { - size = 0; - } else if (!strcmp(argv[i], "-1024")) { - size = 2; - } else if (!strcmp(argv[i], "-2048")) { - size = 3; - } else if (!strcmp(argv[i], "-4096")) { - size = 4; - } else if (!strcmp(argv[i], "-20")) { - clock = 2; - } else if (!strcmp(argv[i], "-26.7")) { - clock = 1; - } else if (!strcmp(argv[i], "-40")) { - clock = 0; - } else if (!strcmp(argv[i], "-80")) { - clock = 15; - } else if (!strcmp(argv[i], "-iromchksum")) { - iromchksum = true; - } else if (!strcmp(argv[i], "--")) { - i++; - break; - } else if (argv[i][0] == '-') { - paramerror = true; - break; - } else { - break; - } - } - - print("esptool2 v2.0.0 - (c) 2015 Richard A Burton <richardaburton@gmail.com>\r\n"); - print("This program is licensed under the GPL v3.\r\n"); - print("See the file LICENSE for details.\r\n\r\n"); - - if (paramerror) { - error("Error: Unrecognised option '%s'.\r\n", argv[i]); - return -1; - } - - if (argc < 2) { - print("Usage:\r\n"); - print("esptool2 -lib [options] <input_file> <output_file>\r\n"); - print("esptool2 -bin [options] <input_file> <output_file> <elf_section>...\r\n"); - print("esptool2 -header [options] <input_file> <output_file> <elf_section>...\r\n"); - print("\r\n"); - print(" -lib\r\n"); - print(" Export the sdk library (.irom0.text), for a standalone app.\r\n"); - print(" e.g. esptool2 -elf esp8266_iot.out out.bin\r\n"); - print("\r\n"); - print(" -header\r\n"); - print(" Export elf sections as bytes to a C header file.\r\n"); - print(" e.g. esptool2 -elf esp8266_iot.out out.h .text .data .rodata\r\n"); - print("\r\n"); - print(" -bin\r\n"); - print(" Create binary program image, for standalone and bootloaded apps, with\r\n"); - print(" specified elf sections. Includes sdk library for bootloaded apps.\r\n"); - print(" e.g. esptool2 -bin esp8266_iot.out out.bin .text .data .rodata\r\n"); - print(" Options:\r\n"); - print(" bootloader: -boot0 -boot1 -boot2 (default -boot0)\r\n"); - print(" -boot0 = standalone app, not built for bootloader use\r\n"); - print(" -boot1 = built for bootloader v1.1\r\n"); - print(" -boot2 = built for bootloader v1.2+ (use for rBoot roms)\r\n"); - print(" (elf file must have been linked appropriately for chosen option)\r\n"); - print(" spi size (kb): -256 -512 -1024 -2048 -4096 (default -512)\r\n"); - print(" spi mode: -qio -qout -dio -dout (default -qio)\r\n"); - print(" spi speed: -20 -26.7 -40 -80 (default -40)\r\n"); - print(" include irom in checksum: -iromchksum (also needs enabling in rBoot)\r\n"); - print("\r\n"); - print("General options:\r\n"); - print(" -quiet prints only error messages\r\n"); - print(" -debug print extra debug information\r\n"); - print(" -- no more options follow (needed if your elf file starts with a '-')\r\n"); - print("\r\n"); - print("Returns:\r\n"); - print(" 0 on success\r\n"); - print(" -1 on failure\r\n"); - print("\r\n"); - return -1; - } - - // validate command line options - if (opts != 1) { - error("Error: You must specify -bin OR -lib OR -header for build type.\r\n"); - return -1; - } - - if (quieton && debugon) { - error("Error: You cannot specify -quiet and -debug.\r\n"); - return -1; - } - - // check enough parameters - if ((libfile && i + 2 > argc) || ((binfile | headerfile) && i + 3 > argc)) { - error("Error: Not enough arguments supplied.\r\n"); - return -1; - } else if (libfile && i + 2 < argc) { - error("Error: Too many arguments supplied.\r\n"); - return -1; - } - - // get parameters - infile = argv[i++]; - outfile = argv[i++]; - numstr = argc - i; - - // do it - if (binfile) { - if (!CreateBinFile(infile, outfile, bootver, mode, clock, size, iromchksum, &argv[i], numstr)) { - remove(outfile); - return -1; - } - } else if (headerfile) { - if (!CreateHeaderFile(infile, outfile, &argv[i], numstr)) { - remove(outfile); - return -1; - } - } else { - if (!ExportElfSection(infile, outfile, ".irom0.text")) { - remove(outfile); - return -1; - } - - } - - print("Successfully created '%s'.\r\n", outfile); - return 0; - -} diff --git a/src/common/platforms/esp8266/rboot/esptool2/esptool2.h b/src/common/platforms/esp8266/rboot/esptool2/esptool2.h deleted file mode 100644 index b0eba0846..000000000 --- a/src/common/platforms/esp8266/rboot/esptool2/esptool2.h +++ /dev/null @@ -1,44 +0,0 @@ -/********************************************************************************** -* -* Copyright (c) 2015 Richard A Burton <richardaburton@gmail.com> -* -* This file is part of esptool2. -* -* esptool2 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. -* -* esptool2 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 esptool2. If not, see <http://www.gnu.org/licenses/>. -* -**********************************************************************************/ - -#ifndef CS_COMMON_PLATFORMS_ESP8266_RBOOT_ESPTOOL2_ESPTOOL2_H_ -#define CS_COMMON_PLATFORMS_ESP8266_RBOOT_ESPTOOL2_ESPTOOL2_H_ - -#ifdef WIN32 -typedef signed __int8 int8_t; -typedef signed __int16 int16_t; -typedef signed __int32 int32_t; -typedef unsigned __int8 uint8_t; -typedef unsigned __int16 uint16_t; -typedef unsigned __int32 uint32_t; -#else -#include <stdint.h> -#endif - -#define true 1 -#define false 0 -#define bool char - -void debug( const char* format, ... ); -void print( const char* format, ... ); -void error( const char* format, ... ); - -#endif /* CS_COMMON_PLATFORMS_ESP8266_RBOOT_ESPTOOL2_ESPTOOL2_H_ */ diff --git a/src/common/platforms/esp8266/rboot/esptool2/esptool2_elf.c b/src/common/platforms/esp8266/rboot/esptool2/esptool2_elf.c deleted file mode 100644 index 88ede4e1d..000000000 --- a/src/common/platforms/esp8266/rboot/esptool2/esptool2_elf.c +++ /dev/null @@ -1,183 +0,0 @@ -/********************************************************************************** -* -* Copyright (c) 2015 Richard A Burton <richardaburton@gmail.com> -* -* This file is part of esptool2. -* -* esptool2 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. -* -* esptool2 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 esptool2. If not, see <http://www.gnu.org/licenses/>. -* -**********************************************************************************/ - -#include <stdlib.h> -#include <string.h> - -#include "esptool2.h" -#include "esptool2_elf.h" - -// Find a section in an elf file by name. -// Returns pointer to section if found, else returns zero. -// Does not produce any messages. -MyElf_Section* GetElfSection(MyElf_File *elf, char *name) { - - int i; - - for(i = 0; i < elf->header.e_shnum - 1; i++) { - if(!strcmp(name, elf->sections[i].name)) { - debug("Found section '%s'.\r\n", name); - return &elf->sections[i]; - } - } - - debug("Could not find section '%s'.\r\n", name); - return 0; -} - -// Reads an elf section (actual data) from the elf file. -// Returns a pointer to newly allocated memory (or zero on error), -// which should be freed by the caller when finished with. -// Produces error message on failure (so caller doesn't need to). -unsigned char* GetElfSectionData(MyElf_File *elf, MyElf_Section *section) { - - unsigned char *data = 0; - - if (section->size && section->offset) { - - data = (unsigned char*)malloc(section->size); - if(!data) { - error("Error: Out of memory!\r\n"); - return 0; - } - - if(fseek(elf->fd, section->offset, SEEK_SET) || - fread(data, 1, section->size, elf->fd) != section->size) { - error("Error: Can't read section '%s' data from elf file.\r\n", section->name); - free(data); - return 0; - } - - } else { - error("Error: Section '%s' has no data to read.\r\n", section->name); - } - - return data; -} - -// Opens an elf file and reads the string table and file & section headers. -// Returns a pointer to a MyElf_File structure (or zero on error). -// UnloadElf should be called to dispose of the MyElf_File structure. -// Produces error message on failure (so caller doesn't need to). -MyElf_File* LoadElf(char *infile) { - - int i; - MyElf_File *elf; - Elf32_Shdr temp; - - // allocate the elf structure - elf = (MyElf_File*)malloc(sizeof(MyElf_File)); - if(!elf) { - error("Error: Out of memory!\r\n"); - goto error_exit; - } - memset(elf, 0, sizeof(MyElf_File)); - - // open the file - elf->fd = fopen(infile, "rb"); - if(!elf->fd) { - error("Error: Can't open elf file '%s'.\r\n", infile); - goto error_exit; - } - - // read the header - if(fread(&elf->header, 1, sizeof(Elf32_Ehdr), elf->fd) != sizeof(Elf32_Ehdr)) { - error("Error: Can't read elf file header.\r\n"); - goto error_exit; - } - - // check the file header - if (memcmp(elf->header.e_ident, "\x7f" "ELF", 4)) { - error("Error: Input files doesn't look like an elf file (bad header).\r\n"); - goto error_exit; - } - - // is there a string table section (we need one) - if(!elf->header.e_shstrndx) { - error("Error: Elf file does not contain a string table.\r\n"); - goto error_exit; - } - - // get the string table section header - if(fseek(elf->fd, elf->header.e_shoff + (elf->header.e_shentsize * elf->header.e_shstrndx), SEEK_SET) || - fread(&temp, 1, sizeof(Elf32_Shdr), elf->fd) != sizeof(Elf32_Shdr)) { - - error("Error: Can't read string table section from elf file.\r\n"); - goto error_exit; - } - - // read the actual string table - if(!temp.sh_size) { - error("Error: Elf file contains an empty string table.\r\n"); - goto error_exit; - } - elf->strings = (char*)malloc(temp.sh_size); - if(!elf->strings) { - error("Error: Out of memory!\r\n"); - goto error_exit; - } - if(fseek(elf->fd, temp.sh_offset, SEEK_SET) || - fread(elf->strings, 1, temp.sh_size, elf->fd) != temp.sh_size) { - error("Error: Failed to read string stable from elf file.\r\n"); - goto error_exit; - } - - // read section headers - elf->sections = (MyElf_Section*)malloc(sizeof(MyElf_Section) * elf->header.e_shnum); - if(!elf->sections) { - error("Error: Out of memory!\r\n"); - goto error_exit; - } - for(i = 1; i < elf->header.e_shnum; i++) { - if(fseek(elf->fd, elf->header.e_shoff + (elf->header.e_shentsize * i), SEEK_SET) - || fread(&temp, 1, sizeof(Elf32_Shdr), elf->fd) != sizeof(Elf32_Shdr)) { - error("Error: Can't read section %d from elf file.\r\n", i); - break; - } - debug("Read section %d '%s'.\r\n", i, elf->strings + temp.sh_name); - elf->sections[i-1].address = temp.sh_addr; - elf->sections[i-1].offset = temp.sh_offset; - elf->sections[i-1].size = temp.sh_size; - elf->sections[i-1].name = elf->strings + temp.sh_name; - } - - return elf; - -error_exit: - if (elf) { - if (elf->fd) fclose(elf->fd); - if (elf->strings) free(elf->strings); - free(elf); - } - return 0; - -} - -// Close an elf file and dispose of the MyElf_File structure. -void UnloadElf(MyElf_File *elf) { - if (elf) { - debug("Unloading elf file.\r\n"); - if(elf->fd) fclose(elf->fd); - if(elf->strings) free(elf->strings); - if(elf->sections) free(elf->sections); - free(elf); - } -} diff --git a/src/common/platforms/esp8266/rboot/esptool2/esptool2_elf.h b/src/common/platforms/esp8266/rboot/esptool2/esptool2_elf.h deleted file mode 100644 index ef9851161..000000000 --- a/src/common/platforms/esp8266/rboot/esptool2/esptool2_elf.h +++ /dev/null @@ -1,48 +0,0 @@ -/********************************************************************************** -* -* Copyright (c) 2015 Richard A Burton <richardaburton@gmail.com> -* -* This file is part of esptool2. -* -* esptool2 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. -* -* esptool2 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 esptool2. If not, see <http://www.gnu.org/licenses/>. -* -**********************************************************************************/ - -#ifndef CS_COMMON_PLATFORMS_ESP8266_RBOOT_ESPTOOL2_ESPTOOL2_ELF_H_ -#define CS_COMMON_PLATFORMS_ESP8266_RBOOT_ESPTOOL2_ESPTOOL2_ELF_H_ - -#include <stdio.h> - -#include "elf.h" - -typedef struct { - Elf32_Off offset; - Elf32_Addr address; - Elf32_Word size; - char *name; -} MyElf_Section; - -typedef struct { - FILE *fd; - Elf32_Ehdr header; - char *strings; - MyElf_Section *sections; -} MyElf_File; - -MyElf_File* LoadElf(char *infile); -void UnloadElf(MyElf_File *e_object); -MyElf_Section* GetElfSection(MyElf_File *e_object, char *name); -unsigned char* GetElfSectionData(MyElf_File *e_object, MyElf_Section *section); - -#endif /* CS_COMMON_PLATFORMS_ESP8266_RBOOT_ESPTOOL2_ESPTOOL2_ELF_H_ */ diff --git a/src/common/platforms/esp8266/rboot/esptool2/license.txt b/src/common/platforms/esp8266/rboot/esptool2/license.txt deleted file mode 100644 index 94a9ed024..000000000 --- a/src/common/platforms/esp8266/rboot/esptool2/license.txt +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - 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. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - 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 <http://www.gnu.org/licenses/>. - -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: - - <program> Copyright (C) <year> <name of author> - 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 -<http://www.gnu.org/licenses/>. - - 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 -<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/src/common/platforms/esp8266/rboot/esptool2/readme.txt b/src/common/platforms/esp8266/rboot/esptool2/readme.txt deleted file mode 100644 index eb9f0ef24..000000000 --- a/src/common/platforms/esp8266/rboot/esptool2/readme.txt +++ /dev/null @@ -1,19 +0,0 @@ -Esptool2 -richardaburton@gmail.com -http://richard.burtons.org/ - -Esptool2 is a tool for creating rom images for the ESP8266. It is an alternative -to using the SDK supplied shell script/Makefile/python script combo, which is a -mess. It was inspired by the windows esptool v0.0.2 by mamalala and found on -www.esp8266.com but made somewhat simpler in code and usage. It also adds -support for boot loader v1.2+ rom types, which was the main reason I wrote it. - -It was written for my own use and the name was simply to distinguish it for the -other version on my system. The 2 is not intended to imply it is better than the -original. The original has since been updated to v0.0.3 which can write to the -flash, but I currently have no intention to add that to esptool2, it is purely a -rom creating utility. It has become an integral part of my build process now and -has added functionality needed for building the rBoot boot loader. Since I have -released rBoot I needed to release this as well. - -Run tool for full usage instructions, or look at the code. diff --git a/src/common/platforms/esp8266/rboot/rboot/appcode/rboot-api.c b/src/common/platforms/esp8266/rboot/rboot/appcode/rboot-api.c deleted file mode 100644 index 2d2e83db7..000000000 --- a/src/common/platforms/esp8266/rboot/rboot/appcode/rboot-api.c +++ /dev/null @@ -1,152 +0,0 @@ -////////////////////////////////////////////////// -// rBoot OTA and config API for ESP8266. -// Copyright 2015 Richard A Burton -// richardaburton@gmail.com -// See license.txt for license terms. -// OTA code based on SDK sample from Espressif. -////////////////////////////////////////////////// - -#ifdef RBOOT_INTEGRATION -#include <rboot-integration.h> -#endif - -#include <c_types.h> -#include <stdlib.h> -#include <string.h> - -#ifdef RTOS_SDK -#include "spi_flash.h" -#else -#include <user_interface.h> -#endif - -#include "rboot-api.h" -#include "../rboot-private.h" -#include "esp_missing_includes.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// get the rboot config -rboot_config ICACHE_FLASH_ATTR rboot_get_config(void) { - rboot_config conf; - spi_flash_read(BOOT_CONFIG_SECTOR * SECTOR_SIZE, (uint32*)&conf, sizeof(rboot_config)); - return conf; -} - -// write the rboot config -// preserves the contents of the rest of the sector, -// so the rest of the sector can be used to store user data -// updates checksum automatically (if enabled) -bool ICACHE_FLASH_ATTR rboot_set_config(rboot_config *conf) { - uint32_t buffer[sizeof(*conf) / sizeof(uint32_t) + 1]; -#ifdef BOOT_CONFIG_CHKSUM - uint8 chksum; - uint8 *ptr; -#endif - -#ifdef BOOT_CONFIG_CHKSUM - chksum = CHKSUM_INIT; - for (ptr = (uint8*)conf; ptr < &conf->chksum; ptr++) { - chksum ^= *ptr; - } - conf->chksum = chksum; -#endif - - memset(buffer, 0xff, sizeof(buffer)); - memcpy(buffer, conf, sizeof(*conf)); - if (spi_flash_erase_sector(BOOT_CONFIG_SECTOR) != SPI_FLASH_RESULT_OK || - spi_flash_write(BOOT_CONFIG_SECTOR * SECTOR_SIZE, buffer, sizeof(buffer)) != SPI_FLASH_RESULT_OK) { - return false; - } - return true; -} - -// get current boot rom -uint8 ICACHE_FLASH_ATTR rboot_get_current_rom(void) { - rboot_config conf; - conf = rboot_get_config(); - return conf.current_rom; -} - -// set current boot rom -bool ICACHE_FLASH_ATTR rboot_set_current_rom(uint8 rom) { - rboot_config conf; - conf = rboot_get_config(); - if (rom >= conf.count) return false; - conf.current_rom = rom; - return rboot_set_config(&conf); -} - -// create the write status struct, based on supplied start address -rboot_write_status ICACHE_FLASH_ATTR rboot_write_init(uint32 start_addr) { - rboot_write_status status = {0}; - status.start_addr = start_addr; - status.start_sector = start_addr / SECTOR_SIZE; - //status.max_sector_count = 200; - //os_printf("init addr: 0x%08x\r\n", start_addr); - - return status; -} - -// function to do the actual writing to flash -// call repeatedly with more data (max len per write is the flash sector size (4k)) -bool ICACHE_FLASH_ATTR rboot_write_flash(rboot_write_status *status, uint8 *data, uint16 len) { - - bool ret = false; - uint8 *buffer; - - if (data == NULL || len == 0) { - return true; - } - - // get a buffer - buffer = (uint8 *) calloc(1, len + status->extra_count); - if (!buffer) { - //os_printf("No ram!\r\n"); - return false; - } - - // copy in any remaining bytes from last chunk - memcpy(buffer, status->extra_bytes, status->extra_count); - // copy in new data - memcpy(buffer + status->extra_count, data, len); - - // calculate length, must be multiple of 4 - // save any remaining bytes for next go - len += status->extra_count; - status->extra_count = len % 4; - len -= status->extra_count; - memcpy(status->extra_bytes, buffer + len, status->extra_count); - - // check data will fit - //if (status->start_addr + len < (status->start_sector + status->max_sector_count) * SECTOR_SIZE) { - - if (len > SECTOR_SIZE) { - // to support larger writes we would need to erase current - // (if not already done), next and possibly later sectors too - } else { - // check if the sector the write finishes in has been erased yet, - // this is fine as long as data len < sector size - if (status->last_sector_erased != (status->start_addr + len) / SECTOR_SIZE) { - status->last_sector_erased = (status->start_addr + len) / SECTOR_SIZE; - spi_flash_erase_sector(status->last_sector_erased); - } - } - - // write current chunk - //os_printf("write addr: 0x%08x, len: 0x%04x\r\n", status->start_addr, len); - if (spi_flash_write(status->start_addr, (uint32 *)buffer, len) == SPI_FLASH_RESULT_OK) { - ret = true; - status->start_addr += len; - } - //} - - free(buffer); - return ret; -} - -#ifdef __cplusplus -} -#endif diff --git a/src/common/platforms/esp8266/rboot/rboot/appcode/rboot-api.h b/src/common/platforms/esp8266/rboot/rboot/appcode/rboot-api.h deleted file mode 100644 index c4601d303..000000000 --- a/src/common/platforms/esp8266/rboot/rboot/appcode/rboot-api.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef CS_COMMON_PLATFORMS_ESP8266_RBOOT_RBOOT_APPCODE_RBOOT_API_H_ -#define CS_COMMON_PLATFORMS_ESP8266_RBOOT_RBOOT_APPCODE_RBOOT_API_H_ - -////////////////////////////////////////////////// -// rBoot OTA and config API for ESP8266. -// Copyright 2015 Richard A Burton -// richardaburton@gmail.com -// See license.txt for license terms. -// OTA code based on SDK sample from Espressif. -////////////////////////////////////////////////// - -#include "../rboot.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - uint32 start_addr; - uint32 start_sector; - //uint32 max_sector_count; - uint32 last_sector_erased; - uint8 extra_count; - uint8 extra_bytes[4]; -} rboot_write_status; - -rboot_config ICACHE_FLASH_ATTR rboot_get_config(void); -bool ICACHE_FLASH_ATTR rboot_set_config(rboot_config *conf); -uint8 ICACHE_FLASH_ATTR rboot_get_current_rom(void); -bool ICACHE_FLASH_ATTR rboot_set_current_rom(uint8 rom); -rboot_write_status ICACHE_FLASH_ATTR rboot_write_init(uint32 start_addr); -bool ICACHE_FLASH_ATTR rboot_write_flash(rboot_write_status *status, uint8 *data, uint16 len); - -#ifdef __cplusplus -} -#endif - -#endif /* CS_COMMON_PLATFORMS_ESP8266_RBOOT_RBOOT_APPCODE_RBOOT_API_H_ */ diff --git a/src/common/platforms/esp8266/rboot/rboot/appcode/rboot-bigflash.c b/src/common/platforms/esp8266/rboot/rboot/appcode/rboot-bigflash.c deleted file mode 100644 index cd8a180bf..000000000 --- a/src/common/platforms/esp8266/rboot/rboot/appcode/rboot-bigflash.c +++ /dev/null @@ -1,61 +0,0 @@ -////////////////////////////////////////////////// -// rBoot open source boot loader for ESP8266. -// Copyright 2015 Richard A Burton -// richardaburton@gmail.com -// See license.txt for license terms. -////////////////////////////////////////////////// - -/* clang-format off */ - -#ifdef RBOOT_INTEGRATION -#include <rboot-integration.h> -#endif - -typedef unsigned int uint32; -typedef unsigned char uint8; - -#include <rboot.h> - -#if 0 //def BOOT_BIG_FLASH - -// plain sdk defaults to iram -#ifndef IRAM_ATTR -#define IRAM_ATTR -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -extern void Cache_Read_Disable(); -extern uint32 SPIRead(uint32, void*, uint32); -extern void Cache_Read_Enable(uint32, uint32, uint32); - -uint8 rBoot_mmap_1 = 0xff; -uint8 rBoot_mmap_2 = 0xff; - -// this function must remain in iram -IRAM NOINSTR void __wrap_Cache_Read_Enable_New(void) { - if (rBoot_mmap_1 == 0xff) { - uint32 addr; - rboot_config conf; - - Cache_Read_Disable(); - - SPIRead(BOOT_CONFIG_SECTOR * SECTOR_SIZE, &conf, sizeof(rboot_config)); - - addr = conf.roms[conf.current_rom]; - addr /= 0x100000; - - rBoot_mmap_2 = addr / 2; - rBoot_mmap_1 = addr % 2; - } - - Cache_Read_Enable(rBoot_mmap_1, rBoot_mmap_2, 1); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/common/platforms/esp8266/rboot/rboot/firmware/rboot.bin b/src/common/platforms/esp8266/rboot/rboot/firmware/rboot.bin deleted file mode 100644 index a928e0b0e8fb3b8f63ad57135a110795e3570d3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2464 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 diff --git a/src/common/platforms/esp8266/rboot/rboot/license.txt b/src/common/platforms/esp8266/rboot/rboot/license.txt deleted file mode 100644 index 04903d79e..000000000 --- a/src/common/platforms/esp8266/rboot/rboot/license.txt +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Richard A Burton (richardaburton@gmail.com) - -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. diff --git a/src/common/platforms/esp8266/rboot/rboot/rboot-private.h b/src/common/platforms/esp8266/rboot/rboot/rboot-private.h deleted file mode 100644 index 5b4d52ff2..000000000 --- a/src/common/platforms/esp8266/rboot/rboot/rboot-private.h +++ /dev/null @@ -1,74 +0,0 @@ -#ifndef CS_COMMON_PLATFORMS_ESP8266_RBOOT_RBOOT_RBOOT_PRIVATE_H_ -#define CS_COMMON_PLATFORMS_ESP8266_RBOOT_RBOOT_RBOOT_PRIVATE_H_ - -////////////////////////////////////////////////// -// rBoot open source boot loader for ESP8266. -// Copyright 2015 Richard A Burton -// richardaburton@gmail.com -// See license.txt for license terms. -////////////////////////////////////////////////// - -typedef int int32; -typedef unsigned int uint32; -typedef unsigned char uint8; - -#include "rboot.h" - -#define NOINLINE __attribute__ ((noinline)) - -#define ROM_MAGIC 0xe9 -#define ROM_MAGIC_NEW1 0xea -#define ROM_MAGIC_NEW2 0x04 - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -// buffer size, must be at least 0x10 (size of rom_header_new structure) -#define BUFFER_SIZE 0x100 - -// esp8266 built in rom functions -extern void ets_printf(const char*, ...); -extern uint32 SPIRead(uint32 addr, void *outptr, uint32 len); -extern uint32 SPIEraseSector(int); -extern uint32 SPIWrite(uint32 addr, void *inptr, uint32 len); - -// functions we'll call by address -typedef void stage2a(uint32); -typedef void usercode(void); - -// standard rom header -typedef struct { - // general rom header - uint8 magic; - uint8 count; - uint8 flags1; - uint8 flags2; - usercode* entry; -} rom_header; - -typedef struct { - uint8* address; - uint32 length; -} section_header; - -// new rom header (irom section first) there is -// another 8 byte header straight afterward the -// standard header -typedef struct { - // general rom header - uint8 magic; - uint8 count; // second magic for new header - uint8 flags1; - uint8 flags2; - uint32 entry; - // new type rom, lib header - uint32 add; // zero - uint32 len; // length of irom section -} rom_header_new; - -#endif /* CS_COMMON_PLATFORMS_ESP8266_RBOOT_RBOOT_RBOOT_PRIVATE_H_ */ diff --git a/src/common/platforms/esp8266/rboot/rboot/rboot-stage2a.c b/src/common/platforms/esp8266/rboot/rboot/rboot-stage2a.c deleted file mode 100644 index 9df98a81e..000000000 --- a/src/common/platforms/esp8266/rboot/rboot/rboot-stage2a.c +++ /dev/null @@ -1,80 +0,0 @@ -////////////////////////////////////////////////// -// rBoot open source boot loader for ESP8266. -// Copyright 2015 Richard A Burton -// richardaburton@gmail.com -// See license.txt for license terms. -////////////////////////////////////////////////// - -#ifdef RBOOT_INTEGRATION -#include <rboot-integration.h> -#endif - -#include "rboot-private.h" - -usercode* NOINLINE load_rom(uint32 readpos) { - - uint8 buffer[BUFFER_SIZE]; - uint8 sectcount; - uint8 *writepos; - uint32 remaining; - usercode* usercode; - - rom_header *header = (rom_header*)buffer; - section_header *section = (section_header*)buffer; - - // read rom header - SPIRead(readpos, header, sizeof(rom_header)); - readpos += sizeof(rom_header); - - // create function pointer for entry point - usercode = header->entry; - - // copy all the sections - for (sectcount = header->count; sectcount > 0; sectcount--) { - - // read section header - SPIRead(readpos, section, sizeof(section_header)); - readpos += sizeof(section_header); - - // get section address and length - writepos = section->address; - remaining = section->length; - - while (remaining > 0) { - // work out how much to read, up to 16 bytes at a time - uint32 readlen = (remaining < BUFFER_SIZE) ? remaining : BUFFER_SIZE; - // read the block - SPIRead(readpos, buffer, readlen); - readpos += readlen; - // copy the block - ets_memcpy(writepos, buffer, readlen); - // increment next write position - writepos += readlen; - // decrement remaining count - remaining -= readlen; - } - } - - return usercode; -} - -#ifdef BOOT_NO_ASM - -void call_user_start(uint32 readpos) { - usercode* user; - user = load_rom(readpos); - user(); -} - -#else - -void call_user_start(uint32 readpos) { - __asm volatile ( - "mov a15, a0\n" // store return addr, we already splatted a15! - "call0 load_rom\n" // load the rom - "mov a0, a15\n" // restore return addr - "jx a2\n" // now jump to the rom code - ); -} - -#endif diff --git a/src/common/platforms/esp8266/rboot/rboot/rboot-stage2a.ld b/src/common/platforms/esp8266/rboot/rboot/rboot-stage2a.ld deleted file mode 100644 index 7af83eaf8..000000000 --- a/src/common/platforms/esp8266/rboot/rboot/rboot-stage2a.ld +++ /dev/null @@ -1,211 +0,0 @@ -/* This linker script generated from xt-genldscripts.tpp for LSP . */ -/* Linker Script for ld -N */ -MEMORY -{ - dport0_0_seg : org = 0x3FF00000, len = 0x10 - dram0_0_seg : org = 0x3FFE8000, len = 0x14000 - iram1_0_seg : org = 0x4010FC00, len = 0x400 - irom0_0_seg : org = 0x40240000, len = 0x3C000 -} - -PHDRS -{ - dport0_0_phdr PT_LOAD; - dram0_0_phdr PT_LOAD; - dram0_0_bss_phdr PT_LOAD; - iram1_0_phdr PT_LOAD; - irom0_0_phdr PT_LOAD; -} - - -/* Default entry point: */ -ENTRY(call_user_start) -EXTERN(_DebugExceptionVector) -EXTERN(_DoubleExceptionVector) -EXTERN(_KernelExceptionVector) -EXTERN(_NMIExceptionVector) -EXTERN(_UserExceptionVector) -PROVIDE(_memmap_vecbase_reset = 0x40000000); -/* Various memory-map dependent cache attribute settings: */ -_memmap_cacheattr_wb_base = 0x00000110; -_memmap_cacheattr_wt_base = 0x00000110; -_memmap_cacheattr_bp_base = 0x00000220; -_memmap_cacheattr_unused_mask = 0xFFFFF00F; -_memmap_cacheattr_wb_trapnull = 0x2222211F; -_memmap_cacheattr_wba_trapnull = 0x2222211F; -_memmap_cacheattr_wbna_trapnull = 0x2222211F; -_memmap_cacheattr_wt_trapnull = 0x2222211F; -_memmap_cacheattr_bp_trapnull = 0x2222222F; -_memmap_cacheattr_wb_strict = 0xFFFFF11F; -_memmap_cacheattr_wt_strict = 0xFFFFF11F; -_memmap_cacheattr_bp_strict = 0xFFFFF22F; -_memmap_cacheattr_wb_allvalid = 0x22222112; -_memmap_cacheattr_wt_allvalid = 0x22222112; -_memmap_cacheattr_bp_allvalid = 0x22222222; -PROVIDE(_memmap_cacheattr_reset = _memmap_cacheattr_wb_trapnull); - -SECTIONS -{ - - .dport0.rodata : ALIGN(4) - { - _dport0_rodata_start = ABSOLUTE(.); - *(.dport0.rodata) - *(.dport.rodata) - _dport0_rodata_end = ABSOLUTE(.); - } >dport0_0_seg :dport0_0_phdr - - .dport0.literal : ALIGN(4) - { - _dport0_literal_start = ABSOLUTE(.); - *(.dport0.literal) - *(.dport.literal) - _dport0_literal_end = ABSOLUTE(.); - } >dport0_0_seg :dport0_0_phdr - - .dport0.data : ALIGN(4) - { - _dport0_data_start = ABSOLUTE(.); - *(.dport0.data) - *(.dport.data) - _dport0_data_end = ABSOLUTE(.); - } >dport0_0_seg :dport0_0_phdr - - .data : ALIGN(4) - { - _data_start = ABSOLUTE(.); - *(.data) - *(.data.*) - *(.gnu.linkonce.d.*) - *(.data1) - *(.sdata) - *(.sdata.*) - *(.gnu.linkonce.s.*) - *(.sdata2) - *(.sdata2.*) - *(.gnu.linkonce.s2.*) - *(.jcr) - _data_end = ABSOLUTE(.); - } >dram0_0_seg :dram0_0_phdr - - .rodata : ALIGN(4) - { - _rodata_start = ABSOLUTE(.); - *(.rodata) - *(.rodata.*) - *(.gnu.linkonce.r.*) - *(.rodata1) - __XT_EXCEPTION_TABLE__ = ABSOLUTE(.); - *(.xt_except_table) - *(.gcc_except_table) - *(.gnu.linkonce.e.*) - *(.gnu.version_r) - *(.eh_frame) - /* C++ constructor and destructor tables, properly ordered: */ - KEEP (*crtbegin.o(.ctors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - /* C++ exception handlers table: */ - __XT_EXCEPTION_DESCS__ = ABSOLUTE(.); - *(.xt_except_desc) - *(.gnu.linkonce.h.*) - __XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.); - *(.xt_except_desc_end) - *(.dynamic) - *(.gnu.version_d) - . = ALIGN(4); /* this table MUST be 4-byte aligned */ - _bss_table_start = ABSOLUTE(.); - LONG(_bss_start) - LONG(_bss_end) - _bss_table_end = ABSOLUTE(.); - _rodata_end = ABSOLUTE(.); - } >dram0_0_seg :dram0_0_phdr - - .bss ALIGN(8) (NOLOAD) : ALIGN(4) - { - . = ALIGN (8); - _bss_start = ABSOLUTE(.); - *(.dynsbss) - *(.sbss) - *(.sbss.*) - *(.gnu.linkonce.sb.*) - *(.scommon) - *(.sbss2) - *(.sbss2.*) - *(.gnu.linkonce.sb2.*) - *(.dynbss) - *(.bss) - *(.bss.*) - *(.gnu.linkonce.b.*) - *(COMMON) - . = ALIGN (8); - _bss_end = ABSOLUTE(.); - _heap_start = ABSOLUTE(.); -/* _stack_sentry = ALIGN(0x8); */ - } >dram0_0_seg :dram0_0_bss_phdr -/* __stack = 0x3ffc8000; */ - - .text : ALIGN(4) - { - _stext = .; - _text_start = ABSOLUTE(.); - *(.UserEnter.text) - . = ALIGN(16); - *(.DebugExceptionVector.text) - . = ALIGN(16); - *(.NMIExceptionVector.text) - . = ALIGN(16); - *(.KernelExceptionVector.text) - LONG(0) - LONG(0) - LONG(0) - LONG(0) - . = ALIGN(16); - *(.UserExceptionVector.text) - LONG(0) - LONG(0) - LONG(0) - LONG(0) - . = ALIGN(16); - *(.DoubleExceptionVector.text) - LONG(0) - LONG(0) - LONG(0) - LONG(0) - . = ALIGN (16); - *(.entry.text) - *(.init.literal) - *(.init) - *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*) - *(.fini.literal) - *(.fini) - *(.gnu.version) - _text_end = ABSOLUTE(.); - _etext = .; - } >iram1_0_seg :iram1_0_phdr - - .lit4 : ALIGN(4) - { - _lit4_start = ABSOLUTE(.); - *(*.lit4) - *(.lit4.*) - *(.gnu.linkonce.lit4.*) - _lit4_end = ABSOLUTE(.); - } >iram1_0_seg :iram1_0_phdr - - .irom0.text : ALIGN(4) - { - _irom0_text_start = ABSOLUTE(.); - *(.irom0.literal .irom.literal .irom.text.literal .irom0.text .irom.text) - _irom0_text_end = ABSOLUTE(.); - } >irom0_0_seg :irom0_0_phdr - -} - -/* get ROM code address */ -INCLUDE "rboot_rom.ld" diff --git a/src/common/platforms/esp8266/rboot/rboot/rboot.c b/src/common/platforms/esp8266/rboot/rboot/rboot.c deleted file mode 100644 index 6f7521423..000000000 --- a/src/common/platforms/esp8266/rboot/rboot/rboot.c +++ /dev/null @@ -1,428 +0,0 @@ -////////////////////////////////////////////////// -// rBoot open source boot loader for ESP8266. -// Copyright 2015 Richard A Burton -// richardaburton@gmail.com -// See license.txt for license terms. -////////////////////////////////////////////////// -/* clang-format off */ - -#ifdef RBOOT_INTEGRATION -#include <rboot-integration.h> -#endif - -#include "rboot-private.h" -#include <rboot-hex2a.h> - -static uint32 check_image(uint32 readpos) { - - uint8 buffer[BUFFER_SIZE]; - uint8 sectcount; - uint8 sectcurrent; - uint8 *writepos; - uint8 chksum = CHKSUM_INIT; - uint32 loop; - uint32 remaining; - uint32 romaddr; - - rom_header_new *header = (rom_header_new*)buffer; - section_header *section = (section_header*)buffer; - - if (readpos == 0 || readpos == 0xffffffff) { - return 0; - } - - // read rom header - if (SPIRead(readpos, header, sizeof(rom_header_new)) != 0) { - return 0; - } - - // check header type - if (header->magic == ROM_MAGIC) { - // old type, no extra header or irom section to skip over - romaddr = readpos; - readpos += sizeof(rom_header); - sectcount = header->count; - } else if (header->magic == ROM_MAGIC_NEW1 && header->count == ROM_MAGIC_NEW2) { - // new type, has extra header and irom section first - romaddr = readpos + header->len + sizeof(rom_header_new); -#ifdef BOOT_IROM_CHKSUM - // we will set the real section count later, when we read the header - sectcount = 0xff; - // just skip the first part of the header - // rest is processed for the chksum - readpos += sizeof(rom_header); -#else - // skip the extra header and irom section - readpos = romaddr; - // read the normal header that follows - if (SPIRead(readpos, header, sizeof(rom_header)) != 0) { - return 0; - } - sectcount = header->count; - readpos += sizeof(rom_header); -#endif - } else { - return 0; - } - - // test each section - for (sectcurrent = 0; sectcurrent < sectcount; sectcurrent++) { - - // read section header - if (SPIRead(readpos, section, sizeof(section_header)) != 0) { - return 0; - } - readpos += sizeof(section_header); - - // get section address and length - writepos = section->address; - remaining = section->length; - - while (remaining > 0) { - // work out how much to read, up to BUFFER_SIZE - uint32 readlen = (remaining < BUFFER_SIZE) ? remaining : BUFFER_SIZE; - // read the block - if (SPIRead(readpos, buffer, readlen) != 0) { - return 0; - } - // increment next read and write positions - readpos += readlen; - writepos += readlen; - // decrement remaining count - remaining -= readlen; - // add to chksum - for (loop = 0; loop < readlen; loop++) { - chksum ^= buffer[loop]; - } - } - -#ifdef BOOT_IROM_CHKSUM - if (sectcount == 0xff) { - // just processed the irom section, now - // read the normal header that follows - if (SPIRead(readpos, header, sizeof(rom_header)) != 0) { - return 0; - } - sectcount = header->count + 1; - readpos += sizeof(rom_header); - } -#endif - } - - // round up to next 16 and get checksum - readpos = readpos | 0x0f; - if (SPIRead(readpos, buffer, 1) != 0) { - return 0; - } - - // compare calculated and stored checksums - if (buffer[0] != chksum) { - return 0; - } - - return romaddr; -} - -#define ETS_UNCACHED_ADDR(addr) (addr) -#define READ_PERI_REG(addr) (*((volatile uint32 *)ETS_UNCACHED_ADDR(addr))) -#define WRITE_PERI_REG(addr, val) (*((volatile uint32 *)ETS_UNCACHED_ADDR(addr))) = (uint32)(val) -#define PERIPHS_RTC_BASEADDR 0x60000700 -#define REG_RTC_BASE PERIPHS_RTC_BASEADDR -#define RTC_GPIO_OUT (REG_RTC_BASE + 0x068) -#define RTC_GPIO_ENABLE (REG_RTC_BASE + 0x074) -#define RTC_GPIO_IN_DATA (REG_RTC_BASE + 0x08C) -#define RTC_GPIO_CONF (REG_RTC_BASE + 0x090) -#define PAD_XPD_DCDC_CONF (REG_RTC_BASE + 0x0A0) -static uint32 get_gpio16(void) { - // set output level to 1 - WRITE_PERI_REG(RTC_GPIO_OUT, (READ_PERI_REG(RTC_GPIO_OUT) & (uint32)0xfffffffe) | (uint32)(1)); - - // read level - WRITE_PERI_REG(PAD_XPD_DCDC_CONF, (READ_PERI_REG(PAD_XPD_DCDC_CONF) & 0xffffffbc) | (uint32)0x1); // mux configuration for XPD_DCDC and rtc_gpio0 connection - WRITE_PERI_REG(RTC_GPIO_CONF, (READ_PERI_REG(RTC_GPIO_CONF) & (uint32)0xfffffffe) | (uint32)0x0); //mux configuration for out enable - WRITE_PERI_REG(RTC_GPIO_ENABLE, READ_PERI_REG(RTC_GPIO_ENABLE) & (uint32)0xfffffffe); //out disable - - uint32 x = (READ_PERI_REG(RTC_GPIO_IN_DATA) & 1); - - return x; -} - -#ifdef BOOT_CONFIG_CHKSUM -// calculate checksum for block of data -// from start up to (but excluding) end -static uint8 calc_chksum(uint8 *start, uint8 *end) { - uint8 chksum = CHKSUM_INIT; - while(start < end) { - chksum ^= *start; - start++; - } - return chksum; -} -#endif - -#define UART_CLKDIV_80MHZ(B) (80000000 + B / 2) / B -#define UART_CLKDIV_52MHZ(B) (52000000 + B / 2) / B - -// prevent this function being placed inline with main -// to keep main's stack size as small as possible -// don't mark as static or it'll be optimised out when -// using the assembler stub -uint32 NOINLINE find_image(void) { - - uint8 flag; - uint32 runAddr; - uint32 flashsize; - int32 romToBoot; - uint8 gpio_boot = FALSE; - uint8 updateConfig = FALSE; - uint8 buffer[SECTOR_SIZE]; - - rboot_config *romconf = (rboot_config*)buffer; - rom_header *header = (rom_header*)buffer; - - // delay to slow boot (help see messages when debugging) - //ets_delay_us(2000000); - - /* - * UART divider depends on the APB frequency. Cold boot starts with 52MHz APB, - * SDK configures PLL, sets it to 80 and it persists across soft reset - * so on soft reset a different divider should be used. What we really want to - * know is if the PLL is running but since that is completely undocumented - * we use CPU frequency bit as a workaround: mos sets CPU to 160 MHz on startup - * so we assume that if frequency is preserved, then it's soft reset, PLL is - * running and APB is at 80 MHz. - */ - if (READ_PERI_REG(0x3ff00014) & 1) { - uart_div_modify(0, UART_CLKDIV_80MHZ(115200)); - } else { - uart_div_modify(0, UART_CLKDIV_52MHZ(115200)); - } - ets_delay_us(1000); - - ets_printf("\r\nrBoot v1.2.1-cesanta1 - richardaburton@gmail.com\r\n"); - - // read rom header - SPIRead(0, header, sizeof(rom_header)); - - // print and get flash size - ets_printf("Flash Size: "); - flag = header->flags2 >> 4; - if (flag == 0) { - ets_printf("4 Mbit\r\n"); - flashsize = 0x80000; - } else if (flag == 1) { - ets_printf("2 Mbit\r\n"); - flashsize = 0x40000; - } else if (flag == 2) { - ets_printf("8 Mbit\r\n"); - flashsize = 0x100000; - } else { -#ifdef BOOT_BIG_FLASH - if (flag == 3) { - ets_printf("16 Mbit\r\n"); - flashsize = 0x200000; - } else if (flag == 4) { - ets_printf("32 Mbit\r\n"); - flashsize = 0x400000; - } else if (flag == 8) { - ets_printf("64 Mbit\r\n"); - flashsize = 0x800000; - } else if (flag == 9) { - ets_printf("128 Mbit\r\n"); - flashsize = 0x1000000; - } else { - ets_printf("unknown\r\n"); - flashsize = 0x100000; // assume 8Mbit - } -#else - ets_printf("8 Mbit\r\n"); - flashsize = 0x100000; // limit to 8Mbit -#endif - } - - // print spi mode - ets_printf("Flash Mode: "); - if (header->flags1 == 0) { - ets_printf("QIO\r\n"); - } else if (header->flags1 == 1) { - ets_printf("QOUT\r\n"); - } else if (header->flags1 == 2) { - ets_printf("DIO\r\n"); - } else if (header->flags1 == 3) { - ets_printf("DOUT\r\n"); - } else { - ets_printf("unknown\r\n"); - } - - // print spi speed - ets_printf("Flash Speed: "); - flag = header->flags2 & 0x0f; - if (flag == 0) ets_printf("40 MHz\r\n"); - else if (flag == 1) ets_printf("26.7 MHz\r\n"); - else if (flag == 2) ets_printf("20 MHz\r\n"); - else if (flag == 0x0f) ets_printf("80 MHz\r\n"); - else ets_printf("unknown\r\n"); - - // print enabled options -#ifdef BOOT_BIG_FLASH - ets_printf("rBoot Option: Big flash\r\n"); -#endif -#ifdef BOOT_CONFIG_CHKSUM - ets_printf("rBoot Option: Config chksum\r\n"); -#endif -#ifdef BOOT_IROM_CHKSUM - ets_printf("rBoot Option: irom chksum\r\n"); -#endif - - ets_printf("\r\n"); - - // read boot config - SPIRead(BOOT_CONFIG_SECTOR * SECTOR_SIZE, buffer, SECTOR_SIZE); - // fresh install or old version? - if (romconf->magic != BOOT_CONFIG_MAGIC || romconf->version != BOOT_CONFIG_VERSION -#ifdef BOOT_CONFIG_CHKSUM - || romconf->chksum != calc_chksum((uint8*)romconf, (uint8*)&romconf->chksum) -#endif - ) { - /* Modified by Cesanta */ - ets_printf("Writing default boot config @ 0x%x.\r\n", BOOT_CONFIG_SECTOR * SECTOR_SIZE); - ets_memset(romconf, 0x00, sizeof(rboot_config)); - romconf->magic = BOOT_CONFIG_MAGIC; - romconf->version = BOOT_CONFIG_VERSION; - romconf->count = 2; - romconf->mode = MODE_STANDARD; - /* FWx_ADDR, FWx_FS_ADDR and FS_SIZE, FW_SIZE must be defined by -D */ - romconf->roms[0] = FW1_ADDR; - romconf->roms[1] = FW2_ADDR; - romconf->fs_addresses[0] = FW1_FS_ADDR; - romconf->fs_addresses[1] = FW2_FS_ADDR; - romconf->fs_sizes[0] = romconf->fs_sizes[1] = FS_SIZE; - romconf->roms_sizes[0] = romconf->roms_sizes[1] = FW_SIZE; -#ifdef BOOT_CONFIG_CHKSUM - romconf->chksum = calc_chksum((uint8*)romconf, (uint8*)&romconf->chksum); -#endif - // write new config sector - SPIEraseSector(BOOT_CONFIG_SECTOR); - SPIWrite(BOOT_CONFIG_SECTOR * SECTOR_SIZE, buffer, SECTOR_SIZE); - } - - // if gpio mode enabled check status of the gpio - if ((romconf->mode & MODE_GPIO_ROM) && (get_gpio16() == 0)) { - ets_printf("Booting GPIO-selected.\r\n"); - romToBoot = romconf->previous_rom; - /* - * Modified by Cesanta - * Make FD current - */ - updateConfig = TRUE; - romconf->fw_updated = 0; - romconf->is_first_boot = 0; - gpio_boot = TRUE; - } else if (romconf->current_rom >= romconf->count) { - // if invalid rom selected try rom 0 - ets_printf("Invalid rom selected, defaulting.\r\n"); - romToBoot = 0; - romconf->current_rom = 0; - romconf->fw_updated = 0; - romconf->is_first_boot = 0; - updateConfig = TRUE; - } else { - /* Modified by Cesanta */ - if (romconf->is_first_boot != 0) { - ets_printf("First boot, attempt %d\n", romconf->boot_attempts); - /* boot is unconfirmed */ - if (romconf->boot_attempts == 0) { - /* haven't try to load yes */ - ets_printf("Boot is unconfirmed\r\n"); - romconf->boot_attempts++; - } else { - ets_printf("Boot failed, fallback to fw #%d\r\n", - romconf->previous_rom); - romconf->current_rom = romconf->previous_rom; - /* clear fw update flag, to avoid post-update acttions */ - romconf->fw_updated = 0; - romconf->boot_attempts = 0; - } - - updateConfig = TRUE; - } - /* End of Cesanta modifications */ - // try rom selected in the config - romToBoot = romconf->current_rom; - } - - // try to find a good rom - do { - runAddr = check_image(romconf->roms[romToBoot]); - if (runAddr == 0) { - ets_printf("Rom %d is bad.\r\n", romToBoot); - if (gpio_boot) { - // don't switch to backup for gpio-selected rom - ets_printf("GPIO boot failed.\r\n"); - return 0; - } else { - // for normal mode try each previous rom - // until we find a good one or run out - updateConfig = TRUE; - romToBoot--; - if (romToBoot < 0) romToBoot = romconf->count - 1; - if (romToBoot == romconf->current_rom) { - // tried them all and all are bad! - ets_printf("No good rom available.\r\n"); - return 0; - } - } - } - } while (runAddr == 0); - - // re-write config, if required - if (updateConfig) { - romconf->current_rom = romToBoot; -#ifdef BOOT_CONFIG_CHKSUM - romconf->chksum = calc_chksum((uint8*)romconf, (uint8*)&romconf->chksum); -#endif - SPIEraseSector(BOOT_CONFIG_SECTOR); - SPIWrite(BOOT_CONFIG_SECTOR * SECTOR_SIZE, buffer, SECTOR_SIZE); - } - - ets_printf("Booting rom %d (0x%x).\r\n", romToBoot, romconf->roms[romToBoot]); - // copy the loader to top of iram - ets_memcpy((void*)_text_addr, _text_data, _text_len); - // return address to load from - return runAddr; - -} - -#ifdef BOOT_NO_ASM - -// small stub method to ensure minimum stack space used -void call_user_start(void) { - uint32 addr; - stage2a *loader; - - addr = find_image(); - if (addr != 0) { - loader = (stage2a*)entry_addr; - loader(addr); - } -} - -#else - -// assembler stub uses no stack space -// works with gcc -void call_user_start(void) { - __asm volatile ( - "mov a15, a0\n" // store return addr, hope nobody wanted a15! - "call0 find_image\n" // find a good rom to boot - "mov a0, a15\n" // restore return addr - "bnez a2, 1f\n" // ?success - "ret\n" // no, return - "1:\n" // yes... - "movi a3, entry_addr\n" // actually gives us a pointer to entry_addr - "l32i a3, a3, 0\n" // now really load entry_addr - "jx a3\n" // now jump to it - ); -} - -#endif diff --git a/src/common/platforms/esp8266/rboot/rboot/rboot.h b/src/common/platforms/esp8266/rboot/rboot/rboot.h deleted file mode 100644 index 3949d74e5..000000000 --- a/src/common/platforms/esp8266/rboot/rboot/rboot.h +++ /dev/null @@ -1,82 +0,0 @@ -#ifndef CS_COMMON_PLATFORMS_ESP8266_RBOOT_RBOOT_RBOOT_H_ -#define CS_COMMON_PLATFORMS_ESP8266_RBOOT_RBOOT_RBOOT_H_ - -////////////////////////////////////////////////// -// rBoot open source boot loader for ESP8266. -// Copyright 2015 Richard A Burton -// richardaburton@gmail.com -// See license.txt for license terms. -////////////////////////////////////////////////// - -#ifdef __cplusplus -extern "C" { -#endif - -// uncomment to use only c code -// if you aren't using gcc you may need to do this -//#define BOOT_NO_ASM - -// uncomment to have a checksum on the boot config -//#define BOOT_CONFIG_CHKSUM - -// uncomment to enable big flash support (>1MB) -//#define BOOT_BIG_FLASH - -// uncomment to include .irom0.text section in the checksum -// roms must be built with esptool2 using -iromchksum option -//#define BOOT_IROM_CHKSUM - -// increase if required -#define MAX_ROMS 4 - -#define CHKSUM_INIT 0xef - -#define SECTOR_SIZE 0x1000 - -#ifndef BOOT_CONFIG_ADDR -#define BOOT_CONFIG_ADDR 0x1000 -#endif - -#define BOOT_CONFIG_SECTOR (BOOT_CONFIG_ADDR / SECTOR_SIZE) - -#define BOOT_CONFIG_MAGIC 0xe1 -#define BOOT_CONFIG_VERSION 0x01 - -#define MODE_STANDARD 0x00 -#define MODE_GPIO_ROM 0x01 - -// boot config structure -// rom addresses must be multiples of 0x1000 (flash sector aligned) -// without BOOT_BIG_FLASH only the first 8Mbit of the chip will be memory mapped -// so rom slots containing .irom0.text sections must remain below 0x100000 -// slots beyond this will only be accessible via spi read calls, so -// use these for stored resources, not code -// with BOOT_BIG_FLASH the flash will be mapped in chunks of 8MBit, so roms can -// be anywhere, but must not straddle two 8MBit blocks -typedef struct { - uint8 magic; // our magic - uint8 version; // config struct version - uint8 mode; // boot loader mode - uint8 current_rom; // currently selected rom - uint8 gpio_rom; // rom to use for gpio boot - uint8 count; // number of roms in use - uint8 previous_rom; // previously selected rom - uint8 is_first_boot; - uint8 boot_attempts; - uint8 fw_updated; - uint8 padding[2]; - uint32 roms[MAX_ROMS]; // flash addresses of the roms - uint32 roms_sizes[MAX_ROMS]; // sizes of the roms - uint32 fs_addresses[MAX_ROMS]; // file system addresses - uint32 fs_sizes[MAX_ROMS]; // file system sizes - uint32 user_flags; -#ifdef BOOT_CONFIG_CHKSUM - uint8 chksum; // config chksum -#endif -} rboot_config; - -#ifdef __cplusplus -} -#endif - -#endif /* CS_COMMON_PLATFORMS_ESP8266_RBOOT_RBOOT_RBOOT_H_ */ diff --git a/src/common/platforms/esp8266/rboot/rboot/rboot.ld b/src/common/platforms/esp8266/rboot/rboot/rboot.ld deleted file mode 100644 index 5e257404f..000000000 --- a/src/common/platforms/esp8266/rboot/rboot/rboot.ld +++ /dev/null @@ -1,2 +0,0 @@ -INCLUDE "eagle.app.v6.ld" -INCLUDE "rboot_rom.ld" diff --git a/src/common/platforms/esp8266/rboot/rboot/rboot.mk b/src/common/platforms/esp8266/rboot/rboot/rboot.mk deleted file mode 100644 index 419ba5a8d..000000000 --- a/src/common/platforms/esp8266/rboot/rboot/rboot.mk +++ /dev/null @@ -1,89 +0,0 @@ -# -# Makefile for rBoot -# https://github.com/raburton/esp8266 -# - -ESPTOOL2 ?= ../../build/esptool2 -SDK_BASE ?= /opt/Espressif/ESP8266_SDK -SPI_SIZE ?= -RBOOT_INTEGRATION ?= -RBOOT_EXTRA_INCDIR ?= - -# RBOOT_BUILD_BASE and RBOOT_GEN_BASE should be provided via makefile parameters -RBOOT_BUILD_BASE ?= -# RBOOT_GEN_BASE is the directory for generated inputs -RBOOT_GEN_BASE ?= - -ifndef XTENSA_BINDIR -CC := xtensa-lx106-elf-gcc -LD := xtensa-lx106-elf-gcc -else -CC := $(addprefix $(XTENSA_BINDIR)/,xtensa-lx106-elf-gcc) -LD := $(addprefix $(XTENSA_BINDIR)/,xtensa-lx106-elf-gcc) -endif -CC_WRAPPER ?= - -CFLAGS = -Os -Wpointer-arith -Wundef -Werror -Wl,-EL \ - -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals \ - -D__ets__ -DIRAM='__attribute__((section(".fast.text")))' \ - -DNOINSTR='__attribute__((no_instrument_function))' \ - -DICACHE_FLASH $(CFLAGS_EXTRA) - -LDFLAGS = -nostdlib -Wl,--no-check-sections -u call_user_start -Wl,-static -L $(SDK_BASE)/ld/ - -LD_SCRIPT = rboot.ld - -E2_OPTS = -quiet -bin -boot0 - -ifeq ($(RBOOT_BIG_FLASH),1) - CFLAGS += -DBOOT_BIG_FLASH -endif -ifeq ($(RBOOT_INTEGRATION),1) - CFLAGS += -DRBOOT_INTEGRATION -endif -ifeq ($(SPI_SIZE), 256K) - E2_OPTS += -256 -else ifeq ($(SPI_SIZE), 512K) - E2_OPTS += -512 -else ifeq ($(SPI_SIZE), 1M) - E2_OPTS += -1024 -else ifeq ($(SPI_SIZE), 2M) - E2_OPTS += -2048 -else ifeq ($(SPI_SIZE), 4M) - E2_OPTS += -4096 -endif - -RBOOT_EXTRA_INCDIR := $(addprefix -I,$(RBOOT_EXTRA_INCDIR)) - -.SECONDARY: - -all: $(RBOOT_BUILD_BASE)/rboot.bin - -$(RBOOT_BUILD_BASE)/rboot-stage2a.o: rboot-stage2a.c rboot-private.h rboot.h - @echo "CC $<" - @$(CC_WRAPPER) $(CC) $(CFLAGS) $(RBOOT_EXTRA_INCDIR) -c $< -o $@ - -$(RBOOT_BUILD_BASE)/rboot-stage2a.elf: $(RBOOT_BUILD_BASE)/rboot-stage2a.o - @echo "LD $@" - @$(CC_WRAPPER) $(LD) -Trboot-stage2a.ld $(LDFLAGS) -Wl,--start-group $^ -Wl,--end-group -o $@ - -$(RBOOT_GEN_BASE)/rboot-hex2a.h: $(RBOOT_BUILD_BASE)/rboot-stage2a.elf - @echo "E2 $@" - @$(ESPTOOL2) -quiet -header $< $@ .text - -$(RBOOT_BUILD_BASE)/rboot.o: rboot.c rboot-private.h rboot.h $(RBOOT_GEN_BASE)/rboot-hex2a.h - @echo "CC $<" - @$(CC) $(CFLAGS) -I$(RBOOT_GEN_BASE) $(RBOOT_EXTRA_INCDIR) -c $< -o $@ - -$(RBOOT_BUILD_BASE)/%.o: %.c %.h - @echo "CC $<" - @$(CC) $(CFLAGS) $(RBOOT_EXTRA_INCDIR) -c $< -o $@ - -$(RBOOT_BUILD_BASE)/%.elf: $(RBOOT_BUILD_BASE)/%.o - @echo "LD $@" - @$(LD) -T$(LD_SCRIPT) $(LDFLAGS) -Wl,--start-group $^ -Wl,--end-group -o $@ - -$(RBOOT_BUILD_BASE)/%.bin: $(RBOOT_BUILD_BASE)/%.elf - @echo "E2 $@" - @$(ESPTOOL2) $(E2_OPTS) $< $@ .text .rodata - diff --git a/src/common/platforms/esp8266/rboot/rboot/rboot_rom.ld b/src/common/platforms/esp8266/rboot/rboot/rboot_rom.ld deleted file mode 100644 index 69e862cc8..000000000 --- a/src/common/platforms/esp8266/rboot/rboot/rboot_rom.ld +++ /dev/null @@ -1,8 +0,0 @@ -PROVIDE ( ets_delay_us = 0x40002ecc ); -PROVIDE ( ets_memcpy = 0x400018b4 ); -PROVIDE ( ets_memset = 0x400018a4 ); -PROVIDE ( ets_printf = 0x400024cc ); -PROVIDE ( SPIEraseSector = 0x40004a00 ); -PROVIDE ( SPIRead = 0x40004b1c ); -PROVIDE ( SPIWrite = 0x40004a4c ); -PROVIDE ( uart_div_modify = 0x400039d8 ); diff --git a/src/common/platforms/esp8266/rboot/rboot/readme-api.txt b/src/common/platforms/esp8266/rboot/rboot/readme-api.txt deleted file mode 100644 index 230474819..000000000 --- a/src/common/platforms/esp8266/rboot/rboot/readme-api.txt +++ /dev/null @@ -1,40 +0,0 @@ -rBoot - User API for rBoot on the ESP8266 ------------------------------------------- -by Richard A Burton, richardaburton@gmail.com -http://richard.burtons.org/ - -This provides a few simple APIs for getting & setting rBoot config and for -writing data from OTA updates. API source files are in the appcode directory. - -Actual OTA network code is implementation specific and no longer included in -rBoot itself, see the rBoot sample projects for this code (which you can then -use in your own projects). - - rboot_config rboot_get_config(); - Returns rboot_config (defined in rboot.h) allowing you to modify any values - in it, including the rom layout. - - bool rboot_set_config(rboot_config *conf); - Saves the rboot_config structure back to sector 2 of the flash, while - maintaining the contents of the rest of the sector. You can use the rest of - this sector for your app settings, as long as you protect this structure - when you do so. - - uint8 rboot_get_current_rom(); - Get the currently selected boot rom (the currently running rom, as long as - you haven't changed it since boot). - - bool rboot_set_current_rom(uint8 rom); - Set the current boot rom, which will be used when next restarted. - - rboot_write_status rboot_write_init(uint32 start_addr); - Call once before starting to pass data to write to the flash. start_addr is - the address on the SPI flash to write from. Returns a status structure which - must be passed back on each write. The contents of the structure should not - be modified by the calling code. - - bool rboot_write_flash(rboot_write_status *status, uint8 *data, uint16 len); - Call repeatedly to write data to the flash, starting at the address - specified on the prior call to rboot_write_init. Current write position is - tracked automatically. This method is likely to be called each time a packet - of OTA data is received over the network. diff --git a/src/common/platforms/esp8266/rboot/rboot/readme.txt b/src/common/platforms/esp8266/rboot/rboot/readme.txt deleted file mode 100644 index 944e1f21d..000000000 --- a/src/common/platforms/esp8266/rboot/rboot/readme.txt +++ /dev/null @@ -1,218 +0,0 @@ -rBoot - An open source boot loader for the ESP8266 --------------------------------------------------- -by Richard A Burton, richardaburton@gmail.com -http://richard.burtons.org/ - - -rBoot is designed to be a flexible open source boot loader, a replacement for -the binary blob supplied with the SDK. It has the following advantages over the -Espressif loader: - - - Open source (written in C). - - Supports up to 256 roms. - - Roms can be variable size. - - Able to test multiple roms to find a valid backup (without resetting). - - Flash layout can be changed on the fly (with care and appropriately linked - rom images). - - GPIO support for rom selection. - - Wastes no stack space (SDK boot loader uses 144 bytes). - - Documented config structure to allow easy editing from user code. - - Can validate .irom0.text section with checksum. - -Limitations ------------ -The ESP8266 can only map 8Mbits (1MB) of flash to memory, but which 8Mbits to -map is selectable. This allows individual roms to be up to 1MB in size, so long -as they do not straddle an 8Mbit boundary on the flash. This means you could -have four 1MB roms or 8 512KB roms on a 32Mbit flash (such as on the ESP-12), or -a combination. Note, however, that you could not have, for example, a 512KB rom -followed immediately by a 1MB rom because the 2nd rom would then straddle an -8MBit boundary. By default support for using more than the first 8Mbit of the -flash is disabled, because it requires several steps to get it working. See -below for instructions. - -Building --------- -A Makefile is included, which should work with the gcc xtensa cross compiler. -There are two source files, the first is compiled and included as data in the -second. When run this code is copied to memory and executed (there is a good -reason for this, see my blog for an explanation). The make file will handle this -for you, but you'll need my esptool2 (see github). - -To use the Makefile set SDK_BASE to point to the root of the Espressif SDK and -either set XTENSA_BINDIR to the gcc xtensa bin directory or include it in your -PATH. These can be set as environment variables or by editing the Makefile. - -Two small assembler stub functions allow the bootloader to launch the user code -without reserving any space on the stack (while the SDK boot loader uses 144 -bytes). This compiles fine with GCC, but if you use another compiler and it -will not compile/work for you then uncomment the #define BOOT_NO_ASM in rboot.h -to use a C version of these functions (this uses 32 bytes). - -Tested with SDK v1.3 and GCC v4.8.2. - -Installation ------------- -Simply write rboot.bin to the first sector of the flash. Remember to set your -flash size correctly with your chosen flash tool (e.g. for esptool.py use the --fs option). When run rBoot will create it's own config at the start of sector -two for a simple two rom system. You can can then write your two roms to flash -addresses 0x2000 and (half chip size + 0x2000). E.g. for 8Mbit flash: - esptool.py -fs 8m 0x0000 rboot.bin 0x2000 user1.bin 0x82000 user2.bin - -Note: your device may need other options specified. E.g. The nodemcu devkit v1.0 -(commonly, but incorrectly, sold as v2) also needs the "-fm dio" option. - -For more interesting rom layouts you'll need to write an rBoot config sector -manually, see next step. - -The two testload bin files can be flashed in place of normal user roms for -testing rBoot. You do not need these for normal use. - -rBoot Config ------------- -typedef struct { - uint8 magic; // our magic - uint8 version; // config struct version - uint8 mode; // boot loader mode - uint8 current_rom; // currently selected rom - uint8 gpio_rom; // rom to use for gpio boot - uint8 count; // number of roms in use - uint8 unused[2]; // padding - uint32 roms[MAX_ROMS]; // flash addresses of the roms -#ifdef BOOT_CONFIG_CHKSUM - uint8 chksum; // boot config chksum -#endif -} rboot_config; - -Write a config structure as above to address 0x1000 on the flash. If you want -more than 4 roms (default) just increase MAX_ROMS when you compile rBoot. -Think about how you intend to layout your flash before you start! -Rom addresses must be sector aligned i.e start on a multiple of 4096. - - - magic should have value 0xe1 (defined as BOOT_CONFIG_MAGIC). - - version is used in case the config structure changes after deployment. It is - defined as 0x01 (BOOT_CONFIG_VERSION). I don't intend to increase this, but - you should if you choose to reflash the bootloader after deployment and - the config structure has changed. - - mode can be 0x00 (MODE_STANDARD) or 0x01 (MODE_GPIO_ROM). If you set GPIO - you will need to set gpio_rom as well. The sample GPIO code uses GPIO 16 on - a nodemcu dev board, if you want to use a different GPIO you'll need to - adapt the code in rBoot slightly. - - current_rom is the rom to boot, numbered 0 to count-1. - - gpio_rom is the rom to boot when the GPIO is triggered at boot. - - count is the number of roms available (may be less than MAX_ROMS, but not - more). - - unused[2] is padding so the uint32 rom addresses are 4 bytes aligned. - - roms is the array of flash address for the roms. The default generated - config will contain two entries: 0x00002000 and 0x00082000. - - chksum (if enabled, not by deafult) should be the xor of 0xef followed by - each of the bytes of the config structure up to (but obviously not - including) the chksum byte itself. - -Linking user code ------------------ -Each rom will need to be linked with an appropriate linker file, specifying -where it will reside on the flash. If you are only flashing one rom to multiple -places on the flash it must be linked multiple times to produce the set of rom -images. This is the same as with the SDK loader. - -Because there are endless possibilities for layout with this loader I don't -supply sample linker files. Instead I'll tell you how to make them. - -For each rom slot on the flash take a copy of the eagle.app.v6.ld linker script -from the sdk. You then need to modify just one line in it for each rom: - irom0_0_seg : org = 0x40240000, len = 0x3C000 - -Change the org address to be 0x40200000 (base memory mapped location of the -flash) + flash address + 0x10 (offset of data after the header). -The logical place for your first rom is the third sector, address 0x2000. - 0x40200000 + 0x2000 + 0x10 = 0x40202010 -If you use the default generated config the loader will expect to find the -second rom at flash address half-chip-size + 0x2000 (e.g. 0x82000 on an 8MBit -flash) so the irom0_0_seg should be: - 0x40200000 + 0x82000 + 0x10 = 0x40282010 -Due to the limitation of mapped flash (max 8MBit) if you use a larger chip and -do not have big flash support enabled the second rom in the default config will -still be placed at 0x082000, not truly half-chip-size + 0x2000. -Ideally you should also adjust the len to help detect over sized sections at -link time, but more important is the overall size of the rom which you need to -ensure fits in the space you have allocated for it in your flash layout plan. - -Then simply compile and link as you would normally for OTA updates with the SDK -boot loader, except using the linker scripts you've just prepared rather than -the ones supplied with the SDK. Remember when building roms to create them as -'new' type roms (for use with SDK boot loader v1.2+). Or if using my esptool2 -use the -boot2 option. Note: the test loads included with rBoot are built with --boot0 because they do not contain a .irom0.text section (and so the value of -irom0_0_seg in the linker file is irrelevant to them) but 'normal' user apps -always do. - -irom checksum -------------- -The SDK boot loader checksum only covers sections loaded into ram (data and some -code). Most of the SDK and user code remains on the flash and that is not -included in the checksum. This means you could attempt to boot a corrupt rom -and, because it looks ok to the boot loader, there will be no attempt to switch -to a backup rom. rBoot improves on this by allowing the .irom0.text section to -be included in the checksum. To enable this uncomment #define BOOT_IROM_CHKSUM -in rboot.h and build your roms with esptool2 using the -iromchksum option. - -Big flash support ------------------ -This only needs to be enabled if you wish to be able to memory map more than the -first 8MBit of the flash. Note you can still only map 8Mbit at a time. Use this -if you want to have multiple 1MB roms, or more smaller roms than will fit in -8Mbits. If you have a large flash but only need, for example, two 512KB roms you -do not need to enable this mode. - -Support in rBoot is enabled by uncommenting the #define BOOT_BIG_FLASH in -rboot.h. - -Thinking about your linker files is either simpler or more complicated, -depending on your usage of the flash. If you intend to use multiple 1MB roms you -will only need one linker file and you only need to link once for OTA updates. -Although when you perform an OTA update the rom will be written to a different -position on the flash, each 8Mbit of flash is mapped (separately) to 0x40200000. -So when any given rom is run the code will appear at the same place in memory -regardless of where it is on the flash. Your base address for the linker would -be 0x40202010. (Actually all but the first rom could base at 0x40200010 (because -they don't need to leave space for rBoot and config) but then you're just making -it more complicated again!) -If you wanted eight 512KB roms you would need two linker files - one for the -first half of any given 8Mbits of flash and another for the second half. Just -remember you are really laying out within a single 8MBit area, which can then be -replicated multiple times on the flash. - -Now the clever bit - rBoot needs to hijack the memory mapping code to select -which 8Mbits gets mapped. There is no API for this, but we can override the SDK -function. First we need to slightly modify the SDK library libmain.a, like so: - - xtensa-lx106-elf-objcopy -W Cache_Read_Enable_New libmain.a libmain2.a - -This produces a version of libmain with a 'weakened' Cache_Read_Enable_New -function, which we can then override with our own. Modify your Makefile to link -against the library main2 instead of main. -Next add rboot-bigflash.c (from the appcode directory) & rboot.h to your project -- this adds the replacement Cache_Read_Enable_New to your code. - -Getting gcc to apply the override correctly can be slightly tricky (I'm not sure -why, it shouldn't be). One option is to add "-u Cache_Read_Enable_New" to your -LD_FLAGS and change the order of objects on the LD command so your objects/.a -file is before the libraries. Another way that seems easier was to #include -rboot-bigflash.c into the main .c file, rather than compiling it to a separate -object file. I can't make any sense of that, but I suggest you uncomment the -message in the Cache_Read_Enable_New function when you first build with it, to -make sure you are getting your version into the rom. - -Now when rBoot starts your rom, the SDK code linked in it that normally performs -the memory mapping will delegate part of that task to rBoot code (linked in your -rom, not in rBoot itself) to choose which part of the flash to map. - -Integration into other frameworks ---------------------------------- -If you wish to integrate rBoot into a development framework (e.g. Sming) you -can set the define RBOOT_INTEGRATION and at compile time the file -rboot-integration.h will be included into the source. This should allow you to -set some platform specific options without having to modify the source of rBoot -which makes it easier to integrate and maintain. diff --git a/src/common/platforms/esp8266/rom/.gitattributes b/src/common/platforms/esp8266/rom/.gitattributes deleted file mode 100644 index b2dd2258c..000000000 --- a/src/common/platforms/esp8266/rom/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -rom.bin -nodiff -rom.elf -nodiff diff --git a/src/common/platforms/esp8266/rom/disasm.sh b/src/common/platforms/esp8266/rom/disasm.sh deleted file mode 100755 index 50c06f2fe..000000000 --- a/src/common/platforms/esp8266/rom/disasm.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -xtensa-lx106-elf-gcc -Wl,-N,-Ttext,0x40000000 -nostdlib rom.S -o rom.elf && \ - xtensa-lx106-elf-objdump -d rom.elf > ESP8266_ROM.txt diff --git a/src/common/platforms/esp8266/rom/rom.S b/src/common/platforms/esp8266/rom/rom.S deleted file mode 100644 index ac275960e..000000000 --- a/src/common/platforms/esp8266/rom/rom.S +++ /dev/null @@ -1,101 +0,0 @@ -.text -.org 0 -.globl _start - -// xtensa-esp108-elf-gcc -Wl,-N,-Ttext,0x40000000 -nostdlib rom.S -o rom.elf - -here = . -#define PROVIDE(name, addr) name = here + addr - 0x40000000 - -#include "rom_functions.S" - -PROVIDE(SPI_chip_erase, 0x40004080) -PROVIDE(SPIFlashModeConfig, 0x40004568) - -PROVIDE(_c_0x80000000, 0x400003a4) -PROVIDE(_c_0x00400000, 0x40000414) -PROVIDE(_c_0x00ffffff, 0x40000418) -PROVIDE(_p_user_start, 0x40000fb8) // 0x3fffdcd0 -PROVIDE(_c_0x60000200, 0x40000fc4) -PROVIDE(_s_ets_build, 0x40000fc8) // Jan 8 2013 -PROVIDE(_s_ets_banner, 0x40000fcc) // ets %s,rst cause:%d, boot mode:(%d,%d) -PROVIDE(_s_format_s_s, 0x40000fd0) // %s %s -PROVIDE(_s_ets_main_c, 0x40000fd4) // ets_main.c -PROVIDE(_s_user_code_done, 0x40000fe0) // user code done -PROVIDE(_s_wdt_reset, 0x40000fe4) // wdt reset -PROVIDE(_s_unk_reset, 0x40000fe8) // unknown reset -PROVIDE(_l_boot_mode_6, 0x40001044) -PROVIDE(_l_boot_mode_0_1_2_3, 0x4000104a) -PROVIDE(_l_rst_cause_ge_3, 0x40001075) -PROVIDE(_l_rst_cause_ge_3_lt_7, 0x40001084) -PROVIDE(_l_rst_cause_3_soft_wdt, 0x4000108a) -PROVIDE(_l_load_from_flash, 0x400010a8) -PROVIDE(_l_run_user_code, 0x400010be) -PROVIDE(_l_wdt_reset, 0x40001118) -PROVIDE(_l_rst_cause_1_2, 0x40001121) -PROVIDE(_l_rst_cause_unknown, 0x40001130) -PROVIDE(_l_boot_mode_7, 0x40001148) -PROVIDE(_l_boot_mode_4, 0x40001150) -PROVIDE(_c_0x60000600, 0x4000115c) -PROVIDE(_s_waiting_for_host, 0x4000119c) // waiting for host -PROVIDE(_x_unk1160, 0x40001160) -PROVIDE(_c_0x3fffa000_uart_buf, 0x400011a0) -PROVIDE(_c_0x2000, 0x400011a4) -PROVIDE(_c_0x40100000, 0x400011a8) // default user_start -PROVIDE(_x_boot2, 0x400011ac) // arg: 0x3fffdcd0 (&user_start) -PROVIDE(_l_strapping_2_eq_0, 0x400011d2) -PROVIDE(_l_124d, 0x4000124d) -PROVIDE(_l_boot_mode2_eq_2, 0x40001265) -PROVIDE(_l_boot_mode_eq_2, 0x40001268) -PROVIDE(_l_boot_mode_eq_1, 0x4000127a) -PROVIDE(_l_setup_uart, 0x40001291) -PROVIDE(_l_boot_mode_eq_3, 0x400012b0) -PROVIDE(_x_load_from_flash, 0x40001308) -PROVIDE(_c_0x00001000, 0x40001994) -PROVIDE(_c_0xffdfffff, 0x400025dc) -PROVIDE(_l_rr_not_dsleep, 0x40002624) -PROVIDE(_c_100000, 0x40002664) -PROVIDE(_c_0x3feffe00, 0x40002e5c) -PROVIDE(_p_cpu_freq, 0x40002ec8) -PROVIDE(_x_wdt_interval, 0x40002f14) // arg: 3 -> 11, 6 -> 12, 12 -> 13 -PROVIDE(_p_wdt_cfg, 0x40002f30) -PROVIDE(_wdt_soft_timer_fn2, 0x40002f3c) -PROVIDE(_l_wdt_soft_timer_fn2_exit, 0x40002f59) -PROVIDE(_l_wdt_soft_timer_fn2_feed, 0x40002f60) -PROVIDE(_l_wdt_soft_timer_fn2_mode2_stage1_feed, 0x40002f74) -PROVIDE(_wdt_soft_timer_fn, 0x40002f88) -PROVIDE(_p_wdt_soft_timer_fn, 0x40002f98) -PROVIDE(_p_wdt_soft_timer, 0x40002f9c) // 0x3fffdde0 -PROVIDE(_l_skip_wdt_imask, 0x40002fc4) -PROVIDE(_l_wdt_enable_and_exit, 0x40002fea) -PROVIDE(_l_wdt_mode_1, 0x4000309c) -PROVIDE(_l_wdt_mode_2_4, 0x4000300a) -PROVIDE(_l_wdt_mode_3, 0x40003060) -PROVIDE(_l_recv_req, 0x400033a1) -PROVIDE(_l_send_response, 0x400033be) -PROVIDE(_l_send_resp_pkt, 0x400033da) -PROVIDE(_l_process_req, 0x40003424) -PROVIDE(_l_34a3, 0x400034a3) -PROVIDE(_l_34b9, 0x400034b9) -PROVIDE(_c_0x00001800, 0x40003534) -PROVIDE(_c_0x60000a00, 0x40003f54) -PROVIDE(_c_0x01000000, 0x400040bc) -PROVIDE(_x_SPI_erase_sector, 0x400040c0) -PROVIDE(_l_SPI_erase_sector_align_ok, 0x400040dc) -PROVIDE(_c_0x00800000, 0x4000411c) -PROVIDE(_x_SPI_erase_block, 0x40004120) -PROVIDE(_c_0x20000000, 0x4000416c) -PROVIDE(_c_0x08000000, 0x400043c4) -PROVIDE(_c_0x04000000, 0x400043fc) -PROVIDE(_c_0x40000000, 0x40004438) -PROVIDE(_p_flashchip, 0x40004874) -PROVIDE(_s_bootup, 0x400054cc) // bootup , addr 0x%08x -PROVIDE(_p_sip_ctx, 0x40005130) -PROVIDE(_l_sip_cmd_out, 0x4000550a) -PROVIDE(_c_0x00010000, 0x40005de0) - -.text - -_start: -.incbin "rom.bin" -_end: diff --git a/src/common/platforms/esp8266/rom/rom.bin b/src/common/platforms/esp8266/rom/rom.bin deleted file mode 100644 index fe4d1956655081254d74cee85fc9341e84765e60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65536 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 T|22#w!CV+z{`>d;fCl~pw-9$= diff --git a/src/common/platforms/esp8266/rom/rom.elf b/src/common/platforms/esp8266/rom/rom.elf deleted file mode 100755 index 6a21116b321780589032452c7854e66d5b333804..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79984 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�UohQG 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 Fe*p9gmj(a; diff --git a/src/common/platforms/esp8266/rom/rom_functions.S b/src/common/platforms/esp8266/rom/rom_functions.S deleted file mode 100644 index bf86dad46..000000000 --- a/src/common/platforms/esp8266/rom/rom_functions.S +++ /dev/null @@ -1,347 +0,0 @@ -PROVIDE ( Cache_Read_Disable , 0x400047f0 ); -PROVIDE ( Cache_Read_Enable , 0x40004678 ); -PROVIDE ( FilePacketSendReqMsgProc , 0x400035a0 ); -PROVIDE ( FlashDwnLdParamCfgMsgProc , 0x4000368c ); -PROVIDE ( FlashDwnLdStartMsgProc , 0x40003538 ); -PROVIDE ( FlashDwnLdStopReqMsgProc , 0x40003658 ); -PROVIDE ( GetUartDevice , 0x40003f4c ); -PROVIDE ( MD5Final , 0x40009900 ); -PROVIDE ( MD5Init , 0x40009818 ); -PROVIDE ( MD5Update , 0x40009834 ); -PROVIDE ( MemDwnLdStartMsgProc , 0x400036c4 ); -PROVIDE ( MemDwnLdStopReqMsgProc , 0x4000377c ); -PROVIDE ( MemPacketSendReqMsgProc , 0x400036f0 ); -PROVIDE ( RcvMsg , 0x40003eac ); -PROVIDE ( SHA1Final , 0x4000b648 ); -PROVIDE ( SHA1Init , 0x4000b584 ); -PROVIDE ( SHA1Transform , 0x4000a364 ); -PROVIDE ( SHA1Update , 0x4000b5a8 ); -PROVIDE ( SPI_read_status , 0x400043c8 ); -PROVIDE ( SPI_write_status , 0x40004400 ); -PROVIDE ( SPI_write_enable , 0x4000443c ); -PROVIDE ( Wait_SPI_Idle , 0x4000448c ); -PROVIDE ( SPIEraseArea , 0x40004b44 ); -PROVIDE ( SPIEraseBlock , 0x400049b4 ); -PROVIDE ( SPIEraseChip , 0x40004984 ); -PROVIDE ( SPIEraseSector , 0x40004a00 ); -PROVIDE ( SPILock , 0x400048a8 ); -PROVIDE ( SPIParamCfg , 0x40004c2c ); -PROVIDE ( SPIRead , 0x40004b1c ); -PROVIDE ( SPIReadModeCnfig , 0x400048ec ); -PROVIDE ( SPIUnlock , 0x40004878 ); -PROVIDE ( SPIWrite , 0x40004a4c ); -PROVIDE ( SelectSpiFunction , 0x40003f58 ); -PROVIDE ( SendMsg , 0x40003cf4 ); -PROVIDE ( UartConnCheck , 0x40003230 ); -PROVIDE ( UartConnectProc , 0x400037a0 ); -PROVIDE ( UartDwnLdProc , 0x40003368 ); -PROVIDE ( UartGetCmdLn , 0x40003ef4 ); -PROVIDE ( UartRegReadProc , 0x4000381c ); -PROVIDE ( UartRegWriteProc , 0x400037ac ); -PROVIDE ( UartRxString , 0x40003c30 ); -PROVIDE ( Uart_Init , 0x40003a14 ); -PROVIDE ( _DebugExceptionVector , 0x40000010 ); -PROVIDE ( _DoubleExceptionVector , 0x40000070 ); -PROVIDE ( _KernelExceptionVector , 0x40000030 ); -PROVIDE ( _NMIExceptionVector , 0x40000020 ); -PROVIDE ( _ResetHandler , 0x400000a4 ); -PROVIDE ( _ResetVector , 0x40000080 ); -PROVIDE ( _UserExceptionVector , 0x40000050 ); -PROVIDE ( __adddf3 , 0x4000c538 ); -PROVIDE ( __addsf3 , 0x4000c180 ); -PROVIDE ( __divdf3 , 0x4000cb94 ); -PROVIDE ( __divdi3 , 0x4000ce60 ); -PROVIDE ( __divsi3 , 0x4000dc88 ); -PROVIDE ( __extendsfdf2 , 0x4000cdfc ); -PROVIDE ( __fixdfsi , 0x4000ccb8 ); -PROVIDE ( __fixunsdfsi , 0x4000cd00 ); -PROVIDE ( __fixunssfsi , 0x4000c4c4 ); -PROVIDE ( __floatsidf , 0x4000e2f0 ); -PROVIDE ( __floatsisf , 0x4000e2ac ); -PROVIDE ( __floatunsidf , 0x4000e2e8 ); -PROVIDE ( __floatunsisf , 0x4000e2a4 ); -PROVIDE ( __muldf3 , 0x4000c8f0 ); -PROVIDE ( __muldi3 , 0x40000650 ); -PROVIDE ( __mulsf3 , 0x4000c3dc ); -PROVIDE ( __subdf3 , 0x4000c688 ); -PROVIDE ( __subsf3 , 0x4000c268 ); -PROVIDE ( __truncdfsf2 , 0x4000cd5c ); -PROVIDE ( __udivdi3 , 0x4000d310 ); -PROVIDE ( __udivsi3 , 0x4000e21c ); -PROVIDE ( __umoddi3 , 0x4000d770 ); -PROVIDE ( __umodsi3 , 0x4000e268 ); -PROVIDE ( __umulsidi3 , 0x4000dcf0 ); -PROVIDE ( _rom_store , 0x4000e388 ); -PROVIDE ( _rom_store_table , 0x4000e328 ); -PROVIDE ( _start , 0x4000042c ); -PROVIDE ( _xtos_alloca_handler , 0x4000dbe0 ); -PROVIDE ( _xtos_c_wrapper_handler , 0x40000598 ); -PROVIDE ( _xtos_cause3_handler , 0x40000590 ); -PROVIDE ( _xtos_ints_off , 0x4000bda4 ); -PROVIDE ( _xtos_ints_on , 0x4000bd84 ); -PROVIDE ( _xtos_l1int_handler , 0x4000048c ); -PROVIDE ( _xtos_p_none , 0x4000dbf8 ); -PROVIDE ( _xtos_restore_intlevel , 0x4000056c ); -PROVIDE ( _xtos_return_from_exc , 0x4000dc54 ); -PROVIDE ( _xtos_set_exception_handler , 0x40000454 ); -PROVIDE ( _xtos_set_interrupt_handler , 0x4000bd70 ); -PROVIDE ( _xtos_set_interrupt_handler_arg , 0x4000bd28 ); -PROVIDE ( _xtos_set_intlevel , 0x4000dbfc ); -PROVIDE ( _xtos_set_min_intlevel , 0x4000dc18 ); -PROVIDE ( _xtos_set_vpri , 0x40000574 ); -PROVIDE ( _xtos_syscall_handler , 0x4000dbe4 ); -PROVIDE ( _xtos_unhandled_exception , 0x4000dc44 ); -PROVIDE ( _xtos_unhandled_interrupt , 0x4000dc3c ); -PROVIDE ( aes_decrypt , 0x400092d4 ); -PROVIDE ( aes_decrypt_deinit , 0x400092e4 ); -PROVIDE ( aes_decrypt_init , 0x40008ea4 ); -PROVIDE ( aes_unwrap , 0x40009410 ); -PROVIDE ( base64_decode , 0x40009648 ); -PROVIDE ( base64_encode , 0x400094fc ); -PROVIDE ( bzero , 0x4000de84 ); -PROVIDE ( cmd_parse , 0x40000814 ); -PROVIDE ( conv_str_decimal , 0x40000b24 ); -PROVIDE ( conv_str_hex , 0x40000cb8 ); -PROVIDE ( convert_para_str , 0x40000a60 ); -PROVIDE ( dtm_get_intr_mask , 0x400026d0 ); -PROVIDE ( dtm_params_init , 0x4000269c ); -PROVIDE ( dtm_set_intr_mask , 0x400026c8 ); -PROVIDE ( dtm_set_params , 0x400026dc ); -PROVIDE ( eprintf , 0x40001d14 ); -PROVIDE ( eprintf_init_buf , 0x40001cb8 ); -PROVIDE ( eprintf_to_host , 0x40001d48 ); -PROVIDE ( est_get_printf_buf_remain_len , 0x40002494 ); -PROVIDE ( est_reset_printf_buf_len , 0x4000249c ); -PROVIDE ( ets_bzero , 0x40002ae8 ); -PROVIDE ( ets_char2xdigit , 0x40002b74 ); -PROVIDE ( ets_delay_us , 0x40002ecc ); -PROVIDE ( ets_enter_sleep , 0x400027b8 ); -PROVIDE ( ets_external_printf , 0x40002578 ); -PROVIDE ( ets_get_cpu_frequency , 0x40002f0c ); -PROVIDE ( ets_getc , 0x40002bcc ); -PROVIDE ( ets_install_external_printf , 0x40002450 ); -PROVIDE ( ets_install_putc1 , 0x4000242c ); -PROVIDE ( ets_install_putc2 , 0x4000248c ); -PROVIDE ( ets_install_uart_printf , 0x40002438 ); -PROVIDE ( ets_intr_lock , 0x40000f74 ); -PROVIDE ( ets_intr_unlock , 0x40000f80 ); -PROVIDE ( ets_isr_attach , 0x40000f88 ); -PROVIDE ( ets_isr_mask , 0x40000f98 ); -PROVIDE ( ets_isr_unmask , 0x40000fa8 ); -PROVIDE ( ets_memcmp , 0x400018d4 ); -PROVIDE ( ets_memcpy , 0x400018b4 ); -PROVIDE ( ets_memmove , 0x400018c4 ); -PROVIDE ( ets_memset , 0x400018a4 ); -PROVIDE ( ets_post , 0x40000e24 ); -PROVIDE ( ets_printf , 0x400024cc ); -PROVIDE ( ets_putc , 0x40002be8 ); -PROVIDE ( ets_rtc_int_register , 0x40002a40 ); -PROVIDE ( ets_run , 0x40000e04 ); -PROVIDE ( ets_set_idle_cb , 0x40000dc0 ); -PROVIDE ( ets_set_user_start , 0x40000fbc ); -PROVIDE ( ets_str2macaddr , 0x40002af8 ); -PROVIDE ( ets_strcmp , 0x40002aa8 ); -PROVIDE ( ets_strcpy , 0x40002a88 ); -PROVIDE ( ets_strlen , 0x40002ac8 ); -PROVIDE ( ets_strncmp , 0x40002ab8 ); -PROVIDE ( ets_strncpy , 0x40002a98 ); -PROVIDE ( ets_strstr , 0x40002ad8 ); -PROVIDE ( ets_task , 0x40000dd0 ); -PROVIDE ( ets_timer_arm , 0x40002cc4 ); -PROVIDE ( ets_timer_disarm , 0x40002d40 ); -PROVIDE ( ets_timer_done , 0x40002d80 ); -PROVIDE ( ets_timer_handler_isr , 0x40002da8 ); -PROVIDE ( ets_timer_init , 0x40002e68 ); -PROVIDE ( ets_timer_setfn , 0x40002c48 ); -PROVIDE ( ets_uart_printf , 0x40002544 ); -PROVIDE ( ets_update_cpu_frequency , 0x40002f04 ); -PROVIDE ( ets_vprintf , 0x40001f00 ); -PROVIDE ( ets_wdt_disable , 0x400030f0 ); -PROVIDE ( ets_wdt_enable , 0x40002fa0 ); -PROVIDE ( ets_wdt_get_mode , 0x40002f34 ); -PROVIDE ( ets_wdt_init , 0x40003170 ); -PROVIDE ( ets_wdt_restore , 0x40003158 ); -PROVIDE ( ets_write_char , 0x40001da0 ); -PROVIDE ( get_first_seg , 0x4000091c ); -PROVIDE ( gpio_init , 0x40004c50 ); -PROVIDE ( gpio_input_get , 0x40004cf0 ); -PROVIDE ( gpio_intr_ack , 0x40004dcc ); -PROVIDE ( gpio_intr_handler_register , 0x40004e28 ); -PROVIDE ( gpio_intr_pending , 0x40004d88 ); -PROVIDE ( gpio_intr_test , 0x40004efc ); -PROVIDE ( gpio_output_set , 0x40004cd0 ); -PROVIDE ( gpio_pin_intr_state_set , 0x40004d90 ); -PROVIDE ( gpio_pin_wakeup_disable , 0x40004ed4 ); -PROVIDE ( gpio_pin_wakeup_enable , 0x40004e90 ); -PROVIDE ( gpio_register_get , 0x40004d5c ); -PROVIDE ( gpio_register_set , 0x40004d04 ); -PROVIDE ( hmac_md5 , 0x4000a2cc ); -PROVIDE ( hmac_md5_vector , 0x4000a160 ); -PROVIDE ( hmac_sha1 , 0x4000ba28 ); -PROVIDE ( hmac_sha1_vector , 0x4000b8b4 ); -PROVIDE ( lldesc_build_chain , 0x40004f40 ); -PROVIDE ( lldesc_num2link , 0x40005050 ); -PROVIDE ( lldesc_set_owner , 0x4000507c ); -PROVIDE ( main , 0x40000fec ); -PROVIDE ( md5_vector , 0x400097ac ); -PROVIDE ( mem_calloc , 0x40001c2c ); -PROVIDE ( mem_free , 0x400019e0 ); -PROVIDE ( mem_init , 0x40001998 ); -PROVIDE ( mem_malloc , 0x40001b40 ); -PROVIDE ( mem_realloc , 0x40001c6c ); -PROVIDE ( mem_trim , 0x40001a14 ); -PROVIDE ( mem_zalloc , 0x40001c58 ); -PROVIDE ( memcmp , 0x4000dea8 ); -PROVIDE ( memcpy , 0x4000df48 ); -PROVIDE ( memmove , 0x4000e04c ); -PROVIDE ( memset , 0x4000e190 ); -PROVIDE ( multofup , 0x400031c0 ); -PROVIDE ( pbkdf2_sha1 , 0x4000b840 ); -PROVIDE ( phy_get_romfuncs , 0x40006b08 ); -PROVIDE ( rand , 0x40000600 ); -PROVIDE ( rc4_skip , 0x4000dd68 ); -PROVIDE ( recv_packet , 0x40003d08 ); -PROVIDE ( remove_head_space , 0x40000a04 ); -PROVIDE ( rijndaelKeySetupDec , 0x40008dd0 ); -PROVIDE ( rijndaelKeySetupEnc , 0x40009300 ); -PROVIDE ( rom_abs_temp , 0x400060c0 ); -PROVIDE ( rom_ana_inf_gating_en , 0x40006b10 ); -PROVIDE ( rom_cal_tos_v50 , 0x40007a28 ); -PROVIDE ( rom_chip_50_set_channel , 0x40006f84 ); -PROVIDE ( rom_chip_v5_disable_cca , 0x400060d0 ); -PROVIDE ( rom_chip_v5_enable_cca , 0x400060ec ); -PROVIDE ( rom_chip_v5_rx_init , 0x4000711c ); -PROVIDE ( rom_chip_v5_sense_backoff , 0x4000610c ); -PROVIDE ( rom_chip_v5_tx_init , 0x4000718c ); -PROVIDE ( rom_dc_iq_est , 0x4000615c ); -PROVIDE ( rom_en_pwdet , 0x400061b8 ); -PROVIDE ( rom_get_bb_atten , 0x40006238 ); -PROVIDE ( rom_get_corr_power , 0x40006260 ); -PROVIDE ( rom_get_fm_sar_dout , 0x400062dc ); -PROVIDE ( rom_get_noisefloor , 0x40006394 ); -PROVIDE ( rom_get_power_db , 0x400063b0 ); -PROVIDE ( rom_i2c_readReg , 0x40007268 ); -PROVIDE ( rom_i2c_readReg_Mask , 0x4000729c ); -PROVIDE ( rom_i2c_writeReg , 0x400072d8 ); -PROVIDE ( rom_i2c_writeReg_Mask , 0x4000730c ); -PROVIDE ( rom_iq_est_disable , 0x40006400 ); -PROVIDE ( rom_iq_est_enable , 0x40006430 ); -PROVIDE ( rom_linear_to_db , 0x40006484 ); -PROVIDE ( rom_mhz2ieee , 0x400065a4 ); -PROVIDE ( rom_pbus_dco___SA2 , 0x40007bf0 ); -PROVIDE ( rom_pbus_debugmode , 0x4000737c ); -PROVIDE ( rom_pbus_enter_debugmode , 0x40007410 ); -PROVIDE ( rom_pbus_exit_debugmode , 0x40007448 ); -PROVIDE ( rom_pbus_force_test , 0x4000747c ); -PROVIDE ( rom_pbus_rd , 0x400074d8 ); -PROVIDE ( rom_pbus_set_rxgain , 0x4000754c ); -PROVIDE ( rom_pbus_set_txgain , 0x40007610 ); -PROVIDE ( rom_pbus_workmode , 0x40007648 ); -PROVIDE ( rom_pbus_xpd_rx_off , 0x40007688 ); -PROVIDE ( rom_pbus_xpd_rx_on , 0x400076cc ); -PROVIDE ( rom_pbus_xpd_tx_off , 0x400076fc ); -PROVIDE ( rom_pbus_xpd_tx_on , 0x40007740 ); -PROVIDE ( rom_pbus_xpd_tx_on__low_gain , 0x400077a0 ); -PROVIDE ( rom_phy_reset_req , 0x40007804 ); -PROVIDE ( rom_restart_cal , 0x4000781c ); -PROVIDE ( rom_rfcal_pwrctrl , 0x40007eb4 ); -PROVIDE ( rom_rfcal_rxiq , 0x4000804c ); -PROVIDE ( rom_rfcal_rxiq_set_reg , 0x40008264 ); -PROVIDE ( rom_rfcal_txcap , 0x40008388 ); -PROVIDE ( rom_rfcal_txiq , 0x40008610 ); -PROVIDE ( rom_rfcal_txiq_cover , 0x400088b8 ); -PROVIDE ( rom_rfcal_txiq_set_reg , 0x40008a70 ); -PROVIDE ( rom_rfpll_reset , 0x40007868 ); -PROVIDE ( rom_rfpll_set_freq , 0x40007968 ); -PROVIDE ( rom_rxiq_cover_mg_mp , 0x40008b6c ); -PROVIDE ( rom_rxiq_get_mis , 0x40006628 ); -PROVIDE ( rom_sar_init , 0x40006738 ); -PROVIDE ( rom_set_ana_inf_tx_scale , 0x4000678c ); -PROVIDE ( rom_set_channel_freq , 0x40006c50 ); -PROVIDE ( rom_set_loopback_gain , 0x400067c8 ); -PROVIDE ( rom_set_noise_floor , 0x40006830 ); -PROVIDE ( rom_set_rxclk_en , 0x40006550 ); -PROVIDE ( rom_set_txbb_atten , 0x40008c6c ); -PROVIDE ( rom_set_txclk_en , 0x4000650c ); -PROVIDE ( rom_set_txiq_cal , 0x40008d34 ); -PROVIDE ( rom_start_noisefloor , 0x40006874 ); -PROVIDE ( rom_start_tx_tone , 0x400068b4 ); -PROVIDE ( rom_stop_tx_tone , 0x4000698c ); -PROVIDE ( rom_tx_mac_disable , 0x40006a98 ); -PROVIDE ( rom_tx_mac_enable , 0x40006ad4 ); -PROVIDE ( rom_txtone_linear_pwr , 0x40006a1c ); -PROVIDE ( rom_write_rfpll_sdm , 0x400078dc ); -PROVIDE ( roundup2 , 0x400031b4 ); -PROVIDE ( rtc_enter_sleep , 0x40002870 ); -PROVIDE ( rtc_get_reset_reason , 0x400025e0 ); -PROVIDE ( rtc_intr_handler , 0x400029ec ); -PROVIDE ( rtc_set_sleep_mode , 0x40002668 ); -PROVIDE ( save_rxbcn_mactime , 0x400027a4 ); -PROVIDE ( save_tsf_us , 0x400027ac ); -PROVIDE ( send_packet , 0x40003c80 ); -PROVIDE ( sha1_prf , 0x4000ba48 ); -PROVIDE ( sha1_vector , 0x4000a2ec ); -PROVIDE ( sip_alloc_to_host_evt , 0x40005180 ); -PROVIDE ( sip_get_ptr , 0x400058a8 ); -PROVIDE ( sip_get_state , 0x40005668 ); -PROVIDE ( sip_init_attach , 0x4000567c ); -PROVIDE ( sip_install_rx_ctrl_cb , 0x4000544c ); -PROVIDE ( sip_install_rx_data_cb , 0x4000545c ); -PROVIDE ( sip_post , 0x400050fc ); -PROVIDE ( sip_post_init , 0x400056c4 ); -PROVIDE ( sip_reclaim_from_host_cmd , 0x4000534c ); -PROVIDE ( sip_reclaim_tx_data_pkt , 0x400052c0 ); -PROVIDE ( sip_send , 0x40005808 ); -PROVIDE ( sip_to_host_chain_append , 0x40005864 ); -PROVIDE ( sip_to_host_evt_send_done , 0x40005234 ); -PROVIDE ( slc_add_credits , 0x400060ac ); -PROVIDE ( slc_enable , 0x40005d90 ); -PROVIDE ( slc_from_host_chain_fetch , 0x40005f24 ); -PROVIDE ( slc_from_host_chain_recycle , 0x40005e94 ); -PROVIDE ( slc_init_attach , 0x40005c50 ); -PROVIDE ( slc_init_credit , 0x4000608c ); -PROVIDE ( slc_pause_from_host , 0x40006014 ); -PROVIDE ( slc_reattach , 0x40005c1c ); -PROVIDE ( slc_resume_from_host , 0x4000603c ); -PROVIDE ( slc_select_tohost_gpio , 0x40005dc0 ); -PROVIDE ( slc_select_tohost_gpio_mode , 0x40005db8 ); -PROVIDE ( slc_send_to_host_chain , 0x40005de4 ); -PROVIDE ( slc_set_host_io_max_window , 0x40006068 ); -PROVIDE ( slc_to_host_chain_recycle , 0x40005f10 ); -PROVIDE ( software_reset , 0x4000264c ); -PROVIDE ( spi_flash_attach , 0x40004644 ); -PROVIDE ( srand , 0x400005f0 ); -PROVIDE ( strcmp , 0x4000bdc8 ); -PROVIDE ( strcpy , 0x4000bec8 ); -PROVIDE ( strlen , 0x4000bf4c ); -PROVIDE ( strncmp , 0x4000bfa8 ); -PROVIDE ( strncpy , 0x4000c0a0 ); -PROVIDE ( strstr , 0x4000e1e0 ); -PROVIDE ( timer_insert , 0x40002c64 ); -PROVIDE ( uartAttach , 0x4000383c ); -PROVIDE ( uart_baudrate_detect , 0x40003924 ); -PROVIDE ( uart_buff_switch , 0x400038a4 ); -PROVIDE ( uart_div_modify , 0x400039d8 ); -PROVIDE ( uart_rx_intr_handler , 0x40003bbc ); -PROVIDE ( uart_rx_one_char , 0x40003b8c ); -PROVIDE ( uart_rx_one_char_block , 0x40003b64 ); -PROVIDE ( uart_rx_readbuff , 0x40003ec8 ); -PROVIDE ( uart_tx_one_char , 0x40003b30 ); -PROVIDE ( wepkey_128 , 0x4000bc40 ); -PROVIDE ( wepkey_64 , 0x4000bb3c ); -PROVIDE ( xthal_bcopy , 0x40000688 ); -PROVIDE ( xthal_copy123 , 0x4000074c ); -PROVIDE ( xthal_get_ccompare , 0x4000dd4c ); -PROVIDE ( xthal_get_ccount , 0x4000dd38 ); -PROVIDE ( xthal_get_interrupt , 0x4000dd58 ); -PROVIDE ( xthal_get_intread , 0x4000dd58 ); -PROVIDE ( xthal_memcpy , 0x400006c4 ); -PROVIDE ( xthal_set_ccompare , 0x4000dd40 ); -PROVIDE ( xthal_set_intclear , 0x4000dd60 ); -PROVIDE ( xthal_spill_registers_into_stack_nw , 0x4000e320 ); -PROVIDE ( xthal_window_spill , 0x4000e324 ); -PROVIDE ( xthal_window_spill_nw , 0x4000e320 ); - -PROVIDE ( Te0 , 0x3fffccf0 ); -PROVIDE ( UartDev , 0x3fffde10 ); -PROVIDE ( flashchip , 0x3fffc714); diff --git a/src/common/platforms/esp8266/stubs/Makefile b/src/common/platforms/esp8266/stubs/Makefile deleted file mode 100644 index f7a761223..000000000 --- a/src/common/platforms/esp8266/stubs/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# -# Copyright (c) 2015 Cesanta Software Limited -# All rights reserved -# - -STUB = stub_hello.c -LIBS = -PARAMS = -CFLAGS = -PORT = /dev/ttyUSB0 - -BUILD_DIR = .build -COMMON_STUB_DIR = ../../esp -STUB_ELF = $(BUILD_DIR)/$(patsubst %.c,%.elf,$(notdir $(STUB))) -STUB_JSON ?= $(BUILD_DIR)/$(patsubst %.c,%.json,$(notdir $(STUB))) -SDK = $(shell cat ../../../../fw/platforms/esp8266/sdk.version) -XT_CC = xtensa-lx106-elf-gcc - -.PHONY: all clean run wrap - -all: $(STUB_ELF) - -$(STUB_ELF): $(STUB) $(LIBS) - @echo " CC $^ -> $@" - @[ -d $(BUILD_DIR) ] || mkdir $(BUILD_DIR) - docker run --rm -i -v $(CURDIR)/../../../..:/src $(SDK) //bin/bash -c \ - "cd /src/common/platforms/esp8266/stubs && \ - $(XT_CC) -std=c99 -Wall -Werror -Os -DESP8266 \ - -mtext-section-literals -mlongcalls -nostdlib -fno-builtin \ - -I. -I/src/common/platforms/esp -I/src/common/platforms/esp8266 \ - -I/opt/Espressif/ESP8266_SDK \ - -Wl,-static -ffunction-sections -lgcc -Wl,--gc-sections \ - -Tstub.ld $(CFLAGS) -o $@ $^" - -wrap: $(STUB_JSON) - -$(STUB_JSON): $(STUB_ELF) $(COMMON_STUB_DIR)/esptool.py - @echo " WRAP $< -> $@" - @docker run --rm -i -v $(CURDIR)/../../../..:/src $(SDK) //bin/bash -c \ - "cd /src/common/platforms/esp8266/stubs && \ - $(COMMON_STUB_DIR)/esptool.py wrap_stub $<" > $@ - -run: $(STUB_JSON) - @echo " RUN $< $(PARAMS) -> $(PORT)" - @docker run --rm -i --privileged -v $(CURDIR)/../../../..:/src $(SDK) //bin/bash -c \ - "cd /src/common/platforms/esp8266/stubs && \ - $(COMMON_STUB_DIR)/esptool.py --port $(PORT) run_stub $< $(PARAMS)" - -clean: - @rm -rf $(BUILD_DIR) diff --git a/src/common/platforms/esp8266/stubs/README.md b/src/common/platforms/esp8266/stubs/README.md deleted file mode 100644 index 926577123..000000000 --- a/src/common/platforms/esp8266/stubs/README.md +++ /dev/null @@ -1,13 +0,0 @@ -This is a ESP boot loader stub development environment. - -Code produced in this environment can be loaded and executed -in the bootloader environment. Usually it is used to implement -functionality not found in the bootloader. - -Stubs can be executed using the `run_stub` command of the modified esptool.py provided. -`wrap_stub` produces a JSON represenattion of the stub that can later be reused -or built into other tools. - -Example usage: - $ make run STUB=stub_flash_size.c PORT=/dev/ttyUSB0 - $ make run STUB=stub_md5.c PORT=/dev/ttyUSB0 PARAMS="0x11000 10000 1" diff --git a/src/common/platforms/esp8266/stubs/chop80.py b/src/common/platforms/esp8266/stubs/chop80.py deleted file mode 100755 index a488ba265..000000000 --- a/src/common/platforms/esp8266/stubs/chop80.py +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/python - -import sys - -for line in open(sys.argv[1]): - i = 0 - while i < len(line): - n = len(line) - i - if n > 80: n = 80 - l = line[i:i+n] - if n == 80: - l += '\\' - print l - i += n diff --git a/src/common/platforms/esp8266/stubs/rom_functions.h b/src/common/platforms/esp8266/stubs/rom_functions.h deleted file mode 100644 index 82ea7468d..000000000 --- a/src/common/platforms/esp8266/stubs/rom_functions.h +++ /dev/null @@ -1,91 +0,0 @@ -#ifndef CS_COMMON_PLATFORMS_ESP8266_STUBS_ROM_FUNCTIONS_H_ -#define CS_COMMON_PLATFORMS_ESP8266_STUBS_ROM_FUNCTIONS_H_ - -#include <inttypes.h> - -#include "/opt/Espressif/ESP8266_NONOS_SDK/include/c_types.h" -#include "/opt/Espressif/ESP8266_NONOS_SDK/include/spi_flash.h" - -int uart_rx_one_char(uint8_t *ch); -uint8_t uart_rx_one_char_block(); -int uart_tx_one_char(char ch); -void uart_div_modify(uint32_t uart_no, uint32_t baud_div); - -int SendMsg(uint8_t *msg, uint8_t size); -int send_packet(uint8_t *packet, uint32_t size); -// recv_packet depends on global UartDev, better to avoid it. -// uint32_t recv_packet(void *packet, uint32_t len, uint8_t no_sync); - -void _putc1(char *ch); - -void ets_delay_us(uint32_t us); - -uint32_t SPILock(); -uint32_t SPIUnlock(); -uint32_t SPIRead(uint32_t addr, void *dst, uint32_t size); -uint32_t SPIWrite(uint32_t addr, const uint32_t *src, uint32_t size); -uint32_t SPIEraseChip(); -uint32_t SPIEraseBlock(uint32_t block_num); -uint32_t SPIEraseSector(uint32_t sector_num); - -extern SpiFlashChip *flashchip; -uint32_t Wait_SPI_Idle(SpiFlashChip *spi); -uint32_t SPI_chip_erase(SpiFlashChip *spi); -uint32_t SPI_read_status(SpiFlashChip *spi); -uint32_t SPI_write_enable(SpiFlashChip *spi); - -void spi_flash_attach(); - -/* ESP32 API compatibility */ -#define esp_rom_spiflash_unlock SPIUnlock -#define esp_rom_spiflash_erase_sector SPIEraseSector -#define esp_rom_spiflash_erase_block SPIEraseBlock -#define esp_rom_spiflash_erase_chip SPIEraseChip -#define esp_rom_spiflash_read SPIRead -#define esp_rom_spiflash_write SPIWrite -#define esp_rom_spiflash_config_param SPIParamCfg - -void SelectSpiFunction(); -void SPIFlashModeConfig(uint32_t a, uint32_t b); -void SPIReadModeCnfig(uint32_t a); -uint32_t SPIParamCfg(uint32_t deviceId, uint32_t chip_size, uint32_t block_size, - uint32_t sector_size, uint32_t page_size, - uint32_t status_mask); - -void Cache_Read_Disable(); - -void ets_delay_us(uint32_t delay_micros); - -void ets_isr_mask(uint32_t ints); -void ets_isr_unmask(uint32_t ints); -typedef void (*int_handler_t)(void *arg); - -void ets_intr_lock(); -void ets_intr_unlock(); -void ets_set_user_start(void (*user_start_fn)()); - -uint32_t rtc_get_reset_reason(); -void software_reset(); -void rom_phy_reset_req(); - -void uart_rx_intr_handler(void *arg); - -void _ResetVector(); - -/* Crypto functions are from wpa_supplicant. */ -int md5_vector(uint32_t num_msgs, const uint8_t *msgs[], - const uint32_t *msg_lens, uint8_t *digest); -int sha1_vector(uint32_t num_msgs, const uint8_t *msgs[], - const uint32_t *msg_lens, uint8_t *digest); - -struct MD5Context { - uint32_t buf[4]; - uint32_t bits[2]; - uint8_t in[64]; -}; - -void MD5Init(struct MD5Context *ctx); -void MD5Update(struct MD5Context *ctx, void *buf, uint32_t len); -void MD5Final(uint8_t digest[16], struct MD5Context *ctx); - -#endif /* CS_COMMON_PLATFORMS_ESP8266_STUBS_ROM_FUNCTIONS_H_ */ diff --git a/src/common/platforms/esp8266/stubs/stub.ld b/src/common/platforms/esp8266/stubs/stub.ld deleted file mode 100644 index 08c416c40..000000000 --- a/src/common/platforms/esp8266/stubs/stub.ld +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2015 Cesanta Software Limited - * All rights reserved - */ - -MEMORY { - iram : org = 0x40100000, len = 0x8000 - dram : org = 0x3FFE8000, len = 0x14000 -} - -ENTRY(stub_main) - -SECTIONS { - .params 0x40100000 : { - _params_start = ABSOLUTE(.); - *(.params) - _params_end = ABSOLUTE(.); - } > iram - - .text : ALIGN(4) { - _code_start = ABSOLUTE(.); - *(.literal) - *(.text .text.*) - } > iram - - .bss : ALIGN(4) { - _bss_start = ABSOLUTE(.); - *(.bss) - _bss_end = ABSOLUTE(.); - } > dram - - .data : ALIGN(4) { - _data_start = ABSOLUTE(.); - *(.data) - *(.rodata .rodata.*) - } > dram -} - -INCLUDE "eagle.rom.addr.v6.ld" - -PROVIDE(SPIFlashModeConfig = 0x40004568); -PROVIDE(SPI_erase_sector = 0x400040c0); -PROVIDE(SPI_erase_block = 0x40004120); -PROVIDE(uart_div_modify = 0x400039d8); diff --git a/src/common/platforms/esp8266/stubs/stub_hello.c b/src/common/platforms/esp8266/stubs/stub_hello.c deleted file mode 100644 index 83c035c48..000000000 --- a/src/common/platforms/esp8266/stubs/stub_hello.c +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <inttypes.h> -#include "rom_functions.h" - -/* Define the args vector and put it into the ".params" section. */ -uint32_t params[3] __attribute__((section(".params"))); - -/* Define a function called stub_main. Do not return or reboot. - * Use send_packet to communicate to the host. */ - -const char *hello = "Hello"; - -void stub_main(void) { - send_packet(hello, 5); - _ResetVector(); -} diff --git a/src/common/platforms/esp8266/stubs/uart.c b/src/common/platforms/esp8266/stubs/uart.c deleted file mode 100644 index 39e28117a..000000000 --- a/src/common/platforms/esp8266/stubs/uart.c +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "uart.h" -#include "ets_sys.h" - -#define UART_CLKDIV_M (UART_CLKDIV_CNT << UART_CLKDIV_S) - -void uart_div_modify(uint8_t uart_no, uint32_t div); - -uint32_t set_baud_rate(uint32_t uart_no, uint32_t old_baud_rate, - uint32_t new_baud_rate) { - uint32_t uart_reg = READ_PERI_REG(UART_CLKDIV_REG(uart_no)); - uint32_t uart_div = uart_reg & UART_CLKDIV_M; - uint32_t master_freq = uart_div * old_baud_rate; - uart_div_modify(uart_no, master_freq / new_baud_rate); - return uart_div; -} diff --git a/src/common/platforms/esp8266/stubs/uart.h b/src/common/platforms/esp8266/stubs/uart.h deleted file mode 100644 index 5afd9e380..000000000 --- a/src/common/platforms/esp8266/stubs/uart.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef CS_COMMON_PLATFORMS_ESP8266_STUBS_UART_H_ -#define CS_COMMON_PLATFORMS_ESP8266_STUBS_UART_H_ - -#include <stdint.h> - -#include "uart_register.h" - -uint32_t set_baud_rate(uint32_t uart_no, uint32_t old_baud_rate, - uint32_t new_baud_rate); - -#define UART_FIFO_REG(i) (REG_UART_BASE(i) + 0x0) -#define UART_CONF1_REG(i) (REG_UART_BASE(i) + 0x24) -#define UART_RX_TOUT_EN (BIT(31)) -#define UART_RX_TOUT_THRHD_S 24 -#define UART_RXFIFO_FULL_THRHD_S 0 -#define UART_INT_ST_REG(i) (REG_UART_BASE(i) + 0x8) -#define UART_INT_ENA_REG(i) (REG_UART_BASE(i) + 0xC) -#define UART_RXFIFO_TOUT_INT_ENA (BIT(8)) -#define UART_RXFIFO_FULL_INT_ENA (BIT(0)) - -#define UART_INT_CLR_REG(i) (REG_UART_BASE(i) + 0x10) - -#define UART_CLKDIV_REG(i) (REG_UART_BASE(i) + 0x14) - -#define UART_STATUS_REG(i) (REG_UART_BASE(i) + 0x1C) - -#define UART_CONF0_REG(i) (REG_UART_BASE(i) + 0x20) -#define UART_RXFIFO_RST (BIT(17)) - -#define ETS_UART0_INUM ETS_UART_INUM - -#endif /* CS_COMMON_PLATFORMS_ESP8266_STUBS_UART_H_ */ diff --git a/src/common/platforms/esp8266/uart_register.h b/src/common/platforms/esp8266/uart_register.h deleted file mode 100644 index e8fcda731..000000000 --- a/src/common/platforms/esp8266/uart_register.h +++ /dev/null @@ -1,136 +0,0 @@ -/* clang-format off */ -/* - * Copyright (c) 2010 - 2011 Espressif System - * - */ - -#ifndef CS_COMMON_PLATFORMS_ESP8266_UART_REGISTER_H_ -#define CS_COMMON_PLATFORMS_ESP8266_UART_REGISTER_H_ - -#define REG_UART_BASE(i) (0x60000000 + (i)*0xf00) -//version value:32'h062000 - -#define UART_FIFO(i) (REG_UART_BASE(i) + 0x0) -#define UART_RXFIFO_RD_BYTE 0x000000FF -#define UART_RXFIFO_RD_BYTE_S 0 - -#define UART_INT_RAW(i) (REG_UART_BASE(i) + 0x4) -#define UART_RXFIFO_TOUT_INT_RAW (BIT(8)) -#define UART_BRK_DET_INT_RAW (BIT(7)) -#define UART_CTS_CHG_INT_RAW (BIT(6)) -#define UART_DSR_CHG_INT_RAW (BIT(5)) -#define UART_RXFIFO_OVF_INT_RAW (BIT(4)) -#define UART_FRM_ERR_INT_RAW (BIT(3)) -#define UART_PARITY_ERR_INT_RAW (BIT(2)) -#define UART_TXFIFO_EMPTY_INT_RAW (BIT(1)) -#define UART_RXFIFO_FULL_INT_RAW (BIT(0)) - -#define UART_INT_ST(i) (REG_UART_BASE(i) + 0x8) -#define UART_RXFIFO_TOUT_INT_ST (BIT(8)) -#define UART_BRK_DET_INT_ST (BIT(7)) -#define UART_CTS_CHG_INT_ST (BIT(6)) -#define UART_DSR_CHG_INT_ST (BIT(5)) -#define UART_RXFIFO_OVF_INT_ST (BIT(4)) -#define UART_FRM_ERR_INT_ST (BIT(3)) -#define UART_PARITY_ERR_INT_ST (BIT(2)) -#define UART_TXFIFO_EMPTY_INT_ST (BIT(1)) -#define UART_RXFIFO_FULL_INT_ST (BIT(0)) - -#define UART_INT_ENA(i) (REG_UART_BASE(i) + 0xC) -#define UART_RXFIFO_TOUT_INT_ENA (BIT(8)) -#define UART_BRK_DET_INT_ENA (BIT(7)) -#define UART_CTS_CHG_INT_ENA (BIT(6)) -#define UART_DSR_CHG_INT_ENA (BIT(5)) -#define UART_RXFIFO_OVF_INT_ENA (BIT(4)) -#define UART_FRM_ERR_INT_ENA (BIT(3)) -#define UART_PARITY_ERR_INT_ENA (BIT(2)) -#define UART_TXFIFO_EMPTY_INT_ENA (BIT(1)) -#define UART_RXFIFO_FULL_INT_ENA (BIT(0)) - -#define UART_INT_CLR(i) (REG_UART_BASE(i) + 0x10) -#define UART_RXFIFO_TOUT_INT_CLR (BIT(8)) -#define UART_BRK_DET_INT_CLR (BIT(7)) -#define UART_CTS_CHG_INT_CLR (BIT(6)) -#define UART_DSR_CHG_INT_CLR (BIT(5)) -#define UART_RXFIFO_OVF_INT_CLR (BIT(4)) -#define UART_FRM_ERR_INT_CLR (BIT(3)) -#define UART_PARITY_ERR_INT_CLR (BIT(2)) -#define UART_TXFIFO_EMPTY_INT_CLR (BIT(1)) -#define UART_RXFIFO_FULL_INT_CLR (BIT(0)) - -#define UART_CLKDIV(i) (REG_UART_BASE(i) + 0x14) -#define UART_CLKDIV_CNT 0x000FFFFF -#define UART_CLKDIV_S 0 - -#define UART_AUTOBAUD(i) (REG_UART_BASE(i) + 0x18) -#define UART_GLITCH_FILT 0x000000FF -#define UART_GLITCH_FILT_S 8 -#define UART_AUTOBAUD_EN (BIT(0)) - -#define UART_STATUS(i) (REG_UART_BASE(i) + 0x1C) -#define UART_TXD (BIT(31)) -#define UART_RTSN (BIT(30)) -#define UART_DTRN (BIT(29)) -#define UART_TXFIFO_CNT 0x000000FF -#define UART_TXFIFO_CNT_S 16 -#define UART_RXD (BIT(15)) -#define UART_CTSN (BIT(14)) -#define UART_DSRN (BIT(13)) -#define UART_RXFIFO_CNT 0x000000FF -#define UART_RXFIFO_CNT_S 0 - -#define UART_CONF0(i) (REG_UART_BASE(i) + 0x20) -#define UART_DTR_INV (BIT(24)) -#define UART_RTS_INV (BIT(23)) -#define UART_TXD_INV (BIT(22)) -#define UART_DSR_INV (BIT(21)) -#define UART_CTS_INV (BIT(20)) -#define UART_RXD_INV (BIT(19)) -#define UART_TXFIFO_RST (BIT(18)) -#define UART_RXFIFO_RST (BIT(17)) -#define UART_IRDA_EN (BIT(16)) -#define UART_TX_FLOW_EN (BIT(15)) -#define UART_LOOPBACK (BIT(14)) -#define UART_IRDA_RX_INV (BIT(13)) -#define UART_IRDA_TX_INV (BIT(12)) -#define UART_IRDA_WCTL (BIT(11)) -#define UART_IRDA_TX_EN (BIT(10)) -#define UART_IRDA_DPLX (BIT(9)) -#define UART_TXD_BRK (BIT(8)) -#define UART_SW_DTR (BIT(7)) -#define UART_SW_RTS (BIT(6)) -#define UART_STOP_BIT_NUM 0x00000003 -#define UART_STOP_BIT_NUM_S 4 -#define UART_BIT_NUM 0x00000003 -#define UART_BIT_NUM_S 2 -#define UART_PARITY_EN (BIT(1)) -#define UART_PARITY (BIT(0)) - -#define UART_CONF1(i) (REG_UART_BASE(i) + 0x24) -#define UART_RX_TOUT_EN (BIT(31)) -#define UART_RX_TOUT_THRHD 0x0000007F -#define UART_RX_TOUT_THRHD_S 24 -#define UART_RX_FLOW_EN (BIT(23)) -#define UART_RX_FLOW_THRHD 0x0000007F -#define UART_RX_FLOW_THRHD_S 16 -#define UART_TXFIFO_EMPTY_THRHD 0x0000007F -#define UART_TXFIFO_EMPTY_THRHD_S 8 -#define UART_RXFIFO_FULL_THRHD 0x0000007F -#define UART_RXFIFO_FULL_THRHD_S 0 - -#define UART_LOWPULSE(i) (REG_UART_BASE(i) + 0x28) -#define UART_LOWPULSE_MIN_CNT 0x000FFFFF -#define UART_LOWPULSE_MIN_CNT_S 0 - -#define UART_HIGHPULSE(i) (REG_UART_BASE(i) + 0x2C) -#define UART_HIGHPULSE_MIN_CNT 0x000FFFFF -#define UART_HIGHPULSE_MIN_CNT_S 0 - -#define UART_PULSE_NUM(i) (REG_UART_BASE(i) + 0x30) -#define UART_PULSE_NUM_CNT 0x0003FF -#define UART_PULSE_NUM_CNT_S 0 - -#define UART_DATE(i) (REG_UART_BASE(i) + 0x78) -#define UART_ID(i) (REG_UART_BASE(i) + 0x7C) - -#endif /* CS_COMMON_PLATFORMS_ESP8266_UART_REGISTER_H_ */ diff --git a/src/common/platforms/lwip/mg_lwip.h b/src/common/platforms/lwip/mg_lwip.h index c15e2ee2d..e5324a520 100644 --- a/src/common/platforms/lwip/mg_lwip.h +++ b/src/common/platforms/lwip/mg_lwip.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_LWIP_MG_LWIP_H_ #define CS_COMMON_PLATFORMS_LWIP_MG_LWIP_H_ diff --git a/src/common/platforms/lwip/mg_lwip_ev_mgr.c b/src/common/platforms/lwip/mg_lwip_ev_mgr.c index afff2dbd2..f9a0e62ff 100644 --- a/src/common/platforms/lwip/mg_lwip_ev_mgr.c +++ b/src/common/platforms/lwip/mg_lwip_ev_mgr.c @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #if MG_NET_IF == MG_NET_IF_LWIP_LOW_LEVEL diff --git a/src/common/platforms/lwip/mg_lwip_net_if.c b/src/common/platforms/lwip/mg_lwip_net_if.c index 754ac2dfa..a38eaf174 100644 --- a/src/common/platforms/lwip/mg_lwip_net_if.c +++ b/src/common/platforms/lwip/mg_lwip_net_if.c @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #if MG_ENABLE_NET_IF_LWIP_LOW_LEVEL diff --git a/src/common/platforms/lwip/mg_lwip_net_if.h b/src/common/platforms/lwip/mg_lwip_net_if.h index d9827a903..350a6694b 100644 --- a/src/common/platforms/lwip/mg_lwip_net_if.h +++ b/src/common/platforms/lwip/mg_lwip_net_if.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_LWIP_MG_NET_IF_LWIP_H_ #define CS_COMMON_PLATFORMS_LWIP_MG_NET_IF_LWIP_H_ diff --git a/src/common/platforms/mbed/mbed_libc.c b/src/common/platforms/mbed/mbed_libc.c deleted file mode 100644 index ef8e6abbc..000000000 --- a/src/common/platforms/mbed/mbed_libc.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "common/platform.h" - -#if CS_PLATFORM == CS_P_MBED - -long timezone; - -/* - * The GCC ARM toolchain for implements a weak - * gettimeofday stub that should be implemented - * to hook the OS time source. But mbed OS doesn't do it; - * the mbed doc only talks about C date and time functions: - * - * https://docs.mbed.com/docs/mbed-os-api-reference/en/5.1/APIs/tasks/Time/ - * - * gettimeof day is a BSD API. - */ -int _gettimeofday(struct timeval *tv, void *tzvp) { - tv->tv_sec = time(NULL); - tv->tv_usec = 0; - return 0; -} - -int inet_aton(const char *cp, struct in_addr *inp) { - /* We don't have aton, but have pton in mbed */ - return inet_pton(AF_INET, cp, inp); -} - -in_addr_t inet_addr(const char *cp) { - in_addr_t ret; - if (inet_pton(AF_INET, cp, &ret) != 1) { - return 0; - } - - return ret; -} - -#endif /* CS_PLATFORM == CS_P_MBED */ diff --git a/src/common/platforms/msp432/msp432_libc.c b/src/common/platforms/msp432/msp432_libc.c index de1e6ba85..3320bacc3 100644 --- a/src/common/platforms/msp432/msp432_libc.c +++ b/src/common/platforms/msp432/msp432_libc.c @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #if CS_PLATFORM == CS_P_MSP432 diff --git a/src/common/platforms/nrf5/nrf5_libc.c b/src/common/platforms/nrf5/nrf5_libc.c index 65d05ed41..524e0ff7b 100644 --- a/src/common/platforms/nrf5/nrf5_libc.c +++ b/src/common/platforms/nrf5/nrf5_libc.c @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #if (CS_PLATFORM == CS_P_NRF51 || CS_PLATFORM == CS_P_NRF52) && \ defined(__ARMCC_VERSION) diff --git a/src/common/platforms/pic32/pic32_net_if.c b/src/common/platforms/pic32/pic32_net_if.c index 49618c57e..2eac7575e 100644 --- a/src/common/platforms/pic32/pic32_net_if.c +++ b/src/common/platforms/pic32/pic32_net_if.c @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #if MG_ENABLE_NET_IF_PIC32 diff --git a/src/common/platforms/pic32/pic32_net_if.h b/src/common/platforms/pic32/pic32_net_if.h index 52ae891dc..a409a4f85 100644 --- a/src/common/platforms/pic32/pic32_net_if.h +++ b/src/common/platforms/pic32/pic32_net_if.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_PIC32_NET_IF_H_ #define CS_COMMON_PLATFORMS_PIC32_NET_IF_H_ diff --git a/src/common/platforms/pic32/xc32.mk b/src/common/platforms/pic32/xc32.mk deleted file mode 100644 index aff6b4e55..000000000 --- a/src/common/platforms/pic32/xc32.mk +++ /dev/null @@ -1,51 +0,0 @@ -APP_LDFLAGS ?= -CC_WRAPPER ?= -GENFILES_LIST ?= -CC = $(XC32_PATH)/bin/xc32-gcc -AR = $(XC32_PATH)/bin/xc32-ar -LD = $(XC32_PATH)/bin/xc32-gcc -BIN2HEX = $(XC32_PATH)/bin/xc32-bin2hex - -CFLAGS = -fframe-base-loclist -mprocessor=32MZ2048EFM064 \ - -ffunction-sections -Wall -g -no-legacy-libc \ - -O1 - -CFLAGS += -DCS_ENABLE_DEBUG - -LDFLAGS = -mprocessor=32MZ2048EFM064 - -# TODO(dfrank) enable that conditionally -CFLAGS += -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -LDFLAGS += -mdebugger -D__MPLAB_DEBUGGER_ICD3=1 - -OBJCOPY = $(XC32_PATH)/bin/xc32-objcopy - -# cc flags,file -define cc - $(vecho) "XC32 $2 -> $@" - $(Q) $(CC_WRAPPER) $(CC) -c $1 -o $@ $2 -endef - -# cc flags,file -define asm - $(vecho) "XC32 ASM $2 -> $@" - $(Q) $(CC) -c $1 -o $@ $2 -endef - -# ar files -define ar - $(vecho) "AR $@" - $(Q) $(AR) cru $@ $1 -endef - -# link script,flags,objs -define link - $(vecho) "LD $@ (ignoring linker script $1)" - $(Q) $(CC_WRAPPER) $(LD) -o $@ $2 $3 -no-legacy-libc \ - -Wl,--defsym=__MPLAB_BUILD=1,--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,--defsym=__MPLAB_DEBUGGER_ICD3=1,--defsym=_min_heap_size=44960,--gc-sections -endef - -define bin2hex - $(vecho) "HEX $1 -> $@" - $(Q) $(BIN2HEX) $1 -endef diff --git a/src/common/platforms/platform_cc3100.h b/src/common/platforms/platform_cc3100.h index 8e847fcfd..5369b3195 100644 --- a/src/common/platforms/platform_cc3100.h +++ b/src/common/platforms/platform_cc3100.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_PLATFORM_CC3100_H_ #define CS_COMMON_PLATFORMS_PLATFORM_CC3100_H_ diff --git a/src/common/platforms/platform_cc3200.h b/src/common/platforms/platform_cc3200.h index 00ef9fa38..28c19d0b0 100644 --- a/src/common/platforms/platform_cc3200.h +++ b/src/common/platforms/platform_cc3200.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_PLATFORM_CC3200_H_ #define CS_COMMON_PLATFORMS_PLATFORM_CC3200_H_ diff --git a/src/common/platforms/platform_cc3220.h b/src/common/platforms/platform_cc3220.h index c5336e33d..ddd59bbfb 100644 --- a/src/common/platforms/platform_cc3220.h +++ b/src/common/platforms/platform_cc3220.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_PLATFORM_CC3220_H_ #define CS_COMMON_PLATFORMS_PLATFORM_CC3220_H_ diff --git a/src/common/platforms/platform_esp32.h b/src/common/platforms/platform_esp32.h index b1af9da52..fb8d42bb9 100644 --- a/src/common/platforms/platform_esp32.h +++ b/src/common/platforms/platform_esp32.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_PLATFORM_ESP32_H_ #define CS_COMMON_PLATFORMS_PLATFORM_ESP32_H_ diff --git a/src/common/platforms/platform_esp8266.h b/src/common/platforms/platform_esp8266.h index 3bef0441b..701f068ee 100644 --- a/src/common/platforms/platform_esp8266.h +++ b/src/common/platforms/platform_esp8266.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_PLATFORM_ESP8266_H_ #define CS_COMMON_PLATFORMS_PLATFORM_ESP8266_H_ diff --git a/src/common/platforms/platform_mbed.h b/src/common/platforms/platform_mbed.h index 5f37862a8..45601ab94 100644 --- a/src/common/platforms/platform_mbed.h +++ b/src/common/platforms/platform_mbed.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_PLATFORM_MBED_H_ #define CS_COMMON_PLATFORMS_PLATFORM_MBED_H_ diff --git a/src/common/platforms/platform_msp432.h b/src/common/platforms/platform_msp432.h index d9c5e1833..f93105433 100644 --- a/src/common/platforms/platform_msp432.h +++ b/src/common/platforms/platform_msp432.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_PLATFORM_MSP432_H_ #define CS_COMMON_PLATFORMS_PLATFORM_MSP432_H_ diff --git a/src/common/platforms/platform_nrf51.h b/src/common/platforms/platform_nrf51.h index 6f1357bd6..791c6d1b0 100644 --- a/src/common/platforms/platform_nrf51.h +++ b/src/common/platforms/platform_nrf51.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_PLATFORM_NRF51_H_ #define CS_COMMON_PLATFORMS_PLATFORM_NRF51_H_ #if CS_PLATFORM == CS_P_NRF51 diff --git a/src/common/platforms/platform_nrf52.h b/src/common/platforms/platform_nrf52.h index 2b8b882fc..c8054dd98 100644 --- a/src/common/platforms/platform_nrf52.h +++ b/src/common/platforms/platform_nrf52.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_PLATFORM_NRF52_H_ #define CS_COMMON_PLATFORMS_PLATFORM_NRF52_H_ #if CS_PLATFORM == CS_P_NRF52 diff --git a/src/common/platforms/platform_nxp_kinetis.h b/src/common/platforms/platform_nxp_kinetis.h index d9265e910..13c50ba35 100644 --- a/src/common/platforms/platform_nxp_kinetis.h +++ b/src/common/platforms/platform_nxp_kinetis.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_PLATFORM_NXP_KINETIS_H_ #define CS_COMMON_PLATFORMS_PLATFORM_NXP_KINETIS_H_ diff --git a/src/common/platforms/platform_nxp_lpc.h b/src/common/platforms/platform_nxp_lpc.h index 7bb12c5ee..5a29d68ff 100644 --- a/src/common/platforms/platform_nxp_lpc.h +++ b/src/common/platforms/platform_nxp_lpc.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_PLATFORM_NXP_LPC_H_ #define CS_COMMON_PLATFORMS_PLATFORM_NXP_LPC_H_ diff --git a/src/common/platforms/platform_pic32.h b/src/common/platforms/platform_pic32.h index f2072c3e1..af84ca153 100644 --- a/src/common/platforms/platform_pic32.h +++ b/src/common/platforms/platform_pic32.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_PLATFORM_PIC32_H_ #define CS_COMMON_PLATFORMS_PLATFORM_PIC32_H_ diff --git a/src/common/platforms/platform_rs14100.h b/src/common/platforms/platform_rs14100.h index 5e9618e57..1484089d0 100644 --- a/src/common/platforms/platform_rs14100.h +++ b/src/common/platforms/platform_rs14100.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2019 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_PLATFORM_RS14100_H_ #define CS_COMMON_PLATFORMS_PLATFORM_RS14100_H_ diff --git a/src/common/platforms/platform_stm32.h b/src/common/platforms/platform_stm32.h index d5b891923..eafc76dc7 100644 --- a/src/common/platforms/platform_stm32.h +++ b/src/common/platforms/platform_stm32.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_PLATFORM_STM32_H_ #define CS_COMMON_PLATFORMS_PLATFORM_STM32_H_ diff --git a/src/common/platforms/platform_tm4c129.h b/src/common/platforms/platform_tm4c129.h index dc75d79db..e46987e0c 100644 --- a/src/common/platforms/platform_tm4c129.h +++ b/src/common/platforms/platform_tm4c129.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_PLATFORM_TM4C129_H_ #define CS_COMMON_PLATFORMS_PLATFORM_TM4C129_H_ diff --git a/src/common/platforms/simplelink/cs_simplelink.h b/src/common/platforms/simplelink/cs_simplelink.h index 71af2dcbe..a2a436456 100644 --- a/src/common/platforms/simplelink/cs_simplelink.h +++ b/src/common/platforms/simplelink/cs_simplelink.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_SIMPLELINK_CS_SIMPLELINK_H_ #define CS_COMMON_PLATFORMS_SIMPLELINK_CS_SIMPLELINK_H_ diff --git a/src/common/platforms/simplelink/sl_fs.c b/src/common/platforms/simplelink/sl_fs.c index bc055c1f5..d577f9d94 100644 --- a/src/common/platforms/simplelink/sl_fs.c +++ b/src/common/platforms/simplelink/sl_fs.c @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #if MG_NET_IF == MG_NET_IF_SIMPLELINK && \ (defined(MG_FS_SLFS) || defined(MG_FS_SPIFFS)) diff --git a/src/common/platforms/simplelink/sl_fs_slfs.c b/src/common/platforms/simplelink/sl_fs_slfs.c index 7dcff3080..12db484c8 100644 --- a/src/common/platforms/simplelink/sl_fs_slfs.c +++ b/src/common/platforms/simplelink/sl_fs_slfs.c @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ /* Standard libc interface to TI SimpleLink FS. */ diff --git a/src/common/platforms/simplelink/sl_fs_slfs.h b/src/common/platforms/simplelink/sl_fs_slfs.h index 4e4cb57b0..588554006 100644 --- a/src/common/platforms/simplelink/sl_fs_slfs.h +++ b/src/common/platforms/simplelink/sl_fs_slfs.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_SIMPLELINK_SL_FS_SLFS_H_ #define CS_COMMON_PLATFORMS_SIMPLELINK_SL_FS_SLFS_H_ diff --git a/src/common/platforms/simplelink/sl_net_if.c b/src/common/platforms/simplelink/sl_net_if.c index 1a000ce7f..0f51cc5e1 100644 --- a/src/common/platforms/simplelink/sl_net_if.c +++ b/src/common/platforms/simplelink/sl_net_if.c @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #include "common/platforms/simplelink/sl_net_if.h" diff --git a/src/common/platforms/simplelink/sl_net_if.h b/src/common/platforms/simplelink/sl_net_if.h index c72bd28b1..5536d454b 100644 --- a/src/common/platforms/simplelink/sl_net_if.h +++ b/src/common/platforms/simplelink/sl_net_if.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifndef CS_COMMON_PLATFORMS_SIMPLELINK_SL_NET_IF_H_ #define CS_COMMON_PLATFORMS_SIMPLELINK_SL_NET_IF_H_ diff --git a/src/common/platforms/simplelink/sl_socket.c b/src/common/platforms/simplelink/sl_socket.c index 101fb636e..e323c9e52 100644 --- a/src/common/platforms/simplelink/sl_socket.c +++ b/src/common/platforms/simplelink/sl_socket.c @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #if MG_NET_IF == MG_NET_IF_SIMPLELINK diff --git a/src/common/platforms/simplelink/sl_ssl_if.c b/src/common/platforms/simplelink/sl_ssl_if.c index 92453e3db..d2c275fee 100644 --- a/src/common/platforms/simplelink/sl_ssl_if.c +++ b/src/common/platforms/simplelink/sl_ssl_if.c @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #if MG_ENABLE_SSL && MG_SSL_IF == MG_SSL_IF_SIMPLELINK diff --git a/src/common/platforms/wince/wince_libc.c b/src/common/platforms/wince/wince_libc.c index c0f519283..d2a5f595d 100644 --- a/src/common/platforms/wince/wince_libc.c +++ b/src/common/platforms/wince/wince_libc.c @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifdef WINCE diff --git a/src/common/platforms/windows/windows_direct.c b/src/common/platforms/windows/windows_direct.c index 796a416d9..8bb96a308 100644 --- a/src/common/platforms/windows/windows_direct.c +++ b/src/common/platforms/windows/windows_direct.c @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014-2018 Cesanta Software Limited - * All rights reserved - * - * Licensed under the Apache License, Version 2.0 (the ""License""); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an ""AS IS"" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ #ifdef _WIN32 diff --git a/src/common/queue.h b/src/common/queue.h new file mode 100644 index 000000000..f12d8cae8 --- /dev/null +++ b/src/common/queue.h @@ -0,0 +1,752 @@ +/* clang-format off */ +/*- + * Copyright (c) 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)queue.h 8.5 (Berkeley) 8/20/94 + * $FreeBSD$ + */ + +#ifndef _SYS_QUEUE_H_ +#define _SYS_QUEUE_H_ + +/* + * This file defines four types of data structures: singly-linked lists, + * singly-linked tail queues, lists and tail queues. + * + * A singly-linked list is headed by a single forward pointer. The elements + * are singly linked for minimum space and pointer manipulation overhead at + * the expense of O(n) removal for arbitrary elements. New elements can be + * added to the list after an existing element or at the head of the list. + * Elements being removed from the head of the list should use the explicit + * macro for this purpose for optimum efficiency. A singly-linked list may + * only be traversed in the forward direction. Singly-linked lists are ideal + * for applications with large datasets and few or no removals or for + * implementing a LIFO queue. + * + * A singly-linked tail queue is headed by a pair of pointers, one to the + * head of the list and the other to the tail of the list. The elements are + * singly linked for minimum space and pointer manipulation overhead at the + * expense of O(n) removal for arbitrary elements. New elements can be added + * to the list after an existing element, at the head of the list, or at the + * end of the list. Elements being removed from the head of the tail queue + * should use the explicit macro for this purpose for optimum efficiency. + * A singly-linked tail queue may only be traversed in the forward direction. + * Singly-linked tail queues are ideal for applications with large datasets + * and few or no removals or for implementing a FIFO queue. + * + * A list is headed by a single forward pointer (or an array of forward + * pointers for a hash table header). The elements are doubly linked + * so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before + * or after an existing element or at the head of the list. A list + * may be traversed in either direction. + * + * A tail queue is headed by a pair of pointers, one to the head of the + * list and the other to the tail of the list. The elements are doubly + * linked so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before or + * after an existing element, at the head of the list, or at the end of + * the list. A tail queue may be traversed in either direction. + * + * For details on the use of these macros, see the queue(3) manual page. + * + * + * SLIST LIST STAILQ TAILQ + * _HEAD + + + + + * _CLASS_HEAD + + + + + * _HEAD_INITIALIZER + + + + + * _ENTRY + + + + + * _CLASS_ENTRY + + + + + * _INIT + + + + + * _EMPTY + + + + + * _FIRST + + + + + * _NEXT + + + + + * _PREV - + - + + * _LAST - - + + + * _FOREACH + + + + + * _FOREACH_FROM + + + + + * _FOREACH_SAFE + + + + + * _FOREACH_FROM_SAFE + + + + + * _FOREACH_REVERSE - - - + + * _FOREACH_REVERSE_FROM - - - + + * _FOREACH_REVERSE_SAFE - - - + + * _FOREACH_REVERSE_FROM_SAFE - - - + + * _INSERT_HEAD + + + + + * _INSERT_BEFORE - + - + + * _INSERT_AFTER + + + + + * _INSERT_TAIL - - + + + * _CONCAT - - + + + * _REMOVE_AFTER + - + - + * _REMOVE_HEAD + - + - + * _REMOVE + + + + + * _SWAP + + + + + * + */ +#ifdef QUEUE_MACRO_DEBUG +/* Store the last 2 places the queue element or head was altered */ +struct qm_trace { + unsigned long lastline; + unsigned long prevline; + const char *lastfile; + const char *prevfile; +}; + +#define TRACEBUF struct qm_trace trace; +#define TRACEBUF_INITIALIZER { __LINE__, 0, __FILE__, NULL } , +#define TRASHIT(x) do {(x) = (void *)-1;} while (0) +#define QMD_SAVELINK(name, link) void **name = (void *)&(link) + +#define QMD_TRACE_HEAD(head) do { \ + (head)->trace.prevline = (head)->trace.lastline; \ + (head)->trace.prevfile = (head)->trace.lastfile; \ + (head)->trace.lastline = __LINE__; \ + (head)->trace.lastfile = __FILE__; \ +} while (0) + +#define QMD_TRACE_ELEM(elem) do { \ + (elem)->trace.prevline = (elem)->trace.lastline; \ + (elem)->trace.prevfile = (elem)->trace.lastfile; \ + (elem)->trace.lastline = __LINE__; \ + (elem)->trace.lastfile = __FILE__; \ +} while (0) + +#else +#define QMD_TRACE_ELEM(elem) +#define QMD_TRACE_HEAD(head) +#define QMD_SAVELINK(name, link) +#define TRACEBUF +#define TRACEBUF_INITIALIZER +#define TRASHIT(x) +#endif /* QUEUE_MACRO_DEBUG */ + +#ifdef __cplusplus +/* + * In C++ there can be structure lists and class lists: + */ +#define QUEUE_TYPEOF(type) type +#else +#define QUEUE_TYPEOF(type) struct type +#endif + +/* + * Singly-linked List declarations. + */ +#define SLIST_HEAD(name, type) \ +struct name { \ + struct type *slh_first; /* first element */ \ +} + +#define SLIST_CLASS_HEAD(name, type) \ +struct name { \ + class type *slh_first; /* first element */ \ +} + +#define SLIST_HEAD_INITIALIZER(head) \ + { NULL } + +#define SLIST_ENTRY(type) \ +struct { \ + struct type *sle_next; /* next element */ \ +} + +#define SLIST_CLASS_ENTRY(type) \ +struct { \ + class type *sle_next; /* next element */ \ +} + +/* + * Singly-linked List functions. + */ +#define SLIST_EMPTY(head) ((head)->slh_first == NULL) + +#define SLIST_FIRST(head) ((head)->slh_first) + +#define SLIST_FOREACH(var, head, field) \ + for ((var) = SLIST_FIRST((head)); \ + (var); \ + (var) = SLIST_NEXT((var), field)) + +#define SLIST_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ + (var); \ + (var) = SLIST_NEXT((var), field)) + +#define SLIST_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = SLIST_FIRST((head)); \ + (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define SLIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ + (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \ + for ((varp) = &SLIST_FIRST((head)); \ + ((var) = *(varp)) != NULL; \ + (varp) = &SLIST_NEXT((var), field)) + +#define SLIST_INIT(head) do { \ + SLIST_FIRST((head)) = NULL; \ +} while (0) + +#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ + SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \ + SLIST_NEXT((slistelm), field) = (elm); \ +} while (0) + +#define SLIST_INSERT_HEAD(head, elm, field) do { \ + SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \ + SLIST_FIRST((head)) = (elm); \ +} while (0) + +#define SLIST_NEXT(elm, field) ((elm)->field.sle_next) + +#define SLIST_REMOVE(head, elm, type, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.sle_next); \ + if (SLIST_FIRST((head)) == (elm)) { \ + SLIST_REMOVE_HEAD((head), field); \ + } \ + else { \ + QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head); \ + while (SLIST_NEXT(curelm, field) != (elm)) \ + curelm = SLIST_NEXT(curelm, field); \ + SLIST_REMOVE_AFTER(curelm, field); \ + } \ + TRASHIT(*oldnext); \ +} while (0) + +#define SLIST_REMOVE_AFTER(elm, field) do { \ + SLIST_NEXT(elm, field) = \ + SLIST_NEXT(SLIST_NEXT(elm, field), field); \ +} while (0) + +#define SLIST_REMOVE_HEAD(head, field) do { \ + SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \ +} while (0) + +#define SLIST_SWAP(head1, head2, type) do { \ + QUEUE_TYPEOF(type) *swap_first = SLIST_FIRST(head1); \ + SLIST_FIRST(head1) = SLIST_FIRST(head2); \ + SLIST_FIRST(head2) = swap_first; \ +} while (0) + +/* + * Singly-linked Tail queue declarations. + */ +#define STAILQ_HEAD(name, type) \ +struct name { \ + struct type *stqh_first;/* first element */ \ + struct type **stqh_last;/* addr of last next element */ \ +} + +#define STAILQ_CLASS_HEAD(name, type) \ +struct name { \ + class type *stqh_first; /* first element */ \ + class type **stqh_last; /* addr of last next element */ \ +} + +#define STAILQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).stqh_first } + +#define STAILQ_ENTRY(type) \ +struct { \ + struct type *stqe_next; /* next element */ \ +} + +#define STAILQ_CLASS_ENTRY(type) \ +struct { \ + class type *stqe_next; /* next element */ \ +} + +/* + * Singly-linked Tail queue functions. + */ +#define STAILQ_CONCAT(head1, head2) do { \ + if (!STAILQ_EMPTY((head2))) { \ + *(head1)->stqh_last = (head2)->stqh_first; \ + (head1)->stqh_last = (head2)->stqh_last; \ + STAILQ_INIT((head2)); \ + } \ +} while (0) + +#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL) + +#define STAILQ_FIRST(head) ((head)->stqh_first) + +#define STAILQ_FOREACH(var, head, field) \ + for((var) = STAILQ_FIRST((head)); \ + (var); \ + (var) = STAILQ_NEXT((var), field)) + +#define STAILQ_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ + (var); \ + (var) = STAILQ_NEXT((var), field)) + +#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = STAILQ_FIRST((head)); \ + (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define STAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ + (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define STAILQ_INIT(head) do { \ + STAILQ_FIRST((head)) = NULL; \ + (head)->stqh_last = &STAILQ_FIRST((head)); \ +} while (0) + +#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \ + if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ + STAILQ_NEXT((tqelm), field) = (elm); \ +} while (0) + +#define STAILQ_INSERT_HEAD(head, elm, field) do { \ + if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ + STAILQ_FIRST((head)) = (elm); \ +} while (0) + +#define STAILQ_INSERT_TAIL(head, elm, field) do { \ + STAILQ_NEXT((elm), field) = NULL; \ + *(head)->stqh_last = (elm); \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ +} while (0) + +#define STAILQ_LAST(head, type, field) \ + (STAILQ_EMPTY((head)) ? NULL : \ + __containerof((head)->stqh_last, \ + QUEUE_TYPEOF(type), field.stqe_next)) + +#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) + +#define STAILQ_REMOVE(head, elm, type, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.stqe_next); \ + if (STAILQ_FIRST((head)) == (elm)) { \ + STAILQ_REMOVE_HEAD((head), field); \ + } \ + else { \ + QUEUE_TYPEOF(type) *curelm = STAILQ_FIRST(head); \ + while (STAILQ_NEXT(curelm, field) != (elm)) \ + curelm = STAILQ_NEXT(curelm, field); \ + STAILQ_REMOVE_AFTER(head, curelm, field); \ + } \ + TRASHIT(*oldnext); \ +} while (0) + +#define STAILQ_REMOVE_AFTER(head, elm, field) do { \ + if ((STAILQ_NEXT(elm, field) = \ + STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ +} while (0) + +#define STAILQ_REMOVE_HEAD(head, field) do { \ + if ((STAILQ_FIRST((head)) = \ + STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \ + (head)->stqh_last = &STAILQ_FIRST((head)); \ +} while (0) + +#define STAILQ_SWAP(head1, head2, type) do { \ + QUEUE_TYPEOF(type) *swap_first = STAILQ_FIRST(head1); \ + QUEUE_TYPEOF(type) **swap_last = (head1)->stqh_last; \ + STAILQ_FIRST(head1) = STAILQ_FIRST(head2); \ + (head1)->stqh_last = (head2)->stqh_last; \ + STAILQ_FIRST(head2) = swap_first; \ + (head2)->stqh_last = swap_last; \ + if (STAILQ_EMPTY(head1)) \ + (head1)->stqh_last = &STAILQ_FIRST(head1); \ + if (STAILQ_EMPTY(head2)) \ + (head2)->stqh_last = &STAILQ_FIRST(head2); \ +} while (0) + + +/* + * List declarations. + */ +#define LIST_HEAD(name, type) \ +struct name { \ + struct type *lh_first; /* first element */ \ +} + +#define LIST_CLASS_HEAD(name, type) \ +struct name { \ + class type *lh_first; /* first element */ \ +} + +#define LIST_HEAD_INITIALIZER(head) \ + { NULL } + +#define LIST_ENTRY(type) \ +struct { \ + struct type *le_next; /* next element */ \ + struct type **le_prev; /* address of previous next element */ \ +} + +#define LIST_CLASS_ENTRY(type) \ +struct { \ + class type *le_next; /* next element */ \ + class type **le_prev; /* address of previous next element */ \ +} + +/* + * List functions. + */ + +#if (defined(_KERNEL) && defined(INVARIANTS)) +#define QMD_LIST_CHECK_HEAD(head, field) do { \ + if (LIST_FIRST((head)) != NULL && \ + LIST_FIRST((head))->field.le_prev != \ + &LIST_FIRST((head))) \ + panic("Bad list head %p first->prev != head", (head)); \ +} while (0) + +#define QMD_LIST_CHECK_NEXT(elm, field) do { \ + if (LIST_NEXT((elm), field) != NULL && \ + LIST_NEXT((elm), field)->field.le_prev != \ + &((elm)->field.le_next)) \ + panic("Bad link elm %p next->prev != elm", (elm)); \ +} while (0) + +#define QMD_LIST_CHECK_PREV(elm, field) do { \ + if (*(elm)->field.le_prev != (elm)) \ + panic("Bad link elm %p prev->next != elm", (elm)); \ +} while (0) +#else +#define QMD_LIST_CHECK_HEAD(head, field) +#define QMD_LIST_CHECK_NEXT(elm, field) +#define QMD_LIST_CHECK_PREV(elm, field) +#endif /* (_KERNEL && INVARIANTS) */ + +#define LIST_EMPTY(head) ((head)->lh_first == NULL) + +#define LIST_FIRST(head) ((head)->lh_first) + +#define LIST_FOREACH(var, head, field) \ + for ((var) = LIST_FIRST((head)); \ + (var); \ + (var) = LIST_NEXT((var), field)) + +#define LIST_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ + (var); \ + (var) = LIST_NEXT((var), field)) + +#define LIST_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = LIST_FIRST((head)); \ + (var) && ((tvar) = LIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define LIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ + (var) && ((tvar) = LIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define LIST_INIT(head) do { \ + LIST_FIRST((head)) = NULL; \ +} while (0) + +#define LIST_INSERT_AFTER(listelm, elm, field) do { \ + QMD_LIST_CHECK_NEXT(listelm, field); \ + if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\ + LIST_NEXT((listelm), field)->field.le_prev = \ + &LIST_NEXT((elm), field); \ + LIST_NEXT((listelm), field) = (elm); \ + (elm)->field.le_prev = &LIST_NEXT((listelm), field); \ +} while (0) + +#define LIST_INSERT_BEFORE(listelm, elm, field) do { \ + QMD_LIST_CHECK_PREV(listelm, field); \ + (elm)->field.le_prev = (listelm)->field.le_prev; \ + LIST_NEXT((elm), field) = (listelm); \ + *(listelm)->field.le_prev = (elm); \ + (listelm)->field.le_prev = &LIST_NEXT((elm), field); \ +} while (0) + +#define LIST_INSERT_HEAD(head, elm, field) do { \ + QMD_LIST_CHECK_HEAD((head), field); \ + if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \ + LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\ + LIST_FIRST((head)) = (elm); \ + (elm)->field.le_prev = &LIST_FIRST((head)); \ +} while (0) + +#define LIST_NEXT(elm, field) ((elm)->field.le_next) + +#define LIST_PREV(elm, head, type, field) \ + ((elm)->field.le_prev == &LIST_FIRST((head)) ? NULL : \ + __containerof((elm)->field.le_prev, \ + QUEUE_TYPEOF(type), field.le_next)) + +#define LIST_REMOVE(elm, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.le_next); \ + QMD_SAVELINK(oldprev, (elm)->field.le_prev); \ + QMD_LIST_CHECK_NEXT(elm, field); \ + QMD_LIST_CHECK_PREV(elm, field); \ + if (LIST_NEXT((elm), field) != NULL) \ + LIST_NEXT((elm), field)->field.le_prev = \ + (elm)->field.le_prev; \ + *(elm)->field.le_prev = LIST_NEXT((elm), field); \ + TRASHIT(*oldnext); \ + TRASHIT(*oldprev); \ +} while (0) + +#define LIST_SWAP(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *swap_tmp = LIST_FIRST(head1); \ + LIST_FIRST((head1)) = LIST_FIRST((head2)); \ + LIST_FIRST((head2)) = swap_tmp; \ + if ((swap_tmp = LIST_FIRST((head1))) != NULL) \ + swap_tmp->field.le_prev = &LIST_FIRST((head1)); \ + if ((swap_tmp = LIST_FIRST((head2))) != NULL) \ + swap_tmp->field.le_prev = &LIST_FIRST((head2)); \ +} while (0) + +/* + * Tail queue declarations. + */ +#define TAILQ_HEAD(name, type) \ +struct name { \ + struct type *tqh_first; /* first element */ \ + struct type **tqh_last; /* addr of last next element */ \ + TRACEBUF \ +} + +#define TAILQ_CLASS_HEAD(name, type) \ +struct name { \ + class type *tqh_first; /* first element */ \ + class type **tqh_last; /* addr of last next element */ \ + TRACEBUF \ +} + +#define TAILQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).tqh_first, TRACEBUF_INITIALIZER } + +#define TAILQ_ENTRY(type) \ +struct { \ + struct type *tqe_next; /* next element */ \ + struct type **tqe_prev; /* address of previous next element */ \ + TRACEBUF \ +} + +#define TAILQ_CLASS_ENTRY(type) \ +struct { \ + class type *tqe_next; /* next element */ \ + class type **tqe_prev; /* address of previous next element */ \ + TRACEBUF \ +} + +/* + * Tail queue functions. + */ +#if (defined(_KERNEL) && defined(INVARIANTS)) +#define QMD_TAILQ_CHECK_HEAD(head, field) do { \ + if (!TAILQ_EMPTY(head) && \ + TAILQ_FIRST((head))->field.tqe_prev != \ + &TAILQ_FIRST((head))) \ + panic("Bad tailq head %p first->prev != head", (head)); \ +} while (0) + +#define QMD_TAILQ_CHECK_TAIL(head, field) do { \ + if (*(head)->tqh_last != NULL) \ + panic("Bad tailq NEXT(%p->tqh_last) != NULL", (head)); \ +} while (0) + +#define QMD_TAILQ_CHECK_NEXT(elm, field) do { \ + if (TAILQ_NEXT((elm), field) != NULL && \ + TAILQ_NEXT((elm), field)->field.tqe_prev != \ + &((elm)->field.tqe_next)) \ + panic("Bad link elm %p next->prev != elm", (elm)); \ +} while (0) + +#define QMD_TAILQ_CHECK_PREV(elm, field) do { \ + if (*(elm)->field.tqe_prev != (elm)) \ + panic("Bad link elm %p prev->next != elm", (elm)); \ +} while (0) +#else +#define QMD_TAILQ_CHECK_HEAD(head, field) +#define QMD_TAILQ_CHECK_TAIL(head, headname) +#define QMD_TAILQ_CHECK_NEXT(elm, field) +#define QMD_TAILQ_CHECK_PREV(elm, field) +#endif /* (_KERNEL && INVARIANTS) */ + +#define TAILQ_CONCAT(head1, head2, field) do { \ + if (!TAILQ_EMPTY(head2)) { \ + *(head1)->tqh_last = (head2)->tqh_first; \ + (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \ + (head1)->tqh_last = (head2)->tqh_last; \ + TAILQ_INIT((head2)); \ + QMD_TRACE_HEAD(head1); \ + QMD_TRACE_HEAD(head2); \ + } \ +} while (0) + +#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL) + +#define TAILQ_FIRST(head) ((head)->tqh_first) + +#define TAILQ_FOREACH(var, head, field) \ + for ((var) = TAILQ_FIRST((head)); \ + (var); \ + (var) = TAILQ_NEXT((var), field)) + +#define TAILQ_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ + (var); \ + (var) = TAILQ_NEXT((var), field)) + +#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = TAILQ_FIRST((head)); \ + (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ + (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ + for ((var) = TAILQ_LAST((head), headname); \ + (var); \ + (var) = TAILQ_PREV((var), headname, field)) + +#define TAILQ_FOREACH_REVERSE_FROM(var, head, headname, field) \ + for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ + (var); \ + (var) = TAILQ_PREV((var), headname, field)) + +#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ + for ((var) = TAILQ_LAST((head), headname); \ + (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_REVERSE_FROM_SAFE(var, head, headname, field, tvar) \ + for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ + (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ + (var) = (tvar)) + +#define TAILQ_INIT(head) do { \ + TAILQ_FIRST((head)) = NULL; \ + (head)->tqh_last = &TAILQ_FIRST((head)); \ + QMD_TRACE_HEAD(head); \ +} while (0) + +#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ + QMD_TAILQ_CHECK_NEXT(listelm, field); \ + if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\ + TAILQ_NEXT((elm), field)->field.tqe_prev = \ + &TAILQ_NEXT((elm), field); \ + else { \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_HEAD(head); \ + } \ + TAILQ_NEXT((listelm), field) = (elm); \ + (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \ + QMD_TRACE_ELEM(&(elm)->field); \ + QMD_TRACE_ELEM(&(listelm)->field); \ +} while (0) + +#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ + QMD_TAILQ_CHECK_PREV(listelm, field); \ + (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ + TAILQ_NEXT((elm), field) = (listelm); \ + *(listelm)->field.tqe_prev = (elm); \ + (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_ELEM(&(elm)->field); \ + QMD_TRACE_ELEM(&(listelm)->field); \ +} while (0) + +#define TAILQ_INSERT_HEAD(head, elm, field) do { \ + QMD_TAILQ_CHECK_HEAD(head, field); \ + if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \ + TAILQ_FIRST((head))->field.tqe_prev = \ + &TAILQ_NEXT((elm), field); \ + else \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + TAILQ_FIRST((head)) = (elm); \ + (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \ + QMD_TRACE_HEAD(head); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_INSERT_TAIL(head, elm, field) do { \ + QMD_TAILQ_CHECK_TAIL(head, field); \ + TAILQ_NEXT((elm), field) = NULL; \ + (elm)->field.tqe_prev = (head)->tqh_last; \ + *(head)->tqh_last = (elm); \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_HEAD(head); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_LAST(head, headname) \ + (*(((struct headname *)((head)->tqh_last))->tqh_last)) + +#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) + +#define TAILQ_PREV(elm, headname, field) \ + (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) + +#define TAILQ_REMOVE(head, elm, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.tqe_next); \ + QMD_SAVELINK(oldprev, (elm)->field.tqe_prev); \ + QMD_TAILQ_CHECK_NEXT(elm, field); \ + QMD_TAILQ_CHECK_PREV(elm, field); \ + if ((TAILQ_NEXT((elm), field)) != NULL) \ + TAILQ_NEXT((elm), field)->field.tqe_prev = \ + (elm)->field.tqe_prev; \ + else { \ + (head)->tqh_last = (elm)->field.tqe_prev; \ + QMD_TRACE_HEAD(head); \ + } \ + *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \ + TRASHIT(*oldnext); \ + TRASHIT(*oldprev); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_SWAP(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *swap_first = (head1)->tqh_first; \ + QUEUE_TYPEOF(type) **swap_last = (head1)->tqh_last; \ + (head1)->tqh_first = (head2)->tqh_first; \ + (head1)->tqh_last = (head2)->tqh_last; \ + (head2)->tqh_first = swap_first; \ + (head2)->tqh_last = swap_last; \ + if ((swap_first = (head1)->tqh_first) != NULL) \ + swap_first->field.tqe_prev = &(head1)->tqh_first; \ + else \ + (head1)->tqh_last = &(head1)->tqh_first; \ + if ((swap_first = (head2)->tqh_first) != NULL) \ + swap_first->field.tqe_prev = &(head2)->tqh_first; \ + else \ + (head2)->tqh_last = &(head2)->tqh_first; \ +} while (0) + +#endif /* !_SYS_QUEUE_H_ */ diff --git a/src/common/str_util.c b/src/common/str_util.c new file mode 100644 index 000000000..74ab52419 --- /dev/null +++ b/src/common/str_util.c @@ -0,0 +1,516 @@ + +#ifndef EXCLUDE_COMMON + +#include "common/str_util.h" +#include "common/mg_mem.h" +#include "common/platform.h" + +#ifndef C_DISABLE_BUILTIN_SNPRINTF +#define C_DISABLE_BUILTIN_SNPRINTF 0 +#endif + +#include "common/mg_mem.h" + +size_t c_strnlen(const char *s, size_t maxlen) WEAK; +size_t c_strnlen(const char *s, size_t maxlen) { + size_t l = 0; + for (; l < maxlen && s[l] != '\0'; l++) { + } + return l; +} + +#define C_SNPRINTF_APPEND_CHAR(ch) \ + do { \ + if (i < (int) buf_size) buf[i] = ch; \ + i++; \ + } while (0) + +#define C_SNPRINTF_FLAG_ZERO 1 + +#if C_DISABLE_BUILTIN_SNPRINTF +int c_vsnprintf(char *buf, size_t buf_size, const char *fmt, va_list ap) WEAK; +int c_vsnprintf(char *buf, size_t buf_size, const char *fmt, va_list ap) { + return vsnprintf(buf, buf_size, fmt, ap); +} +#else +static int c_itoa(char *buf, size_t buf_size, int64_t num, int base, int flags, + int field_width) { + char tmp[40]; + int i = 0, k = 0, neg = 0; + + if (num < 0) { + neg++; + num = -num; + } + + /* Print into temporary buffer - in reverse order */ + do { + int rem = num % base; + if (rem < 10) { + tmp[k++] = '0' + rem; + } else { + tmp[k++] = 'a' + (rem - 10); + } + num /= base; + } while (num > 0); + + /* Zero padding */ + if (flags && C_SNPRINTF_FLAG_ZERO) { + while (k < field_width && k < (int) sizeof(tmp) - 1) { + tmp[k++] = '0'; + } + } + + /* And sign */ + if (neg) { + tmp[k++] = '-'; + } + + /* Now output */ + while (--k >= 0) { + C_SNPRINTF_APPEND_CHAR(tmp[k]); + } + + return i; +} + +int c_vsnprintf(char *buf, size_t buf_size, const char *fmt, va_list ap) WEAK; +int c_vsnprintf(char *buf, size_t buf_size, const char *fmt, va_list ap) { + int ch, i = 0, len_mod, flags, precision, field_width; + + while ((ch = *fmt++) != '\0') { + if (ch != '%') { + C_SNPRINTF_APPEND_CHAR(ch); + } else { + /* + * Conversion specification: + * zero or more flags (one of: # 0 - <space> + ') + * an optional minimum field width (digits) + * an optional precision (. followed by digits, or *) + * an optional length modifier (one of: hh h l ll L q j z t) + * conversion specifier (one of: d i o u x X e E f F g G a A c s p n) + */ + flags = field_width = precision = len_mod = 0; + + /* Flags. only zero-pad flag is supported. */ + if (*fmt == '0') { + flags |= C_SNPRINTF_FLAG_ZERO; + } + + /* Field width */ + while (*fmt >= '0' && *fmt <= '9') { + field_width *= 10; + field_width += *fmt++ - '0'; + } + /* Dynamic field width */ + if (*fmt == '*') { + field_width = va_arg(ap, int); + fmt++; + } + + /* Precision */ + if (*fmt == '.') { + fmt++; + if (*fmt == '*') { + precision = va_arg(ap, int); + fmt++; + } else { + while (*fmt >= '0' && *fmt <= '9') { + precision *= 10; + precision += *fmt++ - '0'; + } + } + } + + /* Length modifier */ + switch (*fmt) { + case 'h': + case 'l': + case 'L': + case 'I': + case 'q': + case 'j': + case 'z': + case 't': + len_mod = *fmt++; + if (*fmt == 'h') { + len_mod = 'H'; + fmt++; + } + if (*fmt == 'l') { + len_mod = 'q'; + fmt++; + } + break; + } + + ch = *fmt++; + if (ch == 's') { + const char *s = va_arg(ap, const char *); /* Always fetch parameter */ + int j; + int pad = field_width - (precision >= 0 ? c_strnlen(s, precision) : 0); + for (j = 0; j < pad; j++) { + C_SNPRINTF_APPEND_CHAR(' '); + } + + /* `s` may be NULL in case of %.*s */ + if (s != NULL) { + /* Ignore negative and 0 precisions */ + for (j = 0; (precision <= 0 || j < precision) && s[j] != '\0'; j++) { + C_SNPRINTF_APPEND_CHAR(s[j]); + } + } + } else if (ch == 'c') { + ch = va_arg(ap, int); /* Always fetch parameter */ + C_SNPRINTF_APPEND_CHAR(ch); + } else if (ch == 'd' && len_mod == 0) { + i += c_itoa(buf + i, buf_size - i, va_arg(ap, int), 10, flags, + field_width); + } else if (ch == 'd' && len_mod == 'l') { + i += c_itoa(buf + i, buf_size - i, va_arg(ap, long), 10, flags, + field_width); +#ifdef SSIZE_MAX + } else if (ch == 'd' && len_mod == 'z') { + i += c_itoa(buf + i, buf_size - i, va_arg(ap, ssize_t), 10, flags, + field_width); +#endif + } else if (ch == 'd' && len_mod == 'q') { + i += c_itoa(buf + i, buf_size - i, va_arg(ap, int64_t), 10, flags, + field_width); + } else if ((ch == 'x' || ch == 'u') && len_mod == 0) { + i += c_itoa(buf + i, buf_size - i, va_arg(ap, unsigned), + ch == 'x' ? 16 : 10, flags, field_width); + } else if ((ch == 'x' || ch == 'u') && len_mod == 'l') { + i += c_itoa(buf + i, buf_size - i, va_arg(ap, unsigned long), + ch == 'x' ? 16 : 10, flags, field_width); + } else if ((ch == 'x' || ch == 'u') && len_mod == 'z') { + i += c_itoa(buf + i, buf_size - i, va_arg(ap, size_t), + ch == 'x' ? 16 : 10, flags, field_width); + } else if (ch == 'p') { + unsigned long num = (unsigned long) (uintptr_t) va_arg(ap, void *); + C_SNPRINTF_APPEND_CHAR('0'); + C_SNPRINTF_APPEND_CHAR('x'); + i += c_itoa(buf + i, buf_size - i, num, 16, flags, 0); + } else { +#ifndef NO_LIBC + /* + * TODO(lsm): abort is not nice in a library, remove it + * Also, ESP8266 SDK doesn't have it + */ + abort(); +#endif + } + } + } + + /* Zero-terminate the result */ + if (buf_size > 0) { + buf[i < (int) buf_size ? i : (int) buf_size - 1] = '\0'; + } + + return i; +} +#endif + +int c_snprintf(char *buf, size_t buf_size, const char *fmt, ...) WEAK; +int c_snprintf(char *buf, size_t buf_size, const char *fmt, ...) { + int result; + va_list ap; + va_start(ap, fmt); + result = c_vsnprintf(buf, buf_size, fmt, ap); + va_end(ap); + return result; +} + +#ifdef _WIN32 +int to_wchar(const char *path, wchar_t *wbuf, size_t wbuf_len) { + int ret; + char buf[MAX_PATH * 2], buf2[MAX_PATH * 2], *p; + + strncpy(buf, path, sizeof(buf)); + buf[sizeof(buf) - 1] = '\0'; + + /* Trim trailing slashes. Leave backslash for paths like "X:\" */ + p = buf + strlen(buf) - 1; + while (p > buf && p[-1] != ':' && (p[0] == '\\' || p[0] == '/')) *p-- = '\0'; + + memset(wbuf, 0, wbuf_len * sizeof(wchar_t)); + ret = MultiByteToWideChar(CP_UTF8, 0, buf, -1, wbuf, (int) wbuf_len); + + /* + * Convert back to Unicode. If doubly-converted string does not match the + * original, something is fishy, reject. + */ + WideCharToMultiByte(CP_UTF8, 0, wbuf, (int) wbuf_len, buf2, sizeof(buf2), + NULL, NULL); + if (strcmp(buf, buf2) != 0) { + wbuf[0] = L'\0'; + ret = 0; + } + + return ret; +} +#endif /* _WIN32 */ + +/* The simplest O(mn) algorithm. Better implementation are GPLed */ +const char *c_strnstr(const char *s, const char *find, size_t slen) WEAK; +const char *c_strnstr(const char *s, const char *find, size_t slen) { + size_t find_length = strlen(find); + size_t i; + + for (i = 0; i < slen; i++) { + if (i + find_length > slen) { + return NULL; + } + + if (strncmp(&s[i], find, find_length) == 0) { + return &s[i]; + } + } + + return NULL; +} + +#if CS_ENABLE_STRDUP +char *strdup(const char *src) WEAK; +char *strdup(const char *src) { + size_t len = strlen(src) + 1; + char *ret = MG_MALLOC(len); + if (ret != NULL) { + strcpy(ret, src); + } + return ret; +} +#endif + +void cs_to_hex(char *to, const unsigned char *p, size_t len) WEAK; +void cs_to_hex(char *to, const unsigned char *p, size_t len) { + static const char *hex = "0123456789abcdef"; + + for (; len--; p++) { + *to++ = hex[p[0] >> 4]; + *to++ = hex[p[0] & 0x0f]; + } + *to = '\0'; +} + +static int fourbit(int ch) { + if (ch >= '0' && ch <= '9') { + return ch - '0'; + } else if (ch >= 'a' && ch <= 'f') { + return ch - 'a' + 10; + } else if (ch >= 'A' && ch <= 'F') { + return ch - 'A' + 10; + } + return 0; +} + +void cs_from_hex(char *to, const char *p, size_t len) WEAK; +void cs_from_hex(char *to, const char *p, size_t len) { + size_t i; + + for (i = 0; i < len; i += 2) { + *to++ = (fourbit(p[i]) << 4) + fourbit(p[i + 1]); + } + *to = '\0'; +} + +#if CS_ENABLE_TO64 +int64_t cs_to64(const char *s) WEAK; +int64_t cs_to64(const char *s) { + int64_t result = 0; + int64_t neg = 1; + while (*s && isspace((unsigned char) *s)) s++; + if (*s == '-') { + neg = -1; + s++; + } + while (isdigit((unsigned char) *s)) { + result *= 10; + result += (*s - '0'); + s++; + } + return result * neg; +} +#endif + +static int str_util_lowercase(const char *s) { + return tolower(*(const unsigned char *) s); +} + +int mg_ncasecmp(const char *s1, const char *s2, size_t len) WEAK; +int mg_ncasecmp(const char *s1, const char *s2, size_t len) { + int diff = 0; + + if (len > 0) do { + diff = str_util_lowercase(s1++) - str_util_lowercase(s2++); + } while (diff == 0 && s1[-1] != '\0' && --len > 0); + + return diff; +} + +int mg_casecmp(const char *s1, const char *s2) WEAK; +int mg_casecmp(const char *s1, const char *s2) { + return mg_ncasecmp(s1, s2, (size_t) ~0); +} + +int mg_asprintf(char **buf, size_t size, const char *fmt, ...) WEAK; +int mg_asprintf(char **buf, size_t size, const char *fmt, ...) { + int ret; + va_list ap; + va_start(ap, fmt); + ret = mg_avprintf(buf, size, fmt, ap); + va_end(ap); + return ret; +} + +int mg_avprintf(char **buf, size_t size, const char *fmt, va_list ap) WEAK; +int mg_avprintf(char **buf, size_t size, const char *fmt, va_list ap) { + va_list ap_copy; + int len; + + va_copy(ap_copy, ap); + len = vsnprintf(*buf, size, fmt, ap_copy); + va_end(ap_copy); + + if (len < 0) { + /* eCos and Windows are not standard-compliant and return -1 when + * the buffer is too small. Keep allocating larger buffers until we + * succeed or out of memory. */ + *buf = NULL; /* LCOV_EXCL_START */ + while (len < 0) { + MG_FREE(*buf); + if (size == 0) { + size = 5; + } + size *= 2; + if ((*buf = (char *) MG_MALLOC(size)) == NULL) { + len = -1; + break; + } + va_copy(ap_copy, ap); + len = vsnprintf(*buf, size - 1, fmt, ap_copy); + va_end(ap_copy); + } + + /* + * Microsoft version of vsnprintf() is not always null-terminated, so put + * the terminator manually + */ + (*buf)[len] = 0; + /* LCOV_EXCL_STOP */ + } else if (len >= (int) size) { + /* Standard-compliant code path. Allocate a buffer that is large enough. */ + if ((*buf = (char *) MG_MALLOC(len + 1)) == NULL) { + len = -1; /* LCOV_EXCL_LINE */ + } else { /* LCOV_EXCL_LINE */ + va_copy(ap_copy, ap); + len = vsnprintf(*buf, len + 1, fmt, ap_copy); + va_end(ap_copy); + } + } + + return len; +} + +const char *mg_next_comma_list_entry(const char *, struct mg_str *, + struct mg_str *) WEAK; +const char *mg_next_comma_list_entry(const char *list, struct mg_str *val, + struct mg_str *eq_val) { + struct mg_str ret = mg_next_comma_list_entry_n(mg_mk_str(list), val, eq_val); + return ret.p; +} + +struct mg_str mg_next_comma_list_entry_n(struct mg_str list, struct mg_str *val, + struct mg_str *eq_val) WEAK; +struct mg_str mg_next_comma_list_entry_n(struct mg_str list, struct mg_str *val, + struct mg_str *eq_val) { + if (list.len == 0) { + /* End of the list */ + list = mg_mk_str(NULL); + } else { + const char *chr = NULL; + *val = list; + + if ((chr = mg_strchr(*val, ',')) != NULL) { + /* Comma found. Store length and shift the list ptr */ + val->len = chr - val->p; + chr++; + list.len -= (chr - list.p); + list.p = chr; + } else { + /* This value is the last one */ + list = mg_mk_str_n(list.p + list.len, 0); + } + + if (eq_val != NULL) { + /* Value has form "x=y", adjust pointers and lengths */ + /* so that val points to "x", and eq_val points to "y". */ + eq_val->len = 0; + eq_val->p = (const char *) memchr(val->p, '=', val->len); + if (eq_val->p != NULL) { + eq_val->p++; /* Skip over '=' character */ + eq_val->len = val->p + val->len - eq_val->p; + val->len = (eq_val->p - val->p) - 1; + } + } + } + + return list; +} + +size_t mg_match_prefix_n(const struct mg_str, const struct mg_str) WEAK; +size_t mg_match_prefix_n(const struct mg_str pattern, const struct mg_str str) { + const char *or_str; + size_t res = 0, len = 0, i = 0, j = 0; + + if ((or_str = (const char *) memchr(pattern.p, '|', pattern.len)) != NULL || + (or_str = (const char *) memchr(pattern.p, ',', pattern.len)) != NULL) { + struct mg_str pstr = {pattern.p, (size_t)(or_str - pattern.p)}; + res = mg_match_prefix_n(pstr, str); + if (res > 0) return res; + pstr.p = or_str + 1; + pstr.len = (pattern.p + pattern.len) - (or_str + 1); + return mg_match_prefix_n(pstr, str); + } + + for (; i < pattern.len && j < str.len; i++, j++) { + if (pattern.p[i] == '?') { + continue; + } else if (pattern.p[i] == '*') { + i++; + if (i < pattern.len && pattern.p[i] == '*') { + i++; + len = str.len - j; + } else { + len = 0; + while (j + len < str.len && str.p[j + len] != '/') len++; + } + if (i == pattern.len || (pattern.p[i] == '$' && i == pattern.len - 1)) + return j + len; + do { + const struct mg_str pstr = {pattern.p + i, pattern.len - i}; + const struct mg_str sstr = {str.p + j + len, str.len - j - len}; + res = mg_match_prefix_n(pstr, sstr); + } while (res == 0 && len != 0 && len-- > 0); + return res == 0 ? 0 : j + res + len; + } else if (str_util_lowercase(&pattern.p[i]) != + str_util_lowercase(&str.p[j])) { + break; + } + } + if (i < pattern.len && pattern.p[i] == '$') { + return j == str.len ? str.len : 0; + } + return i == pattern.len ? j : 0; +} + +size_t mg_match_prefix(const char *, int, const char *) WEAK; +size_t mg_match_prefix(const char *pattern, int pattern_len, const char *str) { + const struct mg_str pstr = {pattern, (size_t) pattern_len}; + struct mg_str s = {str, 0}; + if (str != NULL) s.len = strlen(str); + return mg_match_prefix_n(pstr, s); +} + +#endif /* EXCLUDE_COMMON */ diff --git a/src/common/str_util.h b/src/common/str_util.h new file mode 100644 index 000000000..e023aa629 --- /dev/null +++ b/src/common/str_util.h @@ -0,0 +1,182 @@ + +#ifndef CS_COMMON_STR_UTIL_H_ +#define CS_COMMON_STR_UTIL_H_ + +#include <stdarg.h> +#include <stdlib.h> + +#include "common/mg_str.h" +#include "common/platform.h" + +#ifndef CS_ENABLE_STRDUP +#define CS_ENABLE_STRDUP 0 +#endif + +#ifndef CS_ENABLE_TO64 +#define CS_ENABLE_TO64 0 +#endif + +/* + * Expands to a string representation of its argument: e.g. + * `CS_STRINGIFY_LIT(5) expands to "5"` + */ +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +#define CS_STRINGIFY_LIT(...) #__VA_ARGS__ +#else +#define CS_STRINGIFY_LIT(x) #x +#endif + +/* + * Expands to a string representation of its argument, which is allowed + * to be a macro: e.g. + * + * #define FOO 123 + * CS_STRINGIFY_MACRO(FOO) + * + * expands to 123. + */ +#define CS_STRINGIFY_MACRO(x) CS_STRINGIFY_LIT(x) + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Equivalent of standard `strnlen()`. + */ +size_t c_strnlen(const char *s, size_t maxlen); + +/* + * Equivalent of standard `snprintf()`. + */ +int c_snprintf(char *buf, size_t buf_size, const char *format, ...) + PRINTF_LIKE(3, 4); + +/* + * Equivalent of standard `vsnprintf()`. + */ +int c_vsnprintf(char *buf, size_t buf_size, const char *format, va_list ap); + +/* + * Find the first occurrence of find in s, where the search is limited to the + * first slen characters of s. + */ +const char *c_strnstr(const char *s, const char *find, size_t slen); + +/* + * Stringify binary data. Output buffer size must be 2 * size_of_input + 1 + * because each byte of input takes 2 bytes in string representation + * plus 1 byte for the terminating \0 character. + */ +void cs_to_hex(char *to, const unsigned char *p, size_t len); + +/* + * Convert stringified binary data back to binary. + * Does the reverse of `cs_to_hex()`. + */ +void cs_from_hex(char *to, const char *p, size_t len); + +#if CS_ENABLE_STRDUP +/* + * Equivalent of standard `strdup()`, defined if only `CS_ENABLE_STRDUP` is 1. + */ +char *strdup(const char *src); +#endif + +#if CS_ENABLE_TO64 +#include <stdint.h> +/* + * Simple string -> int64 conversion routine. + */ +int64_t cs_to64(const char *s); +#endif + +/* + * Cross-platform version of `strncasecmp()`. + */ +int mg_ncasecmp(const char *s1, const char *s2, size_t len); + +/* + * Cross-platform version of `strcasecmp()`. + */ +int mg_casecmp(const char *s1, const char *s2); + +/* + * Prints message to the buffer. If the buffer is large enough to hold the + * message, it returns buffer. If buffer is to small, it allocates a large + * enough buffer on heap and returns allocated buffer. + * This is a supposed use case: + * + * ```c + * char buf[5], *p = buf; + * mg_avprintf(&p, sizeof(buf), "%s", "hi there"); + * use_p_somehow(p); + * if (p != buf) { + * free(p); + * } + * ``` + * + * The purpose of this is to avoid malloc-ing if generated strings are small. + */ +int mg_asprintf(char **buf, size_t size, const char *fmt, ...) + PRINTF_LIKE(3, 4); + +/* Same as mg_asprintf, but takes varargs list. */ +int mg_avprintf(char **buf, size_t size, const char *fmt, va_list ap); + +/* + * A helper function for traversing a comma separated list of values. + * It returns a list pointer shifted to the next value or NULL if the end + * of the list found. + * The value is stored in a val vector. If the value has a form "x=y", then + * eq_val vector is initialised to point to the "y" part, and val vector length + * is adjusted to point only to "x". + * If the list is just a comma separated list of entries, like "aa,bb,cc" then + * `eq_val` will contain zero-length string. + * + * The purpose of this function is to parse comma separated string without + * any copying/memory allocation. + */ +const char *mg_next_comma_list_entry(const char *list, struct mg_str *val, + struct mg_str *eq_val); + +/* + * Like `mg_next_comma_list_entry()`, but takes `list` as `struct mg_str`. + * NB: Test return value's .p, not .len. On last itreation that yields result + * .len will be 0 but .p will not. When finished, .p will be NULL. + */ +struct mg_str mg_next_comma_list_entry_n(struct mg_str list, struct mg_str *val, + struct mg_str *eq_val); + +/* + * Matches 0-terminated string (mg_match_prefix) or string with given length + * mg_match_prefix_n against a glob pattern. Glob syntax: + * ``` + * - * matches zero or more characters until a slash character / + * - ** matches zero or more characters + * - ? Matches exactly one character which is not a slash / + * - | or , divides alternative patterns + * - any other character matches itself + * ``` + * Match is case-insensitive. Return number of bytes matched. + * Examples: + * ``` + * mg_match_prefix("a*f", len, "abcdefgh") == 6 + * mg_match_prefix("a*f", len, "abcdexgh") == 0 + * mg_match_prefix("a*f|de*,xy", len, "defgh") == 5 + * mg_match_prefix("?*", len, "abc") == 3 + * mg_match_prefix("?*", len, "") == 0 + * ``` + */ +size_t mg_match_prefix(const char *pattern, int pattern_len, const char *str); + +/* + * Like `mg_match_prefix()`, but takes `pattern` and `str` as `struct mg_str`. + */ +size_t mg_match_prefix_n(const struct mg_str pattern, const struct mg_str str); + +#ifdef __cplusplus +} +#endif + +#endif /* CS_COMMON_STR_UTIL_H_ */ diff --git a/src/mg_coap.c b/src/mg_coap.c index 29667b7c5..abbf56256 100644 --- a/src/mg_coap.c +++ b/src/mg_coap.c @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2015 Cesanta Software Limited - * All rights reserved - * This software is dual-licensed: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. For the terms of this - * license, see <http://www.gnu.org/licenses/>. - * - * You are free to use this software under the terms of the GNU General - * Public License, 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. - * - * Alternatively, you can license this software under a commercial - * license, as set out in <https://www.cesanta.com/license>. - */ #include "mg_internal.h" #include "mg_coap.h" diff --git a/src/mg_coap.h b/src/mg_coap.h index 296933fec..21b6cfe2d 100644 --- a/src/mg_coap.h +++ b/src/mg_coap.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2015 Cesanta Software Limited - * All rights reserved - * This software is dual-licensed: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. For the terms of this - * license, see <http://www.gnu.org/licenses/>. - * - * You are free to use this software under the terms of the GNU General - * Public License, 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. - * - * Alternatively, you can license this software under a commercial - * license, as set out in <https://www.cesanta.com/license>. - */ /* * === CoAP API reference diff --git a/src/mg_dns.c b/src/mg_dns.c index 0db0cb70c..ad5306196 100644 --- a/src/mg_dns.c +++ b/src/mg_dns.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - */ #if MG_ENABLE_DNS diff --git a/src/mg_dns.h b/src/mg_dns.h index 88d3c3988..7fd417321 100644 --- a/src/mg_dns.h +++ b/src/mg_dns.h @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - */ /* * === DNS API reference diff --git a/src/mg_dns_server.c b/src/mg_dns_server.c index 2dafb46d5..7a1350fbd 100644 --- a/src/mg_dns_server.c +++ b/src/mg_dns_server.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - */ #if MG_ENABLE_DNS_SERVER diff --git a/src/mg_dns_server.h b/src/mg_dns_server.h index 168a17433..5f4e813e5 100644 --- a/src/mg_dns_server.h +++ b/src/mg_dns_server.h @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - */ /* * === DNS server API reference diff --git a/src/mg_features.h b/src/mg_features.h index 515242d27..7485937fa 100644 --- a/src/mg_features.h +++ b/src/mg_features.h @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014-2016 Cesanta Software Limited - * All rights reserved - */ #ifndef CS_MONGOOSE_SRC_FEATURES_H_ #define CS_MONGOOSE_SRC_FEATURES_H_ diff --git a/src/mg_http.c b/src/mg_http.c index 919251aab..39bf78bf0 100644 --- a/src/mg_http.c +++ b/src/mg_http.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - */ #if MG_ENABLE_HTTP diff --git a/src/mg_http.h b/src/mg_http.h index 385c210ac..45797df3e 100644 --- a/src/mg_http.h +++ b/src/mg_http.h @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - */ /* * === Common API reference diff --git a/src/mg_http_cgi.c b/src/mg_http_cgi.c index b06c5f80d..fe8b84ba9 100644 --- a/src/mg_http_cgi.c +++ b/src/mg_http_cgi.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014-2016 Cesanta Software Limited - * All rights reserved - */ #ifndef _WIN32 #include <signal.h> diff --git a/src/mg_http_ssi.c b/src/mg_http_ssi.c index b96d61128..e45afc4cc 100644 --- a/src/mg_http_ssi.c +++ b/src/mg_http_ssi.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014-2016 Cesanta Software Limited - * All rights reserved - */ #if MG_ENABLE_HTTP && MG_ENABLE_HTTP_SSI && MG_ENABLE_FILESYSTEM diff --git a/src/mg_http_webdav.c b/src/mg_http_webdav.c index 6efb928c3..4878e6d7c 100644 --- a/src/mg_http_webdav.c +++ b/src/mg_http_webdav.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014-2016 Cesanta Software Limited - * All rights reserved - */ #if MG_ENABLE_HTTP && MG_ENABLE_HTTP_WEBDAV diff --git a/src/mg_http_websocket.c b/src/mg_http_websocket.c index 317b4997b..1f1a0da9b 100644 --- a/src/mg_http_websocket.c +++ b/src/mg_http_websocket.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - */ #if MG_ENABLE_HTTP && MG_ENABLE_HTTP_WEBSOCKET diff --git a/src/mg_internal.h b/src/mg_internal.h index 250b6fe10..92ab71e62 100644 --- a/src/mg_internal.h +++ b/src/mg_internal.h @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - */ #ifndef CS_MONGOOSE_SRC_INTERNAL_H_ #define CS_MONGOOSE_SRC_INTERNAL_H_ diff --git a/src/mg_license.h b/src/mg_license.h deleted file mode 100644 index 484389d25..000000000 --- a/src/mg_license.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright (c) 2004-2013 Sergey Lyubka - * Copyright (c) 2013-2020 Cesanta Software Limited - * All rights reserved - * - * This software is dual-licensed: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. For the terms of this - * license, see <http://www.gnu.org/licenses/>. - * - * You are free to use this software under the terms of the GNU General - * Public License, 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. - * - * Alternatively, you can license this software under a commercial - * license, as set out in <https://www.cesanta.com/license>. - */ diff --git a/src/mg_modules.mk b/src/mg_modules.mk deleted file mode 100644 index e0e51bc7a..000000000 --- a/src/mg_modules.mk +++ /dev/null @@ -1,105 +0,0 @@ -COMMON = ../../common - -HEADERS = mg_common.h \ - $(COMMON)/platform.h \ - $(COMMON)/platforms/platform_windows.h \ - $(COMMON)/platforms/platform_unix.h \ - $(COMMON)/platforms/platform_esp32.h \ - $(COMMON)/platforms/platform_esp8266.h \ - $(COMMON)/platforms/platform_cc3100.h \ - $(COMMON)/platforms/platform_cc3200.h \ - $(COMMON)/platforms/platform_cc3220.h \ - $(COMMON)/platforms/platform_msp432.h \ - $(COMMON)/platforms/platform_tm4c129.h \ - $(COMMON)/platforms/platform_mbed.h \ - $(COMMON)/platforms/platform_nrf51.h \ - $(COMMON)/platforms/platform_nrf52.h \ - $(COMMON)/platforms/simplelink/cs_simplelink.h \ - $(COMMON)/platforms/platform_wince.h \ - $(COMMON)/platforms/platform_nxp_lpc.h \ - $(COMMON)/platforms/platform_nxp_kinetis.h \ - $(COMMON)/platforms/platform_pic32.h \ - $(COMMON)/platforms/platform_rs14100.h \ - $(COMMON)/platforms/platform_stm32.h \ - $(COMMON)/platforms/lwip/mg_lwip.h \ - $(COMMON)/cs_md5.h \ - $(COMMON)/cs_sha1.h \ - $(COMMON)/cs_time.h \ - $(COMMON)/mg_str.h \ - $(COMMON)/mbuf.h \ - $(COMMON)/cs_base64.h \ - $(COMMON)/str_util.h \ - $(COMMON)/queue.h \ - mg_features.h \ - mg_net_if.h \ - mg_ssl_if.h \ - mg_net.h \ - mg_uri.h \ - mg_util.h \ - mg_http.h \ - mg_http_server.h \ - mg_http_client.h \ - mg_mqtt.h \ - mg_mqtt_server.h \ - mg_dns.h \ - mg_dns_server.h \ - mg_resolv.h \ - mg_coap.h \ - mg_sntp.h \ - mg_socks.h - -SOURCES = $(COMMON)/mg_mem.h \ - $(COMMON)/cs_base64.c \ - $(COMMON)/cs_dbg.h \ - $(COMMON)/cs_dbg.c \ - $(COMMON)/cs_dirent.h \ - $(COMMON)/cs_dirent.c \ - $(COMMON)/cs_time.c \ - $(COMMON)/cs_endian.h \ - $(COMMON)/cs_md5.c \ - $(COMMON)/cs_sha1.c \ - $(COMMON)/mbuf.c \ - $(COMMON)/mg_str.c \ - $(COMMON)/str_util.c \ - mg_net.c \ - mg_net_if_socket.h \ - mg_net_if_socks.h \ - mg_net_if.c \ - mg_net_if_null.c \ - mg_net_if_socket.c \ - mg_net_if_socks.c \ - mg_ssl_if_openssl.c \ - mg_ssl_if_mbedtls.c \ - mg_uri.c \ - mg_http.c \ - mg_http_cgi.c \ - mg_http_ssi.c \ - mg_http_webdav.c \ - mg_http_websocket.c \ - mg_util.c \ - mg_mqtt.c \ - mg_mqtt_server.c \ - mg_dns.c \ - mg_dns_server.c \ - mg_resolv.c \ - mg_coap.c \ - mg_sntp.c \ - mg_socks.c \ - $(COMMON)/platforms/cc3200/cc3200_libc.c \ - $(COMMON)/platforms/msp432/msp432_libc.c \ - $(COMMON)/platforms/nrf5/nrf5_libc.c \ - $(COMMON)/platforms/simplelink/sl_fs_slfs.h \ - $(COMMON)/platforms/simplelink/sl_fs_slfs.c \ - $(COMMON)/platforms/simplelink/sl_fs.c \ - $(COMMON)/platforms/simplelink/sl_socket.c \ - $(COMMON)/platforms/simplelink/sl_mg_task.c \ - $(COMMON)/platforms/simplelink/sl_net_if.h \ - $(COMMON)/platforms/simplelink/sl_net_if.c \ - $(COMMON)/platforms/simplelink/sl_ssl_if.c \ - $(COMMON)/platforms/lwip/mg_lwip_net_if.h \ - $(COMMON)/platforms/lwip/mg_lwip_net_if.c \ - $(COMMON)/platforms/lwip/mg_lwip_ev_mgr.c \ - $(COMMON)/platforms/wince/wince_libc.c \ - $(COMMON)/platforms/pic32/pic32_net_if.h \ - $(COMMON)/platforms/pic32/pic32_net_if.c \ - $(COMMON)/platforms/windows/windows_direct.c diff --git a/src/mg_mqtt.c b/src/mg_mqtt.c index 06a3814d1..1ac530c19 100644 --- a/src/mg_mqtt.c +++ b/src/mg_mqtt.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - */ #if MG_ENABLE_MQTT diff --git a/src/mg_mqtt.h b/src/mg_mqtt.h index 31dad5835..208799bdd 100644 --- a/src/mg_mqtt.h +++ b/src/mg_mqtt.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - * This software is dual-licensed: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. For the terms of this - * license, see <http://www.gnu.org/licenses/>. - * - * You are free to use this software under the terms of the GNU General - * Public License, 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. - * - * Alternatively, you can license this software under a commercial - * license, as set out in <https://www.cesanta.com/license>. - */ /* * === MQTT API reference diff --git a/src/mg_mqtt_client.h b/src/mg_mqtt_client.h deleted file mode 100644 index 998414d12..000000000 --- a/src/mg_mqtt_client.h +++ /dev/null @@ -1,8 +0,0 @@ -/* - * === API reference - */ - -#ifndef CS_MONGOOSE_SRC_MQTT_CLIENT_H_ -#define CS_MONGOOSE_SRC_MQTT_CLIENT_H_ - -#endif /* CS_MONGOOSE_SRC_MQTT_CLIENT_H_ */ diff --git a/src/mg_mqtt_server.c b/src/mg_mqtt_server.c index cb5664801..fe0440f8f 100644 --- a/src/mg_mqtt_server.c +++ b/src/mg_mqtt_server.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - */ #include "mg_internal.h" #include "mg_mqtt_server.h" diff --git a/src/mg_mqtt_server.h b/src/mg_mqtt_server.h index 8c34b5e64..80a23804b 100644 --- a/src/mg_mqtt_server.h +++ b/src/mg_mqtt_server.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - * This software is dual-licensed: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. For the terms of this - * license, see <http://www.gnu.org/licenses/>. - * - * You are free to use this software under the terms of the GNU General - * Public License, 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. - * - * Alternatively, you can license this software under a commercial - * license, as set out in <https://www.cesanta.com/license>. - */ /* * === MQTT Server API reference diff --git a/src/mg_net.c b/src/mg_net.c index b621b0efa..ad8998b11 100644 --- a/src/mg_net.c +++ b/src/mg_net.c @@ -1,20 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - * - * This software is dual-licensed: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. For the terms of this - * license, see <http://www.gnu.org/licenses/>. - * - * You are free to use this software under the terms of the GNU General - * Public License, 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. - * - * Alternatively, you can license this software under a commercial - * license, as set out in <https://www.cesanta.com/license>. - */ #include "common/cs_time.h" #include "mg_dns.h" diff --git a/src/mg_net.h b/src/mg_net.h index e6ff21ba7..89939bf29 100644 --- a/src/mg_net.h +++ b/src/mg_net.h @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - * This software is dual-licensed: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. For the terms of this - * license, see <http://www.gnu.org/licenses/>. - * - * You are free to use this software under the terms of the GNU General - * Public License, 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. - * - * Alternatively, you can license this software under a commercial - * license, as set out in <https://www.cesanta.com/license>. - */ /* * === Core API: TCP/UDP/SSL diff --git a/src/mg_net_if.h b/src/mg_net_if.h index 1239d54a0..3d336d744 100644 --- a/src/mg_net_if.h +++ b/src/mg_net_if.h @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014-2016 Cesanta Software Limited - * All rights reserved - */ #ifndef CS_MONGOOSE_SRC_NET_IF_H_ #define CS_MONGOOSE_SRC_NET_IF_H_ diff --git a/src/mg_net_if_null.c b/src/mg_net_if_null.c index cf8bbaa10..36e7504bc 100644 --- a/src/mg_net_if_null.c +++ b/src/mg_net_if_null.c @@ -1,20 +1,3 @@ -/* - * Copyright (c) 2018 Cesanta Software Limited - * All rights reserved - * - * This software is dual-licensed: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. For the terms of this - * license, see <http://www.gnu.org/licenses/>. - * - * You are free to use this software under the terms of the GNU General - * Public License, 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. - * - * Alternatively, you can license this software under a commercial - * license, as set out in <https://www.cesanta.com/license>. - */ static void mg_null_if_connect_tcp(struct mg_connection *c, const union socket_address *sa) { diff --git a/src/mg_net_if_socket.c b/src/mg_net_if_socket.c index c7f7f59a9..18b7b0dd2 100644 --- a/src/mg_net_if_socket.c +++ b/src/mg_net_if_socket.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014-2016 Cesanta Software Limited - * All rights reserved - */ #if MG_ENABLE_NET_IF_SOCKET diff --git a/src/mg_net_if_socket.h b/src/mg_net_if_socket.h index 744fc0f4f..e75778754 100644 --- a/src/mg_net_if_socket.h +++ b/src/mg_net_if_socket.h @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014-2016 Cesanta Software Limited - * All rights reserved - */ #ifndef CS_MONGOOSE_SRC_NET_IF_SOCKET_H_ #define CS_MONGOOSE_SRC_NET_IF_SOCKET_H_ diff --git a/src/mg_net_if_socks.c b/src/mg_net_if_socks.c index 2a4214268..724044174 100644 --- a/src/mg_net_if_socks.c +++ b/src/mg_net_if_socks.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014-2016 Cesanta Software Limited - * All rights reserved - */ #if MG_ENABLE_SOCKS diff --git a/src/mg_net_if_socks.h b/src/mg_net_if_socks.h index 80e3107c7..3e5e000c6 100644 --- a/src/mg_net_if_socks.h +++ b/src/mg_net_if_socks.h @@ -1,7 +1,3 @@ -/* -* Copyright (c) 2014-2017 Cesanta Software Limited -* All rights reserved -*/ #ifndef CS_MONGOOSE_SRC_NET_IF_SOCKS_H_ #define CS_MONGOOSE_SRC_NET_IF_SOCKS_H_ diff --git a/src/mg_resolv.c b/src/mg_resolv.c index a67c77387..5eef4792f 100644 --- a/src/mg_resolv.c +++ b/src/mg_resolv.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - */ #if MG_ENABLE_ASYNC_RESOLVER diff --git a/src/mg_resolv.h b/src/mg_resolv.h index a604c1790..651317375 100644 --- a/src/mg_resolv.h +++ b/src/mg_resolv.h @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - */ /* * === API reference diff --git a/src/mg_sntp.c b/src/mg_sntp.c index 5d40e1afe..dd9dbaf75 100644 --- a/src/mg_sntp.c +++ b/src/mg_sntp.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2016 Cesanta Software Limited - * All rights reserved - */ #include "mg_internal.h" #include "mg_sntp.h" diff --git a/src/mg_sntp.h b/src/mg_sntp.h index 5cdff2ec3..1d0ed5bea 100644 --- a/src/mg_sntp.h +++ b/src/mg_sntp.h @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2016 Cesanta Software Limited - * All rights reserved - */ #ifndef CS_MONGOOSE_SRC_SNTP_H_ #define CS_MONGOOSE_SRC_SNTP_H_ diff --git a/src/mg_socks.c b/src/mg_socks.c index 56b2d5c0e..a97e175d5 100644 --- a/src/mg_socks.c +++ b/src/mg_socks.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2017 Cesanta Software Limited - * All rights reserved - */ #if MG_ENABLE_SOCKS diff --git a/src/mg_socks.h b/src/mg_socks.h index e7b231a09..7ac26a03e 100644 --- a/src/mg_socks.h +++ b/src/mg_socks.h @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2017 Cesanta Software Limited - * All rights reserved - */ #ifndef CS_MONGOOSE_SRC_SOCKS_H_ #define CS_MONGOOSE_SRC_SOCKS_H_ diff --git a/src/mg_ssl_if.h b/src/mg_ssl_if.h index 0ccd3f0a6..1964fc6d5 100644 --- a/src/mg_ssl_if.h +++ b/src/mg_ssl_if.h @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014-2016 Cesanta Software Limited - * All rights reserved - */ #ifndef CS_MONGOOSE_SRC_SSL_IF_H_ #define CS_MONGOOSE_SRC_SSL_IF_H_ diff --git a/src/mg_ssl_if_mbedtls.c b/src/mg_ssl_if_mbedtls.c index d837481aa..6ba4a01e6 100644 --- a/src/mg_ssl_if_mbedtls.c +++ b/src/mg_ssl_if_mbedtls.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014-2016 Cesanta Software Limited - * All rights reserved - */ #if MG_ENABLE_SSL && MG_SSL_IF == MG_SSL_IF_MBEDTLS diff --git a/src/mg_ssl_if_openssl.c b/src/mg_ssl_if_openssl.c index 18d8b706f..4d6bbaeec 100644 --- a/src/mg_ssl_if_openssl.c +++ b/src/mg_ssl_if_openssl.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014-2016 Cesanta Software Limited - * All rights reserved - */ #if MG_ENABLE_SSL && MG_SSL_IF == MG_SSL_IF_OPENSSL diff --git a/src/mg_uri.c b/src/mg_uri.c index 9b6228b89..30591e5f7 100644 --- a/src/mg_uri.c +++ b/src/mg_uri.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - */ #include "mg_internal.h" #include "mg_uri.h" diff --git a/src/mg_uri.h b/src/mg_uri.h index f79e547ca..6266fb278 100644 --- a/src/mg_uri.h +++ b/src/mg_uri.h @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - */ /* * === URI diff --git a/src/mg_util.c b/src/mg_util.c index cfbd87e5a..69753996b 100644 --- a/src/mg_util.c +++ b/src/mg_util.c @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - */ #include "common/cs_base64.h" #include "mg_internal.h" diff --git a/src/mg_util.h b/src/mg_util.h index 8ddeb770f..4122aed37 100644 --- a/src/mg_util.h +++ b/src/mg_util.h @@ -1,7 +1,3 @@ -/* - * Copyright (c) 2014 Cesanta Software Limited - * All rights reserved - */ /* * === Utility API diff --git a/src/mongoose.c.manifest b/src/mongoose.c.manifest new file mode 100644 index 000000000..ada28d413 --- /dev/null +++ b/src/mongoose.c.manifest @@ -0,0 +1,56 @@ +src/mg_internal.h +src/common/mg_mem.h +src/common/cs_base64.c +src/common/cs_dbg.h +src/common/cs_dbg.c +src/common/cs_dirent.h +src/common/cs_dirent.c +src/common/cs_time.c +src/common/cs_endian.h +src/common/cs_md5.c +src/common/cs_sha1.c +src/common/mbuf.c +src/common/mg_str.c +src/common/str_util.c +src/mg_net.c +src/mg_net_if_socket.h +src/mg_net_if_socks.h +src/mg_net_if.c +src/mg_net_if_null.c +src/mg_net_if_socket.c +src/mg_net_if_socks.c +src/mg_ssl_if_openssl.c +src/mg_ssl_if_mbedtls.c +src/mg_uri.c +src/mg_http.c +src/mg_http_cgi.c +src/mg_http_ssi.c +src/mg_http_webdav.c +src/mg_http_websocket.c +src/mg_util.c +src/mg_mqtt.c +src/mg_mqtt_server.c +src/mg_dns.c +src/mg_dns_server.c +src/mg_resolv.c +src/mg_coap.c +src/mg_sntp.c +src/mg_socks.c +src/common/platforms/cc3200/cc3200_libc.c +src/common/platforms/msp432/msp432_libc.c +src/common/platforms/nrf5/nrf5_libc.c +src/common/platforms/simplelink/sl_fs_slfs.h +src/common/platforms/simplelink/sl_fs_slfs.c +src/common/platforms/simplelink/sl_fs.c +src/common/platforms/simplelink/sl_socket.c +src/common/platforms/simplelink/sl_mg_task.c +src/common/platforms/simplelink/sl_net_if.h +src/common/platforms/simplelink/sl_net_if.c +src/common/platforms/simplelink/sl_ssl_if.c +src/common/platforms/lwip/mg_lwip_net_if.h +src/common/platforms/lwip/mg_lwip_net_if.c +src/common/platforms/lwip/mg_lwip_ev_mgr.c +src/common/platforms/wince/wince_libc.c +src/common/platforms/pic32/pic32_net_if.h +src/common/platforms/pic32/pic32_net_if.c +src/common/platforms/windows/windows_direct.c diff --git a/src/mongoose.h.manifest b/src/mongoose.h.manifest new file mode 100644 index 000000000..b942d14c2 --- /dev/null +++ b/src/mongoose.h.manifest @@ -0,0 +1,47 @@ +src/mg_common.h +src/common/platform.h +src/common/platforms/platform_windows.h +src/common/platforms/platform_unix.h +src/common/platforms/platform_esp32.h +src/common/platforms/platform_esp8266.h +src/common/platforms/platform_cc3100.h +src/common/platforms/platform_cc3200.h +src/common/platforms/platform_cc3220.h +src/common/platforms/platform_msp432.h +src/common/platforms/platform_tm4c129.h +src/common/platforms/platform_mbed.h +src/common/platforms/platform_nrf51.h +src/common/platforms/platform_nrf52.h +src/common/platforms/simplelink/cs_simplelink.h +src/common/platforms/platform_wince.h +src/common/platforms/platform_nxp_lpc.h +src/common/platforms/platform_nxp_kinetis.h +src/common/platforms/platform_pic32.h +src/common/platforms/platform_rs14100.h +src/common/platforms/platform_stm32.h +src/common/platforms/lwip/mg_lwip.h +src/common/cs_md5.h +src/common/cs_sha1.h +src/common/cs_time.h +src/common/mg_str.h +src/common/mbuf.h +src/common/cs_base64.h +src/common/str_util.h +src/common/queue.h +src/mg_features.h +src/mg_net_if.h +src/mg_ssl_if.h +src/mg_net.h +src/mg_uri.h +src/mg_util.h +src/mg_http.h +src/mg_http_server.h +src/mg_http_client.h +src/mg_mqtt.h +src/mg_mqtt_server.h +src/mg_dns.h +src/mg_dns_server.h +src/mg_resolv.h +src/mg_coap.h +src/mg_sntp.h +src/mg_socks.h diff --git a/test/Makefile b/test/Makefile index 7bf70a107..9bbdb900b 100644 --- a/test/Makefile +++ b/test/Makefile @@ -4,24 +4,11 @@ PROG = unit_test MONGOOSE_DIR = .. -SRC_DIR = ../src - -COMMON_DIR_PUB = ../src/common -COMMON_DIR_DEV = ../../common - -# Our dev repo and public mongoose repo have different layouts, so here -# we make it work on both -ifneq ("$(wildcard ../../common.mk)","") -COMMON_PARENT = ../.. -else -COMMON_PARENT = $(SRC_DIR) -endif - TEST_SOURCES = unit_test.c test_util.c test_main.c fuzz.c AMALGAMATED_SOURCES = ../mongoose.c KRYPTON_PATH = $(REPO_ROOT)/krypton -VPATH = $(MONGOOSE_DIR) $(SRC_DIR) $(COMMON_DIR_PUB) $(COMMON_DIR_DEV) $(COMMON_PARENT) +VPATH = $(MONGOOSE_DIR) # or Krypton, or mbedTLS SSL ?= OpenSSL @@ -49,7 +36,7 @@ UNIX_FEATURE_FLAGS=-DMG_ENABLE_IPV6 -DMG_ENABLE_SSL # `mg_http_parse_header()` is removed from mongoose. CFLAGS = -W -Wall -Wundef -Werror -Wno-deprecated-declarations -g -O0 -Wno-multichar -D__USE_MISC \ $(COMMON_FEATURE_FLAGS) $(UNIX_FEATURE_FLAGS) \ - $(patsubst %,-I%,$(subst :, ,$(VPATH))) \ + -I$(MONGOOSE_DIR) -I../src \ -include unit_test.h -pthread $(CFLAGS_EXTRA) LDFLAGS = -lm @@ -67,7 +54,6 @@ LDFLAGS += -lmbedcrypto -lmbedtls -lmbedx509 endif include test.mk -include $(SRC_DIR)/mg_modules.mk # http://crossgcc.rts-software.org/doku.php?id=compiling_for_win32 MINGW_GCC=/usr/local/gcc-4.8.0-qt-4.8.4-for-mingw32/win32-gcc/bin/i586-mingw32-gcc diff --git a/src/common/test_main.c b/test/test_main.c similarity index 97% rename from src/common/test_main.c rename to test/test_main.c index 5057cbc92..91dd28540 100644 --- a/src/common/test_main.c +++ b/test/test_main.c @@ -16,8 +16,8 @@ */ #include "common/cs_dbg.h" -#include "common/test_main.h" -#include "common/test_util.h" +#include "test_main.h" +#include "test_util.h" #if defined(_MSC_VER) && _MSC_VER >= 1900 #include <crtdbg.h> diff --git a/src/common/test_main.h b/test/test_main.h similarity index 100% rename from src/common/test_main.h rename to test/test_main.h diff --git a/src/common/test_util.c b/test/test_util.c similarity index 98% rename from src/common/test_util.c rename to test/test_util.c index f2782f83c..2b193d9c1 100644 --- a/src/common/test_util.c +++ b/test/test_util.c @@ -15,7 +15,7 @@ * limitations under the License. */ -#include "common/test_util.h" +#include "test_util.h" #include <ctype.h> #include <stdio.h> diff --git a/src/common/test_util.h b/test/test_util.h similarity index 100% rename from src/common/test_util.h rename to test/test_util.h diff --git a/test/unit_test.c b/test/unit_test.c index f5e055235..bc84c0849 100644 --- a/test/unit_test.c +++ b/test/unit_test.c @@ -17,11 +17,12 @@ #include "unit_test.h" -#include "common/cs_md5.h" -#include "common/test_main.h" -#include "common/test_util.h" #include "mongoose.h" -#include "src/mg_internal.h" + +#include "common/cs_md5.h" +#include "../src/mg_internal.h" +#include "test_main.h" +#include "test_util.h" #if defined(__STDC_VERSION__) && __STDC_VERSION__ < 199901L && !defined(WIN32) #define __func__ "" diff --git a/tools/README.md b/tools/README.md index b4e14a12e..6e1b14e43 100644 --- a/tools/README.md +++ b/tools/README.md @@ -8,8 +8,8 @@ This directory contains utilities to split and re-constitute amalgamated files. Here's how `mongoose.c` can be split into its consituent parts: ``` $ tools/unamalgam.py mongoose.c -=> mongoose/src/internal.h -=> common/cs_dbg.h +=> src/mg_internal.h +=> src/common/mg_mem.h ... ``` @@ -20,3 +20,5 @@ $ tools/amalgam.py --prefix=MG --public-header=mongoose.h $(cat mongoose.c.manif ``` The same applies to `mongoose.h`, except `--public-header` should be omitted during amalgamation. + +`tools/amalgam.sh` can be used to assemble `mongoose.c` and `mongoose.h`. diff --git a/tools/amalgam.py b/tools/amalgam.py index 0c931d8ea..8fbe35e69 100755 --- a/tools/amalgam.py +++ b/tools/amalgam.py @@ -172,8 +172,11 @@ if sys.platform == "win32": if args.license: - with open(args.license) as f: - print(f.read()) + print('/*') + for l in open(args.license): + print((' * %s' % l.rstrip()).rstrip()) + print(' */') + print('') if args.public: print('#include "%s"' % args.public) diff --git a/tools/amalgam.sh b/tools/amalgam.sh new file mode 100755 index 000000000..7159dccf7 --- /dev/null +++ b/tools/amalgam.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +set -x -e + +tools/amalgam.py --prefix=MG --license=LICENSE $(cat src/mongoose.h.manifest) > mongoose.h +tools/amalgam.py --prefix=MG --public-header=mongoose.h --license=LICENSE $(cat src/mongoose.c.manifest) > mongoose.c diff --git a/tools/unamalgam.py b/tools/unamalgam.py index 2fd6a41eb..347c6acfa 100755 --- a/tools/unamalgam.py +++ b/tools/unamalgam.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import sys import re import os @@ -33,11 +33,11 @@ with open(fname) as f: # open next file for writing ofile = open(cur_src, "w") - print >>sys.stderr, '=> %s' % cur_src + print('=> %s' % cur_src, file=sys.stderr) manifest.append(cur_src) next(f) elif ofile: ofile.write(clean(l)) -m = open('%s.manifest' % os.path.basename(fname), 'w') -print >>m, '\n'.join(manifest) +with open('src/%s.manifest' % os.path.basename(fname), 'w') as m: + print('\n'.join(manifest), file=m) -- GitLab