Kaynağa Gözat

硬件基本调试通过

yidongFan 1 ay önce
ebeveyn
işleme
6049608584
100 değiştirilmiş dosya ile 25096 ekleme ve 1749 silme
  1. 1 0
      .mxproject
  2. 5 0
      BoardInterface/one_chip_git_inf.h
  3. 51 0
      BoardInterface/onechip_basic_define.h
  4. 86 0
      BoardInterface/onechip_devinf_define.h
  5. 34 0
      BoardInterface/onechip_include_header.h
  6. 217 0
      BoardInterface/onechip_load_inf.c
  7. 45 0
      BoardInterface/onechip_load_inf.h
  8. 2 0
      Core/Inc/adc.h
  9. 6 4
      Core/Inc/main.h
  10. 2 1
      Core/Inc/stm32f1xx_it.h
  11. 3 0
      Core/Inc/tim.h
  12. 86 4
      Core/Src/adc.c
  13. 4 4
      Core/Src/dma.c
  14. 37 11
      Core/Src/gpio.c
  15. 89 2
      Core/Src/main.c
  16. 2 2
      Core/Src/stm32f1xx_hal_msp.c
  17. 34 16
      Core/Src/stm32f1xx_it.c
  18. 81 10
      Core/Src/tim.c
  19. 0 18
      Core/Src/usart.c
  20. 947 0
      DriverInterface/ESP32_WROOM_32D.c
  21. 78 0
      DriverInterface/ESP32_WROOM_32D.h
  22. 33 0
      DriverInterface/TCA9548A.h
  23. 152 0
      DriverInterface/VAN_ITCallBack.c
  24. 21 0
      DriverInterface/VAN_ITCallBack.h
  25. 3119 0
      DriverInterface/cJSON.c
  26. 300 0
      DriverInterface/cJSON.h
  27. 149 0
      DriverInterface/pt1000.c
  28. 26 0
      DriverInterface/pt1000.h
  29. 282 0
      DriverInterface/rgb381.c
  30. 127 0
      DriverInterface/rgb381.h
  31. 839 0
      DriverInterface/uart_rcv.c
  32. 147 0
      DriverInterface/uart_rcv.h
  33. 21 0
      DriverInterface/usr_b2b_msg.h
  34. 934 0
      DriverInterface/usr_b2pc_msg.c
  35. 678 0
      DriverInterface/usr_motor.c
  36. 49 0
      DriverInterface/usr_motor.h
  37. 228 0
      DriverInterface/usr_protocol_type.h
  38. 286 0
      DriverInterface/van_BSP_Com_Pwm.c
  39. 76 0
      DriverInterface/van_BSP_Com_Pwm.h
  40. 44 0
      DriverInterface/van_BSP_ESPUart.c
  41. 19 0
      DriverInterface/van_BSP_ESPUart.h
  42. 214 0
      DriverInterface/van_BSP_Scanner.c
  43. 47 0
      DriverInterface/van_BSP_Scanner.h
  44. 1000 0
      DriverInterface/van_bsp_uart_fun.c
  45. 51 0
      DriverInterface/van_bsp_uart_fun.h
  46. 211 0
      DriverInterface/ws2812.c
  47. 46 0
      DriverInterface/ws2812.h
  48. 39 20
      MDK-ARM/mini7_V2.uvguix.Administrator
  49. 231 3
      MDK-ARM/mini7_V2.uvoptx
  50. 88 3
      MDK-ARM/mini7_V2.uvprojx
  51. BIN
      MDK-ARM/mini7_V2/adc.crf
  52. 1 0
      MDK-ARM/mini7_V2/adc.d
  53. BIN
      MDK-ARM/mini7_V2/adc.o
  54. BIN
      MDK-ARM/mini7_V2/dma.crf
  55. BIN
      MDK-ARM/mini7_V2/dma.o
  56. BIN
      MDK-ARM/mini7_V2/gpio.crf
  57. BIN
      MDK-ARM/mini7_V2/gpio.o
  58. BIN
      MDK-ARM/mini7_V2/i2c.crf
  59. BIN
      MDK-ARM/mini7_V2/i2c.o
  60. BIN
      MDK-ARM/mini7_V2/main.crf
  61. 24 0
      MDK-ARM/mini7_V2/main.d
  62. BIN
      MDK-ARM/mini7_V2/main.o
  63. BIN
      MDK-ARM/mini7_V2/mini7_V2.axf
  64. 3 29
      MDK-ARM/mini7_V2/mini7_V2.build_log.htm
  65. 8189 699
      MDK-ARM/mini7_V2/mini7_V2.hex
  66. 3499 742
      MDK-ARM/mini7_V2/mini7_V2.htm
  67. 14 0
      MDK-ARM/mini7_V2/mini7_V2.lnp
  68. 1114 13
      MDK-ARM/mini7_V2/mini7_V2.map
  69. 792 42
      MDK-ARM/mini7_V2/mini7_V2_mini7_V2.dep
  70. BIN
      MDK-ARM/mini7_V2/startup_stm32f103xe.o
  71. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal.o
  72. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_adc.o
  73. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_adc_ex.o
  74. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_cortex.o
  75. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_dma.o
  76. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_exti.o
  77. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_flash.o
  78. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_flash_ex.o
  79. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_gpio.o
  80. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_gpio_ex.o
  81. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_i2c.o
  82. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_msp.crf
  83. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_msp.o
  84. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_pwr.o
  85. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_rcc.o
  86. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_rcc_ex.o
  87. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_tim.o
  88. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_tim_ex.o
  89. BIN
      MDK-ARM/mini7_V2/stm32f1xx_hal_uart.o
  90. BIN
      MDK-ARM/mini7_V2/stm32f1xx_it.crf
  91. 30 0
      MDK-ARM/mini7_V2/stm32f1xx_it.d
  92. BIN
      MDK-ARM/mini7_V2/stm32f1xx_it.o
  93. BIN
      MDK-ARM/mini7_V2/system_stm32f1xx.o
  94. BIN
      MDK-ARM/mini7_V2/tim.crf
  95. BIN
      MDK-ARM/mini7_V2/tim.o
  96. BIN
      MDK-ARM/mini7_V2/usart.crf
  97. BIN
      MDK-ARM/mini7_V2/usart.o
  98. 13 13
      MDK-ARM/startup_stm32f103xe.lst
  99. 1 1
      MDK-ARM/startup_stm32f103xe.s
  100. 149 112
      mini7_V2.ioc

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1 - 0
.mxproject


+ 5 - 0
BoardInterface/one_chip_git_inf.h

@@ -0,0 +1,5 @@
+#ifndef _ONE_CHIP_GITINF_H 
+#define _ONE_CHIP_GITINF_H 
+#define ONE_CHIP_GIT_SHA  "0b9ed908bfa34eb94d95c042d84c78abe308d261"
+#define ONE_CHIP_GIT_SHA_SHORT  "0b9ed908bf"
+#endif 

+ 51 - 0
BoardInterface/onechip_basic_define.h

@@ -0,0 +1,51 @@
+#ifndef __ONECHIP_BASIC_DEFINE_H_
+#define __ONECHIP_BASIC_DEFINE_H_
+
+#include <stddef.h>
+
+
+#define ARR_LEN(array)(sizeof(array) / sizeof(array[0]))
+
+#ifdef ONECHIP_GLOBAL_DEF_FLAG
+#define   ONECHIP_GLOBAL_DEF
+#else
+#define   ONECHIP_GLOBAL_DEF extern
+#endif
+
+
+#define NAME_MAX_SIZE 32 /*执行单元名字最长限制*/
+
+#define ERRDES_MAX_SIZE 32 /*执行单元名字最长限制*/
+
+#ifndef THREAD_STACKSIZE
+#define THREAD_STACKSIZE (int)1024
+#endif
+#ifndef DEFAULT_THREAD_PRIO_ONECHIP
+#define DEFAULT_THREAD_PRIO_ONECHIP (int)2
+#endif
+
+#define PROTOCOVERDEF(ver) "V_J_"#ver
+#define DEVICENAMEDEF(dev) "ONECHIP_"#dev
+
+
+#define ONECHIP_NOCONFIG  0xffffffff
+#define ONECHIP_CONFIG_FLAG  0xffffffff
+
+
+#define ONECHIP_FLAOT_COMPARE_ZERO  (float)0.001
+
+//16位大小端转换的宏
+#define ONECHIP_htons(A) ((((uint16_t)(A) & 0xff00 ) >> 8 )|\
+                  (((uint16_t)(A) & 0x00ff ) << 8))
+//32位大小端转换宏
+#define ONECHIP_htonl(A) ((((uint32_t)(A) & 0xff000000 ) >> 24) |\
+				  (((uint32_t)(A) & 0x00ff0000 ) >> 8 ) |\
+				  (((uint32_t)(A) & 0x0000ff00 ) << 8 ) |\
+				  (((uint32_t)(A) & 0x000000ff ) << 24))
+
+#define NAME(n) #n
+
+
+
+#endif //__ONECHIP_BASIC_DEFINE_H_
+

+ 86 - 0
BoardInterface/onechip_devinf_define.h

@@ -0,0 +1,86 @@
+#ifndef __ONECHIP_DEVINF_DEFINE_H_
+#define __ONECHIP_DEVINF_DEFINE_H_
+
+
+#include "oneChip_basic_define.h"
+typedef enum {
+	ONECHIP_DEV_STATE_NONE,
+	ONECHIP_DEV_STATE_POWEROFF,
+	ONECHIP_DEV_STATE_OFFLINE,
+	ONECHIP_DEV_STATE_NEEDINIT,
+	ONECHIP_DEV_STATE_RUNNING,
+	ONECHIP_DEV_STATE_IDLE,
+	ONECHIP_DEV_STATE_ERR,
+}ONECHIP_DEV_STATE_TYPE;
+
+
+
+#define ORG_NAME_MAX
+#define SN_MAX       EEPROM_ADDR_DEV_SERIAL_LEN 
+
+
+typedef enum {
+	MINI7_SUB_FUN_MOTOR = 1,
+	MINI7_SUB_FUN_HEATER1 ,
+	MINI7_SUB_FUN_HEATER2 
+}ONECHIP_SUB_FUN_TYPE;
+
+
+typedef struct {
+	unsigned int  desversion;  				/*描述版本,预留*/	
+	unsigned char ORGName[8]; 	/*组织名称*/
+	unsigned int  deveice_type;	 			/*设备类型*/
+	unsigned int  deveice_ver;	 			/*设备批次*/
+	unsigned char serialNumber[16];			
+	unsigned int  hardware_type;			/*硬件类型*/
+	unsigned int  hardware_ver;				/*硬件批次*/	
+	unsigned int  structure_type;			/*结构类型*/		
+	unsigned int  structure_ver;			/*结构批次*/		
+	unsigned int  firstRunFlag;				/*硬件批次*/		
+	unsigned int  updataFlag;				/*硬件批次*/		
+}DeviceBasicInfdef,*pDeviceBasicInfdef;
+
+typedef struct {
+	DeviceBasicInfdef devdesc;
+	unsigned int  ms10_flag;
+	unsigned int  ms_conter;	
+	unsigned int  conter10ms;		
+	unsigned int  deal_espFlag;		
+	unsigned int  reccmd_conter;	
+	unsigned int  s1_flag;			
+	unsigned int  s10_flag;		
+	unsigned int  test_flag;	
+	unsigned int  sysLoad_flag;	
+	unsigned int  trigger_Tick;	
+	unsigned int  int_ADC;	
+	unsigned int  resetByIwdg;	
+	unsigned int  connectTcpFlag;		
+	unsigned int  pc_link_timeout;	
+	unsigned int  pc_channel_recv;
+	
+	void * debugUart;	
+	void * scannerUart;
+	void * ESPUart;
+	void * pb_Queue;		
+	uint16_t  signal_trigger_pin;	
+	void * signal_trigger_port;	
+	uint16_t  com_led_pin;	
+	void * com_led_port;	
+	uint16_t  rgb_band_pin;	
+	void * rgb_band_port;
+	uint16_t  run_led_pin;	
+	void * run_led_port;	
+	char wifiname[64];
+	char password[16];
+	char TCP_IP_Addr[16];
+unsigned char TCP_IP_PORT[8];
+	
+//	CNativeCommTypeDef  *g_pCommModule; 
+}oneChipSysdef,*poneChipSysdef;
+
+
+ONECHIP_GLOBAL_DEF oneChipSysdef sysinf;
+
+
+#endif //__ONECHIP_BASIC_DEFINE_H_
+

+ 34 - 0
BoardInterface/onechip_include_header.h

@@ -0,0 +1,34 @@
+
+#ifndef __ONECHIP_INCLUDE_HEADER_H_
+#define __ONECHIP_INCLUDE_HEADER_H_
+#include <stdio.h>
+#include <stdbool.h>
+#include <string.h>
+#include <stdlib.h>
+#include <math.h>
+#include "main.h"
+#include "adc.h"
+#include "dma.h"
+#include "i2c.h"
+#include "tim.h"
+#include "usart.h"
+#include "gpio.h"
+#include "onechip_basic_define.h"
+#include "onechip_devinf_define.h"
+#include "van_bsp_debug_shell.h"
+#include "van_bsp_debug_uart.h"
+#include "onechip_load_inf.h"
+#include "van_com_algorithm.h"
+#include "pt1000.h"
+#include "cJSON.h"
+#include "VAN_ITCallBack.h"
+#include "van_BSP_Com_Pwm.h"
+#include "van_BSP_Scanner.h"
+#include "van_BSP_ESPUart.h"
+#include "ESP32_WROOM_32D.h"
+#include "ws2812.h"
+#include "rgb381.h"
+#include "usr_motor.h"
+
+#endif //__ONECHIP_LOAD_INF_H_
+

+ 217 - 0
BoardInterface/onechip_load_inf.c

@@ -0,0 +1,217 @@
+
+
+/****************************************************************** 
+*  Copyright (C) 2023 - 2023 OneChip, Inc. All rights reserved.
+* File name: onechip_load_inf.c	
+* Author: fanyidong 	 Date:2023.11.21 
+* Description:		加载设备基本信息
+* Others:
+* History:	
+	1. Date: 
+		 Author: 
+		 Modification:
+
+*****************************************************************/
+#include <stdio.h>
+#include <string.h>
+
+#include "onechip_include_header.h"
+#include "one_chip_git_inf.h"
+
+
+/*命令种类*/
+
+#define onechip_name  "Onechip602"
+#define onechip_pswd  "onechip1003"
+
+#define PROTOCOVER  PROTOCOVERDEF(001)
+#define DEVICENAME DEVICENAMEDEF(demo)
+
+#define VERINFO_ADDR_BASE   (0x801FF00) //存放FLASH的地址 
+#define STR1(R)  #R
+#define STR2(R)  STR1(R)
+
+const char Software_Ver[] __attribute__((at(VERINFO_ADDR_BASE + 0x00)))  = "Soft: " STR2(SOFT_VERSION_1) "." STR2(SOFT_VERSION_2) "." STR2(SOFT_VERSION_3) "." STR2(SOFT_VERSION_4);
+const char Compiler_Date[] __attribute__((at(VERINFO_ADDR_BASE + 0x10))) = "Time: " __DATE__  "-" __TIME__;
+#ifdef ONE_CHIP_GIT_SHA_SHORT
+const char git_sha[] __attribute__((at(VERINFO_ADDR_BASE + 0x30))) = "SHA: " ONE_CHIP_GIT_SHA_SHORT;
+#endif  
+
+/**********************************************************************************
+Func	Name: dev_load_allinf
+Descriptions: 加载单板标记
+Input	para: 无
+In&Out	Para: 无
+Output	para: 无
+Return value: 无
+***********************************************************************************/
+void dev_load_description (void)
+{
+// 	unsigned int readAddr;
+// 	readAddr = EEPROM_ADDR_VERSION_ADDR;	
+//     // AT24CXX_Read(readAddr, (uint8_t *)&sysinf.devdesc.desversion,sizeof(DeviceBasicInfdef));	
+	
+// //	Van_Device_Printf(VAN_LOG_CRITICAL, "2  deveice_typer:%x structure_type:%d  hardware_type:%d  \n\r",sysinf.devdesc.deveice_type,sysinf.devdesc.structure_type,sysinf.devdesc.hardware_type);
+// 	if(sysinf.devdesc.deveice_type ==  deviceType_deviceNocfg || sysinf.devdesc.deveice_type > deviceType_deviceBoard_V1 ){
+// 	sysinf.devdesc.deveice_type = deviceType_deviceNocfg;
+// #if defined(DEVICETYPE_IS_ETA)
+// 	sysinf.devdesc.deveice_type = deviceType_deviceETA_004;
+// 	sysinf.devdesc.structure_type = structureType_structure1_6;
+// 	sysinf.devdesc.hardware_type = hardwareType_hardware1_0;	
+// 	sysinf.devdesc.deveice_ver = 0;
+// 	sysinf.devdesc.structure_ver = 0;
+// 	sysinf.devdesc.hardware_ver = 0;	
+// 	memset(sysinf.devdesc.serialNumber, 0, 16);
+// #elif defined(DEVICETYPE_IS_ATCG)
+	 sysinf.devdesc.deveice_type = ONECHIP_MINI7_V2;
+	 sysinf.devdesc.structure_type = ONECHIP_SATRUCTURE_VERSION_V0_1;
+	 sysinf.devdesc.hardware_type = ONECHIP_HARDWARE_VERSION_V0_1;	
+	sysinf.devdesc.deveice_ver = 0;
+	sysinf.devdesc.structure_ver = 0;
+	sysinf.devdesc.hardware_ver = 0;	
+	
+	strcpy(sysinf.wifiname, onechip_name);
+	strcpy(sysinf.password, onechip_pswd);
+// 	memset(sysinf.devdesc.serialNumber, 0, 16);
+// #endif
+// 	}
+	
+}
+
+/**********************************************************************************
+Func	Name: dev_save_description
+Descriptions: 保持
+Input	para: 无
+In&Out	Para: 无
+Output	para: 无
+Return value: 无
+***********************************************************************************/
+void dev_save_description (void)
+{  
+	// unsigned int writeAddr;
+	// writeAddr = EEPROM_ADDR_VERSION_ADDR;
+	// unsigned int softver = (SOFT_VERSION_1 << 24) | (SOFT_VERSION_2 << 16) | (SOFT_VERSION_3 << 8) | (SOFT_VERSION_4);
+	// Van_Device_Printf(VAN_LOG_CRITICAL, "soft ver:%x\n\r",softver);
+	
+	// Van_Device_Printf(VAN_LOG_CRITICAL, "1   deveice_typer:%x structure_type:%d  hardware_type:%d  \n\r",sysinf.devdesc.deveice_type,sysinf.devdesc.structure_type,sysinf.devdesc.hardware_type);
+    // // AT24CXX_Write(writeAddr, (unsigned char *)&sysinf.devdesc.desversion,sizeof(DeviceBasicInfdef));
+	// osDelay(10U);
+	// dev_load_description();	
+	// Van_Device_Printf(VAN_LOG_CRITICAL, "3  deveice_typer:%x structure_type:%d  hardware_type:%d  \n\r",sysinf.devdesc.deveice_type,sysinf.devdesc.structure_type,sysinf.devdesc.hardware_type);	
+}
+
+/**********************************************************************************
+Func	Name: dev_save_description
+Descriptions: 保持
+Input	para: 无
+In&Out	Para: 无
+Output	para: 无
+Return value: 无
+***********************************************************************************/
+void cfg_dev_description (unsigned int dev,unsigned int strtype,unsigned int hdtype,unsigned int devver,unsigned int strver,unsigned int hdver)
+{  
+	// unsigned int writeAddr;
+	// writeAddr = EEPROM_ADDR_VERSION_ADDR;
+	// unsigned int softver = (SOFT_VERSION_1 << 24) | (SOFT_VERSION_2 << 16) | (SOFT_VERSION_3 << 8) | (SOFT_VERSION_4);
+	// Van_Device_Printf(VAN_LOG_CRITICAL, "soft ver:%x\n\r",softver);
+	// sysinf.devdesc.desversion = 0xaa079055;
+    // sysinf.devdesc.deveice_type = dev;
+    // sysinf.devdesc.structure_type = strtype;
+    // sysinf.devdesc.hardware_type = hdtype;
+    // sysinf.devdesc.deveice_ver = devver;
+    // sysinf.devdesc.structure_ver = strver;
+    // sysinf.devdesc.hardware_ver = hdver;
+	
+	// Van_Device_Printf(VAN_LOG_CRITICAL, "1   deveice_typer:%x structure_type:%d  hardware_type:%d  \n\r",sysinf.devdesc.deveice_type,sysinf.devdesc.structure_type,sysinf.devdesc.hardware_type);
+    // AT24CXX_Write(writeAddr, (unsigned char *)&sysinf.devdesc.desversion,sizeof(DeviceBasicInfdef));
+	// osDelay(10U);
+	// dev_load_description();	
+	// Van_Device_Printf(VAN_LOG_CRITICAL, "3  deveice_typer:%x structure_type:%d  hardware_type:%d  \n\r",sysinf.devdesc.deveice_type,sysinf.devdesc.structure_type,sysinf.devdesc.hardware_type);	
+}
+
+
+
+/**********************************************************************************
+Func	Name: dev_load_allinf
+Descriptions: 加载单板标记
+Input	para: 无
+In&Out	Para: 无
+Output	para: 无
+Return value: 无
+***********************************************************************************/
+void dev_load_allinf (void)
+{
+
+	dev_load_description();	
+	sysinf.com_led_pin = MINI7_V2_SYS_R_Pin;	
+	sysinf.com_led_port = MINI7_V2_SYS_R_GPIO_Port;	
+	sysinf.run_led_pin = MINI7_V2_SYS_B_Pin;	
+	sysinf.run_led_port = MINI7_V2_SYS_B_GPIO_Port;	
+	sysinf.rgb_band_pin = MINI7_V2_indicator_light_Pin;	
+	sysinf.rgb_band_port = MINI7_V2_indicator_light_GPIO_Port;
+	sysinf.ms_conter = 0;
+}
+
+/**********************************************************************************
+Func	Name: con_sysinf_debugUart
+Descriptions: 设置调试串口
+Input	para: 无
+In&Out	Para: 无
+Output	para: 无
+Return value: 无
+***********************************************************************************/
+void con_sysinf_debugUart(void * uart)
+{
+	sysinf.debugUart =  uart;
+}
+
+/**********************************************************************************
+Func	Name: dev_load_function
+Descriptions: 根据单板类型,添加功能
+Input	para: 无
+In&Out	Para: 无
+Output	para: 无
+Return value: 无
+***********************************************************************************/
+void dev_load_function (void)
+{
+	//Motor_Load_cfg(&sysinf.devdesc);
+  //  loadIOStateCfg(&sysinf.devdesc);
+  //  loadProportiona_valveCfg(&sysinf.devdesc);
+	//onechip_pose_load_config(&sysinf.devdesc);
+//	load_com_pwm_Cfg(&sysinf.devdesc);
+//	onechip_adp_load_config(&sysinf.devdesc);
+}
+
+
+/**********************************************************************************
+Func	Name: dev_load_function_after_os
+Descriptions: 系统启动后,再加载组件
+Input	para: 无
+In&Out	Para: 无
+Output	para: 无
+Return value: 无
+***********************************************************************************/
+void dev_load_function_after_os (void)
+{
+
+#ifdef USE_CAN_DEVICE
+	onechip_can_dev_config();
+    osDelay(10U);
+	if(((sysinf.devdesc.deveice_type == deviceType_deviceETA_004)||
+		(sysinf.devdesc.deveice_type == deviceType_deviceETA_S4))
+		&&(sysinf.devdesc.structure_type == structureType_structure1_6||
+		sysinf.devdesc.structure_type == structureType_structure1_5)){
+		loadKEYTO_5A33Cfg(&sysinf.devdesc);
+		loadKEYTO_G31xCfg(&sysinf.devdesc);
+	}	
+	if(((sysinf.devdesc.deveice_type == deviceType_deviceETA_004)||
+		(sysinf.devdesc.deveice_type == deviceType_deviceETA_S4))
+		&&sysinf.devdesc.structure_type == structureType_structure1_6){
+		loadKEYTO_G_LHHCCfg(&sysinf.devdesc);
+	}	
+#endif //define (USE_CAN_DEVICE)		
+ //   loadPidCfg(&sysinf.devdesc);
+}
+
+

+ 45 - 0
BoardInterface/onechip_load_inf.h

@@ -0,0 +1,45 @@
+
+#ifndef __ONECHIP_LOAD_INF_H_
+#define __ONECHIP_LOAD_INF_H_
+
+#define HARD_VERSION_1    (0x01)//硬件版本号
+#define HARD_VERSION_2    (0x00)//硬件版本号
+
+#define SOFT_VERSION_1  1	//软件版本号
+#define SOFT_VERSION_2  0	//软件版本号
+#define SOFT_VERSION_3  2	//软件版本号
+#define SOFT_VERSION_4  8	//软件版本号
+
+
+
+typedef enum {
+	ONECHIP_DEVICETYPE_NONE = 0,
+	ONECHIP_MINI7_V2 = 1,
+}ONECHIP_DEVICETYPE_TYPE;
+
+typedef enum {
+	ONECHIP_HARDWARE_VERSION_NONE = 0,
+	ONECHIP_HARDWARE_VERSION_DEMO = 0,
+	ONECHIP_HARDWARE_VERSION_V0_1 = 0x31303048, /*H001*/
+	ONECHIP_HARDWARE_VERSION_V0_2 = 0x32303048, /*H002*/
+	ONECHIP_HARDWARE_VERSION_V1_1 = 0x31303148, /*H101*/
+}ONECHIP_HARDWARE_VERSION_TYPE;
+typedef enum {
+	ONECHIP_SATRUCTURE_VERSION_NONE = 0,
+	ONECHIP_SATRUCTURE_VERSION_DEMO = 0,
+	ONECHIP_SATRUCTURE_VERSION_V0_1 = 0x31303048, /*H001*/
+	ONECHIP_SATRUCTURE_VERSION_V0_2 = 0x32303048, /*H002*/
+	ONECHIP_SATRUCTURE_VERSION_V1_1 = 0x31303148, /*H101*/
+}ONECHIP_SATRUCTURE_VERSION_TYPE;
+
+
+void dev_save_description (void);
+void dev_load_description (void);
+void cfg_dev_description (unsigned int dev,unsigned int strtype,unsigned int hdtype,unsigned int devver,unsigned int strver,unsigned int hdver);
+void dev_load_allinf (void);
+void dev_load_function (void);
+void con_sysinf_debugUart(void * uart);
+void dev_load_function_after_os (void);
+
+#endif //__ONECHIP_LOAD_INF_H_
+

+ 2 - 0
Core/Inc/adc.h

@@ -41,6 +41,8 @@ extern ADC_HandleTypeDef hadc1;
 void MX_ADC1_Init(void);
 
 /* USER CODE BEGIN Prototypes */
+void ADC_Inner_start(void);
+float getADC_Chanel_value(unsigned int ch);
 
 /* USER CODE END Prototypes */
 

+ 6 - 4
Core/Inc/main.h

@@ -65,22 +65,23 @@ void Error_Handler(void);
 #define MINI7_V2_DEC_S1_GPIO_Port GPIOA
 #define MINI7_V2_BCK_S1_Pin GPIO_PIN_6
 #define MINI7_V2_BCK_S1_GPIO_Port GPIOA
-#define MINI7_V2_indicator_light_Pin GPIO_PIN_4
-#define MINI7_V2_indicator_light_GPIO_Port GPIOC
+#define MINI7_V2_BEEPER_Pin GPIO_PIN_4
+#define MINI7_V2_BEEPER_GPIO_Port GPIOC
 #define MINI7_V2_BCK_S2_Pin GPIO_PIN_0
 #define MINI7_V2_BCK_S2_GPIO_Port GPIOB
 #define MINI7_V2_DEC_S2_Pin GPIO_PIN_1
 #define MINI7_V2_DEC_S2_GPIO_Port GPIOB
 #define MINI7_V2_LED_S2_Pin GPIO_PIN_2
 #define MINI7_V2_LED_S2_GPIO_Port GPIOB
+#define MINI7_V2_indicator_light_Pin GPIO_PIN_12
+#define MINI7_V2_indicator_light_GPIO_Port GPIOB
 #define MINI7_V2_SYS_B_Pin GPIO_PIN_13
 #define MINI7_V2_SYS_B_GPIO_Port GPIOB
 #define MINI7_V2_SYS_R_Pin GPIO_PIN_14
 #define MINI7_V2_SYS_R_GPIO_Port GPIOB
-#define MINI7_V2_MOTOR_DIR_Pin GPIO_PIN_8
-#define MINI7_V2_MOTOR_DIR_GPIO_Port GPIOC
 #define MINI7_V2_REF_SW2_Pin GPIO_PIN_9
 #define MINI7_V2_REF_SW2_GPIO_Port GPIOC
+#define MINI7_V2_REF_SW2_EXTI_IRQn EXTI9_5_IRQn
 #define MINI7_V2_Device_num1_Pin GPIO_PIN_12
 #define MINI7_V2_Device_num1_GPIO_Port GPIOC
 #define MINI7_V2_Device_num2_Pin GPIO_PIN_2
@@ -93,6 +94,7 @@ void Error_Handler(void);
 #define MINI7_V2_LED_S1_GPIO_Port GPIOB
 #define MINI7_V2_KEY_Pin GPIO_PIN_8
 #define MINI7_V2_KEY_GPIO_Port GPIOB
+#define MINI7_V2_KEY_EXTI_IRQn EXTI9_5_IRQn
 
 /* USER CODE BEGIN Private defines */
 

+ 2 - 1
Core/Inc/stm32f1xx_it.h

@@ -55,16 +55,17 @@ void SVC_Handler(void);
 void DebugMon_Handler(void);
 void PendSV_Handler(void);
 void SysTick_Handler(void);
+void DMA1_Channel1_IRQHandler(void);
 void DMA1_Channel4_IRQHandler(void);
 void DMA1_Channel5_IRQHandler(void);
 void DMA1_Channel6_IRQHandler(void);
 void DMA1_Channel7_IRQHandler(void);
+void EXTI9_5_IRQHandler(void);
 void TIM2_IRQHandler(void);
 void USART1_IRQHandler(void);
 void USART2_IRQHandler(void);
 void UART4_IRQHandler(void);
 void DMA2_Channel3_IRQHandler(void);
-void DMA2_Channel4_5_IRQHandler(void);
 /* USER CODE BEGIN EFP */
 
 /* USER CODE END EFP */

+ 3 - 0
Core/Inc/tim.h

@@ -38,6 +38,8 @@ extern TIM_HandleTypeDef htim2;
 
 extern TIM_HandleTypeDef htim3;
 
+extern TIM_HandleTypeDef htim4;
+
 /* USER CODE BEGIN Private defines */
 
 /* USER CODE END Private defines */
@@ -45,6 +47,7 @@ extern TIM_HandleTypeDef htim3;
 void MX_TIM1_Init(void);
 void MX_TIM2_Init(void);
 void MX_TIM3_Init(void);
+void MX_TIM4_Init(void);
 
 void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
 

+ 86 - 4
Core/Src/adc.c

@@ -16,15 +16,22 @@
   *
   ******************************************************************************
   */
+	
+#include "math.h"
 /* USER CODE END Header */
 /* Includes ------------------------------------------------------------------*/
 #include "adc.h"
 
 /* USER CODE BEGIN 0 */
 
+#define ADC1_CHANNEL_COUNT    2      //
+#define ADC_SAMPLING_TIMES    10     // 
+
+uint16_t ADC1_Converted_Value[ADC1_CHANNEL_COUNT * ADC_SAMPLING_TIMES];
 /* USER CODE END 0 */
 
 ADC_HandleTypeDef hadc1;
+DMA_HandleTypeDef hdma_adc1;
 
 /* ADC1 init function */
 void MX_ADC1_Init(void)
@@ -43,12 +50,12 @@ void MX_ADC1_Init(void)
   /** Common config
   */
   hadc1.Instance = ADC1;
-  hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
-  hadc1.Init.ContinuousConvMode = DISABLE;
+  hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
+  hadc1.Init.ContinuousConvMode = ENABLE;
   hadc1.Init.DiscontinuousConvMode = DISABLE;
   hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
   hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
-  hadc1.Init.NbrOfConversion = 1;
+  hadc1.Init.NbrOfConversion = 2;
   if (HAL_ADC_Init(&hadc1) != HAL_OK)
   {
     Error_Handler();
@@ -58,7 +65,16 @@ void MX_ADC1_Init(void)
   */
   sConfig.Channel = ADC_CHANNEL_12;
   sConfig.Rank = ADC_REGULAR_RANK_1;
-  sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
+  sConfig.SamplingTime = ADC_SAMPLETIME_28CYCLES_5;
+  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+  {
+    Error_Handler();
+  }
+
+  /** Configure Regular Channel
+  */
+  sConfig.Channel = ADC_CHANNEL_13;
+  sConfig.Rank = ADC_REGULAR_RANK_2;
   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
   {
     Error_Handler();
@@ -90,6 +106,23 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
 
+    /* ADC1 DMA Init */
+    /* ADC1 Init */
+    hdma_adc1.Instance = DMA1_Channel1;
+    hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY;
+    hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE;
+    hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;
+    hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
+    hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
+    hdma_adc1.Init.Mode = DMA_CIRCULAR;
+    hdma_adc1.Init.Priority = DMA_PRIORITY_LOW;
+    if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
+    {
+      Error_Handler();
+    }
+
+    __HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc1);
+
   /* USER CODE BEGIN ADC1_MspInit 1 */
 
   /* USER CODE END ADC1_MspInit 1 */
@@ -113,6 +146,8 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle)
     */
     HAL_GPIO_DeInit(GPIOC, GPIO_PIN_2|GPIO_PIN_3);
 
+    /* ADC1 DMA DeInit */
+    HAL_DMA_DeInit(adcHandle->DMA_Handle);
   /* USER CODE BEGIN ADC1_MspDeInit 1 */
 
   /* USER CODE END ADC1_MspDeInit 1 */
@@ -121,5 +156,52 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle)
 
 /* USER CODE BEGIN 1 */
 
+void ADC_Inner_start(void)
+{
+  HAL_ADC_Stop_DMA(&hadc1);
+  HAL_Delay(10);
+  HAL_StatusTypeDef ret; 
+   ret = HAL_ADC_Start_DMA(&hadc1, (uint32_t*)ADC1_Converted_Value, ADC1_CHANNEL_COUNT * ADC_SAMPLING_TIMES);
+   if(ret)
+   {
+	 Error_Handler();
+   }
+}
+float getADC_Chanel_value(unsigned int ch){
+ 	unsigned int max; 
+	unsigned int min;
+	unsigned int sum; 
+	if(ch < ADC1_CHANNEL_COUNT){
+		max = ADC1_Converted_Value[0];
+		min = ADC1_Converted_Value[0];
+		sum = ADC1_Converted_Value[0];
+		for(unsigned int i=1;i<ADC_SAMPLING_TIMES;i++){
+			if(max < ADC1_Converted_Value[i*ADC1_CHANNEL_COUNT+ch])max=ADC1_Converted_Value[i*ADC1_CHANNEL_COUNT+ch];
+			if(min > ADC1_Converted_Value[i*ADC1_CHANNEL_COUNT+ch])min=ADC1_Converted_Value[i*ADC1_CHANNEL_COUNT+ch];
+			sum +=  ADC1_Converted_Value[i*ADC1_CHANNEL_COUNT+ch];			
+		}
+	}
+	sum -= min;
+	sum -= max;
+	sum = sum/(ADC_SAMPLING_TIMES - 2);
+	
+	 float Rt=0;          //NTC电阻
+   float R=10000;       //10K固定阻值电阻
+   float T0=273.15+25;  //转换为开尔文温度
+   float B=3980;        //B值 >50°
+   float Ka=273.15;     //K值
+   float temp;
+   float VR=0;   //电压值
+   float NTCVoltage=0;   //电压值
+	
+	 NTCVoltage=(sum*3300/4096);
+   VR=NTCVoltage/1000.00;
+   Rt=10000*VR/(3.3-VR);
+   temp=1/(1/T0+log(Rt/R)/B)-Ka; //计算温度
+	
+	
+	
+	return temp;
+}
 /* USER CODE END 1 */
 

+ 4 - 4
Core/Src/dma.c

@@ -40,10 +40,13 @@ void MX_DMA_Init(void)
 {
 
   /* DMA controller clock enable */
-  __HAL_RCC_DMA2_CLK_ENABLE();
   __HAL_RCC_DMA1_CLK_ENABLE();
+  __HAL_RCC_DMA2_CLK_ENABLE();
 
   /* DMA interrupt init */
+  /* DMA1_Channel1_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
+  HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
   /* DMA1_Channel4_IRQn interrupt configuration */
   HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 0, 0);
   HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn);
@@ -59,9 +62,6 @@ void MX_DMA_Init(void)
   /* DMA2_Channel3_IRQn interrupt configuration */
   HAL_NVIC_SetPriority(DMA2_Channel3_IRQn, 0, 0);
   HAL_NVIC_EnableIRQ(DMA2_Channel3_IRQn);
-  /* DMA2_Channel4_5_IRQn interrupt configuration */
-  HAL_NVIC_SetPriority(DMA2_Channel4_5_IRQn, 0, 0);
-  HAL_NVIC_EnableIRQ(DMA2_Channel4_5_IRQn);
 
 }
 

+ 37 - 11
Core/Src/gpio.c

@@ -51,13 +51,16 @@ void MX_GPIO_Init(void)
   __HAL_RCC_GPIOB_CLK_ENABLE();
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(GPIOA, MINI7_V2_WIFI_MUX_Pin|MINI7_V2_BCK_S1_Pin, GPIO_PIN_RESET);
+  HAL_GPIO_WritePin(GPIOA, MINI7_V2_WIFI_MUX_Pin|MINI7_V2_BCK_S1_Pin, GPIO_PIN_SET);
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(GPIOC, MINI7_V2_indicator_light_Pin|MINI7_V2_MOTOR_DIR_Pin, GPIO_PIN_RESET);
+  HAL_GPIO_WritePin(MINI7_V2_BEEPER_GPIO_Port, MINI7_V2_BEEPER_Pin, GPIO_PIN_RESET);
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(GPIOB, MINI7_V2_BCK_S2_Pin|MINI7_V2_LED_S2_Pin|MINI7_V2_SYS_B_Pin|MINI7_V2_SYS_R_Pin
+  HAL_GPIO_WritePin(MINI7_V2_BCK_S2_GPIO_Port, MINI7_V2_BCK_S2_Pin, GPIO_PIN_SET);
+
+  /*Configure GPIO pin Output Level */
+  HAL_GPIO_WritePin(GPIOB, MINI7_V2_LED_S2_Pin|MINI7_V2_indicator_light_Pin|MINI7_V2_SYS_B_Pin|MINI7_V2_SYS_R_Pin
                           |MINI7_V2_LED_S1_Pin, GPIO_PIN_RESET);
 
   /*Configure GPIO pins : MINI7_V2_TUBE_SW_Pin MINI7_V2_DEC_S1_Pin PA7 */
@@ -73,12 +76,12 @@ void MX_GPIO_Init(void)
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
 
-  /*Configure GPIO pins : MINI7_V2_indicator_light_Pin MINI7_V2_MOTOR_DIR_Pin */
-  GPIO_InitStruct.Pin = MINI7_V2_indicator_light_Pin|MINI7_V2_MOTOR_DIR_Pin;
+  /*Configure GPIO pin : MINI7_V2_BEEPER_Pin */
+  GPIO_InitStruct.Pin = MINI7_V2_BEEPER_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+  HAL_GPIO_Init(MINI7_V2_BEEPER_GPIO_Port, &GPIO_InitStruct);
 
   /*Configure GPIO pins : MINI7_V2_BCK_S2_Pin MINI7_V2_LED_S2_Pin MINI7_V2_SYS_B_Pin MINI7_V2_SYS_R_Pin
                            MINI7_V2_LED_S1_Pin */
@@ -89,17 +92,30 @@ void MX_GPIO_Init(void)
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
   HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
 
-  /*Configure GPIO pins : MINI7_V2_DEC_S2_Pin MINI7_V2_Device_num3_Pin MINI7_V2_Device_num4_Pin MINI7_V2_KEY_Pin */
-  GPIO_InitStruct.Pin = MINI7_V2_DEC_S2_Pin|MINI7_V2_Device_num3_Pin|MINI7_V2_Device_num4_Pin|MINI7_V2_KEY_Pin;
+  /*Configure GPIO pins : MINI7_V2_DEC_S2_Pin MINI7_V2_Device_num3_Pin MINI7_V2_Device_num4_Pin */
+  GPIO_InitStruct.Pin = MINI7_V2_DEC_S2_Pin|MINI7_V2_Device_num3_Pin|MINI7_V2_Device_num4_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
 
-  /*Configure GPIO pins : MINI7_V2_REF_SW2_Pin MINI7_V2_Device_num1_Pin */
-  GPIO_InitStruct.Pin = MINI7_V2_REF_SW2_Pin|MINI7_V2_Device_num1_Pin;
+  /*Configure GPIO pin : MINI7_V2_indicator_light_Pin */
+  GPIO_InitStruct.Pin = MINI7_V2_indicator_light_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
+  HAL_GPIO_Init(MINI7_V2_indicator_light_GPIO_Port, &GPIO_InitStruct);
+
+  /*Configure GPIO pin : MINI7_V2_REF_SW2_Pin */
+  GPIO_InitStruct.Pin = MINI7_V2_REF_SW2_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  HAL_GPIO_Init(MINI7_V2_REF_SW2_GPIO_Port, &GPIO_InitStruct);
+
+  /*Configure GPIO pin : MINI7_V2_Device_num1_Pin */
+  GPIO_InitStruct.Pin = MINI7_V2_Device_num1_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
-  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+  HAL_GPIO_Init(MINI7_V2_Device_num1_GPIO_Port, &GPIO_InitStruct);
 
   /*Configure GPIO pin : MINI7_V2_Device_num2_Pin */
   GPIO_InitStruct.Pin = MINI7_V2_Device_num2_Pin;
@@ -107,6 +123,16 @@ void MX_GPIO_Init(void)
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   HAL_GPIO_Init(MINI7_V2_Device_num2_GPIO_Port, &GPIO_InitStruct);
 
+  /*Configure GPIO pin : MINI7_V2_KEY_Pin */
+  GPIO_InitStruct.Pin = MINI7_V2_KEY_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  HAL_GPIO_Init(MINI7_V2_KEY_GPIO_Port, &GPIO_InitStruct);
+
+  /* EXTI interrupt init*/
+  HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
+  HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
+
 }
 
 /* USER CODE BEGIN 2 */

+ 89 - 2
Core/Src/main.c

@@ -15,6 +15,7 @@
   *
   ******************************************************************************
   */
+#define ONECHIP_GLOBAL_DEF_FLAG
 /* USER CODE END Header */
 /* Includes ------------------------------------------------------------------*/
 #include "main.h"
@@ -28,6 +29,7 @@
 /* Private includes ----------------------------------------------------------*/
 /* USER CODE BEGIN Includes */
 
+#include "onechip_include_header.h"
 /* USER CODE END Includes */
 
 /* Private typedef -----------------------------------------------------------*/
@@ -59,7 +61,33 @@ void SystemClock_Config(void);
 
 /* Private user code ---------------------------------------------------------*/
 /* USER CODE BEGIN 0 */
-
+/* 定时器2溢出中断回调函数 */
+void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
+{
+    /* 检查触发中断的定时器是否为 TIM2 */
+    if (htim->Instance == TIM2) {
+        sysinf.ms_conter++;
+				 if(sysinf.ms_conter%10 == 0){
+					sysinf.ms10_flag = 1;
+					 sysinf.conter10ms++;
+					if(sysinf.ms_conter%1000 == 0){
+						sysinf.s1_flag = 1;
+						if(sysinf.ms_conter%10000 == 0){
+							sysinf.s10_flag = 1;
+						}
+					}
+					Motor_mix_work();
+				 }
+				 if(sysinf.ms_conter%100 == 1){
+					 sysinf.deal_espFlag=1;
+				 }
+				 
+				 if(sysinf.ms_conter%50 == 0){
+					 light_ctrl();
+				 }
+				 
+    }
+}
 /* USER CODE END 0 */
 
 /**
@@ -101,17 +129,76 @@ int main(void)
   MX_TIM1_Init();
   MX_TIM2_Init();
   MX_TIM3_Init();
+  MX_TIM4_Init();
   /* USER CODE BEGIN 2 */
-
+	/* 启动定时器2的中断模式 */
+	
+  dev_load_allinf();
+	
+  light_set(MODE_BLINK, 250, COLOR_YELLOW, 0);
+  light_set(MODE_BLINK, 250, COLOR_YELLOW, 1);
+  light_refresh(COLOR_YELLOW, COLOR_YELLOW);
+	con_sysinf_debugUart((void *)&huart1);
+  Van_Debug_UART_Init((UART_HandleTypeDef *)sysinf.debugUart);
+	if (HAL_TIM_Base_Start_IT(&htim2) != HAL_OK) {
+			/* 启动失败,可在此处添加错误处理 */
+			Error_Handler();
+	}
+	ADC_Inner_start();
+	load_com_pwm_Cfg(&sysinf.devdesc);
+	sysinf.scannerUart = &huart4;
+	svanner_receive_Rec_Start(sysinf.scannerUart);
+	sysinf.ESPUart = &huart2;
+	esp_receive_Rec_Start(sysinf.ESPUart);
+	
+	SensorInitial();
   /* USER CODE END 2 */
 
   /* Infinite loop */
   /* USER CODE BEGIN WHILE */
+	
+	Van_Device_Printf(VAN_LOG_CRITICAL, "\n-----------------------------\n\r");
+	Van_Device_Printf(VAN_LOG_CRITICAL,"*			  build %s %s						   *\n",__DATE__,__TIME__);
+	Van_Device_Printf(VAN_LOG_CRITICAL, "ATCG ControlBoard\n\r");
+#ifdef ONE_CHIP_GIT_SHA
+	Van_Device_Printf(VAN_LOG_CRITICAL, "git sha: %s\n\r", ONE_CHIP_GIT_SHA);
+#endif  
+	Van_Device_Printf(VAN_LOG_CRITICAL, "desversion 0x%x \n\r",sysinf.devdesc.desversion);
+	Van_Device_Printf(VAN_LOG_CRITICAL, "dev type:%d  ver:%d\n\r",sysinf.devdesc.deveice_type,sysinf.devdesc.deveice_ver);
+	Van_Device_Printf(VAN_LOG_CRITICAL, "structure type:%d	structure ver:%d\n\r",sysinf.devdesc.structure_type,sysinf.devdesc.structure_ver);
+	Van_Device_Printf(VAN_LOG_CRITICAL, "hard type:%d  hard ver :%d \n\r",sysinf.devdesc.hardware_type,sysinf.devdesc.hardware_ver);
+	Van_Device_Printf(VAN_LOG_CRITICAL, "Soft Version: V%d.%d.%d.%d\n\r",SOFT_VERSION_1, SOFT_VERSION_2, SOFT_VERSION_3, SOFT_VERSION_4);
+  if(sysinf.resetByIwdg){
+	Van_Device_Printf(VAN_LOG_CRITICAL, "**************************************************************************\n\r");
+	Van_Device_Printf(VAN_LOG_CRITICAL, "*                                                                        *\n\r");
+	Van_Device_Printf(VAN_LOG_CRITICAL, "*                                iwdg reset                              *\n\r");
+	Van_Device_Printf(VAN_LOG_CRITICAL, "*                                                                        *\n\r");
+	Van_Device_Printf(VAN_LOG_CRITICAL, "**************************************************************************\n\r");
+  }
+	if(	SensorSelfCheck()){
+		Van_Device_Printf(VAN_LOG_CRITICAL, "SensorSelfCheck failed\n\r");
+	}else{
+		Van_Device_Printf(VAN_LOG_CRITICAL, "SensorSelfCheck pass\n\r");
+	}
+	
   while (1)
   {
     /* USER CODE END WHILE */
 
     /* USER CODE BEGIN 3 */
+		svanner_receive_analysis();
+  	Van_Debug_UART1_test();
+		if(sysinf.deal_espFlag){
+			sysinf.deal_espFlag =0;
+			WIFI_process();
+		}
+		if(	sysinf.s1_flag == 1){
+			sysinf.s1_flag = 0;
+			HAL_GPIO_TogglePin((GPIO_TypeDef *)sysinf.run_led_port, sysinf.run_led_pin); /*green*/
+		}
+		if(	sysinf.s10_flag == 1){
+			sysinf.s10_flag = 0;
+		}
   }
   /* USER CODE END 3 */
 }

+ 2 - 2
Core/Src/stm32f1xx_hal_msp.c

@@ -71,9 +71,9 @@ void HAL_MspInit(void)
 
   /* System interrupt init*/
 
-  /** DISABLE: JTAG-DP Disabled and SW-DP Disabled
+  /** NOJTAG: JTAG-DP Disabled and SW-DP Enabled
   */
-  __HAL_AFIO_REMAP_SWJ_DISABLE();
+  __HAL_AFIO_REMAP_SWJ_NOJTAG();
 
   /* USER CODE BEGIN MspInit 1 */
 

+ 34 - 16
Core/Src/stm32f1xx_it.c

@@ -22,6 +22,7 @@
 #include "stm32f1xx_it.h"
 /* Private includes ----------------------------------------------------------*/
 /* USER CODE BEGIN Includes */
+#include "onechip_include_header.h"
 /* USER CODE END Includes */
 
 /* Private typedef -----------------------------------------------------------*/
@@ -55,9 +56,9 @@
 /* USER CODE END 0 */
 
 /* External variables --------------------------------------------------------*/
+extern DMA_HandleTypeDef hdma_adc1;
 extern TIM_HandleTypeDef htim2;
 extern DMA_HandleTypeDef hdma_uart4_rx;
-extern DMA_HandleTypeDef hdma_uart4_tx;
 extern DMA_HandleTypeDef hdma_usart1_rx;
 extern DMA_HandleTypeDef hdma_usart1_tx;
 extern DMA_HandleTypeDef hdma_usart2_rx;
@@ -207,6 +208,20 @@ void SysTick_Handler(void)
 /* please refer to the startup file (startup_stm32f1xx.s).                    */
 /******************************************************************************/
 
+/**
+  * @brief This function handles DMA1 channel1 global interrupt.
+  */
+void DMA1_Channel1_IRQHandler(void)
+{
+  /* USER CODE BEGIN DMA1_Channel1_IRQn 0 */
+
+  /* USER CODE END DMA1_Channel1_IRQn 0 */
+  HAL_DMA_IRQHandler(&hdma_adc1);
+  /* USER CODE BEGIN DMA1_Channel1_IRQn 1 */
+
+  /* USER CODE END DMA1_Channel1_IRQn 1 */
+}
+
 /**
   * @brief This function handles DMA1 channel4 global interrupt.
   */
@@ -263,6 +278,21 @@ void DMA1_Channel7_IRQHandler(void)
   /* USER CODE END DMA1_Channel7_IRQn 1 */
 }
 
+/**
+  * @brief This function handles EXTI line[9:5] interrupts.
+  */
+void EXTI9_5_IRQHandler(void)
+{
+  /* USER CODE BEGIN EXTI9_5_IRQn 0 */
+
+  /* USER CODE END EXTI9_5_IRQn 0 */
+  HAL_GPIO_EXTI_IRQHandler(MINI7_V2_KEY_Pin);
+  HAL_GPIO_EXTI_IRQHandler(MINI7_V2_REF_SW2_Pin);
+  /* USER CODE BEGIN EXTI9_5_IRQn 1 */
+
+  /* USER CODE END EXTI9_5_IRQn 1 */
+}
+
 /**
   * @brief This function handles TIM2 global interrupt.
   */
@@ -284,6 +314,7 @@ void USART1_IRQHandler(void)
 {
   /* USER CODE BEGIN USART1_IRQn 0 */
 
+	HAL_UART_Rec_IDLE(&huart1);
   /* USER CODE END USART1_IRQn 0 */
   HAL_UART_IRQHandler(&huart1);
   /* USER CODE BEGIN USART1_IRQn 1 */
@@ -298,10 +329,10 @@ void USART2_IRQHandler(void)
 {
   /* USER CODE BEGIN USART2_IRQn 0 */
 
+	HAL_UART_Rec_IDLE(&huart2);
   /* USER CODE END USART2_IRQn 0 */
   HAL_UART_IRQHandler(&huart2);
   /* USER CODE BEGIN USART2_IRQn 1 */
-
   /* USER CODE END USART2_IRQn 1 */
 }
 
@@ -312,6 +343,7 @@ void UART4_IRQHandler(void)
 {
   /* USER CODE BEGIN UART4_IRQn 0 */
 
+	HAL_UART_Rec_IDLE(&huart4);
   /* USER CODE END UART4_IRQn 0 */
   HAL_UART_IRQHandler(&huart4);
   /* USER CODE BEGIN UART4_IRQn 1 */
@@ -333,20 +365,6 @@ void DMA2_Channel3_IRQHandler(void)
   /* USER CODE END DMA2_Channel3_IRQn 1 */
 }
 
-/**
-  * @brief This function handles DMA2 channel4 and channel5 global interrupts.
-  */
-void DMA2_Channel4_5_IRQHandler(void)
-{
-  /* USER CODE BEGIN DMA2_Channel4_5_IRQn 0 */
-
-  /* USER CODE END DMA2_Channel4_5_IRQn 0 */
-  HAL_DMA_IRQHandler(&hdma_uart4_tx);
-  /* USER CODE BEGIN DMA2_Channel4_5_IRQn 1 */
-
-  /* USER CODE END DMA2_Channel4_5_IRQn 1 */
-}
-
 /* USER CODE BEGIN 1 */
 
 /* USER CODE END 1 */

+ 81 - 10
Core/Src/tim.c

@@ -27,6 +27,7 @@
 TIM_HandleTypeDef htim1;
 TIM_HandleTypeDef htim2;
 TIM_HandleTypeDef htim3;
+TIM_HandleTypeDef htim4;
 
 /* TIM1 init function */
 void MX_TIM1_Init(void)
@@ -45,7 +46,7 @@ void MX_TIM1_Init(void)
 
   /* USER CODE END TIM1_Init 1 */
   htim1.Instance = TIM1;
-  htim1.Init.Prescaler = 0;
+  htim1.Init.Prescaler = 63;
   htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
   htim1.Init.Period = 65535;
   htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
@@ -73,7 +74,7 @@ void MX_TIM1_Init(void)
   sConfigOC.OCMode = TIM_OCMODE_TIMING;
   sConfigOC.Pulse = 0;
   sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
-  sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
+  sConfigOC.OCNPolarity = TIM_OCNPOLARITY_LOW;
   sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
   sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
   sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
@@ -93,7 +94,8 @@ void MX_TIM1_Init(void)
     Error_Handler();
   }
   /* USER CODE BEGIN TIM1_Init 2 */
-
+	HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3);
+	HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_3);
   /* USER CODE END TIM1_Init 2 */
   HAL_TIM_MspPostInit(&htim1);
 
@@ -115,9 +117,9 @@ void MX_TIM2_Init(void)
   htim2.Instance = TIM2;
   htim2.Init.Prescaler = 0;
   htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
-  htim2.Init.Period = 4000;
+  htim2.Init.Period = 16000;
   htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4;
-  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
+  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
   if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
   {
     Error_Handler();
@@ -154,11 +156,11 @@ void MX_TIM3_Init(void)
 
   /* USER CODE END TIM3_Init 1 */
   htim3.Instance = TIM3;
-  htim3.Init.Prescaler = 0;
+  htim3.Init.Prescaler = 63;
   htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
-  htim3.Init.Period = 65535;
+  htim3.Init.Period = 1000;
   htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
-  htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
+  htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
   if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
   {
     Error_Handler();
@@ -190,11 +192,57 @@ void MX_TIM3_Init(void)
   {
     Error_Handler();
   }
+  if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
+  {
+    Error_Handler();
+  }
   /* USER CODE BEGIN TIM3_Init 2 */
-
+	HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
+	HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);
+	HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);
   /* USER CODE END TIM3_Init 2 */
   HAL_TIM_MspPostInit(&htim3);
 
+}
+/* TIM4 init function */
+void MX_TIM4_Init(void)
+{
+
+  /* USER CODE BEGIN TIM4_Init 0 */
+
+  /* USER CODE END TIM4_Init 0 */
+
+  TIM_ClockConfigTypeDef sClockSourceConfig = {0};
+  TIM_MasterConfigTypeDef sMasterConfig = {0};
+
+  /* USER CODE BEGIN TIM4_Init 1 */
+
+  /* USER CODE END TIM4_Init 1 */
+  htim4.Instance = TIM4;
+  htim4.Init.Prescaler = 0;
+  htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
+  htim4.Init.Period = 65535;
+  htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
+  htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
+  if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
+  if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
+  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
+  if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /* USER CODE BEGIN TIM4_Init 2 */
+
+  /* USER CODE END TIM4_Init 2 */
+
 }
 
 void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
@@ -237,6 +285,17 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
 
   /* USER CODE END TIM3_MspInit 1 */
   }
+  else if(tim_baseHandle->Instance==TIM4)
+  {
+  /* USER CODE BEGIN TIM4_MspInit 0 */
+
+  /* USER CODE END TIM4_MspInit 0 */
+    /* TIM4 clock enable */
+    __HAL_RCC_TIM4_CLK_ENABLE();
+  /* USER CODE BEGIN TIM4_MspInit 1 */
+
+  /* USER CODE END TIM4_MspInit 1 */
+  }
 }
 void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
 {
@@ -270,8 +329,9 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
     /**TIM3 GPIO Configuration
     PC6     ------> TIM3_CH1
     PC7     ------> TIM3_CH2
+    PC8     ------> TIM3_CH3
     */
-    GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
+    GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8;
     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
@@ -324,6 +384,17 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
 
   /* USER CODE END TIM3_MspDeInit 1 */
   }
+  else if(tim_baseHandle->Instance==TIM4)
+  {
+  /* USER CODE BEGIN TIM4_MspDeInit 0 */
+
+  /* USER CODE END TIM4_MspDeInit 0 */
+    /* Peripheral clock disable */
+    __HAL_RCC_TIM4_CLK_DISABLE();
+  /* USER CODE BEGIN TIM4_MspDeInit 1 */
+
+  /* USER CODE END TIM4_MspDeInit 1 */
+  }
 }
 
 /* USER CODE BEGIN 1 */

+ 0 - 18
Core/Src/usart.c

@@ -28,7 +28,6 @@ UART_HandleTypeDef huart4;
 UART_HandleTypeDef huart1;
 UART_HandleTypeDef huart2;
 DMA_HandleTypeDef hdma_uart4_rx;
-DMA_HandleTypeDef hdma_uart4_tx;
 DMA_HandleTypeDef hdma_usart1_rx;
 DMA_HandleTypeDef hdma_usart1_tx;
 DMA_HandleTypeDef hdma_usart2_rx;
@@ -165,22 +164,6 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
 
     __HAL_LINKDMA(uartHandle,hdmarx,hdma_uart4_rx);
 
-    /* UART4_TX Init */
-    hdma_uart4_tx.Instance = DMA2_Channel5;
-    hdma_uart4_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
-    hdma_uart4_tx.Init.PeriphInc = DMA_PINC_DISABLE;
-    hdma_uart4_tx.Init.MemInc = DMA_MINC_ENABLE;
-    hdma_uart4_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
-    hdma_uart4_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
-    hdma_uart4_tx.Init.Mode = DMA_NORMAL;
-    hdma_uart4_tx.Init.Priority = DMA_PRIORITY_LOW;
-    if (HAL_DMA_Init(&hdma_uart4_tx) != HAL_OK)
-    {
-      Error_Handler();
-    }
-
-    __HAL_LINKDMA(uartHandle,hdmatx,hdma_uart4_tx);
-
     /* UART4 interrupt Init */
     HAL_NVIC_SetPriority(UART4_IRQn, 0, 0);
     HAL_NVIC_EnableIRQ(UART4_IRQn);
@@ -335,7 +318,6 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
 
     /* UART4 DMA DeInit */
     HAL_DMA_DeInit(uartHandle->hdmarx);
-    HAL_DMA_DeInit(uartHandle->hdmatx);
 
     /* UART4 interrupt Deinit */
     HAL_NVIC_DisableIRQ(UART4_IRQn);

+ 947 - 0
DriverInterface/ESP32_WROOM_32D.c

@@ -0,0 +1,947 @@
+#include "ESP32_WROOM_32D.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdarg.h>
+extern int Flag3S;
+
+
+#define g_uMsgCmdFrameLen (6)
+extern uint8_t Devicenum;
+extern uint8_t g_wifi_rx_buf[WIFI_RX_BUF_SIZE];
+extern uint8_t g_wifi_rx_len;
+uint8_t wifi_tx_buf[WIFI_TX_BUF_SIZE];
+uint16_t wifi_tx_len;
+
+static int wifi_state = 0;  //WiFi模块当前状态
+static int wifi_ack_delay = 0;  //WiFi应答等待
+static int wifi_set_ssid = 0;  //WiFi应答SSID设置
+
+uint32_t unlink_time = 0;
+extern uint32_t pc_link_timeout;
+uint32_t connectTcpFlag = 0;
+char TCP_IP_Addr[16]  = {"192.168.43.229"};
+char TCP_IP_PORT[8]  = {"8001"};
+char MAC_ADDR[20]  = {0};
+uint32_t broadDevFlag = 0;
+extern uint8_t pc_channel_recv;
+static int resendtime = 0;
+
+uint16_t WriteComm2(char *data, uint16_t len)
+{
+    //return UART_Write(UART2, data, len);
+	HAL_UART_Transmit_DMA((UART_HandleTypeDef *)sysinf.ESPUart,(const uint8_t *)data, len);
+	return 0;
+}
+
+
+/*WIFI单次发送指令*/
+void ESP32_Send_AT_Cmd(char *cmd,uint32_t time)
+{
+    char buff[100] = {0};
+
+    strcpy(buff, cmd);
+    strcat(buff, "\r\n");
+
+    Van_Device_Printf(VAN_LOG_NOTICE,"\nW--> %s", buff); 
+
+  	WriteComm2(buff, strlen(buff));
+
+    wifi_ack_delay = time;
+}
+void ESP32_AT(void)
+{
+    ESP32_Send_AT_Cmd("AT",5000);
+}
+/*恢复出厂设置*/
+void ESP32_AT_Restore(void)
+{
+	ESP32_Send_AT_Cmd("AT+RESTORE",500);
+}
+/*复位*/
+void ESP32_AT_RST(void)
+{
+    ESP32_Send_AT_Cmd("AT+RST",8000);
+}
+/*上电自动连接AP*/
+void ESP32_AT_AUTOCONN(void)
+{
+    ESP32_Send_AT_Cmd("AT+CWAUTOCONN=0",5000);
+}
+
+/*WIFI AP/STA/AP+STA模式选择*/
+void ESP32_Net_Mode_Choose(ENUM_Net_ModeTypeDef enumMode)
+{
+    switch ( enumMode )
+    {
+        case STA:
+            ESP32_Send_AT_Cmd ( "AT+CWMODE=1", 5000 );
+				break;
+        case AP:
+            ESP32_Send_AT_Cmd ( "AT+CWMODE=2",  5000 );
+				break;
+        case STA_AP:
+            ESP32_Send_AT_Cmd ( "AT+CWMODE=3",  5000 );
+				break;
+        default:
+        break;
+    }
+}
+/*WIFI加入AP*/
+void ESP32_JoinAP( char * pSSID, char * pPassWord, char * pMacAddr)
+{
+    char cCmd [80];
+    my_sprintf ( cCmd, sizeof(cCmd), "AT+CWJAP=\"%s\",\"%s\",\"%s\"", pSSID, pPassWord,pMacAddr);
+    ESP32_Send_AT_Cmd( cCmd,5000 );
+}
+
+/*WIFI建立AP*/
+void ESP32_SetupAP( char * pSSID, char * pPassWord)
+{
+    char cCmd [40];
+    my_sprintf ( cCmd,sizeof(cCmd),  "AT+CWSAP=\"%s\",\"%s\"", pSSID, pPassWord );
+	ESP32_Send_AT_Cmd( cCmd, 5000 );
+}
+
+/*WIFI查询IP*/
+void ESP32_GetIp(void)
+{
+	ESP32_Send_AT_Cmd( "AT+CIPSTA?", 5000 );
+}
+
+/*WIFI禁止自动连接*/
+void ESP32_DisAutoLink(void)
+{
+	ESP32_Send_AT_Cmd( "AT+CWAUTOCONN=0", 5000 );
+}
+
+void ESP32_CWLAP(char * pSSID)
+{
+    char cCmd [80];
+    my_sprintf ( cCmd, sizeof(cCmd), "AT+CWLAP=\"%s\"", pSSID);
+		ESP32_Send_AT_Cmd( cCmd, 5000 );
+}
+
+
+
+/*WIFI关闭回显*/
+void ESP32_EchoOff(void)
+{
+	ESP32_Send_AT_Cmd( "ATE0", 5000 );
+}
+/*WIFI初始化*/
+void ESP32_Init(void)
+{
+	ESP32_Send_AT_Cmd( "+++", 5000 );
+}
+
+/*WIFI 单/多连接*/
+void ESP32_Enable_MultipleId (uint8_t enumEnUnvarnishTx )
+{
+    char cCmd [20];
+    my_sprintf ( cCmd, sizeof(cCmd), "AT+CIPMUX=%d", ( enumEnUnvarnishTx ? 1 : 0 ) );
+    ESP32_Send_AT_Cmd ( cCmd, 5000 );
+
+}
+/*WIFI AP作为服务端开启或关闭,1---开启服务:0---关闭服务*/
+void ESP32_AP_Server (uint8_t open)
+{
+   char cCmd [40];
+   my_sprintf ( cCmd,sizeof(cCmd), "AT+CIPSERVER=%d", open);
+   ESP32_Send_AT_Cmd( cCmd,  5000 );
+}
+/*WIFI STA选择TCP或UDP协议*/
+void ESP32_Link_Server(ENUM_NetPro_TypeDef enumE, char * ip, char * ComNum, ENUM_ID_NO_TypeDef id)
+{
+    char cStr [100] = { 0 }, cCmd [60];
+    switch (  enumE )
+    {
+        case enumTCP:
+          my_sprintf ( cStr, sizeof(cCmd), "\"%s\",\"%s\",%s,6", "TCP", ip, ComNum );
+          break;
+        case enumUDP:
+          my_sprintf ( cStr,sizeof(cCmd),  "\"%s\",\"%s\",%s,9090,0", "UDP", ip, ComNum );
+          break;
+        default:
+          break;
+    }
+    if ( id < 5 )
+        my_sprintf ( cCmd,sizeof(cCmd),  "AT+CIPSTART=%d,%s", id, cStr);
+    else
+        my_sprintf ( cCmd, sizeof(cCmd), "AT+CIPSTART=%s", cStr );
+    ESP32_Send_AT_Cmd ( cCmd,5000 );
+}
+
+/*WIFI透传*/
+void ESP32_UnvarnishSend ( void )
+{
+    ESP32_Send_AT_Cmd( "AT+CIPMODE=1",  5000 );//设置透传模式
+}
+/*WIFI停止TCP*/
+void ESP32_STOPTCP ( ENUM_ID_NO_TypeDef id )
+{
+  char cCmd [60];
+  my_sprintf ( cCmd,sizeof(cCmd), "AT+CIPCLOSE=%d", id);
+  ESP32_Send_AT_Cmd ( cCmd,  5000 );
+}
+
+/*退出透传*/
+void ESP32_ExitUnvarnishSend( void )
+{
+    ESP32_Send_AT_Cmd("+++", 5000);
+}
+
+///*设置默认波特率为460800*/
+//void ESP32_SET_BUAR(void)
+//{
+//	ESP32_Send_AT_Cmd("AT+UART_DEF=460800,8,1,0,0","OK",NULL,500);
+//}
+
+
+/********************************************************************
+ * int WIFI_Send_Data(uint8_t *data, uint8_t len, uint8_t flag)
+ *
+ *描述:通过WIFI发送数据,异步
+ *参数:data:数据
+ *参数:len:数据长度
+ *参数:flag:1:立即发送,0:暂存
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+int WIFI_Send_Data(uint8_t *data, uint16_t len, uint8_t flag)
+{
+    char cStr [40] = {0};
+
+    if (wifi_state < WIFI_TRANS)
+        return -1;
+
+    if(wifi_ack_delay > 0)
+        return -2;
+
+    if(wifi_tx_len)
+        return -3;
+
+	if(len > WIFI_TX_BUF_SIZE){
+		 Van_Device_Printf(VAN_LOG_NOTICE,"WIFI_Send len:%d error ", len);
+		return -1;
+	}
+    memcpy(&wifi_tx_buf[wifi_tx_len], data, len);
+    wifi_tx_len += len;
+    
+    if(flag)
+    {
+        wifi_ack_delay = 3000;
+        my_sprintf ( cStr, sizeof(cStr),"AT+CIPSEND=0,%d", wifi_tx_len );
+        ESP32_Send_AT_Cmd ( cStr,  3000 );
+        return wifi_tx_len;
+    }
+
+    return 0;
+}
+
+int WIFI_Send_MSG(uint8_t*msgHead,uint8_t *data, uint8_t * crc, uint16_t len)
+{
+    char cStr [40] = {0};
+
+    if (wifi_state != WIFI_TRANS)
+        return -1;
+
+    if(wifi_ack_delay > 0)
+        return -2;
+
+    if(wifi_tx_len > 0)
+        return -3;
+
+    memcpy(&wifi_tx_buf[0], msgHead, g_uMsgCmdFrameLen);
+    memcpy(&wifi_tx_buf[g_uMsgCmdFrameLen], data, len);
+    memcpy(&wifi_tx_buf[g_uMsgCmdFrameLen+len], crc, 2);
+    wifi_tx_len = g_uMsgCmdFrameLen+len+2;
+    wifi_ack_delay = 3000;
+    my_sprintf ( cStr, sizeof(cStr),"AT+CIPSEND=0,%d", wifi_tx_len );
+    ESP32_Send_AT_Cmd ( cStr,  3000 );
+    return wifi_tx_len;
+}
+
+int WIFI_SendIlde(void){
+
+    if(wifi_tx_len == 0)
+		return 0;
+
+    if (wifi_state < WIFI_TRANS)
+        return 0;
+
+    if(wifi_ack_delay > 0)
+        return 0;
+	
+    return 1;
+
+}
+
+int WIFI_ReSend(void)
+{
+
+    char cStr [40] = {0};
+    if(wifi_tx_len == 0)
+		return 0;
+
+    if (wifi_state < WIFI_TRANS)
+        return -1;
+
+    if(wifi_ack_delay > 0)
+        return -2;
+	
+    wifi_ack_delay = 3000;
+    my_sprintf ( cStr, sizeof(cStr),"AT+CIPSEND=0,%d", wifi_tx_len );
+    ESP32_Send_AT_Cmd ( cStr,  3000 );
+	
+    return 0;
+}
+
+
+//wifi修改SSID
+void WIFI_set_ssid(void)
+{
+    wifi_ack_delay = 0;
+    wifi_state = WIFI_POWEROFF;
+    wifi_set_ssid = 1;
+
+    if(wifi_tx_len > 0)
+    {
+        WriteComm2((char *)wifi_tx_buf, wifi_tx_len);
+        wifi_tx_len = 0;
+    }        
+}
+
+
+//wifi修改SSID
+void WIFI_set_CloseConnect(void)
+{
+ 
+	wifi_state = WIFI_CLOSE;  
+}
+
+//在内存中查找字符串
+char* find_str(void *src, int size, char *str)
+{
+	char *p = (char*)src;
+	int len = strlen((const char *)str);
+
+	if(len < 1)
+		return p;
+
+	for(int i = 0; i < size; i++)
+	{
+		if(p[i] == *str)
+		{
+			if( 0 == memcmp(&p[i], str, len))
+			{
+				return &p[i];
+			}
+		}
+	}
+
+	return NULL;
+}
+
+
+/********************************************************************
+ *                         WIFI_recv_deal()
+ *
+ *描述:接收帧解析
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+void WIFI_recv_deal(void)
+{
+    char *p;
+    int data_len = g_wifi_rx_len;
+    int udp_data_len = 0;
+    char* data = (char*)g_wifi_rx_buf;
+    if(g_wifi_rx_len < 5)
+        return;
+
+    //判断是否接收完成
+    if(wifi_state > WIFI_LISTEN)
+    {
+        if(data[data_len-1] != '\n' && data[data_len-2] != '\n')
+        {
+            return;
+        }
+    }
+
+    switch (wifi_state)
+    {
+	//指令模式
+    case WIFI_POWEROFF:
+    case WIFI_ERROR:
+        if(NULL != find_str(data, data_len , "ready") || NULL != find_str(data, data_len , "boot"))
+		{
+			wifi_state = WIFI_POWERON;
+            wifi_ack_delay = 0;
+			memset(wifi_tx_buf,0,sizeof(wifi_tx_buf));
+			wifi_tx_len = 0;
+		} 
+        break;
+    case WIFI_POWERON:
+    case WIFI_INIT:
+    case WIFI_STATION:
+    case WIFI_DISAUTO:
+    case WIFI_LINK_AP:
+    case WIFI_GET_IP:
+    case WIFI_SETMUX:
+    case WIFI_LISTEN:		
+    	Van_Device_Printf(VAN_LOG_NOTICE,"\nW<-- %s", data);
+        if(NULL != find_str(data, data_len , "OK\r\n"))
+		{
+            wifi_ack_delay = 0;	
+			if(WIFI_LISTEN == wifi_state){
+				/*上电需要广播地址*/			
+				broadDevFlag = 1;
+				sysinf.s10_flag = 1;	
+				if(connectTcpFlag == 1){
+					if(wifi_tx_len){
+						char cStr [40] = {0};
+				        my_sprintf ( cStr,sizeof(cStr), "AT+CIPSEND=0,%d", wifi_tx_len );
+				        ESP32_Send_AT_Cmd ( cStr,  3000 );
+					}
+					sysinf.pc_link_timeout = 0;	
+				}	
+			}
+			wifi_state++;
+			resendtime = 0;
+		}
+        break;
+    case WIFI_CWLAP:		
+    	Van_Device_Printf(VAN_LOG_NOTICE,"\nW<-- %s", data);
+        if((NULL != find_str(data, data_len , "OK\r\n")) ||
+					(NULL != find_str(data, data_len , sysinf.wifiname)))
+		{
+            wifi_ack_delay = 0;		
+			/*char APname [70];
+            my_sprintf ( APname, sizeof(APname), "\"%s\"", sysinf.wifiname);*/
+			char* strStart = find_str(data, data_len ,sysinf.wifiname); 
+			if(NULL != strStart){
+			 strStart+=strlen(sysinf.wifiname);
+			 strStart = find_str(strStart, data_len ,",\""); 
+			 strStart += 2;/*跳过,\*/
+			 memcpy(&MAC_ADDR[0], strStart, 17);
+			 MAC_ADDR[18] = 0;
+			 wifi_state++;
+			}			
+		}
+        break;
+    //数据模式
+    case WIFI_TRANS:
+        //收到AT+CIPSEND回应,可发送数据  
+        if(NULL != find_str(data, data_len , "CLOSED"))			
+		{      
+    		Van_Device_Printf(VAN_LOG_NOTICE,"\nW<-- %d %s", g_wifi_rx_len,data);
+ 		   wifi_state = WIFI_LISTEN;
+             wifi_ack_delay = 0;//从发送写指令,到此才算发送完成            
+ 			broadDevFlag = 0;
+		}
+		else if	((NULL != find_str(data, data_len , "ERROR"))||
+			(NULL != find_str(data, data_len , "SEND FAIL")))
+		{    
+			if(resendtime < MAX_RESEND_TIME){				
+				char cStr [40] = {0};
+				my_sprintf ( cStr,sizeof(cStr), "AT+CIPSEND=0,%d", wifi_tx_len );
+				ESP32_Send_AT_Cmd ( cStr,  3000 );
+				resendtime ++;
+			}else{
+				wifi_state = WIFI_POWEROFF;
+				wifi_ack_delay = 0;
+			}
+			
+		} else if(NULL != find_str(data, data_len , "SEND OK"))
+		{
+        	//收到AT+CIPSEND回应,可发送数据
+		    Van_Device_Printf(VAN_LOG_NOTICE,"\nW--> SEND OK", wifi_tx_len); 
+            wifi_ack_delay = 0;//从发送写指令,到此才算发送完成
+            wifi_tx_len = 0;
+			resendtime = 0;
+            wifi_tx_len = 0;
+			memset(wifi_tx_buf, 0, sizeof(wifi_tx_buf));
+		}
+		 else if(NULL != find_str(data, data_len , "OK\r\n"))
+		{
+		    Van_Device_Printf(VAN_LOG_NOTICE,"\nW--> %d", wifi_tx_len); 
+			WriteComm2((char *)wifi_tx_buf, wifi_tx_len);
+            wifi_ack_delay = 3000;
+		}
+
+		if(NULL != find_str(data, data_len , "DISCONNECT"))
+		{
+		    Van_Device_Printf(VAN_LOG_NOTICE,"\nW--> %s", data); 
+			wifi_state = WIFI_POWEROFF;
+            wifi_ack_delay = 0;
+		}
+        
+        //收到PC数据
+        p = find_str(data, data_len , "+IPD,0,");
+        if(NULL != p)
+		{
+			Van_Device_Printf(VAN_LOG_NOTICE,"\nW<-- %d", g_wifi_rx_len);
+            //计算数据长度(sscanf函数有问题!)
+            p += sizeof("+IPD,0");
+            udp_data_len = atoi(p);
+
+            //数据
+            p = strchr(p, ':') +1;
+
+            if( p - data  > data_len - udp_data_len)    //未接收完成
+            {
+                p = find_str(data, data_len , "+IPD,0,");
+                memset(data, 0 ,p - data);
+                return;
+            }
+
+ //           set_pc_chanel_recv(1);
+ //   	    b2b_recv_data(p, udp_data_len);
+		}
+
+        break;    
+    case WIFI_CLOSE:{
+        if(NULL != find_str(data, data_len , "CLOSED\r\n"))
+		{
+			wifi_state = WIFI_LISTEN;
+            wifi_ack_delay = 0;	
+		}		
+	}
+        break;
+    default:
+        break;
+    }
+
+	wifi_receive_clear();
+}
+
+
+void WIFI_send_deal(void)
+{
+    static uint8_t try_count = 0;
+    static uint8_t try_con = 0;
+    static uint32_t wifi_start_delay = 0;
+    
+    static uint8_t res_count = 0;
+    uint8_t wifi_result = 0;
+
+    //启动超时
+    if(wifi_state < WIFI_LISTEN && wifi_start_delay++ > 120*10)
+    {
+        wifi_start_delay = 0;
+        wifi_state = WIFI_POWEROFF;
+        wifi_ack_delay = 0;
+    }
+
+    //等待模块应答
+    if(wifi_ack_delay > 0)
+    {
+        wifi_ack_delay -= 100;
+        return;
+    }
+	if(resendtime >= MAX_RESEND_TIME){
+        wifi_state = WIFI_POWEROFF;		
+	}
+	if((WIFI_TRANS != wifi_state )|| ((WIFI_TRANS == wifi_state)&& wifi_tx_len )){
+		resendtime++;
+	}
+    switch (wifi_state)
+    {
+    case WIFI_POWEROFF:
+    case WIFI_ERROR:
+        ESP32_AT_RST();
+        wifi_start_delay = 0;
+		resendtime = 0;
+        try_count = 0;
+		if(sysinf.connectTcpFlag){
+			/*持续5次均不能链接到tcp,状态回退,重启链接udp*/
+			res_count++;
+			if(res_count > 5){
+				sysinf.connectTcpFlag = 0;
+			}
+		}
+        break;
+    case WIFI_POWERON:
+        ESP32_AT();
+        break;
+    case WIFI_INIT:
+        ESP32_EchoOff();
+        break;
+    case WIFI_STATION:
+        ESP32_Net_Mode_Choose(STA);
+        break;
+    case WIFI_DISAUTO:
+        ESP32_DisAutoLink();
+        try_count = 0;
+        break;
+    case WIFI_CWLAP:
+        ESP32_CWLAP(sysinf.wifiname);
+		if(try_count++ > 7)
+        {
+            wifi_state = WIFI_POWEROFF;
+            if(wifi_set_ssid == 1)
+            {
+                wifi_set_ssid = 0;
+           		wifi_result = 0;
+             //   data_send_to_pc(PC_CMD_SETWIFI, &wifi_result, 1);
+            }
+        }
+        try_con = 0;
+        break;
+    case WIFI_LINK_AP:
+        ESP32_JoinAP(sysinf.wifiname, sysinf.password,MAC_ADDR);
+		if(try_con++ >= 5)
+        {
+            wifi_state = WIFI_POWEROFF;
+            if(wifi_set_ssid == 1)
+            {
+                wifi_set_ssid = 0;
+           		wifi_result = 0;
+            //    data_send_to_pc(PC_CMD_SETWIFI, &wifi_result, 1);
+            }
+        }
+        break;
+    case WIFI_GET_IP:
+        ESP32_GetIp();
+        if(wifi_set_ssid == 1)
+        {
+            wifi_set_ssid = 0;
+            wifi_result = 1;
+         //   data_send_to_pc(PC_CMD_SETWIFI, &wifi_result, 1);
+        }
+        break;
+    case WIFI_SETMUX:
+        ESP32_Enable_MultipleId(1);
+        break;
+    case WIFI_LISTEN:
+		if(connectTcpFlag){
+			if(resendtime < MAX_RESEND_TIME)
+	        { 	
+	        	ESP32_Link_Server(enumTCP,TCP_IP_Addr, TCP_IP_PORT, Multiple_ID_0);
+			}else{			
+				/*多次TCP未链接,链接UDP*/
+//            	connectTcpFlag = 0;
+//				resendtime = 0;
+	            wifi_tx_len = 0;
+				memset(wifi_tx_buf, 0, sizeof(wifi_tx_buf));
+			}        	
+		}else{
+			if(resendtime < MAX_RESEND_TIME)
+	        { 	
+	        	ESP32_Link_Server(enumUDP,User_ESP32_UDPServer_IP, User_ESP32_UDPServer_PORT, Multiple_ID_0);
+			}
+		}
+        break;
+    case WIFI_TRANS:
+			if(resendtime < MAX_RESEND_TIME)
+	        { 	
+	        	if(wifi_tx_len){
+					char cStr [40] = {0};
+					my_sprintf ( cStr,sizeof(cStr),"AT+CIPSEND=0,%d", wifi_tx_len );
+					ESP32_Send_AT_Cmd ( cStr,  3000 );
+				}			
+			}
+			if(connectTcpFlag){
+				/*tcp链接上,复位计数清零*/
+				res_count = 0;
+			}
+        break;
+    case WIFI_CLOSE:
+        ESP32_STOPTCP(Multiple_ID_0);
+        break;
+    
+    default:
+        wifi_state = WIFI_ERROR;
+        break;
+    }
+
+}
+
+
+//wifi任务
+void WIFI_process()
+{
+
+		if(sysinf.pc_channel_recv == 2  &&  wifi_state > WIFI_SETMUX){
+			/*串口状态下,不走wifi处理*/
+			return;
+		}
+    WIFI_recv_deal();
+
+    WIFI_send_deal();
+}
+
+static uint32_t m_pow_n(uint32_t m, int32_t n)
+{
+    uint32_t i = 0, ret = 1;
+    if (n < 0) return 0;
+    for (i = 0; i < n; i++)
+    {
+        ret *= m;
+    }
+    return ret;
+}
+
+// 返回值为打印字符的个数
+// 支持%d,%o, %x,%s,%c,%f(只打印6位数字)
+int my_sprintf(char *pdes,unsigned int len, const char* str, ...)
+{
+    if (str == NULL) return -1;
+
+	  uint32_t ret_num = 0;// 返回打印字符的个数
+    char* pStr = (char*)str;// 指向str
+    int ArgIntVal = 0;  // 接收整型
+    uint32_t ArgHexVal = 0;// 接十六进制
+    char* ArgStrVal = NULL;  // 接收字符型
+    double ArgFloVal = 0.0; // 接受浮点型
+    uint32_t val_seg = 0;   // 数据切分
+    uint32_t val_temp = 0;  // 临时保存数据
+    int cnt = 0;       // 数据长度计数
+    int cnt_float = 0;       // 数据长度计数
+    
+    va_list pArgs; // 定义va_list类型指针,用于存储参数的地址
+    va_start(pArgs, str); // 初始化pArgs
+    while (*pStr != '\0')
+    {
+        switch (*pStr)
+        {
+        case ' ':
+        case '\r':
+        case '\n':
+            *pdes++ = (*pStr); ret_num++; break;
+        case '\t':
+            *pdes++ =(*pStr); ret_num += 4; break;
+        case '%':
+            pStr++;
+            // % 格式解析
+
+			if('.' == *pStr)
+			{
+            	pStr++;
+				cnt_float = *pStr - '0';// %.Nf,输出指定位数小数
+                pStr++;
+			}
+			
+            switch (*pStr)
+            {
+            case '%':
+                *pdes++ =('%');// %%,输出%
+                ret_num++;
+                pStr++;
+				continue;
+            case 'c':
+                ArgIntVal = va_arg(pArgs, int);// %c,输出char
+                *pdes++ =((char)ArgIntVal);
+                ret_num++;
+                pStr++;
+				continue;
+            case 'd':
+                // 接收整型
+                ArgIntVal = va_arg(pArgs, int);
+                if (ArgIntVal < 0)// 如果为负数打印,负号
+                {
+                    ArgIntVal = -ArgIntVal;// 取相反数
+
+                    *pdes++ =('-');
+                    ret_num++;
+                }
+                val_seg = ArgIntVal;// 赋值给 val_seg处理数据
+                // 计算ArgIntVal长度
+                if (ArgIntVal)
+                {
+                    while (val_seg) {
+                        cnt++;
+                        val_seg /= 10;
+                    }
+                }
+                else cnt = 1;// 数字0的长度为1
+
+                ret_num += cnt;// 字符个数加上整数的长度
+
+                // 将整数转为单个字符打印
+                while (cnt)
+                {
+                    val_seg = ArgIntVal / m_pow_n(10, cnt - 1);
+                    ArgIntVal %= m_pow_n(10, cnt - 1);
+                    *pdes++ =((char)val_seg + '0');
+                    cnt--;
+                }
+                pStr++;
+                continue;
+            case 'o':
+                // 接收整型
+                ArgIntVal = va_arg(pArgs, int);
+                if (ArgIntVal < 0)// 如果为负数打印,负号
+                {
+                    ArgIntVal = -ArgIntVal;// 取相反数
+
+                    *pdes++ =('-');
+                    ret_num++;
+                }
+                val_seg = ArgIntVal;// 赋值给 val_seg处理数据
+                // 计算ArgIntVal长度
+                if (ArgIntVal)
+                {
+                    while (val_seg) {
+                        cnt++;
+                        val_seg /= 8;
+                    }
+                }
+                else cnt = 1;// 数字0的长度为1
+
+                ret_num += cnt;// 字符个数加上整数的长度
+
+                // 将整数转为单个字符打印
+                while (cnt)
+                {
+                    val_seg = ArgIntVal / m_pow_n(8, cnt - 1);
+                    ArgIntVal %= m_pow_n(8, cnt - 1);
+                    *pdes++ =((char)val_seg + '0');
+                    cnt--;
+                }
+                pStr++;
+				continue;
+            case 'x':
+                // 接收16进制
+                ArgHexVal = va_arg(pArgs, uint32_t);
+                val_seg = ArgHexVal;
+                // 计算ArgIntVal长度
+                if (ArgHexVal)
+                {
+                    while (val_seg) {
+                        cnt++;
+                        val_seg /= 16;
+                    }
+                }
+                else cnt = 1;// 数字0的长度为1
+
+                ret_num += cnt;// 字符个数加上整数的长度
+                // 将整数转为单个字符打印
+                while (cnt)
+                {
+                    val_seg = ArgHexVal / m_pow_n(16, cnt - 1);
+                    ArgHexVal %= m_pow_n(16, cnt - 1);
+                    if (val_seg <= 9)
+                        *pdes++ =((char)val_seg + '0');
+                    else
+                    {
+						//*pdes++ =((char)val_seg - 10 + 'a'); //小写字母
+                        *pdes++ =((char)val_seg - 10 + 'A');
+                    }
+                    cnt--;
+                }
+                pStr++;
+				continue;
+            case 'b':
+                // 接收整型
+                ArgIntVal = va_arg(pArgs, int);
+                val_seg = ArgIntVal;
+                // 计算ArgIntVal长度
+                if (ArgIntVal)
+                {
+                    while (val_seg) {
+                        cnt++;
+                        val_seg /= 2;
+                    }
+                }
+                else cnt = 1;// 数字0的长度为1
+
+                ret_num += cnt;// 字符个数加上整数的长度
+                // 将整数转为单个字符打印
+                while (cnt)
+                {
+                    val_seg = ArgIntVal / m_pow_n(2, cnt - 1);
+                    ArgIntVal %= m_pow_n(2, cnt - 1);
+                    *pdes++ =((char)val_seg + '0');
+                    cnt--;
+                }
+                pStr++;
+				continue;
+            case 's':
+                // 接收字符
+                ArgStrVal = va_arg(pArgs, char*);
+                ret_num += (uint32_t)strlen(ArgStrVal);
+                while (*ArgStrVal)
+                {
+                    *pdes++ =(*ArgStrVal);
+                    ArgStrVal++;
+                }
+
+                pStr++;
+				continue;
+
+            case 'f':
+                // 接收浮点型 保留6为小数,不采取四舍五入
+                ArgFloVal = va_arg(pArgs, double);
+                val_seg = (uint32_t)ArgFloVal;// 取整数部分
+                val_temp = val_seg;      // 临时保存整数部分数据
+                ArgFloVal = ArgFloVal - val_seg;// 得出余下的小数部分
+                // 计算整数部分长度
+                if (val_seg)
+                {
+                    while (val_seg) {
+                        cnt++;
+                        val_seg /= 10;
+                    }
+                }
+                else cnt = 1;// 数字0的长度为1
+                ret_num += cnt;// 字符个数加上整数的长度
+                // 将整数转为单个字符打印
+                while (cnt)
+                {
+                    val_seg = val_temp / m_pow_n(10, cnt - 1);
+                    val_temp %= m_pow_n(10, cnt - 1);
+                    *pdes++ =((char)val_seg + '0');
+                    cnt--;
+                }
+                // 打印小数点
+                *pdes++ =('.');
+                ret_num++;
+                // printf("\r\n %f\r\n", ArgFloVal);
+				if(cnt_float == 0)
+                	cnt_float = 6;
+					
+                // 开始输出小数部分
+                //ArgFloVal *= 1000000;
+                ArgFloVal *= m_pow_n(10, cnt_float);
+
+                val_temp = (int)ArgFloVal;// 取整数部分
+                while (cnt_float)
+                {
+                    val_seg = val_temp / m_pow_n(10, cnt_float - 1);
+                    val_temp %= m_pow_n(10, cnt_float - 1);
+                    *pdes++ =((char)val_seg + '0');
+                    cnt_float--;
+                }
+                ret_num += 6;
+                pStr++;
+				continue;
+            default:// % 匹配错误,暂输出空格
+				*pdes++ =(' '); ret_num++;
+				break;
+            }
+			break;
+
+
+        default:
+            *pdes++ =(*pStr); ret_num++;
+            break;
+        }
+        pStr++;
+		if(ret_num > len){
+			break;
+		}
+    }
+    va_end(pArgs);// 结束取参数
+
+    *pdes++ = 0;
+
+    return ret_num;
+}

+ 78 - 0
DriverInterface/ESP32_WROOM_32D.h

@@ -0,0 +1,78 @@
+/*
+ * hy40r204.h
+ *
+ *  Created on: 2022年4月11日
+ *      Author: dell
+ */
+
+#ifndef ESP32_WROOM_32D_H_
+#define ESP32_WROOM_32D_H_
+#include <stdio.h>
+#include <string.h>
+#include "onechip_include_header.h"
+
+/* USER CODE BEGIN Private defines */
+#define MAX_RESEND_TIME 5
+
+//WIFI模块状态
+enum WIFI_State
+{
+  WIFI_POWEROFF = -1,   //重启
+  WIFI_POWERON = 0,   //上电
+  WIFI_INIT,      //初始化
+  WIFI_STATION,   //设置Station模式
+  WIFI_CWLAP,      //禁止自动连接
+  WIFI_DISAUTO,      //禁止自动连接
+  WIFI_LINK_AP,   //连接AP
+  WIFI_GET_IP,    //查询IP
+  WIFI_SETMUX,      //打开多链接
+  WIFI_LISTEN,    //监听广播
+  WIFI_TRANS,    //数据传输
+  WIFI_CLOSE,    //关闭链接
+  WIFI_ERROR,    //错误状态
+};
+
+
+typedef enum
+{
+    STA,
+    AP,
+    STA_AP
+}ENUM_Net_ModeTypeDef;
+
+typedef enum{
+     enumTCP,
+     enumUDP,
+} ENUM_NetPro_TypeDef;
+
+typedef enum{
+    Multiple_ID_0 = 0,
+    Multiple_ID_1 = 1,
+    Multiple_ID_2 = 2,
+    Multiple_ID_3 = 3,
+    Multiple_ID_4 = 4,
+    Single_ID_0 = 5,
+} ENUM_ID_NO_TypeDef;
+
+
+#define User_ESP32_SSID     "Onechip"
+#define User_ESP32_PWD      "onechip1003"
+
+#define User_ESP32_TCPServer_IP     "192.168.3.182"
+#define User_ESP32_TCPServer_PORT   "8002"
+#define User_ESP32_UDPServer_IP     "255.255.255.255"
+#define User_ESP32_UDPServer_PORT   "9090"
+
+char* find_str(void *src, int size,char *str);
+void WIFI_set_ssid(void);
+void WIFI_process(void);
+void WIFI_set_CloseConnect(void);
+int WIFI_Send_Data(uint8_t *data, uint16_t len, uint8_t flag);
+int WIFI_Send_MSG(uint8_t*msgHead,uint8_t *data, uint8_t * crc, uint16_t len);
+int WIFI_ReSend(void);
+int WIFI_SendIlde(void);
+
+int my_sprintf(char *pdes,unsigned int len, const char* str, ...);
+
+
+#endif /* ESP32_WROOM_32D_H_ */

+ 33 - 0
DriverInterface/TCA9548A.h

@@ -0,0 +1,33 @@
+
+
+#ifndef __TCA9548A__H
+#define __TCA9548A_H
+#define Sensor1           1
+#define Sensor2           2
+#define Sensor3           3
+#define Sensor4           4
+#define Sensor5           5
+#define Sensor6           6
+#define Sensor7           7
+#define Sensor8           8
+#define Sensor9           9
+#define Sensor10          10
+#define SenRST            11
+/**********************************/
+#define TCA9548A_SLAVE_ADDR         0x70
+#define TCA9548A_SLAVE_ADDR1        0x74
+
+#define TCA9548A_WRITE_BIT          0x00
+#define TCA9548A_READ_BIT           0x01
+
+#define TCA9548A_CHANNEL_0          0x00
+#define TCA9548A_CHANNEL_1          0x01
+#define TCA9548A_CHANNEL_2          0x02
+#define TCA9548A_CHANNEL_3          0x04
+#define TCA9548A_CHANNEL_4          0x08
+#define TCA9548A_CHANNEL_5          0x10
+#define TCA9548A_CHANNEL_6          0x20
+#define TCA9548A_CHANNEL_7          0x40
+#define TCA9548A_CHANNEL_8          0x80
+
+#endif

+ 152 - 0
DriverInterface/VAN_ITCallBack.c

@@ -0,0 +1,152 @@
+/******************************************************************
+*  Copyright (C) 2023 - 2023 OneChip, Inc. All rights reserved.
+* File name: VAN_ITCallBack.c
+* Author: fanyidong 	 Date:2020.11.21
+* Description:		STM32串口回调函数
+* Others:
+* History:
+        1. Date:
+                 Author:
+                 Modification:
+
+*****************************************************************/
+#include "onechip_include_header.h"
+
+
+
+/****************************************************************
+* 函数名:    HAL_UART_Rec_IDLE
+* 创建时间:  2021/04/22
+* 创建人:    范义东
+* 函数说明:空闲处理函数
+* 输入参数:   dev  传 NULL 采用本地定义
+						devNum   数码
+* 输出参数:   *name
+* 返回值 :   void
+****************************************************************/
+
+void HAL_UART_Rec_IDLE(UART_HandleTypeDef *huart)
+{
+	UART_HandleTypeDef *Uart = (UART_HandleTypeDef *)sysinf.debugUart;
+	if (huart->Instance == Uart->Instance)
+	{
+		Van_Debug_UART_Rec_IDLE(huart);
+	  return;
+	}
+	Uart = (UART_HandleTypeDef *)sysinf.scannerUart;
+	if (huart->Instance == Uart->Instance){
+		svanner_receive_Rec_IDLE(huart);
+	  return;
+	}
+	
+	Uart = (UART_HandleTypeDef *)sysinf.ESPUart;
+	if (huart->Instance == Uart->Instance){
+		esp_receive_Rec_IDLE(huart);
+	  return;
+	}
+	
+	return;
+}
+
+/****************************************************************
+* 函数名:    HAL_UART_Rec_IDLE
+* 创建时间:  2021/04/22
+* 创建人:    范义东
+* 函数说明:空闲处理函数
+* 输入参数:   dev  传 NULL 采用本地定义
+						devNum   数码
+* 输出参数:   *name
+* 返回值 :   void
+****************************************************************/
+void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
+{
+//	Van_UART_Fun_RxCpltCallback(huart);
+
+}
+
+
+/****************************************************************
+* 函数名:    HAL_UART_TxCpltCallback
+* 创建时间:  2021/04/22
+* 创建人:    范义东
+* 函数说明:发送处理处理回调函数
+* 输入参数:   dev  传 NULL 采用本地定义
+						devNum   数码
+* 输出参数:   *name
+* 返回值 :   void
+****************************************************************/
+// DMA发送完成中断回调函数
+void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
+{
+	UART_HandleTypeDef *debugUart = (UART_HandleTypeDef *)sysinf.debugUart;
+	
+	if (huart->Instance == debugUart->Instance)
+	{
+		if (huart->hdmatx->State != HAL_DMA_STATE_BUSY)
+		{
+			Van_Debug_UART_TxCpltCallback(huart);
+		}
+	}else{
+		if (huart->hdmatx->State != HAL_DMA_STATE_BUSY)
+		{
+	//		Van_UART_Fun_TxCpltCallback(huart);
+		}
+	}
+}
+
+
+/**
+  * @brief  EXTI line detection callback.
+  * @param  GPIO_Pin: Specifies the port pin connected to corresponding EXTI line.
+  * @retval None
+  */
+
+
+
+/****************************************************************
+* 函数名:    HAL_UART_Rec_IDLE
+* 创建时间:  2021/04/22
+* 创建人:    范义东
+* 函数说明:空闲处理函数
+* 输入参数:   dev  传 NULL 采用本地定义
+						devNum   数码
+* 输出参数:   *name
+* 返回值 :   void
+****************************************************************/
+
+void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
+{
+	UART_HandleTypeDef *debugUart = (UART_HandleTypeDef *)sysinf.debugUart;
+	
+	if (huart->Instance == debugUart->Instance)
+	{
+		Van_Debug_UART_ErrorCallback(huart);
+	}else{
+//		Van_UART_Fun_ErrorCallback(huart);
+	}
+	return;
+}
+
+
+/**
+  * @brief  EXTI line detection callback.
+  * @param  GPIO_Pin: Specifies the port pin connected to corresponding EXTI line.
+  * @retval None
+  */
+
+void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(GPIO_Pin);
+	if(GPIO_Pin == MINI7_V2_KEY_Pin){
+		KYE_IRQHandler();
+	}
+	
+	if(GPIO_Pin == MINI7_V2_REF_SW2_Pin){
+		OPTO_IRQHandler();
+	}
+	
+  /* NOTE: This function Should not be modified, when the callback is needed,
+           the HAL_GPIO_EXTI_Callback could be implemented in the user file
+   */
+}

+ 21 - 0
DriverInterface/VAN_ITCallBack.h

@@ -0,0 +1,21 @@
+
+/******************************************************************
+*  Copyright (C) 2023 - 2023 OneChip, Inc. All rights reserved.
+* File name: VAN_ITCallBack.h
+* Author: fanyidong 	 Date:2020.11.21
+* Description:		STM32串口回调函数
+* Others:
+* History:
+        1. Date:
+                 Author:
+                 Modification:
+
+*****************************************************************/
+
+#ifndef VAN_IT_CALLBACK_H
+#define VAN_IT_CALLBACK_H
+
+void HAL_UART_Rec_IDLE(UART_HandleTypeDef *huart);
+void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
+
+#endif // DRIVER_COMMON_H

+ 3119 - 0
DriverInterface/cJSON.c

@@ -0,0 +1,3119 @@
+/*
+  Copyright (c) 2009-2017 Dave Gamble and cJSON contributors
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+  THE SOFTWARE.
+*/
+
+/* cJSON */
+/* JSON parser in C. */
+
+/* disable warnings about old C89 functions in MSVC */
+#if !defined(_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER)
+#define _CRT_SECURE_NO_DEPRECATE
+#endif
+
+#ifdef __GNUC__
+#pragma GCC visibility push(default)
+#endif
+#if defined(_MSC_VER)
+#pragma warning (push)
+/* disable warning about single line comments in system headers */
+#pragma warning (disable : 4001)
+#endif
+
+#include <string.h>
+#include <stdio.h>
+#include <math.h>
+#include <stdlib.h>
+#include <limits.h>
+#include <ctype.h>
+#include <float.h>
+
+#ifdef ENABLE_LOCALES
+#include <locale.h>
+#endif
+
+#if defined(_MSC_VER)
+#pragma warning (pop)
+#endif
+#ifdef __GNUC__
+#pragma GCC visibility pop
+#endif
+
+#include "cJSON.h"
+
+/* define our own boolean type */
+#ifdef true
+#undef true
+#endif
+#define true ((cJSON_bool)1)
+
+#ifdef false
+#undef false
+#endif
+#define false ((cJSON_bool)0)
+
+/* define isnan and isinf for ANSI C, if in C99 or above, isnan and isinf has been defined in math.h */
+#ifndef isinf
+#define isinf(d) (isnan((d - d)) && !isnan(d))
+#endif
+#ifndef isnan
+#define isnan(d) (d != d)
+#endif
+
+#ifndef NAN
+#ifdef _WIN32
+#define NAN sqrt(-1.0)
+#else
+#define NAN 0.0/0.0
+#endif
+#endif
+
+typedef struct {
+    const unsigned char *json;
+    size_t position;
+} error;
+static error global_error = { NULL, 0 };
+
+CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void)
+{
+    return (const char*) (global_error.json + global_error.position);
+}
+
+CJSON_PUBLIC(char *) cJSON_GetStringValue(const cJSON * const item)
+{
+    if (!cJSON_IsString(item))
+    {
+        return NULL;
+    }
+
+    return item->valuestring;
+}
+
+CJSON_PUBLIC(double) cJSON_GetNumberValue(const cJSON * const item)
+{
+    if (!cJSON_IsNumber(item))
+    {
+        return (double) NAN;
+    }
+
+    return item->valuedouble;
+}
+
+/* This is a safeguard to prevent copy-pasters from using incompatible C and header files */
+#if (CJSON_VERSION_MAJOR != 1) || (CJSON_VERSION_MINOR != 7) || (CJSON_VERSION_PATCH != 16)
+    #error cJSON.h and cJSON.c have different versions. Make sure that both have the same.
+#endif
+
+CJSON_PUBLIC(const char*) cJSON_Version(void)
+{
+    static char version[15];
+    sprintf(version, "%i.%i.%i", CJSON_VERSION_MAJOR, CJSON_VERSION_MINOR, CJSON_VERSION_PATCH);
+
+    return version;
+}
+
+/* Case insensitive string comparison, doesn't consider two NULL pointers equal though */
+static int case_insensitive_strcmp(const unsigned char *string1, const unsigned char *string2)
+{
+    if ((string1 == NULL) || (string2 == NULL))
+    {
+        return 1;
+    }
+
+    if (string1 == string2)
+    {
+        return 0;
+    }
+
+    for(; tolower(*string1) == tolower(*string2); (void)string1++, string2++)
+    {
+        if (*string1 == '\0')
+        {
+            return 0;
+        }
+    }
+
+    return tolower(*string1) - tolower(*string2);
+}
+
+typedef struct internal_hooks
+{
+    void *(CJSON_CDECL *allocate)(size_t size);
+    void (CJSON_CDECL *deallocate)(void *pointer);
+    void *(CJSON_CDECL *reallocate)(void *pointer, size_t size);
+} internal_hooks;
+
+#if defined(_MSC_VER)
+/* work around MSVC error C2322: '...' address of dllimport '...' is not static */
+static void * CJSON_CDECL internal_malloc(size_t size)
+{
+    return malloc(size);
+}
+static void CJSON_CDECL internal_free(void *pointer)
+{
+    free(pointer);
+}
+static void * CJSON_CDECL internal_realloc(void *pointer, size_t size)
+{
+    return realloc(pointer, size);
+}
+#else
+#define internal_malloc malloc
+#define internal_free free
+#define internal_realloc realloc
+#endif
+
+/* strlen of character literals resolved at compile time */
+#define static_strlen(string_literal) (sizeof(string_literal) - sizeof(""))
+
+static internal_hooks global_hooks = { internal_malloc, internal_free, internal_realloc };
+
+static unsigned char* cJSON_strdup(const unsigned char* string, const internal_hooks * const hooks)
+{
+    size_t length = 0;
+    unsigned char *copy = NULL;
+
+    if (string == NULL)
+    {
+        return NULL;
+    }
+
+    length = strlen((const char*)string) + sizeof("");
+    copy = (unsigned char*)hooks->allocate(length);
+    if (copy == NULL)
+    {
+        return NULL;
+    }
+    memcpy(copy, string, length);
+
+    return copy;
+}
+
+CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks* hooks)
+{
+    if (hooks == NULL)
+    {
+        /* Reset hooks */
+        global_hooks.allocate = malloc;
+        global_hooks.deallocate = free;
+        global_hooks.reallocate = realloc;
+        return;
+    }
+
+    global_hooks.allocate = malloc;
+    if (hooks->malloc_fn != NULL)
+    {
+        global_hooks.allocate = hooks->malloc_fn;
+    }
+
+    global_hooks.deallocate = free;
+    if (hooks->free_fn != NULL)
+    {
+        global_hooks.deallocate = hooks->free_fn;
+    }
+
+    /* use realloc only if both free and malloc are used */
+    global_hooks.reallocate = NULL;
+    if ((global_hooks.allocate == malloc) && (global_hooks.deallocate == free))
+    {
+        global_hooks.reallocate = realloc;
+    }
+}
+
+/* Internal constructor. */
+static cJSON *cJSON_New_Item(const internal_hooks * const hooks)
+{
+    cJSON* node = (cJSON*)hooks->allocate(sizeof(cJSON));
+    if (node)
+    {
+        memset(node, '\0', sizeof(cJSON));
+    }
+
+    return node;
+}
+
+/* Delete a cJSON structure. */
+CJSON_PUBLIC(void) cJSON_Delete(cJSON *item)
+{
+    cJSON *next = NULL;
+    while (item != NULL)
+    {
+        next = item->next;
+        if (!(item->type & cJSON_IsReference) && (item->child != NULL))
+        {
+            cJSON_Delete(item->child);
+        }
+        if (!(item->type & cJSON_IsReference) && (item->valuestring != NULL))
+        {
+            global_hooks.deallocate(item->valuestring);
+        }
+        if (!(item->type & cJSON_StringIsConst) && (item->string != NULL))
+        {
+            global_hooks.deallocate(item->string);
+        }
+        global_hooks.deallocate(item);
+        item = next;
+    }
+}
+
+/* get the decimal point character of the current locale */
+static unsigned char get_decimal_point(void)
+{
+#ifdef ENABLE_LOCALES
+    struct lconv *lconv = localeconv();
+    return (unsigned char) lconv->decimal_point[0];
+#else
+    return '.';
+#endif
+}
+
+typedef struct
+{
+    const unsigned char *content;
+    size_t length;
+    size_t offset;
+    size_t depth; /* How deeply nested (in arrays/objects) is the input at the current offset. */
+    internal_hooks hooks;
+} parse_buffer;
+
+/* check if the given size is left to read in a given parse buffer (starting with 1) */
+#define can_read(buffer, size) ((buffer != NULL) && (((buffer)->offset + size) <= (buffer)->length))
+/* check if the buffer can be accessed at the given index (starting with 0) */
+#define can_access_at_index(buffer, index) ((buffer != NULL) && (((buffer)->offset + index) < (buffer)->length))
+#define cannot_access_at_index(buffer, index) (!can_access_at_index(buffer, index))
+/* get a pointer to the buffer at the position */
+#define buffer_at_offset(buffer) ((buffer)->content + (buffer)->offset)
+
+/* Parse the input text to generate a number, and populate the result into item. */
+static cJSON_bool parse_number(cJSON * const item, parse_buffer * const input_buffer)
+{
+    double number = 0;
+    unsigned char *after_end = NULL;
+    unsigned char number_c_string[64];
+    unsigned char decimal_point = get_decimal_point();
+    size_t i = 0;
+
+    if ((input_buffer == NULL) || (input_buffer->content == NULL))
+    {
+        return false;
+    }
+
+    /* copy the number into a temporary buffer and replace '.' with the decimal point
+     * of the current locale (for strtod)
+     * This also takes care of '\0' not necessarily being available for marking the end of the input */
+    for (i = 0; (i < (sizeof(number_c_string) - 1)) && can_access_at_index(input_buffer, i); i++)
+    {
+        switch (buffer_at_offset(input_buffer)[i])
+        {
+            case '0':
+            case '1':
+            case '2':
+            case '3':
+            case '4':
+            case '5':
+            case '6':
+            case '7':
+            case '8':
+            case '9':
+            case '+':
+            case '-':
+            case 'e':
+            case 'E':
+                number_c_string[i] = buffer_at_offset(input_buffer)[i];
+                break;
+
+            case '.':
+                number_c_string[i] = decimal_point;
+                break;
+
+            default:
+                goto loop_end;
+        }
+    }
+loop_end:
+    number_c_string[i] = '\0';
+
+    number = strtod((const char*)number_c_string, (char**)&after_end);
+    if (number_c_string == after_end)
+    {
+        return false; /* parse_error */
+    }
+
+    item->valuedouble = number;
+
+    /* use saturation in case of overflow */
+    if (number >= INT_MAX)
+    {
+        item->valueint = INT_MAX;
+    }
+    else if (number <= (double)INT_MIN)
+    {
+        item->valueint = INT_MIN;
+    }
+    else
+    {
+        item->valueint = (int)number;
+    }
+
+    item->type = cJSON_Number;
+
+    input_buffer->offset += (size_t)(after_end - number_c_string);
+    return true;
+}
+
+/* don't ask me, but the original cJSON_SetNumberValue returns an integer or double */
+CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number)
+{
+    if (number >= INT_MAX)
+    {
+        object->valueint = INT_MAX;
+    }
+    else if (number <= (double)INT_MIN)
+    {
+        object->valueint = INT_MIN;
+    }
+    else
+    {
+        object->valueint = (int)number;
+    }
+
+    return object->valuedouble = number;
+}
+
+CJSON_PUBLIC(char*) cJSON_SetValuestring(cJSON *object, const char *valuestring)
+{
+    char *copy = NULL;
+    /* if object's type is not cJSON_String or is cJSON_IsReference, it should not set valuestring */
+    if (!(object->type & cJSON_String) || (object->type & cJSON_IsReference))
+    {
+        return NULL;
+    }
+    if (strlen(valuestring) <= strlen(object->valuestring))
+    {
+        strcpy(object->valuestring, valuestring);
+        return object->valuestring;
+    }
+    copy = (char*) cJSON_strdup((const unsigned char*)valuestring, &global_hooks);
+    if (copy == NULL)
+    {
+        return NULL;
+    }
+    if (object->valuestring != NULL)
+    {
+        cJSON_free(object->valuestring);
+    }
+    object->valuestring = copy;
+
+    return copy;
+}
+
+typedef struct
+{
+    unsigned char *buffer;
+    size_t length;
+    size_t offset;
+    size_t depth; /* current nesting depth (for formatted printing) */
+    cJSON_bool noalloc;
+    cJSON_bool format; /* is this print a formatted print */
+    internal_hooks hooks;
+} printbuffer;
+
+/* realloc printbuffer if necessary to have at least "needed" bytes more */
+static unsigned char* ensure(printbuffer * const p, size_t needed)
+{
+    unsigned char *newbuffer = NULL;
+    size_t newsize = 0;
+
+    if ((p == NULL) || (p->buffer == NULL))
+    {
+        return NULL;
+    }
+
+    if ((p->length > 0) && (p->offset >= p->length))
+    {
+        /* make sure that offset is valid */
+        return NULL;
+    }
+
+    if (needed > INT_MAX)
+    {
+        /* sizes bigger than INT_MAX are currently not supported */
+        return NULL;
+    }
+
+    needed += p->offset + 1;
+    if (needed <= p->length)
+    {
+        return p->buffer + p->offset;
+    }
+
+    if (p->noalloc) {
+        return NULL;
+    }
+
+    /* calculate new buffer size */
+    if (needed > (INT_MAX / 2))
+    {
+        /* overflow of int, use INT_MAX if possible */
+        if (needed <= INT_MAX)
+        {
+            newsize = INT_MAX;
+        }
+        else
+        {
+            return NULL;
+        }
+    }
+    else
+    {
+        newsize = needed * 2;
+    }
+
+    if (p->hooks.reallocate != NULL)
+    {
+        /* reallocate with realloc if available */
+        newbuffer = (unsigned char*)p->hooks.reallocate(p->buffer, newsize);
+        if (newbuffer == NULL)
+        {
+            p->hooks.deallocate(p->buffer);
+            p->length = 0;
+            p->buffer = NULL;
+
+            return NULL;
+        }
+    }
+    else
+    {
+        /* otherwise reallocate manually */
+        newbuffer = (unsigned char*)p->hooks.allocate(newsize);
+        if (!newbuffer)
+        {
+            p->hooks.deallocate(p->buffer);
+            p->length = 0;
+            p->buffer = NULL;
+
+            return NULL;
+        }
+
+        memcpy(newbuffer, p->buffer, p->offset + 1);
+        p->hooks.deallocate(p->buffer);
+    }
+    p->length = newsize;
+    p->buffer = newbuffer;
+
+    return newbuffer + p->offset;
+}
+
+/* calculate the new length of the string in a printbuffer and update the offset */
+static void update_offset(printbuffer * const buffer)
+{
+    const unsigned char *buffer_pointer = NULL;
+    if ((buffer == NULL) || (buffer->buffer == NULL))
+    {
+        return;
+    }
+    buffer_pointer = buffer->buffer + buffer->offset;
+
+    buffer->offset += strlen((const char*)buffer_pointer);
+}
+
+/* securely comparison of floating-point variables */
+static cJSON_bool compare_double(double a, double b)
+{
+    double maxVal = fabs(a) > fabs(b) ? fabs(a) : fabs(b);
+    return (fabs(a - b) <= maxVal * DBL_EPSILON);
+}
+
+/* Render the number nicely from the given item into a string. */
+static cJSON_bool print_number(const cJSON * const item, printbuffer * const output_buffer)
+{
+    unsigned char *output_pointer = NULL;
+    double d = item->valuedouble;
+    int length = 0;
+    size_t i = 0;
+    unsigned char number_buffer[26] = {0}; /* temporary buffer to print the number into */
+    unsigned char decimal_point = get_decimal_point();
+    double test = 0.0;
+
+    if (output_buffer == NULL)
+    {
+        return false;
+    }
+
+    /* This checks for NaN and Infinity */
+    if (isnan(d) || isinf(d))
+    {
+        length = sprintf((char*)number_buffer, "null");
+    }
+	else if(d == (double)item->valueint)
+	{
+		length = sprintf((char*)number_buffer, "%d", item->valueint);
+	}
+    else
+    {
+        /* Try 15 decimal places of precision to avoid nonsignificant nonzero digits */
+        length = sprintf((char*)number_buffer, "%1.15g", d);
+
+        /* Check whether the original double can be recovered */
+        if ((sscanf((char*)number_buffer, "%lg", &test) != 1) || !compare_double((double)test, d))
+        {
+            /* If not, print with 17 decimal places of precision */
+            length = sprintf((char*)number_buffer, "%1.17g", d);
+        }
+    }
+
+    /* sprintf failed or buffer overrun occurred */
+    if ((length < 0) || (length > (int)(sizeof(number_buffer) - 1)))
+    {
+        return false;
+    }
+
+    /* reserve appropriate space in the output */
+    output_pointer = ensure(output_buffer, (size_t)length + sizeof(""));
+    if (output_pointer == NULL)
+    {
+        return false;
+    }
+
+    /* copy the printed number to the output and replace locale
+     * dependent decimal point with '.' */
+    for (i = 0; i < ((size_t)length); i++)
+    {
+        if (number_buffer[i] == decimal_point)
+        {
+            output_pointer[i] = '.';
+            continue;
+        }
+
+        output_pointer[i] = number_buffer[i];
+    }
+    output_pointer[i] = '\0';
+
+    output_buffer->offset += (size_t)length;
+
+    return true;
+}
+
+/* parse 4 digit hexadecimal number */
+static unsigned parse_hex4(const unsigned char * const input)
+{
+    unsigned int h = 0;
+    size_t i = 0;
+
+    for (i = 0; i < 4; i++)
+    {
+        /* parse digit */
+        if ((input[i] >= '0') && (input[i] <= '9'))
+        {
+            h += (unsigned int) input[i] - '0';
+        }
+        else if ((input[i] >= 'A') && (input[i] <= 'F'))
+        {
+            h += (unsigned int) 10 + input[i] - 'A';
+        }
+        else if ((input[i] >= 'a') && (input[i] <= 'f'))
+        {
+            h += (unsigned int) 10 + input[i] - 'a';
+        }
+        else /* invalid */
+        {
+            return 0;
+        }
+
+        if (i < 3)
+        {
+            /* shift left to make place for the next nibble */
+            h = h << 4;
+        }
+    }
+
+    return h;
+}
+
+/* converts a UTF-16 literal to UTF-8
+ * A literal can be one or two sequences of the form \uXXXX */
+static unsigned char utf16_literal_to_utf8(const unsigned char * const input_pointer, const unsigned char * const input_end, unsigned char **output_pointer)
+{
+    long unsigned int codepoint = 0;
+    unsigned int first_code = 0;
+    const unsigned char *first_sequence = input_pointer;
+    unsigned char utf8_length = 0;
+    unsigned char utf8_position = 0;
+    unsigned char sequence_length = 0;
+    unsigned char first_byte_mark = 0;
+
+    if ((input_end - first_sequence) < 6)
+    {
+        /* input ends unexpectedly */
+        goto fail;
+    }
+
+    /* get the first utf16 sequence */
+    first_code = parse_hex4(first_sequence + 2);
+
+    /* check that the code is valid */
+    if (((first_code >= 0xDC00) && (first_code <= 0xDFFF)))
+    {
+        goto fail;
+    }
+
+    /* UTF16 surrogate pair */
+    if ((first_code >= 0xD800) && (first_code <= 0xDBFF))
+    {
+        const unsigned char *second_sequence = first_sequence + 6;
+        unsigned int second_code = 0;
+        sequence_length = 12; /* \uXXXX\uXXXX */
+
+        if ((input_end - second_sequence) < 6)
+        {
+            /* input ends unexpectedly */
+            goto fail;
+        }
+
+        if ((second_sequence[0] != '\\') || (second_sequence[1] != 'u'))
+        {
+            /* missing second half of the surrogate pair */
+            goto fail;
+        }
+
+        /* get the second utf16 sequence */
+        second_code = parse_hex4(second_sequence + 2);
+        /* check that the code is valid */
+        if ((second_code < 0xDC00) || (second_code > 0xDFFF))
+        {
+            /* invalid second half of the surrogate pair */
+            goto fail;
+        }
+
+
+        /* calculate the unicode codepoint from the surrogate pair */
+        codepoint = 0x10000 + (((first_code & 0x3FF) << 10) | (second_code & 0x3FF));
+    }
+    else
+    {
+        sequence_length = 6; /* \uXXXX */
+        codepoint = first_code;
+    }
+
+    /* encode as UTF-8
+     * takes at maximum 4 bytes to encode:
+     * 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */
+    if (codepoint < 0x80)
+    {
+        /* normal ascii, encoding 0xxxxxxx */
+        utf8_length = 1;
+    }
+    else if (codepoint < 0x800)
+    {
+        /* two bytes, encoding 110xxxxx 10xxxxxx */
+        utf8_length = 2;
+        first_byte_mark = 0xC0; /* 11000000 */
+    }
+    else if (codepoint < 0x10000)
+    {
+        /* three bytes, encoding 1110xxxx 10xxxxxx 10xxxxxx */
+        utf8_length = 3;
+        first_byte_mark = 0xE0; /* 11100000 */
+    }
+    else if (codepoint <= 0x10FFFF)
+    {
+        /* four bytes, encoding 1110xxxx 10xxxxxx 10xxxxxx 10xxxxxx */
+        utf8_length = 4;
+        first_byte_mark = 0xF0; /* 11110000 */
+    }
+    else
+    {
+        /* invalid unicode codepoint */
+        goto fail;
+    }
+
+    /* encode as utf8 */
+    for (utf8_position = (unsigned char)(utf8_length - 1); utf8_position > 0; utf8_position--)
+    {
+        /* 10xxxxxx */
+        (*output_pointer)[utf8_position] = (unsigned char)((codepoint | 0x80) & 0xBF);
+        codepoint >>= 6;
+    }
+    /* encode first byte */
+    if (utf8_length > 1)
+    {
+        (*output_pointer)[0] = (unsigned char)((codepoint | first_byte_mark) & 0xFF);
+    }
+    else
+    {
+        (*output_pointer)[0] = (unsigned char)(codepoint & 0x7F);
+    }
+
+    *output_pointer += utf8_length;
+
+    return sequence_length;
+
+fail:
+    return 0;
+}
+
+/* Parse the input text into an unescaped cinput, and populate item. */
+static cJSON_bool parse_string(cJSON * const item, parse_buffer * const input_buffer)
+{
+    const unsigned char *input_pointer = buffer_at_offset(input_buffer) + 1;
+    const unsigned char *input_end = buffer_at_offset(input_buffer) + 1;
+    unsigned char *output_pointer = NULL;
+    unsigned char *output = NULL;
+
+    /* not a string */
+    if (buffer_at_offset(input_buffer)[0] != '\"')
+    {
+        goto fail;
+    }
+
+    {
+        /* calculate approximate size of the output (overestimate) */
+        size_t allocation_length = 0;
+        size_t skipped_bytes = 0;
+        while (((size_t)(input_end - input_buffer->content) < input_buffer->length) && (*input_end != '\"'))
+        {
+            /* is escape sequence */
+            if (input_end[0] == '\\')
+            {
+                if ((size_t)(input_end + 1 - input_buffer->content) >= input_buffer->length)
+                {
+                    /* prevent buffer overflow when last input character is a backslash */
+                    goto fail;
+                }
+                skipped_bytes++;
+                input_end++;
+            }
+            input_end++;
+        }
+        if (((size_t)(input_end - input_buffer->content) >= input_buffer->length) || (*input_end != '\"'))
+        {
+            goto fail; /* string ended unexpectedly */
+        }
+
+        /* This is at most how much we need for the output */
+        allocation_length = (size_t) (input_end - buffer_at_offset(input_buffer)) - skipped_bytes;
+        output = (unsigned char*)input_buffer->hooks.allocate(allocation_length + sizeof(""));
+        if (output == NULL)
+        {
+            goto fail; /* allocation failure */
+        }
+    }
+
+    output_pointer = output;
+    /* loop through the string literal */
+    while (input_pointer < input_end)
+    {
+        if (*input_pointer != '\\')
+        {
+            *output_pointer++ = *input_pointer++;
+        }
+        /* escape sequence */
+        else
+        {
+            unsigned char sequence_length = 2;
+            if ((input_end - input_pointer) < 1)
+            {
+                goto fail;
+            }
+
+            switch (input_pointer[1])
+            {
+                case 'b':
+                    *output_pointer++ = '\b';
+                    break;
+                case 'f':
+                    *output_pointer++ = '\f';
+                    break;
+                case 'n':
+                    *output_pointer++ = '\n';
+                    break;
+                case 'r':
+                    *output_pointer++ = '\r';
+                    break;
+                case 't':
+                    *output_pointer++ = '\t';
+                    break;
+                case '\"':
+                case '\\':
+                case '/':
+                    *output_pointer++ = input_pointer[1];
+                    break;
+
+                /* UTF-16 literal */
+                case 'u':
+                    sequence_length = utf16_literal_to_utf8(input_pointer, input_end, &output_pointer);
+                    if (sequence_length == 0)
+                    {
+                        /* failed to convert UTF16-literal to UTF-8 */
+                        goto fail;
+                    }
+                    break;
+
+                default:
+                    goto fail;
+            }
+            input_pointer += sequence_length;
+        }
+    }
+
+    /* zero terminate the output */
+    *output_pointer = '\0';
+
+    item->type = cJSON_String;
+    item->valuestring = (char*)output;
+
+    input_buffer->offset = (size_t) (input_end - input_buffer->content);
+    input_buffer->offset++;
+
+    return true;
+
+fail:
+    if (output != NULL)
+    {
+        input_buffer->hooks.deallocate(output);
+    }
+
+    if (input_pointer != NULL)
+    {
+        input_buffer->offset = (size_t)(input_pointer - input_buffer->content);
+    }
+
+    return false;
+}
+
+/* Render the cstring provided to an escaped version that can be printed. */
+static cJSON_bool print_string_ptr(const unsigned char * const input, printbuffer * const output_buffer)
+{
+    const unsigned char *input_pointer = NULL;
+    unsigned char *output = NULL;
+    unsigned char *output_pointer = NULL;
+    size_t output_length = 0;
+    /* numbers of additional characters needed for escaping */
+    size_t escape_characters = 0;
+
+    if (output_buffer == NULL)
+    {
+        return false;
+    }
+
+    /* empty string */
+    if (input == NULL)
+    {
+        output = ensure(output_buffer, sizeof("\"\""));
+        if (output == NULL)
+        {
+            return false;
+        }
+        strcpy((char*)output, "\"\"");
+
+        return true;
+    }
+
+    /* set "flag" to 1 if something needs to be escaped */
+    for (input_pointer = input; *input_pointer; input_pointer++)
+    {
+        switch (*input_pointer)
+        {
+            case '\"':
+            case '\\':
+            case '\b':
+            case '\f':
+            case '\n':
+            case '\r':
+            case '\t':
+                /* one character escape sequence */
+                escape_characters++;
+                break;
+            default:
+                if (*input_pointer < 32)
+                {
+                    /* UTF-16 escape sequence uXXXX */
+                    escape_characters += 5;
+                }
+                break;
+        }
+    }
+    output_length = (size_t)(input_pointer - input) + escape_characters;
+
+    output = ensure(output_buffer, output_length + sizeof("\"\""));
+    if (output == NULL)
+    {
+        return false;
+    }
+
+    /* no characters have to be escaped */
+    if (escape_characters == 0)
+    {
+        output[0] = '\"';
+        memcpy(output + 1, input, output_length);
+        output[output_length + 1] = '\"';
+        output[output_length + 2] = '\0';
+
+        return true;
+    }
+
+    output[0] = '\"';
+    output_pointer = output + 1;
+    /* copy the string */
+    for (input_pointer = input; *input_pointer != '\0'; (void)input_pointer++, output_pointer++)
+    {
+        if ((*input_pointer > 31) && (*input_pointer != '\"') && (*input_pointer != '\\'))
+        {
+            /* normal character, copy */
+            *output_pointer = *input_pointer;
+        }
+        else
+        {
+            /* character needs to be escaped */
+            *output_pointer++ = '\\';
+            switch (*input_pointer)
+            {
+                case '\\':
+                    *output_pointer = '\\';
+                    break;
+                case '\"':
+                    *output_pointer = '\"';
+                    break;
+                case '\b':
+                    *output_pointer = 'b';
+                    break;
+                case '\f':
+                    *output_pointer = 'f';
+                    break;
+                case '\n':
+                    *output_pointer = 'n';
+                    break;
+                case '\r':
+                    *output_pointer = 'r';
+                    break;
+                case '\t':
+                    *output_pointer = 't';
+                    break;
+                default:
+                    /* escape and print as unicode codepoint */
+                    sprintf((char*)output_pointer, "u%04x", *input_pointer);
+                    output_pointer += 4;
+                    break;
+            }
+        }
+    }
+    output[output_length + 1] = '\"';
+    output[output_length + 2] = '\0';
+
+    return true;
+}
+
+/* Invoke print_string_ptr (which is useful) on an item. */
+static cJSON_bool print_string(const cJSON * const item, printbuffer * const p)
+{
+    return print_string_ptr((unsigned char*)item->valuestring, p);
+}
+
+/* Predeclare these prototypes. */
+static cJSON_bool parse_value(cJSON * const item, parse_buffer * const input_buffer);
+static cJSON_bool print_value(const cJSON * const item, printbuffer * const output_buffer);
+static cJSON_bool parse_array(cJSON * const item, parse_buffer * const input_buffer);
+static cJSON_bool print_array(const cJSON * const item, printbuffer * const output_buffer);
+static cJSON_bool parse_object(cJSON * const item, parse_buffer * const input_buffer);
+static cJSON_bool print_object(const cJSON * const item, printbuffer * const output_buffer);
+
+/* Utility to jump whitespace and cr/lf */
+static parse_buffer *buffer_skip_whitespace(parse_buffer * const buffer)
+{
+    if ((buffer == NULL) || (buffer->content == NULL))
+    {
+        return NULL;
+    }
+
+    if (cannot_access_at_index(buffer, 0))
+    {
+        return buffer;
+    }
+
+    while (can_access_at_index(buffer, 0) && (buffer_at_offset(buffer)[0] <= 32))
+    {
+       buffer->offset++;
+    }
+
+    if (buffer->offset == buffer->length)
+    {
+        buffer->offset--;
+    }
+
+    return buffer;
+}
+
+/* skip the UTF-8 BOM (byte order mark) if it is at the beginning of a buffer */
+static parse_buffer *skip_utf8_bom(parse_buffer * const buffer)
+{
+    if ((buffer == NULL) || (buffer->content == NULL) || (buffer->offset != 0))
+    {
+        return NULL;
+    }
+
+    if (can_access_at_index(buffer, 4) && (strncmp((const char*)buffer_at_offset(buffer), "\xEF\xBB\xBF", 3) == 0))
+    {
+        buffer->offset += 3;
+    }
+
+    return buffer;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated)
+{
+    size_t buffer_length;
+
+    if (NULL == value)
+    {
+        return NULL;
+    }
+
+    /* Adding null character size due to require_null_terminated. */
+    buffer_length = strlen(value) + sizeof("");
+
+    return cJSON_ParseWithLengthOpts(value, buffer_length, return_parse_end, require_null_terminated);
+}
+
+/* Parse an object - create a new root, and populate. */
+CJSON_PUBLIC(cJSON *) cJSON_ParseWithLengthOpts(const char *value, size_t buffer_length, const char **return_parse_end, cJSON_bool require_null_terminated)
+{
+    parse_buffer buffer = { 0, 0, 0, 0, { 0, 0, 0 } };
+    cJSON *item = NULL;
+
+    /* reset error position */
+    global_error.json = NULL;
+    global_error.position = 0;
+
+    if (value == NULL || 0 == buffer_length)
+    {
+        goto fail;
+    }
+
+    buffer.content = (const unsigned char*)value;
+    buffer.length = buffer_length;
+    buffer.offset = 0;
+    buffer.hooks = global_hooks;
+
+    item = cJSON_New_Item(&global_hooks);
+    if (item == NULL) /* memory fail */
+    {
+        goto fail;
+    }
+
+    if (!parse_value(item, buffer_skip_whitespace(skip_utf8_bom(&buffer))))
+    {
+        /* parse failure. ep is set. */
+        goto fail;
+    }
+
+    /* if we require null-terminated JSON without appended garbage, skip and then check for a null terminator */
+    if (require_null_terminated)
+    {
+        buffer_skip_whitespace(&buffer);
+        if ((buffer.offset >= buffer.length) || buffer_at_offset(&buffer)[0] != '\0')
+        {
+            goto fail;
+        }
+    }
+    if (return_parse_end)
+    {
+        *return_parse_end = (const char*)buffer_at_offset(&buffer);
+    }
+
+    return item;
+
+fail:
+    if (item != NULL)
+    {
+        cJSON_Delete(item);
+    }
+
+    if (value != NULL)
+    {
+        error local_error;
+        local_error.json = (const unsigned char*)value;
+        local_error.position = 0;
+
+        if (buffer.offset < buffer.length)
+        {
+            local_error.position = buffer.offset;
+        }
+        else if (buffer.length > 0)
+        {
+            local_error.position = buffer.length - 1;
+        }
+
+        if (return_parse_end != NULL)
+        {
+            *return_parse_end = (const char*)local_error.json + local_error.position;
+        }
+
+        global_error = local_error;
+    }
+
+    return NULL;
+}
+
+/* Default options for cJSON_Parse */
+CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value)
+{
+    return cJSON_ParseWithOpts(value, 0, 0);
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_ParseWithLength(const char *value, size_t buffer_length)
+{
+    return cJSON_ParseWithLengthOpts(value, buffer_length, 0, 0);
+}
+
+#define cjson_min(a, b) (((a) < (b)) ? (a) : (b))
+
+static unsigned char *print(const cJSON * const item, cJSON_bool format, const internal_hooks * const hooks)
+{
+    static const size_t default_buffer_size = 256;
+    printbuffer buffer[1];
+    unsigned char *printed = NULL;
+
+    memset(buffer, 0, sizeof(buffer));
+
+    /* create buffer */
+    buffer->buffer = (unsigned char*) hooks->allocate(default_buffer_size);
+    buffer->length = default_buffer_size;
+    buffer->format = format;
+    buffer->hooks = *hooks;
+    if (buffer->buffer == NULL)
+    {
+        goto fail;
+    }
+
+    /* print the value */
+    if (!print_value(item, buffer))
+    {
+        goto fail;
+    }
+    update_offset(buffer);
+
+    /* check if reallocate is available */
+    if (hooks->reallocate != NULL)
+    {
+        printed = (unsigned char*) hooks->reallocate(buffer->buffer, buffer->offset + 1);
+        if (printed == NULL) {
+            goto fail;
+        }
+        buffer->buffer = NULL;
+    }
+    else /* otherwise copy the JSON over to a new buffer */
+    {
+        printed = (unsigned char*) hooks->allocate(buffer->offset + 1);
+        if (printed == NULL)
+        {
+            goto fail;
+        }
+        memcpy(printed, buffer->buffer, cjson_min(buffer->length, buffer->offset + 1));
+        printed[buffer->offset] = '\0'; /* just to be sure */
+
+        /* free the buffer */
+        hooks->deallocate(buffer->buffer);
+    }
+
+    return printed;
+
+fail:
+    if (buffer->buffer != NULL)
+    {
+        hooks->deallocate(buffer->buffer);
+    }
+
+    if (printed != NULL)
+    {
+        hooks->deallocate(printed);
+    }
+
+    return NULL;
+}
+
+/* Render a cJSON item/entity/structure to text. */
+CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item)
+{
+    return (char*)print(item, true, &global_hooks);
+}
+
+CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item)
+{
+    return (char*)print(item, false, &global_hooks);
+}
+
+CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt)
+{
+    printbuffer p = { 0, 0, 0, 0, 0, 0, { 0, 0, 0 } };
+
+    if (prebuffer < 0)
+    {
+        return NULL;
+    }
+
+    p.buffer = (unsigned char*)global_hooks.allocate((size_t)prebuffer);
+    if (!p.buffer)
+    {
+        return NULL;
+    }
+
+    p.length = (size_t)prebuffer;
+    p.offset = 0;
+    p.noalloc = false;
+    p.format = fmt;
+    p.hooks = global_hooks;
+
+    if (!print_value(item, &p))
+    {
+        global_hooks.deallocate(p.buffer);
+        return NULL;
+    }
+
+    return (char*)p.buffer;
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format)
+{
+    printbuffer p = { 0, 0, 0, 0, 0, 0, { 0, 0, 0 } };
+
+    if ((length < 0) || (buffer == NULL))
+    {
+        return false;
+    }
+
+    p.buffer = (unsigned char*)buffer;
+    p.length = (size_t)length;
+    p.offset = 0;
+    p.noalloc = true;
+    p.format = format;
+    p.hooks = global_hooks;
+
+    return print_value(item, &p);
+}
+
+/* Parser core - when encountering text, process appropriately. */
+static cJSON_bool parse_value(cJSON * const item, parse_buffer * const input_buffer)
+{
+    if ((input_buffer == NULL) || (input_buffer->content == NULL))
+    {
+        return false; /* no input */
+    }
+
+    /* parse the different types of values */
+    /* null */
+    if (can_read(input_buffer, 4) && (strncmp((const char*)buffer_at_offset(input_buffer), "null", 4) == 0))
+    {
+        item->type = cJSON_NULL;
+        input_buffer->offset += 4;
+        return true;
+    }
+    /* false */
+    if (can_read(input_buffer, 5) && (strncmp((const char*)buffer_at_offset(input_buffer), "false", 5) == 0))
+    {
+        item->type = cJSON_False;
+        input_buffer->offset += 5;
+        return true;
+    }
+    /* true */
+    if (can_read(input_buffer, 4) && (strncmp((const char*)buffer_at_offset(input_buffer), "true", 4) == 0))
+    {
+        item->type = cJSON_True;
+        item->valueint = 1;
+        input_buffer->offset += 4;
+        return true;
+    }
+    /* string */
+    if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '\"'))
+    {
+        return parse_string(item, input_buffer);
+    }
+    /* number */
+    if (can_access_at_index(input_buffer, 0) && ((buffer_at_offset(input_buffer)[0] == '-') || ((buffer_at_offset(input_buffer)[0] >= '0') && (buffer_at_offset(input_buffer)[0] <= '9'))))
+    {
+        return parse_number(item, input_buffer);
+    }
+    /* array */
+    if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '['))
+    {
+        return parse_array(item, input_buffer);
+    }
+    /* object */
+    if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '{'))
+    {
+        return parse_object(item, input_buffer);
+    }
+
+    return false;
+}
+
+/* Render a value to text. */
+static cJSON_bool print_value(const cJSON * const item, printbuffer * const output_buffer)
+{
+    unsigned char *output = NULL;
+
+    if ((item == NULL) || (output_buffer == NULL))
+    {
+        return false;
+    }
+
+    switch ((item->type) & 0xFF)
+    {
+        case cJSON_NULL:
+            output = ensure(output_buffer, 5);
+            if (output == NULL)
+            {
+                return false;
+            }
+            strcpy((char*)output, "null");
+            return true;
+
+        case cJSON_False:
+            output = ensure(output_buffer, 6);
+            if (output == NULL)
+            {
+                return false;
+            }
+            strcpy((char*)output, "false");
+            return true;
+
+        case cJSON_True:
+            output = ensure(output_buffer, 5);
+            if (output == NULL)
+            {
+                return false;
+            }
+            strcpy((char*)output, "true");
+            return true;
+
+        case cJSON_Number:
+            return print_number(item, output_buffer);
+
+        case cJSON_Raw:
+        {
+            size_t raw_length = 0;
+            if (item->valuestring == NULL)
+            {
+                return false;
+            }
+
+            raw_length = strlen(item->valuestring) + sizeof("");
+            output = ensure(output_buffer, raw_length);
+            if (output == NULL)
+            {
+                return false;
+            }
+            memcpy(output, item->valuestring, raw_length);
+            return true;
+        }
+
+        case cJSON_String:
+            return print_string(item, output_buffer);
+
+        case cJSON_Array:
+            return print_array(item, output_buffer);
+
+        case cJSON_Object:
+            return print_object(item, output_buffer);
+
+        default:
+            return false;
+    }
+}
+
+/* Build an array from input text. */
+static cJSON_bool parse_array(cJSON * const item, parse_buffer * const input_buffer)
+{
+    cJSON *head = NULL; /* head of the linked list */
+    cJSON *current_item = NULL;
+
+    if (input_buffer->depth >= CJSON_NESTING_LIMIT)
+    {
+        return false; /* to deeply nested */
+    }
+    input_buffer->depth++;
+
+    if (buffer_at_offset(input_buffer)[0] != '[')
+    {
+        /* not an array */
+        goto fail;
+    }
+
+    input_buffer->offset++;
+    buffer_skip_whitespace(input_buffer);
+    if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == ']'))
+    {
+        /* empty array */
+        goto success;
+    }
+
+    /* check if we skipped to the end of the buffer */
+    if (cannot_access_at_index(input_buffer, 0))
+    {
+        input_buffer->offset--;
+        goto fail;
+    }
+
+    /* step back to character in front of the first element */
+    input_buffer->offset--;
+    /* loop through the comma separated array elements */
+    do
+    {
+        /* allocate next item */
+        cJSON *new_item = cJSON_New_Item(&(input_buffer->hooks));
+        if (new_item == NULL)
+        {
+            goto fail; /* allocation failure */
+        }
+
+        /* attach next item to list */
+        if (head == NULL)
+        {
+            /* start the linked list */
+            current_item = head = new_item;
+        }
+        else
+        {
+            /* add to the end and advance */
+            current_item->next = new_item;
+            new_item->prev = current_item;
+            current_item = new_item;
+        }
+
+        /* parse next value */
+        input_buffer->offset++;
+        buffer_skip_whitespace(input_buffer);
+        if (!parse_value(current_item, input_buffer))
+        {
+            goto fail; /* failed to parse value */
+        }
+        buffer_skip_whitespace(input_buffer);
+    }
+    while (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == ','));
+
+    if (cannot_access_at_index(input_buffer, 0) || buffer_at_offset(input_buffer)[0] != ']')
+    {
+        goto fail; /* expected end of array */
+    }
+
+success:
+    input_buffer->depth--;
+
+    if (head != NULL) {
+        head->prev = current_item;
+    }
+
+    item->type = cJSON_Array;
+    item->child = head;
+
+    input_buffer->offset++;
+
+    return true;
+
+fail:
+    if (head != NULL)
+    {
+        cJSON_Delete(head);
+    }
+
+    return false;
+}
+
+/* Render an array to text */
+static cJSON_bool print_array(const cJSON * const item, printbuffer * const output_buffer)
+{
+    unsigned char *output_pointer = NULL;
+    size_t length = 0;
+    cJSON *current_element = item->child;
+
+    if (output_buffer == NULL)
+    {
+        return false;
+    }
+
+    /* Compose the output array. */
+    /* opening square bracket */
+    output_pointer = ensure(output_buffer, 1);
+    if (output_pointer == NULL)
+    {
+        return false;
+    }
+
+    *output_pointer = '[';
+    output_buffer->offset++;
+    output_buffer->depth++;
+
+    while (current_element != NULL)
+    {
+        if (!print_value(current_element, output_buffer))
+        {
+            return false;
+        }
+        update_offset(output_buffer);
+        if (current_element->next)
+        {
+            length = (size_t) (output_buffer->format ? 2 : 1);
+            output_pointer = ensure(output_buffer, length + 1);
+            if (output_pointer == NULL)
+            {
+                return false;
+            }
+            *output_pointer++ = ',';
+            if(output_buffer->format)
+            {
+                *output_pointer++ = ' ';
+            }
+            *output_pointer = '\0';
+            output_buffer->offset += length;
+        }
+        current_element = current_element->next;
+    }
+
+    output_pointer = ensure(output_buffer, 2);
+    if (output_pointer == NULL)
+    {
+        return false;
+    }
+    *output_pointer++ = ']';
+    *output_pointer = '\0';
+    output_buffer->depth--;
+
+    return true;
+}
+
+/* Build an object from the text. */
+static cJSON_bool parse_object(cJSON * const item, parse_buffer * const input_buffer)
+{
+    cJSON *head = NULL; /* linked list head */
+    cJSON *current_item = NULL;
+
+    if (input_buffer->depth >= CJSON_NESTING_LIMIT)
+    {
+        return false; /* to deeply nested */
+    }
+    input_buffer->depth++;
+
+    if (cannot_access_at_index(input_buffer, 0) || (buffer_at_offset(input_buffer)[0] != '{'))
+    {
+        goto fail; /* not an object */
+    }
+
+    input_buffer->offset++;
+    buffer_skip_whitespace(input_buffer);
+    if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '}'))
+    {
+        goto success; /* empty object */
+    }
+
+    /* check if we skipped to the end of the buffer */
+    if (cannot_access_at_index(input_buffer, 0))
+    {
+        input_buffer->offset--;
+        goto fail;
+    }
+
+    /* step back to character in front of the first element */
+    input_buffer->offset--;
+    /* loop through the comma separated array elements */
+    do
+    {
+        /* allocate next item */
+        cJSON *new_item = cJSON_New_Item(&(input_buffer->hooks));
+        if (new_item == NULL)
+        {
+            goto fail; /* allocation failure */
+        }
+
+        /* attach next item to list */
+        if (head == NULL)
+        {
+            /* start the linked list */
+            current_item = head = new_item;
+        }
+        else
+        {
+            /* add to the end and advance */
+            current_item->next = new_item;
+            new_item->prev = current_item;
+            current_item = new_item;
+        }
+
+        /* parse the name of the child */
+        input_buffer->offset++;
+        buffer_skip_whitespace(input_buffer);
+        if (!parse_string(current_item, input_buffer))
+        {
+            goto fail; /* failed to parse name */
+        }
+        buffer_skip_whitespace(input_buffer);
+
+        /* swap valuestring and string, because we parsed the name */
+        current_item->string = current_item->valuestring;
+        current_item->valuestring = NULL;
+
+        if (cannot_access_at_index(input_buffer, 0) || (buffer_at_offset(input_buffer)[0] != ':'))
+        {
+            goto fail; /* invalid object */
+        }
+
+        /* parse the value */
+        input_buffer->offset++;
+        buffer_skip_whitespace(input_buffer);
+        if (!parse_value(current_item, input_buffer))
+        {
+            goto fail; /* failed to parse value */
+        }
+        buffer_skip_whitespace(input_buffer);
+    }
+    while (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == ','));
+
+    if (cannot_access_at_index(input_buffer, 0) || (buffer_at_offset(input_buffer)[0] != '}'))
+    {
+        goto fail; /* expected end of object */
+    }
+
+success:
+    input_buffer->depth--;
+
+    if (head != NULL) {
+        head->prev = current_item;
+    }
+
+    item->type = cJSON_Object;
+    item->child = head;
+
+    input_buffer->offset++;
+    return true;
+
+fail:
+    if (head != NULL)
+    {
+        cJSON_Delete(head);
+    }
+
+    return false;
+}
+
+/* Render an object to text. */
+static cJSON_bool print_object(const cJSON * const item, printbuffer * const output_buffer)
+{
+    unsigned char *output_pointer = NULL;
+    size_t length = 0;
+    cJSON *current_item = item->child;
+
+    if (output_buffer == NULL)
+    {
+        return false;
+    }
+
+    /* Compose the output: */
+    length = (size_t) (output_buffer->format ? 2 : 1); /* fmt: {\n */
+    output_pointer = ensure(output_buffer, length + 1);
+    if (output_pointer == NULL)
+    {
+        return false;
+    }
+
+    *output_pointer++ = '{';
+    output_buffer->depth++;
+    if (output_buffer->format)
+    {
+        *output_pointer++ = '\n';
+    }
+    output_buffer->offset += length;
+
+    while (current_item)
+    {
+        if (output_buffer->format)
+        {
+            size_t i;
+            output_pointer = ensure(output_buffer, output_buffer->depth);
+            if (output_pointer == NULL)
+            {
+                return false;
+            }
+            for (i = 0; i < output_buffer->depth; i++)
+            {
+                *output_pointer++ = '\t';
+            }
+            output_buffer->offset += output_buffer->depth;
+        }
+
+        /* print key */
+        if (!print_string_ptr((unsigned char*)current_item->string, output_buffer))
+        {
+            return false;
+        }
+        update_offset(output_buffer);
+
+        length = (size_t) (output_buffer->format ? 2 : 1);
+        output_pointer = ensure(output_buffer, length);
+        if (output_pointer == NULL)
+        {
+            return false;
+        }
+        *output_pointer++ = ':';
+        if (output_buffer->format)
+        {
+            *output_pointer++ = '\t';
+        }
+        output_buffer->offset += length;
+
+        /* print value */
+        if (!print_value(current_item, output_buffer))
+        {
+            return false;
+        }
+        update_offset(output_buffer);
+
+        /* print comma if not last */
+        length = ((size_t)(output_buffer->format ? 1 : 0) + (size_t)(current_item->next ? 1 : 0));
+        output_pointer = ensure(output_buffer, length + 1);
+        if (output_pointer == NULL)
+        {
+            return false;
+        }
+        if (current_item->next)
+        {
+            *output_pointer++ = ',';
+        }
+
+        if (output_buffer->format)
+        {
+            *output_pointer++ = '\n';
+        }
+        *output_pointer = '\0';
+        output_buffer->offset += length;
+
+        current_item = current_item->next;
+    }
+
+    output_pointer = ensure(output_buffer, output_buffer->format ? (output_buffer->depth + 1) : 2);
+    if (output_pointer == NULL)
+    {
+        return false;
+    }
+    if (output_buffer->format)
+    {
+        size_t i;
+        for (i = 0; i < (output_buffer->depth - 1); i++)
+        {
+            *output_pointer++ = '\t';
+        }
+    }
+    *output_pointer++ = '}';
+    *output_pointer = '\0';
+    output_buffer->depth--;
+
+    return true;
+}
+
+/* Get Array size/item / object item. */
+CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array)
+{
+    cJSON *child = NULL;
+    size_t size = 0;
+
+    if (array == NULL)
+    {
+        return 0;
+    }
+
+    child = array->child;
+
+    while(child != NULL)
+    {
+        size++;
+        child = child->next;
+    }
+
+    /* FIXME: Can overflow here. Cannot be fixed without breaking the API */
+
+    return (int)size;
+}
+
+static cJSON* get_array_item(const cJSON *array, size_t index)
+{
+    cJSON *current_child = NULL;
+
+    if (array == NULL)
+    {
+        return NULL;
+    }
+
+    current_child = array->child;
+    while ((current_child != NULL) && (index > 0))
+    {
+        index--;
+        current_child = current_child->next;
+    }
+
+    return current_child;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index)
+{
+    if (index < 0)
+    {
+        return NULL;
+    }
+
+    return get_array_item(array, (size_t)index);
+}
+
+static cJSON *get_object_item(const cJSON * const object, const char * const name, const cJSON_bool case_sensitive)
+{
+    cJSON *current_element = NULL;
+
+    if ((object == NULL) || (name == NULL))
+    {
+        return NULL;
+    }
+
+    current_element = object->child;
+    if (case_sensitive)
+    {
+        while ((current_element != NULL) && (current_element->string != NULL) && (strcmp(name, current_element->string) != 0))
+        {
+            current_element = current_element->next;
+        }
+    }
+    else
+    {
+        while ((current_element != NULL) && (case_insensitive_strcmp((const unsigned char*)name, (const unsigned char*)(current_element->string)) != 0))
+        {
+            current_element = current_element->next;
+        }
+    }
+
+    if ((current_element == NULL) || (current_element->string == NULL)) {
+        return NULL;
+    }
+
+    return current_element;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string)
+{
+    return get_object_item(object, string, false);
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive(const cJSON * const object, const char * const string)
+{
+    return get_object_item(object, string, true);
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON *object, const char *string)
+{
+    return cJSON_GetObjectItem(object, string) ? 1 : 0;
+}
+
+/* Utility for array list handling. */
+static void suffix_object(cJSON *prev, cJSON *item)
+{
+    prev->next = item;
+    item->prev = prev;
+}
+
+/* Utility for handling references. */
+static cJSON *create_reference(const cJSON *item, const internal_hooks * const hooks)
+{
+    cJSON *reference = NULL;
+    if (item == NULL)
+    {
+        return NULL;
+    }
+
+    reference = cJSON_New_Item(hooks);
+    if (reference == NULL)
+    {
+        return NULL;
+    }
+
+    memcpy(reference, item, sizeof(cJSON));
+    reference->string = NULL;
+    reference->type |= cJSON_IsReference;
+    reference->next = reference->prev = NULL;
+    return reference;
+}
+
+static cJSON_bool add_item_to_array(cJSON *array, cJSON *item)
+{
+    cJSON *child = NULL;
+
+    if ((item == NULL) || (array == NULL) || (array == item))
+    {
+        return false;
+    }
+
+    child = array->child;
+    /*
+     * To find the last item in array quickly, we use prev in array
+     */
+    if (child == NULL)
+    {
+        /* list is empty, start new one */
+        array->child = item;
+        item->prev = item;
+        item->next = NULL;
+    }
+    else
+    {
+        /* append to the end */
+        if (child->prev)
+        {
+            suffix_object(child->prev, item);
+            array->child->prev = item;
+        }
+    }
+
+    return true;
+}
+
+/* Add item to array/object. */
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToArray(cJSON *array, cJSON *item)
+{
+    return add_item_to_array(array, item);
+}
+
+#if defined(__clang__) || (defined(__GNUC__)  && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 5))))
+    #pragma GCC diagnostic push
+#endif
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-Wcast-qual"
+#endif
+/* helper function to cast away const */
+static void* cast_away_const(const void* string)
+{
+    return (void*)string;
+}
+#if defined(__clang__) || (defined(__GNUC__)  && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 5))))
+    #pragma GCC diagnostic pop
+#endif
+
+
+static cJSON_bool add_item_to_object(cJSON * const object, const char * const string, cJSON * const item, const internal_hooks * const hooks, const cJSON_bool constant_key)
+{
+    char *new_key = NULL;
+    int new_type = cJSON_Invalid;
+
+    if ((object == NULL) || (string == NULL) || (item == NULL) || (object == item))
+    {
+        return false;
+    }
+
+    if (constant_key)
+    {
+        new_key = (char*)cast_away_const(string);
+        new_type = item->type | cJSON_StringIsConst;
+    }
+    else
+    {
+        new_key = (char*)cJSON_strdup((const unsigned char*)string, hooks);
+        if (new_key == NULL)
+        {
+            return false;
+        }
+
+        new_type = item->type & ~cJSON_StringIsConst;
+    }
+
+    if (!(item->type & cJSON_StringIsConst) && (item->string != NULL))
+    {
+        hooks->deallocate(item->string);
+    }
+
+    item->string = new_key;
+    item->type = new_type;
+
+    return add_item_to_array(object, item);
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item)
+{
+    return add_item_to_object(object, string, item, &global_hooks, false);
+}
+
+/* Add an item to an object with constant string as key */
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item)
+{
+    return add_item_to_object(object, string, item, &global_hooks, true);
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item)
+{
+    if (array == NULL)
+    {
+        return false;
+    }
+
+    return add_item_to_array(array, create_reference(item, &global_hooks));
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item)
+{
+    if ((object == NULL) || (string == NULL))
+    {
+        return false;
+    }
+
+    return add_item_to_object(object, string, create_reference(item, &global_hooks), &global_hooks, false);
+}
+
+CJSON_PUBLIC(cJSON*) cJSON_AddNullToObject(cJSON * const object, const char * const name)
+{
+    cJSON *null = cJSON_CreateNull();
+    if (add_item_to_object(object, name, null, &global_hooks, false))
+    {
+        return null;
+    }
+
+    cJSON_Delete(null);
+    return NULL;
+}
+
+CJSON_PUBLIC(cJSON*) cJSON_AddTrueToObject(cJSON * const object, const char * const name)
+{
+    cJSON *true_item = cJSON_CreateTrue();
+    if (add_item_to_object(object, name, true_item, &global_hooks, false))
+    {
+        return true_item;
+    }
+
+    cJSON_Delete(true_item);
+    return NULL;
+}
+
+CJSON_PUBLIC(cJSON*) cJSON_AddFalseToObject(cJSON * const object, const char * const name)
+{
+    cJSON *false_item = cJSON_CreateFalse();
+    if (add_item_to_object(object, name, false_item, &global_hooks, false))
+    {
+        return false_item;
+    }
+
+    cJSON_Delete(false_item);
+    return NULL;
+}
+
+CJSON_PUBLIC(cJSON*) cJSON_AddBoolToObject(cJSON * const object, const char * const name, const cJSON_bool boolean)
+{
+    cJSON *bool_item = cJSON_CreateBool(boolean);
+    if (add_item_to_object(object, name, bool_item, &global_hooks, false))
+    {
+        return bool_item;
+    }
+
+    cJSON_Delete(bool_item);
+    return NULL;
+}
+
+CJSON_PUBLIC(cJSON*) cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number)
+{
+    cJSON *number_item = cJSON_CreateNumber(number);
+    if (add_item_to_object(object, name, number_item, &global_hooks, false))
+    {
+        return number_item;
+    }
+
+    cJSON_Delete(number_item);
+    return NULL;
+}
+
+CJSON_PUBLIC(cJSON*) cJSON_AddStringToObject(cJSON * const object, const char * const name, const char * const string)
+{
+    cJSON *string_item = cJSON_CreateString(string);
+    if (add_item_to_object(object, name, string_item, &global_hooks, false))
+    {
+        return string_item;
+    }
+
+    cJSON_Delete(string_item);
+    return NULL;
+}
+
+CJSON_PUBLIC(cJSON*) cJSON_AddRawToObject(cJSON * const object, const char * const name, const char * const raw)
+{
+    cJSON *raw_item = cJSON_CreateRaw(raw);
+    if (add_item_to_object(object, name, raw_item, &global_hooks, false))
+    {
+        return raw_item;
+    }
+
+    cJSON_Delete(raw_item);
+    return NULL;
+}
+
+CJSON_PUBLIC(cJSON*) cJSON_AddObjectToObject(cJSON * const object, const char * const name)
+{
+    cJSON *object_item = cJSON_CreateObject();
+    if (add_item_to_object(object, name, object_item, &global_hooks, false))
+    {
+        return object_item;
+    }
+
+    cJSON_Delete(object_item);
+    return NULL;
+}
+
+CJSON_PUBLIC(cJSON*) cJSON_AddArrayToObject(cJSON * const object, const char * const name)
+{
+    cJSON *array = cJSON_CreateArray();
+    if (add_item_to_object(object, name, array, &global_hooks, false))
+    {
+        return array;
+    }
+
+    cJSON_Delete(array);
+    return NULL;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item)
+{
+    if ((parent == NULL) || (item == NULL))
+    {
+        return NULL;
+    }
+
+    if (item != parent->child)
+    {
+        /* not the first element */
+        item->prev->next = item->next;
+    }
+    if (item->next != NULL)
+    {
+        /* not the last element */
+        item->next->prev = item->prev;
+    }
+
+    if (item == parent->child)
+    {
+        /* first element */
+        parent->child = item->next;
+    }
+    else if (item->next == NULL)
+    {
+        /* last element */
+        parent->child->prev = item->prev;
+    }
+
+    /* make sure the detached item doesn't point anywhere anymore */
+    item->prev = NULL;
+    item->next = NULL;
+
+    return item;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which)
+{
+    if (which < 0)
+    {
+        return NULL;
+    }
+
+    return cJSON_DetachItemViaPointer(array, get_array_item(array, (size_t)which));
+}
+
+CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which)
+{
+    cJSON_Delete(cJSON_DetachItemFromArray(array, which));
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string)
+{
+    cJSON *to_detach = cJSON_GetObjectItem(object, string);
+
+    return cJSON_DetachItemViaPointer(object, to_detach);
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string)
+{
+    cJSON *to_detach = cJSON_GetObjectItemCaseSensitive(object, string);
+
+    return cJSON_DetachItemViaPointer(object, to_detach);
+}
+
+CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string)
+{
+    cJSON_Delete(cJSON_DetachItemFromObject(object, string));
+}
+
+CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const char *string)
+{
+    cJSON_Delete(cJSON_DetachItemFromObjectCaseSensitive(object, string));
+}
+
+/* Replace array/object items with new ones. */
+CJSON_PUBLIC(cJSON_bool) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem)
+{
+    cJSON *after_inserted = NULL;
+
+    if (which < 0)
+    {
+        return false;
+    }
+
+    after_inserted = get_array_item(array, (size_t)which);
+    if (after_inserted == NULL)
+    {
+        return add_item_to_array(array, newitem);
+    }
+
+    newitem->next = after_inserted;
+    newitem->prev = after_inserted->prev;
+    after_inserted->prev = newitem;
+    if (after_inserted == array->child)
+    {
+        array->child = newitem;
+    }
+    else
+    {
+        newitem->prev->next = newitem;
+    }
+    return true;
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement)
+{
+    if ((parent == NULL) || (parent->child == NULL) || (replacement == NULL) || (item == NULL))
+    {
+        return false;
+    }
+
+    if (replacement == item)
+    {
+        return true;
+    }
+
+    replacement->next = item->next;
+    replacement->prev = item->prev;
+
+    if (replacement->next != NULL)
+    {
+        replacement->next->prev = replacement;
+    }
+    if (parent->child == item)
+    {
+        if (parent->child->prev == parent->child)
+        {
+            replacement->prev = replacement;
+        }
+        parent->child = replacement;
+    }
+    else
+    {   /*
+         * To find the last item in array quickly, we use prev in array.
+         * We can't modify the last item's next pointer where this item was the parent's child
+         */
+        if (replacement->prev != NULL)
+        {
+            replacement->prev->next = replacement;
+        }
+        if (replacement->next == NULL)
+        {
+            parent->child->prev = replacement;
+        }
+    }
+
+    item->next = NULL;
+    item->prev = NULL;
+    cJSON_Delete(item);
+
+    return true;
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem)
+{
+    if (which < 0)
+    {
+        return false;
+    }
+
+    return cJSON_ReplaceItemViaPointer(array, get_array_item(array, (size_t)which), newitem);
+}
+
+static cJSON_bool replace_item_in_object(cJSON *object, const char *string, cJSON *replacement, cJSON_bool case_sensitive)
+{
+    if ((replacement == NULL) || (string == NULL))
+    {
+        return false;
+    }
+
+    /* replace the name in the replacement */
+    if (!(replacement->type & cJSON_StringIsConst) && (replacement->string != NULL))
+    {
+        cJSON_free(replacement->string);
+    }
+    replacement->string = (char*)cJSON_strdup((const unsigned char*)string, &global_hooks);
+    if (replacement->string == NULL)
+    {
+        return false;
+    }
+
+    replacement->type &= ~cJSON_StringIsConst;
+
+    return cJSON_ReplaceItemViaPointer(object, get_object_item(object, string, case_sensitive), replacement);
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObject(cJSON *object, const char *string, cJSON *newitem)
+{
+    return replace_item_in_object(object, string, newitem, false);
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object, const char *string, cJSON *newitem)
+{
+    return replace_item_in_object(object, string, newitem, true);
+}
+
+/* Create basic types: */
+CJSON_PUBLIC(cJSON *) cJSON_CreateNull(void)
+{
+    cJSON *item = cJSON_New_Item(&global_hooks);
+    if(item)
+    {
+        item->type = cJSON_NULL;
+    }
+
+    return item;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_CreateTrue(void)
+{
+    cJSON *item = cJSON_New_Item(&global_hooks);
+    if(item)
+    {
+        item->type = cJSON_True;
+    }
+
+    return item;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_CreateFalse(void)
+{
+    cJSON *item = cJSON_New_Item(&global_hooks);
+    if(item)
+    {
+        item->type = cJSON_False;
+    }
+
+    return item;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool boolean)
+{
+    cJSON *item = cJSON_New_Item(&global_hooks);
+    if(item)
+    {
+        item->type = boolean ? cJSON_True : cJSON_False;
+    }
+
+    return item;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num)
+{
+    cJSON *item = cJSON_New_Item(&global_hooks);
+    if(item)
+    {
+        item->type = cJSON_Number;
+        item->valuedouble = num;
+
+        /* use saturation in case of overflow */
+        if (num >= INT_MAX)
+        {
+            item->valueint = INT_MAX;
+        }
+        else if (num <= (double)INT_MIN)
+        {
+            item->valueint = INT_MIN;
+        }
+        else
+        {
+            item->valueint = (int)num;
+        }
+    }
+
+    return item;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string)
+{
+    cJSON *item = cJSON_New_Item(&global_hooks);
+    if(item)
+    {
+        item->type = cJSON_String;
+        item->valuestring = (char*)cJSON_strdup((const unsigned char*)string, &global_hooks);
+        if(!item->valuestring)
+        {
+            cJSON_Delete(item);
+            return NULL;
+        }
+    }
+
+    return item;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_CreateStringReference(const char *string)
+{
+    cJSON *item = cJSON_New_Item(&global_hooks);
+    if (item != NULL)
+    {
+        item->type = cJSON_String | cJSON_IsReference;
+        item->valuestring = (char*)cast_away_const(string);
+    }
+
+    return item;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON *child)
+{
+    cJSON *item = cJSON_New_Item(&global_hooks);
+    if (item != NULL) {
+        item->type = cJSON_Object | cJSON_IsReference;
+        item->child = (cJSON*)cast_away_const(child);
+    }
+
+    return item;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON *child) {
+    cJSON *item = cJSON_New_Item(&global_hooks);
+    if (item != NULL) {
+        item->type = cJSON_Array | cJSON_IsReference;
+        item->child = (cJSON*)cast_away_const(child);
+    }
+
+    return item;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_CreateRaw(const char *raw)
+{
+    cJSON *item = cJSON_New_Item(&global_hooks);
+    if(item)
+    {
+        item->type = cJSON_Raw;
+        item->valuestring = (char*)cJSON_strdup((const unsigned char*)raw, &global_hooks);
+        if(!item->valuestring)
+        {
+            cJSON_Delete(item);
+            return NULL;
+        }
+    }
+
+    return item;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void)
+{
+    cJSON *item = cJSON_New_Item(&global_hooks);
+    if(item)
+    {
+        item->type=cJSON_Array;
+    }
+
+    return item;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void)
+{
+    cJSON *item = cJSON_New_Item(&global_hooks);
+    if (item)
+    {
+        item->type = cJSON_Object;
+    }
+
+    return item;
+}
+
+/* Create Arrays: */
+CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count)
+{
+    size_t i = 0;
+    cJSON *n = NULL;
+    cJSON *p = NULL;
+    cJSON *a = NULL;
+
+    if ((count < 0) || (numbers == NULL))
+    {
+        return NULL;
+    }
+
+    a = cJSON_CreateArray();
+
+    for(i = 0; a && (i < (size_t)count); i++)
+    {
+        n = cJSON_CreateNumber(numbers[i]);
+        if (!n)
+        {
+            cJSON_Delete(a);
+            return NULL;
+        }
+        if(!i)
+        {
+            a->child = n;
+        }
+        else
+        {
+            suffix_object(p, n);
+        }
+        p = n;
+    }
+
+    if (a && a->child) {
+        a->child->prev = n;
+    }
+
+    return a;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count)
+{
+    size_t i = 0;
+    cJSON *n = NULL;
+    cJSON *p = NULL;
+    cJSON *a = NULL;
+
+    if ((count < 0) || (numbers == NULL))
+    {
+        return NULL;
+    }
+
+    a = cJSON_CreateArray();
+
+    for(i = 0; a && (i < (size_t)count); i++)
+    {
+        n = cJSON_CreateNumber((double)numbers[i]);
+        if(!n)
+        {
+            cJSON_Delete(a);
+            return NULL;
+        }
+        if(!i)
+        {
+            a->child = n;
+        }
+        else
+        {
+            suffix_object(p, n);
+        }
+        p = n;
+    }
+
+    if (a && a->child) {
+        a->child->prev = n;
+    }
+
+    return a;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count)
+{
+    size_t i = 0;
+    cJSON *n = NULL;
+    cJSON *p = NULL;
+    cJSON *a = NULL;
+
+    if ((count < 0) || (numbers == NULL))
+    {
+        return NULL;
+    }
+
+    a = cJSON_CreateArray();
+
+    for(i = 0; a && (i < (size_t)count); i++)
+    {
+        n = cJSON_CreateNumber(numbers[i]);
+        if(!n)
+        {
+            cJSON_Delete(a);
+            return NULL;
+        }
+        if(!i)
+        {
+            a->child = n;
+        }
+        else
+        {
+            suffix_object(p, n);
+        }
+        p = n;
+    }
+
+    if (a && a->child) {
+        a->child->prev = n;
+    }
+
+    return a;
+}
+
+CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char *const *strings, int count)
+{
+    size_t i = 0;
+    cJSON *n = NULL;
+    cJSON *p = NULL;
+    cJSON *a = NULL;
+
+    if ((count < 0) || (strings == NULL))
+    {
+        return NULL;
+    }
+
+    a = cJSON_CreateArray();
+
+    for (i = 0; a && (i < (size_t)count); i++)
+    {
+        n = cJSON_CreateString(strings[i]);
+        if(!n)
+        {
+            cJSON_Delete(a);
+            return NULL;
+        }
+        if(!i)
+        {
+            a->child = n;
+        }
+        else
+        {
+            suffix_object(p,n);
+        }
+        p = n;
+    }
+
+    if (a && a->child) {
+        a->child->prev = n;
+    }
+
+    return a;
+}
+
+/* Duplication */
+CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse)
+{
+    cJSON *newitem = NULL;
+    cJSON *child = NULL;
+    cJSON *next = NULL;
+    cJSON *newchild = NULL;
+
+    /* Bail on bad ptr */
+    if (!item)
+    {
+        goto fail;
+    }
+    /* Create new item */
+    newitem = cJSON_New_Item(&global_hooks);
+    if (!newitem)
+    {
+        goto fail;
+    }
+    /* Copy over all vars */
+    newitem->type = item->type & (~cJSON_IsReference);
+    newitem->valueint = item->valueint;
+    newitem->valuedouble = item->valuedouble;
+    if (item->valuestring)
+    {
+        newitem->valuestring = (char*)cJSON_strdup((unsigned char*)item->valuestring, &global_hooks);
+        if (!newitem->valuestring)
+        {
+            goto fail;
+        }
+    }
+    if (item->string)
+    {
+        newitem->string = (item->type&cJSON_StringIsConst) ? item->string : (char*)cJSON_strdup((unsigned char*)item->string, &global_hooks);
+        if (!newitem->string)
+        {
+            goto fail;
+        }
+    }
+    /* If non-recursive, then we're done! */
+    if (!recurse)
+    {
+        return newitem;
+    }
+    /* Walk the ->next chain for the child. */
+    child = item->child;
+    while (child != NULL)
+    {
+        newchild = cJSON_Duplicate(child, true); /* Duplicate (with recurse) each item in the ->next chain */
+        if (!newchild)
+        {
+            goto fail;
+        }
+        if (next != NULL)
+        {
+            /* If newitem->child already set, then crosswire ->prev and ->next and move on */
+            next->next = newchild;
+            newchild->prev = next;
+            next = newchild;
+        }
+        else
+        {
+            /* Set newitem->child and move to it */
+            newitem->child = newchild;
+            next = newchild;
+        }
+        child = child->next;
+    }
+    if (newitem && newitem->child)
+    {
+        newitem->child->prev = newchild;
+    }
+
+    return newitem;
+
+fail:
+    if (newitem != NULL)
+    {
+        cJSON_Delete(newitem);
+    }
+
+    return NULL;
+}
+
+static void skip_oneline_comment(char **input)
+{
+    *input += static_strlen("//");
+
+    for (; (*input)[0] != '\0'; ++(*input))
+    {
+        if ((*input)[0] == '\n') {
+            *input += static_strlen("\n");
+            return;
+        }
+    }
+}
+
+static void skip_multiline_comment(char **input)
+{
+    *input += static_strlen("/*");
+
+    for (; (*input)[0] != '\0'; ++(*input))
+    {
+        if (((*input)[0] == '*') && ((*input)[1] == '/'))
+        {
+            *input += static_strlen("*/");
+            return;
+        }
+    }
+}
+
+static void minify_string(char **input, char **output) {
+    (*output)[0] = (*input)[0];
+    *input += static_strlen("\"");
+    *output += static_strlen("\"");
+
+
+    for (; (*input)[0] != '\0'; (void)++(*input), ++(*output)) {
+        (*output)[0] = (*input)[0];
+
+        if ((*input)[0] == '\"') {
+            (*output)[0] = '\"';
+            *input += static_strlen("\"");
+            *output += static_strlen("\"");
+            return;
+        } else if (((*input)[0] == '\\') && ((*input)[1] == '\"')) {
+            (*output)[1] = (*input)[1];
+            *input += static_strlen("\"");
+            *output += static_strlen("\"");
+        }
+    }
+}
+
+CJSON_PUBLIC(void) cJSON_Minify(char *json)
+{
+    char *into = json;
+
+    if (json == NULL)
+    {
+        return;
+    }
+
+    while (json[0] != '\0')
+    {
+        switch (json[0])
+        {
+            case ' ':
+            case '\t':
+            case '\r':
+            case '\n':
+                json++;
+                break;
+
+            case '/':
+                if (json[1] == '/')
+                {
+                    skip_oneline_comment(&json);
+                }
+                else if (json[1] == '*')
+                {
+                    skip_multiline_comment(&json);
+                } else {
+                    json++;
+                }
+                break;
+
+            case '\"':
+                minify_string(&json, (char**)&into);
+                break;
+
+            default:
+                into[0] = json[0];
+                json++;
+                into++;
+        }
+    }
+
+    /* and null-terminate. */
+    *into = '\0';
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item)
+{
+    if (item == NULL)
+    {
+        return false;
+    }
+
+    return (item->type & 0xFF) == cJSON_Invalid;
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_IsFalse(const cJSON * const item)
+{
+    if (item == NULL)
+    {
+        return false;
+    }
+
+    return (item->type & 0xFF) == cJSON_False;
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_IsTrue(const cJSON * const item)
+{
+    if (item == NULL)
+    {
+        return false;
+    }
+
+    return (item->type & 0xff) == cJSON_True;
+}
+
+
+CJSON_PUBLIC(cJSON_bool) cJSON_IsBool(const cJSON * const item)
+{
+    if (item == NULL)
+    {
+        return false;
+    }
+
+    return (item->type & (cJSON_True | cJSON_False)) != 0;
+}
+CJSON_PUBLIC(cJSON_bool) cJSON_IsNull(const cJSON * const item)
+{
+    if (item == NULL)
+    {
+        return false;
+    }
+
+    return (item->type & 0xFF) == cJSON_NULL;
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_IsNumber(const cJSON * const item)
+{
+    if (item == NULL)
+    {
+        return false;
+    }
+
+    return (item->type & 0xFF) == cJSON_Number;
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_IsString(const cJSON * const item)
+{
+    if (item == NULL)
+    {
+        return false;
+    }
+
+    return (item->type & 0xFF) == cJSON_String;
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_IsArray(const cJSON * const item)
+{
+    if (item == NULL)
+    {
+        return false;
+    }
+
+    return (item->type & 0xFF) == cJSON_Array;
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_IsObject(const cJSON * const item)
+{
+    if (item == NULL)
+    {
+        return false;
+    }
+
+    return (item->type & 0xFF) == cJSON_Object;
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_IsRaw(const cJSON * const item)
+{
+    if (item == NULL)
+    {
+        return false;
+    }
+
+    return (item->type & 0xFF) == cJSON_Raw;
+}
+
+CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * const b, const cJSON_bool case_sensitive)
+{
+    if ((a == NULL) || (b == NULL) || ((a->type & 0xFF) != (b->type & 0xFF)))
+    {
+        return false;
+    }
+
+    /* check if type is valid */
+    switch (a->type & 0xFF)
+    {
+        case cJSON_False:
+        case cJSON_True:
+        case cJSON_NULL:
+        case cJSON_Number:
+        case cJSON_String:
+        case cJSON_Raw:
+        case cJSON_Array:
+        case cJSON_Object:
+            break;
+
+        default:
+            return false;
+    }
+
+    /* identical objects are equal */
+    if (a == b)
+    {
+        return true;
+    }
+
+    switch (a->type & 0xFF)
+    {
+        /* in these cases and equal type is enough */
+        case cJSON_False:
+        case cJSON_True:
+        case cJSON_NULL:
+            return true;
+
+        case cJSON_Number:
+            if (compare_double(a->valuedouble, b->valuedouble))
+            {
+                return true;
+            }
+            return false;
+
+        case cJSON_String:
+        case cJSON_Raw:
+            if ((a->valuestring == NULL) || (b->valuestring == NULL))
+            {
+                return false;
+            }
+            if (strcmp(a->valuestring, b->valuestring) == 0)
+            {
+                return true;
+            }
+
+            return false;
+
+        case cJSON_Array:
+        {
+            cJSON *a_element = a->child;
+            cJSON *b_element = b->child;
+
+            for (; (a_element != NULL) && (b_element != NULL);)
+            {
+                if (!cJSON_Compare(a_element, b_element, case_sensitive))
+                {
+                    return false;
+                }
+
+                a_element = a_element->next;
+                b_element = b_element->next;
+            }
+
+            /* one of the arrays is longer than the other */
+            if (a_element != b_element) {
+                return false;
+            }
+
+            return true;
+        }
+
+        case cJSON_Object:
+        {
+            cJSON *a_element = NULL;
+            cJSON *b_element = NULL;
+            cJSON_ArrayForEach(a_element, a)
+            {
+                /* TODO This has O(n^2) runtime, which is horrible! */
+                b_element = get_object_item(b, a_element->string, case_sensitive);
+                if (b_element == NULL)
+                {
+                    return false;
+                }
+
+                if (!cJSON_Compare(a_element, b_element, case_sensitive))
+                {
+                    return false;
+                }
+            }
+
+            /* doing this twice, once on a and b to prevent true comparison if a subset of b
+             * TODO: Do this the proper way, this is just a fix for now */
+            cJSON_ArrayForEach(b_element, b)
+            {
+                a_element = get_object_item(a, b_element->string, case_sensitive);
+                if (a_element == NULL)
+                {
+                    return false;
+                }
+
+                if (!cJSON_Compare(b_element, a_element, case_sensitive))
+                {
+                    return false;
+                }
+            }
+
+            return true;
+        }
+
+        default:
+            return false;
+    }
+}
+
+CJSON_PUBLIC(void *) cJSON_malloc(size_t size)
+{
+    return global_hooks.allocate(size);
+}
+
+CJSON_PUBLIC(void) cJSON_free(void *object)
+{
+    global_hooks.deallocate(object);
+}

+ 300 - 0
DriverInterface/cJSON.h

@@ -0,0 +1,300 @@
+/*
+  Copyright (c) 2009-2017 Dave Gamble and cJSON contributors
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+  THE SOFTWARE.
+*/
+
+#ifndef cJSON__h
+#define cJSON__h
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#if !defined(__WINDOWS__) && (defined(WIN32) || defined(WIN64) || defined(_MSC_VER) || defined(_WIN32))
+#define __WINDOWS__
+#endif
+
+#ifdef __WINDOWS__
+
+/* When compiling for windows, we specify a specific calling convention to avoid issues where we are being called from a project with a different default calling convention.  For windows you have 3 define options:
+
+CJSON_HIDE_SYMBOLS - Define this in the case where you don't want to ever dllexport symbols
+CJSON_EXPORT_SYMBOLS - Define this on library build when you want to dllexport symbols (default)
+CJSON_IMPORT_SYMBOLS - Define this if you want to dllimport symbol
+
+For *nix builds that support visibility attribute, you can define similar behavior by
+
+setting default visibility to hidden by adding
+-fvisibility=hidden (for gcc)
+or
+-xldscope=hidden (for sun cc)
+to CFLAGS
+
+then using the CJSON_API_VISIBILITY flag to "export" the same symbols the way CJSON_EXPORT_SYMBOLS does
+
+*/
+
+#define CJSON_CDECL __cdecl
+#define CJSON_STDCALL __stdcall
+
+/* export symbols by default, this is necessary for copy pasting the C and header file */
+#if !defined(CJSON_HIDE_SYMBOLS) && !defined(CJSON_IMPORT_SYMBOLS) && !defined(CJSON_EXPORT_SYMBOLS)
+#define CJSON_EXPORT_SYMBOLS
+#endif
+
+#if defined(CJSON_HIDE_SYMBOLS)
+#define CJSON_PUBLIC(type)   type CJSON_STDCALL
+#elif defined(CJSON_EXPORT_SYMBOLS)
+#define CJSON_PUBLIC(type)   __declspec(dllexport) type CJSON_STDCALL
+#elif defined(CJSON_IMPORT_SYMBOLS)
+#define CJSON_PUBLIC(type)   __declspec(dllimport) type CJSON_STDCALL
+#endif
+#else /* !__WINDOWS__ */
+#define CJSON_CDECL
+#define CJSON_STDCALL
+
+#if (defined(__GNUC__) || defined(__SUNPRO_CC) || defined (__SUNPRO_C)) && defined(CJSON_API_VISIBILITY)
+#define CJSON_PUBLIC(type)   __attribute__((visibility("default"))) type
+#else
+#define CJSON_PUBLIC(type) type
+#endif
+#endif
+
+/* project version */
+#define CJSON_VERSION_MAJOR 1
+#define CJSON_VERSION_MINOR 7
+#define CJSON_VERSION_PATCH 16
+
+#include <stddef.h>
+
+/* cJSON Types: */
+#define cJSON_Invalid (0)
+#define cJSON_False  (1 << 0)
+#define cJSON_True   (1 << 1)
+#define cJSON_NULL   (1 << 2)
+#define cJSON_Number (1 << 3)
+#define cJSON_String (1 << 4)
+#define cJSON_Array  (1 << 5)
+#define cJSON_Object (1 << 6)
+#define cJSON_Raw    (1 << 7) /* raw json */
+
+#define cJSON_IsReference 256
+#define cJSON_StringIsConst 512
+
+/* The cJSON structure: */
+typedef struct cJSON
+{
+    /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */
+    struct cJSON *next;
+    struct cJSON *prev;
+    /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */
+    struct cJSON *child;
+
+    /* The type of the item, as above. */
+    int type;
+
+    /* The item's string, if type==cJSON_String  and type == cJSON_Raw */
+    char *valuestring;
+    /* writing to valueint is DEPRECATED, use cJSON_SetNumberValue instead */
+    int valueint;
+    /* The item's number, if type==cJSON_Number */
+    double valuedouble;
+
+    /* The item's name string, if this item is the child of, or is in the list of subitems of an object. */
+    char *string;
+} cJSON;
+
+typedef struct cJSON_Hooks
+{
+      /* malloc/free are CDECL on Windows regardless of the default calling convention of the compiler, so ensure the hooks allow passing those functions directly. */
+      void *(CJSON_CDECL *malloc_fn)(size_t sz);
+      void (CJSON_CDECL *free_fn)(void *ptr);
+} cJSON_Hooks;
+
+typedef int cJSON_bool;
+
+/* Limits how deeply nested arrays/objects can be before cJSON rejects to parse them.
+ * This is to prevent stack overflows. */
+#ifndef CJSON_NESTING_LIMIT
+#define CJSON_NESTING_LIMIT 1000
+#endif
+
+/* returns the version of cJSON as a string */
+CJSON_PUBLIC(const char*) cJSON_Version(void);
+
+/* Supply malloc, realloc and free functions to cJSON */
+CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks* hooks);
+
+/* Memory Management: the caller is always responsible to free the results from all variants of cJSON_Parse (with cJSON_Delete) and cJSON_Print (with stdlib free, cJSON_Hooks.free_fn, or cJSON_free as appropriate). The exception is cJSON_PrintPreallocated, where the caller has full responsibility of the buffer. */
+/* Supply a block of JSON, and this returns a cJSON object you can interrogate. */
+CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value);
+CJSON_PUBLIC(cJSON *) cJSON_ParseWithLength(const char *value, size_t buffer_length);
+/* ParseWithOpts allows you to require (and check) that the JSON is null terminated, and to retrieve the pointer to the final byte parsed. */
+/* If you supply a ptr in return_parse_end and parsing fails, then return_parse_end will contain a pointer to the error so will match cJSON_GetErrorPtr(). */
+CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated);
+CJSON_PUBLIC(cJSON *) cJSON_ParseWithLengthOpts(const char *value, size_t buffer_length, const char **return_parse_end, cJSON_bool require_null_terminated);
+
+/* Render a cJSON entity to text for transfer/storage. */
+CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item);
+/* Render a cJSON entity to text for transfer/storage without any formatting. */
+CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item);
+/* Render a cJSON entity to text using a buffered strategy. prebuffer is a guess at the final size. guessing well reduces reallocation. fmt=0 gives unformatted, =1 gives formatted */
+CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt);
+/* Render a cJSON entity to text using a buffer already allocated in memory with given length. Returns 1 on success and 0 on failure. */
+/* NOTE: cJSON is not always 100% accurate in estimating how much memory it will use, so to be safe allocate 5 bytes more than you actually need */
+CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format);
+/* Delete a cJSON entity and all subentities. */
+CJSON_PUBLIC(void) cJSON_Delete(cJSON *item);
+
+/* Returns the number of items in an array (or object). */
+CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array);
+/* Retrieve item number "index" from array "array". Returns NULL if unsuccessful. */
+CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index);
+/* Get item "string" from object. Case insensitive. */
+CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string);
+CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive(const cJSON * const object, const char * const string);
+CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON *object, const char *string);
+/* For analysing failed parses. This returns a pointer to the parse error. You'll probably need to look a few chars back to make sense of it. Defined when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */
+CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void);
+
+/* Check item type and return its value */
+CJSON_PUBLIC(char *) cJSON_GetStringValue(const cJSON * const item);
+CJSON_PUBLIC(double) cJSON_GetNumberValue(const cJSON * const item);
+
+/* These functions check the type of an item */
+CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item);
+CJSON_PUBLIC(cJSON_bool) cJSON_IsFalse(const cJSON * const item);
+CJSON_PUBLIC(cJSON_bool) cJSON_IsTrue(const cJSON * const item);
+CJSON_PUBLIC(cJSON_bool) cJSON_IsBool(const cJSON * const item);
+CJSON_PUBLIC(cJSON_bool) cJSON_IsNull(const cJSON * const item);
+CJSON_PUBLIC(cJSON_bool) cJSON_IsNumber(const cJSON * const item);
+CJSON_PUBLIC(cJSON_bool) cJSON_IsString(const cJSON * const item);
+CJSON_PUBLIC(cJSON_bool) cJSON_IsArray(const cJSON * const item);
+CJSON_PUBLIC(cJSON_bool) cJSON_IsObject(const cJSON * const item);
+CJSON_PUBLIC(cJSON_bool) cJSON_IsRaw(const cJSON * const item);
+
+/* These calls create a cJSON item of the appropriate type. */
+CJSON_PUBLIC(cJSON *) cJSON_CreateNull(void);
+CJSON_PUBLIC(cJSON *) cJSON_CreateTrue(void);
+CJSON_PUBLIC(cJSON *) cJSON_CreateFalse(void);
+CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool boolean);
+CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num);
+CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string);
+/* raw json */
+CJSON_PUBLIC(cJSON *) cJSON_CreateRaw(const char *raw);
+CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void);
+CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void);
+
+/* Create a string where valuestring references a string so
+ * it will not be freed by cJSON_Delete */
+CJSON_PUBLIC(cJSON *) cJSON_CreateStringReference(const char *string);
+/* Create an object/array that only references it's elements so
+ * they will not be freed by cJSON_Delete */
+CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON *child);
+CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON *child);
+
+/* These utilities create an Array of count items.
+ * The parameter count cannot be greater than the number of elements in the number array, otherwise array access will be out of bounds.*/
+CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count);
+CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count);
+CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count);
+CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char *const *strings, int count);
+
+/* Append item to the specified array/object. */
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToArray(cJSON *array, cJSON *item);
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);
+/* Use this when string is definitely const (i.e. a literal, or as good as), and will definitely survive the cJSON object.
+ * WARNING: When this function was used, make sure to always check that (item->type & cJSON_StringIsConst) is zero before
+ * writing to `item->string` */
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item);
+/* Append reference to item to the specified array/object. Use this when you want to add an existing cJSON to a new cJSON, but don't want to corrupt your existing cJSON. */
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);
+CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item);
+
+/* Remove/Detach items from Arrays/Objects. */
+CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item);
+CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which);
+CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which);
+CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string);
+CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string);
+CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string);
+CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const char *string);
+
+/* Update array items. */
+CJSON_PUBLIC(cJSON_bool) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem); /* Shifts pre-existing items to the right. */
+CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement);
+CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem);
+CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem);
+CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object,const char *string,cJSON *newitem);
+
+/* Duplicate a cJSON item */
+CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse);
+/* Duplicate will create a new, identical cJSON item to the one you pass, in new memory that will
+ * need to be released. With recurse!=0, it will duplicate any children connected to the item.
+ * The item->next and ->prev pointers are always zero on return from Duplicate. */
+/* Recursively compare two cJSON items for equality. If either a or b is NULL or invalid, they will be considered unequal.
+ * case_sensitive determines if object keys are treated case sensitive (1) or case insensitive (0) */
+CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * const b, const cJSON_bool case_sensitive);
+
+/* Minify a strings, remove blank characters(such as ' ', '\t', '\r', '\n') from strings.
+ * The input pointer json cannot point to a read-only address area, such as a string constant, 
+ * but should point to a readable and writable address area. */
+CJSON_PUBLIC(void) cJSON_Minify(char *json);
+
+/* Helper functions for creating and adding items to an object at the same time.
+ * They return the added item or NULL on failure. */
+CJSON_PUBLIC(cJSON*) cJSON_AddNullToObject(cJSON * const object, const char * const name);
+CJSON_PUBLIC(cJSON*) cJSON_AddTrueToObject(cJSON * const object, const char * const name);
+CJSON_PUBLIC(cJSON*) cJSON_AddFalseToObject(cJSON * const object, const char * const name);
+CJSON_PUBLIC(cJSON*) cJSON_AddBoolToObject(cJSON * const object, const char * const name, const cJSON_bool boolean);
+CJSON_PUBLIC(cJSON*) cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number);
+CJSON_PUBLIC(cJSON*) cJSON_AddStringToObject(cJSON * const object, const char * const name, const char * const string);
+CJSON_PUBLIC(cJSON*) cJSON_AddRawToObject(cJSON * const object, const char * const name, const char * const raw);
+CJSON_PUBLIC(cJSON*) cJSON_AddObjectToObject(cJSON * const object, const char * const name);
+CJSON_PUBLIC(cJSON*) cJSON_AddArrayToObject(cJSON * const object, const char * const name);
+
+/* When assigning an integer value, it needs to be propagated to valuedouble too. */
+#define cJSON_SetIntValue(object, number) ((object) ? (object)->valueint = (object)->valuedouble = (number) : (number))
+/* helper for the cJSON_SetNumberValue macro */
+CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number);
+#define cJSON_SetNumberValue(object, number) ((object != NULL) ? cJSON_SetNumberHelper(object, (double)number) : (number))
+/* Change the valuestring of a cJSON_String object, only takes effect when type of object is cJSON_String */
+CJSON_PUBLIC(char*) cJSON_SetValuestring(cJSON *object, const char *valuestring);
+
+/* If the object is not a boolean type this does nothing and returns cJSON_Invalid else it returns the new type*/
+#define cJSON_SetBoolValue(object, boolValue) ( \
+    (object != NULL && ((object)->type & (cJSON_False|cJSON_True))) ? \
+    (object)->type=((object)->type &(~(cJSON_False|cJSON_True)))|((boolValue)?cJSON_True:cJSON_False) : \
+    cJSON_Invalid\
+)
+
+/* Macro for iterating over an array or object */
+#define cJSON_ArrayForEach(element, array) for(element = (array != NULL) ? (array)->child : NULL; element != NULL; element = element->next)
+
+/* malloc/free objects using the malloc/free functions that have been set with cJSON_InitHooks */
+CJSON_PUBLIC(void *) cJSON_malloc(size_t size);
+CJSON_PUBLIC(void) cJSON_free(void *object);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

+ 149 - 0
DriverInterface/pt1000.c

@@ -0,0 +1,149 @@
+#include "math.h"
+// PT1000温度阻值对照表-50  单位:欧姆
+#define PT1000_table_len(array) (sizeof(array) / sizeof(array[0]))
+
+#define TEMP_ERR_NEGATIVE  (float)-50
+#define TEMP_ERR_POSITIVE  (float)1000
+
+
+
+const float PT1000_TempList[] = {
+    803.063,  807.033,  811.003,  814.970,  818.937,  822.902,  826.865,  830.828,  834.789,  838.748,  842.707,  846.663,  850.619,  854.573,  858.526,
+    862.478,  866.428,  870.377,  874.325,  878.271,  882.217,  886.160,  890.103,  894.044,  897.985,  901.923,  905.861,  909.797,  913.732,  917.666,
+    921.599,  925.530,  929.461,  933.390,  937.317,  941.244,  945.169,  949.093,  953.016,  956.938,  960.859,  964.778,  968.696,  972.613,  976.529,
+    980.444,  984.358,  988.270,  992.181,  996.091,  1000.000, 1003.908, 1007.814, 1011.720, 1015.624, 1019.527, 1023.429, 1027.330, 1031.229, 1035.128,
+    1039.025, 1042.921, 1046.816, 1050.710, 1054.603, 1058.495, 1062.385, 1066.274, 1070.162, 1074.049, 1077.935, 1081.820, 1085.703, 1089.585, 1093.467,
+    1097.347, 1101.225, 1105.103, 1108.980, 1112.855, 1116.729, 1120.602, 1124.474, 1128.345, 1132.215, 1136.083, 1139.950, 1143.817, 1147.681, 1151.545,
+    1155.408, 1159.270, 1163.130, 1166.989, 1170.847, 1174.704, 1178.560, 1182.414, 1186.268, 1190.120, 1193.971, 1197.821, 1201.670, 1205.518, 1209.364,
+    1213.210, 1217.054, 1220.897, 1224.739, 1228.579, 1232.419, 1236.257, 1240.095, 1243.931, 1247.766, 1251.600, 1255.432, 1259.264, 1263.094, 1266.923,
+    1270.751, 1274.578, 1278.404, 1282.228, 1286.052, 1289.874, 1293.695, 1297.515, 1301.334, 1305.152, 1308.968, 1312.783, 1316.597, 1320.411, 1324.222,
+    1328.033, 1331.843, 1335.651, 1339.458, 1343.264, 1347.069, 1350.873, 1354.676, 1358.477, 1362.277, 1366.077, 1369.875, 1373.671, 1377.467, 1381.262,
+    1385.055, 1388.847, 1392.638, 1396.428, 1400.217, 1404.005, 1407.791, 1411.576, 1415.360, 1419.143, 1422.925, 1426.706, 1430.485, 1434.264, 1438.041,
+    1441.817, 1445.592, 1449.366, 1453.138, 1456.910, 1460.680, 1464.449, 1468.217, 1471.984, 1475.750, 1479.514, 1483.277, 1487.040, 1490.801, 1494.561,
+    1498.319, 1502.077, 1505.833, 1509.589, 1513.343, 1517.096, 1520.847, 1524.598, 1528.347, 1532.096, 1535.843, 1539.589, 1543.334, 1547.078, 1550.820,
+    1554.562, 1558.302, 1562.041, 1565.779, 1569.516, 1573.251, 1576.986, 1580.719, 1584.451, 1588.182, 1591.912, 1595.641, 1599.368, 1603.095, 1606.820,
+    1610.544, 1614.267, 1617.989, 1621.709, 1625.429, 1629.147, 1632.864, 1636.580, 1640.295, 1644.009, 1647.721, 1651.433, 1655.143, 1658.852, 1662.560,
+    1666.267, 1669.972, 1673.677, 1677.380, 1681.082, 1684.783, 1688.483, 1692.181, 1695.879, 1699.575, 1703.271, 1706.965, 1710.658, 1714.349, 1718.040,
+    1721.729, 1725.418, 1729.105, 1732.791, 1736.475, 1740.159, 1743.842, 1747.523, 1751.203, 1754.882, 1758.560};
+unsigned int table_len = PT1000_table_len(PT1000_TempList);
+
+const float PB7_TempList[] = {37.56, 35.89, 34.30, 32.80, 31.36, 30,    28.71, 27.48, 26.31, 25.19, 24.13, 23.12, 22.16, 21.24, 20.37, 19.53, 18.74, 17.98,
+                              17.26, 16.57, 15.91, 15.28, 14.68, 14.11, 13.56, 13.03, 12.53, 12.06, 11.60, 11.16, 10.74, 10.34, 9.955, 9.587, 9.235, 8.898,
+                              8.574, 8.264, 7.967, 7.683, 7.410, 7.148, 6.896, 6.655, 6.424, 6.201, 5.988, 5.783, 5.586, 5.397, 5.215, 5.041, 4.873, 4.711,
+                              4.556, 4.406, 4.262, 4.124, 3.991, 3.863, 3.739, 3.620, 3.506, 3.396, 3.289, 3.187, 3.088, 2.993, 2.901, 2.813, 2.727, 2.645,
+                              2.565, 2.489, 2.415, 2.343, 2.274, 2.208, 2.143, 2.081, 2.021, 1.963, 1.907, 1.853, 1.800, 1.749, 1.700, 1.653, 1.607, 1.563,
+                              1.520, 1.478, 1.438, 1.399, 1.361, 1.325, 1.289, 1.255, 1.222, 1.190, 1.159, 1.128, 1.099, 1.071, 1.043, 1.017, 0.9908
+
+};
+unsigned int PB7_table_len = PT1000_table_len(PB7_TempList);
+
+const float K_Thermocouple_Reference_Tables[] = {
+    0.000, 0.039, 0.079, 0.119, 0.158, 0.198, 0.238, 0.277, 0.317, 0.357, 0.397, 0.437, 0.477, 0.517, 0.557, 0.597, 0.637, 0.677, 0.718, 0.758,
+    0.798, 0.838, 0.879, 0.919, 0.960, 1.000, 1.041, 1.081, 1.122, 1.163, 1.203, 1.244, 1.285, 1.326, 1.366, 1.407, 1.448, 1.489, 1.530, 1.571,
+    1.612, 1.653, 1.694, 1.735, 1.776, 1.817, 1.858, 1.899, 1.941, 1.982, 2.023, 2.064, 2.106, 2.147, 2.188, 2.230, 2.271, 2.312, 2.354, 2.395,
+    2.436, 2.478, 2.519, 2.561, 2.602, 2.644, 2.685, 2.727, 2.768, 2.810, 2.851, 2.893, 2.934, 2.976, 3.017, 3.059, 3.100, 3.142, 3.184, 3.225,
+    3.267, 3.308, 3.350, 3.391, 3.433, 3.474, 3.516, 3.557, 3.599, 3.640, 3.682, 3.723, 3.765, 3.806, 3.848, 3.889, 3.931, 3.972, 4.013, 4.055,
+    4.096, 4.138, 4.179, 4.220, 4.262, 4.303, 4.344, 4.385, 4.427, 4.468, 4.509, 4.550, 4.591, 4.633, 4.674, 4.715, 4.756, 4.797, 4.838, 4.879,
+    4.920, 4.961, 5.002, 5.043, 5.084, 5.124, 5.165, 5.206, 5.247, 5.288, 5.328, 5.369, 5.410, 5.450, 5.491, 5.532, 5.572, 5.613, 5.653, 5.694,
+    5.735, 5.775, 5.815, 5.856, 5.896, 5.937, 5.977, 6.017, 6.058, 6.098, 6.138, 6.179, 6.219, 6.259, 6.299, 6.339, 6.380, 6.420, 6.460, 6.500,
+    6.540, 6.580, 6.620, 6.660, 6.701, 6.741, 6.781, 6.821, 6.861, 6.901, 6.941, 6.981, 7.021, 7.060, 7.100, 7.140, 7.180, 7.220, 7.260, 7.300,
+    7.340, 7.380, 7.420, 7.460, 7.500, 7.540, 7.579, 7.619, 7.659, 7.699, 7.739, 7.779, 7.819, 7.859, 7.899, 7.939, 7.979, 8.019, 8.059, 8.099};
+unsigned int K_Thermocouple_Reference_Tables_len = PT1000_table_len(K_Thermocouple_Reference_Tables);
+
+float getTemp(float R) {
+  float temp;
+
+  if (R < PT1000_TempList[0]) {
+    return TEMP_ERR_NEGATIVE;
+  } else if (R >= PT1000_TempList[table_len - 1]) {
+    return (PT1000_table_len(PT1000_TempList) - 50);
+  }
+  for (int i = 0; i < (table_len - 1); i++) {
+    if (R >= PT1000_TempList[i] && R < PT1000_TempList[i + 1]) {
+      temp = (R - PT1000_TempList[i]) / (PT1000_TempList[i + 1] - PT1000_TempList[i]);
+      temp = temp + i - 50;
+      return temp;
+    }
+  }
+  return TEMP_ERR_POSITIVE;
+}
+float getPB7_Temp(float R) {
+  float temp;
+  R = R / 1000;
+  if (R > PB7_TempList[0]) {
+    return TEMP_ERR_NEGATIVE;
+  } else if (R < PB7_TempList[PB7_table_len - 1]) {
+    return (101);
+  }
+  for (int i = 0; i < (PB7_table_len - 1); i++) {
+    if (R <= PB7_TempList[i] && R > PB7_TempList[i + 1]) {
+      temp = (R - PB7_TempList[i]) / (PB7_TempList[i + 1] - PB7_TempList[i]);
+      temp = temp + i - 5;
+      return temp;
+    }
+  }
+  return TEMP_ERR_POSITIVE;
+}
+
+float Get_Temp_K_Thermocouple(float Vt) {
+  float temp;
+
+  if (Vt < K_Thermocouple_Reference_Tables[0]) {
+    return TEMP_ERR_NEGATIVE;
+  } else if (Vt >= K_Thermocouple_Reference_Tables[K_Thermocouple_Reference_Tables_len - 1]) {
+    return (PT1000_table_len(K_Thermocouple_Reference_Tables));
+  }
+  for (int i = 0; i < (K_Thermocouple_Reference_Tables_len - 1); i++) {
+    if (Vt >= K_Thermocouple_Reference_Tables[i] && Vt < K_Thermocouple_Reference_Tables[i + 1]) {
+      temp = (Vt - K_Thermocouple_Reference_Tables[i]) / (K_Thermocouple_Reference_Tables[i + 1] - K_Thermocouple_Reference_Tables[i]);
+      temp = temp + i;
+      return temp;
+    }
+  }
+  return TEMP_ERR_POSITIVE;
+}
+
+const float Rp = 10000.0;  // 10K
+const float T2 = (273.15 + 25.0);
+;                         // T2
+const float Bx = 3380.0;  // B
+const float Ka = 273.15;
+float Get_Temp_NCP18XH103(float Rt) {
+  float temp;
+  // Rt = Get_TempResistor();
+  // like this R=5000, T2=273.15+25,B=3470, RT=5000*EXP(3470*(1/T1-1/(273.15+25)),
+  temp = Rt / Rp;
+  temp = log(temp);  // ln(Rt/Rp)
+  temp /= Bx;        // ln(Rt/Rp)/B
+  temp += (1 / T2);
+  temp = 1 / (temp);
+  temp -= Ka;
+  if(temp < 0){temp = TEMP_ERR_NEGATIVE;}
+  if(temp > 150){temp = TEMP_ERR_POSITIVE;}
+  return temp;
+}
+
+static const unsigned char crc8_table[256] = {
+    0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d, 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65, 0x48, 0x4f,
+    0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d, 0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5, 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd, 0x90, 0x97, 0x9e, 0x99,
+    0x8c, 0x8b, 0x82, 0x85, 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd, 0xc7, 0xc0, 0xc9, 0xce, 0xdb, 0xdc, 0xd5, 0xd2, 0xff, 0xf8, 0xf1, 0xf6, 0xe3, 0xe4,
+    0xed, 0xea, 0xb7, 0xb0, 0xb9, 0xbe, 0xab, 0xac, 0xa5, 0xa2, 0x8f, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9d, 0x9a, 0x27, 0x20, 0x29, 0x2e, 0x3b, 0x3c, 0x35, 0x32,
+    0x1f, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0d, 0x0a, 0x57, 0x50, 0x59, 0x5e, 0x4b, 0x4c, 0x45, 0x42, 0x6f, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7d, 0x7a, 0x89, 0x8e,
+    0x87, 0x80, 0x95, 0x92, 0x9b, 0x9c, 0xb1, 0xb6, 0xbf, 0xb8, 0xad, 0xaa, 0xa3, 0xa4, 0xf9, 0xfe, 0xf7, 0xf0, 0xe5, 0xe2, 0xeb, 0xec, 0xc1, 0xc6, 0xcf, 0xc8,
+    0xdd, 0xda, 0xd3, 0xd4, 0x69, 0x6e, 0x67, 0x60, 0x75, 0x72, 0x7b, 0x7c, 0x51, 0x56, 0x5f, 0x58, 0x4d, 0x4a, 0x43, 0x44, 0x19, 0x1e, 0x17, 0x10, 0x05, 0x02,
+    0x0b, 0x0c, 0x21, 0x26, 0x2f, 0x28, 0x3d, 0x3a, 0x33, 0x34, 0x4e, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5c, 0x5b, 0x76, 0x71, 0x78, 0x7f, 0x6a, 0x6d, 0x64, 0x63,
+    0x3e, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2c, 0x2b, 0x06, 0x01, 0x08, 0x0f, 0x1a, 0x1d, 0x14, 0x13, 0xae, 0xa9, 0xa0, 0xa7, 0xb2, 0xb5, 0xbc, 0xbb, 0x96, 0x91,
+    0x98, 0x9f, 0x8a, 0x8d, 0x84, 0x83, 0xde, 0xd9, 0xd0, 0xd7, 0xc2, 0xc5, 0xcc, 0xcb, 0xe6, 0xe1, 0xe8, 0xef, 0xfa, 0xfd, 0xf4, 0xf3};
+
+unsigned char crc8_check(unsigned char* data, unsigned char len) {
+  unsigned int i = 0;
+  unsigned char fcs = 0x0;
+  // 计算数据校验
+  for (i = 0; i < (len); i++) {
+    fcs = crc8_table[(unsigned char)fcs ^ *data];
+    data++;
+  }
+  // 计算的 CRC 校验与数据最后一个字节对比
+
+  return fcs;
+}

+ 26 - 0
DriverInterface/pt1000.h

@@ -0,0 +1,26 @@
+#ifndef __PT1000_H__
+#define __PT1000_H__
+
+/*
+采样值转电压:0.000050354004 16bit 满篇3.3V
+分压偏置 0.436170213  分压电阻为20k,8.2k  偏置电压为
+电流值:0.0005 限流电阻1500
+(V*0.000050354004/10 + 0.436170213)/0.0005
+简化为:
+=V*3.3/65536/10/0.0005 + 0.436170213/0.0005
+=V*0.01007080078125+872.34
+*/
+
+#define ADCTORESISTANCE   0.01007080078125
+#define BASERESISTANCE   872.34
+
+
+
+float getTemp(float R);
+float getPB7_Temp(float R);
+float Get_Temp_NCP18XH103(float Rt);
+float Get_Temp_K_Thermocouple(float Vt);
+unsigned char crc8_check(unsigned char* data, unsigned char len);
+
+
+#endif

+ 282 - 0
DriverInterface/rgb381.c

@@ -0,0 +1,282 @@
+/*
+ * ALS308.c
+ *
+ *  Created on: 2022年4月11日
+ *      Author: amos
+ */
+#include "rgb381.h"
+#include "TCA9548A.h"
+#include <string.h>
+#define I2C_TIMEOUT_1000MS  16000000  // 定义超时时间(毫秒)
+
+ColorSensor CS[CS_MAX] = {0};	//检测孔
+
+uint8_t SensorState1=0,SensorState2=0,SensorState3=0,SensorState4=0,SensorState5=0,
+		SensorState6=0,SensorState7=0,SensorState8=0,SensorState9=0,SensorState10=0;
+//extern uint8_t I2C_data;
+
+int8_t I2CWriteOneByte(I2C_HandleTypeDef *hi2c, uint8_t u8SlaveAddr, uint8_t u8DataAddr, uint8_t data)
+{
+    // HAL 库返回值:HAL_OK 表示成功
+    HAL_StatusTypeDef status = HAL_I2C_Mem_Write(hi2c,
+                                                  (uint16_t)(u8SlaveAddr << 1),  // 7位地址左移1位,HAL内部会处理读写位
+                                                  (uint16_t)u8DataAddr,          // 寄存器地址(8位)
+                                                  I2C_MEMADD_SIZE_8BIT,          // 寄存器地址宽度 8 位
+                                                  &data,                         // 要写入的数据
+                                                  1,                             // 数据长度(字节)
+                                                  100);                          // 超时时间 ms
+    if (status == HAL_OK)
+        return 0;   // 成功
+    else
+        return 3;   // 统一返回 3(或按原函数错误码细化)
+}
+uint8_t I2CReadOneByte(I2C_HandleTypeDef *hi2c, uint8_t u8SlaveAddr, uint8_t u8DataAddr)
+{
+    uint8_t rdata = 0;
+    HAL_StatusTypeDef status = HAL_I2C_Mem_Read(hi2c,
+                                                 (uint16_t)(u8SlaveAddr << 1),
+                                                 (uint16_t)u8DataAddr,
+                                                 I2C_MEMADD_SIZE_8BIT,
+                                                 &rdata,
+                                                 1,
+                                                 100);
+    if (status == HAL_OK)
+        return rdata;
+    else
+        return 0;   // 失败返回 0(与原函数一致)
+}
+
+
+    uint8_t I2C_data = 0;
+void TCA9548A_SetChannel(uint8_t ID)
+{
+	/********************************************************/
+	/**************background light--PA0*********************/
+	/*********************WIFI_EN--PA12**********************/
+	/**********************I2C_S0--PB3***********************/
+	/***********************I2C_S1--PB2**********************/
+	/**********************I2C_S2--PB1***********************/
+	/**********************I2C_S3--PB0***********************/
+	/**********************I2C_S4--PF5***********************/
+	/******************Device_num1--PB15*********************/
+    /******************Device_num2--PB14*********************/
+    /******************Device_num3--PB13*********************/
+    /******************Device_num4--PB12*********************/
+    /***********************LED--PF4*************************/
+    /***********************DEC--PB15************************/
+
+    switch(ID)
+    {
+        case 0:
+        	I2C_data = TCA9548A_CHANNEL_0;
+            I2CWriteOneByte(&hi2c1,TCA9548A_SLAVE_ADDR,I2C_data,ID);
+            break;
+        case 1:
+        	I2C_data = TCA9548A_CHANNEL_0;
+            I2CWriteOneByte(&hi2c1,TCA9548A_SLAVE_ADDR,I2C_data,I2C_data);
+            HAL_Delay(50);
+        	I2C_data = TCA9548A_CHANNEL_2;
+            I2CWriteOneByte(&hi2c1,TCA9548A_SLAVE_ADDR,I2C_data,I2C_data);
+            break;
+        case 2:
+        	I2C_data = TCA9548A_CHANNEL_3;
+            I2CWriteOneByte(&hi2c1,TCA9548A_SLAVE_ADDR,I2C_data,I2C_data);
+            break;
+        case 3:
+        	I2C_data = TCA9548A_CHANNEL_4;
+            I2CWriteOneByte(&hi2c1,TCA9548A_SLAVE_ADDR,I2C_data,I2C_data);
+            break;
+        case 4:
+        	I2C_data = TCA9548A_CHANNEL_5;
+            I2CWriteOneByte(&hi2c1,TCA9548A_SLAVE_ADDR,I2C_data,I2C_data);
+            break;
+        case 5:
+        	I2C_data = TCA9548A_CHANNEL_6;
+            I2CWriteOneByte(&hi2c1,TCA9548A_SLAVE_ADDR,I2C_data,I2C_data);
+            break;
+        case 6:
+        	I2C_data = TCA9548A_CHANNEL_7;
+            I2CWriteOneByte(&hi2c1,TCA9548A_SLAVE_ADDR,I2C_data,I2C_data);
+            break;
+        case 7:
+        	I2C_data = TCA9548A_CHANNEL_8;
+            I2CWriteOneByte(&hi2c1,TCA9548A_SLAVE_ADDR,I2C_data,I2C_data);
+            break;
+        case 8:
+
+        	I2C_data = TCA9548A_CHANNEL_1;
+            I2CWriteOneByte(&hi2c1,TCA9548A_SLAVE_ADDR,I2C_data,I2C_data);
+            HAL_Delay(50);
+        	I2C_data = TCA9548A_CHANNEL_0;
+            I2CWriteOneByte(&hi2c1,TCA9548A_SLAVE_ADDR1,I2C_data,I2C_data);
+            HAL_Delay(50);
+            I2C_data = TCA9548A_CHANNEL_2;
+            I2CWriteOneByte(&hi2c1,TCA9548A_SLAVE_ADDR1,I2C_data,I2C_data);
+            break;
+        case 9:
+//        	I2C_data = TCA9548A_CHANNEL_0;
+//            I2CWriteOneByte(I2C0,TCA9548A_SLAVE_ADDR1,I2C_data,I2C_data);
+//            DelayMS(100);
+        	I2C_data = TCA9548A_CHANNEL_3;
+            I2CWriteOneByte(&hi2c1,TCA9548A_SLAVE_ADDR1,I2C_data,I2C_data);
+            break;
+        case 10:
+//        	I2C_data = TCA9548A_CHANNEL_0;
+//            I2CWriteOneByte(I2C0,TCA9548A_SLAVE_ADDR1,I2C_data,I2C_data);
+//            DelayMS(100);
+        	I2C_data = TCA9548A_CHANNEL_4;
+            I2CWriteOneByte(&hi2c1,TCA9548A_SLAVE_ADDR1,I2C_data,I2C_data);
+            break;
+        default:
+            break;
+    }
+}
+
+void SensorMeasurementFactor(uint8_t measfactor)
+{
+	I2CWriteOneByte(&hi2c1,RGB381_ADDR,RGB381_MeasRate,measfactor);
+}
+
+void SensorSetGain(uint8_t gain)
+{
+	I2CWriteOneByte(&hi2c1,RGB381_ADDR,RGB381_Gain,gain);
+}
+
+uint8_t SensorGetID(uint8_t ID)
+{
+	TCA9548A_SetChannel(ID);
+	HAL_Delay(100);
+	return I2CReadOneByte(&hi2c1,RGB381_ADDR,RGB381_PartID);
+//	return I2CReadOneByte(I2C0,RGB381_ADDR,RGB381_PartID);
+}
+
+void SensorGetRawData(ColorSensor *CS)
+{
+
+	uint32_t u32Timeout = I2C_TIMEOUT_1000MS;  // 转换为时钟周期数
+  uint32_t u32StartTick = sysinf.ms_conter;
+
+	uint32_t u32LastTick;
+	uint32_t time;
+
+	TCA9548A_SetChannel(CS->ID);
+	HAL_Delay(40);
+	u32LastTick = sysinf.ms_conter;
+	time = u32LastTick - u32StartTick;
+	while((I2CReadOneByte(&hi2c1,RGB381_ADDR,RGB381_MainState)&0x08)==0x08){
+	        // 超时检测
+	      u32LastTick = sysinf.ms_conter;
+			 time = u32LastTick - u32StartTick;
+	
+ 			if(u32LastTick < u32StartTick){
+ 					time = u32LastTick + 0x1000000 - u32StartTick;
+ 			}
+	        if ((time) > u32Timeout) {
+	            CS->RDR = 0;
+							Van_Device_Printf(VAN_LOG_ERROR, "error_state :%d\n",time);
+	            return;  // 返回超时错误码
+	        }
+
+	};
+	HAL_Delay(10);
+//	LOG_E("error_state :%d\n",time);
+	CS->RDR=(I2CReadOneByte(&hi2c1,RGB381_ADDR,RGB381_R_DataLow)|
+			(I2CReadOneByte(&hi2c1,RGB381_ADDR,RGB381_R_DataMid)<<8)|
+			(I2CReadOneByte(&hi2c1,RGB381_ADDR,RGB381_R_DataHIG)<<16));
+	if(CS->RDR == 0){
+		HAL_Delay(10);
+		CS->RDR=(I2CReadOneByte(&hi2c1,RGB381_ADDR,RGB381_R_DataLow)|
+				(I2CReadOneByte(&hi2c1,RGB381_ADDR,RGB381_R_DataMid)<<8)|
+				(I2CReadOneByte(&hi2c1,RGB381_ADDR,RGB381_R_DataHIG)<<16));
+		if(CS->RDR == 0){
+			Van_Device_Printf(VAN_LOG_ERROR, "error_Data\n");
+		}
+		 
+	}
+//	CS->RDG=(I2CReadOneByte(I2C0,RGB381_ADDR,RGB381_G_DataLow)|
+//			(I2CReadOneByte(I2C0,RGB381_ADDR,RGB381_G_DataMid)<<8)|
+//			(I2CReadOneByte(I2C0,RGB381_ADDR,RGB381_G_DataHIG)<<16));
+//	CS->RDB=(I2CReadOneByte(I2C0,RGB381_ADDR,RGB381_B_DataLow)|
+//			(I2CReadOneByte(I2C0,RGB381_ADDR,RGB381_B_DataMid)<<8)|
+//			(I2CReadOneByte(I2C0,RGB381_ADDR,RGB381_B_DataHIG)<<16));
+
+}
+
+void SensorEnable(void)
+{
+	 I2CWriteOneByte(&hi2c1,RGB381_ADDR,RGB381_MainCtrl,CS_Modle|ALS_Active);
+	 HAL_Delay(10);
+}
+
+uint8_t SensorInit(ColorSensor *CS)
+{
+	if(SensorGetID(CS->ID)==0xC2)// device id is 0xC2
+	{
+		SensorEnable();
+		SensorMeasurementFactor(ALS_MeasRes_17B|ALS_MeasRate_50ms);
+		SensorSetGain(ALS_Gain_9X);
+		CS->TtMax=0.0;
+//		CS->TtNow=0.0;
+//		CS->ColDifInit=0.0;
+//		CS->ColDifNow=0.0;
+//		CS->ColDifMax=0.0;
+		CS->Tt=30.0;
+		CS->STD=0.0;
+		CS->average=0.0;
+		memset(CS->SAMP, 0, sizeof(CS->SAMP));
+		CS->std_num=0;
+		CS->gain=0;
+        SensorGetRawData(CS);
+
+        for(int i = 0; i < 10; i++)
+        {
+            if(CS->RDR > CS_RDR_MIN)
+                return 0;
+            HAL_Delay(100);
+            SensorGetRawData(CS);
+        }
+        return 1;
+
+	}
+	else
+		return 1;
+}
+
+int SensorSelfCheck(void)
+{
+	SensorState1=SensorInit(&CS[0]);
+	SensorState2=SensorInit(&CS[1]);
+	SensorState3=SensorInit(&CS[2]);
+	SensorState4=SensorInit(&CS[3]);
+	SensorState5=SensorInit(&CS[4]);
+	SensorState6=SensorInit(&CS[5]);
+	SensorState7=SensorInit(&CS[6]);
+	SensorState8=SensorInit(&CS[7]);
+	SensorState9=SensorInit(&CS[8]);
+	SensorState10=SensorInit(&CS[9]);
+
+    if(SensorState1|SensorState2|SensorState3|SensorState4|SensorState5|SensorState6|SensorState7|SensorState8|SensorState9|SensorState10)
+    	 return -1;
+    else return 0;
+}
+
+void SensorGetCalData(ColorSensor *CS)
+{
+//	SensorGetRawData(CS);
+	//CS->AccArea+=CS->RtR;
+}
+
+
+void SensorInitial(void)
+{
+	CS[0].ID = Sensor1;
+	CS[1].ID = Sensor2;
+	CS[2].ID = Sensor3;
+	CS[3].ID = Sensor4;
+	CS[4].ID = Sensor5;
+	CS[5].ID = Sensor6;
+	CS[6].ID = Sensor7;
+	CS[7].ID = Sensor8;
+	CS[8].ID = Sensor9;
+	CS[9].ID = Sensor10;
+}

+ 127 - 0
DriverInterface/rgb381.h

@@ -0,0 +1,127 @@
+/*
+ * ALS308.h
+ *
+ *  Created on: 2022年4月11日
+ *      Author: amos
+ */
+#ifndef RGB381_H_
+#define RGB381_H_
+
+
+#include "onechip_include_header.h"
+
+#define max3v(v1, v2, v3)   ((v1)<(v2)? ((v2)<(v3)?(v3):(v2)):((v1)<(v3)?(v3):(v1)))
+#define min3v(v1, v2, v3)   ((v1)>(v2)? ((v2)>(v3)?(v3):(v2)):((v1)>(v3)?(v3):(v1)))
+/****************************************************/
+#define SMPTIME          30 //sample times
+#define SAMP_SIZE        18
+#define CALCU_SAMP_SIZE  180
+#define CS_MAX			10
+
+#define CS_RDR_MIN      50    //光信号最小值
+/***************LTR381RGB address********************/
+#define RGB381_ADDR          0x53
+/***************LTR381RGB register define************/
+#define RGB381_MainCtrl		 0x00  /*RGB operation mode control, SW reset*/
+#define RGB381_MeasRate		 0x04  /*RGB measurement rate and resolution in Active Mode*/
+#define RGB381_Gain  		 0x05  /*RGB analog Gain*/
+#define RGB381_PartID		 0x06  /*Part number ID and revision ID*/
+#define RGB381_MainState	 0x07  /*Power-On status, Interrupt status, Data status*/
+
+#define RGB381_IR_DataLow	 0x0A  /*IR ADC measurement data, LSB*/
+#define RGB381_IR_DataMid	 0x0B  /*IR ADC measurement data*/
+#define RGB381_IR_DataHIG	 0x0C  /*IR ADC measurement data, MSB*/
+#define RGB381_G_DataLow	 0x0D  /*G ADC measurement data, LSB*/
+#define RGB381_G_DataMid	 0x0E  /*G ADC measurement data*/
+#define RGB381_G_DataHIG	 0x0F  /*G ADC measurement data, MSB*/
+#define RGB381_R_DataLow	 0x10  /*red ADC measurement data, LSB*/
+#define RGB381_R_DataMid	 0x11  /*red ADC measurement data*/
+#define RGB381_R_DataHIG	 0x12  /*CS red ADC measurement data, MSB*/
+#define RGB381_B_DataLow	 0x13  /*CS blue ADC measurement data, LSB*/
+#define RGB381_B_DataMid	 0x14  /*CS blue ADC measurement data*/
+#define RGB381_B_DataHIG	 0x15  /*CS blue ADC measurement data, MSB*/
+
+#define RGB381_INTCFG		 0x19  /*Interrupt configuration*/
+#define RGB381_INTPST		 0x1A  /*Interrupt persist setting*/
+
+#define RGB381_THRUP0		 0x21  /*RGB interrupt upper threshold, LSB*/
+#define RGB381_THRUP1		 0x22  /*RGB interrupt upper threshold, intervening bits*/
+#define RGB381_THRUP2		 0x23  /*RGB interrupt upper threshold, MSB*/
+#define RGB381_THRLW0		 0x24  /*RGB interrupt lower threshold, LSB*/
+#define RGB381_THRLW1		 0x25  /*RGB interrupt lower threshold, intervening bits*/
+#define RGB381_THRLW2		 0x26  /*RGB interrupt lower threshold, MSB*/
+/*************************LTR381RGB function define******************/
+#define ALS_MeasRes_20B      0x00   /**<  data 20 bit,conversion time 400ms */
+#define ALS_MeasRes_19B      0x10   /**<  data 19 bit,conversion time 200ms */
+#define ALS_MeasRes_18B      0x20   /**<  data 18 bit,conversion time 100ms */
+#define ALS_MeasRes_17B      0x30   /**<  data 17 bit,conversion time 50ms */
+#define ALS_MeasRes_16B      0x40   /**<  data 16 bit,conversion time 25ms */
+/*********************************************************************/
+#define ALS_MeasRate_25ms      0x00   /**<  measurement time 25ms */
+#define ALS_MeasRate_50ms      0x01   /**<  measurement time 50ms */
+#define ALS_MeasRate_100ms     0x02   /**<  measurement time 100ms */
+#define ALS_MeasRate_200ms     0x03   /**<  measurement time 500ms */
+#define ALS_MeasRate_500ms     0x04   /**<  measurement time 500ms */
+#define ALS_MeasRate_1000ms    0x05   /**<  measurement time 1000ms */
+#define ALS_MeasRate_2000ms    0x06   /**<  measurement time 2000ms */
+/*******************************************************************/
+#define ALS_Gain_1X       0x00   /**<  1x gain  */
+#define ALS_Gain_3X       0x01   /**<  3x gain  */
+#define ALS_Gain_6X       0x02   /**<  6x gain */
+#define ALS_Gain_9X       0x03   /**<  9x gain */
+#define ALS_Gain_18X      0x04   /**<  18x gain */
+
+#define CS_Modle         0x02    /* RGB is active mode */
+#define ALS_Active       0x04    /* RGB is active mode */
+/****************************************************/
+typedef struct
+{
+	uint32_t RDC; //color data clear raw data	原始值
+	uint32_t RDR; //color data red   raw data	原始值带小数
+//	uint32_t RDG; //color data green raw data
+//	uint32_t RDB; //color data blue  raw data
+
+	float CDR; //color data red   calibration data	校零值(原始值带小数)
+//	float CDG; //color data green calibration data
+//	float CDB; //color data blue  calibration data
+
+	float RtR; //color data red   convert data	(CDR - RDR)*gain
+//	float RtG; //color data green convert data
+//	float RtB; //color data blue  convert data
+
+	float Tt;
+	float TtMin;
+	float TtMax;   // original Tt
+	uint8_t std_num;
+
+	float gain;	//归一化值
+	//float sum;
+	float STD;		//标准差
+	float average;	//均值
+	float SAMP[SAMP_SIZE];
+//	uint16_t CALCU_SAMP[CALCU_SAMP_SIZE];
+
+	//float AccArea; //accumulation area
+
+	uint8_t   Result;
+	uint8_t  ID; //color sensor ID
+}ColorSensor;
+extern ColorSensor CS[CS_MAX];
+extern uint8_t SensorState1,SensorState2,SensorState3,SensorState4,SensorState5,SensorState6,SensorState7,SensorState8,SensorState9,SensorState10;
+//extern uint8_t SensorState1,SensorState2,SensorState3,SensorState4,SensorState5,SensorState6,SensorState7,SensorState8,SensorState9;
+/**************************************************/
+void SensorMeasurementFactor(uint8_t measfactor);
+void SensorSetGain(uint8_t gain);
+uint8_t SensorGetID(uint8_t ID);
+void SensorGetRawData(ColorSensor *CS);
+void SensorCalculatedCalibrationFactor(ColorSensor *CS);
+void RGBtoHSV(ColorSensor *CS);
+void SensorEnable(void);
+uint8_t SensorInit(ColorSensor *CS);
+int SensorSelfCheck(void);
+void SensorRGBInit(ColorSensor *CS);
+void SensorGetCalData(ColorSensor *CS);
+void SensorInitial(void);
+/**************************************************/
+
+#endif /* RGB381_H_ */

+ 839 - 0
DriverInterface/uart_rcv.c

@@ -0,0 +1,839 @@
+/*
+ * uart_rcv.c
+ *
+ *  Created on: 2022年4月20日
+ *      Author: dell
+ */
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include "NuMicro.h"
+#include "cfg_param_record.h"
+#include "uart_rcv.h"
+#include "usr_pid.h"
+#include "cJSON.h"
+#include "ws2812.h"
+
+
+
+
+#define ENV_ADJ_THRESHOLD 27.0
+
+
+enum SLAVE_MCU_Ctr_cmd_type
+{
+    SLAVE_MCU_CMD_PARAM = 0x01,
+    SLAVE_MCU_CMD_HEAT = 0x02,
+    SLAVE_MCU_CMD_LIGHT_CTR= 0X03,
+    SLAVE_MCU_CMD_QRSCANNER_CTR= 0X04,    
+    SLAVE_MCU_CMD_FAN= 0X05,
+    SLAVE_MCU_CMD_CARD_ST= 0X06,
+	SLAVE_MCU_CMD_PID = 0x20,
+};
+enum SLAVE_MCU_Ctr_UP_type
+{
+	SLAVE_MCU_UP_HEAT = 0x10,
+	SLAVE_MCU_UP_QR_PARAM= 0X11,
+	SLAVE_MCU_UP_QR = 0x12,
+	SLAVE_MCU_INFO,					//异常信息
+};
+
+
+
+#define combine_cmdMessage(msg,header,seqer,cmder,tailer) { \
+	msg.head = header; \
+	msg.seq = seqer; \
+	msg.cmd = cmder; \
+	msg.tail = tailer; \
+}
+
+uint8_t g_uart2_rcv_start = 0;
+uint8_t g_uart2_rcv_complete_flg = 0;
+uint8_t g_uart2_rx_buf[DEBUG_BUF_SIZE] = {0};
+uint8_t g_uart2_tx_buf[BUF_SIZE] = {0};
+uint16_t g_uart2_rx_len = 0;
+uint8_t g_uart2_frame_overtime_cnt = 0;
+uint16_t g_uart2_rcv_cmd = 0;
+uint16_t g_uart2_cmd_overtime_secs = 0;
+uint32_t g_uart2_cmd_overtime_cnt = 0;
+uint8_t g_param_set_mode = 0; // 参数设置模式
+
+uint8_t g_uart1_rcv_start = 0;
+uint8_t g_uart1_rcv_complete_flg = 0;
+uint8_t g_uart1_tx_buf[BUF_SIZE] = {0};
+uint8_t g_uart1_rx_buf[BUF_SIZE] = {0};
+uint8_t g_uart1_rx_len = 0;
+uint8_t g_uart1_frame_overtime_cnt = 0;
+
+uint8_t g_uart0_rcv_start = 0;
+uint8_t g_uart0_rcv_complete_flg = 0;
+uint8_t g_uart0_tx_buf[DEBUG_BUF_SIZE] = {0};
+uint8_t g_uart0_rx_buf[BUF_SIZE] = {0};
+uint8_t g_uart0_rx_len = 0;
+uint8_t g_uart0_frame_overtime_cnt = 0;
+struct CmdMessage  uart0_massage;
+uint8_t  uart0_data[DEBUG_BUF_SIZE];
+uint32_t  uart0_header = 0;
+uint32_t  uart0_last = 0;
+uint32_t  uart0_recOK = 0;
+
+unsigned int haveheaderflag = 0;
+
+heat_ctrl_struct g_heat_ctrl = {0};
+// card_param_struct card = {0};
+str_hole_info_t hole1 = {0};
+str_hole_info_t hole2 = {0};
+str_hole_info_t hole3 = {0};
+str_hole_info_t hole4 = {0};
+str_hole_info_t hole5 = {0};
+str_hole_info_t hole6 = {0};
+str_hole_info_t hole7 = {0};
+str_hole_info_t hole8 = {0};
+str_hole_info_t hole9 = {0};
+str_hole_info_t hole10 = {0};
+str_card_param_info_t m_str_card_param_info = {0};
+
+uint32_t qr_check_delay = QR_CHECH_STATE_FIRST;  /*1s定时器里面,大于0,每s减1*/
+extern void DelayMS(uint32_t ms);
+extern void QRparam_upload(str_card_param_info_t *p_str_card_param_info);
+extern uint8_t sys_info[40];
+/********************************************************************
+ *                         bcd_to_hex()
+ *
+ *描述:BCD转HEX
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+uint8_t bcd_to_hex(uint8_t val)
+{
+	return ((val / 10) << 4) + val % 10;
+}
+
+/********************************************************************
+ *                         debug_receive_int_handle()
+ *
+ *描述:调试串口接收中断数据处理
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+void debug_receive_int_handle0(void)
+{
+
+	if (UART_GET_INT_FLAG(UART0, UART_INTSTS_RDAINT_Msk | UART_INTSTS_RXTOINT_Msk))
+	{
+		/* UART receive data available flag */
+
+		/* Move the data from Rx FIFO to sw buffer (RAM). */
+		/* Every time leave 1 byte data in FIFO for Rx timeout */
+		while (UART_GET_RX_EMPTY(UART0) == 0)
+		{
+			if (uart0_last == BUF_SIZE)uart0_last = 0;
+			g_uart0_rx_buf[uart0_last] = UART_READ(UART0);
+			uart0_last++;
+		}  
+	}
+
+}
+
+
+void debug_receive_int_handle1(void)
+{
+	while (UART_GET_RX_EMPTY(UART1) == 0)
+	{
+		if (g_uart1_rx_len >= BUF_SIZE)
+			g_uart1_rx_len = 0;
+		g_uart1_rx_buf[g_uart1_rx_len] = UART_READ(UART1);
+		g_uart1_rx_len++;
+	}
+}
+
+void debug_receive_int_handle2(void)
+{
+	while (UART_GET_RX_EMPTY(UART2) == 0)
+	{
+		unsigned char recChar = UART_READ(UART2);
+		if(haveheaderflag <= QR_REC_STATE_HEADER){
+			
+			if (g_uart2_rx_len >= DEBUG_BUF_SIZE)
+				g_uart2_rx_len = 0;
+			g_uart2_rx_buf[g_uart2_rx_len++] = recChar;
+		}
+	}
+}
+
+/********************************************************************
+ *                         UART02_IRQHandler()
+ *
+ *描述:串口接收中断
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+void UART02_IRQHandler(void)
+{
+	if (UART_GET_INT_FLAG(UART0, UART_INTSTS_RDAINT_Msk | UART_INTSTS_RXTOINT_Msk | UART_INTSTS_RXTOIF_Msk) )
+	{
+		debug_receive_int_handle0();
+	}
+	else if (UART_GET_INT_FLAG(UART0,UART_INTSTS_BUFERRIF_Msk) )
+	{
+		debug_receive_int_handle0();
+		UART_ClearIntFlag(UART0,UART_INTSTS_BUFERRINT_Msk);
+	}
+	else if (UART_GET_INT_FLAG(UART0,UART_INTSTS_RLSINT_Msk) )
+	{
+		UART_ClearIntFlag(UART0,UART_INTSTS_RLSINT_Msk);
+	}
+	
+	if (UART_GET_INT_FLAG(UART2, UART_INTSTS_RDAINT_Msk | UART_INTSTS_RXTOINT_Msk | UART_INTSTS_RXTOIF_Msk) )
+	{
+		debug_receive_int_handle2();
+	}
+	else if (UART_GET_INT_FLAG(UART2,UART_INTSTS_BUFERRIF_Msk) )
+	{
+		debug_receive_int_handle2();
+		UART_ClearIntFlag(UART2,UART_INTSTS_BUFERRINT_Msk);
+	}
+	else if (UART_GET_INT_FLAG(UART2,UART_INTSTS_RLSINT_Msk) )
+	{
+		UART_ClearIntFlag(UART2,UART_INTSTS_RLSINT_Msk);
+	}
+}
+
+/********************************************************************
+ *                         UART13_IRQHandler()
+ *
+ *描述:串口接收中断
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+void UART13_IRQHandler(void)
+{
+	if (UART_GET_INT_FLAG(UART1, UART_INTSTS_RDAINT_Msk | UART_INTSTS_RXTOINT_Msk | UART_INTSTS_RXTOIF_Msk) )
+	{
+		debug_receive_int_handle1();
+	}
+	else if (UART_GET_INT_FLAG(UART1,UART_INTSTS_BUFERRIF_Msk) )
+	{
+		debug_receive_int_handle1();
+		UART_ClearIntFlag(UART1,UART_INTSTS_BUFERRINT_Msk);
+	}
+	else if (UART_GET_INT_FLAG(UART1,UART_INTSTS_RLSINT_Msk) )
+	{
+		UART_ClearIntFlag(UART1,UART_INTSTS_RLSINT_Msk);
+	}
+}
+
+
+
+
+void sendMsgtoMasterMcu(struct CmdMessage *pmsg)
+{
+	static uint8_t sedbuf[DEBUG_BUF_SIZE];
+	uint16_t checksum = 0;
+	*(unsigned short *)sedbuf = pmsg->head;
+	sedbuf[2] = pmsg->seq;
+	sedbuf[3] = pmsg->cmd;
+	*(unsigned short *)(sedbuf+4) = pmsg->len;
+	for(int i=0; i < pmsg->len; i++){
+		sedbuf[6+i] = pmsg->data[i];
+	}
+
+	for(int i=2; i < (pmsg->len + 6); i++){
+		checksum += sedbuf[i];
+	}
+	sedbuf[6+pmsg->len] = checksum&0xff;/*结尾标记高位*/
+	sedbuf[7+pmsg->len ] = checksum>>8 ;/*结尾标记低位*/
+	UART_Write(UART0, sedbuf, (8+pmsg->len));
+}
+
+
+
+uint16_t checkSum(const uint8_t *pInBuffer, int uLen)
+{
+    uint32_t sum = 0;
+
+    for(int i = 0; i < uLen; i++)
+    {
+        sum += pInBuffer[i];
+    }
+
+    return (sum);
+}
+
+/********************************************************************
+ *                         int Decode(const char *pInBuffer, int uLen)
+ *
+ *描述:对串口数据进行解码成结构体
+ *参数:pInBuffer    接收缓冲区
+        *uheader 当前头位置
+        ulast 当前头尾位置
+        maxlen 缓冲区长度
+        pMessage  命令结构体
+        pdata 命令数据
+ *返回:1解码成功,0解码失败
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+int DecodeNew(struct CmdMessage *pMessage, uint8_t *pdata, const uint8_t *pInBuffer, uint32_t* pheader,uint32_t  ulast,uint32_t maxlen)
+{
+	uint32_t  bufRealLen;
+	uint32_t  sizeofMessage = MINI7_MASSAGE_SIZE;
+	uint32_t  header = *pheader;
+	uint32_t i = 0;
+    if (NULL == pInBuffer || NULL == pMessage || NULL == pdata || NULL == pheader)
+    {
+		/*空指针判断*/
+		return 0;
+    }
+	/*缓冲区有效数据长度,缓冲区循环处理,会出现头大于未情况*/
+	bufRealLen = (ulast > header)?(ulast - header):(ulast + maxlen - header);
+	if(bufRealLen < sizeofMessage){
+		/*长度过段,跳过*/
+		return 0;
+	}
+	bufRealLen -= sizeofMessage; /*最大有效数据长度*/
+	for(; i<=bufRealLen;){
+		uint32_t headerflag = pInBuffer[(header + i)%maxlen];
+		headerflag += pInBuffer[(header + i + 1)%maxlen] <<8;
+		if(headerflag != MINI7_HEADER_FALG){
+			i += 1;
+//			header = (header + 1)%maxlen;
+			continue;
+		}
+		uint32_t messagelen =  pInBuffer[(header + i + 4)%maxlen];
+		messagelen += pInBuffer[(header + i + 5)%maxlen] <<8;
+		if(messagelen > (maxlen- sizeofMessage)){
+			/*长度超长 跳过2个字节*/
+			i += 1;
+//			header = (header + 1)%maxlen;
+			continue;
+		}
+		if(messagelen >bufRealLen){
+			/*当前起始点可能存在数据,跳出循环,*/
+			i++; /*for采样小于等于判断,循环次数多1,此处加1便于后续处理*/
+			break;
+		}
+		uint16_t checkesum = 0;
+		uint16_t recsum = 0;
+		if((header + i + 6 + messagelen) < maxlen){
+			checkesum = checkSum(pInBuffer + header + i + 2, messagelen+4);
+		}else{
+			checkesum = checkSum(pInBuffer + header + i + 2, (maxlen - (header + i + 2)));
+			checkesum += checkSum(pInBuffer, (header + i + 6 + messagelen)%maxlen);
+		}
+		recsum = *(pInBuffer + (header + i + 6 + messagelen)%maxlen ) ;
+		recsum += *(pInBuffer + (header + i + 7 + messagelen)%maxlen) << 8;
+		/*固定结尾预留做调试用*/
+		if(checkesum != recsum && recsum>>8 != MINI7_TAIL_FALG){
+			 i += 1;
+		// ? ? ? ? ?header = (header + 1)%maxlen;
+		}else{
+		/*解析成功,拷贝消息结构体*/
+		 uint8_t * pCharMessage = (uint8_t *)pMessage;
+		for(unsigned copyi=0;copyi<(sizeofMessage-2);copyi++){
+			*pCharMessage++ = pInBuffer[(header + i+ copyi)%maxlen];
+		}
+		 (*pMessage).tail = MINI7_TAIL_FALG;
+
+		/*解析成功,拷贝数据结构体*/
+		for(unsigned copyi=0;copyi<messagelen;copyi++){
+			*pdata++ = pInBuffer[(header + i + 6 + copyi)%maxlen];
+		}
+		*pheader = (header + messagelen + i + sizeofMessage - 2)%maxlen;
+			return 1;
+		}
+	}
+   *pheader = (header + i - 1)%maxlen;
+   return 0;
+}
+
+
+/********************************************************************
+ *                         uart0_rcv_frame_analysis()
+ *
+ *描述:接收帧解析
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+void uart0_rcv_data_analysis(void)
+{
+	float kp, ki, kd;
+	uint8_t false = 0;
+	struct CmdMessage msg;
+	uint16_t result =0;
+	struct light_band_para_t light;
+	msg.len = 2;
+	msg.data = (char*)&result;
+
+	if(uart0_recOK == false){
+		return;
+	} 
+	uart0_recOK = false;
+	if(uart0_massage.seq == MINI7_MASSAGE_TYPE_MCUTOMCU){
+		switch (uart0_massage.cmd){
+			case SLAVE_MCU_CMD_PARAM:{
+				g_heat_ctrl.PresetTempVal = *(float *)&uart0_data[0];
+				g_heat_ctrl.PresetTempTime = *(int *)&uart0_data[4];
+				g_heat_ctrl.SetTempVal = *(float *)&uart0_data[8];
+				g_heat_ctrl.HoldTemp = *(float *)&uart0_data[12];
+				g_heat_ctrl.TempOffset = *(float *)&uart0_data[16];		
+				g_heat_ctrl.PreHeatTime = *(uint32_t *)&uart0_data[20];
+				g_heat_ctrl.ReadyTempVal = *(float *)&uart0_data[24];	
+				if(g_heat_ctrl.PresetTempVal < 90 && g_heat_ctrl.SetTempVal < 90)	
+				{
+					combine_cmdMessage(msg,MINI7_HEADER_FALG,MINI7_MASSAGE_TYPE_MCUTOMCU,SLAVE_MCU_CMD_PARAM,MINI7_TAIL_FALG)
+					msg.len = strlen(sys_info);
+					msg.data = sys_info;
+					sendMsgtoMasterMcu(&msg);
+				}	
+			}
+				break;
+			case SLAVE_MCU_CMD_HEAT:{
+				g_heat_ctrl.heat_state = uart0_data[0];			
+				combine_cmdMessage(msg,MINI7_HEADER_FALG,MINI7_MASSAGE_TYPE_MCUTOMCU,SLAVE_MCU_CMD_HEAT,MINI7_TAIL_FALG)
+				sendMsgtoMasterMcu(&msg);
+			}
+				break;
+			case SLAVE_MCU_CMD_LIGHT_CTR:{
+				memcpy(&light, uart0_data, sizeof(struct light_band_para_t));
+    			light_set(light.mode, light.speed, light.color, 0);
+				memcpy(&light, uart0_data+sizeof(struct light_band_para_t), sizeof(struct light_band_para_t));
+    			light_set(light.mode, light.speed, light.color, 1);
+
+				combine_cmdMessage(msg,MINI7_HEADER_FALG,MINI7_MASSAGE_TYPE_MCUTOMCU,SLAVE_MCU_CMD_LIGHT_CTR,MINI7_TAIL_FALG)
+				sendMsgtoMasterMcu(&msg);
+			}
+				break;
+		    case SLAVE_MCU_CMD_QRSCANNER_CTR:{
+				}
+			break;
+			case SLAVE_MCU_CMD_FAN:{				
+				g_heat_ctrl.fan_state = uart0_data[0];
+				if (g_heat_ctrl.fan_state == 1)
+				{
+					PB4 = 1;
+				}
+				else{
+					PB4 = 0;
+				}			
+				combine_cmdMessage(msg,MINI7_HEADER_FALG,MINI7_MASSAGE_TYPE_MCUTOMCU,SLAVE_MCU_CMD_FAN,MINI7_TAIL_FALG)
+				sendMsgtoMasterMcu(&msg);	
+			}
+				break;
+		    case SLAVE_MCU_CMD_CARD_ST:{
+				g_heat_ctrl.card_state = uart0_data[0];	
+				combine_cmdMessage(msg,MINI7_HEADER_FALG,MINI7_MASSAGE_TYPE_MCUTOMCU,SLAVE_MCU_CMD_CARD_ST,MINI7_TAIL_FALG)				
+//				/*进入稳定状态,调整目标温度*/
+			    if(g_heat_ctrl.card_state &&  uart0_massage.len >= 8){
+					float cabinTem =  *(float *)&uart0_data[4];
+					float adj =  *(float *)&uart0_data[8];
+					if(cabinTem < ENV_ADJ_THRESHOLD){
+						g_heat_ctrl.adJTarget = adj;
+					}else{
+						g_heat_ctrl.adJTarget = 0;
+					}
+				}
+				sendMsgtoMasterMcu(&msg);
+			}
+			break;
+		    case SLAVE_MCU_CMD_PID:{
+				kp = *(float *)&uart0_data[0];
+				ki = *(float *)&uart0_data[4];
+				kd = *(float *)&uart0_data[8];	
+    			PID_set(&pid1, kp, ki, kd);	
+				combine_cmdMessage(msg,MINI7_HEADER_FALG,MINI7_MASSAGE_TYPE_MCUTOMCU,SLAVE_MCU_CMD_PID,MINI7_TAIL_FALG)
+				sendMsgtoMasterMcu(&msg);
+			}
+			break;
+		    case SLAVE_MCU_UP_QR:{
+		    	/*扫描结果上报成功,清除缓存*/
+				memset(g_uart2_rx_buf, 0 ,sizeof(g_uart2_rx_buf));
+				g_uart2_rx_len = 0;
+				haveheaderflag = QR_REC_STATE_EMPTY;
+						
+//		    light_set(MODE_NORMAL, 250, COLOR_YELLOW, 0);
+//		    light_set(MODE_NORMAL, 250, COLOR_YELLOW, 1);
+			}
+			break;
+		    case SLAVE_MCU_UP_QR_PARAM:{
+				qr_check_delay = 0;
+				haveheaderflag = QR_REC_STATE_SENDQR;
+//			    light_set(MODE_NORMAL, 250, COLOR_GREEN, 0);
+//			    light_set(MODE_NORMAL, 250, COLOR_GREEN, 1);
+			}
+			break;
+		}
+	}
+}
+
+
+/********************************************************************
+ *                         heater_state_upload()
+ *
+ *描述:上传加热、风扇状态及加热体温度
+ *参数:无
+ *返回:0/1:设置失败/成功
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:包含上报和应答处理
+ ********************************************************************/
+void heater_state_upload(uint32_t upenv)
+{
+	struct CmdMessage msg;
+	uint8_t databuf[7]={0};
+	combine_cmdMessage(msg,MINI7_HEADER_FALG,MINI7_MASSAGE_TYPE_MCUTOMCU,SLAVE_MCU_UP_HEAT,MINI7_TAIL_FALG)
+	if(upenv){		
+		msg.len = sizeof(databuf);
+	}else{
+		msg.len = sizeof(databuf)-2;
+	}
+	msg.data = databuf;	
+	databuf[0] = g_heat_ctrl.heat_state;
+	databuf[1] = g_heat_ctrl.temp_stable_sta;
+	databuf[2] = (uint8_t)pid1.ActualTemp;
+	databuf[3] = (uint8_t)((pid1.ActualTemp - (uint8_t)pid1.ActualTemp) * 100);
+	databuf[4] = g_heat_ctrl.fan_state;
+	databuf[5] = (uint8_t)pid1.cabinTem;
+	databuf[6] = (uint8_t)((pid1.cabinTem - (uint8_t)pid1.cabinTem) * 100);
+	sendMsgtoMasterMcu(&msg);
+	
+}
+
+void sendInfoMasterMcu(uint8_t *data, uint16_t len)
+{
+	struct CmdMessage msg;
+	combine_cmdMessage(msg,MINI7_HEADER_FALG,MINI7_MASSAGE_TYPE_MCUTOMCU,SLAVE_MCU_INFO,MINI7_TAIL_FALG)
+	msg.len = len;
+	msg.data = data;
+
+	sendMsgtoMasterMcu(&msg);
+}
+
+/********************************************************************
+ *                         uart2_rcv_frame_analysis()
+ *
+ *描述:接收帧解析
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+
+void send_param(void){	
+	struct CmdMessage msg;
+	combine_cmdMessage(msg,MINI7_HEADER_FALG,MINI7_MASSAGE_TYPE_MCUTOMCU,SLAVE_MCU_UP_QR_PARAM,MINI7_TAIL_FALG)
+	msg.len = sizeof(m_str_card_param_info);
+	msg.data = (char*)&m_str_card_param_info;
+	sendMsgtoMasterMcu(&msg);
+}
+void send_QR_inf(void){	
+	struct CmdMessage msg;	
+	combine_cmdMessage(msg,MINI7_HEADER_FALG,MINI7_MASSAGE_TYPE_MCUTOMCU,SLAVE_MCU_UP_QR,MINI7_TAIL_FALG)
+	msg.len = g_uart2_rx_len;
+	msg.data = g_uart2_rx_buf;
+	sendMsgtoMasterMcu(&msg);
+}
+
+/*上报二维码信息*/
+void sendQR_inf(void){
+	if((haveheaderflag == QR_REC_STATE_SENDPRAM) && (qr_check_delay%2==0)){
+		send_param();
+	}
+	if((haveheaderflag == QR_REC_STATE_SENDQR) && (qr_check_delay%2==0)){
+		send_QR_inf();
+	}
+}
+/*发送完成,清除标记,清除缓冲区*/
+//void sendQR_send_ok(void)
+//{
+//	memset(g_uart2_rx_buf, 0 ,sizeof(g_uart2_rx_buf));
+//	g_uart2_rx_len = 0;
+//	qr_check_delay = QR_CHECH_STATE_FIRST;
+//}
+void uart2_rcv_frame_analysis(void)
+{
+	if(haveheaderflag <= QR_REC_STATE_HEADER){		
+		if (('{' == g_uart2_rx_buf[0])&&(g_uart2_rx_len>10))
+		{
+			if(haveheaderflag != QR_REC_STATE_HEADER){
+				haveheaderflag = QR_REC_STATE_HEADER;
+				qr_check_delay = 0;
+				
+//			    light_set(MODE_NORMAL, 250, COLOR_RED, 0);
+//			    light_set(MODE_NORMAL, 250, COLOR_RED, 1);
+			}
+			if(0 == parse_qrcode_info(&m_str_card_param_info, g_uart2_rx_buf)){
+				haveheaderflag = QR_REC_STATE_SENDPRAM; 	
+				qr_check_delay = 0;
+//			    light_set(MODE_NORMAL, 250, COLOR_BLUE, 0);
+//			    light_set(MODE_NORMAL, 250, COLOR_BLUE, 1);
+			}
+		}
+		if((qr_check_delay == QR_CHECH_STATE_WAITING) ||('{' != g_uart2_rx_buf[0] && g_uart2_rx_len > 0)){
+			/*码头为 '{' 延时解码不对,清空 */
+			/*解码完成 */
+			/*码头不为 '{' 非法,清空*/
+			memset(g_uart2_rx_buf, 0 ,sizeof(g_uart2_rx_buf));
+			g_uart2_rx_len = 0;
+			qr_check_delay =  0;
+			haveheaderflag = QR_REC_STATE_EMPTY;		
+		}
+	}
+}
+
+/********************************************************************
+ *                         trigmode_select_sensor()
+ *
+ *描述:切换为感应触发模式
+ *参数:无
+ *返回:0/1:设置失败/成功
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:包含上报和应答处理
+ ********************************************************************/
+void trigmode_select_sensor(void)
+{
+	memset(g_uart2_tx_buf, 0, sizeof(g_uart2_tx_buf));
+	//	memset(g_uart2_rx_buf, 0, sizeof(g_uart2_rx_buf));
+	g_uart2_tx_buf[0] = 0x7E; // 帧头
+	g_uart2_tx_buf[1] = 0x00; // 帧头
+	g_uart2_tx_buf[2] = 0x08; // 命令标识
+	g_uart2_tx_buf[3] = 0x01; // 命令标识
+	g_uart2_tx_buf[4] = 0x00;
+	g_uart2_tx_buf[5] = 0x00;
+	g_uart2_tx_buf[6] = 0xD7;
+	//	g_uart2_tx_buf[6]  = 0xEF;
+	g_uart2_tx_buf[7] = 0xAB;
+	g_uart2_tx_buf[8] = 0xCD;
+	UART_Write(UART2, g_uart2_tx_buf, 9);
+}
+
+/********************************************************************
+ *                         data_out_oragin()
+ *
+ *描述:切换为原始数据输出
+ *参数:无
+ *返回:0/1:设置失败/成功
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:包含上报和应答处理
+ ********************************************************************/
+void data_out_original(void)
+{
+	memset(g_uart2_tx_buf, 0, sizeof(g_uart2_tx_buf));
+
+	g_uart2_tx_buf[0] = 0x7E; // 帧头
+	g_uart2_tx_buf[1] = 0x00; // 帧头
+	g_uart2_tx_buf[2] = 0x08; // 命令标识
+	g_uart2_tx_buf[3] = 0x01; // 命令标识
+	g_uart2_tx_buf[4] = 0x00;
+	g_uart2_tx_buf[5] = 0x0D;
+	//	g_uart0_tx_buf[6]  = 0xD7;
+	g_uart2_tx_buf[6] = 0xCA;
+	g_uart2_tx_buf[7] = 0xAB;
+	g_uart2_tx_buf[8] = 0xCD;
+	UART_Write(UART2, g_uart2_tx_buf, 9);
+	DelayMS(100);
+	memset(g_uart2_rx_buf, 0, sizeof(g_uart2_rx_buf));
+	g_uart2_rx_len = 0;
+}
+
+int parse_qrcode_info(str_card_param_info_t *info, char *qrcode_str)
+{
+	int id = 0;
+	double Tt = 0;
+	double Tt1 = 0;
+	
+	if (info == 0)
+	{
+		return -1;
+	}
+
+	cJSON *root = cJSON_Parse(qrcode_str);
+	if (root == NULL)
+	{   /*消息不合格*/
+		return -1;
+	}
+	cJSON *item = cJSON_GetObjectItem(root, "p");
+	if (item == NULL)
+	{   /*消息不合格*/
+		cJSON_Delete(root);
+		return -1;
+	}
+	char *pid = cJSON_GetStringValue(item);
+	//    printf("pid=%s \r\n", pid);
+	memcpy(info->pid, pid, 10);
+
+	item = cJSON_GetObjectItem(root, "t");
+	if (item == NULL)
+	{   /*消息不合格*/
+		cJSON_Delete(root);
+		return -1;
+	}
+	double t = item->valuedouble;
+	//    printf("t=%f \r\n", t);
+	info->temp[0] = (uint8_t)t;
+	info->temp[1] = (uint8_t)((t -(uint8_t)t)* 100);
+
+	// 获取数组item
+	item = cJSON_GetObjectItem(root, "e");
+	if (item == NULL)
+	{   /*消息不合格*/
+		cJSON_Delete(root);
+		return -1;
+	}
+	int test_arry_size = cJSON_GetArraySize(item);
+
+	for (int i = 0; i < test_arry_size; i++)
+	{
+		// 打印数组里的所有item
+		cJSON *sub_array = cJSON_GetArrayItem(item, i);
+
+		cJSON *sub = cJSON_GetObjectItem(sub_array, "i");
+		id = sub->valueint;
+		//        printf("id=%d \r\n", id);
+
+		if(id > 0)
+		{
+			sub = cJSON_GetObjectItemCaseSensitive(sub_array, "T");
+			Tt = sub->valuedouble;
+			//        printf("Tt=%f \r\n", Tt);
+
+			sub = cJSON_GetObjectItemCaseSensitive(sub_array, "t");
+			Tt1 = sub->valuedouble;
+			//        printf("Tt1=%f \r\n", Tt1);
+		}
+		else
+		{
+			Tt = 0;
+			Tt1 = 0;
+		}
+
+		info->hole_info[i].item = id;
+		info->hole_info[i].TtMax[0] = (uint8_t)Tt;
+		info->hole_info[i].TtMax[1] = (uint8_t)((Tt -(uint8_t)Tt)* 100);
+		info->hole_info[i].TtMin[0] = (uint8_t)Tt1;
+		info->hole_info[i].TtMin[1] = (uint8_t)((Tt1 -(uint8_t)Tt1)* 100);
+	}
+	// 记得删除json
+	cJSON_Delete(root);
+	return 0;
+}
+
+/********************************************************************
+ *                         QRparam_upload()
+ *
+ *描述:上传二维码扫码参数
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:包含上报和应答处理
+ ********************************************************************/
+void QRparam_upload(str_card_param_info_t *p_str_card_param_info)
+{
+	memset(g_uart0_tx_buf, 0, sizeof(g_uart0_tx_buf));
+	//	int QR_param_pid = 0;
+	//	QR_param_pid = atoi(&m_str_card_param_info.pid[0]);
+
+	g_uart0_tx_buf[0] = 0xAA; // 帧头
+	g_uart0_tx_buf[1] = 0x55; // 帧头
+	g_uart0_tx_buf[2] = 0x0A; // 命令标识
+	g_uart0_tx_buf[3] = 0x11; // 命令标识
+#if 0
+	/*卡盒编号*/
+	g_uart0_tx_buf[4]  = (uint8_t)m_str_card_param_info.pid[0] - 48;
+	g_uart0_tx_buf[5]  = (uint8_t)m_str_card_param_info.pid[1] - 48;
+	g_uart0_tx_buf[6]  = (uint8_t)m_str_card_param_info.pid[2] - 48;
+	g_uart0_tx_buf[7]  = (uint8_t)m_str_card_param_info.pid[3] - 48;
+	g_uart0_tx_buf[8]  = (uint8_t)m_str_card_param_info.pid[4] - 48;
+	g_uart0_tx_buf[9]  = (uint8_t)m_str_card_param_info.pid[5] - 48;
+	/*卡槽工作温度(整数+小数)*/
+	g_uart0_tx_buf[10] = (uint8_t)(m_str_card_param_info.temp);
+	g_uart0_tx_buf[11] = (uint8_t)((m_str_card_param_info.temp-(uint8_t)(m_str_card_param_info.temp))*100);
+	/*孔1检测项目ID、TtMax(整数+小数)、TtMin(整数+小数)*/
+	g_uart0_tx_buf[12] = (uint8_t)(m_str_card_param_info.hole_info[0].item);
+	g_uart0_tx_buf[13] = (uint8_t)(m_str_card_param_info.hole_info[0].TtMax);
+	g_uart0_tx_buf[14] = (uint8_t)((m_str_card_param_info.hole_info[0].TtMax-(uint8_t)(m_str_card_param_info.hole_info[0].TtMax))*100);
+	g_uart0_tx_buf[15] = (uint8_t)(m_str_card_param_info.hole_info[0].TtMin);
+	g_uart0_tx_buf[16] = (uint8_t)((m_str_card_param_info.hole_info[0].TtMin-(uint8_t)(m_str_card_param_info.hole_info[0].TtMin))*100);
+	/*孔2检测项目ID、TtMax(整数+小数)、TtMin(整数+小数)*/
+	g_uart0_tx_buf[17] = (uint8_t)(m_str_card_param_info.hole_info[1].item);
+	g_uart0_tx_buf[18] = (uint8_t)(m_str_card_param_info.hole_info[1].TtMax);
+	g_uart0_tx_buf[19] = (uint8_t)((m_str_card_param_info.hole_info[1].TtMax-(uint8_t)(m_str_card_param_info.hole_info[1].TtMax))*100);
+	g_uart0_tx_buf[20] = (uint8_t)(m_str_card_param_info.hole_info[1].TtMin);
+	g_uart0_tx_buf[21] = (uint8_t)((m_str_card_param_info.hole_info[1].TtMin-(uint8_t)(m_str_card_param_info.hole_info[1].TtMin))*100);
+	/*孔3检测项目ID、TtMax(整数+小数)、TtMin(整数+小数)*/
+	g_uart0_tx_buf[22] = (uint8_t)(m_str_card_param_info.hole_info[2].item);
+	g_uart0_tx_buf[23] = (uint8_t)(m_str_card_param_info.hole_info[2].TtMax);
+	g_uart0_tx_buf[24] = (uint8_t)((m_str_card_param_info.hole_info[2].TtMax-(uint8_t)(m_str_card_param_info.hole_info[2].TtMax))*100);
+	g_uart0_tx_buf[25] = (uint8_t)(m_str_card_param_info.hole_info[2].TtMin);
+	g_uart0_tx_buf[26] = (uint8_t)((m_str_card_param_info.hole_info[2].TtMin-(uint8_t)(m_str_card_param_info.hole_info[2].TtMin))*100);
+	/*孔4检测项目ID、TtMax(整数+小数)、TtMin(整数+小数)*/
+	g_uart0_tx_buf[27] = (uint8_t)(m_str_card_param_info.hole_info[3].item);
+	g_uart0_tx_buf[28] = (uint8_t)(m_str_card_param_info.hole_info[3].TtMax);
+	g_uart0_tx_buf[29] = (uint8_t)((m_str_card_param_info.hole_info[3].TtMax-(uint8_t)(m_str_card_param_info.hole_info[3].TtMax))*100);
+	g_uart0_tx_buf[30] = (uint8_t)(m_str_card_param_info.hole_info[3].TtMin);
+	g_uart0_tx_buf[31] = (uint8_t)((m_str_card_param_info.hole_info[3].TtMin-(uint8_t)(m_str_card_param_info.hole_info[3].TtMin))*100);
+	/*孔5检测项目ID、TtMax(整数+小数)、TtMin(整数+小数)*/
+	g_uart0_tx_buf[32] = (uint8_t)(m_str_card_param_info.hole_info[4].item);
+	g_uart0_tx_buf[33] = (uint8_t)(m_str_card_param_info.hole_info[4].TtMax);
+	g_uart0_tx_buf[34] = (uint8_t)((m_str_card_param_info.hole_info[4].TtMax-(uint8_t)(m_str_card_param_info.hole_info[4].TtMax))*100);
+	g_uart0_tx_buf[35] = (uint8_t)(m_str_card_param_info.hole_info[4].TtMin);
+	g_uart0_tx_buf[36] = (uint8_t)((m_str_card_param_info.hole_info[4].TtMin-(uint8_t)(m_str_card_param_info.hole_info[4].TtMin))*100);
+	/*孔6检测项目ID、TtMax(整数+小数)、TtMin(整数+小数)*/
+	g_uart0_tx_buf[37] = (uint8_t)(m_str_card_param_info.hole_info[5].item);
+	g_uart0_tx_buf[38] = (uint8_t)(m_str_card_param_info.hole_info[5].TtMax);
+	g_uart0_tx_buf[39] = (uint8_t)((m_str_card_param_info.hole_info[5].TtMax-(uint8_t)(m_str_card_param_info.hole_info[5].TtMax))*100);
+	g_uart0_tx_buf[40] = (uint8_t)(m_str_card_param_info.hole_info[5].TtMin);
+	g_uart0_tx_buf[41] = (uint8_t)((m_str_card_param_info.hole_info[5].TtMin-(uint8_t)(m_str_card_param_info.hole_info[5].TtMin))*100);
+	/*孔7检测项目ID、TtMax(整数+小数)、TtMin(整数+小数)*/
+	g_uart0_tx_buf[42] = (uint8_t)(m_str_card_param_info.hole_info[6].item);
+	g_uart0_tx_buf[43] = (uint8_t)(m_str_card_param_info.hole_info[6].TtMax);
+	g_uart0_tx_buf[44] = (uint8_t)((m_str_card_param_info.hole_info[6].TtMax-(uint8_t)(m_str_card_param_info.hole_info[6].TtMax))*100);
+	g_uart0_tx_buf[45] = (uint8_t)(m_str_card_param_info.hole_info[6].TtMin);
+	g_uart0_tx_buf[46] = (uint8_t)((m_str_card_param_info.hole_info[6].TtMin-(uint8_t)(m_str_card_param_info.hole_info[6].TtMin))*100);
+	/*孔8检测项目ID、TtMax(整数+小数)、TtMin(整数+小数)*/
+	g_uart0_tx_buf[47] = (uint8_t)(m_str_card_param_info.hole_info[7].item);
+	g_uart0_tx_buf[48] = (uint8_t)(m_str_card_param_info.hole_info[7].TtMax);
+	g_uart0_tx_buf[49] = (uint8_t)((m_str_card_param_info.hole_info[7].TtMax-(uint8_t)(m_str_card_param_info.hole_info[7].TtMax))*100);
+	g_uart0_tx_buf[50] = (uint8_t)(m_str_card_param_info.hole_info[7].TtMin);
+	g_uart0_tx_buf[51] = (uint8_t)((m_str_card_param_info.hole_info[7].TtMin-(uint8_t)(m_str_card_param_info.hole_info[7].TtMin))*100);
+	/*孔9检测项目ID、TtMax(整数+小数)、TtMin(整数+小数)*/
+	g_uart0_tx_buf[52] = (uint8_t)(m_str_card_param_info.hole_info[8].item);
+	g_uart0_tx_buf[53] = (uint8_t)(m_str_card_param_info.hole_info[8].TtMax);
+	g_uart0_tx_buf[54] = (uint8_t)((m_str_card_param_info.hole_info[8].TtMax-(uint8_t)(m_str_card_param_info.hole_info[8].TtMax))*100);
+	g_uart0_tx_buf[55] = (uint8_t)(m_str_card_param_info.hole_info[8].TtMin);
+	g_uart0_tx_buf[56] = (uint8_t)((m_str_card_param_info.hole_info[8].TtMin-(uint8_t)(m_str_card_param_info.hole_info[8].TtMin))*100);
+	/*孔10检测项目ID、TtMax(整数+小数)、TtMin(整数+小数)*/
+	g_uart0_tx_buf[57] = (uint8_t)(m_str_card_param_info.hole_info[9].item);
+	g_uart0_tx_buf[58] = (uint8_t)(m_str_card_param_info.hole_info[9].TtMax);
+	g_uart0_tx_buf[59] = (uint8_t)((m_str_card_param_info.hole_info[9].TtMax-(uint8_t)(m_str_card_param_info.hole_info[9].TtMax))*100);
+	g_uart0_tx_buf[60] = (uint8_t)(m_str_card_param_info.hole_info[9].TtMin);
+	g_uart0_tx_buf[61] = (uint8_t)((m_str_card_param_info.hole_info[9].TtMin-(uint8_t)(m_str_card_param_info.hole_info[9].TtMin))*100);
+#endif
+	memcpy(g_uart0_tx_buf + 4, (uint8_t*)p_str_card_param_info, sizeof(str_card_param_info_t));
+
+	g_uart0_tx_buf[62] = 0x55; // 帧尾
+	g_uart0_tx_buf[63] = 0xBB; // 帧尾
+
+	UART_Write(UART0, g_uart0_tx_buf, 64);
+}

+ 147 - 0
DriverInterface/uart_rcv.h

@@ -0,0 +1,147 @@
+/*
+ * uart_rcv.h
+ *
+ *  Created on: 2022年4月20日
+ *      Author: dell
+ */
+
+#ifndef UART_RCV_H_
+#define UART_RCV_H_
+
+
+
+#define DEBUG_BUF_SIZE (512)	// 调试串口缓冲区长度
+#define FRAME_RCV_OVERTIME (10) // 帧接收超时时间,单位:ms
+#define OVERTIME_SEC (10)		// 接收清除命令超时时间:10秒
+
+
+#define BUF_SIZE (64)			// 调试串口缓冲区长度
+#define FRAME_RCV_OVERTIME (10) // 帧接收超时时间,单位:ms
+#define OVERTIME_SEC (10)
+#define MINI7_HEADER_FALG 0x55AA
+#define MINI7_TAIL_FALG 0x5A
+#define MINI7_MASSAGE_SIZE 8
+#define MINI7_MASSAGE_TYPE_MCUTOMCU 0x10
+
+#define DEBUG_UART           UART0         //调试串口号
+#define DEBUG_UART_RST       UART0_RST     //调试串口复位标志
+#define DEBUG_UART_IRQ       UART02_IRQn   //中断向量
+
+//#define hole1 	1
+//#define hole2 	2
+//#define hole3 	3
+//#define hole4 	4
+//#define hole5 	5
+//#define hole6	6
+//#define hole7 	7
+//#define hole8 	8
+//#define hole9 	9
+//#define hole10 	10
+//#define hole1 1
+
+enum QR_CHECH_STATE
+{
+	QR_CHECH_STATE_FIRST = 0,
+	QR_CHECH_STATE_TRYAGAIN = 1,
+	QR_CHECH_STATE_WAITING= 3,
+	QR_CHECH_STATE_SEND= 4,
+};
+enum QR_REC_STATE
+{
+	QR_REC_STATE_EMPTY = 0,
+	QR_REC_STATE_HEADER ,
+	QR_REC_STATE_SENDPRAM,
+	QR_REC_STATE_SENDQR,
+	QR_REC_STATE_END,
+};
+
+/* 串口命令码  */
+enum
+{
+	UART0_PARAM_DOWNLOAD  = 0x01,           //参数下载
+	UART0_HEAT_CTRL       = 0x02,           //加热控制
+	UART0_lIGHTBAND_CTRL  = 0x03,           //灯带控制
+	UART0_QRSCANNER_CTRL  = 0x04,           //二维码扫码模块控制
+	UART0_FAN_CTRL        = 0x05,           //风扇控制
+	UART0_CARD_STA        = 0x06,           //风扇控制
+	UART0_CMD_REPLY       = 0x10,           //回复命令
+};
+/* 串口2命令码  */
+enum
+{
+	UART2_CMD_RCV         = 0x00,           //命令回复
+
+};
+typedef struct
+{
+	uint8_t   heat_state;            		//串口控制加热状态
+	uint8_t   temp_stable_sta;            	//加热稳定状态
+	uint8_t   fan_state;   					//风扇状态
+	uint8_t   card_state;   				//插卡状态
+	float     SetTempVal;
+	uint32_t  PresetTempTime;
+	float     PresetTempVal;
+	
+	float    HoldTemp;       //稳定温度
+	float	TempOffset;		//温度补偿
+	uint32_t  PreHeatTime;					//上电预热时间,min
+	float     ReadyTempVal;					//就绪温度55℃
+	float     adJTarget;					//根据环境温度,修正目标温度
+}heat_ctrl_struct;
+
+extern heat_ctrl_struct g_heat_ctrl;
+
+typedef struct str_hole_info
+{
+    uint8_t    item;
+    uint8_t TtMax[2];
+    uint8_t TtMin[2];
+} str_hole_info_t;
+//str_hole_info_t hole1,hole2,hole3,hole4,hole5,hole6,hole7,hole8,hole9,hole10;
+typedef struct str_card_param_info
+{
+    char   pid[10];
+    uint8_t temp[2];
+    struct str_hole_info hole_info[10];
+} str_card_param_info_t;
+
+struct CmdMessage
+{
+    uint16_t head;
+    uint8_t seq;
+    uint8_t cmd;
+    uint16_t len;
+    char *data;
+    uint8_t checksum;
+    uint8_t tail;
+};
+
+//灯带控制参数
+struct light_band_para_t
+{
+	uint8_t		channel;
+	uint8_t		mode;
+	uint16_t	speed;
+	uint32_t	color;
+};
+
+struct str_card_param_info m_str_card_param_info;
+
+void UART02_IRQHandler(void);
+extern void debug_receive_int_handle0(void);
+extern void debug_receive_int_handle1(void);
+extern void debug_receive_int_handle2(void);
+void uart0_rcv_data_analysis(void);
+void uart1_rcv_data_analysis(void);
+void uart2_rcv_frame_analysis(void);
+void debug_receive_start0(void);
+void debug_receive_start2(void);
+void heater_state_upload(uint32_t upenv);
+void trigmode_select_sensor(void);
+void data_out_original(void);
+int parse_qrcode_info(struct str_card_param_info *info, char *qrcode_str);
+void QRparam_upload(str_card_param_info_t *p_str_card_param_info);
+int DecodeNew(struct CmdMessage *pMessage, uint8_t *pdata, const uint8_t *pInBuffer, uint32_t* pheader,uint32_t  ulast,uint32_t maxlen);
+void sendQR_inf(void);
+
+#endif /* UART_RCV_H_ */

+ 21 - 0
DriverInterface/usr_b2b_msg.h

@@ -0,0 +1,21 @@
+#ifndef _USR_B2B_MSG_
+#define _USR_B2B_MSG_
+
+
+#include "usr_protocol_type.h"
+
+
+#define combine_cmdMessage(msg,header,seqer,cmder,tailer)  {\
+	msg.head = header; \
+	msg.seq = seqer; \
+	msg.cmd = cmder; \
+	msg.tail = tailer; \
+}
+
+int DecodeNew(struct CmdMessage* pMessage, uint8_t *pdata, const uint8_t *pInBuffer, uint32_t *pheader,uint32_t  ulast,uint32_t maxlen);
+uint32_t PackDeviceNum(void);
+void send_Devinf_pc(void);
+
+
+
+#endif

+ 934 - 0
DriverInterface/usr_b2pc_msg.c

@@ -0,0 +1,934 @@
+/*
+ *  usr_b2pc_msg.c
+ *  pc同主机通信
+ *  Created on: 2023年9月18日
+ *      Author: longtengjun
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "onechip_include_header.h"
+
+
+char DeviceNum[64] = "mini7 2312230001 v1.1, ";
+extern uint16_t WriteComm0(uint8_t *data, uint16_t len);
+
+uint8_t pc_channel_recv = 0;      //接收pc的通道,0:未连接; 1:wifi; 2:串口
+uint8_t pc_channel_send = 0;      //发给pc的通道,0:未连接; 1:wifi; 2:串口
+static uint8_t pc_channel_send_backup = 0;      //发给pc的通道备份
+
+// extern float slave_temp;
+// extern uint8_t other_run_state;
+// str_error_info_t error_info = {0};    //错误信息
+
+uint8_t pc_send_wait = 0;     //数据发送等待,0可以立即发送;>0正在发送请等待
+uint8_t pc_send_cmd = 0;     //当前发送cmd
+
+// extern str_mcu_ack mcu_ack_ctrl;
+// extern uint32_t timeout_com;
+// extern uint32_t pc_link_timeout;
+// extern struct light_band_para_t light_band_para[2];
+// extern ProcessStateMachine_t psm;
+
+// extern CFG_PARAM_STRUCT g_cfg;
+// #ifdef ONECHIP_MINI_PLUS
+// extern CFG_PARAM_STRUCT g_cfg_slave;
+// #endif
+// extern float evnTemp;
+// extern  uint32_t connectTcpFlag;
+// extern uint32_t broadDevFlag;
+// extern uint16_t scan_qrcode_ropprt;
+// extern uint8_t wifi_tx_buf[WIFI_TX_BUF_SIZE];
+// extern uint16_t wifi_tx_len;
+static unsigned char seq  =0;
+
+//字节流转整数,大端模式
+uint32_t byte_to_u32(uint8_t *p, int len)
+{
+	uint32_t temp = 0;
+
+	for(int i = len-1; i >= 0; i--)
+	{
+		temp <<= 8;
+		temp |= p[i];
+	}
+
+	return temp;
+}
+uint32_t PackDeviceNum(void){		
+	int len = 0;
+	memset((uint8_t *)&DeviceNum, 0 ,sizeof(DeviceNum));
+#ifdef ONECHIP_MINI_ONE
+	my_sprintf(&DeviceNum[len],sizeof(DeviceNum), "Mini7-one,V%d.%d.%d.%d",VERSION_1,VERSION_2,VERSION_3,VERSION_4);	
+#else 
+#ifdef ONECHIP_MINI_PLUS
+	my_sprintf(&DeviceNum[len],sizeof(DeviceNum), "Mini7-plus,V%d.%d.%d.%d",VERSION_1,VERSION_2,VERSION_3,VERSION_4);	
+#else
+	my_sprintf(&DeviceNum[len],sizeof(DeviceNum), "Mini7,V%d.%d.%d.%d",VERSION_1,VERSION_2,VERSION_3,VERSION_4);		
+#endif //ONECHIP_MINI_PLUS
+#endif //ONECHIP_MINI_ONE
+	strcat(DeviceNum, ",");
+	len = strlen(DeviceNum);
+	hex_to_ascii(get_uid(), &DeviceNum[len], 12);	//uid
+	strcat(DeviceNum, ",");
+	strcat(DeviceNum, g_cfg.SN);
+	strcat(DeviceNum, " ");
+	LOG("DeviceNum:%s\n", DeviceNum);
+}
+
+
+/********************************************************************
+ *    uint16_t b2b_send_to_pc(enum pc_cmd_type cmd, char *data, uint16_t len)
+ *
+ *描述:串口发送
+ *参数:Devicenum 0-发至主机,1发至从机
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+uint16_t b2b_send_to_pc(enum pc_cmd_type cmd, char *data, uint16_t len)
+{
+    uint16_t check;
+    struct CmdMessage msg;
+
+    msg.head = 0x55aa;
+    msg.seq = cmd_frame_type_req;
+    msg.cmd = cmd;
+    msg.tail = 0x5a;
+    msg.len = len;
+
+    check = checkSum(&msg.seq, 4);
+    check += checkSum(data, len);
+    msg.checksum = check & 0xFF;
+    msg.tail = check >> 8;
+
+    WriteComm0((uint8_t*)&msg, g_uMsgCmdFrameLen);
+
+    msg.data = data;
+
+    WriteComm0(data, len);
+
+    return WriteComm0(&msg.checksum, 2);
+
+}
+
+/********************************************************************
+ *    uint16_t data_send_to_pc(enum pc_cmd_type cmd, char *data, uint16_t len)
+ *
+ *描述:发生数据到PC
+ *参数:Devicenum 0-发至主机,1发至从机
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+uint16_t union_data_send_to_pc(struct CmdMessage *pMsg)
+{
+    uint16_t check;
+    uint16_t try = 0;
+    struct CmdMessage msg;
+    int ret = 0;
+
+    msg.head = 0x55aa;
+    msg.seq = pMsg->seq;
+    msg.cmd = pMsg->cmd;
+    msg.tail = 0x5a;
+    msg.len = pMsg->len;
+
+    msg.data = pMsg->data;
+   
+     check = checkSum(&msg.seq, 4);
+     *(unsigned int*)msg.data = Devicenum;/*打包模块编号*/
+     check += checkSum(msg.data, msg.len);
+     msg.checksum = check & 0xFF;
+     msg.tail = (check >> 8);
+     if(Devicenum)
+     {
+         /*从模块 通过IIC上报,稍后跟新*/
+     }
+     else
+     {
+         WriteComm0((uint8_t*)&msg, g_uMsgCmdFrameLen);		 
+         WriteComm0(msg.data, msg.len);
+         return WriteComm0(&msg.checksum, 2);
+     }   
+}
+
+
+/********************************************************************
+ *    uint16_t data_send_to_pc(enum pc_cmd_type cmd, char *data, uint16_t len)
+ *
+ *描述:发生数据到PC
+ *参数:Devicenum 0-发至主机,1发至从机
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+uint16_t data_send_to_pc(enum pc_cmd_type cmd, char *data, uint16_t len)
+{
+    uint16_t check;
+    struct CmdMessage msg;	
+    int ret = 0;
+
+    msg.head = 0x55aa;
+    msg.seq = cmd_frame_type_req;
+    msg.cmd = cmd;
+    msg.tail = 0x5a;
+    msg.len = len;
+    msg.data = data;
+	if((len+8) > WIFI_TX_BUF_SIZE){
+		 LOG_E("send_to_pc :%x  len:%d error ", cmd, len);
+		 return  -1;
+
+	}
+	if(pc_channel_send == 1 && !connectTcpFlag && cmd != PC_CMD_SETIP){
+				/*UDP 模式,不响应设置IP以为指令*/
+				return -1;
+	}			
+	if((pc_channel_send == 1 && PC_CMD_DATASCOPE == cmd)|| /*网口不上报数据*/
+		(pc_channel_send != 1 && PC_CMD_SETIP == cmd))     /*串口不广播UDP*/{
+		return  -1;
+	}	
+    switch(cmd)
+    {
+        case PC_CMD_QRCODE:
+        case PC_CMD_DATA_UPLOAD:
+        case PC_CMD_REPORT_RESULT:
+			seq++;
+			if(0xff == seq){
+				seq =1;
+			}
+            msg.seq = seq;
+            break;
+        default:    //应答
+            break;
+    }
+	check = checkSum(&msg.seq, 4);
+	check += checkSum(data, len);
+	msg.checksum = check & 0xFF;
+	msg.tail = (check >> 8);	
+	if(check_to_pc_busy()){		
+		memcpy(&wifi_tx_buf[0], (uint8_t*)&msg, g_uMsgCmdFrameLen);
+		memcpy(&wifi_tx_buf[g_uMsgCmdFrameLen], data, len);
+		memcpy(&wifi_tx_buf[g_uMsgCmdFrameLen+len],  (uint8_t*)&check, 2);
+		wifi_tx_len = g_uMsgCmdFrameLen+len+2;	
+	}else{
+		return -1;
+	}	
+	if((pc_channel_send == 1 || cmd == PC_CMD_SETIP ) && PC_CMD_SETWIFI != cmd)
+	{			
+		return WIFI_ReSend();
+	}
+	else
+	{	
+		WriteComm0(wifi_tx_buf, wifi_tx_len);			
+		memset(wifi_tx_buf, 0, sizeof(wifi_tx_buf));
+	}
+}
+
+unsigned int check_to_pc_busy(void){
+	/*判断是否可以发送,缓冲区为空或者索引为0*/
+	struct CmdMessage *pMessage = (struct CmdMessage *)wifi_tx_buf;
+	if(pMessage->seq == 0 || pMessage->len == 0){
+		return 1;
+	}
+	return 0;
+	
+}
+
+///********************************************************************
+// *    void data_resend_to_pc(void)
+// *
+// *描述:判断缓冲区内容,是否需要重发
+// *参数:无
+// *返回:无
+// *其他:无
+// *--------------------------------------------------------------------
+// *记录:
+// ********************************************************************/
+void pc_resend_del(uint8_t seq){
+	struct CmdMessage *pMessage = (struct CmdMessage *)wifi_tx_buf;
+	if(pMessage->seq == seq){
+		wifi_tx_len = 0;
+		memset(wifi_tx_buf, 0, sizeof(wifi_tx_buf));
+	}
+}
+
+/********************************************************************
+ *    uint16_t send_Devinf_pc(void)
+ *
+ *描述:发送设备信息到主机,便于主机下法TCP信息
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+void send_Devinf_pc(void)
+{
+
+    uint16_t len = 0;
+	len =  strlen(DeviceNum);
+	data_send_to_pc(PC_CMD_SETIP,DeviceNum,len);
+
+}
+
+#ifdef ONECHIP_MINI_ONE
+int send_temp_parm(uint8_t cmd, uint8_t *parg)
+{
+	b2b_send_device(B2B_CMD_THEROM_GOAL_ONCE, parg,  16, !Devicenum);
+	return 1;
+		
+	
+}
+int setTemp_response(struct CmdMessage *pMsg, uint8_t result)
+{
+//    char result = 1;
+    data_send_to_pc(PC_CMD_SETRUNTEMP, &result, 1);
+}
+#endif
+
+/********************************************************************
+ * int set_IP_action(uint8_t cmd, uint8_t *parg)
+ *
+ *描述:设置IP
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+int set_IP_action(uint8_t cmd, uint8_t *parg)
+{
+	if(connectTcpFlag == 0){
+		/*TCP 链接状态下,不跟新IP地址*/
+		memset(sysinf.TCP_IP_Addr,0,sizeof(sysinf.TCP_IP_Addr));
+		memset(TCP_IP_PORT,0,sizeof(TCP_IP_PORT));
+		unsigned int data_len = strlen(parg);
+		unsigned int i=0;
+		if(parg[i]<'0' || parg[i]>'9'){
+			 return 0;
+		}
+		for(;i<data_len;i++){
+			 if(parg[i] != ':'){
+				 sysinf.TCP_IP_Addr[i] = parg[i];
+			 }else{
+				 break;
+			 }
+		}
+		i++;
+		unsigned int j =0;
+		if(parg[i]<'0' || parg[i]>'9'){
+			 return 0;
+		}
+		for(;i<data_len;i++){
+			 if(parg[i] != ':'){
+				 sysinf.TCP_IP_PORT[j++] = parg[i];
+			 }else{
+				 break;
+			 }
+		}
+		if(sysinf.TCP_IP_Addr[0]){		
+			connectTcpFlag = 1; 
+			state_controlword = Hand_Shake_cmd;
+		}
+		
+		WIFI_set_CloseConnect();
+	}
+
+
+	return 0;
+
+}
+
+
+void set_pc_chanel_recv(uint8_t channel)
+{
+    pc_channel_recv = channel;
+}
+
+void set_pc_chanel_temp()
+{
+    if(pc_channel_recv == 2)
+        timeout_com = 0;
+    
+    pc_channel_send_backup = pc_channel_send;
+    pc_channel_send = pc_channel_recv;
+}
+
+void reload_pc_chanel()
+{
+    if(pc_channel_recv > pc_channel_send_backup)   //串口优先
+    {
+        pc_channel_send_backup = pc_channel_recv;
+    }
+
+    pc_channel_send = pc_channel_send_backup;
+}
+
+void set_pc_chanel(uint8_t channel)
+{
+    pc_channel_send_backup = channel;
+    pc_channel_send = channel;
+}
+
+
+/********************************************************************
+ * int handshake_action(uint8_t cmd, uint8_t *parg)
+ *
+ *描述:握手命令处理
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+int handshake_action(uint8_t cmd, uint8_t *parg)
+{
+    if(state_controlword < Hand_Shake_cmd)      //上位机会间隔发送握手,保活
+    {
+        state_controlword = Hand_Shake_cmd;
+    }
+
+    return 0;
+}
+
+void char_replace(uint8_t *str, int size, uint8_t ch, uint8_t replace)
+{
+    for(int i = 0; i < size; i++)
+    {
+        if(str[i] == ch)
+            str[i] = replace;
+    }
+}
+
+
+/********************************************************************
+ * int wifi_action(uint8_t cmd, uint8_t *parg)
+ *
+ *描述:设置wifi命令处理
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+int wifi_action(uint8_t cmd, uint8_t *parg)
+{
+//    char_replace(parg, 64, 0xAA, 0);
+//    char_replace(parg, 64, 0xAD, ' ');
+    wifiCfg_set_new_wifi_param(parg, parg + WIFI_AP_NAME_MAX_LEN);
+
+    // wifi用户名和密码设置
+    WIFI_set_ssid();
+
+    return 1;
+}
+int setState_action(uint8_t cmd, uint8_t *parg)
+{
+	uint8_t block = *parg++;
+	uint8_t nextState = *parg;
+	if(block==0){
+		if(SYS_STATE_WORKEND == nextState){
+			psm.state = SW_move_card;
+		}
+	}else{
+		/*下发命令,改变从模块状态*/
+		b2b_send_device(B2B_CMD_STATE_SET, &nextState, sizeof(nextState), 1);
+	}
+	
+
+
+    return 1;
+}
+
+
+
+/********************************************************************
+ * int wifi_action(uint8_t cmd, uint8_t *parg)
+ *
+ *描述:设置wifi命令处理
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+int SN_action(uint8_t cmd, uint8_t *parg)
+{
+    
+	parg[15] = 0;
+	strcpy(g_cfg.SN, parg);	
+	PackDeviceNum();
+	return cfg_save_cfg_param();
+}
+
+
+/********************************************************************
+ * int seq_selftest_action(uint8_t cmd, uint8_t *parg)
+ *
+ *描述:设备自检处理
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+int seq_selftest_action(uint8_t cmd, uint8_t *parg)
+{
+    return 0;
+}
+
+/********************************************************************
+ * int confirm_result_action(uint8_t cmd, uint8_t *parg)
+ *
+ *描述:设备收到pc的结果响应
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+int confirm_result_action(uint8_t cmd, uint8_t *parg)
+{
+    if(Devicenum)
+    {
+        return 0;
+    }
+
+    if(0 == memcmp(parg,card_param_info.pid, 10 ))
+        state_controlword = result_move_card;
+
+    return 0;
+}
+
+/********************************************************************
+ * int default_pc_response(struct CmdMessage *pMsg, uint8_t result)
+ *
+ *描述:默认回应PC
+ *参数:无
+ *返回:成功->0 失败->-1
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+int default_pc_response(struct CmdMessage *pMsg, uint8_t result)
+{
+    if(Devicenum)
+    {
+        return 0;
+    }
+
+	return data_send_to_pc(pMsg->cmd, &result, 1);
+}
+
+/********************************************************************
+ * int handshake_response(struct CmdMessage *pMsg, uint8_t result)
+ *
+ *描述:握手回应
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+int handshake_response(struct CmdMessage *pMsg, uint8_t result)
+{
+	int len = 0;
+//	PackDeviceNum();
+	len = strlen(DeviceNum);
+	return data_send_to_pc(pMsg->cmd, (uint8_t*)DeviceNum, len);
+}
+
+	
+int AskState_response(struct CmdMessage *pMsg, uint8_t result)
+{
+	ANS_State();
+}
+
+int set_response(struct CmdMessage *pMsg, uint8_t result)
+{
+//    char wifi_result = 1;
+//    data_send_to_pc(PC_CMD_SETWIFI, &wifi_result, 1);
+}
+
+int setState_response(struct CmdMessage *pMsg, uint8_t result)
+{
+//    char result = 1;
+    data_send_to_pc(PC_CMD_SETSTATE, &result, 1);
+}
+
+
+int ans_response(struct CmdMessage *pMsg, uint8_t result)
+{	
+	/*清空需要上位机应答的消息*/
+	switch(pMsg->cmd){
+		case PC_CMD_REPORT_REEOR:
+//			unsigned char *data = pMsg->data;
+//			if(*data == Devicenum){
+//			}
+			
+			clean_error_update();
+
+			break;
+		case PC_CMD_UPDATESTATE:
+    		clean_state_update();
+			break;
+		case PC_CMD_QRCODE:
+    		clean_QR_update();
+			break;
+		case PC_CMD_DATA_UPLOAD:{
+			unsigned char *data = pMsg->data;			
+			unsigned int recdex = 0xfffffff;
+//			unsigned char result = *data;
+//			unsigned char part = *(data+1);
+			if( pMsg->len == 6){
+				recdex = *(data+5);
+			    recdex = recdex<<8;
+				recdex += *(data+4);
+			    recdex = recdex<<8;
+				recdex += *(data+3);
+			    recdex = recdex<<8;
+				recdex += *(data+2);
+			}else{
+				if(seq == pMsg->seq){
+					recdex = 0;
+				}
+			}
+			updateData_next(recdex,data);
+	    	
+		}
+			break;	
+		case PC_CMD_REPORT_RESULT:{
+			
+			unsigned char *data = pMsg->data;	
+//			unsigned char result = *data;
+//			unsigned char part = *(data+1);	
+			clean_reult_next(data);
+//			if(result){		
+//				/*消息成功,进行跟新*/		
+//				clean_reult_next(part);
+//			}
+		}
+			break;		
+	}
+}
+
+int confirm_qrcode_action(uint8_t cmd, uint8_t *parg)
+{
+    //PC返回成功,才认为扫码成功
+	scan_qrcode_ropprt = 1;
+    if(*parg == 1)
+    {
+        if(0 == mem_value(&card_param_info_temp, 0 , sizeof(str_card_param_info_t)))
+        {
+//			scan_qrcode_ropprt = 1;
+			LOG_D("rec no card \n\r:");
+            return -1;
+        }
+        if((psm.state == SW_Scan_Qrcode || psm.state == SW_Chip_Id  ))   //主机空闲,给自己
+        {
+            scan_qrcode_done = 1;
+            memcpy(&card_param_info, &card_param_info_temp, sizeof(str_card_param_info_t));
+        }
+        else
+        {
+            //比较是否跟主模块相同
+            if(0 == memcmp(&card_param_info, &card_param_info_temp, sizeof(str_card_param_info_t)))
+            {
+                return 0;
+            }
+            //主机不空,下发给从机
+            card_param_info_temp.envtemp = evnTemp;
+            b2b_send_device(B2B_CMD_REQ_QRCODE, (char *)&card_param_info_temp, sizeof(str_card_param_info_t), 1);
+        }
+		LOG_D("rec start\n\r:");
+    	return 0;
+		
+    }	
+	LOG_D("rec no macth\n\r:");
+    return -1;
+}
+
+
+int confirm_error_action(uint8_t cmd, uint8_t *parg)
+{
+    return 0;
+}
+
+
+int confirm_data_action(uint8_t cmd, uint8_t *parg)
+{
+    return 0;
+}
+
+const struct PCActionPack mPCActionPack[] =
+    {
+        {
+            .cmd = PC_CMD_HANDSHAKE,
+            .action = handshake_action,
+            .response = handshake_response,
+            .datalen = 0,
+        },
+        {
+            .cmd = PC_CMD_SETWIFI,
+            .action = wifi_action,
+            .response = set_response,
+            .datalen = 0xff,
+        },
+        {
+            .cmd = PC_CMD_SETSN,
+            .action = SN_action,
+            .response = handshake_response,
+            .datalen = 7,
+        },
+        {
+            .cmd = PC_CMD_QRCODE,
+            .action = confirm_qrcode_action,
+            .response = ans_response,
+            .datalen = 0xff,
+        },
+        {
+            .cmd = PC_CMD_SNANDCARD,
+            .action = confirm_error_action,
+            .datalen = 1,
+        },
+        {
+            .cmd = PC_CMD_REPORT_RESULT,
+            .action = confirm_result_action,
+            .response = ans_response,
+            .datalen = 0xff,
+        },
+        {
+            .cmd = PC_CMD_REPORT_REEOR,
+            .action = confirm_error_action,
+            .response = ans_response,
+            .datalen = 0xff,
+        },
+        {
+            .cmd = PC_CMD_DATA_UPLOAD,
+            .action = confirm_data_action,
+            .response = ans_response,
+            .datalen = 0xff,
+        },
+        {
+            .cmd = PC_CMD_SETIP,
+            .action = set_IP_action,
+            .response = NULL,
+            .datalen = 0xff,
+        },
+        {
+            .cmd = PC_CMD_UPDATESTATE,
+            .action = confirm_data_action,
+            .response = ans_response,
+            .datalen = 0xff,
+        },
+        {
+            .cmd = PC_CMD_ASKSTATE,
+            .action = confirm_data_action,
+            .response = AskState_response,
+            .datalen = 0xff,
+        },
+        {
+            .cmd = PC_CMD_SETSTATE,
+            .action = setState_action,
+            .response = setState_response,
+            .datalen = 0xff,
+        },
+#ifdef ONECHIP_MINI_ONE
+        {
+            .cmd = PC_CMD_SETRUNTEMP,
+            .action = send_temp_parm,
+            .response = setTemp_response,
+            .datalen = 0xff,
+        },
+#endif
+};
+			
+
+
+/********************************************************************
+ * int handshake_action(uint8_t cmd, uint8_t *parg)
+ *
+ *描述:握手命令处理
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+int con_heat_action(uint8_t cmd, uint8_t *parg )
+{
+//    CmdMessage *pMsg = (CmdMessageDef *)parg;
+    struct CmdMessage *pMsg = (struct CmdMessage *)parg;;
+    miniConfigPram *pram = (miniConfigPram *)pMsg->data;
+	if(pram->partID == Devicenum){
+		if( pMsg->cmd == UINON_CMD_MOTORMOVE ){
+			/*直接透传给从muc处理*/
+			g_cfg.timeinner =  *(float *)(pMsg->data+4) * 100;
+			g_cfg.swingspeed =  *(float *)(pMsg->data+8);
+			g_cfg.swingtime =  *(float *)(pMsg->data+12) * 100;
+			g_cfg.swingtimeRight =  *(float *)(pMsg->data+16) * 100;
+			g_cfg.swingtimePause =  *(float *)(pMsg->data+20) * 100;	
+			if((1 == *(int *)(pMsg->data+pMsg->len - 4))){
+				cfg_save_cfg_param();	
+				Motor_Init();
+			}else{				
+				Motor_mix(g_cfg.timeinner,g_cfg.swingspeed,g_cfg.swingtime,g_cfg.swingtimeRight,g_cfg.swingtimePause);
+			}		
+		    data_send_to_pc(pMsg->cmd, pMsg->data,  pMsg->len);
+		}
+		if( pMsg->cmd == UINON_CMD_MOTORTRETURN ){
+			/*直接透传给从muc处理*/
+			uint32_t time = *(float *)(pMsg->data+4) * 10;
+			uint32_t speed =  *(float *)(pMsg->data+8) ;
+		    data_send_to_pc(pMsg->cmd, pMsg->data,  pMsg->len);
+//			sw_st = FIND_GAPNUM;
+//			stateFistin = 1;
+		}
+#ifdef ONECHIP_MINI_ONE
+		if( pMsg->cmd == UINON_CMD_TEMP_ADJ || 
+			pMsg->cmd == UINON_CMD_TEMP_PID ||
+			pMsg->cmd == UINON_CMD_TEMP_ADJ_GET	|| 
+			pMsg->cmd == UINON_CMD_TEMP_PID_GET	|| 
+			pMsg->cmd == UINON_CMD_TEMP_START	|| 
+			pMsg->cmd == UINON_CMD_TEMP_STOP){
+			/*直接透传给从muc处理*/
+			sendMsgtoSlaveMcu(pMsg);
+		}
+#endif
+	}else{
+#ifdef ONECHIP_MINI_ONE
+		switch(pMsg->cmd){
+			case UINON_CMD_THEROM_GOAL:{
+				b2b_send_device(B2B_CMD_THEROM_GOAL, pMsg->data,  pMsg->len, !Devicenum);
+			}break;
+			
+			case UINON_CMD_THEROM_OFFSET:{
+				b2b_send_device(B2B_CMD_THEROM_OFFSET, pMsg->data,  pMsg->len, !Devicenum);
+			}break;
+			
+			case UINON_CMD_THEROM_GET:{
+				b2b_send_device(B2B_CMD_GETTHEROMPRAM_ACK, pMsg->data,  pMsg->len, !Devicenum);
+			}break;
+		}		
+		/*发送给从模块 稍后实现*/
+#endif
+	}
+    return 0;
+}
+const struct PCActionPack mUnionActionPack[] =
+    {
+        {
+            .cmd = UINON_CMD_MOTORMOVE,
+            .action = con_heat_action,
+        },
+        {
+            .cmd = UINON_CMD_MOTORTRETURN,
+            .action = con_heat_action,
+        },
+#ifdef ONECHIP_MINI_ONE
+        {
+            .cmd = UINON_CMD_TEMP_ADJ,
+            .action = con_heat_action,
+        },
+        {
+            .cmd = UINON_CMD_TEMP_PID,
+            .action = con_heat_action,
+        },
+        {
+            .cmd = UINON_CMD_TEMP_ADJ_GET,
+            .action = con_heat_action,
+        },
+        {
+            .cmd = UINON_CMD_TEMP_PID_GET,
+            .action = con_heat_action,
+        },
+        {
+            .cmd = UINON_CMD_TEMP_START,
+            .action = con_heat_action,
+        },
+        {
+            .cmd = UINON_CMD_TEMP_STOP,
+            .action = con_heat_action,
+        },
+        {
+            .cmd = UINON_CMD_THEROM_GOAL,
+            .action = con_heat_action,
+        },
+        {
+            .cmd = UINON_CMD_THEROM_OFFSET,
+            .action = con_heat_action,
+        },
+        {
+            .cmd = UINON_CMD_THEROM_GET,
+            .action = con_heat_action,
+        },
+        {
+            .cmd = UINON_CMD_TEMP_DEBUG,
+            .response = handshake_response,
+        },
+				
+#endif
+
+};
+
+ 
+
+void deal_mUnion_cmd(struct CmdMessage *pMsg)
+{
+	for (uint8_t i = 0; i < sizeof(mUnionActionPack)/sizeof(mUnionActionPack[0]); i++)
+	{
+		if (mUnionActionPack[i].cmd == pMsg->cmd ) 
+		{			
+			uint8_t ret = mUnionActionPack[i].action( pMsg->cmd,(uint8_t *)pMsg);
+			if (mUnionActionPack[i].response)
+			{
+				mUnionActionPack[i].response(pMsg, ret);
+			}
+			break;
+		}
+	}
+}
+
+
+/********************************************************************
+ * void query_pc_cmd(struct CmdMessage *pMsg)
+ *
+ *描述:处理PC命令
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+void query_pc_cmd(struct CmdMessage *pMsg)
+{
+    for (uint8_t i = 0; i < sizeof(mPCActionPack)/sizeof(mPCActionPack[0]); i++)
+    {
+        if (mPCActionPack[i].cmd == pMsg->cmd && (mPCActionPack[i].datalen == pMsg->len || mPCActionPack[i].datalen == 0xff)) //防止接收到其他设备的数据帧
+        {
+            if(pc_send_cmd == mPCActionPack[i].cmd)
+                pc_send_wait = 0;
+            if(mPCActionPack[i].cmd != 1)
+            {
+            	pc_resend_del(pMsg->seq);
+                LOG_I("\n<-- pc cmd %x %d \n", pMsg->cmd, pMsg->seq);
+            }
+			pMsg->data[pMsg->len] = 0;
+            uint8_t ret = mPCActionPack[i].action(mPCActionPack[i].cmd, pMsg->data);
+            if (mPCActionPack[i].response)
+            {
+                mPCActionPack[i].response(pMsg, ret);
+            }
+			if(!(pc_channel_recv == 1 && !connectTcpFlag)){				
+    			pc_link_timeout = 0;    //确保TCP通信上在变灯
+			}
+            break;
+        }
+    }
+}
+

+ 678 - 0
DriverInterface/usr_motor.c

@@ -0,0 +1,678 @@
+
+
+/*
+ * usr_gpio.c
+ *
+ *	Created on: 2022年4月11日
+ *		Author: amos
+ */
+#include "usr_motor.h"
+
+#define BOUNCE_THRESHOLD 2 // 800ms长按阈值
+#define LONG_PRESS_THRESHOLD 80 // 800ms长按阈值
+#define CONTINUOUS_INTERVAL 40 // 300ms内算连续按键
+#define USER_STOP_TIMER 200 // 长按2s不放,停止混匀
+
+#define FIND_OPTIC_SPEED 50 // 找光开速度
+#define FIND_OPTIC_BACK_SPEED 43 // 过光开回退速度
+#define FIND_OPTIC_BACK_GAP 2 // 过光开回退速度
+
+#define MAX_RUNCNT 4 // 找光开速度
+
+typedef enum swing_state {
+  SWING_IDLE,
+  SWING_START,
+  SWING_LOOP,
+  SWING_END,
+  LOOP_START,
+  LOOP_END,
+  EMERGENCY_END,
+  FIND_GAPNUM,
+  FIND_HOMEGAP,
+  SWING_ERR,
+} swing_state_def;
+
+typedef enum {
+  KEY_IDLE,     // 空闲状态
+  KEY_SHORT,    // 短按
+  KEY_CONTINUE, // 连续按
+  KEY_LONG,     // 空闲状态,长按抬起,复位设备
+  KEY_END       //混匀状态,长按不释放,停止混匀
+} KeyState;
+
+volatile
+
+    struct {
+  KeyState state;
+  uint32_t press_tick;        // 按下时刻(10ms单位)
+  uint32_t release_tick;      // 当前释放时刻
+  uint32_t last_release_tick; // 新增:上一次释放时刻
+  uint32_t click_count;       // 连续按键计数
+  uint32_t last_level;
+  uint32_t key_valid_flag; // 连续按键标志
+} key_ctrl;
+
+swing_state_def sw_st, last_st;
+unsigned int keyState = 0;
+unsigned int MotorOptState = 0;
+
+extern uint32_t conter100ms;
+uint32_t conter10ms;
+
+int32_t runLoopTime = 600;
+int32_t runLoopSpeed = 80;
+
+uint32_t curtimeinner;
+uint32_t timeinner = 6000;
+uint32_t swingtime = 100;
+uint32_t swingtimeRight = 40;
+uint32_t swingtimePause = 100;
+int32_t backOptFlag = 0;
+int32_t startLoopConter = 0;
+int32_t swingspeed = 60;
+int32_t stateFistin;
+int32_t REVORFWD;
+//extern uint8_t error_set(uint8_t error);
+uint32_t timerBuf[16];
+uint32_t timerconter;
+uint32_t intoGap;
+uint32_t OutGap;
+uint32_t lastGap;
+uint32_t judgeGap;
+uint32_t curGap;
+uint32_t checkPWM;
+MOTOR_DIR findhomedir;
+uint32_t intoGapFlag;
+uint32_t resetFromSwingFlag;
+
+uint32_t swingLoopHigtTime = 0;
+uint32_t swingHigStopflage = 0;
+uint32_t swingStoptime = 0;
+uint32_t startFindHometime = 0;
+uint32_t findHome = 0;
+
+
+
+extern void DelayMS(uint32_t ms);
+
+
+//冒泡法排序,排序结果有小到大
+void Bubble_Sort(unsigned int *Array,unsigned int n)
+{ 
+	unsigned char i, j;
+	unsigned int temp;
+	for(i=0;i<n-1;i++)
+	{
+		for(j=i+1;j<n;j++)
+		{
+			if(Array[i] > Array[j])
+			{
+				temp     = Array[i];
+				Array[i] = Array[j];
+				Array[j] = temp;
+			}
+		}
+	}
+ }
+
+
+uint32_t Read_Motor(void) {
+  return (HAL_GPIO_ReadPin(MINI7_V2_REF_SW2_GPIO_Port,MINI7_V2_REF_SW2_Pin)) ? 1 : 0; // 检查PF5引脚值
+}
+
+
+uint32_t Read_key(void) {
+  return (HAL_GPIO_ReadPin(MINI7_V2_KEY_GPIO_Port,MINI7_V2_KEY_Pin)) ? 1 : 0; // 检查PF5引脚值
+}
+
+
+uint32_t TIMER_GetCounter(void) {
+  return htim3.Instance->CNT;
+}
+
+/**
+ * @brief	   SetMotorPwm
+ *
+ * @param		value between 0-100
+ *
+ * @return		None
+ *
+ * @details
+ */
+void SetMotorPwm(int dir, int32_t value) {
+  /* Start PWM counter */
+  unsigned int DutyCycle;
+  if (value > 100) {
+    value = 100;
+  } else if (value < 0) {
+    value = 0;
+    DutyCycle = 0;
+  } 
+	DutyCycle = value*10;
+
+  if (dir) {    
+		__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 0);
+		__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_3, DutyCycle);
+  } else {
+		__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, DutyCycle);
+		__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_3, 0);
+  }
+}
+
+/**
+ * @brief		GPIO PA/PB/PG/PH IRQ
+ *
+ * @param		None
+ *
+ * @return		None
+ *
+ * @details 	The PA/PB/PG/PH default IRQ, declared in startup_M031Series.s.
+ */
+void KYE_IRQHandler(void) {
+  volatile uint32_t temp;
+	conter10ms = sysinf.conter10ms;
+
+  /* To check if PB.2 interrupt occurred */
+   {
+    uint8_t curr_level = Read_key();
+
+    if (curr_level != key_ctrl.last_level) {
+      key_ctrl.last_level = curr_level;
+
+      if (curr_level == 0) { // 下降沿(按下)
+        key_ctrl.press_tick = conter10ms;
+        if (key_ctrl.state == KEY_SHORT) {
+          key_ctrl.last_release_tick =
+              key_ctrl.release_tick; // 更新上次释放时间
+        } else {
+          key_ctrl.last_release_tick = 0;
+        }
+
+      } else { // 上升沿(释放)
+        key_ctrl.release_tick = conter10ms;
+        uint32_t press_duration = 0;
+				if(key_ctrl.press_tick){
+					press_duration = key_ctrl.release_tick - key_ctrl.press_tick;
+				}
+		
+        key_ctrl.press_tick = 0;
+        // 长按判定
+        if (press_duration <= BOUNCE_THRESHOLD) {
+          key_ctrl.state = KEY_IDLE;
+          key_ctrl.last_release_tick = 0;
+        } else if (press_duration >= LONG_PRESS_THRESHOLD) {
+          key_ctrl.state = KEY_LONG;
+          key_ctrl.last_release_tick = 0; // 更新上次释放时间
+          key_ctrl.key_valid_flag = 1;
+        }
+
+        // 短按判定
+        else {
+          key_ctrl.click_count = 1;
+          key_ctrl.state = KEY_SHORT;
+          if ((key_ctrl.release_tick - key_ctrl.last_release_tick) <=
+              CONTINUOUS_INTERVAL) {
+            key_ctrl.key_valid_flag = 1;
+            key_ctrl.click_count++;
+            key_ctrl.state = KEY_CONTINUE;
+          }
+        }
+      }
+    }
+  }
+}
+
+void check_keyShortValid(void) {
+  volatile uint32_t temp;
+
+  /* To check if PB.2 interrupt occurred */
+  if (key_ctrl.state == KEY_SHORT) {
+    if ((conter10ms - key_ctrl.release_tick) > CONTINUOUS_INTERVAL * 2) {
+      key_ctrl.key_valid_flag = 1;
+    }
+  }
+  if (sw_st != SWING_IDLE && key_ctrl.press_tick) {
+    if ((conter10ms - key_ctrl.press_tick) > USER_STOP_TIMER) {
+      key_ctrl.state = KEY_END;
+      key_ctrl.key_valid_flag = 1;
+	  key_ctrl.press_tick = 0;
+    }
+  }
+}
+
+/**
+ * @brief		GPIO PC/PD/PE/PF IRQ
+ *
+ * @param		None
+ *
+ * @return		None
+ *
+ * @details 	The PC/PD/PE/PF default IRQ, declared in startup_M031Series.s.
+ */
+void OPTO_IRQHandler(void) {
+  //
+  // volatile unsigned int temp;
+
+  /* To check if PB.2 interrupt occurred */
+  {
+	conter10ms = sysinf.conter10ms;
+	switch(sw_st){
+		case FIND_GAPNUM:{
+			if (Read_Motor()){
+					intoGap = TIMER_GetCounter();		
+				}else{
+					OutGap = TIMER_GetCounter();
+					if((conter10ms - startFindHometime) > MOTOR_LOOP_TIM){
+						if(MAX_RUNCNT > timerconter){			
+							if(OutGap > intoGap){
+								timerBuf[timerconter++] = OutGap - intoGap;
+							}else{
+								timerBuf[timerconter++] = OutGap + 0x10000 - intoGap;
+							}
+							if(MAX_RUNCNT == timerconter){
+								Bubble_Sort(timerBuf,MAX_RUNCNT);
+								judgeGap = 0;
+								if(timerBuf[0]*1.25<timerBuf[1]){
+									judgeGap = timerBuf[0]+timerBuf[0];
+								}else{
+									judgeGap = timerBuf[1]+timerBuf[0];
+								}
+	//							for(unsigned int i =0;i<(MAX_RUNCNT/2);i++){
+	//								judgeGap += timerBuf[i];
+	//							}
+								judgeGap =judgeGap*0.625;
+								timerBuf[timerconter++] = judgeGap ;
+								/*判决门限为最低两个值均值的1.5倍*/
+							}
+						}else{
+							if(OutGap > intoGap){
+								curGap = OutGap - intoGap;
+							}else{
+								curGap = OutGap + 0x10000 - intoGap;
+							}
+							timerBuf[timerconter++] = curGap ;							
+							if(curGap > judgeGap){						
+							   sw_st = FIND_HOMEGAP;	
+							   SetMotorPwm(MOTOR_REV, 0);
+							   SetMotorPwm(MOTOR_FWD, 0);	
+							   stateFistin = 1;
+							   checkPWM = checkPWM*0.8; /*降速便于复位*/		
+							   findhomedir = !findhomedir;
+							}
+							if(timerconter==sizeof(timerBuf)){
+							   SetMotorPwm(MOTOR_REV, 0);
+							   SetMotorPwm(MOTOR_FWD, 0);	
+							   timerconter = 0;
+							}
+						}
+
+					}
+					
+				}
+		}
+		break;
+		case FIND_HOMEGAP:{
+		/*找远点阶段,光开亮停止*/
+		if (Read_Motor()){			
+			SetMotorPwm(MOTOR_REV, 0);
+			SetMotorPwm(MOTOR_FWD, 0);	
+		    intoGapFlag = 1;
+			intoGap = TIMER_GetCounter();
+			}
+		}
+		break;
+		case SWING_LOOP:{
+		/*找远点阶段,光开亮停止*/		
+		if(startLoopConter > 0){
+			startLoopConter --;
+		}else{
+			if (Read_Motor()){			
+				SetMotorPwm(MOTOR_REV, 0);
+				SetMotorPwm(MOTOR_FWD, 0);	
+				intoGapFlag = 1;
+				intoGap = TIMER_GetCounter();
+			}
+		}
+		}break;
+		default:{	
+				SetMotorPwm(MOTOR_REV, 0);
+				SetMotorPwm(MOTOR_FWD, 0);	
+//			  sw_st = FIND_GAPNUM;
+//		      stateFistin = 1;	  
+		}break;	
+		
+	}
+	  
+  }
+}
+
+
+
+/**
+ * @brief	   Motor_Init
+ *
+ * @param		init key and optic input
+ *
+ * @return		None
+ *
+ * @details
+ */
+void Motor_Init()
+
+{ /* Configure PB.2 as Input mode and enable interrupt by
+                                                   rising edge trigger */
+ 
+
+//  sw_st = SWING_END;
+  key_ctrl.last_level = 1;
+/*
+  timeinner = g_cfg.timeinner;
+  swingspeed = g_cfg.swingspeed;
+	swingtime =g_cfg.swingtime;
+	swingtimeRight =g_cfg.swingtimeRight;
+	swingtimePause =g_cfg.swingtimePause;
+	runLoopTime = g_cfg.runLoopTime;
+	runLoopSpeed =g_cfg.runLoopSpeed;
+*/
+  
+}
+
+/**
+ * @brief	   Motor_mix
+ *
+ * @param		init key and optic input
+ *
+ * @return		0正常,1没离开光开,2,没回到光开
+ *
+ * @details    设置夹爪转动参数。
+ */
+uint32_t Motor_mix(uint32_t time, uint32_t speed, uint32_t swing,
+                   uint32_t timeRight, uint32_t timePause) {
+
+  timeinner = time;
+  swingtime = swing;
+  swingspeed = speed;
+  swingtimeRight = timeRight;
+  swingtimePause = timePause;
+//  timeinner = time - time % (swing + timeRight);
+//  curtimeinner = timeinner;
+  if (speed == 0) {
+    swingspeed = MOTOR_CHECK_SPEED;
+  }
+  
+  curtimeinner = sysinf.conter10ms;
+
+  sw_st = SWING_LOOP;
+  stateFistin = 1;
+	return 0;
+}
+
+/**
+ * @brief	  Motor_deal_key
+ *
+ * @param	   按键处理,短按,左右摇;连续点击,转圈摇;长按,复位;
+ *
+ * @return	   0正常,1没离开光开,2,没回到光开
+ *
+ * @details	  夹爪根据。
+ */
+uint32_t Motor_deal_key(swing_state_def st, KeyState key) {
+  if (st == SWING_IDLE) {
+    switch (key) {
+    case KEY_SHORT:
+      curtimeinner = conter10ms;
+      sw_st = SWING_LOOP;
+	  startLoopConter = 2;
+      stateFistin = 1;	  		
+	  backOptFlag = 1;
+	  findhomedir = MOTOR_REV;
+      break;
+//    case KEY_CONTINUE:
+//      curtimeinner = conter10ms;
+//      sw_st = LOOP_START;
+//      stateFistin = 1;
+//      break;
+    case KEY_LONG:
+      curtimeinner = conter10ms;
+	  sw_st = FIND_GAPNUM;
+	  stateFistin = 1;
+      break;
+    default:
+      break;
+    }
+
+  } 
+if (key == KEY_LONG || key == KEY_END ) {
+	  sw_st = FIND_GAPNUM;
+      stateFistin = 1;	  
+	  resetFromSwingFlag = 0;
+   }
+	return 0;
+}
+
+/**
+ * @brief	   Motor_mix_work
+ *
+ * @param		init key and optic input
+ *
+ * @return		0正常,1没离开光开,2,没回到光开
+ *
+ * @details    夹爪根据。
+ */
+uint32_t Motor_mix_work(void) {
+  static uint32_t last10ms;
+  static uint32_t firstINGap;
+  static uint32_t powerOnFlag = 1;
+  check_keyShortValid();
+  if(powerOnFlag){
+	powerOnFlag = 0;
+//	Motor_Check(0);  
+	resetFromSwingFlag = 0;
+	sw_st = FIND_GAPNUM;
+	stateFistin = 1;
+  }
+	conter10ms = sysinf.conter10ms;
+  if (key_ctrl.key_valid_flag) {
+    key_ctrl.key_valid_flag = 0;
+    Motor_deal_key(sw_st, key_ctrl.state);
+    key_ctrl.state = KEY_IDLE;
+  }
+  if(sw_st == SWING_ERR){
+  		/*电机故障,不执行操作*/
+		return 0;
+  }
+  switch (sw_st) {
+  case SWING_IDLE: {
+    SetMotorPwm(MOTOR_REV, 0);
+    SetMotorPwm(MOTOR_FWD, 0);
+  } break;
+  case FIND_GAPNUM: {
+    if (stateFistin) {
+      timerconter = 0;
+	  intoGap = 0;
+	  OutGap = 0;
+	  lastGap = 0;
+	  judgeGap = 0;
+	  HAL_TIM_Base_Stop(&htim4);
+	  HAL_TIM_Base_Start(&htim4);
+      last10ms = conter10ms;
+      stateFistin = 0;    
+	  startFindHometime = conter10ms;  
+	  findhomedir = MOTOR_REV;
+    checkPWM = swingspeed;
+	  SetMotorPwm(findhomedir, checkPWM);
+    } else  {
+  	  if (((conter10ms - last10ms) > MOTOR_LOOP_TIM*4 )&&(timerconter < MAX_RUNCNT)) {
+  		/*电机不动,返回报错*/
+  		SetMotorPwm(MOTOR_REV, 0);
+  		sw_st = SWING_ERR;
+//  		error_set(ERROR_MOTOR_FIALED);
+  		return 1;
+  	  }
+    } 
+  } break;
+  case FIND_HOMEGAP: {
+    if (stateFistin) {
+      last10ms = conter10ms;
+      stateFistin = 0;
+	  intoGapFlag = 0;
+	  firstINGap = 0;
+	  SetMotorPwm(findhomedir, checkPWM);
+    } else  {
+  	  if (!intoGapFlag && (conter10ms - last10ms) > MOTOR_LOOP_TIM) {
+  		  /*电机来回不动,返回报错*/
+		  stateFistin = 1;
+		  checkPWM = checkPWM/0.85; /*降速便于复位*/
+  	  }
+	   if(intoGapFlag){
+	   		if(!firstINGap){
+				/*进入缝隙,置位,延时判读*/
+				firstINGap = 1;
+				last10ms = conter10ms;
+			}else{
+				if((conter10ms - last10ms) > MOTOR_MOVEFORM_OPTIC_TIM){
+					if(Read_Motor()){							
+					   sw_st = SWING_IDLE;
+					   stateFistin = 1;
+					   findHome = 1;
+					  
+					}
+					else{
+						sw_st = FIND_HOMEGAP;
+					   stateFistin = 1;
+				   	   findhomedir = !findhomedir;
+					   checkPWM = checkPWM*0.9; /*降速便于复位*/		  
+					}
+				}
+			}   	    
+	   }
+    } 
+  } break;
+  
+
+  case LOOP_START: {
+    if (stateFistin) {
+      SetMotorPwm(MOTOR_REV, runLoopSpeed);
+      last10ms = conter10ms;
+      stateFistin = 0;
+    } else {
+      if ((conter10ms - last10ms) == (runLoopTime)) {
+        SetMotorPwm(MOTOR_REV, 0);
+        SetMotorPwm(MOTOR_FWD, 0);
+      }
+      if ((conter10ms - last10ms) >= (runLoopTime + swingtimePause)) {
+        sw_st = LOOP_END;
+        stateFistin = 1;
+        REVORFWD = 0;
+      }
+    }
+  } break;
+
+  case LOOP_END: {
+	sw_st = FIND_GAPNUM;
+	stateFistin = 1;
+    REVORFWD = 1;
+  } break;
+
+
+  case SWING_LOOP: { 
+    if (stateFistin ) {
+	  	/**/
+	 	if(backOptFlag){
+			if(swingtime< (conter10ms - swingStoptime)){
+			 checkPWM = swingspeed;		
+			 backOptFlag = 0;
+			 SetMotorPwm(findhomedir, checkPWM);
+			 stateFistin = 0;
+			 last10ms = conter10ms;
+			 swingHigStopflage = 0;
+			}			
+		}else{
+			 SetMotorPwm(findhomedir, checkPWM);
+			 stateFistin = 0;
+			 last10ms = conter10ms;
+			 swingHigStopflage = 0;
+		}   
+		intoGapFlag = 0;
+		firstINGap = 0;
+    } else{
+  	  if (!intoGapFlag && (conter10ms - last10ms) > MOTOR_LOOP_TIM) {
+  		/*速度过底,电机回不来*/	  
+		  backOptFlag = 1;		  
+		  swingStoptime = conter10ms;
+		  findhomedir = MOTOR_REV;
+		  stateFistin = 1;
+
+  	  }
+	   if(intoGapFlag){
+	   		if(!firstINGap){
+				/*进入缝隙,置位,延时判读*/
+				firstINGap = 1;
+				last10ms = conter10ms;
+			}else{
+			if((conter10ms - last10ms) > MOTOR_MOVEFORM_OPTIC_TIM){
+				 stateFistin = 1;
+				if(Read_Motor()){		
+					backOptFlag = 1;		
+					swingStoptime = conter10ms;
+	  				findhomedir = MOTOR_REV;
+				}
+				else{
+			   	   findhomedir = !findhomedir;
+				   checkPWM = checkPWM*0.9; /*降速便于复位*/		  
+				}
+			}	
+			}   
+	   }
+	   if ((conter10ms - curtimeinner) > (timeinner)){
+		  resetFromSwingFlag = 0;  		  
+			__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 0);		 
+			__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 0);
+			timerconter = 0;
+		  memset(timerBuf,0,sizeof(timerBuf));
+	      stateFistin = 1;	
+		  sw_st = FIND_GAPNUM;  
+	  }
+    } 
+  } break;
+
+  default:
+  	sw_st = SWING_ERR;
+    break;
+  }
+	return 0;
+}
+
+
+/**
+ * @brief	   Motor_mix
+ *
+ * @param		init key and optic input
+ *
+ * @return		空闲返回1 其他返回0
+ *
+ * @details    设置夹爪转动参数。
+ */
+uint32_t Motor_idle() {
+	return(sw_st == SWING_IDLE);
+ 
+}
+uint32_t print_home_time() {
+	if(findHome){
+		findHome = 0;
+		Van_Device_Printf(VAN_LOG_NOTICE,"gap:%d  ",timerconter);
+	    if(timerconter > sizeof(timerBuf)){
+			timerconter = sizeof(timerBuf);
+		}
+		for(unsigned int i=0;i<timerconter;i++){
+			Van_Device_Printf(VAN_LOG_NOTICE," %d  ",timerBuf[i]);
+		}
+		Van_Device_Printf(VAN_LOG_NOTICE,"\n");
+	}
+	
+	return 0;
+}
+
+
+
+

+ 49 - 0
DriverInterface/usr_motor.h

@@ -0,0 +1,49 @@
+/*
+ * usr_gpio.h
+ *
+ *  Created on: 2022��4��11��
+ *      Author: amos
+ */
+
+#ifndef USR_MOTMOR_H_
+#define USR_MOTMOR_H_
+
+#include "onechip_include_header.h"
+/*************************************/
+#define MOTOR_OPTIC_PORT PF//光开
+#define MOTOR_OPTIC_PIN  BIT5//光开
+#define MOTOR_OPTIC_INT_CH  5//光开
+#define MOTOR_OPTIC()  (PF5)  //按键
+#define KYE_PORT  PA //按键
+#define KYE_PIN  BIT15 //按键
+#define KYE_INT_CH  15//光开
+#define KYE()  PA15 //按键
+#define MOTOR_CH_REV_MASK PWM_CH_4_MASK 
+#define MOTOR_CH_REV	4
+#define MOTOR_CH_FWD_MASK PWM_CH_5_MASK 
+#define MOTOR_CH_FWD	5 
+
+#define MOTOR_CHECK_SPEED	60
+#define MOTOR_MOVEFORM_OPTIC_TIM	10
+#define MOTOR_LOOP_TIM	100
+
+#define MOTOR_SWING_TIM	100
+
+typedef enum {
+	MOTOR_REV = 0,
+	MOTOR_FWD = 1,
+}MOTOR_DIR;
+void KYE_IRQHandler(void);
+void OPTO_IRQHandler(void);
+void Motor_Init(void);
+uint32_t Motor_Check(uint32_t swing);
+uint32_t Motor_mix(uint32_t time,uint32_t speed,uint32_t swing,uint32_t swingtimeRight, uint32_t swingtimePause);
+uint32_t Read_Motor(void);
+uint32_t Motor_mix_work(void);
+uint32_t Motor_Run_Continue(uint32_t speed);
+uint32_t Motor_idle(void);
+uint32_t print_home_time(void);
+
+
+/***********************************/
+#endif /* USR_MOTMOR_H_ */

+ 228 - 0
DriverInterface/usr_protocol_type.h

@@ -0,0 +1,228 @@
+/*
+ *  usr_protocol_type.h
+ *  pc同主机通信
+ *  Created on: 2023年9月18日
+ *      Author: longtengjun
+ */
+
+#include <stdint.h>
+
+#ifndef _USR_PROTOCOL_TYPE_
+#define _USR_PROTOCOL_TYPE_
+
+#define  ONECHIP_MINI_ONE
+//#define  ONECHIP_MINI_PLUS
+
+
+#define __WIFI_ENABLE__ 1   //wifi使能
+
+
+/*****************define Card state*****************/
+#define CardON 1
+#define CardOFF 0
+
+#define MINI7_HEADER_FALG 0x55AA
+#define MINI7_TAIL_FALG 0x5A
+#define MINI7_MASSAGE_SIZE 8
+#define MINI7_MASSAGE_TYPE_MCUTOMCU 0x10
+
+#define ACK_TIMEOUT 9
+#define RESEND_TIME 3
+#define PC_OFFLINE_TIMEOUT 30       //PC离线超时时间
+#define PC_NORMAL_COM_TIME 11       //正常通信间隔
+
+#define ARRAY_COUNT(array)	(sizeof(array) / sizeof(array[0]))
+
+//LOG打印控制
+#define LOG_LEVEL_ALL   (0xFF)
+#define LOG_LEVEL_DEBUG (1 << 0)
+#define LOG_LEVEL_INFO  (1 << 1)
+#define LOG_LEVEL_WARN  (1 << 2)
+#define LOG_LEVEL_ERROR (1 << 3)
+#define LOG_LEVEL_WIFI  (1 << 4)
+#define LOG_LEVEL_NO    (0x00)
+
+#define LOG(...) my_printf( __VA_ARGS__)
+#define LOG_(x, ...) if(x & log_level) my_printf( __VA_ARGS__)
+
+#define LOG_D(...) LOG_(LOG_LEVEL_DEBUG, __VA_ARGS__)
+#define LOG_I(...) LOG_(LOG_LEVEL_INFO, __VA_ARGS__)
+#define LOG_W(...) LOG_(LOG_LEVEL_WARN, __VA_ARGS__)
+#define LOG_E(...) LOG_(LOG_LEVEL_ERROR, __VA_ARGS__)
+#define LOG_WIFI(...) LOG_(LOG_LEVEL_WIFI, __VA_ARGS__)
+
+struct CUartMgr
+{
+    char *m_pLeftData;
+    int m_iLeftLen;
+};
+
+struct CmdMessage
+{
+    uint16_t head;
+    uint8_t seq;
+    uint8_t cmd;
+    uint16_t len;
+    char *data;
+    uint8_t checksum;
+    uint8_t tail;
+};
+
+#define g_uMsgCmdFrameLen (6)
+
+enum cmd_frame_type
+{
+    cmd_frame_type_req,
+    cmd_frame_type_resp,
+};
+
+enum pc_cmd_type
+{
+    PC_CMD_HANDSHAKE = 0x01,
+    PC_CMD_SETWIFI,
+	PC_CMD_QRCODE,
+	PC_CMD_REPORT_RESULT,
+	PC_CMD_DATA_UPLOAD,
+	PC_CMD_REPORT_REEOR = 0x06,
+	PC_CMD_DATASCOPE,
+	PC_CMD_SETSN,
+	PC_CMD_INFO,
+	PC_CMD_SNANDCARD,
+	PC_CMD_SETIP = 0x0B,
+	PC_CMD_SETRUNTEMP = 0x10,
+	PC_CMD_UPDATESTATE = 0x11,
+	PC_CMD_ASKSTATE = 0x12,
+	PC_CMD_SETSTATE = 0x13,/*设置强制改变模块状态*/
+#ifdef ONECHIP_MINI_ONE
+	UINON_CMD_TEMP_ADJ = 0x40, /*校准参数*/
+	UINON_CMD_TEMP_PID = 0x41, /*PID参数*/
+	UINON_CMD_TEMP_ADJ_GET = 0x42, /*校准参数*/
+	UINON_CMD_TEMP_PID_GET = 0x43, /*PID参数*/
+	UINON_CMD_TEMP_START = 0x44, /*开始加热*/
+	UINON_CMD_TEMP_STOP = 0x45, /*停止加热*/
+#endif
+	UINON_CMD_MOTORMOVE = 0x48,
+	UINON_CMD_MOTORTRETURN = 0x49,
+	UINON_CMD_MOTORSTOP = 0x4a,
+	UINON_CMD_MOTORGETPRAM = 0x4b,
+#ifdef ONECHIP_MINI_ONE
+	UINON_CMD_TEMP_DEBUG = 0x50,
+	UINON_CMD_THEROM_GOAL = 0x51,
+	UINON_CMD_THEROM_CHECK = 0x52,
+	UINON_CMD_THEROM_OFFSET = 0x53,
+	UINON_CMD_THEROM_PID = 0x54,
+	UINON_CMD_THEROM_OVERHEAT = 0x55,
+	UINON_CMD_THEROM_OVERCOOL = 0x56,
+	UINON_CMD_THEROM_GET = 0x58,
+#endif
+};
+
+
+enum light_mode_type
+{
+    MODE_NORMAL,    //常亮
+    MODE_BLINK,     //闪烁
+    MODE_BREATH,    //呼吸
+};
+
+enum SYS_STATE_DEF
+{
+    SYS_STATE_PREPARE,
+    SYS_STATE_READY,
+    SYS_STATE_CHECK,
+    SYS_STATE_RUNING,
+    SYS_STATE_WORKEND,
+    SYS_STATE_ERROR = 0xff
+};
+
+enum light_color_type
+{
+    COLOR_BLUE = 0x000088,      //蓝
+    COLOR_GREEN = 0x008800,     //绿
+    COLOR_RED = 0x880000,       //红
+    COLOR_YELLOW = 0x888800,    //黄
+    COLOR_OTHER = 0xFFFFFF,    //白
+};
+
+/* host量配置参数 */
+typedef struct _pidParm {
+    float kp; /* 预留参数2 */
+    float ki; /* 预留参数1 */
+    float kd; /* 预留参数3 */
+} pidParm;
+/* host量配置参数 */
+typedef struct _MotorParm {
+    float time; /* 预留参数2 */
+    float speed; /* 预留参数1 */
+    float swingtime; /* 预留参数3 */
+} MotorParm;
+/* host量配置参数 */
+typedef struct _tempAdjCouple {
+    float raw;    /*原始值*/
+    float offset; /*预留参数2 */
+} tempAdjCouple;
+
+typedef struct _tempAdjParm {
+    unsigned int section; /* 段数 */
+    tempAdjCouple *offsetlist; /*  */
+} tempAdjParm;
+
+
+typedef struct _miniConfigPram {    
+	unsigned int partID;
+    union {
+        pidParm pid;
+        tempAdjParm adj;
+        MotorParm minf;
+    }Pram;
+} miniConfigPram;
+
+
+struct PCActionPack
+{
+    enum pc_cmd_type cmd;
+    int (*action)(uint8_t cmd, uint8_t *parg);
+    int (*response)(struct CmdMessage *pMsg, uint8_t result);
+    int datalen;
+};
+
+struct B2BActionPack
+{
+    enum b2b_cmd_type cmd;
+    int (*action)(uint8_t cmd, uint8_t *parg);
+    int (*response)(struct CmdMessage *pMsg, uint8_t result);
+};
+
+struct WIFIConfigInfo
+{
+    uint8_t name[32];
+    uint8_t password[32];
+};
+
+extern uint32_t log_level;
+
+void DelayMS(uint32_t ms);
+void b2b_recv_data(uint8_t *pRcvData, uint16_t iRcvLen);
+extern int  b2b_send_response(struct CmdMessage *pMsg, uint8_t result);
+
+extern uint16_t b2b_send_device(enum b2b_cmd_type cmd, char *data, uint16_t len,uint8_t master);
+extern void process_system(void);
+extern uint16_t b2b_send_to_pc(enum pc_cmd_type cmd, char *data, uint16_t len);
+uint16_t b2b_send_boardcast(enum b2b_cmd_type cmd, char *data, uint16_t len);
+uint16_t data_send_to_pc(enum pc_cmd_type cmd, char *data, uint16_t len);
+void data_resend_to_pc(void);
+unsigned int check_to_pc_busy(void);
+
+uint16_t union_data_send_to_pc(struct CmdMessage *pMsg);
+void set_pc_chanel_recv(uint8_t channel);
+void set_pc_chanel_temp();
+void reload_pc_chanel();
+void set_pc_chanel(uint8_t channel);
+uint32_t byte_to_u32(uint8_t *p, int len);
+void processB2BCmd(struct CmdMessage *pMsg);
+uint16_t checkSum(const uint8_t *pInBuffer, int uLen);
+int my_printf(const char* str, ...);
+int hex_to_ascii(const void *hex, void *string, int len);
+void b2b_send_Heat_Para(uint8_t cmd);
+
+#endif

+ 286 - 0
DriverInterface/van_BSP_Com_Pwm.c

@@ -0,0 +1,286 @@
+/******************************************************************************
+*Copyright(C),2024-2024,万众一芯生
+*van_BSP_Com_Pwm.c
+*stm32 pwm控制的
+*修改历史
+author				范义东			新建				2024/01/27
+******************************************************************************/
+
+#include "onechip_include_header.h"
+#include "van_BSP_Com_Pwm.h"
+
+	
+VAN_COM_PWM_Def gcom_pwm_MINI_V2_V1[] = {
+    {MINI7_SUB_FUN_MOTOR, NAME(MOTOR), PWM_BUMP_ST_IDLE, COM_PWM_8870, (void *)&htim3, TIM_CHANNEL_2}, 
+    {MINI7_SUB_FUN_HEATER1, NAME(HEATER1), PWM_BUMP_ST_IDLE, COM_PWM_8870, (void *)&htim3, TIM_CHANNEL_1},			 
+    {MINI7_SUB_FUN_HEATER2, NAME(HEATER2), PWM_BUMP_ST_IDLE, COM_PWM_8870, (void *)&htim1, TIM_CHANNEL_3}
+};
+
+unsigned int gcom_pwm_MINI_V2_Num = ARR_LEN(gcom_pwm_MINI_V2_V1);
+
+
+P_VAN_COM_PWM_Def gcom_pwm_V1;
+unsigned int gcom_pwm_V1_Num;
+
+/****************************************************************
+ 函数名:    loadPidCfg
+ 创建时间:  2024/01/08
+ 创建人:    范义东
+ 函数说明:加载配置文件
+ 参数:
+
+ 返回值 :  加载成功
+****************************************************************/
+unsigned int load_com_pwm_Cfg(pDeviceBasicInfdef pDevice) {
+
+	gcom_pwm_V1 = gcom_pwm_MINI_V2_V1;
+  gcom_pwm_V1_Num = gcom_pwm_MINI_V2_Num;
+  P_VAN_COM_PWM_Def pdev = gcom_pwm_V1;
+  for (int i = 0; i < gcom_pwm_V1_Num; i++) {
+    pdev++;
+  }
+  return true;
+}
+/****************************************************************
+ * 函数名:    com_pwm_FindChanle
+ * 创建时间:    2024/01/08
+ * 创建人:    范义东
+ * 函数说明:通过ID,查找PWM模块
+ * 输入参数: devId
+ * 输出参数: pdev 比例阀配置
+ * 返回值 :   有配置文件返回true,返回失败
+ ****************************************************************/
+bool com_pwm_FindChanle(unsigned int devId, P_VAN_COM_PWM_Def *pdev) {
+  unsigned char id;
+  /*寻找配置文件*/
+  for (id = 0; id < gcom_pwm_V1_Num; id++) {
+    if (devId == gcom_pwm_V1[id].ID) {
+      *pdev = &gcom_pwm_V1[id];
+      return true;
+    }
+  }
+  Van_Device_Printf(VAN_LOG_NOTICE, "pwm devId:%d no exit\r\n", devId);
+  *pdev = NULL;
+  return false;
+}
+
+/****************************************************************
+ 函数名:   com_pwm_Set
+ 创建时间:  2024/01/08
+ 创建人:    范义东
+ 函数说明:设置pwm
+ 参数: devId 通道
+       value pwm值,负值为反向
+ 返回值 :  加载成功
+****************************************************************/
+void com_pwm_Set(unsigned int devId, float value) {
+  P_VAN_COM_PWM_Def pdev;
+//  value ;
+  int DutyCycle = value;
+  if (DutyCycle > MAX_PWM_VALUE) {
+      DutyCycle = MAX_PWM_VALUE;
+  }else if(DutyCycle < -MAX_PWM_VALUE) {
+      DutyCycle = -MAX_PWM_VALUE;
+  }
+  if (com_pwm_FindChanle(devId, &pdev)) {
+    //    Van_Device_Printf(VAN_LOG_NOTICE, "before pwn %s pluse:%d\n", pdev->Name, DutyCycle);
+    if (pdev->dirPort && (pdev->type == COM_PWM_8870 || pdev->type == COM_PWM_8873)) {
+			GPIO_PinState PinState =   ((DutyCycle < 0) ^ (pdev->dirState == GPIO_PIN_SET))?GPIO_PIN_SET:GPIO_PIN_RESET;
+			HAL_GPIO_WritePin(pdev->dirPort, pdev->dirPin, PinState);
+			if (DutyCycle < 0 && pdev->type == COM_PWM_8870) {
+				DutyCycle = MAX_PWM_VALUE+DutyCycle;	
+			}		
+			if (DutyCycle < 0 && pdev->type == COM_PWM_8873) {
+				DutyCycle = -DutyCycle;	
+			}
+    }
+    if (DutyCycle < 0) {
+      DutyCycle = 0;
+    } else if (DutyCycle > MAX_PWM_VALUE) {
+      DutyCycle = MAX_PWM_VALUE;
+    }
+    __HAL_TIM_SET_COMPARE((TIM_HandleTypeDef *)pdev->timerHandle, pdev->pwmChanle, DutyCycle);
+    pdev->state = PWM_BUMP_ST_RUN;
+    //    Van_Device_Printf(VAN_LOG_NOTICE, "pwn %s pluse:%d\n", pdev->Name, DutyCycle);
+  } else {
+    Van_Device_Printf(VAN_LOG_ERROR, "pwn %d not support:%d\n", devId);
+  }
+}
+
+/****************************************************************
+ 函数名:   com_pwm_Getconter
+ 创建时间:  2024/01/08
+ 创建人:    范义东
+ 函数说明:获取当前脉冲计算器
+ 参数: devId 通道
+       value pwm值,负值为反向
+ 返回值 :  加载成功
+****************************************************************/
+unsigned int com_pwm_Getconter(unsigned int devId) {
+  P_VAN_COM_PWM_Def pdev;
+  if (com_pwm_FindChanle(devId, &pdev)) {
+    Van_Device_Printf(VAN_LOG_DEBUG, "time:%d  conter:%d\n", devId, pdev->feedbackconter);
+    return pdev->feedbackconter;
+  } else {
+    Van_Device_Printf(VAN_LOG_ERROR, "pwn %d not support:%d\n", devId);
+  }
+  return 0;
+}
+
+/****************************************************************
+ * 函数名:    com_pwm_test
+ * 创建时间:    2024/01/08
+ * 创建人:    范义东
+ * 函数说明:设置PWM输出
+ * 输入参数:     runMtsId 通道
+ * 输出参数: pTemp 当前温度
+ * 返回值 :   成功rue,失败返回false
+ ****************************************************************/
+bool com_pwm_test(unsigned int Id, int value) {
+  P_VAN_COM_PWM_Def pdev;
+  float fvalue = value;
+  if (com_pwm_FindChanle(Id, &pdev)) {
+    com_pwm_Set(Id, fvalue);
+    Van_Device_Printf(VAN_LOG_NOTICE, "%s: ID:%d set out:%f\r\n", pdev->Name, Id, fvalue);
+  } else {
+    Van_Device_Printf(VAN_LOG_NOTICE, "no support  ID:%d\r\n", Id);
+  }
+  return False;
+}
+
+/****************************************************************
+ * 函数名:    showIVT
+ * 创建时间:    2024/01/08
+ * 创建人:    范义东
+ * 函数说明:IVT模块查看
+ * 输入参数: 无
+ * 输出参数: 无
+ * 返回值 :   无
+ ****************************************************************/
+void show_com_pwm(void) {
+  P_VAN_COM_PWM_Def pdev;
+  char TimeName[16] = {0};
+  char FeedTimeCName[16] = {0};
+  char DirPortName[16] = {0};
+  Van_Device_Printf(VAN_LOG_NOTICE, "devtype:%d strtype:%d hdtype:%d PWM Num:%d\r\n", sysinf.devdesc.deveice_type, sysinf.devdesc.structure_type,
+                    sysinf.devdesc.hardware_type, gcom_pwm_V1_Num);
+  if (gcom_pwm_V1_Num == 0) {
+    Van_Device_Printf(VAN_LOG_NOTICE, "***************no Pwm***************\r\n");
+  }
+
+  Van_Device_Printf(VAN_LOG_NOTICE, "%2s %16s %2s %2s %6s %2s %6s %2s %4s %6s %2s %4s\r\n ", " ID ", " name ", "St", "Type", "tim ", "ch ", "ftim", "fch",
+                    "con ", "Dport", "pin", "value");
+  HAL_Delay(10); 
+  pdev = gcom_pwm_V1;
+  for (int i = 0; i < gcom_pwm_V1_Num; i++) {
+    find_stm32_Peripherals(pdev->timerHandle, TimeName);
+    find_stm32_Peripherals(pdev->feedbackTimer, FeedTimeCName);
+    find_stm32_Peripherals(pdev->dirPort, DirPortName);
+
+    Van_Device_Printf(VAN_LOG_NOTICE, "%2d %16s %2d  %2x %6s  %2x %6s %2d %4d %6s %2x %4d\r\n", pdev->ID, pdev->Name, pdev->state, pdev->type, TimeName,
+                      pdev->pwmChanle, FeedTimeCName, pdev->feedbackChanlen, pdev->feedbackconter, DirPortName, pdev->dirPin, pdev->setValue);
+    HAL_Delay(10);
+    pdev++;
+  }
+  return;
+}
+
+
+/****************************************************************
+ * 函数名:    PWM_Find_By_CHl
+ * 创建时间:    2024/01/08
+ * 创建人:    范义东
+ * 函数说明:通过ID,查找反馈模块
+ * 输入参数: devId
+ * 输出参数: pdev 比例阀配置
+ * 返回值 :   有配置文件返回true,返回失败
+ ****************************************************************/
+bool PWM_Find_feed_By_ch(unsigned int devId, P_VAN_COM_PWM_Def *pdev) {
+  unsigned char id;
+  /*寻找配置文件*/
+  for (id = 0; id < gcom_pwm_V1_Num; id++) {
+    if (devId == gcom_pwm_V1[id].ID || gcom_pwm_V1[id].feedbackChanlen) {
+      *pdev = &gcom_pwm_V1[id];
+      return true;
+    }
+  }
+  Van_Device_Printf(VAN_LOG_NOTICE, "pwm feed devId:%d no exit\r\n", devId);
+  *pdev = NULL;
+  return false;
+}
+
+/****************************************************************
+ * 函数名:    com_feed_Add_Pulse
+ * 创建时间:    2024/01/08
+ * 创建人:    范义东
+ * 函数说明:通过GPIO_Pin,跟新转到脉冲计数
+ * 输入参数: devId
+ * 输出参数: pdev 比例阀配置
+ * 返回值 :   有配置文件返回true,返回失败
+ ****************************************************************/
+void com_feed_Add_Pulse(uint16_t GPIO_Pin) {
+  P_VAN_COM_PWM_Def pdev = gcom_pwm_V1;
+  for (int i = 0; i < gcom_pwm_V1_Num; i++) {
+    if (pdev->state == PWM_BUMP_ST_RUN && pdev->feedbackChanlen == GPIO_Pin) {
+      pdev->plusconter++;
+      //	   		Van_Device_Printf(VAN_LOG_NOTICE, "ID:%d plus:%d\n",pdev->ID,pdev->plusconter);
+    }
+    pdev++;
+  }
+}
+
+/****************************************************************
+ * 函数名:    check_Pwm_Plus_feedOK
+ * 创建时间:    2024/01/08
+ * 创建人:    范义东
+ * 函数说明:通过plusconter,检查是否转到
+ * 输入参数: 无
+ * 输出参数: 无
+ * 返回值 :   有配置文件返回true,返回失败
+ ****************************************************************/
+void check_Pwm_Plus_feedOK(void) {
+  P_VAN_COM_PWM_Def pdev = gcom_pwm_V1;
+  for (int i = 0; i < gcom_pwm_V1_Num; i++) {
+    if (pdev->state == PWM_BUMP_ST_RUN && pdev->feedbackChanlen != VAN_CONFIG_NOCARE) {
+     
+      pdev->plusconter = 0;
+    }
+    pdev++;
+  }
+}
+
+
+/**********************************************************************************
+Func    Name: Paltform_Set_PWM_Pause
+Descriptions: 平台设置暂停PWM
+Input   para: 无
+In&Out  Para: 无
+Output  para: 无
+Return value: 无
+***********************************************************************************/
+void Paltform_Set_PWM_Pause(unsigned int id) {
+  P_VAN_COM_PWM_Def dev;
+  // float goal = 0; /*安1000配置占空比*/
+
+  if (com_pwm_FindChanle(id, &dev) == True) {
+    com_pwm_Set(id, 0);
+    dev->state = PWM_BUMP_ST_IDLE;
+  }
+}
+
+/**********************************************************************************
+Func    Name: Paltform_Set_PWM_Resume
+Descriptions: 平台设置恢复PWM
+Input   para: 无
+In&Out  Para: 无
+Output  para: 无
+Return value: 无
+***********************************************************************************/
+void Paltform_Set_PWM_Resume(unsigned int id) {
+  P_VAN_COM_PWM_Def dev;
+
+  if (com_pwm_FindChanle(id, &dev) == True) {
+    com_pwm_Set(id, dev->setValue);
+    dev->state = PWM_BUMP_ST_RUN;
+  }
+}

+ 76 - 0
DriverInterface/van_BSP_Com_Pwm.h

@@ -0,0 +1,76 @@
+/******************************************************************************
+*Copyright(C),2024-2024,万众一芯生
+*van_BSP_Pwm_pump.h
+* pwm 控制泵阀驱动
+*修改历史
+author				范义东			新建				2024/01/27
+******************************************************************************/
+
+#ifndef __VAN_BSP_COM_PWM_H
+#define __VAN_BSP_COM_PWM_H
+
+#include "van_com_define.h"
+#define MAX_PWM_VALUE  10000
+
+typedef enum
+{
+	PWM_CHIPKK5 = 30000,
+	PWM_PIPE = 30001,
+	PWM_TOPCON = 30002,
+	PWM_BOTCON = 30003,
+	PWM_PERIS1 = 30020,
+	PWM_PERIS2 = 30021,
+	PWM_DIAPHR = 30022,
+} enPWM_004_V1;
+	
+typedef enum {
+  PWM_BUMP_ST_IDLE,
+  PWM_BUMP_ST_RUN,
+  PWM_BUMP_ST_FEEDERR, /*转速反馈异常*/
+} COM_PWM_State;
+
+typedef enum {
+  COM_PWM_BASE,
+  COM_PWM_8870, 		/*带方向*/
+  COM_PWM_8873, /*带转速反馈*/
+  COM_PWM_DIR_FEED_CNT, /*带方向转速反馈*/
+} COM_PWM_Type;
+
+
+typedef struct {
+  unsigned int ID;              //泵编号
+  unsigned char Name[16];       //泵名
+  COM_PWM_State state;         //状态
+  COM_PWM_Type type;			//类型
+  void* timerHandle;            /*定时器端口*/
+  unsigned int pwmChanle;       /*定时器通道*/
+  void* feedbackTimer;          /*反馈定时器*/
+  unsigned int feedbackChanlen; /*反馈通道*/
+  void* dirPort;                /*方向端口*/
+  unsigned int dirPin;          /*方向管脚*/
+  unsigned int 	dirState;	  // 正向电平
+  unsigned int feedbackconter;  /*反馈脉冲数*/
+  float setValue;               /*设定值*/ 
+  float getValue;               /*反馈值*/
+  float range_Max;               /*范围*/  
+  float range_Min;               /*范围*/  
+  unsigned int plusconter;		/*转动脉冲计数*/
+} VAN_COM_PWM_Def, *P_VAN_COM_PWM_Def;
+
+
+void com_pwm_Set(unsigned int devId, float value);
+unsigned int com_pwm_Getconter(unsigned int devId);
+bool com_pwm_test(unsigned int Id, int value);
+void show_com_pwm(void);
+bool com_pwm_FindChanle(unsigned int devId, P_VAN_COM_PWM_Def *pdev);
+bool PWM_Find_feed_By_ch(unsigned int devId, P_VAN_COM_PWM_Def *pdev);
+void Paltform_Set_PWM_Pause(unsigned int id);
+void Paltform_Set_PWM_Resume(unsigned int id);
+void thread_Proportiona_ctrl(void* );
+void com_feed_Add_Pulse(uint16_t GPIO_Pin);
+void check_Pwm_Plus_feedOK(void);
+void Paltform_Get_PWM_Current(void *param);
+void Paltform_Set_PWM_Goal(void *param) ;
+void Paltform_Set_PWM_Stop(void *param);
+unsigned int load_com_pwm_Cfg(pDeviceBasicInfdef pDevice);
+#endif

+ 44 - 0
DriverInterface/van_BSP_ESPUart.c

@@ -0,0 +1,44 @@
+/*
+ * uart_rcv.c
+ *
+ *  Created on: 2022年4月20日
+ *      Author: dell
+ */
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include "onechip_include_header.h"
+
+
+
+uint8_t g_wifi_rx_buf[WIFI_RX_BUF_SIZE];
+uint8_t g_wifi_rx_len;
+
+void esp_receive_Rec_IDLE(UART_HandleTypeDef *huart)
+{
+	if ((__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) != RESET))
+	{
+		__HAL_UART_CLEAR_IDLEFLAG(huart);
+		g_wifi_rx_len		= WIFI_RX_BUF_SIZE - __HAL_DMA_GET_COUNTER(huart->hdmarx);
+		HAL_UART_DMAStop(huart); 
+		HAL_UART_Receive_DMA(huart, g_wifi_rx_buf, WIFI_RX_BUF_SIZE);	
+	}
+}
+
+
+
+void wifi_receive_clear(void){
+	memset(g_wifi_rx_buf,0,WIFI_RX_BUF_SIZE);
+	g_wifi_rx_len = 0;
+}
+
+
+
+
+void esp_receive_Rec_Start(UART_HandleTypeDef *huart){
+		__HAL_UART_CLEAR_IDLEFLAG(huart);
+	  memset((char *)g_wifi_rx_buf,0,WIFI_RX_BUF_SIZE);
+		HAL_UART_Receive_DMA(huart, g_wifi_rx_buf, WIFI_RX_BUF_SIZE);	
+	__HAL_UART_ENABLE_IT(huart, UART_IT_IDLE);
+}

+ 19 - 0
DriverInterface/van_BSP_ESPUart.h

@@ -0,0 +1,19 @@
+/*
+ * uart_rcv.h
+ *
+ *  Created on: 2022年4月20日
+ *      Author: dell
+ */
+
+#ifndef VAN_BAP_ESPUART_H_
+#define VAN_BAP_ESPUART_H_
+
+
+#define WIFI_RX_BUF_SIZE 256
+#define WIFI_TX_BUF_SIZE 512
+
+
+void esp_receive_Rec_IDLE(UART_HandleTypeDef *huart);
+void wifi_receive_clear(void);
+void esp_receive_Rec_Start(UART_HandleTypeDef *huart);
+#endif /* UART_RCV_H_ */

+ 214 - 0
DriverInterface/van_BSP_Scanner.c

@@ -0,0 +1,214 @@
+/*
+ * uart_rcv.c
+ *
+ *  Created on: 2022年4月20日
+ *      Author: dell
+ */
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include "onechip_include_header.h"
+
+
+
+
+#define ENV_ADJ_THRESHOLD 27.0
+
+
+#define DEBUG_BUF_SIZE (512)	// 调试串口缓冲区长度
+#define BUF_SIZE (512)	// 调试串口缓冲区长度
+
+enum SLAVE_MCU_Ctr_cmd_type
+{
+    SLAVE_MCU_CMD_PARAM = 0x01,
+    SLAVE_MCU_CMD_HEAT = 0x02,
+    SLAVE_MCU_CMD_LIGHT_CTR= 0X03,
+    SLAVE_MCU_CMD_QRSCANNER_CTR= 0X04,    
+    SLAVE_MCU_CMD_FAN= 0X05,
+    SLAVE_MCU_CMD_CARD_ST= 0X06,
+	SLAVE_MCU_CMD_PID = 0x20,
+};
+enum SLAVE_MCU_Ctr_UP_type
+{
+	SLAVE_MCU_UP_HEAT = 0x10,
+	SLAVE_MCU_UP_QR_PARAM= 0X11,
+	SLAVE_MCU_UP_QR = 0x12,
+	SLAVE_MCU_INFO,					//异常信息
+};
+
+
+
+
+uint8_t g_uart2_rcv_start = 0;
+uint8_t g_uart2_rcv_complete_flg = 0;
+uint8_t g_uart2_rx_buf[DEBUG_BUF_SIZE] = {0};
+uint8_t g_uart2_tx_buf[BUF_SIZE] = {0};
+uint16_t g_uart2_rx_len = 0;
+
+str_hole_info_t hole1 = {0};
+str_hole_info_t hole2 = {0};
+str_hole_info_t hole3 = {0};
+str_hole_info_t hole4 = {0};
+str_hole_info_t hole5 = {0};
+str_hole_info_t hole6 = {0};
+str_hole_info_t hole7 = {0};
+str_hole_info_t hole8 = {0};
+str_hole_info_t hole9 = {0};
+str_hole_info_t hole10 = {0};
+str_card_param_info_t m_str_card_param_info = {0};
+unsigned int haveheaderflag = 0;
+uint32_t qr_check_delay = QR_CHECH_STATE_FIRST;  /*1s定时器里面,大于0,每s减1*/
+extern void DelayMS(uint32_t ms);
+extern void QRparam_upload(str_card_param_info_t *p_str_card_param_info);
+extern uint8_t sys_info[40];
+
+uint32_t received_len;
+/********************************************************************
+ *                         bcd_to_hex()
+ *
+ *描述:BCD转HEX
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+uint8_t bcd_to_hex(uint8_t val)
+{
+	return ((val / 10) << 4) + val % 10;
+}
+
+
+void svanner_receive_Rec_IDLE(UART_HandleTypeDef *huart)
+{
+	if ((__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) != RESET))
+	{
+		__HAL_UART_CLEAR_IDLEFLAG(huart);
+		received_len		= DEBUG_BUF_SIZE - __HAL_DMA_GET_COUNTER(huart->hdmarx);
+		 HAL_UART_DMAStop(huart); 
+
+		HAL_UART_Receive_DMA(huart, g_uart2_rx_buf, DEBUG_BUF_SIZE);	
+	}
+}
+
+
+void svanner_receive_analysis(void)
+{
+	if(received_len){	
+		Van_Device_Printf(VAN_LOG_CRITICAL, "rec QR inif %d \n\r",received_len);
+		unsigned filter = 0;
+		/*while('{' != g_uart2_rx_buf[filter] && filter<received_len){
+			filter++;
+		}*/
+		if ('{' == g_uart2_rx_buf[filter]){
+			if(0 == parse_qrcode_info(&m_str_card_param_info,  (char *)&g_uart2_rx_buf[filter])){
+				haveheaderflag = QR_REC_STATE_SENDPRAM; 	
+				qr_check_delay = 0;				
+				Van_Device_Printf(VAN_LOG_CRITICAL, "unpack json ok \n\r ");
+			}
+			else{
+				Van_Device_Printf(VAN_LOG_CRITICAL, "unpack json error \n\r %s",g_uart2_rx_buf);
+			}
+		}
+		else{
+				Van_Device_Printf(VAN_LOG_CRITICAL, "header error \n\r %s",g_uart2_rx_buf);
+			}
+		
+		received_len = 0;	
+	  memset((char *)g_uart2_rx_buf,0,DEBUG_BUF_SIZE);
+	}
+	return;
+}
+
+
+int parse_qrcode_info(str_card_param_info_t *info, char *qrcode_str)
+{
+	int id = 0;
+	double Tt = 0;
+	double Tt1 = 0;
+	
+	if (info == 0)
+	{
+		return -1;
+	}
+
+	cJSON *root = cJSON_Parse(qrcode_str);
+	if (root == NULL)
+	{   /*消息不合格*/
+		return -1;
+	}
+	cJSON *item = cJSON_GetObjectItem(root, "p");
+	if (item == NULL)
+	{   /*消息不合格*/
+		cJSON_Delete(root);
+		return -1;
+	}
+	char *pid = cJSON_GetStringValue(item);
+	//    printf("pid=%s \r\n", pid);
+	memcpy(info->pid, pid, 10);
+
+	item = cJSON_GetObjectItem(root, "t");
+	if (item == NULL)
+	{   /*消息不合格*/
+		cJSON_Delete(root);
+		return -1;
+	}
+	double t = item->valuedouble;
+	//    printf("t=%f \r\n", t);
+	info->temp[0] = (uint8_t)t;
+	info->temp[1] = (uint8_t)((t -(uint8_t)t)* 100);
+
+	// 获取数组item
+	item = cJSON_GetObjectItem(root, "e");
+	if (item == NULL)
+	{   /*消息不合格*/
+		cJSON_Delete(root);
+		return -1;
+	}
+	int test_arry_size = cJSON_GetArraySize(item);
+
+	for (int i = 0; i < test_arry_size; i++)
+	{
+		// 打印数组里的所有item
+		cJSON *sub_array = cJSON_GetArrayItem(item, i);
+
+		cJSON *sub = cJSON_GetObjectItem(sub_array, "i");
+		id = sub->valueint;
+		//        printf("id=%d \r\n", id);
+
+		if(id > 0)
+		{
+			sub = cJSON_GetObjectItemCaseSensitive(sub_array, "T");
+			Tt = sub->valuedouble;
+			//        printf("Tt=%f \r\n", Tt);
+
+			sub = cJSON_GetObjectItemCaseSensitive(sub_array, "t");
+			Tt1 = sub->valuedouble;
+			//        printf("Tt1=%f \r\n", Tt1);
+		}
+		else
+		{
+			Tt = 0;
+			Tt1 = 0;
+		}
+
+		info->hole_info[i].item = id;
+		info->hole_info[i].TtMax[0] = (uint8_t)Tt;
+		info->hole_info[i].TtMax[1] = (uint8_t)((Tt -(uint8_t)Tt)* 100);
+		info->hole_info[i].TtMin[0] = (uint8_t)Tt1;
+		info->hole_info[i].TtMin[1] = (uint8_t)((Tt1 -(uint8_t)Tt1)* 100);
+	}
+	// 记得删除json
+	cJSON_Delete(root);
+	return 0;
+}
+
+
+
+void svanner_receive_Rec_Start(UART_HandleTypeDef *huart){
+		__HAL_UART_CLEAR_IDLEFLAG(huart);
+	  memset((char *)g_uart2_rx_buf,0,DEBUG_BUF_SIZE);
+		HAL_UART_Receive_DMA(huart, g_uart2_rx_buf, DEBUG_BUF_SIZE);	
+	__HAL_UART_ENABLE_IT(huart, UART_IT_IDLE);
+}

+ 47 - 0
DriverInterface/van_BSP_Scanner.h

@@ -0,0 +1,47 @@
+/*
+ * uart_rcv.h
+ *
+ *  Created on: 2022年4月20日
+ *      Author: dell
+ */
+
+#ifndef VAN_BAP_SCANNER_H_
+#define VAN_BAP_SCANNER_H_
+
+enum QR_CHECH_STATE
+{
+	QR_CHECH_STATE_FIRST = 0,
+	QR_CHECH_STATE_TRYAGAIN = 1,
+	QR_CHECH_STATE_WAITING= 3,
+	QR_CHECH_STATE_SEND= 4,
+};
+enum QR_REC_STATE
+{
+	QR_REC_STATE_EMPTY = 0,
+	QR_REC_STATE_HEADER ,
+	QR_REC_STATE_SENDPRAM,
+	QR_REC_STATE_SENDQR,
+	QR_REC_STATE_END,
+};
+
+
+typedef struct str_hole_info
+{
+    uint8_t    item;
+    uint8_t TtMax[2];
+    uint8_t TtMin[2];
+} str_hole_info_t;
+typedef struct str_card_param_info
+{
+    char   pid[10];
+    uint8_t temp[2];
+    struct str_hole_info hole_info[10];
+} str_card_param_info_t;
+
+int parse_qrcode_info(struct str_card_param_info *info, char *qrcode_str);
+void QRparam_upload(str_card_param_info_t *p_str_card_param_info);
+void svanner_receive_Rec_IDLE(UART_HandleTypeDef *huart);
+void svanner_receive_Rec_Start(UART_HandleTypeDef *huart);
+void svanner_receive_analysis(void);
+
+#endif /* UART_RCV_H_ */

+ 1000 - 0
DriverInterface/van_bsp_uart_fun.c

@@ -0,0 +1,1000 @@
+
+/******************************************************************
+*  Copyright (C) 2023 - 2023 OneChip, Inc. All rights reserved.
+* File name: van_bsp_uart_fun.c
+* Author: fanyidong 	 Date:2020.11.21
+* Description:		STM32串口接收函数
+* Others:
+* History:
+        1. Date:
+                 Author:
+                 Modification:
+
+*****************************************************************/
+
+#include "van_bsp_debug_uart.h"
+#include <string.h>
+
+/* USER CODE BEGIN Private defines */
+
+#define RECEIVELEN 1024
+#define USART_DMA_SENDING 1   //发送未完成
+#define USART_DMA_SENDOVER 0  //发送完成
+#define USART_DMA_COPY 1      //拷贝中
+#define USART_DMA_COPYOVER 0  //拷贝完成
+typedef struct {
+  unsigned int receive_flag;      //空闲接收标记
+  unsigned int dmaSend_flag;      //发送完成标记
+  unsigned int dmaCopy_flag;      //发送拷贝标记
+  osMutexId_t mutex_dmaCopy;  
+  unsigned int rx_head;           //接收头
+  unsigned int tx_head;           //发送头
+  unsigned int rx_last;           //接收尾
+  unsigned int tx_last;           //发送尾
+  unsigned int rx_max_len;        //接收缓冲区长度
+  unsigned int tx_max_len;        //发送缓冲区长度
+  unsigned int rx_DMA_len;        //接收长度
+  unsigned int tx_DMA_len;        //接收长度
+  unsigned char *usartDMA_RxBuf;  // DMA接收缓存
+  unsigned char *usart_RxBuf;     // 接收缓冲区
+  unsigned char *usartDMA_TxBuf;  // DMA发送缓存
+  unsigned char *usart_TxBuf;     // 发送缓冲区
+  UART_HandleTypeDef *huart;
+  
+  unsigned int uartError;      //串口错误
+} USART_COM_RECEIVETYPE, *pUSART_COM_RECEIVETYPE;
+
+#define SYS_CTR_DMA_LEN 256
+#define SYS_CTR_BUF_LEN 1024
+USART_COM_RECEIVETYPE sys_ctr_uart;
+unsigned char sys_ctr_tDMA_RxBuf[SYS_CTR_DMA_LEN + 4] = {0};
+unsigned char sys_ctr_tDMA_TxBuf[SYS_CTR_DMA_LEN + 4] = {0};
+unsigned char sys_ctr_RxBuf[SYS_CTR_BUF_LEN];
+unsigned char sys_ctr_TxBuf[SYS_CTR_BUF_LEN];
+CmdMessage sys_ctr_Message;
+unsigned char sys_ctr_data[SYS_CTR_BUF_LEN];
+
+
+#define THD_NTCSAMP_DMA_LEN 32
+#define THD_NTCSAMP_BUF_LEN 64
+USART_COM_RECEIVETYPE THD_NTCSAMP_uart;
+unsigned char THD_NTCSAMP_tDMA_RxBuf[THD_NTCSAMP_DMA_LEN + 4] = {0};
+unsigned char THD_NTCSAMP_tDMA_TxBuf[THD_NTCSAMP_DMA_LEN + 4] = {0};
+unsigned char THD_NTCSAMP_RxBuf[THD_NTCSAMP_BUF_LEN];
+unsigned char THD_NTCSAMP_TxBuf[THD_NTCSAMP_BUF_LEN];
+unsigned char THD_NTCSAMP_Message[32];
+unsigned char THD_NTCSAMP_data[SYS_CTR_BUF_LEN];
+
+unsigned int p_rec_flag = 0;
+unsigned int p_rec_data_flag = 0;
+unsigned int p_DecodeNew = 0;
+unsigned int p_Rep_flag = 0;
+unsigned int p_Rep_data_flag = 0;
+unsigned int p_Ans_flag = 0;
+unsigned int p_Ans_data_flag = 0;
+unsigned int p_Ans_flag_1 = 0;
+unsigned int p_Ans_data_flag_1 = 0;
+unsigned char sedbuf[SYS_CTR_BUF_LEN];
+unsigned int sedbuf_len;
+
+
+extern DMA_HandleTypeDef hdma_uart7_rx;
+
+extern UART_HandleTypeDef huart7;
+unsigned int resetSysUart ;
+typedef struct
+{
+  __IO uint32_t ISR;   /*!< DMA interrupt status register */
+  __IO uint32_t Reserved0;
+  __IO uint32_t IFCR;  /*!< DMA interrupt flag clear register */
+} DMA_Base_Registers;
+
+ #define osMutexPrioInherit    0x00000002U    // 继承锁  继承等待线程中更高的优先级
+const osMutexAttr_t Mutex_attr1 = {
+  "myThreadMutex",     // human readable mutex name
+  osMutexPrioInherit,  // attr_bits
+  NULL,                // memory for control block   
+  0U                   // size for control block
+};
+
+/****************************************************************
+* 函数名:    Van_UART_Fun_TxCpltCallback
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明: DMA 发送中断
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+void Van_UART_Fun_TxCpltCallback_Base(pUSART_COM_RECEIVETYPE uartinf) {
+  UART_HandleTypeDef *huart = uartinf->huart;
+  __HAL_DMA_DISABLE(huart->hdmatx);
+  unsigned int dataleninTxbuf = (uartinf->tx_last + uartinf->tx_max_len - uartinf->tx_head) % uartinf->tx_max_len;
+  if (dataleninTxbuf) {
+    memset((void *)uartinf->usartDMA_TxBuf, 0, uartinf->tx_DMA_len);
+    if (dataleninTxbuf >= uartinf->tx_DMA_len) {
+      if (uartinf->tx_max_len >= (uartinf->tx_head + uartinf->tx_DMA_len)) {
+        memcpy((void *)uartinf->usartDMA_TxBuf, (const void *)(uartinf->usart_TxBuf + uartinf->tx_head), uartinf->tx_DMA_len);
+        uartinf->tx_head += uartinf->tx_DMA_len;
+        Van_Device_Printf(VAN_LOG_DEBUG, "line:%d head:%d last:%d \n\r", __LINE__, uartinf->tx_head, uartinf->tx_last);
+      } else {
+        memcpy((void *)uartinf->usartDMA_TxBuf, (const void *)(uartinf->usart_TxBuf + uartinf->tx_head), (uartinf->tx_max_len - uartinf->tx_head));
+        unsigned int secondcopelen = uartinf->tx_DMA_len - (uartinf->tx_max_len - uartinf->tx_head);
+        memcpy((void *)(uartinf->usartDMA_TxBuf + uartinf->tx_max_len - uartinf->tx_head), (const void *)uartinf->usart_TxBuf, secondcopelen);
+        uartinf->tx_head = secondcopelen;
+        Van_Device_Printf(VAN_LOG_DEBUG, "line:%d head:%d last:%d \n\r", __LINE__, uartinf->tx_head, uartinf->tx_last);
+      }
+      Van_Device_Printf(VAN_LOG_DEBUG, "len:%d %s\n\r***", uartinf->tx_DMA_len, uartinf->usartDMA_TxBuf);
+      HAL_UART_Transmit_DMA(huart, uartinf->usartDMA_TxBuf, uartinf->tx_DMA_len);
+    } else {
+      if (uartinf->tx_max_len >= (uartinf->tx_head + dataleninTxbuf)) {
+        memcpy((void *)uartinf->usartDMA_TxBuf, (const void *)(uartinf->usart_TxBuf + uartinf->tx_head), dataleninTxbuf);
+        uartinf->tx_head += dataleninTxbuf;
+        Van_Device_Printf(VAN_LOG_DEBUG, "line:%d head:%d last:%d \n\r", __LINE__, uartinf->tx_head, uartinf->tx_last);
+      } else {
+        memcpy((void *)uartinf->usartDMA_TxBuf, (const void *)(uartinf->usart_TxBuf + uartinf->tx_head), (uartinf->tx_max_len - uartinf->tx_head));
+        unsigned int secondcopelen = dataleninTxbuf - (uartinf->tx_max_len - uartinf->tx_head);
+        memcpy((void *)(uartinf->usartDMA_TxBuf + uartinf->tx_max_len - uartinf->tx_head), (const void *)uartinf->usart_TxBuf, secondcopelen);
+        uartinf->tx_head = secondcopelen;
+        Van_Device_Printf(VAN_LOG_DEBUG, "line:%d head:%d last:%d \n\r", __LINE__, uartinf->tx_head, uartinf->tx_last);
+      }
+      Van_Device_Printf(VAN_LOG_DEBUG, "len:%d %s\n\r***", dataleninTxbuf, uartinf->usartDMA_TxBuf);
+      HAL_UART_Transmit_DMA(huart, uartinf->usartDMA_TxBuf, dataleninTxbuf);
+    }
+    uartinf->dmaSend_flag = USART_DMA_SENDING;
+  } else {
+    uartinf->dmaSend_flag = USART_DMA_SENDOVER;
+  }
+}
+/****************************************************************
+* 函数名:    Van_UART_Fun_Send_DMA
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明: DMA 发送
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+void Van_UART_Fun_Send_DMA_Base(unsigned char *pdata, unsigned int Length, pUSART_COM_RECEIVETYPE uartinf) {
+  UART_HandleTypeDef *huart = uartinf->huart;
+  /*超长不拷贝*/
+
+//  Van_Device_Printf(VAN_LOG_NOTICE, "head:%d last:%d Length:%d %s\n\r", uartinf->tx_head, uartinf->tx_last, Length, pdata);
+  if (Length > uartinf->tx_max_len) {
+    Length = uartinf->tx_max_len;
+  }
+//  while (uartinf->dmaCopy_flag == USART_DMA_COPY);
+//  uartinf->dmaCopy_flag = USART_DMA_COPY;
+  __disable_irq(); 
+  osMutexAcquire(uartinf->mutex_dmaCopy,0xffffffff);
+  if ((Length + uartinf->tx_last) < uartinf->tx_max_len) {
+    memcpy((void *)(uartinf->usart_TxBuf + uartinf->tx_last), (const void *)pdata, Length);
+    uartinf->tx_last += Length;
+//    Van_Device_Printf(VAN_LOG_NOTICE, "head:%d last:%d \n\r", uartinf->tx_head, uartinf->tx_last);
+  } else {
+    memcpy((void *)(uartinf->usart_TxBuf + uartinf->tx_last), (const void *)pdata, (uartinf->tx_max_len - uartinf->tx_last));
+
+    unsigned int secondcopelen = Length - (uartinf->tx_max_len - uartinf->tx_last);
+    memcpy((void *)uartinf->usart_TxBuf, (const void *)(pdata + (uartinf->tx_max_len - uartinf->tx_last)), secondcopelen);
+    uartinf->tx_last = secondcopelen;
+//    Van_Device_Printf(VAN_LOG_NOTICE, "head:%d last:%d \n\r", uartinf->tx_head, uartinf->tx_last);
+  }  
+//  osMutexRelease(uartinf->mutex_dmaCopy);
+//  uartinf->dmaCopy_flag = USART_DMA_COPYOVER;
+  if (uartinf->dmaSend_flag == USART_DMA_SENDOVER) {
+    unsigned int dataleninTxbuf = (uartinf->tx_last + uartinf->tx_max_len - uartinf->tx_head) % uartinf->tx_max_len;
+    if (dataleninTxbuf) 
+    {
+      memset((void *)uartinf->usartDMA_TxBuf, 0, uartinf->tx_DMA_len);
+      if (dataleninTxbuf >= uartinf->tx_DMA_len) 
+      {
+        if (uartinf->tx_max_len >= (uartinf->tx_head + uartinf->tx_DMA_len)) 
+        {
+          memcpy((void *)uartinf->usartDMA_TxBuf, (const void *)(uartinf->usart_TxBuf + uartinf->tx_head), uartinf->tx_DMA_len);
+          uartinf->tx_head += uartinf->tx_DMA_len;
+//          Van_Device_Printf(VAN_LOG_NOTICE, "line:%d head:%d last:%d \n\r", __LINE__, uartinf->tx_head, uartinf->tx_last);
+        } 
+        else 
+        {
+          memcpy((void *)uartinf->usartDMA_TxBuf, (const void *)(uartinf->usart_TxBuf + uartinf->tx_head), (uartinf->tx_max_len - uartinf->tx_head));
+          unsigned int secondcopelen = uartinf->tx_DMA_len - (uartinf->tx_max_len - uartinf->tx_head);
+          memcpy((void *)(uartinf->usartDMA_TxBuf + uartinf->tx_max_len - uartinf->tx_head), (const void *)uartinf->usart_TxBuf, secondcopelen);
+          uartinf->tx_head = secondcopelen;
+//          Van_Device_Printf(VAN_LOG_NOTICE, "line:%d head:%d last:%d \n\r", __LINE__, uartinf->tx_head, uartinf->tx_last);
+        } 
+
+//        Van_Device_Printf(VAN_LOG_NOTICE, "len:%d %s\n\r***", uartinf->tx_DMA_len, uartinf->usartDMA_TxBuf);
+        HAL_UART_Transmit_DMA(huart, uartinf->usartDMA_TxBuf, uartinf->tx_DMA_len);
+      } 
+      else 
+      {
+        if (uartinf->tx_max_len >= (uartinf->tx_head + dataleninTxbuf)) 
+        {
+          memcpy((void *)uartinf->usartDMA_TxBuf, (const void *)(uartinf->usart_TxBuf + uartinf->tx_head), dataleninTxbuf);
+          uartinf->tx_head += dataleninTxbuf;
+//          Van_Device_Printf(VAN_LOG_NOTICE, "line:%d head:%d last:%d \n\r", __LINE__, uartinf->tx_head, uartinf->tx_last);
+        } 
+        else 
+        {
+          memcpy((void *)uartinf->usartDMA_TxBuf, (const void *)(uartinf->usart_TxBuf + uartinf->tx_head), (uartinf->tx_max_len - uartinf->tx_head));
+          unsigned int secondcopelen = dataleninTxbuf - (uartinf->tx_max_len - uartinf->tx_head);
+          memcpy((void *)(uartinf->usartDMA_TxBuf + uartinf->tx_max_len - uartinf->tx_head), (const void *)uartinf->usart_TxBuf, secondcopelen);
+          uartinf->tx_head = secondcopelen;
+//          Van_Device_Printf(VAN_LOG_NOTICE, "line:%d head:%d last:%d \n\r", __LINE__, uartinf->tx_head, uartinf->tx_last);
+        }
+//        Van_Device_Printf(VAN_LOG_NOTICE, "len:%d %s\n\r***", dataleninTxbuf, uartinf->usartDMA_TxBuf);
+        HAL_UART_Transmit_DMA(huart, uartinf->usartDMA_TxBuf, dataleninTxbuf);
+      }
+      uartinf->dmaSend_flag = USART_DMA_SENDING;
+    }
+//    else
+//      Van_Device_Printf(VAN_LOG_INFO, "HAL_UART_Transmit_DMA dataleninTxbuf == 0\n");
+  }
+  osMutexRelease(uartinf->mutex_dmaCopy);
+__enable_irq();
+}
+
+/****************************************************************
+* 函数名:    Van_UART_Fun_RxCpltCallback
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明: DMA接收处理
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+void Van_UART_Fun_RxCplt_Base(pUSART_COM_RECEIVETYPE uartinf) {
+  UART_HandleTypeDef *huart = uartinf->huart;
+  uint32_t temp;
+
+  HAL_UART_DMA_RX_Stop(huart);
+  // 停止DMA接收
+  DMA_Stream_TypeDef *dma = huart->hdmarx->Instance;
+  temp = dma->NDTR;
+  unsigned int dataleninRxDMAbuf = uartinf->rx_DMA_len - temp;
+  uint32_t isrst = huart->Instance->ISR;
+  uint32_t dmacr = dma->CR;
+//  Van_Device_Printf(VAN_LOG_NOTICE, "%s %d addr:%x %d-%d=%d\n\r", __func__, __LINE__, (unsigned int)uartinf->usartDMA_RxBuf, uartinf->rx_DMA_len, temp,
+//                    dataleninRxDMAbuf);
+//  Van_Device_Printf(VAN_LOG_NOTICE, "%x %x\n\r", isrst, dmacr);
+  if (dataleninRxDMAbuf) {
+		if(dataleninRxDMAbuf > uartinf->rx_max_len){
+		   Van_Device_Printf(VAN_LOG_NOTICE, "*******************rec %d  clean*******************\n\r", dataleninRxDMAbuf);
+		}else{
+    //		 Van_Device_Printf(VAN_LOG_NOTICE, "Cplt len:%d %s\n\r***",dataleninRxDMAbuf,uartinf->usartDMA_RxBuf);
+    if ((dataleninRxDMAbuf + uartinf->rx_last) <= uartinf->rx_max_len) {
+      memcpy((void *)(uartinf->usart_RxBuf + uartinf->rx_last), (const void *)uartinf->usartDMA_RxBuf, dataleninRxDMAbuf);
+      uartinf->rx_last += dataleninRxDMAbuf;
+      //Van_Device_Printf(VAN_LOG_NOTICE, "rx_last 1:%d  %d  \n\r", uartinf->rx_last, uartinf->rx_head);
+    } else {
+      memcpy((void *)(uartinf->usart_RxBuf + uartinf->rx_last), (const void *)uartinf->usartDMA_RxBuf, (uartinf->rx_max_len - uartinf->rx_last));
+      unsigned int secondcopelen = dataleninRxDMAbuf - (uartinf->rx_max_len - uartinf->rx_last);
+      memcpy((void *)uartinf->usart_RxBuf, (const void *)(uartinf->usartDMA_RxBuf + (uartinf->rx_max_len - uartinf->rx_last)), secondcopelen);
+      uartinf->rx_last = secondcopelen;
+     // Van_Device_Printf(VAN_LOG_NOTICE, "rx_last 2 :%d  %d \n\r", uartinf->rx_last, uartinf->rx_head,dataleninRxDMAbuf,uartinf->rx_max_len );
+    }
+    uartinf->receive_flag = 1;
+	  sysinf.reccmd_conter = sysinf.ms_conter;		
+		}
+
+    memset((void *)uartinf->usartDMA_RxBuf, 0, uartinf->rx_DMA_len);
+    // 重启DMA接收
+
+    HAL_UART_Receive_DMA((UART_HandleTypeDef *)huart, uartinf->usartDMA_RxBuf, uartinf->rx_DMA_len);
+    dmacr = dma->CR;
+//   Van_Device_Printf(VAN_LOG_NOTICE, "rx len %d\n\r", uartinf->rx_DMA_len);
+  }
+}
+
+/****************************************************************
+* 函数名:    Van_UART_Fun_Rec_IDLE
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明: 接收处理
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+void Van_UART_Fun_Rec_IDLE_Base(pUSART_COM_RECEIVETYPE uartinf) {
+  UART_HandleTypeDef *huart = uartinf->huart;
+  if ((__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) != RESET)) {
+    __HAL_UART_CLEAR_IDLEFLAG(huart);
+    Van_UART_Fun_RxCplt_Base(uartinf);
+//    Van_Device_Printf(VAN_LOG_NOTICE, "%s %d\n\r", __func__, __LINE__);
+  }
+}
+
+/****************************************************************
+* 函数名:    Van_UART_Fun_ErrorCallback
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明:异常后处理
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+void Van_UART_Fun_ErrorCallback_Base(pUSART_COM_RECEIVETYPE uartinf) {
+  UART_HandleTypeDef *huart = uartinf->huart;
+
+  DMA_HandleTypeDef *pdma;
+  
+  Van_Device_Printf(VAN_LOG_ERROR, "Van_UART_Fun_ErrorCallback_Base %8x  dmaTX%8x  dmaRX%8x\n\r",huart->ErrorCode, huart->hdmatx->ErrorCode, huart->hdmarx->ErrorCode);
+  
+  //if (huart->ErrorCode == (HAL_UART_ERROR_NE | HAL_UART_ERROR_ORE)) 
+//{
+	  uartinf->uartError = True;
+    __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);
+//  }
+  
+  pdma = huart->hdmatx;
+  if (pdma->ErrorCode) {
+    __HAL_DMA_DISABLE(huart->hdmatx);
+    uartinf->dmaSend_flag = USART_DMA_SENDOVER;
+  }
+  pdma = huart->hdmarx;
+  if ( pdma->ErrorCode) {
+    __HAL_DMA_DISABLE(huart->hdmarx);
+    HAL_UART_Receive_DMA((UART_HandleTypeDef *)huart, uartinf->usartDMA_RxBuf, RECEIVELEN);
+    __HAL_UART_ENABLE_IT((UART_HandleTypeDef *)huart, UART_IT_IDLE);
+//	Van_Device_Printf(VAN_LOG_ERROR, "huart rx dma reset\n\r");
+  }
+}
+
+/****************************************************************
+* 函数名:    Van_UART_Fun_Rec_IDLE
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明:空闲中断回调处理
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+
+void Van_UART_Fun_TxCpltCallback(UART_HandleTypeDef *huart) {
+  UART_HandleTypeDef *pUart = sys_ctr_uart.huart;
+  UART_HandleTypeDef *pTHD_NTCSAMPUart = THD_NTCSAMP_uart.huart;
+  if (huart->Instance == pUart->Instance) {
+    Van_UART_Fun_TxCpltCallback_Base(&sys_ctr_uart);
+  }else if (huart->Instance == pTHD_NTCSAMPUart->Instance) {    
+     Van_UART_Fun_TxCpltCallback_Base(&THD_NTCSAMP_uart);
+  }
+  return;
+}
+
+/****************************************************************
+* 函数名:    Van_UART_Fun_Rec_IDLE
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明:空闲中断回调处理
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+
+void Van_UART_Fun_RxCpltCallback(UART_HandleTypeDef *huart) {
+  UART_HandleTypeDef *pUart = sys_ctr_uart.huart;
+  UART_HandleTypeDef *pTHD_NTCSAMPUart = THD_NTCSAMP_uart.huart;
+  if (huart->Instance == pUart->Instance) {
+    Van_UART_Fun_RxCplt_Base(&sys_ctr_uart);
+//    Van_Device_Printf(VAN_LOG_NOTICE, "%s %d\n\r", __func__, __LINE__);
+  }else if (huart->Instance == pTHD_NTCSAMPUart->Instance) {    
+    Van_UART_Fun_RxCplt_Base(&THD_NTCSAMP_uart);
+  }
+  return;
+}
+
+/****************************************************************
+* 函数名:    Van_UART_Fun_Rec_IDLE
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明:空闲中断回调处理
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+
+void Van_UART_Fun_ErrorCallback(UART_HandleTypeDef *huart) {
+  UART_HandleTypeDef *pUart = sys_ctr_uart.huart;
+  UART_HandleTypeDef *pTHD_NTCSAMPUart = THD_NTCSAMP_uart.huart;
+  if (huart->Instance == pUart->Instance) {
+    Van_UART_Fun_ErrorCallback_Base(&sys_ctr_uart);
+  }else if (huart->Instance == pTHD_NTCSAMPUart->Instance) {    
+    Van_UART_Fun_ErrorCallback_Base(&THD_NTCSAMP_uart);
+  } 
+  return;
+}
+
+/****************************************************************
+* 函数名:    Van_UART_Fun_Rec_IDLE
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明:空闲中断回调处理
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+
+void Van_UART_Fun_Rec_IDLE(UART_HandleTypeDef *huart) {
+  UART_HandleTypeDef *pUart = sys_ctr_uart.huart;
+  UART_HandleTypeDef *pTHD_NTCSAMPUart = THD_NTCSAMP_uart.huart;
+  if (huart->Instance == pUart->Instance) {
+    Van_UART_Fun_Rec_IDLE_Base(&sys_ctr_uart);
+//    Van_Device_Printf(VAN_LOG_NOTICE, "%s %d\n\r", __func__, __LINE__);
+  }else if (huart->Instance == pTHD_NTCSAMPUart->Instance) {
+    Van_UART_Fun_Rec_IDLE_Base(&THD_NTCSAMP_uart);
+//    Van_Device_Printf(VAN_LOG_NOTICE, "%s %d\n\r", __func__, __LINE__);
+  }else{
+	if ((__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) != RESET)) {
+	  char	Name[16] = {0};
+	  __HAL_UART_CLEAR_IDLEFLAG(huart);
+	  find_stm32_Peripherals(huart,Name);
+	   Van_Device_Printf(VAN_LOG_NOTICE, "%s %s %d\n\r", Name,__func__);
+	}
+  }
+  return;
+}
+
+/****************************************************************
+* 函数名:    Van_UART_Fun_Send_DMA
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明: DMA 发送
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+void Van_UART_Fun_Send_DMA(unsigned char *pdata, unsigned int Length, UART_HandleTypeDef *huart) {
+  UART_HandleTypeDef *pUart = sys_ctr_uart.huart;
+  UART_HandleTypeDef *pTHD_NTCSAMPUart = THD_NTCSAMP_uart.huart;
+  if (huart->Instance == pUart->Instance) {
+    
+    Van_UART_Fun_Send_DMA_Base(pdata, Length, &sys_ctr_uart);
+  }else if (huart->Instance == pTHD_NTCSAMPUart->Instance) {    
+    Van_UART_Fun_Send_DMA_Base(pdata, Length, &THD_NTCSAMP_uart);
+  } 
+  return;
+}
+
+/****************************************************************
+* 函数名:    Van_UART_Sys_Ctr_Send_type
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明:系统命令发送
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+void Van_UART_Sys_Ctr_Send_type(unsigned char type, unsigned char *pdata, unsigned int Length) {
+  struct CmdMessage msg = {0};
+  unsigned char sedbuf[SYS_CTR_BUF_LEN];
+  unsigned int checksum = 0;
+  combine_cmdMessage(msg, VAN_COM_HEADER_FALG, type, VAN_CFG_NONE, VAN_COM_TAIL_FALG);
+  msg.len = Length;
+  *(unsigned short *)sedbuf = msg.head;
+  sedbuf[2] = msg.type;
+  sedbuf[3] = msg.cmd;
+  *(unsigned short *)(sedbuf + 4) = msg.len;
+  for (unsigned int i = 0; i < msg.len; i++) {
+    sedbuf[6 + i] = pdata[i];
+  }
+  checksum = checkSum(&sedbuf[2], msg.len + 4);
+  sedbuf[6 + msg.len] = checksum & 0xff; /*结尾标记高位*/
+  sedbuf[7 + msg.len] = checksum >> 8;   /*结尾标记低位*/
+  if(p_Rep_flag){
+  	  unsigned int alllen = msg.len + 8;
+	  Van_Device_Printf(VAN_LOG_NOTICE, "ans: len%:d \n\r",alllen);
+	  if(p_Rep_data_flag){
+		  for(int i=0; i <alllen; i++){
+			  Van_Device_Printf(VAN_LOG_NOTICE, "%2x ", sedbuf[i]);
+			  if(i%32==31){
+				 Van_Device_Printf(VAN_LOG_NOTICE, "\n\r"); 
+			  }
+		  }
+		  Van_Device_Printf(VAN_LOG_NOTICE, "\n\r");
+	  }
+  }
+  Van_UART_Fun_Send_DMA(sedbuf, Length + 8, sys_ctr_uart.huart);
+}
+
+/****************************************************************
+* 函数名:    Van_UART_Sys_Ctr_Send
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明:系统命令发送
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+void Van_UART_Sys_Ctr_Send(unsigned char *pdata, unsigned int Length) {
+  struct CmdMessage msg = {0};
+  unsigned int checksum = 0;
+  combine_cmdMessage(msg, VAN_COM_HEADER_FALG, MSG_SYS_CTR, VAN_CFG_NONE, VAN_COM_TAIL_FALG);
+  sedbuf_len = Length + 8;
+  msg.len = Length;
+  *(unsigned short *)sedbuf = msg.head;
+  sedbuf[2] = msg.type;
+  sedbuf[3] = msg.cmd;
+  *(unsigned short *)(sedbuf + 4) = msg.len;
+  for (unsigned int i = 0; i < msg.len; i++) {
+    sedbuf[6 + i] = pdata[i];
+  }
+  checksum = checkSum(&sedbuf[2], msg.len + 4);
+  sedbuf[6 + msg.len] = checksum & 0xff; /*结尾标记高位*/
+  sedbuf[7 + msg.len] = checksum >> 8;   /*结尾标记低位*/
+  if(p_Ans_flag){
+  	  unsigned int alllen = msg.len + 8;
+	  Van_Device_Printf(VAN_LOG_NOTICE, "ans len: %d \n\r",alllen);
+	  if(p_Ans_data_flag){
+		  for(int i=0; i <alllen; i++){
+			  Van_Device_Printf(VAN_LOG_NOTICE, "%2x ", sedbuf[i]);
+			  if(i%32==31){
+				 Van_Device_Printf(VAN_LOG_NOTICE, "\n\r"); 
+			  }
+		  }
+		  Van_Device_Printf(VAN_LOG_NOTICE, "\n\r");
+	  }
+  }
+  Van_UART_Fun_Send_DMA(sedbuf, sedbuf_len, sys_ctr_uart.huart);
+}
+
+/****************************************************************
+* 函数名:    Van_UART_Sys_Ctr_SendNoBuf
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明:主动上报,不缓存
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+void Van_UART_Sys_Ctr_SendNoBuf(unsigned char *pdata, unsigned int Length) {
+  struct CmdMessage msg = {0};
+  unsigned int checksum = 0;
+  combine_cmdMessage(msg, VAN_COM_HEADER_FALG, MSG_SYS_CTR, VAN_CFG_NONE, VAN_COM_TAIL_FALG);  
+  unsigned char sedbuf[SYS_CTR_BUF_LEN];
+  unsigned int sedbuf_len;
+  sedbuf_len = Length + 8;
+  msg.len = Length;
+  *(unsigned short *)sedbuf = msg.head;
+  sedbuf[2] = msg.type;
+  sedbuf[3] = msg.cmd;
+  *(unsigned short *)(sedbuf + 4) = msg.len;
+  for (unsigned int i = 0; i < msg.len; i++) {
+    sedbuf[6 + i] = pdata[i];
+  }
+  checksum = checkSum(&sedbuf[2], msg.len + 4);
+  sedbuf[6 + msg.len] = checksum & 0xff; /*结尾标记高位*/
+  sedbuf[7 + msg.len] = checksum >> 8;   /*结尾标记低位*/
+  if(p_Ans_flag_1){
+  	  unsigned int alllen = msg.len + 8;
+	  Van_Device_Printf(VAN_LOG_NOTICE, "ans len: %d \n\r",alllen);
+	  if(p_Ans_data_flag_1){
+		  for(int i=0; i <alllen; i++){
+			  Van_Device_Printf(VAN_LOG_NOTICE, "%2x ", sedbuf[i]);
+			  if(i%32==31){
+				 Van_Device_Printf(VAN_LOG_NOTICE, "\n\r"); 
+			  }
+		  }
+		  Van_Device_Printf(VAN_LOG_NOTICE, "\n\r");
+	  }
+  }
+  Van_UART_Fun_Send_DMA(sedbuf, sedbuf_len, sys_ctr_uart.huart);
+}
+
+/****************************************************************
+* 函数名:    Van_UART_Sys_Ctr_Send_Again
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明:应答消息重新发送
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+void Van_UART_Sys_Ctr_Send_Again(void) {
+  Van_UART_Fun_Send_DMA(sedbuf, sedbuf_len, sys_ctr_uart.huart);
+}
+
+/****************************************************************
+* 函数名:    Van_UART_Sys_Ttr_Init
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明:系统命令串口挂载
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+void Van_UART_Sys_Ctr_Init(UART_HandleTypeDef *puart) {
+  sys_ctr_uart.huart = puart;
+  sys_ctr_uart.usartDMA_RxBuf = sys_ctr_tDMA_RxBuf;
+  sys_ctr_uart.usartDMA_TxBuf = sys_ctr_tDMA_TxBuf;
+  sys_ctr_uart.usart_RxBuf = sys_ctr_RxBuf;
+  sys_ctr_uart.usart_TxBuf = sys_ctr_TxBuf;
+  sys_ctr_uart.tx_DMA_len = SYS_CTR_DMA_LEN;
+  sys_ctr_uart.rx_DMA_len = SYS_CTR_DMA_LEN;
+  sys_ctr_uart.rx_max_len = SYS_CTR_BUF_LEN;
+  sys_ctr_uart.tx_max_len = SYS_CTR_BUF_LEN;
+  sys_ctr_uart.rx_last = 0;
+  sys_ctr_uart.rx_head = 0;
+  sys_ctr_uart.tx_last = 0;
+  sys_ctr_uart.tx_head = 0;
+  sys_ctr_uart.uartError = False;
+  memset((void *)sys_ctr_uart.usartDMA_RxBuf, 0, sys_ctr_uart.rx_DMA_len + 4);
+  HAL_UART_Receive_DMA(puart, sys_ctr_uart.usartDMA_RxBuf, SYS_CTR_DMA_LEN);
+  __HAL_UART_CLEAR_IDLEFLAG(puart);
+  __HAL_UART_CLEAR_FLAG(puart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF);
+  //	__HAL_UART_CLEAR_OREFLAG(puart);
+  __HAL_UART_ENABLE_IT(puart, UART_IT_IDLE);
+  __HAL_UART_ENABLE_IT(puart, UART_IT_ERR);
+  
+  sys_ctr_uart.mutex_dmaCopy = osMutexNew(&Mutex_attr1);
+}
+
+
+
+/****************************************************************
+* 函数名:    Van_UART_Fun_RawdataDeal
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明:串口接收元数据处理
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+void Van_RawdataDeal_dispatch(void* pram)
+{
+	unsigned int anslen = 0;
+	P_RawdataMessage pcmd = (P_RawdataMessage)pram;
+	RawdataMessage Ans ;
+	Ans.fuid = pcmd->fuid;
+	Ans.cmd = 0;
+	anslen = sizeof(Ans) - sizeof(Ans.data);
+	switch(pcmd->cmd){
+		case RAW_V1_SET_PID_SEC_OFFSET:
+			Ans.cmd = PidSetSectionOffsetDirect((void*)pcmd->data,(void*)Ans.data);
+			anslen = 8+sizeof(pidSectionOffset_ST_Def);
+			break;
+		case RAW_V1_GET_PID_SEC_OFFSET:
+			Ans.cmd = PidGetSectionOffsetDirect((void*)pcmd->data,(void*)Ans.data);
+			if(Ans.cmd){
+				P_pidSectionOffset_ST_Def poffset = (P_pidSectionOffset_ST_Def)Ans.data;
+				anslen = 8+sizeof(pidSectionOffset_ST_Def);
+			    Van_Device_Printf(VAN_LOG_NOTICE, "mPidNum:%d sectionNum:%d\n\r***", poffset->mPidNum ,poffset->sectionNum );
+			}
+			break;	
+		case RAW_V1_SET_PID_SINGEPIDOFFSET:
+			Ans.cmd = PidSetSinglPIDDirect((void*)pcmd->data,(void*)Ans.data);
+			break;
+		case RAW_V1_GET_PID_SINGEPIDOFFSET:
+			Ans.cmd = PidGetSinglPIDDirect((void*)pcmd->data,(void*)Ans.data);
+			if(Ans.cmd){
+				P_pidSectionOffset_ST_Def poffset = (P_pidSectionOffset_ST_Def)Ans.data;
+				anslen += sizeof(P_pidSignlePidPram_ST_Def);
+			    Van_Device_Printf(VAN_LOG_NOTICE, "mPidNum:%d sectionNum:%d\n\r***", poffset->mPidNum ,poffset->sectionNum );
+			}
+			break;	
+		case RAW_V1_SET_QUADRATICFIT:
+			Ans.cmd = PidSetQuadraticfitDirect((void*)pcmd->data,(void*)Ans.data);
+			break;
+		case RAW_V1_GET_QUADRATICFIT:
+			Ans.cmd = PidGetQuadraticfitDirect((void*)pcmd->data,(void*)Ans.data);
+			if(Ans.cmd){
+				P_quadraticfit_ST_Def poffset = (P_quadraticfit_ST_Def)Ans.data;
+				anslen += sizeof(quadraticfit_ST_Def);
+			}
+			break;	
+
+			
+		case RAW_V1_GET_PID_MULT_PRAM:{
+			Ans.cmd = PidMultSectionPramGetDirect((void*)pcmd->data,(void*)Ans.data);
+			if(Ans.cmd){
+				anslen += 64;
+			}
+			
+		}
+			break;
+		case RAW_V1_SET_PID_MULT_PRAM:{
+			Ans.cmd = PidMultSectionPramSetDirect((void*)pcmd->data,(void*)Ans.data);
+			if(Ans.cmd){
+				anslen += 64;
+			}
+			
+		}
+			break;
+	}
+	Van_UART_Sys_Ctr_Send_type(MSG_RAW_DATA_1,(void *)&Ans,anslen);
+}
+
+
+/****************************************************************
+* 函数名:    Van_UART_Fun_RawdataDeal
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明:串口接收元数据处理
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+void Van_UART_Fun_RawdataDeal(void) {
+static int conter10ms = 0;
+  if (sys_ctr_uart.receive_flag)  //如果产生了空闲中断
+  {
+    sys_ctr_uart.receive_flag = 0;  //清零标记
+    unsigned int dataleninRxbuf = (sys_ctr_uart.rx_last + sys_ctr_uart.rx_max_len - sys_ctr_uart.rx_head) % sys_ctr_uart.rx_max_len;
+	if(dataleninRxbuf > 64){
+		Van_Device_Printf(VAN_LOG_NOTICE, "buffer have:%d\n\r***", dataleninRxbuf);
+	}
+    if(p_rec_flag){
+		Van_Device_Printf(VAN_LOG_NOTICE, "last:%d head:%d buflen:%d  have:%d\n\r***", sys_ctr_uart.rx_last,sys_ctr_uart.rx_head,sys_ctr_uart.rx_max_len,dataleninRxbuf);
+		if(p_rec_data_flag){
+			for(int i=0; i <dataleninRxbuf; i++){
+				Van_Device_Printf(VAN_LOG_NOTICE, "%2x ", sys_ctr_uart.usart_RxBuf[(i+sys_ctr_uart.rx_head)%sys_ctr_uart.rx_max_len]);
+				if(i%32==31){
+					Van_Device_Printf(VAN_LOG_NOTICE, "\n\r");
+				}
+			}
+			Van_Device_Printf(VAN_LOG_NOTICE, "\n\r");
+		}
+
+	}
+    if (dataleninRxbuf > (sizeof(CmdMessage)-4)) {
+      pbRawdef raw = {0};
+      if (DecodeNew(&sys_ctr_Message, raw.data, sys_ctr_uart.usart_RxBuf, &sys_ctr_uart.rx_head, sys_ctr_uart.rx_last, sys_ctr_uart.rx_max_len)) {
+        raw.datalen = sys_ctr_Message.len;     
+		if(p_DecodeNew){
+			Van_Device_Printf(VAN_LOG_NOTICE, "DecodeNew is ok\n\r");
+		}
+		if(sys_ctr_Message.type == MSG_RAW_DATA_1){		
+			Van_RawdataDeal_dispatch(raw.data);
+			
+		}else{	
+	    	pb_CtrlProto_v1_decode(raw.data, raw.datalen);
+		}
+      }
+    }
+	dataleninRxbuf = (sys_ctr_uart.rx_last + sys_ctr_uart.rx_max_len - sys_ctr_uart.rx_head) % sys_ctr_uart.rx_max_len;
+	if(dataleninRxbuf > (sizeof(CmdMessage)-4)) {
+		sys_ctr_uart.receive_flag = 1;  //缓冲区存在数据,接续解析
+	}
+    
+  }
+  if(resetSysUart){
+	resetSysUart = 0;
+	sys_ctr_uart.uartError = True;
+  }
+  if( sys_ctr_uart.uartError){
+	Van_Device_Printf(VAN_LOG_NOTICE, "reinit sysUart\n\r");
+  	HAL_UART_DMAStop(sys_ctr_uart.huart);
+	sys_ctr_uart.uartError = False;		
+    osDelay(100U);
+    if(sysinf.devdesc.deveice_type == deviceType_deviceETA_004){	
+		MX_UART4_Init();
+	}else{	
+ 		MX_UART7_Init();
+	}	
+	memset((void *)sys_ctr_uart.usartDMA_RxBuf, 0, sys_ctr_uart.rx_DMA_len + 4);
+	HAL_UART_Receive_DMA(sys_ctr_uart.huart, sys_ctr_uart.usartDMA_RxBuf, SYS_CTR_DMA_LEN);
+	__HAL_UART_CLEAR_IDLEFLAG(sys_ctr_uart.huart);
+	__HAL_UART_ENABLE_IT(sys_ctr_uart.huart, UART_IT_IDLE);
+	__HAL_UART_ENABLE_IT(sys_ctr_uart.huart, UART_IT_ERR);
+  }
+  conter10ms++;
+  if(conter10ms==200){
+	  if ((__HAL_UART_GET_FLAG(sys_ctr_uart.huart, UART_FLAG_ORE) != RESET)||
+		(__HAL_UART_GET_FLAG(sys_ctr_uart.huart, UART_FLAG_NE) != RESET)||
+		(__HAL_UART_GET_FLAG(sys_ctr_uart.huart, UART_FLAG_FE) != RESET)||
+		(__HAL_UART_GET_FLAG(sys_ctr_uart.huart, UART_FLAG_PE) != RESET)){
+				Van_Device_Printf(VAN_LOG_NOTICE, "sysUart error\n\r");
+				Van_Device_Printf(VAN_LOG_NOTICE, "ISR:%8x \n\r",sys_ctr_uart.huart->Instance->ISR); 
+			    if(sysinf.devdesc.deveice_type == deviceType_deviceETA_004){	
+					MX_UART4_Init();
+				}else{	
+			 		MX_UART7_Init();
+				}	 
+  				HAL_UART_DMAStop(sys_ctr_uart.huart);
+				memset((void *)sys_ctr_uart.usartDMA_RxBuf, 0, sys_ctr_uart.rx_DMA_len + 4);
+				HAL_UART_Receive_DMA(sys_ctr_uart.huart, sys_ctr_uart.usartDMA_RxBuf, SYS_CTR_DMA_LEN);
+				__HAL_UART_CLEAR_IDLEFLAG(sys_ctr_uart.huart);
+				__HAL_UART_ENABLE_IT(sys_ctr_uart.huart, UART_IT_IDLE);
+				__HAL_UART_ENABLE_IT(sys_ctr_uart.huart, UART_IT_ERR);				  
+		}
+
+  }
+
+}
+
+/****************************************************************
+* 函数名:    Van_UART_Fun_RawdataDeal
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明:串口接收元数据处理
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+void Van_UART_Sys_Ctr_SendTest(void) {
+  unsigned char sendtestbuf[128] = {0};
+  for (int i = 0; i < 100; i++) {
+    sendtestbuf[i] = '0' + i % 10;
+  }
+
+  Van_UART_Sys_Ctr_Send(sendtestbuf, 100);
+  Van_UART_Sys_Ctr_Send((unsigned char*)"\n\r", 2);
+}
+
+/****************************************************************
+* 函数名:    Van_UART_Sys_Get_Debuging  
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明:获取调试信息
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+
+void Van_UART_Sys_Get_Debuging(void) {
+  DMA_Base_Registers  *regs_dma  = (DMA_Base_Registers *)hdma_uart7_rx.StreamBaseAddress;
+  BDMA_Channel_TypeDef *dma_instance =     (BDMA_Channel_TypeDef *)hdma_uart7_rx.Instance;
+  Van_Device_Printf(VAN_LOG_NOTICE, "ISR:%8x  IFCR:%8x \n\r",regs_dma->ISR,regs_dma->IFCR);
+  Van_Device_Printf(VAN_LOG_NOTICE, "CCR:%8x  CNDTR:%8x  CPAR:%8x  CM0AR:%8x  CM1AR:%8x \n\r",
+  		dma_instance->CCR,dma_instance->CNDTR,dma_instance->CPAR,dma_instance->CM0AR,dma_instance->CM1AR);  
+  Van_Device_Printf(VAN_LOG_NOTICE, "huart7 ISR:%8x \n\r",huart7.Instance->ISR);   
+}
+
+#if defined(DEVICETYPE_IS_ATCG)
+
+/****************************************************************
+* 函数名:    Van_THD_NTCSAMP_Fun_RawdataDeal
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明:串口接收元数据处理
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+void Van_THD_NTCSAMP_Fun_RawdataDeal(void) {
+  if (THD_NTCSAMP_uart.receive_flag)  //如果产生了空闲中断
+  {
+    THD_NTCSAMP_uart.receive_flag = 0;  //清零标记
+    unsigned int dataleninRxbuf = (THD_NTCSAMP_uart.rx_last + THD_NTCSAMP_uart.rx_max_len - THD_NTCSAMP_uart.rx_head) % THD_NTCSAMP_uart.rx_max_len;
+    if(p_rec_flag){
+		Van_Device_Printf(VAN_LOG_NOTICE, "last:%d head:%d buflen:%d  have:%d\n\r***", THD_NTCSAMP_uart.rx_last,THD_NTCSAMP_uart.rx_head,THD_NTCSAMP_uart.rx_max_len,dataleninRxbuf);
+		if(p_rec_data_flag){
+			for(int i=0; i <dataleninRxbuf; i++){
+				Van_Device_Printf(VAN_LOG_NOTICE, "%2x ", THD_NTCSAMP_uart.usart_RxBuf[(i+THD_NTCSAMP_uart.rx_head)%THD_NTCSAMP_uart.rx_max_len]);
+				if(i%32==31){
+					Van_Device_Printf(VAN_LOG_NOTICE, "\n\r");
+				}
+			}
+			Van_Device_Printf(VAN_LOG_NOTICE, "\n\r");
+		}
+
+	}
+    if (dataleninRxbuf >= (sizeof(RTUMessage))) {
+			
+		unsigned int msgLen = DecodeModbud_RTU(THD_NTCSAMP_Message, THD_NTCSAMP_uart.usart_RxBuf, &THD_NTCSAMP_uart.rx_head, THD_NTCSAMP_uart.rx_last, THD_NTCSAMP_uart.rx_max_len);
+      if (msgLen) {	  	
+//	  		for(int i=0;i<msgLen;i++){
+//				Van_Device_Printf(VAN_LOG_NOTICE, "%2x ",THD_NTCSAMP_Message[i]);
+//				if( i%32 == 31){
+//					Van_Device_Printf(VAN_LOG_NOTICE, "\n\r");
+//				}	
+//			}
+//			Van_Device_Printf(VAN_LOG_NOTICE, "\n\r");
+		
+      }
+    }
+	dataleninRxbuf = (THD_NTCSAMP_uart.rx_last + THD_NTCSAMP_uart.rx_max_len - THD_NTCSAMP_uart.rx_head) % THD_NTCSAMP_uart.rx_max_len;
+	if(dataleninRxbuf >= (sizeof(RTUMessage))) {
+		THD_NTCSAMP_uart.receive_flag = 1;  //缓冲区存在数据,接续解析
+	}
+    
+  }
+  if( THD_NTCSAMP_uart.uartError){
+	THD_NTCSAMP_uart.uartError = False;		
+    osDelay(100U);
+  	MX_UART5_Init();
+   Van_THD_NTCSAMP_Init(THD_NTCSAMP_uart.huart);
+	 Van_Device_Printf(VAN_LOG_ERROR, "sys_ctr_uart reset\n\r");	
+    __HAL_DMA_DISABLE(THD_NTCSAMP_uart.huart->hdmarx);
+    HAL_UART_Receive_DMA((UART_HandleTypeDef *)&huart5, THD_NTCSAMP_uart.usartDMA_RxBuf, RECEIVELEN);
+    __HAL_UART_CLEAR_IDLEFLAG((UART_HandleTypeDef *)&huart5);
+  	__HAL_UART_CLEAR_OREFLAG((UART_HandleTypeDef *)&huart5);
+		__HAL_UART_ENABLE_IT((UART_HandleTypeDef *)&huart5, UART_IT_IDLE);
+		__HAL_UART_ENABLE_IT((UART_HandleTypeDef *)&huart5, UART_IT_ERR);
+  }
+}
+
+
+/****************************************************************
+* 函数名:    Van_THD_NTCSAMP_Ctr_Init
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明:系统命令串口挂载
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+void Van_THD_NTCSAMP_Init(UART_HandleTypeDef *puart) {
+  THD_NTCSAMP_uart.huart = puart;
+  THD_NTCSAMP_uart.usartDMA_RxBuf = THD_NTCSAMP_tDMA_RxBuf;
+  THD_NTCSAMP_uart.usartDMA_TxBuf = THD_NTCSAMP_tDMA_TxBuf;
+  THD_NTCSAMP_uart.usart_RxBuf = THD_NTCSAMP_RxBuf;
+  THD_NTCSAMP_uart.usart_TxBuf = THD_NTCSAMP_TxBuf;
+  THD_NTCSAMP_uart.tx_DMA_len = THD_NTCSAMP_DMA_LEN;
+  THD_NTCSAMP_uart.rx_DMA_len = THD_NTCSAMP_DMA_LEN;
+  THD_NTCSAMP_uart.rx_max_len = THD_NTCSAMP_BUF_LEN;
+  THD_NTCSAMP_uart.tx_max_len = THD_NTCSAMP_BUF_LEN;
+  THD_NTCSAMP_uart.rx_last = 0;
+  THD_NTCSAMP_uart.rx_head = 0;
+  THD_NTCSAMP_uart.tx_last = 0;
+  THD_NTCSAMP_uart.tx_head = 0;
+  THD_NTCSAMP_uart.uartError = False;
+  memset((void *)THD_NTCSAMP_uart.usartDMA_RxBuf, 0, THD_NTCSAMP_uart.rx_DMA_len + 4);
+  HAL_UART_Receive_DMA(puart, THD_NTCSAMP_uart.usartDMA_RxBuf, THD_NTCSAMP_DMA_LEN);
+  __HAL_UART_CLEAR_IDLEFLAG(puart);
+  //	__HAL_UART_CLEAR_OREFLAG(puart);
+  __HAL_UART_ENABLE_IT(puart, UART_IT_IDLE);
+  __HAL_UART_ENABLE_IT(puart, UART_IT_ERR);
+  
+  THD_NTCSAMP_uart.mutex_dmaCopy = osMutexNew(&Mutex_attr1);
+}
+
+/****************************************************************
+* 函数名:    Van_UART_Sys_Ctr_Send
+* 创建时间:  2022/02/18
+* 创建人:    范义东
+* 函数说明:系统命令发送
+* 输入参数: 无
+
+* 输出参数:
+* 返回值 :   void
+****************************************************************/
+void Van_THD_NTCSAMP_Send(const unsigned char *pdata, unsigned int Length) {
+	unsigned char sedbuf[SYS_CTR_BUF_LEN];
+	unsigned int i = 0;
+	for (; i < Length; i++) {
+	  sedbuf[i] = pdata[i];
+	}
+	if( THD_NTCSAMP_uart.uartError) return;
+//	sedbuf[i++] = checksum & 0xff; /*结尾标记高位*/
+//	sedbuf[i++] = checksum >> 8;   /*结尾标记低位*/
+//	if(1){
+//		unsigned int alllen = msg.len + 8;
+//		Van_Device_Printf(VAN_LOG_NOTICE, "NTC: len%:d \n\r",alllen);
+//		if(1){
+//			for(int i=0; i <alllen; i++){
+//				Van_Device_Printf(VAN_LOG_NOTICE, "%2x ", sedbuf[i]);
+//				if(i%32==31){
+//				   Van_Device_Printf(VAN_LOG_NOTICE, "\n\r"); 
+//				}
+//			}
+//			Van_Device_Printf(VAN_LOG_NOTICE, "\n\r");
+//		}
+//	}
+	Van_UART_Fun_Send_DMA(sedbuf, Length, THD_NTCSAMP_uart.huart);
+
+} 
+#endif
+
+
+/* USER CODE END Private defines */

+ 51 - 0
DriverInterface/van_bsp_uart_fun.h

@@ -0,0 +1,51 @@
+
+/******************************************************************
+*  Copyright (C) 2023 - 2023 OneChip, Inc. All rights reserved.
+* File name: van_bsp_uart_fun.h
+* Author: fanyidong 	 Date:2020.11.21
+* Description:		STM32串口接收函数
+* Others:
+* History:
+        1. Date:
+                 Author:
+                 Modification:
+
+*****************************************************************/
+#ifndef VAN_BSP_UART_FUN_H
+#define VAN_BSP_UART_FUN_H
+
+typedef enum
+{
+	MSG_SYS_CTR = 0x03,/*工作指令*/
+	MSG_DEV_RPT = 0x04,/*设备上报*/
+	MSG_DEV_RECFLAG = 0x06,/*收到消息*/
+	MSG_RAW_DATA_1 = 0x10,/*原始数据控制*/
+} enMessagetype;
+
+
+
+typedef enum
+{
+	RAW_V1_SET_PID_SEC_OFFSET = 10,/*设置分段校准参数*/
+	RAW_V1_GET_PID_SEC_OFFSET = 11,/*获取分段校准参数*/
+	RAW_V1_SET_PID_MULT_PRAM = 12,/*设置分段pid参数*/
+	RAW_V1_GET_PID_MULT_PRAM = 13,/*获取分段pid参数*/
+	RAW_V1_SET_PID_SINGEPIDOFFSET = 14,/*单独pid,偏移*/
+	RAW_V1_GET_PID_SINGEPIDOFFSET = 15,/*获取分段pid参数*/
+	RAW_V1_SET_QUADRATICFIT = 16,/*单独pid,偏移*/
+	RAW_V1_GET_QUADRATICFIT = 17,/*获取分段pid参数*/
+} enRawdataCmdtype;
+
+
+/*通用消息结构体定义*/
+typedef struct 
+{
+    unsigned int fuid;
+    unsigned int cmd;
+    char data[128];
+} RawdataMessage,*P_RawdataMessage;
+
+
+
+#endif
+/* USER CODE END Private defines */

+ 211 - 0
DriverInterface/ws2812.c

@@ -0,0 +1,211 @@
+#include "ws2812.h"
+#include <string.h>
+
+#include "onechip_include_header.h"
+
+static  struct str_ws2812 lihgt_ctrl = {0};     //灯带控制结构
+static uint32_t tick = 0;
+
+/********************************************************************
+ * void ws2812_0()
+ *
+ *描述:灯带0信号
+ *参数:无
+ *返回:无
+ *其他:无
+ ********************************************************************/
+static void ws2812_0()
+{
+	GPIO_TypeDef *GPIOx = (GPIO_TypeDef *)sysinf.rgb_band_port; 
+	uint32_t GPIO_Pin_RESET = sysinf.rgb_band_pin << 16;
+	uint32_t GPIO_Pin_SET = sysinf.rgb_band_pin;
+	GPIOx->BSRR = (uint32_t)GPIO_Pin_SET;
+	GPIOx->BSRR = (uint32_t)GPIO_Pin_SET;
+	
+	GPIOx->BSRR = (uint32_t)GPIO_Pin_RESET;
+	GPIOx->BSRR = (uint32_t)GPIO_Pin_RESET;
+	GPIOx->BSRR = (uint32_t)GPIO_Pin_RESET;
+	GPIOx->BSRR = (uint32_t)GPIO_Pin_RESET;
+
+}
+
+/********************************************************************
+ * void ws2812_1()
+ *
+ *描述:灯带1信号
+ *参数:无
+ *返回:无
+ *其他:无
+ ********************************************************************/
+static void ws2812_1()
+{
+  	GPIO_TypeDef *GPIOx = (GPIO_TypeDef *)sysinf.rgb_band_port; 
+	uint32_t GPIO_Pin_RESET = sysinf.rgb_band_pin << 16;
+	uint32_t GPIO_Pin_SET = sysinf.rgb_band_pin;
+	GPIOx->BSRR = (uint32_t)GPIO_Pin_SET;
+	GPIOx->BSRR = (uint32_t)GPIO_Pin_SET;
+	GPIOx->BSRR = (uint32_t)GPIO_Pin_SET;
+	GPIOx->BSRR = (uint32_t)GPIO_Pin_SET;
+	GPIOx->BSRR = (uint32_t)GPIO_Pin_SET;
+	
+	GPIOx->BSRR = (uint32_t)GPIO_Pin_RESET;
+	GPIOx->BSRR = (uint32_t)GPIO_Pin_RESET;
+	GPIOx->BSRR = (uint32_t)GPIO_Pin_RESET;
+	GPIOx->BSRR = (uint32_t)GPIO_Pin_RESET;  
+  
+	GPIOx->BSRR = (uint32_t)GPIO_Pin_RESET;
+}
+
+/********************************************************************
+ * void ws2812_set_rgb(uint32_t rgb)
+ *
+ *描述:设置灯珠RGB颜色
+ *参数:uint32_t rgb:颜色, 低24位有效
+ *返回:无
+ *其他:无
+ ********************************************************************/
+void ws2812_set_rgb(uint32_t rgb)
+{
+    for(int i = 0; i < 24; i++)
+    {
+        if(rgb & 0x800000)
+        {
+            ws2812_1();
+        }
+        else
+        {
+            ws2812_0();
+        }
+        rgb <<= 1;
+    }
+}
+
+
+/********************************************************************
+ * void light_set(uint8_t mode_select, uint16_t speed_ms, uint32_t rgb_color, uint8_t channel)
+ *
+ *描述:设置灯带
+ *参数:uint8_t mode_select:模式
+ *参数:uint16_t speed_ms:变化周期
+ *参数:uint32_t rgb_color:颜色, 低24位有效
+ *参数:uint8_t channel:通道,0左,1右
+ *返回:无
+ *其他:无
+ ********************************************************************/
+void light_set(uint8_t mode_select, uint16_t speed_ms, uint32_t rgb_color, uint8_t channel)
+{
+    channel = channel ? 1 : 0;
+
+    if(lihgt_ctrl.light_color[channel] != rgb_color)
+        tick = 0;
+
+    lihgt_ctrl.light_mode[channel] = mode_select;
+    lihgt_ctrl.light_speed[channel] = speed_ms;
+    lihgt_ctrl.light_color[channel] = rgb_color;
+
+    //两边步调同步
+    if(lihgt_ctrl.light_mode[0] == lihgt_ctrl.light_mode[1])
+    {
+        lihgt_ctrl.breath_count[0] = lihgt_ctrl.breath_count[1];
+        lihgt_ctrl.breath_dir[0] = lihgt_ctrl.breath_dir[1];
+        lihgt_ctrl.light_color_use[0] = lihgt_ctrl.light_color_use[1];
+    }
+}
+
+
+/********************************************************************
+ * void light_refresh(uint32_t rgb_left, uint32_t rgb_right)
+ *
+ *描述:刷新灯带
+ *参数:uint32_t rgb_left:左边颜色
+ *参数:uint32_t rgb_right:右边颜色
+ *返回:无
+ *其他:无
+ ********************************************************************/
+void light_refresh(uint32_t rgb_left, uint32_t rgb_right)
+{
+    for(int i = 0; i < WS2812_NUM; i++)
+    {
+        ws2812_set_rgb(rgb_right);
+    }
+
+    for(int i = 0; i < WS2812_NUM; i++)
+    {
+        ws2812_set_rgb(rgb_left);
+    }
+}
+
+/********************************************************************
+ * void light_ctrl()
+ *
+ *描述:刷新控制调度
+ *参数:无
+ *返回:无
+ *其他:无
+ ********************************************************************/
+void light_ctrl()
+{
+    uint32_t r_g_b = 0; //r/g/b单色分量
+
+    //计算颜色
+    for(int i = 0; i < 2; i++)
+    {
+        switch (lihgt_ctrl.light_mode[i])
+        {
+            case MODE_NORMAL:   //常亮,只改变一次
+                if(lihgt_ctrl.light_color_use[i] != lihgt_ctrl.light_color[i])     //未刷新
+                {
+                    lihgt_ctrl.light_color_use[i] = lihgt_ctrl.light_color[i];
+                }
+                break;
+
+            case MODE_BLINK:    //闪烁,一个周期反转一次
+                if(tick % lihgt_ctrl.light_speed[i])
+                    break;
+
+                if(lihgt_ctrl.light_color_use[i])
+                    lihgt_ctrl.light_color_use[i] = 0;
+                else
+                    lihgt_ctrl.light_color_use[i] = lihgt_ctrl.light_color[i];
+                break;
+            
+            case MODE_BREATH:   //呼吸灯 y = x*x *r_g_b
+                lihgt_ctrl.light_color_use[i] = 0;
+
+                for(int j = 0; j < 3; j++)
+                {
+                    //计算分量
+                    r_g_b = (lihgt_ctrl.light_color[i] >> (j * 8))  & 0xFF;
+                    if(r_g_b)
+                    {
+                        r_g_b = (uint32_t)(r_g_b * lihgt_ctrl.breath_count[i] * lihgt_ctrl.breath_count[i] / BREATH_NUM / BREATH_NUM);  //y = x*x*r_g_b
+                        lihgt_ctrl.light_color_use[i] |= (r_g_b << (j * 8));
+                    }
+                }
+
+                //方向和x处理,x++,x--
+                if(lihgt_ctrl.breath_dir[i])
+                {
+                    if(lihgt_ctrl.breath_count[i] == BREATH_NUM)
+                        lihgt_ctrl.breath_dir[i] = 0;
+                    else
+                        lihgt_ctrl.breath_count[i]++;
+                }
+                else
+                {
+                    if(lihgt_ctrl.breath_count[i] == 0)
+                        lihgt_ctrl.breath_dir[i] = 1;
+                    else
+                        lihgt_ctrl.breath_count[i]--;
+                }
+
+                break;
+            default:
+                break;
+        }
+    }
+
+    tick += 50; //ms计时
+    //刷新灯带
+    light_refresh(lihgt_ctrl.light_color_use[0], lihgt_ctrl.light_color_use[1]);
+}

+ 46 - 0
DriverInterface/ws2812.h

@@ -0,0 +1,46 @@
+//WS2812灯带控制器
+
+
+
+#ifndef __WS2812_H__
+#define __WS2812_H__
+
+#include <stdint.h>
+#include "main.h"
+#define WS2812_NUM  5 //灯珠数量(分边)
+#define WS2812_IO PA3   //引脚
+#define BREATH_NUM 50   //呼吸灯变化次数
+
+struct str_ws2812
+{
+    uint32_t light_color[2];
+    uint32_t light_color_use[2];
+    uint8_t light_mode[2];
+    uint16_t light_speed[2];
+    uint8_t breath_count[2];
+    uint8_t breath_dir[2];
+};
+
+enum light_mode_type
+{
+    MODE_NORMAL,    //常亮
+    MODE_BLINK,     //闪烁
+    MODE_BREATH,    //呼吸
+};
+
+
+enum light_color_type
+{
+    COLOR_BLUE = 0x000088,      //蓝
+    COLOR_GREEN = 0x008800,     //绿
+    COLOR_RED = 0x880000,       //红
+    COLOR_YELLOW = 0x888800,    //黄
+};
+
+
+void light_ctrl(void);
+void light_refresh(uint32_t rgb_left, uint32_t rgb_right);
+void light_set(uint8_t mode_select, uint16_t speed_ms, uint32_t rgb_color, uint8_t channel);
+
+
+#endif

Dosya farkı çok büyük olduğundan ihmal edildi
+ 39 - 20
MDK-ARM/mini7_V2.uvguix.Administrator


+ 231 - 3
MDK-ARM/mini7_V2.uvoptx

@@ -149,13 +149,35 @@
         </SetRegEntry>
       </TargetDriverDllRegistry>
       <Breakpoint/>
+      <WatchWindow1>
+        <Ww>
+          <count>0</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>ADC1_Converted_Value[i*2+ch]</ItemText>
+        </Ww>
+        <Ww>
+          <count>1</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>g_uart2_rx_buf</ItemText>
+        </Ww>
+        <Ww>
+          <count>2</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>timerBuf</ItemText>
+        </Ww>
+        <Ww>
+          <count>3</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>sw_st</ItemText>
+        </Ww>
+      </WatchWindow1>
       <Tracepoint>
         <THDelay>0</THDelay>
       </Tracepoint>
       <DebugFlag>
         <trace>0</trace>
         <periodic>1</periodic>
-        <aLwin>0</aLwin>
+        <aLwin>1</aLwin>
         <aCover>0</aCover>
         <aSer1>0</aSer1>
         <aSer2>0</aSer2>
@@ -191,6 +213,20 @@
       <pszMrulep></pszMrulep>
       <pSingCmdsp></pSingCmdsp>
       <pMultCmdsp></pMultCmdsp>
+      <SystemViewers>
+        <Entry>
+          <Name>System Viewer\DMA1</Name>
+          <WinId>35904</WinId>
+        </Entry>
+        <Entry>
+          <Name>System Viewer\GPIOA</Name>
+          <WinId>35905</WinId>
+        </Entry>
+        <Entry>
+          <Name>System Viewer\GPIOC</Name>
+          <WinId>35903</WinId>
+        </Entry>
+      </SystemViewers>
       <DebugDescription>
         <Enable>1</Enable>
         <EnableFlashSeq>1</EnableFlashSeq>
@@ -223,7 +259,7 @@
 
   <Group>
     <GroupName>Application/User/Core</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -551,7 +587,7 @@
 
   <Group>
     <GroupName>Drivers/CMSIS</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -569,6 +605,198 @@
     </File>
   </Group>
 
+  <Group>
+    <GroupName>BoardInterface</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>29</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\BoardInterface\onechip_load_inf.c</PathWithFileName>
+      <FilenameWithoutPath>onechip_load_inf.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>tshell</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>30</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\tshell\van_bsp_debug_shell.c</PathWithFileName>
+      <FilenameWithoutPath>van_bsp_debug_shell.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>31</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\tshell\van_bsp_debug_uart.c</PathWithFileName>
+      <FilenameWithoutPath>van_bsp_debug_uart.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>32</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\tshell\van_com_algorithm.c</PathWithFileName>
+      <FilenameWithoutPath>van_com_algorithm.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>DriverInterface</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>33</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\DriverInterface\VAN_ITCallBack.c</PathWithFileName>
+      <FilenameWithoutPath>VAN_ITCallBack.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>34</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\DriverInterface\pt1000.c</PathWithFileName>
+      <FilenameWithoutPath>pt1000.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>35</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\DriverInterface\van_BSP_Com_Pwm.c</PathWithFileName>
+      <FilenameWithoutPath>van_BSP_Com_Pwm.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>36</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\DriverInterface\van_BSP_Scanner.c</PathWithFileName>
+      <FilenameWithoutPath>van_BSP_Scanner.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>37</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\DriverInterface\cJSON.c</PathWithFileName>
+      <FilenameWithoutPath>cJSON.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>38</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\DriverInterface\ws2812.c</PathWithFileName>
+      <FilenameWithoutPath>ws2812.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>39</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\DriverInterface\rgb381.c</PathWithFileName>
+      <FilenameWithoutPath>rgb381.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>40</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\DriverInterface\ESP32_WROOM_32D.c</PathWithFileName>
+      <FilenameWithoutPath>ESP32_WROOM_32D.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>41</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\DriverInterface\van_BSP_ESPUart.c</PathWithFileName>
+      <FilenameWithoutPath>van_BSP_ESPUart.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>42</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\DriverInterface\usr_motor.c</PathWithFileName>
+      <FilenameWithoutPath>usr_motor.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
   <Group>
     <GroupName>::CMSIS</GroupName>
     <tvExp>0</tvExp>

+ 88 - 3
MDK-ARM/mini7_V2.uvprojx

@@ -18,7 +18,7 @@
           <Vendor>STMicroelectronics</Vendor>
           <PackID>Keil.STM32F1xx_DFP.2.4.1</PackID>
           <PackURL>https://www.keil.com/pack/</PackURL>
-          <Cpu>IRAM(0x20000000-0x2000FFFF) IROM(0x8000000-0x807FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") TZ</Cpu>
+          <Cpu>IRAM(0x20000000-0x2000FFFF) IROM(0x8000000-0x807FFFF)  CLOCK(8000000) CPUTYPE("Cortex-M3") TZ</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
           <StartupFile></StartupFile>
           <FlashDriverDll></FlashDriverDll>
@@ -312,7 +312,7 @@
           </ArmAdsMisc>
           <Cads>
             <interw>1</interw>
-            <Optim>4</Optim>
+            <Optim>0</Optim>
             <oTime>0</oTime>
             <SplitLS>0</SplitLS>
             <OneElfS>1</OneElfS>
@@ -338,7 +338,7 @@
               <MiscControls></MiscControls>
               <Define>USE_HAL_DRIVER,STM32F103xE</Define>
               <Undefine></Undefine>
-              <IncludePath>../Core/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include</IncludePath>
+              <IncludePath>../Core/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include;../BoardInterface;../DriverInterface;../tshell</IncludePath>
             </VariousControls>
           </Cads>
           <Aads>
@@ -539,6 +539,91 @@
             </File>
           </Files>
         </Group>
+        <Group>
+          <GroupName>BoardInterface</GroupName>
+          <Files>
+            <File>
+              <FileName>onechip_load_inf.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\BoardInterface\onechip_load_inf.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>tshell</GroupName>
+          <Files>
+            <File>
+              <FileName>van_bsp_debug_shell.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\tshell\van_bsp_debug_shell.c</FilePath>
+            </File>
+            <File>
+              <FileName>van_bsp_debug_uart.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\tshell\van_bsp_debug_uart.c</FilePath>
+            </File>
+            <File>
+              <FileName>van_com_algorithm.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\tshell\van_com_algorithm.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>DriverInterface</GroupName>
+          <Files>
+            <File>
+              <FileName>VAN_ITCallBack.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\DriverInterface\VAN_ITCallBack.c</FilePath>
+            </File>
+            <File>
+              <FileName>pt1000.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\DriverInterface\pt1000.c</FilePath>
+            </File>
+            <File>
+              <FileName>van_BSP_Com_Pwm.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\DriverInterface\van_BSP_Com_Pwm.c</FilePath>
+            </File>
+            <File>
+              <FileName>van_BSP_Scanner.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\DriverInterface\van_BSP_Scanner.c</FilePath>
+            </File>
+            <File>
+              <FileName>cJSON.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\DriverInterface\cJSON.c</FilePath>
+            </File>
+            <File>
+              <FileName>ws2812.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\DriverInterface\ws2812.c</FilePath>
+            </File>
+            <File>
+              <FileName>rgb381.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\DriverInterface\rgb381.c</FilePath>
+            </File>
+            <File>
+              <FileName>ESP32_WROOM_32D.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\DriverInterface\ESP32_WROOM_32D.c</FilePath>
+            </File>
+            <File>
+              <FileName>van_BSP_ESPUart.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\DriverInterface\van_BSP_ESPUart.c</FilePath>
+            </File>
+            <File>
+              <FileName>usr_motor.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\DriverInterface\usr_motor.c</FilePath>
+            </File>
+          </Files>
+        </Group>
         <Group>
           <GroupName>::CMSIS</GroupName>
         </Group>

BIN
MDK-ARM/mini7_V2/adc.crf


+ 1 - 0
MDK-ARM/mini7_V2/adc.d

@@ -1,4 +1,5 @@
 mini7_v2\adc.o: ../Core/Src/adc.c
+mini7_v2\adc.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\math.h
 mini7_v2\adc.o: ../Core/Inc/adc.h
 mini7_v2\adc.o: ../Core/Inc/main.h
 mini7_v2\adc.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h

BIN
MDK-ARM/mini7_V2/adc.o


BIN
MDK-ARM/mini7_V2/dma.crf


BIN
MDK-ARM/mini7_V2/dma.o


BIN
MDK-ARM/mini7_V2/gpio.crf


BIN
MDK-ARM/mini7_V2/gpio.o


BIN
MDK-ARM/mini7_V2/i2c.crf


BIN
MDK-ARM/mini7_V2/i2c.o


BIN
MDK-ARM/mini7_V2/main.crf


+ 24 - 0
MDK-ARM/mini7_V2/main.d

@@ -37,3 +37,27 @@ mini7_v2\main.o: ../Core/Inc/i2c.h
 mini7_v2\main.o: ../Core/Inc/tim.h
 mini7_v2\main.o: ../Core/Inc/usart.h
 mini7_v2\main.o: ../Core/Inc/gpio.h
+mini7_v2\main.o: ../BoardInterface/onechip_include_header.h
+mini7_v2\main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h
+mini7_v2\main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h
+mini7_v2\main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h
+mini7_v2\main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdlib.h
+mini7_v2\main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\math.h
+mini7_v2\main.o: ../BoardInterface/onechip_basic_define.h
+mini7_v2\main.o: ../BoardInterface/onechip_devinf_define.h
+mini7_v2\main.o: ../tshell/van_bsp_debug_shell.h
+mini7_v2\main.o: ../tshell/van_bsp_debug_uart.h
+mini7_v2\main.o: ../BoardInterface/onechip_include_header.h
+mini7_v2\main.o: ../BoardInterface/onechip_load_inf.h
+mini7_v2\main.o: ../tshell/van_com_algorithm.h
+mini7_v2\main.o: ../DriverInterface/pt1000.h
+mini7_v2\main.o: ../DriverInterface/cJSON.h
+mini7_v2\main.o: ../DriverInterface/VAN_ITCallBack.h
+mini7_v2\main.o: ../DriverInterface/van_BSP_Com_Pwm.h
+mini7_v2\main.o: ../tshell/van_com_define.h
+mini7_v2\main.o: ../DriverInterface/van_BSP_Scanner.h
+mini7_v2\main.o: ../DriverInterface/van_BSP_ESPUart.h
+mini7_v2\main.o: ../DriverInterface/ESP32_WROOM_32D.h
+mini7_v2\main.o: ../DriverInterface/ws2812.h
+mini7_v2\main.o: ../DriverInterface/rgb381.h
+mini7_v2\main.o: ../DriverInterface/usr_motor.h

BIN
MDK-ARM/mini7_V2/main.o


BIN
MDK-ARM/mini7_V2/mini7_V2.axf


+ 3 - 29
MDK-ARM/mini7_V2/mini7_V2.build_log.htm

@@ -22,41 +22,15 @@ Dialog DLL:      TCM.DLL V1.36.1.0
  
 <h2>Project:</h2>
 C:\work\mini7_new\source\mini7_V2\MDK-ARM\mini7_V2.uvprojx
-Project File Date:  06/15/2026
+Project File Date:  06/16/2026
 
 <h2>Output:</h2>
 *** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
 Build target 'mini7_V2'
 assembling startup_stm32f103xe.s...
-compiling dma.c...
-compiling tim.c...
-compiling stm32f1xx_it.c...
-compiling adc.c...
-compiling main.c...
 compiling gpio.c...
-compiling stm32f1xx_hal_gpio_ex.c...
-compiling stm32f1xx_hal_msp.c...
-compiling i2c.c...
-compiling usart.c...
-compiling stm32f1xx_hal_adc.c...
-compiling stm32f1xx_hal.c...
-compiling stm32f1xx_hal_adc_ex.c...
-compiling stm32f1xx_hal_cortex.c...
-compiling stm32f1xx_hal_pwr.c...
-compiling stm32f1xx_hal_gpio.c...
-compiling stm32f1xx_hal_rcc.c...
-compiling stm32f1xx_hal_flash.c...
-compiling stm32f1xx_hal_rcc_ex.c...
-compiling stm32f1xx_hal_flash_ex.c...
-compiling stm32f1xx_hal_dma.c...
-compiling stm32f1xx_hal_exti.c...
-compiling system_stm32f1xx.c...
-compiling stm32f1xx_hal_tim_ex.c...
-compiling stm32f1xx_hal_uart.c...
-compiling stm32f1xx_hal_i2c.c...
-compiling stm32f1xx_hal_tim.c...
 linking...
-Program Size: Code=10804 RO-data=380 RW-data=16 ZI-data=2688  
+Program Size: Code=43264 RO-data=87616 RW-data=556 ZI-data=12300  
 FromELF: creating hex file...
 "mini7_V2\mini7_V2.axf" - 0 Error(s), 0 Warning(s).
 
@@ -81,7 +55,7 @@ Package Vendor: Keil
 <h2>Collection of Component Files used:</h2>
 
    * Component: ARM::CMSIS:CORE:5.1.2
-Build Time Elapsed:  00:00:05
+Build Time Elapsed:  00:00:02
 </pre>
 </body>
 </html>

+ 8189 - 699
MDK-ARM/mini7_V2/mini7_V2.hex

@@ -1,703 +1,8193 @@
 :020000040800F2
-:10000000900A0020CD010008FB250008012100080E
-:10001000F92500082B0300080D2B00080000000044
-:10002000000000000000000000000000FF250008A4
-:100030007503000800000000FD25000801260008E7
-:10004000E7010008E7010008E7010008E7010008F0
-:10005000E7010008E7010008E7010008E7010008E0
-:10006000E7010008E7010008E7010008E7010008D0
-:10007000E7010008E70100082D0300083903000824
-:100080004503000851030008E7010008E7010008E4
-:10009000E7010008E7010008E7010008E7010008A0
-:1000A000E7010008E7010008E7010008E701000890
-:1000B00079260008E7010008E7010008E7010008C9
-:1000C000E7010008E7010008E7010008E701000870
-:1000D000E7010008F52A0008012B0008E7010008E5
-:1000E000E7010008E7010008E7010008E701000850
-:1000F000E7010008E7010008E7010008E701000840
-:10010000E7010008E7010008E7010008E70100082F
-:1001100011290008E7010008E7010008E7010008CD
-:10012000E7010008E70100085D0300086903000813
-:1001300000F002F800F03AF80AA090E8000C8244BF
-:100140008344AAF10107DA4501D100F02FF8AFF29C
+:1000000038320020C1020008B5680008B35A000861
+:10001000F1650008293000083D7500080000000067
+:100020000000000000000000000000006D6A0008F1
+:100030009F30000800000000396A0008396D000890
+:10004000DB020008DB020008DB020008DB0200081C
+:10005000DB020008DB020008DB020008DB0200080C
+:10006000DB020008DB020008DB0200082D3000087C
+:10007000DB020008DB0200083930000845300008C8
+:10008000513000085D300008DB020008DB02000888
+:10009000DB020008DB020008DB020008293300084D
+:1000A000DB020008DB020008DB020008DB020008BC
+:1000B000596E0008DB020008DB020008DB020008C2
+:1000C000DB020008DB020008DB020008DB0200089C
+:1000D000DB0200080D75000825750008DB0200082A
+:1000E000DB020008DB020008DB020008DB0200087C
+:1000F000DB020008DB020008DB020008DB0200086C
+:10010000DB020008DB020008DB020008DB0200085B
+:1001100031710008DB020008DB020008DB02000886
+:10012000DB020008DB02000869300008DB0200087F
+:1001300000F002F800F0B4F80AA090E8000C824445
+:100140008344AAF10107DA4501D100F0A9F8AFF222
 :10015000090EBAE80F0013F0010F18BFFB1A43F0A5
-:10016000010318472C2A00004C2A0000103A24BF33
-:1001700078C878C1FAD8520724BF30C830C144BF0C
-:1001800004680C607047000000230024002500264E
-:10019000103A28BF78C1FBD8520728BF30C148BFEA
-:1001A0000B6070471FB51FBD10B510BD00F058F8AB
-:1001B0001146FFF7F7FF02F0BAFC00F076F803B43F
-:1001C000FFF7F2FF03BC00F07DF80000094880470C
-:1001D00009480047FEE7FEE7FEE7FEE7FEE7FEE729
-:1001E000FEE7FEE7FEE7FEE704480549054A064B41
-:1001F00070470000772600083101000890040020B5
-:10020000900A002090060020900600204FF0000287
-:1002100000B5134694469646203922BFA0E80C50FC
-:10022000A0E80C50B1F12001BFF4F7AF090728BFD7
-:10023000A0E80C5048BF0CC05DF804EB890028BF53
-:1002400040F8042B08BF704748BF20F8022B11F07C
-:10025000804F18BF00F8012B7047704770477047F8
-:10026000754600F02BF8AE4605006946534620F06F
-:100270000700854618B020B5FFF7B6FFBDE820405F
-:100280004FF000064FF000074FF000084FF0000B52
-:1002900021F00701AC46ACE8C009ACE8C009ACE805
-:1002A000C009ACE8C0098D46704710B50446AFF3ED
-:1002B00000802046BDE81040FFF781BF004870472E
-:1002C0003004002001491820ABBEFEE726000200E2
-:1002D0007047000070B5044600688168C943C907CB
-:1002E00017D1816821F00101816000F0A1FC054671
-:1002F0000AE000BF00F09CFC401B022804D92068E3
-:100300008068C043C00706D020688068C043C0072B
-:10031000F0D0002070BDA06A40F01000A062E06A3A
-:1003200040F00100E062012070BDFEE7014800F0EE
-:100330001BBA000064030020014800F015BA000059
-:1003400020030020014800F00FBA0000A80300209D
-:10035000014800F009BA0000EC030020014800F059
-:1003600003BA000098020020014800F0FDB9000027
-:10037000DC020020704772B6FEE70000F8B50024EA
-:10038000009490F824202546012A12D0012280F8FA
-:1003900024204A681F23072A0DD20668776B521E55
-:1003A00002EB820293409F430B6893401F437763A5
-:1003B00019E00220F8BD06680D2A0AD2376BD21F59
-:1003C00002EB820293409F430B6893401F433763C5
-:1003D00009E0F76A0D3A02EB820293409F430B68F3
-:1003E00093401F43F7620A68072306680A2A0AD364
-:1003F000F7680A3A02EB420293409F438B689340AE
-:100400001F43F76008E0376902EB420293409F43C5
-:100410008B6893401F4337610A68102A01D0112A64
-:1004200020D1124B02689A4217D193681B0219D44B
-:10043000936843F4000393600968102912D10C49B2
-:100440000C4A0968B1FBF2F101EB8101490000E0BF
-:10045000491E00910029FBD104E0816A41F020018E
-:100460008162012480F824502046F8BD0024014018
-:100470000C00002040420F002DE9F04104004FF035
-:1004800000057FD0A06A002628B9E66284F82460BF
-:10049000204600F081F82046FFF71CFFA16AC9063C
-:1004A00000D420B1A06A40F01000A0626AE0A16A06
-:1004B00021F4885141F00201A162334923688B4243
-:1004C000E16904D1B1F5402F01D14FF40021277B20
-:1004D0004FF4807C41EA470261680A43A1686145A4
-:1004E00008D0012906D0002194F814E0BEF1010FD4
-:1004F00002D00AE06146F7E7C7B1A76A47F02007D4
-:10050000A762E76A47F00107E7625F6827F4694777
-:100510000F435F60236899681C4F3940114399600D
-:10052000A16861450BD0012909D00CE0DFF860E03B
-:10053000A7690EEB47370F4347F40061E5E7218ACF
-:100540000D05A5F580152168CB6A23F470032B43B4
-:10055000CB62216889680F4B1940914208D1E6624D
-:10056000A16A21F0020141F00101A162BDE8F08120
-:10057000A06A20F0020040F01000A062E06A40F0A3
-:100580000100E0620120F1E7003C0140FDF7E1FFDE
-:1005900000E0FFFFFE0E1FFF00B585B000210091B7
-:1005A00001910291039100680E49884218D10E48CA
-:1005B000816941F400718161816901F400710491E4
-:1005C000816941F0100181618069694600F0100085
-:1005D00004900C20009003200190044800F026FABB
-:1005E00005B000BD00240140001002400010014091
-:1005F00010B590F821100022022905D00421816352
-:1006000080F82020012010BD01680B6823F00E0344
-:100610000B6001680B6823F001030B6090F8403019
-:10062000C46B012101FA03F3636080F8211080F8A4
-:100630002020104610BD00002DE9F05F90F8211039
-:100640000024022903D004218163012485E001688C
-:100650000A6822F00E020A6001680A6822F00102AC
-:100660000A603F4E3E4FB215DFF8F4C0DFF8F0905D
-:10067000DFF8ECA0DFF8E8B0DFF8E4E00168783FED
-:1006800013011502ACF1640CA9F15009AAF13C0A5E
-:10069000ABF1280BAEF1140E4FF48018B14227D9FC
-:1006A000B9420ED0614512D049451DD0514518D0F0
-:1006B000594518D0714501D1424615E0294EB14245
-:1006C00001D1012210E0274E1436B14201D110228F
-:1006D0000AE0244E2836B14206D0224A3C329142EA
-:1006E00001D11A4600E02A461E49091F0A602BE084
-:1006F000B94213D0614517D0494522D051451DD08C
-:1007000059451DD0714501D142461AE0B14202D18E
-:100710004FF0807215E0134EB14201D1012210E07A
-:10072000104E1436B14201D110220AE00D4E283687
-:10073000B14206D00B4A3C32914201D11A4600E048
-:100740002A46074980394A60012180F8211000219A
-:1007500080F82010416B01B188472046BDE8F09F2A
-:1007600080000240080402402DE9F05FC16B0A6876
-:1007700001680B68046C4FF0040808FA04F8844D13
-:10078000844E854FDFF814C2DFF81492DFF814A20C
-:10079000DFF814B2DFF814E218EA020F65D05FEA5E
-:1007A000437862D50A68920603D40A6822F00402EC
-:1007B0000A60DFF8F0814FF48062016808F11408E4
-:1007C00013011402414524D9A9420DD0B1420FD0E2
-:1007D000B9421AD0614515D0494515D0514501D1CE
-:1007E000120312E0594501D104220EE0714501D1F6
-:1007F00040220AE06D4D1435A94206D06B4A2832DA
-:10080000914201D11A4600E022466749091F0A6059
-:1008100029E0A94213D0B14215D0B94220D0614598
-:100820001BD049451BD0514502D14FF4800217E03F
-:10083000414502D14FF0806212E0594501D10422B6
-:100840000EE0714501D140220AE0584D1435A9420D
-:1008500006D0564A2832914201D11A4600E022467B
-:100860004B4908394A60C16A71E04FF0020808FA42
-:1008700004F818EA020F70D05FEA83786DD50A6831
-:10088000920606D40A6822F00A020A60012180F862
-:100890002110DFF810814FF40072016808F114088C
-:1008A00013011402414524D9A9420DD0B1420FD001
-:1008B000B9421AD0614515D0494515D0514501D1ED
-:1008C000120312E0594501D102220EE0714501D117
-:1008D00020220AE0354D1435A94206D0334A283289
-:1008E000914201D11A4600E022462F49091F0A60B1
-:1008F00029E0A94213D0B14215D0B94220D06145B8
-:100900001BD049451BD0514502D14FF4001217E0CE
-:10091000414502D14FF0007212E0594501D1022247
-:100920000EE0714501D120220AE0204D1435A94284
-:1009300006D01E4A2832914201D11A4600E02246D2
-:10094000134908394A60002180F82010816A002983
-:100950001CD0BDE8F05F0847FFE70825A540154219
-:1009600014D01A0712D50A6822F00E020A6090F815
-:100970004020C36B012101FA02F25A60816380F8C2
-:100980002110002180F82010016BE0E7BDE8F09F06
-:10099000080002401C0002403000024044000240B7
-:1009A000580002406C000240080402401C0402404F
-:1009B00030B560B11A4B026814219A4209D2194B22
-:1009C0001344B3FBF1F18900016417490AE00120E7
-:1009D00030BD134B5B421344B3FBF1F1890001645A
-:1009E0000F490839C163022180F82110136843F6CA
-:1009F000F0718B43F0E901142143D0E902452C4307
-:100A000021430469214344692143846921431943F3
-:100A1000116000214163012242770177084630BD11
-:100A200008040240F8FFFDBF000002402DE9F84F26
-:100A3000DFF8C8910024A9F1040B23460F2709F120
-:100A4000040AABF1040ED1E00125A54006EA050237
-:100A5000AA4276D1DFF8A8C14E68A6EB0C0866451D
-:100A60002BD00DDC032E34D005DC36B3012E19D08B
-:100A7000022E2FD11BE0112E16D0122E2AD119E0F2
-:100A8000B8F5881F19D006DCB8F5803F15D0B8F549
-:100A9000801F1FD111E0B8F5001F0ED0B8F5041F5C
-:100AA00018D10AE0CB6815E0CB681B1D12E0CB68BB
-:100AB00008330FE0CB680C330CE08B682BB1012BB3
-:100AC0004FF0080303D0456104E0042302E0056110
-:100AD00000E00023FF2A01D8064601E000F10406E9
-:100AE0004FEA840501D9A5F12005D6F8008007FA60
-:100AF00005FC28EA0C0803FA05F548EA0508C6F8DB
-:100B000000804D68ED0070D53E4DAE6946F001069F
-:100B1000AE61AD6924F0030605F0010500953A4D7C
-:100B200006EB050CDCF80850A607360F07FA06F8A6
-:100B300025EA0805DFF8D480404503D14FF00008CE
-:100B400025E052E0DFF8C880404502D14FF00108AF
-:100B50001DE0DFF8C080404502D14FF0020816E0EA
-:100B6000DFF8B480404502D14FF003080FE0DFF812
-:100B7000AC80404502D14FF0040808E0DFF8A080C7
-:100B8000404502D14FF0050801E04FF0060808FA91
-:100B900006F848EA0508CCF808804D68D9F80060E6
-:100BA000ED024D4601D5164300E096432E604D6898
-:100BB000DAF80060AD02554601D5164300E09643D1
-:100BC0002E604D68DBF80060AD035D4601D516432D
-:100BD00000E096432E604D68DEF80060ED03754638
-:100BE00001D5164300E096432E60641C0A68164641
-:100BF000E2407FF429AFBDE8F88F0000080401400F
-:100C000000001110001002400000014000080140E7
-:100C1000000C014000100140001401400018014088
-:100C2000001C01400AB1016170470904FBE70000A4
-:100C300001488068704700000000002070B5040083
-:100C400025D094F83D00002520B984F83C5020467A
-:100C500000F0B8F8242084F83D002068016821F0F5
-:100C6000010101602068016841F4004101602068D1
-:100C7000016821F40041016000F094FA4D4A616876
-:100C8000914201D84C4900E04C49884201D20120F0
-:100C900070BD4B492368B0FBF1F15E6826F03F065A
-:100CA0000E435E606368934206D94FF496735943CE
-:100CB0004FF47A73B1FBF3F12368491C1E6A26F0E6
-:100CC0003F06314319626168914210D84900401EC5
-:100CD000B0FBF1F2521CC2F30B02042A01D2042031
-:100CE00022E0B0FBF1F0401CC0F30B001CE0A26856
-:100CF000F2B301EBC10303EB0116431EB3FBF6F3A2
-:100D00005B1C43F480431B0549D092B301EBC10245
-:100D100002EB0111401EB0FBF1F0401CC0F30B00D0
-:100D200040F4804040F400402168CA694CF6FF73EB
-:100D30009A431043C861D4E9071001432068026850
-:100D400022F0C00211430160D4E90301014320688D
-:100D5000826848F2FF339A4311438160D4E9050168
-:100D600008432168CA6822F0FF021043C86001E00E
-:100D70000EE016E02068016841F001010160256481
-:100D8000202084F83D00256384F83E50002070BD8B
-:100D900001EB4106431EB3FBF6F35B1CB3E70120F6
-:100DA000C2E701EB4101401EB0FBF1F0401CC0F373
-:100DB0000B00B7E7A086010080841E0000093D00FB
-:100DC00040420F0030B585B00021009101910291A1
-:100DD00003911E4D03681E4C122103221D48AB4295
-:100DE00016D1A36943F00803A361A369039203F03A
-:100DF00008030493C023CDE900316946FFF716FECE
-:100E0000E06940F40010E061E06900F4001019E0CE
-:100E1000114DAB4217D1A36943F00803A361A36945
-:100E2000039203F0080304934FF44063CDE90031CB
-:100E30006946FFF7FBFDE06940F48000E061E0698E
-:100E400000F48000049005B030BD00000054004064
-:100E500000100240000C0140005800400248816828
-:100E6000027811448160704700000020074810B5E7
-:100E7000016841F010010160032000F075F80F20B7
-:100E800000F006F800F024F8002010BD0020024019
-:100E900070B50D4D04464FF47A712878B1FBF0F02F
-:100EA0000A490968B1FBF0F000F052FB48B9102C78
-:100EB00007D200222146501E00F036F800206C6058
-:100EC00070BD012070BD0000000000200C0000205B
-:100ED0000C4808B5816941F001018161816901F027
-:100EE00001010091C16941F08051C161C06900F008
-:100EF000805000900448416821F0E06141F0806139
-:100F0000416008BD0010024000000140002809DBDC
-:100F100000F01F02012191404009800000F1E02013
-:100F2000C0F8001170470000F0B40E4B1B680C466F
-:100F3000C3F30223C3F10705042D00D90425191DAD
-:100F4000072901D2002300E0DB1E012606FA05F185
-:100F5000491E214099409E40761E16403143F0BC08
-:100F600001F0D5BD0CED00E0064900F0070208686D
-:100F70004FF6FF03184040EA0220034A104308607E
-:100F8000704700000CED00E00000FA052DE9F84381
-:100F900005460078354CC00754D0E0690026C000F3
-:100FA00008D4E06940F08050E061E069012600F07B
-:100FB000805000902E480168C90512D4016880460F
-:100FC00041F480710160FFF733FE074605E000BF82
-:100FD000FFF72EFEC01B642823D8D8F80000C005F8
-:100FE000F6D5206A10F4407021D0A98801F4407130
-:100FF00081421CD0206A1F49012220F440700A60FF
-:1010000000220A602062C00711D0FFF711FE0746D8
-:1010100041F2883808E000BFFFF70AFEC11B4145D6
-:1010200002D90320BDE8F883206A8007F4D5206A3E
-:10103000696820F44070084320621EB1E06920F026
-:101040008050E0612878800705D56068A96820F4A1
-:101050004040084360602878C00605D5606869692B
-:1010600020F48000084360600020DBE700100240AD
-:1010700000700040400442422DE9F0470F46050051
-:1010800061D0434E306800F00700B84209D23068A2
-:1010900020F0070038433060306800F00700B842A5
-:1010A00051D128683B4C810712D5400703D56068B1
-:1010B00040F4E06060602878000703D5606840F481
-:1010C000605060606068A96820F0F00008436060CC
-:1010D0002878C00728D06868012810D02168022825
-:1010E00010D0890700292EDA616821F0030101433D
-:1010F0006160FFF79DFD804641F288390DE021686F
-:101100008903EFE78901EDE7FFF792FDA0EB080106
-:10111000494502D90320BDE8F0876068696800F09E
-:101120000C00B0EB810FEFD1306800F00700B8423F
-:101130000BD9306820F0070038433060306800F089
-:101140000700B84201D00120E5E72878400705D51F
-:101150006068E96820F4E060084360602878000770
-:1011600006D56068296920F4605040EAC1006060DB
-:1011700000F038F86168084AC1F30311515CC840B7
-:101180000649086006480068FFF782FE0020C2E7B3
-:101190000020024000100240762B00080C000020C6
-:1011A000040000200448054900684968044AC1F366
-:1011B0000221515CC84070470C0000200010024022
-:1011C000862B00080448054900684968044AC1F3B1
-:1011D000C221515CC84070470C0000200010024042
-:1011E000862B00080E4A51680E4801F00C03042BB0
-:1011F00011D0082B0FD10C48C1F38343C903C05C45
-:101200000AD55168084AC1F34041921E515C054A13
-:101210005043B0FBF1F07047044948437047000069
-:101220000010024000127A00662B000800093D0001
-:101230002DE9F84F040070D02078C04DC00749D088
-:101240006868C0F38100012807D06868C0F3810096
-:10125000022809D16868C00306D52868800339D5FB
-:1012600060680028E7D035E06068B0F5803F0BD0BB
-:1012700010B1B0F5A02F11D0286820F4803028607C
-:10128000286820F4802002E0286840F4803028603C
-:10129000606890B1FFF7CCFC06460AE0286840F48D
-:1012A00080202860F0E700BFFFF7C2FC801B6428A5
-:1012B00073D828688003F7D50CE0FFF7B9FC064621
-:1012C00005E000BFFFF7B4FC801B6428F0D8286855
-:1012D0008003F7D420789A4E80074FF001094FF031
-:1012E000000839D5686810F00C0F07D06868C0F3A3
-:1012F0008100022809D16868C00306D428688007E5
-:1013000014D52069012808D110E02069B0B1C6F8D1
-:101310000090FFF78DFC074605E00AE1FFF788FC27
-:10132000C01B0228C4D828688007F7D528686169DF
-:1013300020F0F80040EAC10028600DE0C6F8008007
-:10134000FFF776FC074604E0FFF772FCC01B02289B
-:1013500023D828688007F7D4207800072CD579484F
-:10136000A169D9B1C0F80090FFF762FC074604E01C
-:10137000FFF75EFCC01B02280FD8686A8007F7D50C
-:1013800071484FF4FA510068B0FBF1F0009000BFD3
-:101390000098411E0091FAD20EE080E0C0F8008073
-:1013A000FFF746FC074604E0FFF742FCC01B02289B
-:1013B00075D8686A8007F7D42078400760D5E86957
-:1013C0000027C00008D4E86940F08050E861E8696F
-:1013D000012700F0805000905C480168C90513D4D3
-:1013E0000168834641F480710160FFF721FC824669
-:1013F00006E000BFFFF71CFCA0EB0A0064284ED8F3
-:10140000DBF80000C005F5D5E06801280AD008B176
-:10141000052813D0286A20F001002862286A20F0ED
-:10142000040002E0286A40F001002862E06841F20E
-:10143000883B98B1FFF7FCFB82460BE0286A40F03E
-:1014400004002862EEE700BFFFF7F2FBA0EB0A0101
-:1014500059455AD8286A8007F6D50CE0FFF7E8FB13
-:10146000824605E0FFF7E4FBA0EB0A0159454CD8A2
-:10147000286A8007F6D41FB1E86920F08050E8613F
-:10148000E06988B36968C1F38101022944D0022868
-:10149000C6F8608004D0FFF7CBFB044638E034E0A8
-:1014A000FFF7C6FB074604E0FFF7C2FBC01B02289C
-:1014B0002BD828688001F7D4206AB0F5803F05D189
-:1014C0006868A16820F4003008436860D4E9080126
-:1014D0000843696821F4741108436860C6F8609095
-:1014E000FFF7A6FB044606E025E000BFFFF7A0FBE0
-:1014F000001B022809D828688001F7D51BE000BF2F
-:10150000FFF796FB001B022802D90320BDE8F88FE5
-:1015100028688001F4D40EE00128F7D06868226AB8
-:1015200000F48031914204D1616A00F47010884265
-:1015300001D00120EAE70020E8E7000000100240A7
-:1015400000004242800442420C0000200070004033
-:1015500010B5401EB0F1807F01D3012010BD4FF0C7
-:10156000E02460610F21601701F0D1FA0020A06132
-:1015700007202061002010BD7047704710B590F81B
-:101580003C20012A22D0012280F83C20CA688C68C5
-:1015900022F4407222434C6822F4806222430C6899
-:1015A00022F4006222430C6922F4805222434C69E7
-:1015B00022F400522243C969002322F480420A43E4
-:1015C00001684A6480F83C30002010BD022010BD44
-:1015D00070B590F83C20012A2CD0012480F83C40C2
-:1015E000022280F83D2003685A689D6822F0700648
-:1015F0000A6832435A60104B02689A420ED00F4B71
-:101600009A420BD0B2F1804F08D00D4B9A4205D0D0
-:101610000C4B9A4202D00C4B9A4204D1496825F0F7
-:1016200080031943916080F83D40002180F83C1010
-:10163000084670BD022070BD002C014000340140FE
-:101640000004004000080040000C004010B50400F9
-:1016500003D094F83D0010B107E0012010BD002038
-:1016600084F83C00204600F01FF8022084F83D007A
-:10167000211D206801F006F8012084F8460084F856
-:101680003E0084F83F0084F8400084F8410084F86C
-:10169000420084F8430084F8440084F8450084F84C
-:1016A0003D00002010BD000008B5174A016817482A
-:1016B000914207D1816941F400618161806900F440
-:1016C00000600CE0B1F1804F0BD0114A914207D17C
-:1016D000C16941F00201C161C06900F002000090DF
-:1016E00008BDC16941F00101C161C069002200F07B
-:1016F0000100009011461C20FFF716FCBDE80840D1
-:101700001C20FFF703BC0000002C01400010024029
-:101710000004004070B5044690F83C000025012804
-:1017200017D0012684F83C60022084F83D00206830
-:10173000826822F0770222F47F4282600868502893
-:1017400038D00DDC20284FD005DC90B3102811D103
-:101750004AE0022070BD302846D040280AD13BE044
-:1017600060282FD070280DD0B0F5805F03D0B0F581
-:10177000005F12D0012584F83D60002084F83C0011
-:10178000284670BDCB68D1E90121206800F0C8FF70
-:101790002068816841F0770109E0CB68D1E9012137
-:1017A000206800F0BDFF2068816841F480418160BD
-:1017B000E1E719E0CA684968206801F085F850211E
-:1017C000206806E0CA684968206801F08EF8602148
-:1017D000206800F0AFFFCEE7CA684968206801F0D2
-:1017E00073F840212068F4E7226801461046F0E7CC
-:1017F00070472DE9F04104460068C66805694FF05E
-:101800000007A90713D5B10711D5F91E0161012001
-:101810002077206880698007204602D0FFF7E8FF24
-:1018200004E000F0F0F8204600F0B0F927776807F0
-:1018300016D5700714D521686FF0040008610220E6
-:1018400020772068806910F4407F204602D0FFF79F
-:10185000CFFF04E000F0D7F8204600F097F9277793
-:10186000280715D5300713D521686FF008000861E7
-:10187000042020772068C0698007204602D0FFF747
-:10188000B7FF04E000F0BFF8204600F07FF92777AB
-:10189000E80616D5F00614D521686FF0100008612F
-:1018A000082020772068C06910F4407F204602D0CD
-:1018B000FFF79EFF04E000F0A6F8204600F066F96E
-:1018C0002777E80708D0F00706D021686FF00100FD
-:1018D0000861204600F05BF9280608D5300606D5D9
-:1018E00021686FF0800008612046FFF745FE68061A
-:1018F00008D5700606D521686FF0400008612046C3
-:1019000000F046F9A8060AD5B00608D521686FF0A0
-:10191000200008612046BDE8F041FFF72EBEBDE87B
-:10192000F081000000B585B0002100910191029185
-:1019300003911A4B02681A4802219A4211D1826916
-:1019400042F0080282618069039100F0080004906F
-:101950008803CDE9000169461248FFF767F805B032
-:1019600000BD114B9A42FAD1826942F010028261A5
-:101970008069039100F010000490C020CDE90001BF
-:1019800069460A48FFF752F80948416821F4406166
-:1019900041F0E06141F440614160E0E7002C01402A
-:1019A00000100240000C0140000400400010014003
-:1019B0000000014070B5044690F83C000025012865
-:1019C0000FD0012084F83C006AB1042A0FD0082A05
-:1019D00011D00C2A13D00125002084F83C002846A1
-:1019E00070BD022070BD206800F0ACFEF4E72068F6
-:1019F00000F0D8FEF0E7206800F00AFFECE720686E
-:101A000000F03AFFE8E7704710B5040003D094F8FF
-:101A10003D0010B107E0012010BD002084F83C001B
-:101A2000204600F01EF8022084F83D00211D2068A9
-:101A300000F028FE012084F8460084F83E0084F877
-:101A40003F0084F8400084F8410084F8420084F8A4
-:101A5000430084F8440084F8450084F83D000020E9
-:101A600010BD704770B5044690F83C0000260D4646
-:101A700001280FD0012084F83C006AB1042A1DD04F
-:101A8000082A2FD00C2A3FD00126002084F83C00E1
-:101A9000304670BD022070BD206800F053FE206803
-:101AA000816941F0080181612068816921F00401A8
-:101AB0008161206881692A69114311E0206800F082
-:101AC00071FE2068816941F400618161206881694B
-:101AD00021F480618161206881692A6941EA0221DB
-:101AE0008161D2E7206800F093FE2068C16941F06F
-:101AF0000801C1612068C16921F00401C161206849
-:101B0000C1692A69114311E0206800F0B5FE206820
-:101B1000C16941F40061C1612068C16921F480613B
-:101B2000C1612068C1692A6941EA0221C161ACE74B
-:101B300010B5040003D094F83D0010B107E0012077
-:101B400010BD002084F83C00204600F01EF8022062
-:101B500084F83D00211D206800F094FD012084F8E8
-:101B6000460084F83E0084F83F0084F8400084F882
-:101B7000410084F8420084F8430084F8440084F86B
-:101B8000450084F83D00002010BD70477047704745
-:101B90007047704770470000F8B501680446086850
-:101BA000CA684B6910F00F0F4FF0000559D003F0D1
-:101BB000010602F49077374365D0C10705D0D105FF
-:101BC00003D5616C41F001016164410705D5D90776
-:101BD00003D0616C41F002016164810705D5D9072A
-:101BE00003D0616C41F004016164010707D502F084
-:101BF0002001314303D0616C41F008016164616CE4
-:101C000000293AD0800604D5900602D5204600F07F
-:101C1000B4FE20684069616CC0F38010090700D4ED
-:101C200060B3204600F082FE20684069400621D55E
-:101C30002068143050E8001F21F0400140E80012F5
-:101C4000002AF5D1E06BA8B16D494163E06BFEF766
-:101C5000F3FC002811D0E06B416B01B0BDE8F0400F
-:101C6000084783060FD593060DD52046BDE8F840FA
-:101C700000F083BE2046FFF78DFFF8BD2046FFF73A
-:101C800089FF6564F8BD266B2023012E7CD1C60632
-:101C90007AD5D60678D508684868009048694FF02C
-:101CA0000206400640D5E16B086840680004000C5D
-:101CB000E8D0A28D8242E5D9E085886920282DD020
-:101CC00020680C3050E8001F21F4807140E80012B9
-:101CD000002AF5D12068143050E8001F21F00101DE
-:101CE00040E80012002AF5D12068143050E8001FA7
-:101CF00021F0400140E80012002AF5D184F842307A
-:101D0000256320680C3050E8001F21F0100140E8E6
-:101D10000012002AF5D1E06BFEF76AFC6663A08D25
-:101D2000E18D401A81B22AE0A08DE18D401A81B286
-:101D3000E08D0028A6D00029A4D022680C3252E8F9
-:101D4000000F20F4907042E80007002FF5D12068C2
-:101D5000143050E8002F22F0010240E80027002F45
-:101D6000F5D184F84230256320680C3050E8002F0C
-:101D700022F0100240E80023002BF5D166632046D4
-:101D8000FFF707FFF8BDFFE705062BD5150629D598
-:101D900094F841002128F5D1A068B0F5805F01D109
-:101DA0002069B0B1206A411C216221680078486036
-:101DB000E08C401E0004000CE084E3D12068C16880
-:101DC00021F08001C1602068C16841F04001C1601C
-:101DD000D8E7206A0088C0F308004860206A801CA9
-:101DE0002062E5E74006CDD55006CBD5CA6820462F
-:101DF00022F04002CA6084F8413000F080F9C1E767
-:101E00001D29000870B5040004D094F84100002595
-:101E100010B106E0012070BD84F84050204600F06B
-:101E200023F8242084F841002068C16821F400517F
-:101E3000C160204600F002FE2068016921F4904153
-:101E400001612068416921F02A0141612068C1686F
-:101E500041F40051C1606564202084F8410084F899
-:101E600042006563002070BD2DE9F04385B0002578
-:101E700000950195029503950446964BD0F800C055
-:101E8000954802210322102780264FF480699C4543
-:101E900059D1C36943F40023C361C36903F4002328
-:101EA0000493836943F0100383618069CDE9009155
-:101EB00000F01000CDE90320DFF82082694640469B
-:101EC000FEF7B4FD3001CDE90005A946694640465C
-:101ED0000295FEF7ABFDDFF80C8281494046C0E970
-:101EE0000015C0E90256C8F81050C8F81450C8F8D8
-:101EF0001850C8F81C50FEF75BFD08B1FEF73BFA1E
-:101F0000784D7748C4F83C8044352830C8F82440E0
-:101F1000C5E90007C5E90296C5F81090C5F8149008
-:101F2000C5F818902846C5F81C90FEF741FD08B189
-:101F3000FEF721FAA5630022114634206C62FEF7F9
-:101F4000F3FF342060E0DFF8A081684BC44560D126
-:101F5000D0F818C04CF4804CC0F818C0D0F818C0A5
-:101F60000CF4804CCDF810C0D0F818C04CF0040C24
-:101F7000C0F818C08069039200F00400049058155E
-:101F8000CDE90001694698461846FEF74FFDCDE9B8
-:101F90000095694640460295FEF748FDDFF844810A
-:101FA000534908F188084046B146C0E90015C0E928
-:101FB0000256C8F81050C8F81450C8F81850C8F89D
-:101FC0001C50FEF7F5FC08B1FEF7D5F9454E484820
-:101FD000C4F83C80CC361438C8F824403060C6E9D8
-:101FE0000175C6E903957561B5613046F561FEF787
-:101FF000DFFC08B1FEF7BFF9A663002211462520D9
-:102000007462FEF791FF2520FEF780FF05B0BDE862
-:10201000F083DFF8E080C445F8D1D0F81CC04CF460
-:10202000003CC0F81CC0D0F81CC00CF4003CCDF83B
-:1020300010C0D0F818C04CF0040CC0F818C080696B
-:10204000039200F0040004900420CDE900016946E9
-:1020500098461846FEF7EAFC0820CDE900056946D7
-:1020600040460295FEF7E2FCDFF88C902049484696
-:102070001431C0E90015C0E90256C9F81050C9F87A
-:102080001450C9F81850B046C9F81C50FEF790FC1F
-:1020900008B1FEF770F9184E1548C4F83C90443664
-:1020A0002830C9F824403060C6E90175C6E90385C7
-:1020B0007561B5613046F561FEF77AFC08B1FEF74F
-:1020C0005AF9A6630022114626207462FEF72CFFFF
-:1020D000262099E7004C004000100240001001400B
-:1020E00030040240980200200038014000080140FE
-:1020F0005800024000440040A80300207047704789
-:10210000FEE700003EB500241148009401940294BB
-:102110000E498460016004730475012505614FF464
-:1021200060214460C161FEF7A7F908B1FEF723F909
-:102130000C20CDE90005694602940548FEF71EF91A
-:10214000002801D0FEF717F93EBD00000024014031
-:1021500010000020214808B5416941F002014161A9
-:10216000416901F002010091416941F001014161C1
-:102170004069002200F00100009011460E20FEF799
-:10218000D3FE0E20FEF7C2FE002211460F20FEF7FE
-:10219000CBFE0F20FEF7BAFE002211461020FEF7FC
-:1021A000C3FE1020FEF7B2FE002211461120FEF7FA
-:1021B000BBFE1120FEF7AAFE002211463A20FEF7D0
-:1021C000B3FE3A20FEF7A2FE002211463B20FEF7A6
-:1021D000ABFEBDE808403B20FEF798BE0010024071
-:1021E0002DE9F04F85B000243F48009401940294FB
-:1021F0000394816941F020018161816901F020012E
-:102200000491816941F010018161816901F010013F
-:102210000491816941F004018161816901F0040147
-:102220000491816941F0080181618069DFF8BC9007
-:1022300000F008000490002250214846FEF7F2FC0E
-:10224000DFF8ACB04FF48877002239465846FEF7E5
-:10225000E9FCDFF8A0A046F22508002241465046DE
-:10226000FEF7E0FCA220CDE900046946484602944E
-:10227000FEF7DCFB502001250226CDE90005CDE963
-:10228000024669464846FEF7D1FB00970396CDE922
-:10229000015469465846FEF7C9FBCDF80080039605
-:1022A000CDE9015469465046FEF7C0FB4FF48D70EE
-:1022B000CDE90004694650460294FEF7B7FB4FF49F
-:1022C0009050CDE90004694658460294FEF7AEFBF3
-:1022D0000420CDE90004694607480294FEF7A6FBF6
-:1022E00005B0BDE8F08F000000100240000801407A
-:1022F00000100140000C0140001401400D4810B5D1
-:102300000B4901600C49416000214FF4804281601B
-:10231000C0E9031241618161C1610162FEF78EFC77
-:10232000002803D0BDE81040FEF725B810BD00001E
-:102330000054004040000020A08601000D4810B568
-:102340000B4901600C49416000214FF480428160DB
-:10235000C0E9031241618161C1610162FEF76EFC57
-:10236000002803D0BDE81040FEF705B810BD0000FE
-:102370000058004094000020A086010010B596B0DF
-:1023800000240F9410941194129413941C2108A803
-:102390001494FDF73BFF20216846FDF737FF2748DF
-:1023A0002549C0E900144FF6FF71C0E902410461FC
-:1023B00044618461FFF74AF908B1FDF7DCFF4FF48F
-:1023C00080500F900FA91D48FFF7A4F908B1FDF741
-:1023D000D2FF1A48FFF718FB08B1FDF7CCFF1394A2
-:1023E00013A916481494FFF7F3F808B1FDF7C3FFDB
-:1023F000089409940A940B940C940D94082208A94B
-:102400000E480E94FFF7D6FA08B1FDF7B4FF00941A
-:102410004FF40050CDE904400294019403946946BE
-:1024200006480794FFF7AAF808B1FDF7A4FF034890
-:10243000FFF778FA16B010BD002C0140E80000202C
-:1024400010B586B0002417480094019402940394B8
-:1024500004944FF080410594C0E900144FF47A6170
-:10246000C0E902414FF4007184610161FFF7EEF8A9
-:1024700008B1FDF780FF4FF480500090694609488D
-:10248000FFF748F908B1FDF776FF049404A9054861
-:102490000594FFF79DF8002801D0FDF76CFF06B00A
-:1024A00010BD00003001002010B58EB0002407944C
-:1024B000089409940A940B941C2168460C94FDF727
-:1024C000A5FE22482049C0E900144FF6FF71C0E97B
-:1024D000024104618461FFF7B9F808B1FDF74BFFD1
-:1024E0004FF48050079007A91848FFF713F908B177
-:1024F000FDF741FF1548FFF71BFB08B1FDF73BFF58
-:102500000B940BA911480C94FFF762F808B1FDF782
-:1025100032FF6020CDE900040294002269460B4896
-:102520000494FFF79FFA08B1FDF725FF04226946DE
-:102530000648FFF797FA08B1FDF71DFF0348FFF7BC
-:10254000F1F90EB010BD0000000400407801002039
-:102550000C4810B50A4901604FF4E1314160002197
-:1025600081600C22C160C0E904128161C161FFF782
-:1025700049FC002803D0BDE81040FDF7FCBE10BDAB
-:10258000004C0040C00100200C4810B50A49016011
-:102590004FF4E1314160002181600C22C160C0E94B
-:1025A00004128161C161FFF72DFC002803D0BDE852
-:1025B0001040FDF7E0BE10BD0038014008020020C9
-:1025C0000C4810B50A4901604FF4E1314160002127
-:1025D00081600C22C160C0E904128161C161FFF712
-:1025E00011FC002803D0BDE81040FDF7C4BE10BDAB
-:1025F0000044004050020020FEE7FEE770477047AD
-:10260000FEF72CBC30B595B028216846FDF7FEFDDD
-:1026100014210AA8FDF7FAFD18210FA8FDF7F6FD11
-:102620000121080400240491CDE90010CDE908043B
-:102630000294022507956846FEF7FAFD08B172B6C6
-:10264000FEE70F20CDE90A054FF48060CDE90C408C
-:1026500000210AA80E94FEF70FFD08B172B6FEE73E
-:102660000FA80F951194FEF791FC002801D072B6C7
-:10267000FEE715B030BD70470148FFF7BAB800005B
-:1026800030010020F0B50268204C214D214E224F30
-:10269000224B4FF0804CA04209D0984207D06045B1
-:1026A00005D0A84203D0B04201D0B84204D122F0F4
-:1026B000700E4A6842EA0E02A04209D0984207D042
-:1026C000604505D0A84203D0B04201D0B84203D142
-:1026D00022F44075CA682A434D6922F080022A43D9
-:1026E00002608A68C2620A688262A04201D098428F
-:1026F00001D109690163012141610169C90703D061
-:10270000016921F001010161F0BD0000002C0140D0
-:102710000004004000080040000C0040003401406C
-:1027200010B5846842EA032224F47F440A4322431A
-:10273000826010BD826822F070020A4342F00701F5
-:1027400081607047F0B5036A026A22F001020262FA
-:1027500042688469124E24F073050C682C4323F000
-:1027600002058B682B430D4DA84201D0B04205D124
-:1027700023F00807CB683B4323F00403A84201D0B1
-:10278000B04205D14D6922F4407215438A692A434B
-:1027900042608461496841630362F0BD002C0140DE
-:1027A00000340140F0B5026A036A23F010030362AB
-:1027B000436884690D6824F4E64444EA05248D687E
-:1027C00022F0200242EA05120F4D104EA84201D01D
-:1027D000B04206D1CF6822F0800242EA071222F00E
-:1027E0004002A84201D0B04207D14D6923F44063B2
-:1027F00043EA85038D6943EA850343608461496840
-:1028000081630262F0BD0000002C014000340140F1
-:10281000F0B5026A036A23F4807303624368C469F3
-:1028200022F4007224F073050C68124E2C438D685C
-:1028300042EA05220E4DA84201D0B04206D1CF682F
-:1028400022F4006242EA072222F48062A84201D008
-:10285000B04207D14D6923F4405343EA05138D6913
-:1028600043EA05134360C4614968C1630262F0BD75
-:10287000002C01400034014030B5046A026A22F4A1
-:10288000805202624268C3690D6823F4E64343EA5A
-:1028900005238D6824F4005444EA0534084DA84209
-:1028A00002D0084DA84204D14D6922F4804242EA88
-:1028B00085124260C36149680164046230BD000052
-:1028C000002C01400034014010B5036A046A24F072
-:1028D00001040462846924F0F00444EA021423F041
-:1028E0000A020A438461026210BD10B5036A046AD9
-:1028F00024F010040462846923F0A00324F47044DB
-:1029000044EA023243EA01118261016210BD000013
-:102910000148FFF741B90000C001002010B5406A2E
-:102920000021C185C184FFF735F910BD01680C3164
-:1029300051E8002F22F4907241E80023002BF5D1DA
-:102940000168143151E8002F22F0010241E8002310
-:10295000002BF5D1016B012909D101680C3151E837
-:10296000002F22F0100241E80023002BF5D1202196
-:1029700080F8421000210163704708B590F84210BA
-:10298000222901D0022008BD82684FF480539A4268
-:1029900001D1016921B1816A9A421BD04AB10AE092
-:1029A0000268816A5268C2F308020A80816A891C3F
-:1029B00008E0026972B10268526802F07F020A7090
-:1029C000816A491C8162C18D491E0904090CC185B7
-:1029D00003D01BE002685268F1E70168CA6822F080
-:1029E0002002CA600168CA6822F48072CA60016865
-:1029F0004A6922F001024A61202180F84210002138
-:102A00004163026B012A03D0FFF778FB002008BD69
-:102A1000016301680C3151E8002F22F0100241E8F7
-:102A20000023002BF5D101680A68D20602D50A6896
-:102A300049680091818DFFF7ACF8E7E770B504466F
-:102A400000680169E26821F4405111430161216984
-:102A5000A0680843616908432168CA6841F20C63B1
-:102A60009A430243CA6020684169A26921F4407117
-:102A7000114341611E492068884202D1FEF7A2FB42
-:102A800001E0FEF78FFB00EBC00101EB0012606874
-:102A900064218000B2FBF0F3B3FBF1F36FF0180692
-:102AA0007343B2FBF0F5B2FBF0F605EB830532237E
-:102AB00003EB0515B5FBF1F5B6FBF1F605F0F005F6
-:102AC00005EB0615B2FBF0F6B2FBF0F0B0FBF1F04F
-:102AD0006FF01802504306EB800003EB0010B0FBD0
-:102AE000F1F0216800F00F002844886070BD0000FC
-:102AF000003801400148FFF74FB8000008020020ED
-:102B00000148FFF749B8000050020020FEE709071E
-:102B1000090E002804DB00F1E02080F80014704763
-:102B200000F00F0000F1E02080F8141D7047FEF760
-:102B30009DF9FFF767FDFFF753FBFFF70BFBFFF76F
-:102B4000E1FAFFF705FDFFF71FFDFFF739FDFFF77E
-:102B5000D5FBFFF7F3FBFFF711FCFFF771FCFFF765
-:102B6000A3FCFEE7010202030405060708090A0B9D
-:102B70000C0D0E0F101000000000000000000102FC
-:102B80000304060708090000000001020304000016
-:102B9000B02B000800000020100000006C010008AD
-:102BA000C02B000810000020800A000088010008E7
-:102BB00001000000100000000000000000127A0078
+:100160000103184734AB000054AB00000A444FF0C1
+:10017000000C10F8013B13F0070408BF10F8014B06
+:100180001D1108BF10F8015B641E05D010F8016B4B
+:10019000641E01F8016BF9D113F0080F1EBF10F8AF
+:1001A000014BAD1C0C1B09D16D1E58BF01F801CBD2
+:1001B000FAD505E014F8016B01F8016B6D1EF9D555
+:1001C0009142D6D37047000000230024002500266A
+:1001D000103A28BF78C1FBD8520728BF30C148BFAA
+:1001E0000B6070476E2900F0AE85702900F0FD812C
+:1001F00066290AF09B8365290AF0988367290AF02B
+:10020000958361290AF0948303681B0A28BF41F093
+:100210008001692900F06E81642900F06B817529E5
+:1002200000F068816F2901F08C80782900F0C98185
+:10023000E92901F02780E42901F02480F52901F063
+:100240002180EF2901F08980F82900F0C881036836
+:10025000DB0928BF41F08001632901F0E78573299C
+:1002600001F0EC85E32901F0F785F32901F0FC8525
+:10027000002070471FB59DE8030000F08FFC01F0DF
+:10028000A1FB04000020002109F01EFD401C60605D
+:100290000020002109F02EFDE0601FBD10B510BD4B
+:1002A00001F0D0FE1146FFF7E5FF08F0A3FC02F0D5
+:1002B00027F903B4FFF7F2FF03BC02F057F900007F
+:1002C0000948804709480047FEE7FEE7FEE7FEE7EA
+:1002D000FEE7FEE7FEE7FEE7FEE7FEE70448054926
+:1002E000054A064B70470000AD6D0008310100085B
+:1002F000381F002038320020382E0020382E0020F1
+:1003000070B5064600F02AFC056806F10B0020F0E7
+:100310000704B4429CBF002070BD2B466A68BAB186
+:100320001068A04210D304F1080188423CBF506815
+:10033000586007D35168101941601168091B0160AA
+:1003400058601460101D70BD13465268002AE7D132
+:100350002146284600F00EFC0028DED170BD70B5A5
+:100360000446051F00F0FAFB0068002C14BF446827
+:1003700070BD002C18BFAC423CBF20466468F8D367
+:1003800001680A18AA4218BF456003D12A680546C9
+:100390001144016028684119A1421CBF6C6070BD06
+:1003A0006168696021680844286070BD70B50D46B9
+:1003B0000646041F00F0D2FBD0F800C0C5B1E6B17C
+:1003C00005F10B0020F00703AB423CBF002070BDDD
+:1003D0002068984238BFDCF8042013D3C11A0829DA
+:1003E0002FD3E01840F8041B2360FFF7B8FF28E084
+:1003F0003046FFF7B4FF002070BD2846BDE87040CE
+:10040000FFF77EBF002A18BFA2423CBF9446526845
+:10041000F8D30119914216D111680844984212D3B9
+:10042000C11A08293CBF2060506808D35168E01801
+:100430004160216812681144C91A01602360CCF838
+:100440000400201D70BD181FFFF75AFF050007D0DC
+:1004500021680A1F211D00F0B9FA201DFFF77FFF58
+:10046000284670BD10B5044600F070FB0068005DC2
+:10047000C00602D504F1200010BD204610BD0000CA
+:100480001CB50C46064B7B4469460090204600F0A4
+:1004900082FE04460020694600F090FE20461CBD06
+:1004A000330D000070B5044685690068C10601D5AA
+:1004B000302600E02026C00707D070BDD4E9012116
+:1004C00030469047206A401C20626D1EF6D570BDF4
+:1004D00070B5044685690078C00707D170BDD4E9BE
+:1004E000012120209047206A401C20626D1EF6D515
+:1004F00070BD00002DE9F041064600241068752902
+:10050000314616A510D000F08AFB002802DA4042DE
+:1005100013A507E031688A0701D512A502E0490753
+:1005200004D511A5012401E000F082FB00210A227C
+:1005300006F1240709E0B0FBF2FCB0FBF2F302FB8A
+:100540001C00303078541846491C0028F3D123464B
+:100550002A463046BDE8F04100F09CBB0000000098
+:100560002D0000002B00000020000000F0B40D461C
+:100570000188090502D5214C7C4402E01F4C7C44D3
+:100580000E34002100F1240608E002F00F071209E2
+:10059000E75D42EA03721B097754491C52EA0307DC
+:1005A000F3D102780023120704D5702D06D009B1CB
+:1005B000022311342246F0BC00F06CBB012310343E
+:1005C000F8E770B504460D462146106800F030FB90
+:1005D000024629462046BDE870400023C6E7D21DEA
+:1005E00022F00703D3E90023C0E70368126843F051
+:1005F000200303600823C3610023B7E7F4A40000CD
+:100600002DE9F05F894604464FF0000ADFF874B127
+:10061000FB44C0F820A02046E1688847002874D039
+:10062000252806D0D4E901219047206A401C206289
+:10063000F1E700265F462046E16888472028054606
+:1006400007DB312D05D2781910F8200C08B10643CC
+:10065000F1E7B00701D526F00406C4F81CA0002776
+:10066000C4F818A02A2D09D0284607F0E4FB38B3B7
+:1006700004EB8708303DC8F8185019E059F8041BFE
+:10068000204604EB87029161E1688847012F054607
+:1006900018D1E069002820DA26F020061DE0D8F8FD
+:1006A000180000EB800005EB40003038C8F8180057
+:1006B0002046E1688847054607F0BDFB0028EED1DB
+:1006C000012F0AD02E2D08D12046E16888477F1CD3
+:1006D0000546022F46F02006C4DBA069002803DA95
+:1006E000404246F00106A061F00701D026F0100656
+:1006F0006C2D0BD0682D09D04C2D39D06A2D35D0FA
+:10070000742D35D07A2D33D016E038E0E1682F46CD
+:1007100020468847B842054609D16C2F26D04FF4B1
+:100720008060E168064320468847054604E06C2F58
+:100730001AD04FF4807006430DB3A5F1410019287B
+:1007400002D8203546F400664A46294620462660EF
+:100750004E46FFF747FD80B101280BD0F61D26F06D
+:10076000070000F1080956E74020E4E78020D8E7B9
+:100770000020D6E706F104094DE7284652E7206A33
+:10078000BDE8F09F84A4000070B5064600F0EAF9C9
+:100790000468054630460A22002101F0D7F82C6093
+:1007A00070BD401ECAB210F8011F8A4202D0002953
+:1007B000F9D10020704740EA010310B59B070FD123
+:1007C000042A0DD310C808C9121F9C42F8D020BAC1
+:1007D00019BA884201D9012010BD4FF0FF3010BD79
+:1007E0001AB1D30703D0521C07E0002010BD10F847
+:1007F000013B11F8014B1B1B07D110F8013B11F80D
+:10080000014B1B1B01D1921EF1D1184610BD40EACD
+:100810000103024630B59B0710D14FF0013400E0D0
+:1008200008C208C91D1B9D4315EAC41FF8D013F068
+:10083000FF0102F8011B0DD01B0AF8E711F8013B7C
+:10084000002B02F8013B05D011F8013B002B02F808
+:10085000013BF3D130BD10B5431C02E010F8011B81
+:1008600071B18107FAD14FF0013202C88C1A8C4362
+:1008700014EAC211F9D0C01A0A0603D0C01E10BD76
+:10088000C01A10BD0A0401D0801E10BD0902FCD0A0
+:10089000401E10BD40EA010370B59B072ED14FF0FA
+:1008A0000136042A2AD308C810C99D1B9D43121F74
+:1008B00015EAC61517D0D8B2E1B2401A50EA056160
+:1008C00010D198B2A1B2401A50EA05410AD123F0E2
+:1008D0007F4024F07F41401A50EA052102D1180ED2
+:1008E000A0EB146070BDA342DBD018BA21BA8842D5
+:1008F00001D9012070BD4FF0FF3070BD0AB9002052
+:1009000070BD10F8013B11F8014B63B1A3420AD14D
+:10091000521E08D010F8013B11F8014B1BB1A34245
+:1009200001D1521EEDD1181B70BD421E12F8013FBD
+:10093000002BFBD111F8013B002B02F8013BF9D150
+:100940007047032A40F2308010F0030C00F015804D
+:1009500011F8013BBCF1020F624498BF11F801CBC2
+:1009600000F8013B38BF11F8013BA2F1040298BF27
+:1009700000F801CB38BF00F8013B11F0030300F091
+:100980002580083AC0F0088051F8043B083A51F835
+:1009900004CBA0E80810F5E7121D5CBF51F8043B3A
+:1009A00040F8043BAFF30080D20724BF11F8013BAD
+:1009B00011F801CB48BF11F8012B24BF00F8013B0F
+:1009C00000F801CB48BF00F8012B704710B5203A62
+:1009D000C0F00B80B1E81850203AA0E81850B1E8F8
+:1009E0001850A0E81850BFF4F5AF5FEA027C24BFAE
+:1009F000B1E81850A0E8185044BF18C918C0BDE8A5
+:100A000010405FEA827C24BF51F8043B40F8043B6D
+:100A100008BF7047D20728BF31F8023B48BF11F822
+:100A2000012B28BF20F8023B48BF00F8012B70477C
+:100A30004FF000020429C0F0128010F0030C00F007
+:100A40001B80CCF1040CBCF1020F18BF00F8012B85
+:100A5000A8BF20F8022BA1EB0C0100F00DB85FEA53
+:100A6000C17C24BF00F8012B00F8012B48BF00F81F
+:100A7000012B70474FF0000200B51346944696468E
+:100A8000203922BFA0E80C50A0E80C50B1F12001A1
+:100A9000BFF4F7AF090728BFA0E80C5048BF0CC04F
+:100AA0005DF804EB890028BF40F8042B08BF7047AD
+:100AB00048BF20F8022B11F0804F18BF00F8012B1F
+:100AC000704700004FF0013C50F8042B51F8043BF4
+:100AD0009A4221D1A2EB0C03934313EACC1317D112
+:100AE00050F8042B51F8043B9A4215D1A2EB0C03A9
+:100AF000934313EACC130BD150F8042B51F8043B69
+:100B00009A4209D1A2EB0C03934313EACC13DBD036
+:100B10004FF00000704700BFD01A01BAB1FA81F15E
+:100B200001F0180122FA01F0CB40C1F12001DBB243
+:100B3000C0B2C01A2CFA01F3D11A914311EAC311C1
+:100B4000E6D17047704770477047000010B500F05D
+:100B500039FF001D10BD00BF7191000000487047B3
+:100B6000E01E002000487047D81E002070477047E4
+:100B70007047704738B504460A4600206946AFF30F
+:100B80000080002808BF38BD02460099204600F0CA
+:100B90001DFF012038BD012001F04CBAF8B5AFF3BC
+:100BA0000080054600200C46102000BF0646A8190C
+:100BB000A0420DD9324669460020AFF300800700FD
+:100BC00008BF01F037FA0098A04218BF0546C419C3
+:100BD000FFF7C4FF05600746F01D20F00700461927
+:100BE000284600F00AF8B44208BFF8BDA21B3146FF
+:100BF0003868BDE8F84000F0E9BE00210160C0E9B6
+:100C0000011070471020704710B5FFF7ABFF006868
+:100C100010BD10B50446FFF7A5FF046010BD0968BC
+:100C20004A0501D540B27047C905FCD500B27047EE
+:100C300009684A0501D5C0B27047C905FCD580B224
+:100C4000704770B50C460546012A05D02878800605
+:100C500000D5EA69002302E0012305E05B1C934212
+:100C600002D2E05C0028F9D1A869E618C01AA86190
+:100C7000286A184428622846FFF714FC04E0D5E9E6
+:100C8000012114F8010B9047B442F8D32846FFF72E
+:100C90001FFC70BD2DE9F0470D469946924604466B
+:100CA00000F124080168880604D5E06921F01001EC
+:100CB000216000E00120A84201DD471B00E0002781
+:100CC000A1697A1902EB0900081AA0612078C00610
+:100CD00002D42046FFF7E6FB002608E0D4E9012114
+:100CE0001AF806009047206A401C761C20624E4588
+:100CF000F4DB2078C0060AD52046FFF7D3FB06E0D8
+:100D0000D4E9012130209047206A401C2062381E1F
+:100D1000A7F10107F4DC07E0D4E9012118F8050088
+:100D20009047206A401C2062281EA5F10105F3DCD3
+:100D30002046FFF7CDFB2078000602D50220BDE853
+:100D4000F0870120FBE711680268006A530501D5AE
+:100D500008700AE0D30501D5088006E0130603D524
+:100D6000C217C1E9000200E0086001207047704727
+:100D70002DE9FF4F0C461E464FF0FF378BB0D2E9EE
+:100D80000001DDF860800A908A46C1F30A5505B972
+:100D90003D46002108464FF00000BAF1000F00F474
+:100DA000400005DA00EB80004FF4400101EA5000FA
+:100DB0004FEA9059B9F1010F00DDB9460A9850EA9F
+:100DC0004A000ED044F61050A5F2FF3545432F14CB
+:100DD000B8F1000F1ED07542291E1EDDC9F10002B8
+:100DE0001CE0B8F1010F4FF0000001D0302103E00A
+:100DF000F24305E02154401CB042FBDB30460022A8
+:100E0000002121540B99C1F80880C1E900200FB0DE
+:100E1000BDE8F08FBD1B6D1CDEE74A4600DA694273
+:100E200006A801F075F806AB93E8070003AB83E86A
+:100E3000070050460A9901F0D2FB8DE80700A0F5A3
+:100E400000501F3800900398002D0ADD42F21F0168
+:100E50004A460844002303A90390684601F07EFE39
+:100E600009E0A0F500504A461F38002303A903906B
+:100E7000684601F09DFE8DE807000004000C03D0D9
+:100E80004FF0FF30410800E01046B8F1000F03D0EA
+:100E90000022009215461EE0751E05D400F0B0FD3C
+:100EA000303262556D1EF9D5B3460122084302D097
+:100EB00000227F1C04E02078302801D100227F1E10
+:100EC000002A099784D01DE0112D07DA00F098FD63
+:100ED000303262556D1C50EA0102F5D1084302D050
+:100EE0000098C8B10EE00021681E05E0235C625C3A
+:100EF00063542254401E491C8142F7DBAB46A81BB9
+:100F0000401E0990002004F80B000B98099AC0F8C5
+:100F10000880C0E9002B7AE711264FF0000857E758
+:100F20002DE9F04F88460446D21D22F0070191B00A
+:100F3000D1E90001CDE90A0106F0D8FE02460B987E
+:100F4000C00F01D02D2007E02068810701D52B209C
+:100F500002E0202101EAC000032A099001D0072AFB
+:100F600005DB03464146204600F016FF0BE12078E2
+:100F7000800601D5E06900E00620B8F1650F8146E2
+:100F800006D0B8F1660F18D0B8F1670F70D131E014
+:100F90000020B9F1110F009001DB112301E009F1EC
+:100FA00001030AAA01A90CA8FFF7E2FEDDE90C7013
+:100FB000002609F10105834647E001204B460090D9
+:100FC0004FF000470AAA01A90CA8FFF7D1FEDDE9FE
+:100FD0000DB00C995D46002610B909F101000D18FD
+:100FE000B9EB050003D4C0F1FF3609F10105A5EB0B
+:100FF00009002BE0B9F1010F01DA4FF001090020DF
+:10100000B9F1110F0090484601DD112300E00346BD
+:101010000AAA01A90CA8FFF7ABFEDDE90C704D464A
+:1010200000268346207800070AD4AB4500DA5D46E7
+:1010300001A8012D04DD411911F8011C302907D048
+:101040004F4502DA17F1040F04DA012082460FE05F
+:101050006D1EEEE7002F02DCED1B3E4403E0781C22
+:10106000A84200DD7D1CB81B00F1010A4FF00047CB
+:101070002078000703D4AA4501DB4FF0FF3A002196
+:10108000B7F1004F0DF143088DF8431024D0022032
+:101090002B23002F01DA7F422D230A21021EA0F10B
+:1010A000010000DC5FB197FBF1FC97FBF1F201FB63
+:1010B0001C7C17460CF1300C08F801CDEEE7A8F1C6
+:1010C000010003702188090501D5452100E0652153
+:1010D000A0F1010800F8011C09980FA9A1EB08076D
+:1010E000FF1D00B10120411901EBEA70A1693844EC
+:1010F000081A401EA0612078C00602D42046FFF7DF
+:10110000D1F9099828B1D4E901219047206A401CFF
+:1011100020622078C00622D52046FFF7C3F91EE0E2
+:10112000002E04DBB34502DD01A8805D00E0302025
+:10113000D4E901219047206A401C2062761CAAF164
+:1011400001005FEA000A0AD100F03CFCC0680168B7
+:10115000405CD4E901219047206A401C2062281E8F
+:10116000A5F10105DCDC07E0D4E9012118F8010B49
+:101170009047206A401C2062381EA7F10107F3DC6B
+:101180002046FFF7A5F9032011B041E601694A1C8A
+:1011900002610878704700B58FB0CDE901310021B8
+:1011A000059105497944CDE9031011466846FFF7DA
+:1011B00027FA0FB000BD0000E5FFFFFF0A6802F844
+:1011C000010B0A60704700002DE9FF5F15468A4653
+:1011D0000446DFF8AC80F8440027D8E900103E460A
+:1011E000CDE9001010E03AF816106A4602A800F0A7
+:1011F00001FF411C07D02178890603D5E26939181F
+:1012000091420DD80744761C2078800602D5E0690B
+:10121000B84205DDAE42E6DB3AF816000028E2D11E
+:10122000A069C01BA0612046FFF73CF9D8E9001077
+:10123000CDE90010002017E03AF818106A4602A81D
+:1012400000F0D8FEB0F1FF3F81460BD000250DF134
+:10125000080B05E0D4E901211BF8050090476D1C3F
+:101260004D45F7D308F10100B0428046E4DB206A27
+:10127000384420622046FFF72BF9BDE8FF9F0000AD
+:10128000D29800002DE9F0418046D21D22F00702DD
+:101290000025D2E90002F52915A614D0011E72F12D
+:1012A000000106DA0023D0EB030063EB020211A673
+:1012B00008E0D8F800108B0701D50FA602E0490717
+:1012C00001D50EA601251146002408F1240704E0EB
+:1012D00000F096FB30323A55641C50EA0102F7D117
+:1012E0002B46324621464046BDE8F041FFF7D2BCCE
+:1012F000000000002D0000002B0000002000000076
+:1013000030B4002100F1240408E002F00705D208FF
+:10131000303542EA4372DB086554491C52EA030542
+:10132000F3D10468002310A2250707D5A40600D432
+:1013300021B1C46901230DA2641EC46130BCFFF752
+:10134000A9BC10B5044621461068FFF771FC02469F
+:101350002046BDE810400023D2E7D21D22F007014D
+:10136000D1E90023CCE700000000000030000000BD
+:101370002DE9FF4F06468BB00878FF2806D0491CA0
+:101380002D2805D000244FF0000908E000200CE0D3
+:101390000124F8E709EB8903491C00EB43090878AD
+:1013A000FF28F7D114B1C9F100008146107800255B
+:1013B0002C46AA4629462D2801D02B2804D1521CA0
+:1013C0002D2813D0002082468B461078FF280FD09E
+:1013D0004FF0000C0A21521CA5FB017804FB01818F
+:1013E00005FB0C11C5194BEB0104EEE70120EAE700
+:1013F000002108464FF00000BAF1000F02D000EBC8
+:1014000080004008C0F38157012F01DD4FF0FF3706
+:101410000E9955EA040009EB01080BD04FF00209C0
+:1014200018F5FA7F16DA4FEACA70002F706008DDEF
+:10143000012007E04FEACA70C6E900B00FB0BDE86E
+:10144000F08F00203060FFF78DFBC0F8009018216E
+:10145000084616E0B8F5FA7F18DD002F02DAF748E3
+:10146000784401E0F6487844D0E90010C6E900105D
+:1014700040EACA707060FFF775FBC0F80090142155
+:1014800008460FB0BDE8F04F09F04DBA00210846FC
+:101490004FF00000B8F10001099002DAC7F1000234
+:1014A00000E03A4601DAC8F1000106A800F030FD7C
+:1014B00006AB93E8070003AB83E8070044F23E0065
+:1014C0005BEA04010090584604D144F21E012C4608
+:1014D0005D460091210C0904014306D100992404C2
+:1014E00044EA15442D041039009104F07F41014372
+:1014F00006D10099240244EA15642D0208390091AE
+:1015000004F07041014306D10099240144EA1574A6
+:101510002D01091F009104F04041014306D10099BB
+:10152000A40044EA9574AD00891E009104F00041C6
+:10153000084304D100986D196441401E00904FF09B
+:1015400001033A466846B8F1000FCDE9014503A909
+:1015500002DD01F042FB01E001F015FBBAF1000FE2
+:1015600004460D4601D084F00044002108464FF0A7
+:101570000000099940F2FF77484010F00C0F07D1A6
+:1015800024F00040284303D0C4F30A50B84212D1DB
+:10159000FFF7E8FAC0F80090C4F30A50B8420AD145
+:1015A000A8487844D0E90010C6E9001004F00041D2
+:1015B0000843706042E7C6E900543FE72DE9FF4F5A
+:1015C0001F464FF0000A4FF0FF38454691B0D7E96B
+:1015D0000146CDF83CA000F0F5F9C0680168405C18
+:1015E0001090B96912986D1C8847396A81468847FE
+:1015F0000028F6D1B9F1FF3F0AD0002E24F4D064C0
+:1016000011DDB9F12B0F08D0B9F12D0F0BD102E08C
+:10161000404615B013E744F48064B96912986D1C14
+:101620008847761E8146600504A901D52D2000E07B
+:101630002B20002E01F1010B0DF130088DF8100068
+:101640003FDDB9F1690F08D0B9F1490F05D0B9F103
+:101650006E0F02D0B9F14E0F1CD13B4601A8009588
+:1016600080E85002DDE912126FF0020009F0C6F9BD
+:10167000C11CCED10EE0B96912986D1C8847814615
+:101680001398761E44F4007405600F98401C002ED9
+:101690000F9016DDB9F1300FEDD0B9F1780F02D00F
+:1016A000B9F1580F0DD10F9801280AD13B46CDE969
+:1016B0000054DDE91212001F029609F09DF9C11CC9
+:1016C000A7D1109989453ED144F0800406E01399D2
+:1016D000681CAAF1010A44F400740860B9696D1C21
+:1016E0001298761E884730288146F0D02BE010995A
+:1016F000894505D1200603D4761E44F0800418E005
+:10170000484606F098FB08B3761E0DF123018B4581
+:1017100044F4007408D2A9F130000BF8010B200644
+:1017200007D5AAF1010003E0200602D40AF1010066
+:101730008246A00502D51399681C0860B969129801
+:101740006D1C88478146002ED1DC53E0002E51DD10
+:10175000B9F1650F02D0B9F1450F4BD1A00549D5BC
+:10176000B9696D1C1298761E24F440748847002EC7
+:1017700081460CDD2B2804D0B9F12D0F07D144F49C
+:101780008074B96912986D1C8847761E8146E00501
+:1017900001D52D2100E02B2108F8011BCDF8008098
+:1017A00021E0761E0DF13901884544F400740CD215
+:1017B000A9F1300010F0FF0088F8000002D1009974
+:1017C000884509D908F1010806E0E00501D51E4861
+:1017D00001E042F20F708246B96912986D1C884789
+:1017E000814613980560002E04DD484606F023FB71
+:1017F0000028D6D1F96912988847FF2053468BF804
+:10180000000088F8000000200A900B9004AA0CA9A0
+:101810000AA8FFF7ADFDA00502D46FF00100F8E6BD
+:1018200014F0240F12D0E0071CD13868DDE90A1249
+:10183000031D3B600068C0E9001213E05C980000E3
+:101840004E98000012970000F1D8FFFF0AA96846E1
+:1018500006F080FAE00705D13868009A011D39606A
+:10186000006802602846D4E6426842B1016811F877
+:10187000013B23B1521EC0E90012184670470121F6
+:10188000C160881E704742685AB1C368016843B995
+:1018900083688B4205D0491E521CC0E9001200200B
+:1018A00070474FF0FF3070470FB4002300B589B088
+:1018B0000CA900910B99CB60214B7B440693214BE3
+:1018C0007B44079304236FF00042CDE901321E4AA6
+:1018D0007A446B4608920246002009F08BF809B062
+:1018E0005DF814FB70B506464FF0FF3015460C4608
+:1018F000324686B00091CDE901016946002004908E
+:1019000004A8FFF7D1FF02460498211825B108B1B9
+:10191000084600E020462860049800280DD0002AE0
+:1019200002DD0098884208D03246081B69460094C0
+:10193000CDE9010404A8FFF7B7FF06B070BD0000B1
+:10194000ABFFFFFFC3FFFFFFB70100002DE9F0472A
+:1019500091460F4680460446002614F8015B2DB1DF
+:10196000FFF7F4F80068405DC007F6D12B2D02D0D8
+:101970002D2D18D0641E4A463946204600F078FACC
+:1019800027B13968A14201D1C7F800804FF00204A5
+:1019900071050BD54042002803DDFFF7E3F8046032
+:1019A000A007BDE8F08746F48066E4E70028F8DA8F
+:1019B000FFF7D8F804606FF00040F2E70048704786
+:1019C000D81E002000487047F81E002003464068DB
+:1019D0008C46002818BF88423CBF03464068F8D3B5
+:1019E00018681844884207D00CF1030020F0070063
+:1019F000001D411A521A0146081D0A60FEF7AFBCCD
+:101A000030B5B0F10A024FEA900E71F100034EEAD0
+:101A1000817EB0EB0E0061EB91014FEA101E4EEAA1
+:101A2000017E10EB0E0041EB11114FEA102E4EEA31
+:101A3000016E10EB0E0041EB11214FEA104E4EEA01
+:101A4000014E10EB0E0041EB1141401841F1000135
+:101A50004FEAD00040EA41704FEAD10110EB800517
+:101A60004FEA810444EA907444EB01046D1944EB9D
+:101A70000404521BA3414FF0000348BF0A3200D5B3
+:101A800030BD401C41F1000130BD10B50446FFF7E8
+:101A90005DF80068005D00F0010010BD2DE9F04F19
+:101AA00004460D46D21D22F0070089B0D0E9009708
+:101AB0004846394606F01AF90246F80F01D02D23A0
+:101AC00007E02068810701D52B2302E0202101EAED
+:101AD000C0038DF820300BB1012000E00020032A64
+:101AE000824601D0072A04DB2946204600F054F93B
+:101AF0003FE12078800601D40D2500E0E569C7F3B9
+:101B00000A560D2D49DA00214FEA175B08464FF0BF
+:101B10000000002F00F4400007DA00EB80004FF4D3
+:101B2000400100EBD07001EA60008115012901DD60
+:101B30004FF0FF3100224FEA850CBCF1180F06D39D
+:101B40001346ACF118004FF08052C24003E04FF44E
+:101B5000801323FA0CF30CF10C0CBCF1200F04D30E
+:101B6000ACF1200C09FA0CF001E007FA0CF00029A6
+:101B70004FF0004801DD18B90FE00ED140450CD3FD
+:101B800019EB02095F4121B9404502D19F4329EA7F
+:101B90000209BBEB175F00D0761C2088000502D538
+:101BA0007B48784402E07A487844193808AA302300
+:101BB00002F80A30037C0AF10101002E0AF1020A40
+:101BC00053546A4602DC4FF0300101E04FF031011E
+:101BD0004FF001088DF8001002D0A6F2FF3603E0A6
+:101BE00059EA470100D06B4E002D02DC217809072D
+:101BF00004D54FF002082E218DF80110C4460021B3
+:101C00000BE0C7F303433F01C35C491C6D1E02F8A0
+:101C10000830052908F1010801DA002DF1DC002166
+:101C20000CE000EB1973491C1B786D1E082902F8A3
+:101C300008304FEA091908F1010801DA002DF0DC3B
+:101C400021688B0602D516E0A8F10108E04505DD04
+:101C500002EB080313F8013C302BF5D0B8F1000F6C
+:101C600009DD02EB080313F8013C2E2B03D1090711
+:101C700001D4A8F10108002D05DD3E2102F808106D
+:101C80006D1E08F10108407C002E02F8080008F1E2
+:101C9000010804DA2D20764202F8080002E02B2029
+:101CA00002F808000A214FF47A70864208F1010810
+:101CB0000BDB96FBF0F3303302F8083096FBF0F3C1
+:101CC00008F1010800FB136601E0642E0CDB6420C0
+:101CD00096FBF0F3303302F8083096FBF0F308F18E
+:101CE000010800FB136601E00A2E06DB96FBF1F00B
+:101CF000303002F8080008F1010896FBF1F001FB12
+:101D00001060303002F80800A16908F1010808EB02
+:101D1000050202EB0A00081AA0612078C00602D46E
+:101D20002046FEF7BFFB216A08AE01EB0A002062E5
+:101D300004E0D4E9012116F8010B9047BAF1010A39
+:101D4000F7D22078C00602D52046FEF7ABFB6E46E0
+:101D500009E016F8010B3E280FD0D4E90121904785
+:101D6000206A401C2062B8F10108F2D22046FEF73A
+:101D7000AFFB09B00320BDE8F08F206A2844206241
+:101D800003E0D4E90121302090476D1EEBD3F8E742
+:101D9000218F000002FCFFFF2DE9F0411F460446A1
+:101DA00003260168072A01F4006004DB08B116A5C8
+:101DB00005E016A503E008B115A500E015A521F082
+:101DC00010002060A069C01EA0610FB1401EA0617C
+:101DD0002046FEF767FB4FB1D4E901213846904712
+:101DE000206A401C2062C01C206206E0206AFAE7DC
+:101DF000D4E9012115F8010B9047761EF8D2204650
+:101E0000FEF766FBBDE8F0814E414E006E616E004C
+:101E1000494E4600696E660010B5436913B1AFF3D1
+:101E2000008001E0FEF70DFF012010BD127800F1E7
+:101E300024010A7000224A700122EDE711684FF078
+:101E4000FF32E9E710B5436913B1AFF3008001E059
+:101E5000FFF7BAF9012010BD128800F12401828435
+:101E60000022C2840122EDE711684FF0FF32E9E75A
+:101E70002DE9F05F824615468B4600270AF10104E2
+:101E8000B9460078302801D09DB113E014F8010B59
+:101E90000127782803D0582801D045B10AE00DB1B8
+:101EA000102D07D1002714F8010B102502E008259A
+:101EB00000E00A250026B0460EE005FB080005FB01
+:101EC00006F101271FFA80F801EB1046B6F5803FB6
+:101ED00000D3B94614F8010B294600F0D8F80028C1
+:101EE000EBDABBF1000F05D00FB1641E00E05446E1
+:101EF000CBF80040B9F1000F06D0FEF733FE022107
+:101F00000160C81EBDE8F09F48EA0640FAE70000FD
+:101F10002DE9F047814616468AB0354878440DC809
+:101F20008DE80D0032487844801C03AC0DC884E86D
+:101F30000D0041F69B300844372190FBF1F290FBF5
+:101F4000F1F5A5F1800501FB12041B3C02D56442AA
+:101F5000012000E00020DFF898A080460027FA4426
+:101F6000AAF1BE0A0EE0E0070AD03246684607EB47
+:101F7000470101230AEB810100F01AFE8DE80700FA
+:101F800064107F1C002CEED1194F7F44AE3F19E046
+:101F9000E80715D007EB04100DF1180A90E80E00C1
+:101FA0008AE80E00C068F04201D1981908903246C4
+:101FB000012306A903A800F0FBFD03AB83E807009B
+:101FC0006D10641C002DE3D14FF0010332466946C9
+:101FD000B8F1000F03A802D000F0C0FD01E000F04E
+:101FE000E7FDC9E90001C9F808200AB0BDE8F0879B
+:101FF000388C000070B516460C460546FEF7A6FD67
+:10200000036893F80101012806D0FF2C0FD8185D52
+:1020100068B101202C7070BDD3F80701324621460B
+:1020200003F2071303442846BDE8704018474FF0F9
+:10203000FF3070BD10B500F071FABDE8104000F03F
+:1020400068BA70477546FFF7B9FCAE4605006946A9
+:10205000534620F00700854618B020B5FEF73EF93C
+:10206000BDE820404FF000064FF000074FF0000899
+:102070004FF0000B21F00701AC46ACE8C009ACE81A
+:10208000C009ACE8C009ACE8C0098D4670473A28E1
+:1020900000D2303820F02002412A01D3A2F13700CB
+:1020A000884201D34FF0FF30704700002DE9FF4F09
+:1020B0001F464FF03C0987B04FF00042DDE9141095
+:1020C00001F10108DDF858A002EA40500390002019
+:1020D00005908346054604460490B969461E089853
+:1020E0008847AAF1010A0290BAF1000F3BDD02987D
+:1020F0002E2815D01021FFF7CAFF00282EDB4FF045
+:10210000010B0599014317D0B9F1000F0BDB4A46CB
+:10211000C11700F031FA05430C43A9F1040905E0A9
+:10212000012004900BE008B145F001050120059065
+:10213000049820B9361D02E0049800B1361FB96931
+:10214000089808F101088847BBF1000FAAF1010ABD
+:102150000290C9D00999C1F80080C5E7029870289B
+:1021600008D0502806D0F96908988847BBF1000FBD
+:1021700014D04FE0002002900120BBF1000F04902A
+:1021800009D0B969089808F101088847AAF101093E
+:10219000B9F1000F07DCF969089888476FF0010072
+:1021A0000BB0BDE8F08F2B2804D02D280CD14FF0B8
+:1021B000FF300490B969089808F101088847A9F12F
+:1021C0000109B9F1000FE6DD411CE4D00A21FFF757
+:1021D0005EFF0028DFDB029908F1010801EB8101B5
+:1021E00000EB41000290B969089888470A21FFF77F
+:1021F0004EFF099AA9F10109B9F1000FC2F8008058
+:1022000001DD0028E7DAF9690898884704990298FF
+:1022100000FB016655EA040004D004F040410900C7
+:1022200002D006E0039898E0A40044EA9574AD005B
+:10223000B61E04F00041080002D16D196441761EFB
+:10224000159810F0240F03D04FF00B095C4803E001
+:102250004FF028096FF07D008246564507DAAAEB59
+:1022600006018944B9F1410F01DD4FF04109012018
+:102270000021A9F1010200F07FF9024628400B4637
+:102280002140084301D0012100E00021501E0291AD
+:1022900043F1FF3128402140084301D0012000E0F4
+:1022A00000200299834651EA0B014FD000210846D5
+:1022B0004FF00000039900F4400039B100EB8000BA
+:1022C0004FF4400100EBD07001EA60008015012856
+:1022D00002DD4FF0FF3000E013D0401C36D00298F2
+:1022E00060B3BBF1000F0CD14A460120002100F081
+:1022F00043F928402140084301D0012000E000209C
+:10230000E0B101204A46002100F036F903464019A9
+:102310000A4661412D1A8C4111D3B9F1400F09DDF4
+:10232000159810F0240F02D0AAF1340603E0AAF1A8
+:10233000170600E0761C00254FF0004406E05B1E07
+:1023400042F1FF3220EA030521EA0204CAF101004A
+:10235000B04206DA1B490398084301900020009020
+:102360000EE0039AC4F3D321E80A0A43164940EA6F
+:1023700044500A433146CDE90002684605F050FD5D
+:10238000159810F0240F0BD01598C00715D1386898
+:10239000DDE90012031D3B600068C0E900120CE09B
+:1023A00002A8694605F0D6FC1598C00705D1386823
+:1023B000029A011D3960006802604046F0E60000A4
+:1023C00002FCFFFF0000F07F0000F03F2DE9FF4F0F
+:1023D00092461D4685B04FF00041DDE9124BDDE924
+:1023E00014727F1E01EA4B50414940F0FF4940EA18
+:1023F0000108002122F020004928049102D04E2833
+:1024000028D04CE03BA0012607C88DE80700A96949
+:102410000698641C88477F1E014606D41DF80600F6
+:1024200018B121F0200181420BD0E9690698884754
+:10243000032E34D0082E32D06FF0010009B0BDE871
+:10244000F08F761C032E01D0082EE0D1601CCAF854
+:102450000000DCE7A9690698641C88477F1E2AD41F
+:1024600020F02000412826D1A9690698641C8847DD
+:102470007F1E20D420F020004E281CD1A969069888
+:10248000641C88477F1E48F4002849F48009CAF874
+:10249000004001D4282806D0E969069888475FEAF9
+:1024A000CB7012D022E0A9690698641C88477F1E71
+:1024B00001D4002803DAE96906988847BCE729288F
+:1024C000F1D1641CCAF80040E9E71BF0240F07D0E3
+:1024D00028680499031D2B600068C0E9001805E016
+:1024E0002868021D2A600068C0F800902046A5E711
+:1024F0000000F07F494E46494E4954590000000003
+:1025000010B50446AFF300802046BDE81040FDF74B
+:10251000D0BE002801D000F029B8704710B50128BE
+:1025200005D0002103A000F03AF8012010BD09A158
+:10253000F8E7000053494752544D454D3A204F7536
+:1025400074206F662068656170206D656D6F7279AB
+:10255000000000003A2048656170206D656D6F7263
+:102560007920636F72727570746564000149182078
+:10257000ABBEFEE726000200B2F120030AD5C2F18D
+:10258000200301FA02F120FA03F300FA02F041EA13
+:102590000301704700FA03F14FF00000704770B577
+:1025A00005460C460A2000E06D1C00F011F835B11C
+:1025B00028780028F8D102E0641C00F009F814B172
+:1025C00020780028F8D1BDE870400A20AFF30080E1
+:1025D00008B569468DF800000320ABBE08BD5FEA70
+:1025E000400C08BF91F0000F4FEA8C234FEAC12244
+:1025F00043EA51514FEA1C5018BF00F5F0404FEA32
+:10260000300018BF41F000415FEA6C5C00F02980A7
+:10261000BCF1FF3F08BF40F080407047130C06BF7D
+:1026200012044FF0100C4FF0000C130E04BF1202F6
+:102630000CF1080C130F04BF12010CF1040C930FE2
+:1026400004BF92000CF1020CD30F04BF52000CF136
+:10265000010C11464FF00002A0F11F00A0EB0C008E
+:10266000704711F0004F08BF704731F000413FF450
+:10267000D5AF0B0C06BF09044FF0100C4FF0000C47
+:102680000B0E04BF09020CF1080C0B0F04BF09016B
+:102690000CF1040C8B0F04BF89000CF1020CCB0F62
+:1026A00004BF49000CF1010CCCF12003A0EB0C009D
+:1026B00022FA03F302FA0CF241EA030100F10100ED
+:1026C000704720F07F4C80EA030023F07F47ACEB9B
+:1026D000070303F57C5300F0004003F1FF032DE9ED
+:1026E00080494FEA154B09B44FEA144325EA0B4ED3
+:1026F00024EA03480FF2042606EB132749083E7824
+:102700005FEA320203FB0667C7F5000707FB06F620
+:102710004FEA54374FEAD64606F1020607FB066C2D
+:10272000CCF1005C4FEA1C472CEA074C07FB06F48F
+:102730000CFB06F504EB15464FEA961634BF002055
+:102740004FF000404FEAD13706FB07FC4FEA1C4C24
+:102750000CFB0BF7D21B03FB0CF761EB07010CFB27
+:102760000EF7B0EB074072EB17420CFB08F734BFD3
+:10277000A2EB0742B2EB074261EB17414FEA0C4470
+:102780004FEA910706FB07FC4FEA1C4C0CFB0BF7CA
+:10279000B0EBC74072EB573203FB0CF734BFA2EB30
+:1027A000C742B2EBC74261EB57310CFB0EF7B0EBFF
+:1027B000C70072EB57720CFB08F734BFA2EBC702DD
+:1027C000B2EBC70261EB5771039F4FEA816141EAA7
+:1027D000921104EBCC044FEAD1374FEA826206FB38
+:1027E00007FC42EA90124FEA80604FEA1C4C0CFB57
+:1027F0000BF7D21B03FB0CF761EB07010CFB0EF789
+:10280000B0EB074072EB17420CFB08F734BFA2EBAA
+:102810000742B2EB074261EB17414FEA8C554FEA92
+:10282000910704EB9C2406FB07FC4FEA1C4C0CFBB5
+:102830000BF7B0EBC74072EB573203FB0CF734BF1A
+:10284000A2EBC742B2EBC74261EB57310CFB0EF76C
+:10285000B0EBC70072EB57720CFB08F734BFA2EB6A
+:10286000C702B2EBC70261EB577115EB4C254FEA7B
+:10287000816141EA92114FEA82624FEAD13742EA1E
+:10288000901206FB07FC44F100044FEA80604FEA17
+:102890001C4C0CFB0BF7D21B03FB0CF761EB070185
+:1028A0000CFB0EF7B0EB074072EB17420CFB08F77E
+:1028B00034BFA2EB0742B2EB074261EB174115EBC5
+:1028C0001C154FEA813141EA92414FEA823242EAD5
+:1028D00090424FEA80304FEA0C7644F1000448EA17
+:1028E00003434EEA0B484FF0000EB2EB080C71EBBD
+:1028F000030724BF624639464EEB0E0E4FF0000B25
+:102900000018524149414BEB0B0BB2EB080C71EB39
+:1029100003077BF1000B24BF624639464EEB0E0ED7
+:102920004FF0000B0018524149414BEB0B0BB2EB3F
+:10293000080C71EB03077BF1000B24BF624639469C
+:102940004EEB0E0E51EA020718BF46F0010616EBD9
+:102950000E7655F1000254F1000103D5BDE889015E
+:10296000BDE80088BDE88901BDE80048B6195241BC
+:1029700041EB0101A3F10103704780807F7E7D7CE4
+:102980007B7A7978777676757473727171706F6E01
+:102990006E6D6C6C6B6A6A696868676666656464AC
+:1029A000636362616160605F5F5E5E5D5D5C5C5B36
+:1029B0005B5A5A59595858575756565555555454A5
+:1029C000535352525251515050504F4F4F4E4E4D03
+:1029D0004D4D4C4C4C4B4B4B4A4A4A49494948484F
+:1029E000484747474746464645454544444444438F
+:1029F00043434342424242414141000046EA0646C7
+:102A0000A3F570534FEA164646EA42564FEAD222E1
+:102A100042EA415210B54FEAD121A3F1010300F07F
+:102A20002FF820F0004000F1020C00F0004701EB0D
+:102A300000501146BCF5006F40EA070000D210BDFF
+:102A4000BAF1000F0AD01CB503B44FF004004FF0E8
+:102A500004014FF000000FBCBDE810404FF0000132
+:102A6000BBF1010FB9BF04484FF0FF31034800210B
+:102A700040EA070010BD00BFFFFFEF7F0000F07FBE
+:102A8000002B9C4630D477002BD01CB54FEA37077B
+:102A900003B44FF010004FF01001BAF1000F06D050
+:102AA000BCF1000FDCBF40F0080040F008014FF01F
+:102AB00000000FBCBDE810400BF1010BBBF1010F92
+:102AC00008BF5FEA170722BF12F1010211F10101ED
+:102AD0004FF0004143F1000300F0004043EA0000E2
+:102AE0007047F9D35708D0E746EA064613F1400F7E
+:102AF0004FEA16461FDD13F1200FDFBF16430A46CB
+:102B0000002120335B42BED0C3F1200746EA0646CF
+:102B100002FA07F74FEA164646EA0706C3F120070E
+:102B200022FA03F201FA07F721FA03F14FF000034A
+:102B300042EA0702A7E746EA020646EA06464FEAE5
+:102B4000164646EA0106BCBF46EA0646360C4FF07A
+:102B500000034FF000024FF0000194E72DE9804C94
+:102B60009A46934670B491E8380007C831EA400CA1
+:102B700048BF34EA430C03D5FFF7A3FDFFF780FFFE
+:102B8000F0BCBDE8008C2DE9804C9A46934670B4A9
+:102B900091E8380007C831EA400C48BF34EA430CDA
+:102BA00003D5FFF78EFDFFF729FFF0BCBDE8008CD1
+:102BB0002DE9804C9A46934670B491E8380007C8D6
+:102BC00010F0804F08BF13F0804F03D100F01AF8C7
+:102BD000FFF756FFF0BCBDE8008C2DE9804C9A460B
+:102BE000934670B491E8380007C810F0804F08BFD2
+:102BF00013F0804F03D100F005F8FFF7FFFEF0BCA3
+:102C0000BDE8008C20F07F4780EA030023F07F4C72
+:102C100007EB0C03A3F57C5300F00040A3F1FE0387
+:102C200092F0000F00F0B38095F0000F00F0778075
+:102C30002DE901494FEA11404FEA144621EA0048C4
+:102C400000FB06FC24EA064708FB06F607FB08F82B
+:102C500000FB07F718EB06484CEB164C4FEA124BFB
+:102C600018EB07484FEA15464CEB174022EA0B4E8B
+:102C70000BFB06FC25EA06470EFB06F607FB0EFEDD
+:102C80000BFB07F71EEB064E4CEB164C4FF0000605
+:102C90001EEB074E4CEB174B18EB0B0840F10000F6
+:102CA00018EB0E0B58EB000840F100008F1A4FF0A4
+:102CB00000013CBFC943661B14BFB5EB040C0021E7
+:102CC0003CBFC943F61B4FEA17444EEA8E0E27EA73
+:102CD00004454FEA1C4704FB07622CEA074C05FB3E
+:102CE00007F70CFB05F604FB0CFC16EB074642EB62
+:102CF000174216EB0C4642EB1C421BEB060658EB48
+:102D00000202414146EA9E0601D5BDE80189B61995
+:102D1000524141EB0101A3F10103BDE801894FEAF2
+:102D200014454FEA114724EA054621EA074C05FB02
+:102D300007F406FB07F70CFB06F105FB0CFC11EB97
+:102D4000074144EB17444FEA124711EB0C4144EBA7
+:102D50001C4422EA074C05FB07F206FB07F70CFBB5
+:102D600006F605FB0CFC16EB074642EB174216EB8A
+:102D70000C4642EB1C456A1854F1000148BF7047ED
+:102D8000B619524141EB0101A3F10103704795F0DF
+:102D9000000F37D04FEA11424FEA144721EA0246AA
+:102DA00024EA074C02FB07F106FB07F70CFB06F4CD
+:102DB00002FB0CFC14EB074441EB17414FEA1547AB
+:102DC00014EB0C4441EB1C4125EA074C02FB07F5D0
+:102DD00006FB07F70CFB06F602FB0CFC16EB07469E
+:102DE00045EB174516EB0C4645EB1C42121951F109
+:102DF000000148BF7047B619524141EB0101A3F1F0
+:102E0000010370474FEA14454FEA114724EA05468B
+:102E100021EA074C05FB07F106FB07F70CFB06F25E
+:102E20004FF0000605FB0CFC12EB074241EB17418B
+:102E300012EB0C4251EB1C4148BF7047921841EB1A
+:102E40000101A3F10103704770B504460068816871
+:102E5000C943C90716D1816821F00101816001F0E1
+:102E600005F8054609E001F001F8401B022804D9E5
+:102E700020688068C043C00706D020688068C043CF
+:102E8000C007F0D0002070BDA06A40F01000A06222
+:102E9000E06A40F00100E062012070BD10B501461B
+:102EA000406A826A12F0500F05D0006A026BBDE8DA
+:102EB000104008461047816A41F400718162016840
+:102EC0008968C1F3424107290CD1017B51B9816A5C
+:102ED00021F480718162816AC90403D4816A41F05E
+:102EE0000101816200F0ACFA10BD10B5406A816A40
+:102EF00041F040018162C16A41F00401C16200F009
+:102F0000A1FA10BD10B5406A00F09BFA10BD000098
+:102F1000F8B500260446009600688168C943C907D1
+:102F20002CD0816841F00101816015481549006885
+:102F3000B0FBF1F000E0401E00900028FBD100F053
+:102F400095FF054615E000F091FF401B022810D9BF
+:102F500020688068C043C0070BD0A06A40F0100012
+:102F6000A062E06A40F00100E06284F82460012081
+:102F7000F8BD20688068C043C007E4D10020F8BDD8
+:102F80000C00002040420F0010B5094800F0BAFBC9
+:102F90000A2000F037FE064914222839044800F0C0
+:102FA0002BFB002803D0BDE8104000F0C8B910BDCD
+:102FB0006403002010B50023002819D013E01B0182
+:102FC000A2F13004092C01D8303B0AE0A2F14104FF
+:102FD000052C01D8373B04E0A2F16104052C08D888
+:102FE000573B1344401C0278002AE8D100200B60B4
+:102FF00010BD012010BDF0B500234F1E11E05E1C76
+:10300000F2B20BE050F8235050F82240A54203D909
+:1030100040F8234040F82250521CD2B28A42F1D3E9
+:10302000F3B2BB42EBD3F0BDFEE70000014800F075
+:103030004FBC000094030020014800F049BC000090
+:1030400000070020014800F043BC0000BC0600203F
+:10305000014800F03DBC000044070020014800F09A
+:1030600037BC000088070020014800F031BC000098
+:103070007806002030B590F840500124AC40C56B74
+:103080006C60046863604368102B036803D0996028
+:103090000068C26030BD9A600068C16030BD704792
+:1030A00041F2883101A000F015B900004154000040
+:1030B0004FF4FA5101A000F00DB9000041542B5219
+:1030C0005354000000B595B0034606A2502168464F
+:1030D00005F0F2FE41F28831684600F0FBF815B0C9
+:1030E00000BD000041542B43574C41503D222573F5
+:1030F0002200000041F2883101A000F0EBB800008E
+:1031000041542B43574155544F434F4E4E3D300091
+:1031100041F2883101A000F0DDB800004154453093
+:103120000000000000B585B008B1012300E00023D5
+:1031300005A21421684605F0BFFE41F288316846B9
+:1031400000F0C8F805B000BD41542B4349504D551F
+:10315000583D25640000000041F2883101A000F0D4
+:10316000B9B8000041542B4349505354413F00002B
+:1031700000B597B00346CDE9001206A2502102A87F
+:1031800005F09AFE41F2883102A800F0A3F817B0CA
+:1031900000BD000041542B43574A41503D22257346
+:1031A000222C222573222C2225732200F0B5ABB0ED
+:1031B0000E4604461F461546642102A8FDF75AFC38
+:1031C00014B1012C0BD102E011A312A201E015A34E
+:1031D00015A2CDE900653C2102A805F06DFE052F82
+:1031E00008D202A800903B4614A23C211BA805F07F
+:1031F00063FE05E002AB16A23C211BA805F05CFEB5
+:1032000041F288311BA800F065F82BB0F0BD00003A
+:1032100054435000222573222C222573222C25731F
+:103220002C36000055445000222573222C22257391
+:10323000222C25732C393039302C300041542B434B
+:10324000495053544152543D25642C2573000000CD
+:1032500041542B43495053544152543D257300006F
+:1032600041F2883130B1012806D0022806D104A0ED
+:1032700000F030B805A0FBE707A0F9E770470000B1
+:1032800041542B43574D4F44453D330041542B434C
+:10329000574D4F44453D310041542B43574D4F440A
+:1032A000453D320000B58FB0034606A23C2168467A
+:1032B00005F002FE41F28831684600F00BF80FB0CD
+:1032C00000BD000041542B434950434C4F53453DF2
+:1032D0002564000030B599B00C4605466421684667
+:1032E000FDF7C8FB29466846FDF791FA09A1684633
+:1032F000FDF71BFB6A4608A1042004F023FA684688
+:10330000FDF7A9FA81B2684604F0E2FC0548C46002
+:1033100019B030BD0D0A00000A572D2D3E2025732F
+:10332000000000007401002010B54FF4807000F020
+:1033300087FCBDE810404FF4007000F081BC72B60D
+:10334000FEE70000F8B50023009390F824201C4607
+:10335000012A12D0012280F824204A681F26072A59
+:103360000DD205686F6B521E02EB82029640B74386
+:103370000E68964037436F6319E00220F8BD056878
+:103380000D2A0AD22F6BD21F02EB82029640B7435E
+:103390000E68964037432F6309E0EF6A0D3A02EB5F
+:1033A00082029640B7430E6896403743EF620A6840
+:1033B000072605680A2A0AD3EF680A3A02EB420296
+:1033C0009640B7438E6896403743EF6008E02F6918
+:1033D00002EB42029640B7438E68964037432F6116
+:1033E0000A68102A01D0112A20D1124D0268AA427F
+:1033F00017D195682D0219D4956845F4000595609C
+:103400000968102912D10C490C4A0968B1FBF2F184
+:1034100001EB8101490000E0491E00910029FBD128
+:1034200004E0816A41F020018162012380F8244098
+:103430001846F8BD002401400C00002040420F0057
+:1034400070477047704700002DE9F04104004FF0CD
+:1034500000057FD0A06A002628B9E66284F82460BF
+:10346000204600F081F82046FFF7EEFCA16AC9066D
+:1034700000D420B1A06A40F01000A0626AE0A16A06
+:1034800021F4885141F00201A162334923688B4243
+:10349000E16904D1B1F5402F01D14FF40021277B20
+:1034A0004FF4807C41EA470261680A43A1686145A4
+:1034B00008D0012906D0002194F814E0BEF1010FD4
+:1034C00002D00AE06146F7E7C7B1A76A47F02007D4
+:1034D000A762E76A47F00107E7625F6827F4694778
+:1034E0000F435F6021688B681C4F3B4013438B6028
+:1034F000A16861450BD0012909D00CE0DFF860E03C
+:10350000A7690EEB47370F4347F40061E5E7218ACF
+:103510000D05A5F580152168CB6A23F470032B43B4
+:10352000CB62216889680F4B1940914208D1E6624D
+:10353000A16A21F0020141F00101A162BDE8F08120
+:10354000A06A20F0020040F01000A062E06A40F0A3
+:103550000100E0620120F1E7003C0140FDF7E1FFDE
+:1035600000E0FFFFFE0E1FFF70B586B00024064688
+:10357000009401940294039400681A4988422ED161
+:103580001949886940F400708861886900F4007006
+:103590000490886940F0100088618869694600F0ED
+:1035A000100004900C200090032001900F4800F0C0
+:1035B00053FB104D0E48C5E900048020C5E90240C8
+:1035C00040002861800068612020C5E90604284683
+:1035D00000F0A2FA08B1FFF7B2FE35626E6206B0E3
+:1035E00070BD0000002401400010024000100140A6
+:1035F00008000240940300202DE9F0478946044664
+:103600003B4900683B4F0E1D9046884201D0B842AE
+:1036100007D1306810F4702F03D001252846BDE88B
+:10362000F08794F8240001280CD0012084F82400AD
+:103630002046FFF76DFC05004FF0000104D084F830
+:103640002410EBE70220EAE7A06A40F6016290430B
+:1036500040F48070A0622068B84218D1326812F439
+:10366000702F14D0A06A40F48010A062306840052A
+:1036700005D5A06A20F4005040F48050A062A06AF2
+:10368000C0040AD5E06A20F00600E06206E0A26A03
+:1036900022F48012A2624068E9E7E16284F8241013
+:1036A000216A15488862216A1448C862216A144850
+:1036B000086321686FF0020008602068816841F4A7
+:1036C00080718160216843464A464C31206A00F08F
+:1036D00061FA20688168C1F342410729816803D0FB
+:1036E00041F48011816099E741F4A001FAE70000FC
+:1036F00000240140002801409D2E0008052F0008ED
+:10370000EB2E000810B5044690F82400012807D0DD
+:10371000012084F824002046FFF796FB10B113E047
+:10372000022010BD21688A6822F480728A60216AB2
+:1037300091F82120022A07D1084600F00EF8A16A6C
+:1037400030B141F04001A162002184F8241010BD85
+:1037500021F4885141F00101F5E710B590F82110EE
+:103760000022022905D00421816380F82020012055
+:1037700010BD01680B6823F00E030B6001680B6835
+:1037800023F001030B6090F84030012404FA03F1A8
+:10379000C36B596080F8214080F82020104610BD8E
+:1037A0002DE9F05F90F821100024022903D00421B4
+:1037B0008163012485E001680A6822F00E020A6034
+:1037C00001680A6822F001020A603F4E3E4FB215BE
+:1037D000DFF8F4C0DFF8F090DFF8ECA0DFF8E8B035
+:1037E000DFF8E4E00168783F13011502ACF1640CE6
+:1037F000A9F15009AAF13C0AABF1280BAEF1140E65
+:103800004FF48018B14227D9B9420ED0614512D089
+:1038100049451DD0514518D0594518D0714501D1A1
+:10382000424615E0294EB14201D1012210E0274E57
+:103830001436B14201D110220AE0244E2836B1429A
+:1038400006D0224A3C32914201D11A4600E02A4673
+:103850001E49091F0A602BE0B94213D0614517D0F9
+:10386000494522D051451DD059451DD0714501D142
+:1038700042461AE0B14202D14FF0807215E0134E79
+:10388000B14201D1012210E0104E1436B14201D1F3
+:1038900010220AE00D4E2836B14206D00B4A3C32C7
+:1038A000914201D11A4600E02A46074980394A6010
+:1038B000012180F82110002180F82010416B01B116
+:1038C00088472046BDE8F09F80000240080402407F
+:1038D0002DE9F05FC16B0B6801680A68046C4FF05A
+:1038E000040808FA04F8844D844E854FDFF814C2AA
+:1038F000DFF81492DFF814A2DFF814B2DFF814E254
+:1039000018EA030F65D05FEA427862D50A6892062A
+:1039100003D40A6822F004020A60DFF8F0814FF451
+:103920008062016808F1140813011402414524D98A
+:10393000A9420DD0B1420FD0B9421AD0614515D07D
+:10394000494515D0514501D1120312E0594501D125
+:1039500004220EE0714501D140220AE06D4D14357C
+:10396000A94206D06B4A2832914201D11A4600E0A2
+:1039700022466749091F0A6029E0A94213D0B142D3
+:1039800015D0B94220D061451BD049451BD05145C7
+:1039900002D14FF4800217E0414502D14FF080621E
+:1039A00012E0594501D104220EE0714501D14022B7
+:1039B0000AE0584D1435A94206D0564A28329142A1
+:1039C00001D11A4600E022464B4908394A60C16AD3
+:1039D00071E04FF0020808FA04F818EA030F70D0FB
+:1039E0005FEA82786DD50A68920606D40A6822F0EA
+:1039F0000A020A60012180F82110DFF810814FF4DB
+:103A00000072016808F1140813011402414524D919
+:103A1000A9420DD0B1420FD0B9421AD0614515D09C
+:103A2000494515D0514501D1120312E0594501D144
+:103A300002220EE0714501D120220AE0354D1435F5
+:103A4000A94206D0334A2832914201D11A4600E0F9
+:103A500022462F49091F0A6029E0A94213D0B1422A
+:103A600015D0B94220D061451BD049451BD05145E6
+:103A700002D14FF4001217E0414502D14FF000721D
+:103A800012E0594501D102220EE0714501D12022F8
+:103A90000AE0204D1435A94206D01E4A2832914230
+:103AA00001D11A4600E02246134908394A60002134
+:103AB00080F82010816A00291CD0BDE8F05F08471B
+:103AC000FFE70825A5401D4214D0120712D50A6849
+:103AD00022F00E020A6090F84020C36B012101FA27
+:103AE00002F25A60816380F82110002180F82010D2
+:103AF000016BE0E7BDE8F09F080002401C000240B7
+:103B00003000024044000240580002406C00024075
+:103B1000080402401C04024030B560B11A4B016831
+:103B20001422994209D2194B0B44B3FBF2F29200D2
+:103B30000264174A0AE0012030BD134B5B420B447C
+:103B4000B3FBF2F2920002640F4A083AC263022207
+:103B500080F821200A6843F6F0739A43F0E90134B3
+:103B60002343D0E902452C4323430469234344699A
+:103B700023438469234313430B60002141630122E3
+:103B800042770177084630BD08040240F8FFFDBFC8
+:103B90000000024070B5044690F82000002501287E
+:103BA0000CD0012084F8200094F821600020012E20
+:103BB00006D084F820000225284670BD022070BD82
+:103BC000022684F82160A0632068066826F00106BA
+:103BD00006602046FFF74EFAE06A00282068016878
+:103BE00002D041F00E0106E021F0040101602068DE
+:103BF000016841F00A0101602068016841F001019B
+:103C00000160D9E770B5044600F030F90546601C44
+:103C100002D004480078044400F028F9401BA04278
+:103C2000FAD370BD00000020B0F5807F04D0B0F55D
+:103C3000007F03D102F040BE02F09CB97047000043
+:103C4000044910B50A68024202D00860FFF7ECFF91
+:103C500010BD0000140401402DE9F84FDFF8C091B9
+:103C60000024A9F1040B23464FF00F0809F1040AC0
+:103C7000ABF1040ECCE00127A7403A40BA4272D122
+:103C8000DFF8A0C14D68A5EB0C0665452BD00DDC17
+:103C9000032D34D005DC35B3012D19D0022D2FD1E1
+:103CA0001BE0112D16D0122D2AD119E0B6F5881F70
+:103CB00019D006DCB6F5803F15D0B6F5801F1FD1B0
+:103CC00011E0B6F5001F0ED0B6F5041F18D10AE0BA
+:103CD000CB6815E0CB681B1D12E0CB6808330FE002
+:103CE000CB680C330CE08B682BB1012B4FF0080331
+:103CF00003D0476104E0042302E0076100E00023F1
+:103D0000FF2A01D8064601E000F104064FEA8405C7
+:103D100001D9A5F12005376808FA05FC27EA0C0748
+:103D200003FA05F547EA050737604D68ED006ED5E3
+:103D30003D4DAE6946F00106AE61AD6924F0030663
+:103D400005F001050095394D7719BE68A5072D0FBF
+:103D500008FA05FC26EA0C06DFF8D4C0604503D15A
+:103D60004FF0000C25E052E0DFF8C8C0604502D1FA
+:103D70004FF0010C1DE0DFF8C0C0604502D14FF0EC
+:103D8000020C16E0DFF8B4C0604502D14FF0030C1E
+:103D90000FE0DFF8ACC0604502D14FF0040C08E042
+:103DA000DFF8A0C0604502D14FF0050C01E04FF0F4
+:103DB000060C0CFA05FC4CEA060CC7F808C04D6866
+:103DC000D9F80060ED024D4601D5164300E0964358
+:103DD0002E604D68DAF80060AD02554601D51643F5
+:103DE00000E096432E604D68DBF80060AD035D4651
+:103DF00001D5164300E096432E604D68DEF8006062
+:103E0000ED03754601D5164300E096432E60641C11
+:103E10000A6832FA04F57FF42EAFBDE8F88F00008F
+:103E20000804014000001110001002400000014091
+:103E300000080140000C0140001001400014014046
+:103E400000180140001C01408068084000D001209B
+:103E50007047C26821EA02030A4043EA0241016155
+:103E600070470AB1016170470904FBE701488068A7
+:103E7000704700000000002070B5040025D094F8C1
+:103E80003D00002520B984F83C50204600F07EFA21
+:103E9000242084F83D002068016821F001010160C0
+:103EA0002068016841F4004101602068016821F444
+:103EB0000041016000F05EFC4D4B6168994201D801
+:103EC0004C4900E04C49884201D2012070BD4B4969
+:103ED0002268B0FBF1F1566826F03F060E435660AB
+:103EE00062689A4206D94FF4967251434FF47A723F
+:103EF000B1FBF2F12268491C166A26F03F063143F5
+:103F000011626168994210D84900401EB0FBF1F27D
+:103F1000521CC2F30B02042A01D2042022E0B0FB9F
+:103F2000F1F0401CC0F30B001CE0A268F2B301EBFF
+:103F3000C10303EB0116431EB3FBF6F35B1C43F412
+:103F400080431B0549D092B301EBC10202EB011182
+:103F5000401EB0FBF1F0401CC0F30B0040F4804069
+:103F600040F400402168CA694CF6FF739A4310433D
+:103F7000C861D4E9071001432068026822F0C0023A
+:103F800011430160D4E9030101432068826848F2CB
+:103F9000FF339A4311438160D4E90510014320683F
+:103FA000C26822F0FF021143C16001E00EE016E09A
+:103FB0002068016841F0010101602564202084F837
+:103FC0003D00256384F83E50002070BD01EB4106A2
+:103FD000431EB3FBF6F35B1CB3E70120C2E701EB22
+:103FE0004101401EB0FBF1F0401CC0F30B00B7E7ED
+:103FF000A086010080841E0000093D0040420F00A1
+:104000002DE9FF4F83B00026DDE910799A469346EB
+:104010000446DDF848800096FFF728FF054694F82F
+:104020003D0020287CD11923012288492046009593
+:1040300001F079FE0028F5D194F83C0001286FD0FA
+:10404000012084F83C0020680168C90703D1016899
+:1040500041F0010101602068016821F40061016004
+:10406000222084F83D00402084F83E0026646762E8
+:10407000A4F82A90608D20857548E062CDE900851E
+:1040800053465A462046049901F050FD00287CD141
+:10409000208DDFF8C091202768B1012814D00228B4
+:1040A000206801681ED041F4806101602068416988
+:1040B00080690090BCE020684169816900910168D5
+:1040C00041F400710160B3E02068016821F480616F
+:1040D000016072B62068416981690091016841F40C
+:1040E00000710AE041F40061016072B62068416924
+:1040F00081690091016821F48061016062B697E0F6
+:10410000032865D801280CD0022843464FF000024E
+:104110004946204600950BD001F005FEA8BB0CE0F7
+:1041200091E02A464146204601F09EFE68BB72E0BF
+:1041300001F0F9FD48BB72B633E02068016821F454
+:104140008061016072B620680069616A0870606A07
+:10415000401C6062208D401E2085608D401E608561
+:104160003D4846F2A8110068B0FBF1F0C0EBC0007A
+:1041700000EB80000090401E009007D0206840694E
+:10418000C04340070DD50098F5E727E044F8306FAD
+:104190006773A673206940F02000206162B6267321
+:1041A0001CE02068016841F400710160206800692A
+:1041B000616A0870606A401C6062218D491E218519
+:1041C000618D491E618562B621680969017026E02A
+:1041D0002A464146204601F047FE18B1012007B0AB
+:1041E000BDE8F08F20680069616A0870606A401C51
+:1041F0006062208D401E81B22185608D401E6085E9
+:1042000020684269D243520712D4032903D10168BE
+:1042100021F48061016020680069616A0870606A49
+:10422000401C6062208D401E2085608D401E608590
+:10423000208D00287FF464AF84F83D7084F83E60E0
+:1042400084F83C60CBE70220C9E7000002001000C0
+:104250000000FFFF040001000C0000202DE9FF4FCB
+:1042600083B09A46DDE9119793460446DDF8408015
+:10427000FFF7FCFD054694F83D0020287FD1192367
+:10428000012240492046009501F04DFD002876D1DD
+:1042900094F83C00012872D0012084F83C0020688A
+:1042A0000168C90703D1016841F00101016020687C
+:1042B000016821F400610160212084F83D00402064
+:1042C00084F83E0000262664C4F82480A4F82A90CE
+:1042D000608D20852C48E062CDE9007553465A4632
+:1042E0002046049901F0A0FC70B930E02A46394616
+:1042F000204601F0F3FD58B1206C042804D1206859
+:10430000016841F400710160012007B0BDE8F08F41
+:10431000606A216800780861626A521C6262208DBE
+:10432000401E80B22085618D491E618521684B69E0
+:10433000DB435B070BD468B110780861606A401CEE
+:104340006062208D401E2085608D401E6085208D1E
+:104350000028CBD12A463946204601F0B9FC002876
+:10436000CAD154F83D0B016841F40071016020206E
+:1043700004F81E09E67766770020C6E7FFE702200B
+:10438000C3E70000020010000000FFFF30B585B059
+:10439000002100910191029103911E4D01681E4C74
+:1043A000122203231D48A94216D1A16941F0080138
+:1043B000A161A169039301F008010491C021CDE935
+:1043C00000126946FFF748FCE06940F40010E06124
+:1043D000E06900F4001019E0114DA94217D1A1695C
+:1043E00041F00801A161A169039301F00801049162
+:1043F0004FF44061CDE900126946FFF72DFCE069FA
+:1044000040F48000E061E06900F48000049005B0B1
+:1044100030BD00000054004000100240000C01407C
+:10442000005800400248816802781144816070475A
+:1044300000000020074810B5016841F0100101603C
+:10444000032000F075F80F2000F006F800F024F8C3
+:10445000002010BD0020024070B50D4D04464FF401
+:104460007A712878B1FBF0F00A490968B1FBF0F0E5
+:1044700000F052FB48B9102C07D200222146501EF2
+:1044800000F036F800206C6070BD012070BD0000A7
+:10449000000000200C0000200C4808B5816941F0A4
+:1044A00001018161816901F001010091C16941F05F
+:1044B0008051C161C069064900F080500090486891
+:1044C00020F0E06040F00070486008BD001002403D
+:1044D00000000140002809DB00F01F02012191408B
+:1044E0004009800000F1E020C0F800117047000092
+:1044F000F0B40E4B1B68C3F30223C3F10704042C72
+:1045000000D904241D1D072D01D2002300E0DB1E6D
+:10451000012606FA04F56D1E0D409D409E40761E54
+:10452000164045EA0601F0BC03F0F4BB0CED00E0D8
+:10453000064A00F0070110684FF6FF03184040EAF2
+:104540000120034908431060704700000CED00E0B3
+:104550000000FA052DE9F84304460078344FC007FF
+:1045600052D0F8690025C00008D4F86940F08050A6
+:10457000F861F869012500F0805000902D4801682D
+:10458000C90511D40168804641F480710160FFF7CC
+:104590006DFC064604E0FFF769FC801B642822D806
+:1045A000D8F80000C005F6D5386A10F4407020D065
+:1045B000A18801F4407181421BD0386A1E49012252
+:1045C00020F440700A6000220A603862C00710D0F0
+:1045D000FFF74CFC064641F2883807E0FFF746FC3F
+:1045E000811B414502D90320BDE8F883386A800762
+:1045F000F4D5386A616820F44070084338621DB110
+:10460000F86920F08050F8612078800705D5786837
+:10461000A16820F44040084378602078C00605D5A2
+:104620007868616920F48000084378600020DBE747
+:104630000010024000700040400442422DE9F04763
+:104640000D46040067D0DFF81881D8F8000000F0AC
+:104650000700A8420CD2D8F8001021F00701294326
+:10466000C8F80010D8F8000000F00700A84252D1A6
+:1046700020683C4E810712D5400703D5706840F48E
+:10468000E06070602078000703D5706840F46050E7
+:1046900070607068A16820F0F000084370602078B6
+:1046A000C00727D06068012810D03168022810D0D8
+:1046B000890700292FDA716821F003010143716035
+:1046C000FFF7D4FB074641F288390CE031688903D3
+:1046D000EFE78901EDE7FFF7C9FBC11B494502D9A7
+:1046E0000320BDE8F0877068616800F00C00B0EB53
+:1046F000810FF0D1D8F80010404601F00701A9421F
+:104700000BD9016821F0070129430160006800F01E
+:104710000700A84201D00120E3E72078400705D533
+:104720007068E16820F4E06008437060207800075A
+:1047300006D57068216920F4605040EAC1007060BD
+:1047400000F038F87168084AC1F30311515CC840A1
+:104750000649086006480068FFF77EFE0020C0E7B3
+:10476000002002400010024042AA00080C00002075
+:10477000040000200448054900684968044AC1F360
+:104780000221515CC84070470C000020001002401C
+:1047900052AA00080448054900684968044AC1F360
+:1047A000C221515CC84070470C000020001002403C
+:1047B00052AA00080E4B59680E4801F00C02042A58
+:1047C00011D0082A0FD10C48C1F38342C903805C81
+:1047D0000AD55968084AC1F34041921E515C054A06
+:1047E0005043B0FBF1F07047044948437047000064
+:1047F0000010024000127A0032AA000800093D00B1
+:104800002DE9F84F04006FD02078BE4DC00747D087
+:104810006868C0F38100012807D06868C0F3810090
+:10482000022809D16868C00306D52868800337D5F7
+:1048300060680028E7D033E06068B0F5803F0BD0B7
+:1048400010B1B0F5A02F11D0286820F48030286076
+:10485000286820F4802002E0286840F48030286036
+:10486000606888B1FFF702FB064609E0286840F45B
+:1048700080202860F0E7FFF7F9FA801B642873D8DE
+:1048800028688003F7D50BE0FFF7F0FA064604E04E
+:10489000FFF7ECFA801B6428F1D828688003F7D46E
+:1048A0002078DFF8648280074FF0010A4FF000099A
+:1048B00039D5686810F00C0F07D06868C0F3810024
+:1048C000022809D16868C00306D42868800714D577
+:1048D0002069012808D110E02069B0B1C8F800A013
+:1048E000FFF7C4FA064605E007E1FFF7BFFA801BB1
+:1048F0000228C4D828688007F7D52868616920F0A5
+:10490000F80040EAC10028600DE0C8F80090FFF709
+:10491000ADFA064604E0FFF7A9FA801B022823D867
+:1049200028688007F7D4207800072CD57748A1693C
+:10493000D9B1C0F800A0FFF799FA064604E0FFF7E6
+:1049400095FA801B02280FD8686A8007F7D570484F
+:104950004FF4FA510068B0FBF1F0009000BF0098EE
+:10496000411E0091FAD20EE07CE0C0F80090FFF703
+:104970007DFA064604E0FFF779FA801B022871D819
+:10498000686A8007F7D4207840075BD5E86900277C
+:10499000C00008D4E86940F08050E861E869012768
+:1049A00000F0805000905B480168C90511D401688F
+:1049B000834641F480710160FFF758FA064604E02F
+:1049C000FFF754FA801B64284CD8DBF80000C005C0
+:1049D000F6D5E06801280AD008B1052813D0286A66
+:1049E00020F001002862286A20F0040002E0286A12
+:1049F00040F001002862E06841F2883B88B1FFF78F
+:104A000035FA064609E0286A40F004002862EEE71D
+:104A1000FFF72CFA811B59455BD8286A8007F7D528
+:104A20000BE0FFF723FA064604E0FFF71FFA811BAD
+:104A300059454ED8286A8007F7D41FB1E86920F09D
+:104A40008050E861E069A8B36968C1F38101022977
+:104A500046D00228484606D0C8F86000FFF706FA9C
+:104A6000044639E035E04746C8F86000FFF7FEF934
+:104A7000064604E0FFF7FAF9801B022829D82868C7
+:104A80008001F7D4206AB0F5803F05D16868A1683D
+:104A900020F4003008436860D4E9080108436968DD
+:104AA00021F4741108436860C7F860A0FFF7DEF9CD
+:104AB000044605E023E0FFF7D9F9001B022808D8D7
+:104AC00028688001F7D51AE0FFF7D0F9001B02280B
+:104AD00002D90320BDE8F88F28688001F4D40EE0E5
+:104AE0000128F7D06868226A00F48031914204D12D
+:104AF000616A00F47010884201D00120EAE70020CA
+:104B0000E8E70000001002400000424280044242F8
+:104B10000C0000200070004010B5401EB0F1807FF6
+:104B200001D3012010BD4FF0E02460610F21601718
+:104B300003F0F0F80020A06107202061002010BDE4
+:104B40007047704710B590F83C20012A22D001220E
+:104B500080F83C20CA688C6822F4407222434C687A
+:104B600022F4806222430C6822F4006222430C6922
+:104B700022F4805222434C6922F400522243C96934
+:104B8000002322F480420A4301684A6480F83C30E2
+:104B9000002010BD022010BD70B590F83C20012A05
+:104BA0002CD0012580F83C50022280F83D2002687C
+:104BB0005368946823F070060B6833435360104BBE
+:104BC00002689A420ED00F4B9A420BD0B2F1804F3E
+:104BD00008D00D4B9A4205D00C4B9A4202D00C4B98
+:104BE0009A4204D1496824F080031943916080F807
+:104BF0003D50002180F83C10084670BD022070BD79
+:104C0000002C014000340140000400400008004036
+:104C1000000C004010B5044649B104290AD0082907
+:104C20000BD094F8450001280AD0012010BD94F85B
+:104C30004200F8E794F84300F5E794F84400F2E7FF
+:104C4000022061B304292DD008292ED084F8450014
+:104C50000422206802F067F92068416C41F40041A9
+:104C600041641349206888420ED0124988420BD013
+:104C7000B0F1804F08D01049884205D00F498842D2
+:104C800002D00F49884204D1816801F0070106294A
+:104C900003D0016841F001010160002010BD84F8DB
+:104CA0004200D5E784F84300D2E784F84400CFE718
+:104CB000002C014000340140000400400008004086
+:104CC000000C004010B5040003D094F83D0010B172
+:104CD00007E0012010BD002084F83C00204600F0D1
+:104CE0001FF8022084F83D00211D206802F0C0F862
+:104CF000012084F8460084F83E0084F83F0084F8E0
+:104D0000400084F8410084F8420084F8430084F8AD
+:104D1000440084F8450084F83D00002010BD0000E8
+:104D200008B500681B4A1C49904207D1886940F4C5
+:104D300000608861886900F400600CE0B0F1804F89
+:104D40000BD0164A90421AD1C86940F00200C861DF
+:104D5000C86900F00200009008BDC86940F0010079
+:104D6000C861C869002200F00100009011461C20B3
+:104D7000FFF7BEFBBDE808401C20FFF7ABBB084AAD
+:104D80009042E9D1C86940F00400C861C86900F0E8
+:104D90000400E0E7002C0140001002400004004045
+:104DA0000008004090F83D10012901D00120704713
+:104DB000022180F83D1000680E4988420ED00E494D
+:104DC00088420BD0B0F1804F08D00C49884205D002
+:104DD0000B49884202D00B49884204D1816801F016
+:104DE0000701062903D0016841F00101016000209C
+:104DF00070470000002C01400034014000040040D6
+:104E000000080040000C004090F83D10012901D03E
+:104E100001207047022180F83D100168CA6842F005
+:104E20000102CA6000680E4988420ED00D498842CE
+:104E30000BD0B0F1804F08D00B49884205D00B4908
+:104E4000884202D00A49884204D1816801F00701F2
+:104E5000062903D0016841F001010160002070477C
+:104E6000002C0140003401400004004000080040D4
+:104E7000000C004001680A6A41F211131A4207D17E
+:104E80000A6A9B101A4203D10A6822F001020A60E2
+:104E9000012180F83D100020704770B5044690F85D
+:104EA0003C000025012817D0012684F83C60022030
+:104EB00084F83D002068826822F0770222F47F4265
+:104EC00082600868502838D00DDC20284FD005DCDF
+:104ED00090B3102811D14AE0022070BD302846D08E
+:104EE00040280AD13BE060282FD070280DD0B0F5C3
+:104EF000805F03D0B0F5005F12D0012584F83D60DB
+:104F0000002084F83C00284670BDCB68D1E901211F
+:104F1000206802F015F82068816841F0770109E007
+:104F2000CB68D1E90121206802F00AF82068816885
+:104F300041F480418160E1E719E0CA68496820686E
+:104F400002F0D2F85021206806E0CA68496820685B
+:104F500002F0DBF86021206801F0FCFFCEE7CA68B0
+:104F60004968206802F0C0F840212068F4E7226810
+:104F700001461046F0E770472DE9F041044600680D
+:104F8000C66805694FF00007A90713D5B10711D509
+:104F9000F91E016101202077206880698007204682
+:104FA00002D0FFF7E8FF04E000F0F1F8204600F03F
+:104FB000B1F92777680716D5700714D521686FF007
+:104FC00004000861022020772068806910F4407F87
+:104FD000204602D0FFF7CFFF04E000F0D8F82046CB
+:104FE00000F098F92777280715D5300713D52168E1
+:104FF0006FF008000861042020772068C0698007EE
+:10500000204602D0FFF7B7FF04E000F0C0F82046CA
+:1050100000F080F92777E80616D5F00614D5216848
+:105020006FF010000861082020772068C06910F434
+:10503000407F204602D0FFF79EFF04E000F0A7F873
+:10504000204600F067F92777E80708D0F00706D078
+:1050500021686FF001000861204600F0BBF92806C6
+:1050600008D5300606D521686FF08000086120461B
+:10507000FFF766FD680608D5700606D521686FF053
+:1050800040000861204600F0E3F9A8060AD5B00602
+:1050900008D521686FF0200008612046BDE8F04186
+:1050A000FFF74FBDBDE8F08100B585B0002100914C
+:1050B00001910291039100681A4B1B490222984208
+:1050C00011D1886940F0080088618869694600F05C
+:1050D000080004909003CDE9000214480392FEF703
+:1050E000BBFD05B000BD124B9842FAD1886940F073
+:1050F000100088618869694600F0100004904FF440
+:10510000E070CDE900020B480392FEF7A5FD0A49C5
+:10511000486820F4406040F0E06040F4406048603F
+:10512000DFE70000002C014000100240000C0140AD
+:1051300000040040001001400000014070B504462A
+:1051400090F83C00002501280FD0012084F83C0095
+:105150006AB1042A0FD0082A11D00C2A13D00125D5
+:10516000002084F83C00284670BD022070BD2068F5
+:1051700001F0F8FEF4E7206801F024FFF0E7206872
+:1051800001F056FFECE7206801F086FFE8E7704782
+:1051900010B5040003D094F83D0010B107E00120E1
+:1051A00010BD002084F83C00204600F01EF80220CC
+:1051B00084F83D00211D206801F05AFE012084F88A
+:1051C000460084F83E0084F83F0084F8400084F8EC
+:1051D000410084F8420084F8430084F8440084F8D5
+:1051E000450084F83D00002010BD704770B50446AE
+:1051F00090F83C0000260D4601280FD0012084F8CD
+:105200003C006AB1042A1DD0082A2FD00C2A3FD0B6
+:105210000126002084F83C00304670BD022070BD9D
+:10522000206801F09FFE2068816941F008018161DA
+:105230002068816921F004018161206881692A69FF
+:10524000114311E0206801F0BDFE2068816941F43E
+:10525000006181612068816921F480618161206839
+:1052600081692A6941EA02218161D2E7206801F05F
+:10527000DFFE2068C16941F00801C1612068C16991
+:1052800021F00401C1612068C1692A69114311E05C
+:10529000206801F001FF2068C16941F40061C1612B
+:1052A0002068C16921F48061C1612068C1692A69EF
+:1052B00041EA0221C161ACE710B5040003D094F8C3
+:1052C0003D0010B107E0012010BD002084F83C0033
+:1052D000204600F01EF8022084F83D00211D2068C1
+:1052E00001F0C6FD012084F8460084F83E0084F8F1
+:1052F0003F0084F8400084F8410084F8420084F8BC
+:10530000430084F8440084F8450084F83D00002000
+:1053100010BD70477047000010B5044649B104291C
+:105320000AD008290BD094F8410001280AD00120A6
+:1053300010BD94F83E00F8E794F83F00F5E794F8C4
+:105340004000F2E7022081B3042932D0082933D08B
+:1053500084F841000122206801F0D8FD184A206835
+:105360001849904201D0884203D1436C43F4004372
+:105370004364206890420DD088420BD0B0F1804F3A
+:1053800008D01149884205D01049884202D01049FE
+:10539000884204D1816801F00701062903D0016821
+:1053A00041F001010160002010BDFFE784F83E00DC
+:1053B000D0E784F83F00CDE784F84000CAE700005A
+:1053C000002C01400034014000040040000800406F
+:1053D000000C004070B50068B0F1804F34D11B4C18
+:1053E0000A21206C401CB0FBF1F201FB12010125E7
+:1053F0002064A9B9E563616C491C61644FF47A715A
+:10540000B0FBF1F201FB120141B942F21071B0FBA5
+:10541000F1F201FB1200256500B9656501F00EF996
+:10542000206C6421B0FBF1F201FB1201012900D1D3
+:10543000A5643221B0FBF1F201FB1200002803D178
+:10544000BDE8704003F01ABB70BD00002C020020C4
+:105450007047704710B504460068406994F84110E1
+:10546000C0F3C010212911D180B12068143050E858
+:10547000001F21F0800140E80012002AF5D1A06B46
+:1054800008B1FEF76AF9204601F02AFF206840695A
+:1054900094F84210C0F38010222911D180B1206805
+:1054A000143050E8001F21F0400140E80012002AAB
+:1054B000F5D1E06B08B1FEF750F9204601F0E9FEA6
+:1054C000002010BD04490268896F09688A4201D131
+:1054D00002F046B8704700002C020020F8B50168C1
+:1054E00004460868CA684B6910F00F0F4FF00005BA
+:1054F00059D003F0010602F49077374365D0C10715
+:1055000005D0D10503D5616C41F00101616441070B
+:1055100005D5D90703D0616C41F0020161648107B0
+:1055200005D5D90703D0616C41F00401616401071E
+:1055300007D502F02001314303D0616C41F008012E
+:105540006164616C00293AD0800604D5900602D5CA
+:10555000204601F0D3FE20684069616CC0F38010E2
+:10556000090700D460B3204601F093FE206840692B
+:10557000400621D52068143050E8001F21F040017A
+:1055800040E80012002AF5D1E06BA8B16D494163F3
+:10559000E06BFEF705F9002811D0E06B416B01B01C
+:1055A000BDE8F040084783060FD593060DD5204689
+:1055B000BDE8F84001F0A2BE2046FFF783FFF8BD2A
+:1055C0002046FFF77FFF6564F8BD266B2023012E80
+:1055D0007CD1C6067AD5D60678D50868486800908A
+:1055E00048694FF00206400640D5E16B0868406804
+:1055F0000004000CE8D0A28D8242E5D9E0858869DC
+:1056000020282DD020680C3050E8001F21F4807134
+:1056100040E80012002AF5D12068143050E8001F3D
+:1056200021F0010140E80012002AF5D12068143071
+:1056300050E8001F21F0400140E80012002AF5D197
+:1056400084F84230256320680C3050E8001F21F0B8
+:10565000100140E80012002AF5D1E06BFEF77DF85A
+:105660006663A08DE18D401A81B22AE0A08DE18DA4
+:10567000401A81B2E08D0028A6D00029A4D020686D
+:105680000C3050E8002F22F4907240E80027002FE1
+:10569000F5D12068143050E8002F22F0010240E8D4
+:1056A0000027002FF5D184F84230256320680C30A4
+:1056B00050E8002F22F0100240E80023002BF5D123
+:1056C00066632046FFF7C5FEF8BDFFE705062BD54C
+:1056D000150629D594F841002128F5D1A068B0F528
+:1056E000805F01D12069B0B1206A411C216221682C
+:1056F00000784860E08C401E0004000CE084E3D198
+:105700002068C16821F08001C1602068C16841F053
+:105710004001C160D8E7206A0088C0F308004860F3
+:10572000206A801C2062E5E74006CDD55006CBD527
+:10573000CA68204622F04002CA6084F8413000F076
+:10574000A5F9C1E74971000870B5040004D094F8C8
+:105750004100002510B106E0012070BD84F84050E2
+:10576000204600F023F8242084F841002068C16816
+:1057700021F40051C160204601F022FE2068016939
+:1057800021F4904101612068416921F02A014161C1
+:105790002068C16841F40051C1606564202084F82C
+:1057A000410084F842006563002070BD2DE9F0439C
+:1057B00085B0002500950195029503950446764F26
+:1057C000016876480222032380264FF48068B9429C
+:1057D00038D1C16941F40021C161C16901F40021DE
+:1057E0000491816941F01001816180696C4F00F082
+:1057F0001000CDE90330CDE9008269463846FEF756
+:105800002BFA3001CDE90005694638460295FEF7CE
+:1058100023FA654F6348C7E90005C7E902563D61B1
+:105820007D61BD613846FD61FEF776F908B1FDF78F
+:1058300086FDE7630022114634207C62FEF758FEA5
+:10584000342052E0DFF864C1594F4FF01009614530
+:1058500050D1816941F480418161816901F48041C5
+:105860000491816941F0040181618069694600F019
+:10587000040004907815CDE9000203933846FEF742
+:10588000EBF9CDE90085694638460295FEF7E4F963
+:10589000454F48484437C7E90005C7E902563D610E
+:1058A0007D61BD613846FD61FEF736F908B1FDF74F
+:1058B00046FDE7637C623C4F3E4888371438C7E9B1
+:1058C00002563D617D61BD61FD61C7E90009384651
+:1058D000FEF722F908B1FDF732FDA7630022114659
+:1058E00025207C62FEF704FE2520FEF7F3FD05B0BF
+:1058F000BDE8F083DFF8C0C06145F8D1C16941F46B
+:105900000031C161C16901F400310491816941F044
+:10591000040181618069694600F00400049004205C
+:10592000CDE9000203933846FEF796F90820CDE949
+:105930000005694638460295FEF78EF91A4F1D4854
+:10594000CC371430C7E90005C7E902563D617D61D7
+:10595000BD613846FD61FEF7DFF808B1FDF7EFFCE9
+:10596000E7637C62154F1348C7E902563D617D61CC
+:10597000BD612830FD61C7E900093846FEF7CCF863
+:1059800008B1FDF7DCFCA7630022114626207C62EB
+:10599000FEF7AEFD2620A8E7004C004000100240B4
+:1059A0000010014030040240780600200038014019
+:1059B00000080140580002400044004088070020D1
+:1059C0000A4B01689A6F1268914201D101F048BEFA
+:1059D000DA6F1268914201D104F042B8D3F8802006
+:1059E0001268914201D102F02DBF70472C020020B5
+:1059F00090F84230202B01D00220704721B11AB11B
+:105A00000023036301F038BD0120704770477047E1
+:105A100037B5044690F84100202801D002203EBD51
+:105A2000019951B34AB32162A284E28400206064E8
+:105A3000212384F84130A56B114BAB62A56B114B50
+:105A4000EB62A56B104B2B63A36B58632068134666
+:105A5000A56B021D2846FEF79DF821686FF04000F7
+:105A600008602068143050E8001F41F0800140E8D1
+:105A70000012002AF5D100203EBD01203EBD0000ED
+:105A800047720008897200085971000807490268C6
+:105A9000896F0B68816B9A4205D191F82110022918
+:105AA00003D001F02DBE91F8210070472C02002098
+:105AB0007047FEE77FB500238DF80C306425012484
+:105AC00003AB8DE8380049002346FEF799FA10B180
+:105AD000002004B070BD9DF80C00FAE73FB583B01C
+:105AE0006425012406AB8DE8380049002346FEF703
+:105AF000B5FB002800D0032007B030BD01684A691B
+:105B0000D24352050FD46FF480624A61002140F8FD
+:105B1000301F202242738173026942F00402026145
+:105B20000173012070470020704700002DE9F84FF5
+:105B30000446006889460B9E01689846174641F462
+:105B4000806101602068016841F480710160009605
+:105B50004FF0011B0022594620460A9B00F0E3F853
+:105B60004FF4007A40B120680068C00501D5C4F840
+:105B700040A00320BDE8F88F216809F0FE0008610D
+:105B80003346284920460A9A00F011F9F0BB2068F4
+:105B9000416980690090324620460A9900F09EF9DA
+:105BA00040B1206C04283AD12068016841F40071AA
+:105BB000016034E0FDB2B8F1010F09D02168380A64
+:105BC0000861324620460A9900F088F90028E8D199
+:105BD00020680561324620460A9900F07FF90028C6
+:105BE000DFD12068016841F48071016000960022D5
+:105BF000594620460A9B00F096F80028B3D1216848
+:105C000009F0FF0040F00100086100E007E03346C2
+:105C1000044920460A9A00F0CAF80028AAD00120B8
+:105C2000A8E70000020001002DE9F84304460068DF
+:105C30000D46DDE9089701689846164641F48071E3
+:105C400001604B4600224FF001112046009700F002
+:105C50006AF848B120680068C00502D54FF40070AA
+:105C600020640320BDE8F883216805F0FE00086188
+:105C70003B464A461549204600F099F888B9206805
+:105C80004169806900903A464946204600F026F96D
+:105C900048B1206C042804D12068016841F40071E7
+:105CA00001600120DEE7F5B2B8F1010F09D02168EB
+:105CB000300A08613A464946204600F00FF90028AC
+:105CC000E7D1206805610020CCE700000200010058
+:105CD00070B516460D4604461EE02046FFF70EFF3F
+:105CE00008B1012070BD681C16D0FEF7BFF8801BFC
+:105CF000A84200D885B920684069C04340070BD549
+:105D0000002044F8300F20216173A073216941F015
+:105D1000200121612073E4E720684069C043400707
+:105D2000DBD4002070BD2DE9F0471E4690460D469D
+:105D30000446C1F30747DDF8209026E0701C24D00C
+:105D4000FEF794F8A0EB0900B04200D8EEB9206845
+:105D5000012F16D0806925EA00000004000C12D043
+:105D60000020404511D1002044F8300F20216173FC
+:105D7000A073216941F02001216120730120BDE859
+:105D8000F0874069E7E70120EBE72068012F0AD0A0
+:105D9000806925EA00000004000C06D00020404580
+:105DA000CCD00020EBE74069F3E70120F7E72DE9CD
+:105DB000F047984616460D4604464FF000094FF04E
+:105DC000200AC1F3074723E020684069C04340052B
+:105DD00015D42068016841F40071016021686FF4F6
+:105DE00080604861C4F8309084F83DA084F83E900B
+:105DF000216C41F00401216484F83C9020E0701C87
+:105E000006D0FEF733F8A0EB0800B04203D816B175
+:105E1000012F1ED020E02068012F14D0806925EAD0
+:105E200000000004000C17D044F8309F84F80DA047
+:105E300084F80E90216941F02001216184F80C90D2
+:105E40000120BDE8F087406925EA00000004000C4D
+:105E5000EAD12068406901E02068806925EA0000F5
+:105E60000004000CB0D1ECE72DE9F04116460D46D8
+:105E7000044600274FF0200829E04069C043C006CF
+:105E80000DD454F8301B6FF01000486144F80D7BBE
+:105E900004F81D89A777206A2062277714E0FDF7B0
+:105EA000E5FF801BA84200D88DB920684069C04337
+:105EB00040060CD544F8307F84F80D80A773206924
+:105EC00040F02000206127730120BDE8F0812068A8
+:105ED0004169C9434906D0D40020F6E770B516469B
+:105EE0000D4604461EE02046FFF708FE08B10120DB
+:105EF00070BD681C16D0FDF7B9FF801BA84200D802
+:105F000085B920684069C04300060BD5002044F8DD
+:105F1000300F20216173A073216941F020012161BC
+:105F20002073E4E720684069C0430006DBD400200A
+:105F300070BD30B500221446002816D003782D2BF2
+:105F40000BD1012408E002EB82025200A3F13005DC
+:105F5000092D09D8303A1A44401C0378002BF2D19D
+:105F600024B15042086002E0012030BD0A600020E8
+:105F700030BD000010B51D481D4C406C606400F041
+:105F800069FD1C49C0B24A69824215D048610022AD
+:105F90000028606C0BD088604B68002013B18868C3
+:105FA0004B68C01A4A6002280AD80A7003E04860A9
+:105FB0000878012801D0CA6010BD8868C86010BD8B
+:105FC0000123502804D303200870CA608B6110BDE0
+:105FD0000B610B708868CA68801A2828F7D88B6113
+:105FE0000869401C08610220087010BD2C020020C6
+:105FF000B40100207C1E00203EB50021174800910E
+:106000000191154A02910260921582600124047385
+:10601000017502254FF460220561C2614160FDF700
+:1060200013FA08B1FDF78BF90C20CDE90004032029
+:10603000029069460948FDF785F908B1FDF77FF937
+:106040000D20CDE9000569460448FDF77BF90028DD
+:1060500001D0FDF774F93EBD002401406403002027
+:10606000214808B5416941F001014161416901F0F0
+:1060700001010091416941F0020141614069002242
+:1060800000F00200009011460B20FEF731FA0B20C1
+:10609000FEF720FA002211460E20FEF729FA0E2004
+:1060A000FEF718FA002211460F20FEF721FA0F2002
+:1060B000FEF710FA002211461020FEF719FA102000
+:1060C000FEF708FA002211461120FEF711FA1120FE
+:1060D000FEF700FA002211463A20FEF709FABDE861
+:1060E00008403A20FEF7F6B9001002402DE9F043CF
+:1060F00085B000245048009401940294039481696F
+:1061000041F020018161816901F0200104918169E0
+:1061100041F010018161816901F0100104918169F0
+:1061200041F004018161816901F0040104918169F8
+:1061300041F0080181618069404F00F0080004903F
+:10614000012250213846FDF78CFEDFF8F480002252
+:1061500010214046FDF785FEDFF8E8900122114648
+:106160004846FDF77EFE002247F224014846FDF72F
+:1061700078FEA220CDE90004694638460294FDF776
+:106180006BFD502001250226CDE90005CDE9024630
+:1061900069463846FDF760FD1020CDE90005CDE9E0
+:1061A000024669464046FDF757FD46F22500CDE917
+:1061B0000005CDE9024669464846FDF74DFD1A2027
+:1061C000CDE90004694648460294FDF745FD0320E9
+:1061D0002E03CDE90240CDE9006569464846FDF74A
+:1061E0003BFD6802184D6946CDE900050294404622
+:1061F000FDF732FDCDE90064694640460294FDF7A3
+:106200002BFD0420CDE90004694610480294FDF7F7
+:1062100023FD3011CDE90005694602944846FDF79B
+:106220001BFD002211461720FEF762F91720FEF72A
+:1062300051F905B0BDE8F0830010024000080140AC
+:1062400000100140000C014000003110001401401A
+:106250000D4810B50B4901600C49416000214FF415
+:1062600080428160C0E9031241618161C1610162C4
+:10627000FDF702FE002803D0BDE81040FDF75FB82F
+:1062800010BD000000540040D8030020A08601008B
+:106290000D4810B50B4901600C49416000214FF4D5
+:1062A00080428160C0E9031241618161C161016284
+:1062B000FDF7E2FD002803D0BDE81040FDF73FB830
+:1062C00010BD0000005800402C040020A0860100F2
+:1062D00010B596B000240F94109411941294139456
+:1062E0001C2108A81494FAF7C5FB20216846FAF788
+:1062F000C1FB2C482A4901603F21C0E901144FF637
+:10630000FF71C0E9031444618461FEF7DBFC08B14E
+:10631000FDF715F84FF480500F900FA92148FEF7B4
+:10632000BCFD08B1FDF70BF81E48FEF731FF08B1C0
+:10633000FDF705F8139413A91A481494FEF72CFCE2
+:1063400008B1FCF7FCFF0820CDE90A400894099445
+:1063500002460C940D9408A912480E94FEF7EEFE26
+:1063600008B1FCF7ECFF00944FF40050CDE9044075
+:1063700002940194039469460A480794FEF7E2FBED
+:1063800008B1FCF7DCFF08210648FEF7C5FF08212D
+:106390000448FEF73FFC0348FEF786FE16B010BD2A
+:1063A000002C01408004002010B586B0002417485E
+:1063B000009401940294039404944FF08041059456
+:1063C000C0E900144FF47A51C0E902414FF4007162
+:1063D000016180218161FEF775FC08B1FCF7AFFF18
+:1063E0004FF48050009069460848FEF756FD08B10A
+:1063F000FCF7A5FF049404A904480594FEF7CCFB20
+:10640000002801D0FCF79BFF06B010BDC804002097
+:1064100010B58EB000240794089409940A940B9444
+:106420001C2168460C94FAF725FB2D482B49016086
+:106430003F21C0E901144FF47A71C0E903148021AF
+:106440008161FEF73FFC08B1FCF779FF4FF4805003
+:10645000079007A92248FEF720FD08B1FCF76FFF5F
+:106460001F48FEF729FF08B1FCF769FF0B940BA941
+:106470001B480C94FEF790FB08B1FCF760FF60200E
+:10648000CDE9000402940022694615480494FEF701
+:10649000ADFE08B1FCF753FF042269461048FEF731
+:1064A000A5FE08B1FCF74BFF082269460C48FEF731
+:1064B0009DFE08B1FCF743FF00210948FEF72CFFC1
+:1064C00004210748FEF728FF08210548FEF724FFAE
+:1064D0000348FEF7E9FD0EB010BD000000040040C7
+:1064E0001005002010B586B00024164800940194D1
+:1064F00002940394049412490594C0E900144FF6E1
+:10650000FF71C0E9024104618461FEF7DBFB08B161
+:10651000FCF715FF4FF48050009069460948FEF7DC
+:10652000BCFC08B1FCF70BFF049404A905480594D2
+:10653000FEF732FB002801D0FCF701FF06B010BDCA
+:1065400000080040580500200C4810B50A490160B9
+:106550004FF4E1314160002181600C22C160C0E94B
+:1065600004128161C161FFF7EFF8002803D0BDE894
+:106570001040FCF7E4BE10BD004C0040A005002018
+:106580000C4810B50A4901604FF4E1314160002127
+:1065900081600C22C160C0E904128161C161FFF712
+:1065A000D3F8002803D0BDE81040FCF7C8BE10BDEA
+:1065B00000380140E80500200C4810B50A49016088
+:1065C0004FF4E1314160002181600C22C160C0E9DB
+:1065D00004128161C161FFF7B7F8002803D0BDE85C
+:1065E0001040FCF7ACBE10BD004400403006002057
+:1065F000FEE7000030B5002401230F4A072520B133
+:1066000003290BD0042909D00BE00B480129406C69
+:1066100009D00329F6D190641570D36415705467BE
+:10662000D364002030BD906402201070D364C2E9AE
+:1066300007305470F5E70000B40100202DE9F04761
+:1066400001F012FD934D00244FF00708286C01263D
+:1066500020B12C646C6785F80080EE648E488F4F03
+:10666000406C6864B86928B1BC6139782878FFF754
+:10667000C1FF3C702878092846D00927DFF820920E
+:10668000DFF820A2092875D2DFE800F00574A174B4
+:10669000779C740C33000021084600F033FB002186
+:1066A00001202FE0E86C98B16C65AC65EC652C6658
+:1066B0007D486C66FEF7DEFB7B48FEF773FB686C7B
+:1066C000A863EC6428636C70696A2046E96619E087
+:1066D000A96B686C401AB0F5C87F15D9686D04289D
+:1066E00012D20021084600F00DFB2F700120BDE8FA
+:1066F000F087E86C48B1686CEC642C67C5E90E045F
+:106700006878E96E00F0FEFAC1E0286F68B1E86BC6
+:10671000D0B1696CA86B081A0A28F5D900F08EF977
+:10672000B0B12C70EE646E63B1E0A96B686C401A76
+:106730006428E9D9EE64E86E03F0D1FD4FF03332FE
+:106740005A4B03F0DBFB11E0EE63686CA8639EE03C
+:1067500008202870EE64687868B100206870E86EE0
+:1067600003F0BDFD4A46534603F008FE03F08AFDE0
+:10677000E8668CE08AE00120F0E7E86C38B10020A0
+:10678000A96800F0BFFA686CEC64A8637FE0A96BAD
+:10679000686C401A6968884207D10021084600F0F9
+:1067A000B1FA0021012000F0ADFAA96B686CAA696A
+:1067B000401A69681144884269D305202870C5E9E8
+:1067C000136464E085F80080EE642E655FE0E86C99
+:1067D000B0B1E86990B1E96A686C401A29698842E9
+:1067E00009D9696AEC61E966687800F08BFAEC64B3
+:1067F000686CAC62A8632C67EC6348E0E96EF3E771
+:10680000286F78B1E86BB8B1A96B686C401A0A2898
+:1068100024D9EE6400F012F990B1EE61686CE86280
+:106820006C701BE0A96B686C411A642916D9EE6183
+:10683000E8626C70EE6411E0EE63686CA8630DE0D2
+:10684000687808B300206870E86E03F048FD4A4697
+:10685000534603F093FD03F015FDE866D5E91101F9
+:10686000401AE968884212D911486C6701688C6344
+:1068700000688463094840211C306C65FAF7FAF817
+:10688000EE6485F8008002E00120DCE72F70002034
+:106890002DE70000B40100202C0200207C1E002007
+:1068A000CDCCCCCCCCCCEC3F580500203333EB3FE7
+:1068B00010050020FEE700002DE9F0415748584C34
+:1068C0000126406C6064207802287DD007280BD018
+:1068D00008287AD00021084600F014FABDE8F041FB
+:1068E0000021012000F00EBA00F0A8F820B100F05D
+:1068F000B9FAA065BDE8F08100F0B4FAE065226B5A
+:10690000616C891A6429F5D9616D0027454DA26D26
+:10691000042936D29042A0EB020001D800F5803065
+:1069200045F82100491C61650429E3D13D48FCF785
+:1069300062FB6766686803F0D2FC06460F4628686B
+:1069400003F0CDFC0022384B03F018FD32463B46E5
+:1069500003F0D8FC02D22868400002E0D5E900101C
+:106960000844606603F0BBFC0022304B03F006FDD8
+:1069700003F088FC6066616D45F82100491C616583
+:10698000B8E79042A0EB020001D800F58030A06685
+:1069900045F82100491C6165616E88421BD90820B9
+:1069A00020700021084600F0ADF90021012000F020
+:1069B000A9F9E664E06E03F092FC1D4A1D4B03F05A
+:1069C000DDFC03F05FFC01E022E013E0E0666078AC
+:1069D00070B100206070606D40288BD100210846A6
+:1069E00000F090F90021012000F08CF9676581E743
+:1069F0000120EFE700F022F80028C1D0002108466E
+:106A000000F080F90021012000F07CF926676EE794
+:106A1000206A0028EEDD401E20626BE72C02002079
+:106A2000B4010020981E00200000F43F0000E43F65
+:106A30009A9999999999E93F7047000010B54FF4D8
+:106A400000710348FDF700FA002800D0012010BDB6
+:106A50000010014010B54FF480710348FDF7F4F9C0
+:106A6000002800D0012010BD000C0140704700003C
+:106A700010B50623002253210348FFF72FF8BDE885
+:106A800010400A20FDF7BEB8D803002010B500F072
+:106A90008FF96420FDF7B6F80622BDE810405321B7
+:106AA0000148FFF707B80000D80300202DE9F041A6
+:106AB0002F4F05462D4E90F875003C6C00F078F98C
+:106AC0002820FDF79FF80FE0386C021BA04201D28E
+:106AD00002F18072B24207D900206860BDE8F0413F
+:106AE00024A1012000F02EBE072253212648FEF7E4
+:106AF000E1FF0007E8D40A20FDF784F810225321B3
+:106B00002148FEF7D7FF0446112253211E48FEF705
+:106B1000D1FF44EA0024122253211B48FEF7CAFF8A
+:106B200054EA004068601ED10A20FDF76BF810227D
+:106B300053211548FEF7BEFF044611225321124887
+:106B4000FEF7B8FF44EA0024122253210E48FEF754
+:106B5000B1FF54EA0040686005D1BDE8F0410BA1E7
+:106B6000012000F0EFBDBDE8F08100000024F4003A
+:106B70002C0200206572726F725F737461746520FD
+:106B80003A25640A00000000D80300206572726F85
+:106B9000725F446174610A0070B5044690F8750034
+:106BA000FFF774FFC22825D1FFF762FF312000F004
+:106BB00047F8032000F09EF80025A56165620E48A5
+:106BC000A5622061482104F12C00F9F753FF2577D5
+:106BD00020462562FFF76AFF6068322801D900204D
+:106BE00070BD6420FDF70EF82046FFF75FFF6D1CB7
+:106BF0000A2DF1DB012070BD0000F0410F4801219A
+:106C000080F87510022180F8ED10032180F86511DD
+:106C1000042180F8DD11052180F85512062180F845
+:106C2000CD12072180F84513082180F8BD130921F2
+:106C300080F835140A2180F8AD147047B81600208A
+:106C40000346042253210148FEF748BFD803002021
+:106C500010B52348FFF7A0FF224C20702048783061
+:106C6000FFF79AFF60701E48F030FFF795FFA070A5
+:106C70001D48FFF791FFE0701B487830FFF78CFF4D
+:106C800020711948F030FFF787FF60711748FFF750
+:106C900083FFA07115487830FFF77EFFE07113483D
+:106CA000F030FFF779FF20721148FFF775FF60722F
+:106CB000217862781143A2781143E2781143227956
+:106CC000114362791143A2791143E2791143227A87
+:106CD0001143014302D04FF0FF3010BD002010BD22
+:106CE000B816002068010020201800208819002014
+:106CF000F01A00200346052253210148FEF7EEBE9C
+:106D0000D803002010B5642901DD642102E00029C8
+:106D100000DA0021074B01EB81014A0019680024C9
+:106D200018B18C631868C26310BD8A631868C463A5
+:106D300010BD000010050020FDF774BB30B595B004
+:106D400028216846F9F796FE14210AA8F9F792FE61
+:106D500018210FA8F9F78EFE0120010400248DE808
+:106D600013000490CDE90814022507956846FDF745
+:106D700047FD08B172B6FEE70F20CDE90A054FF4D2
+:106D80008060CDE90C4000210AA80E94FDF756FC66
+:106D900008B172B6FEE70FA80F951194FDF7DAFB64
+:106DA000002801D072B6FEE715B030BD7047000074
+:106DB00070B50025082204210226254C0B2846D256
+:106DC000DFE800F0060816211A1C1E2024413900B5
+:106DD0002A4618E02A46A572134670211D48FEF780
+:106DE0007DFE3220FCF70EFF32460CE0702125E0DC
+:106DF000A1720B460A46F9E7102204E0202202E0C5
+:106E0000402200E08022A2721346EFE70122A27224
+:106E1000134670210F48FEF761FE3220FCF7F2FEA8
+:106E20002A46A572134674210A48FEF757FE3220FF
+:106E3000FCF7E8FE3246A27213467421BDE87040AA
+:106E40000448FEF74BBEA1720B460A46F5E770BD3B
+:106E500068010020D80300200148FEF78DB800002B
+:106E6000C804002001480068406A704710050020EF
+:106E7000F0B50268204D214E214FDFF888C0224B2B
+:106E80004FF0804EA84209D0984207D0704505D0F7
+:106E9000B04203D0B84201D0604503D122F0700463
+:106EA0004A682243A84209D0984207D0704505D0CD
+:106EB000B04203D0B84201D0604503D122F44074FF
+:106EC000CA6822434C6922F08002224302608A6829
+:106ED000C2620A688262A84201D0984201D109695F
+:106EE0000163012141610169C90703D0016921F0F2
+:106EF00001010161F0BD0000002C014000040040D0
+:106F000000080040000C00400034014010B501F0C2
+:106F10001F010123046A8B409C430462036A8A4078
+:106F20001343036210BD10B501F00F010423046A7E
+:106F30008B409C430462036A8A401343036210BD82
+:106F400010B5846842EA032224F47F440A432243B2
+:106F5000826010BD826822F070020A4342F007018D
+:106F600081607047F0B5026A036A23F0010303628F
+:106F700043688469114E24F073050C68104F2C434C
+:106F800022F002058A682A43B04201D0B84205D1F6
+:106F900022F00805CA682A4322F00402B04201D058
+:106FA000B84205D14D6923F440731D438B692B43CF
+:106FB00043608461496841630262F0BD002C014076
+:106FC00000340140F0B5026A036A23F01003036243
+:106FD000436884690D6824F4E64444EA05248D6816
+:106FE00022F0200242EA05120F4D104EA84201D0B5
+:106FF000B04206D1CF6822F0800242EA071222F0A6
+:107000004002A84201D0B04207D14D6923F4406349
+:1070100043EA85038D6943EA8503436084614968D7
+:1070200081630262F0BD0000002C01400034014089
+:10703000F0B5026A036A23F4807303624368C4698B
+:1070400022F4007224F073050C68124E2C438D68F4
+:1070500042EA05220E4DA84201D0B04206D1CF68C7
+:1070600022F4006242EA072222F48062A84201D0A0
+:10707000B04207D14D6923F4405343EA05138D69AB
+:1070800043EA05134360C4614968C1630262F0BD0D
+:10709000002C01400034014030B5036A026A22F43A
+:1070A000805202624268C4690D6824F4E64444EAEE
+:1070B00005248D6823F4005343EA0533084DA842A4
+:1070C00002D0084DA84204D14D6922F4804242EA20
+:1070D00085124260C46149680164036230BD0000EA
+:1070E000002C01400034014010B5046A036A23F00B
+:1070F00001030362836923F0F00343EA021324F0DF
+:107100000A020A438361026210BD10B5036A046A71
+:1071100024F010040462846923F0A00324F4704472
+:1071200044EA023243EA01118261016210BD0000AB
+:1071300010B50448FEF744FCBDE810400148FEF7D6
+:10714000CDB90000A005002010B5406A0021C1851E
+:10715000C184FEF7B7F910BD70B5446A2068406974
+:1071600094F84110C0F3C0100025212904D118B1B2
+:10717000E584204600F0B4F82068406994F8421095
+:10718000C0F38010222904D118B1E585204600F013
+:1071900080F8606C40F0100060642046FEF792F9C1
+:1071A00070BD10B50146406A096809684FF00003D8
+:1071B00089062ED4C38501680C3151E8002F22F4D2
+:1071C000807241E80024002CF5D10168143151E8A7
+:1071D000002F22F0010241E80024002CF5D10168C3
+:1071E000143151E8002F22F0400241E80024002C25
+:1071F000F5D1202180F84210016B012909D10168E5
+:107200000C3151E8002F22F0100241E80024002C3C
+:10721000F5D14363016B012902D0FEF7F7FB10BDE6
+:10722000818DFEF716F910BD10B5406A012141634A
+:10723000016B012902D0FEF7EAFB10BD818D4908E0
+:10724000FEF707F910BD10B50146406A09680968E4
+:10725000890616D40021C1840168143151E8002F39
+:1072600022F0800241E80023002BF5D101680C31A7
+:1072700051E8002F42F0400241E80023002BF5D1F5
+:1072800010BDFEF703FC10BD10B5406AFEF710FC00
+:1072900010BD01680C3151E8002F22F4907241E8D2
+:1072A0000023002BF5D10168143151E8002F22F0A2
+:1072B000010241E80023002BF5D1016B012909D11E
+:1072C00001680C3151E8002F22F0100241E8002340
+:1072D000002BF5D1202180F8421000210163704776
+:1072E00001680C3151E8002F22F0C00241E8002370
+:1072F000002BF5D1202180F84110704708B590F897
+:107300004210222901D0022008BD81684FF4805329
+:10731000994201D1026922B1826A99421BD049B1D6
+:107320000AE00268816A5268C2F308020A80816A30
+:10733000891C08E0016971B10168496801F07F01A9
+:107340001170816A491C8162C18D491E0904090CB2
+:10735000C18503D01BE001684968F1E70168CA688C
+:1073600022F02002CA600168CA6822F48072CA60F2
+:1073700001684A6922F001024A61202180F8421026
+:1073800000214163026B012A03D0FEF73FFB00207E
+:1073900008BD016301680C3151E8002F22F0100292
+:1073A00041E80023002BF5D101680A68D20602D516
+:1073B0000A6849680091818DFEF74BF8E7E7000005
+:1073C00070B5044600680169E26821F44051114338
+:1073D0000161A16820690143606901432068C268B6
+:1073E00041F20C639A430A43C26020684169A26972
+:1073F00021F44071114341611E492068884202D145
+:10740000FDF7C8F901E0FDF7B5F900EBC00101EBAC
+:107410000011606864228000B1FBF0F3B3FBF2F36B
+:107420006FF018067343B1FBF0F5B1FBF0F605EB16
+:107430008305322303EB0515B5FBF2F5B6FBF2F637
+:1074400005F0F00505EB0615B1FBF0F6B1FBF0F029
+:10745000B0FBF2F06FF01801484306EB800003EB3D
+:107460000010B0FBF2F0216800F00F0028448860A3
+:1074700070BD00000038014037B582B01346039A52
+:1074800082620446838500206064222184F84210D1
+:10749000E56B1B49A962E56B1A49E962E56B1A497C
+:1074A0002963E16B48632168E06B091DFCF772FBFF
+:1074B0002068016840680090206948B120680C305D
+:1074C00050E8001F41F4807140E80012002AF5D115
+:1074D0002068143050E8001F41F0010140E800121C
+:1074E000002AF5D12068143050E8001F41F0400117
+:1074F00040E80012002AF5D105B0002030BD0000A0
+:10750000A3710008297200085971000810B50448D9
+:10751000FEF756FABDE810400148FDF7DFBF000056
+:10752000E805002010B50448FEF74AFABDE810400F
+:107530000148FDF7D3BF000030060020FEE7000041
+:10754000064810B50168002907D00021016000F04D
+:10755000C7FFBDE8104001F08BB810BD50080020F7
+:1075600070B50446806B22686FF020011160806B5B
+:107570001B4DC0B1A06B0068016821F001010160E2
+:10758000184E72896AB106F60C01A1F58060F9F710
+:107590001DFA012070601F2213A12868FEF738FA37
+:1075A00001E000207060E06B816B002917D000685B
+:1075B000016821F0010101600A494FF480620C3139
+:1075C0002868FEF715FA28680168CA6842F01002B8
+:1075D000CA60BDE870401F220DA1FEF719BA70BD48
+:1075E000500000205008002056616E5F44656275AF
+:1075F000675F554152545F4572726F7243616C6CA4
+:107600006261636B2068646D6154780A0D0000004C
+:1076100056616E5F44656275675F554152545F45C0
+:1076200072726F7243616C6C6261636B2068646D2F
+:107630006152780A0D00000010B5074C4FF48062CB
+:1076400006492060FEF7D4F920680068C16841F05F
+:107650001001C16010BD0000500000205C08002037
+:1076600038B5044600680168C943C90618D40168E2
+:1076700040680090E06B006840680122C0F58060BF
+:1076800081B20848018102600C30054600F0DAFB47
+:1076900029462046BDE838404FF48062FEF7A8B97D
+:1076A00038BD00005008002070B5124C0E4601464F
+:1076B000608904F60C058219B2F5806F06D2284461
+:1076C0003246F9F73EF960893044608160680028ED
+:1076D0000FD10948294662890546F9F777F9012053
+:1076E00060600648628929460068FEF791F900202B
+:1076F000608170BD500800205C0C0020500000200C
+:1077000070B5806B0068016821F0010101600B4CCD
+:107710000025628982B104F60C01A1F5806006465D
+:10772000F9F754F901206060054862893146006824
+:10773000FEF76EF9658170BD656070BD5008002070
+:10774000500000200FB44FF4007110B5ADF5007D6E
+:1077500004466846F9F78EF972B60B490968A142EA
+:107760000BD384AA68468399F8F78AFE6846F9F72E
+:1077700072F801466846FFF797FF62B60DF5007D87
+:1077800010BC5DF814FB000010000020074810B585
+:10779000406F022803D106488068072805DC00F006
+:1077A00009F8BDE8104000F0B1B910BD2C0200206E
+:1077B000740100202DE9F04FDFF88082A04E8BB0DD
+:1077C00098F80070052F7CD39E4CA068082808DD2F
+:1077D000F11911F8012C0A2A03D011F8021C0A2908
+:1077E0006FD10025401C4FF0080940F6B83B0D282A
+:1077F0001DD2DFE800F0071D1D1D4A1D1D1D1D1DAA
+:1078000080FD070090A23946304601F056F830B9A5
+:107810008FA23946304601F050F8002807D0A56005
+:107820004FF400718C48E560F9F702F9A580FDE09E
+:1078300032468AA10420FFF785FF8BA239463046E5
+:1078400001F03BF80028F2D0E560A068082817D1C5
+:10785000874F0120A06178656069012810D1A68852
+:107860006EB128216846F9F705F9334681A228212F
+:10787000684601F021FB59466846FBF72BFD3D6742
+:10788000A068E561401CA060D0E0324673A10420EE
+:10789000FFF758FF74A23946304601F00EF8010098
+:1078A000734800F1A800804606D1024639463046AA
+:1078B00001F003F80028BAD0424639463046E56068
+:1078C00000E0B8E000F0F9FF0600B0D04046F8F75D
+:1078D000C2FF30446BA2394600F0EFFF811C5E48C6
+:1078E00011221438F9F72DF85B4814388574A06814
+:1078F000401CA0609AE064A23946304600F0DDFFEB
+:107900004FF0FF3A50B1334698F8002060A10420B0
+:10791000FFF718FFC4E90295A56148E05FA2394668
+:10792000304600F0CAFF28B95EA23946304600F062
+:10793000C4FFB8B1E069052811DA28216846F9F7D3
+:1079400099F8A3884BA22821684601F0B5FA594658
+:107950006846FBF7BFFCE069401CE06127E0C4E932
+:1079600002A524E052A23946304600F0A6FF68B1D5
+:10797000A28851A10420FFF7E5FEE560E561A5803E
+:107980004FF400713448F9F753F810E036A2394645
+:10799000304600F092FF50B1A2884BA10420FFF7BF
+:1079A000D1FEA1882C4800F093F9C4F80CB049A28C
+:1079B0003946304600F081FF30B1324648A10420FC
+:1079C000FFF7C0FEC4E902A548A23946304600F0E0
+:1079D00074FF04002AD098F8002046A10420FFF785
+:1079E000B1FEE41D25462046F8F7CEFE044600E031
+:1079F00014E03A212846F8F7D4FE401C801B391BBE
+:107A0000884213DD39A23946304600F056FF811B0B
+:107A10000BB03046BDE8F04FF9F70AB838A2394646
+:107A2000304600F04AFF08B1C4E902950BB0BDE84A
+:107A3000F04F02F015B90BB0BDE8F08FB001002097
+:107A40007C1D0020740100207265616479000000D3
+:107A5000626F6F74000000007C1B00200A573C2DF1
+:107A60002D202573000000004F4B0D0A0000000080
+:107A70002C02002041542B43495053454E443D3085
+:107A80002C2564002C220000434C4F534544000039
+:107A90000A573C2D2D202564202573004552524F56
+:107AA0005200000053454E44204641494C0000001E
+:107AB00053454E44204F4B000A572D2D3E20534531
+:107AC0004E44204F4B0000000A572D2D3E202564C8
+:107AD00000000000444953434F4E4E4543540000BC
+:107AE0000A572D2D3E202573000000002B495044DD
+:107AF0002C302C000A573C2D2D202564000000005E
+:107B0000434C4F5345440D0A00000000F0B5634C50
+:107B100000258BB0A0684FF0FF37082809DA206AEB
+:107B2000411C2162B0F5966F03D92562C4E9027544
+:107B300006E0E068002803DD6438E0600BB0F0BDCB
+:107B40005649E0698E88052801DBA76003E0A1683B
+:107B5000092900D10EB1401CE061A1685048491CC0
+:107B60000D297DD2DFE801F007191E232D293B4B9B
+:107B70004E5476900700FBF79BFA49492562E56170
+:107B8000A8392570C86E0028D8D0A078401CC0B293
+:107B9000A0700528D2D9CD66D0E70BB0BDE8F04083
+:107BA000FBF77EBA0BB0BDE8F040FBF7B1BA0BB003
+:107BB0000020BDE8F040FBF753BBFBF79BFA2570B4
+:107BC000BCE7FBF77FFA2078411C2170072804D915
+:107BD000A7602069012800D125616570AEE73049B2
+:107BE000304A4031FBF7C4FA6078411C61700528C7
+:107BF000A4D3A76020690128A0D125619EE7FBF7E7
+:107C0000ABFAF7E70BB00120BDE8F040FBF78ABA0A
+:107C100060690028E06912D0052806DA00231F4AAF
+:107C20001846243202F108010FE0A5800BB01D4870
+:107C3000BDE8F0404FF400711430F8F7F9BE0528A4
+:107C4000AADA002318A21AA101200BB0BDE8F04067
+:107C5000FBF7ACBAE069052811DA86B1282100E00B
+:107C600018E06846F8F706FF334615A22821684653
+:107C700001F022F940F6B8316846FBF72BFB60694A
+:107C8000002889D0A57059E70BB00020BDE8F0406E
+:107C9000FBF708BB0B20A06050E700007401002038
+:107CA000D4020020681B0020393039300000000069
+:107CB0003235352E3235352E3235352E32353500CA
+:107CC00041542B43495053454E443D302C256400CC
+:107CD0000346054810B50A46D0F880001946FDF75E
+:107CE00097FE002010BD00002C020020490050EA41
+:107CF000C12018BF04204A0D18BF40F0010040F217
+:107D0000FF72B2EB515F08BF40F00200012808BFCC
+:107D1000052070470907090E002804DB00F1E02068
+:107D200080F80014704700F00F0000F1E02080F8A8
+:107D3000141D704740F2013200204FF0E04102F084
+:107D40002BBE0000024A0020110702F025BE0000F1
+:107D500001FDFFFF10B50446D1E9000100F002F873
+:107D6000206010BDF8B504460D466A4600F0C6FD19
+:107D700000987E30009000281EDC0022134620462A
+:107D8000294602F013FA17D0002140F608004FF000
+:107D9000000006462046294601F0C2FF044640F690
+:107DA000080006EA00014FF0000034F0004004BF74
+:107DB0000220F8F72EFF29E00098FF2828DB002199
+:107DC00008464FF0000000F440060022134620460B
+:107DD000294602F0D1FB8CBF002501250220F8F7CF
+:107DE00018FF4FF0FF4446B1002D0CBF4FF40000C8
+:107DF0004FF48000B04218BF084C042108464FF0F1
+:107E00000000002D04BF84F00040F8BD2046F8BDFE
+:107E100020462946BDE8F84001F082BFFFFF7F7F82
+:107E200010B504460A46D4E90003194600F0EBFDFC
+:107E3000C4E9000110BD30380A2801D20120704782
+:107E400000207047F0B500220A4C0B4E17460DE09B
+:107E50007368855C042BE55402D22568C4F8805011
+:107E60005B1C7360802B00D17760521C8A42EFD379
+:107E7000F0BD0000CC0700201000002010B530B18C
+:107E8000036823B1D0E90121914201D204E000202E
+:107E900010BD491C816020B1914202D25C5C202C53
+:107EA000F7D99142F4D1491E816010BD70B50446E6
+:107EB0000F4E19E0A0892568C0050AD4A06820B13A
+:107EC000FFF7F4FFA089C00503D4206908B17168E9
+:107ED0008847A089800503D4206A08B17168884763
+:107EE0007168204688472C46002CE3D170BD000005
+:107EF00058010020002901DA0020704700F03BBD46
+:107F000001004FF0000001D0896803E000207047B5
+:107F10000968401C0029FBD17047002200F036BDE3
+:107F2000012200F033BD00B5014600F004F800283E
+:107F300000D0086900BD002803D0007B102801D0C4
+:107F4000002070470120704710B50168282088473D
+:107F5000040002D02821F8F78DFD204610BD002234
+:107F6000114600F06FB800002DE9F04788B00F46C9
+:107F700006469A4615461C216846F8F77BFD2F48B1
+:107F80000024002E0460446055D08146E7B300967B
+:107F9000CDE90174D9E90212D9F810000491CDE9B4
+:107FA000052009F10800FFF7CFFF5FEA00082BD09A
+:107FB00000986F4608B1029808B100200CE00198C3
+:107FC000042808D903221EA10098F8F763FC10B911
+:107FD0000298C01C02903846FFF750FF0146404609
+:107FE00001F0B2FB68B1BAF1000F13D06846FFF799
+:107FF00045FFDDE90101814203D202990098405C0E
+:1080000040B14046FFF752FFDDE9011088420AD235
+:1080100004460BE01DB102990098084428604046D0
+:1080200008B0BDE8F087081E00D0441E0DB130191D
+:108030002860C9E900640020F2E700005001002038
+:10804000EFBBBF0070B515460E46040009D0F8F727
+:1080500002FC411C2B4632462046BDE87040FFF72B
+:1080600083BF002070BD00000E4910B50C780E4A89
+:108070000123012C506C04D18C68041B502C00D9B6
+:108080008B611278002A0BD04A68002A08D04A680F
+:10809000801AC82804D9042008708B610020486029
+:1080A00010BD00007C1E0020B401002002780B7877
+:1080B0009A420DD142784B789A4209D182788B78D6
+:1080C0009A4205D1C078C978884201D10120704711
+:1080D0000020704770B50D4610490023D1E90141D9
+:1080E00012E003EB430202EB031254F82220824217
+:1080F00008D103EB430000EB031004EB8000286081
+:10810000012070BD5B1CDBB28B42EAD3024604A1A6
+:108110000420FFF717FB0020286070BD54000020EA
+:1081200070776D2064657649643A2564206E6F200F
+:10813000657869740D0A0000F8B50646084602F035
+:1081400073FB42F210750446A84201DD2C4603E0A1
+:108150002548844200DA044669463046FFF7BAFFF4
+:1081600088B30098836AD3B1417D012901D00229E7
+:1081700015D1016B012900D00021808D81EAD472D4
+:1081800081B21846FBF76DFE002C0CDA0098407D9A
+:10819000012801D1641906D5022802D16442002CBD
+:1081A00001DA002402E0AC4200DD2C460098C169EF
+:1081B00051B104290CD00829816909680CD00C64DC
+:1081C00001210175F8BD09E0816909684C63F7E791
+:1081D000816909688C63F3E7CC63F1E7324603A158
+:1081E0000120FFF7AFFAEDE7F0D8FFFF70776E20C0
+:1081F0002564206E6F7420737570706F72743A25E9
+:10820000640A00003EB50446084602F029FB054614
+:1082100002A92046FFF75EFF80B129462046FFF7FE
+:108220008BFF284602F0D4FACDE90001029A2346DA
+:1082300006A10420121DFFF785FA04E0224609A1D9
+:108240000420FFF77FFA00203EBD000025733A208E
+:1082500049443A256420736574206F75743A256625
+:108260000D0A00006E6F20737570706F727420209D
+:1082700049443A25640D0A000149886770470000A7
+:108280002C0200202DE9F043A1B00546202106A8CC
+:10829000F8F7F0FB202118A8F8F7ECFB00242821C0
+:1082A0000EA8F8F7E7FB334F06A901E00855641C58
+:1082B000285D282804D00028F8D121B0BDE8F0833B
+:1082C00000260DF160080DF13809641C0122295DBA
+:1082D000002030290DD129194978782901D0582951
+:1082E00002D10022A41C04E02B5D08F80030401CE1
+:1082F000641C295D2C2903D0292901D00029F3D140
+:10830000002308F8003009EB860118A812B1FDF728
+:1083100010FE01E0FAF74EFE285D292809D0641C02
+:10832000761C0A2ED2D304E006A800F013FB18B97D
+:10833000083739680029F7D17C68A4B114AD95E8F5
+:108340000F0002AD85E80F00DDE912010EADCDE9A9
+:10835000000195E80F00A047034606AA06A10020E9
+:10836000FFF7F0F9A9E706AA07A10020FFF7EAF94D
+:10837000A3E700001C0000202573203D2030782555
+:1083800078200D0A00000000506C65617320616464
+:108390006420257320746F2066756E6374696F6E38
+:1083A000206C6973740A000010B504460346034A42
+:1083B00003A10020FFF7C6F9204610BD5AAA000805
+:1083C00025733A707261315B307825785D3A0A0D19
+:1083D000000000002DE9F04796B0054620216846D0
+:1083E000F8F748FB202108A8F8F744FB00241421E3
+:1083F00010A8F8F73FFBA0462D4F694601E008554D
+:10840000641C285D2828FAD100260DF120090DF101
+:10841000400A641C01212A5D0020302A0FD12A194C
+:108420005278782A01D0582A02D10021A41C06E0F3
+:108430002B5D09F80030401C4FF00108641C2A5DD8
+:108440002C2A01D0292AF3D1002309F80030002971
+:108450000AEB860108A802D0FDF76BFD01E0FAF7F0
+:10846000A9FD285D292809D0641C761C052ED1D3CE
+:1084700004E0684600F06EFA18B908373968002938
+:10848000F7D1786870B1B8F1000F01D01099016090
+:1084900078686A4607A103680020FFF753F916B011
+:1084A000BDE8F0876A4606A10020FFF74BF9F6E722
+:1084B0003C0000202573203D20307825780D0A00EF
+:1084C000506C6561732061646420257320746F2093
+:1084D0007661726961626C65206C6973740D0A0063
+:1084E0002DE9F04391B040216846F8F7C3FA554EA4
+:1084F00000253079317A401A00F07F02202A03D912
+:1085000051A10420FFF71EF9B16870680C46554F61
+:10851000891D4FF02909E846814205D322E07168A0
+:10852000A01D884206D2641C38194FA1FFF7BEFD7A
+:108530000028F4D038194CA1FFF7B8FD00287BD0F3
+:1085400071680020241D0B1B0146C44604E00CF892
+:108550000020401C491C641C3A5D292A63D09942C2
+:10856000F5D369E000F18002914201D2844208D83B
+:1085700011B0BDE8F08338193BA1FFF797FD38B97A
+:10858000641C7168A01D8031884201D2802CF2D316
+:10859000381935A1FFF78AFD10B3241D726804F065
+:1085A0007F0000219042A2EB000400D3803400221F
+:1085B000C44604E00CF80130401C491C521C00F079
+:1085C0007F03FB5C292B01D0A242F3D300F07F0094
+:1085D0003A5C292A30D108F801900125B0602BE0DF
+:1085E000002425E0381920A1FFF760FD00B9641CC4
+:1085F00038191DA1FFF75AFDD0B17168241D002064
+:108600008C42A1EB040300D380330021C44604E074
+:108610000CF80020401C491C641C3A5D292A02D039
+:108620009942F5D308E008F800900125B46003E012
+:108630007168A01D8842D5D3002D99D06846FFF7F8
+:1086400021FE95E710000020646562756720627561
+:108650006666657220686176653A25640A0D2A2A85
+:108660002A000000CC07002066756E3A000000006A
+:108670002DE9F043504E91B00025B16870680C466A
+:108680004E4F891D4FF02909E846814205D323E06A
+:108690007168A01D884206D2641C381948A1FFF7F2
+:1086A00005FD0028F4D0381945A1FFF7FFFC00288C
+:1086B0007CD000204246241D02E01154401C641C62
+:1086C000395D292903D073689C42F6D36EE008F81F
+:1086D00000900125B46069E000F18002914201D26E
+:1086E000844208D811B0BDE8F083381934A1FFF7EF
+:1086F000DDFC38B9641C7168A01D8031884201D24C
+:10870000802CF2D338192EA1FFF7D0FCF8B1241D2C
+:10871000726804F07F0000219042A2EB000300D3B6
+:1087200080330024C44603E00CF80120401C491C9F
+:1087300000F07F02BA5C292A02D09C42F4D335E0D3
+:1087400008F8019000F07F000125B0602EE00024C1
+:1087500028E038191AA1FFF7A9FC00B9641C3819E0
+:1087600017A1FFF7A3FCE8B17168241D00208C421B
+:10877000A1EB040200D380320023C44603E00CF8CE
+:108780000010401C641C395D292901D09342F6D3A6
+:1087900004F07F017A5C292A08D108F800900125AD
+:1087A000B16003E07168A01D8842D2D3002D99D03A
+:1087B0006846FFF70FFE95E710000020CC07002069
+:1087C0007665723A0000000010B500F015F8084810
+:1087D0004FF4804120F8901F064941604A140282FC
+:1087E0008A1441610281C160002140F8501C10BD13
+:1087F0002C020020000C01400A4810B50121C16084
+:108800000949C1624162002101610163816207A1DE
+:10881000A830F7F7FCFF0348BDE8104006A1E83098
+:10882000F7F7F5BF2C020020483030314F6E6563FA
+:1088300068697036303200006F6E65636869703148
+:108840003030330038B5044600680168C943C906B2
+:1088500013D4016840680090E06B006840680749E5
+:10886000404208702046FCF7F5FD2046BDE8384040
+:108870004FF480720249FDF7BBB838BDB00100204B
+:108880007C1D002038B501680446086848684FF42C
+:108890008075009029460748F8F7CAF82A46054926
+:1088A0002046FDF7A5F82068C16841F01001C160BD
+:1088B00038BD00007C1D002070472DE9F0410546C1
+:1088C000884617461046F7F7C6FF0646012802DA23
+:1088D0002846BDE8F08100240AE0285D3978884206
+:1088E00005D1281932463946F7F765FF20B1641CD7
+:1088F0004445F2DB0020ECE72819EAE710B51446FE
+:1089000000222260114A21F000439342A8BF10BD0B
+:1089100053EA000208BF10BDB3F5801FA8BF22684C
+:1089200007DA362202F038F86FF0350221F0004302
+:108930002260DFF81CC06FF31E510CEB23531A4466
+:1089400041F0FF5141F00051226010BD0000F07F66
+:1089500002FCFFFF03E0934209D1401C491C03784D
+:108960001BB10A78002AF6D101E0087808B100208E
+:10897000704701207047002807D0806801E0006838
+:10898000491E002801D00029F9D170472DE9F04196
+:108990008846A8B3B8F1000F33D085680AB90AE059
+:1089A0002D686DB3296A59B34046F8F78BF8002853
+:1089B000F6D120E02D681DB32E6A5FEA0804F9D0D5
+:1089C000002EF7D0B44218D002E098B1641C761C97
+:1089D0002078F7F747FD07463078F7F743FD8742E1
+:1089E0002078F2D0F7F73EFD04463078F7F73AFDED
+:1089F0008442DFD125B1286A10B12846BDE8F08154
+:108A0000FFE70020FAE72DE9F04106460C4640F268
+:108A1000FF75174635EA14502BD000221346304616
+:108A200001F0C4FB25D03A463046214601F0B4FFA0
+:108A300006460C4635EA145010D000221346304644
+:108A400001F0B4FB15D10220F8F7E3F8FFF77AF94B
+:108A50000A46214662F31E01BDE8F0810220F8F7C4
+:108A6000D8F8FFF767F90A46214662F31E01BDE810
+:108A7000F08130462146BDE8F08100002DE9F00F7D
+:108A8000DFF8C8B00020DFF8C8A0DBF800C08046DF
+:108A90000AEB000154460A7C22B1012A0BD0022ABB
+:108AA00044D11AE004EB80015AF820208B689342ED
+:108AB0003CD08A603AE004EB4001498ABCFBF1F209
+:108AC00001FB12C171BB04EB80018A6812B1C1F8CD
+:108AD00008802BE05AF82020EBE704EB800300220B
+:108AE000C3F808805AF8207040F6C419D50027FA58
+:108AF00005F414F0FF0408D08E7D76436643B6FB80
+:108B0000F9F49E68AC4026439E60521C032AEDDBBC
+:108B10000A7E002A8A7D06D0322A01D0521C04E047
+:108B200081F8188002E072B1521E8A75401C02283A
+:108B3000AEDB0CF1320CCBF800C0DAE90201BDE883
+:108B4000F00F00F007B801220A76EFE76401002079
+:108B50009C16002070B50E4605460024304601F0F4
+:108B60008DF8641C052CF9DB0024284601F086F8FA
+:108B7000641C052CF9DB70BD70B503B101230D4CED
+:108B800054F82350954202D00B4E00253560E5186D
+:108B9000287404EB4300418244F82320207C617C4C
+:108BA000884205D1E07DA075607E2076E068A060F7
+:108BB00070BD00009C160020640100200649A1F150
+:108BC0000C00416001688160002000E0401C884288
+:108BD000FCD3012070470000600000200346002203
+:108BE0000120002903DA002070475843521C8A42B2
+:108BF000FBD370471CB5FBF71DFCFEF79FF8FDF794
+:108C000075FAFDF72DFAFDF7F7F9FDF79DFCFDF775
+:108C1000B7FCFDF7D1FCFDF71BFBFDF739FBFDF7BA
+:108C200057FBFDF7C1FBFDF7F3FBFDF75BFCFFF71F
+:108C3000CBFD4A4C00232246FA210120FFF79CFF7E
+:108C400001232246FA211846FFF796FF21460846DF
+:108C5000FFF780FF4248FFF70FFB424CA06FFEF783
+:108C6000EBFC4148FCF7D0F808B172B6FEE7FAF722
+:108C70008BF93C48FFF7A2FF3C48E06700F012FF89
+:108C80003B48C4F88000FFF7FDFDFDF7B7FF39A1B1
+:108C90000020FEF757FD40A342A245A10020FEF7A9
+:108CA00051FD4BA10020FEF74DFD4EA10020226892
+:108CB000FEF748FDD4E903234FA10020FEF742FD53
+:108CC000D4E90B2352A10020FEF73CFDD4E909238F
+:108CD00059A10020FEF736FD08210220CDE9000150
+:108CE000002301225CA11846FEF72CFDA06E98B16E
+:108CF00061490020FEF726FD60490020FEF722FDB5
+:108D00005F490020FEF71EFD5C490020FEF71AFDBA
+:108D100059490020FEF716FDFDF79AFF08B159A149
+:108D200000E05FA10020FEF70DFD002500F0D4FE5D
+:108D3000FEF706FCA06C10B1A564FEF727FD206DC0
+:108D4000012806D12565B4F8A010D4F8A400FBF7DB
+:108D500080F8606D0128E9D16565E7E70088880043
+:108D6000E80500202C020020C8040020A0050020F7
+:108D7000300600200A2D2D2D2D2D2D2D2D2D2D2DA4
+:108D80002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D13
+:108D90002D2D0A0D0000000031373A30353A3437B6
+:108DA000000000004A756E20313620323032360025
+:108DB0002A09090920206275696C64202573202521
+:108DC000730909090909092020202A0A0000000066
+:108DD0004154434720436F6E74726F6C426F6172EF
+:108DE000640A0D0064657376657273696F6E203076
+:108DF000782578200A0D0000646576207479706506
+:108E00003A256420207665723A25640A0D00000038
+:108E100073747275637475726520747970653A2520
+:108E20006409737472756374757265207665723A3D
+:108E300025640A0D00000000686172642074797076
+:108E4000653A256420206861726420766572203A54
+:108E50002564200A0D000000536F66742056657269
+:108E600073696F6E3A205625642E25642E25642E74
+:108E700025640A0D0000000010AC000870AB00086B
+:108E8000C0AB000853656E736F7253656C664368C0
+:108E900065636B206661696C65640A0D0000000003
+:108EA00053656E736F7253656C66436865636B20C0
+:108EB000706173730A0D00000FB42DE9FC5F044666
+:108EC0000E9F2FB100263546B1460DF13C081AE041
+:108ED0004FF0FF30BDE8FC1F5DF814FB0D2807D0F4
+:108EE00002DC092804D107E0202801D0252811D070
+:108EF00004F8010B761C02E004F8010B361D0D98F6
+:108F00007F1C864202D838780028E7D100202070E4
+:108F10003046DFE717F8010F2E2803D17878BF1C01
+:108F2000A0F130093878662877D008DC25280ED0E3
+:108F3000622873D063280ED0642806D111E06F2810
+:108F40003DD073286BD078286BD02020D0E7252027
+:108F500004F8010B03E018F8041B04F8011B761C4D
+:108F60002BE058F8041B5FEA010A05D52D20CAF151
+:108F7000000A04F8010B761C5FEA0A0005D00A21FA
+:108F800020B1B0FBF1F06D1CFAE701252E4412E090
+:108F9000691E0A20FFF722FEBAFBF0FB691E0A20B9
+:108FA000FFF71CFEBAFBF0F200FB12AA0BF1300037
+:108FB00004F8010B6D1E002DEAD17F1CA3E758F8C1
+:108FC000041B5FEA010A05D52D20CAF1000A04F846
+:108FD000010B761C5FEA0A0002D104E0C0086D1C98
+:108FE0000028FBD100E001252E4413E0691E082073
+:108FF000FFF7F4FDBAFBF0FB691E0820FFF7EEFD5A
+:109000000146BAFBF1F200FB12AA0BF1300004F8A2
+:10901000010B6D1E002DE9D1CFE760E02BE04EE0A3
+:10902000FFE758F804AB5FEA0A0002D104E0000948
+:109030006D1C0028FBD100E001252E4418E0691EBC
+:109040001020FFF7CBFDBAFBF0FB691E1020FFF7E5
+:10905000C5FDBAFBF0F200FB12AABBF1090F02D862
+:109060000BF1300001E00BF1370004F8010B6D1E2D
+:10907000002DE4D1A1E758F804AB5FEA0A0002D161
+:1090800004E040086D1C0028FBD100E001252E44BF
+:1090900012E0691E0220FFF7A1FDBAFBF0FB691E7A
+:1090A0000220FFF79BFDBAFBF0F200FB12AA0BF1C6
+:1090B000300004F8010B6D1E002DEAD17DE758F851
+:1090C00004AB5046F7F7C7FB064403E004F8010B76
+:1090D0000AF1010A9AF800000028F7D16DE708F1BB
+:1090E000070020F00700F0E80221CDE900218046CA
+:1090F000104601F0C7F88246D34601F0F0F8DDE9EA
+:10910000002301F06FFABAF1000FCDE9000107D09A
+:109110000A20BAFBF0F16D1C5FEA010AF9D100E008
+:10912000012506EB050A11E0691E0A20FFF756FD2E
+:10913000BBFBF0F6691E0A20FFF750FDBBFBF0F207
+:10914000303600FB12BB04F8016B6D1E002DEBD115
+:109150002E2004F8010B0AF1010BB9F1000001D136
+:109160000620814601460A20FFF738FD01F0B7F8D6
+:10917000DDE9002301F002F901F054F8064615E09C
+:10918000A9F101010A20FFF729FDB6FBF0FAA9F1C8
+:1091900001010A20FFF722FDB6FBF0F100FB11668A
+:1091A0000AF1300004F8010BA9F10109B9F1000F2F
+:1091B000E6D10BF1060600E72DE9F041074600264F
+:1091C000C8680C463546B0F57A7F5BD2401CE0603B
+:1091D0002168A068095C5B2954D1401CA06020462E
+:1091E000FEF74CFE4CB1D4E90110884203D222684C
+:1091F000125C5D2A33D0884203D3A068401EA06071
+:1092000040E0401E04F11008A0604046FEF79CFEBE
+:1092100098B30EB3286045600546A068401CA06066
+:109220002046FEF72BFE2146284600F08DFA30B38B
+:109230002046FEF723FE14B3D4E90110884203D27E
+:109240002168095C2C29E0D06268904217D221681D
+:10925000085C5D2813D102E006463546DDE7E0688C
+:10926000401EE06006B175602020C7E90260A0687A
+:10927000401CA0600120BDE8F081FFE716B1304638
+:10928000FEF714FE0020F6E7034610B50020024664
+:10929000995CA1F13004092C01D830380AE0A1F121
+:1092A0004104052C01D8373804E0A1F16104052CF4
+:1092B00008D857380844032A00D20001521C042A57
+:1092C000E6D310BD002010BD2DE9F04192B04FF063
+:1092D00000070C0005464FF02E063B4610973CD089
+:1092E0002068D0B3694627E0226810441A5C342A0B
+:1092F0001BD00ADCA2F12B00092823D2DFE800F002
+:1093000015221517221515151500382A0DD006DC63
+:10931000352A0AD0362A08D0372A13D105E0392A4F
+:1093200003D0452A01D0652A0CD1CA5400E0CE549E
+:109330005B1C3F2B06D22CB1A068D4F804C0C21825
+:109340006245D1D38846CF54404610A900F07AFB3D
+:109350000F4610990646884503D1002012B0BDE89B
+:10936000F081124A124B30463946C5E9066701F0D2
+:1093700003F902D86FF000400DE000220D4B30469B
+:10938000394600F0BFFF02D84FF0004003E03046FE
+:10939000394600F047FF68610820E860109AA1682C
+:1093A000A2EB08000844A0600120D7E70000C0FF3E
+:1093B000FFFFDF410000E0C12DE9F0410746002634
+:1093C000C8680C463546B0F57A7F78D2401CE0601C
+:1093D000002C74D0D4E90110884270D22168095C55
+:1093E0007B296CD1401CA0602046FEF747FDD4E9E4
+:1093F0000110884203D22268125C7D2A4CD0884238
+:10940000A0F10100A0605AD204F110084046FEF716
+:109410009BFDE8B3F6B1286045600546A068401C96
+:10942000A0602046FEF72AFD2146284600F0F8F805
+:1094300078B32046FEF722FD2869286200202861C3
+:109440003CB3D4E90110884236D22168095C3A293C
+:1094500032D102E006463546E0E7401CA0602046D7
+:10946000FEF70CFD2146284600F06EF988B1204633
+:10947000FEF704FDD4E90110884203D22168095C9B
+:109480002C29C3D06268904216D22168085C01E0A2
+:1094900011E011E07D280FD1E068401EE06006B1C8
+:1094A00075604020C7E90260A068401CA0600120F0
+:1094B000BDE8F08103E016B13046FEF7F7FC00206E
+:1094C000F6E700002DE9FE4F5FEA000B4FF0FF3595
+:1094D0003CD00846FEF743FD0090A8B34AA1FEF732
+:1094E0001CFD90B3FEF71FFD0268CBF80020426818
+:1094F000CBF804200089ABF8080044A10098FEF7DF
+:109500000CFD10B3D0E906462046314600F0BAFE05
+:10951000C0B28BF80A0000F0E2FE2246334601F0AA
+:1095200061F800223A4B00F029FF00F0ABFE8BF807
+:109530000B0038A10098FEF7F0FC019028B1FEF76F
+:10954000DFFC0025029057E000E002E02846BDE87D
+:10955000FE8F0098FEF7AAFCF8E729460198FEF76F
+:10956000C9FC04462CA1FEF7D8FCD0F81480B8F151
+:10957000000F0DDD29A12046FEF7D2FCD0E90690B0
+:10958000824622A12046FEF7CBFCD0E9066704E024
+:10959000002189468A460E460F4605EB850101EB00
+:1095A0000B04484684F80C80514600F06BFEC0B2B4
+:1095B000607300F094FE4A46534601F013F8DFF85A
+:1095C00050800022434600F0D9FE00F05BFEA073FD
+:1095D0003046394600F056FEC0B2E07300F07FFE20
+:1095E00032463B4600F0FEFF0022434600F0C6FE36
+:1095F00000F048FE20746D1C02988542ADDB009897
+:10960000FEF754FC0020A2E7700000007400000088
+:10961000000059406500000069000000540000008F
+:109620002DE9F84F8146D1F8088008684FF0000A0C
+:10963000CDF800A0D1F800C000EB0804651C1CF8B0
+:109640000800641C0E465746222876D10021706817
+:1096500007E05C2B04D1521C82426AD2491C641C74
+:10966000641CA4EB0C02824202D22378222BF0D19C
+:10967000A4EB0C0282425CD22078222859D10CEB58
+:109680000800201A401A3169401C8847070054D04E
+:1096900000973DE029785C2905D000986D1C00F802
+:1096A000011B009034E00221601B012841DB687837
+:1096B000662814D008DC22281DD02F281BD05C2857
+:1096C00019D0622835D108E06E280ED072280ED04D
+:1096D00074280ED075282CD112E0082200E00C224C
+:1096E000009800F8012B009011E00A22F8E70D2203
+:1096F000F6E70922F4E7009A02F8010B009206E06F
+:109700006A462146284600F043FA010011D00D4474
+:10971000A542BFD3009981F800A01021C9E9031721
+:109720003068201A401CB0600120BDE8F88F04E0CA
+:10973000FFE717B171693846884715B13068281AB4
+:10974000B0600020F1E7000070B50C0005465ED067
+:10975000216800295BD0A0686368021D9A4205D881
+:109760000844042231A1F7F795F878B3A06862683D
+:10977000411D0126914206D82168052208442DA1E9
+:10978000F7F788F828B3A0686268011D914206D8EF
+:1097900021680422084429A1F7F77CF8E8B1D4E94C
+:1097A0000101814203D22268525C222A1DD08142EB
+:1097B00021D22268525C2D2A02D0303A092A1AD8C6
+:1097C00021462846BDE87040FFF77EBD0420E860D2
+:1097D00006E0EE60A068401D04E002206E61E860D3
+:1097E000A068001DA060012070BD21462846BDE88C
+:1097F0007040FFF715BF814203D22268525C5B2A9A
+:1098000007D0814203D22068405C7B2807D000202B
+:1098100070BD21462846BDE87040FFF7CDBC21460B
+:109820002846BDE87040FFF7C7BD00006E756C6C40
+:109830000000000066616C7365000000747275655D
+:109840000000000070B598B000200C900D900E90B4
+:109850000F901090119012901390149015901690F4
+:10986000314E17903148B268416ACDE90012C36A9F
+:10987000C2682FA10420FDF765FFB06818B938A1B0
+:109880000420FDF75FFF06AC3FA341A241A143A026
+:1098900084E80F0002AC43A343A245A145A084E89D
+:1098A0000F0046A147A0CDE9000147A348A24AA165
+:1098B0000420FDF747FF0A20FAF7A4F90025746891
+:1098C0002DE00CA9A069FEF7F7FF10A9206AFEF7AA
+:1098D000F3FF14A9A06AFEF7EFFFA06B00F078FF7A
+:1098E000CDE90A010DF1140C606A14AAE36A616BF8
+:1098F0008CE80F00607D0DF1040C10AB0CA9E2693F
+:109900008CE80F00207D0090231D40A104202268D8
+:10991000FDF718FF0A20FAF775F94C346D1CB06892
+:109920008542CED318B070BD540000202C02002018
+:10993000646576747970653A2564207374727479FD
+:1099400070653A2564206864747970653A256420EE
+:1099500050574D204E756D3A25640D0A00000000E9
+:109960002A2A2A2A2A2A2A2A2A2A2A2A2A2A2A6E13
+:109970006F2050776D2A2A2A2A2A2A2A2A2A2A2A56
+:109980002A2A2A2A0D0A000076616C7565000000FB
+:1099900070696E0044706F7274000000636F6E2017
+:1099A00000000000666368006674696D00000000D6
+:1099B0006368200074696D200000000054797065B0
+:1099C0000000000053740000206E616D65200000EF
+:1099D00020494420000000002532732025313673D1
+:1099E00020253273202532732025367320253273CB
+:1099F00020253673202532732025347320253673B5
+:109A000020253273202534730D0A2000253264206E
+:109A100025313673202532642020253278202536E2
+:109A200073202025327820253673202532642025A6
+:109A300034642025367320253278202534640D0ABD
+:109A40000000000000B583B00A460021CDE90011F6
+:109A500001466846F7F746FFDDE9000103B000BDA7
+:109A600038B5044600680168C943C90614D40168C2
+:109A700040680090E06B006840680849C0F50070DD
+:109A800088602046FBF7E6FC2046BDE838404FF4EE
+:109A900000720349FBF7ACBF38BD00004401002051
+:109AA0005C14002038B501680446086848684FF423
+:109AB0000075009029460748F6F7BAFF2A4605497F
+:109AC0002046FBF795FF2068C16841F01001C16096
+:109AD00038BD00005C14002070B5154CA268002A47
+:109AE00024D014A10020FDF72DFE17490025087889
+:109AF0007B2802D00A4615A105E01948FFF7E2FCD1
+:109B000028B1114A17A10020FDF71CFE06E0022033
+:109B1000C4E9000519A10020FDF714FEA560BDE809
+:109B200070404FF400710848F6F782BF70BD000026
+:109B30004401002072656320515220696E696620DD
+:109B40002564200A0D0000005C1400206865616433
+:109B50006572206572726F72200A0D2025730000F5
+:109B60005C160020756E7061636B206A736F6E20E7
+:109B70006572726F72200A0D20257300756E706118
+:109B8000636B206A736F6E206F6B200A0D200000DC
+:109B90002DE9F04707460026C81B144689460628CB
+:109BA0005CDBB81CFFF770FB0546A0F55C404FF48A
+:109BB0008061884252D3A5F558408A4650451AD252
+:109BC000B81DA9EB00014FF00C08062946DB01780F
+:109BD0005C2943D14178752940D1801CFFF754FBA3
+:109BE000A0F55C41514539D2C5F3090161F39F20CD
+:109BF00000F5803002E04FF006082846802801D2A8
+:109C0000012210E0B0F5006F02D20222C0260AE065
+:109C1000B0F5803F02D20322E02604E0B0F5881FB1
+:109C20001CD20422F026511E07E000F0BF03256875
+:109C300043F0800380096B54491E11F0FF01F4D1F9
+:109C4000012A01D9304301E000F07F00216808704B
+:109C50002068104420604046BDE8F0870020FBE704
+:109C600010B54FF480710348F6F7E2FE0249002078
+:109C7000087010BD7C1D0020B001002030B5114DD2
+:109C800000240102D5F89C100DD5B5F898200A6182
+:109C900013040A610A610A610A610B610B610B61BD
+:109CA0000B610B6108E0B5F898300B611A040B6189
+:109CB0000A610A610A610A614000641C182CE0DB39
+:109CC00030BD00002C02002010B500290AD0087811
+:109CD000002807D005487844F6F7F4FE002801D0A4
+:109CE000002010BD0248784410BD0000F20F0000B3
+:109CF000EA0F000010B500290AD00878002807D024
+:109D000005487844F6F7DEFE002801D0002010BD9B
+:109D10000248784410BD0000D6100000CE100000AC
+:109D200021F00042A2F16052B2F5801F01F0004321
+:109D300028BFD2F17F6C0BD95FEA001C43EAC20254
+:109D400042EB507018BF704728BF20F001007047E9
+:109D5000B2F5801FBCBF184670474FEA410C1CF596
+:109D6000001F02D2084600F0D9BD70B500F0B0FB6C
+:109D700000000089FFF7F6BF4FF00040A0F580001B
+:109D80007047000010B591EA030F48BF83F000430D
+:109D900000F13C84841A71EB030C05D2121943EBD9
+:109DA0000C03001B61EB0C01DFF824E14FEA1154B6
+:109DB000A4EB135C1EEA430F18BF9EEA445F73D006
+:109DC00023EA0E03DCF1200E21EA045143F4801350
+:109DD00032D322FA0CFE10EB0E0023FA0CFE41EBFC
+:109DE0000E01CCF1200E03FA0EFE10EB0E0051F125
+:109DF0000001B1F5801FCCF1200E32D201EB0451ED
+:109E000012FA0EF2BDE8104058BF7047401C38BF30
+:109E10005FEA420218BF7047002814BF20F001001B
+:109E200041F100014FEA410313F5001F38BF7047AD
+:109E3000A1F1C04100F09ABB012A43EB0302ACF14F
+:109E4000200CDCF11F0E32BF4FF0000E23FA0CF392
+:109E500010EB030041EB0451B4EB115FD0D0A1EB48
+:109E6000045101F5801149085FEA300001EB04510B
+:109E70000ED350F1000038BF12FA0EFE08D1BDE833
+:109E80001040C9E7401C38BF5FEA4202CAD1C3E7AD
+:109E9000BDE810404FEA410313F5001F38BF70477B
+:109EA000A1F1C04100F062BB9EEA445F08D011EA14
+:109EB0005E0FBDE8104004BF01F000410020704774
+:109EC000BDE8104070B500F003FB00BF64FBBE3E70
+:109ED0000000E0FF02494FF0000000F02BBD00BF82
+:109EE0000000F87F491058BFC1F140415B1058BFD6
+:109EF000C3F140438B42EFF3008070472DE9C0412E
+:109F000030B4DFF8A0C23CEA111418BF3CEA1314C5
+:109F100000F0EC8081EA03051CEA111444EAD574D0
+:109F200018BF1CEA131500F0C780A4EB05044FF01E
+:109F3000004545EAC12145EAC32341EA505143EABD
+:109F4000525304F17F74994204F500344FEAC02063
+:109F50004FEAC22208BF904200F09C804FEA13658E
+:109F60000FF24016765D4FEA134506FB05F7C7F181
+:109F7000807706FB07F74FEAD737A7FB03687642DF
+:109F8000C8F58038A7FB06CE38BFA8F1010807FB4B
+:109F900008E64FF0000EA6FB028CE6FB03CEDCF1D8
+:109FA000000CCEF1004E38BFAEF1010EA6FB0C58EE
+:109FB0004FF000074FF00005E6FB0E87A1FB08C637
+:109FC000A0FB07CE16EB0E0645F10005E1FB076589
+:109FD00015F1E04E7EBFA4F580345FEA46066D4180
+:109FE00016F1800745F100054FEA17274FEA06668C
+:109FF00047EA0567A6F1DE46B6F1805F4FEA152510
+:10A000001FD9384624F0010C05EBC471BCF1FE6F7A
+:10A0100001EB0C1102D8F0BCBDE8008124425CBF0A
+:10A0200001F5801E9EEAC47F02D4F0BCBDE8008129
+:10A03000244238D4F0BCA1F1C041BDE8004100F099
+:10A0400095BA4FEAD22242EA43524FEAD323A7FB02
+:10A0500002864FEAD02040EA415007FB03661EEA21
+:10A060000E0F4FEAD12105FB026658BFA6EB005642
+:10A07000B6EB00564FEA520E4EEAC37E18EB0E0EB8
+:10A0800056EB530EBDD518EB02085E417F1C55F10F
+:10A090000005B6E74FF480154FF000074FF00006BB
+:10A0A0004FF00008ADE7F0BC4FF0000001F1C041F7
+:10A0B00001F00041BDE8008111EA0C1F0CEA131504
+:10A0C00000D00CE013EA0C1F00F025804FF00000D8
+:10A0D000F0BC81EA030101F00041BDE80081F0BC61
+:10A0E000BDE8004181EA030100F040BAF0BCBDE8E0
+:10A0F000004170B500F0ECF9097EFC3E00F007B8B5
+:10A1000081EA03014FF0000001F00041704781EA4D
+:10A11000030100F02BBAF0BCBDE800414FF0000095
+:10A1200021497047FFFDFBF9F7F5F4F2F0EEEDEB96
+:10A13000E9E8E6E4E3E1E0DEDDDBDAD8D7D5D4D345
+:10A14000D1D0CFCDCCCBCAC8C7C6C5C4C2C1C0BF91
+:10A15000BEBDBCBBBAB9B8B7B6B5B4B3B2B1B0AF97
+:10A16000AEADACABAAA9A8A8A7A6A5A4A3A3A2A17B
+:10A17000A09F9F9E9D9C9C9B9A9999989797969536
+:10A1800095949393929191908F8F8E8E8D8C8C8BD2
+:10A190008B8A89898888878786858584848383825A
+:10A1A000828181800000FF070000F87F51EA030CE4
+:10A1B00017D41CF5801F58BFBCF5801F00F1068026
+:10A1C000994218BF704708BF9042704707D711F5F2
+:10A1D000801F58BF13F5801F19D4994270478942D8
+:10A1E00070471CF5801F08D5BCF5801FF7D58B4242
+:10A1F00018BF704708BF824270474FF4001C1CEB29
+:10A20000410F38BF1CEB430F01D28B42704770B532
+:10A2100000F05EF9922449004FF000514FF0805356
+:10A22000FFF760BE4FEA41034FEA5353A3F5806343
+:10A23000D3F11E03C8BFD3F1210C0CDD4FF0004257
+:10A2400042EAC12242EA505232FA03FC8CEAE17C33
+:10A25000ACEBE1707047102BC4BF0020704703F5D2
+:10A26000787CBCF1FF3F04D06FF0004282EA21000D
+:10A27000704770B500F02CF9499224800020704797
+:10A28000F2E700004FEA1153A3F58063D3F11E03F8
+:10A29000A8BFD3F1200C08DB4FF0004242EAC122F4
+:10A2A00052EA505232FA03F0704709420BD4102B95
+:10A2B000C4BF0020704703F5787CBCF1FF3F05D098
+:10A2C0004FF0FF3070474FF00000704770B500F05E
+:10A2D000FFF800BF4992248000207047F0E7B0FAF1
+:10A2E00080F310FA03F10AD0C3F11D0303F5806374
+:10A2F0004FEA41504FEA035202EBD12170474FF031
+:10A300000000704751EA030C17D41CF5801F58BF9A
+:10A31000BCF5801F00F10680994218BF704708BF46
+:10A320009042704707D711F5801F58BF13F5801F63
+:10A3300019D499427047894270471CF5801F08D58F
+:10A34000BCF5801FF7D58B4218BF704708BF82420B
+:10A3500070474FF4001C1CEB410F38BF1CEB430F40
+:10A3600001D28B42704770B500F0B2F892244900D8
+:10A370004FF000514FF08053FFF7B4BDDFF848C1F4
+:10A3800070B51CEA111E1EBF1CEA13159EEA0C0FC5
+:10A3900095EA0C0F00F06F8081EA030423EA4C1366
+:10A3A0004EEAD47E21EA4C1141F4801143F480132B
+:10A3B000AE44A1FB024CA0FB0365AEF17F7E3619D3
+:10A3C00055EB0C05A1FB034C4CF10003A0FB021C58
+:10A3D00016EB0C06654153F10003094218BF46F025
+:10A3E000010613F4007F0BD14FEA03314FEA053029
+:10A3F000340341EA155140EA16506FF003020AE0B7
+:10A400004FEAC3214FEAC520F40241EA555140EA20
+:10A4100056506FF0020202EB2E4201EB025585EA24
+:10A42000CE710AD05FEA440C18BF24F0004450F10A
+:10A43000000041F1000120EAD47040F2FE7C624548
+:10A4400000D270BDA84214BF4FF080444FF040448A
+:10A45000002E08BF0024BEF1806FA8BFA1F1C0414B
+:10A46000BDE8704080F282804FF0000001F1C041F1
+:10A4700001F0004170479EEA0C0F0CEA131518BF5B
+:10A4800095EA0C0F06D04FF0000081EA030E0EF0A3
+:10A49000004170BD00F01CF88900013E00F007B8D3
+:10A4A00000F009B84FEA430C5FEA5C5C08D081EA2F
+:10A4B000030100F05BB84FEA410C5FEA5C5CF6D147
+:10A4C0004FF00000014970470000FF070000F87FCF
+:10A4D0000EF1020E2EF0030E5EF8046B364205D428
+:10A4E000012A43EB030515F5001F12D8012841EBA3
+:10A4F000010C1CF5001F0CD80ED14FEAD17C15F5CC
+:10A50000001F0CEB4C0C0CF1020C08BF4CEBD37C85
+:10A5100004E04FF0080C01E04FEAD37C0CEB4C0553
+:10A5200026FA05F606F00706B6F1040C06D20EEB85
+:10A53000860CBDE870404CF0010C6047DFE80CF081
+:10A54000090B02024FF000414FF00000A1F500217D
+:10A5500070BD19461046012851EB010418BFD4F50F
+:10A56000001484BF002001F0004170BD0808A0F570
+:10A5700000114FEA3101704753EA010C17D41CF562
+:10A58000801F58BFBCF5801F00F106808B4218BFAA
+:10A59000704708BF8242704707D713F5801F58BF26
+:10A5A00011F5801F19D48B4270479B4270471CF5F0
+:10A5B000801F08D5BCF5801FF7D5994218BF70479A
+:10A5C00008BF904270474FF4001C1CEB430F38BF8C
+:10A5D0001CEB410F01D2994270470FB40CBC03BC75
+:10A5E000FFF7C1BE91EA030F10B581F000413FF5BE
+:10A5F000D1AB83F0004300F009B8000010B591EA38
+:10A60000030F48BF83F000433FF5C4AB841A71EBDE
+:10A61000030C07D212198CF0004C43EB0C03001B07
+:10A6200061EB0C01DFF8A4E14FEA1154A4EB135CD9
+:10A630001EEA430F18BF9EEA445F00F0B08023EA91
+:10A640006E03524221EA0451C3EB6E0338BF5B1E16
+:10A65000DCF1200E25D322FA0CFE10EB0E0043FA9B
+:10A660000CFE41EB0E01CCF1200E03FA0EFE10EBB6
+:10A670000E0051F10001CCF1200E29D412FA0EF295
+:10A6800001EB0451BDE8104058BF7047401C1CBF8F
+:10A69000B2F1004F704700280CBF491C20F00100A8
+:10A6A000704712EB020E43EB030218BF4FF0010E8E
+:10A6B0004EEA4202ACF1200CDCF11E0E54D943FAF2
+:10A6C0000CFE10EB0E0051F1FF31CCF11E0ED5D572
+:10A6D0000EF1010E12FA0EFE404141EB010101EBB9
+:10A6E000445C5FEA5C5C10D910EBDE7001EB045156
+:10A6F00038BFBEF1004FBDE8104018BF70470028BA
+:10A700000CBF491C20F00100704730D24FEAD42C16
+:10A7100011F5001124F400641BD0B1FA81F20B3A58
+:10A72000A41AA41ED2F12003914030FA03F3194376
+:10A73000904001EBCC71002C01EB0451BDE81040BE
+:10A74000A8BF704701F1C0414FF0000001F0004187
+:10A750007047B0FA80F310FA03F100D110BDE41A8B
+:10A76000173C4805C90AE4E701EB045110BD491044
+:10A7700001EB0451BDE810404FEA300002E04FF019
+:10A78000000170474A0008BF0042F8D0B2F5001F30
+:10A7900028BF704701F000414FF0000070479EEA6B
+:10A7A000445F07D011EA5E0FBDE8104004BF0021EE
+:10A7B00000207047BDE8104070B5FFF789FE00BF6C
+:10A7C00040DFF63E83F00041104670470000E0FF96
+:10A7D00043004FEAD30C4FEA3C0C43401FBF4007F5
+:10A7E0000CF1605113F0FE4F70471CF0006F03D165
+:10A7F00000200CF0004170470CF0004343EA507019
+:10A8000010B540EACC0000F043F800BF0000009211
+:10A810004FEA0001FFF7AABE4FF000414FF00000E1
+:10A82000A1F500217047000041000B0ED3F19E02FC
+:10A8300008D950F400034FEA032323FA02F048BF7B
+:10A840004042704710B500F023F800BF49922480C1
+:10A85000002070476FF0004282EA2000704700003D
+:10A8600010F0004148BF4042B0FA80F310FA03F202
+:10A87000C3F19D030BD051EAC35101EB12205306E3
+:10A8800038BF704700F1010008BF20F00100704799
+:10A890000EF1020E2EF0030E5EF8044B244204D497
+:10A8A0004FEA4102B2F17F4F11D84FEA4003B3F1B2
+:10A8B0007F4F0CD80ED14FEAD07CB2F17F4F0CEB1A
+:10A8C0004C0C0CF1020C08BF4CEBD17C04E04FF0B7
+:10A8D000080C01E04FEAD17C0CEB4C0324FA03F4A2
+:10A8E00004F00704B4F1040C06D20EEB840CBDE8AE
+:10A8F00010404CF0010C6047DFE80CF00708020242
+:10A900004FF00040A0F5800010BD0846420018BF7F
+:10A91000D2F1807288BF00F0004010BDFF2141EAF3
+:10A92000D050C00570474FF000007047F6F7F8BAF6
+:10A93000F7F7B4B80CF00F03092B08BF082000F09C
+:10A940005F800A2B0BD0082B18BF704708BF1CF084
+:10A95000400F0AD04FF000004FF0000170471CF08C
+:10A96000400F18BF4FF0004070471CF0100F08D088
+:10A9700020F0704300F07F4242EAD3014FEA437077
+:10A98000704700F0604021F07F4242EA000201F08F
+:10A990007F4040EA727070474FF0FF0C4CF4E06C5F
+:10A9A0001CEA11531CBF9CEA030C9445C2BFDA4257
+:10A9B00001EB02517047002B0DD0BCF1000F0FD0FE
+:10A9C000002A01F00041A4BF41F0E04141F07F6165
+:10A9D0004FF00000704701F000414FF00000704759
+:10A9E00050EA01334FF09B0C18BF4CF0806C7FF4A1
+:10A9F00071AA7047F6F7E2BDF7F758BBF7F7E6BC68
+:10AA00001CF4801F11D01CF4E02F03D06FEACC316E
+:10AA1000490070474FF04050EFF3008222F070423F
+:10AA200042EA000282F3008870474FF0000070474E
+:10AA3000010202030405060708090A0B0C0D0E0F9C
+:10AA400010100000000000000000010203040607CF
+:10AA50000809000000000102030464656275677460
+:10AA60006573743100646562756774657374320070
+:10AA70003031323334353637383941424344454634
+:10AA8000403058003031323334353637383961622E
+:10AA90006364656640307800040000080000000030
+:10AAA0000000000200010000100000000000000093
+:10AAB00000000000303132333435363738396162C6
+:10AAC0006364656678700030313233343536373838
+:10AAD00039414243444546585000000002400000BE
+:10AAE000000000A00000000005400000000000C8B9
+:10AAF000000000000C4000000000409C000000002E
+:10AB0000194000000020BCBE0000000034400000DE
+:10AB1000BFC91B8E00000004B5400000504BCFD0D1
+:10AB20006607E2CF010000006C4100003E8251AA9E
+:10AB3000DFEEA73401000000D9420000DCB5A0E23E
+:10AB40003A301F97FFFFFFFFB4450000FD25A0C866
+:10AB5000E9A3C14FFFFFFFFFFF3F0000000000809F
+:10AB600000000000FF3F0000000000800000000027
+:10AB70002A202020202020202020202020202020CB
+:10AB800020202020202020202020202020202020C5
+:10AB900020202020202020202020202020202020B5
+:10ABA00020202020202020202020202020202020A5
+:10ABB0002020202020202020202A0A0D0000000034
+:10ABC0002A2020202020202020202020202020207B
+:10ABD0002020202020202020202020202020202075
+:10ABE00020697764672072657365742020202020B7
+:10ABF0002020202020202020202020202020202055
+:10AC00002020202020202020202A0A0D00000000E3
+:10AC10002A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A94
+:10AC20002A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A84
+:10AC30002A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A74
+:10AC40002A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A64
+:10AC50002A2A2A2A2A2A2A2A2A2A0A0D0000000039
+:10AC600064656275677465737431000073686F772B
+:10AC70005F636F6D5F70776D0000000064656275E3
+:10AC80006776657200000000636F6D5F70776D5FBF
+:10AC9000746573740000000040FF0108000000208C
+:10ACA0002C0200006C010008D0FF01082C020020DB
+:10ACB0000C300000C8010008000000000000F07F18
+:10ACC000FFFFFFFFFFFFEF7F1001000043000000C8
+:10ACD000F8FFFFFF004040404040404040404141BD
+:10ACE0004141414040404040404040404040404061
+:10ACF00040404040400502020202020202020202FB
+:10AD000002020202022020202020202020202002F7
+:10AD10000202020202029090909090901010101087
+:10AD20001010101010101010101010101010101023
+:10AD300002020202020288888888888808080808B7
+:10AD40000808080808080808080808080808080883
+:10AD500002020202400000000000000000000000AB
+:10AD600000000000000000000000000000000000E3
+:10AD700000000000000000000000000000000000D3
+:10AD800000000000000000000000000000000000C3
+:10AD900000000000000000000000000000000000B3
+:10ADA00000000000000000000000000000000000A3
+:10ADB0000000000000000000000000000000000093
+:10ADC0000000000000000000000000000000000083
+:10ADD00000000000000000001C0000004300000014
+:10ADE000F8FFFFFF0C0000000E0000000F00000045
+:10ADF0002E00000000000000000000000000000025
+:10AE00000000000000000000000000000000000042
+:10AE10000000000000000000000000000000000032
+:10AE20000000000000000000000000000000000022
+:10AE30000000000000000000000000000000000012
+:10AE40000000000000000000000000000000000002
+:10AE500000000000000000000000000000000000F2
+:10AE600000000000000000000000000000000000E2
+:10AE700000000000000000000000000000000000D2
+:10AE800000000000000000000000000000000000C2
+:10AE900000000000000000000000000000000000B2
+:10AEA00000000000000000000000000000000000A2
+:10AEB0000000000000000000000000000000000092
+:10AEC0000000000000000000000000000000000082
+:10AED0000000000000000000000000000000000072
+:10AEE0000000000000000000000000000000000062
+:10AEF0000000000000000000000000000000000052
+:10AF00000000000000000000000000000000000041
+:10AF10000000000000000000000000000000000031
+:10AF20000000000000000000000000000000000021
+:10AF30000000000000000000000000000000000011
+:10AF40000000000000000000000000000000000001
+:10AF500000000000000000000000000000000000F1
+:10AF600000000000000000000000000000000000E1
+:10AF700000000000000000000000000000000000D1
+:10AF800000000000000000000000000000000000C1
+:10AF900000000000000000000000000000000000B1
+:10AFA00000000000000000000000000000000000A1
+:10AFB0000000000000000000000000000000000091
+:10AFC0000000000000000000000000000000000081
+:10AFD0000000000000000000000000000000000071
+:10AFE0000000000000000000000000000000000061
+:10AFF0000000000000000000000000000000000051
+:10B000000000000000000000000000000000000040
+:10B010000000000000000000000000000000000030
+:10B020000000000000000000000000000000000020
+:10B030000000000000000000000000000000000010
+:10B040000000000000000000000000000000000000
+:10B0500000000000000000000000000000000000F0
+:10B0600000000000000000000000000000000000E0
+:10B0700000000000000000000000000000000000D0
+:10B0800000000000000000000000000000000000C0
+:10B0900000000000000000000000000000000000B0
+:10B0A00000000000000000000000000000000000A0
+:10B0B0000000000000000000000000000000000090
+:10B0C0000000000000000000000000000000000080
+:10B0D0000000000000000000000000000000000070
+:10B0E0000000000000000000000000000000000060
+:10B0F0000000000000000000000000000000000050
+:10B10000000000000000000000000000000000003F
+:10B11000000000000000000000000000000000002F
+:10B12000000000000000000000000000000000001F
+:10B13000000000000000000000000000000000000F
+:10B1400000000000000000000000000000000000FF
+:10B1500000000000000000000000000000000000EF
+:10B1600000000000000000000000000000000000DF
+:10B1700000000000000000000000000000000000CF
+:10B1800000000000000000000000000000000000BF
+:10B1900000000000000000000000000000000000AF
+:10B1A000000000000000000000000000000000009F
+:10B1B000000000000000000000000000000000008F
+:10B1C000000000000000000000000000000000007F
+:10B1D000000000000000000000000000000000006F
+:10B1E000000000000000000000000000000000005F
+:10B1F000000000000000000000000000000000004F
+:10B20000000000000000000000000000000000003E
+:10B21000000000000000000000000000000000002E
+:10B22000000000000000000000000000000000001E
+:10B23000000000000000000000000000000000000E
+:10B2400000000000000000000000000000000000FE
+:10B2500000000000000000000000000000000000EE
+:10B2600000000000000000000000000000000000DE
+:10B2700000000000000000000000000000000000CE
+:10B2800000000000000000000000000000000000BE
+:10B2900000000000000000000000000000000000AE
+:10B2A000000000000000000000000000000000009E
+:10B2B000000000000000000000000000000000008E
+:10B2C000000000000000000000000000000000007E
+:10B2D000000000000000000000000000000000006E
+:10B2E000000000000000000000000000000000005E
+:10B2F000000000000000000000000000000000004E
+:10B30000000000000000000000000000000000003D
+:10B31000000000000000000000000000000000002D
+:10B32000000000000000000000000000000000001D
+:10B33000000000000000000000000000000000000D
+:10B3400000000000000000000000000000000000FD
+:10B3500000000000000000000000000000000000ED
+:10B3600000000000000000000000000000000000DD
+:10B3700000000000000000000000000000000000CD
+:10B3800000000000000000000000000000000000BD
+:10B3900000000000000000000000000000000000AD
+:10B3A000000000000000000000000000000000009D
+:10B3B000000000000000000000000000000000008D
+:10B3C000000000000000000000000000000000007D
+:10B3D000000000000000000000000000000000006D
+:10B3E000000000000000000000000000000000005D
+:10B3F000000000000000000000000000000000004D
+:10B40000000000000000000000000000000000003C
+:10B41000000000000000000000000000000000002C
+:10B42000000000000000000000000000000000001C
+:10B43000000000000000000000000000000000000C
+:10B4400000000000000000000000000000000000FC
+:10B4500000000000000000000000000000000000EC
+:10B4600000000000000000000000000000000000DC
+:10B4700000000000000000000000000000000000CC
+:10B4800000000000000000000000000000000000BC
+:10B4900000000000000000000000000000000000AC
+:10B4A000000000000000000000000000000000009C
+:10B4B000000000000000000000000000000000008C
+:10B4C000000000000000000000000000000000007C
+:10B4D000000000000000000000000000000000006C
+:10B4E000000000000000000000000000000000005C
+:10B4F000000000000000000000000000000000004C
+:10B50000000000000000000000000000000000003B
+:10B51000000000000000000000000000000000002B
+:10B52000000000000000000000000000000000001B
+:10B53000000000000000000000000000000000000B
+:10B5400000000000000000000000000000000000FB
+:10B5500000000000000000000000000000000000EB
+:10B5600000000000000000000000000000000000DB
+:10B5700000000000000000000000000000000000CB
+:10B5800000000000000000000000000000000000BB
+:10B5900000000000000000000000000000000000AB
+:10B5A000000000000000000000000000000000009B
+:10B5B000000000000000000000000000000000008B
+:10B5C000000000000000000000000000000000007B
+:10B5D000000000000000000000000000000000006B
+:10B5E000000000000000000000000000000000005B
+:10B5F000000000000000000000000000000000004B
+:10B60000000000000000000000000000000000003A
+:10B61000000000000000000000000000000000002A
+:10B62000000000000000000000000000000000001A
+:10B63000000000000000000000000000000000000A
+:10B6400000000000000000000000000000000000FA
+:10B6500000000000000000000000000000000000EA
+:10B6600000000000000000000000000000000000DA
+:10B6700000000000000000000000000000000000CA
+:10B6800000000000000000000000000000000000BA
+:10B6900000000000000000000000000000000000AA
+:10B6A000000000000000000000000000000000009A
+:10B6B000000000000000000000000000000000008A
+:10B6C000000000000000000000000000000000007A
+:10B6D000000000000000000000000000000000006A
+:10B6E000000000000000000000000000000000005A
+:10B6F000000000000000000000000000000000004A
+:10B700000000000000000000000000000000000039
+:10B710000000000000000000000000000000000029
+:10B720000000000000000000000000000000000019
+:10B730000000000000000000000000000000000009
+:10B7400000000000000000000000000000000000F9
+:10B7500000000000000000000000000000000000E9
+:10B7600000000000000000000000000000000000D9
+:10B7700000000000000000000000000000000000C9
+:10B7800000000000000000000000000000000000B9
+:10B7900000000000000000000000000000000000A9
+:10B7A0000000000000000000000000000000000099
+:10B7B0000000000000000000000000000000000089
+:10B7C0000000000000000000000000000000000079
+:10B7D0000000000000000000000000000000000069
+:10B7E0000000000000000000000000000000000059
+:10B7F0000000000000000000000000000000000049
+:10B800000000000000000000000000000000000038
+:10B810000000000000000000000000000000000028
+:10B820000000000000000000000000000000000018
+:10B830000000000000000000000000000000000008
+:10B8400000000000000000000000000000000000F8
+:10B8500000000000000000000000000000000000E8
+:10B8600000000000000000000000000000000000D8
+:10B8700000000000000000000000000000000000C8
+:10B8800000000000000000000000000000000000B8
+:10B8900000000000000000000000000000000000A8
+:10B8A0000000000000000000000000000000000098
+:10B8B0000000000000000000000000000000000088
+:10B8C0000000000000000000000000000000000078
+:10B8D0000000000000000000000000000000000068
+:10B8E0000000000000000000000000000000000058
+:10B8F0000000000000000000000000000000000048
+:10B900000000000000000000000000000000000037
+:10B910000000000000000000000000000000000027
+:10B920000000000000000000000000000000000017
+:10B930000000000000000000000000000000000007
+:10B9400000000000000000000000000000000000F7
+:10B9500000000000000000000000000000000000E7
+:10B9600000000000000000000000000000000000D7
+:10B9700000000000000000000000000000000000C7
+:10B9800000000000000000000000000000000000B7
+:10B9900000000000000000000000000000000000A7
+:10B9A0000000000000000000000000000000000097
+:10B9B0000000000000000000000000000000000087
+:10B9C0000000000000000000000000000000000077
+:10B9D0000000000000000000000000000000000067
+:10B9E0000000000000000000000000000000000057
+:10B9F0000000000000000000000000000000000047
+:10BA00000000000000000000000000000000000036
+:10BA10000000000000000000000000000000000026
+:10BA20000000000000000000000000000000000016
+:10BA30000000000000000000000000000000000006
+:10BA400000000000000000000000000000000000F6
+:10BA500000000000000000000000000000000000E6
+:10BA600000000000000000000000000000000000D6
+:10BA700000000000000000000000000000000000C6
+:10BA800000000000000000000000000000000000B6
+:10BA900000000000000000000000000000000000A6
+:10BAA0000000000000000000000000000000000096
+:10BAB0000000000000000000000000000000000086
+:10BAC0000000000000000000000000000000000076
+:10BAD0000000000000000000000000000000000066
+:10BAE0000000000000000000000000000000000056
+:10BAF0000000000000000000000000000000000046
+:10BB00000000000000000000000000000000000035
+:10BB10000000000000000000000000000000000025
+:10BB20000000000000000000000000000000000015
+:10BB30000000000000000000000000000000000005
+:10BB400000000000000000000000000000000000F5
+:10BB500000000000000000000000000000000000E5
+:10BB600000000000000000000000000000000000D5
+:10BB700000000000000000000000000000000000C5
+:10BB800000000000000000000000000000000000B5
+:10BB900000000000000000000000000000000000A5
+:10BBA0000000000000000000000000000000000095
+:10BBB0000000000000000000000000000000000085
+:10BBC0000000000000000000000000000000000075
+:10BBD0000000000000000000000000000000000065
+:10BBE0000000000000000000000000000000000055
+:10BBF0000000000000000000000000000000000045
+:10BC00000000000000000000000000000000000034
+:10BC10000000000000000000000000000000000024
+:10BC20000000000000000000000000000000000014
+:10BC30000000000000000000000000000000000004
+:10BC400000000000000000000000000000000000F4
+:10BC500000000000000000000000000000000000E4
+:10BC600000000000000000000000000000000000D4
+:10BC700000000000000000000000000000000000C4
+:10BC800000000000000000000000000000000000B4
+:10BC900000000000000000000000000000000000A4
+:10BCA0000000000000000000000000000000000094
+:10BCB0000000000000000000000000000000000084
+:10BCC0000000000000000000000000000000000074
+:10BCD0000000000000000000000000000000000064
+:10BCE0000000000000000000000000000000000054
+:10BCF0000000000000000000000000000000000044
+:10BD00000000000000000000000000000000000033
+:10BD10000000000000000000000000000000000023
+:10BD20000000000000000000000000000000000013
+:10BD30000000000000000000000000000000000003
+:10BD400000000000000000000000000000000000F3
+:10BD500000000000000000000000000000000000E3
+:10BD600000000000000000000000000000000000D3
+:10BD700000000000000000000000000000000000C3
+:10BD800000000000000000000000000000000000B3
+:10BD900000000000000000000000000000000000A3
+:10BDA0000000000000000000000000000000000093
+:10BDB0000000000000000000000000000000000083
+:10BDC0000000000000000000000000000000000073
+:10BDD0000000000000000000000000000000000063
+:10BDE0000000000000000000000000000000000053
+:10BDF0000000000000000000000000000000000043
+:10BE00000000000000000000000000000000000032
+:10BE10000000000000000000000000000000000022
+:10BE20000000000000000000000000000000000012
+:10BE30000000000000000000000000000000000002
+:10BE400000000000000000000000000000000000F2
+:10BE500000000000000000000000000000000000E2
+:10BE600000000000000000000000000000000000D2
+:10BE700000000000000000000000000000000000C2
+:10BE800000000000000000000000000000000000B2
+:10BE900000000000000000000000000000000000A2
+:10BEA0000000000000000000000000000000000092
+:10BEB0000000000000000000000000000000000082
+:10BEC0000000000000000000000000000000000072
+:10BED0000000000000000000000000000000000062
+:10BEE0000000000000000000000000000000000052
+:10BEF0000000000000000000000000000000000042
+:10BF00000000000000000000000000000000000031
+:10BF10000000000000000000000000000000000021
+:10BF20000000000000000000000000000000000011
+:10BF30000000000000000000000000000000000001
+:10BF400000000000000000000000000000000000F1
+:10BF500000000000000000000000000000000000E1
+:10BF600000000000000000000000000000000000D1
+:10BF700000000000000000000000000000000000C1
+:10BF800000000000000000000000000000000000B1
+:10BF900000000000000000000000000000000000A1
+:10BFA0000000000000000000000000000000000091
+:10BFB0000000000000000000000000000000000081
+:10BFC0000000000000000000000000000000000071
+:10BFD0000000000000000000000000000000000061
+:10BFE0000000000000000000000000000000000051
+:10BFF0000000000000000000000000000000000041
+:10C000000000000000000000000000000000000030
+:10C010000000000000000000000000000000000020
+:10C020000000000000000000000000000000000010
+:10C030000000000000000000000000000000000000
+:10C0400000000000000000000000000000000000F0
+:10C0500000000000000000000000000000000000E0
+:10C0600000000000000000000000000000000000D0
+:10C0700000000000000000000000000000000000C0
+:10C0800000000000000000000000000000000000B0
+:10C0900000000000000000000000000000000000A0
+:10C0A0000000000000000000000000000000000090
+:10C0B0000000000000000000000000000000000080
+:10C0C0000000000000000000000000000000000070
+:10C0D0000000000000000000000000000000000060
+:10C0E0000000000000000000000000000000000050
+:10C0F0000000000000000000000000000000000040
+:10C10000000000000000000000000000000000002F
+:10C11000000000000000000000000000000000001F
+:10C12000000000000000000000000000000000000F
+:10C1300000000000000000000000000000000000FF
+:10C1400000000000000000000000000000000000EF
+:10C1500000000000000000000000000000000000DF
+:10C1600000000000000000000000000000000000CF
+:10C1700000000000000000000000000000000000BF
+:10C1800000000000000000000000000000000000AF
+:10C19000000000000000000000000000000000009F
+:10C1A000000000000000000000000000000000008F
+:10C1B000000000000000000000000000000000007F
+:10C1C000000000000000000000000000000000006F
+:10C1D000000000000000000000000000000000005F
+:10C1E000000000000000000000000000000000004F
+:10C1F000000000000000000000000000000000003F
+:10C20000000000000000000000000000000000002E
+:10C21000000000000000000000000000000000001E
+:10C22000000000000000000000000000000000000E
+:10C2300000000000000000000000000000000000FE
+:10C2400000000000000000000000000000000000EE
+:10C2500000000000000000000000000000000000DE
+:10C2600000000000000000000000000000000000CE
+:10C2700000000000000000000000000000000000BE
+:10C2800000000000000000000000000000000000AE
+:10C29000000000000000000000000000000000009E
+:10C2A000000000000000000000000000000000008E
+:10C2B000000000000000000000000000000000007E
+:10C2C000000000000000000000000000000000006E
+:10C2D000000000000000000000000000000000005E
+:10C2E000000000000000000000000000000000004E
+:10C2F000000000000000000000000000000000003E
+:10C30000000000000000000000000000000000002D
+:10C31000000000000000000000000000000000001D
+:10C32000000000000000000000000000000000000D
+:10C3300000000000000000000000000000000000FD
+:10C3400000000000000000000000000000000000ED
+:10C3500000000000000000000000000000000000DD
+:10C3600000000000000000000000000000000000CD
+:10C3700000000000000000000000000000000000BD
+:10C3800000000000000000000000000000000000AD
+:10C39000000000000000000000000000000000009D
+:10C3A000000000000000000000000000000000008D
+:10C3B000000000000000000000000000000000007D
+:10C3C000000000000000000000000000000000006D
+:10C3D000000000000000000000000000000000005D
+:10C3E000000000000000000000000000000000004D
+:10C3F000000000000000000000000000000000003D
+:10C40000000000000000000000000000000000002C
+:10C41000000000000000000000000000000000001C
+:10C42000000000000000000000000000000000000C
+:10C4300000000000000000000000000000000000FC
+:10C4400000000000000000000000000000000000EC
+:10C4500000000000000000000000000000000000DC
+:10C4600000000000000000000000000000000000CC
+:10C4700000000000000000000000000000000000BC
+:10C4800000000000000000000000000000000000AC
+:10C49000000000000000000000000000000000009C
+:10C4A000000000000000000000000000000000008C
+:10C4B000000000000000000000000000000000007C
+:10C4C000000000000000000000000000000000006C
+:10C4D000000000000000000000000000000000005C
+:10C4E000000000000000000000000000000000004C
+:10C4F000000000000000000000000000000000003C
+:10C50000000000000000000000000000000000002B
+:10C51000000000000000000000000000000000001B
+:10C52000000000000000000000000000000000000B
+:10C5300000000000000000000000000000000000FB
+:10C5400000000000000000000000000000000000EB
+:10C5500000000000000000000000000000000000DB
+:10C5600000000000000000000000000000000000CB
+:10C5700000000000000000000000000000000000BB
+:10C5800000000000000000000000000000000000AB
+:10C59000000000000000000000000000000000009B
+:10C5A000000000000000000000000000000000008B
+:10C5B000000000000000000000000000000000007B
+:10C5C000000000000000000000000000000000006B
+:10C5D000000000000000000000000000000000005B
+:10C5E000000000000000000000000000000000004B
+:10C5F000000000000000000000000000000000003B
+:10C60000000000000000000000000000000000002A
+:10C61000000000000000000000000000000000001A
+:10C62000000000000000000000000000000000000A
+:10C6300000000000000000000000000000000000FA
+:10C6400000000000000000000000000000000000EA
+:10C6500000000000000000000000000000000000DA
+:10C6600000000000000000000000000000000000CA
+:10C6700000000000000000000000000000000000BA
+:10C6800000000000000000000000000000000000AA
+:10C69000000000000000000000000000000000009A
+:10C6A000000000000000000000000000000000008A
+:10C6B000000000000000000000000000000000007A
+:10C6C000000000000000000000000000000000006A
+:10C6D000000000000000000000000000000000005A
+:10C6E000000000000000000000000000000000004A
+:10C6F000000000000000000000000000000000003A
+:10C700000000000000000000000000000000000029
+:10C710000000000000000000000000000000000019
+:10C720000000000000000000000000000000000009
+:10C7300000000000000000000000000000000000F9
+:10C7400000000000000000000000000000000000E9
+:10C7500000000000000000000000000000000000D9
+:10C7600000000000000000000000000000000000C9
+:10C7700000000000000000000000000000000000B9
+:10C7800000000000000000000000000000000000A9
+:10C790000000000000000000000000000000000099
+:10C7A0000000000000000000000000000000000089
+:10C7B0000000000000000000000000000000000079
+:10C7C0000000000000000000000000000000000069
+:10C7D0000000000000000000000000000000000059
+:10C7E0000000000000000000000000000000000049
+:10C7F0000000000000000000000000000000000039
+:10C800000000000000000000000000000000000028
+:10C810000000000000000000000000000000000018
+:10C820000000000000000000000000000000000008
+:10C8300000000000000000000000000000000000F8
+:10C8400000000000000000000000000000000000E8
+:10C8500000000000000000000000000000000000D8
+:10C8600000000000000000000000000000000000C8
+:10C8700000000000000000000000000000000000B8
+:10C8800000000000000000000000000000000000A8
+:10C890000000000000000000000000000000000098
+:10C8A0000000000000000000000000000000000088
+:10C8B0000000000000000000000000000000000078
+:10C8C0000000000000000000000000000000000068
+:10C8D0000000000000000000000000000000000058
+:10C8E0000000000000000000000000000000000048
+:10C8F0000000000000000000000000000000000038
+:10C900000000000000000000000000000000000027
+:10C910000000000000000000000000000000000017
+:10C920000000000000000000000000000000000007
+:10C9300000000000000000000000000000000000F7
+:10C9400000000000000000000000000000000000E7
+:10C9500000000000000000000000000000000000D7
+:10C9600000000000000000000000000000000000C7
+:10C9700000000000000000000000000000000000B7
+:10C9800000000000000000000000000000000000A7
+:10C990000000000000000000000000000000000097
+:10C9A0000000000000000000000000000000000087
+:10C9B0000000000000000000000000000000000077
+:10C9C0000000000000000000000000000000000067
+:10C9D0000000000000000000000000000000000057
+:10C9E0000000000000000000000000000000000047
+:10C9F0000000000000000000000000000000000037
+:10CA00000000000000000000000000000000000026
+:10CA10000000000000000000000000000000000016
+:10CA20000000000000000000000000000000000006
+:10CA300000000000000000000000000000000000F6
+:10CA400000000000000000000000000000000000E6
+:10CA500000000000000000000000000000000000D6
+:10CA600000000000000000000000000000000000C6
+:10CA700000000000000000000000000000000000B6
+:10CA800000000000000000000000000000000000A6
+:10CA90000000000000000000000000000000000096
+:10CAA0000000000000000000000000000000000086
+:10CAB0000000000000000000000000000000000076
+:10CAC0000000000000000000000000000000000066
+:10CAD0000000000000000000000000000000000056
+:10CAE0000000000000000000000000000000000046
+:10CAF0000000000000000000000000000000000036
+:10CB00000000000000000000000000000000000025
+:10CB10000000000000000000000000000000000015
+:10CB20000000000000000000000000000000000005
+:10CB300000000000000000000000000000000000F5
+:10CB400000000000000000000000000000000000E5
+:10CB500000000000000000000000000000000000D5
+:10CB600000000000000000000000000000000000C5
+:10CB700000000000000000000000000000000000B5
+:10CB800000000000000000000000000000000000A5
+:10CB90000000000000000000000000000000000095
+:10CBA0000000000000000000000000000000000085
+:10CBB0000000000000000000000000000000000075
+:10CBC0000000000000000000000000000000000065
+:10CBD0000000000000000000000000000000000055
+:10CBE0000000000000000000000000000000000045
+:10CBF0000000000000000000000000000000000035
+:10CC00000000000000000000000000000000000024
+:10CC10000000000000000000000000000000000014
+:10CC20000000000000000000000000000000000004
+:10CC300000000000000000000000000000000000F4
+:10CC400000000000000000000000000000000000E4
+:10CC500000000000000000000000000000000000D4
+:10CC600000000000000000000000000000000000C4
+:10CC700000000000000000000000000000000000B4
+:10CC800000000000000000000000000000000000A4
+:10CC90000000000000000000000000000000000094
+:10CCA0000000000000000000000000000000000084
+:10CCB0000000000000000000000000000000000074
+:10CCC0000000000000000000000000000000000064
+:10CCD0000000000000000000000000000000000054
+:10CCE0000000000000000000000000000000000044
+:10CCF0000000000000000000000000000000000034
+:10CD00000000000000000000000000000000000023
+:10CD10000000000000000000000000000000000013
+:10CD20000000000000000000000000000000000003
+:10CD300000000000000000000000000000000000F3
+:10CD400000000000000000000000000000000000E3
+:10CD500000000000000000000000000000000000D3
+:10CD600000000000000000000000000000000000C3
+:10CD700000000000000000000000000000000000B3
+:10CD800000000000000000000000000000000000A3
+:10CD90000000000000000000000000000000000093
+:10CDA0000000000000000000000000000000000083
+:10CDB0000000000000000000000000000000000073
+:10CDC0000000000000000000000000000000000063
+:10CDD0000000000000000000000000000000000053
+:10CDE0000000000000000000000000000000000043
+:10CDF0000000000000000000000000000000000033
+:10CE00000000000000000000000000000000000022
+:10CE10000000000000000000000000000000000012
+:10CE20000000000000000000000000000000000002
+:10CE300000000000000000000000000000000000F2
+:10CE400000000000000000000000000000000000E2
+:10CE500000000000000000000000000000000000D2
+:10CE600000000000000000000000000000000000C2
+:10CE700000000000000000000000000000000000B2
+:10CE800000000000000000000000000000000000A2
+:10CE90000000000000000000000000000000000092
+:10CEA0000000000000000000000000000000000082
+:10CEB0000000000000000000000000000000000072
+:10CEC0000000000000000000000000000000000062
+:10CED0000000000000000000000000000000000052
+:10CEE0000000000000000000000000000000000042
+:10CEF0000000000000000000000000000000000032
+:10CF00000000000000000000000000000000000021
+:10CF10000000000000000000000000000000000011
+:10CF20000000000000000000000000000000000001
+:10CF300000000000000000000000000000000000F1
+:10CF400000000000000000000000000000000000E1
+:10CF500000000000000000000000000000000000D1
+:10CF600000000000000000000000000000000000C1
+:10CF700000000000000000000000000000000000B1
+:10CF800000000000000000000000000000000000A1
+:10CF90000000000000000000000000000000000091
+:10CFA0000000000000000000000000000000000081
+:10CFB0000000000000000000000000000000000071
+:10CFC0000000000000000000000000000000000061
+:10CFD0000000000000000000000000000000000051
+:10CFE0000000000000000000000000000000000041
+:10CFF0000000000000000000000000000000000031
+:10D000000000000000000000000000000000000020
+:10D010000000000000000000000000000000000010
+:10D020000000000000000000000000000000000000
+:10D0300000000000000000000000000000000000F0
+:10D0400000000000000000000000000000000000E0
+:10D0500000000000000000000000000000000000D0
+:10D0600000000000000000000000000000000000C0
+:10D0700000000000000000000000000000000000B0
+:10D0800000000000000000000000000000000000A0
+:10D090000000000000000000000000000000000090
+:10D0A0000000000000000000000000000000000080
+:10D0B0000000000000000000000000000000000070
+:10D0C0000000000000000000000000000000000060
+:10D0D0000000000000000000000000000000000050
+:10D0E0000000000000000000000000000000000040
+:10D0F0000000000000000000000000000000000030
+:10D10000000000000000000000000000000000001F
+:10D11000000000000000000000000000000000000F
+:10D1200000000000000000000000000000000000FF
+:10D1300000000000000000000000000000000000EF
+:10D1400000000000000000000000000000000000DF
+:10D1500000000000000000000000000000000000CF
+:10D1600000000000000000000000000000000000BF
+:10D1700000000000000000000000000000000000AF
+:10D18000000000000000000000000000000000009F
+:10D19000000000000000000000000000000000008F
+:10D1A000000000000000000000000000000000007F
+:10D1B000000000000000000000000000000000006F
+:10D1C000000000000000000000000000000000005F
+:10D1D000000000000000000000000000000000004F
+:10D1E000000000000000000000000000000000003F
+:10D1F000000000000000000000000000000000002F
+:10D20000000000000000000000000000000000001E
+:10D21000000000000000000000000000000000000E
+:10D2200000000000000000000000000000000000FE
+:10D2300000000000000000000000000000000000EE
+:10D2400000000000000000000000000000000000DE
+:10D2500000000000000000000000000000000000CE
+:10D2600000000000000000000000000000000000BE
+:10D2700000000000000000000000000000000000AE
+:10D28000000000000000000000000000000000009E
+:10D29000000000000000000000000000000000008E
+:10D2A000000000000000000000000000000000007E
+:10D2B000000000000000000000000000000000006E
+:10D2C000000000000000000000000000000000005E
+:10D2D000000000000000000000000000000000004E
+:10D2E000000000000000000000000000000000003E
+:10D2F000000000000000000000000000000000002E
+:10D30000000000000000000000000000000000001D
+:10D31000000000000000000000000000000000000D
+:10D3200000000000000000000000000000000000FD
+:10D3300000000000000000000000000000000000ED
+:10D3400000000000000000000000000000000000DD
+:10D3500000000000000000000000000000000000CD
+:10D3600000000000000000000000000000000000BD
+:10D3700000000000000000000000000000000000AD
+:10D38000000000000000000000000000000000009D
+:10D39000000000000000000000000000000000008D
+:10D3A000000000000000000000000000000000007D
+:10D3B000000000000000000000000000000000006D
+:10D3C000000000000000000000000000000000005D
+:10D3D000000000000000000000000000000000004D
+:10D3E000000000000000000000000000000000003D
+:10D3F000000000000000000000000000000000002D
+:10D40000000000000000000000000000000000001C
+:10D41000000000000000000000000000000000000C
+:10D4200000000000000000000000000000000000FC
+:10D4300000000000000000000000000000000000EC
+:10D4400000000000000000000000000000000000DC
+:10D4500000000000000000000000000000000000CC
+:10D4600000000000000000000000000000000000BC
+:10D4700000000000000000000000000000000000AC
+:10D48000000000000000000000000000000000009C
+:10D49000000000000000000000000000000000008C
+:10D4A000000000000000000000000000000000007C
+:10D4B000000000000000000000000000000000006C
+:10D4C000000000000000000000000000000000005C
+:10D4D000000000000000000000000000000000004C
+:10D4E000000000000000000000000000000000003C
+:10D4F000000000000000000000000000000000002C
+:10D50000000000000000000000000000000000001B
+:10D51000000000000000000000000000000000000B
+:10D5200000000000000000000000000000000000FB
+:10D5300000000000000000000000000000000000EB
+:10D5400000000000000000000000000000000000DB
+:10D5500000000000000000000000000000000000CB
+:10D5600000000000000000000000000000000000BB
+:10D5700000000000000000000000000000000000AB
+:10D58000000000000000000000000000000000009B
+:10D59000000000000000000000000000000000008B
+:10D5A000000000000000000000000000000000007B
+:10D5B000000000000000000000000000000000006B
+:10D5C000000000000000000000000000000000005B
+:10D5D000000000000000000000000000000000004B
+:10D5E000000000000000000000000000000000003B
+:10D5F000000000000000000000000000000000002B
+:10D60000000000000000000000000000000000001A
+:10D61000000000000000000000000000000000000A
+:10D6200000000000000000000000000000000000FA
+:10D6300000000000000000000000000000000000EA
+:10D6400000000000000000000000000000000000DA
+:10D6500000000000000000000000000000000000CA
+:10D6600000000000000000000000000000000000BA
+:10D6700000000000000000000000000000000000AA
+:10D68000000000000000000000000000000000009A
+:10D69000000000000000000000000000000000008A
+:10D6A000000000000000000000000000000000007A
+:10D6B000000000000000000000000000000000006A
+:10D6C000000000000000000000000000000000005A
+:10D6D000000000000000000000000000000000004A
+:10D6E000000000000000000000000000000000003A
+:10D6F000000000000000000000000000000000002A
+:10D700000000000000000000000000000000000019
+:10D710000000000000000000000000000000000009
+:10D7200000000000000000000000000000000000F9
+:10D7300000000000000000000000000000000000E9
+:10D7400000000000000000000000000000000000D9
+:10D7500000000000000000000000000000000000C9
+:10D7600000000000000000000000000000000000B9
+:10D7700000000000000000000000000000000000A9
+:10D780000000000000000000000000000000000099
+:10D790000000000000000000000000000000000089
+:10D7A0000000000000000000000000000000000079
+:10D7B0000000000000000000000000000000000069
+:10D7C0000000000000000000000000000000000059
+:10D7D0000000000000000000000000000000000049
+:10D7E0000000000000000000000000000000000039
+:10D7F0000000000000000000000000000000000029
+:10D800000000000000000000000000000000000018
+:10D810000000000000000000000000000000000008
+:10D8200000000000000000000000000000000000F8
+:10D8300000000000000000000000000000000000E8
+:10D8400000000000000000000000000000000000D8
+:10D8500000000000000000000000000000000000C8
+:10D8600000000000000000000000000000000000B8
+:10D8700000000000000000000000000000000000A8
+:10D880000000000000000000000000000000000098
+:10D890000000000000000000000000000000000088
+:10D8A0000000000000000000000000000000000078
+:10D8B0000000000000000000000000000000000068
+:10D8C0000000000000000000000000000000000058
+:10D8D0000000000000000000000000000000000048
+:10D8E0000000000000000000000000000000000038
+:10D8F0000000000000000000000000000000000028
+:10D900000000000000000000000000000000000017
+:10D910000000000000000000000000000000000007
+:10D9200000000000000000000000000000000000F7
+:10D9300000000000000000000000000000000000E7
+:10D9400000000000000000000000000000000000D7
+:10D9500000000000000000000000000000000000C7
+:10D9600000000000000000000000000000000000B7
+:10D9700000000000000000000000000000000000A7
+:10D980000000000000000000000000000000000097
+:10D990000000000000000000000000000000000087
+:10D9A0000000000000000000000000000000000077
+:10D9B0000000000000000000000000000000000067
+:10D9C0000000000000000000000000000000000057
+:10D9D0000000000000000000000000000000000047
+:10D9E0000000000000000000000000000000000037
+:10D9F0000000000000000000000000000000000027
+:10DA00000000000000000000000000000000000016
+:10DA10000000000000000000000000000000000006
+:10DA200000000000000000000000000000000000F6
+:10DA300000000000000000000000000000000000E6
+:10DA400000000000000000000000000000000000D6
+:10DA500000000000000000000000000000000000C6
+:10DA600000000000000000000000000000000000B6
+:10DA700000000000000000000000000000000000A6
+:10DA80000000000000000000000000000000000096
+:10DA90000000000000000000000000000000000086
+:10DAA0000000000000000000000000000000000076
+:10DAB0000000000000000000000000000000000066
+:10DAC0000000000000000000000000000000000056
+:10DAD0000000000000000000000000000000000046
+:10DAE0000000000000000000000000000000000036
+:10DAF0000000000000000000000000000000000026
+:10DB00000000000000000000000000000000000015
+:10DB10000000000000000000000000000000000005
+:10DB200000000000000000000000000000000000F5
+:10DB300000000000000000000000000000000000E5
+:10DB400000000000000000000000000000000000D5
+:10DB500000000000000000000000000000000000C5
+:10DB600000000000000000000000000000000000B5
+:10DB700000000000000000000000000000000000A5
+:10DB80000000000000000000000000000000000095
+:10DB90000000000000000000000000000000000085
+:10DBA0000000000000000000000000000000000075
+:10DBB0000000000000000000000000000000000065
+:10DBC0000000000000000000000000000000000055
+:10DBD0000000000000000000000000000000000045
+:10DBE0000000000000000000000000000000000035
+:10DBF0000000000000000000000000000000000025
+:10DC00000000000000000000000000000000000014
+:10DC10000000000000000000000000000000000004
+:10DC200000000000000000000000000000000000F4
+:10DC300000000000000000000000000000000000E4
+:10DC400000000000000000000000000000000000D4
+:10DC500000000000000000000000000000000000C4
+:10DC600000000000000000000000000000000000B4
+:10DC700000000000000000000000000000000000A4
+:10DC80000000000000000000000000000000000094
+:10DC90000000000000000000000000000000000084
+:10DCA0000000000000000000000000000000000074
+:10DCB0000000000000000000000000000000000064
+:10DCC0000000000000000000000000000000000054
+:10DCD0000000000000000000000000000000000044
+:10DCE0000000000000000000000000000000000034
+:10DCF0000000000000000000000000000000000024
+:10DD00000000000000000000000000000000000013
+:10DD10000000000000000000000000000000000003
+:10DD200000000000000000000000000000000000F3
+:10DD300000000000000000000000000000000000E3
+:10DD400000000000000000000000000000000000D3
+:10DD500000000000000000000000000000000000C3
+:10DD600000000000000000000000000000000000B3
+:10DD700000000000000000000000000000000000A3
+:10DD80000000000000000000000000000000000093
+:10DD90000000000000000000000000000000000083
+:10DDA0000000000000000000000000000000000073
+:10DDB0000000000000000000000000000000000063
+:10DDC0000000000000000000000000000000000053
+:10DDD0000000000000000000000000000000000043
+:10DDE0000000000000000000000000000000000033
+:10DDF0000000000000000000000000000000000023
+:10DE00000000000000000000000000000000000012
+:10DE10000000000000000000000000000000000002
+:10DE200000000000000000000000000000000000F2
+:10DE300000000000000000000000000000000000E2
+:10DE400000000000000000000000000000000000D2
+:10DE500000000000000000000000000000000000C2
+:10DE600000000000000000000000000000000000B2
+:10DE700000000000000000000000000000000000A2
+:10DE80000000000000000000000000000000000092
+:10DE90000000000000000000000000000000000082
+:10DEA0000000000000000000000000000000000072
+:10DEB0000000000000000000000000000000000062
+:10DEC0000000000000000000000000000000000052
+:10DED0000000000000000000000000000000000042
+:10DEE0000000000000000000000000000000000032
+:10DEF0000000000000000000000000000000000022
+:10DF00000000000000000000000000000000000011
+:10DF10000000000000000000000000000000000001
+:10DF200000000000000000000000000000000000F1
+:10DF300000000000000000000000000000000000E1
+:10DF400000000000000000000000000000000000D1
+:10DF500000000000000000000000000000000000C1
+:10DF600000000000000000000000000000000000B1
+:10DF700000000000000000000000000000000000A1
+:10DF80000000000000000000000000000000000091
+:10DF90000000000000000000000000000000000081
+:10DFA0000000000000000000000000000000000071
+:10DFB0000000000000000000000000000000000061
+:10DFC0000000000000000000000000000000000051
+:10DFD0000000000000000000000000000000000041
+:10DFE0000000000000000000000000000000000031
+:10DFF0000000000000000000000000000000000021
+:10E000000000000000000000000000000000000010
+:10E010000000000000000000000000000000000000
+:10E0200000000000000000000000000000000000F0
+:10E0300000000000000000000000000000000000E0
+:10E0400000000000000000000000000000000000D0
+:10E0500000000000000000000000000000000000C0
+:10E0600000000000000000000000000000000000B0
+:10E0700000000000000000000000000000000000A0
+:10E080000000000000000000000000000000000090
+:10E090000000000000000000000000000000000080
+:10E0A0000000000000000000000000000000000070
+:10E0B0000000000000000000000000000000000060
+:10E0C0000000000000000000000000000000000050
+:10E0D0000000000000000000000000000000000040
+:10E0E0000000000000000000000000000000000030
+:10E0F0000000000000000000000000000000000020
+:10E10000000000000000000000000000000000000F
+:10E1100000000000000000000000000000000000FF
+:10E1200000000000000000000000000000000000EF
+:10E1300000000000000000000000000000000000DF
+:10E1400000000000000000000000000000000000CF
+:10E1500000000000000000000000000000000000BF
+:10E1600000000000000000000000000000000000AF
+:10E17000000000000000000000000000000000009F
+:10E18000000000000000000000000000000000008F
+:10E19000000000000000000000000000000000007F
+:10E1A000000000000000000000000000000000006F
+:10E1B000000000000000000000000000000000005F
+:10E1C000000000000000000000000000000000004F
+:10E1D000000000000000000000000000000000003F
+:10E1E000000000000000000000000000000000002F
+:10E1F000000000000000000000000000000000001F
+:10E20000000000000000000000000000000000000E
+:10E2100000000000000000000000000000000000FE
+:10E2200000000000000000000000000000000000EE
+:10E2300000000000000000000000000000000000DE
+:10E2400000000000000000000000000000000000CE
+:10E2500000000000000000000000000000000000BE
+:10E2600000000000000000000000000000000000AE
+:10E27000000000000000000000000000000000009E
+:10E28000000000000000000000000000000000008E
+:10E29000000000000000000000000000000000007E
+:10E2A000000000000000000000000000000000006E
+:10E2B000000000000000000000000000000000005E
+:10E2C000000000000000000000000000000000004E
+:10E2D000000000000000000000000000000000003E
+:10E2E000000000000000000000000000000000002E
+:10E2F000000000000000000000000000000000001E
+:10E30000000000000000000000000000000000000D
+:10E3100000000000000000000000000000000000FD
+:10E3200000000000000000000000000000000000ED
+:10E3300000000000000000000000000000000000DD
+:10E3400000000000000000000000000000000000CD
+:10E3500000000000000000000000000000000000BD
+:10E3600000000000000000000000000000000000AD
+:10E37000000000000000000000000000000000009D
+:10E38000000000000000000000000000000000008D
+:10E39000000000000000000000000000000000007D
+:10E3A000000000000000000000000000000000006D
+:10E3B000000000000000000000000000000000005D
+:10E3C000000000000000000000000000000000004D
+:10E3D000000000000000000000000000000000003D
+:10E3E000000000000000000000000000000000002D
+:10E3F000000000000000000000000000000000001D
+:10E40000000000000000000000000000000000000C
+:10E4100000000000000000000000000000000000FC
+:10E4200000000000000000000000000000000000EC
+:10E4300000000000000000000000000000000000DC
+:10E4400000000000000000000000000000000000CC
+:10E4500000000000000000000000000000000000BC
+:10E4600000000000000000000000000000000000AC
+:10E47000000000000000000000000000000000009C
+:10E48000000000000000000000000000000000008C
+:10E49000000000000000000000000000000000007C
+:10E4A000000000000000000000000000000000006C
+:10E4B000000000000000000000000000000000005C
+:10E4C000000000000000000000000000000000004C
+:10E4D000000000000000000000000000000000003C
+:10E4E000000000000000000000000000000000002C
+:10E4F000000000000000000000000000000000001C
+:10E50000000000000000000000000000000000000B
+:10E5100000000000000000000000000000000000FB
+:10E5200000000000000000000000000000000000EB
+:10E5300000000000000000000000000000000000DB
+:10E5400000000000000000000000000000000000CB
+:10E5500000000000000000000000000000000000BB
+:10E5600000000000000000000000000000000000AB
+:10E57000000000000000000000000000000000009B
+:10E58000000000000000000000000000000000008B
+:10E59000000000000000000000000000000000007B
+:10E5A000000000000000000000000000000000006B
+:10E5B000000000000000000000000000000000005B
+:10E5C000000000000000000000000000000000004B
+:10E5D000000000000000000000000000000000003B
+:10E5E000000000000000000000000000000000002B
+:10E5F000000000000000000000000000000000001B
+:10E60000000000000000000000000000000000000A
+:10E6100000000000000000000000000000000000FA
+:10E6200000000000000000000000000000000000EA
+:10E6300000000000000000000000000000000000DA
+:10E6400000000000000000000000000000000000CA
+:10E6500000000000000000000000000000000000BA
+:10E6600000000000000000000000000000000000AA
+:10E67000000000000000000000000000000000009A
+:10E68000000000000000000000000000000000008A
+:10E69000000000000000000000000000000000007A
+:10E6A000000000000000000000000000000000006A
+:10E6B000000000000000000000000000000000005A
+:10E6C000000000000000000000000000000000004A
+:10E6D000000000000000000000000000000000003A
+:10E6E000000000000000000000000000000000002A
+:10E6F000000000000000000000000000000000001A
+:10E700000000000000000000000000000000000009
+:10E7100000000000000000000000000000000000F9
+:10E7200000000000000000000000000000000000E9
+:10E7300000000000000000000000000000000000D9
+:10E7400000000000000000000000000000000000C9
+:10E7500000000000000000000000000000000000B9
+:10E7600000000000000000000000000000000000A9
+:10E770000000000000000000000000000000000099
+:10E780000000000000000000000000000000000089
+:10E790000000000000000000000000000000000079
+:10E7A0000000000000000000000000000000000069
+:10E7B0000000000000000000000000000000000059
+:10E7C0000000000000000000000000000000000049
+:10E7D0000000000000000000000000000000000039
+:10E7E0000000000000000000000000000000000029
+:10E7F0000000000000000000000000000000000019
+:10E800000000000000000000000000000000000008
+:10E8100000000000000000000000000000000000F8
+:10E8200000000000000000000000000000000000E8
+:10E8300000000000000000000000000000000000D8
+:10E8400000000000000000000000000000000000C8
+:10E8500000000000000000000000000000000000B8
+:10E8600000000000000000000000000000000000A8
+:10E870000000000000000000000000000000000098
+:10E880000000000000000000000000000000000088
+:10E890000000000000000000000000000000000078
+:10E8A0000000000000000000000000000000000068
+:10E8B0000000000000000000000000000000000058
+:10E8C0000000000000000000000000000000000048
+:10E8D0000000000000000000000000000000000038
+:10E8E0000000000000000000000000000000000028
+:10E8F0000000000000000000000000000000000018
+:10E900000000000000000000000000000000000007
+:10E9100000000000000000000000000000000000F7
+:10E9200000000000000000000000000000000000E7
+:10E9300000000000000000000000000000000000D7
+:10E9400000000000000000000000000000000000C7
+:10E9500000000000000000000000000000000000B7
+:10E9600000000000000000000000000000000000A7
+:10E970000000000000000000000000000000000097
+:10E980000000000000000000000000000000000087
+:10E990000000000000000000000000000000000077
+:10E9A0000000000000000000000000000000000067
+:10E9B0000000000000000000000000000000000057
+:10E9C0000000000000000000000000000000000047
+:10E9D0000000000000000000000000000000000037
+:10E9E0000000000000000000000000000000000027
+:10E9F0000000000000000000000000000000000017
+:10EA00000000000000000000000000000000000006
+:10EA100000000000000000000000000000000000F6
+:10EA200000000000000000000000000000000000E6
+:10EA300000000000000000000000000000000000D6
+:10EA400000000000000000000000000000000000C6
+:10EA500000000000000000000000000000000000B6
+:10EA600000000000000000000000000000000000A6
+:10EA70000000000000000000000000000000000096
+:10EA80000000000000000000000000000000000086
+:10EA90000000000000000000000000000000000076
+:10EAA0000000000000000000000000000000000066
+:10EAB0000000000000000000000000000000000056
+:10EAC0000000000000000000000000000000000046
+:10EAD0000000000000000000000000000000000036
+:10EAE0000000000000000000000000000000000026
+:10EAF0000000000000000000000000000000000016
+:10EB00000000000000000000000000000000000005
+:10EB100000000000000000000000000000000000F5
+:10EB200000000000000000000000000000000000E5
+:10EB300000000000000000000000000000000000D5
+:10EB400000000000000000000000000000000000C5
+:10EB500000000000000000000000000000000000B5
+:10EB600000000000000000000000000000000000A5
+:10EB70000000000000000000000000000000000095
+:10EB80000000000000000000000000000000000085
+:10EB90000000000000000000000000000000000075
+:10EBA0000000000000000000000000000000000065
+:10EBB0000000000000000000000000000000000055
+:10EBC0000000000000000000000000000000000045
+:10EBD0000000000000000000000000000000000035
+:10EBE0000000000000000000000000000000000025
+:10EBF0000000000000000000000000000000000015
+:10EC00000000000000000000000000000000000004
+:10EC100000000000000000000000000000000000F4
+:10EC200000000000000000000000000000000000E4
+:10EC300000000000000000000000000000000000D4
+:10EC400000000000000000000000000000000000C4
+:10EC500000000000000000000000000000000000B4
+:10EC600000000000000000000000000000000000A4
+:10EC70000000000000000000000000000000000094
+:10EC80000000000000000000000000000000000084
+:10EC90000000000000000000000000000000000074
+:10ECA0000000000000000000000000000000000064
+:10ECB0000000000000000000000000000000000054
+:10ECC0000000000000000000000000000000000044
+:10ECD0000000000000000000000000000000000034
+:10ECE0000000000000000000000000000000000024
+:10ECF0000000000000000000000000000000000014
+:10ED00000000000000000000000000000000000003
+:10ED100000000000000000000000000000000000F3
+:10ED200000000000000000000000000000000000E3
+:10ED300000000000000000000000000000000000D3
+:10ED400000000000000000000000000000000000C3
+:10ED500000000000000000000000000000000000B3
+:10ED600000000000000000000000000000000000A3
+:10ED70000000000000000000000000000000000093
+:10ED80000000000000000000000000000000000083
+:10ED90000000000000000000000000000000000073
+:10EDA0000000000000000000000000000000000063
+:10EDB0000000000000000000000000000000000053
+:10EDC0000000000000000000000000000000000043
+:10EDD0000000000000000000000000000000000033
+:10EDE0000000000000000000000000000000000023
+:10EDF0000000000000000000000000000000000013
+:10EE00000000000000000000000000000000000002
+:10EE100000000000000000000000000000000000F2
+:10EE200000000000000000000000000000000000E2
+:10EE300000000000000000000000000000000000D2
+:10EE400000000000000000000000000000000000C2
+:10EE500000000000000000000000000000000000B2
+:10EE600000000000000000000000000000000000A2
+:10EE70000000000000000000000000000000000092
+:10EE80000000000000000000000000000000000082
+:10EE90000000000000000000000000000000000072
+:10EEA0000000000000000000000000000000000062
+:10EEB0000000000000000000000000000000000052
+:10EEC0000000000000000000000000000000000042
+:10EED0000000000000000000000000000000000032
+:10EEE0000000000000000000000000000000000022
+:10EEF0000000000000000000000000000000000012
+:10EF00000000000000000000000000000000000001
+:10EF100000000000000000000000000000000000F1
+:10EF200000000000000000000000000000000000E1
+:10EF300000000000000000000000000000000000D1
+:10EF400000000000000000000000000000000000C1
+:10EF500000000000000000000000000000000000B1
+:10EF600000000000000000000000000000000000A1
+:10EF70000000000000000000000000000000000091
+:10EF80000000000000000000000000000000000081
+:10EF90000000000000000000000000000000000071
+:10EFA0000000000000000000000000000000000061
+:10EFB0000000000000000000000000000000000051
+:10EFC0000000000000000000000000000000000041
+:10EFD0000000000000000000000000000000000031
+:10EFE0000000000000000000000000000000000021
+:10EFF0000000000000000000000000000000000011
+:10F000000000000000000000000000000000000000
+:10F0100000000000000000000000000000000000F0
+:10F0200000000000000000000000000000000000E0
+:10F0300000000000000000000000000000000000D0
+:10F0400000000000000000000000000000000000C0
+:10F0500000000000000000000000000000000000B0
+:10F0600000000000000000000000000000000000A0
+:10F070000000000000000000000000000000000090
+:10F080000000000000000000000000000000000080
+:10F090000000000000000000000000000000000070
+:10F0A0000000000000000000000000000000000060
+:10F0B0000000000000000000000000000000000050
+:10F0C0000000000000000000000000000000000040
+:10F0D0000000000000000000000000000000000030
+:10F0E0000000000000000000000000000000000020
+:10F0F0000000000000000000000000000000000010
+:10F1000000000000000000000000000000000000FF
+:10F1100000000000000000000000000000000000EF
+:10F1200000000000000000000000000000000000DF
+:10F1300000000000000000000000000000000000CF
+:10F1400000000000000000000000000000000000BF
+:10F1500000000000000000000000000000000000AF
+:10F16000000000000000000000000000000000009F
+:10F17000000000000000000000000000000000008F
+:10F18000000000000000000000000000000000007F
+:10F19000000000000000000000000000000000006F
+:10F1A000000000000000000000000000000000005F
+:10F1B000000000000000000000000000000000004F
+:10F1C000000000000000000000000000000000003F
+:10F1D000000000000000000000000000000000002F
+:10F1E000000000000000000000000000000000001F
+:10F1F000000000000000000000000000000000000F
+:10F2000000000000000000000000000000000000FE
+:10F2100000000000000000000000000000000000EE
+:10F2200000000000000000000000000000000000DE
+:10F2300000000000000000000000000000000000CE
+:10F2400000000000000000000000000000000000BE
+:10F2500000000000000000000000000000000000AE
+:10F26000000000000000000000000000000000009E
+:10F27000000000000000000000000000000000008E
+:10F28000000000000000000000000000000000007E
+:10F29000000000000000000000000000000000006E
+:10F2A000000000000000000000000000000000005E
+:10F2B000000000000000000000000000000000004E
+:10F2C000000000000000000000000000000000003E
+:10F2D000000000000000000000000000000000002E
+:10F2E000000000000000000000000000000000001E
+:10F2F000000000000000000000000000000000000E
+:10F3000000000000000000000000000000000000FD
+:10F3100000000000000000000000000000000000ED
+:10F3200000000000000000000000000000000000DD
+:10F3300000000000000000000000000000000000CD
+:10F3400000000000000000000000000000000000BD
+:10F3500000000000000000000000000000000000AD
+:10F36000000000000000000000000000000000009D
+:10F37000000000000000000000000000000000008D
+:10F38000000000000000000000000000000000007D
+:10F39000000000000000000000000000000000006D
+:10F3A000000000000000000000000000000000005D
+:10F3B000000000000000000000000000000000004D
+:10F3C000000000000000000000000000000000003D
+:10F3D000000000000000000000000000000000002D
+:10F3E000000000000000000000000000000000001D
+:10F3F000000000000000000000000000000000000D
+:10F4000000000000000000000000000000000000FC
+:10F4100000000000000000000000000000000000EC
+:10F4200000000000000000000000000000000000DC
+:10F4300000000000000000000000000000000000CC
+:10F4400000000000000000000000000000000000BC
+:10F4500000000000000000000000000000000000AC
+:10F46000000000000000000000000000000000009C
+:10F47000000000000000000000000000000000008C
+:10F48000000000000000000000000000000000007C
+:10F49000000000000000000000000000000000006C
+:10F4A000000000000000000000000000000000005C
+:10F4B000000000000000000000000000000000004C
+:10F4C000000000000000000000000000000000003C
+:10F4D000000000000000000000000000000000002C
+:10F4E000000000000000000000000000000000001C
+:10F4F000000000000000000000000000000000000C
+:10F5000000000000000000000000000000000000FB
+:10F5100000000000000000000000000000000000EB
+:10F5200000000000000000000000000000000000DB
+:10F5300000000000000000000000000000000000CB
+:10F5400000000000000000000000000000000000BB
+:10F5500000000000000000000000000000000000AB
+:10F56000000000000000000000000000000000009B
+:10F57000000000000000000000000000000000008B
+:10F58000000000000000000000000000000000007B
+:10F59000000000000000000000000000000000006B
+:10F5A000000000000000000000000000000000005B
+:10F5B000000000000000000000000000000000004B
+:10F5C000000000000000000000000000000000003B
+:10F5D000000000000000000000000000000000002B
+:10F5E000000000000000000000000000000000001B
+:10F5F000000000000000000000000000000000000B
+:10F6000000000000000000000000000000000000FA
+:10F6100000000000000000000000000000000000EA
+:10F6200000000000000000000000000000000000DA
+:10F6300000000000000000000000000000000000CA
+:10F6400000000000000000000000000000000000BA
+:10F6500000000000000000000000000000000000AA
+:10F66000000000000000000000000000000000009A
+:10F67000000000000000000000000000000000008A
+:10F68000000000000000000000000000000000007A
+:10F69000000000000000000000000000000000006A
+:10F6A000000000000000000000000000000000005A
+:10F6B000000000000000000000000000000000004A
+:10F6C000000000000000000000000000000000003A
+:10F6D000000000000000000000000000000000002A
+:10F6E000000000000000000000000000000000001A
+:10F6F000000000000000000000000000000000000A
+:10F7000000000000000000000000000000000000F9
+:10F7100000000000000000000000000000000000E9
+:10F7200000000000000000000000000000000000D9
+:10F7300000000000000000000000000000000000C9
+:10F7400000000000000000000000000000000000B9
+:10F7500000000000000000000000000000000000A9
+:10F760000000000000000000000000000000000099
+:10F770000000000000000000000000000000000089
+:10F780000000000000000000000000000000000079
+:10F790000000000000000000000000000000000069
+:10F7A0000000000000000000000000000000000059
+:10F7B0000000000000000000000000000000000049
+:10F7C0000000000000000000000000000000000039
+:10F7D0000000000000000000000000000000000029
+:10F7E0000000000000000000000000000000000019
+:10F7F0000000000000000000000000000000000009
+:10F8000000000000000000000000000000000000F8
+:10F8100000000000000000000000000000000000E8
+:10F8200000000000000000000000000000000000D8
+:10F8300000000000000000000000000000000000C8
+:10F8400000000000000000000000000000000000B8
+:10F8500000000000000000000000000000000000A8
+:10F860000000000000000000000000000000000098
+:10F870000000000000000000000000000000000088
+:10F880000000000000000000000000000000000078
+:10F890000000000000000000000000000000000068
+:10F8A0000000000000000000000000000000000058
+:10F8B0000000000000000000000000000000000048
+:10F8C0000000000000000000000000000000000038
+:10F8D0000000000000000000000000000000000028
+:10F8E0000000000000000000000000000000000018
+:10F8F0000000000000000000000000000000000008
+:10F9000000000000000000000000000000000000F7
+:10F9100000000000000000000000000000000000E7
+:10F9200000000000000000000000000000000000D7
+:10F9300000000000000000000000000000000000C7
+:10F9400000000000000000000000000000000000B7
+:10F9500000000000000000000000000000000000A7
+:10F960000000000000000000000000000000000097
+:10F970000000000000000000000000000000000087
+:10F980000000000000000000000000000000000077
+:10F990000000000000000000000000000000000067
+:10F9A0000000000000000000000000000000000057
+:10F9B0000000000000000000000000000000000047
+:10F9C0000000000000000000000000000000000037
+:10F9D0000000000000000000000000000000000027
+:10F9E0000000000000000000000000000000000017
+:10F9F0000000000000000000000000000000000007
+:10FA000000000000000000000000000000000000F6
+:10FA100000000000000000000000000000000000E6
+:10FA200000000000000000000000000000000000D6
+:10FA300000000000000000000000000000000000C6
+:10FA400000000000000000000000000000000000B6
+:10FA500000000000000000000000000000000000A6
+:10FA60000000000000000000000000000000000096
+:10FA70000000000000000000000000000000000086
+:10FA80000000000000000000000000000000000076
+:10FA90000000000000000000000000000000000066
+:10FAA0000000000000000000000000000000000056
+:10FAB0000000000000000000000000000000000046
+:10FAC0000000000000000000000000000000000036
+:10FAD0000000000000000000000000000000000026
+:10FAE0000000000000000000000000000000000016
+:10FAF0000000000000000000000000000000000006
+:10FB000000000000000000000000000000000000F5
+:10FB100000000000000000000000000000000000E5
+:10FB200000000000000000000000000000000000D5
+:10FB300000000000000000000000000000000000C5
+:10FB400000000000000000000000000000000000B5
+:10FB500000000000000000000000000000000000A5
+:10FB60000000000000000000000000000000000095
+:10FB70000000000000000000000000000000000085
+:10FB80000000000000000000000000000000000075
+:10FB90000000000000000000000000000000000065
+:10FBA0000000000000000000000000000000000055
+:10FBB0000000000000000000000000000000000045
+:10FBC0000000000000000000000000000000000035
+:10FBD0000000000000000000000000000000000025
+:10FBE0000000000000000000000000000000000015
+:10FBF0000000000000000000000000000000000005
+:10FC000000000000000000000000000000000000F4
+:10FC100000000000000000000000000000000000E4
+:10FC200000000000000000000000000000000000D4
+:10FC300000000000000000000000000000000000C4
+:10FC400000000000000000000000000000000000B4
+:10FC500000000000000000000000000000000000A4
+:10FC60000000000000000000000000000000000094
+:10FC70000000000000000000000000000000000084
+:10FC80000000000000000000000000000000000074
+:10FC90000000000000000000000000000000000064
+:10FCA0000000000000000000000000000000000054
+:10FCB0000000000000000000000000000000000044
+:10FCC0000000000000000000000000000000000034
+:10FCD0000000000000000000000000000000000024
+:10FCE0000000000000000000000000000000000014
+:10FCF0000000000000000000000000000000000004
+:10FD000000000000000000000000000000000000F3
+:10FD100000000000000000000000000000000000E3
+:10FD200000000000000000000000000000000000D3
+:10FD300000000000000000000000000000000000C3
+:10FD400000000000000000000000000000000000B3
+:10FD500000000000000000000000000000000000A3
+:10FD60000000000000000000000000000000000093
+:10FD70000000000000000000000000000000000083
+:10FD80000000000000000000000000000000000073
+:10FD90000000000000000000000000000000000063
+:10FDA0000000000000000000000000000000000053
+:10FDB0000000000000000000000000000000000043
+:10FDC0000000000000000000000000000000000033
+:10FDD0000000000000000000000000000000000023
+:10FDE0000000000000000000000000000000000013
+:10FDF0000000000000000000000000000000000003
+:10FE000000000000000000000000000000000000F2
+:10FE100000000000000000000000000000000000E2
+:10FE200000000000000000000000000000000000D2
+:10FE300000000000000000000000000000000000C2
+:10FE400000000000000000000000000000000000B2
+:10FE500000000000000000000000000000000000A2
+:10FE60000000000000000000000000000000000092
+:10FE70000000000000000000000000000000000082
+:10FE80000000000000000000000000000000000072
+:10FE90000000000000000000000000000000000062
+:10FEA0000000000000000000000000000000000052
+:10FEB0000000000000000000000000000000000042
+:10FEC0000000000000000000000000000000000032
+:10FED0000000000000000000000000000000000022
+:10FEE0000000000000000000000000000000000012
+:10FEF0000000000000000000000000000000000002
+:10FF000000000000000000000000000000000000F1
+:10FF100000000000000000000000000000000000E1
+:10FF200000000000000000000000000000000000D1
+:10FF300000000000000000000000000000000000C1
+:10FF400000000000000000000000000000000000B1
+:10FF500000000000000000000000000000000000A1
+:10FF60000000000000000000000000000000000091
+:10FF70000000000000000000000000000000000081
+:10FF80000000000000000000000000000000000071
+:10FF90000000000000000000000000000000000061
+:10FFA0000000000000000000000000000000000051
+:10FFB0000000000000000000000000000000000041
+:10FFC0000000000000000000000000000000000031
+:10FFD0000000000000000000000000000000000021
+:10FFE0000000000000000000000000000000000011
+:10FFF0000000000000000000000000000000000001
+:020000040801F1
+:1000000000000000000000000000000000000000F0
+:1000100000000000000000000000000000000000E0
+:1000200000000000000000000000000000000000D0
+:1000300000000000000000000000000000000000C0
+:1000400000000000000000000000000000000000B0
+:1000500000000000000000000000000000000000A0
+:100060000000000000000000000000000000000090
+:100070000000000000000000000000000000000080
+:100080000000000000000000000000000000000070
+:100090000000000000000000000000000000000060
+:1000A0000000000000000000000000000000000050
+:1000B0000000000000000000000000000000000040
+:1000C0000000000000000000000000000000000030
+:1000D0000000000000000000000000000000000020
+:1000E0000000000000000000000000000000000010
+:1000F0000000000000000000000000000000000000
+:1001000000000000000000000000000000000000EF
+:1001100000000000000000000000000000000000DF
+:1001200000000000000000000000000000000000CF
+:1001300000000000000000000000000000000000BF
+:1001400000000000000000000000000000000000AF
+:10015000000000000000000000000000000000009F
+:10016000000000000000000000000000000000008F
+:10017000000000000000000000000000000000007F
+:10018000000000000000000000000000000000006F
+:10019000000000000000000000000000000000005F
+:1001A000000000000000000000000000000000004F
+:1001B000000000000000000000000000000000003F
+:1001C000000000000000000000000000000000002F
+:1001D000000000000000000000000000000000001F
+:1001E000000000000000000000000000000000000F
+:1001F00000000000000000000000000000000000FF
+:1002000000000000000000000000000000000000EE
+:1002100000000000000000000000000000000000DE
+:1002200000000000000000000000000000000000CE
+:1002300000000000000000000000000000000000BE
+:1002400000000000000000000000000000000000AE
+:10025000000000000000000000000000000000009E
+:10026000000000000000000000000000000000008E
+:10027000000000000000000000000000000000007E
+:10028000000000000000000000000000000000006E
+:10029000000000000000000000000000000000005E
+:1002A000000000000000000000000000000000004E
+:1002B000000000000000000000000000000000003E
+:1002C000000000000000000000000000000000002E
+:1002D000000000000000000000000000000000001E
+:1002E000000000000000000000000000000000000E
+:1002F00000000000000000000000000000000000FE
+:1003000000000000000000000000000000000000ED
+:1003100000000000000000000000000000000000DD
+:1003200000000000000000000000000000000000CD
+:1003300000000000000000000000000000000000BD
+:1003400000000000000000000000000000000000AD
+:10035000000000000000000000000000000000009D
+:10036000000000000000000000000000000000008D
+:10037000000000000000000000000000000000007D
+:10038000000000000000000000000000000000006D
+:10039000000000000000000000000000000000005D
+:1003A000000000000000000000000000000000004D
+:1003B000000000000000000000000000000000003D
+:1003C000000000000000000000000000000000002D
+:1003D000000000000000000000000000000000001D
+:1003E000000000000000000000000000000000000D
+:1003F00000000000000000000000000000000000FD
+:1004000000000000000000000000000000000000EC
+:1004100000000000000000000000000000000000DC
+:1004200000000000000000000000000000000000CC
+:1004300000000000000000000000000000000000BC
+:1004400000000000000000000000000000000000AC
+:10045000000000000000000000000000000000009C
+:10046000000000000000000000000000000000008C
+:10047000000000000000000000000000000000007C
+:10048000000000000000000000000000000000006C
+:10049000000000000000000000000000000000005C
+:1004A000000000000000000000000000000000004C
+:1004B000000000000000000000000000000000003C
+:1004C000000000000000000000000000000000002C
+:1004D000000000000000000000000000000000001C
+:1004E000000000000000000000000000000000000C
+:1004F00000000000000000000000000000000000FC
+:1005000000000000000000000000000000000000EB
+:1005100000000000000000000000000000000000DB
+:1005200000000000000000000000000000000000CB
+:1005300000000000000000000000000000000000BB
+:1005400000000000000000000000000000000000AB
+:10055000000000000000000000000000000000009B
+:10056000000000000000000000000000000000008B
+:10057000000000000000000000000000000000007B
+:10058000000000000000000000000000000000006B
+:10059000000000000000000000000000000000005B
+:1005A000000000000000000000000000000000004B
+:1005B000000000000000000000000000000000003B
+:1005C000000000000000000000000000000000002B
+:1005D000000000000000000000000000000000001B
+:1005E000000000000000000000000000000000000B
+:1005F00000000000000000000000000000000000FB
+:1006000000000000000000000000000000000000EA
+:1006100000000000000000000000000000000000DA
+:1006200000000000000000000000000000000000CA
+:1006300000000000000000000000000000000000BA
+:1006400000000000000000000000000000000000AA
+:10065000000000000000000000000000000000009A
+:10066000000000000000000000000000000000008A
+:10067000000000000000000000000000000000007A
+:10068000000000000000000000000000000000006A
+:10069000000000000000000000000000000000005A
+:1006A000000000000000000000000000000000004A
+:1006B000000000000000000000000000000000003A
+:1006C000000000000000000000000000000000002A
+:1006D000000000000000000000000000000000001A
+:1006E000000000000000000000000000000000000A
+:1006F00000000000000000000000000000000000FA
+:1007000000000000000000000000000000000000E9
+:1007100000000000000000000000000000000000D9
+:1007200000000000000000000000000000000000C9
+:1007300000000000000000000000000000000000B9
+:1007400000000000000000000000000000000000A9
+:100750000000000000000000000000000000000099
+:100760000000000000000000000000000000000089
+:100770000000000000000000000000000000000079
+:100780000000000000000000000000000000000069
+:100790000000000000000000000000000000000059
+:1007A0000000000000000000000000000000000049
+:1007B0000000000000000000000000000000000039
+:1007C0000000000000000000000000000000000029
+:1007D0000000000000000000000000000000000019
+:1007E0000000000000000000000000000000000009
+:1007F00000000000000000000000000000000000F9
+:1008000000000000000000000000000000000000E8
+:1008100000000000000000000000000000000000D8
+:1008200000000000000000000000000000000000C8
+:1008300000000000000000000000000000000000B8
+:1008400000000000000000000000000000000000A8
+:100850000000000000000000000000000000000098
+:100860000000000000000000000000000000000088
+:100870000000000000000000000000000000000078
+:100880000000000000000000000000000000000068
+:100890000000000000000000000000000000000058
+:1008A0000000000000000000000000000000000048
+:1008B0000000000000000000000000000000000038
+:1008C0000000000000000000000000000000000028
+:1008D0000000000000000000000000000000000018
+:1008E0000000000000000000000000000000000008
+:1008F00000000000000000000000000000000000F8
+:1009000000000000000000000000000000000000E7
+:1009100000000000000000000000000000000000D7
+:1009200000000000000000000000000000000000C7
+:1009300000000000000000000000000000000000B7
+:1009400000000000000000000000000000000000A7
+:100950000000000000000000000000000000000097
+:100960000000000000000000000000000000000087
+:100970000000000000000000000000000000000077
+:100980000000000000000000000000000000000067
+:100990000000000000000000000000000000000057
+:1009A0000000000000000000000000000000000047
+:1009B0000000000000000000000000000000000037
+:1009C0000000000000000000000000000000000027
+:1009D0000000000000000000000000000000000017
+:1009E0000000000000000000000000000000000007
+:1009F00000000000000000000000000000000000F7
+:100A000000000000000000000000000000000000E6
+:100A100000000000000000000000000000000000D6
+:100A200000000000000000000000000000000000C6
+:100A300000000000000000000000000000000000B6
+:100A400000000000000000000000000000000000A6
+:100A50000000000000000000000000000000000096
+:100A60000000000000000000000000000000000086
+:100A70000000000000000000000000000000000076
+:100A80000000000000000000000000000000000066
+:100A90000000000000000000000000000000000056
+:100AA0000000000000000000000000000000000046
+:100AB0000000000000000000000000000000000036
+:100AC0000000000000000000000000000000000026
+:100AD0000000000000000000000000000000000016
+:100AE0000000000000000000000000000000000006
+:100AF00000000000000000000000000000000000F6
+:100B000000000000000000000000000000000000E5
+:100B100000000000000000000000000000000000D5
+:100B200000000000000000000000000000000000C5
+:100B300000000000000000000000000000000000B5
+:100B400000000000000000000000000000000000A5
+:100B50000000000000000000000000000000000095
+:100B60000000000000000000000000000000000085
+:100B70000000000000000000000000000000000075
+:100B80000000000000000000000000000000000065
+:100B90000000000000000000000000000000000055
+:100BA0000000000000000000000000000000000045
+:100BB0000000000000000000000000000000000035
+:100BC0000000000000000000000000000000000025
+:100BD0000000000000000000000000000000000015
+:100BE0000000000000000000000000000000000005
+:100BF00000000000000000000000000000000000F5
+:100C000000000000000000000000000000000000E4
+:100C100000000000000000000000000000000000D4
+:100C200000000000000000000000000000000000C4
+:100C300000000000000000000000000000000000B4
+:100C400000000000000000000000000000000000A4
+:100C50000000000000000000000000000000000094
+:100C60000000000000000000000000000000000084
+:100C70000000000000000000000000000000000074
+:100C80000000000000000000000000000000000064
+:100C90000000000000000000000000000000000054
+:100CA0000000000000000000000000000000000044
+:100CB0000000000000000000000000000000000034
+:100CC0000000000000000000000000000000000024
+:100CD0000000000000000000000000000000000014
+:100CE0000000000000000000000000000000000004
+:100CF00000000000000000000000000000000000F4
+:100D000000000000000000000000000000000000E3
+:100D100000000000000000000000000000000000D3
+:100D200000000000000000000000000000000000C3
+:100D300000000000000000000000000000000000B3
+:100D400000000000000000000000000000000000A3
+:100D50000000000000000000000000000000000093
+:100D60000000000000000000000000000000000083
+:100D70000000000000000000000000000000000073
+:100D80000000000000000000000000000000000063
+:100D90000000000000000000000000000000000053
+:100DA0000000000000000000000000000000000043
+:100DB0000000000000000000000000000000000033
+:100DC0000000000000000000000000000000000023
+:100DD0000000000000000000000000000000000013
+:100DE0000000000000000000000000000000000003
+:100DF00000000000000000000000000000000000F3
+:100E000000000000000000000000000000000000E2
+:100E100000000000000000000000000000000000D2
+:100E200000000000000000000000000000000000C2
+:100E300000000000000000000000000000000000B2
+:100E400000000000000000000000000000000000A2
+:100E50000000000000000000000000000000000092
+:100E60000000000000000000000000000000000082
+:100E70000000000000000000000000000000000072
+:100E80000000000000000000000000000000000062
+:100E90000000000000000000000000000000000052
+:100EA0000000000000000000000000000000000042
+:100EB0000000000000000000000000000000000032
+:100EC0000000000000000000000000000000000022
+:100ED0000000000000000000000000000000000012
+:100EE0000000000000000000000000000000000002
+:100EF00000000000000000000000000000000000F2
+:100F000000000000000000000000000000000000E1
+:100F100000000000000000000000000000000000D1
+:100F200000000000000000000000000000000000C1
+:100F300000000000000000000000000000000000B1
+:100F400000000000000000000000000000000000A1
+:100F50000000000000000000000000000000000091
+:100F60000000000000000000000000000000000081
+:100F70000000000000000000000000000000000071
+:100F80000000000000000000000000000000000061
+:100F90000000000000000000000000000000000051
+:100FA0000000000000000000000000000000000041
+:100FB0000000000000000000000000000000000031
+:100FC0000000000000000000000000000000000021
+:100FD0000000000000000000000000000000000011
+:100FE0000000000000000000000000000000000001
+:100FF00000000000000000000000000000000000F1
+:1010000000000000000000000000000000000000E0
+:1010100000000000000000000000000000000000D0
+:1010200000000000000000000000000000000000C0
+:1010300000000000000000000000000000000000B0
+:1010400000000000000000000000000000000000A0
+:101050000000000000000000000000000000000090
+:101060000000000000000000000000000000000080
+:101070000000000000000000000000000000000070
+:101080000000000000000000000000000000000060
+:101090000000000000000000000000000000000050
+:1010A0000000000000000000000000000000000040
+:1010B0000000000000000000000000000000000030
+:1010C0000000000000000000000000000000000020
+:1010D0000000000000000000000000000000000010
+:1010E0000000000000000000000000000000000000
+:1010F00000000000000000000000000000000000F0
+:1011000000000000000000000000000000000000DF
+:1011100000000000000000000000000000000000CF
+:1011200000000000000000000000000000000000BF
+:1011300000000000000000000000000000000000AF
+:10114000000000000000000000000000000000009F
+:10115000000000000000000000000000000000008F
+:10116000000000000000000000000000000000007F
+:10117000000000000000000000000000000000006F
+:10118000000000000000000000000000000000005F
+:10119000000000000000000000000000000000004F
+:1011A000000000000000000000000000000000003F
+:1011B000000000000000000000000000000000002F
+:1011C000000000000000000000000000000000001F
+:1011D000000000000000000000000000000000000F
+:1011E00000000000000000000000000000000000FF
+:1011F00000000000000000000000000000000000EF
+:1012000000000000000000000000000000000000DE
+:1012100000000000000000000000000000000000CE
+:1012200000000000000000000000000000000000BE
+:1012300000000000000000000000000000000000AE
+:10124000000000000000000000000000000000009E
+:10125000000000000000000000000000000000008E
+:10126000000000000000000000000000000000007E
+:10127000000000000000000000000000000000006E
+:10128000000000000000000000000000000000005E
+:10129000000000000000000000000000000000004E
+:1012A000000000000000000000000000000000003E
+:1012B000000000000000000000000000000000002E
+:1012C000000000000000000000000000000000001E
+:1012D000000000000000000000000000000000000E
+:1012E00000000000000000000000000000000000FE
+:1012F00000000000000000000000000000000000EE
+:1013000000000000000000000000000000000000DD
+:1013100000000000000000000000000000000000CD
+:1013200000000000000000000000000000000000BD
+:1013300000000000000000000000000000000000AD
+:10134000000000000000000000000000000000009D
+:10135000000000000000000000000000000000008D
+:10136000000000000000000000000000000000007D
+:10137000000000000000000000000000000000006D
+:10138000000000000000000000000000000000005D
+:10139000000000000000000000000000000000004D
+:1013A000000000000000000000000000000000003D
+:1013B000000000000000000000000000000000002D
+:1013C000000000000000000000000000000000001D
+:1013D000000000000000000000000000000000000D
+:1013E00000000000000000000000000000000000FD
+:1013F00000000000000000000000000000000000ED
+:1014000000000000000000000000000000000000DC
+:1014100000000000000000000000000000000000CC
+:1014200000000000000000000000000000000000BC
+:1014300000000000000000000000000000000000AC
+:10144000000000000000000000000000000000009C
+:10145000000000000000000000000000000000008C
+:10146000000000000000000000000000000000007C
+:10147000000000000000000000000000000000006C
+:10148000000000000000000000000000000000005C
+:10149000000000000000000000000000000000004C
+:1014A000000000000000000000000000000000003C
+:1014B000000000000000000000000000000000002C
+:1014C000000000000000000000000000000000001C
+:1014D000000000000000000000000000000000000C
+:1014E00000000000000000000000000000000000FC
+:1014F00000000000000000000000000000000000EC
+:1015000000000000000000000000000000000000DB
+:1015100000000000000000000000000000000000CB
+:1015200000000000000000000000000000000000BB
+:1015300000000000000000000000000000000000AB
+:10154000000000000000000000000000000000009B
+:10155000000000000000000000000000000000008B
+:10156000000000000000000000000000000000007B
+:10157000000000000000000000000000000000006B
+:10158000000000000000000000000000000000005B
+:10159000000000000000000000000000000000004B
+:1015A000000000000000000000000000000000003B
+:1015B000000000000000000000000000000000002B
+:1015C000000000000000000000000000000000001B
+:1015D000000000000000000000000000000000000B
+:1015E00000000000000000000000000000000000FB
+:1015F00000000000000000000000000000000000EB
+:1016000000000000000000000000000000000000DA
+:1016100000000000000000000000000000000000CA
+:1016200000000000000000000000000000000000BA
+:1016300000000000000000000000000000000000AA
+:10164000000000000000000000000000000000009A
+:10165000000000000000000000000000000000008A
+:10166000000000000000000000000000000000007A
+:10167000000000000000000000000000000000006A
+:10168000000000000000000000000000000000005A
+:10169000000000000000000000000000000000004A
+:1016A000000000000000000000000000000000003A
+:1016B000000000000000000000000000000000002A
+:1016C000000000000000000000000000000000001A
+:1016D000000000000000000000000000000000000A
+:1016E00000000000000000000000000000000000FA
+:1016F00000000000000000000000000000000000EA
+:1017000000000000000000000000000000000000D9
+:1017100000000000000000000000000000000000C9
+:1017200000000000000000000000000000000000B9
+:1017300000000000000000000000000000000000A9
+:101740000000000000000000000000000000000099
+:101750000000000000000000000000000000000089
+:101760000000000000000000000000000000000079
+:101770000000000000000000000000000000000069
+:101780000000000000000000000000000000000059
+:101790000000000000000000000000000000000049
+:1017A0000000000000000000000000000000000039
+:1017B0000000000000000000000000000000000029
+:1017C0000000000000000000000000000000000019
+:1017D0000000000000000000000000000000000009
+:1017E00000000000000000000000000000000000F9
+:1017F00000000000000000000000000000000000E9
+:1018000000000000000000000000000000000000D8
+:1018100000000000000000000000000000000000C8
+:1018200000000000000000000000000000000000B8
+:1018300000000000000000000000000000000000A8
+:101840000000000000000000000000000000000098
+:101850000000000000000000000000000000000088
+:101860000000000000000000000000000000000078
+:101870000000000000000000000000000000000068
+:101880000000000000000000000000000000000058
+:101890000000000000000000000000000000000048
+:1018A0000000000000000000000000000000000038
+:1018B0000000000000000000000000000000000028
+:1018C0000000000000000000000000000000000018
+:1018D0000000000000000000000000000000000008
+:1018E00000000000000000000000000000000000F8
+:1018F00000000000000000000000000000000000E8
+:1019000000000000000000000000000000000000D7
+:1019100000000000000000000000000000000000C7
+:1019200000000000000000000000000000000000B7
+:1019300000000000000000000000000000000000A7
+:101940000000000000000000000000000000000097
+:101950000000000000000000000000000000000087
+:101960000000000000000000000000000000000077
+:101970000000000000000000000000000000000067
+:101980000000000000000000000000000000000057
+:101990000000000000000000000000000000000047
+:1019A0000000000000000000000000000000000037
+:1019B0000000000000000000000000000000000027
+:1019C0000000000000000000000000000000000017
+:1019D0000000000000000000000000000000000007
+:1019E00000000000000000000000000000000000F7
+:1019F00000000000000000000000000000000000E7
+:101A000000000000000000000000000000000000D6
+:101A100000000000000000000000000000000000C6
+:101A200000000000000000000000000000000000B6
+:101A300000000000000000000000000000000000A6
+:101A40000000000000000000000000000000000096
+:101A50000000000000000000000000000000000086
+:101A60000000000000000000000000000000000076
+:101A70000000000000000000000000000000000066
+:101A80000000000000000000000000000000000056
+:101A90000000000000000000000000000000000046
+:101AA0000000000000000000000000000000000036
+:101AB0000000000000000000000000000000000026
+:101AC0000000000000000000000000000000000016
+:101AD0000000000000000000000000000000000006
+:101AE00000000000000000000000000000000000F6
+:101AF00000000000000000000000000000000000E6
+:101B000000000000000000000000000000000000D5
+:101B100000000000000000000000000000000000C5
+:101B200000000000000000000000000000000000B5
+:101B300000000000000000000000000000000000A5
+:101B40000000000000000000000000000000000095
+:101B50000000000000000000000000000000000085
+:101B60000000000000000000000000000000000075
+:101B70000000000000000000000000000000000065
+:101B80000000000000000000000000000000000055
+:101B90000000000000000000000000000000000045
+:101BA0000000000000000000000000000000000035
+:101BB0000000000000000000000000000000000025
+:101BC0000000000000000000000000000000000015
+:101BD0000000000000000000000000000000000005
+:101BE00000000000000000000000000000000000F5
+:101BF00000000000000000000000000000000000E5
+:101C000000000000000000000000000000000000D4
+:101C100000000000000000000000000000000000C4
+:101C200000000000000000000000000000000000B4
+:101C300000000000000000000000000000000000A4
+:101C40000000000000000000000000000000000094
+:101C50000000000000000000000000000000000084
+:101C60000000000000000000000000000000000074
+:101C70000000000000000000000000000000000064
+:101C80000000000000000000000000000000000054
+:101C90000000000000000000000000000000000044
+:101CA0000000000000000000000000000000000034
+:101CB0000000000000000000000000000000000024
+:101CC0000000000000000000000000000000000014
+:101CD0000000000000000000000000000000000004
+:101CE00000000000000000000000000000000000F4
+:101CF00000000000000000000000000000000000E4
+:101D000000000000000000000000000000000000D3
+:101D100000000000000000000000000000000000C3
+:101D200000000000000000000000000000000000B3
+:101D300000000000000000000000000000000000A3
+:101D40000000000000000000000000000000000093
+:101D50000000000000000000000000000000000083
+:101D60000000000000000000000000000000000073
+:101D70000000000000000000000000000000000063
+:101D80000000000000000000000000000000000053
+:101D90000000000000000000000000000000000043
+:101DA0000000000000000000000000000000000033
+:101DB0000000000000000000000000000000000023
+:101DC0000000000000000000000000000000000013
+:101DD0000000000000000000000000000000000003
+:101DE00000000000000000000000000000000000F3
+:101DF00000000000000000000000000000000000E3
+:101E000000000000000000000000000000000000D2
+:101E100000000000000000000000000000000000C2
+:101E200000000000000000000000000000000000B2
+:101E300000000000000000000000000000000000A2
+:101E40000000000000000000000000000000000092
+:101E50000000000000000000000000000000000082
+:101E60000000000000000000000000000000000072
+:101E70000000000000000000000000000000000062
+:101E80000000000000000000000000000000000052
+:101E90000000000000000000000000000000000042
+:101EA0000000000000000000000000000000000032
+:101EB0000000000000000000000000000000000022
+:101EC0000000000000000000000000000000000012
+:101ED0000000000000000000000000000000000002
+:101EE00000000000000000000000000000000000F2
+:101EF00000000000000000000000000000000000E2
+:101F000000000000000000000000000000000000D1
+:101F100000000000000000000000000000000000C1
+:101F200000000000000000000000000000000000B1
+:101F300000000000000000000000000000000000A1
+:101F40000000000000000000000000000000000091
+:101F50000000000000000000000000000000000081
+:101F60000000000000000000000000000000000071
+:101F70000000000000000000000000000000000061
+:101F80000000000000000000000000000000000051
+:101F90000000000000000000000000000000000041
+:101FA0000000000000000000000000000000000031
+:101FB0000000000000000000000000000000000021
+:101FC0000000000000000000000000000000000011
+:101FD0000000000000000000000000000000000001
+:101FE00000000000000000000000000000000000F1
+:101FF00000000000000000000000000000000000E1
+:1020000000000000000000000000000000000000D0
+:1020100000000000000000000000000000000000C0
+:1020200000000000000000000000000000000000B0
+:1020300000000000000000000000000000000000A0
+:102040000000000000000000000000000000000090
+:102050000000000000000000000000000000000080
+:102060000000000000000000000000000000000070
+:102070000000000000000000000000000000000060
+:102080000000000000000000000000000000000050
+:102090000000000000000000000000000000000040
+:1020A0000000000000000000000000000000000030
+:1020B0000000000000000000000000000000000020
+:1020C0000000000000000000000000000000000010
+:1020D0000000000000000000000000000000000000
+:1020E00000000000000000000000000000000000F0
+:1020F00000000000000000000000000000000000E0
+:1021000000000000000000000000000000000000CF
+:1021100000000000000000000000000000000000BF
+:1021200000000000000000000000000000000000AF
+:10213000000000000000000000000000000000009F
+:10214000000000000000000000000000000000008F
+:10215000000000000000000000000000000000007F
+:10216000000000000000000000000000000000006F
+:10217000000000000000000000000000000000005F
+:10218000000000000000000000000000000000004F
+:10219000000000000000000000000000000000003F
+:1021A000000000000000000000000000000000002F
+:1021B000000000000000000000000000000000001F
+:1021C000000000000000000000000000000000000F
+:1021D00000000000000000000000000000000000FF
+:1021E00000000000000000000000000000000000EF
+:1021F00000000000000000000000000000000000DF
+:1022000000000000000000000000000000000000CE
+:1022100000000000000000000000000000000000BE
+:1022200000000000000000000000000000000000AE
+:10223000000000000000000000000000000000009E
+:10224000000000000000000000000000000000008E
+:10225000000000000000000000000000000000007E
+:10226000000000000000000000000000000000006E
+:10227000000000000000000000000000000000005E
+:10228000000000000000000000000000000000004E
+:10229000000000000000000000000000000000003E
+:1022A000000000000000000000000000000000002E
+:1022B000000000000000000000000000000000001E
+:1022C000000000000000000000000000000000000E
+:1022D00000000000000000000000000000000000FE
+:1022E00000000000000000000000000000000000EE
+:1022F00000000000000000000000000000000000DE
+:1023000000000000000000000000000000000000CD
+:1023100000000000000000000000000000000000BD
+:1023200000000000000000000000000000000000AD
+:10233000000000000000000000000000000000009D
+:10234000000000000000000000000000000000008D
+:10235000000000000000000000000000000000007D
+:10236000000000000000000000000000000000006D
+:10237000000000000000000000000000000000005D
+:10238000000000000000000000000000000000004D
+:10239000000000000000000000000000000000003D
+:1023A000000000000000000000000000000000002D
+:1023B000000000000000000000000000000000001D
+:1023C000000000000000000000000000000000000D
+:1023D00000000000000000000000000000000000FD
+:1023E00000000000000000000000000000000000ED
+:1023F00000000000000000000000000000000000DD
+:1024000000000000000000000000000000000000CC
+:1024100000000000000000000000000000000000BC
+:1024200000000000000000000000000000000000AC
+:10243000000000000000000000000000000000009C
+:10244000000000000000000000000000000000008C
+:10245000000000000000000000000000000000007C
+:10246000000000000000000000000000000000006C
+:10247000000000000000000000000000000000005C
+:10248000000000000000000000000000000000004C
+:10249000000000000000000000000000000000003C
+:1024A000000000000000000000000000000000002C
+:1024B000000000000000000000000000000000001C
+:1024C000000000000000000000000000000000000C
+:1024D00000000000000000000000000000000000FC
+:1024E00000000000000000000000000000000000EC
+:1024F00000000000000000000000000000000000DC
+:1025000000000000000000000000000000000000CB
+:1025100000000000000000000000000000000000BB
+:1025200000000000000000000000000000000000AB
+:10253000000000000000000000000000000000009B
+:10254000000000000000000000000000000000008B
+:10255000000000000000000000000000000000007B
+:10256000000000000000000000000000000000006B
+:10257000000000000000000000000000000000005B
+:10258000000000000000000000000000000000004B
+:10259000000000000000000000000000000000003B
+:1025A000000000000000000000000000000000002B
+:1025B000000000000000000000000000000000001B
+:1025C000000000000000000000000000000000000B
+:1025D00000000000000000000000000000000000FB
+:1025E00000000000000000000000000000000000EB
+:1025F00000000000000000000000000000000000DB
+:1026000000000000000000000000000000000000CA
+:1026100000000000000000000000000000000000BA
+:1026200000000000000000000000000000000000AA
+:10263000000000000000000000000000000000009A
+:10264000000000000000000000000000000000008A
+:10265000000000000000000000000000000000007A
+:10266000000000000000000000000000000000006A
+:10267000000000000000000000000000000000005A
+:10268000000000000000000000000000000000004A
+:10269000000000000000000000000000000000003A
+:1026A000000000000000000000000000000000002A
+:1026B000000000000000000000000000000000001A
+:1026C000000000000000000000000000000000000A
+:1026D00000000000000000000000000000000000FA
+:1026E00000000000000000000000000000000000EA
+:1026F00000000000000000000000000000000000DA
+:1027000000000000000000000000000000000000C9
+:1027100000000000000000000000000000000000B9
+:1027200000000000000000000000000000000000A9
+:102730000000000000000000000000000000000099
+:102740000000000000000000000000000000000089
+:102750000000000000000000000000000000000079
+:102760000000000000000000000000000000000069
+:102770000000000000000000000000000000000059
+:102780000000000000000000000000000000000049
+:102790000000000000000000000000000000000039
+:1027A0000000000000000000000000000000000029
+:1027B0000000000000000000000000000000000019
+:1027C0000000000000000000000000000000000009
+:1027D00000000000000000000000000000000000F9
+:1027E00000000000000000000000000000000000E9
+:1027F00000000000000000000000000000000000D9
+:1028000000000000000000000000000000000000C8
+:1028100000000000000000000000000000000000B8
+:1028200000000000000000000000000000000000A8
+:102830000000000000000000000000000000000098
+:102840000000000000000000000000000000000088
+:102850000000000000000000000000000000000078
+:102860000000000000000000000000000000000068
+:102870000000000000000000000000000000000058
+:102880000000000000000000000000000000000048
+:102890000000000000000000000000000000000038
+:1028A0000000000000000000000000000000000028
+:1028B0000000000000000000000000000000000018
+:1028C0000000000000000000000000000000000008
+:1028D00000000000000000000000000000000000F8
+:1028E00000000000000000000000000000000000E8
+:1028F00000000000000000000000000000000000D8
+:1029000000000000000000000000000000000000C7
+:1029100000000000000000000000000000000000B7
+:1029200000000000000000000000000000000000A7
+:102930000000000000000000000000000000000097
+:102940000000000000000000000000000000000087
+:102950000000000000000000000000000000000077
+:102960000000000000000000000000000000000067
+:102970000000000000000000000000000000000057
+:102980000000000000000000000000000000000047
+:102990000000000000000000000000000000000037
+:1029A0000000000000000000000000000000000027
+:1029B0000000000000000000000000000000000017
+:1029C0000000000000000000000000000000000007
+:1029D00000000000000000000000000000000000F7
+:1029E00000000000000000000000000000000000E7
+:1029F00000000000000000000000000000000000D7
+:102A000000000000000000000000000000000000C6
+:102A100000000000000000000000000000000000B6
+:102A200000000000000000000000000000000000A6
+:102A30000000000000000000000000000000000096
+:102A40000000000000000000000000000000000086
+:102A50000000000000000000000000000000000076
+:102A60000000000000000000000000000000000066
+:102A70000000000000000000000000000000000056
+:102A80000000000000000000000000000000000046
+:102A90000000000000000000000000000000000036
+:102AA0000000000000000000000000000000000026
+:102AB0000000000000000000000000000000000016
+:102AC0000000000000000000000000000000000006
+:102AD00000000000000000000000000000000000F6
+:102AE00000000000000000000000000000000000E6
+:102AF00000000000000000000000000000000000D6
+:102B000000000000000000000000000000000000C5
+:102B100000000000000000000000000000000000B5
+:102B200000000000000000000000000000000000A5
+:102B30000000000000000000000000000000000095
+:102B40000000000000000000000000000000000085
+:102B50000000000000000000000000000000000075
+:102B60000000000000000000000000000000000065
+:102B70000000000000000000000000000000000055
+:102B80000000000000000000000000000000000045
+:102B90000000000000000000000000000000000035
+:102BA0000000000000000000000000000000000025
+:102BB0000000000000000000000000000000000015
+:102BC0000000000000000000000000000000000005
+:102BD00000000000000000000000000000000000F5
+:102BE00000000000000000000000000000000000E5
+:102BF00000000000000000000000000000000000D5
+:102C000000000000000000000000000000000000C4
+:102C100000000000000000000000000000000000B4
+:102C200000000000000000000000000000000000A4
+:102C30000000000000000000000000000000000094
+:102C40000000000000000000000000000000000084
+:102C50000000000000000000000000000000000074
+:102C60000000000000000000000000000000000064
+:102C70000000000000000000000000000000000054
+:102C80000000000000000000000000000000000044
+:102C90000000000000000000000000000000000034
+:102CA0000000000000000000000000000000000024
+:102CB0000000000000000000000000000000000014
+:102CC0000000000000000000000000000000000004
+:102CD00000000000000000000000000000000000F4
+:102CE00000000000000000000000000000000000E4
+:102CF00000000000000000000000000000000000D4
+:102D000000000000000000000000000000000000C3
+:102D100000000000000000000000000000000000B3
+:102D200000000000000000000000000000000000A3
+:102D30000000000000000000000000000000000093
+:102D40000000000000000000000000000000000083
+:102D50000000000000000000000000000000000073
+:102D60000000000000000000000000000000000063
+:102D70000000000000000000000000000000000053
+:102D80000000000000000000000000000000000043
+:102D90000000000000000000000000000000000033
+:102DA0000000000000000000000000000000000023
+:102DB0000000000000000000000000000000000013
+:102DC0000000000000000000000000000000000003
+:102DD00000000000000000000000000000000000F3
+:102DE00000000000000000000000000000000000E3
+:102DF00000000000000000000000000000000000D3
+:102E000000000000000000000000000000000000C2
+:102E100000000000000000000000000000000000B2
+:102E200000000000000000000000000000000000A2
+:102E30000000000000000000000000000000000092
+:102E40000000000000000000000000000000000082
+:102E50000000000000000000000000000000000072
+:102E60000000000000000000000000000000000062
+:102E70000000000000000000000000000000000052
+:102E80000000000000000000000000000000000042
+:102E90000000000000000000000000000000000032
+:102EA0000000000000000000000000000000000022
+:102EB0000000000000000000000000000000000012
+:102EC0000000000000000000000000000000000002
+:102ED00000000000000000000000000000000000F2
+:102EE00000000000000000000000000000000000E2
+:102EF00000000000000000000000000000000000D2
+:102F000000000000000000000000000000000000C1
+:102F100000000000000000000000000000000000B1
+:102F200000000000000000000000000000000000A1
+:102F30000000000000000000000000000000000091
+:102F40000000000000000000000000000000000081
+:102F50000000000000000000000000000000000071
+:102F60000000000000000000000000000000000061
+:102F70000000000000000000000000000000000051
+:102F80000000000000000000000000000000000041
+:102F90000000000000000000000000000000000031
+:102FA0000000000000000000000000000000000021
+:102FB0000000000000000000000000000000000011
+:102FC0000000000000000000000000000000000001
+:102FD00000000000000000000000000000000000F1
+:102FE00000000000000000000000000000000000E1
+:102FF00000000000000000000000000000000000D1
+:1030000000000000000000000000000000000000C0
+:1030100000000000000000000000000000000000B0
+:1030200000000000000000000000000000000000A0
+:103030000000000000000000000000000000000090
+:103040000000000000000000000000000000000080
+:103050000000000000000000000000000000000070
+:103060000000000000000000000000000000000060
+:103070000000000000000000000000000000000050
+:103080000000000000000000000000000000000040
+:103090000000000000000000000000000000000030
+:1030A0000000000000000000000000000000000020
+:1030B0000000000000000000000000000000000010
+:1030C0000000000000000000000000000000000000
+:1030D00000000000000000000000000000000000F0
+:1030E00000000000000000000000000000000000E0
+:1030F00000000000000000000000000000000000D0
+:1031000000000000000000000000000000000000BF
+:1031100000000000000000000000000000000000AF
+:10312000000000000000000000000000000000009F
+:10313000000000000000000000000000000000008F
+:10314000000000000000000000000000000000007F
+:10315000000000000000000000000000000000006F
+:10316000000000000000000000000000000000005F
+:10317000000000000000000000000000000000004F
+:10318000000000000000000000000000000000003F
+:10319000000000000000000000000000000000002F
+:1031A000000000000000000000000000000000001F
+:1031B000000000000000000000000000000000000F
+:1031C00000000000000000000000000000000000FF
+:1031D00000000000000000000000000000000000EF
+:1031E00000000000000000000000000000000000DF
+:1031F00000000000000000000000000000000000CF
+:1032000000000000000000000000000000000000BE
+:1032100000000000000000000000000000000000AE
+:10322000000000000000000000000000000000009E
+:10323000000000000000000000000000000000008E
+:10324000000000000000000000000000000000007E
+:10325000000000000000000000000000000000006E
+:10326000000000000000000000000000000000005E
+:10327000000000000000000000000000000000004E
+:10328000000000000000000000000000000000003E
+:10329000000000000000000000000000000000002E
+:1032A000000000000000000000000000000000001E
+:1032B000000000000000000000000000000000000E
+:1032C00000000000000000000000000000000000FE
+:1032D00000000000000000000000000000000000EE
+:1032E00000000000000000000000000000000000DE
+:1032F00000000000000000000000000000000000CE
+:1033000000000000000000000000000000000000BD
+:1033100000000000000000000000000000000000AD
+:10332000000000000000000000000000000000009D
+:10333000000000000000000000000000000000008D
+:10334000000000000000000000000000000000007D
+:10335000000000000000000000000000000000006D
+:10336000000000000000000000000000000000005D
+:10337000000000000000000000000000000000004D
+:10338000000000000000000000000000000000003D
+:10339000000000000000000000000000000000002D
+:1033A000000000000000000000000000000000001D
+:1033B000000000000000000000000000000000000D
+:1033C00000000000000000000000000000000000FD
+:1033D00000000000000000000000000000000000ED
+:1033E00000000000000000000000000000000000DD
+:1033F00000000000000000000000000000000000CD
+:1034000000000000000000000000000000000000BC
+:1034100000000000000000000000000000000000AC
+:10342000000000000000000000000000000000009C
+:10343000000000000000000000000000000000008C
+:10344000000000000000000000000000000000007C
+:10345000000000000000000000000000000000006C
+:10346000000000000000000000000000000000005C
+:10347000000000000000000000000000000000004C
+:10348000000000000000000000000000000000003C
+:10349000000000000000000000000000000000002C
+:1034A000000000000000000000000000000000001C
+:1034B000000000000000000000000000000000000C
+:1034C00000000000000000000000000000000000FC
+:1034D00000000000000000000000000000000000EC
+:1034E00000000000000000000000000000000000DC
+:1034F00000000000000000000000000000000000CC
+:1035000000000000000000000000000000000000BB
+:1035100000000000000000000000000000000000AB
+:10352000000000000000000000000000000000009B
+:10353000000000000000000000000000000000008B
+:10354000000000000000000000000000000000007B
+:10355000000000000000000000000000000000006B
+:10356000000000000000000000000000000000005B
+:10357000000000000000000000000000000000004B
+:10358000000000000000000000000000000000003B
+:10359000000000000000000000000000000000002B
+:1035A000000000000000000000000000000000001B
+:1035B000000000000000000000000000000000000B
+:1035C00000000000000000000000000000000000FB
+:1035D00000000000000000000000000000000000EB
+:1035E00000000000000000000000000000000000DB
+:1035F00000000000000000000000000000000000CB
+:1036000000000000000000000000000000000000BA
+:1036100000000000000000000000000000000000AA
+:10362000000000000000000000000000000000009A
+:10363000000000000000000000000000000000008A
+:10364000000000000000000000000000000000007A
+:10365000000000000000000000000000000000006A
+:10366000000000000000000000000000000000005A
+:10367000000000000000000000000000000000004A
+:10368000000000000000000000000000000000003A
+:10369000000000000000000000000000000000002A
+:1036A000000000000000000000000000000000001A
+:1036B000000000000000000000000000000000000A
+:1036C00000000000000000000000000000000000FA
+:1036D00000000000000000000000000000000000EA
+:1036E00000000000000000000000000000000000DA
+:1036F00000000000000000000000000000000000CA
+:1037000000000000000000000000000000000000B9
+:1037100000000000000000000000000000000000A9
+:103720000000000000000000000000000000000099
+:103730000000000000000000000000000000000089
+:103740000000000000000000000000000000000079
+:103750000000000000000000000000000000000069
+:103760000000000000000000000000000000000059
+:103770000000000000000000000000000000000049
+:103780000000000000000000000000000000000039
+:103790000000000000000000000000000000000029
+:1037A0000000000000000000000000000000000019
+:1037B0000000000000000000000000000000000009
+:1037C00000000000000000000000000000000000F9
+:1037D00000000000000000000000000000000000E9
+:1037E00000000000000000000000000000000000D9
+:1037F00000000000000000000000000000000000C9
+:1038000000000000000000000000000000000000B8
+:1038100000000000000000000000000000000000A8
+:103820000000000000000000000000000000000098
+:103830000000000000000000000000000000000088
+:103840000000000000000000000000000000000078
+:103850000000000000000000000000000000000068
+:103860000000000000000000000000000000000058
+:103870000000000000000000000000000000000048
+:103880000000000000000000000000000000000038
+:103890000000000000000000000000000000000028
+:1038A0000000000000000000000000000000000018
+:1038B0000000000000000000000000000000000008
+:1038C00000000000000000000000000000000000F8
+:1038D00000000000000000000000000000000000E8
+:1038E00000000000000000000000000000000000D8
+:1038F00000000000000000000000000000000000C8
+:1039000000000000000000000000000000000000B7
+:1039100000000000000000000000000000000000A7
+:103920000000000000000000000000000000000097
+:103930000000000000000000000000000000000087
+:103940000000000000000000000000000000000077
+:103950000000000000000000000000000000000067
+:103960000000000000000000000000000000000057
+:103970000000000000000000000000000000000047
+:103980000000000000000000000000000000000037
+:103990000000000000000000000000000000000027
+:1039A0000000000000000000000000000000000017
+:1039B0000000000000000000000000000000000007
+:1039C00000000000000000000000000000000000F7
+:1039D00000000000000000000000000000000000E7
+:1039E00000000000000000000000000000000000D7
+:1039F00000000000000000000000000000000000C7
+:103A000000000000000000000000000000000000B6
+:103A100000000000000000000000000000000000A6
+:103A20000000000000000000000000000000000096
+:103A30000000000000000000000000000000000086
+:103A40000000000000000000000000000000000076
+:103A50000000000000000000000000000000000066
+:103A60000000000000000000000000000000000056
+:103A70000000000000000000000000000000000046
+:103A80000000000000000000000000000000000036
+:103A90000000000000000000000000000000000026
+:103AA0000000000000000000000000000000000016
+:103AB0000000000000000000000000000000000006
+:103AC00000000000000000000000000000000000F6
+:103AD00000000000000000000000000000000000E6
+:103AE00000000000000000000000000000000000D6
+:103AF00000000000000000000000000000000000C6
+:103B000000000000000000000000000000000000B5
+:103B100000000000000000000000000000000000A5
+:103B20000000000000000000000000000000000095
+:103B30000000000000000000000000000000000085
+:103B40000000000000000000000000000000000075
+:103B50000000000000000000000000000000000065
+:103B60000000000000000000000000000000000055
+:103B70000000000000000000000000000000000045
+:103B80000000000000000000000000000000000035
+:103B90000000000000000000000000000000000025
+:103BA0000000000000000000000000000000000015
+:103BB0000000000000000000000000000000000005
+:103BC00000000000000000000000000000000000F5
+:103BD00000000000000000000000000000000000E5
+:103BE00000000000000000000000000000000000D5
+:103BF00000000000000000000000000000000000C5
+:103C000000000000000000000000000000000000B4
+:103C100000000000000000000000000000000000A4
+:103C20000000000000000000000000000000000094
+:103C30000000000000000000000000000000000084
+:103C40000000000000000000000000000000000074
+:103C50000000000000000000000000000000000064
+:103C60000000000000000000000000000000000054
+:103C70000000000000000000000000000000000044
+:103C80000000000000000000000000000000000034
+:103C90000000000000000000000000000000000024
+:103CA0000000000000000000000000000000000014
+:103CB0000000000000000000000000000000000004
+:103CC00000000000000000000000000000000000F4
+:103CD00000000000000000000000000000000000E4
+:103CE00000000000000000000000000000000000D4
+:103CF00000000000000000000000000000000000C4
+:103D000000000000000000000000000000000000B3
+:103D100000000000000000000000000000000000A3
+:103D20000000000000000000000000000000000093
+:103D30000000000000000000000000000000000083
+:103D40000000000000000000000000000000000073
+:103D50000000000000000000000000000000000063
+:103D60000000000000000000000000000000000053
+:103D70000000000000000000000000000000000043
+:103D80000000000000000000000000000000000033
+:103D90000000000000000000000000000000000023
+:103DA0000000000000000000000000000000000013
+:103DB0000000000000000000000000000000000003
+:103DC00000000000000000000000000000000000F3
+:103DD00000000000000000000000000000000000E3
+:103DE00000000000000000000000000000000000D3
+:103DF00000000000000000000000000000000000C3
+:103E000000000000000000000000000000000000B2
+:103E100000000000000000000000000000000000A2
+:103E20000000000000000000000000000000000092
+:103E30000000000000000000000000000000000082
+:103E40000000000000000000000000000000000072
+:103E50000000000000000000000000000000000062
+:103E60000000000000000000000000000000000052
+:103E70000000000000000000000000000000000042
+:103E80000000000000000000000000000000000032
+:103E90000000000000000000000000000000000022
+:103EA0000000000000000000000000000000000012
+:103EB0000000000000000000000000000000000002
+:103EC00000000000000000000000000000000000F2
+:103ED00000000000000000000000000000000000E2
+:103EE00000000000000000000000000000000000D2
+:103EF00000000000000000000000000000000000C2
+:103F000000000000000000000000000000000000B1
+:103F100000000000000000000000000000000000A1
+:103F20000000000000000000000000000000000091
+:103F30000000000000000000000000000000000081
+:103F40000000000000000000000000000000000071
+:103F50000000000000000000000000000000000061
+:103F60000000000000000000000000000000000051
+:103F70000000000000000000000000000000000041
+:103F80000000000000000000000000000000000031
+:103F90000000000000000000000000000000000021
+:103FA0000000000000000000000000000000000011
+:103FB0000000000000000000000000000000000001
+:103FC00000000000000000000000000000000000F1
+:103FD00000000000000000000000000000000000E1
+:103FE00000000000000000000000000000000000D1
+:103FF00000000000000000000000000000000000C1
+:1040000000000000000000000000000000000000B0
+:1040100000000000000000000000000000000000A0
+:104020000000000000000000000000000000000090
+:104030000000000000000000000000000000000080
+:104040000000000000000000000000000000000070
+:104050000000000000000000000000000000000060
+:104060000000000000000000000000000000000050
+:104070000000000000000000000000000000000040
+:104080000000000000000000000000000000000030
+:104090000000000000000000000000000000000020
+:1040A0000000000000000000000000000000000010
+:1040B0000000000000000000000000000000000000
+:1040C00000000000000000000000000000000000F0
+:1040D00000000000000000000000000000000000E0
+:1040E00000000000000000000000000000000000D0
+:1040F00000000000000000000000000000000000C0
+:1041000000000000000000000000000000000000AF
+:10411000000000000000000000000000000000009F
+:10412000000000000000000000000000000000008F
+:10413000000000000000000000000000000000007F
+:10414000000000000000000000000000000000006F
+:10415000000000000000000000000000000000005F
+:10416000000000000000000000000000000000004F
+:10417000000000000000000000000000000000003F
+:10418000000000000000000000000000000000002F
+:10419000000000000000000000000000000000001F
+:1041A000000000000000000000000000000000000F
+:1041B00000000000000000000000000000000000FF
+:1041C00000000000000000000000000000000000EF
+:1041D00000000000000000000000000000000000DF
+:1041E00000000000000000000000000000000000CF
+:1041F00000000000000000000000000000000000BF
+:1042000000000000000000000000000000000000AE
+:10421000000000000000000000000000000000009E
+:10422000000000000000000000000000000000008E
+:10423000000000000000000000000000000000007E
+:10424000000000000000000000000000000000006E
+:10425000000000000000000000000000000000005E
+:10426000000000000000000000000000000000004E
+:10427000000000000000000000000000000000003E
+:10428000000000000000000000000000000000002E
+:10429000000000000000000000000000000000001E
+:1042A000000000000000000000000000000000000E
+:1042B00000000000000000000000000000000000FE
+:1042C00000000000000000000000000000000000EE
+:1042D00000000000000000000000000000000000DE
+:1042E00000000000000000000000000000000000CE
+:1042F00000000000000000000000000000000000BE
+:1043000000000000000000000000000000000000AD
+:10431000000000000000000000000000000000009D
+:10432000000000000000000000000000000000008D
+:10433000000000000000000000000000000000007D
+:10434000000000000000000000000000000000006D
+:10435000000000000000000000000000000000005D
+:10436000000000000000000000000000000000004D
+:10437000000000000000000000000000000000003D
+:10438000000000000000000000000000000000002D
+:10439000000000000000000000000000000000001D
+:1043A000000000000000000000000000000000000D
+:1043B00000000000000000000000000000000000FD
+:1043C00000000000000000000000000000000000ED
+:1043D00000000000000000000000000000000000DD
+:1043E00000000000000000000000000000000000CD
+:1043F00000000000000000000000000000000000BD
+:1044000000000000000000000000000000000000AC
+:10441000000000000000000000000000000000009C
+:10442000000000000000000000000000000000008C
+:10443000000000000000000000000000000000007C
+:10444000000000000000000000000000000000006C
+:10445000000000000000000000000000000000005C
+:10446000000000000000000000000000000000004C
+:10447000000000000000000000000000000000003C
+:10448000000000000000000000000000000000002C
+:10449000000000000000000000000000000000001C
+:1044A000000000000000000000000000000000000C
+:1044B00000000000000000000000000000000000FC
+:1044C00000000000000000000000000000000000EC
+:1044D00000000000000000000000000000000000DC
+:1044E00000000000000000000000000000000000CC
+:1044F00000000000000000000000000000000000BC
+:1045000000000000000000000000000000000000AB
+:10451000000000000000000000000000000000009B
+:10452000000000000000000000000000000000008B
+:10453000000000000000000000000000000000007B
+:10454000000000000000000000000000000000006B
+:10455000000000000000000000000000000000005B
+:10456000000000000000000000000000000000004B
+:10457000000000000000000000000000000000003B
+:10458000000000000000000000000000000000002B
+:10459000000000000000000000000000000000001B
+:1045A000000000000000000000000000000000000B
+:1045B00000000000000000000000000000000000FB
+:1045C00000000000000000000000000000000000EB
+:1045D00000000000000000000000000000000000DB
+:1045E00000000000000000000000000000000000CB
+:1045F00000000000000000000000000000000000BB
+:1046000000000000000000000000000000000000AA
+:10461000000000000000000000000000000000009A
+:10462000000000000000000000000000000000008A
+:10463000000000000000000000000000000000007A
+:10464000000000000000000000000000000000006A
+:10465000000000000000000000000000000000005A
+:10466000000000000000000000000000000000004A
+:10467000000000000000000000000000000000003A
+:10468000000000000000000000000000000000002A
+:10469000000000000000000000000000000000001A
+:1046A000000000000000000000000000000000000A
+:1046B00000000000000000000000000000000000FA
+:1046C00000000000000000000000000000000000EA
+:1046D00000000000000000000000000000000000DA
+:1046E00000000000000000000000000000000000CA
+:1046F00000000000000000000000000000000000BA
+:1047000000000000000000000000000000000000A9
+:104710000000000000000000000000000000000099
+:104720000000000000000000000000000000000089
+:104730000000000000000000000000000000000079
+:104740000000000000000000000000000000000069
+:104750000000000000000000000000000000000059
+:104760000000000000000000000000000000000049
+:104770000000000000000000000000000000000039
+:104780000000000000000000000000000000000029
+:104790000000000000000000000000000000000019
+:1047A0000000000000000000000000000000000009
+:1047B00000000000000000000000000000000000F9
+:1047C00000000000000000000000000000000000E9
+:1047D00000000000000000000000000000000000D9
+:1047E00000000000000000000000000000000000C9
+:1047F00000000000000000000000000000000000B9
+:1048000000000000000000000000000000000000A8
+:104810000000000000000000000000000000000098
+:104820000000000000000000000000000000000088
+:104830000000000000000000000000000000000078
+:104840000000000000000000000000000000000068
+:104850000000000000000000000000000000000058
+:104860000000000000000000000000000000000048
+:104870000000000000000000000000000000000038
+:104880000000000000000000000000000000000028
+:104890000000000000000000000000000000000018
+:1048A0000000000000000000000000000000000008
+:1048B00000000000000000000000000000000000F8
+:1048C00000000000000000000000000000000000E8
+:1048D00000000000000000000000000000000000D8
+:1048E00000000000000000000000000000000000C8
+:1048F00000000000000000000000000000000000B8
+:1049000000000000000000000000000000000000A7
+:104910000000000000000000000000000000000097
+:104920000000000000000000000000000000000087
+:104930000000000000000000000000000000000077
+:104940000000000000000000000000000000000067
+:104950000000000000000000000000000000000057
+:104960000000000000000000000000000000000047
+:104970000000000000000000000000000000000037
+:104980000000000000000000000000000000000027
+:104990000000000000000000000000000000000017
+:1049A0000000000000000000000000000000000007
+:1049B00000000000000000000000000000000000F7
+:1049C00000000000000000000000000000000000E7
+:1049D00000000000000000000000000000000000D7
+:1049E00000000000000000000000000000000000C7
+:1049F00000000000000000000000000000000000B7
+:104A000000000000000000000000000000000000A6
+:104A10000000000000000000000000000000000096
+:104A20000000000000000000000000000000000086
+:104A30000000000000000000000000000000000076
+:104A40000000000000000000000000000000000066
+:104A50000000000000000000000000000000000056
+:104A60000000000000000000000000000000000046
+:104A70000000000000000000000000000000000036
+:104A80000000000000000000000000000000000026
+:104A90000000000000000000000000000000000016
+:104AA0000000000000000000000000000000000006
+:104AB00000000000000000000000000000000000F6
+:104AC00000000000000000000000000000000000E6
+:104AD00000000000000000000000000000000000D6
+:104AE00000000000000000000000000000000000C6
+:104AF00000000000000000000000000000000000B6
+:104B000000000000000000000000000000000000A5
+:104B10000000000000000000000000000000000095
+:104B20000000000000000000000000000000000085
+:104B30000000000000000000000000000000000075
+:104B40000000000000000000000000000000000065
+:104B50000000000000000000000000000000000055
+:104B60000000000000000000000000000000000045
+:104B70000000000000000000000000000000000035
+:104B80000000000000000000000000000000000025
+:104B90000000000000000000000000000000000015
+:104BA0000000000000000000000000000000000005
+:104BB00000000000000000000000000000000000F5
+:104BC00000000000000000000000000000000000E5
+:104BD00000000000000000000000000000000000D5
+:104BE00000000000000000000000000000000000C5
+:104BF00000000000000000000000000000000000B5
+:104C000000000000000000000000000000000000A4
+:104C10000000000000000000000000000000000094
+:104C20000000000000000000000000000000000084
+:104C30000000000000000000000000000000000074
+:104C40000000000000000000000000000000000064
+:104C50000000000000000000000000000000000054
+:104C60000000000000000000000000000000000044
+:104C70000000000000000000000000000000000034
+:104C80000000000000000000000000000000000024
+:104C90000000000000000000000000000000000014
+:104CA0000000000000000000000000000000000004
+:104CB00000000000000000000000000000000000F4
+:104CC00000000000000000000000000000000000E4
+:104CD00000000000000000000000000000000000D4
+:104CE00000000000000000000000000000000000C4
+:104CF00000000000000000000000000000000000B4
+:104D000000000000000000000000000000000000A3
+:104D10000000000000000000000000000000000093
+:104D20000000000000000000000000000000000083
+:104D30000000000000000000000000000000000073
+:104D40000000000000000000000000000000000063
+:104D50000000000000000000000000000000000053
+:104D60000000000000000000000000000000000043
+:104D70000000000000000000000000000000000033
+:104D80000000000000000000000000000000000023
+:104D90000000000000000000000000000000000013
+:104DA0000000000000000000000000000000000003
+:104DB00000000000000000000000000000000000F3
+:104DC00000000000000000000000000000000000E3
+:104DD00000000000000000000000000000000000D3
+:104DE00000000000000000000000000000000000C3
+:104DF00000000000000000000000000000000000B3
+:104E000000000000000000000000000000000000A2
+:104E10000000000000000000000000000000000092
+:104E20000000000000000000000000000000000082
+:104E30000000000000000000000000000000000072
+:104E40000000000000000000000000000000000062
+:104E50000000000000000000000000000000000052
+:104E60000000000000000000000000000000000042
+:104E70000000000000000000000000000000000032
+:104E80000000000000000000000000000000000022
+:104E90000000000000000000000000000000000012
+:104EA0000000000000000000000000000000000002
+:104EB00000000000000000000000000000000000F2
+:104EC00000000000000000000000000000000000E2
+:104ED00000000000000000000000000000000000D2
+:104EE00000000000000000000000000000000000C2
+:104EF00000000000000000000000000000000000B2
+:104F000000000000000000000000000000000000A1
+:104F10000000000000000000000000000000000091
+:104F20000000000000000000000000000000000081
+:104F30000000000000000000000000000000000071
+:104F40000000000000000000000000000000000061
+:104F50000000000000000000000000000000000051
+:104F60000000000000000000000000000000000041
+:104F70000000000000000000000000000000000031
+:104F80000000000000000000000000000000000021
+:104F90000000000000000000000000000000000011
+:104FA0000000000000000000000000000000000001
+:104FB00000000000000000000000000000000000F1
+:104FC00000000000000000000000000000000000E1
+:104FD00000000000000000000000000000000000D1
+:104FE00000000000000000000000000000000000C1
+:104FF00000000000000000000000000000000000B1
+:1050000000000000000000000000000000000000A0
+:105010000000000000000000000000000000000090
+:105020000000000000000000000000000000000080
+:105030000000000000000000000000000000000070
+:105040000000000000000000000000000000000060
+:105050000000000000000000000000000000000050
+:105060000000000000000000000000000000000040
+:105070000000000000000000000000000000000030
+:105080000000000000000000000000000000000020
+:105090000000000000000000000000000000000010
+:1050A0000000000000000000000000000000000000
+:1050B00000000000000000000000000000000000F0
+:1050C00000000000000000000000000000000000E0
+:1050D00000000000000000000000000000000000D0
+:1050E00000000000000000000000000000000000C0
+:1050F00000000000000000000000000000000000B0
+:10510000000000000000000000000000000000009F
+:10511000000000000000000000000000000000008F
+:10512000000000000000000000000000000000007F
+:10513000000000000000000000000000000000006F
+:10514000000000000000000000000000000000005F
+:10515000000000000000000000000000000000004F
+:10516000000000000000000000000000000000003F
+:10517000000000000000000000000000000000002F
+:10518000000000000000000000000000000000001F
+:10519000000000000000000000000000000000000F
+:1051A00000000000000000000000000000000000FF
+:1051B00000000000000000000000000000000000EF
+:1051C00000000000000000000000000000000000DF
+:1051D00000000000000000000000000000000000CF
+:1051E00000000000000000000000000000000000BF
+:1051F00000000000000000000000000000000000AF
+:10520000000000000000000000000000000000009E
+:10521000000000000000000000000000000000008E
+:10522000000000000000000000000000000000007E
+:10523000000000000000000000000000000000006E
+:10524000000000000000000000000000000000005E
+:10525000000000000000000000000000000000004E
+:10526000000000000000000000000000000000003E
+:10527000000000000000000000000000000000002E
+:10528000000000000000000000000000000000001E
+:10529000000000000000000000000000000000000E
+:1052A00000000000000000000000000000000000FE
+:1052B00000000000000000000000000000000000EE
+:1052C00000000000000000000000000000000000DE
+:1052D00000000000000000000000000000000000CE
+:1052E00000000000000000000000000000000000BE
+:1052F00000000000000000000000000000000000AE
+:10530000000000000000000000000000000000009D
+:10531000000000000000000000000000000000008D
+:10532000000000000000000000000000000000007D
+:10533000000000000000000000000000000000006D
+:10534000000000000000000000000000000000005D
+:10535000000000000000000000000000000000004D
+:10536000000000000000000000000000000000003D
+:10537000000000000000000000000000000000002D
+:10538000000000000000000000000000000000001D
+:10539000000000000000000000000000000000000D
+:1053A00000000000000000000000000000000000FD
+:1053B00000000000000000000000000000000000ED
+:1053C00000000000000000000000000000000000DD
+:1053D00000000000000000000000000000000000CD
+:1053E00000000000000000000000000000000000BD
+:1053F00000000000000000000000000000000000AD
+:10540000000000000000000000000000000000009C
+:10541000000000000000000000000000000000008C
+:10542000000000000000000000000000000000007C
+:10543000000000000000000000000000000000006C
+:10544000000000000000000000000000000000005C
+:10545000000000000000000000000000000000004C
+:10546000000000000000000000000000000000003C
+:10547000000000000000000000000000000000002C
+:10548000000000000000000000000000000000001C
+:10549000000000000000000000000000000000000C
+:1054A00000000000000000000000000000000000FC
+:1054B00000000000000000000000000000000000EC
+:1054C00000000000000000000000000000000000DC
+:1054D00000000000000000000000000000000000CC
+:1054E00000000000000000000000000000000000BC
+:1054F00000000000000000000000000000000000AC
+:10550000000000000000000000000000000000009B
+:10551000000000000000000000000000000000008B
+:10552000000000000000000000000000000000007B
+:10553000000000000000000000000000000000006B
+:10554000000000000000000000000000000000005B
+:10555000000000000000000000000000000000004B
+:10556000000000000000000000000000000000003B
+:10557000000000000000000000000000000000002B
+:10558000000000000000000000000000000000001B
+:10559000000000000000000000000000000000000B
+:1055A00000000000000000000000000000000000FB
+:1055B00000000000000000000000000000000000EB
+:1055C00000000000000000000000000000000000DB
+:1055D00000000000000000000000000000000000CB
+:1055E00000000000000000000000000000000000BB
+:1055F00000000000000000000000000000000000AB
+:10560000000000000000000000000000000000009A
+:10561000000000000000000000000000000000008A
+:10562000000000000000000000000000000000007A
+:10563000000000000000000000000000000000006A
+:10564000000000000000000000000000000000005A
+:10565000000000000000000000000000000000004A
+:10566000000000000000000000000000000000003A
+:10567000000000000000000000000000000000002A
+:10568000000000000000000000000000000000001A
+:10569000000000000000000000000000000000000A
+:1056A00000000000000000000000000000000000FA
+:1056B00000000000000000000000000000000000EA
+:1056C00000000000000000000000000000000000DA
+:1056D00000000000000000000000000000000000CA
+:1056E00000000000000000000000000000000000BA
+:1056F00000000000000000000000000000000000AA
+:105700000000000000000000000000000000000099
+:105710000000000000000000000000000000000089
+:105720000000000000000000000000000000000079
+:105730000000000000000000000000000000000069
+:105740000000000000000000000000000000000059
+:105750000000000000000000000000000000000049
+:105760000000000000000000000000000000000039
+:105770000000000000000000000000000000000029
+:105780000000000000000000000000000000000019
+:105790000000000000000000000000000000000009
+:1057A00000000000000000000000000000000000F9
+:1057B00000000000000000000000000000000000E9
+:1057C00000000000000000000000000000000000D9
+:1057D00000000000000000000000000000000000C9
+:1057E00000000000000000000000000000000000B9
+:1057F00000000000000000000000000000000000A9
+:105800000000000000000000000000000000000098
+:105810000000000000000000000000000000000088
+:105820000000000000000000000000000000000078
+:105830000000000000000000000000000000000068
+:105840000000000000000000000000000000000058
+:105850000000000000000000000000000000000048
+:105860000000000000000000000000000000000038
+:105870000000000000000000000000000000000028
+:105880000000000000000000000000000000000018
+:105890000000000000000000000000000000000008
+:1058A00000000000000000000000000000000000F8
+:1058B00000000000000000000000000000000000E8
+:1058C00000000000000000000000000000000000D8
+:1058D00000000000000000000000000000000000C8
+:1058E00000000000000000000000000000000000B8
+:1058F00000000000000000000000000000000000A8
+:105900000000000000000000000000000000000097
+:105910000000000000000000000000000000000087
+:105920000000000000000000000000000000000077
+:105930000000000000000000000000000000000067
+:105940000000000000000000000000000000000057
+:105950000000000000000000000000000000000047
+:105960000000000000000000000000000000000037
+:105970000000000000000000000000000000000027
+:105980000000000000000000000000000000000017
+:105990000000000000000000000000000000000007
+:1059A00000000000000000000000000000000000F7
+:1059B00000000000000000000000000000000000E7
+:1059C00000000000000000000000000000000000D7
+:1059D00000000000000000000000000000000000C7
+:1059E00000000000000000000000000000000000B7
+:1059F00000000000000000000000000000000000A7
+:105A00000000000000000000000000000000000096
+:105A10000000000000000000000000000000000086
+:105A20000000000000000000000000000000000076
+:105A30000000000000000000000000000000000066
+:105A40000000000000000000000000000000000056
+:105A50000000000000000000000000000000000046
+:105A60000000000000000000000000000000000036
+:105A70000000000000000000000000000000000026
+:105A80000000000000000000000000000000000016
+:105A90000000000000000000000000000000000006
+:105AA00000000000000000000000000000000000F6
+:105AB00000000000000000000000000000000000E6
+:105AC00000000000000000000000000000000000D6
+:105AD00000000000000000000000000000000000C6
+:105AE00000000000000000000000000000000000B6
+:105AF00000000000000000000000000000000000A6
+:105B00000000000000000000000000000000000095
+:105B10000000000000000000000000000000000085
+:105B20000000000000000000000000000000000075
+:105B30000000000000000000000000000000000065
+:105B40000000000000000000000000000000000055
+:105B50000000000000000000000000000000000045
+:105B60000000000000000000000000000000000035
+:105B70000000000000000000000000000000000025
+:105B80000000000000000000000000000000000015
+:105B90000000000000000000000000000000000005
+:105BA00000000000000000000000000000000000F5
+:105BB00000000000000000000000000000000000E5
+:105BC00000000000000000000000000000000000D5
+:105BD00000000000000000000000000000000000C5
+:105BE00000000000000000000000000000000000B5
+:105BF00000000000000000000000000000000000A5
+:105C00000000000000000000000000000000000094
+:105C10000000000000000000000000000000000084
+:105C20000000000000000000000000000000000074
+:105C30000000000000000000000000000000000064
+:105C40000000000000000000000000000000000054
+:105C50000000000000000000000000000000000044
+:105C60000000000000000000000000000000000034
+:105C70000000000000000000000000000000000024
+:105C80000000000000000000000000000000000014
+:105C90000000000000000000000000000000000004
+:105CA00000000000000000000000000000000000F4
+:105CB00000000000000000000000000000000000E4
+:105CC00000000000000000000000000000000000D4
+:105CD00000000000000000000000000000000000C4
+:105CE00000000000000000000000000000000000B4
+:105CF00000000000000000000000000000000000A4
+:105D00000000000000000000000000000000000093
+:105D10000000000000000000000000000000000083
+:105D20000000000000000000000000000000000073
+:105D30000000000000000000000000000000000063
+:105D40000000000000000000000000000000000053
+:105D50000000000000000000000000000000000043
+:105D60000000000000000000000000000000000033
+:105D70000000000000000000000000000000000023
+:105D80000000000000000000000000000000000013
+:105D90000000000000000000000000000000000003
+:105DA00000000000000000000000000000000000F3
+:105DB00000000000000000000000000000000000E3
+:105DC00000000000000000000000000000000000D3
+:105DD00000000000000000000000000000000000C3
+:105DE00000000000000000000000000000000000B3
+:105DF00000000000000000000000000000000000A3
+:105E00000000000000000000000000000000000092
+:105E10000000000000000000000000000000000082
+:105E20000000000000000000000000000000000072
+:105E30000000000000000000000000000000000062
+:105E40000000000000000000000000000000000052
+:105E50000000000000000000000000000000000042
+:105E60000000000000000000000000000000000032
+:105E70000000000000000000000000000000000022
+:105E80000000000000000000000000000000000012
+:105E90000000000000000000000000000000000002
+:105EA00000000000000000000000000000000000F2
+:105EB00000000000000000000000000000000000E2
+:105EC00000000000000000000000000000000000D2
+:105ED00000000000000000000000000000000000C2
+:105EE00000000000000000000000000000000000B2
+:105EF00000000000000000000000000000000000A2
+:105F00000000000000000000000000000000000091
+:105F10000000000000000000000000000000000081
+:105F20000000000000000000000000000000000071
+:105F30000000000000000000000000000000000061
+:105F40000000000000000000000000000000000051
+:105F50000000000000000000000000000000000041
+:105F60000000000000000000000000000000000031
+:105F70000000000000000000000000000000000021
+:105F80000000000000000000000000000000000011
+:105F90000000000000000000000000000000000001
+:105FA00000000000000000000000000000000000F1
+:105FB00000000000000000000000000000000000E1
+:105FC00000000000000000000000000000000000D1
+:105FD00000000000000000000000000000000000C1
+:105FE00000000000000000000000000000000000B1
+:105FF00000000000000000000000000000000000A1
+:106000000000000000000000000000000000000090
+:106010000000000000000000000000000000000080
+:106020000000000000000000000000000000000070
+:106030000000000000000000000000000000000060
+:106040000000000000000000000000000000000050
+:106050000000000000000000000000000000000040
+:106060000000000000000000000000000000000030
+:106070000000000000000000000000000000000020
+:106080000000000000000000000000000000000010
+:106090000000000000000000000000000000000000
+:1060A00000000000000000000000000000000000F0
+:1060B00000000000000000000000000000000000E0
+:1060C00000000000000000000000000000000000D0
+:1060D00000000000000000000000000000000000C0
+:1060E00000000000000000000000000000000000B0
+:1060F00000000000000000000000000000000000A0
+:10610000000000000000000000000000000000008F
+:10611000000000000000000000000000000000007F
+:10612000000000000000000000000000000000006F
+:10613000000000000000000000000000000000005F
+:10614000000000000000000000000000000000004F
+:10615000000000000000000000000000000000003F
+:10616000000000000000000000000000000000002F
+:10617000000000000000000000000000000000001F
+:10618000000000000000000000000000000000000F
+:1061900000000000000000000000000000000000FF
+:1061A00000000000000000000000000000000000EF
+:1061B00000000000000000000000000000000000DF
+:1061C00000000000000000000000000000000000CF
+:1061D00000000000000000000000000000000000BF
+:1061E00000000000000000000000000000000000AF
+:1061F000000000000000000000000000000000009F
+:10620000000000000000000000000000000000008E
+:10621000000000000000000000000000000000007E
+:10622000000000000000000000000000000000006E
+:10623000000000000000000000000000000000005E
+:10624000000000000000000000000000000000004E
+:10625000000000000000000000000000000000003E
+:10626000000000000000000000000000000000002E
+:10627000000000000000000000000000000000001E
+:10628000000000000000000000000000000000000E
+:1062900000000000000000000000000000000000FE
+:1062A00000000000000000000000000000000000EE
+:1062B00000000000000000000000000000000000DE
+:1062C00000000000000000000000000000000000CE
+:1062D00000000000000000000000000000000000BE
+:1062E00000000000000000000000000000000000AE
+:1062F000000000000000000000000000000000009E
+:10630000000000000000000000000000000000008D
+:10631000000000000000000000000000000000007D
+:10632000000000000000000000000000000000006D
+:10633000000000000000000000000000000000005D
+:10634000000000000000000000000000000000004D
+:10635000000000000000000000000000000000003D
+:10636000000000000000000000000000000000002D
+:10637000000000000000000000000000000000001D
+:10638000000000000000000000000000000000000D
+:1063900000000000000000000000000000000000FD
+:1063A00000000000000000000000000000000000ED
+:1063B00000000000000000000000000000000000DD
+:1063C00000000000000000000000000000000000CD
+:1063D00000000000000000000000000000000000BD
+:1063E00000000000000000000000000000000000AD
+:1063F000000000000000000000000000000000009D
+:10640000000000000000000000000000000000008C
+:10641000000000000000000000000000000000007C
+:10642000000000000000000000000000000000006C
+:10643000000000000000000000000000000000005C
+:10644000000000000000000000000000000000004C
+:10645000000000000000000000000000000000003C
+:10646000000000000000000000000000000000002C
+:10647000000000000000000000000000000000001C
+:10648000000000000000000000000000000000000C
+:1064900000000000000000000000000000000000FC
+:1064A00000000000000000000000000000000000EC
+:1064B00000000000000000000000000000000000DC
+:1064C00000000000000000000000000000000000CC
+:1064D00000000000000000000000000000000000BC
+:1064E00000000000000000000000000000000000AC
+:1064F000000000000000000000000000000000009C
+:10650000000000000000000000000000000000008B
+:10651000000000000000000000000000000000007B
+:10652000000000000000000000000000000000006B
+:10653000000000000000000000000000000000005B
+:10654000000000000000000000000000000000004B
+:10655000000000000000000000000000000000003B
+:10656000000000000000000000000000000000002B
+:10657000000000000000000000000000000000001B
+:10658000000000000000000000000000000000000B
+:1065900000000000000000000000000000000000FB
+:1065A00000000000000000000000000000000000EB
+:1065B00000000000000000000000000000000000DB
+:1065C00000000000000000000000000000000000CB
+:1065D00000000000000000000000000000000000BB
+:1065E00000000000000000000000000000000000AB
+:1065F000000000000000000000000000000000009B
+:10660000000000000000000000000000000000008A
+:10661000000000000000000000000000000000007A
+:10662000000000000000000000000000000000006A
+:10663000000000000000000000000000000000005A
+:10664000000000000000000000000000000000004A
+:10665000000000000000000000000000000000003A
+:10666000000000000000000000000000000000002A
+:10667000000000000000000000000000000000001A
+:10668000000000000000000000000000000000000A
+:1066900000000000000000000000000000000000FA
+:1066A00000000000000000000000000000000000EA
+:1066B00000000000000000000000000000000000DA
+:1066C00000000000000000000000000000000000CA
+:1066D00000000000000000000000000000000000BA
+:1066E00000000000000000000000000000000000AA
+:1066F000000000000000000000000000000000009A
+:106700000000000000000000000000000000000089
+:106710000000000000000000000000000000000079
+:106720000000000000000000000000000000000069
+:106730000000000000000000000000000000000059
+:106740000000000000000000000000000000000049
+:106750000000000000000000000000000000000039
+:106760000000000000000000000000000000000029
+:106770000000000000000000000000000000000019
+:106780000000000000000000000000000000000009
+:1067900000000000000000000000000000000000F9
+:1067A00000000000000000000000000000000000E9
+:1067B00000000000000000000000000000000000D9
+:1067C00000000000000000000000000000000000C9
+:1067D00000000000000000000000000000000000B9
+:1067E00000000000000000000000000000000000A9
+:1067F0000000000000000000000000000000000099
+:106800000000000000000000000000000000000088
+:106810000000000000000000000000000000000078
+:106820000000000000000000000000000000000068
+:106830000000000000000000000000000000000058
+:106840000000000000000000000000000000000048
+:106850000000000000000000000000000000000038
+:106860000000000000000000000000000000000028
+:106870000000000000000000000000000000000018
+:106880000000000000000000000000000000000008
+:1068900000000000000000000000000000000000F8
+:1068A00000000000000000000000000000000000E8
+:1068B00000000000000000000000000000000000D8
+:1068C00000000000000000000000000000000000C8
+:1068D00000000000000000000000000000000000B8
+:1068E00000000000000000000000000000000000A8
+:1068F0000000000000000000000000000000000098
+:106900000000000000000000000000000000000087
+:106910000000000000000000000000000000000077
+:106920000000000000000000000000000000000067
+:106930000000000000000000000000000000000057
+:106940000000000000000000000000000000000047
+:106950000000000000000000000000000000000037
+:106960000000000000000000000000000000000027
+:106970000000000000000000000000000000000017
+:106980000000000000000000000000000000000007
+:1069900000000000000000000000000000000000F7
+:1069A00000000000000000000000000000000000E7
+:1069B00000000000000000000000000000000000D7
+:1069C00000000000000000000000000000000000C7
+:1069D00000000000000000000000000000000000B7
+:1069E00000000000000000000000000000000000A7
+:1069F0000000000000000000000000000000000097
+:106A00000000000000000000000000000000000086
+:106A10000000000000000000000000000000000076
+:106A20000000000000000000000000000000000066
+:106A30000000000000000000000000000000000056
+:106A40000000000000000000000000000000000046
+:106A50000000000000000000000000000000000036
+:106A60000000000000000000000000000000000026
+:106A70000000000000000000000000000000000016
+:106A80000000000000000000000000000000000006
+:106A900000000000000000000000000000000000F6
+:106AA00000000000000000000000000000000000E6
+:106AB00000000000000000000000000000000000D6
+:106AC00000000000000000000000000000000000C6
+:106AD00000000000000000000000000000000000B6
+:106AE00000000000000000000000000000000000A6
+:106AF0000000000000000000000000000000000096
+:106B00000000000000000000000000000000000085
+:106B10000000000000000000000000000000000075
+:106B20000000000000000000000000000000000065
+:106B30000000000000000000000000000000000055
+:106B40000000000000000000000000000000000045
+:106B50000000000000000000000000000000000035
+:106B60000000000000000000000000000000000025
+:106B70000000000000000000000000000000000015
+:106B80000000000000000000000000000000000005
+:106B900000000000000000000000000000000000F5
+:106BA00000000000000000000000000000000000E5
+:106BB00000000000000000000000000000000000D5
+:106BC00000000000000000000000000000000000C5
+:106BD00000000000000000000000000000000000B5
+:106BE00000000000000000000000000000000000A5
+:106BF0000000000000000000000000000000000095
+:106C00000000000000000000000000000000000084
+:106C10000000000000000000000000000000000074
+:106C20000000000000000000000000000000000064
+:106C30000000000000000000000000000000000054
+:106C40000000000000000000000000000000000044
+:106C50000000000000000000000000000000000034
+:106C60000000000000000000000000000000000024
+:106C70000000000000000000000000000000000014
+:106C80000000000000000000000000000000000004
+:106C900000000000000000000000000000000000F4
+:106CA00000000000000000000000000000000000E4
+:106CB00000000000000000000000000000000000D4
+:106CC00000000000000000000000000000000000C4
+:106CD00000000000000000000000000000000000B4
+:106CE00000000000000000000000000000000000A4
+:106CF0000000000000000000000000000000000094
+:106D00000000000000000000000000000000000083
+:106D10000000000000000000000000000000000073
+:106D20000000000000000000000000000000000063
+:106D30000000000000000000000000000000000053
+:106D40000000000000000000000000000000000043
+:106D50000000000000000000000000000000000033
+:106D60000000000000000000000000000000000023
+:106D70000000000000000000000000000000000013
+:106D80000000000000000000000000000000000003
+:106D900000000000000000000000000000000000F3
+:106DA00000000000000000000000000000000000E3
+:106DB00000000000000000000000000000000000D3
+:106DC00000000000000000000000000000000000C3
+:106DD00000000000000000000000000000000000B3
+:106DE00000000000000000000000000000000000A3
+:106DF0000000000000000000000000000000000093
+:106E00000000000000000000000000000000000082
+:106E10000000000000000000000000000000000072
+:106E20000000000000000000000000000000000062
+:106E30000000000000000000000000000000000052
+:106E40000000000000000000000000000000000042
+:106E50000000000000000000000000000000000032
+:106E60000000000000000000000000000000000022
+:106E70000000000000000000000000000000000012
+:106E80000000000000000000000000000000000002
+:106E900000000000000000000000000000000000F2
+:106EA00000000000000000000000000000000000E2
+:106EB00000000000000000000000000000000000D2
+:106EC00000000000000000000000000000000000C2
+:106ED00000000000000000000000000000000000B2
+:106EE00000000000000000000000000000000000A2
+:106EF0000000000000000000000000000000000092
+:106F00000000000000000000000000000000000081
+:106F10000000000000000000000000000000000071
+:106F20000000000000000000000000000000000061
+:106F30000000000000000000000000000000000051
+:106F40000000000000000000000000000000000041
+:106F50000000000000000000000000000000000031
+:106F60000000000000000000000000000000000021
+:106F70000000000000000000000000000000000011
+:106F80000000000000000000000000000000000001
+:106F900000000000000000000000000000000000F1
+:106FA00000000000000000000000000000000000E1
+:106FB00000000000000000000000000000000000D1
+:106FC00000000000000000000000000000000000C1
+:106FD00000000000000000000000000000000000B1
+:106FE00000000000000000000000000000000000A1
+:106FF0000000000000000000000000000000000091
+:107000000000000000000000000000000000000080
+:107010000000000000000000000000000000000070
+:107020000000000000000000000000000000000060
+:107030000000000000000000000000000000000050
+:107040000000000000000000000000000000000040
+:107050000000000000000000000000000000000030
+:107060000000000000000000000000000000000020
+:107070000000000000000000000000000000000010
+:107080000000000000000000000000000000000000
+:1070900000000000000000000000000000000000F0
+:1070A00000000000000000000000000000000000E0
+:1070B00000000000000000000000000000000000D0
+:1070C00000000000000000000000000000000000C0
+:1070D00000000000000000000000000000000000B0
+:1070E00000000000000000000000000000000000A0
+:1070F0000000000000000000000000000000000090
+:10710000000000000000000000000000000000007F
+:10711000000000000000000000000000000000006F
+:10712000000000000000000000000000000000005F
+:10713000000000000000000000000000000000004F
+:10714000000000000000000000000000000000003F
+:10715000000000000000000000000000000000002F
+:10716000000000000000000000000000000000001F
+:10717000000000000000000000000000000000000F
+:1071800000000000000000000000000000000000FF
+:1071900000000000000000000000000000000000EF
+:1071A00000000000000000000000000000000000DF
+:1071B00000000000000000000000000000000000CF
+:1071C00000000000000000000000000000000000BF
+:1071D00000000000000000000000000000000000AF
+:1071E000000000000000000000000000000000009F
+:1071F000000000000000000000000000000000008F
+:10720000000000000000000000000000000000007E
+:10721000000000000000000000000000000000006E
+:10722000000000000000000000000000000000005E
+:10723000000000000000000000000000000000004E
+:10724000000000000000000000000000000000003E
+:10725000000000000000000000000000000000002E
+:10726000000000000000000000000000000000001E
+:10727000000000000000000000000000000000000E
+:1072800000000000000000000000000000000000FE
+:1072900000000000000000000000000000000000EE
+:1072A00000000000000000000000000000000000DE
+:1072B00000000000000000000000000000000000CE
+:1072C00000000000000000000000000000000000BE
+:1072D00000000000000000000000000000000000AE
+:1072E000000000000000000000000000000000009E
+:1072F000000000000000000000000000000000008E
+:10730000000000000000000000000000000000007D
+:10731000000000000000000000000000000000006D
+:10732000000000000000000000000000000000005D
+:10733000000000000000000000000000000000004D
+:10734000000000000000000000000000000000003D
+:10735000000000000000000000000000000000002D
+:10736000000000000000000000000000000000001D
+:10737000000000000000000000000000000000000D
+:1073800000000000000000000000000000000000FD
+:1073900000000000000000000000000000000000ED
+:1073A00000000000000000000000000000000000DD
+:1073B00000000000000000000000000000000000CD
+:1073C00000000000000000000000000000000000BD
+:1073D00000000000000000000000000000000000AD
+:1073E000000000000000000000000000000000009D
+:1073F000000000000000000000000000000000008D
+:10740000000000000000000000000000000000007C
+:10741000000000000000000000000000000000006C
+:10742000000000000000000000000000000000005C
+:10743000000000000000000000000000000000004C
+:10744000000000000000000000000000000000003C
+:10745000000000000000000000000000000000002C
+:10746000000000000000000000000000000000001C
+:10747000000000000000000000000000000000000C
+:1074800000000000000000000000000000000000FC
+:1074900000000000000000000000000000000000EC
+:1074A00000000000000000000000000000000000DC
+:1074B00000000000000000000000000000000000CC
+:1074C00000000000000000000000000000000000BC
+:1074D00000000000000000000000000000000000AC
+:1074E000000000000000000000000000000000009C
+:1074F000000000000000000000000000000000008C
+:10750000000000000000000000000000000000007B
+:10751000000000000000000000000000000000006B
+:10752000000000000000000000000000000000005B
+:10753000000000000000000000000000000000004B
+:10754000000000000000000000000000000000003B
+:10755000000000000000000000000000000000002B
+:10756000000000000000000000000000000000001B
+:10757000000000000000000000000000000000000B
+:1075800000000000000000000000000000000000FB
+:1075900000000000000000000000000000000000EB
+:1075A00000000000000000000000000000000000DB
+:1075B00000000000000000000000000000000000CB
+:1075C00000000000000000000000000000000000BB
+:1075D00000000000000000000000000000000000AB
+:1075E000000000000000000000000000000000009B
+:1075F000000000000000000000000000000000008B
+:10760000000000000000000000000000000000007A
+:10761000000000000000000000000000000000006A
+:10762000000000000000000000000000000000005A
+:10763000000000000000000000000000000000004A
+:10764000000000000000000000000000000000003A
+:10765000000000000000000000000000000000002A
+:10766000000000000000000000000000000000001A
+:10767000000000000000000000000000000000000A
+:1076800000000000000000000000000000000000FA
+:1076900000000000000000000000000000000000EA
+:1076A00000000000000000000000000000000000DA
+:1076B00000000000000000000000000000000000CA
+:1076C00000000000000000000000000000000000BA
+:1076D00000000000000000000000000000000000AA
+:1076E000000000000000000000000000000000009A
+:1076F000000000000000000000000000000000008A
+:107700000000000000000000000000000000000079
+:107710000000000000000000000000000000000069
+:107720000000000000000000000000000000000059
+:107730000000000000000000000000000000000049
+:107740000000000000000000000000000000000039
+:107750000000000000000000000000000000000029
+:107760000000000000000000000000000000000019
+:107770000000000000000000000000000000000009
+:1077800000000000000000000000000000000000F9
+:1077900000000000000000000000000000000000E9
+:1077A00000000000000000000000000000000000D9
+:1077B00000000000000000000000000000000000C9
+:1077C00000000000000000000000000000000000B9
+:1077D00000000000000000000000000000000000A9
+:1077E0000000000000000000000000000000000099
+:1077F0000000000000000000000000000000000089
+:107800000000000000000000000000000000000078
+:107810000000000000000000000000000000000068
+:107820000000000000000000000000000000000058
+:107830000000000000000000000000000000000048
+:107840000000000000000000000000000000000038
+:107850000000000000000000000000000000000028
+:107860000000000000000000000000000000000018
+:107870000000000000000000000000000000000008
+:1078800000000000000000000000000000000000F8
+:1078900000000000000000000000000000000000E8
+:1078A00000000000000000000000000000000000D8
+:1078B00000000000000000000000000000000000C8
+:1078C00000000000000000000000000000000000B8
+:1078D00000000000000000000000000000000000A8
+:1078E0000000000000000000000000000000000098
+:1078F0000000000000000000000000000000000088
+:107900000000000000000000000000000000000077
+:107910000000000000000000000000000000000067
+:107920000000000000000000000000000000000057
+:107930000000000000000000000000000000000047
+:107940000000000000000000000000000000000037
+:107950000000000000000000000000000000000027
+:107960000000000000000000000000000000000017
+:107970000000000000000000000000000000000007
+:1079800000000000000000000000000000000000F7
+:1079900000000000000000000000000000000000E7
+:1079A00000000000000000000000000000000000D7
+:1079B00000000000000000000000000000000000C7
+:1079C00000000000000000000000000000000000B7
+:1079D00000000000000000000000000000000000A7
+:1079E0000000000000000000000000000000000097
+:1079F0000000000000000000000000000000000087
+:107A00000000000000000000000000000000000076
+:107A10000000000000000000000000000000000066
+:107A20000000000000000000000000000000000056
+:107A30000000000000000000000000000000000046
+:107A40000000000000000000000000000000000036
+:107A50000000000000000000000000000000000026
+:107A60000000000000000000000000000000000016
+:107A70000000000000000000000000000000000006
+:107A800000000000000000000000000000000000F6
+:107A900000000000000000000000000000000000E6
+:107AA00000000000000000000000000000000000D6
+:107AB00000000000000000000000000000000000C6
+:107AC00000000000000000000000000000000000B6
+:107AD00000000000000000000000000000000000A6
+:107AE0000000000000000000000000000000000096
+:107AF0000000000000000000000000000000000086
+:107B00000000000000000000000000000000000075
+:107B10000000000000000000000000000000000065
+:107B20000000000000000000000000000000000055
+:107B30000000000000000000000000000000000045
+:107B40000000000000000000000000000000000035
+:107B50000000000000000000000000000000000025
+:107B60000000000000000000000000000000000015
+:107B70000000000000000000000000000000000005
+:107B800000000000000000000000000000000000F5
+:107B900000000000000000000000000000000000E5
+:107BA00000000000000000000000000000000000D5
+:107BB00000000000000000000000000000000000C5
+:107BC00000000000000000000000000000000000B5
+:107BD00000000000000000000000000000000000A5
+:107BE0000000000000000000000000000000000095
+:107BF0000000000000000000000000000000000085
+:107C00000000000000000000000000000000000074
+:107C10000000000000000000000000000000000064
+:107C20000000000000000000000000000000000054
+:107C30000000000000000000000000000000000044
+:107C40000000000000000000000000000000000034
+:107C50000000000000000000000000000000000024
+:107C60000000000000000000000000000000000014
+:107C70000000000000000000000000000000000004
+:107C800000000000000000000000000000000000F4
+:107C900000000000000000000000000000000000E4
+:107CA00000000000000000000000000000000000D4
+:107CB00000000000000000000000000000000000C4
+:107CC00000000000000000000000000000000000B4
+:107CD00000000000000000000000000000000000A4
+:107CE0000000000000000000000000000000000094
+:107CF0000000000000000000000000000000000084
+:107D00000000000000000000000000000000000073
+:107D10000000000000000000000000000000000063
+:107D20000000000000000000000000000000000053
+:107D30000000000000000000000000000000000043
+:107D40000000000000000000000000000000000033
+:107D50000000000000000000000000000000000023
+:107D60000000000000000000000000000000000013
+:107D70000000000000000000000000000000000003
+:107D800000000000000000000000000000000000F3
+:107D900000000000000000000000000000000000E3
+:107DA00000000000000000000000000000000000D3
+:107DB00000000000000000000000000000000000C3
+:107DC00000000000000000000000000000000000B3
+:107DD00000000000000000000000000000000000A3
+:107DE0000000000000000000000000000000000093
+:107DF0000000000000000000000000000000000083
+:107E00000000000000000000000000000000000072
+:107E10000000000000000000000000000000000062
+:107E20000000000000000000000000000000000052
+:107E30000000000000000000000000000000000042
+:107E40000000000000000000000000000000000032
+:107E50000000000000000000000000000000000022
+:107E60000000000000000000000000000000000012
+:107E70000000000000000000000000000000000002
+:107E800000000000000000000000000000000000F2
+:107E900000000000000000000000000000000000E2
+:107EA00000000000000000000000000000000000D2
+:107EB00000000000000000000000000000000000C2
+:107EC00000000000000000000000000000000000B2
+:107ED00000000000000000000000000000000000A2
+:107EE0000000000000000000000000000000000092
+:107EF0000000000000000000000000000000000082
+:107F00000000000000000000000000000000000071
+:107F10000000000000000000000000000000000061
+:107F20000000000000000000000000000000000051
+:107F30000000000000000000000000000000000041
+:107F40000000000000000000000000000000000031
+:107F50000000000000000000000000000000000021
+:107F60000000000000000000000000000000000011
+:107F70000000000000000000000000000000000001
+:107F800000000000000000000000000000000000F1
+:107F900000000000000000000000000000000000E1
+:107FA00000000000000000000000000000000000D1
+:107FB00000000000000000000000000000000000C1
+:107FC00000000000000000000000000000000000B1
+:107FD00000000000000000000000000000000000A1
+:107FE0000000000000000000000000000000000091
+:107FF0000000000000000000000000000000000081
+:108000000000000000000000000000000000000070
+:108010000000000000000000000000000000000060
+:108020000000000000000000000000000000000050
+:108030000000000000000000000000000000000040
+:108040000000000000000000000000000000000030
+:108050000000000000000000000000000000000020
+:108060000000000000000000000000000000000010
+:108070000000000000000000000000000000000000
+:1080800000000000000000000000000000000000F0
+:1080900000000000000000000000000000000000E0
+:1080A00000000000000000000000000000000000D0
+:1080B00000000000000000000000000000000000C0
+:1080C00000000000000000000000000000000000B0
+:1080D00000000000000000000000000000000000A0
+:1080E0000000000000000000000000000000000090
+:1080F0000000000000000000000000000000000080
+:10810000000000000000000000000000000000006F
+:10811000000000000000000000000000000000005F
+:10812000000000000000000000000000000000004F
+:10813000000000000000000000000000000000003F
+:10814000000000000000000000000000000000002F
+:10815000000000000000000000000000000000001F
+:10816000000000000000000000000000000000000F
+:1081700000000000000000000000000000000000FF
+:1081800000000000000000000000000000000000EF
+:1081900000000000000000000000000000000000DF
+:1081A00000000000000000000000000000000000CF
+:1081B00000000000000000000000000000000000BF
+:1081C00000000000000000000000000000000000AF
+:1081D000000000000000000000000000000000009F
+:1081E000000000000000000000000000000000008F
+:1081F000000000000000000000000000000000007F
+:10820000000000000000000000000000000000006E
+:10821000000000000000000000000000000000005E
+:10822000000000000000000000000000000000004E
+:10823000000000000000000000000000000000003E
+:10824000000000000000000000000000000000002E
+:10825000000000000000000000000000000000001E
+:10826000000000000000000000000000000000000E
+:1082700000000000000000000000000000000000FE
+:1082800000000000000000000000000000000000EE
+:1082900000000000000000000000000000000000DE
+:1082A00000000000000000000000000000000000CE
+:1082B00000000000000000000000000000000000BE
+:1082C00000000000000000000000000000000000AE
+:1082D000000000000000000000000000000000009E
+:1082E000000000000000000000000000000000008E
+:1082F000000000000000000000000000000000007E
+:10830000000000000000000000000000000000006D
+:10831000000000000000000000000000000000005D
+:10832000000000000000000000000000000000004D
+:10833000000000000000000000000000000000003D
+:10834000000000000000000000000000000000002D
+:10835000000000000000000000000000000000001D
+:10836000000000000000000000000000000000000D
+:1083700000000000000000000000000000000000FD
+:1083800000000000000000000000000000000000ED
+:1083900000000000000000000000000000000000DD
+:1083A00000000000000000000000000000000000CD
+:1083B00000000000000000000000000000000000BD
+:1083C00000000000000000000000000000000000AD
+:1083D000000000000000000000000000000000009D
+:1083E000000000000000000000000000000000008D
+:1083F000000000000000000000000000000000007D
+:10840000000000000000000000000000000000006C
+:10841000000000000000000000000000000000005C
+:10842000000000000000000000000000000000004C
+:10843000000000000000000000000000000000003C
+:10844000000000000000000000000000000000002C
+:10845000000000000000000000000000000000001C
+:10846000000000000000000000000000000000000C
+:1084700000000000000000000000000000000000FC
+:1084800000000000000000000000000000000000EC
+:1084900000000000000000000000000000000000DC
+:1084A00000000000000000000000000000000000CC
+:1084B00000000000000000000000000000000000BC
+:1084C00000000000000000000000000000000000AC
+:1084D000000000000000000000000000000000009C
+:1084E000000000000000000000000000000000008C
+:1084F000000000000000000000000000000000007C
+:10850000000000000000000000000000000000006B
+:10851000000000000000000000000000000000005B
+:10852000000000000000000000000000000000004B
+:10853000000000000000000000000000000000003B
+:10854000000000000000000000000000000000002B
+:10855000000000000000000000000000000000001B
+:10856000000000000000000000000000000000000B
+:1085700000000000000000000000000000000000FB
+:1085800000000000000000000000000000000000EB
+:1085900000000000000000000000000000000000DB
+:1085A00000000000000000000000000000000000CB
+:1085B00000000000000000000000000000000000BB
+:1085C00000000000000000000000000000000000AB
+:1085D000000000000000000000000000000000009B
+:1085E000000000000000000000000000000000008B
+:1085F000000000000000000000000000000000007B
+:10860000000000000000000000000000000000006A
+:10861000000000000000000000000000000000005A
+:10862000000000000000000000000000000000004A
+:10863000000000000000000000000000000000003A
+:10864000000000000000000000000000000000002A
+:10865000000000000000000000000000000000001A
+:10866000000000000000000000000000000000000A
+:1086700000000000000000000000000000000000FA
+:1086800000000000000000000000000000000000EA
+:1086900000000000000000000000000000000000DA
+:1086A00000000000000000000000000000000000CA
+:1086B00000000000000000000000000000000000BA
+:1086C00000000000000000000000000000000000AA
+:1086D000000000000000000000000000000000009A
+:1086E000000000000000000000000000000000008A
+:1086F000000000000000000000000000000000007A
+:108700000000000000000000000000000000000069
+:108710000000000000000000000000000000000059
+:108720000000000000000000000000000000000049
+:108730000000000000000000000000000000000039
+:108740000000000000000000000000000000000029
+:108750000000000000000000000000000000000019
+:108760000000000000000000000000000000000009
+:1087700000000000000000000000000000000000F9
+:1087800000000000000000000000000000000000E9
+:1087900000000000000000000000000000000000D9
+:1087A00000000000000000000000000000000000C9
+:1087B00000000000000000000000000000000000B9
+:1087C00000000000000000000000000000000000A9
+:1087D0000000000000000000000000000000000099
+:1087E0000000000000000000000000000000000089
+:1087F0000000000000000000000000000000000079
+:108800000000000000000000000000000000000068
+:108810000000000000000000000000000000000058
+:108820000000000000000000000000000000000048
+:108830000000000000000000000000000000000038
+:108840000000000000000000000000000000000028
+:108850000000000000000000000000000000000018
+:108860000000000000000000000000000000000008
+:1088700000000000000000000000000000000000F8
+:1088800000000000000000000000000000000000E8
+:1088900000000000000000000000000000000000D8
+:1088A00000000000000000000000000000000000C8
+:1088B00000000000000000000000000000000000B8
+:1088C00000000000000000000000000000000000A8
+:1088D0000000000000000000000000000000000098
+:1088E0000000000000000000000000000000000088
+:1088F0000000000000000000000000000000000078
+:108900000000000000000000000000000000000067
+:108910000000000000000000000000000000000057
+:108920000000000000000000000000000000000047
+:108930000000000000000000000000000000000037
+:108940000000000000000000000000000000000027
+:108950000000000000000000000000000000000017
+:108960000000000000000000000000000000000007
+:1089700000000000000000000000000000000000F7
+:1089800000000000000000000000000000000000E7
+:1089900000000000000000000000000000000000D7
+:1089A00000000000000000000000000000000000C7
+:1089B00000000000000000000000000000000000B7
+:1089C00000000000000000000000000000000000A7
+:1089D0000000000000000000000000000000000097
+:1089E0000000000000000000000000000000000087
+:1089F0000000000000000000000000000000000077
+:108A00000000000000000000000000000000000066
+:108A10000000000000000000000000000000000056
+:108A20000000000000000000000000000000000046
+:108A30000000000000000000000000000000000036
+:108A40000000000000000000000000000000000026
+:108A50000000000000000000000000000000000016
+:108A60000000000000000000000000000000000006
+:108A700000000000000000000000000000000000F6
+:108A800000000000000000000000000000000000E6
+:108A900000000000000000000000000000000000D6
+:108AA00000000000000000000000000000000000C6
+:108AB00000000000000000000000000000000000B6
+:108AC00000000000000000000000000000000000A6
+:108AD0000000000000000000000000000000000096
+:108AE0000000000000000000000000000000000086
+:108AF0000000000000000000000000000000000076
+:108B00000000000000000000000000000000000065
+:108B10000000000000000000000000000000000055
+:108B20000000000000000000000000000000000045
+:108B30000000000000000000000000000000000035
+:108B40000000000000000000000000000000000025
+:108B50000000000000000000000000000000000015
+:108B60000000000000000000000000000000000005
+:108B700000000000000000000000000000000000F5
+:108B800000000000000000000000000000000000E5
+:108B900000000000000000000000000000000000D5
+:108BA00000000000000000000000000000000000C5
+:108BB00000000000000000000000000000000000B5
+:108BC00000000000000000000000000000000000A5
+:108BD0000000000000000000000000000000000095
+:108BE0000000000000000000000000000000000085
+:108BF0000000000000000000000000000000000075
+:108C00000000000000000000000000000000000064
+:108C10000000000000000000000000000000000054
+:108C20000000000000000000000000000000000044
+:108C30000000000000000000000000000000000034
+:108C40000000000000000000000000000000000024
+:108C50000000000000000000000000000000000014
+:108C60000000000000000000000000000000000004
+:108C700000000000000000000000000000000000F4
+:108C800000000000000000000000000000000000E4
+:108C900000000000000000000000000000000000D4
+:108CA00000000000000000000000000000000000C4
+:108CB00000000000000000000000000000000000B4
+:108CC00000000000000000000000000000000000A4
+:108CD0000000000000000000000000000000000094
+:108CE0000000000000000000000000000000000084
+:108CF0000000000000000000000000000000000074
+:108D00000000000000000000000000000000000063
+:108D10000000000000000000000000000000000053
+:108D20000000000000000000000000000000000043
+:108D30000000000000000000000000000000000033
+:108D40000000000000000000000000000000000023
+:108D50000000000000000000000000000000000013
+:108D60000000000000000000000000000000000003
+:108D700000000000000000000000000000000000F3
+:108D800000000000000000000000000000000000E3
+:108D900000000000000000000000000000000000D3
+:108DA00000000000000000000000000000000000C3
+:108DB00000000000000000000000000000000000B3
+:108DC00000000000000000000000000000000000A3
+:108DD0000000000000000000000000000000000093
+:108DE0000000000000000000000000000000000083
+:108DF0000000000000000000000000000000000073
+:108E00000000000000000000000000000000000062
+:108E10000000000000000000000000000000000052
+:108E20000000000000000000000000000000000042
+:108E30000000000000000000000000000000000032
+:108E40000000000000000000000000000000000022
+:108E50000000000000000000000000000000000012
+:108E60000000000000000000000000000000000002
+:108E700000000000000000000000000000000000F2
+:108E800000000000000000000000000000000000E2
+:108E900000000000000000000000000000000000D2
+:108EA00000000000000000000000000000000000C2
+:108EB00000000000000000000000000000000000B2
+:108EC00000000000000000000000000000000000A2
+:108ED0000000000000000000000000000000000092
+:108EE0000000000000000000000000000000000082
+:108EF0000000000000000000000000000000000072
+:108F00000000000000000000000000000000000061
+:108F10000000000000000000000000000000000051
+:108F20000000000000000000000000000000000041
+:108F30000000000000000000000000000000000031
+:108F40000000000000000000000000000000000021
+:108F50000000000000000000000000000000000011
+:108F60000000000000000000000000000000000001
+:108F700000000000000000000000000000000000F1
+:108F800000000000000000000000000000000000E1
+:108F900000000000000000000000000000000000D1
+:108FA00000000000000000000000000000000000C1
+:108FB00000000000000000000000000000000000B1
+:108FC00000000000000000000000000000000000A1
+:108FD0000000000000000000000000000000000091
+:108FE0000000000000000000000000000000000081
+:108FF0000000000000000000000000000000000071
+:109000000000000000000000000000000000000060
+:109010000000000000000000000000000000000050
+:109020000000000000000000000000000000000040
+:109030000000000000000000000000000000000030
+:109040000000000000000000000000000000000020
+:109050000000000000000000000000000000000010
+:109060000000000000000000000000000000000000
+:1090700000000000000000000000000000000000F0
+:1090800000000000000000000000000000000000E0
+:1090900000000000000000000000000000000000D0
+:1090A00000000000000000000000000000000000C0
+:1090B00000000000000000000000000000000000B0
+:1090C00000000000000000000000000000000000A0
+:1090D0000000000000000000000000000000000090
+:1090E0000000000000000000000000000000000080
+:1090F0000000000000000000000000000000000070
+:10910000000000000000000000000000000000005F
+:10911000000000000000000000000000000000004F
+:10912000000000000000000000000000000000003F
+:10913000000000000000000000000000000000002F
+:10914000000000000000000000000000000000001F
+:10915000000000000000000000000000000000000F
+:1091600000000000000000000000000000000000FF
+:1091700000000000000000000000000000000000EF
+:1091800000000000000000000000000000000000DF
+:1091900000000000000000000000000000000000CF
+:1091A00000000000000000000000000000000000BF
+:1091B00000000000000000000000000000000000AF
+:1091C000000000000000000000000000000000009F
+:1091D000000000000000000000000000000000008F
+:1091E000000000000000000000000000000000007F
+:1091F000000000000000000000000000000000006F
+:10920000000000000000000000000000000000005E
+:10921000000000000000000000000000000000004E
+:10922000000000000000000000000000000000003E
+:10923000000000000000000000000000000000002E
+:10924000000000000000000000000000000000001E
+:10925000000000000000000000000000000000000E
+:1092600000000000000000000000000000000000FE
+:1092700000000000000000000000000000000000EE
+:1092800000000000000000000000000000000000DE
+:1092900000000000000000000000000000000000CE
+:1092A00000000000000000000000000000000000BE
+:1092B00000000000000000000000000000000000AE
+:1092C000000000000000000000000000000000009E
+:1092D000000000000000000000000000000000008E
+:1092E000000000000000000000000000000000007E
+:1092F000000000000000000000000000000000006E
+:10930000000000000000000000000000000000005D
+:10931000000000000000000000000000000000004D
+:10932000000000000000000000000000000000003D
+:10933000000000000000000000000000000000002D
+:10934000000000000000000000000000000000001D
+:10935000000000000000000000000000000000000D
+:1093600000000000000000000000000000000000FD
+:1093700000000000000000000000000000000000ED
+:1093800000000000000000000000000000000000DD
+:1093900000000000000000000000000000000000CD
+:1093A00000000000000000000000000000000000BD
+:1093B00000000000000000000000000000000000AD
+:1093C000000000000000000000000000000000009D
+:1093D000000000000000000000000000000000008D
+:1093E000000000000000000000000000000000007D
+:1093F000000000000000000000000000000000006D
+:10940000000000000000000000000000000000005C
+:10941000000000000000000000000000000000004C
+:10942000000000000000000000000000000000003C
+:10943000000000000000000000000000000000002C
+:10944000000000000000000000000000000000001C
+:10945000000000000000000000000000000000000C
+:1094600000000000000000000000000000000000FC
+:1094700000000000000000000000000000000000EC
+:1094800000000000000000000000000000000000DC
+:1094900000000000000000000000000000000000CC
+:1094A00000000000000000000000000000000000BC
+:1094B00000000000000000000000000000000000AC
+:1094C000000000000000000000000000000000009C
+:1094D000000000000000000000000000000000008C
+:1094E000000000000000000000000000000000007C
+:1094F000000000000000000000000000000000006C
+:10950000000000000000000000000000000000005B
+:10951000000000000000000000000000000000004B
+:10952000000000000000000000000000000000003B
+:10953000000000000000000000000000000000002B
+:10954000000000000000000000000000000000001B
+:10955000000000000000000000000000000000000B
+:1095600000000000000000000000000000000000FB
+:1095700000000000000000000000000000000000EB
+:1095800000000000000000000000000000000000DB
+:1095900000000000000000000000000000000000CB
+:1095A00000000000000000000000000000000000BB
+:1095B00000000000000000000000000000000000AB
+:1095C000000000000000000000000000000000009B
+:1095D000000000000000000000000000000000008B
+:1095E000000000000000000000000000000000007B
+:1095F000000000000000000000000000000000006B
+:10960000000000000000000000000000000000005A
+:10961000000000000000000000000000000000004A
+:10962000000000000000000000000000000000003A
+:10963000000000000000000000000000000000002A
+:10964000000000000000000000000000000000001A
+:10965000000000000000000000000000000000000A
+:1096600000000000000000000000000000000000FA
+:1096700000000000000000000000000000000000EA
+:1096800000000000000000000000000000000000DA
+:1096900000000000000000000000000000000000CA
+:1096A00000000000000000000000000000000000BA
+:1096B00000000000000000000000000000000000AA
+:1096C000000000000000000000000000000000009A
+:1096D000000000000000000000000000000000008A
+:1096E000000000000000000000000000000000007A
+:1096F000000000000000000000000000000000006A
+:109700000000000000000000000000000000000059
+:109710000000000000000000000000000000000049
+:109720000000000000000000000000000000000039
+:109730000000000000000000000000000000000029
+:109740000000000000000000000000000000000019
+:109750000000000000000000000000000000000009
+:1097600000000000000000000000000000000000F9
+:1097700000000000000000000000000000000000E9
+:1097800000000000000000000000000000000000D9
+:1097900000000000000000000000000000000000C9
+:1097A00000000000000000000000000000000000B9
+:1097B00000000000000000000000000000000000A9
+:1097C0000000000000000000000000000000000099
+:1097D0000000000000000000000000000000000089
+:1097E0000000000000000000000000000000000079
+:1097F0000000000000000000000000000000000069
+:109800000000000000000000000000000000000058
+:109810000000000000000000000000000000000048
+:109820000000000000000000000000000000000038
+:109830000000000000000000000000000000000028
+:109840000000000000000000000000000000000018
+:109850000000000000000000000000000000000008
+:1098600000000000000000000000000000000000F8
+:1098700000000000000000000000000000000000E8
+:1098800000000000000000000000000000000000D8
+:1098900000000000000000000000000000000000C8
+:1098A00000000000000000000000000000000000B8
+:1098B00000000000000000000000000000000000A8
+:1098C0000000000000000000000000000000000098
+:1098D0000000000000000000000000000000000088
+:1098E0000000000000000000000000000000000078
+:1098F0000000000000000000000000000000000068
+:109900000000000000000000000000000000000057
+:109910000000000000000000000000000000000047
+:109920000000000000000000000000000000000037
+:109930000000000000000000000000000000000027
+:109940000000000000000000000000000000000017
+:109950000000000000000000000000000000000007
+:1099600000000000000000000000000000000000F7
+:1099700000000000000000000000000000000000E7
+:1099800000000000000000000000000000000000D7
+:1099900000000000000000000000000000000000C7
+:1099A00000000000000000000000000000000000B7
+:1099B00000000000000000000000000000000000A7
+:1099C0000000000000000000000000000000000097
+:1099D0000000000000000000000000000000000087
+:1099E0000000000000000000000000000000000077
+:1099F0000000000000000000000000000000000067
+:109A00000000000000000000000000000000000056
+:109A10000000000000000000000000000000000046
+:109A20000000000000000000000000000000000036
+:109A30000000000000000000000000000000000026
+:109A40000000000000000000000000000000000016
+:109A50000000000000000000000000000000000006
+:109A600000000000000000000000000000000000F6
+:109A700000000000000000000000000000000000E6
+:109A800000000000000000000000000000000000D6
+:109A900000000000000000000000000000000000C6
+:109AA00000000000000000000000000000000000B6
+:109AB00000000000000000000000000000000000A6
+:109AC0000000000000000000000000000000000096
+:109AD0000000000000000000000000000000000086
+:109AE0000000000000000000000000000000000076
+:109AF0000000000000000000000000000000000066
+:109B00000000000000000000000000000000000055
+:109B10000000000000000000000000000000000045
+:109B20000000000000000000000000000000000035
+:109B30000000000000000000000000000000000025
+:109B40000000000000000000000000000000000015
+:109B50000000000000000000000000000000000005
+:109B600000000000000000000000000000000000F5
+:109B700000000000000000000000000000000000E5
+:109B800000000000000000000000000000000000D5
+:109B900000000000000000000000000000000000C5
+:109BA00000000000000000000000000000000000B5
+:109BB00000000000000000000000000000000000A5
+:109BC0000000000000000000000000000000000095
+:109BD0000000000000000000000000000000000085
+:109BE0000000000000000000000000000000000075
+:109BF0000000000000000000000000000000000065
+:109C00000000000000000000000000000000000054
+:109C10000000000000000000000000000000000044
+:109C20000000000000000000000000000000000034
+:109C30000000000000000000000000000000000024
+:109C40000000000000000000000000000000000014
+:109C50000000000000000000000000000000000004
+:109C600000000000000000000000000000000000F4
+:109C700000000000000000000000000000000000E4
+:109C800000000000000000000000000000000000D4
+:109C900000000000000000000000000000000000C4
+:109CA00000000000000000000000000000000000B4
+:109CB00000000000000000000000000000000000A4
+:109CC0000000000000000000000000000000000094
+:109CD0000000000000000000000000000000000084
+:109CE0000000000000000000000000000000000074
+:109CF0000000000000000000000000000000000064
+:109D00000000000000000000000000000000000053
+:109D10000000000000000000000000000000000043
+:109D20000000000000000000000000000000000033
+:109D30000000000000000000000000000000000023
+:109D40000000000000000000000000000000000013
+:109D50000000000000000000000000000000000003
+:109D600000000000000000000000000000000000F3
+:109D700000000000000000000000000000000000E3
+:109D800000000000000000000000000000000000D3
+:109D900000000000000000000000000000000000C3
+:109DA00000000000000000000000000000000000B3
+:109DB00000000000000000000000000000000000A3
+:109DC0000000000000000000000000000000000093
+:109DD0000000000000000000000000000000000083
+:109DE0000000000000000000000000000000000073
+:109DF0000000000000000000000000000000000063
+:109E00000000000000000000000000000000000052
+:109E10000000000000000000000000000000000042
+:109E20000000000000000000000000000000000032
+:109E30000000000000000000000000000000000022
+:109E40000000000000000000000000000000000012
+:109E50000000000000000000000000000000000002
+:109E600000000000000000000000000000000000F2
+:109E700000000000000000000000000000000000E2
+:109E800000000000000000000000000000000000D2
+:109E900000000000000000000000000000000000C2
+:109EA00000000000000000000000000000000000B2
+:109EB00000000000000000000000000000000000A2
+:109EC0000000000000000000000000000000000092
+:109ED0000000000000000000000000000000000082
+:109EE0000000000000000000000000000000000072
+:109EF0000000000000000000000000000000000062
+:109F00000000000000000000000000000000000051
+:109F10000000000000000000000000000000000041
+:109F20000000000000000000000000000000000031
+:109F30000000000000000000000000000000000021
+:109F40000000000000000000000000000000000011
+:109F50000000000000000000000000000000000001
+:109F600000000000000000000000000000000000F1
+:109F700000000000000000000000000000000000E1
+:109F800000000000000000000000000000000000D1
+:109F900000000000000000000000000000000000C1
+:109FA00000000000000000000000000000000000B1
+:109FB00000000000000000000000000000000000A1
+:109FC0000000000000000000000000000000000091
+:109FD0000000000000000000000000000000000081
+:109FE0000000000000000000000000000000000071
+:109FF0000000000000000000000000000000000061
+:10A000000000000000000000000000000000000050
+:10A010000000000000000000000000000000000040
+:10A020000000000000000000000000000000000030
+:10A030000000000000000000000000000000000020
+:10A040000000000000000000000000000000000010
+:10A050000000000000000000000000000000000000
+:10A0600000000000000000000000000000000000F0
+:10A0700000000000000000000000000000000000E0
+:10A0800000000000000000000000000000000000D0
+:10A0900000000000000000000000000000000000C0
+:10A0A00000000000000000000000000000000000B0
+:10A0B00000000000000000000000000000000000A0
+:10A0C0000000000000000000000000000000000090
+:10A0D0000000000000000000000000000000000080
+:10A0E0000000000000000000000000000000000070
+:10A0F0000000000000000000000000000000000060
+:10A10000000000000000000000000000000000004F
+:10A11000000000000000000000000000000000003F
+:10A12000000000000000000000000000000000002F
+:10A13000000000000000000000000000000000001F
+:10A14000000000000000000000000000000000000F
+:10A1500000000000000000000000000000000000FF
+:10A1600000000000000000000000000000000000EF
+:10A1700000000000000000000000000000000000DF
+:10A1800000000000000000000000000000000000CF
+:10A1900000000000000000000000000000000000BF
+:10A1A00000000000000000000000000000000000AF
+:10A1B000000000000000000000000000000000009F
+:10A1C000000000000000000000000000000000008F
+:10A1D000000000000000000000000000000000007F
+:10A1E000000000000000000000000000000000006F
+:10A1F000000000000000000000000000000000005F
+:10A20000000000000000000000000000000000004E
+:10A21000000000000000000000000000000000003E
+:10A22000000000000000000000000000000000002E
+:10A23000000000000000000000000000000000001E
+:10A24000000000000000000000000000000000000E
+:10A2500000000000000000000000000000000000FE
+:10A2600000000000000000000000000000000000EE
+:10A2700000000000000000000000000000000000DE
+:10A2800000000000000000000000000000000000CE
+:10A2900000000000000000000000000000000000BE
+:10A2A00000000000000000000000000000000000AE
+:10A2B000000000000000000000000000000000009E
+:10A2C000000000000000000000000000000000008E
+:10A2D000000000000000000000000000000000007E
+:10A2E000000000000000000000000000000000006E
+:10A2F000000000000000000000000000000000005E
+:10A30000000000000000000000000000000000004D
+:10A31000000000000000000000000000000000003D
+:10A32000000000000000000000000000000000002D
+:10A33000000000000000000000000000000000001D
+:10A34000000000000000000000000000000000000D
+:10A3500000000000000000000000000000000000FD
+:10A3600000000000000000000000000000000000ED
+:10A3700000000000000000000000000000000000DD
+:10A3800000000000000000000000000000000000CD
+:10A3900000000000000000000000000000000000BD
+:10A3A00000000000000000000000000000000000AD
+:10A3B000000000000000000000000000000000009D
+:10A3C000000000000000000000000000000000008D
+:10A3D000000000000000000000000000000000007D
+:10A3E000000000000000000000000000000000006D
+:10A3F000000000000000000000000000000000005D
+:10A40000000000000000000000000000000000004C
+:10A41000000000000000000000000000000000003C
+:10A42000000000000000000000000000000000002C
+:10A43000000000000000000000000000000000001C
+:10A44000000000000000000000000000000000000C
+:10A4500000000000000000000000000000000000FC
+:10A4600000000000000000000000000000000000EC
+:10A4700000000000000000000000000000000000DC
+:10A4800000000000000000000000000000000000CC
+:10A4900000000000000000000000000000000000BC
+:10A4A00000000000000000000000000000000000AC
+:10A4B000000000000000000000000000000000009C
+:10A4C000000000000000000000000000000000008C
+:10A4D000000000000000000000000000000000007C
+:10A4E000000000000000000000000000000000006C
+:10A4F000000000000000000000000000000000005C
+:10A50000000000000000000000000000000000004B
+:10A51000000000000000000000000000000000003B
+:10A52000000000000000000000000000000000002B
+:10A53000000000000000000000000000000000001B
+:10A54000000000000000000000000000000000000B
+:10A5500000000000000000000000000000000000FB
+:10A5600000000000000000000000000000000000EB
+:10A5700000000000000000000000000000000000DB
+:10A5800000000000000000000000000000000000CB
+:10A5900000000000000000000000000000000000BB
+:10A5A00000000000000000000000000000000000AB
+:10A5B000000000000000000000000000000000009B
+:10A5C000000000000000000000000000000000008B
+:10A5D000000000000000000000000000000000007B
+:10A5E000000000000000000000000000000000006B
+:10A5F000000000000000000000000000000000005B
+:10A60000000000000000000000000000000000004A
+:10A61000000000000000000000000000000000003A
+:10A62000000000000000000000000000000000002A
+:10A63000000000000000000000000000000000001A
+:10A64000000000000000000000000000000000000A
+:10A6500000000000000000000000000000000000FA
+:10A6600000000000000000000000000000000000EA
+:10A6700000000000000000000000000000000000DA
+:10A6800000000000000000000000000000000000CA
+:10A6900000000000000000000000000000000000BA
+:10A6A00000000000000000000000000000000000AA
+:10A6B000000000000000000000000000000000009A
+:10A6C000000000000000000000000000000000008A
+:10A6D000000000000000000000000000000000007A
+:10A6E000000000000000000000000000000000006A
+:10A6F000000000000000000000000000000000005A
+:10A700000000000000000000000000000000000049
+:10A710000000000000000000000000000000000039
+:10A720000000000000000000000000000000000029
+:10A730000000000000000000000000000000000019
+:10A740000000000000000000000000000000000009
+:10A7500000000000000000000000000000000000F9
+:10A7600000000000000000000000000000000000E9
+:10A7700000000000000000000000000000000000D9
+:10A7800000000000000000000000000000000000C9
+:10A7900000000000000000000000000000000000B9
+:10A7A00000000000000000000000000000000000A9
+:10A7B0000000000000000000000000000000000099
+:10A7C0000000000000000000000000000000000089
+:10A7D0000000000000000000000000000000000079
+:10A7E0000000000000000000000000000000000069
+:10A7F0000000000000000000000000000000000059
+:10A800000000000000000000000000000000000048
+:10A810000000000000000000000000000000000038
+:10A820000000000000000000000000000000000028
+:10A830000000000000000000000000000000000018
+:10A840000000000000000000000000000000000008
+:10A8500000000000000000000000000000000000F8
+:10A8600000000000000000000000000000000000E8
+:10A8700000000000000000000000000000000000D8
+:10A8800000000000000000000000000000000000C8
+:10A8900000000000000000000000000000000000B8
+:10A8A00000000000000000000000000000000000A8
+:10A8B0000000000000000000000000000000000098
+:10A8C0000000000000000000000000000000000088
+:10A8D0000000000000000000000000000000000078
+:10A8E0000000000000000000000000000000000068
+:10A8F0000000000000000000000000000000000058
+:10A900000000000000000000000000000000000047
+:10A910000000000000000000000000000000000037
+:10A920000000000000000000000000000000000027
+:10A930000000000000000000000000000000000017
+:10A940000000000000000000000000000000000007
+:10A9500000000000000000000000000000000000F7
+:10A9600000000000000000000000000000000000E7
+:10A9700000000000000000000000000000000000D7
+:10A9800000000000000000000000000000000000C7
+:10A9900000000000000000000000000000000000B7
+:10A9A00000000000000000000000000000000000A7
+:10A9B0000000000000000000000000000000000097
+:10A9C0000000000000000000000000000000000087
+:10A9D0000000000000000000000000000000000077
+:10A9E0000000000000000000000000000000000067
+:10A9F0000000000000000000000000000000000057
+:10AA00000000000000000000000000000000000046
+:10AA10000000000000000000000000000000000036
+:10AA20000000000000000000000000000000000026
+:10AA30000000000000000000000000000000000016
+:10AA40000000000000000000000000000000000006
+:10AA500000000000000000000000000000000000F6
+:10AA600000000000000000000000000000000000E6
+:10AA700000000000000000000000000000000000D6
+:10AA800000000000000000000000000000000000C6
+:10AA900000000000000000000000000000000000B6
+:10AAA00000000000000000000000000000000000A6
+:10AAB0000000000000000000000000000000000096
+:10AAC0000000000000000000000000000000000086
+:10AAD0000000000000000000000000000000000076
+:10AAE0000000000000000000000000000000000066
+:10AAF0000000000000000000000000000000000056
+:10AB00000000000000000000000000000000000045
+:10AB10000000000000000000000000000000000035
+:10AB20000000000000000000000000000000000025
+:10AB30000000000000000000000000000000000015
+:10AB40000000000000000000000000000000000005
+:10AB500000000000000000000000000000000000F5
+:10AB600000000000000000000000000000000000E5
+:10AB700000000000000000000000000000000000D5
+:10AB800000000000000000000000000000000000C5
+:10AB900000000000000000000000000000000000B5
+:10ABA00000000000000000000000000000000000A5
+:10ABB0000000000000000000000000000000000095
+:10ABC0000000000000000000000000000000000085
+:10ABD0000000000000000000000000000000000075
+:10ABE0000000000000000000000000000000000065
+:10ABF0000000000000000000000000000000000055
+:10AC00000000000000000000000000000000000044
+:10AC10000000000000000000000000000000000034
+:10AC20000000000000000000000000000000000024
+:10AC30000000000000000000000000000000000014
+:10AC40000000000000000000000000000000000004
+:10AC500000000000000000000000000000000000F4
+:10AC600000000000000000000000000000000000E4
+:10AC700000000000000000000000000000000000D4
+:10AC800000000000000000000000000000000000C4
+:10AC900000000000000000000000000000000000B4
+:10ACA00000000000000000000000000000000000A4
+:10ACB0000000000000000000000000000000000094
+:10ACC0000000000000000000000000000000000084
+:10ACD0000000000000000000000000000000000074
+:10ACE0000000000000000000000000000000000064
+:10ACF0000000000000000000000000000000000054
+:10AD00000000000000000000000000000000000043
+:10AD10000000000000000000000000000000000033
+:10AD20000000000000000000000000000000000023
+:10AD30000000000000000000000000000000000013
+:10AD40000000000000000000000000000000000003
+:10AD500000000000000000000000000000000000F3
+:10AD600000000000000000000000000000000000E3
+:10AD700000000000000000000000000000000000D3
+:10AD800000000000000000000000000000000000C3
+:10AD900000000000000000000000000000000000B3
+:10ADA00000000000000000000000000000000000A3
+:10ADB0000000000000000000000000000000000093
+:10ADC0000000000000000000000000000000000083
+:10ADD0000000000000000000000000000000000073
+:10ADE0000000000000000000000000000000000063
+:10ADF0000000000000000000000000000000000053
+:10AE00000000000000000000000000000000000042
+:10AE10000000000000000000000000000000000032
+:10AE20000000000000000000000000000000000022
+:10AE30000000000000000000000000000000000012
+:10AE40000000000000000000000000000000000002
+:10AE500000000000000000000000000000000000F2
+:10AE600000000000000000000000000000000000E2
+:10AE700000000000000000000000000000000000D2
+:10AE800000000000000000000000000000000000C2
+:10AE900000000000000000000000000000000000B2
+:10AEA00000000000000000000000000000000000A2
+:10AEB0000000000000000000000000000000000092
+:10AEC0000000000000000000000000000000000082
+:10AED0000000000000000000000000000000000072
+:10AEE0000000000000000000000000000000000062
+:10AEF0000000000000000000000000000000000052
+:10AF00000000000000000000000000000000000041
+:10AF10000000000000000000000000000000000031
+:10AF20000000000000000000000000000000000021
+:10AF30000000000000000000000000000000000011
+:10AF40000000000000000000000000000000000001
+:10AF500000000000000000000000000000000000F1
+:10AF600000000000000000000000000000000000E1
+:10AF700000000000000000000000000000000000D1
+:10AF800000000000000000000000000000000000C1
+:10AF900000000000000000000000000000000000B1
+:10AFA00000000000000000000000000000000000A1
+:10AFB0000000000000000000000000000000000091
+:10AFC0000000000000000000000000000000000081
+:10AFD0000000000000000000000000000000000071
+:10AFE0000000000000000000000000000000000061
+:10AFF0000000000000000000000000000000000051
+:10B000000000000000000000000000000000000040
+:10B010000000000000000000000000000000000030
+:10B020000000000000000000000000000000000020
+:10B030000000000000000000000000000000000010
+:10B040000000000000000000000000000000000000
+:10B0500000000000000000000000000000000000F0
+:10B0600000000000000000000000000000000000E0
+:10B0700000000000000000000000000000000000D0
+:10B0800000000000000000000000000000000000C0
+:10B0900000000000000000000000000000000000B0
+:10B0A00000000000000000000000000000000000A0
+:10B0B0000000000000000000000000000000000090
+:10B0C0000000000000000000000000000000000080
+:10B0D0000000000000000000000000000000000070
+:10B0E0000000000000000000000000000000000060
+:10B0F0000000000000000000000000000000000050
+:10B10000000000000000000000000000000000003F
+:10B11000000000000000000000000000000000002F
+:10B12000000000000000000000000000000000001F
+:10B13000000000000000000000000000000000000F
+:10B1400000000000000000000000000000000000FF
+:10B1500000000000000000000000000000000000EF
+:10B1600000000000000000000000000000000000DF
+:10B1700000000000000000000000000000000000CF
+:10B1800000000000000000000000000000000000BF
+:10B1900000000000000000000000000000000000AF
+:10B1A000000000000000000000000000000000009F
+:10B1B000000000000000000000000000000000008F
+:10B1C000000000000000000000000000000000007F
+:10B1D000000000000000000000000000000000006F
+:10B1E000000000000000000000000000000000005F
+:10B1F000000000000000000000000000000000004F
+:10B20000000000000000000000000000000000003E
+:10B21000000000000000000000000000000000002E
+:10B22000000000000000000000000000000000001E
+:10B23000000000000000000000000000000000000E
+:10B2400000000000000000000000000000000000FE
+:10B2500000000000000000000000000000000000EE
+:10B2600000000000000000000000000000000000DE
+:10B2700000000000000000000000000000000000CE
+:10B2800000000000000000000000000000000000BE
+:10B2900000000000000000000000000000000000AE
+:10B2A000000000000000000000000000000000009E
+:10B2B000000000000000000000000000000000008E
+:10B2C000000000000000000000000000000000007E
+:10B2D000000000000000000000000000000000006E
+:10B2E000000000000000000000000000000000005E
+:10B2F000000000000000000000000000000000004E
+:10B30000000000000000000000000000000000003D
+:10B31000000000000000000000000000000000002D
+:10B32000000000000000000000000000000000001D
+:10B33000000000000000000000000000000000000D
+:10B3400000000000000000000000000000000000FD
+:10B3500000000000000000000000000000000000ED
+:10B3600000000000000000000000000000000000DD
+:10B3700000000000000000000000000000000000CD
+:10B3800000000000000000000000000000000000BD
+:10B3900000000000000000000000000000000000AD
+:10B3A000000000000000000000000000000000009D
+:10B3B000000000000000000000000000000000008D
+:10B3C000000000000000000000000000000000007D
+:10B3D000000000000000000000000000000000006D
+:10B3E000000000000000000000000000000000005D
+:10B3F000000000000000000000000000000000004D
+:10B40000000000000000000000000000000000003C
+:10B41000000000000000000000000000000000002C
+:10B42000000000000000000000000000000000001C
+:10B43000000000000000000000000000000000000C
+:10B4400000000000000000000000000000000000FC
+:10B4500000000000000000000000000000000000EC
+:10B4600000000000000000000000000000000000DC
+:10B4700000000000000000000000000000000000CC
+:10B4800000000000000000000000000000000000BC
+:10B4900000000000000000000000000000000000AC
+:10B4A000000000000000000000000000000000009C
+:10B4B000000000000000000000000000000000008C
+:10B4C000000000000000000000000000000000007C
+:10B4D000000000000000000000000000000000006C
+:10B4E000000000000000000000000000000000005C
+:10B4F000000000000000000000000000000000004C
+:10B50000000000000000000000000000000000003B
+:10B51000000000000000000000000000000000002B
+:10B52000000000000000000000000000000000001B
+:10B53000000000000000000000000000000000000B
+:10B5400000000000000000000000000000000000FB
+:10B5500000000000000000000000000000000000EB
+:10B5600000000000000000000000000000000000DB
+:10B5700000000000000000000000000000000000CB
+:10B5800000000000000000000000000000000000BB
+:10B5900000000000000000000000000000000000AB
+:10B5A000000000000000000000000000000000009B
+:10B5B000000000000000000000000000000000008B
+:10B5C000000000000000000000000000000000007B
+:10B5D000000000000000000000000000000000006B
+:10B5E000000000000000000000000000000000005B
+:10B5F000000000000000000000000000000000004B
+:10B60000000000000000000000000000000000003A
+:10B61000000000000000000000000000000000002A
+:10B62000000000000000000000000000000000001A
+:10B63000000000000000000000000000000000000A
+:10B6400000000000000000000000000000000000FA
+:10B6500000000000000000000000000000000000EA
+:10B6600000000000000000000000000000000000DA
+:10B6700000000000000000000000000000000000CA
+:10B6800000000000000000000000000000000000BA
+:10B6900000000000000000000000000000000000AA
+:10B6A000000000000000000000000000000000009A
+:10B6B000000000000000000000000000000000008A
+:10B6C000000000000000000000000000000000007A
+:10B6D000000000000000000000000000000000006A
+:10B6E000000000000000000000000000000000005A
+:10B6F000000000000000000000000000000000004A
+:10B700000000000000000000000000000000000039
+:10B710000000000000000000000000000000000029
+:10B720000000000000000000000000000000000019
+:10B730000000000000000000000000000000000009
+:10B7400000000000000000000000000000000000F9
+:10B7500000000000000000000000000000000000E9
+:10B7600000000000000000000000000000000000D9
+:10B7700000000000000000000000000000000000C9
+:10B7800000000000000000000000000000000000B9
+:10B7900000000000000000000000000000000000A9
+:10B7A0000000000000000000000000000000000099
+:10B7B0000000000000000000000000000000000089
+:10B7C0000000000000000000000000000000000079
+:10B7D0000000000000000000000000000000000069
+:10B7E0000000000000000000000000000000000059
+:10B7F0000000000000000000000000000000000049
+:10B800000000000000000000000000000000000038
+:10B810000000000000000000000000000000000028
+:10B820000000000000000000000000000000000018
+:10B830000000000000000000000000000000000008
+:10B8400000000000000000000000000000000000F8
+:10B8500000000000000000000000000000000000E8
+:10B8600000000000000000000000000000000000D8
+:10B8700000000000000000000000000000000000C8
+:10B8800000000000000000000000000000000000B8
+:10B8900000000000000000000000000000000000A8
+:10B8A0000000000000000000000000000000000098
+:10B8B0000000000000000000000000000000000088
+:10B8C0000000000000000000000000000000000078
+:10B8D0000000000000000000000000000000000068
+:10B8E0000000000000000000000000000000000058
+:10B8F0000000000000000000000000000000000048
+:10B900000000000000000000000000000000000037
+:10B910000000000000000000000000000000000027
+:10B920000000000000000000000000000000000017
+:10B930000000000000000000000000000000000007
+:10B9400000000000000000000000000000000000F7
+:10B9500000000000000000000000000000000000E7
+:10B9600000000000000000000000000000000000D7
+:10B9700000000000000000000000000000000000C7
+:10B9800000000000000000000000000000000000B7
+:10B9900000000000000000000000000000000000A7
+:10B9A0000000000000000000000000000000000097
+:10B9B0000000000000000000000000000000000087
+:10B9C0000000000000000000000000000000000077
+:10B9D0000000000000000000000000000000000067
+:10B9E0000000000000000000000000000000000057
+:10B9F0000000000000000000000000000000000047
+:10BA00000000000000000000000000000000000036
+:10BA10000000000000000000000000000000000026
+:10BA20000000000000000000000000000000000016
+:10BA30000000000000000000000000000000000006
+:10BA400000000000000000000000000000000000F6
+:10BA500000000000000000000000000000000000E6
+:10BA600000000000000000000000000000000000D6
+:10BA700000000000000000000000000000000000C6
+:10BA800000000000000000000000000000000000B6
+:10BA900000000000000000000000000000000000A6
+:10BAA0000000000000000000000000000000000096
+:10BAB0000000000000000000000000000000000086
+:10BAC0000000000000000000000000000000000076
+:10BAD0000000000000000000000000000000000066
+:10BAE0000000000000000000000000000000000056
+:10BAF0000000000000000000000000000000000046
+:10BB00000000000000000000000000000000000035
+:10BB10000000000000000000000000000000000025
+:10BB20000000000000000000000000000000000015
+:10BB30000000000000000000000000000000000005
+:10BB400000000000000000000000000000000000F5
+:10BB500000000000000000000000000000000000E5
+:10BB600000000000000000000000000000000000D5
+:10BB700000000000000000000000000000000000C5
+:10BB800000000000000000000000000000000000B5
+:10BB900000000000000000000000000000000000A5
+:10BBA0000000000000000000000000000000000095
+:10BBB0000000000000000000000000000000000085
+:10BBC0000000000000000000000000000000000075
+:10BBD0000000000000000000000000000000000065
+:10BBE0000000000000000000000000000000000055
+:10BBF0000000000000000000000000000000000045
+:10BC00000000000000000000000000000000000034
+:10BC10000000000000000000000000000000000024
+:10BC20000000000000000000000000000000000014
+:10BC30000000000000000000000000000000000004
+:10BC400000000000000000000000000000000000F4
+:10BC500000000000000000000000000000000000E4
+:10BC600000000000000000000000000000000000D4
+:10BC700000000000000000000000000000000000C4
+:10BC800000000000000000000000000000000000B4
+:10BC900000000000000000000000000000000000A4
+:10BCA0000000000000000000000000000000000094
+:10BCB0000000000000000000000000000000000084
+:10BCC0000000000000000000000000000000000074
+:10BCD0000000000000000000000000000000000064
+:10BCE0000000000000000000000000000000000054
+:10BCF0000000000000000000000000000000000044
+:10BD00000000000000000000000000000000000033
+:10BD10000000000000000000000000000000000023
+:10BD20000000000000000000000000000000000013
+:10BD30000000000000000000000000000000000003
+:10BD400000000000000000000000000000000000F3
+:10BD500000000000000000000000000000000000E3
+:10BD600000000000000000000000000000000000D3
+:10BD700000000000000000000000000000000000C3
+:10BD800000000000000000000000000000000000B3
+:10BD900000000000000000000000000000000000A3
+:10BDA0000000000000000000000000000000000093
+:10BDB0000000000000000000000000000000000083
+:10BDC0000000000000000000000000000000000073
+:10BDD0000000000000000000000000000000000063
+:10BDE0000000000000000000000000000000000053
+:10BDF0000000000000000000000000000000000043
+:10BE00000000000000000000000000000000000032
+:10BE10000000000000000000000000000000000022
+:10BE20000000000000000000000000000000000012
+:10BE30000000000000000000000000000000000002
+:10BE400000000000000000000000000000000000F2
+:10BE500000000000000000000000000000000000E2
+:10BE600000000000000000000000000000000000D2
+:10BE700000000000000000000000000000000000C2
+:10BE800000000000000000000000000000000000B2
+:10BE900000000000000000000000000000000000A2
+:10BEA0000000000000000000000000000000000092
+:10BEB0000000000000000000000000000000000082
+:10BEC0000000000000000000000000000000000072
+:10BED0000000000000000000000000000000000062
+:10BEE0000000000000000000000000000000000052
+:10BEF0000000000000000000000000000000000042
+:10BF00000000000000000000000000000000000031
+:10BF10000000000000000000000000000000000021
+:10BF20000000000000000000000000000000000011
+:10BF30000000000000000000000000000000000001
+:10BF400000000000000000000000000000000000F1
+:10BF500000000000000000000000000000000000E1
+:10BF600000000000000000000000000000000000D1
+:10BF700000000000000000000000000000000000C1
+:10BF800000000000000000000000000000000000B1
+:10BF900000000000000000000000000000000000A1
+:10BFA0000000000000000000000000000000000091
+:10BFB0000000000000000000000000000000000081
+:10BFC0000000000000000000000000000000000071
+:10BFD0000000000000000000000000000000000061
+:10BFE0000000000000000000000000000000000051
+:10BFF0000000000000000000000000000000000041
+:10C000000000000000000000000000000000000030
+:10C010000000000000000000000000000000000020
+:10C020000000000000000000000000000000000010
+:10C030000000000000000000000000000000000000
+:10C0400000000000000000000000000000000000F0
+:10C0500000000000000000000000000000000000E0
+:10C0600000000000000000000000000000000000D0
+:10C0700000000000000000000000000000000000C0
+:10C0800000000000000000000000000000000000B0
+:10C0900000000000000000000000000000000000A0
+:10C0A0000000000000000000000000000000000090
+:10C0B0000000000000000000000000000000000080
+:10C0C0000000000000000000000000000000000070
+:10C0D0000000000000000000000000000000000060
+:10C0E0000000000000000000000000000000000050
+:10C0F0000000000000000000000000000000000040
+:10C10000000000000000000000000000000000002F
+:10C11000000000000000000000000000000000001F
+:10C12000000000000000000000000000000000000F
+:10C1300000000000000000000000000000000000FF
+:10C1400000000000000000000000000000000000EF
+:10C1500000000000000000000000000000000000DF
+:10C1600000000000000000000000000000000000CF
+:10C1700000000000000000000000000000000000BF
+:10C1800000000000000000000000000000000000AF
+:10C19000000000000000000000000000000000009F
+:10C1A000000000000000000000000000000000008F
+:10C1B000000000000000000000000000000000007F
+:10C1C000000000000000000000000000000000006F
+:10C1D000000000000000000000000000000000005F
+:10C1E000000000000000000000000000000000004F
+:10C1F000000000000000000000000000000000003F
+:10C20000000000000000000000000000000000002E
+:10C21000000000000000000000000000000000001E
+:10C22000000000000000000000000000000000000E
+:10C2300000000000000000000000000000000000FE
+:10C2400000000000000000000000000000000000EE
+:10C2500000000000000000000000000000000000DE
+:10C2600000000000000000000000000000000000CE
+:10C2700000000000000000000000000000000000BE
+:10C2800000000000000000000000000000000000AE
+:10C29000000000000000000000000000000000009E
+:10C2A000000000000000000000000000000000008E
+:10C2B000000000000000000000000000000000007E
+:10C2C000000000000000000000000000000000006E
+:10C2D000000000000000000000000000000000005E
+:10C2E000000000000000000000000000000000004E
+:10C2F000000000000000000000000000000000003E
+:10C30000000000000000000000000000000000002D
+:10C31000000000000000000000000000000000001D
+:10C32000000000000000000000000000000000000D
+:10C3300000000000000000000000000000000000FD
+:10C3400000000000000000000000000000000000ED
+:10C3500000000000000000000000000000000000DD
+:10C3600000000000000000000000000000000000CD
+:10C3700000000000000000000000000000000000BD
+:10C3800000000000000000000000000000000000AD
+:10C39000000000000000000000000000000000009D
+:10C3A000000000000000000000000000000000008D
+:10C3B000000000000000000000000000000000007D
+:10C3C000000000000000000000000000000000006D
+:10C3D000000000000000000000000000000000005D
+:10C3E000000000000000000000000000000000004D
+:10C3F000000000000000000000000000000000003D
+:10C40000000000000000000000000000000000002C
+:10C41000000000000000000000000000000000001C
+:10C42000000000000000000000000000000000000C
+:10C4300000000000000000000000000000000000FC
+:10C4400000000000000000000000000000000000EC
+:10C4500000000000000000000000000000000000DC
+:10C4600000000000000000000000000000000000CC
+:10C4700000000000000000000000000000000000BC
+:10C4800000000000000000000000000000000000AC
+:10C49000000000000000000000000000000000009C
+:10C4A000000000000000000000000000000000008C
+:10C4B000000000000000000000000000000000007C
+:10C4C000000000000000000000000000000000006C
+:10C4D000000000000000000000000000000000005C
+:10C4E000000000000000000000000000000000004C
+:10C4F000000000000000000000000000000000003C
+:10C50000000000000000000000000000000000002B
+:10C51000000000000000000000000000000000001B
+:10C52000000000000000000000000000000000000B
+:10C5300000000000000000000000000000000000FB
+:10C5400000000000000000000000000000000000EB
+:10C5500000000000000000000000000000000000DB
+:10C5600000000000000000000000000000000000CB
+:10C5700000000000000000000000000000000000BB
+:10C5800000000000000000000000000000000000AB
+:10C59000000000000000000000000000000000009B
+:10C5A000000000000000000000000000000000008B
+:10C5B000000000000000000000000000000000007B
+:10C5C000000000000000000000000000000000006B
+:10C5D000000000000000000000000000000000005B
+:10C5E000000000000000000000000000000000004B
+:10C5F000000000000000000000000000000000003B
+:10C60000000000000000000000000000000000002A
+:10C61000000000000000000000000000000000001A
+:10C62000000000000000000000000000000000000A
+:10C6300000000000000000000000000000000000FA
+:10C6400000000000000000000000000000000000EA
+:10C6500000000000000000000000000000000000DA
+:10C6600000000000000000000000000000000000CA
+:10C6700000000000000000000000000000000000BA
+:10C6800000000000000000000000000000000000AA
+:10C69000000000000000000000000000000000009A
+:10C6A000000000000000000000000000000000008A
+:10C6B000000000000000000000000000000000007A
+:10C6C000000000000000000000000000000000006A
+:10C6D000000000000000000000000000000000005A
+:10C6E000000000000000000000000000000000004A
+:10C6F000000000000000000000000000000000003A
+:10C700000000000000000000000000000000000029
+:10C710000000000000000000000000000000000019
+:10C720000000000000000000000000000000000009
+:10C7300000000000000000000000000000000000F9
+:10C7400000000000000000000000000000000000E9
+:10C7500000000000000000000000000000000000D9
+:10C7600000000000000000000000000000000000C9
+:10C7700000000000000000000000000000000000B9
+:10C7800000000000000000000000000000000000A9
+:10C790000000000000000000000000000000000099
+:10C7A0000000000000000000000000000000000089
+:10C7B0000000000000000000000000000000000079
+:10C7C0000000000000000000000000000000000069
+:10C7D0000000000000000000000000000000000059
+:10C7E0000000000000000000000000000000000049
+:10C7F0000000000000000000000000000000000039
+:10C800000000000000000000000000000000000028
+:10C810000000000000000000000000000000000018
+:10C820000000000000000000000000000000000008
+:10C8300000000000000000000000000000000000F8
+:10C8400000000000000000000000000000000000E8
+:10C8500000000000000000000000000000000000D8
+:10C8600000000000000000000000000000000000C8
+:10C8700000000000000000000000000000000000B8
+:10C8800000000000000000000000000000000000A8
+:10C890000000000000000000000000000000000098
+:10C8A0000000000000000000000000000000000088
+:10C8B0000000000000000000000000000000000078
+:10C8C0000000000000000000000000000000000068
+:10C8D0000000000000000000000000000000000058
+:10C8E0000000000000000000000000000000000048
+:10C8F0000000000000000000000000000000000038
+:10C900000000000000000000000000000000000027
+:10C910000000000000000000000000000000000017
+:10C920000000000000000000000000000000000007
+:10C9300000000000000000000000000000000000F7
+:10C9400000000000000000000000000000000000E7
+:10C9500000000000000000000000000000000000D7
+:10C9600000000000000000000000000000000000C7
+:10C9700000000000000000000000000000000000B7
+:10C9800000000000000000000000000000000000A7
+:10C990000000000000000000000000000000000097
+:10C9A0000000000000000000000000000000000087
+:10C9B0000000000000000000000000000000000077
+:10C9C0000000000000000000000000000000000067
+:10C9D0000000000000000000000000000000000057
+:10C9E0000000000000000000000000000000000047
+:10C9F0000000000000000000000000000000000037
+:10CA00000000000000000000000000000000000026
+:10CA10000000000000000000000000000000000016
+:10CA20000000000000000000000000000000000006
+:10CA300000000000000000000000000000000000F6
+:10CA400000000000000000000000000000000000E6
+:10CA500000000000000000000000000000000000D6
+:10CA600000000000000000000000000000000000C6
+:10CA700000000000000000000000000000000000B6
+:10CA800000000000000000000000000000000000A6
+:10CA90000000000000000000000000000000000096
+:10CAA0000000000000000000000000000000000086
+:10CAB0000000000000000000000000000000000076
+:10CAC0000000000000000000000000000000000066
+:10CAD0000000000000000000000000000000000056
+:10CAE0000000000000000000000000000000000046
+:10CAF0000000000000000000000000000000000036
+:10CB00000000000000000000000000000000000025
+:10CB10000000000000000000000000000000000015
+:10CB20000000000000000000000000000000000005
+:10CB300000000000000000000000000000000000F5
+:10CB400000000000000000000000000000000000E5
+:10CB500000000000000000000000000000000000D5
+:10CB600000000000000000000000000000000000C5
+:10CB700000000000000000000000000000000000B5
+:10CB800000000000000000000000000000000000A5
+:10CB90000000000000000000000000000000000095
+:10CBA0000000000000000000000000000000000085
+:10CBB0000000000000000000000000000000000075
+:10CBC0000000000000000000000000000000000065
+:10CBD0000000000000000000000000000000000055
+:10CBE0000000000000000000000000000000000045
+:10CBF0000000000000000000000000000000000035
+:10CC00000000000000000000000000000000000024
+:10CC10000000000000000000000000000000000014
+:10CC20000000000000000000000000000000000004
+:10CC300000000000000000000000000000000000F4
+:10CC400000000000000000000000000000000000E4
+:10CC500000000000000000000000000000000000D4
+:10CC600000000000000000000000000000000000C4
+:10CC700000000000000000000000000000000000B4
+:10CC800000000000000000000000000000000000A4
+:10CC90000000000000000000000000000000000094
+:10CCA0000000000000000000000000000000000084
+:10CCB0000000000000000000000000000000000074
+:10CCC0000000000000000000000000000000000064
+:10CCD0000000000000000000000000000000000054
+:10CCE0000000000000000000000000000000000044
+:10CCF0000000000000000000000000000000000034
+:10CD00000000000000000000000000000000000023
+:10CD10000000000000000000000000000000000013
+:10CD20000000000000000000000000000000000003
+:10CD300000000000000000000000000000000000F3
+:10CD400000000000000000000000000000000000E3
+:10CD500000000000000000000000000000000000D3
+:10CD600000000000000000000000000000000000C3
+:10CD700000000000000000000000000000000000B3
+:10CD800000000000000000000000000000000000A3
+:10CD90000000000000000000000000000000000093
+:10CDA0000000000000000000000000000000000083
+:10CDB0000000000000000000000000000000000073
+:10CDC0000000000000000000000000000000000063
+:10CDD0000000000000000000000000000000000053
+:10CDE0000000000000000000000000000000000043
+:10CDF0000000000000000000000000000000000033
+:10CE00000000000000000000000000000000000022
+:10CE10000000000000000000000000000000000012
+:10CE20000000000000000000000000000000000002
+:10CE300000000000000000000000000000000000F2
+:10CE400000000000000000000000000000000000E2
+:10CE500000000000000000000000000000000000D2
+:10CE600000000000000000000000000000000000C2
+:10CE700000000000000000000000000000000000B2
+:10CE800000000000000000000000000000000000A2
+:10CE90000000000000000000000000000000000092
+:10CEA0000000000000000000000000000000000082
+:10CEB0000000000000000000000000000000000072
+:10CEC0000000000000000000000000000000000062
+:10CED0000000000000000000000000000000000052
+:10CEE0000000000000000000000000000000000042
+:10CEF0000000000000000000000000000000000032
+:10CF00000000000000000000000000000000000021
+:10CF10000000000000000000000000000000000011
+:10CF20000000000000000000000000000000000001
+:10CF300000000000000000000000000000000000F1
+:10CF400000000000000000000000000000000000E1
+:10CF500000000000000000000000000000000000D1
+:10CF600000000000000000000000000000000000C1
+:10CF700000000000000000000000000000000000B1
+:10CF800000000000000000000000000000000000A1
+:10CF90000000000000000000000000000000000091
+:10CFA0000000000000000000000000000000000081
+:10CFB0000000000000000000000000000000000071
+:10CFC0000000000000000000000000000000000061
+:10CFD0000000000000000000000000000000000051
+:10CFE0000000000000000000000000000000000041
+:10CFF0000000000000000000000000000000000031
+:10D000000000000000000000000000000000000020
+:10D010000000000000000000000000000000000010
+:10D020000000000000000000000000000000000000
+:10D0300000000000000000000000000000000000F0
+:10D0400000000000000000000000000000000000E0
+:10D0500000000000000000000000000000000000D0
+:10D0600000000000000000000000000000000000C0
+:10D0700000000000000000000000000000000000B0
+:10D0800000000000000000000000000000000000A0
+:10D090000000000000000000000000000000000090
+:10D0A0000000000000000000000000000000000080
+:10D0B0000000000000000000000000000000000070
+:10D0C0000000000000000000000000000000000060
+:10D0D0000000000000000000000000000000000050
+:10D0E0000000000000000000000000000000000040
+:10D0F0000000000000000000000000000000000030
+:10D10000000000000000000000000000000000001F
+:10D11000000000000000000000000000000000000F
+:10D1200000000000000000000000000000000000FF
+:10D1300000000000000000000000000000000000EF
+:10D1400000000000000000000000000000000000DF
+:10D1500000000000000000000000000000000000CF
+:10D1600000000000000000000000000000000000BF
+:10D1700000000000000000000000000000000000AF
+:10D18000000000000000000000000000000000009F
+:10D19000000000000000000000000000000000008F
+:10D1A000000000000000000000000000000000007F
+:10D1B000000000000000000000000000000000006F
+:10D1C000000000000000000000000000000000005F
+:10D1D000000000000000000000000000000000004F
+:10D1E000000000000000000000000000000000003F
+:10D1F000000000000000000000000000000000002F
+:10D20000000000000000000000000000000000001E
+:10D21000000000000000000000000000000000000E
+:10D2200000000000000000000000000000000000FE
+:10D2300000000000000000000000000000000000EE
+:10D2400000000000000000000000000000000000DE
+:10D2500000000000000000000000000000000000CE
+:10D2600000000000000000000000000000000000BE
+:10D2700000000000000000000000000000000000AE
+:10D28000000000000000000000000000000000009E
+:10D29000000000000000000000000000000000008E
+:10D2A000000000000000000000000000000000007E
+:10D2B000000000000000000000000000000000006E
+:10D2C000000000000000000000000000000000005E
+:10D2D000000000000000000000000000000000004E
+:10D2E000000000000000000000000000000000003E
+:10D2F000000000000000000000000000000000002E
+:10D30000000000000000000000000000000000001D
+:10D31000000000000000000000000000000000000D
+:10D3200000000000000000000000000000000000FD
+:10D3300000000000000000000000000000000000ED
+:10D3400000000000000000000000000000000000DD
+:10D3500000000000000000000000000000000000CD
+:10D3600000000000000000000000000000000000BD
+:10D3700000000000000000000000000000000000AD
+:10D38000000000000000000000000000000000009D
+:10D39000000000000000000000000000000000008D
+:10D3A000000000000000000000000000000000007D
+:10D3B000000000000000000000000000000000006D
+:10D3C000000000000000000000000000000000005D
+:10D3D000000000000000000000000000000000004D
+:10D3E000000000000000000000000000000000003D
+:10D3F000000000000000000000000000000000002D
+:10D40000000000000000000000000000000000001C
+:10D41000000000000000000000000000000000000C
+:10D4200000000000000000000000000000000000FC
+:10D4300000000000000000000000000000000000EC
+:10D4400000000000000000000000000000000000DC
+:10D4500000000000000000000000000000000000CC
+:10D4600000000000000000000000000000000000BC
+:10D4700000000000000000000000000000000000AC
+:10D48000000000000000000000000000000000009C
+:10D49000000000000000000000000000000000008C
+:10D4A000000000000000000000000000000000007C
+:10D4B000000000000000000000000000000000006C
+:10D4C000000000000000000000000000000000005C
+:10D4D000000000000000000000000000000000004C
+:10D4E000000000000000000000000000000000003C
+:10D4F000000000000000000000000000000000002C
+:10D50000000000000000000000000000000000001B
+:10D51000000000000000000000000000000000000B
+:10D5200000000000000000000000000000000000FB
+:10D5300000000000000000000000000000000000EB
+:10D5400000000000000000000000000000000000DB
+:10D5500000000000000000000000000000000000CB
+:10D5600000000000000000000000000000000000BB
+:10D5700000000000000000000000000000000000AB
+:10D58000000000000000000000000000000000009B
+:10D59000000000000000000000000000000000008B
+:10D5A000000000000000000000000000000000007B
+:10D5B000000000000000000000000000000000006B
+:10D5C000000000000000000000000000000000005B
+:10D5D000000000000000000000000000000000004B
+:10D5E000000000000000000000000000000000003B
+:10D5F000000000000000000000000000000000002B
+:10D60000000000000000000000000000000000001A
+:10D61000000000000000000000000000000000000A
+:10D6200000000000000000000000000000000000FA
+:10D6300000000000000000000000000000000000EA
+:10D6400000000000000000000000000000000000DA
+:10D6500000000000000000000000000000000000CA
+:10D6600000000000000000000000000000000000BA
+:10D6700000000000000000000000000000000000AA
+:10D68000000000000000000000000000000000009A
+:10D69000000000000000000000000000000000008A
+:10D6A000000000000000000000000000000000007A
+:10D6B000000000000000000000000000000000006A
+:10D6C000000000000000000000000000000000005A
+:10D6D000000000000000000000000000000000004A
+:10D6E000000000000000000000000000000000003A
+:10D6F000000000000000000000000000000000002A
+:10D700000000000000000000000000000000000019
+:10D710000000000000000000000000000000000009
+:10D7200000000000000000000000000000000000F9
+:10D7300000000000000000000000000000000000E9
+:10D7400000000000000000000000000000000000D9
+:10D7500000000000000000000000000000000000C9
+:10D7600000000000000000000000000000000000B9
+:10D7700000000000000000000000000000000000A9
+:10D780000000000000000000000000000000000099
+:10D790000000000000000000000000000000000089
+:10D7A0000000000000000000000000000000000079
+:10D7B0000000000000000000000000000000000069
+:10D7C0000000000000000000000000000000000059
+:10D7D0000000000000000000000000000000000049
+:10D7E0000000000000000000000000000000000039
+:10D7F0000000000000000000000000000000000029
+:10D800000000000000000000000000000000000018
+:10D810000000000000000000000000000000000008
+:10D8200000000000000000000000000000000000F8
+:10D8300000000000000000000000000000000000E8
+:10D8400000000000000000000000000000000000D8
+:10D8500000000000000000000000000000000000C8
+:10D8600000000000000000000000000000000000B8
+:10D8700000000000000000000000000000000000A8
+:10D880000000000000000000000000000000000098
+:10D890000000000000000000000000000000000088
+:10D8A0000000000000000000000000000000000078
+:10D8B0000000000000000000000000000000000068
+:10D8C0000000000000000000000000000000000058
+:10D8D0000000000000000000000000000000000048
+:10D8E0000000000000000000000000000000000038
+:10D8F0000000000000000000000000000000000028
+:10D900000000000000000000000000000000000017
+:10D910000000000000000000000000000000000007
+:10D9200000000000000000000000000000000000F7
+:10D9300000000000000000000000000000000000E7
+:10D9400000000000000000000000000000000000D7
+:10D9500000000000000000000000000000000000C7
+:10D9600000000000000000000000000000000000B7
+:10D9700000000000000000000000000000000000A7
+:10D980000000000000000000000000000000000097
+:10D990000000000000000000000000000000000087
+:10D9A0000000000000000000000000000000000077
+:10D9B0000000000000000000000000000000000067
+:10D9C0000000000000000000000000000000000057
+:10D9D0000000000000000000000000000000000047
+:10D9E0000000000000000000000000000000000037
+:10D9F0000000000000000000000000000000000027
+:10DA00000000000000000000000000000000000016
+:10DA10000000000000000000000000000000000006
+:10DA200000000000000000000000000000000000F6
+:10DA300000000000000000000000000000000000E6
+:10DA400000000000000000000000000000000000D6
+:10DA500000000000000000000000000000000000C6
+:10DA600000000000000000000000000000000000B6
+:10DA700000000000000000000000000000000000A6
+:10DA80000000000000000000000000000000000096
+:10DA90000000000000000000000000000000000086
+:10DAA0000000000000000000000000000000000076
+:10DAB0000000000000000000000000000000000066
+:10DAC0000000000000000000000000000000000056
+:10DAD0000000000000000000000000000000000046
+:10DAE0000000000000000000000000000000000036
+:10DAF0000000000000000000000000000000000026
+:10DB00000000000000000000000000000000000015
+:10DB10000000000000000000000000000000000005
+:10DB200000000000000000000000000000000000F5
+:10DB300000000000000000000000000000000000E5
+:10DB400000000000000000000000000000000000D5
+:10DB500000000000000000000000000000000000C5
+:10DB600000000000000000000000000000000000B5
+:10DB700000000000000000000000000000000000A5
+:10DB80000000000000000000000000000000000095
+:10DB90000000000000000000000000000000000085
+:10DBA0000000000000000000000000000000000075
+:10DBB0000000000000000000000000000000000065
+:10DBC0000000000000000000000000000000000055
+:10DBD0000000000000000000000000000000000045
+:10DBE0000000000000000000000000000000000035
+:10DBF0000000000000000000000000000000000025
+:10DC00000000000000000000000000000000000014
+:10DC10000000000000000000000000000000000004
+:10DC200000000000000000000000000000000000F4
+:10DC300000000000000000000000000000000000E4
+:10DC400000000000000000000000000000000000D4
+:10DC500000000000000000000000000000000000C4
+:10DC600000000000000000000000000000000000B4
+:10DC700000000000000000000000000000000000A4
+:10DC80000000000000000000000000000000000094
+:10DC90000000000000000000000000000000000084
+:10DCA0000000000000000000000000000000000074
+:10DCB0000000000000000000000000000000000064
+:10DCC0000000000000000000000000000000000054
+:10DCD0000000000000000000000000000000000044
+:10DCE0000000000000000000000000000000000034
+:10DCF0000000000000000000000000000000000024
+:10DD00000000000000000000000000000000000013
+:10DD10000000000000000000000000000000000003
+:10DD200000000000000000000000000000000000F3
+:10DD300000000000000000000000000000000000E3
+:10DD400000000000000000000000000000000000D3
+:10DD500000000000000000000000000000000000C3
+:10DD600000000000000000000000000000000000B3
+:10DD700000000000000000000000000000000000A3
+:10DD80000000000000000000000000000000000093
+:10DD90000000000000000000000000000000000083
+:10DDA0000000000000000000000000000000000073
+:10DDB0000000000000000000000000000000000063
+:10DDC0000000000000000000000000000000000053
+:10DDD0000000000000000000000000000000000043
+:10DDE0000000000000000000000000000000000033
+:10DDF0000000000000000000000000000000000023
+:10DE00000000000000000000000000000000000012
+:10DE10000000000000000000000000000000000002
+:10DE200000000000000000000000000000000000F2
+:10DE300000000000000000000000000000000000E2
+:10DE400000000000000000000000000000000000D2
+:10DE500000000000000000000000000000000000C2
+:10DE600000000000000000000000000000000000B2
+:10DE700000000000000000000000000000000000A2
+:10DE80000000000000000000000000000000000092
+:10DE90000000000000000000000000000000000082
+:10DEA0000000000000000000000000000000000072
+:10DEB0000000000000000000000000000000000062
+:10DEC0000000000000000000000000000000000052
+:10DED0000000000000000000000000000000000042
+:10DEE0000000000000000000000000000000000032
+:10DEF0000000000000000000000000000000000022
+:10DF00000000000000000000000000000000000011
+:10DF10000000000000000000000000000000000001
+:10DF200000000000000000000000000000000000F1
+:10DF300000000000000000000000000000000000E1
+:10DF400000000000000000000000000000000000D1
+:10DF500000000000000000000000000000000000C1
+:10DF600000000000000000000000000000000000B1
+:10DF700000000000000000000000000000000000A1
+:10DF80000000000000000000000000000000000091
+:10DF90000000000000000000000000000000000081
+:10DFA0000000000000000000000000000000000071
+:10DFB0000000000000000000000000000000000061
+:10DFC0000000000000000000000000000000000051
+:10DFD0000000000000000000000000000000000041
+:10DFE0000000000000000000000000000000000031
+:10DFF0000000000000000000000000000000000021
+:10E000000000000000000000000000000000000010
+:10E010000000000000000000000000000000000000
+:10E0200000000000000000000000000000000000F0
+:10E0300000000000000000000000000000000000E0
+:10E0400000000000000000000000000000000000D0
+:10E0500000000000000000000000000000000000C0
+:10E0600000000000000000000000000000000000B0
+:10E0700000000000000000000000000000000000A0
+:10E080000000000000000000000000000000000090
+:10E090000000000000000000000000000000000080
+:10E0A0000000000000000000000000000000000070
+:10E0B0000000000000000000000000000000000060
+:10E0C0000000000000000000000000000000000050
+:10E0D0000000000000000000000000000000000040
+:10E0E0000000000000000000000000000000000030
+:10E0F0000000000000000000000000000000000020
+:10E10000000000000000000000000000000000000F
+:10E1100000000000000000000000000000000000FF
+:10E1200000000000000000000000000000000000EF
+:10E1300000000000000000000000000000000000DF
+:10E1400000000000000000000000000000000000CF
+:10E1500000000000000000000000000000000000BF
+:10E1600000000000000000000000000000000000AF
+:10E17000000000000000000000000000000000009F
+:10E18000000000000000000000000000000000008F
+:10E19000000000000000000000000000000000007F
+:10E1A000000000000000000000000000000000006F
+:10E1B000000000000000000000000000000000005F
+:10E1C000000000000000000000000000000000004F
+:10E1D000000000000000000000000000000000003F
+:10E1E000000000000000000000000000000000002F
+:10E1F000000000000000000000000000000000001F
+:10E20000000000000000000000000000000000000E
+:10E2100000000000000000000000000000000000FE
+:10E2200000000000000000000000000000000000EE
+:10E2300000000000000000000000000000000000DE
+:10E2400000000000000000000000000000000000CE
+:10E2500000000000000000000000000000000000BE
+:10E2600000000000000000000000000000000000AE
+:10E27000000000000000000000000000000000009E
+:10E28000000000000000000000000000000000008E
+:10E29000000000000000000000000000000000007E
+:10E2A000000000000000000000000000000000006E
+:10E2B000000000000000000000000000000000005E
+:10E2C000000000000000000000000000000000004E
+:10E2D000000000000000000000000000000000003E
+:10E2E000000000000000000000000000000000002E
+:10E2F000000000000000000000000000000000001E
+:10E30000000000000000000000000000000000000D
+:10E3100000000000000000000000000000000000FD
+:10E3200000000000000000000000000000000000ED
+:10E3300000000000000000000000000000000000DD
+:10E3400000000000000000000000000000000000CD
+:10E3500000000000000000000000000000000000BD
+:10E3600000000000000000000000000000000000AD
+:10E37000000000000000000000000000000000009D
+:10E38000000000000000000000000000000000008D
+:10E39000000000000000000000000000000000007D
+:10E3A000000000000000000000000000000000006D
+:10E3B000000000000000000000000000000000005D
+:10E3C000000000000000000000000000000000004D
+:10E3D000000000000000000000000000000000003D
+:10E3E000000000000000000000000000000000002D
+:10E3F000000000000000000000000000000000001D
+:10E40000000000000000000000000000000000000C
+:10E4100000000000000000000000000000000000FC
+:10E4200000000000000000000000000000000000EC
+:10E4300000000000000000000000000000000000DC
+:10E4400000000000000000000000000000000000CC
+:10E4500000000000000000000000000000000000BC
+:10E4600000000000000000000000000000000000AC
+:10E47000000000000000000000000000000000009C
+:10E48000000000000000000000000000000000008C
+:10E49000000000000000000000000000000000007C
+:10E4A000000000000000000000000000000000006C
+:10E4B000000000000000000000000000000000005C
+:10E4C000000000000000000000000000000000004C
+:10E4D000000000000000000000000000000000003C
+:10E4E000000000000000000000000000000000002C
+:10E4F000000000000000000000000000000000001C
+:10E50000000000000000000000000000000000000B
+:10E5100000000000000000000000000000000000FB
+:10E5200000000000000000000000000000000000EB
+:10E5300000000000000000000000000000000000DB
+:10E5400000000000000000000000000000000000CB
+:10E5500000000000000000000000000000000000BB
+:10E5600000000000000000000000000000000000AB
+:10E57000000000000000000000000000000000009B
+:10E58000000000000000000000000000000000008B
+:10E59000000000000000000000000000000000007B
+:10E5A000000000000000000000000000000000006B
+:10E5B000000000000000000000000000000000005B
+:10E5C000000000000000000000000000000000004B
+:10E5D000000000000000000000000000000000003B
+:10E5E000000000000000000000000000000000002B
+:10E5F000000000000000000000000000000000001B
+:10E60000000000000000000000000000000000000A
+:10E6100000000000000000000000000000000000FA
+:10E6200000000000000000000000000000000000EA
+:10E6300000000000000000000000000000000000DA
+:10E6400000000000000000000000000000000000CA
+:10E6500000000000000000000000000000000000BA
+:10E6600000000000000000000000000000000000AA
+:10E67000000000000000000000000000000000009A
+:10E68000000000000000000000000000000000008A
+:10E69000000000000000000000000000000000007A
+:10E6A000000000000000000000000000000000006A
+:10E6B000000000000000000000000000000000005A
+:10E6C000000000000000000000000000000000004A
+:10E6D000000000000000000000000000000000003A
+:10E6E000000000000000000000000000000000002A
+:10E6F000000000000000000000000000000000001A
+:10E700000000000000000000000000000000000009
+:10E7100000000000000000000000000000000000F9
+:10E7200000000000000000000000000000000000E9
+:10E7300000000000000000000000000000000000D9
+:10E7400000000000000000000000000000000000C9
+:10E7500000000000000000000000000000000000B9
+:10E7600000000000000000000000000000000000A9
+:10E770000000000000000000000000000000000099
+:10E780000000000000000000000000000000000089
+:10E790000000000000000000000000000000000079
+:10E7A0000000000000000000000000000000000069
+:10E7B0000000000000000000000000000000000059
+:10E7C0000000000000000000000000000000000049
+:10E7D0000000000000000000000000000000000039
+:10E7E0000000000000000000000000000000000029
+:10E7F0000000000000000000000000000000000019
+:10E800000000000000000000000000000000000008
+:10E8100000000000000000000000000000000000F8
+:10E8200000000000000000000000000000000000E8
+:10E8300000000000000000000000000000000000D8
+:10E8400000000000000000000000000000000000C8
+:10E8500000000000000000000000000000000000B8
+:10E8600000000000000000000000000000000000A8
+:10E870000000000000000000000000000000000098
+:10E880000000000000000000000000000000000088
+:10E890000000000000000000000000000000000078
+:10E8A0000000000000000000000000000000000068
+:10E8B0000000000000000000000000000000000058
+:10E8C0000000000000000000000000000000000048
+:10E8D0000000000000000000000000000000000038
+:10E8E0000000000000000000000000000000000028
+:10E8F0000000000000000000000000000000000018
+:10E900000000000000000000000000000000000007
+:10E9100000000000000000000000000000000000F7
+:10E9200000000000000000000000000000000000E7
+:10E9300000000000000000000000000000000000D7
+:10E9400000000000000000000000000000000000C7
+:10E9500000000000000000000000000000000000B7
+:10E9600000000000000000000000000000000000A7
+:10E970000000000000000000000000000000000097
+:10E980000000000000000000000000000000000087
+:10E990000000000000000000000000000000000077
+:10E9A0000000000000000000000000000000000067
+:10E9B0000000000000000000000000000000000057
+:10E9C0000000000000000000000000000000000047
+:10E9D0000000000000000000000000000000000037
+:10E9E0000000000000000000000000000000000027
+:10E9F0000000000000000000000000000000000017
+:10EA00000000000000000000000000000000000006
+:10EA100000000000000000000000000000000000F6
+:10EA200000000000000000000000000000000000E6
+:10EA300000000000000000000000000000000000D6
+:10EA400000000000000000000000000000000000C6
+:10EA500000000000000000000000000000000000B6
+:10EA600000000000000000000000000000000000A6
+:10EA70000000000000000000000000000000000096
+:10EA80000000000000000000000000000000000086
+:10EA90000000000000000000000000000000000076
+:10EAA0000000000000000000000000000000000066
+:10EAB0000000000000000000000000000000000056
+:10EAC0000000000000000000000000000000000046
+:10EAD0000000000000000000000000000000000036
+:10EAE0000000000000000000000000000000000026
+:10EAF0000000000000000000000000000000000016
+:10EB00000000000000000000000000000000000005
+:10EB100000000000000000000000000000000000F5
+:10EB200000000000000000000000000000000000E5
+:10EB300000000000000000000000000000000000D5
+:10EB400000000000000000000000000000000000C5
+:10EB500000000000000000000000000000000000B5
+:10EB600000000000000000000000000000000000A5
+:10EB70000000000000000000000000000000000095
+:10EB80000000000000000000000000000000000085
+:10EB90000000000000000000000000000000000075
+:10EBA0000000000000000000000000000000000065
+:10EBB0000000000000000000000000000000000055
+:10EBC0000000000000000000000000000000000045
+:10EBD0000000000000000000000000000000000035
+:10EBE0000000000000000000000000000000000025
+:10EBF0000000000000000000000000000000000015
+:10EC00000000000000000000000000000000000004
+:10EC100000000000000000000000000000000000F4
+:10EC200000000000000000000000000000000000E4
+:10EC300000000000000000000000000000000000D4
+:10EC400000000000000000000000000000000000C4
+:10EC500000000000000000000000000000000000B4
+:10EC600000000000000000000000000000000000A4
+:10EC70000000000000000000000000000000000094
+:10EC80000000000000000000000000000000000084
+:10EC90000000000000000000000000000000000074
+:10ECA0000000000000000000000000000000000064
+:10ECB0000000000000000000000000000000000054
+:10ECC0000000000000000000000000000000000044
+:10ECD0000000000000000000000000000000000034
+:10ECE0000000000000000000000000000000000024
+:10ECF0000000000000000000000000000000000014
+:10ED00000000000000000000000000000000000003
+:10ED100000000000000000000000000000000000F3
+:10ED200000000000000000000000000000000000E3
+:10ED300000000000000000000000000000000000D3
+:10ED400000000000000000000000000000000000C3
+:10ED500000000000000000000000000000000000B3
+:10ED600000000000000000000000000000000000A3
+:10ED70000000000000000000000000000000000093
+:10ED80000000000000000000000000000000000083
+:10ED90000000000000000000000000000000000073
+:10EDA0000000000000000000000000000000000063
+:10EDB0000000000000000000000000000000000053
+:10EDC0000000000000000000000000000000000043
+:10EDD0000000000000000000000000000000000033
+:10EDE0000000000000000000000000000000000023
+:10EDF0000000000000000000000000000000000013
+:10EE00000000000000000000000000000000000002
+:10EE100000000000000000000000000000000000F2
+:10EE200000000000000000000000000000000000E2
+:10EE300000000000000000000000000000000000D2
+:10EE400000000000000000000000000000000000C2
+:10EE500000000000000000000000000000000000B2
+:10EE600000000000000000000000000000000000A2
+:10EE70000000000000000000000000000000000092
+:10EE80000000000000000000000000000000000082
+:10EE90000000000000000000000000000000000072
+:10EEA0000000000000000000000000000000000062
+:10EEB0000000000000000000000000000000000052
+:10EEC0000000000000000000000000000000000042
+:10EED0000000000000000000000000000000000032
+:10EEE0000000000000000000000000000000000022
+:10EEF0000000000000000000000000000000000012
+:10EF00000000000000000000000000000000000001
+:10EF100000000000000000000000000000000000F1
+:10EF200000000000000000000000000000000000E1
+:10EF300000000000000000000000000000000000D1
+:10EF400000000000000000000000000000000000C1
+:10EF500000000000000000000000000000000000B1
+:10EF600000000000000000000000000000000000A1
+:10EF70000000000000000000000000000000000091
+:10EF80000000000000000000000000000000000081
+:10EF90000000000000000000000000000000000071
+:10EFA0000000000000000000000000000000000061
+:10EFB0000000000000000000000000000000000051
+:10EFC0000000000000000000000000000000000041
+:10EFD0000000000000000000000000000000000031
+:10EFE0000000000000000000000000000000000021
+:10EFF0000000000000000000000000000000000011
+:10F000000000000000000000000000000000000000
+:10F0100000000000000000000000000000000000F0
+:10F0200000000000000000000000000000000000E0
+:10F0300000000000000000000000000000000000D0
+:10F0400000000000000000000000000000000000C0
+:10F0500000000000000000000000000000000000B0
+:10F0600000000000000000000000000000000000A0
+:10F070000000000000000000000000000000000090
+:10F080000000000000000000000000000000000080
+:10F090000000000000000000000000000000000070
+:10F0A0000000000000000000000000000000000060
+:10F0B0000000000000000000000000000000000050
+:10F0C0000000000000000000000000000000000040
+:10F0D0000000000000000000000000000000000030
+:10F0E0000000000000000000000000000000000020
+:10F0F0000000000000000000000000000000000010
+:10F1000000000000000000000000000000000000FF
+:10F1100000000000000000000000000000000000EF
+:10F1200000000000000000000000000000000000DF
+:10F1300000000000000000000000000000000000CF
+:10F1400000000000000000000000000000000000BF
+:10F1500000000000000000000000000000000000AF
+:10F16000000000000000000000000000000000009F
+:10F17000000000000000000000000000000000008F
+:10F18000000000000000000000000000000000007F
+:10F19000000000000000000000000000000000006F
+:10F1A000000000000000000000000000000000005F
+:10F1B000000000000000000000000000000000004F
+:10F1C000000000000000000000000000000000003F
+:10F1D000000000000000000000000000000000002F
+:10F1E000000000000000000000000000000000001F
+:10F1F000000000000000000000000000000000000F
+:10F2000000000000000000000000000000000000FE
+:10F2100000000000000000000000000000000000EE
+:10F2200000000000000000000000000000000000DE
+:10F2300000000000000000000000000000000000CE
+:10F2400000000000000000000000000000000000BE
+:10F2500000000000000000000000000000000000AE
+:10F26000000000000000000000000000000000009E
+:10F27000000000000000000000000000000000008E
+:10F28000000000000000000000000000000000007E
+:10F29000000000000000000000000000000000006E
+:10F2A000000000000000000000000000000000005E
+:10F2B000000000000000000000000000000000004E
+:10F2C000000000000000000000000000000000003E
+:10F2D000000000000000000000000000000000002E
+:10F2E000000000000000000000000000000000001E
+:10F2F000000000000000000000000000000000000E
+:10F3000000000000000000000000000000000000FD
+:10F3100000000000000000000000000000000000ED
+:10F3200000000000000000000000000000000000DD
+:10F3300000000000000000000000000000000000CD
+:10F3400000000000000000000000000000000000BD
+:10F3500000000000000000000000000000000000AD
+:10F36000000000000000000000000000000000009D
+:10F37000000000000000000000000000000000008D
+:10F38000000000000000000000000000000000007D
+:10F39000000000000000000000000000000000006D
+:10F3A000000000000000000000000000000000005D
+:10F3B000000000000000000000000000000000004D
+:10F3C000000000000000000000000000000000003D
+:10F3D000000000000000000000000000000000002D
+:10F3E000000000000000000000000000000000001D
+:10F3F000000000000000000000000000000000000D
+:10F4000000000000000000000000000000000000FC
+:10F4100000000000000000000000000000000000EC
+:10F4200000000000000000000000000000000000DC
+:10F4300000000000000000000000000000000000CC
+:10F4400000000000000000000000000000000000BC
+:10F4500000000000000000000000000000000000AC
+:10F46000000000000000000000000000000000009C
+:10F47000000000000000000000000000000000008C
+:10F48000000000000000000000000000000000007C
+:10F49000000000000000000000000000000000006C
+:10F4A000000000000000000000000000000000005C
+:10F4B000000000000000000000000000000000004C
+:10F4C000000000000000000000000000000000003C
+:10F4D000000000000000000000000000000000002C
+:10F4E000000000000000000000000000000000001C
+:10F4F000000000000000000000000000000000000C
+:10F5000000000000000000000000000000000000FB
+:10F5100000000000000000000000000000000000EB
+:10F5200000000000000000000000000000000000DB
+:10F5300000000000000000000000000000000000CB
+:10F5400000000000000000000000000000000000BB
+:10F5500000000000000000000000000000000000AB
+:10F56000000000000000000000000000000000009B
+:10F57000000000000000000000000000000000008B
+:10F58000000000000000000000000000000000007B
+:10F59000000000000000000000000000000000006B
+:10F5A000000000000000000000000000000000005B
+:10F5B000000000000000000000000000000000004B
+:10F5C000000000000000000000000000000000003B
+:10F5D000000000000000000000000000000000002B
+:10F5E000000000000000000000000000000000001B
+:10F5F000000000000000000000000000000000000B
+:10F6000000000000000000000000000000000000FA
+:10F6100000000000000000000000000000000000EA
+:10F6200000000000000000000000000000000000DA
+:10F6300000000000000000000000000000000000CA
+:10F6400000000000000000000000000000000000BA
+:10F6500000000000000000000000000000000000AA
+:10F66000000000000000000000000000000000009A
+:10F67000000000000000000000000000000000008A
+:10F68000000000000000000000000000000000007A
+:10F69000000000000000000000000000000000006A
+:10F6A000000000000000000000000000000000005A
+:10F6B000000000000000000000000000000000004A
+:10F6C000000000000000000000000000000000003A
+:10F6D000000000000000000000000000000000002A
+:10F6E000000000000000000000000000000000001A
+:10F6F000000000000000000000000000000000000A
+:10F7000000000000000000000000000000000000F9
+:10F7100000000000000000000000000000000000E9
+:10F7200000000000000000000000000000000000D9
+:10F7300000000000000000000000000000000000C9
+:10F7400000000000000000000000000000000000B9
+:10F7500000000000000000000000000000000000A9
+:10F760000000000000000000000000000000000099
+:10F770000000000000000000000000000000000089
+:10F780000000000000000000000000000000000079
+:10F790000000000000000000000000000000000069
+:10F7A0000000000000000000000000000000000059
+:10F7B0000000000000000000000000000000000049
+:10F7C0000000000000000000000000000000000039
+:10F7D0000000000000000000000000000000000029
+:10F7E0000000000000000000000000000000000019
+:10F7F0000000000000000000000000000000000009
+:10F8000000000000000000000000000000000000F8
+:10F8100000000000000000000000000000000000E8
+:10F8200000000000000000000000000000000000D8
+:10F8300000000000000000000000000000000000C8
+:10F8400000000000000000000000000000000000B8
+:10F8500000000000000000000000000000000000A8
+:10F860000000000000000000000000000000000098
+:10F870000000000000000000000000000000000088
+:10F880000000000000000000000000000000000078
+:10F890000000000000000000000000000000000068
+:10F8A0000000000000000000000000000000000058
+:10F8B0000000000000000000000000000000000048
+:10F8C0000000000000000000000000000000000038
+:10F8D0000000000000000000000000000000000028
+:10F8E0000000000000000000000000000000000018
+:10F8F0000000000000000000000000000000000008
+:10F9000000000000000000000000000000000000F7
+:10F9100000000000000000000000000000000000E7
+:10F9200000000000000000000000000000000000D7
+:10F9300000000000000000000000000000000000C7
+:10F9400000000000000000000000000000000000B7
+:10F9500000000000000000000000000000000000A7
+:10F960000000000000000000000000000000000097
+:10F970000000000000000000000000000000000087
+:10F980000000000000000000000000000000000077
+:10F990000000000000000000000000000000000067
+:10F9A0000000000000000000000000000000000057
+:10F9B0000000000000000000000000000000000047
+:10F9C0000000000000000000000000000000000037
+:10F9D0000000000000000000000000000000000027
+:10F9E0000000000000000000000000000000000017
+:10F9F0000000000000000000000000000000000007
+:10FA000000000000000000000000000000000000F6
+:10FA100000000000000000000000000000000000E6
+:10FA200000000000000000000000000000000000D6
+:10FA300000000000000000000000000000000000C6
+:10FA400000000000000000000000000000000000B6
+:10FA500000000000000000000000000000000000A6
+:10FA60000000000000000000000000000000000096
+:10FA70000000000000000000000000000000000086
+:10FA80000000000000000000000000000000000076
+:10FA90000000000000000000000000000000000066
+:10FAA0000000000000000000000000000000000056
+:10FAB0000000000000000000000000000000000046
+:10FAC0000000000000000000000000000000000036
+:10FAD0000000000000000000000000000000000026
+:10FAE0000000000000000000000000000000000016
+:10FAF0000000000000000000000000000000000006
+:10FB000000000000000000000000000000000000F5
+:10FB100000000000000000000000000000000000E5
+:10FB200000000000000000000000000000000000D5
+:10FB300000000000000000000000000000000000C5
+:10FB400000000000000000000000000000000000B5
+:10FB500000000000000000000000000000000000A5
+:10FB60000000000000000000000000000000000095
+:10FB70000000000000000000000000000000000085
+:10FB80000000000000000000000000000000000075
+:10FB90000000000000000000000000000000000065
+:10FBA0000000000000000000000000000000000055
+:10FBB0000000000000000000000000000000000045
+:10FBC0000000000000000000000000000000000035
+:10FBD0000000000000000000000000000000000025
+:10FBE0000000000000000000000000000000000015
+:10FBF0000000000000000000000000000000000005
+:10FC000000000000000000000000000000000000F4
+:10FC100000000000000000000000000000000000E4
+:10FC200000000000000000000000000000000000D4
+:10FC300000000000000000000000000000000000C4
+:10FC400000000000000000000000000000000000B4
+:10FC500000000000000000000000000000000000A4
+:10FC60000000000000000000000000000000000094
+:10FC70000000000000000000000000000000000084
+:10FC80000000000000000000000000000000000074
+:10FC90000000000000000000000000000000000064
+:10FCA0000000000000000000000000000000000054
+:10FCB0000000000000000000000000000000000044
+:10FCC0000000000000000000000000000000000034
+:10FCD0000000000000000000000000000000000024
+:10FCE0000000000000000000000000000000000014
+:10FCF0000000000000000000000000000000000004
+:10FD000000000000000000000000000000000000F3
+:10FD100000000000000000000000000000000000E3
+:10FD200000000000000000000000000000000000D3
+:10FD300000000000000000000000000000000000C3
+:10FD400000000000000000000000000000000000B3
+:10FD500000000000000000000000000000000000A3
+:10FD60000000000000000000000000000000000093
+:10FD70000000000000000000000000000000000083
+:10FD80000000000000000000000000000000000073
+:10FD90000000000000000000000000000000000063
+:10FDA0000000000000000000000000000000000053
+:10FDB0000000000000000000000000000000000043
+:10FDC0000000000000000000000000000000000033
+:10FDD0000000000000000000000000000000000023
+:10FDE0000000000000000000000000000000000013
+:10FDF0000000000000000000000000000000000003
+:10FE000000000000000000000000000000000000F2
+:10FE100000000000000000000000000000000000E2
+:10FE200000000000000000000000000000000000D2
+:10FE300000000000000000000000000000000000C2
+:10FE400000000000000000000000000000000000B2
+:10FE500000000000000000000000000000000000A2
+:10FE60000000000000000000000000000000000092
+:10FE70000000000000000000000000000000000082
+:10FE80000000000000000000000000000000000072
+:10FE90000000000000000000000000000000000062
+:10FEA0000000000000000000000000000000000052
+:10FEB0000000000000000000000000000000000042
+:10FEC0000000000000000000000000000000000032
+:10FED0000000000000000000000000000000000022
+:10FEE0000000000000000000000000000000000012
+:10FEF0000000000000000000000000000000000002
+:10FF0000536F66743A20312E302E322E38000000A6
+:10FF100054696D653A204A756E2031362032303290
+:10FF2000362D31373A30353A3437000000000000C2
+:10FF30005348413A2030623965643930386266008E
+:10FF40003201821013127AB2041360AC1408A98330
+:10FF50001B0888081305821B086C08134598820843
+:10FF60001A7C10224C021020B2032960C64D4F5457
+:10FF70004F521915131005AA206C01243202F808FB
+:10FF8000484541544552314C013029A4494CBA32BC
+:10FF90004C1380047A20E1013B1301031B085F042A
+:10FFA0001AAD0401343C383030E5A00F3139322E1F
+:10FFB0003136382E34332E32323923580232502320
+:10FFC0007017326432282908810A1A3C9C013700D4
 :0400000508000131BD
 :00000001FF

+ 3499 - 742
MDK-ARM/mini7_V2/mini7_V2.htm

@@ -3,1239 +3,3996 @@
 <title>Static Call Graph - [mini7_V2\mini7_V2.axf]</title></head>
 <body><HR>
 <H1>Static Call Graph for image mini7_V2\mini7_V2.axf</H1><HR>
-<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Mon Jun 15 09:41:43 2026
+<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Tue Jun 16 17:16:46 2026
 <BR><P>
-<H3>Maximum Stack Usage =        160 bytes + Unknown(Functions without stacksize, Cycles, Untraceable Function Pointers)</H3><H3>
+<H3>Maximum Stack Usage =       1048 bytes + Unknown(Functions without stacksize, Cycles, Untraceable Function Pointers)</H3><H3>
 Call chain for Maximum Stack Depth:</H3>
-__rt_entry_main &rArr; main &rArr; MX_TIM1_Init &rArr; HAL_TIM_MspPostInit &rArr; HAL_GPIO_Init
+__rt_entry_main &rArr; main &rArr; WIFI_process &rArr; WIFI_send_deal &rArr; ESP32_Link_Server &rArr; ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
 <P>
 <H3>
 Functions with no stack information
 </H3><UL>
- <LI><a href="#[5d]">__user_initial_stackheap</a>
+ <LI><a href="#[d9]">__user_initial_stackheap</a>
 </UL>
 </UL>
 <P>
 <H3>
 Mutually Recursive functions
-</H3> <LI><a href="#[1f]">ADC1_2_IRQHandler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[1f]">ADC1_2_IRQHandler</a><BR>
- <LI><a href="#[7]">BusFault_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[7]">BusFault_Handler</a><BR>
- <LI><a href="#[5]">HardFault_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[5]">HardFault_Handler</a><BR>
- <LI><a href="#[6]">MemManage_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[6]">MemManage_Handler</a><BR>
- <LI><a href="#[4]">NMI_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[4]">NMI_Handler</a><BR>
- <LI><a href="#[91]">UART_EndRxTransfer</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[91]">UART_EndRxTransfer</a><BR>
- <LI><a href="#[8]">UsageFault_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[8]">UsageFault_Handler</a><BR>
+</H3> <LI><a href="#[2b]">ADC1_2_IRQHandler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[2b]">ADC1_2_IRQHandler</a><BR>
+ <LI><a href="#[13]">BusFault_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[13]">BusFault_Handler</a><BR>
+ <LI><a href="#[11]">HardFault_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[11]">HardFault_Handler</a><BR>
+ <LI><a href="#[12]">MemManage_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[12]">MemManage_Handler</a><BR>
+ <LI><a href="#[10]">NMI_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[10]">NMI_Handler</a><BR>
+ <LI><a href="#[149]">UART_EndTxTransfer</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[149]">UART_EndTxTransfer</a><BR>
+ <LI><a href="#[14a]">UART_EndRxTransfer</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[14a]">UART_EndRxTransfer</a><BR>
+ <LI><a href="#[14]">UsageFault_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[14]">UsageFault_Handler</a><BR>
+ <LI><a href="#[1a5]">cJSON_Delete</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[1a5]">cJSON_Delete</a><BR>
+ <LI><a href="#[1d4]">parse_object</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[1b3]">parse_value</a><BR>
+ <LI><a href="#[1d1]">parse_array</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[1b3]">parse_value</a><BR>
 </UL>
 <P>
 <H3>
 Function Pointers
 </H3><UL>
- <LI><a href="#[1f]">ADC1_2_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[3c]">ADC3_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[7]">BusFault_Handler</a> from stm32f1xx_it.o(i.BusFault_Handler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[22]">CAN1_RX1_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[23]">CAN1_SCE_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[18]">DMA1_Channel1_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[19]">DMA1_Channel2_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[1a]">DMA1_Channel3_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[1b]">DMA1_Channel4_IRQHandler</a> from stm32f1xx_it.o(i.DMA1_Channel4_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[1c]">DMA1_Channel5_IRQHandler</a> from stm32f1xx_it.o(i.DMA1_Channel5_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[1d]">DMA1_Channel6_IRQHandler</a> from stm32f1xx_it.o(i.DMA1_Channel6_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[1e]">DMA1_Channel7_IRQHandler</a> from stm32f1xx_it.o(i.DMA1_Channel7_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[45]">DMA2_Channel1_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[46]">DMA2_Channel2_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[47]">DMA2_Channel3_IRQHandler</a> from stm32f1xx_it.o(i.DMA2_Channel3_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[48]">DMA2_Channel4_5_IRQHandler</a> from stm32f1xx_it.o(i.DMA2_Channel4_5_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[a]">DebugMon_Handler</a> from stm32f1xx_it.o(i.DebugMon_Handler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[13]">EXTI0_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[35]">EXTI15_10_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[14]">EXTI1_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[15]">EXTI2_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[16]">EXTI3_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[17]">EXTI4_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[24]">EXTI9_5_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[11]">FLASH_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[3d]">FSMC_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[5]">HardFault_Handler</a> from stm32f1xx_it.o(i.HardFault_Handler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[2d]">I2C1_ER_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[2c]">I2C1_EV_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[2f]">I2C2_ER_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[2e]">I2C2_EV_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[6]">MemManage_Handler</a> from stm32f1xx_it.o(i.MemManage_Handler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[4]">NMI_Handler</a> from stm32f1xx_it.o(i.NMI_Handler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[e]">PVD_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[b]">PendSV_Handler</a> from stm32f1xx_it.o(i.PendSV_Handler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[12]">RCC_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[36]">RTC_Alarm_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[10]">RTC_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[3]">Reset_Handler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[3e]">SDIO_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[30]">SPI1_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[31]">SPI2_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[40]">SPI3_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[9]">SVC_Handler</a> from stm32f1xx_it.o(i.SVC_Handler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[c]">SysTick_Handler</a> from stm32f1xx_it.o(i.SysTick_Handler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[49]">SystemInit</a> from system_stm32f1xx.o(i.SystemInit) referenced from startup_stm32f103xe.o(.text)
- <LI><a href="#[f]">TAMPER_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[25]">TIM1_BRK_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[28]">TIM1_CC_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[27]">TIM1_TRG_COM_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[26]">TIM1_UP_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[29]">TIM2_IRQHandler</a> from stm32f1xx_it.o(i.TIM2_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[2a]">TIM3_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[2b]">TIM4_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[3f]">TIM5_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[43]">TIM6_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[44]">TIM7_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[38]">TIM8_BRK_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[3b]">TIM8_CC_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[3a]">TIM8_TRG_COM_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[39]">TIM8_UP_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[41]">UART4_IRQHandler</a> from stm32f1xx_it.o(i.UART4_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[42]">UART5_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[4b]">UART_DMAAbortOnError</a> from stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) referenced from stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler)
- <LI><a href="#[32]">USART1_IRQHandler</a> from stm32f1xx_it.o(i.USART1_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[33]">USART2_IRQHandler</a> from stm32f1xx_it.o(i.USART2_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[34]">USART3_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[37]">USBWakeUp_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[20]">USB_HP_CAN1_TX_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[21]">USB_LP_CAN1_RX0_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[8]">UsageFault_Handler</a> from stm32f1xx_it.o(i.UsageFault_Handler) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[d]">WWDG_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
- <LI><a href="#[4c]">__main</a> from __main.o(!!!main) referenced from startup_stm32f103xe.o(.text)
+ <LI><a href="#[2b]">ADC1_2_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[48]">ADC3_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[5d]">ADC_DMAConvCplt</a> from stm32f1xx_hal_adc.o(i.ADC_DMAConvCplt) referenced from stm32f1xx_hal_adc.o(i.HAL_ADC_Start_DMA)
+ <LI><a href="#[5f]">ADC_DMAError</a> from stm32f1xx_hal_adc.o(i.ADC_DMAError) referenced from stm32f1xx_hal_adc.o(i.HAL_ADC_Start_DMA)
+ <LI><a href="#[5e]">ADC_DMAHalfConvCplt</a> from stm32f1xx_hal_adc.o(i.ADC_DMAHalfConvCplt) referenced from stm32f1xx_hal_adc.o(i.HAL_ADC_Start_DMA)
+ <LI><a href="#[13]">BusFault_Handler</a> from stm32f1xx_it.o(i.BusFault_Handler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[2e]">CAN1_RX1_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[2f]">CAN1_SCE_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[24]">DMA1_Channel1_IRQHandler</a> from stm32f1xx_it.o(i.DMA1_Channel1_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[25]">DMA1_Channel2_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[26]">DMA1_Channel3_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[27]">DMA1_Channel4_IRQHandler</a> from stm32f1xx_it.o(i.DMA1_Channel4_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[28]">DMA1_Channel5_IRQHandler</a> from stm32f1xx_it.o(i.DMA1_Channel5_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[29]">DMA1_Channel6_IRQHandler</a> from stm32f1xx_it.o(i.DMA1_Channel6_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[2a]">DMA1_Channel7_IRQHandler</a> from stm32f1xx_it.o(i.DMA1_Channel7_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[51]">DMA2_Channel1_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[52]">DMA2_Channel2_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[53]">DMA2_Channel3_IRQHandler</a> from stm32f1xx_it.o(i.DMA2_Channel3_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[54]">DMA2_Channel4_5_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[16]">DebugMon_Handler</a> from stm32f1xx_it.o(i.DebugMon_Handler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[1f]">EXTI0_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[41]">EXTI15_10_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[20]">EXTI1_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[21]">EXTI2_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[22]">EXTI3_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[23]">EXTI4_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[30]">EXTI9_5_IRQHandler</a> from stm32f1xx_it.o(i.EXTI9_5_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[1d]">FLASH_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[49]">FSMC_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[11]">HardFault_Handler</a> from stm32f1xx_it.o(i.HardFault_Handler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[39]">I2C1_ER_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[38]">I2C1_EV_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[3b]">I2C2_ER_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[3a]">I2C2_EV_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[12]">MemManage_Handler</a> from stm32f1xx_it.o(i.MemManage_Handler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[10]">NMI_Handler</a> from stm32f1xx_it.o(i.NMI_Handler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[1a]">PVD_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[17]">PendSV_Handler</a> from stm32f1xx_it.o(i.PendSV_Handler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[1e]">RCC_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[42]">RTC_Alarm_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[1c]">RTC_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[f]">Reset_Handler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[4a]">SDIO_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[3c]">SPI1_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[3d]">SPI2_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[4c]">SPI3_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[15]">SVC_Handler</a> from stm32f1xx_it.o(i.SVC_Handler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[18]">SysTick_Handler</a> from stm32f1xx_it.o(i.SysTick_Handler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[55]">SystemInit</a> from system_stm32f1xx.o(i.SystemInit) referenced from startup_stm32f103xe.o(.text)
+ <LI><a href="#[1b]">TAMPER_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[31]">TIM1_BRK_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[34]">TIM1_CC_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[33]">TIM1_TRG_COM_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[32]">TIM1_UP_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[35]">TIM2_IRQHandler</a> from stm32f1xx_it.o(i.TIM2_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[36]">TIM3_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[37]">TIM4_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[4b]">TIM5_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[4f]">TIM6_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[50]">TIM7_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[44]">TIM8_BRK_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[47]">TIM8_CC_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[46]">TIM8_TRG_COM_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[45]">TIM8_UP_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[4d]">UART4_IRQHandler</a> from stm32f1xx_it.o(i.UART4_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[4e]">UART5_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[60]">UART_DMAAbortOnError</a> from stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) referenced from stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler)
+ <LI><a href="#[63]">UART_DMAError</a> from stm32f1xx_hal_uart.o(i.UART_DMAError) referenced from stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_DMA)
+ <LI><a href="#[63]">UART_DMAError</a> from stm32f1xx_hal_uart.o(i.UART_DMAError) referenced from stm32f1xx_hal_uart.o(i.UART_Start_Receive_DMA)
+ <LI><a href="#[64]">UART_DMAReceiveCplt</a> from stm32f1xx_hal_uart.o(i.UART_DMAReceiveCplt) referenced from stm32f1xx_hal_uart.o(i.UART_Start_Receive_DMA)
+ <LI><a href="#[65]">UART_DMARxHalfCplt</a> from stm32f1xx_hal_uart.o(i.UART_DMARxHalfCplt) referenced from stm32f1xx_hal_uart.o(i.UART_Start_Receive_DMA)
+ <LI><a href="#[61]">UART_DMATransmitCplt</a> from stm32f1xx_hal_uart.o(i.UART_DMATransmitCplt) referenced from stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_DMA)
+ <LI><a href="#[62]">UART_DMATxHalfCplt</a> from stm32f1xx_hal_uart.o(i.UART_DMATxHalfCplt) referenced from stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_DMA)
+ <LI><a href="#[3e]">USART1_IRQHandler</a> from stm32f1xx_it.o(i.USART1_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[3f]">USART2_IRQHandler</a> from stm32f1xx_it.o(i.USART2_IRQHandler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[40]">USART3_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[43]">USBWakeUp_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[2c]">USB_HP_CAN1_TX_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[2d]">USB_LP_CAN1_RX0_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[14]">UsageFault_Handler</a> from stm32f1xx_it.o(i.UsageFault_Handler) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[19]">WWDG_IRQHandler</a> from startup_stm32f103xe.o(.text) referenced from startup_stm32f103xe.o(RESET)
+ <LI><a href="#[66]">__main</a> from __main.o(!!!main) referenced from startup_stm32f103xe.o(.text)
+ <LI><a href="#[58]">_get_lc_ctype</a> from lc_ctype_c.o(locale$$code) referenced from rt_ctype_table.o(.text)
+ <LI><a href="#[59]">_printf_input_char</a> from _printf_char_common.o(.text) referenced from _printf_char_common.o(.text)
+ <LI><a href="#[5b]">_sbackspace</a> from _sgetc.o(.text) referenced from strtod.o(.text)
+ <LI><a href="#[5a]">_sgetc</a> from _sgetc.o(.text) referenced from strtod.o(.text)
+ <LI><a href="#[57]">_sputc</a> from _sputc.o(.text) referenced from vsprintf.o(.text)
+ <LI><a href="#[a]">com_pwm_test</a> from van_bsp_com_pwm.o(i.com_pwm_test) referenced 2 times from van_bsp_debug_shell.o(.data)
+ <LI><a href="#[9]">debugtest1</a> from van_bsp_debug_shell.o(i.debugtest1) referenced 2 times from van_bsp_debug_shell.o(.data)
+ <LI><a href="#[d]">free</a> from h1_free.o(.text) referenced 2 times from cjson.o(.data)
+ <LI><a href="#[5c]">isspace</a> from isspace.o(.text) referenced from strtod.o(.text)
+ <LI><a href="#[c]">malloc</a> from h1_alloc.o(.text) referenced 2 times from cjson.o(.data)
+ <LI><a href="#[e]">realloc</a> from h1_realloc.o(.text) referenced 2 times from cjson.o(.data)
+ <LI><a href="#[b]">show_com_pwm</a> from van_bsp_com_pwm.o(i.show_com_pwm) referenced 2 times from van_bsp_debug_shell.o(.data)
 </UL>
 <P>
 <H3>
 Global Symbols
 </H3>
-<P><STRONG><a name="[4c]"></a>__main</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, __main.o(!!!main))
-<BR><BR>[Calls]<UL><LI><a href="#[4d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__scatterload
-<LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_entry
+<P><STRONG><a name="[66]"></a>__main</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, __main.o(!!!main))
+<BR><BR>[Calls]<UL><LI><a href="#[68]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_entry
+<LI><a href="#[67]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__scatterload
 </UL>
 
-<P><STRONG><a name="[4d]"></a>__scatterload</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter))
-<BR><BR>[Called By]<UL><LI><a href="#[4c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__main
+<P><STRONG><a name="[67]"></a>__scatterload</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter))
+<BR><BR>[Called By]<UL><LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__main
 </UL>
 
-<P><STRONG><a name="[4f]"></a>__scatterload_rt2</STRONG> (Thumb, 44 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED)
-<BR><BR>[Calls]<UL><LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_entry
+<P><STRONG><a name="[69]"></a>__scatterload_rt2</STRONG> (Thumb, 44 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[68]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_entry
 </UL>
 
-<P><STRONG><a name="[b0]"></a>__scatterload_rt2_thumb_only</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED)
+<P><STRONG><a name="[1f4]"></a>__scatterload_rt2_thumb_only</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED)
 
-<P><STRONG><a name="[b1]"></a>__scatterload_null</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED)
+<P><STRONG><a name="[1f5]"></a>__scatterload_null</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED)
 
-<P><STRONG><a name="[50]"></a>__scatterload_copy</STRONG> (Thumb, 26 bytes, Stack size unknown bytes, __scatter_copy.o(!!handler_copy), UNUSED)
-<BR><BR>[Calls]<UL><LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__scatterload_copy
+<P><STRONG><a name="[1f6]"></a>__decompress</STRONG> (Thumb, 90 bytes, Stack size unknown bytes, __dczerorl2.o(!!dczerorl2), UNUSED)
+
+<P><STRONG><a name="[1f7]"></a>__decompress1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __dczerorl2.o(!!dczerorl2), UNUSED)
+
+<P><STRONG><a name="[1f8]"></a>__scatterload_zeroinit</STRONG> (Thumb, 28 bytes, Stack size unknown bytes, __scatter_zi.o(!!handler_zi), UNUSED)
+
+<P><STRONG><a name="[6a]"></a>_printf_n</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_n.o(.ARM.Collect$$_printf_percent$$00000001))
+<BR><BR>[Calls]<UL><LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_charcount
+</UL>
+
+<P><STRONG><a name="[ab]"></a>_printf_percent</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_percent.o(.ARM.Collect$$_printf_percent$$00000000))
+<BR><BR>[Called By]<UL><LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__printf
+</UL>
+
+<P><STRONG><a name="[6c]"></a>_printf_p</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_p.o(.ARM.Collect$$_printf_percent$$00000002))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64 + Unknown Stack Size
+<LI>Call Chain = _printf_p &rArr; _printf_hex_ptr &rArr; _printf_longlong_hex &rArr; _printf_int_common &rArr; _printf_post_padding
+</UL>
+<BR>[Calls]<UL><LI><a href="#[6d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_hex_ptr
+</UL>
+
+<P><STRONG><a name="[6e]"></a>_printf_f</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_f.o(.ARM.Collect$$_printf_percent$$00000003))
+<BR><BR>[Stack]<UL><LI>Max Depth = 324 + Unknown Stack Size
+<LI>Call Chain = _printf_f &rArr; _printf_fp_dec &rArr; _printf_fp_dec_real &rArr; _fp_digits &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
+</UL>
+<BR>[Calls]<UL><LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_dec
+</UL>
+
+<P><STRONG><a name="[70]"></a>_printf_e</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_e.o(.ARM.Collect$$_printf_percent$$00000004))
+<BR><BR>[Stack]<UL><LI>Max Depth = 324 + Unknown Stack Size
+<LI>Call Chain = _printf_e &rArr; _printf_fp_dec &rArr; _printf_fp_dec_real &rArr; _fp_digits &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
+</UL>
+<BR>[Calls]<UL><LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_dec
+</UL>
+
+<P><STRONG><a name="[71]"></a>_printf_g</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_g.o(.ARM.Collect$$_printf_percent$$00000005))
+<BR><BR>[Stack]<UL><LI>Max Depth = 324 + Unknown Stack Size
+<LI>Call Chain = _printf_g &rArr; _printf_fp_dec &rArr; _printf_fp_dec_real &rArr; _fp_digits &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
+</UL>
+<BR>[Calls]<UL><LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_dec
+</UL>
+
+<P><STRONG><a name="[72]"></a>_printf_a</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_a.o(.ARM.Collect$$_printf_percent$$00000006))
+<BR><BR>[Stack]<UL><LI>Max Depth = 112 + Unknown Stack Size
+<LI>Call Chain = _printf_a &rArr; _printf_fp_hex &rArr; _printf_fp_hex_real &rArr; _printf_fp_infnan &rArr; _printf_post_padding
+</UL>
+<BR>[Calls]<UL><LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_hex
+</UL>
+
+<P><STRONG><a name="[1f9]"></a>_printf_ll</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_ll.o(.ARM.Collect$$_printf_percent$$00000007))
+
+<P><STRONG><a name="[74]"></a>_printf_i</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_i.o(.ARM.Collect$$_printf_percent$$00000008))
+<BR><BR>[Stack]<UL><LI>Max Depth = 72 + Unknown Stack Size
+<LI>Call Chain = _printf_i &rArr; _printf_int_dec &rArr; _printf_int_common &rArr; _printf_post_padding
+</UL>
+<BR>[Calls]<UL><LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_dec
+</UL>
+
+<P><STRONG><a name="[76]"></a>_printf_d</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_d.o(.ARM.Collect$$_printf_percent$$00000009))
+<BR><BR>[Stack]<UL><LI>Max Depth = 72 + Unknown Stack Size
+<LI>Call Chain = _printf_d &rArr; _printf_int_dec &rArr; _printf_int_common &rArr; _printf_post_padding
+</UL>
+<BR>[Calls]<UL><LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_dec
+</UL>
+
+<P><STRONG><a name="[77]"></a>_printf_u</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_u.o(.ARM.Collect$$_printf_percent$$0000000A))
+<BR><BR>[Stack]<UL><LI>Max Depth = 72 + Unknown Stack Size
+<LI>Call Chain = _printf_u &rArr; _printf_int_dec &rArr; _printf_int_common &rArr; _printf_post_padding
+</UL>
+<BR>[Calls]<UL><LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_dec
+</UL>
+
+<P><STRONG><a name="[78]"></a>_printf_o</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_o.o(.ARM.Collect$$_printf_percent$$0000000B))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64 + Unknown Stack Size
+<LI>Call Chain = _printf_o &rArr; _printf_int_oct &rArr; _printf_longlong_oct &rArr; _printf_int_common &rArr; _printf_post_padding
+</UL>
+<BR>[Calls]<UL><LI><a href="#[79]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_oct
+</UL>
+
+<P><STRONG><a name="[7a]"></a>_printf_x</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_x.o(.ARM.Collect$$_printf_percent$$0000000C))
+<BR><BR>[Stack]<UL><LI>Max Depth = 80 + Unknown Stack Size
+<LI>Call Chain = _printf_x &rArr; _printf_int_hex &rArr; _printf_longlong_hex &rArr; _printf_int_common &rArr; _printf_post_padding
+</UL>
+<BR>[Calls]<UL><LI><a href="#[7b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_hex
+</UL>
+
+<P><STRONG><a name="[7c]"></a>_printf_lli</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_lli.o(.ARM.Collect$$_printf_percent$$0000000D))
+<BR><BR>[Stack]<UL><LI>Max Depth = 72 + Unknown Stack Size
+<LI>Call Chain = _printf_lli &rArr; _printf_longlong_dec &rArr; _printf_int_common &rArr; _printf_post_padding
+</UL>
+<BR>[Calls]<UL><LI><a href="#[7d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_longlong_dec
+</UL>
+
+<P><STRONG><a name="[7e]"></a>_printf_lld</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_lld.o(.ARM.Collect$$_printf_percent$$0000000E))
+<BR><BR>[Stack]<UL><LI>Max Depth = 72 + Unknown Stack Size
+<LI>Call Chain = _printf_lld &rArr; _printf_longlong_dec &rArr; _printf_int_common &rArr; _printf_post_padding
+</UL>
+<BR>[Calls]<UL><LI><a href="#[7d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_longlong_dec
+</UL>
+
+<P><STRONG><a name="[7f]"></a>_printf_llu</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_llu.o(.ARM.Collect$$_printf_percent$$0000000F))
+<BR><BR>[Stack]<UL><LI>Max Depth = 72 + Unknown Stack Size
+<LI>Call Chain = _printf_llu &rArr; _printf_longlong_dec &rArr; _printf_int_common &rArr; _printf_post_padding
+</UL>
+<BR>[Calls]<UL><LI><a href="#[7d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_longlong_dec
+</UL>
+
+<P><STRONG><a name="[80]"></a>_printf_llo</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_llo.o(.ARM.Collect$$_printf_percent$$00000010))
+<BR><BR>[Stack]<UL><LI>Max Depth = 56 + Unknown Stack Size
+<LI>Call Chain = _printf_llo &rArr; _printf_ll_oct &rArr; _printf_longlong_oct &rArr; _printf_int_common &rArr; _printf_post_padding
+</UL>
+<BR>[Calls]<UL><LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_ll_oct
+</UL>
+
+<P><STRONG><a name="[82]"></a>_printf_llx</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_llx.o(.ARM.Collect$$_printf_percent$$00000011))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64 + Unknown Stack Size
+<LI>Call Chain = _printf_llx &rArr; _printf_ll_hex &rArr; _printf_longlong_hex &rArr; _printf_int_common &rArr; _printf_post_padding
+</UL>
+<BR>[Calls]<UL><LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_ll_hex
+</UL>
+
+<P><STRONG><a name="[1fa]"></a>_printf_l</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_l.o(.ARM.Collect$$_printf_percent$$00000012))
+
+<P><STRONG><a name="[84]"></a>_printf_c</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_c.o(.ARM.Collect$$_printf_percent$$00000013))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40 + Unknown Stack Size
+<LI>Call Chain = _printf_c &rArr; _printf_char &rArr; _printf_cs_common &rArr; _printf_str &rArr; _printf_post_padding
+</UL>
+<BR>[Calls]<UL><LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_char
+</UL>
+
+<P><STRONG><a name="[86]"></a>_printf_s</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_s.o(.ARM.Collect$$_printf_percent$$00000014))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40 + Unknown Stack Size
+<LI>Call Chain = _printf_s &rArr; _printf_string &rArr; _printf_cs_common &rArr; _printf_str &rArr; _printf_post_padding
+</UL>
+<BR>[Calls]<UL><LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_string
+</UL>
+
+<P><STRONG><a name="[88]"></a>_printf_lc</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_lc.o(.ARM.Collect$$_printf_percent$$00000015))
+<BR><BR>[Stack]<UL><LI>Max Depth = 88 + Unknown Stack Size
+<LI>Call Chain = _printf_lc &rArr; _printf_wchar &rArr; _printf_lcs_common &rArr; _printf_wctomb &rArr; _wcrtomb &rArr; __rt_ctype_table
+</UL>
+<BR>[Calls]<UL><LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_wchar
+</UL>
+
+<P><STRONG><a name="[8a]"></a>_printf_ls</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_ls.o(.ARM.Collect$$_printf_percent$$00000016))
+<BR><BR>[Stack]<UL><LI>Max Depth = 88 + Unknown Stack Size
+<LI>Call Chain = _printf_ls &rArr; _printf_wstring &rArr; _printf_lcs_common &rArr; _printf_wctomb &rArr; _wcrtomb &rArr; __rt_ctype_table
+</UL>
+<BR>[Calls]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_wstring
 </UL>
-<BR>[Called By]<UL><LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__scatterload_copy
+
+<P><STRONG><a name="[1fb]"></a>_printf_percent_end</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, _printf_percent_end.o(.ARM.Collect$$_printf_percent$$00000017))
+
+<P><STRONG><a name="[96]"></a>__rt_lib_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit.o(.ARM.Collect$$libinit$$00000000))
+<BR><BR>[Called By]<UL><LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_entry_li
 </UL>
 
-<P><STRONG><a name="[b2]"></a>__scatterload_zeroinit</STRONG> (Thumb, 28 bytes, Stack size unknown bytes, __scatter_zi.o(!!handler_zi), UNUSED)
+<P><STRONG><a name="[1fc]"></a>__rt_lib_init_fp_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000002))
 
-<P><STRONG><a name="[54]"></a>__rt_lib_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit.o(.ARM.Collect$$libinit$$00000000))
-<BR><BR>[Called By]<UL><LI><a href="#[53]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_entry_li
+<P><STRONG><a name="[8c]"></a>__rt_lib_init_heap_2</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000005))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64 + Unknown Stack Size
+<LI>Call Chain = __rt_lib_init_heap_2 &rArr; _init_alloc &rArr; __rt_SIGRTMEM &rArr; __rt_SIGRTMEM_inner &rArr; __default_signal_display &rArr; _ttywrch
 </UL>
+<BR>[Calls]<UL><LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_init_alloc
+</UL>
+
+<P><STRONG><a name="[1fd]"></a>__rt_lib_init_preinit_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000004))
 
-<P><STRONG><a name="[b3]"></a>__rt_lib_init_alloca_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000002E))
+<P><STRONG><a name="[1fe]"></a>__rt_lib_init_heap_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000A))
 
-<P><STRONG><a name="[b4]"></a>__rt_lib_init_argv_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000002C))
+<P><STRONG><a name="[8e]"></a>__rt_lib_init_lc_common</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000F))
+<BR><BR>[Calls]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_locale
+</UL>
+
+<P><STRONG><a name="[1ff]"></a>__rt_lib_init_rand_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000E))
 
-<P><STRONG><a name="[b5]"></a>__rt_lib_init_atexit_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001B))
+<P><STRONG><a name="[200]"></a>__rt_lib_init_user_alloc_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000C))
 
-<P><STRONG><a name="[b6]"></a>__rt_lib_init_clock_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000021))
+<P><STRONG><a name="[201]"></a>__rt_lib_init_lc_collate_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000011))
 
-<P><STRONG><a name="[b7]"></a>__rt_lib_init_cpp_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000032))
+<P><STRONG><a name="[90]"></a>__rt_lib_init_lc_ctype_2</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000012))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8 + Unknown Stack Size
+<LI>Call Chain = __rt_lib_init_lc_ctype_2 &rArr; _get_lc_ctype
+</UL>
+<BR>[Calls]<UL><LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_get_lc_ctype
+</UL>
 
-<P><STRONG><a name="[b8]"></a>__rt_lib_init_exceptions_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000030))
+<P><STRONG><a name="[202]"></a>__rt_lib_init_lc_ctype_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000013))
 
-<P><STRONG><a name="[b9]"></a>__rt_lib_init_fp_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000002))
+<P><STRONG><a name="[203]"></a>__rt_lib_init_lc_monetary_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000015))
 
-<P><STRONG><a name="[ba]"></a>__rt_lib_init_fp_trap_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001F))
+<P><STRONG><a name="[91]"></a>__rt_lib_init_lc_numeric_2</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000016))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8 + Unknown Stack Size
+<LI>Call Chain = __rt_lib_init_lc_numeric_2 &rArr; _get_lc_numeric
+</UL>
+<BR>[Calls]<UL><LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_get_lc_numeric
+</UL>
 
-<P><STRONG><a name="[bb]"></a>__rt_lib_init_getenv_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000023))
+<P><STRONG><a name="[204]"></a>__rt_lib_init_alloca_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000002E))
 
-<P><STRONG><a name="[bc]"></a>__rt_lib_init_heap_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000A))
+<P><STRONG><a name="[205]"></a>__rt_lib_init_argv_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000002C))
 
-<P><STRONG><a name="[bd]"></a>__rt_lib_init_lc_collate_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000011))
+<P><STRONG><a name="[206]"></a>__rt_lib_init_atexit_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001B))
 
-<P><STRONG><a name="[be]"></a>__rt_lib_init_lc_ctype_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000013))
+<P><STRONG><a name="[207]"></a>__rt_lib_init_clock_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000021))
 
-<P><STRONG><a name="[bf]"></a>__rt_lib_init_lc_monetary_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000015))
+<P><STRONG><a name="[208]"></a>__rt_lib_init_cpp_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000032))
 
-<P><STRONG><a name="[c0]"></a>__rt_lib_init_lc_numeric_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000017))
+<P><STRONG><a name="[209]"></a>__rt_lib_init_exceptions_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000030))
 
-<P><STRONG><a name="[c1]"></a>__rt_lib_init_lc_time_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000019))
+<P><STRONG><a name="[20a]"></a>__rt_lib_init_fp_trap_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001F))
 
-<P><STRONG><a name="[c2]"></a>__rt_lib_init_preinit_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000004))
+<P><STRONG><a name="[20b]"></a>__rt_lib_init_getenv_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000023))
 
-<P><STRONG><a name="[c3]"></a>__rt_lib_init_rand_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000E))
+<P><STRONG><a name="[20c]"></a>__rt_lib_init_lc_numeric_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000017))
 
-<P><STRONG><a name="[c4]"></a>__rt_lib_init_return</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000033))
+<P><STRONG><a name="[20d]"></a>__rt_lib_init_lc_time_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000019))
 
-<P><STRONG><a name="[c5]"></a>__rt_lib_init_signal_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001D))
+<P><STRONG><a name="[20e]"></a>__rt_lib_init_return</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000033))
 
-<P><STRONG><a name="[c6]"></a>__rt_lib_init_stdio_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000025))
+<P><STRONG><a name="[20f]"></a>__rt_lib_init_signal_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001D))
 
-<P><STRONG><a name="[c7]"></a>__rt_lib_init_user_alloc_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000C))
+<P><STRONG><a name="[210]"></a>__rt_lib_init_stdio_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000025))
 
-<P><STRONG><a name="[59]"></a>__rt_lib_shutdown</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown.o(.ARM.Collect$$libshutdown$$00000000))
-<BR><BR>[Called By]<UL><LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_exit_ls
+<P><STRONG><a name="[9b]"></a>__rt_lib_shutdown</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown.o(.ARM.Collect$$libshutdown$$00000000))
+<BR><BR>[Called By]<UL><LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_exit_ls
 </UL>
 
-<P><STRONG><a name="[c8]"></a>__rt_lib_shutdown_cpp_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000002))
+<P><STRONG><a name="[211]"></a>__rt_lib_shutdown_cpp_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000002))
 
-<P><STRONG><a name="[c9]"></a>__rt_lib_shutdown_fp_trap_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000007))
+<P><STRONG><a name="[212]"></a>__rt_lib_shutdown_fp_trap_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000007))
 
-<P><STRONG><a name="[ca]"></a>__rt_lib_shutdown_heap_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000F))
+<P><STRONG><a name="[213]"></a>__rt_lib_shutdown_heap_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000F))
 
-<P><STRONG><a name="[cb]"></a>__rt_lib_shutdown_return</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000010))
+<P><STRONG><a name="[214]"></a>__rt_lib_shutdown_return</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000010))
 
-<P><STRONG><a name="[cc]"></a>__rt_lib_shutdown_signal_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000A))
+<P><STRONG><a name="[215]"></a>__rt_lib_shutdown_signal_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000A))
 
-<P><STRONG><a name="[cd]"></a>__rt_lib_shutdown_stdio_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000004))
+<P><STRONG><a name="[216]"></a>__rt_lib_shutdown_stdio_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000004))
 
-<P><STRONG><a name="[ce]"></a>__rt_lib_shutdown_user_alloc_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000C))
+<P><STRONG><a name="[217]"></a>__rt_lib_shutdown_user_alloc_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000C))
 
-<P><STRONG><a name="[4e]"></a>__rt_entry</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry.o(.ARM.Collect$$rtentry$$00000000))
-<BR><BR>[Called By]<UL><LI><a href="#[4f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__scatterload_rt2
-<LI><a href="#[4c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__main
+<P><STRONG><a name="[68]"></a>__rt_entry</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry.o(.ARM.Collect$$rtentry$$00000000))
+<BR><BR>[Called By]<UL><LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__main
+<LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__scatterload_rt2
 </UL>
 
-<P><STRONG><a name="[cf]"></a>__rt_entry_presh_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000002))
+<P><STRONG><a name="[218]"></a>__rt_entry_presh_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000002))
 
-<P><STRONG><a name="[51]"></a>__rt_entry_sh</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry4.o(.ARM.Collect$$rtentry$$00000004))
+<P><STRONG><a name="[93]"></a>__rt_entry_sh</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry4.o(.ARM.Collect$$rtentry$$00000004))
 <BR><BR>[Stack]<UL><LI>Max Depth = 8 + Unknown Stack Size
 <LI>Call Chain = __rt_entry_sh &rArr; __user_setup_stackheap
 </UL>
-<BR>[Calls]<UL><LI><a href="#[52]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__user_setup_stackheap
+<BR>[Calls]<UL><LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__user_setup_stackheap
 </UL>
 
-<P><STRONG><a name="[53]"></a>__rt_entry_li</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000A))
-<BR><BR>[Calls]<UL><LI><a href="#[54]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_lib_init
+<P><STRONG><a name="[95]"></a>__rt_entry_li</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000A))
+<BR><BR>[Calls]<UL><LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_lib_init
 </UL>
 
-<P><STRONG><a name="[d0]"></a>__rt_entry_postsh_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000009))
+<P><STRONG><a name="[219]"></a>__rt_entry_postsh_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000009))
 
-<P><STRONG><a name="[55]"></a>__rt_entry_main</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000D))
-<BR><BR>[Stack]<UL><LI>Max Depth = 160 + Unknown Stack Size
-<LI>Call Chain = __rt_entry_main &rArr; main &rArr; MX_TIM1_Init &rArr; HAL_TIM_MspPostInit &rArr; HAL_GPIO_Init
+<P><STRONG><a name="[97]"></a>__rt_entry_main</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000D))
+<BR><BR>[Stack]<UL><LI>Max Depth = 1048 + Unknown Stack Size
+<LI>Call Chain = __rt_entry_main &rArr; main &rArr; WIFI_process &rArr; WIFI_send_deal &rArr; ESP32_Link_Server &rArr; ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
 </UL>
-<BR>[Calls]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
-<LI><a href="#[57]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;exit
+<BR>[Calls]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;exit
 </UL>
 
-<P><STRONG><a name="[d1]"></a>__rt_entry_postli_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000C))
+<P><STRONG><a name="[21a]"></a>__rt_entry_postli_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000C))
 
-<P><STRONG><a name="[5e]"></a>__rt_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rtexit.o(.ARM.Collect$$rtexit$$00000000))
-<BR><BR>[Called By]<UL><LI><a href="#[57]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;exit
+<P><STRONG><a name="[dd]"></a>__rt_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rtexit.o(.ARM.Collect$$rtexit$$00000000))
+<BR><BR>[Called By]<UL><LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;exit
 </UL>
 
-<P><STRONG><a name="[58]"></a>__rt_exit_ls</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000003))
-<BR><BR>[Calls]<UL><LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_lib_shutdown
+<P><STRONG><a name="[9a]"></a>__rt_exit_ls</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000003))
+<BR><BR>[Calls]<UL><LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_lib_shutdown
 </UL>
 
-<P><STRONG><a name="[d2]"></a>__rt_exit_prels_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000002))
+<P><STRONG><a name="[21b]"></a>__rt_exit_prels_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000002))
 
-<P><STRONG><a name="[5a]"></a>__rt_exit_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000004))
-<BR><BR>[Calls]<UL><LI><a href="#[5b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_sys_exit
+<P><STRONG><a name="[9c]"></a>__rt_exit_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000004))
+<BR><BR>[Calls]<UL><LI><a href="#[9d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_sys_exit
 </UL>
 
-<P><STRONG><a name="[3]"></a>Reset_Handler</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[f]"></a>Reset_Handler</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[1f]"></a>ADC1_2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
-<BR><BR>[Calls]<UL><LI><a href="#[1f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC1_2_IRQHandler
-</UL>
-<BR>[Called By]<UL><LI><a href="#[1f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC1_2_IRQHandler
+<P><STRONG><a name="[21c]"></a>_maybe_terminate_alloc</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, maybetermalloc1.o(.emb_text), UNUSED)
+
+<P><STRONG><a name="[2b]"></a>ADC1_2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<BR><BR>[Calls]<UL><LI><a href="#[2b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC1_2_IRQHandler
 </UL>
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+<BR>[Called By]<UL><LI><a href="#[2b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC1_2_IRQHandler
 </UL>
-<P><STRONG><a name="[3c]"></a>ADC3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[22]"></a>CAN1_RX1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[48]"></a>ADC3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[23]"></a>CAN1_SCE_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[2e]"></a>CAN1_RX1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[18]"></a>DMA1_Channel1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[2f]"></a>CAN1_SCE_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[19]"></a>DMA1_Channel2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[25]"></a>DMA1_Channel2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[1a]"></a>DMA1_Channel3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[26]"></a>DMA1_Channel3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[45]"></a>DMA2_Channel1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[51]"></a>DMA2_Channel1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[46]"></a>DMA2_Channel2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[52]"></a>DMA2_Channel2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[13]"></a>EXTI0_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[54]"></a>DMA2_Channel4_5_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[35]"></a>EXTI15_10_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[1f]"></a>EXTI0_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[14]"></a>EXTI1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[41]"></a>EXTI15_10_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[15]"></a>EXTI2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[20]"></a>EXTI1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[16]"></a>EXTI3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[21]"></a>EXTI2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[17]"></a>EXTI4_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[22]"></a>EXTI3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[24]"></a>EXTI9_5_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[23]"></a>EXTI4_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[11]"></a>FLASH_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[1d]"></a>FLASH_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[3d]"></a>FSMC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[49]"></a>FSMC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[2d]"></a>I2C1_ER_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[39]"></a>I2C1_ER_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[2c]"></a>I2C1_EV_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[38]"></a>I2C1_EV_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[2f]"></a>I2C2_ER_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[3b]"></a>I2C2_ER_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[2e]"></a>I2C2_EV_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[3a]"></a>I2C2_EV_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[e]"></a>PVD_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[1a]"></a>PVD_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[12]"></a>RCC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[1e]"></a>RCC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[36]"></a>RTC_Alarm_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[42]"></a>RTC_Alarm_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[10]"></a>RTC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[1c]"></a>RTC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[3e]"></a>SDIO_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[4a]"></a>SDIO_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[30]"></a>SPI1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[3c]"></a>SPI1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[31]"></a>SPI2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[3d]"></a>SPI2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[40]"></a>SPI3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[4c]"></a>SPI3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[f]"></a>TAMPER_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[1b]"></a>TAMPER_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[25]"></a>TIM1_BRK_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[31]"></a>TIM1_BRK_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[28]"></a>TIM1_CC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[34]"></a>TIM1_CC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[27]"></a>TIM1_TRG_COM_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[33]"></a>TIM1_TRG_COM_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[26]"></a>TIM1_UP_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[32]"></a>TIM1_UP_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[2a]"></a>TIM3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[36]"></a>TIM3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[2b]"></a>TIM4_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[37]"></a>TIM4_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[3f]"></a>TIM5_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[4b]"></a>TIM5_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[43]"></a>TIM6_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[4f]"></a>TIM6_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[44]"></a>TIM7_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[50]"></a>TIM7_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[38]"></a>TIM8_BRK_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[44]"></a>TIM8_BRK_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[3b]"></a>TIM8_CC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[47]"></a>TIM8_CC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[3a]"></a>TIM8_TRG_COM_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[46]"></a>TIM8_TRG_COM_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[39]"></a>TIM8_UP_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[45]"></a>TIM8_UP_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[42]"></a>UART5_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[4e]"></a>UART5_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[34]"></a>USART3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[40]"></a>USART3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[37]"></a>USBWakeUp_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[43]"></a>USBWakeUp_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[20]"></a>USB_HP_CAN1_TX_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[2c]"></a>USB_HP_CAN1_TX_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[21]"></a>USB_LP_CAN1_RX0_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[2d]"></a>USB_LP_CAN1_RX0_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[d]"></a>WWDG_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
+<P><STRONG><a name="[19]"></a>WWDG_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
 <BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
 </UL>
-<P><STRONG><a name="[5d]"></a>__user_initial_stackheap</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, startup_stm32f103xe.o(.text))
-<BR><BR>[Called By]<UL><LI><a href="#[52]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__user_setup_stackheap
+<P><STRONG><a name="[d9]"></a>__user_initial_stackheap</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, startup_stm32f103xe.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__user_setup_stackheap
 </UL>
 
-<P><STRONG><a name="[a4]"></a>__aeabi_memclr4</STRONG> (Thumb, 0 bytes, Stack size 4 bytes, rt_memclr_w.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = __aeabi_memclr4
+<P><STRONG><a name="[c]"></a>malloc</STRONG> (Thumb, 94 bytes, Stack size 16 bytes, h1_alloc.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 48<LI>Call Chain = malloc &rArr; __Heap_Full &rArr; __Heap_ProvideMemory &rArr; free
 </UL>
-<BR>[Called By]<UL><LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
-<LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
-<LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
+<BR>[Calls]<UL><LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__Heap_Full
+<LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_heap_descriptor
 </UL>
-
-<P><STRONG><a name="[d3]"></a>__aeabi_memclr8</STRONG> (Thumb, 0 bytes, Stack size 4 bytes, rt_memclr_w.o(.text), UNUSED)
-
-<P><STRONG><a name="[d4]"></a>__rt_memclr_w</STRONG> (Thumb, 78 bytes, Stack size 4 bytes, rt_memclr_w.o(.text), UNUSED)
-
-<P><STRONG><a name="[d5]"></a>_memset_w</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rt_memclr_w.o(.text), UNUSED)
-
-<P><STRONG><a name="[d6]"></a>__use_two_region_memory</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED)
-
-<P><STRONG><a name="[d7]"></a>__rt_heap_escrow$2region</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED)
-
-<P><STRONG><a name="[d8]"></a>__rt_heap_expand$2region</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED)
-
-<P><STRONG><a name="[52]"></a>__user_setup_stackheap</STRONG> (Thumb, 74 bytes, Stack size 8 bytes, sys_stackheap_outer.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 8 + Unknown Stack Size
-<LI>Call Chain = __user_setup_stackheap
+<BR>[Called By]<UL><LI><a href="#[e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;realloc
 </UL>
-<BR>[Calls]<UL><LI><a href="#[5d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__user_initial_stackheap
-<LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__user_perproc_libspace
+<BR>[Address Reference Count : 1]<UL><LI> cjson.o(.data)
 </UL>
-<BR>[Called By]<UL><LI><a href="#[51]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_entry_sh
+<P><STRONG><a name="[d]"></a>free</STRONG> (Thumb, 78 bytes, Stack size 16 bytes, h1_free.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = free
 </UL>
-
-<P><STRONG><a name="[57]"></a>exit</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, exit.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 8 + Unknown Stack Size
-<LI>Call Chain = exit
+<BR>[Calls]<UL><LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_heap_descriptor
 </UL>
-<BR>[Calls]<UL><LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_exit
+<BR>[Called By]<UL><LI><a href="#[e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;realloc
+<LI><a href="#[b2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__Heap_ProvideMemory
 </UL>
-<BR>[Called By]<UL><LI><a href="#[55]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_entry_main
+<BR>[Address Reference Count : 1]<UL><LI> cjson.o(.data)
 </UL>
-
-<P><STRONG><a name="[d9]"></a>__user_libspace</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, libspace.o(.text), UNUSED)
-
-<P><STRONG><a name="[5c]"></a>__user_perproc_libspace</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, libspace.o(.text))
-<BR><BR>[Called By]<UL><LI><a href="#[52]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__user_setup_stackheap
+<P><STRONG><a name="[e]"></a>realloc</STRONG> (Thumb, 184 bytes, Stack size 16 bytes, h1_realloc.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = realloc &rArr; malloc &rArr; __Heap_Full &rArr; __Heap_ProvideMemory &rArr; free
 </UL>
-
-<P><STRONG><a name="[da]"></a>__user_perthread_libspace</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, libspace.o(.text), UNUSED)
-
-<P><STRONG><a name="[5b]"></a>_sys_exit</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, sys_exit.o(.text))
-<BR><BR>[Called By]<UL><LI><a href="#[5a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_exit_exit
+<BR>[Calls]<UL><LI><a href="#[d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;free
+<LI><a href="#[c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
+<LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_heap_descriptor
+<LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy4
 </UL>
-
-<P><STRONG><a name="[db]"></a>__I$use$semihosting</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, use_no_semi.o(.text), UNUSED)
-
-<P><STRONG><a name="[dc]"></a>__use_no_semihosting_swi</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, use_no_semi.o(.text), UNUSED)
-
-<P><STRONG><a name="[dd]"></a>__semihosting_library_function</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, indicate_semi.o(.text), UNUSED)
-
-<P><STRONG><a name="[5f]"></a>ADC_ConversionStop_Disable</STRONG> (Thumb, 86 bytes, Stack size 16 bytes, stm32f1xx_hal_adc.o(i.ADC_ConversionStop_Disable))
-<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = ADC_ConversionStop_Disable
+<BR>[Address Reference Count : 1]<UL><LI> cjson.o(.data)
 </UL>
-<BR>[Calls]<UL><LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+<P><STRONG><a name="[a1]"></a>tolower</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, tolower.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = tolower &rArr; __rt_ctype_table
 </UL>
-<BR>[Called By]<UL><LI><a href="#[62]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_Init
+<BR>[Calls]<UL><LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_ctype_table
 </UL>
-
-<P><STRONG><a name="[7]"></a>BusFault_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.BusFault_Handler))
-<BR><BR>[Calls]<UL><LI><a href="#[7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;BusFault_Handler
+<BR>[Called By]<UL><LI><a href="#[1a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;get_object_item
 </UL>
-<BR>[Called By]<UL><LI><a href="#[7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;BusFault_Handler
+
+<P><STRONG><a name="[a3]"></a>vsprintf</STRONG> (Thumb, 32 bytes, Stack size 16 bytes, vsprintf.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 120 + Unknown Stack Size
+<LI>Call Chain = vsprintf &rArr; _printf_char_common &rArr; __printf
 </UL>
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+<BR>[Calls]<UL><LI><a href="#[57]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_sputc
+<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_char_common
 </UL>
-<P><STRONG><a name="[1b]"></a>DMA1_Channel4_IRQHandler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DMA1_Channel4_IRQHandler))
-<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = DMA1_Channel4_IRQHandler &rArr; HAL_DMA_IRQHandler
+<BR>[Called By]<UL><LI><a href="#[102]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Device_Printf
 </UL>
-<BR>[Calls]<UL><LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_IRQHandler
+
+<P><STRONG><a name="[b9]"></a>_printf_pre_padding</STRONG> (Thumb, 44 bytes, Stack size 16 bytes, _printf_pad.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = _printf_pre_padding
 </UL>
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+<BR>[Called By]<UL><LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_wctomb
+<LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_dec_real
+<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_common
+<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_str
+<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_infnan
+<LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_hex_real
 </UL>
-<P><STRONG><a name="[1c]"></a>DMA1_Channel5_IRQHandler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DMA1_Channel5_IRQHandler))
-<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = DMA1_Channel5_IRQHandler &rArr; HAL_DMA_IRQHandler
+
+<P><STRONG><a name="[ba]"></a>_printf_post_padding</STRONG> (Thumb, 34 bytes, Stack size 16 bytes, _printf_pad.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = _printf_post_padding
 </UL>
-<BR>[Calls]<UL><LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_IRQHandler
+<BR>[Called By]<UL><LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_wctomb
+<LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_dec_real
+<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_common
+<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_str
+<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_infnan
+<LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_hex_real
 </UL>
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+
+<P><STRONG><a name="[75]"></a>_printf_int_dec</STRONG> (Thumb, 104 bytes, Stack size 24 bytes, _printf_dec.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = _printf_int_dec &rArr; _printf_int_common &rArr; _printf_post_padding
 </UL>
-<P><STRONG><a name="[1d]"></a>DMA1_Channel6_IRQHandler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DMA1_Channel6_IRQHandler))
-<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = DMA1_Channel6_IRQHandler &rArr; HAL_DMA_IRQHandler
+<BR>[Calls]<UL><LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_common
+<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_truncate_unsigned
+<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_truncate_signed
 </UL>
-<BR>[Calls]<UL><LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_IRQHandler
+<BR>[Called By]<UL><LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_u
+<LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_d
+<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_i
 </UL>
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+
+<P><STRONG><a name="[a8]"></a>_printf_longlong_hex</STRONG> (Thumb, 86 bytes, Stack size 16 bytes, _printf_hex_int_ll_ptr.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = _printf_longlong_hex &rArr; _printf_int_common &rArr; _printf_post_padding
 </UL>
-<P><STRONG><a name="[1e]"></a>DMA1_Channel7_IRQHandler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DMA1_Channel7_IRQHandler))
-<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = DMA1_Channel7_IRQHandler &rArr; HAL_DMA_IRQHandler
+<BR>[Calls]<UL><LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_common
 </UL>
-<BR>[Calls]<UL><LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_IRQHandler
+<BR>[Called By]<UL><LI><a href="#[6d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_hex_ptr
+<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_ll_hex
+<LI><a href="#[7b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_hex
 </UL>
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+
+<P><STRONG><a name="[7b]"></a>_printf_int_hex</STRONG> (Thumb, 28 bytes, Stack size 16 bytes, _printf_hex_int_ll_ptr.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = _printf_int_hex &rArr; _printf_longlong_hex &rArr; _printf_int_common &rArr; _printf_post_padding
 </UL>
-<P><STRONG><a name="[47]"></a>DMA2_Channel3_IRQHandler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DMA2_Channel3_IRQHandler))
-<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = DMA2_Channel3_IRQHandler &rArr; HAL_DMA_IRQHandler
+<BR>[Calls]<UL><LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_truncate_unsigned
+<LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_longlong_hex
 </UL>
-<BR>[Calls]<UL><LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_IRQHandler
+<BR>[Called By]<UL><LI><a href="#[7a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_x
 </UL>
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+
+<P><STRONG><a name="[83]"></a>_printf_ll_hex</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, _printf_hex_int_ll_ptr.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = _printf_ll_hex &rArr; _printf_longlong_hex &rArr; _printf_int_common &rArr; _printf_post_padding
 </UL>
-<P><STRONG><a name="[48]"></a>DMA2_Channel4_5_IRQHandler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DMA2_Channel4_5_IRQHandler))
-<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = DMA2_Channel4_5_IRQHandler &rArr; HAL_DMA_IRQHandler
+<BR>[Calls]<UL><LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_longlong_hex
 </UL>
-<BR>[Calls]<UL><LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_IRQHandler
+<BR>[Called By]<UL><LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_llx
 </UL>
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+
+<P><STRONG><a name="[6d]"></a>_printf_hex_ptr</STRONG> (Thumb, 18 bytes, Stack size 0 bytes, _printf_hex_int_ll_ptr.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = _printf_hex_ptr &rArr; _printf_longlong_hex &rArr; _printf_int_common &rArr; _printf_post_padding
 </UL>
-<P><STRONG><a name="[a]"></a>DebugMon_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DebugMon_Handler))
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+<BR>[Calls]<UL><LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_longlong_hex
 </UL>
-<P><STRONG><a name="[9b]"></a>Error_Handler</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, main.o(i.Error_Handler))
-<BR><BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_MspInit
-<LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART2_UART_Init
-<LI><a href="#[aa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
-<LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_UART4_Init
-<LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
-<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
-<LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
-<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_I2C2_Init
-<LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_I2C1_Init
-<LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_ADC1_Init
+<BR>[Called By]<UL><LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_p
 </UL>
 
-<P><STRONG><a name="[9d]"></a>HAL_ADC_ConfigChannel</STRONG> (Thumb, 240 bytes, Stack size 24 bytes, stm32f1xx_hal_adc.o(i.HAL_ADC_ConfigChannel))
-<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = HAL_ADC_ConfigChannel
+<P><STRONG><a name="[a9]"></a>__printf</STRONG> (Thumb, 388 bytes, Stack size 40 bytes, __printf_flags_ss_wp.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40 + Unknown Stack Size
+<LI>Call Chain = __printf
 </UL>
-<BR>[Called By]<UL><LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_ADC1_Init
+<BR>[Calls]<UL><LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_percent
+<LI><a href="#[aa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_is_digit
+</UL>
+<BR>[Called By]<UL><LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_char_common
 </UL>
 
-<P><STRONG><a name="[62]"></a>HAL_ADC_Init</STRONG> (Thumb, 272 bytes, Stack size 24 bytes, stm32f1xx_hal_adc.o(i.HAL_ADC_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 88<LI>Call Chain = HAL_ADC_Init &rArr; HAL_ADC_MspInit &rArr; HAL_GPIO_Init
+<P><STRONG><a name="[ac]"></a>atoi</STRONG> (Thumb, 26 bytes, Stack size 16 bytes, atoi.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 88<LI>Call Chain = atoi &rArr; strtol &rArr; _strtoul
 </UL>
-<BR>[Calls]<UL><LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_MspInit
-<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_ConversionStop_Disable
+<BR>[Calls]<UL><LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strtol
+<LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_errno_addr
 </UL>
-<BR>[Called By]<UL><LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_ADC1_Init
+<BR>[Called By]<UL><LI><a href="#[196]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_recv_deal
 </UL>
 
-<P><STRONG><a name="[63]"></a>HAL_ADC_MspInit</STRONG> (Thumb, 76 bytes, Stack size 24 bytes, adc.o(i.HAL_ADC_MspInit))
-<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = HAL_ADC_MspInit &rArr; HAL_GPIO_Init
-</UL>
-<BR>[Calls]<UL><LI><a href="#[64]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
-</UL>
-<BR>[Called By]<UL><LI><a href="#[62]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_Init
+<P><STRONG><a name="[19a]"></a>strchr</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, strchr.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[196]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_recv_deal
 </UL>
 
-<P><STRONG><a name="[94]"></a>HAL_DMA_Abort</STRONG> (Thumb, 70 bytes, Stack size 8 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Abort))
-<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = HAL_DMA_Abort
+<P><STRONG><a name="[1c2]"></a>memcmp</STRONG> (Thumb, 88 bytes, Stack size 8 bytes, memcmp.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = memcmp
 </UL>
-<BR>[Called By]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
+<BR>[Called By]<UL><LI><a href="#[198]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;find_str
 </UL>
 
-<P><STRONG><a name="[92]"></a>HAL_DMA_Abort_IT</STRONG> (Thumb, 296 bytes, Stack size 40 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT))
-<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = HAL_DMA_Abort_IT
+<P><STRONG><a name="[100]"></a>strcpy</STRONG> (Thumb, 72 bytes, Stack size 12 bytes, strcpy.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = strcpy
 </UL>
-<BR>[Called By]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
+<BR>[Called By]<UL><LI><a href="#[1c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dev_load_description
+<LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
 </UL>
 
-<P><STRONG><a name="[61]"></a>HAL_DMA_IRQHandler</STRONG> (Thumb, 552 bytes, Stack size 40 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_IRQHandler))
-<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = HAL_DMA_IRQHandler
+<P><STRONG><a name="[103]"></a>strlen</STRONG> (Thumb, 62 bytes, Stack size 8 bytes, strlen.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = strlen
 </UL>
-<BR>[Called By]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DMA2_Channel4_5_IRQHandler
-<LI><a href="#[47]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DMA2_Channel3_IRQHandler
-<LI><a href="#[1e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DMA1_Channel7_IRQHandler
-<LI><a href="#[1d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DMA1_Channel6_IRQHandler
-<LI><a href="#[1c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DMA1_Channel5_IRQHandler
-<LI><a href="#[1b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DMA1_Channel4_IRQHandler
+<BR>[Called By]<UL><LI><a href="#[102]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Device_Printf
+<LI><a href="#[f6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;my_sprintf
+<LI><a href="#[198]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;find_str
+<LI><a href="#[196]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_recv_deal
+<LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
+<LI><a href="#[1af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_ParseWithOpts
 </UL>
 
-<P><STRONG><a name="[9a]"></a>HAL_DMA_Init</STRONG> (Thumb, 112 bytes, Stack size 12 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = HAL_DMA_Init
+<P><STRONG><a name="[1b1]"></a>strncmp</STRONG> (Thumb, 150 bytes, Stack size 16 bytes, strncmp.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = strncmp
 </UL>
-<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_MspInit
+<BR>[Called By]<UL><LI><a href="#[1b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_ParseWithLengthOpts
+<LI><a href="#[1b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_value
 </UL>
 
-<P><STRONG><a name="[64]"></a>HAL_GPIO_Init</STRONG> (Thumb, 462 bytes, Stack size 40 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = HAL_GPIO_Init
-</UL>
-<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_MspInit
-<LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_MspPostInit
-<LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_MspInit
-<LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_MspInit
-<LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
+<P><STRONG><a name="[101]"></a>strcat</STRONG> (Thumb, 24 bytes, Stack size 0 bytes, strcat.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
 </UL>
 
-<P><STRONG><a name="[a0]"></a>HAL_GPIO_WritePin</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin))
-<BR><BR>[Called By]<UL><LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
+<P><STRONG><a name="[194]"></a>__aeabi_memcpy</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, rt_memcpy_v6.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[193]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART_Send_DMA
+<LI><a href="#[196]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_recv_deal
 </UL>
 
-<P><STRONG><a name="[60]"></a>HAL_GetTick</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(i.HAL_GetTick))
-<BR><BR>[Called By]<UL><LI><a href="#[72]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_OscConfig
-<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
-<LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCCEx_PeriphCLKConfig
-<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_ConversionStop_Disable
+<P><STRONG><a name="[af]"></a>__rt_memcpy</STRONG> (Thumb, 138 bytes, Stack size 0 bytes, rt_memcpy_v6.o(.text), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy4
 </UL>
 
-<P><STRONG><a name="[65]"></a>HAL_I2C_Init</STRONG> (Thumb, 376 bytes, Stack size 16 bytes, stm32f1xx_hal_i2c.o(i.HAL_I2C_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 88<LI>Call Chain = HAL_I2C_Init &rArr; HAL_I2C_MspInit &rArr; HAL_GPIO_Init
+<P><STRONG><a name="[21d]"></a>_memcpy_lastbytes</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rt_memcpy_v6.o(.text), UNUSED)
+
+<P><STRONG><a name="[a0]"></a>__aeabi_memcpy4</STRONG> (Thumb, 0 bytes, Stack size 8 bytes, rt_memcpy_w.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = __aeabi_memcpy4
 </UL>
-<BR>[Calls]<UL><LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_MspInit
-<LI><a href="#[67]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetPCLK1Freq
+<BR>[Called By]<UL><LI><a href="#[15c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART_TxCpltCallback
+<LI><a href="#[14c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART_ErrorCallback
+<LI><a href="#[193]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART_Send_DMA
+<LI><a href="#[e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;realloc
+<LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_memcpy
 </UL>
-<BR>[Called By]<UL><LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_I2C2_Init
-<LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_I2C1_Init
+
+<P><STRONG><a name="[21e]"></a>__aeabi_memcpy8</STRONG> (Thumb, 0 bytes, Stack size 8 bytes, rt_memcpy_w.o(.text), UNUSED)
+
+<P><STRONG><a name="[21f]"></a>__rt_memcpy_w</STRONG> (Thumb, 100 bytes, Stack size 8 bytes, rt_memcpy_w.o(.text), UNUSED)
+
+<P><STRONG><a name="[220]"></a>_memcpy_lastbytes_aligned</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rt_memcpy_w.o(.text), UNUSED)
+
+<P><STRONG><a name="[199]"></a>__aeabi_memclr</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, rt_memclr.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[1cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;svanner_receive_analysis
+<LI><a href="#[1ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;svanner_receive_Rec_Start
+<LI><a href="#[1c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;esp_receive_Rec_Start
+<LI><a href="#[19b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;wifi_receive_clear
+<LI><a href="#[197]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_send_deal
+<LI><a href="#[196]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_recv_deal
 </UL>
 
-<P><STRONG><a name="[66]"></a>HAL_I2C_MspInit</STRONG> (Thumb, 134 bytes, Stack size 32 bytes, i2c.o(i.HAL_I2C_MspInit))
-<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = HAL_I2C_MspInit &rArr; HAL_GPIO_Init
+<P><STRONG><a name="[b0]"></a>__rt_memclr</STRONG> (Thumb, 68 bytes, Stack size 0 bytes, rt_memclr.o(.text), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_memset_w
 </UL>
-<BR>[Calls]<UL><LI><a href="#[64]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
+
+<P><STRONG><a name="[221]"></a>_memset</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rt_memclr.o(.text), UNUSED)
+
+<P><STRONG><a name="[fd]"></a>__aeabi_memclr4</STRONG> (Thumb, 0 bytes, Stack size 4 bytes, rt_memclr_w.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = __aeabi_memclr4
 </UL>
-<BR>[Called By]<UL><LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Init
+<BR>[Called By]<UL><LI><a href="#[102]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Device_Printf
+<LI><a href="#[146]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Motor_mix_work
+<LI><a href="#[16d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
+<LI><a href="#[169]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+<LI><a href="#[189]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
+<LI><a href="#[1b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;debugcall
+<LI><a href="#[18f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;decodedebugfunction
+<LI><a href="#[1bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;debugvarb
+<LI><a href="#[197]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_send_deal
+<LI><a href="#[196]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_recv_deal
+<LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
+<LI><a href="#[fc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Link_Server
+<LI><a href="#[184]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorInit
+<LI><a href="#[1b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_ParseWithLengthOpts
+<LI><a href="#[1ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_New_Item
 </UL>
 
-<P><STRONG><a name="[ac]"></a>HAL_IncTick</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(i.HAL_IncTick))
-<BR><BR>[Called By]<UL><LI><a href="#[c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SysTick_Handler
-</UL>
+<P><STRONG><a name="[222]"></a>__aeabi_memclr8</STRONG> (Thumb, 0 bytes, Stack size 4 bytes, rt_memclr_w.o(.text), UNUSED)
 
-<P><STRONG><a name="[68]"></a>HAL_Init</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, stm32f1xx_hal.o(i.HAL_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = HAL_Init &rArr; HAL_InitTick &rArr; HAL_NVIC_SetPriority
-</UL>
-<BR>[Calls]<UL><LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_MspInit
-<LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
-<LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriorityGrouping
+<P><STRONG><a name="[223]"></a>__rt_memclr_w</STRONG> (Thumb, 78 bytes, Stack size 4 bytes, rt_memclr_w.o(.text), UNUSED)
+
+<P><STRONG><a name="[b1]"></a>_memset_w</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rt_memclr_w.o(.text), UNUSED)
+<BR><BR>[Called By]<UL><LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_memclr
 </UL>
-<BR>[Called By]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+
+<P><STRONG><a name="[1c3]"></a>strcmp</STRONG> (Thumb, 128 bytes, Stack size 0 bytes, strcmpv7m.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[1a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;get_object_item
+<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_get_lc_numeric
+<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_get_lc_ctype
 </UL>
 
-<P><STRONG><a name="[6a]"></a>HAL_InitTick</STRONG> (Thumb, 54 bytes, Stack size 16 bytes, stm32f1xx_hal.o(i.HAL_InitTick))
-<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = HAL_InitTick &rArr; HAL_NVIC_SetPriority
+<P><STRONG><a name="[224]"></a>__use_two_region_memory</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED)
+
+<P><STRONG><a name="[1]"></a>__rt_heap_escrow</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED)
+
+<P><STRONG><a name="[0]"></a>__rt_heap_expand</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED)
+
+<P><STRONG><a name="[a2]"></a>__rt_ctype_table</STRONG> (Thumb, 16 bytes, Stack size 8 bytes, rt_ctype_table.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = __rt_ctype_table
 </UL>
-<BR>[Calls]<UL><LI><a href="#[6d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
-<LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_Config
+<BR>[Calls]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_locale
 </UL>
-<BR>[Called By]<UL><LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
-<LI><a href="#[68]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
+<BR>[Called By]<UL><LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strtol
+<LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;tolower
+<LI><a href="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_wcrtomb
+<LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;isspace
 </UL>
 
-<P><STRONG><a name="[6b]"></a>HAL_MspInit</STRONG> (Thumb, 52 bytes, Stack size 8 bytes, stm32f1xx_hal_msp.o(i.HAL_MspInit))
-<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = HAL_MspInit
-</UL>
-<BR>[Called By]<UL><LI><a href="#[68]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
+<P><STRONG><a name="[9e]"></a>__rt_heap_descriptor</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, rt_heap_descriptor_intlibspace.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;realloc
+<LI><a href="#[d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;free
+<LI><a href="#[c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
+<LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_init_alloc
 </UL>
 
-<P><STRONG><a name="[76]"></a>HAL_NVIC_EnableIRQ</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ))
-<BR><BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_MspInit
-<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_MspInit
-<LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_DMA_Init
+<P><STRONG><a name="[ad]"></a>__aeabi_errno_addr</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, rt_errno_addr_intlibspace.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strtol
+<LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_fp_value
+<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__set_errno
+<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__read_errno
+<LI><a href="#[ac]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;atoi
+<LI><a href="#[d1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_strtoul
 </UL>
 
-<P><STRONG><a name="[6d]"></a>HAL_NVIC_SetPriority</STRONG> (Thumb, 60 bytes, Stack size 16 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority))
-<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = HAL_NVIC_SetPriority
+<P><STRONG><a name="[225]"></a>__errno$intlibspace</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, rt_errno_addr_intlibspace.o(.text), UNUSED)
+
+<P><STRONG><a name="[226]"></a>__rt_errno_addr$intlibspace</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, rt_errno_addr_intlibspace.o(.text), UNUSED)
+
+<P><STRONG><a name="[227]"></a>__use_no_heap</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, hguard.o(.text), UNUSED)
+
+<P><STRONG><a name="[228]"></a>__heap$guard</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, hguard.o(.text), UNUSED)
+
+<P><STRONG><a name="[7]"></a>_terminate_user_alloc</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, init_alloc.o(.text), UNUSED)
+
+<P><STRONG><a name="[5]"></a>_init_user_alloc</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, init_alloc.o(.text), UNUSED)
+
+<P><STRONG><a name="[9f]"></a>__Heap_Full</STRONG> (Thumb, 34 bytes, Stack size 16 bytes, init_alloc.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = __Heap_Full &rArr; __Heap_ProvideMemory &rArr; free
 </UL>
-<BR>[Calls]<UL><LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__NVIC_SetPriority
+<BR>[Calls]<UL><LI><a href="#[b2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__Heap_ProvideMemory
 </UL>
-<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_MspInit
-<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_MspInit
-<LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_DMA_Init
-<LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
+<BR>[Called By]<UL><LI><a href="#[c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
 </UL>
 
-<P><STRONG><a name="[69]"></a>HAL_NVIC_SetPriorityGrouping</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping))
-<BR><BR>[Called By]<UL><LI><a href="#[68]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
+<P><STRONG><a name="[b3]"></a>__Heap_Broken</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, init_alloc.o(.text), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_SIGRTMEM
 </UL>
 
-<P><STRONG><a name="[6f]"></a>HAL_RCCEx_PeriphCLKConfig</STRONG> (Thumb, 224 bytes, Stack size 32 bytes, stm32f1xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig))
-<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = HAL_RCCEx_PeriphCLKConfig
+<P><STRONG><a name="[8d]"></a>_init_alloc</STRONG> (Thumb, 94 bytes, Stack size 24 bytes, init_alloc.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = _init_alloc &rArr; __rt_SIGRTMEM &rArr; __rt_SIGRTMEM_inner &rArr; __default_signal_display &rArr; _ttywrch
 </UL>
-<BR>[Calls]<UL><LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+<BR>[Calls]<UL><LI><a href="#[b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__Heap_Initialize
+<LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_heap_descriptor
+<LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_SIGRTMEM
+<LI><a href="#[b2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__Heap_ProvideMemory
 </UL>
-<BR>[Called By]<UL><LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
+<BR>[Called By]<UL><LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_lib_init_heap_2
 </UL>
 
-<P><STRONG><a name="[70]"></a>HAL_RCC_ClockConfig</STRONG> (Thumb, 280 bytes, Stack size 32 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig))
-<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = HAL_RCC_ClockConfig &rArr; HAL_InitTick &rArr; HAL_NVIC_SetPriority
-</UL>
-<BR>[Calls]<UL><LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetSysClockFreq
-<LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
-<LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
-</UL>
-<BR>[Called By]<UL><LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
+<P><STRONG><a name="[b5]"></a>__Heap_Initialize</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, h1_init.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_init_alloc
 </UL>
 
-<P><STRONG><a name="[67]"></a>HAL_RCC_GetPCLK1Freq</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq))
-<BR><BR>[Called By]<UL><LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Init
-<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_SetConfig
-</UL>
+<P><STRONG><a name="[2]"></a>__Heap_DescSize</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, h1_init.o(.text), UNUSED)
 
-<P><STRONG><a name="[af]"></a>HAL_RCC_GetPCLK2Freq</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq))
-<BR><BR>[Called By]<UL><LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_SetConfig
+<P><STRONG><a name="[b6]"></a>__read_errno</STRONG> (Thumb, 10 bytes, Stack size 8 bytes, _rserrno.o(.text), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_errno_addr
 </UL>
 
-<P><STRONG><a name="[71]"></a>HAL_RCC_GetSysClockFreq</STRONG> (Thumb, 58 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq))
-<BR><BR>[Called By]<UL><LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
+<P><STRONG><a name="[b7]"></a>__set_errno</STRONG> (Thumb, 12 bytes, Stack size 8 bytes, _rserrno.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = __set_errno
 </UL>
-
-<P><STRONG><a name="[72]"></a>HAL_RCC_OscConfig</STRONG> (Thumb, 778 bytes, Stack size 40 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig))
-<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = HAL_RCC_OscConfig
+<BR>[Calls]<UL><LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_errno_addr
 </UL>
-<BR>[Calls]<UL><LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+<BR>[Called By]<UL><LI><a href="#[1a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ldexp
+<LI><a href="#[19f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__mathlib_tofloat
 </UL>
-<BR>[Called By]<UL><LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
+
+<P><STRONG><a name="[a5]"></a>_printf_truncate_signed</STRONG> (Thumb, 18 bytes, Stack size 0 bytes, _printf_truncate.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_dec
 </UL>
 
-<P><STRONG><a name="[6c]"></a>HAL_SYSTICK_Config</STRONG> (Thumb, 40 bytes, Stack size 8 bytes, stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config))
-<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = HAL_SYSTICK_Config
+<P><STRONG><a name="[a6]"></a>_printf_truncate_unsigned</STRONG> (Thumb, 18 bytes, Stack size 0 bytes, _printf_truncate.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[79]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_oct
+<LI><a href="#[7b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_hex
+<LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_dec
 </UL>
-<BR>[Calls]<UL><LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__NVIC_SetPriority
+
+<P><STRONG><a name="[b8]"></a>_printf_str</STRONG> (Thumb, 82 bytes, Stack size 16 bytes, _printf_str.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = _printf_str &rArr; _printf_post_padding
 </UL>
-<BR>[Called By]<UL><LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
+<BR>[Calls]<UL><LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_post_padding
+<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_pre_padding
 </UL>
-
-<P><STRONG><a name="[81]"></a>HAL_TIMEx_BreakCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_BreakCallback))
-<BR><BR>[Called By]<UL><LI><a href="#[7c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IRQHandler
+<BR>[Called By]<UL><LI><a href="#[d3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_cs_common
 </UL>
 
-<P><STRONG><a name="[83]"></a>HAL_TIMEx_CommutCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_CommutCallback))
-<BR><BR>[Called By]<UL><LI><a href="#[7c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IRQHandler
+<P><STRONG><a name="[a7]"></a>_printf_int_common</STRONG> (Thumb, 178 bytes, Stack size 32 bytes, _printf_intcommon.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 48<LI>Call Chain = _printf_int_common &rArr; _printf_post_padding
 </UL>
-
-<P><STRONG><a name="[a6]"></a>HAL_TIMEx_ConfigBreakDeadTime</STRONG> (Thumb, 84 bytes, Stack size 8 bytes, stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_ConfigBreakDeadTime))
-<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = HAL_TIMEx_ConfigBreakDeadTime
+<BR>[Calls]<UL><LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_post_padding
+<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_pre_padding
 </UL>
-<BR>[Called By]<UL><LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+<BR>[Called By]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_longlong_oct
+<LI><a href="#[7d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_longlong_dec
+<LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_longlong_hex
+<LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_dec
 </UL>
 
-<P><STRONG><a name="[a5]"></a>HAL_TIMEx_MasterConfigSynchronization</STRONG> (Thumb, 104 bytes, Stack size 16 bytes, stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization))
-<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = HAL_TIMEx_MasterConfigSynchronization
-</UL>
-<BR>[Called By]<UL><LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
-<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
-<LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+<P><STRONG><a name="[6b]"></a>_printf_charcount</STRONG> (Thumb, 40 bytes, Stack size 0 bytes, _printf_charcount.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_n
 </UL>
 
-<P><STRONG><a name="[73]"></a>HAL_TIM_Base_Init</STRONG> (Thumb, 90 bytes, Stack size 8 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = HAL_TIM_Base_Init &rArr; HAL_TIM_Base_MspInit &rArr; HAL_NVIC_SetPriority
+<P><STRONG><a name="[229]"></a>__lib_sel_fp_printf</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, _printf_fp_dec.o(.text), UNUSED)
+
+<P><STRONG><a name="[c1]"></a>_printf_fp_dec_real</STRONG> (Thumb, 620 bytes, Stack size 104 bytes, _printf_fp_dec.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 324<LI>Call Chain = _printf_fp_dec_real &rArr; _fp_digits &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
 </UL>
-<BR>[Calls]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_MspInit
-<LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_Base_SetConfig
+<BR>[Calls]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_fp_digits
+<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_post_padding
+<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_pre_padding
+<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_fpclassify
+<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_infnan
+<LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_locale
 </UL>
-<BR>[Called By]<UL><LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
-<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
-<LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+<BR>[Called By]<UL><LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_dec
 </UL>
 
-<P><STRONG><a name="[74]"></a>HAL_TIM_Base_MspInit</STRONG> (Thumb, 94 bytes, Stack size 8 bytes, tim.o(i.HAL_TIM_Base_MspInit))
-<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = HAL_TIM_Base_MspInit &rArr; HAL_NVIC_SetPriority
+<P><STRONG><a name="[a4]"></a>_printf_char_common</STRONG> (Thumb, 32 bytes, Stack size 64 bytes, _printf_char_common.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 104 + Unknown Stack Size
+<LI>Call Chain = _printf_char_common &rArr; __printf
 </UL>
-<BR>[Calls]<UL><LI><a href="#[6d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
-<LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_EnableIRQ
+<BR>[Calls]<UL><LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__printf
 </UL>
-<BR>[Called By]<UL><LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
+<BR>[Called By]<UL><LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;vsprintf
 </UL>
 
-<P><STRONG><a name="[77]"></a>HAL_TIM_ConfigClockSource</STRONG> (Thumb, 220 bytes, Stack size 16 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_ConfigClockSource))
-<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = HAL_TIM_ConfigClockSource &rArr; TIM_ETR_SetConfig
+<P><STRONG><a name="[57]"></a>_sputc</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, _sputc.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;vsprintf
 </UL>
-<BR>[Calls]<UL><LI><a href="#[78]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_ETR_SetConfig
-<LI><a href="#[7a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_TI2_ConfigInputStage
-<LI><a href="#[79]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_TI1_ConfigInputStage
-<LI><a href="#[7b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_ITRx_SetConfig
+<BR>[Address Reference Count : 1]<UL><LI> vsprintf.o(.text)
 </UL>
-<BR>[Called By]<UL><LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
-<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
-<LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+<P><STRONG><a name="[c4]"></a>_printf_wctomb</STRONG> (Thumb, 182 bytes, Stack size 56 bytes, _printf_wctomb.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = _printf_wctomb &rArr; _wcrtomb &rArr; __rt_ctype_table
 </UL>
-
-<P><STRONG><a name="[7d]"></a>HAL_TIM_IC_CaptureCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_IC_CaptureCallback))
-<BR><BR>[Called By]<UL><LI><a href="#[7c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IRQHandler
+<BR>[Calls]<UL><LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_post_padding
+<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_pre_padding
+<LI><a href="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_wcrtomb
+</UL>
+<BR>[Called By]<UL><LI><a href="#[d4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_lcs_common
 </UL>
 
-<P><STRONG><a name="[7c]"></a>HAL_TIM_IRQHandler</STRONG> (Thumb, 304 bytes, Stack size 24 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_IRQHandler))
-<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = HAL_TIM_IRQHandler
+<P><STRONG><a name="[7d]"></a>_printf_longlong_dec</STRONG> (Thumb, 108 bytes, Stack size 24 bytes, _printf_longlong_dec.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = _printf_longlong_dec &rArr; _printf_int_common &rArr; _printf_post_padding
 </UL>
-<BR>[Calls]<UL><LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_TriggerCallback
-<LI><a href="#[80]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PeriodElapsedCallback
-<LI><a href="#[7f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_PulseFinishedCallback
-<LI><a href="#[7e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_DelayElapsedCallback
-<LI><a href="#[7d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IC_CaptureCallback
-<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_CommutCallback
-<LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_BreakCallback
+<BR>[Calls]<UL><LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_common
+<LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_ll_udiv10
 </UL>
-<BR>[Called By]<UL><LI><a href="#[29]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM2_IRQHandler
+<BR>[Called By]<UL><LI><a href="#[7f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_llu
+<LI><a href="#[7e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_lld
+<LI><a href="#[7c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_lli
 </UL>
 
-<P><STRONG><a name="[84]"></a>HAL_TIM_MspPostInit</STRONG> (Thumb, 120 bytes, Stack size 24 bytes, tim.o(i.HAL_TIM_MspPostInit))
-<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = HAL_TIM_MspPostInit &rArr; HAL_GPIO_Init
+<P><STRONG><a name="[c6]"></a>_printf_longlong_oct</STRONG> (Thumb, 66 bytes, Stack size 8 bytes, _printf_oct_int_ll.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = _printf_longlong_oct &rArr; _printf_int_common &rArr; _printf_post_padding
 </UL>
-<BR>[Calls]<UL><LI><a href="#[64]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
+<BR>[Calls]<UL><LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_common
 </UL>
-<BR>[Called By]<UL><LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
-<LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+<BR>[Called By]<UL><LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_ll_oct
+<LI><a href="#[79]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_int_oct
 </UL>
 
-<P><STRONG><a name="[85]"></a>HAL_TIM_OC_ConfigChannel</STRONG> (Thumb, 82 bytes, Stack size 16 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_OC_ConfigChannel))
-<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = HAL_TIM_OC_ConfigChannel &rArr; TIM_OC2_SetConfig
+<P><STRONG><a name="[79]"></a>_printf_int_oct</STRONG> (Thumb, 24 bytes, Stack size 8 bytes, _printf_oct_int_ll.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = _printf_int_oct &rArr; _printf_longlong_oct &rArr; _printf_int_common &rArr; _printf_post_padding
 </UL>
-<BR>[Calls]<UL><LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_OC2_SetConfig
-<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_OC4_SetConfig
-<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_OC3_SetConfig
-<LI><a href="#[86]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_OC1_SetConfig
+<BR>[Calls]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_longlong_oct
+<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_truncate_unsigned
 </UL>
-<BR>[Called By]<UL><LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+<BR>[Called By]<UL><LI><a href="#[78]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_o
 </UL>
 
-<P><STRONG><a name="[7e]"></a>HAL_TIM_OC_DelayElapsedCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_OC_DelayElapsedCallback))
-<BR><BR>[Called By]<UL><LI><a href="#[7c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IRQHandler
+<P><STRONG><a name="[81]"></a>_printf_ll_oct</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, _printf_oct_int_ll.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = _printf_ll_oct &rArr; _printf_longlong_oct &rArr; _printf_int_common &rArr; _printf_post_padding
+</UL>
+<BR>[Calls]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_longlong_oct
+</UL>
+<BR>[Called By]<UL><LI><a href="#[80]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_llo
 </UL>
 
-<P><STRONG><a name="[8a]"></a>HAL_TIM_OC_Init</STRONG> (Thumb, 90 bytes, Stack size 8 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = HAL_TIM_OC_Init &rArr; TIM_Base_SetConfig
+<P><STRONG><a name="[ca]"></a>_scanf_really_real</STRONG> (Thumb, 684 bytes, Stack size 120 bytes, scanf_fp.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 340<LI>Call Chain = _scanf_really_real &rArr; _fp_value &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
 </UL>
-<BR>[Calls]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_MspInit
-<LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_Base_SetConfig
+<BR>[Calls]<UL><LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_fp_value
+<LI><a href="#[aa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_is_digit
+<LI><a href="#[cd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__mathlib_narrow
+<LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_infnan
+<LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_hex_real
+<LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_locale
 </UL>
-<BR>[Called By]<UL><LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+<BR>[Called By]<UL><LI><a href="#[cf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_real
 </UL>
 
-<P><STRONG><a name="[8b]"></a>HAL_TIM_OC_MspInit</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_OC_MspInit))
-<BR><BR>[Called By]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_Init
+<P><STRONG><a name="[5a]"></a>_sgetc</STRONG> (Thumb, 30 bytes, Stack size 0 bytes, _sgetc.o(.text))
+<BR>[Address Reference Count : 1]<UL><LI> strtod.o(.text)
 </UL>
-
-<P><STRONG><a name="[8c]"></a>HAL_TIM_PWM_ConfigChannel</STRONG> (Thumb, 204 bytes, Stack size 16 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_ConfigChannel))
-<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = HAL_TIM_PWM_ConfigChannel &rArr; TIM_OC2_SetConfig
+<P><STRONG><a name="[5b]"></a>_sbackspace</STRONG> (Thumb, 34 bytes, Stack size 0 bytes, _sgetc.o(.text))
+<BR>[Address Reference Count : 1]<UL><LI> strtod.o(.text)
+</UL>
+<P><STRONG><a name="[d0]"></a>__strtod_int</STRONG> (Thumb, 90 bytes, Stack size 40 bytes, strtod.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 436<LI>Call Chain = __strtod_int &rArr; _local_sscanf &rArr; _scanf_real &rArr; _scanf_really_real &rArr; _fp_value &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
 </UL>
-<BR>[Calls]<UL><LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_OC2_SetConfig
-<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_OC4_SetConfig
-<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_OC3_SetConfig
-<LI><a href="#[86]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_OC1_SetConfig
+<BR>[Calls]<UL><LI><a href="#[ce]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_local_sscanf
 </UL>
-<BR>[Called By]<UL><LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
+<BR>[Called By]<UL><LI><a href="#[1d3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strtod
 </UL>
 
-<P><STRONG><a name="[8d]"></a>HAL_TIM_PWM_Init</STRONG> (Thumb, 90 bytes, Stack size 8 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = HAL_TIM_PWM_Init &rArr; TIM_Base_SetConfig
+<P><STRONG><a name="[ae]"></a>strtol</STRONG> (Thumb, 112 bytes, Stack size 32 bytes, strtol.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = strtol &rArr; _strtoul
 </UL>
-<BR>[Calls]<UL><LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_MspInit
-<LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_Base_SetConfig
+<BR>[Calls]<UL><LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_errno_addr
+<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_ctype_table
+<LI><a href="#[d1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_strtoul
 </UL>
-<BR>[Called By]<UL><LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
+<BR>[Called By]<UL><LI><a href="#[ac]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;atoi
 </UL>
 
-<P><STRONG><a name="[8e]"></a>HAL_TIM_PWM_MspInit</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_MspInit))
-<BR><BR>[Called By]<UL><LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_Init
-</UL>
+<P><STRONG><a name="[22a]"></a>__user_libspace</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, libspace.o(.text), UNUSED)
 
-<P><STRONG><a name="[7f]"></a>HAL_TIM_PWM_PulseFinishedCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_PulseFinishedCallback))
-<BR><BR>[Called By]<UL><LI><a href="#[7c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IRQHandler
+<P><STRONG><a name="[d8]"></a>__user_perproc_libspace</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, libspace.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__user_setup_stackheap
 </UL>
 
-<P><STRONG><a name="[80]"></a>HAL_TIM_PeriodElapsedCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_PeriodElapsedCallback))
-<BR><BR>[Called By]<UL><LI><a href="#[7c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IRQHandler
-</UL>
+<P><STRONG><a name="[22b]"></a>__user_perthread_libspace</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, libspace.o(.text), UNUSED)
 
-<P><STRONG><a name="[82]"></a>HAL_TIM_TriggerCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_TriggerCallback))
-<BR><BR>[Called By]<UL><LI><a href="#[7c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IRQHandler
+<P><STRONG><a name="[8f]"></a>__rt_locale</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, rt_locale_intlibspace.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_lib_init_lc_common
+<LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_really_real
+<LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_dec_real
+<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_ctype_table
 </UL>
 
-<P><STRONG><a name="[95]"></a>HAL_UARTEx_RxEventCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback))
-<BR><BR>[Called By]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
-<LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_Receive_IT
+<P><STRONG><a name="[b2]"></a>__Heap_ProvideMemory</STRONG> (Thumb, 52 bytes, Stack size 0 bytes, h1_extend.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = __Heap_ProvideMemory &rArr; free
 </UL>
-
-<P><STRONG><a name="[93]"></a>HAL_UART_ErrorCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback))
-<BR><BR>[Called By]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
-<LI><a href="#[4b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_DMAAbortOnError
+<BR>[Calls]<UL><LI><a href="#[d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;free
 </UL>
-
-<P><STRONG><a name="[8f]"></a>HAL_UART_IRQHandler</STRONG> (Thumb, 616 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler))
-<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = HAL_UART_IRQHandler &rArr; HAL_DMA_Abort_IT
+<BR>[Called By]<UL><LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_init_alloc
+<LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__Heap_Full
 </UL>
-<BR>[Calls]<UL><LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Abort_IT
-<LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Abort
-<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_TxCpltCallback
-<LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_ErrorCallback
-<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UARTEx_RxEventCallback
-<LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_Receive_IT
-<LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_EndRxTransfer
+
+<P><STRONG><a name="[c0]"></a>_ll_udiv10</STRONG> (Thumb, 138 bytes, Stack size 12 bytes, lludiv10.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = _ll_udiv10
 </UL>
-<BR>[Called By]<UL><LI><a href="#[33]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;USART2_IRQHandler
-<LI><a href="#[32]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;USART1_IRQHandler
-<LI><a href="#[41]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART4_IRQHandler
+<BR>[Called By]<UL><LI><a href="#[7d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_longlong_dec
+<LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_fp_digits
 </UL>
 
-<P><STRONG><a name="[97]"></a>HAL_UART_Init</STRONG> (Thumb, 100 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 104<LI>Call Chain = HAL_UART_Init &rArr; HAL_UART_MspInit &rArr; HAL_GPIO_Init
+<P><STRONG><a name="[5c]"></a>isspace</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, isspace.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = isspace &rArr; __rt_ctype_table
 </UL>
-<BR>[Calls]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_MspInit
-<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_SetConfig
+<BR>[Calls]<UL><LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_ctype_table
 </UL>
-<BR>[Called By]<UL><LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART2_UART_Init
-<LI><a href="#[aa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
-<LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_UART4_Init
+<BR>[Address Reference Count : 1]<UL><LI> strtod.o(.text)
 </UL>
-
-<P><STRONG><a name="[98]"></a>HAL_UART_MspInit</STRONG> (Thumb, 620 bytes, Stack size 48 bytes, usart.o(i.HAL_UART_MspInit))
-<BR><BR>[Stack]<UL><LI>Max Depth = 88<LI>Call Chain = HAL_UART_MspInit &rArr; HAL_GPIO_Init
+<P><STRONG><a name="[d2]"></a>_printf_fp_hex_real</STRONG> (Thumb, 756 bytes, Stack size 72 bytes, _printf_fp_hex.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = _printf_fp_hex_real &rArr; _printf_fp_infnan &rArr; _printf_post_padding
 </UL>
-<BR>[Calls]<UL><LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Init
-<LI><a href="#[6d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
-<LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_EnableIRQ
-<LI><a href="#[64]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
-<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+<BR>[Calls]<UL><LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_post_padding
+<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_pre_padding
+<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_fpclassify
+<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_infnan
 </UL>
-<BR>[Called By]<UL><LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Init
+<BR>[Called By]<UL><LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_hex
 </UL>
 
-<P><STRONG><a name="[ae]"></a>HAL_UART_RxCpltCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_RxCpltCallback))
-<BR><BR>[Called By]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_Receive_IT
+<P><STRONG><a name="[c3]"></a>_printf_fp_infnan</STRONG> (Thumb, 112 bytes, Stack size 24 bytes, _printf_fp_infnan.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = _printf_fp_infnan &rArr; _printf_post_padding
 </UL>
-
-<P><STRONG><a name="[96]"></a>HAL_UART_TxCpltCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_TxCpltCallback))
-<BR><BR>[Called By]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
+<BR>[Calls]<UL><LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_post_padding
+<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_pre_padding
+</UL>
+<BR>[Called By]<UL><LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_dec_real
+<LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_hex_real
 </UL>
 
-<P><STRONG><a name="[5]"></a>HardFault_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.HardFault_Handler))
-<BR><BR>[Calls]<UL><LI><a href="#[5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HardFault_Handler
+<P><STRONG><a name="[d3]"></a>_printf_cs_common</STRONG> (Thumb, 20 bytes, Stack size 8 bytes, _printf_char.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = _printf_cs_common &rArr; _printf_str &rArr; _printf_post_padding
 </UL>
-<BR>[Called By]<UL><LI><a href="#[5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HardFault_Handler
+<BR>[Calls]<UL><LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_str
 </UL>
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+<BR>[Called By]<UL><LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_string
+<LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_char
 </UL>
-<P><STRONG><a name="[9c]"></a>MX_ADC1_Init</STRONG> (Thumb, 70 bytes, Stack size 24 bytes, adc.o(i.MX_ADC1_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = MX_ADC1_Init &rArr; HAL_ADC_Init &rArr; HAL_ADC_MspInit &rArr; HAL_GPIO_Init
+
+<P><STRONG><a name="[85]"></a>_printf_char</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, _printf_char.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = _printf_char &rArr; _printf_cs_common &rArr; _printf_str &rArr; _printf_post_padding
 </UL>
-<BR>[Calls]<UL><LI><a href="#[62]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_Init
-<LI><a href="#[9d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_ConfigChannel
-<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+<BR>[Calls]<UL><LI><a href="#[d3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_cs_common
 </UL>
-<BR>[Called By]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+<BR>[Called By]<UL><LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_c
 </UL>
 
-<P><STRONG><a name="[9e]"></a>MX_DMA_Init</STRONG> (Thumb, 136 bytes, Stack size 8 bytes, dma.o(i.MX_DMA_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = MX_DMA_Init &rArr; HAL_NVIC_SetPriority
+<P><STRONG><a name="[87]"></a>_printf_string</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, _printf_char.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = _printf_string &rArr; _printf_cs_common &rArr; _printf_str &rArr; _printf_post_padding
 </UL>
-<BR>[Calls]<UL><LI><a href="#[6d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
-<LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_EnableIRQ
+<BR>[Calls]<UL><LI><a href="#[d3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_cs_common
 </UL>
-<BR>[Called By]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+<BR>[Called By]<UL><LI><a href="#[86]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_s
 </UL>
 
-<P><STRONG><a name="[9f]"></a>MX_GPIO_Init</STRONG> (Thumb, 262 bytes, Stack size 56 bytes, gpio.o(i.MX_GPIO_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 96<LI>Call Chain = MX_GPIO_Init &rArr; HAL_GPIO_Init
+<P><STRONG><a name="[d4]"></a>_printf_lcs_common</STRONG> (Thumb, 20 bytes, Stack size 8 bytes, _printf_wchar.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 88<LI>Call Chain = _printf_lcs_common &rArr; _printf_wctomb &rArr; _wcrtomb &rArr; __rt_ctype_table
 </UL>
-<BR>[Calls]<UL><LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
-<LI><a href="#[64]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
+<BR>[Calls]<UL><LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_wctomb
 </UL>
-<BR>[Called By]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+<BR>[Called By]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_wstring
+<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_wchar
 </UL>
 
-<P><STRONG><a name="[a1]"></a>MX_I2C1_Init</STRONG> (Thumb, 50 bytes, Stack size 8 bytes, i2c.o(i.MX_I2C1_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 96<LI>Call Chain = MX_I2C1_Init &rArr; HAL_I2C_Init &rArr; HAL_I2C_MspInit &rArr; HAL_GPIO_Init
+<P><STRONG><a name="[89]"></a>_printf_wchar</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, _printf_wchar.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 88<LI>Call Chain = _printf_wchar &rArr; _printf_lcs_common &rArr; _printf_wctomb &rArr; _wcrtomb &rArr; __rt_ctype_table
 </UL>
-<BR>[Calls]<UL><LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Init
-<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+<BR>[Calls]<UL><LI><a href="#[d4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_lcs_common
 </UL>
-<BR>[Called By]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+<BR>[Called By]<UL><LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_lc
 </UL>
 
-<P><STRONG><a name="[a2]"></a>MX_I2C2_Init</STRONG> (Thumb, 50 bytes, Stack size 8 bytes, i2c.o(i.MX_I2C2_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 96<LI>Call Chain = MX_I2C2_Init &rArr; HAL_I2C_Init &rArr; HAL_I2C_MspInit &rArr; HAL_GPIO_Init
+<P><STRONG><a name="[8b]"></a>_printf_wstring</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, _printf_wchar.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 88<LI>Call Chain = _printf_wstring &rArr; _printf_lcs_common &rArr; _printf_wctomb &rArr; _wcrtomb &rArr; __rt_ctype_table
 </UL>
-<BR>[Calls]<UL><LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Init
-<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+<BR>[Calls]<UL><LI><a href="#[d4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_lcs_common
 </UL>
-<BR>[Called By]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+<BR>[Called By]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_ls
 </UL>
 
-<P><STRONG><a name="[a3]"></a>MX_TIM1_Init</STRONG> (Thumb, 188 bytes, Stack size 96 bytes, tim.o(i.MX_TIM1_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 160<LI>Call Chain = MX_TIM1_Init &rArr; HAL_TIM_MspPostInit &rArr; HAL_GPIO_Init
+<P><STRONG><a name="[d1]"></a>_strtoul</STRONG> (Thumb, 158 bytes, Stack size 40 bytes, _strtoul.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = _strtoul
 </UL>
-<BR>[Calls]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_Init
-<LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_ConfigChannel
-<LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
-<LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
-<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_MasterConfigSynchronization
-<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_ConfigBreakDeadTime
-<LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_MspPostInit
-<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
-<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+<BR>[Calls]<UL><LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_errno_addr
+<LI><a href="#[d5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_chval
 </UL>
-<BR>[Called By]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+<BR>[Called By]<UL><LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strtol
 </UL>
 
-<P><STRONG><a name="[a7]"></a>MX_TIM2_Init</STRONG> (Thumb, 98 bytes, Stack size 32 bytes, tim.o(i.MX_TIM2_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = MX_TIM2_Init &rArr; HAL_TIM_Base_Init &rArr; HAL_TIM_Base_MspInit &rArr; HAL_NVIC_SetPriority
+<P><STRONG><a name="[bc]"></a>_btod_etento</STRONG> (Thumb, 224 bytes, Stack size 72 bytes, bigflt0.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 124<LI>Call Chain = _btod_etento &rArr; _btod_emul &rArr; _e2e
 </UL>
-<BR>[Calls]<UL><LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
-<LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
-<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_MasterConfigSynchronization
-<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+<BR>[Calls]<UL><LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_emul
+<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_ediv
 </UL>
-<BR>[Called By]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+<BR>[Called By]<UL><LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_fp_value
+<LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_fp_digits
 </UL>
 
-<P><STRONG><a name="[a8]"></a>MX_TIM3_Init</STRONG> (Thumb, 158 bytes, Stack size 64 bytes, tim.o(i.MX_TIM3_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 128<LI>Call Chain = MX_TIM3_Init &rArr; HAL_TIM_MspPostInit &rArr; HAL_GPIO_Init
+<P><STRONG><a name="[c5]"></a>_wcrtomb</STRONG> (Thumb, 64 bytes, Stack size 16 bytes, _wcrtomb.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = _wcrtomb &rArr; __rt_ctype_table
 </UL>
-<BR>[Calls]<UL><LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_Init
-<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_ConfigChannel
-<LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
-<LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
-<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_MasterConfigSynchronization
-<LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_MspPostInit
-<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
-<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+<BR>[Calls]<UL><LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_ctype_table
 </UL>
-<BR>[Called By]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+<BR>[Called By]<UL><LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_wctomb
 </UL>
 
-<P><STRONG><a name="[a9]"></a>MX_UART4_Init</STRONG> (Thumb, 48 bytes, Stack size 8 bytes, usart.o(i.MX_UART4_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = MX_UART4_Init &rArr; HAL_UART_Init &rArr; HAL_UART_MspInit &rArr; HAL_GPIO_Init
+<P><STRONG><a name="[b4]"></a>__rt_SIGRTMEM</STRONG> (Thumb, 14 bytes, Stack size 8 bytes, defsig_rtmem_outer.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = __rt_SIGRTMEM &rArr; __rt_SIGRTMEM_inner &rArr; __default_signal_display &rArr; _ttywrch
 </UL>
-<BR>[Calls]<UL><LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Init
-<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+<BR>[Calls]<UL><LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_SIGRTMEM_inner
+<LI><a href="#[d7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__sig_exit
 </UL>
-<BR>[Called By]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+<BR>[Called By]<UL><LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_init_alloc
+<LI><a href="#[b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__Heap_Broken
 </UL>
 
-<P><STRONG><a name="[aa]"></a>MX_USART1_UART_Init</STRONG> (Thumb, 48 bytes, Stack size 8 bytes, usart.o(i.MX_USART1_UART_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = MX_USART1_UART_Init &rArr; HAL_UART_Init &rArr; HAL_UART_MspInit &rArr; HAL_GPIO_Init
+<P><STRONG><a name="[22c]"></a>__I$use$semihosting</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, use_no_semi.o(.text), UNUSED)
+
+<P><STRONG><a name="[22d]"></a>__use_no_semihosting_swi</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, use_no_semi.o(.text), UNUSED)
+
+<P><STRONG><a name="[22e]"></a>__semihosting_library_function</STRONG> (Thumb, 0 bytes, Stack size 8 bytes, indicate_semi.o(.text), UNUSED)
+
+<P><STRONG><a name="[94]"></a>__user_setup_stackheap</STRONG> (Thumb, 74 bytes, Stack size 8 bytes, sys_stackheap_outer.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8 + Unknown Stack Size
+<LI>Call Chain = __user_setup_stackheap
 </UL>
-<BR>[Calls]<UL><LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Init
-<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+<BR>[Calls]<UL><LI><a href="#[d9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__user_initial_stackheap
+<LI><a href="#[d8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__user_perproc_libspace
 </UL>
-<BR>[Called By]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+<BR>[Called By]<UL><LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_entry_sh
 </UL>
 
-<P><STRONG><a name="[ab]"></a>MX_USART2_UART_Init</STRONG> (Thumb, 48 bytes, Stack size 8 bytes, usart.o(i.MX_USART2_UART_Init))
-<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = MX_USART2_UART_Init &rArr; HAL_UART_Init &rArr; HAL_UART_MspInit &rArr; HAL_GPIO_Init
-</UL>
-<BR>[Calls]<UL><LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Init
-<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
-</UL>
-<BR>[Called By]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+<P><STRONG><a name="[d5]"></a>_chval</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, _chval.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[da]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_really_hex_real
+<LI><a href="#[d1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_strtoul
 </UL>
 
-<P><STRONG><a name="[6]"></a>MemManage_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.MemManage_Handler))
-<BR><BR>[Calls]<UL><LI><a href="#[6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MemManage_Handler
+<P><STRONG><a name="[da]"></a>_scanf_really_hex_real</STRONG> (Thumb, 786 bytes, Stack size 80 bytes, scanf_hexfp.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 144<LI>Call Chain = _scanf_really_hex_real &rArr; __support_ldexp &rArr; ldexp &rArr; __aeabi_cdcmpeq
 </UL>
-<BR>[Called By]<UL><LI><a href="#[6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MemManage_Handler
+<BR>[Calls]<UL><LI><a href="#[dc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__support_ldexp
+<LI><a href="#[db]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_llsl
+<LI><a href="#[d5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_chval
+<LI><a href="#[cd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__mathlib_narrow
 </UL>
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+<BR>[Called By]<UL><LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_hex_real
 </UL>
-<P><STRONG><a name="[4]"></a>NMI_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.NMI_Handler))
-<BR><BR>[Calls]<UL><LI><a href="#[4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;NMI_Handler
+
+<P><STRONG><a name="[1f3]"></a>_scanf_really_infnan</STRONG> (Thumb, 292 bytes, Stack size 72 bytes, scanf_infnan.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = _scanf_really_infnan
 </UL>
-<BR>[Called By]<UL><LI><a href="#[4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;NMI_Handler
+<BR>[Called By]<UL><LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_infnan
 </UL>
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+
+<P><STRONG><a name="[99]"></a>exit</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, exit.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8 + Unknown Stack Size
+<LI>Call Chain = exit
 </UL>
-<P><STRONG><a name="[b]"></a>PendSV_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.PendSV_Handler))
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+<BR>[Calls]<UL><LI><a href="#[dd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_exit
 </UL>
-<P><STRONG><a name="[9]"></a>SVC_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.SVC_Handler))
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+<BR>[Called By]<UL><LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_entry_main
 </UL>
-<P><STRONG><a name="[c]"></a>SysTick_Handler</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.SysTick_Handler))
-<BR><BR>[Calls]<UL><LI><a href="#[ac]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_IncTick
+
+<P><STRONG><a name="[d7]"></a>__sig_exit</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, defsig_exit.o(.text))
+<BR><BR>[Calls]<UL><LI><a href="#[9d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_sys_exit
 </UL>
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+<BR>[Called By]<UL><LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_SIGRTMEM
 </UL>
-<P><STRONG><a name="[ad]"></a>SystemClock_Config</STRONG> (Thumb, 114 bytes, Stack size 96 bytes, main.o(i.SystemClock_Config))
-<BR><BR>[Stack]<UL><LI>Max Depth = 160<LI>Call Chain = SystemClock_Config &rArr; HAL_RCC_ClockConfig &rArr; HAL_InitTick &rArr; HAL_NVIC_SetPriority
+
+<P><STRONG><a name="[d6]"></a>__rt_SIGRTMEM_inner</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, defsig_rtmem_inner.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = __rt_SIGRTMEM_inner &rArr; __default_signal_display &rArr; _ttywrch
 </UL>
-<BR>[Calls]<UL><LI><a href="#[72]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_OscConfig
-<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
-<LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCCEx_PeriphCLKConfig
-<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+<BR>[Calls]<UL><LI><a href="#[de]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__default_signal_display
 </UL>
-<BR>[Called By]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+<BR>[Called By]<UL><LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_SIGRTMEM
 </UL>
 
-<P><STRONG><a name="[49]"></a>SystemInit</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, system_stm32f1xx.o(i.SystemInit))
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(.text)
+<P><STRONG><a name="[9d]"></a>_sys_exit</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, sys_exit.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_exit_exit
+<LI><a href="#[d7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__sig_exit
 </UL>
-<P><STRONG><a name="[29]"></a>TIM2_IRQHandler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.TIM2_IRQHandler))
-<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = TIM2_IRQHandler &rArr; HAL_TIM_IRQHandler
-</UL>
-<BR>[Calls]<UL><LI><a href="#[7c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IRQHandler
+
+<P><STRONG><a name="[db]"></a>__aeabi_llsl</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, llshl.o(.text))
+<BR><BR>[Called By]<UL><LI><a href="#[da]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_really_hex_real
 </UL>
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+
+<P><STRONG><a name="[22f]"></a>_ll_shift_l</STRONG> (Thumb, 38 bytes, Stack size 0 bytes, llshl.o(.text), UNUSED)
+
+<P><STRONG><a name="[de]"></a>__default_signal_display</STRONG> (Thumb, 50 bytes, Stack size 16 bytes, defsig_general.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = __default_signal_display &rArr; _ttywrch
 </UL>
-<P><STRONG><a name="[75]"></a>TIM_Base_SetConfig</STRONG> (Thumb, 134 bytes, Stack size 20 bytes, stm32f1xx_hal_tim.o(i.TIM_Base_SetConfig))
-<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = TIM_Base_SetConfig
+<BR>[Calls]<UL><LI><a href="#[df]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_ttywrch
 </UL>
-<BR>[Called By]<UL><LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_Init
-<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_Init
-<LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
+<BR>[Called By]<UL><LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_SIGRTMEM_inner
 </UL>
 
-<P><STRONG><a name="[78]"></a>TIM_ETR_SetConfig</STRONG> (Thumb, 20 bytes, Stack size 8 bytes, stm32f1xx_hal_tim.o(i.TIM_ETR_SetConfig))
-<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = TIM_ETR_SetConfig
+<P><STRONG><a name="[df]"></a>_ttywrch</STRONG> (Thumb, 14 bytes, Stack size 8 bytes, sys_wrch.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = _ttywrch
 </UL>
-<BR>[Called By]<UL><LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
+<BR>[Called By]<UL><LI><a href="#[de]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__default_signal_display
 </UL>
 
-<P><STRONG><a name="[87]"></a>TIM_OC2_SetConfig</STRONG> (Thumb, 98 bytes, Stack size 20 bytes, stm32f1xx_hal_tim.o(i.TIM_OC2_SetConfig))
-<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = TIM_OC2_SetConfig
+<P><STRONG><a name="[bd]"></a>_btod_d2e</STRONG> (Thumb, 62 bytes, Stack size 0 bytes, btod.o(CL$$btod_d2e))
+<BR><BR>[Calls]<UL><LI><a href="#[e0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_d2e_norm_op1
 </UL>
-<BR>[Called By]<UL><LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_ConfigChannel
-<LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_ConfigChannel
+<BR>[Called By]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_fp_digits
 </UL>
 
-<P><STRONG><a name="[41]"></a>UART4_IRQHandler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.UART4_IRQHandler))
-<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = UART4_IRQHandler &rArr; HAL_UART_IRQHandler &rArr; HAL_DMA_Abort_IT
+<P><STRONG><a name="[e1]"></a>_d2e_denorm_low</STRONG> (Thumb, 70 bytes, Stack size 0 bytes, btod.o(CL$$btod_d2e_denorm_low))
+<BR><BR>[Called By]<UL><LI><a href="#[e0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_d2e_norm_op1
 </UL>
-<BR>[Calls]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
+
+<P><STRONG><a name="[e0]"></a>_d2e_norm_op1</STRONG> (Thumb, 96 bytes, Stack size 0 bytes, btod.o(CL$$btod_d2e_norm_op1))
+<BR><BR>[Calls]<UL><LI><a href="#[e1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_d2e_denorm_low
 </UL>
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+<BR>[Called By]<UL><LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_d2e
 </UL>
-<P><STRONG><a name="[32]"></a>USART1_IRQHandler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.USART1_IRQHandler))
-<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = USART1_IRQHandler &rArr; HAL_UART_IRQHandler &rArr; HAL_DMA_Abort_IT
+
+<P><STRONG><a name="[e4]"></a>__btod_div_common</STRONG> (Thumb, 696 bytes, Stack size 24 bytes, btod.o(CL$$btod_div_common))
+<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = __btod_div_common
 </UL>
-<BR>[Calls]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
+<BR>[Called By]<UL><LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_edivd
+<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_ediv
 </UL>
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+
+<P><STRONG><a name="[e2]"></a>_e2d</STRONG> (Thumb, 122 bytes, Stack size 32 bytes, btod.o(CL$$btod_e2d))
+<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = _e2d &rArr; _e2e
 </UL>
-<P><STRONG><a name="[33]"></a>USART2_IRQHandler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.USART2_IRQHandler))
-<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = USART2_IRQHandler &rArr; HAL_UART_IRQHandler &rArr; HAL_DMA_Abort_IT
+<BR>[Calls]<UL><LI><a href="#[e3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_e2e
 </UL>
-<BR>[Calls]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
+<BR>[Called By]<UL><LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_emuld
+<LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_edivd
 </UL>
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+
+<P><STRONG><a name="[e3]"></a>_e2e</STRONG> (Thumb, 220 bytes, Stack size 24 bytes, btod.o(CL$$btod_e2e))
+<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = _e2e
 </UL>
-<P><STRONG><a name="[8]"></a>UsageFault_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.UsageFault_Handler))
-<BR><BR>[Calls]<UL><LI><a href="#[8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UsageFault_Handler
+<BR>[Called By]<UL><LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_emul
+<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_ediv
+<LI><a href="#[e2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_e2d
 </UL>
-<BR>[Called By]<UL><LI><a href="#[8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UsageFault_Handler
+
+<P><STRONG><a name="[be]"></a>_btod_ediv</STRONG> (Thumb, 42 bytes, Stack size 28 bytes, btod.o(CL$$btod_ediv))
+<BR><BR>[Stack]<UL><LI>Max Depth = 52<LI>Call Chain = _btod_ediv &rArr; _e2e
 </UL>
-<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+<BR>[Calls]<UL><LI><a href="#[e3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_e2e
+<LI><a href="#[e4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__btod_div_common
 </UL>
-<P><STRONG><a name="[56]"></a>main</STRONG> (Thumb, 54 bytes, Stack size 0 bytes, main.o(i.main))
-<BR><BR>[Stack]<UL><LI>Max Depth = 160<LI>Call Chain = main &rArr; MX_TIM1_Init &rArr; HAL_TIM_MspPostInit &rArr; HAL_GPIO_Init
+<BR>[Called By]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_fp_digits
+<LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_etento
 </UL>
-<BR>[Calls]<UL><LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART2_UART_Init
-<LI><a href="#[aa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
-<LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_UART4_Init
-<LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
-<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
-<LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
-<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_I2C2_Init
-<LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_I2C1_Init
-<LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
-<LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_DMA_Init
-<LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_ADC1_Init
-<LI><a href="#[68]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
-<LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
+
+<P><STRONG><a name="[c9]"></a>_btod_edivd</STRONG> (Thumb, 42 bytes, Stack size 28 bytes, btod.o(CL$$btod_edivd))
+<BR><BR>[Stack]<UL><LI>Max Depth = 84<LI>Call Chain = _btod_edivd &rArr; _e2d &rArr; _e2e
 </UL>
-<BR>[Called By]<UL><LI><a href="#[55]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_entry_main
+<BR>[Calls]<UL><LI><a href="#[e2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_e2d
+<LI><a href="#[e4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__btod_div_common
 </UL>
-<P>
-<H3>
-Local Symbols
-</H3>
-<P><STRONG><a name="[6e]"></a>__NVIC_SetPriority</STRONG> (Thumb, 32 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority))
-<BR><BR>[Called By]<UL><LI><a href="#[6d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
-<LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_Config
+<BR>[Called By]<UL><LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_fp_value
 </UL>
 
-<P><STRONG><a name="[7b]"></a>TIM_ITRx_SetConfig</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.TIM_ITRx_SetConfig))
-<BR><BR>[Called By]<UL><LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
+<P><STRONG><a name="[bf]"></a>_btod_emul</STRONG> (Thumb, 42 bytes, Stack size 28 bytes, btod.o(CL$$btod_emul))
+<BR><BR>[Stack]<UL><LI>Max Depth = 52<LI>Call Chain = _btod_emul &rArr; _e2e
 </UL>
-
-<P><STRONG><a name="[86]"></a>TIM_OC1_SetConfig</STRONG> (Thumb, 88 bytes, Stack size 20 bytes, stm32f1xx_hal_tim.o(i.TIM_OC1_SetConfig))
-<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = TIM_OC1_SetConfig
+<BR>[Calls]<UL><LI><a href="#[e5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__btod_mult_common
+<LI><a href="#[e3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_e2e
 </UL>
-<BR>[Called By]<UL><LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_ConfigChannel
-<LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_ConfigChannel
+<BR>[Called By]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_fp_digits
+<LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_etento
 </UL>
 
-<P><STRONG><a name="[88]"></a>TIM_OC3_SetConfig</STRONG> (Thumb, 96 bytes, Stack size 20 bytes, stm32f1xx_hal_tim.o(i.TIM_OC3_SetConfig))
+<P><STRONG><a name="[c8]"></a>_btod_emuld</STRONG> (Thumb, 42 bytes, Stack size 28 bytes, btod.o(CL$$btod_emuld))
+<BR><BR>[Stack]<UL><LI>Max Depth = 84<LI>Call Chain = _btod_emuld &rArr; _e2d &rArr; _e2e
+</UL>
+<BR>[Calls]<UL><LI><a href="#[e5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__btod_mult_common
+<LI><a href="#[e2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_e2d
+</UL>
+<BR>[Called By]<UL><LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_fp_value
+</UL>
+
+<P><STRONG><a name="[e5]"></a>__btod_mult_common</STRONG> (Thumb, 580 bytes, Stack size 16 bytes, btod.o(CL$$btod_mult_common))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = __btod_mult_common
+</UL>
+<BR>[Called By]<UL><LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_emuld
+<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_emul
+</UL>
+
+<P><STRONG><a name="[e6]"></a>ADC_ConversionStop_Disable</STRONG> (Thumb, 84 bytes, Stack size 16 bytes, stm32f1xx_hal_adc.o(i.ADC_ConversionStop_Disable))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = ADC_ConversionStop_Disable
+</UL>
+<BR>[Calls]<UL><LI><a href="#[e7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+</UL>
+<BR>[Called By]<UL><LI><a href="#[ed]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_Stop_DMA
+<LI><a href="#[106]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_Init
+</UL>
+
+<P><STRONG><a name="[5d]"></a>ADC_DMAConvCplt</STRONG> (Thumb, 78 bytes, Stack size 8 bytes, stm32f1xx_hal_adc.o(i.ADC_DMAConvCplt))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = ADC_DMAConvCplt
+</UL>
+<BR>[Calls]<UL><LI><a href="#[e8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_ConvCpltCallback
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> stm32f1xx_hal_adc.o(i.HAL_ADC_Start_DMA)
+</UL>
+<P><STRONG><a name="[5f]"></a>ADC_DMAError</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, stm32f1xx_hal_adc.o(i.ADC_DMAError))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = ADC_DMAError
+</UL>
+<BR>[Calls]<UL><LI><a href="#[e9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_ErrorCallback
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> stm32f1xx_hal_adc.o(i.HAL_ADC_Start_DMA)
+</UL>
+<P><STRONG><a name="[5e]"></a>ADC_DMAHalfConvCplt</STRONG> (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_hal_adc.o(i.ADC_DMAHalfConvCplt))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = ADC_DMAHalfConvCplt
+</UL>
+<BR>[Calls]<UL><LI><a href="#[ea]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_ConvHalfCpltCallback
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> stm32f1xx_hal_adc.o(i.HAL_ADC_Start_DMA)
+</UL>
+<P><STRONG><a name="[eb]"></a>ADC_Enable</STRONG> (Thumb, 112 bytes, Stack size 24 bytes, stm32f1xx_hal_adc.o(i.ADC_Enable))
+<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = ADC_Enable
+</UL>
+<BR>[Calls]<UL><LI><a href="#[e7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+</UL>
+<BR>[Called By]<UL><LI><a href="#[ef]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_Start_DMA
+</UL>
+
+<P><STRONG><a name="[ec]"></a>ADC_Inner_start</STRONG> (Thumb, 40 bytes, Stack size 8 bytes, adc.o(i.ADC_Inner_start))
+<BR><BR>[Stack]<UL><LI>Max Depth = 68<LI>Call Chain = ADC_Inner_start &rArr; HAL_ADC_Start_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[ee]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
+<LI><a href="#[ed]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_Stop_DMA
+<LI><a href="#[ef]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_Start_DMA
+<LI><a href="#[f0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[1bb]"></a>AsiicTorHexInt</STRONG> (Thumb, 66 bytes, Stack size 8 bytes, van_bsp_debug_shell.o(i.AsiicTorHexInt))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = AsiicTorHexInt
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;debugcall
+<LI><a href="#[1bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;debugvarb
+</UL>
+
+<P><STRONG><a name="[17d]"></a>Bubble_Sort</STRONG> (Thumb, 50 bytes, Stack size 20 bytes, usr_motor.o(i.Bubble_Sort))
+<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = Bubble_Sort
+</UL>
+<BR>[Called By]<UL><LI><a href="#[10e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;OPTO_IRQHandler
+</UL>
+
+<P><STRONG><a name="[13]"></a>BusFault_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.BusFault_Handler))
+<BR><BR>[Calls]<UL><LI><a href="#[13]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;BusFault_Handler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[13]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;BusFault_Handler
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[24]"></a>DMA1_Channel1_IRQHandler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DMA1_Channel1_IRQHandler))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = DMA1_Channel1_IRQHandler &rArr; HAL_DMA_IRQHandler
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_IRQHandler
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[27]"></a>DMA1_Channel4_IRQHandler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DMA1_Channel4_IRQHandler))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = DMA1_Channel4_IRQHandler &rArr; HAL_DMA_IRQHandler
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_IRQHandler
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[28]"></a>DMA1_Channel5_IRQHandler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DMA1_Channel5_IRQHandler))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = DMA1_Channel5_IRQHandler &rArr; HAL_DMA_IRQHandler
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_IRQHandler
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[29]"></a>DMA1_Channel6_IRQHandler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DMA1_Channel6_IRQHandler))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = DMA1_Channel6_IRQHandler &rArr; HAL_DMA_IRQHandler
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_IRQHandler
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[2a]"></a>DMA1_Channel7_IRQHandler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DMA1_Channel7_IRQHandler))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = DMA1_Channel7_IRQHandler &rArr; HAL_DMA_IRQHandler
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_IRQHandler
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[53]"></a>DMA2_Channel3_IRQHandler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DMA2_Channel3_IRQHandler))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = DMA2_Channel3_IRQHandler &rArr; HAL_DMA_IRQHandler
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_IRQHandler
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[16]"></a>DebugMon_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DebugMon_Handler))
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[f2]"></a>ESP32_AT</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, esp32_wroom_32d.o(i.ESP32_AT))
+<BR><BR>[Stack]<UL><LI>Max Depth = 768 + Unknown Stack Size
+<LI>Call Chain = ESP32_AT &rArr; ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
+</UL>
+<BR>[Called By]<UL><LI><a href="#[197]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_send_deal
+</UL>
+
+<P><STRONG><a name="[f4]"></a>ESP32_AT_RST</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, esp32_wroom_32d.o(i.ESP32_AT_RST))
+<BR><BR>[Stack]<UL><LI>Max Depth = 768 + Unknown Stack Size
+<LI>Call Chain = ESP32_AT_RST &rArr; ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
+</UL>
+<BR>[Called By]<UL><LI><a href="#[197]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_send_deal
+</UL>
+
+<P><STRONG><a name="[f5]"></a>ESP32_CWLAP</STRONG> (Thumb, 30 bytes, Stack size 88 bytes, esp32_wroom_32d.o(i.ESP32_CWLAP))
+<BR><BR>[Stack]<UL><LI>Max Depth = 856 + Unknown Stack Size
+<LI>Call Chain = ESP32_CWLAP &rArr; ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;my_sprintf
+<LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
+</UL>
+<BR>[Called By]<UL><LI><a href="#[197]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_send_deal
+</UL>
+
+<P><STRONG><a name="[f7]"></a>ESP32_DisAutoLink</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, esp32_wroom_32d.o(i.ESP32_DisAutoLink))
+<BR><BR>[Stack]<UL><LI>Max Depth = 768 + Unknown Stack Size
+<LI>Call Chain = ESP32_DisAutoLink &rArr; ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
+</UL>
+<BR>[Called By]<UL><LI><a href="#[197]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_send_deal
+</UL>
+
+<P><STRONG><a name="[f8]"></a>ESP32_EchoOff</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, esp32_wroom_32d.o(i.ESP32_EchoOff))
+<BR><BR>[Stack]<UL><LI>Max Depth = 768 + Unknown Stack Size
+<LI>Call Chain = ESP32_EchoOff &rArr; ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
+</UL>
+<BR>[Called By]<UL><LI><a href="#[197]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_send_deal
+</UL>
+
+<P><STRONG><a name="[f9]"></a>ESP32_Enable_MultipleId</STRONG> (Thumb, 36 bytes, Stack size 24 bytes, esp32_wroom_32d.o(i.ESP32_Enable_MultipleId))
+<BR><BR>[Stack]<UL><LI>Max Depth = 792 + Unknown Stack Size
+<LI>Call Chain = ESP32_Enable_MultipleId &rArr; ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;my_sprintf
+<LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
+</UL>
+<BR>[Called By]<UL><LI><a href="#[197]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_send_deal
+</UL>
+
+<P><STRONG><a name="[fa]"></a>ESP32_GetIp</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, esp32_wroom_32d.o(i.ESP32_GetIp))
+<BR><BR>[Stack]<UL><LI>Max Depth = 768 + Unknown Stack Size
+<LI>Call Chain = ESP32_GetIp &rArr; ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
+</UL>
+<BR>[Called By]<UL><LI><a href="#[197]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_send_deal
+</UL>
+
+<P><STRONG><a name="[fb]"></a>ESP32_JoinAP</STRONG> (Thumb, 34 bytes, Stack size 96 bytes, esp32_wroom_32d.o(i.ESP32_JoinAP))
+<BR><BR>[Stack]<UL><LI>Max Depth = 864 + Unknown Stack Size
+<LI>Call Chain = ESP32_JoinAP &rArr; ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;my_sprintf
+<LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
+</UL>
+<BR>[Called By]<UL><LI><a href="#[197]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_send_deal
+</UL>
+
+<P><STRONG><a name="[fc]"></a>ESP32_Link_Server</STRONG> (Thumb, 98 bytes, Stack size 192 bytes, esp32_wroom_32d.o(i.ESP32_Link_Server))
+<BR><BR>[Stack]<UL><LI>Max Depth = 960 + Unknown Stack Size
+<LI>Call Chain = ESP32_Link_Server &rArr; ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;my_sprintf
+<LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
+<LI><a href="#[fd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+</UL>
+<BR>[Called By]<UL><LI><a href="#[197]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_send_deal
+</UL>
+
+<P><STRONG><a name="[fe]"></a>ESP32_Net_Mode_Choose</STRONG> (Thumb, 30 bytes, Stack size 0 bytes, esp32_wroom_32d.o(i.ESP32_Net_Mode_Choose))
+<BR><BR>[Stack]<UL><LI>Max Depth = 768 + Unknown Stack Size
+<LI>Call Chain = ESP32_Net_Mode_Choose &rArr; ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
+</UL>
+<BR>[Called By]<UL><LI><a href="#[197]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_send_deal
+</UL>
+
+<P><STRONG><a name="[ff]"></a>ESP32_STOPTCP</STRONG> (Thumb, 30 bytes, Stack size 64 bytes, esp32_wroom_32d.o(i.ESP32_STOPTCP))
+<BR><BR>[Stack]<UL><LI>Max Depth = 832 + Unknown Stack Size
+<LI>Call Chain = ESP32_STOPTCP &rArr; ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;my_sprintf
+<LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
+</UL>
+<BR>[Called By]<UL><LI><a href="#[197]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_send_deal
+</UL>
+
+<P><STRONG><a name="[f3]"></a>ESP32_Send_AT_Cmd</STRONG> (Thumb, 64 bytes, Stack size 112 bytes, esp32_wroom_32d.o(i.ESP32_Send_AT_Cmd))
+<BR><BR>[Stack]<UL><LI>Max Depth = 768 + Unknown Stack Size
+<LI>Call Chain = ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[102]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Device_Printf
+<LI><a href="#[104]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WriteComm2
+<LI><a href="#[fd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+<LI><a href="#[101]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strcat
+<LI><a href="#[103]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strlen
+<LI><a href="#[100]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strcpy
+</UL>
+<BR>[Called By]<UL><LI><a href="#[197]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_send_deal
+<LI><a href="#[196]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_recv_deal
+<LI><a href="#[ff]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_STOPTCP
+<LI><a href="#[fe]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Net_Mode_Choose
+<LI><a href="#[fc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Link_Server
+<LI><a href="#[fb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_JoinAP
+<LI><a href="#[fa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_GetIp
+<LI><a href="#[f9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Enable_MultipleId
+<LI><a href="#[f8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_EchoOff
+<LI><a href="#[f7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_DisAutoLink
+<LI><a href="#[f5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_CWLAP
+<LI><a href="#[f4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_AT_RST
+<LI><a href="#[f2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_AT
+</UL>
+
+<P><STRONG><a name="[30]"></a>EXTI9_5_IRQHandler</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.EXTI9_5_IRQHandler))
+<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = EXTI9_5_IRQHandler &rArr; HAL_GPIO_EXTI_IRQHandler &rArr; HAL_GPIO_EXTI_Callback &rArr; OPTO_IRQHandler &rArr; __aeabi_dmul
+</UL>
+<BR>[Calls]<UL><LI><a href="#[105]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_EXTI_IRQHandler
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[f0]"></a>Error_Handler</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, main.o(i.Error_Handler))
+<BR><BR>[Called By]<UL><LI><a href="#[153]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_MspInit
+<LI><a href="#[107]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_MspInit
+<LI><a href="#[171]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART2_UART_Init
+<LI><a href="#[170]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
+<LI><a href="#[16f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_UART4_Init
+<LI><a href="#[16e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM4_Init
+<LI><a href="#[16d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
+<LI><a href="#[16c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
+<LI><a href="#[169]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+<LI><a href="#[168]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_I2C2_Init
+<LI><a href="#[167]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_I2C1_Init
+<LI><a href="#[162]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_ADC1_Init
+<LI><a href="#[ec]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_Inner_start
+</UL>
+
+<P><STRONG><a name="[163]"></a>HAL_ADC_ConfigChannel</STRONG> (Thumb, 240 bytes, Stack size 24 bytes, stm32f1xx_hal_adc.o(i.HAL_ADC_ConfigChannel))
+<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = HAL_ADC_ConfigChannel
+</UL>
+<BR>[Called By]<UL><LI><a href="#[162]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_ADC1_Init
+</UL>
+
+<P><STRONG><a name="[e8]"></a>HAL_ADC_ConvCpltCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_adc.o(i.HAL_ADC_ConvCpltCallback))
+<BR><BR>[Called By]<UL><LI><a href="#[5d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_DMAConvCplt
+</UL>
+
+<P><STRONG><a name="[ea]"></a>HAL_ADC_ConvHalfCpltCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_adc.o(i.HAL_ADC_ConvHalfCpltCallback))
+<BR><BR>[Called By]<UL><LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_DMAHalfConvCplt
+</UL>
+
+<P><STRONG><a name="[e9]"></a>HAL_ADC_ErrorCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_adc.o(i.HAL_ADC_ErrorCallback))
+<BR><BR>[Called By]<UL><LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_DMAError
+</UL>
+
+<P><STRONG><a name="[106]"></a>HAL_ADC_Init</STRONG> (Thumb, 272 bytes, Stack size 24 bytes, stm32f1xx_hal_adc.o(i.HAL_ADC_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 104<LI>Call Chain = HAL_ADC_Init &rArr; HAL_ADC_MspInit &rArr; HAL_GPIO_Init
+</UL>
+<BR>[Calls]<UL><LI><a href="#[107]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_MspInit
+<LI><a href="#[e6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_ConversionStop_Disable
+</UL>
+<BR>[Called By]<UL><LI><a href="#[162]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_ADC1_Init
+</UL>
+
+<P><STRONG><a name="[107]"></a>HAL_ADC_MspInit</STRONG> (Thumb, 122 bytes, Stack size 40 bytes, adc.o(i.HAL_ADC_MspInit))
+<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = HAL_ADC_MspInit &rArr; HAL_GPIO_Init
+</UL>
+<BR>[Calls]<UL><LI><a href="#[109]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Init
+<LI><a href="#[108]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
+<LI><a href="#[f0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[106]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_Init
+</UL>
+
+<P><STRONG><a name="[ef]"></a>HAL_ADC_Start_DMA</STRONG> (Thumb, 246 bytes, Stack size 32 bytes, stm32f1xx_hal_adc.o(i.HAL_ADC_Start_DMA))
+<BR><BR>[Stack]<UL><LI>Max Depth = 60<LI>Call Chain = HAL_ADC_Start_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[10a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Start_IT
+<LI><a href="#[eb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_Enable
+</UL>
+<BR>[Called By]<UL><LI><a href="#[ec]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_Inner_start
+</UL>
+
+<P><STRONG><a name="[ed]"></a>HAL_ADC_Stop_DMA</STRONG> (Thumb, 86 bytes, Stack size 8 bytes, stm32f1xx_hal_adc.o(i.HAL_ADC_Stop_DMA))
+<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = HAL_ADC_Stop_DMA &rArr; ADC_ConversionStop_Disable
+</UL>
+<BR>[Calls]<UL><LI><a href="#[10b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Abort
+<LI><a href="#[e6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_ConversionStop_Disable
+</UL>
+<BR>[Called By]<UL><LI><a href="#[ec]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_Inner_start
+</UL>
+
+<P><STRONG><a name="[10b]"></a>HAL_DMA_Abort</STRONG> (Thumb, 70 bytes, Stack size 8 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Abort))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = HAL_DMA_Abort
+</UL>
+<BR>[Called By]<UL><LI><a href="#[14d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
+<LI><a href="#[ed]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_Stop_DMA
+<LI><a href="#[148]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_DMAStop
+</UL>
+
+<P><STRONG><a name="[14f]"></a>HAL_DMA_Abort_IT</STRONG> (Thumb, 296 bytes, Stack size 40 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = HAL_DMA_Abort_IT
+</UL>
+<BR>[Called By]<UL><LI><a href="#[14d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
+</UL>
+
+<P><STRONG><a name="[f1]"></a>HAL_DMA_IRQHandler</STRONG> (Thumb, 552 bytes, Stack size 40 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_IRQHandler))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = HAL_DMA_IRQHandler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[53]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DMA2_Channel3_IRQHandler
+<LI><a href="#[2a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DMA1_Channel7_IRQHandler
+<LI><a href="#[29]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DMA1_Channel6_IRQHandler
+<LI><a href="#[28]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DMA1_Channel5_IRQHandler
+<LI><a href="#[27]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DMA1_Channel4_IRQHandler
+<LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DMA1_Channel1_IRQHandler
+</UL>
+
+<P><STRONG><a name="[109]"></a>HAL_DMA_Init</STRONG> (Thumb, 112 bytes, Stack size 12 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = HAL_DMA_Init
+</UL>
+<BR>[Called By]<UL><LI><a href="#[153]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_MspInit
+<LI><a href="#[107]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_MspInit
+</UL>
+
+<P><STRONG><a name="[10a]"></a>HAL_DMA_Start_IT</STRONG> (Thumb, 112 bytes, Stack size 16 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Start_IT))
+<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[10c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DMA_SetConfig
+</UL>
+<BR>[Called By]<UL><LI><a href="#[ef]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_Start_DMA
+<LI><a href="#[15a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_Start_Receive_DMA
+<LI><a href="#[15b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Transmit_DMA
+</UL>
+
+<P><STRONG><a name="[ee]"></a>HAL_Delay</STRONG> (Thumb, 32 bytes, Stack size 16 bytes, stm32f1xx_hal.o(i.HAL_Delay))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = HAL_Delay
+</UL>
+<BR>[Calls]<UL><LI><a href="#[e7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+</UL>
+<BR>[Called By]<UL><LI><a href="#[ec]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_Inner_start
+<LI><a href="#[b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;show_com_pwm
+<LI><a href="#[182]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TCA9548A_SetChannel
+<LI><a href="#[184]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorInit
+<LI><a href="#[183]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorGetRawData
+<LI><a href="#[181]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorGetID
+<LI><a href="#[180]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorEnable
+</UL>
+
+<P><STRONG><a name="[10d]"></a>HAL_GPIO_EXTI_Callback</STRONG> (Thumb, 22 bytes, Stack size 0 bytes, van_itcallback.o(i.HAL_GPIO_EXTI_Callback))
+<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = HAL_GPIO_EXTI_Callback &rArr; OPTO_IRQHandler &rArr; __aeabi_dmul
+</UL>
+<BR>[Calls]<UL><LI><a href="#[10e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;OPTO_IRQHandler
+<LI><a href="#[10f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;KYE_IRQHandler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[105]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_EXTI_IRQHandler
+</UL>
+
+<P><STRONG><a name="[105]"></a>HAL_GPIO_EXTI_IRQHandler</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_EXTI_IRQHandler))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = HAL_GPIO_EXTI_IRQHandler &rArr; HAL_GPIO_EXTI_Callback &rArr; OPTO_IRQHandler &rArr; __aeabi_dmul
+</UL>
+<BR>[Calls]<UL><LI><a href="#[10d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_EXTI_Callback
+</UL>
+<BR>[Called By]<UL><LI><a href="#[30]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EXTI9_5_IRQHandler
+</UL>
+
+<P><STRONG><a name="[108]"></a>HAL_GPIO_Init</STRONG> (Thumb, 454 bytes, Stack size 40 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = HAL_GPIO_Init
+</UL>
+<BR>[Called By]<UL><LI><a href="#[153]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_MspInit
+<LI><a href="#[139]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_MspPostInit
+<LI><a href="#[111]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_MspInit
+<LI><a href="#[107]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_MspInit
+<LI><a href="#[165]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
+</UL>
+
+<P><STRONG><a name="[17f]"></a>HAL_GPIO_ReadPin</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin))
+<BR><BR>[Called By]<UL><LI><a href="#[161]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Read_key
+<LI><a href="#[177]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Read_Motor
+</UL>
+
+<P><STRONG><a name="[1cd]"></a>HAL_GPIO_TogglePin</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_TogglePin))
+<BR><BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[166]"></a>HAL_GPIO_WritePin</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin))
+<BR><BR>[Called By]<UL><LI><a href="#[165]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
+<LI><a href="#[1b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;com_pwm_Set
+</UL>
+
+<P><STRONG><a name="[e7]"></a>HAL_GetTick</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(i.HAL_GetTick))
+<BR><BR>[Called By]<UL><LI><a href="#[ee]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
+<LI><a href="#[125]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_OscConfig
+<LI><a href="#[123]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
+<LI><a href="#[122]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCCEx_PeriphCLKConfig
+<LI><a href="#[eb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_Enable
+<LI><a href="#[e6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_ConversionStop_Disable
+<LI><a href="#[119]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnTXEFlagUntilTimeout
+<LI><a href="#[116]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnRXNEFlagUntilTimeout
+<LI><a href="#[15f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnMasterAddressFlagUntilTimeout
+<LI><a href="#[114]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnFlagUntilTimeout
+<LI><a href="#[11a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnBTFFlagUntilTimeout
+<LI><a href="#[117]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Mem_Write
+<LI><a href="#[113]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Mem_Read
+</UL>
+
+<P><STRONG><a name="[110]"></a>HAL_I2C_Init</STRONG> (Thumb, 376 bytes, Stack size 16 bytes, stm32f1xx_hal_i2c.o(i.HAL_I2C_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 88<LI>Call Chain = HAL_I2C_Init &rArr; HAL_I2C_MspInit &rArr; HAL_GPIO_Init
+</UL>
+<BR>[Calls]<UL><LI><a href="#[111]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_MspInit
+<LI><a href="#[112]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetPCLK1Freq
+</UL>
+<BR>[Called By]<UL><LI><a href="#[168]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_I2C2_Init
+<LI><a href="#[167]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_I2C1_Init
+</UL>
+
+<P><STRONG><a name="[113]"></a>HAL_I2C_Mem_Read</STRONG> (Thumb, 586 bytes, Stack size 64 bytes, stm32f1xx_hal_i2c.o(i.HAL_I2C_Mem_Read))
+<BR><BR>[Stack]<UL><LI>Max Depth = 136<LI>Call Chain = HAL_I2C_Mem_Read &rArr; I2C_RequestMemoryRead &rArr; I2C_WaitOnMasterAddressFlagUntilTimeout
+</UL>
+<BR>[Calls]<UL><LI><a href="#[e7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+<LI><a href="#[116]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnRXNEFlagUntilTimeout
+<LI><a href="#[114]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnFlagUntilTimeout
+<LI><a href="#[115]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_RequestMemoryRead
+</UL>
+<BR>[Called By]<UL><LI><a href="#[15d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2CReadOneByte
+</UL>
+
+<P><STRONG><a name="[117]"></a>HAL_I2C_Mem_Write</STRONG> (Thumb, 294 bytes, Stack size 64 bytes, stm32f1xx_hal_i2c.o(i.HAL_I2C_Mem_Write))
+<BR><BR>[Stack]<UL><LI>Max Depth = 128<LI>Call Chain = HAL_I2C_Mem_Write &rArr; I2C_RequestMemoryWrite &rArr; I2C_WaitOnMasterAddressFlagUntilTimeout
+</UL>
+<BR>[Calls]<UL><LI><a href="#[e7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+<LI><a href="#[119]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnTXEFlagUntilTimeout
+<LI><a href="#[114]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnFlagUntilTimeout
+<LI><a href="#[11a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnBTFFlagUntilTimeout
+<LI><a href="#[118]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_RequestMemoryWrite
+</UL>
+<BR>[Called By]<UL><LI><a href="#[15e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2CWriteOneByte
+</UL>
+
+<P><STRONG><a name="[111]"></a>HAL_I2C_MspInit</STRONG> (Thumb, 134 bytes, Stack size 32 bytes, i2c.o(i.HAL_I2C_MspInit))
+<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = HAL_I2C_MspInit &rArr; HAL_GPIO_Init
+</UL>
+<BR>[Calls]<UL><LI><a href="#[108]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
+</UL>
+<BR>[Called By]<UL><LI><a href="#[110]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Init
+</UL>
+
+<P><STRONG><a name="[188]"></a>HAL_IncTick</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(i.HAL_IncTick))
+<BR><BR>[Called By]<UL><LI><a href="#[18]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SysTick_Handler
+</UL>
+
+<P><STRONG><a name="[11b]"></a>HAL_Init</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, stm32f1xx_hal.o(i.HAL_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = HAL_Init &rArr; HAL_InitTick &rArr; HAL_NVIC_SetPriority
+</UL>
+<BR>[Calls]<UL><LI><a href="#[11d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
+<LI><a href="#[11c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriorityGrouping
+<LI><a href="#[11e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_MspInit
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[11d]"></a>HAL_InitTick</STRONG> (Thumb, 54 bytes, Stack size 16 bytes, stm32f1xx_hal.o(i.HAL_InitTick))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = HAL_InitTick &rArr; HAL_NVIC_SetPriority
+</UL>
+<BR>[Calls]<UL><LI><a href="#[120]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
+<LI><a href="#[11f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_Config
+</UL>
+<BR>[Called By]<UL><LI><a href="#[123]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
+<LI><a href="#[11b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
+</UL>
+
+<P><STRONG><a name="[11e]"></a>HAL_MspInit</STRONG> (Thumb, 52 bytes, Stack size 8 bytes, stm32f1xx_hal_msp.o(i.HAL_MspInit))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = HAL_MspInit
+</UL>
+<BR>[Called By]<UL><LI><a href="#[11b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
+</UL>
+
+<P><STRONG><a name="[12b]"></a>HAL_NVIC_EnableIRQ</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ))
+<BR><BR>[Called By]<UL><LI><a href="#[153]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_MspInit
+<LI><a href="#[129]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_MspInit
+<LI><a href="#[165]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
+<LI><a href="#[164]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_DMA_Init
+</UL>
+
+<P><STRONG><a name="[120]"></a>HAL_NVIC_SetPriority</STRONG> (Thumb, 60 bytes, Stack size 16 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = HAL_NVIC_SetPriority
+</UL>
+<BR>[Calls]<UL><LI><a href="#[121]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__NVIC_SetPriority
+</UL>
+<BR>[Called By]<UL><LI><a href="#[153]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_MspInit
+<LI><a href="#[129]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_MspInit
+<LI><a href="#[165]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
+<LI><a href="#[164]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_DMA_Init
+<LI><a href="#[11d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
+</UL>
+
+<P><STRONG><a name="[11c]"></a>HAL_NVIC_SetPriorityGrouping</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping))
+<BR><BR>[Called By]<UL><LI><a href="#[11b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
+</UL>
+
+<P><STRONG><a name="[122]"></a>HAL_RCCEx_PeriphCLKConfig</STRONG> (Thumb, 220 bytes, Stack size 32 bytes, stm32f1xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = HAL_RCCEx_PeriphCLKConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[e7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+</UL>
+<BR>[Called By]<UL><LI><a href="#[189]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
+</UL>
+
+<P><STRONG><a name="[123]"></a>HAL_RCC_ClockConfig</STRONG> (Thumb, 292 bytes, Stack size 32 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = HAL_RCC_ClockConfig &rArr; HAL_InitTick &rArr; HAL_NVIC_SetPriority
+</UL>
+<BR>[Calls]<UL><LI><a href="#[124]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetSysClockFreq
+<LI><a href="#[11d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
+<LI><a href="#[e7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+</UL>
+<BR>[Called By]<UL><LI><a href="#[189]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
+</UL>
+
+<P><STRONG><a name="[112]"></a>HAL_RCC_GetPCLK1Freq</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq))
+<BR><BR>[Called By]<UL><LI><a href="#[110]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Init
+<LI><a href="#[154]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_SetConfig
+</UL>
+
+<P><STRONG><a name="[18d]"></a>HAL_RCC_GetPCLK2Freq</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq))
+<BR><BR>[Called By]<UL><LI><a href="#[154]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_SetConfig
+</UL>
+
+<P><STRONG><a name="[124]"></a>HAL_RCC_GetSysClockFreq</STRONG> (Thumb, 58 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq))
+<BR><BR>[Called By]<UL><LI><a href="#[123]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
+</UL>
+
+<P><STRONG><a name="[125]"></a>HAL_RCC_OscConfig</STRONG> (Thumb, 770 bytes, Stack size 40 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = HAL_RCC_OscConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[e7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+</UL>
+<BR>[Called By]<UL><LI><a href="#[189]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
+</UL>
+
+<P><STRONG><a name="[11f]"></a>HAL_SYSTICK_Config</STRONG> (Thumb, 40 bytes, Stack size 8 bytes, stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = HAL_SYSTICK_Config
+</UL>
+<BR>[Calls]<UL><LI><a href="#[121]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__NVIC_SetPriority
+</UL>
+<BR>[Called By]<UL><LI><a href="#[11d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
+</UL>
+
+<P><STRONG><a name="[136]"></a>HAL_TIMEx_BreakCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_BreakCallback))
+<BR><BR>[Called By]<UL><LI><a href="#[131]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IRQHandler
+</UL>
+
+<P><STRONG><a name="[138]"></a>HAL_TIMEx_CommutCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_CommutCallback))
+<BR><BR>[Called By]<UL><LI><a href="#[131]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IRQHandler
+</UL>
+
+<P><STRONG><a name="[16b]"></a>HAL_TIMEx_ConfigBreakDeadTime</STRONG> (Thumb, 84 bytes, Stack size 8 bytes, stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_ConfigBreakDeadTime))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = HAL_TIMEx_ConfigBreakDeadTime
+</UL>
+<BR>[Called By]<UL><LI><a href="#[169]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+</UL>
+
+<P><STRONG><a name="[16a]"></a>HAL_TIMEx_MasterConfigSynchronization</STRONG> (Thumb, 104 bytes, Stack size 16 bytes, stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = HAL_TIMEx_MasterConfigSynchronization
+</UL>
+<BR>[Called By]<UL><LI><a href="#[16e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM4_Init
+<LI><a href="#[16d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
+<LI><a href="#[16c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
+<LI><a href="#[169]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+</UL>
+
+<P><STRONG><a name="[126]"></a>HAL_TIMEx_PWMN_Start</STRONG> (Thumb, 156 bytes, Stack size 8 bytes, stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Start))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = HAL_TIMEx_PWMN_Start &rArr; TIM_CCxNChannelCmd
+</UL>
+<BR>[Calls]<UL><LI><a href="#[127]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_CCxNChannelCmd
+</UL>
+<BR>[Called By]<UL><LI><a href="#[169]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+</UL>
+
+<P><STRONG><a name="[128]"></a>HAL_TIM_Base_Init</STRONG> (Thumb, 90 bytes, Stack size 8 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = HAL_TIM_Base_Init &rArr; HAL_TIM_Base_MspInit &rArr; HAL_NVIC_SetPriority
+</UL>
+<BR>[Calls]<UL><LI><a href="#[129]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_MspInit
+<LI><a href="#[12a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_Base_SetConfig
+</UL>
+<BR>[Called By]<UL><LI><a href="#[16e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM4_Init
+<LI><a href="#[16d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
+<LI><a href="#[16c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
+<LI><a href="#[169]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+</UL>
+
+<P><STRONG><a name="[129]"></a>HAL_TIM_Base_MspInit</STRONG> (Thumb, 116 bytes, Stack size 8 bytes, tim.o(i.HAL_TIM_Base_MspInit))
+<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = HAL_TIM_Base_MspInit &rArr; HAL_NVIC_SetPriority
+</UL>
+<BR>[Calls]<UL><LI><a href="#[120]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
+<LI><a href="#[12b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_EnableIRQ
+</UL>
+<BR>[Called By]<UL><LI><a href="#[128]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
+</UL>
+
+<P><STRONG><a name="[176]"></a>HAL_TIM_Base_Start</STRONG> (Thumb, 78 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start))
+<BR><BR>[Called By]<UL><LI><a href="#[146]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Motor_mix_work
+</UL>
+
+<P><STRONG><a name="[1c8]"></a>HAL_TIM_Base_Start_IT</STRONG> (Thumb, 88 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start_IT))
+<BR><BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[175]"></a>HAL_TIM_Base_Stop</STRONG> (Thumb, 38 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Stop))
+<BR><BR>[Called By]<UL><LI><a href="#[146]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Motor_mix_work
+</UL>
+
+<P><STRONG><a name="[12c]"></a>HAL_TIM_ConfigClockSource</STRONG> (Thumb, 220 bytes, Stack size 16 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_ConfigClockSource))
+<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = HAL_TIM_ConfigClockSource &rArr; TIM_ETR_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[12d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_ETR_SetConfig
+<LI><a href="#[12f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_TI2_ConfigInputStage
+<LI><a href="#[12e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_TI1_ConfigInputStage
+<LI><a href="#[130]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_ITRx_SetConfig
+</UL>
+<BR>[Called By]<UL><LI><a href="#[16e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM4_Init
+<LI><a href="#[16d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
+<LI><a href="#[16c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
+<LI><a href="#[169]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+</UL>
+
+<P><STRONG><a name="[132]"></a>HAL_TIM_IC_CaptureCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_IC_CaptureCallback))
+<BR><BR>[Called By]<UL><LI><a href="#[131]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IRQHandler
+</UL>
+
+<P><STRONG><a name="[131]"></a>HAL_TIM_IRQHandler</STRONG> (Thumb, 304 bytes, Stack size 24 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_IRQHandler))
+<BR><BR>[Stack]<UL><LI>Max Depth = 104<LI>Call Chain = HAL_TIM_IRQHandler &rArr; HAL_TIM_PeriodElapsedCallback &rArr; Motor_mix_work &rArr; __aeabi_dmul
+</UL>
+<BR>[Calls]<UL><LI><a href="#[135]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PeriodElapsedCallback
+<LI><a href="#[137]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_TriggerCallback
+<LI><a href="#[134]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_PulseFinishedCallback
+<LI><a href="#[133]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_DelayElapsedCallback
+<LI><a href="#[132]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IC_CaptureCallback
+<LI><a href="#[138]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_CommutCallback
+<LI><a href="#[136]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_BreakCallback
+</UL>
+<BR>[Called By]<UL><LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM2_IRQHandler
+</UL>
+
+<P><STRONG><a name="[139]"></a>HAL_TIM_MspPostInit</STRONG> (Thumb, 122 bytes, Stack size 24 bytes, tim.o(i.HAL_TIM_MspPostInit))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = HAL_TIM_MspPostInit &rArr; HAL_GPIO_Init
+</UL>
+<BR>[Calls]<UL><LI><a href="#[108]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
+</UL>
+<BR>[Called By]<UL><LI><a href="#[16d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
+<LI><a href="#[169]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+</UL>
+
+<P><STRONG><a name="[13a]"></a>HAL_TIM_OC_ConfigChannel</STRONG> (Thumb, 82 bytes, Stack size 16 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_OC_ConfigChannel))
+<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = HAL_TIM_OC_ConfigChannel &rArr; TIM_OC2_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[13c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_OC2_SetConfig
+<LI><a href="#[13e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_OC4_SetConfig
+<LI><a href="#[13d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_OC3_SetConfig
+<LI><a href="#[13b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_OC1_SetConfig
+</UL>
+<BR>[Called By]<UL><LI><a href="#[169]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+</UL>
+
+<P><STRONG><a name="[133]"></a>HAL_TIM_OC_DelayElapsedCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_OC_DelayElapsedCallback))
+<BR><BR>[Called By]<UL><LI><a href="#[131]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IRQHandler
+</UL>
+
+<P><STRONG><a name="[13f]"></a>HAL_TIM_OC_Init</STRONG> (Thumb, 90 bytes, Stack size 8 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = HAL_TIM_OC_Init &rArr; TIM_Base_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[140]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_MspInit
+<LI><a href="#[12a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_Base_SetConfig
+</UL>
+<BR>[Called By]<UL><LI><a href="#[169]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+</UL>
+
+<P><STRONG><a name="[140]"></a>HAL_TIM_OC_MspInit</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_OC_MspInit))
+<BR><BR>[Called By]<UL><LI><a href="#[13f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_Init
+</UL>
+
+<P><STRONG><a name="[141]"></a>HAL_TIM_PWM_ConfigChannel</STRONG> (Thumb, 204 bytes, Stack size 16 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_ConfigChannel))
+<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = HAL_TIM_PWM_ConfigChannel &rArr; TIM_OC2_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[13c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_OC2_SetConfig
+<LI><a href="#[13e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_OC4_SetConfig
+<LI><a href="#[13d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_OC3_SetConfig
+<LI><a href="#[13b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_OC1_SetConfig
+</UL>
+<BR>[Called By]<UL><LI><a href="#[16d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
+</UL>
+
+<P><STRONG><a name="[142]"></a>HAL_TIM_PWM_Init</STRONG> (Thumb, 90 bytes, Stack size 8 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = HAL_TIM_PWM_Init &rArr; TIM_Base_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[143]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_MspInit
+<LI><a href="#[12a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_Base_SetConfig
+</UL>
+<BR>[Called By]<UL><LI><a href="#[16d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
+</UL>
+
+<P><STRONG><a name="[143]"></a>HAL_TIM_PWM_MspInit</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_MspInit))
+<BR><BR>[Called By]<UL><LI><a href="#[142]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_Init
+</UL>
+
+<P><STRONG><a name="[134]"></a>HAL_TIM_PWM_PulseFinishedCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_PulseFinishedCallback))
+<BR><BR>[Called By]<UL><LI><a href="#[131]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IRQHandler
+</UL>
+
+<P><STRONG><a name="[144]"></a>HAL_TIM_PWM_Start</STRONG> (Thumb, 166 bytes, Stack size 8 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Start))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = HAL_TIM_PWM_Start &rArr; TIM_CCxChannelCmd
+</UL>
+<BR>[Calls]<UL><LI><a href="#[145]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_CCxChannelCmd
+</UL>
+<BR>[Called By]<UL><LI><a href="#[16d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
+<LI><a href="#[169]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+</UL>
+
+<P><STRONG><a name="[135]"></a>HAL_TIM_PeriodElapsedCallback</STRONG> (Thumb, 118 bytes, Stack size 16 bytes, main.o(i.HAL_TIM_PeriodElapsedCallback))
+<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = HAL_TIM_PeriodElapsedCallback &rArr; Motor_mix_work &rArr; __aeabi_dmul
+</UL>
+<BR>[Calls]<UL><LI><a href="#[147]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;light_ctrl
+<LI><a href="#[146]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Motor_mix_work
+</UL>
+<BR>[Called By]<UL><LI><a href="#[131]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IRQHandler
+</UL>
+
+<P><STRONG><a name="[137]"></a>HAL_TIM_TriggerCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_TriggerCallback))
+<BR><BR>[Called By]<UL><LI><a href="#[131]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IRQHandler
+</UL>
+
+<P><STRONG><a name="[150]"></a>HAL_UARTEx_RxEventCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback))
+<BR><BR>[Called By]<UL><LI><a href="#[14d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
+<LI><a href="#[14e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_Receive_IT
+<LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_DMARxHalfCplt
+<LI><a href="#[64]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_DMAReceiveCplt
+</UL>
+
+<P><STRONG><a name="[148]"></a>HAL_UART_DMAStop</STRONG> (Thumb, 112 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_DMAStop))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = HAL_UART_DMAStop &rArr; HAL_DMA_Abort
+</UL>
+<BR>[Calls]<UL><LI><a href="#[10b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Abort
+<LI><a href="#[149]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_EndTxTransfer
+<LI><a href="#[14a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_EndRxTransfer
+</UL>
+<BR>[Called By]<UL><LI><a href="#[157]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;svanner_receive_Rec_IDLE
+<LI><a href="#[158]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;esp_receive_Rec_IDLE
+</UL>
+
+<P><STRONG><a name="[14b]"></a>HAL_UART_ErrorCallback</STRONG> (Thumb, 18 bytes, Stack size 0 bytes, van_itcallback.o(i.HAL_UART_ErrorCallback))
+<BR><BR>[Stack]<UL><LI>Max Depth = 76<LI>Call Chain = HAL_UART_ErrorCallback &rArr; Van_Debug_UART_ErrorCallback &rArr; HAL_UART_Receive_DMA &rArr; UART_Start_Receive_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[14c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART_ErrorCallback
+</UL>
+<BR>[Called By]<UL><LI><a href="#[14d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
+<LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_DMAError
+<LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_DMAAbortOnError
+</UL>
+
+<P><STRONG><a name="[14d]"></a>HAL_UART_IRQHandler</STRONG> (Thumb, 616 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler))
+<BR><BR>[Stack]<UL><LI>Max Depth = 100<LI>Call Chain = HAL_UART_IRQHandler &rArr; HAL_UART_ErrorCallback &rArr; Van_Debug_UART_ErrorCallback &rArr; HAL_UART_Receive_DMA &rArr; UART_Start_Receive_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[14f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Abort_IT
+<LI><a href="#[10b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Abort
+<LI><a href="#[150]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UARTEx_RxEventCallback
+<LI><a href="#[14e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_Receive_IT
+<LI><a href="#[14a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_EndRxTransfer
+<LI><a href="#[151]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_TxCpltCallback
+<LI><a href="#[14b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_ErrorCallback
+</UL>
+<BR>[Called By]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;USART2_IRQHandler
+<LI><a href="#[3e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;USART1_IRQHandler
+<LI><a href="#[4d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART4_IRQHandler
+</UL>
+
+<P><STRONG><a name="[152]"></a>HAL_UART_Init</STRONG> (Thumb, 100 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 104<LI>Call Chain = HAL_UART_Init &rArr; HAL_UART_MspInit &rArr; HAL_GPIO_Init
+</UL>
+<BR>[Calls]<UL><LI><a href="#[153]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_MspInit
+<LI><a href="#[154]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_SetConfig
+</UL>
+<BR>[Called By]<UL><LI><a href="#[171]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART2_UART_Init
+<LI><a href="#[170]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
+<LI><a href="#[16f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_UART4_Init
+</UL>
+
+<P><STRONG><a name="[153]"></a>HAL_UART_MspInit</STRONG> (Thumb, 492 bytes, Stack size 48 bytes, usart.o(i.HAL_UART_MspInit))
+<BR><BR>[Stack]<UL><LI>Max Depth = 88<LI>Call Chain = HAL_UART_MspInit &rArr; HAL_GPIO_Init
+</UL>
+<BR>[Calls]<UL><LI><a href="#[109]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Init
+<LI><a href="#[120]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
+<LI><a href="#[12b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_EnableIRQ
+<LI><a href="#[108]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
+<LI><a href="#[f0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[152]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Init
+</UL>
+
+<P><STRONG><a name="[155]"></a>HAL_UART_Rec_IDLE</STRONG> (Thumb, 44 bytes, Stack size 0 bytes, van_itcallback.o(i.HAL_UART_Rec_IDLE))
+<BR><BR>[Stack]<UL><LI>Max Depth = 76<LI>Call Chain = HAL_UART_Rec_IDLE &rArr; svanner_receive_Rec_IDLE &rArr; HAL_UART_Receive_DMA &rArr; UART_Start_Receive_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[157]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;svanner_receive_Rec_IDLE
+<LI><a href="#[158]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;esp_receive_Rec_IDLE
+<LI><a href="#[156]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART_Rec_IDLE
+</UL>
+<BR>[Called By]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;USART2_IRQHandler
+<LI><a href="#[3e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;USART1_IRQHandler
+<LI><a href="#[4d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART4_IRQHandler
+</UL>
+
+<P><STRONG><a name="[159]"></a>HAL_UART_Receive_DMA</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Receive_DMA))
+<BR><BR>[Stack]<UL><LI>Max Depth = 60<LI>Call Chain = HAL_UART_Receive_DMA &rArr; UART_Start_Receive_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[15a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_Start_Receive_DMA
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;svanner_receive_Rec_Start
+<LI><a href="#[1c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;esp_receive_Rec_Start
+<LI><a href="#[191]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART_Init
+<LI><a href="#[157]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;svanner_receive_Rec_IDLE
+<LI><a href="#[158]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;esp_receive_Rec_IDLE
+<LI><a href="#[156]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART_Rec_IDLE
+<LI><a href="#[14c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART_ErrorCallback
+</UL>
+
+<P><STRONG><a name="[18a]"></a>HAL_UART_RxCpltCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, van_itcallback.o(i.HAL_UART_RxCpltCallback))
+<BR><BR>[Called By]<UL><LI><a href="#[14e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_Receive_IT
+<LI><a href="#[64]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_DMAReceiveCplt
+</UL>
+
+<P><STRONG><a name="[18b]"></a>HAL_UART_RxHalfCpltCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_RxHalfCpltCallback))
+<BR><BR>[Called By]<UL><LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_DMARxHalfCplt
+</UL>
+
+<P><STRONG><a name="[15b]"></a>HAL_UART_Transmit_DMA</STRONG> (Thumb, 110 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_DMA))
+<BR><BR>[Stack]<UL><LI>Max Depth = 52<LI>Call Chain = HAL_UART_Transmit_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[10a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Start_IT
+</UL>
+<BR>[Called By]<UL><LI><a href="#[15c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART_TxCpltCallback
+<LI><a href="#[14c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART_ErrorCallback
+<LI><a href="#[193]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART_Send_DMA
+<LI><a href="#[104]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WriteComm2
+</UL>
+
+<P><STRONG><a name="[151]"></a>HAL_UART_TxCpltCallback</STRONG> (Thumb, 32 bytes, Stack size 0 bytes, van_itcallback.o(i.HAL_UART_TxCpltCallback))
+<BR><BR>[Stack]<UL><LI>Max Depth = 68<LI>Call Chain = HAL_UART_TxCpltCallback &rArr; Van_Debug_UART_TxCpltCallback &rArr; HAL_UART_Transmit_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[15c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART_TxCpltCallback
+</UL>
+<BR>[Called By]<UL><LI><a href="#[14d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
+<LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_DMATransmitCplt
+</UL>
+
+<P><STRONG><a name="[18c]"></a>HAL_UART_TxHalfCpltCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_TxHalfCpltCallback))
+<BR><BR>[Called By]<UL><LI><a href="#[62]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_DMATxHalfCplt
+</UL>
+
+<P><STRONG><a name="[11]"></a>HardFault_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.HardFault_Handler))
+<BR><BR>[Calls]<UL><LI><a href="#[11]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HardFault_Handler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[11]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HardFault_Handler
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[15d]"></a>I2CReadOneByte</STRONG> (Thumb, 40 bytes, Stack size 32 bytes, rgb381.o(i.I2CReadOneByte))
+<BR><BR>[Stack]<UL><LI>Max Depth = 168<LI>Call Chain = I2CReadOneByte &rArr; HAL_I2C_Mem_Read &rArr; I2C_RequestMemoryRead &rArr; I2C_WaitOnMasterAddressFlagUntilTimeout
+</UL>
+<BR>[Calls]<UL><LI><a href="#[113]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Mem_Read
+</UL>
+<BR>[Called By]<UL><LI><a href="#[183]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorGetRawData
+<LI><a href="#[181]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorGetID
+</UL>
+
+<P><STRONG><a name="[15e]"></a>I2CWriteOneByte</STRONG> (Thumb, 32 bytes, Stack size 40 bytes, rgb381.o(i.I2CWriteOneByte))
+<BR><BR>[Stack]<UL><LI>Max Depth = 168<LI>Call Chain = I2CWriteOneByte &rArr; HAL_I2C_Mem_Write &rArr; I2C_RequestMemoryWrite &rArr; I2C_WaitOnMasterAddressFlagUntilTimeout
+</UL>
+<BR>[Calls]<UL><LI><a href="#[117]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Mem_Write
+</UL>
+<BR>[Called By]<UL><LI><a href="#[182]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TCA9548A_SetChannel
+<LI><a href="#[186]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorSetGain
+<LI><a href="#[185]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorMeasurementFactor
+<LI><a href="#[180]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorEnable
+</UL>
+
+<P><STRONG><a name="[1ba]"></a>INTAsiicTorHexInt</STRONG> (Thumb, 64 bytes, Stack size 12 bytes, van_bsp_debug_shell.o(i.INTAsiicTorHexInt))
+<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = INTAsiicTorHexInt
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;debugcall
+<LI><a href="#[1bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;debugvarb
+</UL>
+
+<P><STRONG><a name="[10f]"></a>KYE_IRQHandler</STRONG> (Thumb, 120 bytes, Stack size 8 bytes, usr_motor.o(i.KYE_IRQHandler))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = KYE_IRQHandler &rArr; Read_key
+</UL>
+<BR>[Calls]<UL><LI><a href="#[161]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Read_key
+</UL>
+<BR>[Called By]<UL><LI><a href="#[10d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_EXTI_Callback
+</UL>
+
+<P><STRONG><a name="[162]"></a>MX_ADC1_Init</STRONG> (Thumb, 96 bytes, Stack size 24 bytes, adc.o(i.MX_ADC1_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 128<LI>Call Chain = MX_ADC1_Init &rArr; HAL_ADC_Init &rArr; HAL_ADC_MspInit &rArr; HAL_GPIO_Init
+</UL>
+<BR>[Calls]<UL><LI><a href="#[106]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_Init
+<LI><a href="#[163]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_ADC_ConfigChannel
+<LI><a href="#[f0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[164]"></a>MX_DMA_Init</STRONG> (Thumb, 136 bytes, Stack size 8 bytes, dma.o(i.MX_DMA_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = MX_DMA_Init &rArr; HAL_NVIC_SetPriority
+</UL>
+<BR>[Calls]<UL><LI><a href="#[120]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
+<LI><a href="#[12b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_EnableIRQ
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[165]"></a>MX_GPIO_Init</STRONG> (Thumb, 332 bytes, Stack size 48 bytes, gpio.o(i.MX_GPIO_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 88<LI>Call Chain = MX_GPIO_Init &rArr; HAL_GPIO_Init
+</UL>
+<BR>[Calls]<UL><LI><a href="#[120]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
+<LI><a href="#[12b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_EnableIRQ
+<LI><a href="#[166]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
+<LI><a href="#[108]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[167]"></a>MX_I2C1_Init</STRONG> (Thumb, 50 bytes, Stack size 8 bytes, i2c.o(i.MX_I2C1_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 96<LI>Call Chain = MX_I2C1_Init &rArr; HAL_I2C_Init &rArr; HAL_I2C_MspInit &rArr; HAL_GPIO_Init
+</UL>
+<BR>[Calls]<UL><LI><a href="#[110]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Init
+<LI><a href="#[f0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[168]"></a>MX_I2C2_Init</STRONG> (Thumb, 50 bytes, Stack size 8 bytes, i2c.o(i.MX_I2C2_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 96<LI>Call Chain = MX_I2C2_Init &rArr; HAL_I2C_Init &rArr; HAL_I2C_MspInit &rArr; HAL_GPIO_Init
+</UL>
+<BR>[Calls]<UL><LI><a href="#[110]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Init
+<LI><a href="#[f0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[169]"></a>MX_TIM1_Init</STRONG> (Thumb, 208 bytes, Stack size 96 bytes, tim.o(i.MX_TIM1_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 160<LI>Call Chain = MX_TIM1_Init &rArr; HAL_TIM_MspPostInit &rArr; HAL_GPIO_Init
+</UL>
+<BR>[Calls]<UL><LI><a href="#[144]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_Start
+<LI><a href="#[13f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_Init
+<LI><a href="#[13a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_ConfigChannel
+<LI><a href="#[12c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
+<LI><a href="#[128]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
+<LI><a href="#[126]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_PWMN_Start
+<LI><a href="#[16a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_MasterConfigSynchronization
+<LI><a href="#[16b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_ConfigBreakDeadTime
+<LI><a href="#[139]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_MspPostInit
+<LI><a href="#[f0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+<LI><a href="#[fd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[16c]"></a>MX_TIM2_Init</STRONG> (Thumb, 100 bytes, Stack size 32 bytes, tim.o(i.MX_TIM2_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = MX_TIM2_Init &rArr; HAL_TIM_Base_Init &rArr; HAL_TIM_Base_MspInit &rArr; HAL_NVIC_SetPriority
+</UL>
+<BR>[Calls]<UL><LI><a href="#[12c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
+<LI><a href="#[128]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
+<LI><a href="#[16a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_MasterConfigSynchronization
+<LI><a href="#[f0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[16d]"></a>MX_TIM3_Init</STRONG> (Thumb, 202 bytes, Stack size 64 bytes, tim.o(i.MX_TIM3_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 128<LI>Call Chain = MX_TIM3_Init &rArr; HAL_TIM_MspPostInit &rArr; HAL_GPIO_Init
+</UL>
+<BR>[Calls]<UL><LI><a href="#[144]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_Start
+<LI><a href="#[142]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_Init
+<LI><a href="#[141]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_ConfigChannel
+<LI><a href="#[12c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
+<LI><a href="#[128]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
+<LI><a href="#[16a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_MasterConfigSynchronization
+<LI><a href="#[139]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_MspPostInit
+<LI><a href="#[f0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+<LI><a href="#[fd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[16e]"></a>MX_TIM4_Init</STRONG> (Thumb, 92 bytes, Stack size 32 bytes, tim.o(i.MX_TIM4_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = MX_TIM4_Init &rArr; HAL_TIM_Base_Init &rArr; HAL_TIM_Base_MspInit &rArr; HAL_NVIC_SetPriority
+</UL>
+<BR>[Calls]<UL><LI><a href="#[12c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
+<LI><a href="#[128]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
+<LI><a href="#[16a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_MasterConfigSynchronization
+<LI><a href="#[f0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[16f]"></a>MX_UART4_Init</STRONG> (Thumb, 48 bytes, Stack size 8 bytes, usart.o(i.MX_UART4_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = MX_UART4_Init &rArr; HAL_UART_Init &rArr; HAL_UART_MspInit &rArr; HAL_GPIO_Init
+</UL>
+<BR>[Calls]<UL><LI><a href="#[152]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Init
+<LI><a href="#[f0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[170]"></a>MX_USART1_UART_Init</STRONG> (Thumb, 48 bytes, Stack size 8 bytes, usart.o(i.MX_USART1_UART_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = MX_USART1_UART_Init &rArr; HAL_UART_Init &rArr; HAL_UART_MspInit &rArr; HAL_GPIO_Init
+</UL>
+<BR>[Calls]<UL><LI><a href="#[152]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Init
+<LI><a href="#[f0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[171]"></a>MX_USART2_UART_Init</STRONG> (Thumb, 48 bytes, Stack size 8 bytes, usart.o(i.MX_USART2_UART_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = MX_USART2_UART_Init &rArr; HAL_UART_Init &rArr; HAL_UART_MspInit &rArr; HAL_GPIO_Init
+</UL>
+<BR>[Calls]<UL><LI><a href="#[152]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Init
+<LI><a href="#[f0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[12]"></a>MemManage_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.MemManage_Handler))
+<BR><BR>[Calls]<UL><LI><a href="#[12]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MemManage_Handler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[12]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MemManage_Handler
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[173]"></a>Motor_deal_key</STRONG> (Thumb, 66 bytes, Stack size 12 bytes, usr_motor.o(i.Motor_deal_key))
+<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = Motor_deal_key
+</UL>
+<BR>[Called By]<UL><LI><a href="#[146]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Motor_mix_work
+</UL>
+
+<P><STRONG><a name="[146]"></a>Motor_mix_work</STRONG> (Thumb, 598 bytes, Stack size 32 bytes, usr_motor.o(i.Motor_mix_work))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = Motor_mix_work &rArr; __aeabi_dmul
+</UL>
+<BR>[Calls]<UL><LI><a href="#[175]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Stop
+<LI><a href="#[176]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Start
+<LI><a href="#[172]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;check_keyShortValid
+<LI><a href="#[174]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SetMotorPwm
+<LI><a href="#[177]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Read_Motor
+<LI><a href="#[173]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Motor_deal_key
+<LI><a href="#[17a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_dmul
+<LI><a href="#[178]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_ui2d
+<LI><a href="#[17b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_d2uiz
+<LI><a href="#[179]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_ddiv
+<LI><a href="#[fd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+</UL>
+<BR>[Called By]<UL><LI><a href="#[135]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PeriodElapsedCallback
+</UL>
+
+<P><STRONG><a name="[10]"></a>NMI_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.NMI_Handler))
+<BR><BR>[Calls]<UL><LI><a href="#[10]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;NMI_Handler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[10]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;NMI_Handler
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[10e]"></a>OPTO_IRQHandler</STRONG> (Thumb, 356 bytes, Stack size 24 bytes, usr_motor.o(i.OPTO_IRQHandler))
+<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = OPTO_IRQHandler &rArr; __aeabi_dmul
+</UL>
+<BR>[Calls]<UL><LI><a href="#[17c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIMER_GetCounter
+<LI><a href="#[174]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SetMotorPwm
+<LI><a href="#[177]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Read_Motor
+<LI><a href="#[17d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Bubble_Sort
+<LI><a href="#[17a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_dmul
+<LI><a href="#[17e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_cdcmple
+<LI><a href="#[178]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_ui2d
+<LI><a href="#[17b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_d2uiz
+</UL>
+<BR>[Called By]<UL><LI><a href="#[10d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_EXTI_Callback
+</UL>
+
+<P><STRONG><a name="[17]"></a>PendSV_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.PendSV_Handler))
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[177]"></a>Read_Motor</STRONG> (Thumb, 20 bytes, Stack size 8 bytes, usr_motor.o(i.Read_Motor))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = Read_Motor
+</UL>
+<BR>[Calls]<UL><LI><a href="#[17f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
+</UL>
+<BR>[Called By]<UL><LI><a href="#[146]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Motor_mix_work
+<LI><a href="#[10e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;OPTO_IRQHandler
+</UL>
+
+<P><STRONG><a name="[161]"></a>Read_key</STRONG> (Thumb, 20 bytes, Stack size 8 bytes, usr_motor.o(i.Read_key))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = Read_key
+</UL>
+<BR>[Calls]<UL><LI><a href="#[17f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
+</UL>
+<BR>[Called By]<UL><LI><a href="#[10f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;KYE_IRQHandler
+</UL>
+
+<P><STRONG><a name="[15]"></a>SVC_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.SVC_Handler))
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[180]"></a>SensorEnable</STRONG> (Thumb, 24 bytes, Stack size 8 bytes, rgb381.o(i.SensorEnable))
+<BR><BR>[Stack]<UL><LI>Max Depth = 176<LI>Call Chain = SensorEnable &rArr; I2CWriteOneByte &rArr; HAL_I2C_Mem_Write &rArr; I2C_RequestMemoryWrite &rArr; I2C_WaitOnMasterAddressFlagUntilTimeout
+</UL>
+<BR>[Calls]<UL><LI><a href="#[ee]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
+<LI><a href="#[15e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2CWriteOneByte
+</UL>
+<BR>[Called By]<UL><LI><a href="#[184]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorInit
+</UL>
+
+<P><STRONG><a name="[181]"></a>SensorGetID</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, rgb381.o(i.SensorGetID))
+<BR><BR>[Stack]<UL><LI>Max Depth = 192<LI>Call Chain = SensorGetID &rArr; TCA9548A_SetChannel &rArr; I2CWriteOneByte &rArr; HAL_I2C_Mem_Write &rArr; I2C_RequestMemoryWrite &rArr; I2C_WaitOnMasterAddressFlagUntilTimeout
+</UL>
+<BR>[Calls]<UL><LI><a href="#[ee]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
+<LI><a href="#[182]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TCA9548A_SetChannel
+<LI><a href="#[15d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2CReadOneByte
+</UL>
+<BR>[Called By]<UL><LI><a href="#[184]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorInit
+</UL>
+
+<P><STRONG><a name="[183]"></a>SensorGetRawData</STRONG> (Thumb, 190 bytes, Stack size 24 bytes, rgb381.o(i.SensorGetRawData))
+<BR><BR>[Stack]<UL><LI>Max Depth = 680 + Unknown Stack Size
+<LI>Call Chain = SensorGetRawData &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[ee]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
+<LI><a href="#[102]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Device_Printf
+<LI><a href="#[182]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TCA9548A_SetChannel
+<LI><a href="#[15d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2CReadOneByte
+</UL>
+<BR>[Called By]<UL><LI><a href="#[184]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorInit
+</UL>
+
+<P><STRONG><a name="[184]"></a>SensorInit</STRONG> (Thumb, 96 bytes, Stack size 16 bytes, rgb381.o(i.SensorInit))
+<BR><BR>[Stack]<UL><LI>Max Depth = 696 + Unknown Stack Size
+<LI>Call Chain = SensorInit &rArr; SensorGetRawData &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[ee]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
+<LI><a href="#[186]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorSetGain
+<LI><a href="#[185]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorMeasurementFactor
+<LI><a href="#[183]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorGetRawData
+<LI><a href="#[181]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorGetID
+<LI><a href="#[180]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorEnable
+<LI><a href="#[fd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+</UL>
+<BR>[Called By]<UL><LI><a href="#[187]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorSelfCheck
+</UL>
+
+<P><STRONG><a name="[1cb]"></a>SensorInitial</STRONG> (Thumb, 64 bytes, Stack size 0 bytes, rgb381.o(i.SensorInitial))
+<BR><BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[185]"></a>SensorMeasurementFactor</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, rgb381.o(i.SensorMeasurementFactor))
+<BR><BR>[Stack]<UL><LI>Max Depth = 168<LI>Call Chain = SensorMeasurementFactor &rArr; I2CWriteOneByte &rArr; HAL_I2C_Mem_Write &rArr; I2C_RequestMemoryWrite &rArr; I2C_WaitOnMasterAddressFlagUntilTimeout
+</UL>
+<BR>[Calls]<UL><LI><a href="#[15e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2CWriteOneByte
+</UL>
+<BR>[Called By]<UL><LI><a href="#[184]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorInit
+</UL>
+
+<P><STRONG><a name="[187]"></a>SensorSelfCheck</STRONG> (Thumb, 144 bytes, Stack size 8 bytes, rgb381.o(i.SensorSelfCheck))
+<BR><BR>[Stack]<UL><LI>Max Depth = 704 + Unknown Stack Size
+<LI>Call Chain = SensorSelfCheck &rArr; SensorInit &rArr; SensorGetRawData &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[184]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorInit
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[186]"></a>SensorSetGain</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, rgb381.o(i.SensorSetGain))
+<BR><BR>[Stack]<UL><LI>Max Depth = 168<LI>Call Chain = SensorSetGain &rArr; I2CWriteOneByte &rArr; HAL_I2C_Mem_Write &rArr; I2C_RequestMemoryWrite &rArr; I2C_WaitOnMasterAddressFlagUntilTimeout
+</UL>
+<BR>[Calls]<UL><LI><a href="#[15e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2CWriteOneByte
+</UL>
+<BR>[Called By]<UL><LI><a href="#[184]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorInit
+</UL>
+
+<P><STRONG><a name="[174]"></a>SetMotorPwm</STRONG> (Thumb, 46 bytes, Stack size 8 bytes, usr_motor.o(i.SetMotorPwm))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = SetMotorPwm
+</UL>
+<BR>[Called By]<UL><LI><a href="#[146]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Motor_mix_work
+<LI><a href="#[10e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;OPTO_IRQHandler
+</UL>
+
+<P><STRONG><a name="[18]"></a>SysTick_Handler</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.SysTick_Handler))
+<BR><BR>[Calls]<UL><LI><a href="#[188]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_IncTick
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[189]"></a>SystemClock_Config</STRONG> (Thumb, 112 bytes, Stack size 96 bytes, main.o(i.SystemClock_Config))
+<BR><BR>[Stack]<UL><LI>Max Depth = 160<LI>Call Chain = SystemClock_Config &rArr; HAL_RCC_ClockConfig &rArr; HAL_InitTick &rArr; HAL_NVIC_SetPriority
+</UL>
+<BR>[Calls]<UL><LI><a href="#[125]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_OscConfig
+<LI><a href="#[123]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
+<LI><a href="#[122]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCCEx_PeriphCLKConfig
+<LI><a href="#[fd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[55]"></a>SystemInit</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, system_stm32f1xx.o(i.SystemInit))
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(.text)
+</UL>
+<P><STRONG><a name="[182]"></a>TCA9548A_SetChannel</STRONG> (Thumb, 160 bytes, Stack size 16 bytes, rgb381.o(i.TCA9548A_SetChannel))
+<BR><BR>[Stack]<UL><LI>Max Depth = 184<LI>Call Chain = TCA9548A_SetChannel &rArr; I2CWriteOneByte &rArr; HAL_I2C_Mem_Write &rArr; I2C_RequestMemoryWrite &rArr; I2C_WaitOnMasterAddressFlagUntilTimeout
+</UL>
+<BR>[Calls]<UL><LI><a href="#[ee]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
+<LI><a href="#[15e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2CWriteOneByte
+</UL>
+<BR>[Called By]<UL><LI><a href="#[183]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorGetRawData
+<LI><a href="#[181]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorGetID
+</UL>
+
+<P><STRONG><a name="[35]"></a>TIM2_IRQHandler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.TIM2_IRQHandler))
+<BR><BR>[Stack]<UL><LI>Max Depth = 104<LI>Call Chain = TIM2_IRQHandler &rArr; HAL_TIM_IRQHandler &rArr; HAL_TIM_PeriodElapsedCallback &rArr; Motor_mix_work &rArr; __aeabi_dmul
+</UL>
+<BR>[Calls]<UL><LI><a href="#[131]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IRQHandler
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[17c]"></a>TIMER_GetCounter</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, usr_motor.o(i.TIMER_GetCounter))
+<BR><BR>[Called By]<UL><LI><a href="#[10e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;OPTO_IRQHandler
+</UL>
+
+<P><STRONG><a name="[12a]"></a>TIM_Base_SetConfig</STRONG> (Thumb, 134 bytes, Stack size 20 bytes, stm32f1xx_hal_tim.o(i.TIM_Base_SetConfig))
+<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = TIM_Base_SetConfig
+</UL>
+<BR>[Called By]<UL><LI><a href="#[142]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_Init
+<LI><a href="#[13f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_Init
+<LI><a href="#[128]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
+</UL>
+
+<P><STRONG><a name="[145]"></a>TIM_CCxChannelCmd</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = TIM_CCxChannelCmd
+</UL>
+<BR>[Called By]<UL><LI><a href="#[144]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_Start
+</UL>
+
+<P><STRONG><a name="[12d]"></a>TIM_ETR_SetConfig</STRONG> (Thumb, 20 bytes, Stack size 8 bytes, stm32f1xx_hal_tim.o(i.TIM_ETR_SetConfig))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = TIM_ETR_SetConfig
+</UL>
+<BR>[Called By]<UL><LI><a href="#[12c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
+</UL>
+
+<P><STRONG><a name="[13c]"></a>TIM_OC2_SetConfig</STRONG> (Thumb, 98 bytes, Stack size 20 bytes, stm32f1xx_hal_tim.o(i.TIM_OC2_SetConfig))
+<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = TIM_OC2_SetConfig
+</UL>
+<BR>[Called By]<UL><LI><a href="#[141]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_ConfigChannel
+<LI><a href="#[13a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_ConfigChannel
+</UL>
+
+<P><STRONG><a name="[4d]"></a>UART4_IRQHandler</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.UART4_IRQHandler))
+<BR><BR>[Stack]<UL><LI>Max Depth = 108<LI>Call Chain = UART4_IRQHandler &rArr; HAL_UART_IRQHandler &rArr; HAL_UART_ErrorCallback &rArr; Van_Debug_UART_ErrorCallback &rArr; HAL_UART_Receive_DMA &rArr; UART_Start_Receive_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[155]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Rec_IDLE
+<LI><a href="#[14d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[15a]"></a>UART_Start_Receive_DMA</STRONG> (Thumb, 134 bytes, Stack size 32 bytes, stm32f1xx_hal_uart.o(i.UART_Start_Receive_DMA))
+<BR><BR>[Stack]<UL><LI>Max Depth = 60<LI>Call Chain = UART_Start_Receive_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[10a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Start_IT
+</UL>
+<BR>[Called By]<UL><LI><a href="#[159]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Receive_DMA
+</UL>
+
+<P><STRONG><a name="[3e]"></a>USART1_IRQHandler</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.USART1_IRQHandler))
+<BR><BR>[Stack]<UL><LI>Max Depth = 108<LI>Call Chain = USART1_IRQHandler &rArr; HAL_UART_IRQHandler &rArr; HAL_UART_ErrorCallback &rArr; Van_Debug_UART_ErrorCallback &rArr; HAL_UART_Receive_DMA &rArr; UART_Start_Receive_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[155]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Rec_IDLE
+<LI><a href="#[14d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[3f]"></a>USART2_IRQHandler</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.USART2_IRQHandler))
+<BR><BR>[Stack]<UL><LI>Max Depth = 108<LI>Call Chain = USART2_IRQHandler &rArr; HAL_UART_IRQHandler &rArr; HAL_UART_ErrorCallback &rArr; Van_Debug_UART_ErrorCallback &rArr; HAL_UART_Receive_DMA &rArr; UART_Start_Receive_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[155]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Rec_IDLE
+<LI><a href="#[14d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[14]"></a>UsageFault_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.UsageFault_Handler))
+<BR><BR>[Calls]<UL><LI><a href="#[14]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UsageFault_Handler
+</UL>
+<BR>[Called By]<UL><LI><a href="#[14]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UsageFault_Handler
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(RESET)
+</UL>
+<P><STRONG><a name="[18e]"></a>Van_Debug_UART1_test</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, van_bsp_debug_uart.o(i.Van_Debug_UART1_test))
+<BR><BR>[Stack]<UL><LI>Max Depth = 920 + Unknown Stack Size
+<LI>Call Chain = Van_Debug_UART1_test &rArr; decodedebugfunction &rArr; debugcall &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[190]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;decodedebugvariable
+<LI><a href="#[18f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;decodedebugfunction
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[14c]"></a>Van_Debug_UART_ErrorCallback</STRONG> (Thumb, 128 bytes, Stack size 16 bytes, van_bsp_debug_uart.o(i.Van_Debug_UART_ErrorCallback))
+<BR><BR>[Stack]<UL><LI>Max Depth = 76<LI>Call Chain = Van_Debug_UART_ErrorCallback &rArr; HAL_UART_Receive_DMA &rArr; UART_Start_Receive_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[15b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Transmit_DMA
+<LI><a href="#[159]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Receive_DMA
+<LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy4
+</UL>
+<BR>[Called By]<UL><LI><a href="#[14b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_ErrorCallback
+</UL>
+
+<P><STRONG><a name="[191]"></a>Van_Debug_UART_Init</STRONG> (Thumb, 30 bytes, Stack size 8 bytes, van_bsp_debug_uart.o(i.Van_Debug_UART_Init))
+<BR><BR>[Stack]<UL><LI>Max Depth = 68<LI>Call Chain = Van_Debug_UART_Init &rArr; HAL_UART_Receive_DMA &rArr; UART_Start_Receive_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[159]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Receive_DMA
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[156]"></a>Van_Debug_UART_Rec_IDLE</STRONG> (Thumb, 66 bytes, Stack size 16 bytes, van_bsp_debug_uart.o(i.Van_Debug_UART_Rec_IDLE))
+<BR><BR>[Stack]<UL><LI>Max Depth = 76<LI>Call Chain = Van_Debug_UART_Rec_IDLE &rArr; HAL_UART_Receive_DMA &rArr; UART_Start_Receive_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[192]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;addinputtocmdbuf
+<LI><a href="#[159]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Receive_DMA
+</UL>
+<BR>[Called By]<UL><LI><a href="#[155]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Rec_IDLE
+</UL>
+
+<P><STRONG><a name="[193]"></a>Van_Debug_UART_Send_DMA</STRONG> (Thumb, 76 bytes, Stack size 16 bytes, van_bsp_debug_uart.o(i.Van_Debug_UART_Send_DMA))
+<BR><BR>[Stack]<UL><LI>Max Depth = 68<LI>Call Chain = Van_Debug_UART_Send_DMA &rArr; HAL_UART_Transmit_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[15b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Transmit_DMA
+<LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy4
+<LI><a href="#[194]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy
+</UL>
+<BR>[Called By]<UL><LI><a href="#[102]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Device_Printf
+</UL>
+
+<P><STRONG><a name="[15c]"></a>Van_Debug_UART_TxCpltCallback</STRONG> (Thumb, 60 bytes, Stack size 16 bytes, van_bsp_debug_uart.o(i.Van_Debug_UART_TxCpltCallback))
+<BR><BR>[Stack]<UL><LI>Max Depth = 68<LI>Call Chain = Van_Debug_UART_TxCpltCallback &rArr; HAL_UART_Transmit_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[15b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Transmit_DMA
+<LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy4
+</UL>
+<BR>[Called By]<UL><LI><a href="#[151]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_TxCpltCallback
+</UL>
+
+<P><STRONG><a name="[102]"></a>Van_Device_Printf</STRONG> (Thumb, 66 bytes, Stack size 536 bytes, van_bsp_debug_shell.o(i.Van_Device_Printf))
+<BR><BR>[Stack]<UL><LI>Max Depth = 656 + Unknown Stack Size
+<LI>Call Chain = Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[193]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART_Send_DMA
+<LI><a href="#[fd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+<LI><a href="#[103]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strlen
+<LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;vsprintf
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;svanner_receive_analysis
+<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+<LI><a href="#[1b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;debugcall
+<LI><a href="#[1b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;com_pwm_Set
+<LI><a href="#[1b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;com_pwm_FindChanle
+<LI><a href="#[b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;show_com_pwm
+<LI><a href="#[a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;com_pwm_test
+<LI><a href="#[18f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;decodedebugfunction
+<LI><a href="#[1bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;debugvarb
+<LI><a href="#[9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;debugtest1
+<LI><a href="#[196]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_recv_deal
+<LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
+<LI><a href="#[183]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorGetRawData
+</UL>
+
+<P><STRONG><a name="[195]"></a>WIFI_process</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, esp32_wroom_32d.o(i.WIFI_process))
+<BR><BR>[Stack]<UL><LI>Max Depth = 1032 + Unknown Stack Size
+<LI>Call Chain = WIFI_process &rArr; WIFI_send_deal &rArr; ESP32_Link_Server &rArr; ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[197]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_send_deal
+<LI><a href="#[196]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_recv_deal
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[196]"></a>WIFI_recv_deal</STRONG> (Thumb, 648 bytes, Stack size 80 bytes, esp32_wroom_32d.o(i.WIFI_recv_deal))
+<BR><BR>[Stack]<UL><LI>Max Depth = 848 + Unknown Stack Size
+<LI>Call Chain = WIFI_recv_deal &rArr; ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[102]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Device_Printf
+<LI><a href="#[19b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;wifi_receive_clear
+<LI><a href="#[f6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;my_sprintf
+<LI><a href="#[198]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;find_str
+<LI><a href="#[104]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WriteComm2
+<LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
+<LI><a href="#[fd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+<LI><a href="#[199]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
+<LI><a href="#[194]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy
+<LI><a href="#[103]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strlen
+<LI><a href="#[19a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strchr
+<LI><a href="#[ac]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;atoi
+</UL>
+<BR>[Called By]<UL><LI><a href="#[195]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_process
+</UL>
+
+<P><STRONG><a name="[197]"></a>WIFI_send_deal</STRONG> (Thumb, 398 bytes, Stack size 64 bytes, esp32_wroom_32d.o(i.WIFI_send_deal))
+<BR><BR>[Stack]<UL><LI>Max Depth = 1024 + Unknown Stack Size
+<LI>Call Chain = WIFI_send_deal &rArr; ESP32_Link_Server &rArr; ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[f6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;my_sprintf
+<LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
+<LI><a href="#[ff]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_STOPTCP
+<LI><a href="#[fe]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Net_Mode_Choose
+<LI><a href="#[fc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Link_Server
+<LI><a href="#[fb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_JoinAP
+<LI><a href="#[fa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_GetIp
+<LI><a href="#[f9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Enable_MultipleId
+<LI><a href="#[f8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_EchoOff
+<LI><a href="#[f7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_DisAutoLink
+<LI><a href="#[f5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_CWLAP
+<LI><a href="#[f4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_AT_RST
+<LI><a href="#[f2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_AT
+<LI><a href="#[fd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+<LI><a href="#[199]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
+</UL>
+<BR>[Called By]<UL><LI><a href="#[195]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_process
+</UL>
+
+<P><STRONG><a name="[104]"></a>WriteComm2</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, esp32_wroom_32d.o(i.WriteComm2))
+<BR><BR>[Stack]<UL><LI>Max Depth = 60<LI>Call Chain = WriteComm2 &rArr; HAL_UART_Transmit_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[15b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Transmit_DMA
+</UL>
+<BR>[Called By]<UL><LI><a href="#[196]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_recv_deal
+<LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Send_AT_Cmd
+</UL>
+
+<P><STRONG><a name="[c2]"></a>__ARM_fpclassify</STRONG> (Thumb, 40 bytes, Stack size 0 bytes, fpclassify.o(i.__ARM_fpclassify))
+<BR><BR>[Called By]<UL><LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_dec_real
+<LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_hex_real
+</UL>
+
+<P><STRONG><a name="[19c]"></a>__mathlib_dbl_overflow</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, dunder.o(i.__mathlib_dbl_overflow))
+<BR><BR>[Calls]<UL><LI><a href="#[19d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_scalbn
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ldexp
+</UL>
+
+<P><STRONG><a name="[19e]"></a>__mathlib_dbl_underflow</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, dunder.o(i.__mathlib_dbl_underflow))
+<BR><BR>[Calls]<UL><LI><a href="#[19d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_scalbn
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ldexp
+</UL>
+
+<P><STRONG><a name="[cd]"></a>__mathlib_narrow</STRONG> (Thumb, 16 bytes, Stack size 8 bytes, narrow.o(i.__mathlib_narrow))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = __mathlib_narrow &rArr; __mathlib_tofloat &rArr; __aeabi_cdcmpeq
+</UL>
+<BR>[Calls]<UL><LI><a href="#[19f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__mathlib_tofloat
+</UL>
+<BR>[Called By]<UL><LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_really_real
+<LI><a href="#[da]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_really_hex_real
+</UL>
+
+<P><STRONG><a name="[19f]"></a>__mathlib_tofloat</STRONG> (Thumb, 184 bytes, Stack size 24 bytes, narrow.o(i.__mathlib_tofloat))
+<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = __mathlib_tofloat &rArr; __aeabi_cdcmpeq
+</UL>
+<BR>[Calls]<UL><LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__set_errno
+<LI><a href="#[1a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_cdrcmple
+<LI><a href="#[1a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_cdcmpeq
+<LI><a href="#[1a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_d2f
+<LI><a href="#[1a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;frexp
+</UL>
+<BR>[Called By]<UL><LI><a href="#[cd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__mathlib_narrow
+</UL>
+
+<P><STRONG><a name="[dc]"></a>__support_ldexp</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, ldexp.o(i.__support_ldexp))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = __support_ldexp &rArr; ldexp &rArr; __aeabi_cdcmpeq
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ldexp
+</UL>
+<BR>[Called By]<UL><LI><a href="#[da]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_really_hex_real
+</UL>
+
+<P><STRONG><a name="[aa]"></a>_is_digit</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, __printf_wp.o(i._is_digit))
+<BR><BR>[Called By]<UL><LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_really_real
+<LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__printf
+</UL>
+
+<P><STRONG><a name="[192]"></a>addinputtocmdbuf</STRONG> (Thumb, 46 bytes, Stack size 20 bytes, van_bsp_debug_shell.o(i.addinputtocmdbuf))
+<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = addinputtocmdbuf
+</UL>
+<BR>[Called By]<UL><LI><a href="#[156]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART_Rec_IDLE
+</UL>
+
+<P><STRONG><a name="[1a5]"></a>cJSON_Delete</STRONG> (Thumb, 66 bytes, Stack size 16 bytes, cjson.o(i.cJSON_Delete))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16 + In Cycle
+<LI>Call Chain = cJSON_Delete &rArr;  cJSON_Delete (Cycle)
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_Delete
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_Delete
+<LI><a href="#[1d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_qrcode_info
+<LI><a href="#[1b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_ParseWithLengthOpts
+<LI><a href="#[1d4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_object
+<LI><a href="#[1d1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_array
+</UL>
+
+<P><STRONG><a name="[1a6]"></a>cJSON_GetArrayItem</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, cjson.o(i.cJSON_GetArrayItem))
+<BR><BR>[Calls]<UL><LI><a href="#[1a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;get_array_item
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_qrcode_info
+</UL>
+
+<P><STRONG><a name="[1d7]"></a>cJSON_GetArraySize</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, cjson.o(i.cJSON_GetArraySize))
+<BR><BR>[Called By]<UL><LI><a href="#[1d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_qrcode_info
+</UL>
+
+<P><STRONG><a name="[1a8]"></a>cJSON_GetObjectItem</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, cjson.o(i.cJSON_GetObjectItem))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = cJSON_GetObjectItem &rArr; get_object_item &rArr; tolower &rArr; __rt_ctype_table
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;get_object_item
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_qrcode_info
+</UL>
+
+<P><STRONG><a name="[1aa]"></a>cJSON_GetObjectItemCaseSensitive</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, cjson.o(i.cJSON_GetObjectItemCaseSensitive))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = cJSON_GetObjectItemCaseSensitive &rArr; get_object_item &rArr; tolower &rArr; __rt_ctype_table
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;get_object_item
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_qrcode_info
+</UL>
+
+<P><STRONG><a name="[1ab]"></a>cJSON_GetStringValue</STRONG> (Thumb, 16 bytes, Stack size 4 bytes, cjson.o(i.cJSON_GetStringValue))
+<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = cJSON_GetStringValue
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1ac]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_IsString
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_qrcode_info
+</UL>
+
+<P><STRONG><a name="[1ac]"></a>cJSON_IsString</STRONG> (Thumb, 18 bytes, Stack size 0 bytes, cjson.o(i.cJSON_IsString))
+<BR><BR>[Called By]<UL><LI><a href="#[1ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_GetStringValue
+</UL>
+
+<P><STRONG><a name="[1ae]"></a>cJSON_Parse</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, cjson.o(i.cJSON_Parse))
+<BR><BR>[Stack]<UL><LI>Max Depth = 644<LI>Call Chain = cJSON_Parse &rArr; cJSON_ParseWithOpts &rArr; cJSON_ParseWithLengthOpts &rArr; parse_value &rArr; parse_number &rArr; strtod &rArr; __strtod_int &rArr; _local_sscanf &rArr; _scanf_real &rArr; _scanf_really_real &rArr; _fp_value &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_ParseWithOpts
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_qrcode_info
+</UL>
+
+<P><STRONG><a name="[1b0]"></a>cJSON_ParseWithLengthOpts</STRONG> (Thumb, 210 bytes, Stack size 64 bytes, cjson.o(i.cJSON_ParseWithLengthOpts))
+<BR><BR>[Stack]<UL><LI>Max Depth = 628<LI>Call Chain = cJSON_ParseWithLengthOpts &rArr; parse_value &rArr; parse_number &rArr; strtod &rArr; __strtod_int &rArr; _local_sscanf &rArr; _scanf_real &rArr; _scanf_really_real &rArr; _fp_value &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_Delete
+<LI><a href="#[1b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_value
+<LI><a href="#[1ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_New_Item
+<LI><a href="#[1b2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;buffer_skip_whitespace
+<LI><a href="#[fd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+<LI><a href="#[1b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strncmp
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_ParseWithOpts
+</UL>
+
+<P><STRONG><a name="[1af]"></a>cJSON_ParseWithOpts</STRONG> (Thumb, 34 bytes, Stack size 16 bytes, cjson.o(i.cJSON_ParseWithOpts))
+<BR><BR>[Stack]<UL><LI>Max Depth = 644<LI>Call Chain = cJSON_ParseWithOpts &rArr; cJSON_ParseWithLengthOpts &rArr; parse_value &rArr; parse_number &rArr; strtod &rArr; __strtod_int &rArr; _local_sscanf &rArr; _scanf_real &rArr; _scanf_really_real &rArr; _fp_value &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_ParseWithLengthOpts
+<LI><a href="#[103]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strlen
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_Parse
+</UL>
+
+<P><STRONG><a name="[172]"></a>check_keyShortValid</STRONG> (Thumb, 58 bytes, Stack size 8 bytes, usr_motor.o(i.check_keyShortValid))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = check_keyShortValid
+</UL>
+<BR>[Called By]<UL><LI><a href="#[146]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Motor_mix_work
+</UL>
+
+<P><STRONG><a name="[1be]"></a>cmppare_hear</STRONG> (Thumb, 40 bytes, Stack size 0 bytes, van_bsp_debug_shell.o(i.cmppare_hear))
+<BR><BR>[Called By]<UL><LI><a href="#[190]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;decodedebugvariable
+<LI><a href="#[18f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;decodedebugfunction
+</UL>
+
+<P><STRONG><a name="[1b4]"></a>com_pwm_FindChanle</STRONG> (Thumb, 72 bytes, Stack size 16 bytes, van_bsp_com_pwm.o(i.com_pwm_FindChanle))
+<BR><BR>[Stack]<UL><LI>Max Depth = 672 + Unknown Stack Size
+<LI>Call Chain = com_pwm_FindChanle &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[102]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Device_Printf
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;com_pwm_Set
+<LI><a href="#[a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;com_pwm_test
+</UL>
+
+<P><STRONG><a name="[1b5]"></a>com_pwm_Set</STRONG> (Thumb, 176 bytes, Stack size 24 bytes, van_bsp_com_pwm.o(i.com_pwm_Set))
+<BR><BR>[Stack]<UL><LI>Max Depth = 696 + Unknown Stack Size
+<LI>Call Chain = com_pwm_Set &rArr; com_pwm_FindChanle &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[166]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
+<LI><a href="#[102]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Device_Printf
+<LI><a href="#[1b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;com_pwm_FindChanle
+<LI><a href="#[1b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_f2iz
+</UL>
+<BR>[Called By]<UL><LI><a href="#[a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;com_pwm_test
+</UL>
+
+<P><STRONG><a name="[a]"></a>com_pwm_test</STRONG> (Thumb, 70 bytes, Stack size 24 bytes, van_bsp_com_pwm.o(i.com_pwm_test))
+<BR><BR>[Stack]<UL><LI>Max Depth = 720 + Unknown Stack Size
+<LI>Call Chain = com_pwm_test &rArr; com_pwm_Set &rArr; com_pwm_FindChanle &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[102]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Device_Printf
+<LI><a href="#[1b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;com_pwm_Set
+<LI><a href="#[1b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;com_pwm_FindChanle
+<LI><a href="#[1b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_i2f
+<LI><a href="#[1b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_f2d
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> van_bsp_debug_shell.o(.data)
+</UL>
+<P><STRONG><a name="[1c7]"></a>con_sysinf_debugUart</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, onechip_load_inf.o(i.con_sysinf_debugUart))
+<BR><BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[1b9]"></a>debugcall</STRONG> (Thumb, 238 bytes, Stack size 160 bytes, van_bsp_debug_shell.o(i.debugcall))
+<BR><BR>[Stack]<UL><LI>Max Depth = 816 + Unknown Stack Size
+<LI>Call Chain = debugcall &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[102]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Device_Printf
+<LI><a href="#[1ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;INTAsiicTorHexInt
+<LI><a href="#[1bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;AsiicTorHexInt
+<LI><a href="#[1bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;funnamecmp
+<LI><a href="#[fd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+</UL>
+<BR>[Called By]<UL><LI><a href="#[18f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;decodedebugfunction
+</UL>
+
+<P><STRONG><a name="[9]"></a>debugtest1</STRONG> (Thumb, 20 bytes, Stack size 8 bytes, van_bsp_debug_shell.o(i.debugtest1))
+<BR><BR>[Stack]<UL><LI>Max Depth = 664 + Unknown Stack Size
+<LI>Call Chain = debugtest1 &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[102]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Device_Printf
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> van_bsp_debug_shell.o(.data)
+</UL>
+<P><STRONG><a name="[1bd]"></a>debugvarb</STRONG> (Thumb, 220 bytes, Stack size 120 bytes, van_bsp_debug_shell.o(i.debugvarb))
+<BR><BR>[Stack]<UL><LI>Max Depth = 776 + Unknown Stack Size
+<LI>Call Chain = debugvarb &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[102]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Device_Printf
+<LI><a href="#[1ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;INTAsiicTorHexInt
+<LI><a href="#[1bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;AsiicTorHexInt
+<LI><a href="#[1bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;funnamecmp
+<LI><a href="#[fd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+</UL>
+<BR>[Called By]<UL><LI><a href="#[190]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;decodedebugvariable
+</UL>
+
+<P><STRONG><a name="[18f]"></a>decodedebugfunction</STRONG> (Thumb, 356 bytes, Stack size 96 bytes, van_bsp_debug_shell.o(i.decodedebugfunction))
+<BR><BR>[Stack]<UL><LI>Max Depth = 912 + Unknown Stack Size
+<LI>Call Chain = decodedebugfunction &rArr; debugcall &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[102]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Device_Printf
+<LI><a href="#[1b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;debugcall
+<LI><a href="#[1be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cmppare_hear
+<LI><a href="#[fd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+</UL>
+<BR>[Called By]<UL><LI><a href="#[18e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART1_test
+</UL>
+
+<P><STRONG><a name="[190]"></a>decodedebugvariable</STRONG> (Thumb, 328 bytes, Stack size 96 bytes, van_bsp_debug_shell.o(i.decodedebugvariable))
+<BR><BR>[Stack]<UL><LI>Max Depth = 872 + Unknown Stack Size
+<LI>Call Chain = decodedebugvariable &rArr; debugvarb &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cmppare_hear
+<LI><a href="#[1bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;debugvarb
+</UL>
+<BR>[Called By]<UL><LI><a href="#[18e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART1_test
+</UL>
+
+<P><STRONG><a name="[1bf]"></a>dev_load_allinf</STRONG> (Thumb, 40 bytes, Stack size 8 bytes, onechip_load_inf.o(i.dev_load_allinf))
+<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = dev_load_allinf &rArr; dev_load_description &rArr; strcpy
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dev_load_description
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[1c0]"></a>dev_load_description</STRONG> (Thumb, 44 bytes, Stack size 8 bytes, onechip_load_inf.o(i.dev_load_description))
+<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = dev_load_description &rArr; strcpy
+</UL>
+<BR>[Calls]<UL><LI><a href="#[100]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strcpy
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dev_load_allinf
+</UL>
+
+<P><STRONG><a name="[158]"></a>esp_receive_Rec_IDLE</STRONG> (Thumb, 56 bytes, Stack size 16 bytes, van_bsp_espuart.o(i.esp_receive_Rec_IDLE))
+<BR><BR>[Stack]<UL><LI>Max Depth = 76<LI>Call Chain = esp_receive_Rec_IDLE &rArr; HAL_UART_Receive_DMA &rArr; UART_Start_Receive_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[159]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Receive_DMA
+<LI><a href="#[148]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_DMAStop
+</UL>
+<BR>[Called By]<UL><LI><a href="#[155]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Rec_IDLE
+</UL>
+
+<P><STRONG><a name="[1c1]"></a>esp_receive_Rec_Start</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, van_bsp_espuart.o(i.esp_receive_Rec_Start))
+<BR><BR>[Stack]<UL><LI>Max Depth = 76<LI>Call Chain = esp_receive_Rec_Start &rArr; HAL_UART_Receive_DMA &rArr; UART_Start_Receive_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[159]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Receive_DMA
+<LI><a href="#[199]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[1d9]"></a>find_stm32_Peripherals</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, van_bsp_debug_shell.o(i.find_stm32_Peripherals))
+<BR><BR>[Called By]<UL><LI><a href="#[b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;show_com_pwm
+</UL>
+
+<P><STRONG><a name="[198]"></a>find_str</STRONG> (Thumb, 66 bytes, Stack size 24 bytes, esp32_wroom_32d.o(i.find_str))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = find_str &rArr; strlen
+</UL>
+<BR>[Calls]<UL><LI><a href="#[103]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strlen
+<LI><a href="#[1c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;memcmp
+</UL>
+<BR>[Called By]<UL><LI><a href="#[196]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_recv_deal
+</UL>
+
+<P><STRONG><a name="[1a0]"></a>frexp</STRONG> (Thumb, 80 bytes, Stack size 8 bytes, frexp.o(i.frexp))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = frexp
+</UL>
+<BR>[Calls]<UL><LI><a href="#[19d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_scalbn
+</UL>
+<BR>[Called By]<UL><LI><a href="#[19f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__mathlib_tofloat
+</UL>
+
+<P><STRONG><a name="[1bc]"></a>funnamecmp</STRONG> (Thumb, 34 bytes, Stack size 0 bytes, van_bsp_debug_shell.o(i.funnamecmp))
+<BR><BR>[Called By]<UL><LI><a href="#[1b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;debugcall
+<LI><a href="#[1bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;debugvarb
+</UL>
+
+<P><STRONG><a name="[1a4]"></a>ldexp</STRONG> (Thumb, 116 bytes, Stack size 24 bytes, ldexp.o(i.ldexp))
+<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = ldexp &rArr; __aeabi_cdcmpeq
+</UL>
+<BR>[Calls]<UL><LI><a href="#[19e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__mathlib_dbl_underflow
+<LI><a href="#[19c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__mathlib_dbl_overflow
+<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__set_errno
+<LI><a href="#[19d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_scalbn
+<LI><a href="#[1a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_cdcmpeq
+</UL>
+<BR>[Called By]<UL><LI><a href="#[dc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__support_ldexp
+</UL>
+
+<P><STRONG><a name="[147]"></a>light_ctrl</STRONG> (Thumb, 208 bytes, Stack size 32 bytes, ws2812.o(i.light_ctrl))
+<BR><BR>[Stack]<UL><LI>Max Depth = 60<LI>Call Chain = light_ctrl &rArr; light_refresh &rArr; ws2812_set_rgb
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;light_refresh
+</UL>
+<BR>[Called By]<UL><LI><a href="#[135]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PeriodElapsedCallback
+</UL>
+
+<P><STRONG><a name="[1c4]"></a>light_refresh</STRONG> (Thumb, 36 bytes, Stack size 16 bytes, ws2812.o(i.light_refresh))
+<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = light_refresh &rArr; ws2812_set_rgb
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ws2812_set_rgb
+</UL>
+<BR>[Called By]<UL><LI><a href="#[147]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;light_ctrl
+<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[1c6]"></a>light_set</STRONG> (Thumb, 58 bytes, Stack size 16 bytes, ws2812.o(i.light_set))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = light_set
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[1c9]"></a>load_com_pwm_Cfg</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, van_bsp_com_pwm.o(i.load_com_pwm_Cfg))
+<BR><BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[98]"></a>main</STRONG> (Thumb, 360 bytes, Stack size 16 bytes, main.o(i.main))
+<BR><BR>[Stack]<UL><LI>Max Depth = 1048 + Unknown Stack Size
+<LI>Call Chain = main &rArr; WIFI_process &rArr; WIFI_send_deal &rArr; ESP32_Link_Server &rArr; ESP32_Send_AT_Cmd &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;svanner_receive_analysis
+<LI><a href="#[1ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;svanner_receive_Rec_Start
+<LI><a href="#[1c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;load_com_pwm_Cfg
+<LI><a href="#[1c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;light_set
+<LI><a href="#[1c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;light_refresh
+<LI><a href="#[1c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;esp_receive_Rec_Start
+<LI><a href="#[1bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dev_load_allinf
+<LI><a href="#[1c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;con_sysinf_debugUart
+<LI><a href="#[195]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_process
+<LI><a href="#[102]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Device_Printf
+<LI><a href="#[191]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART_Init
+<LI><a href="#[18e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Debug_UART1_test
+<LI><a href="#[187]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorSelfCheck
+<LI><a href="#[1cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SensorInitial
+<LI><a href="#[171]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART2_UART_Init
+<LI><a href="#[170]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
+<LI><a href="#[16f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_UART4_Init
+<LI><a href="#[16e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM4_Init
+<LI><a href="#[16d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM3_Init
+<LI><a href="#[16c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
+<LI><a href="#[169]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM1_Init
+<LI><a href="#[168]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_I2C2_Init
+<LI><a href="#[167]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_I2C1_Init
+<LI><a href="#[165]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
+<LI><a href="#[164]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_DMA_Init
+<LI><a href="#[162]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_ADC1_Init
+<LI><a href="#[1c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Start_IT
+<LI><a href="#[11b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
+<LI><a href="#[1cd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_TogglePin
+<LI><a href="#[ec]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_Inner_start
+<LI><a href="#[189]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
+</UL>
+<BR>[Called By]<UL><LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_entry_main
+</UL>
+
+<P><STRONG><a name="[f6]"></a>my_sprintf</STRONG> (Thumb, 768 bytes, Stack size 64 bytes, esp32_wroom_32d.o(i.my_sprintf))
+<BR><BR>[Stack]<UL><LI>Max Depth = 96<LI>Call Chain = my_sprintf &rArr; __aeabi_dmul
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1ce]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m_pow_n
+<LI><a href="#[17a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_dmul
+<LI><a href="#[178]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_ui2d
+<LI><a href="#[17b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_d2uiz
+<LI><a href="#[1d0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_d2iz
+<LI><a href="#[1cf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_drsub
+<LI><a href="#[103]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strlen
+</UL>
+<BR>[Called By]<UL><LI><a href="#[197]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_send_deal
+<LI><a href="#[196]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_recv_deal
+<LI><a href="#[ff]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_STOPTCP
+<LI><a href="#[fc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Link_Server
+<LI><a href="#[fb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_JoinAP
+<LI><a href="#[f9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_Enable_MultipleId
+<LI><a href="#[f5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ESP32_CWLAP
+</UL>
+
+<P><STRONG><a name="[1d6]"></a>parse_qrcode_info</STRONG> (Thumb, 324 bytes, Stack size 48 bytes, van_bsp_scanner.o(i.parse_qrcode_info))
+<BR><BR>[Stack]<UL><LI>Max Depth = 692<LI>Call Chain = parse_qrcode_info &rArr; cJSON_Parse &rArr; cJSON_ParseWithOpts &rArr; cJSON_ParseWithLengthOpts &rArr; parse_value &rArr; parse_number &rArr; strtod &rArr; __strtod_int &rArr; _local_sscanf &rArr; _scanf_real &rArr; _scanf_really_real &rArr; _fp_value &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_Parse
+<LI><a href="#[1ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_GetStringValue
+<LI><a href="#[1aa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_GetObjectItemCaseSensitive
+<LI><a href="#[1a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_GetObjectItem
+<LI><a href="#[1d7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_GetArraySize
+<LI><a href="#[1a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_GetArrayItem
+<LI><a href="#[1a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_Delete
+<LI><a href="#[17a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_dmul
+<LI><a href="#[178]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_ui2d
+<LI><a href="#[17b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_d2uiz
+<LI><a href="#[1cf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_drsub
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;svanner_receive_analysis
+</UL>
+
+<P><STRONG><a name="[b]"></a>show_com_pwm</STRONG> (Thumb, 228 bytes, Stack size 112 bytes, van_bsp_com_pwm.o(i.show_com_pwm))
+<BR><BR>[Stack]<UL><LI>Max Depth = 768 + Unknown Stack Size
+<LI>Call Chain = show_com_pwm &rArr; Van_Device_Printf &rArr; vsprintf &rArr; _printf_char_common &rArr; __printf
+</UL>
+<BR>[Calls]<UL><LI><a href="#[ee]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
+<LI><a href="#[102]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Device_Printf
+<LI><a href="#[1d9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;find_stm32_Peripherals
+<LI><a href="#[1b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_f2d
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> van_bsp_debug_shell.o(.data)
+</UL>
+<P><STRONG><a name="[1d3]"></a>strtod</STRONG> (Thumb, 28 bytes, Stack size 16 bytes, strtod.o(i.strtod))
+<BR><BR>[Stack]<UL><LI>Max Depth = 452<LI>Call Chain = strtod &rArr; __strtod_int &rArr; _local_sscanf &rArr; _scanf_real &rArr; _scanf_really_real &rArr; _fp_value &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
+</UL>
+<BR>[Calls]<UL><LI><a href="#[d0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__strtod_int
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_number
+</UL>
+
+<P><STRONG><a name="[157]"></a>svanner_receive_Rec_IDLE</STRONG> (Thumb, 58 bytes, Stack size 16 bytes, van_bsp_scanner.o(i.svanner_receive_Rec_IDLE))
+<BR><BR>[Stack]<UL><LI>Max Depth = 76<LI>Call Chain = svanner_receive_Rec_IDLE &rArr; HAL_UART_Receive_DMA &rArr; UART_Start_Receive_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[159]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Receive_DMA
+<LI><a href="#[148]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_DMAStop
+</UL>
+<BR>[Called By]<UL><LI><a href="#[155]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Rec_IDLE
+</UL>
+
+<P><STRONG><a name="[1ca]"></a>svanner_receive_Rec_Start</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, van_bsp_scanner.o(i.svanner_receive_Rec_Start))
+<BR><BR>[Stack]<UL><LI>Max Depth = 76<LI>Call Chain = svanner_receive_Rec_Start &rArr; HAL_UART_Receive_DMA &rArr; UART_Start_Receive_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[159]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Receive_DMA
+<LI><a href="#[199]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[1cc]"></a>svanner_receive_analysis</STRONG> (Thumb, 86 bytes, Stack size 16 bytes, van_bsp_scanner.o(i.svanner_receive_analysis))
+<BR><BR>[Stack]<UL><LI>Max Depth = 708 + Unknown Stack Size
+<LI>Call Chain = svanner_receive_analysis &rArr; parse_qrcode_info &rArr; cJSON_Parse &rArr; cJSON_ParseWithOpts &rArr; cJSON_ParseWithLengthOpts &rArr; parse_value &rArr; parse_number &rArr; strtod &rArr; __strtod_int &rArr; _local_sscanf &rArr; _scanf_real &rArr; _scanf_really_real &rArr; _fp_value &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
+</UL>
+<BR>[Calls]<UL><LI><a href="#[102]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Van_Device_Printf
+<LI><a href="#[1d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_qrcode_info
+<LI><a href="#[199]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
+</UL>
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
+</UL>
+
+<P><STRONG><a name="[19b]"></a>wifi_receive_clear</STRONG> (Thumb, 20 bytes, Stack size 8 bytes, van_bsp_espuart.o(i.wifi_receive_clear))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = wifi_receive_clear
+</UL>
+<BR>[Calls]<UL><LI><a href="#[199]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
+</UL>
+<BR>[Called By]<UL><LI><a href="#[196]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WIFI_recv_deal
+</UL>
+
+<P><STRONG><a name="[1c5]"></a>ws2812_set_rgb</STRONG> (Thumb, 70 bytes, Stack size 12 bytes, ws2812.o(i.ws2812_set_rgb))
+<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = ws2812_set_rgb
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;light_refresh
+</UL>
+
+<P><STRONG><a name="[58]"></a>_get_lc_ctype</STRONG> (Thumb, 44 bytes, Stack size 8 bytes, lc_ctype_c.o(locale$$code))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = _get_lc_ctype
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strcmp
+</UL>
+<BR>[Called By]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_lib_init_lc_ctype_2
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> rt_ctype_table.o(.text)
+</UL>
+<P><STRONG><a name="[92]"></a>_get_lc_numeric</STRONG> (Thumb, 44 bytes, Stack size 8 bytes, lc_numeric_c.o(locale$$code))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = _get_lc_numeric
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strcmp
+</UL>
+<BR>[Called By]<UL><LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__rt_lib_init_lc_numeric_2
+</UL>
+
+<P><STRONG><a name="[1a2]"></a>__aeabi_d2f</STRONG> (Thumb, 0 bytes, Stack size 32 bytes, d2f.o(x$fpl$d2f))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = __aeabi_d2f
+</UL>
+<BR>[Called By]<UL><LI><a href="#[19f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__mathlib_tofloat
+</UL>
+
+<P><STRONG><a name="[1db]"></a>_d2f</STRONG> (Thumb, 98 bytes, Stack size 32 bytes, d2f.o(x$fpl$d2f), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[1dc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_fretinf
+<LI><a href="#[1dd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dnaninf
+</UL>
+
+<P><STRONG><a name="[230]"></a>__aeabi_dadd</STRONG> (Thumb, 0 bytes, Stack size 16 bytes, daddsub_clz.o(x$fpl$dadd), UNUSED)
+
+<P><STRONG><a name="[1de]"></a>_dadd</STRONG> (Thumb, 332 bytes, Stack size 16 bytes, daddsub_clz.o(x$fpl$dadd), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[1e0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dretinf
+<LI><a href="#[1dd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dnaninf
+<LI><a href="#[1df]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_dsub1
+</UL>
+
+<P><STRONG><a name="[1e1]"></a>__fpl_dcheck_NaN1</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, dcheck1.o(x$fpl$dcheck1))
+<BR><BR>[Calls]<UL><LI><a href="#[1e2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_return_NaN
+</UL>
+<BR>[Called By]<UL><LI><a href="#[19d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_scalbn
+</UL>
+
+<P><STRONG><a name="[1e5]"></a>__fpl_dcmp_Inf</STRONG> (Thumb, 24 bytes, Stack size 0 bytes, dcmpi.o(x$fpl$dcmpinf), UNUSED)
+<BR><BR>[Called By]<UL><LI><a href="#[1e8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_dcmple
+<LI><a href="#[1e4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_dcmpeq
+</UL>
+
+<P><STRONG><a name="[179]"></a>__aeabi_ddiv</STRONG> (Thumb, 0 bytes, Stack size 32 bytes, ddiv.o(x$fpl$ddiv))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = __aeabi_ddiv
+</UL>
+<BR>[Called By]<UL><LI><a href="#[146]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Motor_mix_work
+</UL>
+
+<P><STRONG><a name="[1e3]"></a>_ddiv</STRONG> (Thumb, 552 bytes, Stack size 32 bytes, ddiv.o(x$fpl$ddiv), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[1e0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dretinf
+<LI><a href="#[1dd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dnaninf
+</UL>
+
+<P><STRONG><a name="[1a1]"></a>__aeabi_cdcmpeq</STRONG> (Thumb, 0 bytes, Stack size 32 bytes, deqf.o(x$fpl$deqf))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = __aeabi_cdcmpeq
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ldexp
+<LI><a href="#[19f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__mathlib_tofloat
+</UL>
+
+<P><STRONG><a name="[1e4]"></a>_dcmpeq</STRONG> (Thumb, 120 bytes, Stack size 32 bytes, deqf.o(x$fpl$deqf), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[1dd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dnaninf
+<LI><a href="#[1e5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dcmp_Inf
+</UL>
+
+<P><STRONG><a name="[1d0]"></a>__aeabi_d2iz</STRONG> (Thumb, 0 bytes, Stack size 32 bytes, dfix.o(x$fpl$dfix))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = __aeabi_d2iz
+</UL>
+<BR>[Called By]<UL><LI><a href="#[f6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;my_sprintf
+<LI><a href="#[1d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_number
+</UL>
+
+<P><STRONG><a name="[1e6]"></a>_dfix</STRONG> (Thumb, 94 bytes, Stack size 32 bytes, dfix.o(x$fpl$dfix), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[1dd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dnaninf
+</UL>
+
+<P><STRONG><a name="[17b]"></a>__aeabi_d2uiz</STRONG> (Thumb, 0 bytes, Stack size 32 bytes, dfixu.o(x$fpl$dfixu))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = __aeabi_d2uiz
+</UL>
+<BR>[Called By]<UL><LI><a href="#[146]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Motor_mix_work
+<LI><a href="#[1d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_qrcode_info
+<LI><a href="#[10e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;OPTO_IRQHandler
+<LI><a href="#[f6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;my_sprintf
+</UL>
+
+<P><STRONG><a name="[1e7]"></a>_dfixu</STRONG> (Thumb, 90 bytes, Stack size 32 bytes, dfixu.o(x$fpl$dfixu), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[1dd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dnaninf
+</UL>
+
+<P><STRONG><a name="[178]"></a>__aeabi_ui2d</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, dflt_clz.o(x$fpl$dfltu))
+<BR><BR>[Called By]<UL><LI><a href="#[146]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Motor_mix_work
+<LI><a href="#[1d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_qrcode_info
+<LI><a href="#[10e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;OPTO_IRQHandler
+<LI><a href="#[f6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;my_sprintf
+</UL>
+
+<P><STRONG><a name="[231]"></a>_dfltu</STRONG> (Thumb, 38 bytes, Stack size 0 bytes, dflt_clz.o(x$fpl$dfltu), UNUSED)
+
+<P><STRONG><a name="[17e]"></a>__aeabi_cdcmple</STRONG> (Thumb, 0 bytes, Stack size 32 bytes, dleqf.o(x$fpl$dleqf))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = __aeabi_cdcmple
+</UL>
+<BR>[Called By]<UL><LI><a href="#[10e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;OPTO_IRQHandler
+<LI><a href="#[1d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_number
+</UL>
+
+<P><STRONG><a name="[1e8]"></a>_dcmple</STRONG> (Thumb, 120 bytes, Stack size 32 bytes, dleqf.o(x$fpl$dleqf), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[1dd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dnaninf
+<LI><a href="#[1e5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dcmp_Inf
+</UL>
+
+<P><STRONG><a name="[1eb]"></a>__fpl_dcmple_InfNaN</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, dleqf.o(x$fpl$dleqf), UNUSED)
+<BR><BR>[Called By]<UL><LI><a href="#[1ea]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_drcmple
+</UL>
+
+<P><STRONG><a name="[17a]"></a>__aeabi_dmul</STRONG> (Thumb, 0 bytes, Stack size 32 bytes, dmul.o(x$fpl$dmul))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = __aeabi_dmul
+</UL>
+<BR>[Called By]<UL><LI><a href="#[146]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Motor_mix_work
+<LI><a href="#[1d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_qrcode_info
+<LI><a href="#[10e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;OPTO_IRQHandler
+<LI><a href="#[f6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;my_sprintf
+</UL>
+
+<P><STRONG><a name="[1e9]"></a>_dmul</STRONG> (Thumb, 332 bytes, Stack size 32 bytes, dmul.o(x$fpl$dmul), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[1e0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dretinf
+<LI><a href="#[1dd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dnaninf
+</UL>
+
+<P><STRONG><a name="[1dd]"></a>__fpl_dnaninf</STRONG> (Thumb, 156 bytes, Stack size 16 bytes, dnaninf.o(x$fpl$dnaninf), UNUSED)
+<BR><BR>[Called By]<UL><LI><a href="#[1e9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_dmul
+<LI><a href="#[1e8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_dcmple
+<LI><a href="#[1e7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_dfixu
+<LI><a href="#[1e6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_dfix
+<LI><a href="#[1e4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_dcmpeq
+<LI><a href="#[1e3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_ddiv
+<LI><a href="#[1ee]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_dsub
+<LI><a href="#[1de]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_dadd
+<LI><a href="#[1db]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_d2f
+</UL>
+
+<P><STRONG><a name="[1e0]"></a>__fpl_dretinf</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, dretinf.o(x$fpl$dretinf), UNUSED)
+<BR><BR>[Called By]<UL><LI><a href="#[1ef]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_f2d
+<LI><a href="#[1e9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_dmul
+<LI><a href="#[1e3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_ddiv
+<LI><a href="#[1de]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_dadd
+</UL>
+
+<P><STRONG><a name="[1a3]"></a>__aeabi_cdrcmple</STRONG> (Thumb, 0 bytes, Stack size 16 bytes, drleqf.o(x$fpl$drleqf))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = __aeabi_cdrcmple
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_number
+<LI><a href="#[19f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__mathlib_tofloat
+</UL>
+
+<P><STRONG><a name="[1ea]"></a>_drcmple</STRONG> (Thumb, 108 bytes, Stack size 16 bytes, drleqf.o(x$fpl$drleqf), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[1eb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dcmple_InfNaN
+</UL>
+
+<P><STRONG><a name="[1cf]"></a>__aeabi_drsub</STRONG> (Thumb, 0 bytes, Stack size 8 bytes, daddsub_clz.o(x$fpl$drsb))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = __aeabi_drsub
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_qrcode_info
+<LI><a href="#[f6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;my_sprintf
+</UL>
+
+<P><STRONG><a name="[1ec]"></a>_drsb</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, daddsub_clz.o(x$fpl$drsb), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[1df]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_dsub1
+<LI><a href="#[1ed]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_dadd1
+</UL>
+
+<P><STRONG><a name="[232]"></a>__aeabi_dsub</STRONG> (Thumb, 0 bytes, Stack size 32 bytes, daddsub_clz.o(x$fpl$dsub), UNUSED)
+
+<P><STRONG><a name="[1ee]"></a>_dsub</STRONG> (Thumb, 464 bytes, Stack size 32 bytes, daddsub_clz.o(x$fpl$dsub), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[1dd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dnaninf
+<LI><a href="#[1ed]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_dadd1
+</UL>
+
+<P><STRONG><a name="[1b8]"></a>__aeabi_f2d</STRONG> (Thumb, 0 bytes, Stack size 16 bytes, f2d.o(x$fpl$f2d))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = __aeabi_f2d
+</UL>
+<BR>[Called By]<UL><LI><a href="#[b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;show_com_pwm
+<LI><a href="#[a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;com_pwm_test
+</UL>
+
+<P><STRONG><a name="[1ef]"></a>_f2d</STRONG> (Thumb, 86 bytes, Stack size 16 bytes, f2d.o(x$fpl$f2d), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[1f0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_fnaninf
+<LI><a href="#[1e0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dretinf
+</UL>
+
+<P><STRONG><a name="[1b6]"></a>__aeabi_f2iz</STRONG> (Thumb, 0 bytes, Stack size 16 bytes, ffix.o(x$fpl$ffix))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = __aeabi_f2iz
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;com_pwm_Set
+</UL>
+
+<P><STRONG><a name="[1f1]"></a>_ffix</STRONG> (Thumb, 54 bytes, Stack size 16 bytes, ffix.o(x$fpl$ffix), UNUSED)
+<BR><BR>[Calls]<UL><LI><a href="#[1f0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_fnaninf
+</UL>
+
+<P><STRONG><a name="[1b7]"></a>__aeabi_i2f</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, fflt_clz.o(x$fpl$fflt))
+<BR><BR>[Called By]<UL><LI><a href="#[a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;com_pwm_test
+</UL>
+
+<P><STRONG><a name="[233]"></a>_fflt</STRONG> (Thumb, 48 bytes, Stack size 0 bytes, fflt_clz.o(x$fpl$fflt), UNUSED)
+
+<P><STRONG><a name="[1f0]"></a>__fpl_fnaninf</STRONG> (Thumb, 140 bytes, Stack size 8 bytes, fnaninf.o(x$fpl$fnaninf), UNUSED)
+<BR><BR>[Called By]<UL><LI><a href="#[1f1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_ffix
+<LI><a href="#[1ef]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_f2d
+</UL>
+
+<P><STRONG><a name="[1dc]"></a>__fpl_fretinf</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, fretinf.o(x$fpl$fretinf), UNUSED)
+<BR><BR>[Called By]<UL><LI><a href="#[1db]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_d2f
+</UL>
+
+<P><STRONG><a name="[3]"></a>__ieee_status</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, istatus.o(x$fpl$ieeestatus))
+<BR><BR>[Called By]<UL><LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_fp_value
+</UL>
+
+<P><STRONG><a name="[6f]"></a>_printf_fp_dec</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, printf1.o(x$fpl$printf1))
+<BR><BR>[Stack]<UL><LI>Max Depth = 324<LI>Call Chain = _printf_fp_dec &rArr; _printf_fp_dec_real &rArr; _fp_digits &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
+</UL>
+<BR>[Calls]<UL><LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_dec_real
+</UL>
+<BR>[Called By]<UL><LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_e
+<LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_f
+<LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_g
+</UL>
+
+<P><STRONG><a name="[73]"></a>_printf_fp_hex</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, printf2.o(x$fpl$printf2))
+<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = _printf_fp_hex &rArr; _printf_fp_hex_real &rArr; _printf_fp_infnan &rArr; _printf_post_padding
+</UL>
+<BR>[Calls]<UL><LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_hex_real
+</UL>
+<BR>[Called By]<UL><LI><a href="#[72]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_a
+</UL>
+
+<P><STRONG><a name="[1e2]"></a>__fpl_return_NaN</STRONG> (Thumb, 100 bytes, Stack size 0 bytes, retnan.o(x$fpl$retnan))
+<BR><BR>[Calls]<UL><LI><a href="#[1f2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_cmpreturn
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1e1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dcheck_NaN1
+</UL>
+
+<P><STRONG><a name="[19d]"></a>__ARM_scalbn</STRONG> (Thumb, 92 bytes, Stack size 0 bytes, scalbn.o(x$fpl$scalbn))
+<BR><BR>[Calls]<UL><LI><a href="#[1e1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_dcheck_NaN1
+</UL>
+<BR>[Called By]<UL><LI><a href="#[19e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__mathlib_dbl_underflow
+<LI><a href="#[19c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__mathlib_dbl_overflow
+<LI><a href="#[1a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ldexp
+<LI><a href="#[1a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;frexp
+</UL>
+
+<P><STRONG><a name="[cf]"></a>_scanf_real</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, scanf1.o(x$fpl$scanf1))
+<BR><BR>[Stack]<UL><LI>Max Depth = 340<LI>Call Chain = _scanf_real &rArr; _scanf_really_real &rArr; _fp_value &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
+</UL>
+<BR>[Calls]<UL><LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_really_real
+</UL>
+<BR>[Called By]<UL><LI><a href="#[ce]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_local_sscanf
+</UL>
+
+<P><STRONG><a name="[cc]"></a>_scanf_hex_real</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, scanf2.o(x$fpl$scanf2))
+<BR><BR>[Stack]<UL><LI>Max Depth = 144<LI>Call Chain = _scanf_hex_real &rArr; _scanf_really_hex_real &rArr; __support_ldexp &rArr; ldexp &rArr; __aeabi_cdcmpeq
+</UL>
+<BR>[Calls]<UL><LI><a href="#[da]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_really_hex_real
+</UL>
+<BR>[Called By]<UL><LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_really_real
+</UL>
+
+<P><STRONG><a name="[cb]"></a>_scanf_infnan</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, scanf2.o(x$fpl$scanf2))
+<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = _scanf_infnan &rArr; _scanf_really_infnan
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_really_infnan
+</UL>
+<BR>[Called By]<UL><LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_really_real
+</UL>
+
+<P><STRONG><a name="[1f2]"></a>__fpl_cmpreturn</STRONG> (Thumb, 48 bytes, Stack size 0 bytes, trapv.o(x$fpl$trapveneer))
+<BR><BR>[Called By]<UL><LI><a href="#[1e2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__fpl_return_NaN
+</UL>
+<P>
+<H3>
+Local Symbols
+</H3>
+<P><STRONG><a name="[10c]"></a>DMA_SetConfig</STRONG> (Thumb, 42 bytes, Stack size 12 bytes, stm32f1xx_hal_dma.o(i.DMA_SetConfig))
+<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = DMA_SetConfig
+</UL>
+<BR>[Called By]<UL><LI><a href="#[10a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Start_IT
+</UL>
+
+<P><STRONG><a name="[121]"></a>__NVIC_SetPriority</STRONG> (Thumb, 32 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority))
+<BR><BR>[Called By]<UL><LI><a href="#[120]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
+<LI><a href="#[11f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_Config
+</UL>
+
+<P><STRONG><a name="[160]"></a>I2C_IsAcknowledgeFailed</STRONG> (Thumb, 46 bytes, Stack size 0 bytes, stm32f1xx_hal_i2c.o(i.I2C_IsAcknowledgeFailed))
+<BR><BR>[Called By]<UL><LI><a href="#[119]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnTXEFlagUntilTimeout
+<LI><a href="#[11a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnBTFFlagUntilTimeout
+</UL>
+
+<P><STRONG><a name="[115]"></a>I2C_RequestMemoryRead</STRONG> (Thumb, 246 bytes, Stack size 40 bytes, stm32f1xx_hal_i2c.o(i.I2C_RequestMemoryRead))
+<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = I2C_RequestMemoryRead &rArr; I2C_WaitOnMasterAddressFlagUntilTimeout
+</UL>
+<BR>[Calls]<UL><LI><a href="#[119]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnTXEFlagUntilTimeout
+<LI><a href="#[15f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnMasterAddressFlagUntilTimeout
+<LI><a href="#[114]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnFlagUntilTimeout
+</UL>
+<BR>[Called By]<UL><LI><a href="#[113]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Mem_Read
+</UL>
+
+<P><STRONG><a name="[118]"></a>I2C_RequestMemoryWrite</STRONG> (Thumb, 162 bytes, Stack size 32 bytes, stm32f1xx_hal_i2c.o(i.I2C_RequestMemoryWrite))
+<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = I2C_RequestMemoryWrite &rArr; I2C_WaitOnMasterAddressFlagUntilTimeout
+</UL>
+<BR>[Calls]<UL><LI><a href="#[119]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnTXEFlagUntilTimeout
+<LI><a href="#[15f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnMasterAddressFlagUntilTimeout
+<LI><a href="#[114]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnFlagUntilTimeout
+</UL>
+<BR>[Called By]<UL><LI><a href="#[117]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Mem_Write
+</UL>
+
+<P><STRONG><a name="[11a]"></a>I2C_WaitOnBTFFlagUntilTimeout</STRONG> (Thumb, 86 bytes, Stack size 16 bytes, stm32f1xx_hal_i2c.o(i.I2C_WaitOnBTFFlagUntilTimeout))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = I2C_WaitOnBTFFlagUntilTimeout
+</UL>
+<BR>[Calls]<UL><LI><a href="#[e7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+<LI><a href="#[160]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_IsAcknowledgeFailed
+</UL>
+<BR>[Called By]<UL><LI><a href="#[117]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Mem_Write
+</UL>
+
+<P><STRONG><a name="[114]"></a>I2C_WaitOnFlagUntilTimeout</STRONG> (Thumb, 136 bytes, Stack size 32 bytes, stm32f1xx_hal_i2c.o(i.I2C_WaitOnFlagUntilTimeout))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = I2C_WaitOnFlagUntilTimeout
+</UL>
+<BR>[Calls]<UL><LI><a href="#[e7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+</UL>
+<BR>[Called By]<UL><LI><a href="#[118]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_RequestMemoryWrite
+<LI><a href="#[115]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_RequestMemoryRead
+<LI><a href="#[117]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Mem_Write
+<LI><a href="#[113]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Mem_Read
+</UL>
+
+<P><STRONG><a name="[15f]"></a>I2C_WaitOnMasterAddressFlagUntilTimeout</STRONG> (Thumb, 186 bytes, Stack size 32 bytes, stm32f1xx_hal_i2c.o(i.I2C_WaitOnMasterAddressFlagUntilTimeout))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = I2C_WaitOnMasterAddressFlagUntilTimeout
+</UL>
+<BR>[Calls]<UL><LI><a href="#[e7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+</UL>
+<BR>[Called By]<UL><LI><a href="#[118]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_RequestMemoryWrite
+<LI><a href="#[115]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_RequestMemoryRead
+</UL>
+
+<P><STRONG><a name="[116]"></a>I2C_WaitOnRXNEFlagUntilTimeout</STRONG> (Thumb, 116 bytes, Stack size 24 bytes, stm32f1xx_hal_i2c.o(i.I2C_WaitOnRXNEFlagUntilTimeout))
+<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = I2C_WaitOnRXNEFlagUntilTimeout
+</UL>
+<BR>[Calls]<UL><LI><a href="#[e7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+</UL>
+<BR>[Called By]<UL><LI><a href="#[113]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Mem_Read
+</UL>
+
+<P><STRONG><a name="[119]"></a>I2C_WaitOnTXEFlagUntilTimeout</STRONG> (Thumb, 86 bytes, Stack size 16 bytes, stm32f1xx_hal_i2c.o(i.I2C_WaitOnTXEFlagUntilTimeout))
+<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = I2C_WaitOnTXEFlagUntilTimeout
+</UL>
+<BR>[Calls]<UL><LI><a href="#[e7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+<LI><a href="#[160]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_IsAcknowledgeFailed
+</UL>
+<BR>[Called By]<UL><LI><a href="#[118]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_RequestMemoryWrite
+<LI><a href="#[115]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_RequestMemoryRead
+<LI><a href="#[117]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Mem_Write
+</UL>
+
+<P><STRONG><a name="[130]"></a>TIM_ITRx_SetConfig</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.TIM_ITRx_SetConfig))
+<BR><BR>[Called By]<UL><LI><a href="#[12c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
+</UL>
+
+<P><STRONG><a name="[13b]"></a>TIM_OC1_SetConfig</STRONG> (Thumb, 88 bytes, Stack size 20 bytes, stm32f1xx_hal_tim.o(i.TIM_OC1_SetConfig))
+<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = TIM_OC1_SetConfig
+</UL>
+<BR>[Called By]<UL><LI><a href="#[141]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_ConfigChannel
+<LI><a href="#[13a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_ConfigChannel
+</UL>
+
+<P><STRONG><a name="[13d]"></a>TIM_OC3_SetConfig</STRONG> (Thumb, 96 bytes, Stack size 20 bytes, stm32f1xx_hal_tim.o(i.TIM_OC3_SetConfig))
 <BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = TIM_OC3_SetConfig
 </UL>
-<BR>[Called By]<UL><LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_ConfigChannel
-<LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_ConfigChannel
+<BR>[Called By]<UL><LI><a href="#[141]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_ConfigChannel
+<LI><a href="#[13a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_ConfigChannel
 </UL>
 
-<P><STRONG><a name="[89]"></a>TIM_OC4_SetConfig</STRONG> (Thumb, 70 bytes, Stack size 12 bytes, stm32f1xx_hal_tim.o(i.TIM_OC4_SetConfig))
+<P><STRONG><a name="[13e]"></a>TIM_OC4_SetConfig</STRONG> (Thumb, 70 bytes, Stack size 12 bytes, stm32f1xx_hal_tim.o(i.TIM_OC4_SetConfig))
 <BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = TIM_OC4_SetConfig
 </UL>
-<BR>[Called By]<UL><LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_ConfigChannel
-<LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_ConfigChannel
+<BR>[Called By]<UL><LI><a href="#[141]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_ConfigChannel
+<LI><a href="#[13a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_ConfigChannel
 </UL>
 
-<P><STRONG><a name="[79]"></a>TIM_TI1_ConfigInputStage</STRONG> (Thumb, 34 bytes, Stack size 8 bytes, stm32f1xx_hal_tim.o(i.TIM_TI1_ConfigInputStage))
+<P><STRONG><a name="[12e]"></a>TIM_TI1_ConfigInputStage</STRONG> (Thumb, 34 bytes, Stack size 8 bytes, stm32f1xx_hal_tim.o(i.TIM_TI1_ConfigInputStage))
 <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = TIM_TI1_ConfigInputStage
 </UL>
-<BR>[Called By]<UL><LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
+<BR>[Called By]<UL><LI><a href="#[12c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
 </UL>
 
-<P><STRONG><a name="[7a]"></a>TIM_TI2_ConfigInputStage</STRONG> (Thumb, 36 bytes, Stack size 8 bytes, stm32f1xx_hal_tim.o(i.TIM_TI2_ConfigInputStage))
+<P><STRONG><a name="[12f]"></a>TIM_TI2_ConfigInputStage</STRONG> (Thumb, 36 bytes, Stack size 8 bytes, stm32f1xx_hal_tim.o(i.TIM_TI2_ConfigInputStage))
 <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = TIM_TI2_ConfigInputStage
 </UL>
-<BR>[Called By]<UL><LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
+<BR>[Called By]<UL><LI><a href="#[12c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
 </UL>
 
-<P><STRONG><a name="[4b]"></a>UART_DMAAbortOnError</STRONG> (Thumb, 16 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError))
-<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = UART_DMAAbortOnError
+<P><STRONG><a name="[127]"></a>TIM_CCxNChannelCmd</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = TIM_CCxNChannelCmd
 </UL>
-<BR>[Calls]<UL><LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_ErrorCallback
+<BR>[Called By]<UL><LI><a href="#[126]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_PWMN_Start
+</UL>
+
+<P><STRONG><a name="[60]"></a>UART_DMAAbortOnError</STRONG> (Thumb, 16 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError))
+<BR><BR>[Stack]<UL><LI>Max Depth = 84<LI>Call Chain = UART_DMAAbortOnError &rArr; HAL_UART_ErrorCallback &rArr; Van_Debug_UART_ErrorCallback &rArr; HAL_UART_Receive_DMA &rArr; UART_Start_Receive_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[14b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_ErrorCallback
 </UL>
 <BR>[Address Reference Count : 1]<UL><LI> stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler)
 </UL>
-<P><STRONG><a name="[91]"></a>UART_EndRxTransfer</STRONG> (Thumb, 78 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.UART_EndRxTransfer))
-<BR><BR>[Calls]<UL><LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_EndRxTransfer
+<P><STRONG><a name="[63]"></a>UART_DMAError</STRONG> (Thumb, 74 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.UART_DMAError))
+<BR><BR>[Stack]<UL><LI>Max Depth = 92<LI>Call Chain = UART_DMAError &rArr; HAL_UART_ErrorCallback &rArr; Van_Debug_UART_ErrorCallback &rArr; HAL_UART_Receive_DMA &rArr; UART_Start_Receive_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[149]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_EndTxTransfer
+<LI><a href="#[14a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_EndRxTransfer
+<LI><a href="#[14b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_ErrorCallback
+</UL>
+<BR>[Address Reference Count : 2]<UL><LI> stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_DMA)
+<LI> stm32f1xx_hal_uart.o(i.UART_Start_Receive_DMA)
+</UL>
+<P><STRONG><a name="[64]"></a>UART_DMAReceiveCplt</STRONG> (Thumb, 134 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_DMAReceiveCplt))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = UART_DMAReceiveCplt
+</UL>
+<BR>[Calls]<UL><LI><a href="#[150]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UARTEx_RxEventCallback
+<LI><a href="#[18a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_RxCpltCallback
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> stm32f1xx_hal_uart.o(i.UART_Start_Receive_DMA)
+</UL>
+<P><STRONG><a name="[65]"></a>UART_DMARxHalfCplt</STRONG> (Thumb, 30 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_DMARxHalfCplt))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = UART_DMARxHalfCplt
+</UL>
+<BR>[Calls]<UL><LI><a href="#[18b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_RxHalfCpltCallback
+<LI><a href="#[150]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UARTEx_RxEventCallback
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> stm32f1xx_hal_uart.o(i.UART_Start_Receive_DMA)
+</UL>
+<P><STRONG><a name="[61]"></a>UART_DMATransmitCplt</STRONG> (Thumb, 66 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_DMATransmitCplt))
+<BR><BR>[Stack]<UL><LI>Max Depth = 76<LI>Call Chain = UART_DMATransmitCplt &rArr; HAL_UART_TxCpltCallback &rArr; Van_Debug_UART_TxCpltCallback &rArr; HAL_UART_Transmit_DMA &rArr; HAL_DMA_Start_IT &rArr; DMA_SetConfig
+</UL>
+<BR>[Calls]<UL><LI><a href="#[151]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_TxCpltCallback
+</UL>
+<BR>[Address Reference Count : 1]<UL><LI> stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_DMA)
+</UL>
+<P><STRONG><a name="[62]"></a>UART_DMATxHalfCplt</STRONG> (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_DMATxHalfCplt))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = UART_DMATxHalfCplt
+</UL>
+<BR>[Calls]<UL><LI><a href="#[18c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_TxHalfCpltCallback
 </UL>
-<BR>[Called By]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
-<LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_EndRxTransfer
+<BR>[Address Reference Count : 1]<UL><LI> stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_DMA)
+</UL>
+<P><STRONG><a name="[14a]"></a>UART_EndRxTransfer</STRONG> (Thumb, 78 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.UART_EndRxTransfer))
+<BR><BR>[Calls]<UL><LI><a href="#[14a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_EndRxTransfer
+</UL>
+<BR>[Called By]<UL><LI><a href="#[14d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
+<LI><a href="#[148]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_DMAStop
+<LI><a href="#[14a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_EndRxTransfer
+<LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_DMAError
+</UL>
+
+<P><STRONG><a name="[149]"></a>UART_EndTxTransfer</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.UART_EndTxTransfer))
+<BR><BR>[Calls]<UL><LI><a href="#[149]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_EndTxTransfer
+</UL>
+<BR>[Called By]<UL><LI><a href="#[148]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_DMAStop
+<LI><a href="#[149]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_EndTxTransfer
+<LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_DMAError
 </UL>
 
-<P><STRONG><a name="[90]"></a>UART_Receive_IT</STRONG> (Thumb, 194 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_Receive_IT))
+<P><STRONG><a name="[14e]"></a>UART_Receive_IT</STRONG> (Thumb, 194 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_Receive_IT))
 <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = UART_Receive_IT
 </UL>
-<BR>[Calls]<UL><LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_RxCpltCallback
-<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UARTEx_RxEventCallback
+<BR>[Calls]<UL><LI><a href="#[150]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UARTEx_RxEventCallback
+<LI><a href="#[18a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_RxCpltCallback
 </UL>
-<BR>[Called By]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
+<BR>[Called By]<UL><LI><a href="#[14d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
 </UL>
 
-<P><STRONG><a name="[99]"></a>UART_SetConfig</STRONG> (Thumb, 178 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.UART_SetConfig))
+<P><STRONG><a name="[154]"></a>UART_SetConfig</STRONG> (Thumb, 178 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.UART_SetConfig))
 <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = UART_SetConfig
 </UL>
-<BR>[Calls]<UL><LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetPCLK2Freq
-<LI><a href="#[67]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetPCLK1Freq
+<BR>[Calls]<UL><LI><a href="#[18d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetPCLK2Freq
+<LI><a href="#[112]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetPCLK1Freq
+</UL>
+<BR>[Called By]<UL><LI><a href="#[152]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Init
+</UL>
+
+<P><STRONG><a name="[1b2]"></a>buffer_skip_whitespace</STRONG> (Thumb, 48 bytes, Stack size 8 bytes, cjson.o(i.buffer_skip_whitespace))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = buffer_skip_whitespace
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_ParseWithLengthOpts
+<LI><a href="#[1d4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_object
+<LI><a href="#[1d1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_array
+</UL>
+
+<P><STRONG><a name="[1ad]"></a>cJSON_New_Item</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, cjson.o(i.cJSON_New_Item))
+<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = cJSON_New_Item &rArr; __aeabi_memclr4
+</UL>
+<BR>[Calls]<UL><LI><a href="#[fd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_ParseWithLengthOpts
+<LI><a href="#[1d4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_object
+<LI><a href="#[1d1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_array
+</UL>
+
+<P><STRONG><a name="[1a7]"></a>get_array_item</STRONG> (Thumb, 22 bytes, Stack size 0 bytes, cjson.o(i.get_array_item))
+<BR><BR>[Called By]<UL><LI><a href="#[1a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_GetArrayItem
+</UL>
+
+<P><STRONG><a name="[1a9]"></a>get_object_item</STRONG> (Thumb, 122 bytes, Stack size 24 bytes, cjson.o(i.get_object_item))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = get_object_item &rArr; tolower &rArr; __rt_ctype_table
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strcmp
+<LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;tolower
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1aa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_GetObjectItemCaseSensitive
+<LI><a href="#[1a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_GetObjectItem
+</UL>
+
+<P><STRONG><a name="[1d1]"></a>parse_array</STRONG> (Thumb, 208 bytes, Stack size 24 bytes, cjson.o(i.parse_array))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40 + In Cycle
+<LI>Call Chain = parse_array &rArr;  parse_value (Cycle)
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_Delete
+<LI><a href="#[1b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_value
+<LI><a href="#[1ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_New_Item
+<LI><a href="#[1b2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;buffer_skip_whitespace
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_value
+</UL>
+
+<P><STRONG><a name="[1da]"></a>parse_hex4</STRONG> (Thumb, 64 bytes, Stack size 8 bytes, cjson.o(i.parse_hex4))
+<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = parse_hex4
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1d8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;utf16_literal_to_utf8
+</UL>
+
+<P><STRONG><a name="[1d2]"></a>parse_number</STRONG> (Thumb, 228 bytes, Stack size 96 bytes, cjson.o(i.parse_number))
+<BR><BR>[Stack]<UL><LI>Max Depth = 548<LI>Call Chain = parse_number &rArr; strtod &rArr; __strtod_int &rArr; _local_sscanf &rArr; _scanf_real &rArr; _scanf_really_real &rArr; _fp_value &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1d3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strtod
+<LI><a href="#[1a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_cdrcmple
+<LI><a href="#[17e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_cdcmple
+<LI><a href="#[1d0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_d2iz
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_value
+</UL>
+
+<P><STRONG><a name="[1d4]"></a>parse_object</STRONG> (Thumb, 266 bytes, Stack size 24 bytes, cjson.o(i.parse_object))
+<BR><BR>[Stack]<UL><LI>Max Depth = 104 + In Cycle
+<LI>Call Chain = parse_object &rArr;  parse_value (Cycle)
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_Delete
+<LI><a href="#[1b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_value
+<LI><a href="#[1d5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_string
+<LI><a href="#[1ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_New_Item
+<LI><a href="#[1b2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;buffer_skip_whitespace
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_value
+</UL>
+
+<P><STRONG><a name="[1d5]"></a>parse_string</STRONG> (Thumb, 294 bytes, Stack size 40 bytes, cjson.o(i.parse_string))
+<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = parse_string &rArr; utf16_literal_to_utf8 &rArr; parse_hex4
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1d8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;utf16_literal_to_utf8
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_value
+<LI><a href="#[1d4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_object
+</UL>
+
+<P><STRONG><a name="[1b3]"></a>parse_value</STRONG> (Thumb, 226 bytes, Stack size 16 bytes, cjson.o(i.parse_value))
+<BR><BR>[Stack]<UL><LI>Max Depth = 564<LI>Call Chain = parse_value &rArr; parse_number &rArr; strtod &rArr; __strtod_int &rArr; _local_sscanf &rArr; _scanf_real &rArr; _scanf_really_real &rArr; _fp_value &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1d5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_string
+<LI><a href="#[1d4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_object
+<LI><a href="#[1d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_number
+<LI><a href="#[1d1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_array
+<LI><a href="#[1b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strncmp
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cJSON_ParseWithLengthOpts
+<LI><a href="#[1d4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_object
+<LI><a href="#[1d1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_array
+</UL>
+
+<P><STRONG><a name="[1d8]"></a>utf16_literal_to_utf8</STRONG> (Thumb, 208 bytes, Stack size 32 bytes, cjson.o(i.utf16_literal_to_utf8))
+<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = utf16_literal_to_utf8 &rArr; parse_hex4
+</UL>
+<BR>[Calls]<UL><LI><a href="#[1da]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_hex4
+</UL>
+<BR>[Called By]<UL><LI><a href="#[1d5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_string
+</UL>
+
+<P><STRONG><a name="[1ce]"></a>m_pow_n</STRONG> (Thumb, 24 bytes, Stack size 0 bytes, esp32_wroom_32d.o(i.m_pow_n))
+<BR><BR>[Called By]<UL><LI><a href="#[f6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;my_sprintf
+</UL>
+
+<P><STRONG><a name="[1ed]"></a>_dadd1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, daddsub_clz.o(x$fpl$dadd), UNUSED)
+<BR><BR>[Called By]<UL><LI><a href="#[1ee]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_dsub
+<LI><a href="#[1ec]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_drsb
+</UL>
+
+<P><STRONG><a name="[1df]"></a>_dsub1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, daddsub_clz.o(x$fpl$dsub), UNUSED)
+<BR><BR>[Called By]<UL><LI><a href="#[1ec]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_drsb
+<LI><a href="#[1de]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_dadd
+</UL>
+
+<P><STRONG><a name="[bb]"></a>_fp_digits</STRONG> (Thumb, 432 bytes, Stack size 96 bytes, _printf_fp_dec.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 220<LI>Call Chain = _fp_digits &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
+</UL>
+<BR>[Calls]<UL><LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_emul
+<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_ediv
+<LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_d2e
+<LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_etento
+<LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_ll_udiv10
+</UL>
+<BR>[Called By]<UL><LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_fp_dec_real
+</UL>
+
+<P><STRONG><a name="[59]"></a>_printf_input_char</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, _printf_char_common.o(.text))
+<BR>[Address Reference Count : 1]<UL><LI> _printf_char_common.o(.text)
+</UL>
+<P><STRONG><a name="[c7]"></a>_fp_value</STRONG> (Thumb, 588 bytes, Stack size 96 bytes, scanf_fp.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 220<LI>Call Chain = _fp_value &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
+</UL>
+<BR>[Calls]<UL><LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_errno_addr
+<LI><a href="#[3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ieee_status
+<LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_emuld
+<LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_edivd
+<LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_btod_etento
+</UL>
+<BR>[Called By]<UL><LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_really_real
+</UL>
+
+<P><STRONG><a name="[ce]"></a>_local_sscanf</STRONG> (Thumb, 60 bytes, Stack size 56 bytes, strtod.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 396<LI>Call Chain = _local_sscanf &rArr; _scanf_real &rArr; _scanf_really_real &rArr; _fp_value &rArr; _btod_etento &rArr; _btod_emul &rArr; _e2e
+</UL>
+<BR>[Calls]<UL><LI><a href="#[cf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_scanf_real
 </UL>
-<BR>[Called By]<UL><LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Init
+<BR>[Called By]<UL><LI><a href="#[d0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__strtod_int
 </UL>
 <P>
 <H3>

+ 14 - 0
MDK-ARM/mini7_V2/mini7_V2.lnp

@@ -27,6 +27,20 @@
 "mini7_v2\stm32f1xx_hal_tim_ex.o"
 "mini7_v2\stm32f1xx_hal_uart.o"
 "mini7_v2\system_stm32f1xx.o"
+"mini7_v2\onechip_load_inf.o"
+"mini7_v2\van_bsp_debug_shell.o"
+"mini7_v2\van_bsp_debug_uart.o"
+"mini7_v2\van_com_algorithm.o"
+"mini7_v2\van_itcallback.o"
+"mini7_v2\pt1000.o"
+"mini7_v2\van_bsp_com_pwm.o"
+"mini7_v2\van_bsp_scanner.o"
+"mini7_v2\cjson.o"
+"mini7_v2\ws2812.o"
+"mini7_v2\rgb381.o"
+"mini7_v2\esp32_wroom_32d.o"
+"mini7_v2\van_bsp_espuart.o"
+"mini7_v2\usr_motor.o"
 --strict --scatter "mini7_V2\mini7_V2.sct"
 --summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols
 --info sizes --info totals --info unused --info veneers

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1114 - 13
MDK-ARM/mini7_V2/mini7_V2.map


+ 792 - 42
MDK-ARM/mini7_V2/mini7_V2_mini7_V2.dep

@@ -1,7 +1,7 @@
 Dependencies for Project 'mini7_V2', Target 'mini7_V2': (DO NOT MODIFY !)
-F (startup_stm32f103xe.s)(0x6A2F552B)(--cpu Cortex-M3 -g --apcs=interwork 

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

--pd "__UVISION_VERSION SETA 526" --pd "_RTE_ SETA 1" --pd "STM32F10X_HD SETA 1"

--list startup_stm32f103xe.lst --xref -o mini7_v2\startup_stm32f103xe.o --depend mini7_v2\startup_stm32f103xe.d)
-F (../Core/Src/main.c)(0x6A2F5529)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\main.o --omf_browse mini7_v2\main.crf --depend mini7_v2\main.d)
-I (../Core/Inc/main.h)(0x6A2F5529)
+F (startup_stm32f103xe.s)(0x6A311474)(--cpu Cortex-M3 -g --apcs=interwork 

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

--pd "__UVISION_VERSION SETA 526" --pd "_RTE_ SETA 1" --pd "STM32F10X_HD SETA 1"

--list startup_stm32f103xe.lst --xref -o mini7_v2\startup_stm32f103xe.o --depend mini7_v2\startup_stm32f103xe.d)
+F (../Core/Src/main.c)(0x6A30FFC9)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\main.o --omf_browse mini7_v2\main.crf --depend mini7_v2\main.d)
+I (../Core/Inc/main.h)(0x6A30F16C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -32,15 +32,38 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-I (../Core/Inc/adc.h)(0x6A2F5528)
+I (../Core/Inc/adc.h)(0x6A2F8EE7)
 I (../Core/Inc/dma.h)(0x6A2F5528)
 I (../Core/Inc/i2c.h)(0x6A2F5528)
-I (../Core/Inc/tim.h)(0x6A2F5528)
+I (../Core/Inc/tim.h)(0x6A30F16B)
 I (../Core/Inc/usart.h)(0x6A2F5528)
 I (../Core/Inc/gpio.h)(0x6A2F5527)
-F (../Core/Src/gpio.c)(0x6A2F5527)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\gpio.o --omf_browse mini7_v2\gpio.crf --depend mini7_v2\gpio.d)
+I (../BoardInterface/onechip_include_header.h)(0x6A30F77C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x599EDB3E)
+I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x599EDB3E)
+I (../BoardInterface/onechip_basic_define.h)(0x6761483A)
+I (../BoardInterface/onechip_devinf_define.h)(0x6A31119B)
+I (../tshell/van_bsp_debug_shell.h)(0x6761483F)
+I (../tshell/van_bsp_debug_uart.h)(0x6761483F)
+I (../BoardInterface/onechip_load_inf.h)(0x6A2F9AD4)
+I (../tshell/van_com_algorithm.h)(0x67C53B5D)
+I (../DriverInterface/pt1000.h)(0x67E5FD4A)
+I (../DriverInterface/cJSON.h)(0x67170B32)
+I (../DriverInterface/VAN_ITCallBack.h)(0x65B5E29A)
+I (../DriverInterface/van_BSP_Com_Pwm.h)(0x6A17D7EE)
+I (../tshell/van_com_define.h)(0x67C53B5D)
+I (../DriverInterface/van_BSP_Scanner.h)(0x6A2FB122)
+I (../DriverInterface/van_BSP_ESPUart.h)(0x6A3109F7)
+I (../DriverInterface/ESP32_WROOM_32D.h)(0x6A30C01A)
+I (../DriverInterface/ws2812.h)(0x6A2FCB06)
+I (../DriverInterface/rgb381.h)(0x6A30B436)
+I (../DriverInterface/usr_motor.h)(0x6A30F740)
+F (../Core/Src/gpio.c)(0x6A311471)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\gpio.o --omf_browse mini7_v2\gpio.crf --depend mini7_v2\gpio.d)
 I (../Core/Inc/gpio.h)(0x6A2F5527)
-I (../Core/Inc/main.h)(0x6A2F5529)
+I (../Core/Inc/main.h)(0x6A30F16C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -71,9 +94,10 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Core/Src/adc.c)(0x6A2F5528)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\adc.o --omf_browse mini7_v2\adc.crf --depend mini7_v2\adc.d)
-I (../Core/Inc/adc.h)(0x6A2F5528)
-I (../Core/Inc/main.h)(0x6A2F5529)
+F (../Core/Src/adc.c)(0x6A2F8F4F)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\adc.o --omf_browse mini7_v2\adc.crf --depend mini7_v2\adc.d)
+I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x599EDB3E)
+I (../Core/Inc/adc.h)(0x6A2F8EE7)
+I (../Core/Inc/main.h)(0x6A30F16C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -104,9 +128,9 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Core/Src/dma.c)(0x6A2F5528)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\dma.o --omf_browse mini7_v2\dma.crf --depend mini7_v2\dma.d)
+F (../Core/Src/dma.c)(0x6A2FA7AA)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\dma.o --omf_browse mini7_v2\dma.crf --depend mini7_v2\dma.d)
 I (../Core/Inc/dma.h)(0x6A2F5528)
-I (../Core/Inc/main.h)(0x6A2F5529)
+I (../Core/Inc/main.h)(0x6A30F16C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -137,9 +161,9 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Core/Src/i2c.c)(0x6A2F5528)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\i2c.o --omf_browse mini7_v2\i2c.crf --depend mini7_v2\i2c.d)
+F (../Core/Src/i2c.c)(0x6A2F5528)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\i2c.o --omf_browse mini7_v2\i2c.crf --depend mini7_v2\i2c.d)
 I (../Core/Inc/i2c.h)(0x6A2F5528)
-I (../Core/Inc/main.h)(0x6A2F5529)
+I (../Core/Inc/main.h)(0x6A30F16C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -170,9 +194,9 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Core/Src/tim.c)(0x6A2F5528)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\tim.o --omf_browse mini7_v2\tim.crf --depend mini7_v2\tim.d)
-I (../Core/Inc/tim.h)(0x6A2F5528)
-I (../Core/Inc/main.h)(0x6A2F5529)
+F (../Core/Src/tim.c)(0x6A30F16B)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\tim.o --omf_browse mini7_v2\tim.crf --depend mini7_v2\tim.d)
+I (../Core/Inc/tim.h)(0x6A30F16B)
+I (../Core/Inc/main.h)(0x6A30F16C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -203,9 +227,9 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Core/Src/usart.c)(0x6A2F5528)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\usart.o --omf_browse mini7_v2\usart.crf --depend mini7_v2\usart.d)
+F (../Core/Src/usart.c)(0x6A2FC326)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\usart.o --omf_browse mini7_v2\usart.crf --depend mini7_v2\usart.d)
 I (../Core/Inc/usart.h)(0x6A2F5528)
-I (../Core/Inc/main.h)(0x6A2F5529)
+I (../Core/Inc/main.h)(0x6A30F16C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -236,8 +260,8 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Core/Src/stm32f1xx_it.c)(0x6A2F5528)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_it.o --omf_browse mini7_v2\stm32f1xx_it.crf --depend mini7_v2\stm32f1xx_it.d)
-I (../Core/Inc/main.h)(0x6A2F5529)
+F (../Core/Src/stm32f1xx_it.c)(0x6A30F16C)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_it.o --omf_browse mini7_v2\stm32f1xx_it.crf --depend mini7_v2\stm32f1xx_it.d)
+I (../Core/Inc/main.h)(0x6A30F16C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -268,9 +292,69 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-I (../Core/Inc/stm32f1xx_it.h)(0x6A2F5529)
-F (../Core/Src/stm32f1xx_hal_msp.c)(0x6A2F5529)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_msp.o --omf_browse mini7_v2\stm32f1xx_hal_msp.crf --depend mini7_v2\stm32f1xx_hal_msp.d)
-I (../Core/Inc/main.h)(0x6A2F5529)
+I (../Core/Inc/stm32f1xx_it.h)(0x6A30F16C)
+I (../BoardInterface/onechip_include_header.h)(0x6A30F77C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x599EDB3E)
+I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x599EDB3E)
+I (../Core/Inc/adc.h)(0x6A2F8EE7)
+I (../Core/Inc/dma.h)(0x6A2F5528)
+I (../Core/Inc/i2c.h)(0x6A2F5528)
+I (../Core/Inc/tim.h)(0x6A30F16B)
+I (../Core/Inc/usart.h)(0x6A2F5528)
+I (../Core/Inc/gpio.h)(0x6A2F5527)
+I (../BoardInterface/onechip_basic_define.h)(0x6761483A)
+I (../BoardInterface/onechip_devinf_define.h)(0x6A31119B)
+I (../tshell/van_bsp_debug_shell.h)(0x6761483F)
+I (../tshell/van_bsp_debug_uart.h)(0x6761483F)
+I (../BoardInterface/onechip_load_inf.h)(0x6A2F9AD4)
+I (../tshell/van_com_algorithm.h)(0x67C53B5D)
+I (../DriverInterface/pt1000.h)(0x67E5FD4A)
+I (../DriverInterface/cJSON.h)(0x67170B32)
+I (../DriverInterface/VAN_ITCallBack.h)(0x65B5E29A)
+I (../DriverInterface/van_BSP_Com_Pwm.h)(0x6A17D7EE)
+I (../tshell/van_com_define.h)(0x67C53B5D)
+I (../DriverInterface/van_BSP_Scanner.h)(0x6A2FB122)
+I (../DriverInterface/van_BSP_ESPUart.h)(0x6A3109F7)
+I (../DriverInterface/ESP32_WROOM_32D.h)(0x6A30C01A)
+I (../DriverInterface/ws2812.h)(0x6A2FCB06)
+I (../DriverInterface/rgb381.h)(0x6A30B436)
+I (../DriverInterface/usr_motor.h)(0x6A30F740)
+F (../Core/Src/stm32f1xx_hal_msp.c)(0x6A2F5CB5)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_msp.o --omf_browse mini7_v2\stm32f1xx_hal_msp.crf --depend mini7_v2\stm32f1xx_hal_msp.d)
+I (../Core/Inc/main.h)(0x6A30F16C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
+I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x6A2F551C)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Include/core_cm3.h)(0x6A2F54FA)
+I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x599EDB3E)
+I (../Drivers/CMSIS/Include/cmsis_version.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x6A2F551E)
+I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x599EDB3C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
+F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_gpio_ex.o --omf_browse mini7_v2\stm32f1xx_hal_gpio_ex.crf --depend mini7_v2\stm32f1xx_hal_gpio_ex.d)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -301,7 +385,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_gpio_ex.o --omf_browse mini7_v2\stm32f1xx_hal_gpio_ex.crf --depend mini7_v2\stm32f1xx_hal_gpio_ex.d)
+F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_adc.o --omf_browse mini7_v2\stm32f1xx_hal_adc.crf --depend mini7_v2\stm32f1xx_hal_adc.d)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -332,7 +416,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_adc.o --omf_browse mini7_v2\stm32f1xx_hal_adc.crf --depend mini7_v2\stm32f1xx_hal_adc.d)
+F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_adc_ex.o --omf_browse mini7_v2\stm32f1xx_hal_adc_ex.crf --depend mini7_v2\stm32f1xx_hal_adc_ex.d)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -363,7 +447,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_adc_ex.o --omf_browse mini7_v2\stm32f1xx_hal_adc_ex.crf --depend mini7_v2\stm32f1xx_hal_adc_ex.d)
+F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal.o --omf_browse mini7_v2\stm32f1xx_hal.crf --depend mini7_v2\stm32f1xx_hal.d)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -394,7 +478,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal.o --omf_browse mini7_v2\stm32f1xx_hal.crf --depend mini7_v2\stm32f1xx_hal.d)
+F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_rcc.o --omf_browse mini7_v2\stm32f1xx_hal_rcc.crf --depend mini7_v2\stm32f1xx_hal_rcc.d)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -425,7 +509,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_rcc.o --omf_browse mini7_v2\stm32f1xx_hal_rcc.crf --depend mini7_v2\stm32f1xx_hal_rcc.d)
+F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_rcc_ex.o --omf_browse mini7_v2\stm32f1xx_hal_rcc_ex.crf --depend mini7_v2\stm32f1xx_hal_rcc_ex.d)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -456,7 +540,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_rcc_ex.o --omf_browse mini7_v2\stm32f1xx_hal_rcc_ex.crf --depend mini7_v2\stm32f1xx_hal_rcc_ex.d)
+F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_gpio.o --omf_browse mini7_v2\stm32f1xx_hal_gpio.crf --depend mini7_v2\stm32f1xx_hal_gpio.d)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -487,7 +571,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_gpio.o --omf_browse mini7_v2\stm32f1xx_hal_gpio.crf --depend mini7_v2\stm32f1xx_hal_gpio.d)
+F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_dma.o --omf_browse mini7_v2\stm32f1xx_hal_dma.crf --depend mini7_v2\stm32f1xx_hal_dma.d)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -518,7 +602,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_dma.o --omf_browse mini7_v2\stm32f1xx_hal_dma.crf --depend mini7_v2\stm32f1xx_hal_dma.d)
+F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_cortex.o --omf_browse mini7_v2\stm32f1xx_hal_cortex.crf --depend mini7_v2\stm32f1xx_hal_cortex.d)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -549,7 +633,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_cortex.o --omf_browse mini7_v2\stm32f1xx_hal_cortex.crf --depend mini7_v2\stm32f1xx_hal_cortex.d)
+F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_pwr.o --omf_browse mini7_v2\stm32f1xx_hal_pwr.crf --depend mini7_v2\stm32f1xx_hal_pwr.d)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -580,7 +664,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_pwr.o --omf_browse mini7_v2\stm32f1xx_hal_pwr.crf --depend mini7_v2\stm32f1xx_hal_pwr.d)
+F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_flash.o --omf_browse mini7_v2\stm32f1xx_hal_flash.crf --depend mini7_v2\stm32f1xx_hal_flash.d)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -611,7 +695,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_flash.o --omf_browse mini7_v2\stm32f1xx_hal_flash.crf --depend mini7_v2\stm32f1xx_hal_flash.d)
+F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_flash_ex.o --omf_browse mini7_v2\stm32f1xx_hal_flash_ex.crf --depend mini7_v2\stm32f1xx_hal_flash_ex.d)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -642,7 +726,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_flash_ex.o --omf_browse mini7_v2\stm32f1xx_hal_flash_ex.crf --depend mini7_v2\stm32f1xx_hal_flash_ex.d)
+F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_exti.o --omf_browse mini7_v2\stm32f1xx_hal_exti.crf --depend mini7_v2\stm32f1xx_hal_exti.d)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -673,7 +757,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_exti.o --omf_browse mini7_v2\stm32f1xx_hal_exti.crf --depend mini7_v2\stm32f1xx_hal_exti.d)
+F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_i2c.o --omf_browse mini7_v2\stm32f1xx_hal_i2c.crf --depend mini7_v2\stm32f1xx_hal_i2c.d)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -704,7 +788,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_i2c.o --omf_browse mini7_v2\stm32f1xx_hal_i2c.crf --depend mini7_v2\stm32f1xx_hal_i2c.d)
+F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_tim.o --omf_browse mini7_v2\stm32f1xx_hal_tim.crf --depend mini7_v2\stm32f1xx_hal_tim.d)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -735,7 +819,107 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_tim.o --omf_browse mini7_v2\stm32f1xx_hal_tim.crf --depend mini7_v2\stm32f1xx_hal_tim.d)
+F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_tim_ex.o --omf_browse mini7_v2\stm32f1xx_hal_tim_ex.crf --depend mini7_v2\stm32f1xx_hal_tim_ex.d)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
+I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x6A2F551C)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Include/core_cm3.h)(0x6A2F54FA)
+I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x599EDB3E)
+I (../Drivers/CMSIS/Include/cmsis_version.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x6A2F551E)
+I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x599EDB3C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
+F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_uart.o --omf_browse mini7_v2\stm32f1xx_hal_uart.crf --depend mini7_v2\stm32f1xx_hal_uart.d)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
+I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x6A2F551C)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Include/core_cm3.h)(0x6A2F54FA)
+I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x599EDB3E)
+I (../Drivers/CMSIS/Include/cmsis_version.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x6A2F551E)
+I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x599EDB3C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
+F (../Core/Src/system_stm32f1xx.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\system_stm32f1xx.o --omf_browse mini7_v2\system_stm32f1xx.crf --depend mini7_v2\system_stm32f1xx.d)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Include/core_cm3.h)(0x6A2F54FA)
+I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x599EDB3E)
+I (../Drivers/CMSIS/Include/cmsis_version.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
+I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x6A2F551E)
+I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x599EDB3C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
+F (..\BoardInterface\onechip_load_inf.c)(0x6A30F8F3)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\onechip_load_inf.o --omf_browse mini7_v2\onechip_load_inf.crf --depend mini7_v2\onechip_load_inf.d)
+I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x599EDB3C)
+I (..\BoardInterface\onechip_include_header.h)(0x6A30F77C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x599EDB3E)
+I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x599EDB3E)
+I (../Core/Inc/main.h)(0x6A30F16C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -766,7 +950,41 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_tim_ex.o --omf_browse mini7_v2\stm32f1xx_hal_tim_ex.crf --depend mini7_v2\stm32f1xx_hal_tim_ex.d)
+I (../Core/Inc/adc.h)(0x6A2F8EE7)
+I (../Core/Inc/dma.h)(0x6A2F5528)
+I (../Core/Inc/i2c.h)(0x6A2F5528)
+I (../Core/Inc/tim.h)(0x6A30F16B)
+I (../Core/Inc/usart.h)(0x6A2F5528)
+I (../Core/Inc/gpio.h)(0x6A2F5527)
+I (..\BoardInterface\onechip_basic_define.h)(0x6761483A)
+I (..\BoardInterface\onechip_devinf_define.h)(0x6A31119B)
+I (../tshell/van_bsp_debug_shell.h)(0x6761483F)
+I (../tshell/van_bsp_debug_uart.h)(0x6761483F)
+I (../BoardInterface/onechip_include_header.h)(0x6A30F77C)
+I (..\BoardInterface\onechip_load_inf.h)(0x6A2F9AD4)
+I (../tshell/van_com_algorithm.h)(0x67C53B5D)
+I (../DriverInterface/pt1000.h)(0x67E5FD4A)
+I (../DriverInterface/cJSON.h)(0x67170B32)
+I (../DriverInterface/VAN_ITCallBack.h)(0x65B5E29A)
+I (../DriverInterface/van_BSP_Com_Pwm.h)(0x6A17D7EE)
+I (../tshell/van_com_define.h)(0x67C53B5D)
+I (../DriverInterface/van_BSP_Scanner.h)(0x6A2FB122)
+I (../DriverInterface/van_BSP_ESPUart.h)(0x6A3109F7)
+I (../DriverInterface/ESP32_WROOM_32D.h)(0x6A30C01A)
+I (../DriverInterface/ws2812.h)(0x6A2FCB06)
+I (../DriverInterface/rgb381.h)(0x6A30B436)
+I (../DriverInterface/usr_motor.h)(0x6A30F740)
+I (..\BoardInterface\one_chip_git_inf.h)(0x6A294FF7)
+F (..\tshell\van_bsp_debug_shell.c)(0x6A2FB68C)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\van_bsp_debug_shell.o --omf_browse mini7_v2\van_bsp_debug_shell.crf --depend mini7_v2\van_bsp_debug_shell.d)
+I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x599EDB3A)
+I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x599EDB3C)
+I (../tshell/van_bsp_debug_uart.h)(0x6761483F)
+I (../BoardInterface/onechip_include_header.h)(0x6A30F77C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x599EDB3E)
+I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x599EDB3E)
+I (../Core/Inc/main.h)(0x6A30F16C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -797,7 +1015,37 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\stm32f1xx_hal_uart.o --omf_browse mini7_v2\stm32f1xx_hal_uart.crf --depend mini7_v2\stm32f1xx_hal_uart.d)
+I (../Core/Inc/adc.h)(0x6A2F8EE7)
+I (../Core/Inc/dma.h)(0x6A2F5528)
+I (../Core/Inc/i2c.h)(0x6A2F5528)
+I (../Core/Inc/tim.h)(0x6A30F16B)
+I (../Core/Inc/usart.h)(0x6A2F5528)
+I (../Core/Inc/gpio.h)(0x6A2F5527)
+I (../BoardInterface/onechip_basic_define.h)(0x6761483A)
+I (../BoardInterface/onechip_devinf_define.h)(0x6A31119B)
+I (../tshell/van_bsp_debug_shell.h)(0x6761483F)
+I (../BoardInterface/onechip_load_inf.h)(0x6A2F9AD4)
+I (../tshell/van_com_algorithm.h)(0x67C53B5D)
+I (../DriverInterface/pt1000.h)(0x67E5FD4A)
+I (../DriverInterface/cJSON.h)(0x67170B32)
+I (../DriverInterface/VAN_ITCallBack.h)(0x65B5E29A)
+I (../DriverInterface/van_BSP_Com_Pwm.h)(0x6A17D7EE)
+I (../tshell/van_com_define.h)(0x67C53B5D)
+I (../DriverInterface/van_BSP_Scanner.h)(0x6A2FB122)
+I (../DriverInterface/van_BSP_ESPUart.h)(0x6A3109F7)
+I (../DriverInterface/ESP32_WROOM_32D.h)(0x6A30C01A)
+I (../DriverInterface/ws2812.h)(0x6A2FCB06)
+I (../DriverInterface/rgb381.h)(0x6A30B436)
+I (../DriverInterface/usr_motor.h)(0x6A30F740)
+F (..\tshell\van_bsp_debug_uart.c)(0x6A2F6BE7)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\van_bsp_debug_uart.o --omf_browse mini7_v2\van_bsp_debug_uart.crf --depend mini7_v2\van_bsp_debug_uart.d)
+I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x599EDB3C)
+I (..\tshell\van_bsp_debug_uart.h)(0x6761483F)
+I (../BoardInterface/onechip_include_header.h)(0x6A30F77C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x599EDB3E)
+I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x599EDB3E)
+I (../Core/Inc/main.h)(0x6A30F16C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
@@ -828,7 +1076,44 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
-F (../Core/Src/system_stm32f1xx.c)(0x6A2F5521)(--c99 -c --cpu Cortex-M3 -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\system_stm32f1xx.o --omf_browse mini7_v2\system_stm32f1xx.crf --depend mini7_v2\system_stm32f1xx.d)
+I (../Core/Inc/adc.h)(0x6A2F8EE7)
+I (../Core/Inc/dma.h)(0x6A2F5528)
+I (../Core/Inc/i2c.h)(0x6A2F5528)
+I (../Core/Inc/tim.h)(0x6A30F16B)
+I (../Core/Inc/usart.h)(0x6A2F5528)
+I (../Core/Inc/gpio.h)(0x6A2F5527)
+I (../BoardInterface/onechip_basic_define.h)(0x6761483A)
+I (../BoardInterface/onechip_devinf_define.h)(0x6A31119B)
+I (../tshell/van_bsp_debug_shell.h)(0x6761483F)
+I (../tshell/van_bsp_debug_uart.h)(0x6761483F)
+I (../BoardInterface/onechip_load_inf.h)(0x6A2F9AD4)
+I (../tshell/van_com_algorithm.h)(0x67C53B5D)
+I (../DriverInterface/pt1000.h)(0x67E5FD4A)
+I (../DriverInterface/cJSON.h)(0x67170B32)
+I (../DriverInterface/VAN_ITCallBack.h)(0x65B5E29A)
+I (../DriverInterface/van_BSP_Com_Pwm.h)(0x6A17D7EE)
+I (../tshell/van_com_define.h)(0x67C53B5D)
+I (../DriverInterface/van_BSP_Scanner.h)(0x6A2FB122)
+I (../DriverInterface/van_BSP_ESPUart.h)(0x6A3109F7)
+I (../DriverInterface/ESP32_WROOM_32D.h)(0x6A30C01A)
+I (../DriverInterface/ws2812.h)(0x6A2FCB06)
+I (../DriverInterface/rgb381.h)(0x6A30B436)
+I (../DriverInterface/usr_motor.h)(0x6A30F740)
+F (..\tshell\van_com_algorithm.c)(0x693777EF)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\van_com_algorithm.o --omf_browse mini7_v2\van_com_algorithm.crf --depend mini7_v2\van_com_algorithm.d)
+I (..\tshell\van_com_algorithm.h)(0x67C53B5D)
+I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x599EDB3C)
+F (..\DriverInterface\VAN_ITCallBack.c)(0x6A30FB46)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\van_itcallback.o --omf_browse mini7_v2\van_itcallback.crf --depend mini7_v2\van_itcallback.d)
+I (../BoardInterface/onechip_include_header.h)(0x6A30F77C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x599EDB3E)
+I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x599EDB3E)
+I (../Core/Inc/main.h)(0x6A30F16C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
+I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x6A2F551C)
 I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x6A2F5521)
 I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h)(0x6A2F5521)
 I (../Drivers/CMSIS/Include/core_cm3.h)(0x6A2F54FA)
@@ -837,10 +1122,69 @@ I (../Drivers/CMSIS/Include/cmsis_version.h)(0x6A2F54FA)
 I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x6A2F54FA)
 I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x6A2F54FA)
 I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x6A2F551E)
+I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x599EDB3C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
+I (../Core/Inc/adc.h)(0x6A2F8EE7)
+I (../Core/Inc/dma.h)(0x6A2F5528)
+I (../Core/Inc/i2c.h)(0x6A2F5528)
+I (../Core/Inc/tim.h)(0x6A30F16B)
+I (../Core/Inc/usart.h)(0x6A2F5528)
+I (../Core/Inc/gpio.h)(0x6A2F5527)
+I (../BoardInterface/onechip_basic_define.h)(0x6761483A)
+I (../BoardInterface/onechip_devinf_define.h)(0x6A31119B)
+I (../tshell/van_bsp_debug_shell.h)(0x6761483F)
+I (../tshell/van_bsp_debug_uart.h)(0x6761483F)
+I (../BoardInterface/onechip_load_inf.h)(0x6A2F9AD4)
+I (../tshell/van_com_algorithm.h)(0x67C53B5D)
+I (../DriverInterface/pt1000.h)(0x67E5FD4A)
+I (../DriverInterface/cJSON.h)(0x67170B32)
+I (../DriverInterface/VAN_ITCallBack.h)(0x65B5E29A)
+I (../DriverInterface/van_BSP_Com_Pwm.h)(0x6A17D7EE)
+I (../tshell/van_com_define.h)(0x67C53B5D)
+I (../DriverInterface/van_BSP_Scanner.h)(0x6A2FB122)
+I (../DriverInterface/van_BSP_ESPUart.h)(0x6A3109F7)
+I (../DriverInterface/ESP32_WROOM_32D.h)(0x6A30C01A)
+I (../DriverInterface/ws2812.h)(0x6A2FCB06)
+I (../DriverInterface/rgb381.h)(0x6A30B436)
+I (../DriverInterface/usr_motor.h)(0x6A30F740)
+F (..\DriverInterface\pt1000.c)(0x6A052BF7)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\pt1000.o --omf_browse mini7_v2\pt1000.crf --depend mini7_v2\pt1000.d)
+I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x599EDB3E)
+F (..\DriverInterface\van_BSP_Com_Pwm.c)(0x6A2F9D6E)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\van_bsp_com_pwm.o --omf_browse mini7_v2\van_bsp_com_pwm.crf --depend mini7_v2\van_bsp_com_pwm.d)
+I (../BoardInterface/onechip_include_header.h)(0x6A30F77C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x599EDB3E)
+I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x599EDB3E)
+I (../Core/Inc/main.h)(0x6A30F16C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
 I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x6A2F551C)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Include/core_cm3.h)(0x6A2F54FA)
+I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x599EDB3E)
+I (../Drivers/CMSIS/Include/cmsis_version.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x6A2F5521)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x6A2F551E)
 I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x599EDB3C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x6A2F551C)
@@ -859,3 +1203,409 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
 I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
+I (../Core/Inc/adc.h)(0x6A2F8EE7)
+I (../Core/Inc/dma.h)(0x6A2F5528)
+I (../Core/Inc/i2c.h)(0x6A2F5528)
+I (../Core/Inc/tim.h)(0x6A30F16B)
+I (../Core/Inc/usart.h)(0x6A2F5528)
+I (../Core/Inc/gpio.h)(0x6A2F5527)
+I (../BoardInterface/onechip_basic_define.h)(0x6761483A)
+I (../BoardInterface/onechip_devinf_define.h)(0x6A31119B)
+I (../tshell/van_bsp_debug_shell.h)(0x6761483F)
+I (../tshell/van_bsp_debug_uart.h)(0x6761483F)
+I (../BoardInterface/onechip_load_inf.h)(0x6A2F9AD4)
+I (../tshell/van_com_algorithm.h)(0x67C53B5D)
+I (../DriverInterface/pt1000.h)(0x67E5FD4A)
+I (../DriverInterface/cJSON.h)(0x67170B32)
+I (../DriverInterface/VAN_ITCallBack.h)(0x65B5E29A)
+I (../DriverInterface/van_BSP_Com_Pwm.h)(0x6A17D7EE)
+I (../tshell/van_com_define.h)(0x67C53B5D)
+I (../DriverInterface/van_BSP_Scanner.h)(0x6A2FB122)
+I (../DriverInterface/van_BSP_ESPUart.h)(0x6A3109F7)
+I (../DriverInterface/ESP32_WROOM_32D.h)(0x6A30C01A)
+I (../DriverInterface/ws2812.h)(0x6A2FCB06)
+I (../DriverInterface/rgb381.h)(0x6A30B436)
+I (../DriverInterface/usr_motor.h)(0x6A30F740)
+F (..\DriverInterface\van_BSP_Scanner.c)(0x6A30C647)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\van_bsp_scanner.o --omf_browse mini7_v2\van_bsp_scanner.crf --depend mini7_v2\van_bsp_scanner.d)
+I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\ctype.h)(0x599EDB3E)
+I (../BoardInterface/onechip_include_header.h)(0x6A30F77C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x599EDB3E)
+I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x599EDB3E)
+I (../Core/Inc/main.h)(0x6A30F16C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
+I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x6A2F551C)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Include/core_cm3.h)(0x6A2F54FA)
+I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x599EDB3E)
+I (../Drivers/CMSIS/Include/cmsis_version.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x6A2F551E)
+I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x599EDB3C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
+I (../Core/Inc/adc.h)(0x6A2F8EE7)
+I (../Core/Inc/dma.h)(0x6A2F5528)
+I (../Core/Inc/i2c.h)(0x6A2F5528)
+I (../Core/Inc/tim.h)(0x6A30F16B)
+I (../Core/Inc/usart.h)(0x6A2F5528)
+I (../Core/Inc/gpio.h)(0x6A2F5527)
+I (../BoardInterface/onechip_basic_define.h)(0x6761483A)
+I (../BoardInterface/onechip_devinf_define.h)(0x6A31119B)
+I (../tshell/van_bsp_debug_shell.h)(0x6761483F)
+I (../tshell/van_bsp_debug_uart.h)(0x6761483F)
+I (../BoardInterface/onechip_load_inf.h)(0x6A2F9AD4)
+I (../tshell/van_com_algorithm.h)(0x67C53B5D)
+I (../DriverInterface/pt1000.h)(0x67E5FD4A)
+I (../DriverInterface/cJSON.h)(0x67170B32)
+I (../DriverInterface/VAN_ITCallBack.h)(0x65B5E29A)
+I (../DriverInterface/van_BSP_Com_Pwm.h)(0x6A17D7EE)
+I (../tshell/van_com_define.h)(0x67C53B5D)
+I (../DriverInterface/van_BSP_Scanner.h)(0x6A2FB122)
+I (../DriverInterface/van_BSP_ESPUart.h)(0x6A3109F7)
+I (../DriverInterface/ESP32_WROOM_32D.h)(0x6A30C01A)
+I (../DriverInterface/ws2812.h)(0x6A2FCB06)
+I (../DriverInterface/rgb381.h)(0x6A30B436)
+I (../DriverInterface/usr_motor.h)(0x6A30F740)
+F (..\DriverInterface\cJSON.c)(0x67170B32)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\cjson.o --omf_browse mini7_v2\cjson.crf --depend mini7_v2\cjson.d)
+I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x599EDB3E)
+I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\limits.h)(0x599EDB3A)
+I (C:\Keil_v5\ARM\ARMCC\include\ctype.h)(0x599EDB3E)
+I (C:\Keil_v5\ARM\ARMCC\include\float.h)(0x599EDB3C)
+I (..\DriverInterface\cJSON.h)(0x67170B32)
+I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x599EDB3C)
+F (..\DriverInterface\ws2812.c)(0x6A2FD980)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\ws2812.o --omf_browse mini7_v2\ws2812.crf --depend mini7_v2\ws2812.d)
+I (..\DriverInterface\ws2812.h)(0x6A2FCB06)
+I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x599EDB3E)
+I (../Core/Inc/main.h)(0x6A30F16C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
+I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x6A2F551C)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Include/core_cm3.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_version.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x6A2F551E)
+I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x599EDB3C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
+I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x599EDB3C)
+I (../BoardInterface/onechip_include_header.h)(0x6A30F77C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x599EDB3E)
+I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x599EDB3E)
+I (../Core/Inc/adc.h)(0x6A2F8EE7)
+I (../Core/Inc/dma.h)(0x6A2F5528)
+I (../Core/Inc/i2c.h)(0x6A2F5528)
+I (../Core/Inc/tim.h)(0x6A30F16B)
+I (../Core/Inc/usart.h)(0x6A2F5528)
+I (../Core/Inc/gpio.h)(0x6A2F5527)
+I (../BoardInterface/onechip_basic_define.h)(0x6761483A)
+I (../BoardInterface/onechip_devinf_define.h)(0x6A31119B)
+I (../tshell/van_bsp_debug_shell.h)(0x6761483F)
+I (../tshell/van_bsp_debug_uart.h)(0x6761483F)
+I (../BoardInterface/onechip_load_inf.h)(0x6A2F9AD4)
+I (../tshell/van_com_algorithm.h)(0x67C53B5D)
+I (../DriverInterface/pt1000.h)(0x67E5FD4A)
+I (../DriverInterface/cJSON.h)(0x67170B32)
+I (../DriverInterface/VAN_ITCallBack.h)(0x65B5E29A)
+I (../DriverInterface/van_BSP_Com_Pwm.h)(0x6A17D7EE)
+I (../tshell/van_com_define.h)(0x67C53B5D)
+I (../DriverInterface/van_BSP_Scanner.h)(0x6A2FB122)
+I (../DriverInterface/van_BSP_ESPUart.h)(0x6A3109F7)
+I (../DriverInterface/ESP32_WROOM_32D.h)(0x6A30C01A)
+I (../DriverInterface/rgb381.h)(0x6A30B436)
+I (../DriverInterface/usr_motor.h)(0x6A30F740)
+F (..\DriverInterface\rgb381.c)(0x6A30C0F0)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\rgb381.o --omf_browse mini7_v2\rgb381.crf --depend mini7_v2\rgb381.d)
+I (..\DriverInterface\rgb381.h)(0x6A30B436)
+I (../BoardInterface/onechip_include_header.h)(0x6A30F77C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x599EDB3E)
+I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x599EDB3E)
+I (../Core/Inc/main.h)(0x6A30F16C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
+I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x6A2F551C)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Include/core_cm3.h)(0x6A2F54FA)
+I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x599EDB3E)
+I (../Drivers/CMSIS/Include/cmsis_version.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x6A2F551E)
+I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x599EDB3C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
+I (../Core/Inc/adc.h)(0x6A2F8EE7)
+I (../Core/Inc/dma.h)(0x6A2F5528)
+I (../Core/Inc/i2c.h)(0x6A2F5528)
+I (../Core/Inc/tim.h)(0x6A30F16B)
+I (../Core/Inc/usart.h)(0x6A2F5528)
+I (../Core/Inc/gpio.h)(0x6A2F5527)
+I (../BoardInterface/onechip_basic_define.h)(0x6761483A)
+I (../BoardInterface/onechip_devinf_define.h)(0x6A31119B)
+I (../tshell/van_bsp_debug_shell.h)(0x6761483F)
+I (../tshell/van_bsp_debug_uart.h)(0x6761483F)
+I (../BoardInterface/onechip_load_inf.h)(0x6A2F9AD4)
+I (../tshell/van_com_algorithm.h)(0x67C53B5D)
+I (../DriverInterface/pt1000.h)(0x67E5FD4A)
+I (../DriverInterface/cJSON.h)(0x67170B32)
+I (../DriverInterface/VAN_ITCallBack.h)(0x65B5E29A)
+I (../DriverInterface/van_BSP_Com_Pwm.h)(0x6A17D7EE)
+I (../tshell/van_com_define.h)(0x67C53B5D)
+I (../DriverInterface/van_BSP_Scanner.h)(0x6A2FB122)
+I (../DriverInterface/van_BSP_ESPUart.h)(0x6A3109F7)
+I (../DriverInterface/ESP32_WROOM_32D.h)(0x6A30C01A)
+I (../DriverInterface/ws2812.h)(0x6A2FCB06)
+I (../DriverInterface/rgb381.h)(0x6A30B436)
+I (../DriverInterface/usr_motor.h)(0x6A30F740)
+I (..\DriverInterface\TCA9548A.h)(0x6A30C0EA)
+F (..\DriverInterface\ESP32_WROOM_32D.c)(0x6A310ABC)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\esp32_wroom_32d.o --omf_browse mini7_v2\esp32_wroom_32d.crf --depend mini7_v2\esp32_wroom_32d.d)
+I (..\DriverInterface\ESP32_WROOM_32D.h)(0x6A30C01A)
+I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x599EDB3C)
+I (../BoardInterface/onechip_include_header.h)(0x6A30F77C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x599EDB3E)
+I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x599EDB3E)
+I (../Core/Inc/main.h)(0x6A30F16C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
+I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x6A2F551C)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Include/core_cm3.h)(0x6A2F54FA)
+I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x599EDB3E)
+I (../Drivers/CMSIS/Include/cmsis_version.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x6A2F551E)
+I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x599EDB3C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
+I (../Core/Inc/adc.h)(0x6A2F8EE7)
+I (../Core/Inc/dma.h)(0x6A2F5528)
+I (../Core/Inc/i2c.h)(0x6A2F5528)
+I (../Core/Inc/tim.h)(0x6A30F16B)
+I (../Core/Inc/usart.h)(0x6A2F5528)
+I (../Core/Inc/gpio.h)(0x6A2F5527)
+I (../BoardInterface/onechip_basic_define.h)(0x6761483A)
+I (../BoardInterface/onechip_devinf_define.h)(0x6A31119B)
+I (../tshell/van_bsp_debug_shell.h)(0x6761483F)
+I (../tshell/van_bsp_debug_uart.h)(0x6761483F)
+I (../BoardInterface/onechip_load_inf.h)(0x6A2F9AD4)
+I (../tshell/van_com_algorithm.h)(0x67C53B5D)
+I (../DriverInterface/pt1000.h)(0x67E5FD4A)
+I (../DriverInterface/cJSON.h)(0x67170B32)
+I (../DriverInterface/VAN_ITCallBack.h)(0x65B5E29A)
+I (../DriverInterface/van_BSP_Com_Pwm.h)(0x6A17D7EE)
+I (../tshell/van_com_define.h)(0x67C53B5D)
+I (../DriverInterface/van_BSP_Scanner.h)(0x6A2FB122)
+I (../DriverInterface/van_BSP_ESPUart.h)(0x6A3109F7)
+I (../DriverInterface/ESP32_WROOM_32D.h)(0x6A30C01A)
+I (../DriverInterface/ws2812.h)(0x6A2FCB06)
+I (../DriverInterface/rgb381.h)(0x6A30B436)
+I (../DriverInterface/usr_motor.h)(0x6A30F740)
+I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x599EDB3A)
+F (..\DriverInterface\van_BSP_ESPUart.c)(0x6A3108CC)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\van_bsp_espuart.o --omf_browse mini7_v2\van_bsp_espuart.crf --depend mini7_v2\van_bsp_espuart.d)
+I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\ctype.h)(0x599EDB3E)
+I (../BoardInterface/onechip_include_header.h)(0x6A30F77C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x599EDB3E)
+I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x599EDB3E)
+I (../Core/Inc/main.h)(0x6A30F16C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
+I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x6A2F551C)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Include/core_cm3.h)(0x6A2F54FA)
+I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x599EDB3E)
+I (../Drivers/CMSIS/Include/cmsis_version.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x6A2F551E)
+I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x599EDB3C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
+I (../Core/Inc/adc.h)(0x6A2F8EE7)
+I (../Core/Inc/dma.h)(0x6A2F5528)
+I (../Core/Inc/i2c.h)(0x6A2F5528)
+I (../Core/Inc/tim.h)(0x6A30F16B)
+I (../Core/Inc/usart.h)(0x6A2F5528)
+I (../Core/Inc/gpio.h)(0x6A2F5527)
+I (../BoardInterface/onechip_basic_define.h)(0x6761483A)
+I (../BoardInterface/onechip_devinf_define.h)(0x6A31119B)
+I (../tshell/van_bsp_debug_shell.h)(0x6761483F)
+I (../tshell/van_bsp_debug_uart.h)(0x6761483F)
+I (../BoardInterface/onechip_load_inf.h)(0x6A2F9AD4)
+I (../tshell/van_com_algorithm.h)(0x67C53B5D)
+I (../DriverInterface/pt1000.h)(0x67E5FD4A)
+I (../DriverInterface/cJSON.h)(0x67170B32)
+I (../DriverInterface/VAN_ITCallBack.h)(0x65B5E29A)
+I (../DriverInterface/van_BSP_Com_Pwm.h)(0x6A17D7EE)
+I (../tshell/van_com_define.h)(0x67C53B5D)
+I (../DriverInterface/van_BSP_Scanner.h)(0x6A2FB122)
+I (../DriverInterface/van_BSP_ESPUart.h)(0x6A3109F7)
+I (../DriverInterface/ESP32_WROOM_32D.h)(0x6A30C01A)
+I (../DriverInterface/ws2812.h)(0x6A2FCB06)
+I (../DriverInterface/rgb381.h)(0x6A30B436)
+I (../DriverInterface/usr_motor.h)(0x6A30F740)
+F (..\DriverInterface\usr_motor.c)(0x6A3104DD)(--c99 -c --cpu Cortex-M3 -g -O2 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../BoardInterface -I ../DriverInterface -I ../tshell

-I.\RTE\_mini7_V2

-IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include

-IC:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include

-D__UVISION_VERSION="526" -D_RTE_ -DSTM32F10X_HD -DUSE_HAL_DRIVER -DSTM32F103xE

-o mini7_v2\usr_motor.o --omf_browse mini7_v2\usr_motor.crf --depend mini7_v2\usr_motor.d)
+I (..\DriverInterface\usr_motor.h)(0x6A30F740)
+I (../BoardInterface/onechip_include_header.h)(0x6A30F77C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x599EDB3E)
+I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x599EDB3C)
+I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x599EDB3E)
+I (../Core/Inc/main.h)(0x6A30F16C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6A2F551C)
+I (../Core/Inc/stm32f1xx_hal_conf.h)(0x6A2F5529)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x6A2F551C)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h)(0x6A2F5521)
+I (../Drivers/CMSIS/Include/core_cm3.h)(0x6A2F54FA)
+I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x599EDB3E)
+I (../Drivers/CMSIS/Include/cmsis_version.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x6A2F54FA)
+I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x6A2F5521)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x6A2F551E)
+I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x599EDB3C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x6A2F551E)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x6A2F551C)
+I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x6A2F551C)
+I (../Core/Inc/adc.h)(0x6A2F8EE7)
+I (../Core/Inc/dma.h)(0x6A2F5528)
+I (../Core/Inc/i2c.h)(0x6A2F5528)
+I (../Core/Inc/tim.h)(0x6A30F16B)
+I (../Core/Inc/usart.h)(0x6A2F5528)
+I (../Core/Inc/gpio.h)(0x6A2F5527)
+I (../BoardInterface/onechip_basic_define.h)(0x6761483A)
+I (../BoardInterface/onechip_devinf_define.h)(0x6A31119B)
+I (../tshell/van_bsp_debug_shell.h)(0x6761483F)
+I (../tshell/van_bsp_debug_uart.h)(0x6761483F)
+I (../BoardInterface/onechip_load_inf.h)(0x6A2F9AD4)
+I (../tshell/van_com_algorithm.h)(0x67C53B5D)
+I (../DriverInterface/pt1000.h)(0x67E5FD4A)
+I (../DriverInterface/cJSON.h)(0x67170B32)
+I (../DriverInterface/VAN_ITCallBack.h)(0x65B5E29A)
+I (../DriverInterface/van_BSP_Com_Pwm.h)(0x6A17D7EE)
+I (../tshell/van_com_define.h)(0x67C53B5D)
+I (../DriverInterface/van_BSP_Scanner.h)(0x6A2FB122)
+I (../DriverInterface/van_BSP_ESPUart.h)(0x6A3109F7)
+I (../DriverInterface/ESP32_WROOM_32D.h)(0x6A30C01A)
+I (../DriverInterface/ws2812.h)(0x6A2FCB06)
+I (../DriverInterface/rgb381.h)(0x6A30B436)
+I (../DriverInterface/usr_motor.h)(0x6A30F740)

BIN
MDK-ARM/mini7_V2/startup_stm32f103xe.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_adc.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_adc_ex.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_cortex.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_dma.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_exti.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_flash.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_flash_ex.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_gpio.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_gpio_ex.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_i2c.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_msp.crf


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_msp.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_pwr.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_rcc.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_rcc_ex.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_tim.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_tim_ex.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_hal_uart.o


BIN
MDK-ARM/mini7_V2/stm32f1xx_it.crf


+ 30 - 0
MDK-ARM/mini7_V2/stm32f1xx_it.d

@@ -32,3 +32,33 @@ mini7_v2\stm32f1xx_it.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h
 mini7_v2\stm32f1xx_it.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h
 mini7_v2\stm32f1xx_it.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h
 mini7_v2\stm32f1xx_it.o: ../Core/Inc/stm32f1xx_it.h
+mini7_v2\stm32f1xx_it.o: ../BoardInterface/onechip_include_header.h
+mini7_v2\stm32f1xx_it.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h
+mini7_v2\stm32f1xx_it.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h
+mini7_v2\stm32f1xx_it.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h
+mini7_v2\stm32f1xx_it.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdlib.h
+mini7_v2\stm32f1xx_it.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\math.h
+mini7_v2\stm32f1xx_it.o: ../Core/Inc/adc.h
+mini7_v2\stm32f1xx_it.o: ../Core/Inc/dma.h
+mini7_v2\stm32f1xx_it.o: ../Core/Inc/i2c.h
+mini7_v2\stm32f1xx_it.o: ../Core/Inc/tim.h
+mini7_v2\stm32f1xx_it.o: ../Core/Inc/usart.h
+mini7_v2\stm32f1xx_it.o: ../Core/Inc/gpio.h
+mini7_v2\stm32f1xx_it.o: ../BoardInterface/onechip_basic_define.h
+mini7_v2\stm32f1xx_it.o: ../BoardInterface/onechip_devinf_define.h
+mini7_v2\stm32f1xx_it.o: ../tshell/van_bsp_debug_shell.h
+mini7_v2\stm32f1xx_it.o: ../tshell/van_bsp_debug_uart.h
+mini7_v2\stm32f1xx_it.o: ../BoardInterface/onechip_include_header.h
+mini7_v2\stm32f1xx_it.o: ../BoardInterface/onechip_load_inf.h
+mini7_v2\stm32f1xx_it.o: ../tshell/van_com_algorithm.h
+mini7_v2\stm32f1xx_it.o: ../DriverInterface/pt1000.h
+mini7_v2\stm32f1xx_it.o: ../DriverInterface/cJSON.h
+mini7_v2\stm32f1xx_it.o: ../DriverInterface/VAN_ITCallBack.h
+mini7_v2\stm32f1xx_it.o: ../DriverInterface/van_BSP_Com_Pwm.h
+mini7_v2\stm32f1xx_it.o: ../tshell/van_com_define.h
+mini7_v2\stm32f1xx_it.o: ../DriverInterface/van_BSP_Scanner.h
+mini7_v2\stm32f1xx_it.o: ../DriverInterface/van_BSP_ESPUart.h
+mini7_v2\stm32f1xx_it.o: ../DriverInterface/ESP32_WROOM_32D.h
+mini7_v2\stm32f1xx_it.o: ../DriverInterface/ws2812.h
+mini7_v2\stm32f1xx_it.o: ../DriverInterface/rgb381.h
+mini7_v2\stm32f1xx_it.o: ../DriverInterface/usr_motor.h

BIN
MDK-ARM/mini7_V2/stm32f1xx_it.o


BIN
MDK-ARM/mini7_V2/system_stm32f1xx.o


BIN
MDK-ARM/mini7_V2/tim.crf


BIN
MDK-ARM/mini7_V2/tim.o


BIN
MDK-ARM/mini7_V2/usart.crf


BIN
MDK-ARM/mini7_V2/usart.o


+ 13 - 13
MDK-ARM/startup_stm32f103xe.lst

@@ -60,9 +60,9 @@ ARM Macro Assembler    Page 1
    39 00000400         ;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
    40 00000400         ; </h>
    41 00000400         
-   42 00000400 00000200 
+   42 00000400 00000F00 
                        Heap_Size
-                               EQU              0x200
+                               EQU              0xf00
 
 
 
@@ -75,14 +75,14 @@ ARM Macro Assembler    Page 2
    45 00000000         __heap_base
    46 00000000         Heap_Mem
                                SPACE            Heap_Size
-   47 00000200         __heap_limit
-   48 00000200         
-   49 00000200                 PRESERVE8
-   50 00000200                 THUMB
-   51 00000200         
-   52 00000200         
-   53 00000200         ; Vector Table Mapped to Address 0 at Reset
-   54 00000200                 AREA             RESET, DATA, READONLY
+   47 00000F00         __heap_limit
+   48 00000F00         
+   49 00000F00                 PRESERVE8
+   50 00000F00                 THUMB
+   51 00000F00         
+   52 00000F00         
+   53 00000F00         ; Vector Table Mapped to Address 0 at Reset
+   54 00000F00                 AREA             RESET, DATA, READONLY
    55 00000000                 EXPORT           __Vectors
    56 00000000                 EXPORT           __Vectors_End
    57 00000000                 EXPORT           __Vectors_Size
@@ -552,7 +552,7 @@ ARM Macro Assembler    Page 9
               00000000 
               00000000 
               00000400 
-              00000200 
+              00000F00 
               00000000 
 Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw
 ork --depend=mini7_v2\startup_stm32f103xe.d -omini7_v2\startup_stm32f103xe.o -I
@@ -623,7 +623,7 @@ Symbol: __heap_base
    Uses
       None
 Comment: __heap_base unused
-__heap_limit 00000200
+__heap_limit 00000F00
 
 Symbol: __heap_limit
    Definitions
@@ -1398,7 +1398,7 @@ Comment: __user_initial_stackheap used once
 ARM Macro Assembler    Page 1 Alphabetic symbol ordering
 Absolute symbols
 
-Heap_Size 00000200
+Heap_Size 00000F00
 
 Symbol: Heap_Size
    Definitions

+ 1 - 1
MDK-ARM/startup_stm32f103xe.s

@@ -39,7 +39,7 @@ __initial_sp
 ;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
 ; </h>
 
-Heap_Size      EQU     0x200
+Heap_Size      EQU     0xf00
 
                 AREA    HEAP, NOINIT, READWRITE, ALIGN=3
 __heap_base

+ 149 - 112
mini7_V2.ioc

@@ -1,74 +1,79 @@
 #MicroXplorer Configuration settings - do not modify
 ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_12
-ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,master
+ADC1.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_13
+ADC1.ContinuousConvMode=ENABLE
+ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,master,ContinuousConvMode,Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,NbrOfConversion
+ADC1.NbrOfConversion=2
 ADC1.NbrOfConversionFlag=1
 ADC1.Rank-0\#ChannelRegularConversion=1
-ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
+ADC1.Rank-1\#ChannelRegularConversion=2
+ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_28CYCLES_5
+ADC1.SamplingTime-1\#ChannelRegularConversion=ADC_SAMPLETIME_28CYCLES_5
 ADC1.master=1
 CAD.formats=
 CAD.pinconfig=
 CAD.provider=
-Dma.Request0=UART4_RX
-Dma.Request1=UART4_TX
-Dma.Request2=USART1_RX
-Dma.Request3=USART1_TX
-Dma.Request4=USART2_RX
-Dma.Request5=USART2_TX
+Dma.ADC1.4.Direction=DMA_PERIPH_TO_MEMORY
+Dma.ADC1.4.Instance=DMA1_Channel1
+Dma.ADC1.4.MemDataAlignment=DMA_MDATAALIGN_HALFWORD
+Dma.ADC1.4.MemInc=DMA_MINC_ENABLE
+Dma.ADC1.4.Mode=DMA_CIRCULAR
+Dma.ADC1.4.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD
+Dma.ADC1.4.PeriphInc=DMA_PINC_DISABLE
+Dma.ADC1.4.Priority=DMA_PRIORITY_LOW
+Dma.ADC1.4.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
+Dma.Request0=USART1_RX
+Dma.Request1=USART1_TX
+Dma.Request2=USART2_RX
+Dma.Request3=USART2_TX
+Dma.Request4=ADC1
+Dma.Request5=UART4_RX
 Dma.RequestsNb=6
-Dma.UART4_RX.0.Direction=DMA_PERIPH_TO_MEMORY
-Dma.UART4_RX.0.Instance=DMA2_Channel3
-Dma.UART4_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE
-Dma.UART4_RX.0.MemInc=DMA_MINC_ENABLE
-Dma.UART4_RX.0.Mode=DMA_NORMAL
-Dma.UART4_RX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-Dma.UART4_RX.0.PeriphInc=DMA_PINC_DISABLE
-Dma.UART4_RX.0.Priority=DMA_PRIORITY_LOW
-Dma.UART4_RX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
-Dma.UART4_TX.1.Direction=DMA_MEMORY_TO_PERIPH
-Dma.UART4_TX.1.Instance=DMA2_Channel5
-Dma.UART4_TX.1.MemDataAlignment=DMA_MDATAALIGN_BYTE
-Dma.UART4_TX.1.MemInc=DMA_MINC_ENABLE
-Dma.UART4_TX.1.Mode=DMA_NORMAL
-Dma.UART4_TX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-Dma.UART4_TX.1.PeriphInc=DMA_PINC_DISABLE
-Dma.UART4_TX.1.Priority=DMA_PRIORITY_LOW
-Dma.UART4_TX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
-Dma.USART1_RX.2.Direction=DMA_PERIPH_TO_MEMORY
-Dma.USART1_RX.2.Instance=DMA1_Channel5
-Dma.USART1_RX.2.MemDataAlignment=DMA_MDATAALIGN_BYTE
-Dma.USART1_RX.2.MemInc=DMA_MINC_ENABLE
-Dma.USART1_RX.2.Mode=DMA_NORMAL
-Dma.USART1_RX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-Dma.USART1_RX.2.PeriphInc=DMA_PINC_DISABLE
-Dma.USART1_RX.2.Priority=DMA_PRIORITY_LOW
-Dma.USART1_RX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
-Dma.USART1_TX.3.Direction=DMA_MEMORY_TO_PERIPH
-Dma.USART1_TX.3.Instance=DMA1_Channel4
-Dma.USART1_TX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE
-Dma.USART1_TX.3.MemInc=DMA_MINC_ENABLE
-Dma.USART1_TX.3.Mode=DMA_NORMAL
-Dma.USART1_TX.3.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-Dma.USART1_TX.3.PeriphInc=DMA_PINC_DISABLE
-Dma.USART1_TX.3.Priority=DMA_PRIORITY_LOW
-Dma.USART1_TX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
-Dma.USART2_RX.4.Direction=DMA_PERIPH_TO_MEMORY
-Dma.USART2_RX.4.Instance=DMA1_Channel6
-Dma.USART2_RX.4.MemDataAlignment=DMA_MDATAALIGN_BYTE
-Dma.USART2_RX.4.MemInc=DMA_MINC_ENABLE
-Dma.USART2_RX.4.Mode=DMA_NORMAL
-Dma.USART2_RX.4.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-Dma.USART2_RX.4.PeriphInc=DMA_PINC_DISABLE
-Dma.USART2_RX.4.Priority=DMA_PRIORITY_LOW
-Dma.USART2_RX.4.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
-Dma.USART2_TX.5.Direction=DMA_MEMORY_TO_PERIPH
-Dma.USART2_TX.5.Instance=DMA1_Channel7
-Dma.USART2_TX.5.MemDataAlignment=DMA_MDATAALIGN_BYTE
-Dma.USART2_TX.5.MemInc=DMA_MINC_ENABLE
-Dma.USART2_TX.5.Mode=DMA_NORMAL
-Dma.USART2_TX.5.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-Dma.USART2_TX.5.PeriphInc=DMA_PINC_DISABLE
-Dma.USART2_TX.5.Priority=DMA_PRIORITY_LOW
-Dma.USART2_TX.5.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
+Dma.UART4_RX.5.Direction=DMA_PERIPH_TO_MEMORY
+Dma.UART4_RX.5.Instance=DMA2_Channel3
+Dma.UART4_RX.5.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.UART4_RX.5.MemInc=DMA_MINC_ENABLE
+Dma.UART4_RX.5.Mode=DMA_NORMAL
+Dma.UART4_RX.5.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.UART4_RX.5.PeriphInc=DMA_PINC_DISABLE
+Dma.UART4_RX.5.Priority=DMA_PRIORITY_LOW
+Dma.UART4_RX.5.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
+Dma.USART1_RX.0.Direction=DMA_PERIPH_TO_MEMORY
+Dma.USART1_RX.0.Instance=DMA1_Channel5
+Dma.USART1_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART1_RX.0.MemInc=DMA_MINC_ENABLE
+Dma.USART1_RX.0.Mode=DMA_NORMAL
+Dma.USART1_RX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.USART1_RX.0.PeriphInc=DMA_PINC_DISABLE
+Dma.USART1_RX.0.Priority=DMA_PRIORITY_LOW
+Dma.USART1_RX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
+Dma.USART1_TX.1.Direction=DMA_MEMORY_TO_PERIPH
+Dma.USART1_TX.1.Instance=DMA1_Channel4
+Dma.USART1_TX.1.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART1_TX.1.MemInc=DMA_MINC_ENABLE
+Dma.USART1_TX.1.Mode=DMA_NORMAL
+Dma.USART1_TX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.USART1_TX.1.PeriphInc=DMA_PINC_DISABLE
+Dma.USART1_TX.1.Priority=DMA_PRIORITY_LOW
+Dma.USART1_TX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
+Dma.USART2_RX.2.Direction=DMA_PERIPH_TO_MEMORY
+Dma.USART2_RX.2.Instance=DMA1_Channel6
+Dma.USART2_RX.2.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART2_RX.2.MemInc=DMA_MINC_ENABLE
+Dma.USART2_RX.2.Mode=DMA_NORMAL
+Dma.USART2_RX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.USART2_RX.2.PeriphInc=DMA_PINC_DISABLE
+Dma.USART2_RX.2.Priority=DMA_PRIORITY_LOW
+Dma.USART2_RX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
+Dma.USART2_TX.3.Direction=DMA_MEMORY_TO_PERIPH
+Dma.USART2_TX.3.Instance=DMA1_Channel7
+Dma.USART2_TX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART2_TX.3.MemInc=DMA_MINC_ENABLE
+Dma.USART2_TX.3.Mode=DMA_NORMAL
+Dma.USART2_TX.3.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.USART2_TX.3.PeriphInc=DMA_PINC_DISABLE
+Dma.USART2_TX.3.Priority=DMA_PRIORITY_LOW
+Dma.USART2_TX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
 File.Version=6
 GPIO.groupedBy=Group By Peripherals
 KeepUserPlacement=false
@@ -76,9 +81,10 @@ Mcu.CPN=STM32F103RET6
 Mcu.Family=STM32F1
 Mcu.IP0=ADC1
 Mcu.IP1=DMA
-Mcu.IP10=UART4
-Mcu.IP11=USART1
-Mcu.IP12=USART2
+Mcu.IP10=TIM4
+Mcu.IP11=UART4
+Mcu.IP12=USART1
+Mcu.IP13=USART2
 Mcu.IP2=I2C1
 Mcu.IP3=I2C2
 Mcu.IP4=NVIC
@@ -87,7 +93,7 @@ Mcu.IP6=SYS
 Mcu.IP7=TIM1
 Mcu.IP8=TIM2
 Mcu.IP9=TIM3
-Mcu.IPNb=13
+Mcu.IPNb=14
 Mcu.Name=STM32F103R(C-D-E)Tx
 Mcu.Package=LQFP64
 Mcu.Pin0=PD0-OSC_IN
@@ -99,52 +105,56 @@ Mcu.Pin13=PB1
 Mcu.Pin14=PB2
 Mcu.Pin15=PB10
 Mcu.Pin16=PB11
-Mcu.Pin17=PB13
-Mcu.Pin18=PB14
-Mcu.Pin19=PB15
+Mcu.Pin17=PB12
+Mcu.Pin18=PB13
+Mcu.Pin19=PB14
 Mcu.Pin2=PC2
-Mcu.Pin20=PC6
-Mcu.Pin21=PC7
-Mcu.Pin22=PC8
-Mcu.Pin23=PC9
-Mcu.Pin24=PA9
-Mcu.Pin25=PA10
-Mcu.Pin26=PC10
-Mcu.Pin27=PC11
-Mcu.Pin28=PC12
-Mcu.Pin29=PD2
+Mcu.Pin20=PB15
+Mcu.Pin21=PC6
+Mcu.Pin22=PC7
+Mcu.Pin23=PC8
+Mcu.Pin24=PC9
+Mcu.Pin25=PA9
+Mcu.Pin26=PA10
+Mcu.Pin27=PA13
+Mcu.Pin28=PA14
+Mcu.Pin29=PC10
 Mcu.Pin3=PC3
-Mcu.Pin30=PB3
-Mcu.Pin31=PB4
-Mcu.Pin32=PB5
-Mcu.Pin33=PB6
-Mcu.Pin34=PB7
-Mcu.Pin35=PB8
-Mcu.Pin36=VP_SYS_VS_ND
-Mcu.Pin37=VP_SYS_VS_Systick
-Mcu.Pin38=VP_TIM1_VS_ClockSourceINT
-Mcu.Pin39=VP_TIM2_VS_ClockSourceINT
+Mcu.Pin30=PC11
+Mcu.Pin31=PC12
+Mcu.Pin32=PD2
+Mcu.Pin33=PB3
+Mcu.Pin34=PB4
+Mcu.Pin35=PB5
+Mcu.Pin36=PB6
+Mcu.Pin37=PB7
+Mcu.Pin38=PB8
+Mcu.Pin39=VP_SYS_VS_Systick
 Mcu.Pin4=PA1
-Mcu.Pin40=VP_TIM3_VS_ClockSourceINT
+Mcu.Pin40=VP_TIM1_VS_ClockSourceINT
+Mcu.Pin41=VP_TIM2_VS_ClockSourceINT
+Mcu.Pin42=VP_TIM3_VS_ClockSourceINT
+Mcu.Pin43=VP_TIM4_VS_ClockSourceINT
 Mcu.Pin5=PA2
 Mcu.Pin6=PA3
 Mcu.Pin7=PA4
 Mcu.Pin8=PA5
 Mcu.Pin9=PA6
-Mcu.PinsNb=41
+Mcu.PinsNb=44
 Mcu.ThirdPartyNb=0
 Mcu.UserConstants=
 Mcu.UserName=STM32F103RETx
 MxCube.Version=6.17.0
 MxDb.Version=DB.6.0.170
 NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
+NVIC.DMA1_Channel1_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
 NVIC.DMA1_Channel4_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
 NVIC.DMA1_Channel5_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
 NVIC.DMA1_Channel6_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
 NVIC.DMA1_Channel7_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
 NVIC.DMA2_Channel3_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
-NVIC.DMA2_Channel4_5_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
 NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
+NVIC.EXTI9_5_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
 NVIC.ForceEnableDMAVector=true
 NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
 NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
@@ -165,32 +175,39 @@ PA1.Signal=GPIO_Input
 PA10.Locked=true
 PA10.Mode=Asynchronous
 PA10.Signal=USART1_RX
+PA13.Mode=Serial_Wire
+PA13.Signal=SYS_JTMS-SWDIO
+PA14.Mode=Serial_Wire
+PA14.Signal=SYS_JTCK-SWCLK
 PA2.Locked=true
 PA2.Mode=Asynchronous
 PA2.Signal=USART2_TX
 PA3.Locked=true
 PA3.Mode=Asynchronous
 PA3.Signal=USART2_RX
-PA4.GPIOParameters=GPIO_Label
+PA4.GPIOParameters=PinState,GPIO_Label
 PA4.GPIO_Label=MINI7_V2_WIFI_MUX
 PA4.Locked=true
+PA4.PinState=GPIO_PIN_SET
 PA4.Signal=GPIO_Output
 PA5.GPIOParameters=GPIO_Label
 PA5.GPIO_Label=MINI7_V2_DEC_S1
 PA5.Locked=true
 PA5.Signal=GPIO_Input
-PA6.GPIOParameters=GPIO_Label
+PA6.GPIOParameters=PinState,GPIO_Label
 PA6.GPIO_Label=MINI7_V2_BCK_S1
 PA6.Locked=true
+PA6.PinState=GPIO_PIN_SET
 PA6.Signal=GPIO_Output
 PA7.Locked=true
 PA7.Signal=GPIO_Input
 PA9.Locked=true
 PA9.Mode=Asynchronous
 PA9.Signal=USART1_TX
-PB0.GPIOParameters=GPIO_Label
+PB0.GPIOParameters=PinState,GPIO_Label
 PB0.GPIO_Label=MINI7_V2_BCK_S2
 PB0.Locked=true
+PB0.PinState=GPIO_PIN_SET
 PB0.Signal=GPIO_Output
 PB1.GPIOParameters=GPIO_Label
 PB1.GPIO_Label=MINI7_V2_DEC_S2 
@@ -202,6 +219,11 @@ PB10.Signal=I2C2_SCL
 PB11.Locked=true
 PB11.Mode=I2C
 PB11.Signal=I2C2_SDA
+PB12.GPIOParameters=GPIO_Speed,GPIO_Label
+PB12.GPIO_Label=MINI7_V2_indicator_light
+PB12.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
+PB12.Locked=true
+PB12.Signal=GPIO_Output
 PB13.GPIOParameters=GPIO_Label
 PB13.GPIO_Label=MINI7_V2_SYS_B
 PB13.Locked=true
@@ -235,10 +257,11 @@ PB6.Signal=I2C1_SCL
 PB7.Locked=true
 PB7.Mode=I2C
 PB7.Signal=I2C1_SDA
-PB8.GPIOParameters=GPIO_Label
+PB8.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI
 PB8.GPIO_Label=MINI7_V2_KEY
+PB8.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING
 PB8.Locked=true
-PB8.Signal=GPIO_Input
+PB8.Signal=GPXTI8
 PC10.Locked=true
 PC10.Mode=Asynchronous
 PC10.Signal=UART4_TX
@@ -253,22 +276,22 @@ PC2.Locked=true
 PC2.Signal=ADCx_IN12
 PC3.Locked=true
 PC3.Signal=ADCx_IN13
-PC4.GPIOParameters=GPIO_Label
-PC4.GPIO_Label=MINI7_V2_indicator_light
+PC4.GPIOParameters=PinState,GPIO_Label
+PC4.GPIO_Label=MINI7_V2_BEEPER
 PC4.Locked=true
+PC4.PinState=GPIO_PIN_RESET
 PC4.Signal=GPIO_Output
 PC6.Locked=true
 PC6.Signal=S_TIM3_CH1
 PC7.Locked=true
 PC7.Signal=S_TIM3_CH2
-PC8.GPIOParameters=GPIO_Label
-PC8.GPIO_Label=MINI7_V2_MOTOR_DIR
 PC8.Locked=true
-PC8.Signal=GPIO_Output
-PC9.GPIOParameters=GPIO_Label
+PC8.Signal=S_TIM3_CH3
+PC9.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI
 PC9.GPIO_Label=MINI7_V2_REF_SW2
+PC9.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING
 PC9.Locked=true
-PC9.Signal=GPIO_Input
+PC9.Signal=GPXTI9
 PCC.Checker=false
 PCC.Display=Plot\: All Steps
 PCC.Line=STM32F103
@@ -300,7 +323,7 @@ ProjectManager.FirmwarePackage=STM32Cube FW_F1 V1.8.7
 ProjectManager.FreePins=false
 ProjectManager.FreePinsContext=
 ProjectManager.HalAssertFull=false
-ProjectManager.HeapSize=0x200
+ProjectManager.HeapSize=0xf00
 ProjectManager.KeepUserCode=true
 ProjectManager.LastFirmware=true
 ProjectManager.LibraryCopy=0
@@ -318,7 +341,7 @@ ProjectManager.ToolChainLocation=
 ProjectManager.UAScriptAfterPath=
 ProjectManager.UAScriptBeforePath=
 ProjectManager.UnderRoot=false
-ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_UART4_Init-UART4-false-HAL-true,6-MX_USART1_UART_Init-USART1-false-HAL-true,7-MX_USART2_UART_Init-USART2-false-HAL-true,8-MX_I2C1_Init-I2C1-false-HAL-true,9-MX_I2C2_Init-I2C2-false-HAL-true,10-MX_TIM1_Init-TIM1-false-HAL-true,11-MX_TIM2_Init-TIM2-false-HAL-true,12-MX_TIM3_Init-TIM3-false-HAL-true
+ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_UART4_Init-UART4-false-HAL-true,6-MX_USART1_UART_Init-USART1-false-HAL-true,7-MX_USART2_UART_Init-USART2-false-HAL-true,8-MX_I2C1_Init-I2C1-false-HAL-true,9-MX_I2C2_Init-I2C2-false-HAL-true,10-MX_TIM1_Init-TIM1-false-HAL-true,11-MX_TIM2_Init-TIM2-false-HAL-true,12-MX_TIM3_Init-TIM3-false-HAL-true,13-MX_TIM4_Init-TIM4-false-HAL-true
 RCC.ADCFreqValue=8000000
 RCC.AHBFreq_Value=16000000
 RCC.APB1CLKDivider=RCC_HCLK_DIV2
@@ -347,26 +370,38 @@ SH.ADCx_IN12.0=ADC1_IN12,IN12
 SH.ADCx_IN12.ConfNb=1
 SH.ADCx_IN13.0=ADC1_IN13,IN13
 SH.ADCx_IN13.ConfNb=1
+SH.GPXTI8.0=GPIO_EXTI8
+SH.GPXTI8.ConfNb=1
+SH.GPXTI9.0=GPIO_EXTI9
+SH.GPXTI9.ConfNb=1
 SH.S_TIM3_CH1.0=TIM3_CH1,PWM Generation1 CH1
 SH.S_TIM3_CH1.ConfNb=1
 SH.S_TIM3_CH2.0=TIM3_CH2,PWM Generation2 CH2
 SH.S_TIM3_CH2.ConfNb=1
+SH.S_TIM3_CH3.0=TIM3_CH3,PWM Generation3 CH3
+SH.S_TIM3_CH3.ConfNb=1
 TIM1.Channel-Output\ Compare3\ CH3N=TIM_CHANNEL_3
-TIM1.IPParameters=Channel-Output Compare3 CH3N
+TIM1.IPParameters=Channel-Output Compare3 CH3N,Prescaler,OCNPolarity_3
+TIM1.OCNPolarity_3=TIM_OCNPOLARITY_LOW
+TIM1.Prescaler=63
+TIM2.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
 TIM2.ClockDivision=TIM_CLOCKDIVISION_DIV4
-TIM2.IPParameters=Period,ClockDivision
-TIM2.Period=4000
+TIM2.IPParameters=Period,ClockDivision,AutoReloadPreload
+TIM2.Period=16000
+TIM3.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
 TIM3.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
 TIM3.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
-TIM3.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2
+TIM3.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
+TIM3.ClockDivision=TIM_CLOCKDIVISION_DIV1
+TIM3.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,ClockDivision,AutoReloadPreload,Period,Prescaler,Channel-PWM Generation3 CH3
+TIM3.Period=1000
+TIM3.Prescaler=63
 UART4.IPParameters=VirtualMode
 UART4.VirtualMode=Asynchronous
 USART1.IPParameters=VirtualMode
 USART1.VirtualMode=VM_ASYNC
 USART2.IPParameters=VirtualMode
 USART2.VirtualMode=VM_ASYNC
-VP_SYS_VS_ND.Mode=No_Debug
-VP_SYS_VS_ND.Signal=SYS_VS_ND
 VP_SYS_VS_Systick.Mode=SysTick
 VP_SYS_VS_Systick.Signal=SYS_VS_Systick
 VP_TIM1_VS_ClockSourceINT.Mode=Internal
@@ -375,4 +410,6 @@ VP_TIM2_VS_ClockSourceINT.Mode=Internal
 VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT
 VP_TIM3_VS_ClockSourceINT.Mode=Internal
 VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT
+VP_TIM4_VS_ClockSourceINT.Mode=Internal
+VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT
 board=custom

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor