diff --git a/Boot/MDK-ARM/Listings/caiic_boot.map b/Boot/MDK-ARM/Listings/caiic_boot.map index 61154d7..4fb211a 100644 --- a/Boot/MDK-ARM/Listings/caiic_boot.map +++ b/Boot/MDK-ARM/Listings/caiic_boot.map @@ -31,9 +31,14 @@ Section Cross References system_n32wb03x.o(i.read_flash_ID) refers to system_n32wb03x.o(i.__set_PRIMASK) for __set_PRIMASK system_n32wb03x.o(i.read_flash_ID) refers to system_n32wb03x.o(.constdata) for CMD_RDID system_n32wb03x.o(i.system_delay_n_10us) refers to system_n32wb03x.o(.emb_text) for system_delay_cycles + main.o(i.boot_dl_strap_active) refers to n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) for RCC_EnableAPB2PeriphClk + main.o(i.boot_dl_strap_active) refers to n32wb03x_gpio.o(i.GPIO_InitStruct) for GPIO_InitStruct + main.o(i.boot_dl_strap_active) refers to n32wb03x_gpio.o(i.GPIO_InitPeripheral) for GPIO_InitPeripheral + main.o(i.boot_dl_strap_active) refers to n32wb03x_gpio.o(i.GPIO_ReadInputDataBit) for GPIO_ReadInputDataBit main.o(i.main) refers to boot_crc32.o(i.caiic_crc32) for caiic_crc32 main.o(i.main) refers to boot_usart.o(i.boot_usart_init) for boot_usart_init main.o(i.main) refers to main.o(i.puts_boot) for puts_boot + main.o(i.main) refers to main.o(i.boot_dl_strap_active) for boot_dl_strap_active main.o(i.main) refers to boot_usart.o(i.boot_millis) for boot_millis main.o(i.main) refers to boot_usart.o(i.boot_usart_read) for boot_usart_read main.o(i.main) refers to main.o(i.image_sane) for image_sane @@ -79,6 +84,9 @@ Section Cross References boot_cli.o(i.CmdUartInfo) refers to boot_cli.o(i.cli_write) for cli_write boot_cli.o(i.CmdVersion) refers to boot_cli.o(i.cli_printf) for cli_printf boot_cli.o(i.CmdVersion) refers to system_n32wb03x.o(.data) for SystemCoreClock + boot_cli.o(i.boot_cli_redraw) refers to strlen.o(.text) for strlen + boot_cli.o(i.boot_cli_redraw) refers to boot_cli.o(i.cli_write) for cli_write + boot_cli.o(i.boot_cli_redraw) refers to boot_usart.o(i.boot_usart_write) for boot_usart_write boot_cli.o(i.boot_cli_run) refers to boot_cli.o(i.cli_write) for cli_write boot_cli.o(i.boot_cli_run) refers to app_ota.o(i.app_ota_reset_poll) for app_ota_reset_poll boot_cli.o(i.boot_cli_run) refers to boot_usart.o(i.boot_millis) for boot_millis @@ -86,10 +94,19 @@ Section Cross References boot_cli.o(i.boot_cli_run) refers to boot_usart.o(i.boot_usart_read) for boot_usart_read boot_cli.o(i.boot_cli_run) refers to app_ota.o(i.app_ota_chan_rx_uart) for app_ota_chan_rx_uart boot_cli.o(i.boot_cli_run) refers to boot_cli.o(i.cli_exec_line) for cli_exec_line + boot_cli.o(i.boot_cli_run) refers to boot_cli.o(i.boot_cli_tab_complete) for boot_cli_tab_complete boot_cli.o(i.boot_cli_run) refers to boot_usart.o(i.boot_usart_write) for boot_usart_write boot_cli.o(i.boot_cli_run) refers to boot_cli.o(.conststring) for .conststring boot_cli.o(i.boot_cli_run) refers to boot_cli.o(.data) for s_otaMode boot_cli.o(i.boot_cli_run) refers to boot_cli.o(.bss) for s_line + boot_cli.o(i.boot_cli_tab_complete) refers to memchr.o(.text) for memchr + boot_cli.o(i.boot_cli_tab_complete) refers to strncmp.o(.text) for strncmp + boot_cli.o(i.boot_cli_tab_complete) refers to strcpy.o(.text) for strcpy + boot_cli.o(i.boot_cli_tab_complete) refers to strlen.o(.text) for strlen + boot_cli.o(i.boot_cli_tab_complete) refers to boot_usart.o(i.boot_usart_write) for boot_usart_write + boot_cli.o(i.boot_cli_tab_complete) refers to boot_cli.o(i.cli_write) for cli_write + boot_cli.o(i.boot_cli_tab_complete) refers to boot_cli.o(i.boot_cli_redraw) for boot_cli_redraw + boot_cli.o(i.boot_cli_tab_complete) refers to boot_cli.o(.constdata) for s_cmds boot_cli.o(i.cli_exec_line) refers to strcmp.o(.text) for strcmp boot_cli.o(i.cli_exec_line) refers to boot_cli.o(i.cli_printf) for cli_printf boot_cli.o(i.cli_exec_line) refers to boot_cli.o(.constdata) for s_cmds @@ -318,7 +335,6 @@ Removing Unused input sections from the image. Removing n32wb03x_gpio.o(i.GPIO_DeInit), (68 bytes). Removing n32wb03x_gpio.o(i.GPIO_DeInitPin), (126 bytes). Removing n32wb03x_gpio.o(i.GPIO_ReadInputData), (8 bytes). - Removing n32wb03x_gpio.o(i.GPIO_ReadInputDataBit), (20 bytes). Removing n32wb03x_gpio.o(i.GPIO_ReadOutputData), (8 bytes). Removing n32wb03x_gpio.o(i.GPIO_ReadOutputDataBit), (20 bytes). Removing n32wb03x_gpio.o(i.GPIO_ResetBits), (4 bytes). @@ -361,7 +377,7 @@ Removing Unused input sections from the image. Removing n32wb03x_qflash.o(i.Qflash_Read), (68 bytes). Removing n32wb03x_gpio.o(i.__ARM_common_switch8), (28 bytes). -98 unused section(s) (total 3926 bytes) removed from the image. +97 unused section(s) (total 3906 bytes) removed from the image. ============================================================================== @@ -371,43 +387,46 @@ Image Symbol Table Symbol Name Value Ov Type Size Object(Section) - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isgraph_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalnum_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalpha_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isblank_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 iscntrl_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isdigit_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isgraph_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isupper_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 islower_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isprint_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ispunct_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isxdigit_o.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE ../clib/microlib/errno.c 0x00000000 Number 0 errno.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE + ../clib/microlib/string/memchr.c 0x00000000 Number 0 memchr.o ABSOLUTE ../clib/microlib/string/memcmp.c 0x00000000 Number 0 memcmp.o ABSOLUTE ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE ../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE ../clib/microlib/string/strcmp.c 0x00000000 Number 0 strcmp.o ABSOLUTE + ../clib/microlib/string/strcpy.c 0x00000000 Number 0 strcpy.o ABSOLUTE ../clib/microlib/string/strlen.c 0x00000000 Number 0 strlen.o ABSOLUTE - ../clib/scanf.c 0x00000000 Number 0 _strtoul.o ABSOLUTE - ../clib/scanf.c 0x00000000 Number 0 _chval.o ABSOLUTE + ../clib/microlib/string/strncmp.c 0x00000000 Number 0 strncmp.o ABSOLUTE ../clib/scanf.c 0x00000000 Number 0 strtoul.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 _chval.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 _strtoul.o ABSOLUTE ..\..\mcm-ddc-ble\src\app_bootset.c 0x00000000 Number 0 app_bootset.o ABSOLUTE ..\..\mcm-ddc-ble\src\app_ota.c 0x00000000 Number 0 app_ota.o ABSOLUTE ..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\CMSIS\device\startup\startup_n32wb03x.s 0x00000000 Number 0 startup_n32wb03x.o ABSOLUTE @@ -453,134 +472,144 @@ Image Symbol Table .text 0x01000150 Section 0 memseta.o(.text) .text 0x01000174 Section 0 strlen.o(.text) .text 0x01000182 Section 0 strcmp.o(.text) - .text 0x0100019e Section 0 memcmp.o(.text) - .text 0x010001b8 Section 0 strtoul.o(.text) - .text 0x01000230 Section 0 ctype_o.o(.text) - .text 0x01000238 Section 0 _strtoul.o(.text) - .text 0x010002e0 Section 36 init.o(.text) - .text 0x01000304 Section 0 _chval.o(.text) - i.AppBootset_CmdAppswitch 0x01000324 Section 0 app_bootset.o(i.AppBootset_CmdAppswitch) - i.AppBootset_CmdBsdump 0x010005fc Section 0 app_bootset.o(i.AppBootset_CmdBsdump) - i.AppBootset_CmdBsset 0x0100061c Section 0 app_bootset.o(i.AppBootset_CmdBsset) - i.CmdDevInfo 0x01000914 Section 0 boot_cli.o(i.CmdDevInfo) - CmdDevInfo 0x01000915 Thumb Code 90 boot_cli.o(i.CmdDevInfo) - i.CmdHelp 0x010009f4 Section 0 boot_cli.o(i.CmdHelp) - CmdHelp 0x010009f5 Thumb Code 114 boot_cli.o(i.CmdHelp) - i.CmdOta 0x01000aa8 Section 0 boot_cli.o(i.CmdOta) - CmdOta 0x01000aa9 Thumb Code 20 boot_cli.o(i.CmdOta) - i.CmdReset 0x01000ac4 Section 0 boot_cli.o(i.CmdReset) - CmdReset 0x01000ac5 Thumb Code 34 boot_cli.o(i.CmdReset) - i.CmdUartInfo 0x01000b00 Section 0 boot_cli.o(i.CmdUartInfo) - CmdUartInfo 0x01000b01 Thumb Code 26 boot_cli.o(i.CmdUartInfo) - i.CmdVersion 0x01000bb0 Section 0 boot_cli.o(i.CmdVersion) - CmdVersion 0x01000bb1 Thumb Code 26 boot_cli.o(i.CmdVersion) - i.DMA_DeInit 0x01000c24 Section 0 n32wb03x_dma.o(i.DMA_DeInit) - i.DMA_EnableChannel 0x01000cc4 Section 0 n32wb03x_dma.o(i.DMA_EnableChannel) - i.DMA_GetCurrDataCounter 0x01000ce0 Section 0 n32wb03x_dma.o(i.DMA_GetCurrDataCounter) - i.DMA_Init 0x01000ce8 Section 0 n32wb03x_dma.o(i.DMA_Init) - i.DMA_RequestRemap 0x01000d28 Section 0 n32wb03x_dma.o(i.DMA_RequestRemap) - i.GPIO_InitPeripheral 0x01000d38 Section 0 n32wb03x_gpio.o(i.GPIO_InitPeripheral) - i.GPIO_InitStruct 0x01000e40 Section 0 n32wb03x_gpio.o(i.GPIO_InitStruct) - i.OTPTrim_Read 0x01000e5c Section 0 system_n32wb03x.o(i.OTPTrim_Read) - i.Qflash_Erase_Sector 0x01000f28 Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector) - i.Qflash_Init 0x01000f64 Section 0 n32wb03x_qflash.o(i.Qflash_Init) - i.Qflash_Write 0x01000f9c Section 0 n32wb03x_qflash.o(i.Qflash_Write) - i.RCC_EnableAHBPeriphClk 0x01000fe0 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) - i.RCC_EnableAPB2PeriphClk 0x01001000 Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) - i.RCC_GetClocksFreqValue 0x01001020 Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) - i.RCC_HsiCalib 0x010010c4 Section 0 system_n32wb03x.o(i.RCC_HsiCalib) - RCC_HsiCalib 0x010010c5 Thumb Code 296 system_n32wb03x.o(i.RCC_HsiCalib) - i.SystemInit 0x010011f4 Section 0 system_n32wb03x.o(i.SystemInit) - i.SystemTrimValueRead 0x01001310 Section 0 system_n32wb03x.o(i.SystemTrimValueRead) - i.USART_Enable 0x01001324 Section 0 n32wb03x_usart.o(i.USART_Enable) - i.USART_EnableDMA 0x01001344 Section 0 n32wb03x_usart.o(i.USART_EnableDMA) - i.USART_GetFlagStatus 0x01001358 Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus) - i.USART_Init 0x01001378 Section 0 n32wb03x_usart.o(i.USART_Init) - i.USART_SendData 0x0100142c Section 0 n32wb03x_usart.o(i.USART_SendData) - i.__aeabi_errno_addr 0x01001434 Section 0 errno.o(i.__aeabi_errno_addr) - i.__scatterload_copy 0x0100143c Section 14 handlers.o(i.__scatterload_copy) - i.__scatterload_null 0x0100144a Section 2 handlers.o(i.__scatterload_null) - i.__scatterload_zeroinit 0x0100144c Section 14 handlers.o(i.__scatterload_zeroinit) - i.__set_PRIMASK 0x0100145a Section 0 system_n32wb03x.o(i.__set_PRIMASK) - __set_PRIMASK 0x0100145b Thumb Code 6 system_n32wb03x.o(i.__set_PRIMASK) - i.__set_PRIMASK 0x01001460 Section 0 n32wb03x_qflash.o(i.__set_PRIMASK) - __set_PRIMASK 0x01001461 Thumb Code 6 n32wb03x_qflash.o(i.__set_PRIMASK) - i.app_ota_abort 0x01001468 Section 0 app_ota.o(i.app_ota_abort) - i.app_ota_chan_idle 0x010014a4 Section 0 app_ota.o(i.app_ota_chan_idle) - i.app_ota_chan_rx 0x010014b8 Section 0 app_ota.o(i.app_ota_chan_rx) - i.app_ota_chan_rx_uart 0x010015f8 Section 0 app_ota.o(i.app_ota_chan_rx_uart) - i.app_ota_handle_frame 0x0100161c Section 0 app_ota.o(i.app_ota_handle_frame) - i.app_ota_reset_poll 0x01001698 Section 0 app_ota.o(i.app_ota_reset_poll) - i.boot_cli_run 0x010016f4 Section 0 boot_cli.o(i.boot_cli_run) - i.boot_delay_ms 0x0100183c Section 0 boot_usart.o(i.boot_delay_ms) - i.boot_millis 0x01001854 Section 0 boot_usart.o(i.boot_millis) - i.boot_usart_init 0x0100187c Section 0 boot_usart.o(i.boot_usart_init) - i.boot_usart_read 0x0100198c Section 0 boot_usart.o(i.boot_usart_read) - i.boot_usart_rx_head 0x010019cc Section 0 boot_usart.o(i.boot_usart_rx_head) - boot_usart_rx_head 0x010019cd Thumb Code 18 boot_usart.o(i.boot_usart_rx_head) - i.boot_usart_write 0x010019e4 Section 0 boot_usart.o(i.boot_usart_write) - i.bootset_commit 0x01001a14 Section 0 app_bootset.o(i.bootset_commit) - bootset_commit 0x01001a15 Thumb Code 74 app_bootset.o(i.bootset_commit) - i.bootset_crc 0x01001a68 Section 0 app_bootset.o(i.bootset_crc) - bootset_crc 0x01001a69 Thumb Code 14 app_bootset.o(i.bootset_crc) - i.bootset_ensure_qflash 0x01001a78 Section 0 app_bootset.o(i.bootset_ensure_qflash) - bootset_ensure_qflash 0x01001a79 Thumb Code 22 app_bootset.o(i.bootset_ensure_qflash) - i.bootset_print 0x01001a94 Section 0 app_bootset.o(i.bootset_print) - bootset_print 0x01001a95 Thumb Code 98 app_bootset.o(i.bootset_print) - i.bootset_valid 0x01001c00 Section 0 app_bootset.o(i.bootset_valid) - bootset_valid 0x01001c01 Thumb Code 32 app_bootset.o(i.bootset_valid) - i.caiic_crc32 0x01001c24 Section 0 boot_crc32.o(i.caiic_crc32) - i.cli_exec_line 0x01001c68 Section 0 boot_cli.o(i.cli_exec_line) - cli_exec_line 0x01001c69 Thumb Code 162 boot_cli.o(i.cli_exec_line) - i.cli_printf 0x01001d34 Section 0 boot_cli.o(i.cli_printf) - i.cli_write 0x01001ed0 Section 0 boot_cli.o(i.cli_write) - i.image_sane 0x01001ee8 Section 0 main.o(i.image_sane) - image_sane 0x01001ee9 Thumb Code 44 main.o(i.image_sane) - i.jump_to_app 0x01001f1c Section 0 main.o(i.jump_to_app) - jump_to_app 0x01001f1d Thumb Code 30 main.o(i.jump_to_app) - i.main 0x01001f40 Section 0 main.o(i.main) - i.ota_crc16 0x010020c0 Section 0 app_ota.o(i.ota_crc16) - ota_crc16 0x010020c1 Thumb Code 68 app_ota.o(i.ota_crc16) - i.ota_erase_up_to 0x0100210c Section 0 app_ota.o(i.ota_erase_up_to) - ota_erase_up_to 0x0100210d Thumb Code 54 app_ota.o(i.ota_erase_up_to) - i.ota_on_begin 0x0100214c Section 0 app_ota.o(i.ota_on_begin) - ota_on_begin 0x0100214d Thumb Code 294 app_ota.o(i.ota_on_begin) - i.ota_on_data 0x010022bc Section 0 app_ota.o(i.ota_on_data) - ota_on_data 0x010022bd Thumb Code 396 app_ota.o(i.ota_on_data) - i.ota_on_end 0x01002464 Section 0 app_ota.o(i.ota_on_end) - ota_on_end 0x01002465 Thumb Code 326 app_ota.o(i.ota_on_end) - i.ota_program 0x010025d4 Section 0 app_ota.o(i.ota_program) - ota_program 0x010025d5 Thumb Code 46 app_ota.o(i.ota_program) - i.ota_rd32 0x0100260c Section 0 app_ota.o(i.ota_rd32) - ota_rd32 0x0100260d Thumb Code 24 app_ota.o(i.ota_rd32) - i.ota_respond 0x01002624 Section 0 app_ota.o(i.ota_respond) - ota_respond 0x01002625 Thumb Code 118 app_ota.o(i.ota_respond) - i.ota_uart_sink 0x010026a0 Section 0 app_ota.o(i.ota_uart_sink) - ota_uart_sink 0x010026a1 Thumb Code 22 app_ota.o(i.ota_uart_sink) - i.ota_update_bootsetting 0x010026bc Section 0 app_ota.o(i.ota_update_bootsetting) - ota_update_bootsetting 0x010026bd Thumb Code 174 app_ota.o(i.ota_update_bootsetting) - i.parse_u32 0x01002788 Section 0 app_bootset.o(i.parse_u32) - parse_u32 0x01002789 Thumb Code 46 app_bootset.o(i.parse_u32) - i.puts_boot 0x010027b6 Section 0 main.o(i.puts_boot) - puts_boot 0x010027b7 Thumb Code 24 main.o(i.puts_boot) - i.read_flash_ID 0x010027d0 Section 0 system_n32wb03x.o(i.read_flash_ID) - read_flash_ID 0x010027d1 Thumb Code 62 system_n32wb03x.o(i.read_flash_ID) - i.str_pad 0x01002814 Section 0 boot_cli.o(i.str_pad) - str_pad 0x01002815 Thumb Code 78 boot_cli.o(i.str_pad) - i.u32_to_str 0x01002862 Section 0 boot_cli.o(i.u32_to_str) - u32_to_str 0x01002863 Thumb Code 108 boot_cli.o(i.u32_to_str) - .constdata 0x010028ce Section 472 system_n32wb03x.o(.constdata) - .constdata 0x01002aa8 Section 108 boot_cli.o(.constdata) - s_cmds 0x01002aa8 Data 108 boot_cli.o(.constdata) - .constdata 0x01002b14 Section 12 n32wb03x_rcc.o(.constdata) - s_ApbPresTable 0x01002b14 Data 8 n32wb03x_rcc.o(.constdata) - s_AhbPresTable 0x01002b1c Data 4 n32wb03x_rcc.o(.constdata) - .constdata 0x01002b20 Section 804 n32wb03x_qflash.o(.constdata) - .constdata 0x01002e44 Section 129 ctype_o.o(.constdata) - .constdata 0x01002ec8 Section 4 ctype_o.o(.constdata) - table 0x01002ec8 Data 4 ctype_o.o(.constdata) - .conststring 0x01002ecc Section 666 boot_cli.o(.conststring) - .conststring 0x01003168 Section 145 app_bootset.o(.conststring) + .text 0x0100019e Section 0 memchr.o(.text) + .text 0x010001b2 Section 0 memcmp.o(.text) + .text 0x010001cc Section 0 strcpy.o(.text) + .text 0x010001de Section 0 strncmp.o(.text) + .text 0x010001fc Section 0 strtoul.o(.text) + .text 0x01000274 Section 0 ctype_o.o(.text) + .text 0x0100027c Section 0 _strtoul.o(.text) + .text 0x01000324 Section 36 init.o(.text) + .text 0x01000348 Section 0 _chval.o(.text) + i.AppBootset_CmdAppswitch 0x01000368 Section 0 app_bootset.o(i.AppBootset_CmdAppswitch) + i.AppBootset_CmdBsdump 0x01000640 Section 0 app_bootset.o(i.AppBootset_CmdBsdump) + i.AppBootset_CmdBsset 0x01000660 Section 0 app_bootset.o(i.AppBootset_CmdBsset) + i.CmdDevInfo 0x01000958 Section 0 boot_cli.o(i.CmdDevInfo) + CmdDevInfo 0x01000959 Thumb Code 90 boot_cli.o(i.CmdDevInfo) + i.CmdHelp 0x01000a38 Section 0 boot_cli.o(i.CmdHelp) + CmdHelp 0x01000a39 Thumb Code 114 boot_cli.o(i.CmdHelp) + i.CmdOta 0x01000aec Section 0 boot_cli.o(i.CmdOta) + CmdOta 0x01000aed Thumb Code 20 boot_cli.o(i.CmdOta) + i.CmdReset 0x01000b08 Section 0 boot_cli.o(i.CmdReset) + CmdReset 0x01000b09 Thumb Code 34 boot_cli.o(i.CmdReset) + i.CmdUartInfo 0x01000b44 Section 0 boot_cli.o(i.CmdUartInfo) + CmdUartInfo 0x01000b45 Thumb Code 26 boot_cli.o(i.CmdUartInfo) + i.CmdVersion 0x01000bf4 Section 0 boot_cli.o(i.CmdVersion) + CmdVersion 0x01000bf5 Thumb Code 26 boot_cli.o(i.CmdVersion) + i.DMA_DeInit 0x01000c68 Section 0 n32wb03x_dma.o(i.DMA_DeInit) + i.DMA_EnableChannel 0x01000d08 Section 0 n32wb03x_dma.o(i.DMA_EnableChannel) + i.DMA_GetCurrDataCounter 0x01000d24 Section 0 n32wb03x_dma.o(i.DMA_GetCurrDataCounter) + i.DMA_Init 0x01000d2c Section 0 n32wb03x_dma.o(i.DMA_Init) + i.DMA_RequestRemap 0x01000d6c Section 0 n32wb03x_dma.o(i.DMA_RequestRemap) + i.GPIO_InitPeripheral 0x01000d7c Section 0 n32wb03x_gpio.o(i.GPIO_InitPeripheral) + i.GPIO_InitStruct 0x01000e84 Section 0 n32wb03x_gpio.o(i.GPIO_InitStruct) + i.GPIO_ReadInputDataBit 0x01000ea0 Section 0 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit) + i.OTPTrim_Read 0x01000eb4 Section 0 system_n32wb03x.o(i.OTPTrim_Read) + i.Qflash_Erase_Sector 0x01000f80 Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector) + i.Qflash_Init 0x01000fbc Section 0 n32wb03x_qflash.o(i.Qflash_Init) + i.Qflash_Write 0x01000ff4 Section 0 n32wb03x_qflash.o(i.Qflash_Write) + i.RCC_EnableAHBPeriphClk 0x01001038 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) + i.RCC_EnableAPB2PeriphClk 0x01001058 Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) + i.RCC_GetClocksFreqValue 0x01001078 Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) + i.RCC_HsiCalib 0x0100111c Section 0 system_n32wb03x.o(i.RCC_HsiCalib) + RCC_HsiCalib 0x0100111d Thumb Code 296 system_n32wb03x.o(i.RCC_HsiCalib) + i.SystemInit 0x0100124c Section 0 system_n32wb03x.o(i.SystemInit) + i.SystemTrimValueRead 0x01001368 Section 0 system_n32wb03x.o(i.SystemTrimValueRead) + i.USART_Enable 0x0100137c Section 0 n32wb03x_usart.o(i.USART_Enable) + i.USART_EnableDMA 0x0100139c Section 0 n32wb03x_usart.o(i.USART_EnableDMA) + i.USART_GetFlagStatus 0x010013b0 Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus) + i.USART_Init 0x010013d0 Section 0 n32wb03x_usart.o(i.USART_Init) + i.USART_SendData 0x01001484 Section 0 n32wb03x_usart.o(i.USART_SendData) + i.__aeabi_errno_addr 0x0100148c Section 0 errno.o(i.__aeabi_errno_addr) + i.__scatterload_copy 0x01001494 Section 14 handlers.o(i.__scatterload_copy) + i.__scatterload_null 0x010014a2 Section 2 handlers.o(i.__scatterload_null) + i.__scatterload_zeroinit 0x010014a4 Section 14 handlers.o(i.__scatterload_zeroinit) + i.__set_PRIMASK 0x010014b2 Section 0 system_n32wb03x.o(i.__set_PRIMASK) + __set_PRIMASK 0x010014b3 Thumb Code 6 system_n32wb03x.o(i.__set_PRIMASK) + i.__set_PRIMASK 0x010014b8 Section 0 n32wb03x_qflash.o(i.__set_PRIMASK) + __set_PRIMASK 0x010014b9 Thumb Code 6 n32wb03x_qflash.o(i.__set_PRIMASK) + i.app_ota_abort 0x010014c0 Section 0 app_ota.o(i.app_ota_abort) + i.app_ota_chan_idle 0x010014fc Section 0 app_ota.o(i.app_ota_chan_idle) + i.app_ota_chan_rx 0x01001510 Section 0 app_ota.o(i.app_ota_chan_rx) + i.app_ota_chan_rx_uart 0x01001650 Section 0 app_ota.o(i.app_ota_chan_rx_uart) + i.app_ota_handle_frame 0x01001674 Section 0 app_ota.o(i.app_ota_handle_frame) + i.app_ota_reset_poll 0x010016f0 Section 0 app_ota.o(i.app_ota_reset_poll) + i.boot_cli_redraw 0x0100174c Section 0 boot_cli.o(i.boot_cli_redraw) + boot_cli_redraw 0x0100174d Thumb Code 60 boot_cli.o(i.boot_cli_redraw) + i.boot_cli_run 0x01001798 Section 0 boot_cli.o(i.boot_cli_run) + i.boot_cli_tab_complete 0x010018f4 Section 0 boot_cli.o(i.boot_cli_tab_complete) + boot_cli_tab_complete 0x010018f5 Thumb Code 306 boot_cli.o(i.boot_cli_tab_complete) + i.boot_delay_ms 0x01001a38 Section 0 boot_usart.o(i.boot_delay_ms) + i.boot_dl_strap_active 0x01001a50 Section 0 main.o(i.boot_dl_strap_active) + boot_dl_strap_active 0x01001a51 Thumb Code 58 main.o(i.boot_dl_strap_active) + i.boot_millis 0x01001a90 Section 0 boot_usart.o(i.boot_millis) + i.boot_usart_init 0x01001ab8 Section 0 boot_usart.o(i.boot_usart_init) + i.boot_usart_read 0x01001bc8 Section 0 boot_usart.o(i.boot_usart_read) + i.boot_usart_rx_head 0x01001c08 Section 0 boot_usart.o(i.boot_usart_rx_head) + boot_usart_rx_head 0x01001c09 Thumb Code 18 boot_usart.o(i.boot_usart_rx_head) + i.boot_usart_write 0x01001c20 Section 0 boot_usart.o(i.boot_usart_write) + i.bootset_commit 0x01001c50 Section 0 app_bootset.o(i.bootset_commit) + bootset_commit 0x01001c51 Thumb Code 74 app_bootset.o(i.bootset_commit) + i.bootset_crc 0x01001ca4 Section 0 app_bootset.o(i.bootset_crc) + bootset_crc 0x01001ca5 Thumb Code 14 app_bootset.o(i.bootset_crc) + i.bootset_ensure_qflash 0x01001cb4 Section 0 app_bootset.o(i.bootset_ensure_qflash) + bootset_ensure_qflash 0x01001cb5 Thumb Code 22 app_bootset.o(i.bootset_ensure_qflash) + i.bootset_print 0x01001cd0 Section 0 app_bootset.o(i.bootset_print) + bootset_print 0x01001cd1 Thumb Code 98 app_bootset.o(i.bootset_print) + i.bootset_valid 0x01001e3c Section 0 app_bootset.o(i.bootset_valid) + bootset_valid 0x01001e3d Thumb Code 32 app_bootset.o(i.bootset_valid) + i.caiic_crc32 0x01001e60 Section 0 boot_crc32.o(i.caiic_crc32) + i.cli_exec_line 0x01001ea4 Section 0 boot_cli.o(i.cli_exec_line) + cli_exec_line 0x01001ea5 Thumb Code 162 boot_cli.o(i.cli_exec_line) + i.cli_printf 0x01001f70 Section 0 boot_cli.o(i.cli_printf) + i.cli_write 0x0100210c Section 0 boot_cli.o(i.cli_write) + i.image_sane 0x01002124 Section 0 main.o(i.image_sane) + image_sane 0x01002125 Thumb Code 44 main.o(i.image_sane) + i.jump_to_app 0x01002158 Section 0 main.o(i.jump_to_app) + jump_to_app 0x01002159 Thumb Code 30 main.o(i.jump_to_app) + i.main 0x0100217c Section 0 main.o(i.main) + i.ota_crc16 0x01002340 Section 0 app_ota.o(i.ota_crc16) + ota_crc16 0x01002341 Thumb Code 68 app_ota.o(i.ota_crc16) + i.ota_erase_up_to 0x0100238c Section 0 app_ota.o(i.ota_erase_up_to) + ota_erase_up_to 0x0100238d Thumb Code 54 app_ota.o(i.ota_erase_up_to) + i.ota_on_begin 0x010023cc Section 0 app_ota.o(i.ota_on_begin) + ota_on_begin 0x010023cd Thumb Code 294 app_ota.o(i.ota_on_begin) + i.ota_on_data 0x0100253c Section 0 app_ota.o(i.ota_on_data) + ota_on_data 0x0100253d Thumb Code 396 app_ota.o(i.ota_on_data) + i.ota_on_end 0x010026e4 Section 0 app_ota.o(i.ota_on_end) + ota_on_end 0x010026e5 Thumb Code 326 app_ota.o(i.ota_on_end) + i.ota_program 0x01002854 Section 0 app_ota.o(i.ota_program) + ota_program 0x01002855 Thumb Code 46 app_ota.o(i.ota_program) + i.ota_rd32 0x0100288c Section 0 app_ota.o(i.ota_rd32) + ota_rd32 0x0100288d Thumb Code 24 app_ota.o(i.ota_rd32) + i.ota_respond 0x010028a4 Section 0 app_ota.o(i.ota_respond) + ota_respond 0x010028a5 Thumb Code 118 app_ota.o(i.ota_respond) + i.ota_uart_sink 0x01002920 Section 0 app_ota.o(i.ota_uart_sink) + ota_uart_sink 0x01002921 Thumb Code 22 app_ota.o(i.ota_uart_sink) + i.ota_update_bootsetting 0x0100293c Section 0 app_ota.o(i.ota_update_bootsetting) + ota_update_bootsetting 0x0100293d Thumb Code 174 app_ota.o(i.ota_update_bootsetting) + i.parse_u32 0x01002a08 Section 0 app_bootset.o(i.parse_u32) + parse_u32 0x01002a09 Thumb Code 46 app_bootset.o(i.parse_u32) + i.puts_boot 0x01002a36 Section 0 main.o(i.puts_boot) + puts_boot 0x01002a37 Thumb Code 24 main.o(i.puts_boot) + i.read_flash_ID 0x01002a50 Section 0 system_n32wb03x.o(i.read_flash_ID) + read_flash_ID 0x01002a51 Thumb Code 62 system_n32wb03x.o(i.read_flash_ID) + i.str_pad 0x01002a94 Section 0 boot_cli.o(i.str_pad) + str_pad 0x01002a95 Thumb Code 78 boot_cli.o(i.str_pad) + i.u32_to_str 0x01002ae2 Section 0 boot_cli.o(i.u32_to_str) + u32_to_str 0x01002ae3 Thumb Code 108 boot_cli.o(i.u32_to_str) + .constdata 0x01002b4e Section 472 system_n32wb03x.o(.constdata) + .constdata 0x01002d28 Section 108 boot_cli.o(.constdata) + s_cmds 0x01002d28 Data 108 boot_cli.o(.constdata) + .constdata 0x01002d94 Section 12 n32wb03x_rcc.o(.constdata) + s_ApbPresTable 0x01002d94 Data 8 n32wb03x_rcc.o(.constdata) + s_AhbPresTable 0x01002d9c Data 4 n32wb03x_rcc.o(.constdata) + .constdata 0x01002da0 Section 804 n32wb03x_qflash.o(.constdata) + .constdata 0x010030c4 Section 129 ctype_o.o(.constdata) + .constdata 0x01003148 Section 4 ctype_o.o(.constdata) + table 0x01003148 Data 4 ctype_o.o(.constdata) + .conststring 0x0100314c Section 682 boot_cli.o(.conststring) + .conststring 0x010033f8 Section 145 app_bootset.o(.conststring) .data 0x20004000 Section 4 system_n32wb03x.o(.data) .data 0x20004004 Section 8 boot_usart.o(.data) s_rxTail 0x20004004 Data 2 boot_usart.o(.data) @@ -705,64 +734,68 @@ Image Symbol Table _memset$wrapper 0x01000163 Thumb Code 18 memseta.o(.text) strlen 0x01000175 Thumb Code 14 strlen.o(.text) strcmp 0x01000183 Thumb Code 28 strcmp.o(.text) - memcmp 0x0100019f Thumb Code 26 memcmp.o(.text) - strtoul 0x010001b9 Thumb Code 118 strtoul.o(.text) - __rt_ctype_table 0x01000231 Thumb Code 4 ctype_o.o(.text) - _strtoul 0x01000239 Thumb Code 166 _strtoul.o(.text) - __scatterload 0x010002e1 Thumb Code 28 init.o(.text) - __scatterload_rt2 0x010002e1 Thumb Code 0 init.o(.text) - _chval 0x01000305 Thumb Code 30 _chval.o(.text) - AppBootset_CmdAppswitch 0x01000325 Thumb Code 282 app_bootset.o(i.AppBootset_CmdAppswitch) - AppBootset_CmdBsdump 0x010005fd Thumb Code 28 app_bootset.o(i.AppBootset_CmdBsdump) - AppBootset_CmdBsset 0x0100061d Thumb Code 348 app_bootset.o(i.AppBootset_CmdBsset) - DMA_DeInit 0x01000c25 Thumb Code 152 n32wb03x_dma.o(i.DMA_DeInit) - DMA_EnableChannel 0x01000cc5 Thumb Code 24 n32wb03x_dma.o(i.DMA_EnableChannel) - DMA_GetCurrDataCounter 0x01000ce1 Thumb Code 8 n32wb03x_dma.o(i.DMA_GetCurrDataCounter) - DMA_Init 0x01000ce9 Thumb Code 58 n32wb03x_dma.o(i.DMA_Init) - DMA_RequestRemap 0x01000d29 Thumb Code 16 n32wb03x_dma.o(i.DMA_RequestRemap) - GPIO_InitPeripheral 0x01000d39 Thumb Code 262 n32wb03x_gpio.o(i.GPIO_InitPeripheral) - GPIO_InitStruct 0x01000e41 Thumb Code 24 n32wb03x_gpio.o(i.GPIO_InitStruct) - OTPTrim_Read 0x01000e5d Thumb Code 192 system_n32wb03x.o(i.OTPTrim_Read) - Qflash_Erase_Sector 0x01000f29 Thumb Code 54 n32wb03x_qflash.o(i.Qflash_Erase_Sector) - Qflash_Init 0x01000f65 Thumb Code 36 n32wb03x_qflash.o(i.Qflash_Init) - Qflash_Write 0x01000f9d Thumb Code 62 n32wb03x_qflash.o(i.Qflash_Write) - RCC_EnableAHBPeriphClk 0x01000fe1 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) - RCC_EnableAPB2PeriphClk 0x01001001 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) - RCC_GetClocksFreqValue 0x01001021 Thumb Code 140 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) - SystemInit 0x010011f5 Thumb Code 250 system_n32wb03x.o(i.SystemInit) - SystemTrimValueRead 0x01001311 Thumb Code 20 system_n32wb03x.o(i.SystemTrimValueRead) - USART_Enable 0x01001325 Thumb Code 26 n32wb03x_usart.o(i.USART_Enable) - USART_EnableDMA 0x01001345 Thumb Code 20 n32wb03x_usart.o(i.USART_EnableDMA) - USART_GetFlagStatus 0x01001359 Thumb Code 30 n32wb03x_usart.o(i.USART_GetFlagStatus) - USART_Init 0x01001379 Thumb Code 162 n32wb03x_usart.o(i.USART_Init) - USART_SendData 0x0100142d Thumb Code 8 n32wb03x_usart.o(i.USART_SendData) - __aeabi_errno_addr 0x01001435 Thumb Code 4 errno.o(i.__aeabi_errno_addr) - __rt_errno_addr 0x01001435 Thumb Code 0 errno.o(i.__aeabi_errno_addr) - __scatterload_copy 0x0100143d Thumb Code 14 handlers.o(i.__scatterload_copy) - __scatterload_null 0x0100144b Thumb Code 2 handlers.o(i.__scatterload_null) - __scatterload_zeroinit 0x0100144d Thumb Code 14 handlers.o(i.__scatterload_zeroinit) - app_ota_abort 0x01001469 Thumb Code 32 app_ota.o(i.app_ota_abort) - app_ota_chan_idle 0x010014a5 Thumb Code 12 app_ota.o(i.app_ota_chan_idle) - app_ota_chan_rx 0x010014b9 Thumb Code 298 app_ota.o(i.app_ota_chan_rx) - app_ota_chan_rx_uart 0x010015f9 Thumb Code 26 app_ota.o(i.app_ota_chan_rx_uart) - app_ota_handle_frame 0x0100161d Thumb Code 106 app_ota.o(i.app_ota_handle_frame) - app_ota_reset_poll 0x01001699 Thumb Code 70 app_ota.o(i.app_ota_reset_poll) - boot_cli_run 0x010016f5 Thumb Code 220 boot_cli.o(i.boot_cli_run) - boot_delay_ms 0x0100183d Thumb Code 24 boot_usart.o(i.boot_delay_ms) - boot_millis 0x01001855 Thumb Code 30 boot_usart.o(i.boot_millis) - boot_usart_init 0x0100187d Thumb Code 238 boot_usart.o(i.boot_usart_init) - boot_usart_read 0x0100198d Thumb Code 54 boot_usart.o(i.boot_usart_read) - boot_usart_write 0x010019e5 Thumb Code 42 boot_usart.o(i.boot_usart_write) - caiic_crc32 0x01001c25 Thumb Code 62 boot_crc32.o(i.caiic_crc32) - cli_printf 0x01001d35 Thumb Code 408 boot_cli.o(i.cli_printf) - cli_write 0x01001ed1 Thumb Code 22 boot_cli.o(i.cli_write) - main 0x01001f41 Thumb Code 190 main.o(i.main) - TRIM_READ_CMD_CODE 0x010028ce Data 320 system_n32wb03x.o(.constdata) - CMD_RDID 0x01002a0e Data 152 system_n32wb03x.o(.constdata) - const_qflash_cmd 0x01002b20 Data 804 n32wb03x_qflash.o(.constdata) - __ctype_table 0x01002e44 Data 129 ctype_o.o(.constdata) - Region$$Table$$Base 0x010031fc Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x0100321c Number 0 anon$$obj.o(Region$$Table) + memchr 0x0100019f Thumb Code 20 memchr.o(.text) + memcmp 0x010001b3 Thumb Code 26 memcmp.o(.text) + strcpy 0x010001cd Thumb Code 18 strcpy.o(.text) + strncmp 0x010001df Thumb Code 30 strncmp.o(.text) + strtoul 0x010001fd Thumb Code 118 strtoul.o(.text) + __rt_ctype_table 0x01000275 Thumb Code 4 ctype_o.o(.text) + _strtoul 0x0100027d Thumb Code 166 _strtoul.o(.text) + __scatterload 0x01000325 Thumb Code 28 init.o(.text) + __scatterload_rt2 0x01000325 Thumb Code 0 init.o(.text) + _chval 0x01000349 Thumb Code 30 _chval.o(.text) + AppBootset_CmdAppswitch 0x01000369 Thumb Code 282 app_bootset.o(i.AppBootset_CmdAppswitch) + AppBootset_CmdBsdump 0x01000641 Thumb Code 28 app_bootset.o(i.AppBootset_CmdBsdump) + AppBootset_CmdBsset 0x01000661 Thumb Code 348 app_bootset.o(i.AppBootset_CmdBsset) + DMA_DeInit 0x01000c69 Thumb Code 152 n32wb03x_dma.o(i.DMA_DeInit) + DMA_EnableChannel 0x01000d09 Thumb Code 24 n32wb03x_dma.o(i.DMA_EnableChannel) + DMA_GetCurrDataCounter 0x01000d25 Thumb Code 8 n32wb03x_dma.o(i.DMA_GetCurrDataCounter) + DMA_Init 0x01000d2d Thumb Code 58 n32wb03x_dma.o(i.DMA_Init) + DMA_RequestRemap 0x01000d6d Thumb Code 16 n32wb03x_dma.o(i.DMA_RequestRemap) + GPIO_InitPeripheral 0x01000d7d Thumb Code 262 n32wb03x_gpio.o(i.GPIO_InitPeripheral) + GPIO_InitStruct 0x01000e85 Thumb Code 24 n32wb03x_gpio.o(i.GPIO_InitStruct) + GPIO_ReadInputDataBit 0x01000ea1 Thumb Code 20 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit) + OTPTrim_Read 0x01000eb5 Thumb Code 192 system_n32wb03x.o(i.OTPTrim_Read) + Qflash_Erase_Sector 0x01000f81 Thumb Code 54 n32wb03x_qflash.o(i.Qflash_Erase_Sector) + Qflash_Init 0x01000fbd Thumb Code 36 n32wb03x_qflash.o(i.Qflash_Init) + Qflash_Write 0x01000ff5 Thumb Code 62 n32wb03x_qflash.o(i.Qflash_Write) + RCC_EnableAHBPeriphClk 0x01001039 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) + RCC_EnableAPB2PeriphClk 0x01001059 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) + RCC_GetClocksFreqValue 0x01001079 Thumb Code 140 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) + SystemInit 0x0100124d Thumb Code 250 system_n32wb03x.o(i.SystemInit) + SystemTrimValueRead 0x01001369 Thumb Code 20 system_n32wb03x.o(i.SystemTrimValueRead) + USART_Enable 0x0100137d Thumb Code 26 n32wb03x_usart.o(i.USART_Enable) + USART_EnableDMA 0x0100139d Thumb Code 20 n32wb03x_usart.o(i.USART_EnableDMA) + USART_GetFlagStatus 0x010013b1 Thumb Code 30 n32wb03x_usart.o(i.USART_GetFlagStatus) + USART_Init 0x010013d1 Thumb Code 162 n32wb03x_usart.o(i.USART_Init) + USART_SendData 0x01001485 Thumb Code 8 n32wb03x_usart.o(i.USART_SendData) + __aeabi_errno_addr 0x0100148d Thumb Code 4 errno.o(i.__aeabi_errno_addr) + __rt_errno_addr 0x0100148d Thumb Code 0 errno.o(i.__aeabi_errno_addr) + __scatterload_copy 0x01001495 Thumb Code 14 handlers.o(i.__scatterload_copy) + __scatterload_null 0x010014a3 Thumb Code 2 handlers.o(i.__scatterload_null) + __scatterload_zeroinit 0x010014a5 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) + app_ota_abort 0x010014c1 Thumb Code 32 app_ota.o(i.app_ota_abort) + app_ota_chan_idle 0x010014fd Thumb Code 12 app_ota.o(i.app_ota_chan_idle) + app_ota_chan_rx 0x01001511 Thumb Code 298 app_ota.o(i.app_ota_chan_rx) + app_ota_chan_rx_uart 0x01001651 Thumb Code 26 app_ota.o(i.app_ota_chan_rx_uart) + app_ota_handle_frame 0x01001675 Thumb Code 106 app_ota.o(i.app_ota_handle_frame) + app_ota_reset_poll 0x010016f1 Thumb Code 70 app_ota.o(i.app_ota_reset_poll) + boot_cli_run 0x01001799 Thumb Code 240 boot_cli.o(i.boot_cli_run) + boot_delay_ms 0x01001a39 Thumb Code 24 boot_usart.o(i.boot_delay_ms) + boot_millis 0x01001a91 Thumb Code 30 boot_usart.o(i.boot_millis) + boot_usart_init 0x01001ab9 Thumb Code 238 boot_usart.o(i.boot_usart_init) + boot_usart_read 0x01001bc9 Thumb Code 54 boot_usart.o(i.boot_usart_read) + boot_usart_write 0x01001c21 Thumb Code 42 boot_usart.o(i.boot_usart_write) + caiic_crc32 0x01001e61 Thumb Code 62 boot_crc32.o(i.caiic_crc32) + cli_printf 0x01001f71 Thumb Code 408 boot_cli.o(i.cli_printf) + cli_write 0x0100210d Thumb Code 22 boot_cli.o(i.cli_write) + main 0x0100217d Thumb Code 210 main.o(i.main) + TRIM_READ_CMD_CODE 0x01002b4e Data 320 system_n32wb03x.o(.constdata) + CMD_RDID 0x01002c8e Data 152 system_n32wb03x.o(.constdata) + const_qflash_cmd 0x01002da0 Data 804 n32wb03x_qflash.o(.constdata) + __ctype_table 0x010030c4 Data 129 ctype_o.o(.constdata) + Region$$Table$$Base 0x0100348c Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x010034ac Number 0 anon$$obj.o(Region$$Table) SystemCoreClock 0x20004000 Data 4 system_n32wb03x.o(.data) CMD_FLASH_SE 0x20004050 Data 4 n32wb03x_qflash.o(.data) CMD_FLASH_WRITE 0x20004054 Data 4 n32wb03x_qflash.o(.data) @@ -778,157 +811,164 @@ Memory Map of the image Image Entry point : 0x010000c1 - Load Region LR_IROM1 (Base: 0x01000000, Size: 0x0000327c, Max: 0x00004000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x01000000, Size: 0x0000350c, Max: 0x00004000, ABSOLUTE) - Execution Region ER_IROM1 (Exec base: 0x01000000, Load base: 0x01000000, Size: 0x0000321c, Max: 0x00004000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x01000000, Load base: 0x01000000, Size: 0x000034ac, Max: 0x00004000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object 0x01000000 0x01000000 0x000000c0 Data RO 3 RESET startup_n32wb03x.o - 0x010000c0 0x010000c0 0x00000000 Code RO 1210 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) - 0x010000c0 0x010000c0 0x00000004 Code RO 1229 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) - 0x010000c4 0x010000c4 0x00000004 Code RO 1232 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) - 0x010000c8 0x010000c8 0x00000000 Code RO 1234 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) - 0x010000c8 0x010000c8 0x00000000 Code RO 1236 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) - 0x010000c8 0x010000c8 0x00000008 Code RO 1237 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) - 0x010000d0 0x010000d0 0x00000000 Code RO 1239 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) - 0x010000d0 0x010000d0 0x00000000 Code RO 1241 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) - 0x010000d0 0x010000d0 0x00000004 Code RO 1230 .ARM.Collect$$$$00002712 mc_p.l(entry2.o) + 0x010000c0 0x010000c0 0x00000000 Code RO 1225 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) + 0x010000c0 0x010000c0 0x00000004 Code RO 1250 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) + 0x010000c4 0x010000c4 0x00000004 Code RO 1253 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) + 0x010000c8 0x010000c8 0x00000000 Code RO 1255 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) + 0x010000c8 0x010000c8 0x00000000 Code RO 1257 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) + 0x010000c8 0x010000c8 0x00000008 Code RO 1258 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) + 0x010000d0 0x010000d0 0x00000000 Code RO 1260 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) + 0x010000d0 0x010000d0 0x00000000 Code RO 1262 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) + 0x010000d0 0x010000d0 0x00000004 Code RO 1251 .ARM.Collect$$$$00002712 mc_p.l(entry2.o) 0x010000d4 0x010000d4 0x0000000e Code RO 10 .emb_text system_n32wb03x.o 0x010000e2 0x010000e2 0x00000002 PAD 0x010000e4 0x010000e4 0x0000001c Code RO 4 .text startup_n32wb03x.o - 0x01000100 0x01000100 0x0000002c Code RO 1213 .text mc_p.l(uidiv.o) - 0x0100012c 0x0100012c 0x00000024 Code RO 1215 .text mc_p.l(memcpya.o) - 0x01000150 0x01000150 0x00000024 Code RO 1217 .text mc_p.l(memseta.o) - 0x01000174 0x01000174 0x0000000e Code RO 1219 .text mc_p.l(strlen.o) - 0x01000182 0x01000182 0x0000001c Code RO 1221 .text mc_p.l(strcmp.o) - 0x0100019e 0x0100019e 0x0000001a Code RO 1223 .text mc_p.l(memcmp.o) - 0x010001b8 0x010001b8 0x00000076 Code RO 1227 .text mc_p.l(strtoul.o) - 0x0100022e 0x0100022e 0x00000002 PAD - 0x01000230 0x01000230 0x00000008 Code RO 1243 .text mc_p.l(ctype_o.o) - 0x01000238 0x01000238 0x000000a6 Code RO 1278 .text mc_p.l(_strtoul.o) - 0x010002de 0x010002de 0x00000002 PAD - 0x010002e0 0x010002e0 0x00000024 Code RO 1280 .text mc_p.l(init.o) - 0x01000304 0x01000304 0x0000001e Code RO 1282 .text mc_p.l(_chval.o) + 0x01000100 0x01000100 0x0000002c Code RO 1228 .text mc_p.l(uidiv.o) + 0x0100012c 0x0100012c 0x00000024 Code RO 1230 .text mc_p.l(memcpya.o) + 0x01000150 0x01000150 0x00000024 Code RO 1232 .text mc_p.l(memseta.o) + 0x01000174 0x01000174 0x0000000e Code RO 1234 .text mc_p.l(strlen.o) + 0x01000182 0x01000182 0x0000001c Code RO 1236 .text mc_p.l(strcmp.o) + 0x0100019e 0x0100019e 0x00000014 Code RO 1238 .text mc_p.l(memchr.o) + 0x010001b2 0x010001b2 0x0000001a Code RO 1240 .text mc_p.l(memcmp.o) + 0x010001cc 0x010001cc 0x00000012 Code RO 1242 .text mc_p.l(strcpy.o) + 0x010001de 0x010001de 0x0000001e Code RO 1244 .text mc_p.l(strncmp.o) + 0x010001fc 0x010001fc 0x00000076 Code RO 1248 .text mc_p.l(strtoul.o) + 0x01000272 0x01000272 0x00000002 PAD + 0x01000274 0x01000274 0x00000008 Code RO 1264 .text mc_p.l(ctype_o.o) + 0x0100027c 0x0100027c 0x000000a6 Code RO 1299 .text mc_p.l(_strtoul.o) 0x01000322 0x01000322 0x00000002 PAD - 0x01000324 0x01000324 0x000002d8 Code RO 495 i.AppBootset_CmdAppswitch app_bootset.o - 0x010005fc 0x010005fc 0x00000020 Code RO 496 i.AppBootset_CmdBsdump app_bootset.o - 0x0100061c 0x0100061c 0x000002f8 Code RO 497 i.AppBootset_CmdBsset app_bootset.o - 0x01000914 0x01000914 0x000000e0 Code RO 290 i.CmdDevInfo boot_cli.o - 0x010009f4 0x010009f4 0x000000b4 Code RO 291 i.CmdHelp boot_cli.o - 0x01000aa8 0x01000aa8 0x0000001c Code RO 292 i.CmdOta boot_cli.o - 0x01000ac4 0x01000ac4 0x0000003c Code RO 293 i.CmdReset boot_cli.o - 0x01000b00 0x01000b00 0x000000b0 Code RO 294 i.CmdUartInfo boot_cli.o - 0x01000bb0 0x01000bb0 0x00000074 Code RO 295 i.CmdVersion boot_cli.o - 0x01000c24 0x01000c24 0x000000a0 Code RO 1088 i.DMA_DeInit n32wb03x_dma.o - 0x01000cc4 0x01000cc4 0x0000001c Code RO 1089 i.DMA_EnableChannel n32wb03x_dma.o - 0x01000ce0 0x01000ce0 0x00000008 Code RO 1090 i.DMA_GetCurrDataCounter n32wb03x_dma.o - 0x01000ce8 0x01000ce8 0x00000040 Code RO 1093 i.DMA_Init n32wb03x_dma.o - 0x01000d28 0x01000d28 0x00000010 Code RO 1094 i.DMA_RequestRemap n32wb03x_dma.o - 0x01000d38 0x01000d38 0x00000106 Code RO 800 i.GPIO_InitPeripheral n32wb03x_gpio.o - 0x01000e3e 0x01000e3e 0x00000002 PAD - 0x01000e40 0x01000e40 0x0000001c Code RO 801 i.GPIO_InitStruct n32wb03x_gpio.o - 0x01000e5c 0x01000e5c 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o - 0x01000f28 0x01000f28 0x0000003c Code RO 1167 i.Qflash_Erase_Sector n32wb03x_qflash.o - 0x01000f64 0x01000f64 0x00000038 Code RO 1168 i.Qflash_Init n32wb03x_qflash.o - 0x01000f9c 0x01000f9c 0x00000044 Code RO 1170 i.Qflash_Write n32wb03x_qflash.o - 0x01000fe0 0x01000fe0 0x00000020 Code RO 576 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o - 0x01001000 0x01001000 0x00000020 Code RO 580 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o - 0x01001020 0x01001020 0x000000a4 Code RO 588 i.RCC_GetClocksFreqValue n32wb03x_rcc.o - 0x010010c4 0x010010c4 0x00000130 Code RO 12 i.RCC_HsiCalib system_n32wb03x.o - 0x010011f4 0x010011f4 0x0000011c Code RO 16 i.SystemInit system_n32wb03x.o - 0x01001310 0x01001310 0x00000014 Code RO 18 i.SystemTrimValueRead system_n32wb03x.o - 0x01001324 0x01001324 0x00000020 Code RO 922 i.USART_Enable n32wb03x_usart.o - 0x01001344 0x01001344 0x00000014 Code RO 923 i.USART_EnableDMA n32wb03x_usart.o - 0x01001358 0x01001358 0x0000001e Code RO 929 i.USART_GetFlagStatus n32wb03x_usart.o - 0x01001376 0x01001376 0x00000002 PAD - 0x01001378 0x01001378 0x000000b4 Code RO 931 i.USART_Init n32wb03x_usart.o - 0x0100142c 0x0100142c 0x00000008 Code RO 934 i.USART_SendData n32wb03x_usart.o - 0x01001434 0x01001434 0x00000008 Code RO 1271 i.__aeabi_errno_addr mc_p.l(errno.o) - 0x0100143c 0x0100143c 0x0000000e Code RO 1286 i.__scatterload_copy mc_p.l(handlers.o) - 0x0100144a 0x0100144a 0x00000002 Code RO 1287 i.__scatterload_null mc_p.l(handlers.o) - 0x0100144c 0x0100144c 0x0000000e Code RO 1288 i.__scatterload_zeroinit mc_p.l(handlers.o) - 0x0100145a 0x0100145a 0x00000006 Code RO 19 i.__set_PRIMASK system_n32wb03x.o - 0x01001460 0x01001460 0x00000006 Code RO 1171 i.__set_PRIMASK n32wb03x_qflash.o - 0x01001466 0x01001466 0x00000002 PAD - 0x01001468 0x01001468 0x0000003c Code RO 386 i.app_ota_abort app_ota.o - 0x010014a4 0x010014a4 0x00000014 Code RO 387 i.app_ota_chan_idle app_ota.o - 0x010014b8 0x010014b8 0x00000140 Code RO 388 i.app_ota_chan_rx app_ota.o - 0x010015f8 0x010015f8 0x00000024 Code RO 389 i.app_ota_chan_rx_uart app_ota.o - 0x0100161c 0x0100161c 0x0000007c Code RO 391 i.app_ota_handle_frame app_ota.o - 0x01001698 0x01001698 0x0000005c Code RO 392 i.app_ota_reset_poll app_ota.o - 0x010016f4 0x010016f4 0x00000148 Code RO 296 i.boot_cli_run boot_cli.o - 0x0100183c 0x0100183c 0x00000018 Code RO 239 i.boot_delay_ms boot_usart.o - 0x01001854 0x01001854 0x00000028 Code RO 240 i.boot_millis boot_usart.o - 0x0100187c 0x0100187c 0x00000110 Code RO 241 i.boot_usart_init boot_usart.o - 0x0100198c 0x0100198c 0x00000040 Code RO 242 i.boot_usart_read boot_usart.o - 0x010019cc 0x010019cc 0x00000018 Code RO 243 i.boot_usart_rx_head boot_usart.o - 0x010019e4 0x010019e4 0x00000030 Code RO 244 i.boot_usart_write boot_usart.o - 0x01001a14 0x01001a14 0x00000054 Code RO 498 i.bootset_commit app_bootset.o - 0x01001a68 0x01001a68 0x0000000e Code RO 499 i.bootset_crc app_bootset.o - 0x01001a76 0x01001a76 0x00000002 PAD - 0x01001a78 0x01001a78 0x0000001c Code RO 500 i.bootset_ensure_qflash app_bootset.o - 0x01001a94 0x01001a94 0x0000016c Code RO 501 i.bootset_print app_bootset.o - 0x01001c00 0x01001c00 0x00000024 Code RO 502 i.bootset_valid app_bootset.o - 0x01001c24 0x01001c24 0x00000044 Code RO 226 i.caiic_crc32 boot_crc32.o - 0x01001c68 0x01001c68 0x000000cc Code RO 297 i.cli_exec_line boot_cli.o - 0x01001d34 0x01001d34 0x0000019c Code RO 298 i.cli_printf boot_cli.o - 0x01001ed0 0x01001ed0 0x00000016 Code RO 299 i.cli_write boot_cli.o - 0x01001ee6 0x01001ee6 0x00000002 PAD - 0x01001ee8 0x01001ee8 0x00000034 Code RO 174 i.image_sane main.o - 0x01001f1c 0x01001f1c 0x00000024 Code RO 175 i.jump_to_app main.o - 0x01001f40 0x01001f40 0x00000180 Code RO 176 i.main main.o - 0x010020c0 0x010020c0 0x0000004c Code RO 393 i.ota_crc16 app_ota.o - 0x0100210c 0x0100210c 0x00000040 Code RO 394 i.ota_erase_up_to app_ota.o - 0x0100214c 0x0100214c 0x00000170 Code RO 395 i.ota_on_begin app_ota.o - 0x010022bc 0x010022bc 0x000001a8 Code RO 396 i.ota_on_data app_ota.o - 0x01002464 0x01002464 0x00000170 Code RO 397 i.ota_on_end app_ota.o - 0x010025d4 0x010025d4 0x00000038 Code RO 398 i.ota_program app_ota.o - 0x0100260c 0x0100260c 0x00000018 Code RO 399 i.ota_rd32 app_ota.o - 0x01002624 0x01002624 0x0000007c Code RO 400 i.ota_respond app_ota.o - 0x010026a0 0x010026a0 0x0000001c Code RO 401 i.ota_uart_sink app_ota.o - 0x010026bc 0x010026bc 0x000000cc Code RO 402 i.ota_update_bootsetting app_ota.o - 0x01002788 0x01002788 0x0000002e Code RO 503 i.parse_u32 app_bootset.o - 0x010027b6 0x010027b6 0x00000018 Code RO 177 i.puts_boot main.o - 0x010027ce 0x010027ce 0x00000002 PAD - 0x010027d0 0x010027d0 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o - 0x01002814 0x01002814 0x0000004e Code RO 300 i.str_pad boot_cli.o - 0x01002862 0x01002862 0x0000006c Code RO 301 i.u32_to_str boot_cli.o - 0x010028ce 0x010028ce 0x000001d8 Data RO 23 .constdata system_n32wb03x.o - 0x01002aa6 0x01002aa6 0x00000002 PAD - 0x01002aa8 0x01002aa8 0x0000006c Data RO 303 .constdata boot_cli.o - 0x01002b14 0x01002b14 0x0000000c Data RO 596 .constdata n32wb03x_rcc.o - 0x01002b20 0x01002b20 0x00000324 Data RO 1173 .constdata n32wb03x_qflash.o - 0x01002e44 0x01002e44 0x00000081 Data RO 1244 .constdata mc_p.l(ctype_o.o) - 0x01002ec5 0x01002ec5 0x00000003 PAD - 0x01002ec8 0x01002ec8 0x00000004 Data RO 1245 .constdata mc_p.l(ctype_o.o) - 0x01002ecc 0x01002ecc 0x0000029a Data RO 304 .conststring boot_cli.o - 0x01003166 0x01003166 0x00000002 PAD - 0x01003168 0x01003168 0x00000091 Data RO 504 .conststring app_bootset.o - 0x010031f9 0x010031f9 0x00000003 PAD - 0x010031fc 0x010031fc 0x00000020 Data RO 1284 Region$$Table anon$$obj.o + 0x01000324 0x01000324 0x00000024 Code RO 1301 .text mc_p.l(init.o) + 0x01000348 0x01000348 0x0000001e Code RO 1303 .text mc_p.l(_chval.o) + 0x01000366 0x01000366 0x00000002 PAD + 0x01000368 0x01000368 0x000002d8 Code RO 510 i.AppBootset_CmdAppswitch app_bootset.o + 0x01000640 0x01000640 0x00000020 Code RO 511 i.AppBootset_CmdBsdump app_bootset.o + 0x01000660 0x01000660 0x000002f8 Code RO 512 i.AppBootset_CmdBsset app_bootset.o + 0x01000958 0x01000958 0x000000e0 Code RO 295 i.CmdDevInfo boot_cli.o + 0x01000a38 0x01000a38 0x000000b4 Code RO 296 i.CmdHelp boot_cli.o + 0x01000aec 0x01000aec 0x0000001c Code RO 297 i.CmdOta boot_cli.o + 0x01000b08 0x01000b08 0x0000003c Code RO 298 i.CmdReset boot_cli.o + 0x01000b44 0x01000b44 0x000000b0 Code RO 299 i.CmdUartInfo boot_cli.o + 0x01000bf4 0x01000bf4 0x00000074 Code RO 300 i.CmdVersion boot_cli.o + 0x01000c68 0x01000c68 0x000000a0 Code RO 1103 i.DMA_DeInit n32wb03x_dma.o + 0x01000d08 0x01000d08 0x0000001c Code RO 1104 i.DMA_EnableChannel n32wb03x_dma.o + 0x01000d24 0x01000d24 0x00000008 Code RO 1105 i.DMA_GetCurrDataCounter n32wb03x_dma.o + 0x01000d2c 0x01000d2c 0x00000040 Code RO 1108 i.DMA_Init n32wb03x_dma.o + 0x01000d6c 0x01000d6c 0x00000010 Code RO 1109 i.DMA_RequestRemap n32wb03x_dma.o + 0x01000d7c 0x01000d7c 0x00000106 Code RO 815 i.GPIO_InitPeripheral n32wb03x_gpio.o + 0x01000e82 0x01000e82 0x00000002 PAD + 0x01000e84 0x01000e84 0x0000001c Code RO 816 i.GPIO_InitStruct n32wb03x_gpio.o + 0x01000ea0 0x01000ea0 0x00000014 Code RO 818 i.GPIO_ReadInputDataBit n32wb03x_gpio.o + 0x01000eb4 0x01000eb4 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o + 0x01000f80 0x01000f80 0x0000003c Code RO 1182 i.Qflash_Erase_Sector n32wb03x_qflash.o + 0x01000fbc 0x01000fbc 0x00000038 Code RO 1183 i.Qflash_Init n32wb03x_qflash.o + 0x01000ff4 0x01000ff4 0x00000044 Code RO 1185 i.Qflash_Write n32wb03x_qflash.o + 0x01001038 0x01001038 0x00000020 Code RO 591 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o + 0x01001058 0x01001058 0x00000020 Code RO 595 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o + 0x01001078 0x01001078 0x000000a4 Code RO 603 i.RCC_GetClocksFreqValue n32wb03x_rcc.o + 0x0100111c 0x0100111c 0x00000130 Code RO 12 i.RCC_HsiCalib system_n32wb03x.o + 0x0100124c 0x0100124c 0x0000011c Code RO 16 i.SystemInit system_n32wb03x.o + 0x01001368 0x01001368 0x00000014 Code RO 18 i.SystemTrimValueRead system_n32wb03x.o + 0x0100137c 0x0100137c 0x00000020 Code RO 937 i.USART_Enable n32wb03x_usart.o + 0x0100139c 0x0100139c 0x00000014 Code RO 938 i.USART_EnableDMA n32wb03x_usart.o + 0x010013b0 0x010013b0 0x0000001e Code RO 944 i.USART_GetFlagStatus n32wb03x_usart.o + 0x010013ce 0x010013ce 0x00000002 PAD + 0x010013d0 0x010013d0 0x000000b4 Code RO 946 i.USART_Init n32wb03x_usart.o + 0x01001484 0x01001484 0x00000008 Code RO 949 i.USART_SendData n32wb03x_usart.o + 0x0100148c 0x0100148c 0x00000008 Code RO 1292 i.__aeabi_errno_addr mc_p.l(errno.o) + 0x01001494 0x01001494 0x0000000e Code RO 1307 i.__scatterload_copy mc_p.l(handlers.o) + 0x010014a2 0x010014a2 0x00000002 Code RO 1308 i.__scatterload_null mc_p.l(handlers.o) + 0x010014a4 0x010014a4 0x0000000e Code RO 1309 i.__scatterload_zeroinit mc_p.l(handlers.o) + 0x010014b2 0x010014b2 0x00000006 Code RO 19 i.__set_PRIMASK system_n32wb03x.o + 0x010014b8 0x010014b8 0x00000006 Code RO 1186 i.__set_PRIMASK n32wb03x_qflash.o + 0x010014be 0x010014be 0x00000002 PAD + 0x010014c0 0x010014c0 0x0000003c Code RO 401 i.app_ota_abort app_ota.o + 0x010014fc 0x010014fc 0x00000014 Code RO 402 i.app_ota_chan_idle app_ota.o + 0x01001510 0x01001510 0x00000140 Code RO 403 i.app_ota_chan_rx app_ota.o + 0x01001650 0x01001650 0x00000024 Code RO 404 i.app_ota_chan_rx_uart app_ota.o + 0x01001674 0x01001674 0x0000007c Code RO 406 i.app_ota_handle_frame app_ota.o + 0x010016f0 0x010016f0 0x0000005c Code RO 407 i.app_ota_reset_poll app_ota.o + 0x0100174c 0x0100174c 0x0000004c Code RO 301 i.boot_cli_redraw boot_cli.o + 0x01001798 0x01001798 0x0000015c Code RO 302 i.boot_cli_run boot_cli.o + 0x010018f4 0x010018f4 0x00000144 Code RO 303 i.boot_cli_tab_complete boot_cli.o + 0x01001a38 0x01001a38 0x00000018 Code RO 244 i.boot_delay_ms boot_usart.o + 0x01001a50 0x01001a50 0x00000040 Code RO 174 i.boot_dl_strap_active main.o + 0x01001a90 0x01001a90 0x00000028 Code RO 245 i.boot_millis boot_usart.o + 0x01001ab8 0x01001ab8 0x00000110 Code RO 246 i.boot_usart_init boot_usart.o + 0x01001bc8 0x01001bc8 0x00000040 Code RO 247 i.boot_usart_read boot_usart.o + 0x01001c08 0x01001c08 0x00000018 Code RO 248 i.boot_usart_rx_head boot_usart.o + 0x01001c20 0x01001c20 0x00000030 Code RO 249 i.boot_usart_write boot_usart.o + 0x01001c50 0x01001c50 0x00000054 Code RO 513 i.bootset_commit app_bootset.o + 0x01001ca4 0x01001ca4 0x0000000e Code RO 514 i.bootset_crc app_bootset.o + 0x01001cb2 0x01001cb2 0x00000002 PAD + 0x01001cb4 0x01001cb4 0x0000001c Code RO 515 i.bootset_ensure_qflash app_bootset.o + 0x01001cd0 0x01001cd0 0x0000016c Code RO 516 i.bootset_print app_bootset.o + 0x01001e3c 0x01001e3c 0x00000024 Code RO 517 i.bootset_valid app_bootset.o + 0x01001e60 0x01001e60 0x00000044 Code RO 231 i.caiic_crc32 boot_crc32.o + 0x01001ea4 0x01001ea4 0x000000cc Code RO 304 i.cli_exec_line boot_cli.o + 0x01001f70 0x01001f70 0x0000019c Code RO 305 i.cli_printf boot_cli.o + 0x0100210c 0x0100210c 0x00000016 Code RO 306 i.cli_write boot_cli.o + 0x01002122 0x01002122 0x00000002 PAD + 0x01002124 0x01002124 0x00000034 Code RO 175 i.image_sane main.o + 0x01002158 0x01002158 0x00000024 Code RO 176 i.jump_to_app main.o + 0x0100217c 0x0100217c 0x000001c4 Code RO 177 i.main main.o + 0x01002340 0x01002340 0x0000004c Code RO 408 i.ota_crc16 app_ota.o + 0x0100238c 0x0100238c 0x00000040 Code RO 409 i.ota_erase_up_to app_ota.o + 0x010023cc 0x010023cc 0x00000170 Code RO 410 i.ota_on_begin app_ota.o + 0x0100253c 0x0100253c 0x000001a8 Code RO 411 i.ota_on_data app_ota.o + 0x010026e4 0x010026e4 0x00000170 Code RO 412 i.ota_on_end app_ota.o + 0x01002854 0x01002854 0x00000038 Code RO 413 i.ota_program app_ota.o + 0x0100288c 0x0100288c 0x00000018 Code RO 414 i.ota_rd32 app_ota.o + 0x010028a4 0x010028a4 0x0000007c Code RO 415 i.ota_respond app_ota.o + 0x01002920 0x01002920 0x0000001c Code RO 416 i.ota_uart_sink app_ota.o + 0x0100293c 0x0100293c 0x000000cc Code RO 417 i.ota_update_bootsetting app_ota.o + 0x01002a08 0x01002a08 0x0000002e Code RO 518 i.parse_u32 app_bootset.o + 0x01002a36 0x01002a36 0x00000018 Code RO 178 i.puts_boot main.o + 0x01002a4e 0x01002a4e 0x00000002 PAD + 0x01002a50 0x01002a50 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o + 0x01002a94 0x01002a94 0x0000004e Code RO 307 i.str_pad boot_cli.o + 0x01002ae2 0x01002ae2 0x0000006c Code RO 308 i.u32_to_str boot_cli.o + 0x01002b4e 0x01002b4e 0x000001d8 Data RO 23 .constdata system_n32wb03x.o + 0x01002d26 0x01002d26 0x00000002 PAD + 0x01002d28 0x01002d28 0x0000006c Data RO 310 .constdata boot_cli.o + 0x01002d94 0x01002d94 0x0000000c Data RO 611 .constdata n32wb03x_rcc.o + 0x01002da0 0x01002da0 0x00000324 Data RO 1188 .constdata n32wb03x_qflash.o + 0x010030c4 0x010030c4 0x00000081 Data RO 1265 .constdata mc_p.l(ctype_o.o) + 0x01003145 0x01003145 0x00000003 PAD + 0x01003148 0x01003148 0x00000004 Data RO 1266 .constdata mc_p.l(ctype_o.o) + 0x0100314c 0x0100314c 0x000002aa Data RO 311 .conststring boot_cli.o + 0x010033f6 0x010033f6 0x00000002 PAD + 0x010033f8 0x010033f8 0x00000091 Data RO 519 .conststring app_bootset.o + 0x01003489 0x01003489 0x00000003 PAD + 0x0100348c 0x0100348c 0x00000020 Data RO 1305 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x0100321c, Size: 0x00001a58, Max: 0x0000c000, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x010034ac, Size: 0x00001a58, Max: 0x0000c000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20004000 0x0100321c 0x00000004 Data RW 24 .data system_n32wb03x.o - 0x20004004 0x01003220 0x00000008 Data RW 246 .data boot_usart.o - 0x2000400c 0x01003228 0x00000001 Data RW 305 .data boot_cli.o - 0x2000400d 0x01003229 0x00000003 PAD - 0x20004010 0x0100322c 0x0000003d Data RW 404 .data app_ota.o - 0x2000404d 0x01003269 0x00000001 Data RW 505 .data app_bootset.o - 0x2000404e 0x0100326a 0x00000002 PAD - 0x20004050 0x0100326c 0x0000000c Data RW 1174 .data n32wb03x_qflash.o - 0x2000405c 0x01003278 0x00000004 Data RW 1274 .data mc_p.l(errno.o) + 0x20004000 0x010034ac 0x00000004 Data RW 24 .data system_n32wb03x.o + 0x20004004 0x010034b0 0x00000008 Data RW 251 .data boot_usart.o + 0x2000400c 0x010034b8 0x00000001 Data RW 312 .data boot_cli.o + 0x2000400d 0x010034b9 0x00000003 PAD + 0x20004010 0x010034bc 0x0000003d Data RW 419 .data app_ota.o + 0x2000404d 0x010034f9 0x00000001 Data RW 520 .data app_bootset.o + 0x2000404e 0x010034fa 0x00000002 PAD + 0x20004050 0x010034fc 0x0000000c Data RW 1189 .data n32wb03x_qflash.o + 0x2000405c 0x01003508 0x00000004 Data RW 1295 .data mc_p.l(errno.o) 0x20004060 - 0x00000034 Zero RW 22 .bss system_n32wb03x.o - 0x20004094 - 0x00000c00 Zero RW 245 .bss boot_usart.o - 0x20004c94 - 0x000000b0 Zero RW 302 .bss boot_cli.o - 0x20004d44 - 0x000001e7 Zero RW 403 .bss app_ota.o - 0x20004f2b 0x0100327c 0x00000001 PAD - 0x20004f2c - 0x00000328 Zero RW 1172 .bss n32wb03x_qflash.o - 0x20005254 0x0100327c 0x00000004 PAD + 0x20004094 - 0x00000c00 Zero RW 250 .bss boot_usart.o + 0x20004c94 - 0x000000b0 Zero RW 309 .bss boot_cli.o + 0x20004d44 - 0x000001e7 Zero RW 418 .bss app_ota.o + 0x20004f2b 0x0100350c 0x00000001 PAD + 0x20004f2c - 0x00000328 Zero RW 1187 .bss n32wb03x_qflash.o + 0x20005254 0x0100350c 0x00000004 PAD 0x20005258 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o @@ -941,12 +981,12 @@ Image component sizes 2092 1148 145 1 0 6739 app_bootset.o 2388 322 0 61 487 12597 app_ota.o - 1936 628 774 1 176 15380 boot_cli.o + 2356 662 790 1 176 17108 boot_cli.o 68 6 0 0 0 874 boot_crc32.o 472 66 0 8 3072 4161 boot_usart.o - 496 208 0 0 0 5011 main.o + 628 262 0 0 0 5643 main.o 276 18 0 0 0 4372 n32wb03x_dma.o - 290 4 0 0 0 2252 n32wb03x_gpio.o + 310 4 0 0 0 2948 n32wb03x_gpio.o 190 32 804 12 808 4258 n32wb03x_qflash.o 228 32 12 0 0 2848 n32wb03x_rcc.o 270 24 0 0 0 5093 n32wb03x_usart.o @@ -954,7 +994,7 @@ Image component sizes 900 60 472 4 52 124580 system_n32wb03x.o ---------------------------------------------------------------------- - 9648 2556 2438 92 6648 188909 Object Totals + 10220 2644 2454 92 6648 191965 Object Totals 0 0 32 0 0 0 (incl. Generated) 14 0 7 5 5 0 (incl. Padding) @@ -976,26 +1016,29 @@ Image component sizes 8 4 0 4 0 60 errno.o 30 0 0 0 0 0 handlers.o 36 8 0 0 0 68 init.o + 20 0 0 0 0 60 memchr.o 26 0 0 0 0 72 memcmp.o 36 0 0 0 0 60 memcpya.o 36 0 0 0 0 100 memseta.o 28 0 0 0 0 68 strcmp.o + 18 0 0 0 0 60 strcpy.o 14 0 0 0 0 60 strlen.o + 30 0 0 0 0 72 strncmp.o 118 0 0 0 0 84 strtoul.o 44 0 0 0 0 72 uidiv.o ---------------------------------------------------------------------- - 606 24 136 4 0 848 Library Totals + 674 24 136 4 0 1040 Library Totals 6 0 3 0 0 0 (incl. Padding) ---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Name - 600 24 133 4 0 848 mc_p.l + 668 24 133 4 0 1040 mc_p.l ---------------------------------------------------------------------- - 606 24 136 4 0 848 Library Totals + 674 24 136 4 0 1040 Library Totals ---------------------------------------------------------------------- @@ -1004,15 +1047,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 10254 2580 2574 96 6648 186425 Grand Totals - 10254 2580 2574 96 6648 186425 ELF Image Totals - 10254 2580 2574 96 0 0 ROM Totals + 10894 2668 2590 96 6648 189365 Grand Totals + 10894 2668 2590 96 6648 189365 ELF Image Totals + 10894 2668 2590 96 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 12828 ( 12.53kB) + Total RO Size (Code + RO Data) 13484 ( 13.17kB) Total RW Size (RW Data + ZI Data) 6744 ( 6.59kB) - Total ROM Size (Code + RO Data + RW Data) 12924 ( 12.62kB) + Total ROM Size (Code + RO Data + RW Data) 13580 ( 13.26kB) ============================================================================== diff --git a/Boot/MDK-ARM/bin/caiic_boot.bin b/Boot/MDK-ARM/bin/caiic_boot.bin index bbd7824..74d9089 100644 Binary files a/Boot/MDK-ARM/bin/caiic_boot.bin and b/Boot/MDK-ARM/bin/caiic_boot.bin differ diff --git a/Boot/MDK-ARM/build.log b/Boot/MDK-ARM/build.log index 7c324e0..f22da89 100644 --- a/Boot/MDK-ARM/build.log +++ b/Boot/MDK-ARM/build.log @@ -2,19 +2,19 @@ Rebuild target 'caiic_boot' assembling startup_n32wb03x.s... compiling boot_crc32.c... +compiling system_n32wb03x.c... +compiling boot_cli.c... +compiling app_ota.c... +compiling app_bootset.c... compiling main.c... compiling boot_usart.c... -compiling system_n32wb03x.c... -compiling app_bootset.c... compiling n32wb03x_gpio.c... -compiling n32wb03x_usart.c... compiling n32wb03x_rcc.c... -compiling boot_cli.c... +compiling n32wb03x_usart.c... compiling n32wb03x_dma.c... -compiling app_ota.c... compiling n32wb03x_qflash.c... linking... -Program Size: Code=10254 RO-data=2574 RW-data=96 ZI-data=6648 +Program Size: Code=10894 RO-data=2590 RW-data=96 ZI-data=6648 FromELF: creating hex file... After Build - User command #1: fromelf --bin --output=.\bin\caiic_boot.bin .\Objects\caiic_boot.axf ".\Objects\caiic_boot.axf" - 0 Error(s), 0 Warning(s). diff --git a/Boot/src/boot_cli.c b/Boot/src/boot_cli.c index 6ab586c..0b7f3f5 100644 --- a/Boot/src/boot_cli.c +++ b/Boot/src/boot_cli.c @@ -1,7 +1,8 @@ /** * @file boot_cli.c - * @brief Bootloader download-mode CLI: bare-metal polled line editor + - * command table, and the UART OTA binary frame mode. + * @brief Bootloader download-mode CLI: bare-metal polled line editor + * (echo, backspace, TAB command-name completion) + command table, + * and the UART OTA binary frame mode. * * Wire-compatible with the application's UART CLI so that * tools/ble_ota_update.py works unchanged against the bootloader: @@ -31,6 +32,7 @@ #define CLI_LINE_SIZE 80 #define CLI_MAX_ARGS 8 #define OTA_IDLE_EXIT_MS 3000u /* binary mode fallback exit */ +#define CLI_KEY_TAB 0x09 /* TAB: command-name completion */ /* ------------------------------------------------------------------ */ /* Output (cli_core.h shim implementation) */ @@ -359,17 +361,134 @@ static int cli_exec_line(char* line) #define BOOT_CLI_PROMPT "caiic->" /* wire-compatible with the app CLI */ +/** + * @brief Redraw the input line: erase `shownLen` chars, print prompt + line. + * @return new shown length (in the boot CLI this always equals strlen(line)). + */ +static uint16_t boot_cli_redraw(const char* line, uint16_t shownLen) +{ + uint16_t i; + uint16_t len = (uint16_t)strlen(line); + + cli_write("\r" BOOT_CLI_PROMPT); + for (i = 0; i < shownLen; i++) + { + cli_write(" "); + } + cli_write("\r" BOOT_CLI_PROMPT); + if (len > 0u) + { + boot_usart_write((const uint8_t*)line, len); + } + return len; +} + +/** + * @brief TAB completion on the first token of the line (command name only). + * Single match: complete it and append a space. + * Multiple matches: extend to the common prefix, or list candidates. + * Ported from the application CLI (mcm-ddc-ble/src/app_cli.c). + */ +static uint16_t boot_cli_tab_complete(char* line, uint16_t len) +{ + char common[CLI_LINE_SIZE]; + uint16_t commonLen = 0; + int matchCount = 0; + uint32_t i; + + /* Only complete the first token (no space typed yet) */ + if (memchr(line, ' ', len) != NULL) + { + return len; + } + line[len] = '\0'; + + for (i = 0; i < CLI_CMD_COUNT; i++) + { + const char* name = s_cmds[i].name; + if (strncmp(name, line, len) == 0) + { + if (matchCount == 0) + { + strcpy(common, name); + commonLen = (uint16_t)strlen(common); + } + else + { + /* shrink common to the shared prefix */ + while (commonLen > len && strncmp(common, name, commonLen) != 0) + { + commonLen--; + } + common[commonLen] = '\0'; + } + matchCount++; + } + } + + if (matchCount == 0) + { + return len; + } + + if (matchCount == 1) + { + /* complete the command name + one space */ + while (len < CLI_LINE_SIZE - 1u && len < commonLen) + { + boot_usart_write((const uint8_t*)&common[len], 1); + line[len] = common[len]; + len++; + } + if (len < CLI_LINE_SIZE - 1u) + { + line[len] = ' '; + len++; + cli_write(" "); + } + return len; + } + + if (commonLen > len) + { + /* extend to the common prefix */ + while (len < CLI_LINE_SIZE - 1u && len < commonLen) + { + boot_usart_write((const uint8_t*)&common[len], 1); + line[len] = common[len]; + len++; + } + } + else + { + /* ambiguous: list the candidates and redraw */ + cli_write("\r\n"); + for (i = 0; i < CLI_CMD_COUNT; i++) + { + const char* name = s_cmds[i].name; + if (strncmp(name, line, len) == 0) + { + cli_write(name); + cli_write(" "); + } + } + cli_write("\r\n"); + boot_cli_redraw(line, len); + } + return len; +} + /** * @brief Download-mode main loop. Never returns (leaves via reset only). */ void boot_cli_run(void) { static char s_line[CLI_LINE_SIZE]; - uint8_t len = 0; + uint16_t len = 0; uint32_t otaLastRx = 0; - cli_write("\r\nCLI ready (bootloader download mode). Type 'help' for commands.\r\n" - BOOT_CLI_PROMPT); + cli_write("\r\nCLI ready (bootloader download mode). Type 'help' for commands " + "(TAB = complete).\r\n" BOOT_CLI_PROMPT); for (;;) { @@ -424,6 +543,10 @@ void boot_cli_run(void) } break; + case CLI_KEY_TAB: + len = boot_cli_tab_complete(s_line, len); + break; + default: if (ch >= 0x20u && len < CLI_LINE_SIZE - 1u) { diff --git a/Boot/src/boot_version.h b/Boot/src/boot_version.h index 2201168..92bb264 100644 --- a/Boot/src/boot_version.h +++ b/Boot/src/boot_version.h @@ -6,6 +6,6 @@ #ifndef __BOOT_VERSION_H__ #define __BOOT_VERSION_H__ -#define BOOT_FW_VERSION "V1.01.00" +#define BOOT_FW_VERSION "V1.01.02" #endif /* __BOOT_VERSION_H__ */ diff --git a/Boot/src/main.c b/Boot/src/main.c index cabd916..dd1aa25 100644 --- a/Boot/src/main.c +++ b/Boot/src/main.c @@ -7,6 +7,8 @@ * production download and bricked-device recovery. * * Download mode entry: + * 0. strap pin held HIGH (3.3 V) at reset - forces download mode + * deterministically, no host on the UART needed, * 1. press Enter within the 2 s window printed in the boot banner, or * 2. automatic when there is no jumpable image: the bootsetting record * is invalid AND the APP1 vector table fails sanity (SP outside the @@ -34,6 +36,16 @@ #define SRAM_SP_MIN 0x20004001u #define SRAM_SP_MAX 0x2000C000u +/* Download-mode strap pin: tie it HIGH (the board's 3.3 V rail) at reset to + * force download mode. PB5 is free on the STB board (not SWD PA4/PA5, not + * USART1 PB6/PB7, not LED PB0/PA6, not 32.768 kHz crystal PB8/PB9, not the + * user keys PB1/PB2) and is broken out on header J3 next to the UART pins. + * The internal pull-down keeps the un-strapped state LOW (normal boot); an + * external 3.3 V drive overrides that weak pull-down cleanly. */ +#define BOOT_DL_STRAP_GPIO GPIOB +#define BOOT_DL_STRAP_CLK RCC_APB2_PERIPH_GPIOB +#define BOOT_DL_STRAP_PIN GPIO_PIN_5 + extern void boot_cli_run(void); /* boot_cli.c - never returns */ /** @@ -82,6 +94,24 @@ static void puts_boot(const char* s) } } +/** + * @brief Configure the download strap pin as a pull-down input and read it. + * @return 1 when the pin is HIGH (3.3 V applied -> enter download mode). + */ +static int boot_dl_strap_active(void) +{ + GPIO_InitType s; + + RCC_EnableAPB2PeriphClk(BOOT_DL_STRAP_CLK, ENABLE); + GPIO_InitStruct(&s); + s.Pin = BOOT_DL_STRAP_PIN; + s.GPIO_Mode = GPIO_MODE_INPUT; + s.GPIO_Pull = GPIO_PULL_DOWN; + GPIO_InitPeripheral(BOOT_DL_STRAP_GPIO, &s); + + return (GPIO_ReadInputDataBit(BOOT_DL_STRAP_GPIO, BOOT_DL_STRAP_PIN) == Bit_SET) ? 1 : 0; +} + /** * @brief Main program. */ @@ -114,15 +144,25 @@ int main(void) puts_boot("\r\n[boot] CAIIC-BOOT " BOOT_FW_VERSION " - Enter within 2s: download mode\r\n"); - /* Entry 1: Enter key inside the window */ - window_start = boot_millis(); - while ((boot_millis() - window_start) < BOOT_DL_WINDOW_MS) + /* Entry 0 (strap): 3.3 V held on the strap pin forces download mode */ + if (boot_dl_strap_active()) { - uint8_t ch; - if (boot_usart_read(&ch) != 0 && (ch == '\r' || ch == '\n')) + enter_dl = 1; + puts_boot("[boot] strap pin HIGH (3V3): download mode\r\n"); + } + + /* Entry 1: Enter key inside the window (skipped when strap already set) */ + if (!enter_dl) + { + window_start = boot_millis(); + while ((boot_millis() - window_start) < BOOT_DL_WINDOW_MS) { - enter_dl = 1; - break; + uint8_t ch; + if (boot_usart_read(&ch) != 0 && (ch == '\r' || ch == '\n')) + { + enter_dl = 1; + break; + } } } diff --git a/docs/开发日志.md b/docs/开发日志.md index e699ccd..90b2719 100644 --- a/docs/开发日志.md +++ b/docs/开发日志.md @@ -1372,3 +1372,49 @@ APP2 链接的镜像发向 APP1 区。设备端 END 校验(向量表 Reset PC - 协议文档:`docs/ble_protocol.md` §6.8。注意 **Boot 本身不能被 OTA 更新** (OTA 只写 APP bank),升级 Boot 只能 SWD 整片包;已出厂设备的旧 Boot 无 download 模式,功能不受影响。 + +## 53. Boot 新增 3.3V 拉高下载 strapping 机制(2026-09-06,Boot V1.01.01) + +- 需求:在不动原有 2s 回车窗口 / 救砖自动进入两条入口的前提下,**新增一条 + 纯硬件入口**——上电/复位时把某一 IO 脚接 3.3V(板载 VDD 轨),Boot 即进入 + download 模式,无需 PC 串口在 2s 内回车,方便产线/现场用一根跳线强制进入。 +- 引脚选型(依据 STB 开发板原理图 `nations-tec/N32WB031_STB_V1.3` + SDK + EVAL 例程按键定义): + - 占用脚(必须避开):SWD=PA4/PA5、LED1=PB0(D1)、LED2=PA6(D2)、 + USART1=PB6(TX)/PB7(RX)、32.768K 晶振=PB8/PB9、用户键 KEY1=PB1/KEY2=PB2 + (SDK `central_hogprh`/`EXTI/KeyInterrupt` 等例程均定义 PB1/PB2); + PA0 为 WKUP 唤醒脚,也避开。 + - **选定 PB5**:空闲、纯 GPIO、无板载按键/LED/晶振/SWD/串口占用,且在 + 排针 J3 上与 PB6(TX)/PB7(RX) 相邻,接跳线最方便。 +- 实现(`Boot/src/main.c`): + - 新增宏 `BOOT_DL_STRAP_GPIO=GPIOB` / `BOOT_DL_STRAP_PIN=GPIO_PIN_5` / + `BOOT_DL_STRAP_CLK=RCC_APB2_PERIPH_GPIOB`; + - `boot_dl_strap_active()`:使能 GPIOB 时钟 → 配为**输入 + 内部下拉** + (`GPIO_MODE_INPUT` + `GPIO_PULL_DOWN`)→ 读 `GPIO_ReadInputDataBit`, + 为高返回 1。不接跳线时内部弱下拉把脚拉低 → 正常启动;外接 3.3V 强驱动 + 覆盖弱下拉 → 读高 → 进 download; + - 主流程:banner 后**先查 strap**(置 enter_dl 并打印 + `[boot] strap pin HIGH (3V3): download mode`),strap 生效时**跳过 2s + 回车窗口**直接进 download;未生效则继续走原有 2s 窗口 + 救砖判断, + 两条旧入口行为不变。 +- 版本:`Boot/src/boot_version.h` `BOOT_FW_VERSION` V1.01.00 → V1.01.01。 +- 用法:板子断电 → 用跳线把 J3 的 PB5 接到 3.3V(J3 上有 VDD_U1/3.3V 脚)→ + 上电/复位 → 看到 `strap pin HIGH (3V3)` 即进入 download 模式(CLI + OTA)。 +- 注意:PB5 与 LPUART 无冲突(本工程未用 LPUART 日志);若日后产品板复用 + PB5,只需改上述三个宏即可换脚。 + +## 54. Boot download CLI 移植 TAB 命令补全(2026-09-06,Boot V1.01.02) + +- 从 APP 的 `mcm-ddc-ble/src/app_cli.c` 把 **TAB 命令名自动补全**移植到 + `Boot/src/boot_cli.c`(Boot 侧为裸机轮询行编辑器,命令表是本地 `s_cmds[]`, + 直接引用本地表而非 cli_core 的枚举函数): + - `boot_cli_tab_complete()`:只补全首 token(已含空格则不补);单匹配→补全 + 命令名并追加一个空格;多匹配→先扩展到公共前缀,再按 TAB 列出候选; + - `boot_cli_redraw()`:多匹配列出候选后重画 `caiic->` 提示符 + 当前行 + (Boot 无历史导航,`shownLen` 恒等于当前行长); + - `boot_cli_run()`:switch 新增 `CLI_KEY_TAB(0x09)` 分支,`len` 由 + `uint8_t` 改 `uint16_t`;ready banner 提示 `(TAB = complete)`。 +- 行为与 APP 一致:`b`+TAB → 扩到 `bs`(bsdump/bsset 公共前缀),再 TAB 列出 + `bsdump bsset`;`d`+TAB → `devinfo `;空行+TAB → 列出全部命令。 +- 版本:`Boot/src/boot_version.h` V1.01.01 → V1.01.02;构建 0E/0W, + `Code=10894 RO-data=2590 RW-data=96 ZI-data=6648`,bin 13580B(16KB 区内)。 diff --git a/tools/out/mothercup_ble_prod.bin b/tools/out/mothercup_ble_prod.bin index b4f335f..43b64ab 100644 Binary files a/tools/out/mothercup_ble_prod.bin and b/tools/out/mothercup_ble_prod.bin differ diff --git a/tools/out/mothercup_ble_prod.hex b/tools/out/mothercup_ble_prod.hex index ee05b64..58b5fb8 100644 --- a/tools/out/mothercup_ble_prod.hex +++ b/tools/out/mothercup_ble_prod.hex @@ -11,10 +11,10 @@ :10009000F7000001F7000001F7000001F700000180 :1000A000F7000001F7000001F7000001F700000170 :1000B000F7000001F7000001F7000001F700000160 -:1000C0000348854600F00CF900480047411F000135 +:1000C0000348854600F02EF9004800477D210001D5 :1000D000585A002040BA7047C0BA70470138FDD165 :1000E000704700000448804704480047FEE7FEE7E9 -:1000F000FEE7FEE7FEE7FEE7F5110001C1000001A3 +:1000F000FEE7FEE7FEE7FEE74D120001C10000014A :1001000030B50B46014600202022012409E00D46AF :10011000D5409D4205D31D469540491B2546954037 :1001200040191546521E002DF1DC30BD03460B432D @@ -24,789 +24,830 @@ :10016000F6E710B513460A4604461946FFF7F0FFB6 :10017000204610BD421C0178401C0029FBD1801A8A :10018000704710B5002200E0521C835C8C5CA342D7 -:1001900001D1002BF8D1D8B2E1B2401A10BD30B570 -:1001A00004460020034600E05B1C934203D2E05C5F -:1001B000CD5C401BF8D030BDF7B582B00F460026AD -:1001C000029C01F037F90090006801902578641CCA -:1001D000002D05D000F02CF80068405DC007F5D177 -:1001E0002B2D02D02D2D1CD0641E00980021016003 -:1001F00039462046049A00F01FF80146002F04D02B -:100200003868A04201D1029838600098006802283E -:100210000BD00098019A0260700506D5484205B0DF -:10022000F0BD012080020643DFE70846F7E7000043 -:1002300000487047C82E0001F7B582B0029C002725 -:100240002078641C15460197302802D0002D15D067 -:1002500015E020780127641C782804D0582802D0A3 -:10026000002D09D00BE0002D01D0102D07D1002763 -:1002700010252078641C02E0082500E00A250026ED -:10028000009610E00099012769430818020C2946DE -:1002900080B2714300908E183804864201D3012049 -:1002A00001902078641C294600F02CF80028E9DA37 -:1002B0000398002805D0002F01D0641E00E0029CA6 -:1002C00004600198002806D001F0B4F80221016012 -:1002D000C81E05B0F0BD009930040843F9E70000DE -:1002E000064C0125064E05E0E36807CC2B430C3C89 -:1002F00098471034B442F7D3FFF7E6FEFC31000113 -:100300001C3200013A2800D23038202302469A439A -:10031000412A01D310463738884201D30020C04318 -:1003200070470000F0B58DB006460F462C224449B8 -:1003300002A8FFF7FBFE02A801F062FC002804D12E -:1003400040A001F0C5FD0DB0F0BD022E0FDB01A9EC -:10035000786802F019FA002805D1019801280DD01B -:10036000019802280AD045A001F0B2FDEBE70398FE -:10037000012801D1022000E0012001900199039899 -:10038000884204D14CA0019901F0D4FCDBE701982C -:10039000012801D104A800E008A80446019801281A -:1003A00001D14C4800E04C480090216800988142FF -:1003B00007D16068002804D007218903606888425B -:1003C00006D96368226845A0019901F0B3FCBAE739 -:1003D00050A001F07DFD6168206801F023FC054616 -:1003E000A168A94209D02B46A2685848019901F09A -:1003F000A1FC57A001F06CFDA5E76368E26861A06D -:10040000019901F097FC0198039002A801F002FB0A -:10041000002803D06BA001F05BFD94E76EA001F013 -:1004200057FDC82001F00AFA00BFBFF34F8F714893 -:100430007149C860BFF34F8F00BF00BFFEE70000E7 -:100440000040000161707073773A20626F6F7473BF -:10045000657474696E67207265636F726420696E7B -:1004600076616C69642C2072656675736520746FA3 -:10047000207377697463680D0A0000007573616703 -:10048000653A206170707377205B317C325D202883 -:100490006E6F20617267203D2073776974636820F6 -:1004A000746F20746865206F746865722062616E75 -:1004B0006B290D0A0000000061707073773A2061AB -:1004C0006C7265616479206F6E20415050256C75A7 -:1004D0000D0A00000080000100400201617070738D -:1004E000773A2062616E6B256C75207265636F725E -:1004F0006420696E76616C69642028616464723D71 -:1005000030782530386C582073697A653D256C75D4 -:10051000290D0A0061707073773A207665726966FA -:1005200079696E672074617267657420696D6167AF -:1005300065206372632028666577207365636F6E3C -:100540006473292E2E2E0D0A000000006831000170 -:100550002020202020202072756E20424C45204F04 -:10056000544120746F207772697465206120766130 -:100570006C696420696D6167652066697273740DCA -:100580000A00000061707073773A2062616E6B251B -:100590006C7520696D616765206F6B2028766572C8 -:1005A0002030782530386C582C20256C7520422955 -:1005B0002C20737769746368696E672E2E2E0D0A7E -:1005C0000000000061707073773A20666C61736898 -:1005D000206661696C0D0A0061707073773A20645F -:1005E0006F6E652C20726573657474696E672E2E4C -:1005F0002E0D0A000400FA0500ED00E030B58BB0C6 -:1006000004460D462C2204496846FFF78FFD6846D4 -:1006100001F040FA0BB030BD0040000170B58CB065 -:1006200006460C46032E0ADA53A001F051FC5AA0EC -:1006300001F04EFC5E4801F04BFC0CB070BD694609 -:10064000A06802F0A1F8002803D05AA001F040FCF5 -:10065000F3E72C225C4901A8FFF768FD01A801F02F -:10066000CFFA002806D12C2101A8FFF778FD57A06A -:1006700001F02EFC63A16068FFF783FD00280CD118 -:100680000098012806D00098022803D05FA001F04E -:100690001FFCD2E70098029058E06068007862285A -:1006A00050D160684078312803D0606840783228A3 -:1006B00048D160684078312801D103A800E007A83C -:1006C00005466168881C59A1FFF75BFD00280ED123 -:1006D00058490098884207D057490098884203D06B -:1006E00056A001F0F5FBA8E7009828602EE06168AD -:1006F000881C61A1FFF745FD00280BD10721890364 -:100700000098884203D95EA001F0E2FB95E70098CB -:1007100068601BE06168881C62A1FFF732FD002859 -:1007200002D10098A86011E06168881C5EA1FFF703 -:1007300028FD002802D10098E86007E05BA001F0E6 -:10074000C7FB7AE759A001F0C3FB76E761685DA0BB -:10075000009A01F0EFFA01A801F05CF9002803D03B -:1007600061A001F0B5FB68E764A001F0B1FB01A84E -:1007700001F090F900BF60E775736167653A206228 -:1007800073736574203C6669656C643E203C7661D9 -:100790006C3E0D0A0000000020206669656C643A1A -:1007A00020616374697665203C317C323E0D0A001D -:1007B000B031000162737365743A2062616420761F -:1007C000616C75650D0A000000400001627373657D -:1007D000743A206578697374696E67207265636F17 -:1007E000726420696E76616C69642C207265627532 -:1007F000696C642066726F6D2073637261746368E4 -:100800000D0A0000616374697665000062737365A8 -:10081000743A20616374697665206D757374206223 -:10082000652031206F7220320D0A0000616464720D -:100830000000000000800001004002016273736547 -:10084000743A2061646472206D757374206265204F -:1008500043414949435F415050315F424153452034 -:100860006F722043414949435F415050325F4241DA -:1008700053450D0A0000000073697A65000000000E -:1008800062737365743A2073697A6520657863656D -:10089000656473207468652062616E6B2073697A89 -:1008A000650D0A006372630076657200627373659A -:1008B000743A20756E6B6E6F776E206669656C6436 -:1008C0000D0A000062737365743A202573203D2081 -:1008D00030782530386C582C2077726974696E67CF -:1008E0002E2E2E0D0A00000062737365743A206686 -:1008F0006C617368206661696C0D0A0062737365D0 -:10090000743A206F6B202876657269666965642980 -:100910000D0A0000F8B5164C16492068884208D127 -:100920002821204601F07EF9A16A884201D10120E8 -:1009300000E00020064665680FA112A001F0FAF958 -:10094000002E03D117A001F0C3FA0225294620A0EA -:1009500001F0F0F900F07EFF7D21C9000090FFF763 -:10096000CFFB074639461FA001F0E4F9F8BD0000AF -:100970000040000111C011CA56312E30312E3030E6 -:1009800000000000626F6F746C6F616465723A20E2 -:1009900025732C20646F776E6C6F6164206D6F64BB -:1009A000650D0A00626F6F7473657474696E673ADF -:1009B00020494E56414C4944202D204F544120742B -:1009C00061726765747320415050310D0A00000058 -:1009D0006375722062616E6B3A20415050256C75D0 -:1009E0000D0A0000757074696D653A20256C7520DC -:1009F000730D0A0070B506460D46022E1EDB00245C -:100A000015E00C226243184B99586868FFF7B9FB50 -:100A100000280BD10C206043134BC01842680C20F7 -:100A20006043195811A001F085F970BD641C092CB0 -:100A3000E7D311A0696801F07DF9F6E717A001F08E -:100A400047FA00240BE00C206043074BC0184268B3 -:100A50000C206043195805A001F06CF9641C092CA6 -:100A6000F1D300BFE1E70000A82A00012020252DD6 -:100A700038732025730D0A00756E6B6E6F776E20CC -:100A8000636F6D6D616E643A2025732028747279EE -:100A9000202768656C7027290D0A0000636F6D6D53 -:100AA000616E64733A0D0A0070B504460D46034842 -:100AB00001F00EFA01200249087070BDCC2E000131 -:100AC0000C40002008A001F003FAC82000F0B6FE98 -:100AD00000BFBFF34F8F08480849C860BFF34F8F6E -:100AE00000BF00BFFEE70000726573657474696E35 -:100AF000672E2E2E0D0A00000400FA0500ED00E01E -:100B000070B504460D4605A001F0E2F90BA001F016 -:100B1000DFF917A001F0DCF970BD00007573617298 -:100B200074313A2054583D5042362052583D50427C -:100B3000372028414634290D0A000000626175649F -:100B40003A203436303830302C20382064617461DB -:100B500020626974732C206E6F20706172697479E1 -:100B60002C20312073746F70206269740D0A0000AC -:100B7000666C6F7720636F6E74726F6C3A206E6F65 -:100B80006E653B2074783A20706F6C6C65643B2016 -:100B900072783A20444D412072696E672028334BA9 -:100BA000422C20706F6C6C6564290D0A00000000F7 -:100BB00070B504460D4605A107A001F0BBF8114829 -:100BC000016811A001F0B6F870BD000056312E305A -:100BD000312E303000000000626F6F746C6F616402 -:100BE00065722076657273696F6E3A2025732028CE -:100BF000646F776E6C6F6164206D6F6465290D0A98 -:100C0000000000000040002053797374656D436F4D -:100C10007265436C6F636B203D20256C7520487AAC -:100C20000D0A00000168254A1140016000210160A1 -:100C300041608160C1602249884208D12049083959 -:100C400049680F2211431E4A083A516035E01C4999 -:100C50001431884208D11A4908394968F0221143F1 -:100C6000174A083A516028E015492831884209D1CD -:100C70001349083949680F2212021143104A083AF1 -:100C800051601AE00E493C31884209D10C490839BB -:100C900049680F2212031143094A083A51600CE0D7 -:100CA00007495031884208D10549083949680F225F -:100CB00012041143024A083A51607047FEFF0000D7 -:100CC00008000240002904D0026801231A43026090 -:100CD00003E00268014B1A4002607047FEFF00000B -:100CE0000146486880B2704710B5002202680D4B7B -:100CF0001A400C6A8B6823430C6923434C692343D5 -:100D00008C692343CC6923434C6A23438C6A234375 -:100D10001A430260CB6843600B6883604B68C36012 -:100D200010BD00000F80FFFF10B5002B01D0106137 -:100D300001E00024146110BD70B503460A4600218D -:100D40000024002076E001268E40156835402C46B0 -:100D5000002C6ED05568022D02D05568122D20D17E -:100D600008250D40002D0ED0586A4D07EE0E0F25B8 -:100D7000B5400646AE4330464E07F60E5569B540BF -:100D8000284358620DE0186A4D07EE0E0F25B54056 -:100D90000646AE4330464E07F60E5569B540284329 -:100DA00018625568012D08D05568112D05D0556879 -:100DB000022D02D05568122D0BD1586801258D40A7 -:100DC0000646AE4330461579ED06ED0F8D402843BB -:100DD000586018684E000325B5400646AE433046BD -:100DE0001579AD07AD0F4E00B54028431860D8689F -:100DF0004E000325B5400646AE4330464E0095688A -:100E0000B5402843D860986801258D400646AE431A -:100E10003046D5688D4028439860D86A4E00012539 -:100E2000B5400646AE4330464E001569B5402843EE -:100E3000D862491C1568CD40002D84D170BD0000DA -:100E4000054901600F21416100214160816001215C -:100E5000C160002101617047FF3F0000F7B5D4B0C9 -:100E600004460E460020539005205290002500278E -:100E700000BFEFF310800090FF21453101A8FFF77C -:100E80006EF901F0A5FC05462448854218D10120E1 -:100E90000003844202D1002053902AE00120400345 -:100EA000844202D14011539023E003200003844286 -:100EB00003D10120400253901BE0529857B0F0BD7F -:100EC0001748854213D101200003844201D1539079 -:100ED0000FE001204003844201D1539009E0032038 -:100EE0000003844201D1539003E05298E6E7529800 -:100EF000E4E705AF0137FF2241320A4901A8FFF7B5 -:100F000015F9012000F0A9FA3146569A5398B847CE -:100F10005290009800F0A1FA5298CFE7C440130015 -:100F200085601300CE28000170B50446002500BF7F -:100F300000BFEFF310800546012000F091FA00BFDA -:100F400001200006241A20460549096888470646FC -:100F500000BF284600F084FA00BF304670BD000094 -:100F60005040002010B508480849086094300849EE -:100F70000860FF382D3807490860C92292000649E9 -:100F80000938FFF7D3F810BDCD4F002050400020A6 -:100F90005440002058400020202B0001F8B50446A2 -:100FA0000D461646002700BF00BFEFF3108007462E -:100FB000012000F055FA00BF01200006241A324635 -:100FC00029462046054B1B689847009000BF3846CD -:100FD00000F046FA00BF0098F8BD00005440002021 -:100FE000002905D0054A52690243044B5A6104E0C6 -:100FF000024A52698243014B5A6170470010024015 -:10100000002905D0054A92690243044B9A6104E025 -:10101000024A92698243014B9A6170470010024074 -:1010200010B500210022214B5B680424234019469F -:10103000002902D0042906D102E01D4B036005E01F -:101040001C4B036002E01A4B036000BF00BF174B4C -:101050005B683024234019460909174B5A5C036822 -:10106000D3404360114B5B68072424022340194698 -:10107000090A124B5A5C4368D34083600B4B5B6890 -:10108000E40023401946C90A0C4B5A5C4368D3401C -:10109000C360064BDB6A10242340002B02D0084BB0 -:1010A000036102E07D23DB03036110BD00100240F9 -:1010B0000090D0030048E8011C2B0001142B000114 -:1010C00000093D00F1B58AB0002009907D20C000E4 -:1010D00008900125AD020027002007907F20069090 -:1010E000402400260020059003902001029000205B -:1010F00001903E490A98884206D83D48006861023E -:1011000088433B49086006E0394800680121C9036B -:101110000843374908607D21C9000A98FEF7F0FFAF -:101120007D21C9000090FEF7EBFF450100BF30486C -:1011300000687F2109028843019020020199084339 -:101140002B4908600520FEF7C9FF10E00120FEF7DB -:10115000C5FF2748406B02210840002800D007E067 -:101160000598411C05910899884200D900E0EDE7F7 -:1011700000BF1F48C06B86B2AE4201D9771B00E0AA -:10118000AF1B0298874203D2E0B20390B8B202903C -:10119000AE4201D3069400E00794069907984018E0 -:1011A000C005000E04900498A04200D103E0049C06 -:1011B00009988742BBD800BF0D4800687F2109020B -:1011C0008843019003980002019908430849086088 -:1011D0000846406840084000486000BF0448406836 -:1011E000042108400028F9D10BB0F0BD0090D003D5 -:1011F0000010024010B53E48C069012109070843AC -:101200003B49C861812000063A4908633A48486171 -:101210003A4808623A4800680321890388433849FC -:1012200008603421374800F073F836480069401CE4 -:10123000002803D033480069002817D12C484068A3 -:101240000121090408432A494860084640680721EB -:101250000902884326494860084640680915084342 -:10126000234948602848FFF72DFF3FE02148806967 -:101270004409640123480078C006C00E04431D4899 -:1012800084611B4800680121C9038843184908602C -:10129000084600687F21090288430446194800690E -:1012A00000022043124908600846406801210904F1 -:1012B00008430F49486008464068072109028843EF -:1012C0000B494860084640680915084308494860CA -:1012D0000846006A0D490840054908620846006A48 -:1012E0000849C968090208430149086210BD0000A5 -:1012F00000100240007000400F08000018000200BB -:1013000000100140604000200090D003FF00F8FF73 -:1013100070B504460D462A46214601200003FFF71A -:101320009DFD70BD002905D0828901235B031A430E -:10133000828103E08289024B1A408281704700005B -:10134000FFDF0000002A03D0838A0B43838202E080 -:10135000838A8B43838270470246002001235B020D -:10136000994200D100BF13880B40002B01D001200F -:1013700000E0002070470000F0B589B005460E4639 -:1013800000240020089000BF00BF0027B08900287B -:1013900000D000BF2F462C8A20480440F088044328 -:1013A0002C82AC891E480440B08831890843718979 -:1013B00008430443AC81AC8A1A480440B089044312 -:1013C000AC8201A8FFF72CFE1748874202D104988F -:1013D000089001E003980890326891001923089A58 -:1013E0005A431046FEF78CFE079064210798FEF7DB -:1013F00087FE04012109642041430798411A0691A0 -:1014000006990901084632306421FEF779FE00078B -:10141000000F04432C8109B0F0BD0000FFCF000095 -:10142000F3E90000FFFC000000380140CA05D20DBE -:1014300082807047004870475C40002002E008C886 -:10144000121F08C1002AFAD170477047002001E03E -:1014500001C1121F002AFBD1704780F3108870472A -:1014600080F3108870470000002007490870074982 -:10147000086007490860074908600749086007498C -:101480000870074908707047104000202440002071 -:10149000284000202C400020344000204440002000 -:1014A000454000200020024908700249088070472A -:1014B0004C40002048400020F7B584B00746494919 -:1014C00006980860002686E0BC5D47480078002842 -:1014D00004D0012810D0022874D13AE0CA2C0AD1D5 -:1014E0004248047001204249088005204149088093 -:1014F00001203D4908706BE03D4801880088401C90 -:101500003B4A1080394844541046008805281FD1B2 -:101510003649C978354A1279120211430846FF212B -:10152000E131884205D900212F4A1170304A1180DB -:101530000DE0C11D2F4A1180114609882C4A1288DE -:10154000914201D1002100E00221274A117000BF21 -:101550003EE0274801880088401C254A1080234827 -:1015600044541046008823490988884228D11F48DE -:10157000C0781E490979090208430546281D81B231 -:101580001A48401C00F09CFD0390681D1749095C37 -:10159000A81D164A105C00020143029102990398AB -:1015A000884207D11046817840782B46521D019021 -:1015B00000F034F800200C4908700D49088000BF85 -:1015C00006E0FFE70020084908700949088000BFCD -:1015D00000BF701C86B20598864200DA74E707B037 -:1015E000F0BD0000404000204C400020444D002051 -:1015F000484000204A40002031B5064A0121684693 -:10160000FFF75AFF04480478002003490870204679 -:1016100038BD0000A126000146400020F8B5044670 -:101620000D4616461F46102C06D0112C0AD0122C3F -:101630000ED0132C24D111E03A463146284600F052 -:1016400085FD1EE03A463146284600F037FE18E098 -:101650003A463146284600F005FF12E0FFF704FF46 -:101660000948002213210368284600F0DBFF0748E1 -:1016700000680749884202D101200649087000E04D -:1016800000BF00BFF8BD0000244000204040002003 -:10169000A12600014640002010B51148007800281E -:1016A0001CD000F0D7F80F490968441A0E4800789A -:1016B000002803D0FF202D30844203D27D2000017A -:1016C00084420AD300BFBFF34F8F08480849C8605F -:1016D000BFF34F8F00BF00BFFEE700BF10BD00008B -:1016E0003A4000203C400020394000200400FA0528 -:1016F00000ED00E008B500240025354800F0E8FBC7 -:1017000000BFFFF7C9FF3348007800280ED000F073 -:10171000A1F8401B3049884208D900202D490870A3 -:10172000FFF7C0FE2DA000F0D3FB0024684600F0B8 -:101730002DF9002800D1E4E726480078002810D0D1 -:1017400000F088F8054668460078FFF755FF002846 -:1017500006D000201F4908702AA000F0B9FB002421 -:10176000CFE768460078082815D00A2805D00D284C -:1017700002D07F2818D10FE000BF2DA000F0A8FBF9 -:1017800000202C490855084600F06EFA00241BA0E2 -:1017900000F09EFB1AE000BF002C04D0601EC4B213 -:1017A00025A000F095FB11E06846007820280CD3B6 -:1017B0004F2C0AD2684602782046611CCCB21D49E3 -:1017C0000A540121684600F00DF900BF00BF98E7F8 -:1017D000043000010C400020B80B00000D0A5B6FC4 -:1017E00074615D2062696E617279206D6F6465203D -:1017F0004F4646202869646C65290D0A6361696952 -:10180000632D3E000D0A5B6F74615D2062696E613D -:101810007279206D6F6465204F4646202861626FA3 -:101820007274290D0A63616969632D3E000000002E -:101830000D0A0000F44C00200820080000B5024604 -:1018400000F008F8034600BF00F004F8C01A904208 -:10185000FAD300BD074800690121090408400028A7 -:1018600004D005480068401C03490860024800682D -:101870007047000000E000E00840002000B595B08F -:1018800001210820FFF7BCFB01218803FFF7B8FB0B -:101890000FA8FFF7D5FA40200F90022010900420E7 -:1018A00014900FA93148FFF747FA80200F900420C9 -:1018B00014900FA92D48FFF73FFAE120C0020B90CA -:1018C0000021684601864186818601870C21C186F8 -:1018D0000BA92748FFF750FD01210846FFF780FBC1 -:1018E00000212448FFF7EEF92248FFF79BF9012376 -:1018F000204A20491C390320FFF716FA1C48001D16 -:1019000000901D4801900020029003208002039067 -:101910000020049080200590002006900790202051 -:1019200008900002099000200A9069461148FFF7CC -:10193000DBF900201149088001210E48FFF7C2F9A8 -:10194000012240210A48FFF7FDFC01210848FFF76A -:10195000E9FC0B480B4948610020886105200861BB -:1019600000200949086015B000BD0000000C0140CE -:10197000003801401C000240944000200440002038 -:10198000FFF9000000E000E00840002070B50446C8 -:1019900000F01CF805460B480088A84201D1002041 -:1019A00070BD094807490988405C207003218902FD -:1019B00004480088401CFEF7A3FB02480180012078 -:1019C000EEE70000044000209440002010B50448D9 -:1019D000FFF786F903218902081A80B210BD0000C2 -:1019E0001C00024070B505460E4600240CE0295D3F -:1019F0000748FFF71BFD00BF80210548FFF7ACFC3F -:101A00000028F9D0601C84B2B442F0DB70BD000045 -:101A10000038014010B5044600F02EF81048206050 -:101A2000204600F021F8A0620E48FFF77DFA00285A -:101A300001D0012010BD2C2221460A48FFF7AEFA42 -:101A4000002801D00120F5E72C2206492046FEF7A8 -:101A5000A6FB002801D00120ECE70020EAE7000007 -:101A600011C011CA0040000110B5044628212046CB -:101A700000F0D8F810BD000010B505480078002827 -:101A800004D1FFF76FFA01200149087010BD000072 -:101A90004D40002070B50446204600F0B1F8002803 -:101AA00001D015A000E016A005462A461A491BA041 -:101AB00000F040F920A0216800F03CF925A0616801 -:101AC00000F038F929A02369E268A16800F032F932 -:101AD00032A0616900F02EF936A0236AE269A1699B -:101AE00000F028F92DA0616A00F024F93DA0A16A58 -:101AF00000F020F970BD000076616C6964000000A0 -:101B0000494E56414C49442028626164206D61670A -:101B100069632F637263290000400001626F6F7474 -:101B200073657474696E6720402030782530386C96 -:101B3000583A2025730D0A0020206D6167696320E3 -:101B40002020202020203D2030782530386C580D72 -:101B50000A00000020206163746976655F62616E2F -:101B60006B203D20256C750D0A000000202062616D -:101B70006E6B313A20616464723D30782530386C88 -:101B8000582073697A653D256C75206372633D301A -:101B9000782530386C580D0A0000000020202020E5 -:101BA00020202020207665723D30782530386C5812 -:101BB0000D0A0000202062616E6B323A206164647D -:101BC000723D30782530386C582073697A653D2530 -:101BD0006C75206372633D30782530386C580D0A7F -:101BE0000000000020206372633332202020202078 -:101BF00020203D2030782530386C580D0A00000038 -:101C000010B5044606492068884207D12046FFF7F0 -:101C10002BFFA16A884201D1012010BD0020FCE702 -:101C200011C011CA30B502460B460021C94312E06B -:101C30001078521C414000240BE04808CD07ED0FFE -:101C4000002D01D0074D00E0002568400146601CD2 -:101C5000C4B2082CF1DB18465B1E0028E8D1C8434B -:101C600030BD00002083B8EDF0B589B007460026EE -:101C70003C4621E000E0641C20782028FBD020783E -:101C80000928F8D02078002800D11AE03046761CC8 -:101C9000800001A90C5000E0641C2078002805D0C9 -:101CA0002078202802D020780928F5D12078002833 -:101CB00002D000202070641C2078002801D0082E5B -:101CC000D8DB00BF002E02D1002009B0F0BD0025F6 -:101CD00013E00C226A430D4B99580198FEF751FA14 -:101CE000002809D10C2068430849401801A98268DE -:101CF000304690470020E8E76D1C092DE9D304A089 -:101D0000019900F017F80120DFE70000A82A000180 -:101D1000756E6B6E6F776E20636F6D6D616E643A7A -:101D20002025732028747279202768656C70272914 -:101D30000D0A00000FB4F0B589B0644C0FA80890EC -:101D4000B0E00E98007807900E98401C0E9007980F -:101D5000252803D007982070641CA3E0002006907B -:101D6000202605900E9800782D2804D10120069099 -:101D70000E98401C0E900E980078302803D1302623 -:101D80000E98401C0E900BE00E9800780E99491C9E -:101D90000E91014630390A220598504308180590E3 -:101DA0000E980078302803DB0E9800783928EBDD98 -:101DB0000E9800786C2802D10E98401C0E900E9858 -:101DC0000578002D02D00E98401C0E90642D21D075 -:101DD00006DC252D58D0582D45D0632D58D112E062 -:101DE000732D04D0752D2CD0782D51D13AE02020C0 -:101DF0000090089802C808902046069B059A00F0BB -:101E000009FD04464CE008980178001D08902170F7 -:101E1000641C45E0089880C80890FB0F002F01DA89 -:101E2000784200E038460A2202A9019000F019FD2C -:101E3000009602A92046069B059A00F0EBFC04469A -:101E40002EE0089901C900230A22089102A900F096 -:101E500008FD009602A92046069B059A00F0DAFCD0 -:101E600004461DE000BF089901C900231022089113 -:101E700002A900F0F6FC009602A92046069B059AEE -:101E800000F0C8FC04460BE025202070641C07E02D -:101E900025202070641C002D01D02570641C00BF1B -:101EA00000BF00BF0E980078002804D007485430C7 -:101EB000844200D245E7002008902070034800F0DB -:101EC00007F809B0F0BC08BC04B01847944C0020D7 -:101ED00070B504462046FEF74DF985B229462046E6 -:101EE000FFF780FD70BD000001460A684B68094895 -:101EF00082420DD3084882420AD8084608308342FD -:101F000006D3072080030818834201D201207047BE -:101F10000020FCE70140002000C000200446012012 -:101F2000C007204305490863206880F3088800BF84 -:101F300062B66068804700BFFEE7000000700040A6 -:101F40001CB52F4C2F480190002700262E492068F1 -:101F500088421CD128212046FFF764FEA16A8842EE -:101F600015D16168022902D12146183101E02146CC -:101F7000083108460127234A0168914206D34122CD -:101F800092040168914201D20168019100BFFFF7FC -:101F900075FC1EA000F00FFCFFF75CFC05460FE08F -:101FA0006846FFF7F3FC002809D0684600780D2842 -:101FB00003D0684600780A2801D1012607E000BF57 -:101FC000FFF748FC401B7D2109018842E8D300BF90 -:101FD000002E0AD1002F08D10A48FFF785FF0028FC -:101FE00003D1012619A000F0E6FB002E04D024A0A6 -:101FF00000F0E1FBFFF77EFB0198FFF78FFF000089 -:10200000004000010080000111C011CA0D0A5B628E -:102010006F6F745D2043414949432D424F4F542017 -:1020200056312E30312E3030202D20456E746572A1 -:102030002077697468696E2032733A20646F776E16 -:102040006C6F6164206D6F64650D0A005B626F6F79 -:10205000745D206E6F2076616C6964206170702001 -:10206000696D6167652C20666F7263656420646FBB -:10207000776E6C6F6164206D6F64650D0A000000FF -:102080005B626F6F745D20444F574E4C4F4144204C -:102090004D4F444520286F74612F636C69206F7623 -:1020A000657220554152542C202768656C7027209A -:1020B000666F7220636F6D6D616E6473290D0A0027 -:1020C00030B502460F4817E01578521C2C026040CC -:1020D00000230EE00124E4030440002C04D044005B -:1020E000094D6C40A4B201E04404240C20465C1C61 -:1020F000E3B2082BEED300BF0B464C1EA1B2002B5F -:10210000E2D130BDFFFF00002110000010B50446F1 -:1021100011E00C4909680C4A12688818FEF704FFA0 -:10212000002801D0052010BD0748006801210903DF -:1021300040180549086004480068A042E9D300201F -:10214000F1E70000144000202C400020F7B586B0D5 -:102150000C4615460C2D09D0102D07D00023012266 -:102160001021069800F05EFA09B0F0BD204600F09C -:102170004DFA0646201D00F049FA05902046083029 -:1021800000F044FA0490102D04D120460C3000F0E9 -:102190003DFA00E00020039036480078002807D080 -:1021A0003548022210210368069800F03BFADBE76D -:1021B000324F33493868884208D128213846FFF722 -:1021C00031FDB96A884201D1012000E00020019070 -:1021D0000198002804D07868012801D1294800E03E -:1021E00029480290042E03D307208003864206D993 -:1021F000002303221021069800F014FAB4E72348C4 -:102200000078002804D1FEF7ADFE01201F490870B8 -:102210000120184908701E49029808601D48066090 -:102220001D49059808601D4904980860002012495E -:1022300008601B4908601B4908601B490860039837 -:10224000C007C00F002806D0184800681849884207 -:1022500001D1012000E00020164908700020164935 -:10226000087000231A461021069800F0DBF900BF21 -:102270007AE70000104000202440002000400001C8 -:1022800011C011CA00400201008000013840002046 -:1022900014400020184000201C4000202040002056 -:1022A000284000202C4000203440002040400020E6 -:1022B000A12600014440002045400020F7B582B02F -:1022C00061480078002807D10023022211210298DA -:1022D00000F0A8F905B0F0BD0498042807D25B48C7 -:1022E000012211210368029800F09CF9F2E703989B -:1022F00000F08CF901900398061D0498041F0094C7 -:10230000524901980968884212D051480078002843 -:1023100003D050480078002809D14C4802221121EE -:102320000368029800F07EF901204A490870D1E75D -:1023300046480068001948490968884207D9434857 -:10234000032211210368029800F06CF9C2E73F48AC -:10235000006800193D49086008460068FFF7D6FE8E -:102360000546002D21D13D48006800281DD00AE017 -:1023700031783A4802680068401C384B1860384889 -:102380008154761C641E35480068042801D2002C54 -:10239000EED132480068042807D10421304800F00B -:1023A00019F9054600202D490860002D0BD1042C99 -:1023B00009D3A708BF003946304600F00BF905469F -:1023C000F619E41B00BF002D08D1002C06D02246D0 -:1023D00031462348FDF7AAFE20480460002D09D0AD -:1023E0001A482A4611210368029800F01BF9FFF7EA -:1023F0003BF86FE70020174908701548007800285F -:1024000019D0124801680098081A000B00030F4900 -:102410000968090B0903884205D10C4800680E4978 -:102420000968884206D109480022112103680298F0 -:1024300000F0F8F84EE705480022112103680298E1 -:1024400000F0F0F800BF45E71040002024400020D5 -:102450004440002045400020184000203440002027 -:1024600030400020F7B50E4650480078002806D1CD -:10247000002302221221009800F0D4F8FEBD029839 -:10248000042807D04A48012212210368009800F06E -:10249000C9F8F3E7304600F0B9F80546444800684B -:1024A00044490968884207D0414802221221036842 -:1024B000009800F0B7F8E1E73F480068002820D016 -:1024C00008E0FF213C4802680068401C3A4B186055 -:1024D0003A488154384800680428F2D30421374828 -:1024E00000F078F8002809D031480522122103684D -:1024F000009800F097F8FEF7B7FFBFE700202E49DD -:1025000008602C4801682E480068FFF78BFB0446E2 -:10251000AC4203D12B480068844209D024480422ED -:1025200012210368009800F07DF8FEF79DFFA5E7F3 -:1025300023480068001D00F069F80746204800683D -:102540000830874206D31E4800681A4909684018B7 -:10255000B84209D81648062212210368009800F0F4 -:1025600061F8FEF781FF89E700F0A8F8002809D09C -:102570000F48052212210368009800F053F8FEF777 -:1025800073FF7BE70020104908700A4800221221DF -:102590000368009800F046F8FFF75CF90B49086003 -:1025A00001200B49087000BF68E7000010400020C0 -:1025B00024400020184000203440002030400020FB -:1025C000144000201C400020394000203C400020E6 -:1025D0003A40002070B505460C460A4909680A4A87 -:1025E0001268881822462946FEF7D8FC002801D038 -:1025F000052070BD044800680019034908600020E8 -:10260000F7E7000014400020284000200146087829 -:102610004A78120210438A7812041043CA781206CC -:1026200010437047FFB587B005460E461C46684606 -:1026300006750999417584752004010E6846C175B7 -:102640002002010E68460176200E6946487613483E -:10265000006800281FD0CA21684601711F214171FE -:1026600085710621C17100210172062205A9093078 -:10267000FDF75CFD0A2101A80130FFF721FD0746A7 -:102680006846C773391201740D2101A8034A126804 -:1026900090470BB0F0BD00BFFBE7000040400020BA -:1026A00070B504460D4629462046FFF79BF90120E8 -:1026B0000149087070BD00003940002010B58CB091 -:1026C0002C222A4901A8FDF731FD294901988842A9 -:1026D00006D128212548FFF7A5FA0B99884203D097 -:1026E0002C2101A8FDF73BFD2148019021480068FD -:1026F0002149884201D1012000E0022002901D48BA -:1027000000681D49884201D103A800E007A80446DB -:102710001848006820601948006860601848006820 -:10272000A06018480068E060282101A8FFF77AFA45 -:102730000B900E48FEF7F8FB002802D005200CB0E5 -:1027400010BD2C2201A90948FEF728FC002801D061 -:102750000520F4E72C22054901A8FDF720FD0028FB -:1027600001D00520EBE70020E9E700000040000170 -:1027700011C011CA14400020008000011840002040 -:102780001C40002020400020F8B504460D460020E3 -:102790000090002269462046FDF70EFD064600988F -:1027A000A04203D000980078002801D00120F8BD95 -:1027B0002E600020FBE710B5044604E02046641CB0 -:1027C0000121FFF70FF920780028F7D110BD000094 -:1027D00070B5D2B00024002500BFEFF3108006468C -:1027E000FF21453101A8FDF7BAFC01AC0134982264 -:1027F000074901A8FDF79AFC0120FEF72EFEA0472D -:1028000005463046FEF729FE284652B070BD00004E -:102810000E2A0001F8B504460D4616461F46284606 -:10282000FDF7A8FC0090002F08D102E00698207068 -:10283000641C3046761E00998842F7DC03E0287855 -:1028400020706D1C641C28780028F8D102E020203C -:102850002070641C3046761E00998842F7DC2046C2 -:10286000F8BDFFB583B007460C46002500BF3846CB -:102870000599FDF745FC0E460A2E02D2304630304F -:1028800001E030463730C2B22846691CCDB26946F5 -:102890000A5438460599FDF733FC0746002FE6D168 -:1028A0000698002805D02D222846691CCDB269461D -:1028B0000A5406E0681EC0B205466946085C2070EE -:1028C000641C002DF6D10020207007B0F0BD40BA86 -:1028D0007047C0BA70470138FDD170470000F7B5A6 -:1028E0000325AD06286A82B016460C464008400013 -:1028F0002862286A022108432862286A8007FCD4DB -:102900006620686001272F61A86AC005FCD5992060 -:1029100068602F61A86AC005FCD5FF209130FFF7E1 -:10292000DAFFFF230133AB626846EF60352169604F -:102930002F61A96AC905FCD5AB62A969EF60C9B26C -:1029400005226A602F61AA6AD205FCD5AB62AA692A -:102950000902D2B211430180C80702D0032005B09A -:10296000F0BDAB626869FF2108318843686168691E -:10297000C91E084368610298000248306860082058 -:10298000A860EE602F61A86AC005FCD5FF20013069 -:10299000A8620023F61CB0080ED0B20811480068E7 -:1029A00099006054060A09194E70060C000E8E70CC -:1029B0005B1CC8709A42F1D8FF200130A862686998 -:1029C000FF21083188436861686938436861286A73 -:1029D000800880002862286A38432862002005B0F9 -:1029E000F0BD8000000C032080064169FF22083200 -:1029F00091434161426901210A434261026A92089E -:102A000092000262026A0A430262704700000020DC -:102A100003218906096A49084900032292061162C6 -:102A20001146096A0222114303229206116200BF75 -:102A300003218906096A022211400229F8D0D10136 -:102A40000322920691620321D1609F2151600121EE -:102A5000116100BF03218906896AFF2201321140FA -:102A60009142F7D103229206916211468869496921 -:102A7000FF220832914303229206516111464969AF -:102A8000012211430322920651611146096A890805 -:102A9000890011621146096A01221143032292063C -:102AA0001162704700000000E0300001AC3000010E -:102AB000F50900019030000180300001B10B0001E8 -:102AC000A4300001AC2F000115090001E83000011D -:102AD00054300001FD050001203100013C2F0001B0 -:102AE0001D060001603100012831000125030001AD -:102AF00050300001742F0001A90A000118310001B3 -:102B0000E42F0001C50A000198300001F0300001F7 -:102B1000010B00010000000001020304000001029B -:102B20000138FDD170470000F0B40324A406236AE5 -:102B30005B085B002362236A02252B432362236A1E -:102B40009B07FCD4FF230133A3626569DE1DB543F7 -:102B5000656165691E1D3543656100026B3060600B -:102B60000820A060E26001262661A06AC005FCD5AD -:102B7000A3620023D21C90080ED095080F4800686D -:102B80009A008854070A52185770070C000E977065 -:102B90005B1CD0709D42F1D86069FF2108318843E9 -:102BA0006061606930436061206A80088000206253 -:102BB000206A30432062F0BC002070478000000C87 -:102BC000F8B5064601200025C004864201D905203B -:102BD000F8BD0324A406206A400840002062206A51 -:102BE000022108432062206A8007FCD4FF270137B6 -:102BF000A76200F0BBF8002801D0032515E00620ED -:102C0000606001212161A06AC005FCD5A762300285 -:102C1000203060602161A06AC005FCD5A7620C4825 -:102C200000F0C8F8002800D102256069FF210831B2 -:102C3000884360616069012108436061206A8008FF -:102C400080002062206A084320622846F8BD000008 -:102C5000E6960100F7B506460120C00482B015468D -:102C6000864202D9052005B0F0BD03208006016A26 -:102C7000490849000162016A022211430162016AA6 -:102C80008907FCD4FF2101318162F2B28C1AA5427E -:102C900000D8ACB20398009000F068F8002840D14A -:102CA00006214806416001210161816AC905FCD500 -:102CB000FF2101310320800681624169FF22083231 -:102CC0009143416141690422114341613102323132 -:102CD0004160C4600022002C16D9009887183B7808 -:102CE000F87819467B7800061B021943BB781B0451 -:102CF000194301430802F978000A090608431949F3 -:102D00000860121DA242E8D3012103208006016160 -:102D1000816AC905FCD5FF2101318162124800F0AA -:102D200049F8A54209D00398361900192D1BFF2434 -:102D300001340390A542ADD8ABE70320800641697A -:102D4000FF220832914341614169012211434161EF -:102D5000016A890889000162016A11430162002049 -:102D600005B0F0BD8000000C1A06000038B4012543 -:102D7000032080066A46C560352141600561816A8D -:102D8000C905FCD5FF24013484628169C560CBB2DA -:102D9000052141600561816AC905FCD584628069AD -:102DA0001902C0B2014388B21180C00700D00120CF -:102DB00038BC7047F8B400210125032292066B4607 -:102DC000D560352454601561946AE405FCD5FF276D -:102DD000013797629469D560E4B2052656601561A3 -:102DE000966AF605FCD5976296692402F6B23443DA -:102DF0001C80E30722D0814202D9F8BC0020704732 -:102E0000032292066B46D560352454601561491C37 -:102E1000946AE405FCD597629469D560E4B205260E -:102E200056601561966AF605FCD597629269240290 -:102E3000D2B21443A2B21C80D207DCD1F8BC01206C -:102E40007047000000404040404040404040414109 -:102E5000414141404040404040404040404040406F -:102E60004040404040050202020202020202020209 -:102E70000202020202202020202020202020200206 -:102E80000202020202029090909090901010101096 -:102E90001010101010101010101010101010101032 -:102EA00002020202020288888888888808080808C6 -:102EB0000808080808080808080808080808080892 -:102EC0000202020240000000452E00015B6F7461A7 -:102ED0005D2062696E617279206D6F6465204F4E6E -:102EE000202D2073656E642030784341204F54417B -:102EF000206672616D6573206E6F770D0A28626CB3 -:102F0000655F70726F746F636F6C2E6D6420736594 -:102F10006374696F6E20362E363B204F54415F41FB -:102F2000424F5254206F722033732069646C6520C5 -:102F30006578697473290D0A000000006273736577 -:102F400074203C6669656C643E203C76616C3E3A58 -:102F500020777269746520626F6F74736574746929 -:102F60006E67206669656C642028636172656675AA -:102F70006C2129006F74613A205541525420656ECE -:102F800074657273204F54412062696E61727920BA -:102F90006672616D65206D6F6465202873656520BC -:102FA00068656C70206F74612900000073686F772A -:102FB00020626F6F7420696E666F202B20637572BC -:102FC0002062616E6B20284F5441207772697465CE -:102FD0007320746865204F544845522062616E6BBF -:102FE0002900000072657365743A20737973746503 -:102FF0006D20726573657420287265626F6F742925 -:10300000000000000D0A434C49207265616479207C -:1030100028626F6F746C6F6164657220646F776E85 -:103020006C6F6164206D6F6465292E205479706522 -:10303000202768656C702720666F7220636F6D6D46 -:10304000616E64732E0D0A63616969632D3E000031 -:103050006F746100627364756D703A2073686F7786 -:1030600020626F6F7473657474696E672072656334 -:103070006F7264202B2063726320636865636B004A -:1030800073686F7720626F6F746C6F616465722014 -:1030900076657273696F6E0075617274696E666FC2 -:1030A00000000000646576696E666F0068656C708C -:1030B000205B636D645D3A206C69737420636F6D8F -:1030C0006D616E6473202F2073686F77206F6E655B -:1030D00020636F6D6D616E6427732068656C70008E -:1030E00068656C7000000000627364756D700000AC -:1030F00075617274696E666F3A2073686F772055D8 -:1031000053415254312070696E732F626175642F80 -:10311000666F726D61740000726573657400000003 -:1031200062737365740000006170707377205B31A7 -:103130007C325D3A2073776974636820626F6F74C4 -:103140002062616E6B202863726320766572696607 -:1031500069656429202B207265626F6F740000001E -:10316000617070737700000061707073773A20624D -:10317000616E6B256C7520696D6167652063726394 -:10318000206D69736D6174636820287265636F7266 -:10319000642030782530386C582C20616374756158 -:1031A0006C2030782530386C58290D0A000000005A -:1031B0002020202020202020206231616464727C45 -:1031C0006232616464727C623173697A657C6232F6 -:1031D00073697A657C62316372637C6232637263A5 -:1031E0007C62317665727C6232766572203C6865FD -:1031F000787C6465633E0D0A000000001C3200010B -:1032000000400020600000003C1400017C320001FE -:1032100060400020F81900004C1400010090D00319 -:10322000000000000000000000000000000000009E -:10323000000000000000000000000000000000008E -:10324000000000000000000000000000000000007E -:10325000000000000000000000000000000000006E -:10326000000000000000000000000000000000005E -:0C32700000000000000000000000000052 +:1001900001D1002BF8D1D8B2E1B2401A10BDC9B2DA +:1001A00003E003788B4203D0401C521EF9D200209A +:1001B000704730B504460020034600E05B1C9342C4 +:1001C00003D2E05CCD5C401BF8D030BD03460A781A +:1001D0000270401C491C002AF9D11846704730B5FE +:1001E00005460020034600E05B1C934205D2EC5C10 +:1001F000C85C201A01D1002CF6D130BDF7B582B011 +:100200000F460026029C01F041F900900068019021 +:100210002578641C002D05D000F02CF80068405DA6 +:10022000C007F5D12B2D02D02D2D1CD0641E0098B7 +:100230000021016039462046049A00F01FF801466B +:10024000002F04D03868A04201D10298386000988D +:10025000006802280BD00098019A0260700506D54C +:10026000484205B0F0BD012080020643DFE70846A2 +:10027000F7E700000048704748310001F7B582B049 +:10028000029C00272078641C15460197302802D074 +:10029000002D15D015E020780127641C782804D0A3 +:1002A000582802D0002D09D00BE0002D01D0102DD0 +:1002B00007D1002710252078641C02E0082500E003 +:1002C0000A250026009610E00099012769430818C6 +:1002D000020C294680B2714300908E183804864281 +:1002E00001D3012001902078641C294600F02CF8ED +:1002F0000028E9DA0398002805D0002F01D0641EF9 +:1003000000E0029C04600198002806D001F0BEF8CD +:1003100002210160C81E05B0F0BD009930040843F9 +:10032000F9E70000064C0125064E05E0E36807CC1E +:100330002B430C3C98471034B442F7D3FFF7C4FE6C +:100340008C340001AC3400013A2800D2303820232C +:1003500002469A43412A01D310463738884201D3D6 +:100360000020C04370470000F0B58DB006460F4630 +:100370002C22444902A8FFF7D9FE02A801F05EFD35 +:10038000002804D140A001F0C1FE0DB0F0BD022E46 +:100390000FDB01A9786802F037FB002805D101982E +:1003A00001280DD0019802280AD045A001F0AEFE28 +:1003B000EBE70398012801D1022000E00120019021 +:1003C00001990398884204D14CA0019901F0D0FD15 +:1003D000DBE70198012801D104A800E008A8044641 +:1003E0000198012801D14C4800E04C480090216858 +:1003F0000098814207D16068002804D00721890352 +:100400006068884206D96368226845A0019901F0B6 +:10041000AFFDBAE750A001F079FE6168206801F0F5 +:100420001FFD0546A168A94209D02B46A26858487D +:10043000019901F09DFD57A001F068FEA5E76368F2 +:10044000E26861A0019901F093FD0198039002A870 +:1004500001F0FEFB002803D06BA001F057FE94E7EB +:100460006EA001F053FEC82001F0E6FA00BFBFF312 +:100470004F8F71487149C860BFF34F8F00BF00BFF5 +:10048000FEE700000040000161707073773A20625F +:100490006F6F7473657474696E67207265636F72D1 +:1004A0006420696E76616C69642C20726566757370 +:1004B0006520746F207377697463680D0A0000000B +:1004C00075736167653A206170707377205B317C6A +:1004D000325D20286E6F20617267203D207377693E +:1004E00074636820746F20746865206F7468657227 +:1004F0002062616E6B290D0A00000000617070734C +:10050000773A20616C7265616479206F6E2041508A +:1005100050256C750D0A00000080000100400201AA +:1005200061707073773A2062616E6B256C75207212 +:1005300065636F726420696E76616C6964202861FE +:100540006464723D30782530386C582073697A6560 +:100550003D256C75290D0A0061707073773A20761D +:100560006572696679696E67207461726765742067 +:10057000696D616765206372632028666577207303 +:1005800065636F6E6473292E2E2E0D0A0000000025 +:10059000F83300012020202020202072756E204298 +:1005A0004C45204F544120746F2077726974652048 +:1005B000612076616C696420696D61676520666998 +:1005C0007273740D0A00000061707073773A2062D4 +:1005D000616E6B256C7520696D616765206F6B209E +:1005E000287665722030782530386C582C20256CA0 +:1005F000752042292C20737769746368696E672EB1 +:100600002E2E0D0A0000000061707073773A20668C +:100610006C617368206661696C0D0A0061707073AB +:10062000773A20646F6E652C207265736574746907 +:100630006E672E2E2E0D0A000400FA0500ED00E074 +:1006400030B58BB004460D462C2204496846FFF7AE +:100650006DFD684601F03CFB0BB030BD0040000171 +:1006600070B58CB006460C46032E0ADA53A001F092 +:100670004DFD5AA001F04AFD5E4801F047FD0CB067 +:1006800070BD6946A06802F0BFF9002803D05AA0E7 +:1006900001F03CFDF3E72C225C4901A8FFF746FD81 +:1006A00001A801F0CBFB002806D12C2101A8FFF7FF +:1006B00056FD57A001F02AFD63A16068FFF761FDB8 +:1006C00000280CD10098012806D00098022803D0F9 +:1006D0005FA001F01BFDD2E70098029058E060682F +:1006E0000078622850D160684078312803D0606873 +:1006F0004078322848D160684078312801D103A879 +:1007000000E007A805466168881C59A1FFF739FD7C +:1007100000280ED158490098884207D057490098C0 +:10072000884203D056A001F0F1FCA8E700982860A9 +:100730002EE06168881C61A1FFF723FD00280BD122 +:10074000072189030098884203D95EA001F0DEFCEE +:1007500095E7009868601BE06168881C62A1FFF75C +:1007600010FD002802D10098A86011E06168881C83 +:100770005EA1FFF706FD002802D10098E86007E0BF +:100780005BA001F0C3FC7AE759A001F0BFFC76E75B +:1007900061685DA0009A01F0EBFB01A801F058FA36 +:1007A000002803D061A001F0B1FC68E764A001F06B +:1007B000ADFC01A801F08CFA00BF60E775736167BA +:1007C000653A206273736574203C6669656C643EAB +:1007D000203C76616C3E0D0A000000002020666916 +:1007E000656C643A20616374697665203C317C32C3 +:1007F0003E0D0A004034000162737365743A206252 +:1008000061642076616C75650D0A0000004000018E +:1008100062737365743A206578697374696E6720D2 +:100820007265636F726420696E76616C69642C20F6 +:1008300072656275696C642066726F6D2073637295 +:10084000617463680D0A0000616374697665000075 +:1008500062737365743A20616374697665206D759F +:1008600073742062652031206F7220320D0A0000FF +:100870006164647200000000008000010040020119 +:1008800062737365743A2061646472206D75737469 +:100890002062652043414949435F415050315F42E6 +:1008A000415345206F722043414949435F415050B5 +:1008B000325F424153450D0A0000000073697A65BA +:1008C0000000000062737365743A2073697A6520D2 +:1008D00065786365656473207468652062616E6B1A +:1008E0002073697A650D0A00637263007665720091 +:1008F00062737365743A20756E6B6E6F776E2066E7 +:1009000069656C640D0A000062737365743A202592 +:1009100073203D2030782530386C582C2077726950 +:1009200074696E672E2E2E0D0A00000062737365C7 +:10093000743A20666C617368206661696C0D0A0008 +:1009400062737365743A206F6B20287665726966EE +:10095000696564290D0A0000F8B5164C164920682F +:10096000884208D12821204601F07AFAA16A8842FB +:1009700001D1012000E00020064665680FA112A009 +:1009800001F0F6FA002E03D117A001F0BFFB0225FB +:10099000294620A001F0ECFA01F07AF87D21C90087 +:1009A0000090FFF7ADFB074639461FA001F0E0FAC3 +:1009B000F8BD00000040000111C011CA56312E30B0 +:1009C000312E303200000000626F6F746C6F616412 +:1009D00065723A2025732C20646F776E6C6F6164AA +:1009E000206D6F64650D0A00626F6F7473657474B7 +:1009F000696E673A20494E56414C4944202D204F9C +:100A00005441207461726765747320415050310DF8 +:100A10000A0000006375722062616E6B3A204150DB +:100A200050256C750D0A0000757074696D653A206B +:100A3000256C7520730D0A0070B506460D46022E12 +:100A40001EDB002415E00C226243184B995868689D +:100A5000FFF797FB00280BD10C206043134BC01805 +:100A600042680C206043195811A001F081FA70BD52 +:100A7000641C092CE7D311A0696801F079FAF6E744 +:100A800017A001F043FB00240BE00C206043074B50 +:100A9000C01842680C206043195805A001F068FA9C +:100AA000641C092CF1D300BFE1E70000282D0001F0 +:100AB0002020252D38732025730D0A00756E6B6E6E +:100AC0006F776E20636F6D6D616E643A20257320C1 +:100AD00028747279202768656C7027290D0A000038 +:100AE000636F6D6D616E64733A0D0A0070B50446F4 +:100AF0000D46034801F00AFB01200249087070BD51 +:100B00004C3100010C40002008A001F0FFFAC82081 +:100B100000F092FF00BFBFF34F8F08480849C8603C +:100B2000BFF34F8F00BF00BFFEE700007265736523 +:100B30007474696E672E2E2E0D0A00000400FA05EB +:100B400000ED00E070B504460D4605A001F0DEFAA8 +:100B50000BA001F0DBFA17A001F0D8FA70BD00007D +:100B60007573617274313A2054583D5042362052A8 +:100B7000583D5042372028414634290D0A000000D4 +:100B8000626175643A203436303830302C20382099 +:100B90006461746120626974732C206E6F207061CF +:100BA000726974792C20312073746F7020626974BB +:100BB0000D0A0000666C6F7720636F6E74726F6C45 +:100BC0003A206E6F6E653B2074783A20706F6C6CC3 +:100BD00065643B2072783A20444D412072696E670B +:100BE0002028334B422C20706F6C6C6564290D0AF1 +:100BF0000000000070B504460D4605A107A001F0F5 +:100C0000B7F91148016811A001F0B2F970BD0000F8 +:100C100056312E30312E303200000000626F6F747A +:100C20006C6F616465722076657273696F6E3A20CD +:100C300025732028646F776E6C6F6164206D6F641C +:100C400065290D0A000000000040002053797374EC +:100C5000656D436F7265436C6F636B203D20256C3F +:100C60007520487A0D0A00000168254A114001608C +:100C70000021016041608160C1602249884208D141 +:100C80002049083949680F2211431E4A083A516029 +:100C900035E01C491431884208D11A49083949689D +:100CA000F0221143174A083A516028E015492831CB +:100CB000884209D11349083949680F2212021143A9 +:100CC000104A083A51601AE00E493C31884209D175 +:100CD0000C49083949680F2212031143094A083A9E +:100CE00051600CE007495031884208D10549083964 +:100CF00049680F2212041143024A083A51607047B2 +:100D0000FEFF000008000240002904D00268012311 +:100D10001A43026003E00268014B1A400260704708 +:100D2000FEFF00000146486880B2704710B50022FF +:100D300002680D4B1A400C6A8B6823430C692343ED +:100D40004C6923438C692343CC6923434C6A234376 +:100D50008C6A23431A430260CB6843600B6883604C +:100D60004B68C36010BD00000F80FFFF10B5002B63 +:100D700001D0106101E00024146110BD70B503467C +:100D80000A4600210024002076E001268E401568E6 +:100D900035402C46002C6ED05568022D02D0556887 +:100DA000122D20D108250D40002D0ED0586A4D0778 +:100DB000EE0E0F25B5400646AE4330464E07F60E02 +:100DC0005569B540284358620DE0186A4D07EE0E8C +:100DD0000F25B5400646AE4330464E07F60E556920 +:100DE000B540284318625568012D08D05568112D6B +:100DF00005D05568022D02D05568122D0BD15868C8 +:100E000001258D400646AE4330461579ED06ED0FBF +:100E10008D402843586018684E000325B5400646AB +:100E2000AE4330461579AD07AD0F4E00B5402843AF +:100E30001860D8684E000325B5400646AE433046DC +:100E40004E009568B5402843D860986801258D40CC +:100E50000646AE433046D5688D4028439860D86A30 +:100E60004E000125B5400646AE4330464E0015699A +:100E7000B5402843D862491C1568CD40002D84D167 +:100E800070BD0000054901600F21416100214160F2 +:100E900081600121C160002101617047FF3F0000B6 +:100EA0000246002013690B40002B01D0012000E016 +:100EB00000207047F7B5D4B004460E46002053908A +:100EC000052052900025002700BFEFF3108000900E +:100ED000FF21453101A8FFF742F901F0B9FD0546B0 +:100EE0002448854218D101200003844202D1002009 +:100EF00053902AE001204003844202D140115390D4 +:100F000023E003200003844203D1012040025390D8 +:100F10001BE0529857B0F0BD1748854213D101200D +:100F20000003844201D153900FE00120400384422A +:100F300001D1539009E003200003844201D1539072 +:100F400003E05298E6E75298E4E705AF0137FF2245 +:100F500041320A4901A8FFF7E9F8012000F0A9FA97 +:100F60003146569A5398B8475290009800F0A1FA2B +:100F70005298CFE7C4401300856013004E2B000148 +:100F800070B50446002500BF00BFEFF31080054692 +:100F9000012000F091FA00BF01200006241A20462B +:100FA000054909688847064600BF284600F084FACC +:100FB00000BF304670BD00005040002010B508480A +:100FC00008490860943008490860FF382D380749FF +:100FD0000860C922920006490938FFF7A7F810BD3A +:100FE000CD4F0020504000205440002058400020A9 +:100FF000A02D0001F8B504460D461646002700BF97 +:1010000000BFEFF310800746012000F055FA00BF43 +:1010100001200006241A324629462046054B1B684B +:101020009847009000BF384600F046FA00BF00988D +:10103000F8BD000054400020002905D0054A52693F +:101040000243044B5A6104E0024A52698243014B55 +:101050005A61704700100240002905D0054A926984 +:101060000243044B9A6104E0024A92698243014BB5 +:101070009A6170470010024010B500210022214BF8 +:101080005B68042423401946002902D0042906D1B4 +:1010900002E01D4B036005E01C4B036002E01A4BAD +:1010A000036000BF00BF174B5B6830242340194624 +:1010B0000909174B5A5C0368D3404360114B5B68C6 +:1010C0000724240223401946090A124B5A5C43683C +:1010D000D34083600B4B5B68E40023401946C90A88 +:1010E0000C4B5A5C4368D340C360064BDB6A102448 +:1010F0002340002B02D0084B036102E07D23DB0379 +:10110000036110BD001002400090D0030048E801C8 +:101110009C2D0001942D000100093D00F1B58AB01D +:10112000002009907D20C00008900125AD02002715 +:10113000002007907F200690402400260020059084 +:10114000039020010290002001903E490A988842B5 +:1011500006D83D480068610288433B49086006E0C4 +:10116000394800680121C9030843374908607D21D7 +:10117000C9000A98FEF7C4FF7D21C9000090FEF760 +:10118000BFFF450100BF304800687F210902884346 +:1011900001902002019908432B4908600520FEF7C1 +:1011A0009DFF10E00120FEF799FF2748406B0221C8 +:1011B0000840002800D007E00598411C05910899D7 +:1011C000884200D900E0EDE700BF1F48C06B86B23F +:1011D000AE4201D9771B00E0AF1B0298874203D2D1 +:1011E000E0B20390B8B20290AE4201D3069400E0A0 +:1011F0000794069907984018C005000E04900498BB +:10120000A04200D103E0049C09988742BBD800BFEC +:101210000D4800687F21090288430190039800026D +:1012200001990843084908600846406840084000A2 +:10123000486000BF04484068042108400028F9D1F4 +:101240000BB0F0BD0090D0030010024010B53E4836 +:10125000C0690121090708433B49C8618120000694 +:101260003A4908633A4848613A4808623A4800688F +:10127000032189038843384908603421374800F046 +:1012800073F836480069401C002803D033480069D1 +:10129000002817D12C4840680121090408432A4935 +:1012A000486008464068072109028843264948608B +:1012B0000846406809150843234948602848FFF755 +:1012C0002DFF3FE0214880694409640123480078EC +:1012D000C006C00E04431D4884611B4800680121FC +:1012E000C903884318490860084600687F2109023D +:1012F00088430446194800690002204312490860E7 +:10130000084640680121090408430F49486008461F +:1013100040680721090288430B4948600846406835 +:1013200009150843084948600846006A0D49084005 +:10133000054908620846006A0849C9680902084365 +:101340000149086210BD000000100240007000401A +:101350000F0800001800020000100140604000204B +:101360000090D003FF00F8FF70B504460D462A46F2 +:10137000214601200003FFF79DFD70BD002905D027 +:10138000828901235B031A43828103E08289024B35 +:101390001A40828170470000FFDF0000002A03D05E +:1013A000838A0B43838202E0838A8B438382704764 +:1013B0000246002001235B02994200D100BF13883E +:1013C0000B40002B01D0012000E0002070470000FE +:1013D000F0B589B005460E4600240020089000BFF5 +:1013E00000BF0027B089002800D000BF2F462C8AFC +:1013F00020480440F08804432C82AC891E480440F5 +:10140000B08831890843718908430443AC81AC8AB0 +:101410001A480440B0890443AC8201A8FFF72CFEAF +:101420001748874202D10498089001E00398089079 +:10143000326891001923089A5A431046FEF760FE5D +:10144000079064210798FEF75BFE040121096420E0 +:1014500041430798411A069106990901084632301E +:101460006421FEF74DFE0007000F04432C8109B0F4 +:10147000F0BD0000FFCF0000F3E90000FFFC00001A +:1014800000380140CA05D20D82807047004870477D +:101490005C40002002E008C8121F08C1002AFAD1EF +:1014A00070477047002001E001C1121F002AFBD1E4 +:1014B000704780F31088704780F3108870470000F1 +:1014C0000020074908700749086007490860074974 +:1014D00008600749086007490870074908707047A5 +:1014E0001040002024400020284000202C400020F4 +:1014F00034400020444000204540002000200249A4 +:1015000008700249088070474C4000204840002085 +:10151000F7B584B00746494906980860002686E07A +:10152000BC5D47480078002804D0012810D002286C +:1015300074D13AE0CA2C0AD14248047001204249D1 +:10154000088005204149088001203D4908706BE072 +:101550003D4801880088401C3B4A1080394844546B +:101560001046008805281FD13649C978354A1279B6 +:10157000120211430846FF21E131884205D90021BA +:101580002F4A1170304A11800DE0C11D2F4A118081 +:10159000114609882C4A1288914201D1002100E0AD +:1015A0000221274A117000BF3EE0274801880088C9 +:1015B000401C254A10802348445410460088234983 +:1015C0000988884228D11F48C0781E490979090234 +:1015D00008430546281D81B21A48401C00F0B0FEA1 +:1015E0000390681D1749095CA81D164A105C00028B +:1015F0000143029102990398884207D110468178ED +:1016000040782B46521D019000F034F800200C4920 +:1016100008700D49088000BF06E0FFE70020084978 +:1016200008700949088000BF00BF701C86B2059889 +:10163000864200DA74E707B0F0BD000040400020A9 +:101640004C400020444D0020484000204A400020EB +:1016500031B5064A01216846FFF75AFF044804786D +:10166000002003490870204638BD000021290001F0 +:1016700046400020F8B504460D4616461F46102C7D +:1016800006D0112C0AD0122C0ED0132C24D111E02C +:101690003A463146284600F099FE1EE03A46314669 +:1016A000284600F04BFF18E03A463146284601F044 +:1016B00019F812E0FFF704FF09480022132103681C +:1016C000284601F0EFF8074800680749884202D130 +:1016D00001200649087000E000BF00BFF8BD00000F +:1016E00024400020404000202129000146400020E5 +:1016F00010B51148007800281CD000F0C9F90F4936 +:101700000968441A0E480078002803D0FF202D30C5 +:10171000844203D27D20000184420AD300BFBFF37C +:101720004F8F08480849C860BFF34F8F00BF00BF04 +:10173000FEE700BF10BD00003A4000203C40002002 +:10174000394000200400FA0500ED00E0F8B5074636 +:101750000D463846FEF70EFD84B20BA000F0D6FC15 +:10176000002604E00BA000F0D1FC701C86B2AE4253 +:10177000F8DB05A000F0CAFC002C03D02146384657 +:1017800000F04EFA2046F8BD0D63616969632D3E95 +:10179000000000002000000008B5002400253A48A1 +:1017A00000F0B4FC00BFFFF7A3FF38480078002822 +:1017B0000ED000F06DF9401B3549884208D9002051 +:1017C00032490870FFF79AFE32A000F09FFC002417 +:1017D000684600F0F9F9002800D1E4E72B480078CA +:1017E000002810D000F054F9054668460078FFF74D +:1017F0002FFF002806D00020244908702FA000F0F9 +:1018000085FC0024CFE7684600780A280BD004DC6A +:10181000082816D0092823D11CE00D2802D07F28E3 +:101820001ED10FE000BF30A000F070FC00202F4957 +:101830000855084600F036FB00241EA000F066FCA8 +:1018400020E000BF002C04D0601E84B228A000F06D +:101850005DFC17E02146254800F04CF8044611E0F5 +:101860006846007820280CD34F2C0AD268460278AC +:101870002046611C8CB21D490A540121684600F0C3 +:10188000CFF900BF00BF8EE7843200010C4000207A +:10189000B80B00000D0A5B6F74615D2062696E61B8 +:1018A0007279206D6F6465204F4646202869646C0C +:1018B00065290D0A63616969632D3E000D0A5B6F3E +:1018C00074615D2062696E617279206D6F6465205C +:1018D0004F4646202861626F7274290D0A63616960 +:1018E00069632D3E000000000D0A0000F44C00204A +:1018F00008200800F0B597B007460C4600250020E8 +:101900000290224620213846FEF749FC002802D0EA +:10191000204617B0F0BD0020385500262AE00C20E4 +:101920007043414908580190224639460198FEF714 +:1019300056FC00281DD10298002808D103A801995F +:10194000FEF744FC03A8FEF715FC85B20EE001E0AB +:10195000681E85B2A54206DD2A4603A80199FEF756 +:101960003EFC0028F4D1002003A948550298401CF1 +:101970000290761C092ED2D30298002801D120466D +:10198000C7E70298012819D109E003A90819012124 +:1019900000F046F903A8005D3855601C84B24F2C56 +:1019A00001D2AC42F1DB4F2C06D220203855601C0E +:1019B00084B21EA000F0AAFB2046AAE7A5420FDDD4 +:1019C00009E003A90819012100F02AF903A8005D24 +:1019D0003855601C84B24F2C23D2AC42F1DB20E09E +:1019E00013A000F093FB002612E00C2070430E4978 +:1019F00008580190224639460198FEF7F0FB00286E +:101A000005D1019800F082FB0AA000F07FFB761C54 +:101A1000092EEAD306A000F079FB21463846FFF7ED +:101A200095FE204675E70000282D000120000000EB +:101A30000D0A00002020000000B5024600F028F842 +:101A4000034600BF00F024F8C01A9042FAD300BD4C +:101A500000B587B001210820FFF7FEFA01A8FFF7C3 +:101A600011FA20200190002002900220039001A989 +:101A70000648FFF783F920210448FFF711FA0128EF +:101A800001D107B000BD0020FBE70000000C0140C1 +:101A900007480069012109040840002804D00548CE +:101AA0000068401C03490860024800687047000055 +:101AB00000E000E00840002000B595B001210820BA +:101AC000FFF7CAFA01218803FFF7C6FA0FA8FFF74C +:101AD000D9F940200F9002201090042014900FA9F3 +:101AE0003148FFF74BF980200F90042014900FA984 +:101AF0002D48FFF743F9E120C0020B900021684612 +:101B000001864186818601870C21C1860BA9274861 +:101B1000FFF75EFC01210846FFF78EFA00212448FA +:101B2000FFF7F2F82248FFF79FF80123204A2049E7 +:101B30001C390320FFF71AF91C48001D00901D48AE +:101B40000190002002900320800203900020049066 +:101B50008020059000200690079020200890000229 +:101B6000099000200A9069461148FFF7DFF800202D +:101B70001149088001210E48FFF7C6F801224021D3 +:101B80000A48FFF70BFC01210848FFF7F7FB0B4859 +:101B90000B4948610020886105200861002009493F +:101BA000086015B000BD0000000C01400038014085 +:101BB0001C0002409440002004400020FFF9000077 +:101BC00000E000E00840002070B5044600F01CF87A +:101BD00005460B480088A84201D1002070BD094885 +:101BE00007490988405C2070032189020448008865 +:101BF000401CFEF785FA024801800120EEE7000054 +:101C0000044000209440002010B50448FFF78AF8F3 +:101C100003218902081A80B210BD00001C00024096 +:101C200070B505460E4600240CE0295D0748FFF715 +:101C300029FC00BF80210548FFF7BAFB0028F9D036 +:101C4000601C84B2B442F0DB70BD0000003801407B +:101C500010B5044600F02EF810482060204600F031 +:101C600021F8A0620E48FFF78BF9002801D001206F +:101C700010BD2C2221460A48FFF7BCF9002801D0EC +:101C80000120F5E72C2206492046FEF792FA0028AB +:101C900001D00120ECE70020EAE7000011C011CAE2 +:101CA0000040000110B504462821204600F0D8F875 +:101CB00010BD000010B505480078002804D1FFF7DA +:101CC0007DF901200149087010BD00004D40002041 +:101CD00070B50446204600F0B1F8002801D015A0E8 +:101CE00000E016A005462A461A491BA000F040F95C +:101CF00020A0216800F03CF925A0616800F038F9C7 +:101D000029A02369E268A16800F032F932A0616974 +:101D100000F02EF936A0236AE269A16900F028F9E3 +:101D20002DA0616A00F024F93DA0A16A00F020F91D +:101D300070BD000076616C6964000000494E564138 +:101D40004C49442028626164206D616769632F6398 +:101D50007263290000400001626F6F7473657474D0 +:101D6000696E6720402030782530386C583A20253D +:101D7000730D0A0020206D616769632020202020F8 +:101D800020203D2030782530386C580D0A000000A6 +:101D900020206163746976655F62616E6B203D200F +:101DA000256C750D0A000000202062616E6B313ACF +:101DB00020616464723D30782530386C5820736936 +:101DC0007A653D256C75206372633D307825303827 +:101DD0006C580D0A00000000202020202020202028 +:101DE000207665723D30782530386C580D0A000039 +:101DF000202062616E6B323A20616464723D3078FB +:101E00002530386C582073697A653D256C752063E0 +:101E100072633D30782530386C580D0A00000000A0 +:101E200020206372633332202020202020203D2098 +:101E300030782530386C580D0A00000010B5044683 +:101E400006492068884207D12046FFF72BFFA16A88 +:101E5000884201D1012010BD0020FCE711C011CA49 +:101E600030B502460B460021C94312E01078521CDF +:101E7000414000240BE04808CD07ED0F002D01D0B4 +:101E8000074D00E0002568400146601CC4B2082CE4 +:101E9000F1DB18465B1E0028E8D1C84330BD0000C6 +:101EA0002083B8EDF0B589B0074600263C4621E016 +:101EB00000E0641C20782028FBD020780928F8D086 +:101EC0002078002800D11AE03046761C800001A955 +:101ED0000C5000E0641C2078002805D020782028D1 +:101EE00002D020780928F5D12078002802D00020DF +:101EF0002070641C2078002801D0082ED8DB00BF99 +:101F0000002E02D1002009B0F0BD002513E00C2204 +:101F10006A430D4B99580198FEF733F9002809D10F +:101F20000C2068430849401801A982683046904750 +:101F30000020E8E76D1C092DE9D304A0019900F009 +:101F400017F80120DFE70000282D0001756E6B6E89 +:101F50006F776E20636F6D6D616E643A202573201C +:101F600028747279202768656C7027290D0A000093 +:101F70000FB4F0B589B0644C0FA80890B0E00E988B +:101F8000007807900E98401C0E900798252803D0E3 +:101F900007982070641CA3E000200690202605907E +:101FA0000E9800782D2804D1012006900E98401C30 +:101FB0000E900E980078302803D130260E98401CE1 +:101FC0000E900BE00E9800780E99491C0E91014678 +:101FD00030390A2205985043081805900E98007869 +:101FE000302803DB0E9800783928EBDD0E98007856 +:101FF0006C2802D10E98401C0E900E980578002D8A +:1020000002D00E98401C0E90642D21D006DC252DA8 +:1020100058D0582D45D0632D58D112E0732D04D0DF +:10202000752D2CD0782D51D13AE0202000900898C1 +:1020300002C808902046069B059A00F02BFD044636 +:102040004CE008980178001D08902170641C45E060 +:10205000089880C80890FB0F002F01DA784200E052 +:1020600038460A2202A9019000F03BFD009602A921 +:102070002046069B059A00F00DFD04462EE00899C7 +:1020800001C900230A22089102A900F02AFD009646 +:1020900002A92046069B059A00F0FCFC04461DE0C0 +:1020A00000BF089901C900231022089102A900F07D +:1020B00018FD009602A92046069B059A00F0EAFC4E +:1020C00004460BE025202070641C07E025202070CA +:1020D000641C002D01D02570641C00BF00BF00BF30 +:1020E0000E980078002804D007485430844200D26B +:1020F00045E7002008902070034800F007F809B079 +:10210000F0BC08BC04B01847944C002070B50446DD +:102110002046FEF72FF885B229462046FFF780FDBE +:1021200070BD000001460A684B68094882420DD321 +:10213000084882420AD808460830834206D307205E +:1021400080030818834201D2012070470020FCE779 +:102150000140002000C0002004460120C0072043A9 +:1021600005490863206880F3088800BF62B660688C +:10217000804700BFFEE70000007000401CB5344CF3 +:1021800034480190002700263349206888421CD13A +:1021900028212046FFF764FEA16A884215D16168B4 +:1021A000022902D12146183101E0214608310846B2 +:1021B0000127284A0168914206D34122920401680E +:1021C000914201D20168019100BFFFF775FC23A085 +:1021D00000F031FCFFF73CFC002803D001262FA0C3 +:1021E00000F029FC002E1BD1FFF752FC05460FE042 +:1021F0006846FFF7E9FC002809D0684600780D28FA +:1022000003D0684600780A2801D1012607E000BF04 +:10221000FFF73EFC401B7D2109018842E8D300BF47 +:10222000002E0AD1002F08D10A48FFF77BFF0028B3 +:1022300003D1012625A000F0FEFB002E04D030A023 +:1022400000F0F9FBFFF7A8FA0198FFF785FF0000FF +:10225000004000010080000111C011CA0D0A5B623C +:102260006F6F745D2043414949432D424F4F5420C5 +:1022700056312E30312E3032202D20456E7465724D +:102280002077697468696E2032733A20646F776EC4 +:102290006C6F6164206D6F64650D0A005B626F6F27 +:1022A000745D2073747261702070696E20484947B4 +:1022B000482028335633293A20646F776E6C6F615B +:1022C00064206D6F64650D0A000000005B626F6F33 +:1022D000745D206E6F2076616C696420617070207F +:1022E000696D6167652C20666F7263656420646F39 +:1022F000776E6C6F6164206D6F64650D0A0000007D +:102300005B626F6F745D20444F574E4C4F414420C9 +:102310004D4F444520286F74612F636C69206F76A0 +:10232000657220554152542C202768656C70272017 +:10233000666F7220636F6D6D616E6473290D0A00A4 +:1023400030B502460F4817E01578521C2C02604049 +:1023500000230EE00124E4030440002C04D04400D8 +:10236000094D6C40A4B201E04404240C20465C1CDE +:10237000E3B2082BEED300BF0B464C1EA1B2002BDC +:10238000E2D130BDFFFF00002110000010B504466F +:1023900011E00C4909680C4A12688818FEF7F0FD34 +:1023A000002801D0052010BD07480068012109035D +:1023B00040180549086004480068A042E9D300209D +:1023C000F1E70000144000202C400020F7B586B053 +:1023D0000C4615460C2D09D0102D07D000230122E4 +:1023E0001021069800F05EFA09B0F0BD204600F01A +:1023F0004DFA0646201D00F049FA059020460830A7 +:1024000000F044FA0490102D04D120460C3000F066 +:102410003DFA00E00020039036480078002807D0FD +:102420003548022210210368069800F03BFADBE7EA +:10243000324F33493868884208D128213846FFF79F +:102440000FFDB96A884201D1012000E0002001900F +:102450000198002804D07868012801D1294800E0BB +:1024600029480290042E03D307208003864206D910 +:10247000002303221021069800F014FAB4E7234841 +:102480000078002804D1FEF799FD01201F4908704B +:102490000120184908701E49029808601D4806600E +:1024A0001D49059808601D490498086000201249DC +:1024B00008601B4908601B4908601B4908600398B5 +:1024C000C007C00F002806D0184800681849884285 +:1024D00001D1012000E000201649087000201649B3 +:1024E000087000231A461021069800F0DBF900BF9F +:1024F0007AE7000010400020244000200040000146 +:1025000011C011CA004002010080000138400020C3 +:1025100014400020184000201C40002020400020D3 +:10252000284000202C400020344000204040002063 +:10253000212900014440002045400020F7B582B029 +:1025400061480078002807D1002302221121029857 +:1025500000F0A8F905B0F0BD0498042807D25B4844 +:10256000012211210368029800F09CF9F2E7039818 +:1025700000F08CF901900398061D0498041F009444 +:10258000524901980968884212D0514800780028C1 +:1025900003D050480078002809D14C48022211216C +:1025A0000368029800F07EF901204A490870D1E7DB +:1025B00046480068001948490968884207D94348D5 +:1025C000032211210368029800F06CF9C2E73F482A +:1025D000006800193D49086008460068FFF7D6FE0C +:1025E0000546002D21D13D48006800281DD00AE095 +:1025F00031783A4802680068401C384B1860384807 +:102600008154761C641E35480068042801D2002CD1 +:10261000EED132480068042807D10421304800F088 +:1026200019F9054600202D490860002D0BD1042C16 +:1026300009D3A708BF003946304600F00BF905461C +:10264000F619E41B00BF002D08D1002C06D022464D +:1026500031462348FDF76AFD20480460002D09D06B +:102660001A482A4611210368029800F01BF9FEF768 +:1026700027FF6FE7002017490870154800780028E9 +:1026800019D0124801680098081A000B00030F497E +:102690000968090B0903884205D10C4800680E49F6 +:1026A0000968884206D1094800221121036802986E +:1026B00000F0F8F84EE7054800221121036802985F +:1026C00000F0F0F800BF45E7104000202440002053 +:1026D00044400020454000201840002034400020A5 +:1026E00030400020F7B50E4650480078002806D14B +:1026F000002302221221009800F0D4F8FEBD0298B7 +:10270000042807D04A48012212210368009800F0EB +:10271000C9F8F3E7304600F0B9F8054644480068C8 +:1027200044490968884207D04148022212210368BF +:10273000009800F0B7F8E1E73F480068002820D093 +:1027400008E0FF213C4802680068401C3A4B1860D2 +:102750003A488154384800680428F2D304213748A5 +:1027600000F078F8002809D03148052212210368CA +:10277000009800F097F8FEF7A3FEBFE700202E496F +:1027800008602C4801682E480068FFF769FB044682 +:10279000AC4203D12B480068844209D0244804226B +:1027A00012210368009800F07DF8FEF789FEA5E786 +:1027B00023480068001D00F069F8074620480068BB +:1027C0000830874206D31E4800681A490968401835 +:1027D000B84209D81648062212210368009800F072 +:1027E00061F8FEF76DFE89E700F0A8F8002809D02F +:1027F0000F48052212210368009800F053F8FEF7F5 +:102800005FFE7BE70020104908700A480022122171 +:102810000368009800F046F8FFF73AF90B490860A2 +:1028200001200B49087000BF68E70000104000203D +:102830002440002018400020344000203040002078 +:10284000144000201C400020394000203C40002063 +:102850003A40002070B505460C460A4909680A4A04 +:102860001268881822462946FEF7C4FB002801D0CA +:10287000052070BD04480068001903490860002065 +:10288000F7E70000144000202840002001460878A7 +:102890004A78120210438A7812041043CA7812064A +:1028A00010437047FFB587B005460E461C46684684 +:1028B00006750999417584752004010E6846C17535 +:1028C0002002010E68460176200E694648761348BC +:1028D000006800281FD0CA21684601711F2141717C +:1028E00085710621C17100210172062205A90930F6 +:1028F000FDF71CFC0A2101A80130FFF721FD074666 +:102900006846C773391201740D2101A8034A126881 +:1029100090470BB0F0BD00BFFBE700004040002037 +:1029200070B504460D4629462046FFF779F9012087 +:102930000149087070BD00003940002010B58CB00E +:102940002C222A4901A8FDF7F1FB29490198884268 +:1029500006D128212548FFF783FA0B99884203D036 +:102960002C2101A8FDF7FBFB2148019021480068BC +:102970002149884201D1012000E0022002901D4837 +:1029800000681D49884201D103A800E007A8044659 +:10299000184800682060194800686060184800689E +:1029A000A06018480068E060282101A8FFF758FAE5 +:1029B0000B900E48FEF7E4FA002802D005200CB078 +:1029C00010BD2C2201A90948FEF714FB002801D0F4 +:1029D0000520F4E72C22054901A8FDF7EAFB0028B1 +:1029E00001D00520EBE70020E9E7000000400001EE +:1029F00011C011CA144000200080000118400020BE +:102A00001C40002020400020F8B504460D46002060 +:102A10000090002269462046FDF7F0FB064600982C +:102A2000A04203D000980078002801D00120F8BD12 +:102A30002E600020FBE710B5044604E02046641C2D +:102A40000121FFF7EDF820780028F7D110BD000034 +:102A500070B5D2B00024002500BFEFF31080064609 +:102A6000FF21453101A8FDF77AFB01AC0134982222 +:102A7000074901A8FDF75AFB0120FEF71AFDA04700 +:102A800005463046FEF715FD284652B070BD0000E1 +:102A90008E2C0001F8B504460D4616461F46284602 +:102AA000FDF768FB0090002F08D102E00698207027 +:102AB000641C3046761E00998842F7DC03E02878D3 +:102AC00020706D1C641C28780028F8D102E02020BA +:102AD0002070641C3046761E00998842F7DC204640 +:102AE000F8BDFFB583B007460C46002500BF384649 +:102AF0000599FDF705FB0E460A2E02D2304630300E +:102B000001E030463730C2B22846691CCDB2694672 +:102B10000A5438460599FDF7F3FA0746002FE6D127 +:102B20000698002805D02D222846691CCDB269469A +:102B30000A5406E0681EC0B205466946085C20706B +:102B4000641C002DF6D10020207007B0F0BD40BA03 +:102B50007047C0BA70470138FDD170470000F7B523 +:102B60000325AD06286A82B016460C464008400090 +:102B70002862286A022108432862286A8007FCD458 +:102B80006620686001272F61A86AC005FCD59920DE +:102B900068602F61A86AC005FCD5FF209130FFF75F +:102BA000DAFFFF230133AB626846EF6035216960CD +:102BB0002F61A96AC905FCD5AB62A969EF60C9B2EA +:102BC00005226A602F61AA6AD205FCD5AB62AA69A8 +:102BD0000902D2B211430180C80702D0032005B018 +:102BE000F0BDAB626869FF2108318843686168699C +:102BF000C91E0843686102980002483068600820D6 +:102C0000A860EE602F61A86AC005FCD5FF200130E6 +:102C1000A8620023F61CB0080ED0B2081148006864 +:102C200099006054060A09194E70060C000E8E7049 +:102C30005B1CC8709A42F1D8FF200130A862686915 +:102C4000FF21083188436861686938436861286AF0 +:102C5000800880002862286A38432862002005B076 +:102C6000F0BD8000000C032080064169FF2208327D +:102C700091434161426901210A434261026A92081B +:102C800092000262026A0A4302627047000000205A +:102C900003218906096A4908490003229206116244 +:102CA0001146096A0222114303229206116200BFF3 +:102CB00003218906096A022211400229F8D0D101B4 +:102CC0000322920691620321D1609F21516001216C +:102CD000116100BF03218906896AFF220132114078 +:102CE0009142F7D10322920691621146886949699F +:102CF000FF2208329143032292065161114649692D +:102D0000012211430322920651611146096A890882 +:102D1000890011621146096A0122114303229206B9 +:102D20001162704700000000703300013C33000165 +:102D3000390A00012033000110330001F50B0001B6 +:102D4000343300012C3200015909000178330001AD +:102D5000E432000141060001B0330001BC31000142 +:102D600061060001F0330001B8330001690300017E +:102D7000E0320001F4310001ED0A0001A833000146 +:102D800064320001090B0001283300018033000187 +:102D9000450B0001000000000102030400000102D5 +:102DA0000138FDD170470000F0B40324A406236A63 +:102DB0005B085B002362236A02252B432362236A9C +:102DC0009B07FCD4FF230133A3626569DE1DB54375 +:102DD000656165691E1D3543656100026B30606089 +:102DE0000820A060E26001262661A06AC005FCD52B +:102DF000A3620023D21C90080ED095080F480068EB +:102E00009A008854070A52185770070C000E9770E2 +:102E10005B1CD0709D42F1D86069FF210831884366 +:102E20006061606930436061206A800880002062D0 +:102E3000206A30432062F0BC002070478000000C04 +:102E4000F8B5064601200025C004864201D90520B8 +:102E5000F8BD0324A406206A400840002062206ACE +:102E6000022108432062206A8007FCD4FF27013733 +:102E7000A76200F0BBF8002801D0032515E006206A +:102E8000606001212161A06AC005FCD5A762300203 +:102E9000203060602161A06AC005FCD5A7620C48A3 +:102EA00000F0C8F8002800D102256069FF21083130 +:102EB000884360616069012108436061206A80087D +:102EC00080002062206A084320622846F8BD000086 +:102ED000E6960100F7B506460120C00482B015460B +:102EE000864202D9052005B0F0BD03208006016AA4 +:102EF000490849000162016A022211430162016A24 +:102F00008907FCD4FF2101318162F2B28C1AA542FB +:102F100000D8ACB20398009000F068F8002840D1C7 +:102F200006214806416001210161816AC905FCD57D +:102F3000FF2101310320800681624169FF220832AE +:102F400091434161416904221143416131023231AF +:102F50004160C4600022002C16D9009887183B7885 +:102F6000F87819467B7800061B021943BB781B04CE +:102F7000194301430802F978000A09060843194970 +:102F80000860121DA242E8D30121032080060161DE +:102F9000816AC905FCD5FF2101318162124800F028 +:102FA00049F8A54209D00398361900192D1BFF24B2 +:102FB00001340390A542ADD8ABE7032080064169F8 +:102FC000FF2208329143416141690122114341616D +:102FD000016A890889000162016A114301620020C7 +:102FE00005B0F0BD8000000C1A06000038B40125C1 +:102FF000032080066A46C560352141600561816A0B +:10300000C905FCD5FF24013484628169C560CBB257 +:10301000052141600561816AC905FCD5846280692A +:103020001902C0B2014388B21180C00700D001204C +:1030300038BC7047F8B400210125032292066B4684 +:10304000D560352454601561946AE405FCD5FF27EA +:10305000013797629469D560E4B205265660156120 +:10306000966AF605FCD5976296692402F6B2344357 +:103070001C80E30722D0814202D9F8BC00207047AF +:10308000032292066B46D560352454601561491CB5 +:10309000946AE405FCD597629469D560E4B205268C +:1030A00056601561966AF605FCD59762926924020E +:1030B000D2B21443A2B21C80D207DCD1F8BC0120EA +:1030C0007047000000404040404040404040414187 +:1030D00041414140404040404040404040404040ED +:1030E0004040404040050202020202020202020287 +:1030F0000202020202202020202020202020200284 +:103100000202020202029090909090901010101013 +:1031100010101010101010101010101010101010AF +:103120000202020202028888888888880808080843 +:10313000080808080808080808080808080808080F +:103140000202020240000000C53000015B6F7461A2 +:103150005D2062696E617279206D6F6465204F4EEB +:10316000202D2073656E642030784341204F5441F8 +:10317000206672616D6573206E6F770D0A28626C30 +:10318000655F70726F746F636F6C2E6D6420736512 +:103190006374696F6E20362E363B204F54415F4179 +:1031A000424F5254206F722033732069646C652043 +:1031B0006578697473290D0A0000000062737365F5 +:1031C00074203C6669656C643E203C76616C3E3AD6 +:1031D00020777269746520626F6F747365747469A7 +:1031E0006E67206669656C64202863617265667528 +:1031F0006C2129006F74613A205541525420656E4C +:1032000074657273204F54412062696E6172792037 +:103210006672616D65206D6F646520287365652039 +:1032200068656C70206F74612900000073686F77A7 +:1032300020626F6F7420696E666F202B2063757239 +:103240002062616E6B20284F54412077726974654B +:103250007320746865204F544845522062616E6B3C +:103260002900000072657365743A20737973746580 +:103270006D20726573657420287265626F6F7429A2 +:10328000000000000D0A434C4920726561647920FA +:1032900028626F6F746C6F6164657220646F776E03 +:1032A0006C6F6164206D6F6465292E2054797065A0 +:1032B000202768656C702720666F7220636F6D6DC4 +:1032C000616E64732028544142203D20636F6D700D +:1032D0006C657465292E0D0A63616969632D3E0072 +:1032E0006F746100627364756D703A2073686F77F4 +:1032F00020626F6F7473657474696E6720726563A2 +:103300006F7264202B2063726320636865636B00B7 +:1033100073686F7720626F6F746C6F616465722081 +:1033200076657273696F6E0075617274696E666F2F +:1033300000000000646576696E666F0068656C70F9 +:10334000205B636D645D3A206C69737420636F6DFC +:103350006D616E6473202F2073686F77206F6E65C8 +:1033600020636F6D6D616E6427732068656C7000FB +:1033700068656C7000000000627364756D70000019 +:1033800075617274696E666F3A2073686F77205545 +:1033900053415254312070696E732F626175642FEE +:1033A000666F726D61740000726573657400000071 +:1033B00062737365740000006170707377205B3115 +:1033C0007C325D3A2073776974636820626F6F7432 +:1033D0002062616E6B202863726320766572696675 +:1033E00069656429202B207265626F6F740000008C +:1033F000617070737700000061707073773A2062BB +:10340000616E6B256C7520696D6167652063726301 +:10341000206D69736D6174636820287265636F72D3 +:10342000642030782530386C582C206163747561C5 +:103430006C2030782530386C58290D0A00000000C7 +:103440002020202020202020206231616464727CB2 +:103450006232616464727C623173697A657C623263 +:1034600073697A657C62316372637C623263726312 +:103470007C62317665727C6232766572203C68656A +:10348000787C6465633E0D0A00000000AC340001E6 +:103490000040002060000000941400010C35000181 +:1034A00060400020F8190000A41400010090D0032F +:1034B000000000000000000000000000000000000C +:1034C00000000000000000000000000000000000FC +:1034D00000000000000000000000000000000000EC +:1034E00000000000000000000000000000000000DC +:1034F00000000000000000000000000000000000CC +:0C350000000000000000000000000000BF :1040000011C011CA010000000080000124DB000083 :104010006EDA83231C000100000000000000000095 :0C40200000000000000000001AC4DC25B5