Commit 51d0bbfbfbf4c4a4e56e5e2d27be548c76f7e806

Authored by NightIsDark
1 parent 0e00ed59

MFGW 2.0 init

.gitignore
1 OBJ/ 1 OBJ/
2 USER/JLinkLog.txt 2 USER/JLinkLog.txt
3 USER/JLinkSettings.ini 3 USER/JLinkSettings.ini
4 -USER/.uvguix.Admin 4 +USER/IAP.uvguix.Admin
5 USER/uvguix.Administrator 5 USER/uvguix.Administrator
6 USER/DebugConfig/ 6 USER/DebugConfig/
CORE/startup_stm32f40_41xxx.s
@@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@
38 ; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> 38 ; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
39 ; </h> 39 ; </h>
40 40
41 -Stack_Size EQU 0x00000400 41 +Stack_Size EQU 0x00000C00
42 42
43 AREA STACK, NOINIT, READWRITE, ALIGN=3 43 AREA STACK, NOINIT, READWRITE, ALIGN=3
44 Stack_Mem SPACE Stack_Size 44 Stack_Mem SPACE Stack_Size
@@ -178,7 +178,7 @@ Reset_Handler PROC @@ -178,7 +178,7 @@ Reset_Handler PROC
178 EXPORT Reset_Handler [WEAK] 178 EXPORT Reset_Handler [WEAK]
179 IMPORT SystemInit 179 IMPORT SystemInit
180 IMPORT __main 180 IMPORT __main
181 - 181 +
182 LDR R0, =SystemInit 182 LDR R0, =SystemInit
183 BLX R0 183 BLX R0
184 LDR R0, =__main 184 LDR R0, =__main
HARDWARE/FLASH/flash.c
@@ -4,8 +4,6 @@ u32 STMFLASH_ReadWord(u32 faddr) @@ -4,8 +4,6 @@ u32 STMFLASH_ReadWord(u32 faddr)
4 { 4 {
5 return *(vu32*)faddr; 5 return *(vu32*)faddr;
6 } 6 }
7 -  
8 -  
9 uint16_t STMFLASH_GetFlashSector(u32 addr) 7 uint16_t STMFLASH_GetFlashSector(u32 addr)
10 { 8 {
11 if(addr<ADDR_FLASH_SECTOR_1)return FLASH_Sector_0; 9 if(addr<ADDR_FLASH_SECTOR_1)return FLASH_Sector_0;
@@ -22,56 +20,128 @@ uint16_t STMFLASH_GetFlashSector(u32 addr) @@ -22,56 +20,128 @@ uint16_t STMFLASH_GetFlashSector(u32 addr)
22 return FLASH_Sector_11; 20 return FLASH_Sector_11;
23 } 21 }
24 22
25 -void STMFLASH_Write(u32 WriteAddr,u32 *pBuffer,u32 NumToWrite)  
26 -{  
27 - FLASH_Status status = FLASH_COMPLETE;  
28 - u32 addrx=0;  
29 - u32 endaddr=0;  
30 - if(WriteAddr%4)  
31 - return; //非法地址  
32 -  
33 - FLASH_Unlock(); //解锁 23 +
  24 +uint32_t STM_FLASH_Erase(uint32_t addrx)
  25 +{
  26 + //解锁
34 FLASH_DataCacheCmd(DISABLE);//FLASH擦除期间,必须禁止数据缓存 27 FLASH_DataCacheCmd(DISABLE);//FLASH擦除期间,必须禁止数据缓存
35 -  
36 - addrx = WriteAddr; //写入的起始地址  
37 - endaddr = WriteAddr + NumToWrite; //写入的结束地址  
38 -  
39 - if(addrx<0X1FFF0000) //只有主存储区,才需要执行擦除操作!! 28 + FLASH_Unlock();
  29 + uint8_t ret = 1;
  30 + switch(addrx)
40 { 31 {
41 - if(addrx == APP_RUN_ADDR) 32 + case APP_RUN_ADDR:
  33 + {
  34 + if(FLASH_COMPLETE != FLASH_EraseSector(FLASH_Sector_4,VoltageRange_3))//VCC=2.7~3.6V之间!!
  35 + {
  36 + ret = 0;
  37 + break;
  38 + }
  39 + if(FLASH_COMPLETE != FLASH_EraseSector(FLASH_Sector_5,VoltageRange_3))//VCC=2.7~3.6V之间!!
  40 + {
  41 + ret = 0;
  42 + break;
  43 + }
  44 + }
  45 + break;
  46 + case FLAG_BASE_ADDR:
42 { 47 {
43 - status = FLASH_EraseSector(FLASH_Sector_4,VoltageRange_3);//VCC=2.7~3.6V之间!!  
44 - status = FLASH_EraseSector(FLASH_Sector_5,VoltageRange_3); 48 + if(FLASH_COMPLETE != FLASH_EraseSector(FLASH_Sector_1,VoltageRange_3))//VCC=2.7~3.6V之间!!
  49 + {
  50 + ret = 0;
  51 + break;
  52 + }
45 } 53 }
46 - else if (addrx == FLAG_BASE_ADDR) 54 + break;
  55 + case PARAM_BASE_ADDR:
47 { 56 {
48 - status = FLASH_EraseSector(FLASH_Sector_1,VoltageRange_3); 57 + if(FLASH_COMPLETE != FLASH_EraseSector(FLASH_Sector_2,VoltageRange_3))//VCC=2.7~3.6V之间!!
  58 + {
  59 + ret = 0;
  60 + break;
  61 + }
49 } 62 }
50 - 63 + break;
  64 + case APP_LOAD_ADDR:
  65 + {
  66 + if(FLASH_COMPLETE != FLASH_EraseSector(FLASH_Sector_6,VoltageRange_3))//VCC=2.7~3.6V之间!!
  67 + {
  68 + ret = 0;
  69 + break;
  70 + }
  71 + if(FLASH_COMPLETE != FLASH_EraseSector(FLASH_Sector_7,VoltageRange_3))//VCC=2.7~3.6V之间!!
  72 + {
  73 + ret = 0;
  74 + break;
  75 + }
  76 + }
  77 + break;
  78 + default:break;
  79 + }
  80 + FLASH_Lock();
  81 + FLASH_DataCacheCmd(ENABLE);//FLASH擦除期间,必须禁止数据缓存
  82 + return ret;
  83 +}
  84 +
  85 +uint32_t STM_FLASH_Get_Block_Size(uint32_t addrx)
  86 +{
  87 + switch(addrx)
  88 + {
  89 + case APP_RUN_ADDR:
  90 + return 192*1024;
  91 + case FLAG_BASE_ADDR:
  92 + case PARAM_BASE_ADDR:
  93 + return 16*1024;
  94 + case APP_LOAD_ADDR:
  95 + return 192*1024;
  96 + default:break;
51 } 97 }
  98 + return 0;
  99 +}
  100 +
  101 +//FlashAddress: start address for writing data buffer
  102 +//Data: pointer on data buffer
  103 +//DataLength: length of data buffer (unit is 32-bit word)
  104 +//return:
  105 +// 0=Data successfully written to Flash memory
  106 +// 1=Error occurred while writing data in Flash memory
  107 +uint32_t STMFLASH_Write(u32 WriteAddr,u32 *pBuffer,u32 NumToWrite)
  108 +{
  109 + u32 endaddr=0;
  110 + if(WriteAddr%4)
  111 + return 1 ; //非法地址
  112 + endaddr = WriteAddr + NumToWrite; //写入的结束地址
52 113
53 - if(status==FLASH_COMPLETE) 114 + FLASH_Unlock(); //解锁
  115 + FLASH_DataCacheCmd(ENABLE);//FLASH擦除期间,必须禁止数据缓存
  116 +
  117 +
  118 + while(WriteAddr<endaddr)//写数据
54 { 119 {
55 - while(WriteAddr<endaddr)//写数据 120 + if (FLASH_ProgramWord(WriteAddr, *pBuffer) == FLASH_COMPLETE)
56 { 121 {
57 - if(FLASH_ProgramWord(WriteAddr,*pBuffer)!=FLASH_COMPLETE)//写入数据  
58 - {  
59 - break; //写入异常 122 + /* Check the written value */
  123 + if (STMFLASH_ReadWord(WriteAddr) != *pBuffer)
  124 + {
  125 + /* Flash content doesn't match SRAM content */
  126 +// FLASH_DataCacheCmd(ENABLE); //FLASH擦除结束,开启数据缓存
  127 + FLASH_Lock();//上锁
  128 + return 1;
60 } 129 }
  130 + /* Increment FLASH destination address */
61 WriteAddr+=4; 131 WriteAddr+=4;
62 pBuffer++; 132 pBuffer++;
63 - } 133 + }
  134 + else
  135 + {
  136 +// FLASH_DataCacheCmd(ENABLE); //FLASH擦除结束,开启数据缓存
  137 + FLASH_Lock();//上锁
  138 + return 1;
  139 + }
64 } 140 }
65 -  
66 - FLASH_DataCacheCmd(ENABLE); //FLASH擦除结束,开启数据缓存  
67 - FLASH_Lock();//上锁 141 +// FLASH_DataCacheCmd(ENABLE); //FLASH擦除结束,开启数据缓存
  142 + FLASH_Lock();//上锁
  143 + return 0;
68 } 144 }
69 -  
70 -  
71 -  
72 -  
73 -  
74 -  
75 #define Tracy 0 145 #define Tracy 0
76 #if Tracy 146 #if Tracy
77 void flash_write(u32 addr,u16 data) 147 void flash_write(u32 addr,u16 data)
@@ -131,5 +201,27 @@ void flash_erase(u32 addrx) @@ -131,5 +201,27 @@ void flash_erase(u32 addrx)
131 FLASH_DataCacheCmd(ENABLE); //FLASH擦除结束,开启数据缓存 201 FLASH_DataCacheCmd(ENABLE); //FLASH擦除结束,开启数据缓存
132 FLASH_Lock(); 202 FLASH_Lock();
133 } 203 }
  204 +
  205 +uint32_t STM_FLASH_Erase(uint32_t StartSector)
  206 +{
  207 + uint32_t UserStartSector = FLASH_Sector_1, i = 0;
  208 +
  209 + /* Get the sector where start the user flash area */
  210 + UserStartSector = STMFLASH_GetFlashSector(StartSector);
  211 +
  212 + for(i = UserStartSector; i <= FLASH_Sector_5; i += 8)
  213 + {
  214 + /* Device voltage range supposed to be [2.7V to 3.6V], the operation will
  215 + be done by word */
  216 + if (FLASH_EraseSector(i, VoltageRange_3) != FLASH_COMPLETE)
  217 + {
  218 + /* Error occurred while page erase */
  219 + return (1);
  220 + }
  221 + }
  222 +
  223 + return (0);
  224 +}
  225 +
134 #endif 226 #endif
135 227
HARDWARE/FLASH/flash.h
1 #ifndef _FLASH_H 1 #ifndef _FLASH_H
2 #define _FLASH_H 2 #define _FLASH_H
3 -  
4 -  
5 #include "dev.h" 3 #include "dev.h"
6 4
7 -  
8 -  
9 //FLASH 扇区的起始地址 5 //FLASH 扇区的起始地址
10 -#define ADDR_FLASH_SECTOR_0 ((u32)0x08000000) //扇区0起始地址, 16 Kbytes  
11 -#define ADDR_FLASH_SECTOR_1 ((u32)0x08004000) //扇区1起始地址, 16 Kbytes  
12 -#define ADDR_FLASH_SECTOR_2 ((u32)0x08008000) //扇区2起始地址, 16 Kbytes  
13 -  
14 -#define ADDR_FLASH_SECTOR_3 ((u32)0x0800C000) //扇区3起始地址, 16 Kbytes 6 +#define ADDR_FLASH_SECTOR_0 ((uint32_t)0x08000000) //扇区0起始地址, 16 Kbytes
  7 +#define ADDR_FLASH_SECTOR_1 ((uint32_t)0x08004000) //扇区1起始地址, 16 Kbytes
  8 +#define ADDR_FLASH_SECTOR_2 ((uint32_t)0x08008000) //扇区2起始地址, 16 Kbytes
15 9
16 -#define ADDR_FLASH_SECTOR_4 ((u32)0x08010000) //扇区4起始地址, 64 Kbytes 10 +#define ADDR_FLASH_SECTOR_3 ((uint32_t)0x0800C000) //扇区3起始地址, 16 Kbytes
17 11
18 -#define ADDR_FLASH_SECTOR_5 ((u32)0x08020000) //扇区5起始地址, 128 Kbytes  
19 -#define ADDR_FLASH_SECTOR_6 ((u32)0x08040000) //扇区6起始地址, 128 Kbytes  
20 -#define ADDR_FLASH_SECTOR_7 ((u32)0x08060000) //扇区7起始地址, 128 Kbytes  
21 -#define ADDR_FLASH_SECTOR_8 ((u32)0x08080000) //扇区8起始地址, 128 Kbytes  
22 -#define ADDR_FLASH_SECTOR_9 ((u32)0x080A0000) //扇区9起始地址, 128 Kbytes  
23 -#define ADDR_FLASH_SECTOR_10 ((u32)0x080C0000) //扇区10起始地址,128 Kbytes  
24 -#define ADDR_FLASH_SECTOR_11 ((u32)0x080E0000) //扇区11起始地址,128 Kbytes 12 +#define ADDR_FLASH_SECTOR_4 ((uint32_t)0x08010000) //扇区4起始地址, 64 Kbytes
25 13
  14 +#define ADDR_FLASH_SECTOR_5 ((uint32_t)0x08020000) //扇区5起始地址, 128 Kbytes
  15 +#define ADDR_FLASH_SECTOR_6 ((uint32_t)0x08040000) //扇区6起始地址, 128 Kbytes
  16 +#define ADDR_FLASH_SECTOR_7 ((uint32_t)0x08060000) //扇区7起始地址, 128 Kbytes
  17 +#define ADDR_FLASH_SECTOR_8 ((uint32_t)0x08080000) //扇区8起始地址, 128 Kbytes
  18 +#define ADDR_FLASH_SECTOR_9 ((uint32_t)0x080A0000) //扇区9起始地址, 128 Kbytes
  19 +#define ADDR_FLASH_SECTOR_10 ((uint32_t)0x080C0000) //扇区10起始地址,128 Kbytes
  20 +#define ADDR_FLASH_SECTOR_11 ((uint32_t)0x080E0000) //扇区11起始地址,128 Kbytes
26 21
27 22
28 23
  24 +uint32_t STM_FLASH_Erase(uint32_t addrx);
29 25
30 -void flash_write(u32 addr,u16 data);  
31 -u16 flash_read(u32 addr);  
32 -void flash_erase(u32 addrx);  
33 -void flash_write_string(u32 addr,u16* buff,u16 length);  
34 -void flash_read_string(u32 addr,u16 *rbuff,u16 length); 26 +void flash_write(uint32_t addr,uint16_t data);
  27 +uint16_t flash_read(uint32_t addr);
  28 +void flash_erase(uint32_t addrx);
  29 +void flash_write_string(uint32_t addr,uint16_t* buff,uint16_t length);
  30 +void flash_read_string(uint32_t addr,uint16_t *rbuff,uint16_t length);
35 31
36 -u16 STMFLASH_GetFlashSector(u32 addr);  
37 -u32 STMFLASH_ReadWord(u32 faddr); //读出字  
38 -void STMFLASH_Write(u32 WriteAddr,u32 *pBuffer,u32 NumToWrite); //从指定地址开始写入指定长度的数据  
39 -void STMFLASH_Read(u32 ReadAddr,u32 *pBuffer,u32 NumToRead); //从指定地址开始读出指定长度的数据 32 +uint32_t STM_FLASH_Get_Block_Size(uint32_t addrx);
  33 +uint16_t STMFLASH_GetFlashSector(uint32_t addr);
  34 +uint32_t STMFLASH_ReadWord(uint32_t faddr); //读出字
  35 +uint32_t STMFLASH_Write(uint32_t WriteAddr,uint32_t *pBuffer,uint32_t NumToWrite); //从指定地址开始写入指定长度的数据
  36 +void STMFLASH_Read(uint32_t ReadAddr,uint32_t *pBuffer,uint32_t NumToRead); //从指定地址开始读出指定长度的数据
40 37
41 38
42 #endif 39 #endif
HARDWARE/LED/led.c
1 #include "led.h" 1 #include "led.h"
2 -//////////////////////////////////////////////////////////////////////////////////  
3 -//本程序只供学习使用,未经作者许可,不得用于其它任何用途  
4 -//ALIENTEK STM32F407开发板  
5 -//LED驱动代码  
6 -//正点原子@ALIENTEK  
7 -//技术论坛:www.openedv.com  
8 -//创建日期:2014/5/2  
9 -//版本:V1.0  
10 -//版权所有,盗版必究。  
11 -//Copyright(C) 广州市星翼电子科技有限公司 2014-2024  
12 -//All rights reserved  
13 -//////////////////////////////////////////////////////////////////////////////////  
14 -  
15 -//初始化PF9和PF10为输出口.并使能这两个口的时钟  
16 -//LED IO初始化  
17 void LED_Init(void) 2 void LED_Init(void)
18 { 3 {
19 GPIO_InitTypeDef GPIO_InitStructure; 4 GPIO_InitTypeDef GPIO_InitStructure;
20 -  
21 - RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF时钟  
22 - 5 + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能GPIOF时钟
23 //GPIOF9,F10初始化设置 6 //GPIOF9,F10初始化设置
24 - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; 7 + GPIO_InitStructure.GPIO_Pin = ARM_LED1_Pin;
25 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式 8 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
26 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 9 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
27 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz 10 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
28 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 11 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
29 - GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化  
30 -  
31 - GPIO_SetBits(GPIOF,GPIO_Pin_9 | GPIO_Pin_10);//GPIOF9,F10设置高,灯灭  
32 -  
33 -}  
34 - 12 + GPIO_Init(ARM_LED1_Port, &GPIO_InitStructure);//初始化
35 13
  14 + GPIO_ResetBits(ARM_LED1_Port,ARM_LED1_Pin);//GPIOF9,F10设置高,灯灭
36 15
  16 + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);//使能GPIOF时钟
37 17
  18 + //GPIOF9,F10初始化设置
  19 + GPIO_InitStructure.GPIO_Pin = ARM_LED2_Pin|ARM_LED3_Pin|ARM_LED4_Pin;
  20 + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
  21 + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  22 + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  23 + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  24 + GPIO_Init(ARM_LED2_Port, &GPIO_InitStructure);//初始化
38 25
  26 + GPIO_ResetBits(ARM_LED2_Port,ARM_LED2_Pin);//GPIOF9,F10设置高,灯灭
  27 + GPIO_ResetBits(ARM_LED3_Port,ARM_LED3_Pin);//GPIOF9,F10设置高,灯灭
  28 + GPIO_ResetBits(ARM_LED4_Port,ARM_LED4_Pin);//GPIOF9,F10设置高,灯灭
39 29
  30 +}
HARDWARE/LED/led.h
1 #ifndef __LED_H 1 #ifndef __LED_H
2 #define __LED_H 2 #define __LED_H
3 -#include "sys.h"  
4 - 3 +#include "dev.h"
5 ////////////////////////////////////////////////////////////////////////////////// 4 //////////////////////////////////////////////////////////////////////////////////
6 //本程序只供学习使用,未经作者许可,不得用于其它任何用途 5 //本程序只供学习使用,未经作者许可,不得用于其它任何用途
7 //ALIENTEK STM32F407开发板 6 //ALIENTEK STM32F407开发板
@@ -15,10 +14,6 @@ @@ -15,10 +14,6 @@
15 //All rights reserved 14 //All rights reserved
16 ////////////////////////////////////////////////////////////////////////////////// 15 //////////////////////////////////////////////////////////////////////////////////
17 16
18 -  
19 -//LED端口定义  
20 -#define LED0 PFout(9) // DS0  
21 -#define LED1 PFout(10) // DS1  
22 -  
23 -void LED_Init(void);//初始化 17 +void LED_Init(void);//初始化
  18 +
24 #endif 19 #endif
IAP/iap.c
1 #include "iap.h" 1 #include "iap.h"
2 -#include "usart.h"  
3 #include "crc.h" 2 #include "crc.h"
4 #include "flash.h" 3 #include "flash.h"
5 #include "delay.h" 4 #include "delay.h"
6 #include "usart1.h" 5 #include "usart1.h"
7 #include "uart5.h" 6 #include "uart5.h"
8 - 7 +#include "ymodem.h"
  8 +#include "string.h"
9 iapfun jump2app; 9 iapfun jump2app;
10 10
11 -  
12 -//跳转到应用程序段  
13 -//appxaddr:用户代码起始地址.  
14 -void Run_Flash_App(u32 appxaddr) 11 +extern USART_TypeDef * IAP_Port;
  12 +
  13 +#define SEPERATE "\r\n***********************wisefarm bootloader***********************\r\n\r\n"
  14 +#define WELCOME "Wisefarm bootloader start.....\r\n"
  15 +#define END "Wisefarm bootloader end.....\r\n"
  16 +#define VERSION "Version: MFGW2.0\r\n"
  17 +#define RUN_POINT "App will be running.....\r\n"
  18 +#define INPUT_PONIT "Press down key \"B\" at least 2S to s in bootloader\r\n"
  19 +#define CUTDOWN_PONIT "Run application after %d second(s)......\r\n"
  20 +uint8_t Run_Flash_App(u32 appxaddr)
15 { 21 {
16 if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000) //检查栈顶地址是否合法. 22 if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000) //检查栈顶地址是否合法.
17 - { 23 + {
  24 +
  25 + display_bootloader_exit_information();
18 jump2app=(iapfun)*(vu32*)(appxaddr+4); //用户代码区第二个字为程序开始地址(复位地址) 26 jump2app=(iapfun)*(vu32*)(appxaddr+4); //用户代码区第二个字为程序开始地址(复位地址)
19 MSR_MSP(*(vu32*)appxaddr); //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址) 27 MSR_MSP(*(vu32*)appxaddr); //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)
20 jump2app(); //跳转到APP. 28 jump2app(); //跳转到APP.
  29 + return 1;
21 } 30 }
22 -}  
23 -  
24 -  
25 -  
26 -  
27 -  
28 -  
29 -  
30 -  
31 -  
32 -  
33 -  
34 -  
35 -/****************************************************  
36 -* @brief: 通过RS485接口,本地下载固件  
37 -* @param:  
38 -* @retva:  
39 -* @note:  
40 -******************************************************/  
41 -uint8_t Success[] = "FireWare Check Success\r\n";  
42 -uint8_t Fail[] = "FireWare Check Fail\r\n";  
43 -uint8_t Incorrect[] = "Input Command Incorrect\r\n";  
44 -  
45 -uint8_t Manual_Labal[] = "CMD Description\r\n";  
46 -uint8_t Manual_Start[] = "START Start Up Transmit FireWare\r\n";  
47 -uint8_t Manual_Ack[] = "ACK: Confirm The FireWare\r\n";  
48 -uint8_t Manual_Cancel[] = "CANCEL Cancel The Update Program\r\n";  
49 -uint8_t Manual_Line[] = "\r\n*******************************************\r\n";  
50 -  
51 -uint8_t Ok[] = "OK\r\n";  
52 -  
53 -void Local_Update(void) 31 + else
  32 + {
  33 + return 0;
  34 + }
  35 +}
  36 +void display_bootloader_extry_information(void)
54 { 37 {
55 - Clear_Uart5_Cache();  
56 -  
57 - uint16_t crc = 0xFFFF;  
58 - uint32_t handle; 38 + GPIO_ResetBits(ARM_LED1_Port,ARM_LED1_Pin);
  39 + GPIO_ResetBits(ARM_LED2_Port,ARM_LED2_Pin);//GPIOF9,F10设置高,灯灭
  40 + GPIO_ResetBits(ARM_LED3_Port,ARM_LED3_Pin);//GPIOF9,F10设置高,灯灭
  41 + GPIO_ResetBits(ARM_LED4_Port,ARM_LED4_Pin);//GPIOF9,F10设置高,灯灭
59 42
60 - delay_ms(70);  
61 - Uart5_Send(Manual_Line,sizeof(Manual_Line));  
62 - delay_ms(70);  
63 - Uart5_Send(Manual_Labal,sizeof(Manual_Labal));  
64 - delay_ms(70);  
65 - Uart5_Send(Manual_Start,sizeof(Manual_Start));  
66 - delay_ms(70);  
67 - Uart5_Send(Manual_Ack,sizeof(Manual_Ack));  
68 - delay_ms(70);  
69 - Uart5_Send(Manual_Cancel,sizeof(Manual_Cancel));  
70 - delay_ms(70);  
71 - Uart5_Send(Manual_Line,sizeof(Manual_Line)); 43 + printf(SEPERATE);
  44 + printf(WELCOME);
  45 + printf(VERSION);
72 46
  47 +}
  48 +void display_bootloader_exit_information(void)
  49 +{
  50 + GPIO_SetBits(ARM_LED1_Port,ARM_LED1_Pin);
  51 + GPIO_SetBits(ARM_LED2_Port,ARM_LED2_Pin);//GPIOF9,F10设置高,灯灭
  52 + GPIO_SetBits(ARM_LED3_Port,ARM_LED3_Pin);//GPIOF9,F10设置高,灯灭
  53 + GPIO_SetBits(ARM_LED4_Port,ARM_LED4_Pin);//GPIOF9,F10设置高,灯灭
  54 + printf(RUN_POINT);
  55 + printf(END);
  56 + printf(SEPERATE);
  57 +}
  58 +uint8_t uart_boot_detect(void)
  59 +{
  60 + uint8_t retry_cnt=0;
  61 +
  62 + char buf_rx5[20]={0};
  63 + char buf_rx1[20]={0};
  64 + printf(INPUT_PONIT);
73 65
74 - while(1) 66 + for(retry_cnt=0;retry_cnt<LOCAL_WAITE_TIME;retry_cnt++)
75 { 67 {
76 - if(UART_FINISH) 68 + printf(CUTDOWN_PONIT,LOCAL_WAITE_TIME-retry_cnt);
  69 +
  70 + uint32_t timeout =0x100000;
  71 +
  72 + memset(buf_rx5,0,sizeof(char));
  73 + memset(buf_rx1,0,sizeof(char));
  74 + uint8_t i=0,j=0;
  75 + while (timeout-- > 0)
77 { 76 {
78 - if(strncmp((char *)UART_RX_BUF,"ACK",sizeof("ACK")) == 0) //确认数据  
79 - {  
80 - Uart5_Send(Ok,sizeof(Ok));  
81 - handle = BOOTLOADER_RUN;  
82 - STMFLASH_Write(FLAG_BASE_ADDR,(uint32_t *)&handle,4);  
83 - }  
84 - else if(strncmp((char *)UART_RX_BUF,"START",sizeof("START")) == 0) //启动传输  
85 - {  
86 - Uart5_Send(Ok,sizeof(Ok));  
87 - Clear_Uart5_Cache();  
88 - UART_FINISH = false;  
89 -  
90 - while(UART_FINISH != true);  
91 -  
92 - printf("receive %d Bytes msg\r\n",&UART_RX_CNT);  
93 - Uart5_Send(Ok,sizeof(Ok));  
94 -  
95 - crc = GenerateCRC16(UART_RX_BUF,UART_RX_CNT-2);  
96 - printf("CACL = %x\r\n",crc); 77 + if (uart5_read_byte((uint8_t *)&buf_rx5[i]) == 1)
  78 + {
  79 + i++;
  80 + if(i>20)
  81 + {
  82 + i=0;
  83 + }
97 84
98 - if(crc == ((UART_RX_BUF[UART_RX_CNT-2] << 8 ) | UART_RX_BUF[UART_RX_CNT-1])) 85 + if((strcmp(buf_rx5,"BBBBBBBBBBBBBBBBBBBB"))==0)
99 { 86 {
100 - STMFLASH_Write(APP_RUN_ADDR,(uint32_t *)UART_RX_BUF,UART_RX_CNT - 2);  
101 -  
102 - Uart5_Send(Success,sizeof(Success)); 87 + IAP_Port=UART5;
  88 + return LOCAL_BOOT_FROM_UART5;
103 } 89 }
104 - else 90 + }
  91 + if (usart1_read_byte((uint8_t *)&buf_rx1[j]) == 1)
  92 + {
  93 + j++;
  94 + if(i>20)
105 { 95 {
106 - Uart5_Send(Fail,sizeof(Fail)); 96 + i=0;
  97 + }
  98 +
  99 + if((strcmp(buf_rx1,"BBBBBBBBBBBBBBBBBBBB"))==0)
  100 + {
  101 + IAP_Port=USART1;
  102 + return LOCAL_BOOT_FROM_USART1;
107 } 103 }
108 - printf("CRC = %x\r\n",crc);  
109 - }  
110 - else if(strncmp((char *)UART_RX_BUF,"CANCEL",sizeof("CANCEL")) == 0 ) //返回  
111 - {  
112 - Uart5_Send(Ok,sizeof(Ok));  
113 - break;  
114 - }  
115 - else  
116 - {  
117 - Uart5_Send(Incorrect,sizeof(Incorrect));  
118 - }  
119 -  
120 - Clear_Uart5_Cache();  
121 - UART_FINISH = false;  
122 - UART5_Mode(RS485_READ); 104 + }
123 } 105 }
  106 +
124 } 107 }
  108 + return LOCAL_BOOT_NONE;
125 } 109 }
126 -  
127 -  
128 -  
129 -  
130 -/******************************************************  
131 -* @brief: 检测是否有触发本地升级  
132 -* @param:  
133 -* @retva:  
134 -* @note:  
135 -********************************************************/  
136 -uint8_t Update[] = "Enter Local Update\r\n";  
137 -void Detection_Update(void) 110 +void uart_boot(void)
138 { 111 {
139 - uint8_t i ;  
140 -  
141 - for(i=0;i<WAIT_TIME;i++)  
142 - {  
143 - delay_ms(1000);  
144 - if(UART_FINISH) 112 + uint32_t ret =0;
  113 + printf("Enter bootloader......\r\n");
  114 + if(IAP_Port==USART1)
145 { 115 {
146 - UART_FINISH= false;  
147 - if(strncmp((char *)UART_RX_BUF,"UPDATE",sizeof("UPDATE")) == 0)//F12  
148 - {  
149 - Uart5_Send(Update,sizeof(Update));  
150 - Local_Update();  
151 - break;  
152 - } 116 + printf("Port:USART1\tbaudrate:115200\t\tformat:N-8-1\r\n");
153 } 117 }
154 - }  
155 -}  
156 -  
157 -#define VERSION "Bootloader version: MFGW2.0\r\n"  
158 -  
159 -uint8_t uart_boot_detect(void)  
160 -{  
161 - uint8_t retry_cnt=0;  
162 - printf(WELCOME);  
163 - printf(VERSION);  
164 - for(retry_cnt=0;retry_cnt<LOCAL_WAITE_TIME;retry_cnt++)  
165 - {  
166 - printf("Run application after %d second(s)...........\r\n",LOCAL_WAITE_TIME-retry_cnt);  
167 - printf("Input any key and Enter to stay in bootloader\r\n");  
168 - delay_ms(1000);  
169 -  
170 - if((u5.rx_status == RX_FINISHED)&&  
171 - ((u5.rx_buf[0]=='b')||(u5.rx_buf[0]=='B'))&&  
172 - (u5.rx_len == 2)) 118 + else
173 { 119 {
174 - return LOCAL_BOOT_FROM_UART5; 120 + printf("Port:UART5\tbaudrate:115200\t\tformat:N-8-1\r\n");
175 } 121 }
176 - else if((u1.rx_status == RX_FINISHED)&&  
177 - ((u1.rx_buf[0]=='b')||(u1.rx_buf[0]=='B'))&&  
178 - (u1.rx_len == 2)) 122 +
  123 + printf("please send file to device in y-modem!\r\n");
  124 +
  125 + printf("Waiting:");
  126 + ret = Ymodem_Receive(buf_1k,APP_LOAD_ADDR);
  127 + printf("\r\n");
  128 +
  129 + if(ret >0)
179 { 130 {
180 - return LOCAL_BOOT_FROM_USART1; 131 + printf("Received file name:\t\t\t\t%s\r\n",FileName);
  132 + printf("Received file length:\t\t\t\t%s\r\n",file_size);
181 } 133 }
182 else 134 else
183 { 135 {
184 - // not detected 136 + printf("Failure of ymodem receive!\r\n");
  137 + assert_param(0);
185 } 138 }
186 - }  
187 - return LOCAL_BOOT_NONE; 139 + load_process();
188 } 140 }
  141 +void load_process(void)
  142 +{
189 143
  144 + uint32_t flag =0;
190 145
191 -  
192 - 146 + printf("Fireware detected,now loading...\r\n");
  147 + printf("Erasing!\t\t\t\t\t");
  148 + if(0 == STM_FLASH_Erase(APP_RUN_ADDR))
  149 + {
  150 + printf("failure\r\n");
  151 + assert_param(0);
  152 + }
  153 + if(0 == STM_FLASH_Erase(FLAG_BASE_ADDR))
  154 + {
  155 + printf("failure\r\n");
  156 + assert_param(0);
  157 + }
  158 + printf("success\r\n");
  159 + printf("Programing !\t\t\t\t\t");
  160 + if(1 == STMFLASH_Write(APP_RUN_ADDR,(uint32_t *)APP_LOAD_ADDR,STM_FLASH_Get_Block_Size(APP_RUN_ADDR)))
  161 + {
  162 + printf("failure!\r\n");
  163 + assert_param(0);
  164 + }
  165 + flag =BOOTLOADER_RUN;
  166 + if(1 == STMFLASH_Write(FLAG_BASE_ADDR,&flag,4))
  167 + {
  168 + printf("failure!\r\n");
  169 + assert_param(0);
  170 + }
  171 + printf("success\r\n");
  172 +
  173 + app_run();
  174 +}
  175 +void app_run(void)
  176 +{
  177 + if(0==Run_Flash_App(APP_RUN_ADDR))
  178 + {
  179 + printf("Run app failure!the firmware may be damaged!\r\n");
  180 + uart_boot();
  181 + }
  182 +}
193 183
IAP/iap.h
@@ -2,21 +2,28 @@ @@ -2,21 +2,28 @@
2 #define __IAP_H__ 2 #define __IAP_H__
3 #include "dev.h" 3 #include "dev.h"
4 4
5 -#define WAIT_TIME 5 //秒  
6 -  
7 -typedef void (*iapfun)(void); //定义一个函数类型的参数. 5 +#define LOCAL_WAITE_TIME 8 //秒
  6 +uint8_t uart_boot_detect(void);
  7 +void uart_boot(void);
  8 +void load_process(void);
  9 +void app_run(void);
8 10
9 11
10 -void Run_Flash_App(uint32_t appxaddr); //跳转到APP程序执行 12 +typedef void (*iapfun)(void); //定义一个函数类型的参数.
11 13
12 -//void Local_Update(void);  
13 -void Detection_Update(void);  
14 14
  15 +uint8_t Run_Flash_App(uint32_t appxaddr); //跳转到APP程序执行
15 16
  17 +//void Local_Update(void);
  18 +void Detection_Update(void);
  19 +void display_bootloader_exit_information(void);
  20 +void display_bootloader_extry_information(void);
16 21
17 #define LOCAL_BOOT_FROM_UART5 2 22 #define LOCAL_BOOT_FROM_UART5 2
18 #define LOCAL_BOOT_FROM_USART1 1 23 #define LOCAL_BOOT_FROM_USART1 1
19 #define LOCAL_BOOT_NONE 0 24 #define LOCAL_BOOT_NONE 0
20 25
  26 +//#define USER_FLASH_SIZE (192*1024)
  27 +
21 #endif 28 #endif
22 29
IAP/ymodem.c 0 → 100644
  1 +#include "ymodem.h"
  2 +#include "string.h"
  3 +#include "stdlib.h"
  4 +#include "flash.h"
  5 +#include "usart1.h"
  6 +#include "uart5.h"
  7 +#include "delay.h"
  8 +
  9 +USART_TypeDef * IAP_Port = UART5;
  10 +
  11 +uint8_t FileName[FILE_NAME_LENGTH];//array to store filename of download *.bin
  12 +char file_size[FILE_SIZE_LENGTH];
  13 +uint8_t buf_1k[1024] ={0};
  14 +
  15 +/********************************************/
  16 +//移植的时候,由于函数定义了局部大数组,需要修改堆栈的大小。
  17 +//下面是需要移植的函数
  18 +static uint32_t SerialKeyPressed(uint8_t *key);
  19 +static int32_t Receive_Byte(uint8_t *c, uint32_t timeout);
  20 +int32_t Ymodem_Receive (uint8_t *buf, uint32_t appaddr);
  21 +uint32_t STM_FLASH_Erase(uint32_t addrx);
  22 +uint32_t STM_FLASH_Get_Block_Size(uint32_t addrx);
  23 +uint32_t STMFLASH_Write(u32 WriteAddr,u32 *pBuffer,u32 NumToWrite);
  24 +/********************************************/
  25 +
  26 +//check if one byte rx successfully
  27 +//key: variabl to store rx data
  28 +//return: 1=success, 0=fail
  29 +static uint32_t SerialKeyPressed(uint8_t *key)
  30 +{
  31 + if(IAP_Port == UART5)
  32 + {
  33 + return uart5_read_byte(key);
  34 + }
  35 + else
  36 + {
  37 + return usart1_read_byte(key);
  38 + }
  39 +}
  40 +//Rx a byte from sender
  41 +//c: variable to store data
  42 +//timeout: read time out
  43 +//return: 0=success, -1=fail
  44 +static int32_t Receive_Byte (uint8_t *c, uint32_t timeout)
  45 +{
  46 + while (timeout-- > 0)
  47 + {
  48 + if (SerialKeyPressed(c) == 1)
  49 + {
  50 + return 0;
  51 + }
  52 + }
  53 + return -1;
  54 +}
  55 +//send a byte via IAP_Port
  56 +//c: byte to send
  57 +//return: 0
  58 +static uint32_t Send_Byte (uint8_t c)
  59 +{
  60 + if(IAP_Port == UART5)
  61 + {
  62 + uart5_send_byte(c);
  63 + }
  64 + else
  65 + {
  66 + usart1_send_byte(c);
  67 + }
  68 + return 0;
  69 +}
  70 +/**
  71 + * @brief Update CRC16 for input byte
  72 + * @param crc_in input value
  73 + * @param input byte
  74 + * @retval None
  75 + */
  76 +uint16_t UpdateCRC16(uint16_t crc_in, uint8_t byte)
  77 +{
  78 + uint32_t crc = crc_in;
  79 + uint32_t in = byte | 0x100;
  80 +
  81 + do
  82 + {
  83 + crc <<= 1;
  84 + in <<= 1;
  85 + if(in & 0x100)
  86 + ++crc;
  87 + if(crc & 0x10000)
  88 + crc ^= 0x1021;
  89 + }
  90 +
  91 + while(!(in & 0x10000));
  92 +
  93 + return crc & 0xffffu;
  94 +}
  95 +
  96 +/**
  97 + * @brief Cal CRC16 for YModem Packet
  98 + * @param data
  99 + * @param length
  100 + * @retval None
  101 + */
  102 +uint16_t Cal_CRC16(const uint8_t* p_data, uint32_t size)
  103 +{
  104 + uint32_t crc = 0;
  105 + const uint8_t* dataEnd = p_data+size;
  106 +
  107 + while(p_data < dataEnd)
  108 + crc = UpdateCRC16(crc, *p_data++);
  109 +
  110 + crc = UpdateCRC16(crc, 0);
  111 + crc = UpdateCRC16(crc, 0);
  112 +
  113 + return crc&0xffffu;
  114 +}
  115 +
  116 +//Rx a packet from sender
  117 +//data: pointer to store rx data
  118 +//length: packet length
  119 +//timeout: rx time out
  120 +//return:0=normally return
  121 +// -1=timeout or packet error
  122 +// 1=abort by user
  123 +static int32_t Receive_Packet (uint8_t *data, int32_t *length, uint32_t timeout)
  124 +{
  125 + uint16_t i, packet_size;
  126 + uint8_t c;
  127 + uint32_t crc=0;
  128 +
  129 + *length = 0;
  130 + if (Receive_Byte(&c, timeout) != 0)
  131 + {
  132 + return -1;
  133 + }
  134 + switch (c)
  135 + {
  136 + case SOH:
  137 + packet_size = PACKET_SIZE;
  138 + break;
  139 + case STX:
  140 + packet_size = PACKET_1K_SIZE;
  141 + break;
  142 + case EOT:
  143 + return 0;
  144 + case CA:
  145 + if ((Receive_Byte(&c, timeout) == 0) && (c == CA))
  146 + {
  147 + *length = -1;
  148 + return 0;
  149 + }
  150 + else
  151 + {
  152 + return -1;
  153 + }
  154 + case ABORT1:
  155 + case ABORT2:
  156 + return 1;
  157 + default:
  158 + return -1;
  159 + }
  160 +
  161 + *data = c;
  162 + for (i = 1; i < (packet_size + PACKET_OVERHEAD); i ++)
  163 + {
  164 + if (Receive_Byte(data + i, timeout) != 0)
  165 + {
  166 + return -1;
  167 + }
  168 + }
  169 +
  170 + crc = data[ packet_size + PACKET_HEADER ] << 8;
  171 + crc += data[ packet_size + PACKET_HEADER + 1 ];
  172 + if (Cal_CRC16(&data[PACKET_HEADER], packet_size) != crc )
  173 + {
  174 + packet_size = 0;
  175 + return -1;
  176 + }
  177 + *length = packet_size;
  178 + return 0;
  179 +}
  180 +
  181 +
  182 +//Receive a file using the ymodem protocol
  183 +//buf: pointer for data storage
  184 +//appaddr: User Application address
  185 +//return: size of IAP file
  186 +int32_t Ymodem_Receive (uint8_t *buf, uint32_t appaddr)
  187 +{
  188 + uint8_t packet_data[PACKET_1K_SIZE + PACKET_OVERHEAD], *file_ptr, *buf_ptr,flag_EOT;
  189 + int32_t i, packet_length, session_done, file_done, packets_received, errors, session_begin, size = 0;
  190 + uint32_t flashdestination, ramsource;
  191 +
  192 + //Initialize flashdestination variable
  193 + flashdestination = appaddr;
  194 + flag_EOT = 0;
  195 + for (session_done = 0, errors = 0, session_begin = 0; ;)
  196 + {
  197 + for (packets_received = 0, file_done = 0, buf_ptr = buf; ;)
  198 + {
  199 + switch (Receive_Packet(packet_data, &packet_length, NAK_TIMEOUT))
  200 + {
  201 + case 0:
  202 + errors = 0;
  203 + switch (packet_length)
  204 + {
  205 + /* Abort by sender */
  206 + case - 1:
  207 + Send_Byte(ACK);
  208 + return 0;
  209 + /* End of transmission */
  210 + case 0:
  211 + if(flag_EOT==0) //first EOT
  212 + {
  213 + Send_Byte(NACK);
  214 + flag_EOT = 1;
  215 + }
  216 + else if (flag_EOT==1) //second EOT
  217 + {
  218 + Send_Byte(ACK);
  219 + Send_Byte('C');
  220 + file_done = 1;
  221 + }
  222 + break;
  223 + /* Normal packet */
  224 + default:
  225 + if ((packet_data[PACKET_SEQNO_INDEX] & 0xff) != (packets_received & 0xff))
  226 + {
  227 + Send_Byte(NACK);//local data sequence number is different to rx data packet.
  228 + }
  229 + else
  230 + {
  231 + if (packets_received == 0)
  232 + {
  233 + /* Filename packet */
  234 + if (packet_data[PACKET_HEADER] != 0)
  235 + {
  236 + /* Filename packet has valid data */
  237 + for (i = 0, file_ptr = packet_data + PACKET_HEADER; (*file_ptr != 0) && (i < FILE_NAME_LENGTH);)
  238 + {
  239 + FileName[i++] = *file_ptr++;
  240 + }
  241 + FileName[i++] = '\0';
  242 +
  243 + for (i = 0, file_ptr ++; (*file_ptr != ' ') && (i < FILE_SIZE_LENGTH);)
  244 + {
  245 + file_size[i++] = *file_ptr++;
  246 + }
  247 + file_size[i++] = '\0';
  248 + size = atoi(file_size);
  249 +
  250 + /* Test the size of the image to be sent */
  251 + /* Image size is greater than Flash size */
  252 + if (size > (int32_t)(STM_FLASH_Get_Block_Size(flashdestination) + 1))
  253 + {
  254 + /* End session */
  255 + Send_Byte(CA);
  256 + Send_Byte(CA);
  257 + return -1;
  258 + }
  259 + /* erase user application area */
  260 +
  261 +
  262 + STM_FLASH_Erase(flashdestination);
  263 +
  264 + Send_Byte(ACK);
  265 + Send_Byte(CRC16);
  266 + }
  267 + /* Filename packet is empty, end session */
  268 + else
  269 + {
  270 + Send_Byte(ACK);
  271 + file_done = 1;
  272 + session_done = 1;
  273 + break;
  274 + }
  275 + }
  276 + /* Data packet */
  277 + else
  278 + {
  279 + memcpy(buf_ptr, packet_data + PACKET_HEADER, packet_length);
  280 + ramsource = (uint32_t)buf_ptr;
  281 +
  282 + /* Write received data in Flash */
  283 + if (STMFLASH_Write(flashdestination, (uint32_t*)ramsource, (uint16_t) packet_length) == 0)
  284 + {
  285 + flashdestination+=packet_length;
  286 + Send_Byte(ACK);
  287 + }
  288 + else /* An error occurred while writing to Flash memory */
  289 + {
  290 + /* End session */
  291 + Send_Byte(CA);
  292 + Send_Byte(CA);
  293 + return -2;
  294 + }
  295 + }
  296 + packets_received ++;
  297 + session_begin = 1;
  298 + }
  299 + }
  300 + break;
  301 + case 1:
  302 + Send_Byte(CA);
  303 + Send_Byte(CA);
  304 + return -3;
  305 + default:
  306 + if (session_begin > 0)
  307 + {
  308 + errors ++;
  309 + }
  310 + if (errors > MAX_ERRORS)
  311 + {
  312 + Send_Byte(CA);
  313 + Send_Byte(CA);
  314 + return 0;
  315 + }
  316 + Send_Byte(CRC16);
  317 + break;
  318 + }
  319 + if (file_done != 0)
  320 + {
  321 + break;
  322 + }
  323 + }
  324 + if (session_done != 0)
  325 + {
  326 + break;
  327 + }
  328 + }
  329 + return (int32_t)size;
  330 +}
IAP/ymodem.h 0 → 100644
  1 +//Define to prevent recursive inclusion
  2 +#ifndef __YMODEM_H_
  3 +#define __YMODEM_H_
  4 +#include <stm32f4xx.h>
  5 +//Exported macro
  6 +#define PACKET_SEQNO_INDEX (1)
  7 +#define PACKET_SEQNO_COMP_INDEX (2)
  8 +
  9 +#define PACKET_HEADER (3)
  10 +#define PACKET_TRAILER (2)
  11 +#define PACKET_OVERHEAD (PACKET_HEADER + PACKET_TRAILER)
  12 +#define PACKET_SIZE (128)
  13 +#define PACKET_1K_SIZE (1024)
  14 +
  15 +#define FILE_NAME_LENGTH (256)
  16 +#define FILE_SIZE_LENGTH (16)
  17 +
  18 +#define SOH (0x01) /* start of 128-byte data packet */
  19 +#define STX (0x02) /* start of 1024-byte data packet */
  20 +#define EOT (0x04) /* end of transmission */
  21 +#define ACK (0x06) /* acknowledge */
  22 +#define NACK (0x15) /* negative acknowledge */
  23 +#define CA (0x18) /* two of these in succession aborts transfer */
  24 +#define CRC16 (0x43) /* 'C' == 0x43, request 16-bit CRC */
  25 +
  26 +#define ABORT1 (0x41) /* 'A' == 0x41, abort by user */
  27 +#define ABORT2 (0x61) /* 'a' == 0x61, abort by user */
  28 +
  29 +#define NAK_TIMEOUT (0x50000)
  30 +#define MAX_ERRORS (5)
  31 +
  32 +//User Define Area
  33 +
  34 +
  35 +//Exported functions
  36 +
  37 +extern uint8_t FileName[FILE_NAME_LENGTH];//array to store filename of download *.bin
  38 +extern uint8_t buf_1k[1024];
  39 +int32_t Ymodem_Receive (uint8_t *,uint32_t appaddr);
  40 +extern char file_size[FILE_SIZE_LENGTH];
  41 +extern USART_TypeDef * IAP_Port;
  42 +#endif
SYSTEM/delay/delay.c
@@ -5,7 +5,7 @@ void delay_init(void) @@ -5,7 +5,7 @@ void delay_init(void)
5 { 5 {
6 RCC_ClocksTypeDef RCC_Clocks; 6 RCC_ClocksTypeDef RCC_Clocks;
7 RCC_GetClocksFreq(&RCC_Clocks); 7 RCC_GetClocksFreq(&RCC_Clocks);
8 - SysTick_Config(RCC_Clocks.SYSCLK_Frequency/1000); 8 + SysTick_Config(RCC_Clocks.SYSCLK_Frequency/10000);
9 } 9 }
10 10
11 11
@@ -20,7 +20,7 @@ void delay_ms(uint32_t ms) @@ -20,7 +20,7 @@ void delay_ms(uint32_t ms)
20 { 20 {
21 uint32_t curTick = mTick; 21 uint32_t curTick = mTick;
22 22
23 - while((mTick - curTick) < ms); 23 + while((mTick - curTick) < ms*10);
24 } 24 }
25 25
26 26
SYSTEM/usart/debug.c
1 #include "stdio.h" 1 #include "stdio.h"
  2 +#include "dev.h"
2 #include "usart1.h" 3 #include "usart1.h"
3 #include "uart5.h" 4 #include "uart5.h"
4 #if 1 5 #if 1
@@ -22,3 +23,11 @@ int fputc(int ch, FILE *f) //ÖØ¶¨Òåfputcº¯Êý @@ -22,3 +23,11 @@ int fputc(int ch, FILE *f) //ÖØ¶¨Òåfputcº¯Êý
22 uart5_send_byte((uint8_t) ch); 23 uart5_send_byte((uint8_t) ch);
23 return ch; 24 return ch;
24 } 25 }
  26 +
  27 +void assert_failed(u8* file, u32 line)
  28 +{
  29 + printf("Wrong parameters value: file %s on line %d \r\n", file, line);
  30 + while (1)
  31 + {
  32 + }
  33 +}
SYSTEM/usart/timer3.c deleted
1 -#include "timer3.h"  
2 -Uart_Timer timer3;  
3 -static void TIM3_Init(uint16_t arr,uint16_t psc)//定时器2中断初始化  
4 -{  
5 - TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;  
6 - NVIC_InitTypeDef NVIC_InitStructure;  
7 -  
8 - RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//TIM3时钟使能  
9 -  
10 - TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值  
11 - TIM_TimeBaseStructure.TIM_Prescaler = psc; //设置用来作为TIMx时钟频率除数的预分频值  
12 - TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim  
13 - TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式  
14 - TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);  
15 -  
16 - TIM_ClearFlag(TIM3, TIM_FLAG_Update);//解决了定时器初始化后立即进入中断的bug(无论是否定时器启动)!!!!!!!!!!!!!!!!!!!!  
17 -  
18 - TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断  
19 -  
20 - NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  
21 - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //抢占优先级0  
22 - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //子优先级2  
23 - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能  
24 - NVIC_Init(&NVIC_InitStructure);  
25 -  
26 - TIM_Cmd(TIM3, DISABLE); //关闭TIM3  
27 -}  
28 -static void TIM3_Start(void)  
29 -{  
30 - TIM_Cmd(TIM3, ENABLE); //关闭TIM3  
31 -}  
32 -static void TIM3_Stop(void)  
33 -{  
34 - TIM_ClearITPendingBit(TIM3, TIM_IT_Update);//清除TIM3更新中断标志  
35 - TIM_Cmd(TIM3, DISABLE); //关闭TIM3  
36 -}  
37 -static void TIM3_Clear(void)  
38 -{  
39 - TIM_SetCounter(TIM3,0);//计数器清空  
40 -}  
41 -void timer3_init(void (*callback)())  
42 -{  
43 - timer3.callback =callback;  
44 - timer3.start=TIM3_Start;  
45 - timer3.stop=TIM3_Stop;  
46 - timer3.timeclear=TIM3_Clear;  
47 -  
48 - TIM3_Init(10*20-1,7200-1); //设置最大超时时间为40ms  
49 -}  
50 -void TIM3_IRQHandler(void)//定时器4中断服务程序  
51 -{  
52 - if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)//是更新中断  
53 - {  
54 - timer3.stop();  
55 - timer3.callback();  
56 - }  
57 - else  
58 - {  
59 - }  
60 -}  
61 -  
62 -  
SYSTEM/usart/timer3.h deleted
1 -#ifndef _TIMER4_H  
2 -#define _TIMER4_H  
3 -  
4 -#include "stm32f4xx.h"  
5 -#include "uart.h"  
6 -#include "stdint.h"  
7 -extern Uart_Timer timer3;  
8 -extern void timer3_init(void (*callback)());  
9 -  
10 -#endif  
11 -  
SYSTEM/usart/timer4.c deleted
1 -#include "timer4.h"  
2 -Uart_Timer timer4;  
3 -static void TIM4_Init(uint16_t arr,uint16_t psc)//定时器2中断初始化  
4 -{  
5 - TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;  
6 - NVIC_InitTypeDef NVIC_InitStructure;  
7 -  
8 - RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);//TIM4时钟使能  
9 -  
10 - TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值  
11 - TIM_TimeBaseStructure.TIM_Prescaler = psc; //设置用来作为TIMx时钟频率除数的预分频值  
12 - TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim  
13 - TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式  
14 - TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);  
15 -  
16 - TIM_ClearFlag(TIM4, TIM_FLAG_Update);//解决了定时器初始化后立即进入中断的bug(无论是否定时器启动)!!!!!!!!!!!!!!!!!!!!  
17 -  
18 - TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE ); //使能指定的TIM4中断,允许更新中断  
19 -  
20 - NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;  
21 - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //抢占优先级0  
22 - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //子优先级2  
23 - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能  
24 - NVIC_Init(&NVIC_InitStructure);  
25 -  
26 - TIM_Cmd(TIM4, DISABLE); //关闭TIM4  
27 -}  
28 -static void TIM4_Start(void)  
29 -{  
30 - TIM_Cmd(TIM4, ENABLE); //关闭TIM4  
31 -}  
32 -static void TIM4_Stop(void)  
33 -{  
34 - TIM_ClearITPendingBit(TIM4, TIM_IT_Update);//清除TIM4更新中断标志  
35 - TIM_Cmd(TIM4, DISABLE); //关闭TIM4  
36 -}  
37 -static void TIM4_Clear(void)  
38 -{  
39 - TIM_SetCounter(TIM4,0);//计数器清空  
40 -}  
41 -void timer4_init(void (*callback)())  
42 -{  
43 - timer4.callback =callback;  
44 - timer4.start=TIM4_Start;  
45 - timer4.stop=TIM4_Stop;  
46 - timer4.timeclear=TIM4_Clear;  
47 -  
48 - TIM4_Init(10*20-1,7200-1); //设置最大超时时间为40ms  
49 -}  
50 -void TIM4_IRQHandler(void)//定时器4中断服务程序  
51 -{  
52 - if(TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)//是更新中断  
53 - {  
54 - timer4.stop();  
55 - timer4.callback();  
56 - }  
57 - else  
58 - {  
59 - }  
60 -}  
61 -  
62 -  
SYSTEM/usart/timer4.h deleted
1 -#ifndef _TIMER4_H  
2 -#define _TIMER4_H  
3 -  
4 -#include "stm32f4xx.h"  
5 -#include "uart.h"  
6 -#include "stdint.h"  
7 -extern Uart_Timer timer4;  
8 -extern void timer4_init(void (*callback)());  
9 -  
10 -#endif  
11 -  
SYSTEM/usart/uart5.c
@@ -14,20 +14,6 @@ void uart5_init(void) @@ -14,20 +14,6 @@ void uart5_init(void)
14 { 14 {
15 GPIO_InitTypeDef GPIO_InitStructure; 15 GPIO_InitTypeDef GPIO_InitStructure;
16 USART_InitTypeDef USART_InitStructure; 16 USART_InitTypeDef USART_InitStructure;
17 - NVIC_InitTypeDef NVIC_InitStructure;  
18 -  
19 - memset(UART5_RX_BUF,0,UART5_RX_MAX);  
20 - memset(UART5_TX_BUF,0,UART5_TX_MAX);  
21 -  
22 - u5.rx_buf=UART5_RX_BUF;  
23 - u5.tx_buf=UART5_TX_BUF;  
24 - u5.rx_len=0;  
25 - u5.tx_len=0;  
26 - u5.rx_status = RX_STA_RST;  
27 - u5.rxtimer = &timer4;  
28 -  
29 - timer4_init(uart5_rx_finished);  
30 -  
31 17
32 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOF,ENABLE); 18 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOF,ENABLE);
33 RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART5,ENABLE); 19 RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART5,ENABLE);
@@ -72,14 +58,6 @@ void uart5_init(void) @@ -72,14 +58,6 @@ void uart5_init(void)
72 USART_Init(UART5, &USART_InitStructure); 58 USART_Init(UART5, &USART_InitStructure);
73 59
74 USART_Cmd(UART5, ENABLE); 60 USART_Cmd(UART5, ENABLE);
75 -  
76 - USART_ITConfig(UART5, USART_IT_RXNE, ENABLE);  
77 -  
78 - NVIC_InitStructure.NVIC_IRQChannel = UART5_IRQn;  
79 - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5;  
80 - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  
81 - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
82 - NVIC_Init(&NVIC_InitStructure);  
83 } 61 }
84 void uart5_rx_mode(void) 62 void uart5_rx_mode(void)
85 { 63 {
@@ -95,7 +73,7 @@ void uart5_tx_mode(void) @@ -95,7 +73,7 @@ void uart5_tx_mode(void)
95 void uart5_send_byte(uint8_t one_byte) 73 void uart5_send_byte(uint8_t one_byte)
96 { 74 {
97 uart5_tx_mode(); 75 uart5_tx_mode();
98 - while(USART_GetFlagStatus(UART5,USART_FLAG_TC)!=SET);//等待发送结束 76 + while(USART_GetFlagStatus(UART5,USART_FLAG_TXE)!=SET);//等待发送结束
99 USART_SendData(UART5,one_byte); //向串口3发送数据 77 USART_SendData(UART5,one_byte); //向串口3发送数据
100 uart5_rx_mode(); 78 uart5_rx_mode();
101 } 79 }
@@ -106,57 +84,16 @@ void uart5_send_bytes(uint8_t* buf,uint16_t length) @@ -106,57 +84,16 @@ void uart5_send_bytes(uint8_t* buf,uint16_t length)
106 uart5_send_byte(buf[i]); 84 uart5_send_byte(buf[i]);
107 } 85 }
108 } 86 }
109 -void uart5_rx_reset(void)  
110 -{  
111 - u5.rx_len=0;  
112 - memset(u5.rx_buf,0,UART5_RX_MAX);//接收缓存区清零  
113 - u5.rx_status = RX_STA_RST;  
114 -}  
115 -void uart5_rx_receiving(void)  
116 -{  
117 - u5.rxtimer->timeclear();  
118 - u5.rxtimer->start();  
119 - u5.rx_status = RX_RECEIVING;  
120 -}  
121 -void uart5_rx_finished(void)  
122 -{  
123 - u5.rxtimer->stop();  
124 - u5.rx_status=RX_FINISHED;  
125 -}  
126 -void UART5_IRQHandler(void)//串口2中断服务程序  
127 -{  
128 - if(USART_GetITStatus(UART5, USART_IT_RXNE) != RESET)//接收中断  
129 - {  
130 - uint8_t res;  
131 - res = USART_ReceiveData(UART5);//读取接收到的数据  
132 - switch(u5.rx_status)  
133 - {  
134 - case RX_STA_RST:  
135 - {  
136 - u5.rx_len = 0;  
137 - u5.rx_buf[u5.rx_len++] = res;//记录接收到的值  
138 - uart5_rx_receiving();  
139 - } break;  
140 - case RX_RECEIVING:  
141 - {  
142 - u5.rx_buf[u5.rx_len++] = res;//记录接收到的值  
143 - if(u5.rx_len==UART5_RX_MAX)  
144 - {  
145 - uart5_rx_finished();  
146 - }  
147 - else  
148 - {  
149 - uart5_rx_receiving();  
150 - }  
151 - } break;  
152 - case RX_FINISHED:  
153 - {  
154 - } break;  
155 - default: break;  
156 - }  
157 - }  
158 - else  
159 - {  
160 87
161 - } 88 +uint8_t uart5_read_byte(uint8_t* c)
  89 +{
  90 + if ( USART_GetFlagStatus(UART5, USART_FLAG_RXNE) != RESET)
  91 + {
  92 + *c = USART_ReceiveData(UART5);
  93 + return 1;
  94 + }
  95 + else
  96 + {
  97 + return 0;
  98 + }
162 } 99 }
SYSTEM/usart/uart5.h
@@ -17,7 +17,7 @@ void uart5_rx_reset(void); @@ -17,7 +17,7 @@ void uart5_rx_reset(void);
17 void uart5_rx_receiving(void); 17 void uart5_rx_receiving(void);
18 void uart5_rx_finished(void); 18 void uart5_rx_finished(void);
19 void uart5_init(void); 19 void uart5_init(void);
20 - 20 +uint8_t uart5_read_byte(uint8_t* c);
21 #endif 21 #endif
22 22
23 23
SYSTEM/usart/usart1.c
@@ -10,23 +10,11 @@ uint8_t USART1_RX_BUF[USART1_RX_MAX] = {0}; //接收缓存区 @@ -10,23 +10,11 @@ uint8_t USART1_RX_BUF[USART1_RX_MAX] = {0}; //接收缓存区
10 uint8_t USART1_TX_BUF[USART1_TX_MAX] = {0}; //发送缓存区 10 uint8_t USART1_TX_BUF[USART1_TX_MAX] = {0}; //发送缓存区
11 11
12 Uart_Type u1; 12 Uart_Type u1;
13 -void usart1_init(uint32_t bound) 13 +void usart1_init(void)
14 { 14 {
15 GPIO_InitTypeDef GPIO_InitStructure; 15 GPIO_InitTypeDef GPIO_InitStructure;
16 USART_InitTypeDef USART_InitStructure; 16 USART_InitTypeDef USART_InitStructure;
17 NVIC_InitTypeDef NVIC_InitStructure; 17 NVIC_InitTypeDef NVIC_InitStructure;
18 -  
19 - memset(USART1_RX_BUF,0,USART1_RX_MAX);  
20 - memset(USART1_TX_BUF,0,USART1_TX_MAX);  
21 -  
22 - u1.rx_buf=USART1_RX_BUF;  
23 - u1.tx_buf=USART1_TX_BUF;  
24 - u1.rx_len=0;  
25 - u1.tx_len=0;  
26 - u1.rx_status = RX_STA_RST;  
27 - u1.rxtimer = &timer3;  
28 -  
29 - timer3_init(usart1_rx_finished);  
30 18
31 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA时钟 19 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA时钟
32 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //使能USART1时钟 20 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //使能USART1时钟
@@ -50,81 +38,24 @@ void usart1_init(uint32_t bound) @@ -50,81 +38,24 @@ void usart1_init(uint32_t bound)
50 USART_Init(USART1, &USART_InitStructure); //初始化串口1 38 USART_Init(USART1, &USART_InitStructure); //初始化串口1
51 39
52 USART_Cmd(USART1, ENABLE); //使能串口1 40 USART_Cmd(USART1, ENABLE); //使能串口1
53 -  
54 - USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //开启相关中断  
55 41
56 - NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //串口1中断通道  
57 - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 3; //抢占优先级3  
58 - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //子优先级3  
59 - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能  
60 - NVIC_Init(&NVIC_InitStructure); //初始化VIC寄存器  
61 } 42 }
62 43
63 void usart1_send_byte(uint8_t one_byte) 44 void usart1_send_byte(uint8_t one_byte)
64 { 45 {
65 46
66 - while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束 47 + while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)!=SET);//等待发送结束
67 USART_SendData(USART1,one_byte); //向串口3发送数据 48 USART_SendData(USART1,one_byte); //向串口3发送数据
68 -  
69 -}  
70 -void usart1_send_bytes(uint8_t* buf,uint16_t length)  
71 -{  
72 - for(uint16_t i=0;i<length;i++)  
73 - {  
74 - usart1_send_byte(buf[i]);  
75 - }  
76 } 49 }
77 -void usart1_rx_reset(void) 50 +uint8_t usart1_read_byte(uint8_t* c)
78 { 51 {
79 - u1.rx_len=0;  
80 - memset(u1.rx_buf,0,USART1_RX_MAX);//接收缓存区清零  
81 - u1.rx_status = RX_STA_RST;  
82 -}  
83 -void usart1_rx_receiving(void)  
84 -{  
85 - u1.rxtimer->timeclear();  
86 - u1.rxtimer->start();  
87 - u1.rx_status = RX_RECEIVING;  
88 -}  
89 -void usart1_rx_finished(void)  
90 -{  
91 - u1.rxtimer->stop();  
92 - u1.rx_status=RX_FINISHED;  
93 -}  
94 -void USART1_IRQHandler(void)//串口2中断服务程序  
95 -{  
96 - if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//接收中断  
97 - {  
98 - uint8_t res;  
99 - res = USART_ReceiveData(USART1);//读取接收到的数据  
100 - switch(u1.rx_status)  
101 - {  
102 - case RX_STA_RST:  
103 - {  
104 - u1.rx_len = 0;  
105 - u1.rx_buf[u1.rx_len++] = res;//记录接收到的值  
106 - usart1_rx_receiving();  
107 - } break;  
108 - case RX_RECEIVING:  
109 - {  
110 - u1.rx_buf[u1.rx_len++] = res;//记录接收到的值  
111 - if(u1.rx_len==USART1_RX_MAX)  
112 - {  
113 - usart1_rx_finished();  
114 - }  
115 - else  
116 - {  
117 - usart1_rx_receiving();  
118 - }  
119 - } break;  
120 - case RX_FINISHED:  
121 - {  
122 - } break;  
123 - default: break;  
124 - }  
125 - }  
126 - else  
127 - {  
128 -  
129 - } 52 + if ( USART_GetFlagStatus(USART1, USART_FLAG_RXNE) != RESET)
  53 + {
  54 + *c = USART_ReceiveData(USART1);
  55 + return 1;
  56 + }
  57 + else
  58 + {
  59 + return 0;
  60 + }
130 } 61 }
SYSTEM/usart/usart1.h
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 #include "uart.h" 6 #include "uart.h"
7 7
8 #define U1_BAUDRETE 115200 8 #define U1_BAUDRETE 115200
  9 +
9 extern Uart_Type u1; 10 extern Uart_Type u1;
10 11
11 void usart1_send_byte(uint8_t one_byte); 12 void usart1_send_byte(uint8_t one_byte);
@@ -13,5 +14,7 @@ void usart1_send_bytes(uint8_t* buf,uint16_t length); @@ -13,5 +14,7 @@ void usart1_send_bytes(uint8_t* buf,uint16_t length);
13 void usart1_rx_reset(void); 14 void usart1_rx_reset(void);
14 void usart1_rx_receiving(void); 15 void usart1_rx_receiving(void);
15 void usart1_rx_finished(void); 16 void usart1_rx_finished(void);
16 -void uart1_init(void); 17 +void usart1_init(void);
  18 +uint8_t usart1_read_byte(uint8_t* c);
  19 +
17 #endif 20 #endif
USER/IAP.uvguix.Admin
@@ -11,17 +11,17 @@ @@ -11,17 +11,17 @@
11 <View> 11 <View>
12 <WinId>38003</WinId> 12 <WinId>38003</WinId>
13 <ViewName>Registers</ViewName> 13 <ViewName>Registers</ViewName>
14 - <TableColWidths>140 90</TableColWidths> 14 + <TableColWidths>146 84</TableColWidths>
15 </View> 15 </View>
16 <View> 16 <View>
17 <WinId>346</WinId> 17 <WinId>346</WinId>
18 <ViewName>Code Coverage</ViewName> 18 <ViewName>Code Coverage</ViewName>
19 - <TableColWidths>1010 160</TableColWidths> 19 + <TableColWidths>1010 656</TableColWidths>
20 </View> 20 </View>
21 <View> 21 <View>
22 <WinId>204</WinId> 22 <WinId>204</WinId>
23 <ViewName>Performance Analyzer</ViewName> 23 <ViewName>Performance Analyzer</ViewName>
24 - <TableColWidths>1170</TableColWidths> 24 + <TableColWidths>1170 175 175 146</TableColWidths>
25 </View> 25 </View>
26 </SECTreeCtrl> 26 </SECTreeCtrl>
27 27
@@ -42,7 +42,7 @@ @@ -42,7 +42,7 @@
42 <WinId>1936</WinId> 42 <WinId>1936</WinId>
43 <ViewName>Watch 1</ViewName> 43 <ViewName>Watch 1</ViewName>
44 <UserString></UserString> 44 <UserString></UserString>
45 - <TableColWidths>200 133 133</TableColWidths> 45 + <TableColWidths>275 295 133</TableColWidths>
46 </View> 46 </View>
47 <View> 47 <View>
48 <WinId>1937</WinId> 48 <WinId>1937</WinId>
@@ -54,7 +54,7 @@ @@ -54,7 +54,7 @@
54 <WinId>1935</WinId> 54 <WinId>1935</WinId>
55 <ViewName>Call Stack + Locals</ViewName> 55 <ViewName>Call Stack + Locals</ViewName>
56 <UserString></UserString> 56 <UserString></UserString>
57 - <TableColWidths>200 133 133</TableColWidths> 57 + <TableColWidths>200 286 133</TableColWidths>
58 </View> 58 </View>
59 <View> 59 <View>
60 <WinId>2506</WinId> 60 <WinId>2506</WinId>
@@ -66,7 +66,7 @@ @@ -66,7 +66,7 @@
66 <WinId>466</WinId> 66 <WinId>466</WinId>
67 <ViewName>Source Browser</ViewName> 67 <ViewName>Source Browser</ViewName>
68 <UserString>500</UserString> 68 <UserString>500</UserString>
69 - <TableColWidths>300</TableColWidths> 69 + <TableColWidths>166</TableColWidths>
70 </View> 70 </View>
71 </TreeListPane> 71 </TreeListPane>
72 72
@@ -74,11 +74,11 @@ @@ -74,11 +74,11 @@
74 74
75 <WindowSettings> 75 <WindowSettings>
76 <LogicAnalizer> 76 <LogicAnalizer>
77 - <ShowLACursor>1</ShowLACursor>  
78 - <ShowSignalInfo>1</ShowSignalInfo> 77 + <ShowLACursor>0</ShowLACursor>
  78 + <ShowSignalInfo>0</ShowSignalInfo>
79 <ShowCycles>0</ShowCycles> 79 <ShowCycles>0</ShowCycles>
80 - <LeftSideBarSize>0</LeftSideBarSize>  
81 - <TimeBaseIndex>-1</TimeBaseIndex> 80 + <LeftSideBarSize>50</LeftSideBarSize>
  81 + <TimeBaseIndex>16</TimeBaseIndex>
82 </LogicAnalizer> 82 </LogicAnalizer>
83 </WindowSettings> 83 </WindowSettings>
84 84
@@ -97,17 +97,17 @@ @@ -97,17 +97,17 @@
97 <yPos>-1</yPos> 97 <yPos>-1</yPos>
98 </MaxPosition> 98 </MaxPosition>
99 <NormalPosition> 99 <NormalPosition>
100 - <Top>17</Top>  
101 - <Left>631</Left>  
102 - <Right>1555</Right>  
103 - <Bottom>740</Bottom> 100 + <Top>86</Top>
  101 + <Left>-3</Left>
  102 + <Right>921</Right>
  103 + <Bottom>809</Bottom>
104 </NormalPosition> 104 </NormalPosition>
105 </WindowPosition> 105 </WindowPosition>
106 <MDIClientArea> 106 <MDIClientArea>
107 <RegID>0</RegID> 107 <RegID>0</RegID>
108 <MDITabState> 108 <MDITabState>
109 - <Len>940</Len>  
110 - <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000B000000000000000100000024453A5C6769745C6769746C61625C426F6F744C6F616465725C555345525C6D61696E2E6300000000066D61696E2E6300000000BCA8E100FFFFFFFF2E453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C7573617274312E6800000000087573617274312E6800000000FFDC7800FFFFFFFF2D453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C75617274352E63000000000775617274352E6300000000BECEA100FFFFFFFF2E453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C7573617274312E6300000000087573617274312E6300000000F0A0A100FFFFFFFF29453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C7379735C6465762E6800000000056465762E6800000000BCA8E100FFFFFFFF22453A5C6769745C6769746C61625C426F6F744C6F616465725C4941505C6961702E6300000000056961702E63000000009CC1B600FFFFFFFF2D453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C75617274352E68000000000775617274352E6800000000F7B88600FFFFFFFF22453A5C6769745C6769746C61625C426F6F744C6F616465725C4941505C6961702E6800000000056961702E6800000000D9ADC200FFFFFFFF2F453A5C6769745C6769746C61625C426F6F744C6F616465725C48415244574152455C464C4153485C666C6173682E630000000007666C6173682E6300000000A5C2D700FFFFFFFF34453A5C6769745C6769746C61625C426F6F744C6F616465725C46574C49425C7372635C73746D3332663478785F666C6173682E63000000001173746D3332663478785F666C6173682E6300000000B3A6BE00FFFFFFFF34453A5C6769745C6769746C61625C426F6F744C6F616465725C46574C49425C696E635C73746D3332663478785F666C6173682E68000000001173746D3332663478785F666C6173682E6800000000EAD6A300FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000009030000</Data> 109 + <Len>235</Len>
  110 + <Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000001000000000000000100000025453A5C6769745C6769746C61625C426F6F744C6F616465725C4941505C796D6F64656D2E630000000008796D6F64656D2E6300000000BECEA100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F40000006600000080070000FD020000</Data>
111 </MDITabState> 111 </MDITabState>
112 </MDIClientArea> 112 </MDIClientArea>
113 <ViewEx> 113 <ViewEx>
@@ -146,7 +146,7 @@ @@ -146,7 +146,7 @@
146 <RecentRowIndex>0</RecentRowIndex> 146 <RecentRowIndex>0</RecentRowIndex>
147 <RectRecentDocked> 147 <RectRecentDocked>
148 <Len>16</Len> 148 <Len>16</Len>
149 - <Data>0300000066000000ED000000D9020000</Data> 149 + <Data>0300000066000000ED000000CD020000</Data>
150 </RectRecentDocked> 150 </RectRecentDocked>
151 <RectRecentFloat> 151 <RectRecentFloat>
152 <Len>16</Len> 152 <Len>16</Len>
@@ -166,7 +166,7 @@ @@ -166,7 +166,7 @@
166 <RecentRowIndex>0</RecentRowIndex> 166 <RecentRowIndex>0</RecentRowIndex>
167 <RectRecentDocked> 167 <RectRecentDocked>
168 <Len>16</Len> 168 <Len>16</Len>
169 - <Data>0300000066000000ED000000D9020000</Data> 169 + <Data>0300000066000000ED000000CD020000</Data>
170 </RectRecentDocked> 170 </RectRecentDocked>
171 <RectRecentFloat> 171 <RectRecentFloat>
172 <Len>16</Len> 172 <Len>16</Len>
@@ -182,7 +182,7 @@ @@ -182,7 +182,7 @@
182 <IsActivated>0</IsActivated> 182 <IsActivated>0</IsActivated>
183 <MRUWidth>32767</MRUWidth> 183 <MRUWidth>32767</MRUWidth>
184 <PinState>0</PinState> 184 <PinState>0</PinState>
185 - <RecentFrameAlignment>4096</RecentFrameAlignment> 185 + <RecentFrameAlignment>32768</RecentFrameAlignment>
186 <RecentRowIndex>0</RecentRowIndex> 186 <RecentRowIndex>0</RecentRowIndex>
187 <RectRecentDocked> 187 <RectRecentDocked>
188 <Len>16</Len> 188 <Len>16</Len>
@@ -190,7 +190,7 @@ @@ -190,7 +190,7 @@
190 </RectRecentDocked> 190 </RectRecentDocked>
191 <RectRecentFloat> 191 <RectRecentFloat>
192 <Len>16</Len> 192 <Len>16</Len>
193 - <Data>D8000000EF000000A00300007F010000</Data> 193 + <Data>03040000E0000000CB060000C5020000</Data>
194 </RectRecentFloat> 194 </RectRecentFloat>
195 </Window> 195 </Window>
196 <Window> 196 <Window>
@@ -446,7 +446,7 @@ @@ -446,7 +446,7 @@
446 <RecentRowIndex>0</RecentRowIndex> 446 <RecentRowIndex>0</RecentRowIndex>
447 <RectRecentDocked> 447 <RectRecentDocked>
448 <Len>16</Len> 448 <Len>16</Len>
449 - <Data>0300000066000000ED000000D9020000</Data> 449 + <Data>0300000066000000ED000000CD020000</Data>
450 </RectRecentDocked> 450 </RectRecentDocked>
451 <RectRecentFloat> 451 <RectRecentFloat>
452 <Len>16</Len> 452 <Len>16</Len>
@@ -466,7 +466,7 @@ @@ -466,7 +466,7 @@
466 <RecentRowIndex>0</RecentRowIndex> 466 <RecentRowIndex>0</RecentRowIndex>
467 <RectRecentDocked> 467 <RectRecentDocked>
468 <Len>16</Len> 468 <Len>16</Len>
469 - <Data>0300000066000000ED000000D9020000</Data> 469 + <Data>0300000066000000ED000000CD020000</Data>
470 </RectRecentDocked> 470 </RectRecentDocked>
471 <RectRecentFloat> 471 <RectRecentFloat>
472 <Len>16</Len> 472 <Len>16</Len>
@@ -486,7 +486,7 @@ @@ -486,7 +486,7 @@
486 <RecentRowIndex>0</RecentRowIndex> 486 <RecentRowIndex>0</RecentRowIndex>
487 <RectRecentDocked> 487 <RectRecentDocked>
488 <Len>16</Len> 488 <Len>16</Len>
489 - <Data>030000000D0300007D070000CD030000</Data> 489 + <Data>03000000010300007D070000CD030000</Data>
490 </RectRecentDocked> 490 </RectRecentDocked>
491 <RectRecentFloat> 491 <RectRecentFloat>
492 <Len>16</Len> 492 <Len>16</Len>
@@ -526,7 +526,7 @@ @@ -526,7 +526,7 @@
526 <RecentRowIndex>0</RecentRowIndex> 526 <RecentRowIndex>0</RecentRowIndex>
527 <RectRecentDocked> 527 <RectRecentDocked>
528 <Len>16</Len> 528 <Len>16</Len>
529 - <Data>030000000D0300007D070000CD030000</Data> 529 + <Data>03000000010300007D070000CD030000</Data>
530 </RectRecentDocked> 530 </RectRecentDocked>
531 <RectRecentFloat> 531 <RectRecentFloat>
532 <Len>16</Len> 532 <Len>16</Len>
@@ -1146,7 +1146,7 @@ @@ -1146,7 +1146,7 @@
1146 <RecentRowIndex>0</RecentRowIndex> 1146 <RecentRowIndex>0</RecentRowIndex>
1147 <RectRecentDocked> 1147 <RectRecentDocked>
1148 <Len>16</Len> 1148 <Len>16</Len>
1149 - <Data>0300000066000000ED000000D9020000</Data> 1149 + <Data>0300000066000000ED000000CD020000</Data>
1150 </RectRecentDocked> 1150 </RectRecentDocked>
1151 <RectRecentFloat> 1151 <RectRecentFloat>
1152 <Len>16</Len> 1152 <Len>16</Len>
@@ -1166,7 +1166,7 @@ @@ -1166,7 +1166,7 @@
1166 <RecentRowIndex>0</RecentRowIndex> 1166 <RecentRowIndex>0</RecentRowIndex>
1167 <RectRecentDocked> 1167 <RectRecentDocked>
1168 <Len>16</Len> 1168 <Len>16</Len>
1169 - <Data>030000000D0300007D070000CD030000</Data> 1169 + <Data>03000000010300007D070000CD030000</Data>
1170 </RectRecentDocked> 1170 </RectRecentDocked>
1171 <RectRecentFloat> 1171 <RectRecentFloat>
1172 <Len>16</Len> 1172 <Len>16</Len>
@@ -1186,7 +1186,7 @@ @@ -1186,7 +1186,7 @@
1186 <RecentRowIndex>0</RecentRowIndex> 1186 <RecentRowIndex>0</RecentRowIndex>
1187 <RectRecentDocked> 1187 <RectRecentDocked>
1188 <Len>16</Len> 1188 <Len>16</Len>
1189 - <Data>030000000D0300007D070000CD030000</Data> 1189 + <Data>03000000010300007D070000CD030000</Data>
1190 </RectRecentDocked> 1190 </RectRecentDocked>
1191 <RectRecentFloat> 1191 <RectRecentFloat>
1192 <Len>16</Len> 1192 <Len>16</Len>
@@ -1246,7 +1246,7 @@ @@ -1246,7 +1246,7 @@
1246 <RecentRowIndex>0</RecentRowIndex> 1246 <RecentRowIndex>0</RecentRowIndex>
1247 <RectRecentDocked> 1247 <RectRecentDocked>
1248 <Len>16</Len> 1248 <Len>16</Len>
1249 - <Data>030000000D0300007D070000CD030000</Data> 1249 + <Data>03000000010300007D070000CD030000</Data>
1250 </RectRecentDocked> 1250 </RectRecentDocked>
1251 <RectRecentFloat> 1251 <RectRecentFloat>
1252 <Len>16</Len> 1252 <Len>16</Len>
@@ -1266,7 +1266,7 @@ @@ -1266,7 +1266,7 @@
1266 <RecentRowIndex>0</RecentRowIndex> 1266 <RecentRowIndex>0</RecentRowIndex>
1267 <RectRecentDocked> 1267 <RectRecentDocked>
1268 <Len>16</Len> 1268 <Len>16</Len>
1269 - <Data>030000000D0300007D070000CD030000</Data> 1269 + <Data>03000000010300007D070000CD030000</Data>
1270 </RectRecentDocked> 1270 </RectRecentDocked>
1271 <RectRecentFloat> 1271 <RectRecentFloat>
1272 <Len>16</Len> 1272 <Len>16</Len>
@@ -1706,11 +1706,11 @@ @@ -1706,11 +1706,11 @@
1706 <RecentRowIndex>0</RecentRowIndex> 1706 <RecentRowIndex>0</RecentRowIndex>
1707 <RectRecentDocked> 1707 <RectRecentDocked>
1708 <Len>16</Len> 1708 <Len>16</Len>
1709 - <Data>0000000000000000C40300001C000000</Data> 1709 + <Data>0E00000000000000D20300001C000000</Data>
1710 </RectRecentDocked> 1710 </RectRecentDocked>
1711 <RectRecentFloat> 1711 <RectRecentFloat>
1712 <Len>16</Len> 1712 <Len>16</Len>
1713 - <Data>0A0000000A0000006E0000006E000000</Data> 1713 + <Data>0A0000000A000000CB03000042000000</Data>
1714 </RectRecentFloat> 1714 </RectRecentFloat>
1715 </Window> 1715 </Window>
1716 <Window> 1716 <Window>
@@ -1746,7 +1746,7 @@ @@ -1746,7 +1746,7 @@
1746 <RecentRowIndex>1</RecentRowIndex> 1746 <RecentRowIndex>1</RecentRowIndex>
1747 <RectRecentDocked> 1747 <RectRecentDocked>
1748 <Len>16</Len> 1748 <Len>16</Len>
1749 - <Data>000000001C000000E701000038000000</Data> 1749 + <Data>090000001C000000F001000038000000</Data>
1750 </RectRecentDocked> 1750 </RectRecentDocked>
1751 <RectRecentFloat> 1751 <RectRecentFloat>
1752 <Len>16</Len> 1752 <Len>16</Len>
@@ -1795,14 +1795,14 @@ @@ -1795,14 +1795,14 @@
1795 </Window> 1795 </Window>
1796 <DockMan> 1796 <DockMan>
1797 <Len>3312</Len> 1797 <Len>3312</Len>
1798 - <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000F2020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000009030000000000004F000000F0000000F20200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000F202000080070000F60200000100000001000010040000000100000002FDFFFF8E000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000000D03000080070000FD03000000000000F602000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data> 1798 + <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000E6020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F0000000FD020000000000004F000000F0000000E60200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000E602000080070000EA0200000100000001000010040000000100000022FFFFFF76010000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000000103000080070000FD03000000000000EA02000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
1799 </DockMan> 1799 </DockMan>
1800 <ToolBar> 1800 <ToolBar>
1801 <RegID>59392</RegID> 1801 <RegID>59392</RegID>
1802 <Name>File</Name> 1802 <Name>File</Name>
1803 <Buttons> 1803 <Buttons>
1804 - <Len>2419</Len>  
1805 - <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000003525443960000000000000013000D5469636B5F44656C61795F6D73000454494D340674696D657234065553415254350555415254350275350575617274350674696D6572360454494D360452585F520853656E64427974650A454E5F3438355F50696E0B454E5F3438355F506F7274035254430751555243434647042B435351044E554C4C06514D5443464700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000</Data> 1804 + <Len>2344</Len>
  1805 + <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D73657373696F6E5F626567696E960000000000000007000D73657373696F6E5F626567696E0D7061636B65745F6C656E6774680D526563656976655061636B657406726573756C740E596D6F64656D5F526563656976650C43616C63436865636B73756D0C75617274355F72785F66696E00000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000</Data>
1806 </Buttons> 1806 </Buttons>
1807 <OriginalItems> 1807 <OriginalItems>
1808 <Len>1423</Len> 1808 <Len>1423</Len>
@@ -1818,7 +1818,7 @@ @@ -1818,7 +1818,7 @@
1818 <Name>Build</Name> 1818 <Name>Build</Name>
1819 <Buttons> 1819 <Buttons>
1820 <Len>966</Len> 1820 <Len>966</Len>
1821 - <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000002001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000034941509600000000000000010003494150000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data> 1821 + <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000002001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000034941509600000000000000010003494150000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
1822 </Buttons> 1822 </Buttons>
1823 <OriginalItems> 1823 <OriginalItems>
1824 <Len>583</Len> 1824 <Len>583</Len>
@@ -1834,7 +1834,7 @@ @@ -1834,7 +1834,7 @@
1834 <Name>Debug</Name> 1834 <Name>Debug</Name>
1835 <Buttons> 1835 <Buttons>
1836 <Len>2373</Len> 1836 <Len>2373</Len>
1837 - <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data> 1837 + <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
1838 </Buttons> 1838 </Buttons>
1839 <OriginalItems> 1839 <OriginalItems>
1840 <Len>898</Len> 1840 <Len>898</Len>
@@ -1851,111 +1851,1762 @@ @@ -1851,111 +1851,1762 @@
1851 <ScreenCY>1080</ScreenCY> 1851 <ScreenCY>1080</ScreenCY>
1852 </ControlBarsSummary> 1852 </ControlBarsSummary>
1853 </ViewEx> 1853 </ViewEx>
1854 - </WinLayoutEx>  
1855 -  
1856 - <MDIGroups>  
1857 - <Orientation>1</Orientation>  
1858 - <ActiveMDIGroup>0</ActiveMDIGroup>  
1859 - <MDIGroup>  
1860 - <Size>100</Size>  
1861 - <ActiveTab>0</ActiveTab>  
1862 - <Doc>  
1863 - <Name>.\main.c</Name>  
1864 - <ColumnNumber>2</ColumnNumber>  
1865 - <TopLine>39</TopLine>  
1866 - <CurrentLine>90</CurrentLine>  
1867 - <Folding>1</Folding>  
1868 - <ContractedFolders>45,61</ContractedFolders>  
1869 - <PaneID>0</PaneID>  
1870 - </Doc>  
1871 - <Doc>  
1872 - <Name>..\SYSTEM\usart\usart1.h</Name>  
1873 - <ColumnNumber>2</ColumnNumber>  
1874 - <TopLine>1</TopLine>  
1875 - <CurrentLine>9</CurrentLine>  
1876 - <Folding>1</Folding>  
1877 - <ContractedFolders></ContractedFolders>  
1878 - <PaneID>0</PaneID>  
1879 - </Doc>  
1880 - <Doc>  
1881 - <Name>..\SYSTEM\usart\uart5.c</Name>  
1882 - <ColumnNumber>21</ColumnNumber>  
1883 - <TopLine>68</TopLine>  
1884 - <CurrentLine>123</CurrentLine>  
1885 - <Folding>1</Folding>  
1886 - <ContractedFolders>84,89,95,102,115,126</ContractedFolders>  
1887 - <PaneID>0</PaneID>  
1888 - </Doc>  
1889 - <Doc>  
1890 - <Name>..\SYSTEM\usart\usart1.c</Name>  
1891 - <ColumnNumber>13</ColumnNumber>  
1892 - <TopLine>1</TopLine>  
1893 - <CurrentLine>1</CurrentLine>  
1894 - <Folding>1</Folding>  
1895 - <ContractedFolders></ContractedFolders>  
1896 - <PaneID>0</PaneID>  
1897 - </Doc>  
1898 - <Doc>  
1899 - <Name>..\SYSTEM\sys\dev.h</Name>  
1900 - <ColumnNumber>0</ColumnNumber>  
1901 - <TopLine>36</TopLine>  
1902 - <CurrentLine>48</CurrentLine>  
1903 - <Folding>1</Folding>  
1904 - <ContractedFolders></ContractedFolders>  
1905 - <PaneID>0</PaneID>  
1906 - </Doc>  
1907 - <Doc>  
1908 - <Name>..\IAP\iap.c</Name>  
1909 - <ColumnNumber>0</ColumnNumber>  
1910 - <TopLine>128</TopLine>  
1911 - <CurrentLine>158</CurrentLine>  
1912 - <Folding>1</Folding>  
1913 - <ContractedFolders></ContractedFolders>  
1914 - <PaneID>0</PaneID>  
1915 - </Doc>  
1916 - <Doc>  
1917 - <Name>..\SYSTEM\usart\uart5.h</Name>  
1918 - <ColumnNumber>20</ColumnNumber>  
1919 - <TopLine>1</TopLine>  
1920 - <CurrentLine>6</CurrentLine>  
1921 - <Folding>1</Folding>  
1922 - <ContractedFolders></ContractedFolders>  
1923 - <PaneID>0</PaneID>  
1924 - </Doc>  
1925 - <Doc>  
1926 - <Name>..\IAP\iap.h</Name>  
1927 - <ColumnNumber>23</ColumnNumber>  
1928 - <TopLine>1</TopLine>  
1929 - <CurrentLine>19</CurrentLine>  
1930 - <Folding>1</Folding>  
1931 - <ContractedFolders></ContractedFolders>  
1932 - <PaneID>0</PaneID>  
1933 - </Doc>  
1934 - <Doc>  
1935 - <Name>..\HARDWARE\FLASH\flash.c</Name>  
1936 - <ColumnNumber>41</ColumnNumber>  
1937 - <TopLine>1</TopLine>  
1938 - <CurrentLine>43</CurrentLine>  
1939 - <Folding>1</Folding>  
1940 - <ContractedFolders></ContractedFolders>  
1941 - <PaneID>0</PaneID>  
1942 - </Doc>  
1943 - <Doc>  
1944 - <Name>..\FWLIB\src\stm32f4xx_flash.c</Name>  
1945 - <ColumnNumber>0</ColumnNumber>  
1946 - <TopLine>454</TopLine>  
1947 - <CurrentLine>469</CurrentLine>  
1948 - <Folding>1</Folding>  
1949 - <ContractedFolders></ContractedFolders>  
1950 - <PaneID>0</PaneID>  
1951 - </Doc>  
1952 - <Doc>  
1953 - <Name>..\FWLIB\inc\stm32f4xx_flash.h</Name>  
1954 - <ColumnNumber>0</ColumnNumber>  
1955 - <TopLine>123</TopLine>  
1956 - <CurrentLine>135</CurrentLine> 1854 + <ViewEx>
  1855 + <ViewType>1</ViewType>
  1856 + <ViewName>Debug</ViewName>
  1857 + <Window>
  1858 + <RegID>-1</RegID>
  1859 + <PaneID>-1</PaneID>
  1860 + <IsVisible>0</IsVisible>
  1861 + <IsFloating>0</IsFloating>
  1862 + <IsTabbed>0</IsTabbed>
  1863 + <IsActivated>0</IsActivated>
  1864 + <MRUWidth>32767</MRUWidth>
  1865 + <PinState>0</PinState>
  1866 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  1867 + <RecentRowIndex>0</RecentRowIndex>
  1868 + <RectRecentDocked>
  1869 + <Len>16</Len>
  1870 + <Data>F40000004F00000080070000DF000000</Data>
  1871 + </RectRecentDocked>
  1872 + <RectRecentFloat>
  1873 + <Len>16</Len>
  1874 + <Data>F40000006600000080070000F6000000</Data>
  1875 + </RectRecentFloat>
  1876 + </Window>
  1877 + <Window>
  1878 + <RegID>1005</RegID>
  1879 + <PaneID>1005</PaneID>
  1880 + <IsVisible>1</IsVisible>
  1881 + <IsFloating>0</IsFloating>
  1882 + <IsTabbed>0</IsTabbed>
  1883 + <IsActivated>0</IsActivated>
  1884 + <MRUWidth>32767</MRUWidth>
  1885 + <PinState>0</PinState>
  1886 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  1887 + <RecentRowIndex>0</RecentRowIndex>
  1888 + <RectRecentDocked>
  1889 + <Len>16</Len>
  1890 + <Data>0300000066000000ED000000B3010000</Data>
  1891 + </RectRecentDocked>
  1892 + <RectRecentFloat>
  1893 + <Len>16</Len>
  1894 + <Data>8A000000A10000007A0100006C010000</Data>
  1895 + </RectRecentFloat>
  1896 + </Window>
  1897 + <Window>
  1898 + <RegID>109</RegID>
  1899 + <PaneID>109</PaneID>
  1900 + <IsVisible>0</IsVisible>
  1901 + <IsFloating>0</IsFloating>
  1902 + <IsTabbed>0</IsTabbed>
  1903 + <IsActivated>0</IsActivated>
  1904 + <MRUWidth>32767</MRUWidth>
  1905 + <PinState>0</PinState>
  1906 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  1907 + <RecentRowIndex>0</RecentRowIndex>
  1908 + <RectRecentDocked>
  1909 + <Len>16</Len>
  1910 + <Data>0300000066000000ED000000B3010000</Data>
  1911 + </RectRecentDocked>
  1912 + <RectRecentFloat>
  1913 + <Len>16</Len>
  1914 + <Data>8A000000A1000000A6010000E1020000</Data>
  1915 + </RectRecentFloat>
  1916 + </Window>
  1917 + <Window>
  1918 + <RegID>1465</RegID>
  1919 + <PaneID>1465</PaneID>
  1920 + <IsVisible>1</IsVisible>
  1921 + <IsFloating>0</IsFloating>
  1922 + <IsTabbed>0</IsTabbed>
  1923 + <IsActivated>0</IsActivated>
  1924 + <MRUWidth>32767</MRUWidth>
  1925 + <PinState>0</PinState>
  1926 + <RecentFrameAlignment>32768</RecentFrameAlignment>
  1927 + <RecentRowIndex>0</RecentRowIndex>
  1928 + <RectRecentDocked>
  1929 + <Len>16</Len>
  1930 + <Data>C7030000E70100007D0700008F020000</Data>
  1931 + </RectRecentDocked>
  1932 + <RectRecentFloat>
  1933 + <Len>16</Len>
  1934 + <Data>C5030000E80200008D060000CD040000</Data>
  1935 + </RectRecentFloat>
  1936 + </Window>
  1937 + <Window>
  1938 + <RegID>1466</RegID>
  1939 + <PaneID>1466</PaneID>
  1940 + <IsVisible>1</IsVisible>
  1941 + <IsFloating>0</IsFloating>
  1942 + <IsTabbed>0</IsTabbed>
  1943 + <IsActivated>0</IsActivated>
  1944 + <MRUWidth>32767</MRUWidth>
  1945 + <PinState>0</PinState>
  1946 + <RecentFrameAlignment>32768</RecentFrameAlignment>
  1947 + <RecentRowIndex>0</RecentRowIndex>
  1948 + <RectRecentDocked>
  1949 + <Len>16</Len>
  1950 + <Data>C7030000E70100007D0700008F020000</Data>
  1951 + </RectRecentDocked>
  1952 + <RectRecentFloat>
  1953 + <Len>16</Len>
  1954 + <Data>8A000000A10000005203000031010000</Data>
  1955 + </RectRecentFloat>
  1956 + </Window>
  1957 + <Window>
  1958 + <RegID>1467</RegID>
  1959 + <PaneID>1467</PaneID>
  1960 + <IsVisible>0</IsVisible>
  1961 + <IsFloating>0</IsFloating>
  1962 + <IsTabbed>0</IsTabbed>
  1963 + <IsActivated>0</IsActivated>
  1964 + <MRUWidth>32767</MRUWidth>
  1965 + <PinState>0</PinState>
  1966 + <RecentFrameAlignment>32768</RecentFrameAlignment>
  1967 + <RecentRowIndex>0</RecentRowIndex>
  1968 + <RectRecentDocked>
  1969 + <Len>16</Len>
  1970 + <Data>C7030000E70100007D0700008F020000</Data>
  1971 + </RectRecentDocked>
  1972 + <RectRecentFloat>
  1973 + <Len>16</Len>
  1974 + <Data>8A000000A10000005203000031010000</Data>
  1975 + </RectRecentFloat>
  1976 + </Window>
  1977 + <Window>
  1978 + <RegID>1468</RegID>
  1979 + <PaneID>1468</PaneID>
  1980 + <IsVisible>0</IsVisible>
  1981 + <IsFloating>0</IsFloating>
  1982 + <IsTabbed>0</IsTabbed>
  1983 + <IsActivated>0</IsActivated>
  1984 + <MRUWidth>32767</MRUWidth>
  1985 + <PinState>0</PinState>
  1986 + <RecentFrameAlignment>32768</RecentFrameAlignment>
  1987 + <RecentRowIndex>0</RecentRowIndex>
  1988 + <RectRecentDocked>
  1989 + <Len>16</Len>
  1990 + <Data>C7030000E70100007D0700008F020000</Data>
  1991 + </RectRecentDocked>
  1992 + <RectRecentFloat>
  1993 + <Len>16</Len>
  1994 + <Data>8A000000A10000005203000031010000</Data>
  1995 + </RectRecentFloat>
  1996 + </Window>
  1997 + <Window>
  1998 + <RegID>1506</RegID>
  1999 + <PaneID>1506</PaneID>
  2000 + <IsVisible>0</IsVisible>
  2001 + <IsFloating>0</IsFloating>
  2002 + <IsTabbed>0</IsTabbed>
  2003 + <IsActivated>0</IsActivated>
  2004 + <MRUWidth>32767</MRUWidth>
  2005 + <PinState>0</PinState>
  2006 + <RecentFrameAlignment>16384</RecentFrameAlignment>
  2007 + <RecentRowIndex>0</RecentRowIndex>
  2008 + <RectRecentDocked>
  2009 + <Len>16</Len>
  2010 + <Data>A3040000660000008D05000010020000</Data>
  2011 + </RectRecentDocked>
  2012 + <RectRecentFloat>
  2013 + <Len>16</Len>
  2014 + <Data>8A000000A10000007A0100006C010000</Data>
  2015 + </RectRecentFloat>
  2016 + </Window>
  2017 + <Window>
  2018 + <RegID>1913</RegID>
  2019 + <PaneID>1913</PaneID>
  2020 + <IsVisible>0</IsVisible>
  2021 + <IsFloating>0</IsFloating>
  2022 + <IsTabbed>0</IsTabbed>
  2023 + <IsActivated>0</IsActivated>
  2024 + <MRUWidth>32767</MRUWidth>
  2025 + <PinState>0</PinState>
  2026 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2027 + <RecentRowIndex>0</RecentRowIndex>
  2028 + <RectRecentDocked>
  2029 + <Len>16</Len>
  2030 + <Data>F7000000660000007D070000C6000000</Data>
  2031 + </RectRecentDocked>
  2032 + <RectRecentFloat>
  2033 + <Len>16</Len>
  2034 + <Data>8A000000A10000005203000031010000</Data>
  2035 + </RectRecentFloat>
  2036 + </Window>
  2037 + <Window>
  2038 + <RegID>1935</RegID>
  2039 + <PaneID>1935</PaneID>
  2040 + <IsVisible>1</IsVisible>
  2041 + <IsFloating>0</IsFloating>
  2042 + <IsTabbed>0</IsTabbed>
  2043 + <IsActivated>0</IsActivated>
  2044 + <MRUWidth>32767</MRUWidth>
  2045 + <PinState>0</PinState>
  2046 + <RecentFrameAlignment>32768</RecentFrameAlignment>
  2047 + <RecentRowIndex>0</RecentRowIndex>
  2048 + <RectRecentDocked>
  2049 + <Len>16</Len>
  2050 + <Data>C7030000E70100007D0700008F020000</Data>
  2051 + </RectRecentDocked>
  2052 + <RectRecentFloat>
  2053 + <Len>16</Len>
  2054 + <Data>8A000000A10000007A0100006C010000</Data>
  2055 + </RectRecentFloat>
  2056 + </Window>
  2057 + <Window>
  2058 + <RegID>1936</RegID>
  2059 + <PaneID>1936</PaneID>
  2060 + <IsVisible>1</IsVisible>
  2061 + <IsFloating>0</IsFloating>
  2062 + <IsTabbed>0</IsTabbed>
  2063 + <IsActivated>0</IsActivated>
  2064 + <MRUWidth>32767</MRUWidth>
  2065 + <PinState>0</PinState>
  2066 + <RecentFrameAlignment>32768</RecentFrameAlignment>
  2067 + <RecentRowIndex>0</RecentRowIndex>
  2068 + <RectRecentDocked>
  2069 + <Len>16</Len>
  2070 + <Data>C7030000E70100007D0700008F020000</Data>
  2071 + </RectRecentDocked>
  2072 + <RectRecentFloat>
  2073 + <Len>16</Len>
  2074 + <Data>8A000000A10000007A0100006C010000</Data>
  2075 + </RectRecentFloat>
  2076 + </Window>
  2077 + <Window>
  2078 + <RegID>1937</RegID>
  2079 + <PaneID>1937</PaneID>
  2080 + <IsVisible>0</IsVisible>
  2081 + <IsFloating>0</IsFloating>
  2082 + <IsTabbed>0</IsTabbed>
  2083 + <IsActivated>0</IsActivated>
  2084 + <MRUWidth>32767</MRUWidth>
  2085 + <PinState>0</PinState>
  2086 + <RecentFrameAlignment>32768</RecentFrameAlignment>
  2087 + <RecentRowIndex>0</RecentRowIndex>
  2088 + <RectRecentDocked>
  2089 + <Len>16</Len>
  2090 + <Data>C7030000E70100007D0700008F020000</Data>
  2091 + </RectRecentDocked>
  2092 + <RectRecentFloat>
  2093 + <Len>16</Len>
  2094 + <Data>8A000000A10000007A0100006C010000</Data>
  2095 + </RectRecentFloat>
  2096 + </Window>
  2097 + <Window>
  2098 + <RegID>1939</RegID>
  2099 + <PaneID>1939</PaneID>
  2100 + <IsVisible>0</IsVisible>
  2101 + <IsFloating>0</IsFloating>
  2102 + <IsTabbed>0</IsTabbed>
  2103 + <IsActivated>0</IsActivated>
  2104 + <MRUWidth>32767</MRUWidth>
  2105 + <PinState>0</PinState>
  2106 + <RecentFrameAlignment>32768</RecentFrameAlignment>
  2107 + <RecentRowIndex>0</RecentRowIndex>
  2108 + <RectRecentDocked>
  2109 + <Len>16</Len>
  2110 + <Data>C7030000E70100007D0700008F020000</Data>
  2111 + </RectRecentDocked>
  2112 + <RectRecentFloat>
  2113 + <Len>16</Len>
  2114 + <Data>8A000000A10000005203000031010000</Data>
  2115 + </RectRecentFloat>
  2116 + </Window>
  2117 + <Window>
  2118 + <RegID>1940</RegID>
  2119 + <PaneID>1940</PaneID>
  2120 + <IsVisible>0</IsVisible>
  2121 + <IsFloating>0</IsFloating>
  2122 + <IsTabbed>0</IsTabbed>
  2123 + <IsActivated>0</IsActivated>
  2124 + <MRUWidth>32767</MRUWidth>
  2125 + <PinState>0</PinState>
  2126 + <RecentFrameAlignment>32768</RecentFrameAlignment>
  2127 + <RecentRowIndex>0</RecentRowIndex>
  2128 + <RectRecentDocked>
  2129 + <Len>16</Len>
  2130 + <Data>C7030000E70100007D0700008F020000</Data>
  2131 + </RectRecentDocked>
  2132 + <RectRecentFloat>
  2133 + <Len>16</Len>
  2134 + <Data>8A000000A10000005203000031010000</Data>
  2135 + </RectRecentFloat>
  2136 + </Window>
  2137 + <Window>
  2138 + <RegID>1941</RegID>
  2139 + <PaneID>1941</PaneID>
  2140 + <IsVisible>0</IsVisible>
  2141 + <IsFloating>0</IsFloating>
  2142 + <IsTabbed>0</IsTabbed>
  2143 + <IsActivated>0</IsActivated>
  2144 + <MRUWidth>32767</MRUWidth>
  2145 + <PinState>0</PinState>
  2146 + <RecentFrameAlignment>32768</RecentFrameAlignment>
  2147 + <RecentRowIndex>0</RecentRowIndex>
  2148 + <RectRecentDocked>
  2149 + <Len>16</Len>
  2150 + <Data>C7030000E70100007D0700008F020000</Data>
  2151 + </RectRecentDocked>
  2152 + <RectRecentFloat>
  2153 + <Len>16</Len>
  2154 + <Data>8A000000A10000005203000031010000</Data>
  2155 + </RectRecentFloat>
  2156 + </Window>
  2157 + <Window>
  2158 + <RegID>1942</RegID>
  2159 + <PaneID>1942</PaneID>
  2160 + <IsVisible>0</IsVisible>
  2161 + <IsFloating>0</IsFloating>
  2162 + <IsTabbed>0</IsTabbed>
  2163 + <IsActivated>0</IsActivated>
  2164 + <MRUWidth>32767</MRUWidth>
  2165 + <PinState>0</PinState>
  2166 + <RecentFrameAlignment>32768</RecentFrameAlignment>
  2167 + <RecentRowIndex>0</RecentRowIndex>
  2168 + <RectRecentDocked>
  2169 + <Len>16</Len>
  2170 + <Data>C7030000E70100007D0700008F020000</Data>
  2171 + </RectRecentDocked>
  2172 + <RectRecentFloat>
  2173 + <Len>16</Len>
  2174 + <Data>8A000000A10000005203000031010000</Data>
  2175 + </RectRecentFloat>
  2176 + </Window>
  2177 + <Window>
  2178 + <RegID>195</RegID>
  2179 + <PaneID>195</PaneID>
  2180 + <IsVisible>0</IsVisible>
  2181 + <IsFloating>0</IsFloating>
  2182 + <IsTabbed>0</IsTabbed>
  2183 + <IsActivated>0</IsActivated>
  2184 + <MRUWidth>32767</MRUWidth>
  2185 + <PinState>0</PinState>
  2186 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2187 + <RecentRowIndex>0</RecentRowIndex>
  2188 + <RectRecentDocked>
  2189 + <Len>16</Len>
  2190 + <Data>0300000066000000ED000000B3010000</Data>
  2191 + </RectRecentDocked>
  2192 + <RectRecentFloat>
  2193 + <Len>16</Len>
  2194 + <Data>8A000000A1000000A6010000E1020000</Data>
  2195 + </RectRecentFloat>
  2196 + </Window>
  2197 + <Window>
  2198 + <RegID>196</RegID>
  2199 + <PaneID>196</PaneID>
  2200 + <IsVisible>0</IsVisible>
  2201 + <IsFloating>0</IsFloating>
  2202 + <IsTabbed>0</IsTabbed>
  2203 + <IsActivated>0</IsActivated>
  2204 + <MRUWidth>32767</MRUWidth>
  2205 + <PinState>0</PinState>
  2206 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2207 + <RecentRowIndex>0</RecentRowIndex>
  2208 + <RectRecentDocked>
  2209 + <Len>16</Len>
  2210 + <Data>0300000066000000ED000000B3010000</Data>
  2211 + </RectRecentDocked>
  2212 + <RectRecentFloat>
  2213 + <Len>16</Len>
  2214 + <Data>8A000000A1000000A6010000E1020000</Data>
  2215 + </RectRecentFloat>
  2216 + </Window>
  2217 + <Window>
  2218 + <RegID>197</RegID>
  2219 + <PaneID>197</PaneID>
  2220 + <IsVisible>0</IsVisible>
  2221 + <IsFloating>0</IsFloating>
  2222 + <IsTabbed>0</IsTabbed>
  2223 + <IsActivated>0</IsActivated>
  2224 + <MRUWidth>32767</MRUWidth>
  2225 + <PinState>0</PinState>
  2226 + <RecentFrameAlignment>32768</RecentFrameAlignment>
  2227 + <RecentRowIndex>0</RecentRowIndex>
  2228 + <RectRecentDocked>
  2229 + <Len>16</Len>
  2230 + <Data>03000000C30200007D070000CD030000</Data>
  2231 + </RectRecentDocked>
  2232 + <RectRecentFloat>
  2233 + <Len>16</Len>
  2234 + <Data>8A000000A10000005203000031010000</Data>
  2235 + </RectRecentFloat>
  2236 + </Window>
  2237 + <Window>
  2238 + <RegID>198</RegID>
  2239 + <PaneID>198</PaneID>
  2240 + <IsVisible>1</IsVisible>
  2241 + <IsFloating>0</IsFloating>
  2242 + <IsTabbed>0</IsTabbed>
  2243 + <IsActivated>0</IsActivated>
  2244 + <MRUWidth>32767</MRUWidth>
  2245 + <PinState>0</PinState>
  2246 + <RecentFrameAlignment>32768</RecentFrameAlignment>
  2247 + <RecentRowIndex>0</RecentRowIndex>
  2248 + <RectRecentDocked>
  2249 + <Len>16</Len>
  2250 + <Data>00000000D0010000C0030000A8020000</Data>
  2251 + </RectRecentDocked>
  2252 + <RectRecentFloat>
  2253 + <Len>16</Len>
  2254 + <Data>8A000000A10000005203000031010000</Data>
  2255 + </RectRecentFloat>
  2256 + </Window>
  2257 + <Window>
  2258 + <RegID>199</RegID>
  2259 + <PaneID>199</PaneID>
  2260 + <IsVisible>1</IsVisible>
  2261 + <IsFloating>0</IsFloating>
  2262 + <IsTabbed>0</IsTabbed>
  2263 + <IsActivated>0</IsActivated>
  2264 + <MRUWidth>32767</MRUWidth>
  2265 + <PinState>0</PinState>
  2266 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2267 + <RecentRowIndex>0</RecentRowIndex>
  2268 + <RectRecentDocked>
  2269 + <Len>16</Len>
  2270 + <Data>00000000C002000080070000E6030000</Data>
  2271 + </RectRecentDocked>
  2272 + <RectRecentFloat>
  2273 + <Len>16</Len>
  2274 + <Data>8A000000A10000005203000031010000</Data>
  2275 + </RectRecentFloat>
  2276 + </Window>
  2277 + <Window>
  2278 + <RegID>203</RegID>
  2279 + <PaneID>203</PaneID>
  2280 + <IsVisible>0</IsVisible>
  2281 + <IsFloating>0</IsFloating>
  2282 + <IsTabbed>0</IsTabbed>
  2283 + <IsActivated>0</IsActivated>
  2284 + <MRUWidth>32767</MRUWidth>
  2285 + <PinState>0</PinState>
  2286 + <RecentFrameAlignment>8192</RecentFrameAlignment>
  2287 + <RecentRowIndex>0</RecentRowIndex>
  2288 + <RectRecentDocked>
  2289 + <Len>16</Len>
  2290 + <Data>F7000000660000007D070000C6000000</Data>
  2291 + </RectRecentDocked>
  2292 + <RectRecentFloat>
  2293 + <Len>16</Len>
  2294 + <Data>8A000000A10000005203000031010000</Data>
  2295 + </RectRecentFloat>
  2296 + </Window>
  2297 + <Window>
  2298 + <RegID>204</RegID>
  2299 + <PaneID>204</PaneID>
  2300 + <IsVisible>0</IsVisible>
  2301 + <IsFloating>0</IsFloating>
  2302 + <IsTabbed>0</IsTabbed>
  2303 + <IsActivated>0</IsActivated>
  2304 + <MRUWidth>32767</MRUWidth>
  2305 + <PinState>0</PinState>
  2306 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2307 + <RecentRowIndex>0</RecentRowIndex>
  2308 + <RectRecentDocked>
  2309 + <Len>16</Len>
  2310 + <Data>F7000000660000007D070000C6000000</Data>
  2311 + </RectRecentDocked>
  2312 + <RectRecentFloat>
  2313 + <Len>16</Len>
  2314 + <Data>8A000000A10000005203000031010000</Data>
  2315 + </RectRecentFloat>
  2316 + </Window>
  2317 + <Window>
  2318 + <RegID>221</RegID>
  2319 + <PaneID>221</PaneID>
  2320 + <IsVisible>0</IsVisible>
  2321 + <IsFloating>0</IsFloating>
  2322 + <IsTabbed>0</IsTabbed>
  2323 + <IsActivated>0</IsActivated>
  2324 + <MRUWidth>32767</MRUWidth>
  2325 + <PinState>0</PinState>
  2326 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2327 + <RecentRowIndex>0</RecentRowIndex>
  2328 + <RectRecentDocked>
  2329 + <Len>16</Len>
  2330 + <Data>00000000000000000000000000000000</Data>
  2331 + </RectRecentDocked>
  2332 + <RectRecentFloat>
  2333 + <Len>16</Len>
  2334 + <Data>0A0000000A0000006E0000006E000000</Data>
  2335 + </RectRecentFloat>
  2336 + </Window>
  2337 + <Window>
  2338 + <RegID>2506</RegID>
  2339 + <PaneID>2506</PaneID>
  2340 + <IsVisible>0</IsVisible>
  2341 + <IsFloating>0</IsFloating>
  2342 + <IsTabbed>0</IsTabbed>
  2343 + <IsActivated>0</IsActivated>
  2344 + <MRUWidth>32767</MRUWidth>
  2345 + <PinState>0</PinState>
  2346 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2347 + <RecentRowIndex>0</RecentRowIndex>
  2348 + <RectRecentDocked>
  2349 + <Len>16</Len>
  2350 + <Data>A3040000660000008D05000010020000</Data>
  2351 + </RectRecentDocked>
  2352 + <RectRecentFloat>
  2353 + <Len>16</Len>
  2354 + <Data>8A000000A10000007A0100006C010000</Data>
  2355 + </RectRecentFloat>
  2356 + </Window>
  2357 + <Window>
  2358 + <RegID>2507</RegID>
  2359 + <PaneID>2507</PaneID>
  2360 + <IsVisible>0</IsVisible>
  2361 + <IsFloating>0</IsFloating>
  2362 + <IsTabbed>0</IsTabbed>
  2363 + <IsActivated>0</IsActivated>
  2364 + <MRUWidth>32767</MRUWidth>
  2365 + <PinState>0</PinState>
  2366 + <RecentFrameAlignment>32768</RecentFrameAlignment>
  2367 + <RecentRowIndex>0</RecentRowIndex>
  2368 + <RectRecentDocked>
  2369 + <Len>16</Len>
  2370 + <Data>C7030000E70100007D0700008F020000</Data>
  2371 + </RectRecentDocked>
  2372 + <RectRecentFloat>
  2373 + <Len>16</Len>
  2374 + <Data>8A000000A10000005203000031010000</Data>
  2375 + </RectRecentFloat>
  2376 + </Window>
  2377 + <Window>
  2378 + <RegID>343</RegID>
  2379 + <PaneID>343</PaneID>
  2380 + <IsVisible>0</IsVisible>
  2381 + <IsFloating>0</IsFloating>
  2382 + <IsTabbed>0</IsTabbed>
  2383 + <IsActivated>0</IsActivated>
  2384 + <MRUWidth>32767</MRUWidth>
  2385 + <PinState>0</PinState>
  2386 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2387 + <RecentRowIndex>0</RecentRowIndex>
  2388 + <RectRecentDocked>
  2389 + <Len>16</Len>
  2390 + <Data>F7000000660000007D070000C6000000</Data>
  2391 + </RectRecentDocked>
  2392 + <RectRecentFloat>
  2393 + <Len>16</Len>
  2394 + <Data>8A000000A10000005203000031010000</Data>
  2395 + </RectRecentFloat>
  2396 + </Window>
  2397 + <Window>
  2398 + <RegID>346</RegID>
  2399 + <PaneID>346</PaneID>
  2400 + <IsVisible>0</IsVisible>
  2401 + <IsFloating>0</IsFloating>
  2402 + <IsTabbed>0</IsTabbed>
  2403 + <IsActivated>0</IsActivated>
  2404 + <MRUWidth>32767</MRUWidth>
  2405 + <PinState>0</PinState>
  2406 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2407 + <RecentRowIndex>0</RecentRowIndex>
  2408 + <RectRecentDocked>
  2409 + <Len>16</Len>
  2410 + <Data>F7000000660000007D070000C6000000</Data>
  2411 + </RectRecentDocked>
  2412 + <RectRecentFloat>
  2413 + <Len>16</Len>
  2414 + <Data>8A000000A10000005203000031010000</Data>
  2415 + </RectRecentFloat>
  2416 + </Window>
  2417 + <Window>
  2418 + <RegID>35141</RegID>
  2419 + <PaneID>35141</PaneID>
  2420 + <IsVisible>0</IsVisible>
  2421 + <IsFloating>0</IsFloating>
  2422 + <IsTabbed>0</IsTabbed>
  2423 + <IsActivated>0</IsActivated>
  2424 + <MRUWidth>32767</MRUWidth>
  2425 + <PinState>0</PinState>
  2426 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2427 + <RecentRowIndex>0</RecentRowIndex>
  2428 + <RectRecentDocked>
  2429 + <Len>16</Len>
  2430 + <Data>F7000000660000007D070000C6000000</Data>
  2431 + </RectRecentDocked>
  2432 + <RectRecentFloat>
  2433 + <Len>16</Len>
  2434 + <Data>8A000000A10000007A0100006C010000</Data>
  2435 + </RectRecentFloat>
  2436 + </Window>
  2437 + <Window>
  2438 + <RegID>35824</RegID>
  2439 + <PaneID>35824</PaneID>
  2440 + <IsVisible>0</IsVisible>
  2441 + <IsFloating>0</IsFloating>
  2442 + <IsTabbed>0</IsTabbed>
  2443 + <IsActivated>0</IsActivated>
  2444 + <MRUWidth>32767</MRUWidth>
  2445 + <PinState>0</PinState>
  2446 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2447 + <RecentRowIndex>0</RecentRowIndex>
  2448 + <RectRecentDocked>
  2449 + <Len>16</Len>
  2450 + <Data>F7000000660000007D070000C6000000</Data>
  2451 + </RectRecentDocked>
  2452 + <RectRecentFloat>
  2453 + <Len>16</Len>
  2454 + <Data>8A000000A10000005203000031010000</Data>
  2455 + </RectRecentFloat>
  2456 + </Window>
  2457 + <Window>
  2458 + <RegID>35885</RegID>
  2459 + <PaneID>35885</PaneID>
  2460 + <IsVisible>0</IsVisible>
  2461 + <IsFloating>0</IsFloating>
  2462 + <IsTabbed>0</IsTabbed>
  2463 + <IsActivated>0</IsActivated>
  2464 + <MRUWidth>32767</MRUWidth>
  2465 + <PinState>0</PinState>
  2466 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2467 + <RecentRowIndex>0</RecentRowIndex>
  2468 + <RectRecentDocked>
  2469 + <Len>16</Len>
  2470 + <Data>A3040000660000008D05000010020000</Data>
  2471 + </RectRecentDocked>
  2472 + <RectRecentFloat>
  2473 + <Len>16</Len>
  2474 + <Data>8A000000A10000007A0100006C010000</Data>
  2475 + </RectRecentFloat>
  2476 + </Window>
  2477 + <Window>
  2478 + <RegID>35886</RegID>
  2479 + <PaneID>35886</PaneID>
  2480 + <IsVisible>0</IsVisible>
  2481 + <IsFloating>0</IsFloating>
  2482 + <IsTabbed>0</IsTabbed>
  2483 + <IsActivated>0</IsActivated>
  2484 + <MRUWidth>32767</MRUWidth>
  2485 + <PinState>0</PinState>
  2486 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2487 + <RecentRowIndex>0</RecentRowIndex>
  2488 + <RectRecentDocked>
  2489 + <Len>16</Len>
  2490 + <Data>A3040000660000008D05000010020000</Data>
  2491 + </RectRecentDocked>
  2492 + <RectRecentFloat>
  2493 + <Len>16</Len>
  2494 + <Data>8A000000A10000007A0100006C010000</Data>
  2495 + </RectRecentFloat>
  2496 + </Window>
  2497 + <Window>
  2498 + <RegID>35887</RegID>
  2499 + <PaneID>35887</PaneID>
  2500 + <IsVisible>0</IsVisible>
  2501 + <IsFloating>0</IsFloating>
  2502 + <IsTabbed>0</IsTabbed>
  2503 + <IsActivated>0</IsActivated>
  2504 + <MRUWidth>32767</MRUWidth>
  2505 + <PinState>0</PinState>
  2506 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2507 + <RecentRowIndex>0</RecentRowIndex>
  2508 + <RectRecentDocked>
  2509 + <Len>16</Len>
  2510 + <Data>A3040000660000008D05000010020000</Data>
  2511 + </RectRecentDocked>
  2512 + <RectRecentFloat>
  2513 + <Len>16</Len>
  2514 + <Data>8A000000A10000007A0100006C010000</Data>
  2515 + </RectRecentFloat>
  2516 + </Window>
  2517 + <Window>
  2518 + <RegID>35888</RegID>
  2519 + <PaneID>35888</PaneID>
  2520 + <IsVisible>0</IsVisible>
  2521 + <IsFloating>0</IsFloating>
  2522 + <IsTabbed>0</IsTabbed>
  2523 + <IsActivated>0</IsActivated>
  2524 + <MRUWidth>32767</MRUWidth>
  2525 + <PinState>0</PinState>
  2526 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2527 + <RecentRowIndex>0</RecentRowIndex>
  2528 + <RectRecentDocked>
  2529 + <Len>16</Len>
  2530 + <Data>A3040000660000008D05000010020000</Data>
  2531 + </RectRecentDocked>
  2532 + <RectRecentFloat>
  2533 + <Len>16</Len>
  2534 + <Data>8A000000A10000007A0100006C010000</Data>
  2535 + </RectRecentFloat>
  2536 + </Window>
  2537 + <Window>
  2538 + <RegID>35889</RegID>
  2539 + <PaneID>35889</PaneID>
  2540 + <IsVisible>0</IsVisible>
  2541 + <IsFloating>0</IsFloating>
  2542 + <IsTabbed>0</IsTabbed>
  2543 + <IsActivated>0</IsActivated>
  2544 + <MRUWidth>32767</MRUWidth>
  2545 + <PinState>0</PinState>
  2546 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2547 + <RecentRowIndex>0</RecentRowIndex>
  2548 + <RectRecentDocked>
  2549 + <Len>16</Len>
  2550 + <Data>A3040000660000008D05000010020000</Data>
  2551 + </RectRecentDocked>
  2552 + <RectRecentFloat>
  2553 + <Len>16</Len>
  2554 + <Data>8A000000A10000007A0100006C010000</Data>
  2555 + </RectRecentFloat>
  2556 + </Window>
  2557 + <Window>
  2558 + <RegID>35890</RegID>
  2559 + <PaneID>35890</PaneID>
  2560 + <IsVisible>0</IsVisible>
  2561 + <IsFloating>0</IsFloating>
  2562 + <IsTabbed>0</IsTabbed>
  2563 + <IsActivated>0</IsActivated>
  2564 + <MRUWidth>32767</MRUWidth>
  2565 + <PinState>0</PinState>
  2566 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2567 + <RecentRowIndex>0</RecentRowIndex>
  2568 + <RectRecentDocked>
  2569 + <Len>16</Len>
  2570 + <Data>A3040000660000008D05000010020000</Data>
  2571 + </RectRecentDocked>
  2572 + <RectRecentFloat>
  2573 + <Len>16</Len>
  2574 + <Data>8A000000A10000007A0100006C010000</Data>
  2575 + </RectRecentFloat>
  2576 + </Window>
  2577 + <Window>
  2578 + <RegID>35891</RegID>
  2579 + <PaneID>35891</PaneID>
  2580 + <IsVisible>0</IsVisible>
  2581 + <IsFloating>0</IsFloating>
  2582 + <IsTabbed>0</IsTabbed>
  2583 + <IsActivated>0</IsActivated>
  2584 + <MRUWidth>32767</MRUWidth>
  2585 + <PinState>0</PinState>
  2586 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2587 + <RecentRowIndex>0</RecentRowIndex>
  2588 + <RectRecentDocked>
  2589 + <Len>16</Len>
  2590 + <Data>A3040000660000008D05000010020000</Data>
  2591 + </RectRecentDocked>
  2592 + <RectRecentFloat>
  2593 + <Len>16</Len>
  2594 + <Data>8A000000A10000007A0100006C010000</Data>
  2595 + </RectRecentFloat>
  2596 + </Window>
  2597 + <Window>
  2598 + <RegID>35892</RegID>
  2599 + <PaneID>35892</PaneID>
  2600 + <IsVisible>0</IsVisible>
  2601 + <IsFloating>0</IsFloating>
  2602 + <IsTabbed>0</IsTabbed>
  2603 + <IsActivated>0</IsActivated>
  2604 + <MRUWidth>32767</MRUWidth>
  2605 + <PinState>0</PinState>
  2606 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2607 + <RecentRowIndex>0</RecentRowIndex>
  2608 + <RectRecentDocked>
  2609 + <Len>16</Len>
  2610 + <Data>A3040000660000008D05000010020000</Data>
  2611 + </RectRecentDocked>
  2612 + <RectRecentFloat>
  2613 + <Len>16</Len>
  2614 + <Data>8A000000A10000007A0100006C010000</Data>
  2615 + </RectRecentFloat>
  2616 + </Window>
  2617 + <Window>
  2618 + <RegID>35893</RegID>
  2619 + <PaneID>35893</PaneID>
  2620 + <IsVisible>0</IsVisible>
  2621 + <IsFloating>0</IsFloating>
  2622 + <IsTabbed>0</IsTabbed>
  2623 + <IsActivated>0</IsActivated>
  2624 + <MRUWidth>32767</MRUWidth>
  2625 + <PinState>0</PinState>
  2626 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2627 + <RecentRowIndex>0</RecentRowIndex>
  2628 + <RectRecentDocked>
  2629 + <Len>16</Len>
  2630 + <Data>A3040000660000008D05000010020000</Data>
  2631 + </RectRecentDocked>
  2632 + <RectRecentFloat>
  2633 + <Len>16</Len>
  2634 + <Data>8A000000A10000007A0100006C010000</Data>
  2635 + </RectRecentFloat>
  2636 + </Window>
  2637 + <Window>
  2638 + <RegID>35894</RegID>
  2639 + <PaneID>35894</PaneID>
  2640 + <IsVisible>0</IsVisible>
  2641 + <IsFloating>0</IsFloating>
  2642 + <IsTabbed>0</IsTabbed>
  2643 + <IsActivated>0</IsActivated>
  2644 + <MRUWidth>32767</MRUWidth>
  2645 + <PinState>0</PinState>
  2646 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2647 + <RecentRowIndex>0</RecentRowIndex>
  2648 + <RectRecentDocked>
  2649 + <Len>16</Len>
  2650 + <Data>A3040000660000008D05000010020000</Data>
  2651 + </RectRecentDocked>
  2652 + <RectRecentFloat>
  2653 + <Len>16</Len>
  2654 + <Data>8A000000A10000007A0100006C010000</Data>
  2655 + </RectRecentFloat>
  2656 + </Window>
  2657 + <Window>
  2658 + <RegID>35895</RegID>
  2659 + <PaneID>35895</PaneID>
  2660 + <IsVisible>0</IsVisible>
  2661 + <IsFloating>0</IsFloating>
  2662 + <IsTabbed>0</IsTabbed>
  2663 + <IsActivated>0</IsActivated>
  2664 + <MRUWidth>32767</MRUWidth>
  2665 + <PinState>0</PinState>
  2666 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2667 + <RecentRowIndex>0</RecentRowIndex>
  2668 + <RectRecentDocked>
  2669 + <Len>16</Len>
  2670 + <Data>A3040000660000008D05000010020000</Data>
  2671 + </RectRecentDocked>
  2672 + <RectRecentFloat>
  2673 + <Len>16</Len>
  2674 + <Data>8A000000A10000007A0100006C010000</Data>
  2675 + </RectRecentFloat>
  2676 + </Window>
  2677 + <Window>
  2678 + <RegID>35896</RegID>
  2679 + <PaneID>35896</PaneID>
  2680 + <IsVisible>0</IsVisible>
  2681 + <IsFloating>0</IsFloating>
  2682 + <IsTabbed>0</IsTabbed>
  2683 + <IsActivated>0</IsActivated>
  2684 + <MRUWidth>32767</MRUWidth>
  2685 + <PinState>0</PinState>
  2686 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2687 + <RecentRowIndex>0</RecentRowIndex>
  2688 + <RectRecentDocked>
  2689 + <Len>16</Len>
  2690 + <Data>A3040000660000008D05000010020000</Data>
  2691 + </RectRecentDocked>
  2692 + <RectRecentFloat>
  2693 + <Len>16</Len>
  2694 + <Data>8A000000A10000007A0100006C010000</Data>
  2695 + </RectRecentFloat>
  2696 + </Window>
  2697 + <Window>
  2698 + <RegID>35897</RegID>
  2699 + <PaneID>35897</PaneID>
  2700 + <IsVisible>0</IsVisible>
  2701 + <IsFloating>0</IsFloating>
  2702 + <IsTabbed>0</IsTabbed>
  2703 + <IsActivated>0</IsActivated>
  2704 + <MRUWidth>32767</MRUWidth>
  2705 + <PinState>0</PinState>
  2706 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2707 + <RecentRowIndex>0</RecentRowIndex>
  2708 + <RectRecentDocked>
  2709 + <Len>16</Len>
  2710 + <Data>A3040000660000008D05000010020000</Data>
  2711 + </RectRecentDocked>
  2712 + <RectRecentFloat>
  2713 + <Len>16</Len>
  2714 + <Data>8A000000A10000007A0100006C010000</Data>
  2715 + </RectRecentFloat>
  2716 + </Window>
  2717 + <Window>
  2718 + <RegID>35898</RegID>
  2719 + <PaneID>35898</PaneID>
  2720 + <IsVisible>0</IsVisible>
  2721 + <IsFloating>0</IsFloating>
  2722 + <IsTabbed>0</IsTabbed>
  2723 + <IsActivated>0</IsActivated>
  2724 + <MRUWidth>32767</MRUWidth>
  2725 + <PinState>0</PinState>
  2726 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2727 + <RecentRowIndex>0</RecentRowIndex>
  2728 + <RectRecentDocked>
  2729 + <Len>16</Len>
  2730 + <Data>A3040000660000008D05000010020000</Data>
  2731 + </RectRecentDocked>
  2732 + <RectRecentFloat>
  2733 + <Len>16</Len>
  2734 + <Data>8A000000A10000007A0100006C010000</Data>
  2735 + </RectRecentFloat>
  2736 + </Window>
  2737 + <Window>
  2738 + <RegID>35899</RegID>
  2739 + <PaneID>35899</PaneID>
  2740 + <IsVisible>0</IsVisible>
  2741 + <IsFloating>0</IsFloating>
  2742 + <IsTabbed>0</IsTabbed>
  2743 + <IsActivated>0</IsActivated>
  2744 + <MRUWidth>32767</MRUWidth>
  2745 + <PinState>0</PinState>
  2746 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2747 + <RecentRowIndex>0</RecentRowIndex>
  2748 + <RectRecentDocked>
  2749 + <Len>16</Len>
  2750 + <Data>A3040000660000008D05000010020000</Data>
  2751 + </RectRecentDocked>
  2752 + <RectRecentFloat>
  2753 + <Len>16</Len>
  2754 + <Data>8A000000A10000007A0100006C010000</Data>
  2755 + </RectRecentFloat>
  2756 + </Window>
  2757 + <Window>
  2758 + <RegID>35900</RegID>
  2759 + <PaneID>35900</PaneID>
  2760 + <IsVisible>0</IsVisible>
  2761 + <IsFloating>0</IsFloating>
  2762 + <IsTabbed>0</IsTabbed>
  2763 + <IsActivated>0</IsActivated>
  2764 + <MRUWidth>32767</MRUWidth>
  2765 + <PinState>0</PinState>
  2766 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2767 + <RecentRowIndex>0</RecentRowIndex>
  2768 + <RectRecentDocked>
  2769 + <Len>16</Len>
  2770 + <Data>A3040000660000008D05000010020000</Data>
  2771 + </RectRecentDocked>
  2772 + <RectRecentFloat>
  2773 + <Len>16</Len>
  2774 + <Data>8A000000A10000007A0100006C010000</Data>
  2775 + </RectRecentFloat>
  2776 + </Window>
  2777 + <Window>
  2778 + <RegID>35901</RegID>
  2779 + <PaneID>35901</PaneID>
  2780 + <IsVisible>0</IsVisible>
  2781 + <IsFloating>0</IsFloating>
  2782 + <IsTabbed>0</IsTabbed>
  2783 + <IsActivated>0</IsActivated>
  2784 + <MRUWidth>32767</MRUWidth>
  2785 + <PinState>0</PinState>
  2786 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2787 + <RecentRowIndex>0</RecentRowIndex>
  2788 + <RectRecentDocked>
  2789 + <Len>16</Len>
  2790 + <Data>A3040000660000008D05000010020000</Data>
  2791 + </RectRecentDocked>
  2792 + <RectRecentFloat>
  2793 + <Len>16</Len>
  2794 + <Data>8A000000A10000007A0100006C010000</Data>
  2795 + </RectRecentFloat>
  2796 + </Window>
  2797 + <Window>
  2798 + <RegID>35902</RegID>
  2799 + <PaneID>35902</PaneID>
  2800 + <IsVisible>0</IsVisible>
  2801 + <IsFloating>0</IsFloating>
  2802 + <IsTabbed>0</IsTabbed>
  2803 + <IsActivated>0</IsActivated>
  2804 + <MRUWidth>32767</MRUWidth>
  2805 + <PinState>0</PinState>
  2806 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2807 + <RecentRowIndex>0</RecentRowIndex>
  2808 + <RectRecentDocked>
  2809 + <Len>16</Len>
  2810 + <Data>A3040000660000008D05000010020000</Data>
  2811 + </RectRecentDocked>
  2812 + <RectRecentFloat>
  2813 + <Len>16</Len>
  2814 + <Data>8A000000A10000007A0100006C010000</Data>
  2815 + </RectRecentFloat>
  2816 + </Window>
  2817 + <Window>
  2818 + <RegID>35903</RegID>
  2819 + <PaneID>35903</PaneID>
  2820 + <IsVisible>0</IsVisible>
  2821 + <IsFloating>0</IsFloating>
  2822 + <IsTabbed>0</IsTabbed>
  2823 + <IsActivated>0</IsActivated>
  2824 + <MRUWidth>32767</MRUWidth>
  2825 + <PinState>0</PinState>
  2826 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2827 + <RecentRowIndex>0</RecentRowIndex>
  2828 + <RectRecentDocked>
  2829 + <Len>16</Len>
  2830 + <Data>A3040000660000008D05000010020000</Data>
  2831 + </RectRecentDocked>
  2832 + <RectRecentFloat>
  2833 + <Len>16</Len>
  2834 + <Data>8A000000A10000007A0100006C010000</Data>
  2835 + </RectRecentFloat>
  2836 + </Window>
  2837 + <Window>
  2838 + <RegID>35904</RegID>
  2839 + <PaneID>35904</PaneID>
  2840 + <IsVisible>0</IsVisible>
  2841 + <IsFloating>0</IsFloating>
  2842 + <IsTabbed>0</IsTabbed>
  2843 + <IsActivated>0</IsActivated>
  2844 + <MRUWidth>32767</MRUWidth>
  2845 + <PinState>0</PinState>
  2846 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2847 + <RecentRowIndex>0</RecentRowIndex>
  2848 + <RectRecentDocked>
  2849 + <Len>16</Len>
  2850 + <Data>A3040000660000008D05000010020000</Data>
  2851 + </RectRecentDocked>
  2852 + <RectRecentFloat>
  2853 + <Len>16</Len>
  2854 + <Data>8A000000A10000007A0100006C010000</Data>
  2855 + </RectRecentFloat>
  2856 + </Window>
  2857 + <Window>
  2858 + <RegID>35905</RegID>
  2859 + <PaneID>35905</PaneID>
  2860 + <IsVisible>0</IsVisible>
  2861 + <IsFloating>0</IsFloating>
  2862 + <IsTabbed>0</IsTabbed>
  2863 + <IsActivated>0</IsActivated>
  2864 + <MRUWidth>32767</MRUWidth>
  2865 + <PinState>0</PinState>
  2866 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2867 + <RecentRowIndex>0</RecentRowIndex>
  2868 + <RectRecentDocked>
  2869 + <Len>16</Len>
  2870 + <Data>A3040000660000008D05000010020000</Data>
  2871 + </RectRecentDocked>
  2872 + <RectRecentFloat>
  2873 + <Len>16</Len>
  2874 + <Data>8A000000A10000007A0100006C010000</Data>
  2875 + </RectRecentFloat>
  2876 + </Window>
  2877 + <Window>
  2878 + <RegID>38003</RegID>
  2879 + <PaneID>38003</PaneID>
  2880 + <IsVisible>1</IsVisible>
  2881 + <IsFloating>0</IsFloating>
  2882 + <IsTabbed>0</IsTabbed>
  2883 + <IsActivated>0</IsActivated>
  2884 + <MRUWidth>32767</MRUWidth>
  2885 + <PinState>0</PinState>
  2886 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2887 + <RecentRowIndex>0</RecentRowIndex>
  2888 + <RectRecentDocked>
  2889 + <Len>16</Len>
  2890 + <Data>0300000066000000ED000000B3010000</Data>
  2891 + </RectRecentDocked>
  2892 + <RectRecentFloat>
  2893 + <Len>16</Len>
  2894 + <Data>8A000000A1000000A6010000E1020000</Data>
  2895 + </RectRecentFloat>
  2896 + </Window>
  2897 + <Window>
  2898 + <RegID>38007</RegID>
  2899 + <PaneID>38007</PaneID>
  2900 + <IsVisible>0</IsVisible>
  2901 + <IsFloating>0</IsFloating>
  2902 + <IsTabbed>0</IsTabbed>
  2903 + <IsActivated>0</IsActivated>
  2904 + <MRUWidth>32767</MRUWidth>
  2905 + <PinState>0</PinState>
  2906 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2907 + <RecentRowIndex>0</RecentRowIndex>
  2908 + <RectRecentDocked>
  2909 + <Len>16</Len>
  2910 + <Data>03000000C30200007D070000CD030000</Data>
  2911 + </RectRecentDocked>
  2912 + <RectRecentFloat>
  2913 + <Len>16</Len>
  2914 + <Data>8A000000A10000005203000031010000</Data>
  2915 + </RectRecentFloat>
  2916 + </Window>
  2917 + <Window>
  2918 + <RegID>436</RegID>
  2919 + <PaneID>436</PaneID>
  2920 + <IsVisible>0</IsVisible>
  2921 + <IsFloating>0</IsFloating>
  2922 + <IsTabbed>0</IsTabbed>
  2923 + <IsActivated>0</IsActivated>
  2924 + <MRUWidth>32767</MRUWidth>
  2925 + <PinState>0</PinState>
  2926 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2927 + <RecentRowIndex>0</RecentRowIndex>
  2928 + <RectRecentDocked>
  2929 + <Len>16</Len>
  2930 + <Data>03000000C30200007D070000CD030000</Data>
  2931 + </RectRecentDocked>
  2932 + <RectRecentFloat>
  2933 + <Len>16</Len>
  2934 + <Data>8A000000A1000000A6010000E1020000</Data>
  2935 + </RectRecentFloat>
  2936 + </Window>
  2937 + <Window>
  2938 + <RegID>437</RegID>
  2939 + <PaneID>437</PaneID>
  2940 + <IsVisible>0</IsVisible>
  2941 + <IsFloating>0</IsFloating>
  2942 + <IsTabbed>0</IsTabbed>
  2943 + <IsActivated>0</IsActivated>
  2944 + <MRUWidth>32767</MRUWidth>
  2945 + <PinState>0</PinState>
  2946 + <RecentFrameAlignment>32768</RecentFrameAlignment>
  2947 + <RecentRowIndex>0</RecentRowIndex>
  2948 + <RectRecentDocked>
  2949 + <Len>16</Len>
  2950 + <Data>C7030000E70100007D0700008F020000</Data>
  2951 + </RectRecentDocked>
  2952 + <RectRecentFloat>
  2953 + <Len>16</Len>
  2954 + <Data>8A000000A10000007A0100006C010000</Data>
  2955 + </RectRecentFloat>
  2956 + </Window>
  2957 + <Window>
  2958 + <RegID>440</RegID>
  2959 + <PaneID>440</PaneID>
  2960 + <IsVisible>0</IsVisible>
  2961 + <IsFloating>0</IsFloating>
  2962 + <IsTabbed>0</IsTabbed>
  2963 + <IsActivated>0</IsActivated>
  2964 + <MRUWidth>32767</MRUWidth>
  2965 + <PinState>0</PinState>
  2966 + <RecentFrameAlignment>32768</RecentFrameAlignment>
  2967 + <RecentRowIndex>0</RecentRowIndex>
  2968 + <RectRecentDocked>
  2969 + <Len>16</Len>
  2970 + <Data>C7030000E70100007D0700008F020000</Data>
  2971 + </RectRecentDocked>
  2972 + <RectRecentFloat>
  2973 + <Len>16</Len>
  2974 + <Data>8A000000A10000007A0100006C010000</Data>
  2975 + </RectRecentFloat>
  2976 + </Window>
  2977 + <Window>
  2978 + <RegID>463</RegID>
  2979 + <PaneID>463</PaneID>
  2980 + <IsVisible>0</IsVisible>
  2981 + <IsFloating>0</IsFloating>
  2982 + <IsTabbed>0</IsTabbed>
  2983 + <IsActivated>0</IsActivated>
  2984 + <MRUWidth>32767</MRUWidth>
  2985 + <PinState>0</PinState>
  2986 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  2987 + <RecentRowIndex>0</RecentRowIndex>
  2988 + <RectRecentDocked>
  2989 + <Len>16</Len>
  2990 + <Data>03000000C30200007D070000CD030000</Data>
  2991 + </RectRecentDocked>
  2992 + <RectRecentFloat>
  2993 + <Len>16</Len>
  2994 + <Data>8A000000A1000000A6010000E1020000</Data>
  2995 + </RectRecentFloat>
  2996 + </Window>
  2997 + <Window>
  2998 + <RegID>466</RegID>
  2999 + <PaneID>466</PaneID>
  3000 + <IsVisible>0</IsVisible>
  3001 + <IsFloating>0</IsFloating>
  3002 + <IsTabbed>0</IsTabbed>
  3003 + <IsActivated>0</IsActivated>
  3004 + <MRUWidth>32767</MRUWidth>
  3005 + <PinState>0</PinState>
  3006 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3007 + <RecentRowIndex>0</RecentRowIndex>
  3008 + <RectRecentDocked>
  3009 + <Len>16</Len>
  3010 + <Data>03000000C30200007D070000CD030000</Data>
  3011 + </RectRecentDocked>
  3012 + <RectRecentFloat>
  3013 + <Len>16</Len>
  3014 + <Data>8A000000A1000000A6010000E1020000</Data>
  3015 + </RectRecentFloat>
  3016 + </Window>
  3017 + <Window>
  3018 + <RegID>470</RegID>
  3019 + <PaneID>470</PaneID>
  3020 + <IsVisible>0</IsVisible>
  3021 + <IsFloating>0</IsFloating>
  3022 + <IsTabbed>0</IsTabbed>
  3023 + <IsActivated>0</IsActivated>
  3024 + <MRUWidth>32767</MRUWidth>
  3025 + <PinState>0</PinState>
  3026 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3027 + <RecentRowIndex>0</RecentRowIndex>
  3028 + <RectRecentDocked>
  3029 + <Len>16</Len>
  3030 + <Data>F7000000660000007D070000C6000000</Data>
  3031 + </RectRecentDocked>
  3032 + <RectRecentFloat>
  3033 + <Len>16</Len>
  3034 + <Data>8A000000A10000005203000031010000</Data>
  3035 + </RectRecentFloat>
  3036 + </Window>
  3037 + <Window>
  3038 + <RegID>50000</RegID>
  3039 + <PaneID>50000</PaneID>
  3040 + <IsVisible>0</IsVisible>
  3041 + <IsFloating>0</IsFloating>
  3042 + <IsTabbed>0</IsTabbed>
  3043 + <IsActivated>0</IsActivated>
  3044 + <MRUWidth>32767</MRUWidth>
  3045 + <PinState>0</PinState>
  3046 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3047 + <RecentRowIndex>0</RecentRowIndex>
  3048 + <RectRecentDocked>
  3049 + <Len>16</Len>
  3050 + <Data>A3040000660000008D05000010020000</Data>
  3051 + </RectRecentDocked>
  3052 + <RectRecentFloat>
  3053 + <Len>16</Len>
  3054 + <Data>8A000000A10000007A0100006C010000</Data>
  3055 + </RectRecentFloat>
  3056 + </Window>
  3057 + <Window>
  3058 + <RegID>50001</RegID>
  3059 + <PaneID>50001</PaneID>
  3060 + <IsVisible>0</IsVisible>
  3061 + <IsFloating>0</IsFloating>
  3062 + <IsTabbed>0</IsTabbed>
  3063 + <IsActivated>0</IsActivated>
  3064 + <MRUWidth>32767</MRUWidth>
  3065 + <PinState>0</PinState>
  3066 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3067 + <RecentRowIndex>0</RecentRowIndex>
  3068 + <RectRecentDocked>
  3069 + <Len>16</Len>
  3070 + <Data>A3040000660000008D05000010020000</Data>
  3071 + </RectRecentDocked>
  3072 + <RectRecentFloat>
  3073 + <Len>16</Len>
  3074 + <Data>8A000000A10000007A0100006C010000</Data>
  3075 + </RectRecentFloat>
  3076 + </Window>
  3077 + <Window>
  3078 + <RegID>50002</RegID>
  3079 + <PaneID>50002</PaneID>
  3080 + <IsVisible>0</IsVisible>
  3081 + <IsFloating>0</IsFloating>
  3082 + <IsTabbed>0</IsTabbed>
  3083 + <IsActivated>0</IsActivated>
  3084 + <MRUWidth>32767</MRUWidth>
  3085 + <PinState>0</PinState>
  3086 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3087 + <RecentRowIndex>0</RecentRowIndex>
  3088 + <RectRecentDocked>
  3089 + <Len>16</Len>
  3090 + <Data>A3040000660000008D05000010020000</Data>
  3091 + </RectRecentDocked>
  3092 + <RectRecentFloat>
  3093 + <Len>16</Len>
  3094 + <Data>8A000000A10000007A0100006C010000</Data>
  3095 + </RectRecentFloat>
  3096 + </Window>
  3097 + <Window>
  3098 + <RegID>50003</RegID>
  3099 + <PaneID>50003</PaneID>
  3100 + <IsVisible>0</IsVisible>
  3101 + <IsFloating>0</IsFloating>
  3102 + <IsTabbed>0</IsTabbed>
  3103 + <IsActivated>0</IsActivated>
  3104 + <MRUWidth>32767</MRUWidth>
  3105 + <PinState>0</PinState>
  3106 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3107 + <RecentRowIndex>0</RecentRowIndex>
  3108 + <RectRecentDocked>
  3109 + <Len>16</Len>
  3110 + <Data>A3040000660000008D05000010020000</Data>
  3111 + </RectRecentDocked>
  3112 + <RectRecentFloat>
  3113 + <Len>16</Len>
  3114 + <Data>8A000000A10000007A0100006C010000</Data>
  3115 + </RectRecentFloat>
  3116 + </Window>
  3117 + <Window>
  3118 + <RegID>50004</RegID>
  3119 + <PaneID>50004</PaneID>
  3120 + <IsVisible>0</IsVisible>
  3121 + <IsFloating>0</IsFloating>
  3122 + <IsTabbed>0</IsTabbed>
  3123 + <IsActivated>0</IsActivated>
  3124 + <MRUWidth>32767</MRUWidth>
  3125 + <PinState>0</PinState>
  3126 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3127 + <RecentRowIndex>0</RecentRowIndex>
  3128 + <RectRecentDocked>
  3129 + <Len>16</Len>
  3130 + <Data>A3040000660000008D05000010020000</Data>
  3131 + </RectRecentDocked>
  3132 + <RectRecentFloat>
  3133 + <Len>16</Len>
  3134 + <Data>8A000000A10000007A0100006C010000</Data>
  3135 + </RectRecentFloat>
  3136 + </Window>
  3137 + <Window>
  3138 + <RegID>50005</RegID>
  3139 + <PaneID>50005</PaneID>
  3140 + <IsVisible>0</IsVisible>
  3141 + <IsFloating>0</IsFloating>
  3142 + <IsTabbed>0</IsTabbed>
  3143 + <IsActivated>0</IsActivated>
  3144 + <MRUWidth>32767</MRUWidth>
  3145 + <PinState>0</PinState>
  3146 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3147 + <RecentRowIndex>0</RecentRowIndex>
  3148 + <RectRecentDocked>
  3149 + <Len>16</Len>
  3150 + <Data>A3040000660000008D05000010020000</Data>
  3151 + </RectRecentDocked>
  3152 + <RectRecentFloat>
  3153 + <Len>16</Len>
  3154 + <Data>8A000000A10000007A0100006C010000</Data>
  3155 + </RectRecentFloat>
  3156 + </Window>
  3157 + <Window>
  3158 + <RegID>50006</RegID>
  3159 + <PaneID>50006</PaneID>
  3160 + <IsVisible>0</IsVisible>
  3161 + <IsFloating>0</IsFloating>
  3162 + <IsTabbed>0</IsTabbed>
  3163 + <IsActivated>0</IsActivated>
  3164 + <MRUWidth>32767</MRUWidth>
  3165 + <PinState>0</PinState>
  3166 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3167 + <RecentRowIndex>0</RecentRowIndex>
  3168 + <RectRecentDocked>
  3169 + <Len>16</Len>
  3170 + <Data>A3040000660000008D05000010020000</Data>
  3171 + </RectRecentDocked>
  3172 + <RectRecentFloat>
  3173 + <Len>16</Len>
  3174 + <Data>8A000000A10000007A0100006C010000</Data>
  3175 + </RectRecentFloat>
  3176 + </Window>
  3177 + <Window>
  3178 + <RegID>50007</RegID>
  3179 + <PaneID>50007</PaneID>
  3180 + <IsVisible>0</IsVisible>
  3181 + <IsFloating>0</IsFloating>
  3182 + <IsTabbed>0</IsTabbed>
  3183 + <IsActivated>0</IsActivated>
  3184 + <MRUWidth>32767</MRUWidth>
  3185 + <PinState>0</PinState>
  3186 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3187 + <RecentRowIndex>0</RecentRowIndex>
  3188 + <RectRecentDocked>
  3189 + <Len>16</Len>
  3190 + <Data>A3040000660000008D05000010020000</Data>
  3191 + </RectRecentDocked>
  3192 + <RectRecentFloat>
  3193 + <Len>16</Len>
  3194 + <Data>8A000000A10000007A0100006C010000</Data>
  3195 + </RectRecentFloat>
  3196 + </Window>
  3197 + <Window>
  3198 + <RegID>50008</RegID>
  3199 + <PaneID>50008</PaneID>
  3200 + <IsVisible>0</IsVisible>
  3201 + <IsFloating>0</IsFloating>
  3202 + <IsTabbed>0</IsTabbed>
  3203 + <IsActivated>0</IsActivated>
  3204 + <MRUWidth>32767</MRUWidth>
  3205 + <PinState>0</PinState>
  3206 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3207 + <RecentRowIndex>0</RecentRowIndex>
  3208 + <RectRecentDocked>
  3209 + <Len>16</Len>
  3210 + <Data>A3040000660000008D05000010020000</Data>
  3211 + </RectRecentDocked>
  3212 + <RectRecentFloat>
  3213 + <Len>16</Len>
  3214 + <Data>8A000000A10000007A0100006C010000</Data>
  3215 + </RectRecentFloat>
  3216 + </Window>
  3217 + <Window>
  3218 + <RegID>50009</RegID>
  3219 + <PaneID>50009</PaneID>
  3220 + <IsVisible>0</IsVisible>
  3221 + <IsFloating>0</IsFloating>
  3222 + <IsTabbed>0</IsTabbed>
  3223 + <IsActivated>0</IsActivated>
  3224 + <MRUWidth>32767</MRUWidth>
  3225 + <PinState>0</PinState>
  3226 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3227 + <RecentRowIndex>0</RecentRowIndex>
  3228 + <RectRecentDocked>
  3229 + <Len>16</Len>
  3230 + <Data>A3040000660000008D05000010020000</Data>
  3231 + </RectRecentDocked>
  3232 + <RectRecentFloat>
  3233 + <Len>16</Len>
  3234 + <Data>8A000000A10000007A0100006C010000</Data>
  3235 + </RectRecentFloat>
  3236 + </Window>
  3237 + <Window>
  3238 + <RegID>50010</RegID>
  3239 + <PaneID>50010</PaneID>
  3240 + <IsVisible>0</IsVisible>
  3241 + <IsFloating>0</IsFloating>
  3242 + <IsTabbed>0</IsTabbed>
  3243 + <IsActivated>0</IsActivated>
  3244 + <MRUWidth>32767</MRUWidth>
  3245 + <PinState>0</PinState>
  3246 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3247 + <RecentRowIndex>0</RecentRowIndex>
  3248 + <RectRecentDocked>
  3249 + <Len>16</Len>
  3250 + <Data>A3040000660000008D05000010020000</Data>
  3251 + </RectRecentDocked>
  3252 + <RectRecentFloat>
  3253 + <Len>16</Len>
  3254 + <Data>8A000000A10000007A0100006C010000</Data>
  3255 + </RectRecentFloat>
  3256 + </Window>
  3257 + <Window>
  3258 + <RegID>50011</RegID>
  3259 + <PaneID>50011</PaneID>
  3260 + <IsVisible>0</IsVisible>
  3261 + <IsFloating>0</IsFloating>
  3262 + <IsTabbed>0</IsTabbed>
  3263 + <IsActivated>0</IsActivated>
  3264 + <MRUWidth>32767</MRUWidth>
  3265 + <PinState>0</PinState>
  3266 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3267 + <RecentRowIndex>0</RecentRowIndex>
  3268 + <RectRecentDocked>
  3269 + <Len>16</Len>
  3270 + <Data>A3040000660000008D05000010020000</Data>
  3271 + </RectRecentDocked>
  3272 + <RectRecentFloat>
  3273 + <Len>16</Len>
  3274 + <Data>8A000000A10000007A0100006C010000</Data>
  3275 + </RectRecentFloat>
  3276 + </Window>
  3277 + <Window>
  3278 + <RegID>50012</RegID>
  3279 + <PaneID>50012</PaneID>
  3280 + <IsVisible>0</IsVisible>
  3281 + <IsFloating>0</IsFloating>
  3282 + <IsTabbed>0</IsTabbed>
  3283 + <IsActivated>0</IsActivated>
  3284 + <MRUWidth>32767</MRUWidth>
  3285 + <PinState>0</PinState>
  3286 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3287 + <RecentRowIndex>0</RecentRowIndex>
  3288 + <RectRecentDocked>
  3289 + <Len>16</Len>
  3290 + <Data>A3040000660000008D05000010020000</Data>
  3291 + </RectRecentDocked>
  3292 + <RectRecentFloat>
  3293 + <Len>16</Len>
  3294 + <Data>8A000000A10000007A0100006C010000</Data>
  3295 + </RectRecentFloat>
  3296 + </Window>
  3297 + <Window>
  3298 + <RegID>50013</RegID>
  3299 + <PaneID>50013</PaneID>
  3300 + <IsVisible>0</IsVisible>
  3301 + <IsFloating>0</IsFloating>
  3302 + <IsTabbed>0</IsTabbed>
  3303 + <IsActivated>0</IsActivated>
  3304 + <MRUWidth>32767</MRUWidth>
  3305 + <PinState>0</PinState>
  3306 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3307 + <RecentRowIndex>0</RecentRowIndex>
  3308 + <RectRecentDocked>
  3309 + <Len>16</Len>
  3310 + <Data>A3040000660000008D05000010020000</Data>
  3311 + </RectRecentDocked>
  3312 + <RectRecentFloat>
  3313 + <Len>16</Len>
  3314 + <Data>8A000000A10000007A0100006C010000</Data>
  3315 + </RectRecentFloat>
  3316 + </Window>
  3317 + <Window>
  3318 + <RegID>50014</RegID>
  3319 + <PaneID>50014</PaneID>
  3320 + <IsVisible>0</IsVisible>
  3321 + <IsFloating>0</IsFloating>
  3322 + <IsTabbed>0</IsTabbed>
  3323 + <IsActivated>0</IsActivated>
  3324 + <MRUWidth>32767</MRUWidth>
  3325 + <PinState>0</PinState>
  3326 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3327 + <RecentRowIndex>0</RecentRowIndex>
  3328 + <RectRecentDocked>
  3329 + <Len>16</Len>
  3330 + <Data>A3040000660000008D05000010020000</Data>
  3331 + </RectRecentDocked>
  3332 + <RectRecentFloat>
  3333 + <Len>16</Len>
  3334 + <Data>8A000000A10000007A0100006C010000</Data>
  3335 + </RectRecentFloat>
  3336 + </Window>
  3337 + <Window>
  3338 + <RegID>50015</RegID>
  3339 + <PaneID>50015</PaneID>
  3340 + <IsVisible>0</IsVisible>
  3341 + <IsFloating>0</IsFloating>
  3342 + <IsTabbed>0</IsTabbed>
  3343 + <IsActivated>0</IsActivated>
  3344 + <MRUWidth>32767</MRUWidth>
  3345 + <PinState>0</PinState>
  3346 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3347 + <RecentRowIndex>0</RecentRowIndex>
  3348 + <RectRecentDocked>
  3349 + <Len>16</Len>
  3350 + <Data>A3040000660000008D05000010020000</Data>
  3351 + </RectRecentDocked>
  3352 + <RectRecentFloat>
  3353 + <Len>16</Len>
  3354 + <Data>8A000000A10000007A0100006C010000</Data>
  3355 + </RectRecentFloat>
  3356 + </Window>
  3357 + <Window>
  3358 + <RegID>50016</RegID>
  3359 + <PaneID>50016</PaneID>
  3360 + <IsVisible>0</IsVisible>
  3361 + <IsFloating>0</IsFloating>
  3362 + <IsTabbed>0</IsTabbed>
  3363 + <IsActivated>0</IsActivated>
  3364 + <MRUWidth>32767</MRUWidth>
  3365 + <PinState>0</PinState>
  3366 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3367 + <RecentRowIndex>0</RecentRowIndex>
  3368 + <RectRecentDocked>
  3369 + <Len>16</Len>
  3370 + <Data>A3040000660000008D05000010020000</Data>
  3371 + </RectRecentDocked>
  3372 + <RectRecentFloat>
  3373 + <Len>16</Len>
  3374 + <Data>8A000000A10000007A0100006C010000</Data>
  3375 + </RectRecentFloat>
  3376 + </Window>
  3377 + <Window>
  3378 + <RegID>50017</RegID>
  3379 + <PaneID>50017</PaneID>
  3380 + <IsVisible>0</IsVisible>
  3381 + <IsFloating>0</IsFloating>
  3382 + <IsTabbed>0</IsTabbed>
  3383 + <IsActivated>0</IsActivated>
  3384 + <MRUWidth>32767</MRUWidth>
  3385 + <PinState>0</PinState>
  3386 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3387 + <RecentRowIndex>0</RecentRowIndex>
  3388 + <RectRecentDocked>
  3389 + <Len>16</Len>
  3390 + <Data>A3040000660000008D05000010020000</Data>
  3391 + </RectRecentDocked>
  3392 + <RectRecentFloat>
  3393 + <Len>16</Len>
  3394 + <Data>8A000000A10000007A0100006C010000</Data>
  3395 + </RectRecentFloat>
  3396 + </Window>
  3397 + <Window>
  3398 + <RegID>50018</RegID>
  3399 + <PaneID>50018</PaneID>
  3400 + <IsVisible>0</IsVisible>
  3401 + <IsFloating>0</IsFloating>
  3402 + <IsTabbed>0</IsTabbed>
  3403 + <IsActivated>0</IsActivated>
  3404 + <MRUWidth>32767</MRUWidth>
  3405 + <PinState>0</PinState>
  3406 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3407 + <RecentRowIndex>0</RecentRowIndex>
  3408 + <RectRecentDocked>
  3409 + <Len>16</Len>
  3410 + <Data>A3040000660000008D05000010020000</Data>
  3411 + </RectRecentDocked>
  3412 + <RectRecentFloat>
  3413 + <Len>16</Len>
  3414 + <Data>8A000000A10000007A0100006C010000</Data>
  3415 + </RectRecentFloat>
  3416 + </Window>
  3417 + <Window>
  3418 + <RegID>50019</RegID>
  3419 + <PaneID>50019</PaneID>
  3420 + <IsVisible>0</IsVisible>
  3421 + <IsFloating>0</IsFloating>
  3422 + <IsTabbed>0</IsTabbed>
  3423 + <IsActivated>0</IsActivated>
  3424 + <MRUWidth>32767</MRUWidth>
  3425 + <PinState>0</PinState>
  3426 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3427 + <RecentRowIndex>0</RecentRowIndex>
  3428 + <RectRecentDocked>
  3429 + <Len>16</Len>
  3430 + <Data>A3040000660000008D05000010020000</Data>
  3431 + </RectRecentDocked>
  3432 + <RectRecentFloat>
  3433 + <Len>16</Len>
  3434 + <Data>8A000000A10000007A0100006C010000</Data>
  3435 + </RectRecentFloat>
  3436 + </Window>
  3437 + <Window>
  3438 + <RegID>59392</RegID>
  3439 + <PaneID>59392</PaneID>
  3440 + <IsVisible>1</IsVisible>
  3441 + <IsFloating>0</IsFloating>
  3442 + <IsTabbed>0</IsTabbed>
  3443 + <IsActivated>0</IsActivated>
  3444 + <MRUWidth>953</MRUWidth>
  3445 + <PinState>0</PinState>
  3446 + <RecentFrameAlignment>8192</RecentFrameAlignment>
  3447 + <RecentRowIndex>0</RecentRowIndex>
  3448 + <RectRecentDocked>
  3449 + <Len>16</Len>
  3450 + <Data>0000000000000000C40300001C000000</Data>
  3451 + </RectRecentDocked>
  3452 + <RectRecentFloat>
  3453 + <Len>16</Len>
  3454 + <Data>0A0000000A0000006E0000006E000000</Data>
  3455 + </RectRecentFloat>
  3456 + </Window>
  3457 + <Window>
  3458 + <RegID>59393</RegID>
  3459 + <PaneID>0</PaneID>
  3460 + <IsVisible>1</IsVisible>
  3461 + <IsFloating>0</IsFloating>
  3462 + <IsTabbed>0</IsTabbed>
  3463 + <IsActivated>0</IsActivated>
  3464 + <MRUWidth>32767</MRUWidth>
  3465 + <PinState>0</PinState>
  3466 + <RecentFrameAlignment>4096</RecentFrameAlignment>
  3467 + <RecentRowIndex>0</RecentRowIndex>
  3468 + <RectRecentDocked>
  3469 + <Len>16</Len>
  3470 + <Data>00000000E603000080070000F9030000</Data>
  3471 + </RectRecentDocked>
  3472 + <RectRecentFloat>
  3473 + <Len>16</Len>
  3474 + <Data>0A0000000A0000006E0000006E000000</Data>
  3475 + </RectRecentFloat>
  3476 + </Window>
  3477 + <Window>
  3478 + <RegID>59399</RegID>
  3479 + <PaneID>59399</PaneID>
  3480 + <IsVisible>0</IsVisible>
  3481 + <IsFloating>0</IsFloating>
  3482 + <IsTabbed>0</IsTabbed>
  3483 + <IsActivated>0</IsActivated>
  3484 + <MRUWidth>476</MRUWidth>
  3485 + <PinState>0</PinState>
  3486 + <RecentFrameAlignment>8192</RecentFrameAlignment>
  3487 + <RecentRowIndex>1</RecentRowIndex>
  3488 + <RectRecentDocked>
  3489 + <Len>16</Len>
  3490 + <Data>000000001C000000E701000038000000</Data>
  3491 + </RectRecentDocked>
  3492 + <RectRecentFloat>
  3493 + <Len>16</Len>
  3494 + <Data>0A0000000A0000006E0000006E000000</Data>
  3495 + </RectRecentFloat>
  3496 + </Window>
  3497 + <Window>
  3498 + <RegID>59400</RegID>
  3499 + <PaneID>59400</PaneID>
  3500 + <IsVisible>1</IsVisible>
  3501 + <IsFloating>0</IsFloating>
  3502 + <IsTabbed>0</IsTabbed>
  3503 + <IsActivated>0</IsActivated>
  3504 + <MRUWidth>612</MRUWidth>
  3505 + <PinState>0</PinState>
  3506 + <RecentFrameAlignment>8192</RecentFrameAlignment>
  3507 + <RecentRowIndex>2</RecentRowIndex>
  3508 + <RectRecentDocked>
  3509 + <Len>16</Len>
  3510 + <Data>000000001C0000006F02000038000000</Data>
  3511 + </RectRecentDocked>
  3512 + <RectRecentFloat>
  3513 + <Len>16</Len>
  3514 + <Data>0A0000000A0000006E0000006E000000</Data>
  3515 + </RectRecentFloat>
  3516 + </Window>
  3517 + <Window>
  3518 + <RegID>824</RegID>
  3519 + <PaneID>824</PaneID>
  3520 + <IsVisible>0</IsVisible>
  3521 + <IsFloating>0</IsFloating>
  3522 + <IsTabbed>0</IsTabbed>
  3523 + <IsActivated>0</IsActivated>
  3524 + <MRUWidth>32767</MRUWidth>
  3525 + <PinState>0</PinState>
  3526 + <RecentFrameAlignment>32768</RecentFrameAlignment>
  3527 + <RecentRowIndex>0</RecentRowIndex>
  3528 + <RectRecentDocked>
  3529 + <Len>16</Len>
  3530 + <Data>C7030000E70100007D0700008F020000</Data>
  3531 + </RectRecentDocked>
  3532 + <RectRecentFloat>
  3533 + <Len>16</Len>
  3534 + <Data>8A000000A10000007A0100006C010000</Data>
  3535 + </RectRecentFloat>
  3536 + </Window>
  3537 + <DockMan>
  3538 + <Len>3311</Len>
  3539 + <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000080070000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000080070000F6000000F40000004F00000080070000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000CC010000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F0000000E3010000000000004F000000F0000000CC0100000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF00000000CC01000080070000D001000001000000010000100400000001000000B3FEFFFF9E00000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000BA050000BB050000BC050000CB090000B905000001800080000001000000C4030000E701000080070000BF020000C4030000D001000080070000A802000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203201000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF050000000000000001000000000000000100000001000000FFFFFFFFC0030000D0010000C4030000A802000001000000020000100400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000A802000080070000AC02000001000000010000100400000001000000AAFDFFFF36010000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000C302000080070000FD03000000000000AC02000080070000E60300000000000040820056060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
  3540 + </DockMan>
  3541 + <ToolBar>
  3542 + <RegID>59392</RegID>
  3543 + <Name>File</Name>
  3544 + <Buttons>
  3545 + <Len>2344</Len>
  3546 + <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D7061636B65745F6C656E677468960000000000000007000D73657373696F6E5F626567696E0D7061636B65745F6C656E6774680D526563656976655061636B657406726573756C740E596D6F64656D5F526563656976650C43616C63436865636B73756D0C75617274355F72785F66696E00000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000000180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000</Data>
  3547 + </Buttons>
  3548 + <OriginalItems>
  3549 + <Len>1423</Len>
  3550 + <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
  3551 + </OriginalItems>
  3552 + <OrigResetItems>
  3553 + <Len>1423</Len>
  3554 + <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000</Data>
  3555 + </OrigResetItems>
  3556 + </ToolBar>
  3557 + <ToolBar>
  3558 + <RegID>59399</RegID>
  3559 + <Name>Build</Name>
  3560 + <Buttons>
  3561 + <Len>955</Len>
  3562 + <Data>00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
  3563 + </Buttons>
  3564 + <OriginalItems>
  3565 + <Len>583</Len>
  3566 + <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
  3567 + </OriginalItems>
  3568 + <OrigResetItems>
  3569 + <Len>583</Len>
  3570 + <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000</Data>
  3571 + </OrigResetItems>
  3572 + </ToolBar>
  3573 + <ToolBar>
  3574 + <RegID>59400</RegID>
  3575 + <Name>Debug</Name>
  3576 + <Buttons>
  3577 + <Len>2362</Len>
  3578 + <Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020000002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
  3579 + </Buttons>
  3580 + <OriginalItems>
  3581 + <Len>898</Len>
  3582 + <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000</Data>
  3583 + </OriginalItems>
  3584 + <OrigResetItems>
  3585 + <Len>898</Len>
  3586 + <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000</Data>
  3587 + </OrigResetItems>
  3588 + </ToolBar>
  3589 + <ControlBarsSummary>
  3590 + <Bars>0</Bars>
  3591 + <ScreenCX>1920</ScreenCX>
  3592 + <ScreenCY>1080</ScreenCY>
  3593 + </ControlBarsSummary>
  3594 + </ViewEx>
  3595 + </WinLayoutEx>
  3596 +
  3597 + <MDIGroups>
  3598 + <Orientation>1</Orientation>
  3599 + <ActiveMDIGroup>0</ActiveMDIGroup>
  3600 + <MDIGroup>
  3601 + <Size>100</Size>
  3602 + <ActiveTab>0</ActiveTab>
  3603 + <Doc>
  3604 + <Name>..\IAP\ymodem.c</Name>
  3605 + <ColumnNumber>0</ColumnNumber>
  3606 + <TopLine>1</TopLine>
  3607 + <CurrentLine>14</CurrentLine>
1957 <Folding>1</Folding> 3608 <Folding>1</Folding>
1958 - <ContractedFolders></ContractedFolders> 3609 + <ContractedFolders>76,95,102,123</ContractedFolders>
1959 <PaneID>0</PaneID> 3610 <PaneID>0</PaneID>
1960 </Doc> 3611 </Doc>
1961 </MDIGroup> 3612 </MDIGroup>
USER/IAP.uvoptx
@@ -120,7 +120,7 @@ @@ -120,7 +120,7 @@
120 <SetRegEntry> 120 <SetRegEntry>
121 <Number>0</Number> 121 <Number>0</Number>
122 <Key>DLGUARM</Key> 122 <Key>DLGUARM</Key>
123 - <Name>/</Name> 123 + <Name></Name>
124 </SetRegEntry> 124 </SetRegEntry>
125 <SetRegEntry> 125 <SetRegEntry>
126 <Number>0</Number> 126 <Number>0</Number>
@@ -150,95 +150,134 @@ @@ -150,95 +150,134 @@
150 <SetRegEntry> 150 <SetRegEntry>
151 <Number>0</Number> 151 <Number>0</Number>
152 <Key>JL2CM3</Key> 152 <Key>JL2CM3</Key>
153 - <Name>-U20080643 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407ZGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name> 153 + <Name>-U59400616 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407ZGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
154 </SetRegEntry> 154 </SetRegEntry>
155 </TargetDriverDllRegistry> 155 </TargetDriverDllRegistry>
156 - <Breakpoint/> 156 + <Breakpoint>
  157 + <Bp>
  158 + <Number>0</Number>
  159 + <Type>0</Type>
  160 + <LineNumber>296</LineNumber>
  161 + <EnabledFlag>1</EnabledFlag>
  162 + <Address>134225528</Address>
  163 + <ByteObject>0</ByteObject>
  164 + <HtxType>0</HtxType>
  165 + <ManyObjects>0</ManyObjects>
  166 + <SizeOfObject>0</SizeOfObject>
  167 + <BreakByAccess>0</BreakByAccess>
  168 + <BreakIfRCount>1</BreakIfRCount>
  169 + <Filename>..\IAP\ymodem.c</Filename>
  170 + <ExecCommand></ExecCommand>
  171 + <Expression>\\IAP\../IAP/ymodem.c\296</Expression>
  172 + </Bp>
  173 + <Bp>
  174 + <Number>1</Number>
  175 + <Type>0</Type>
  176 + <LineNumber>254</LineNumber>
  177 + <EnabledFlag>1</EnabledFlag>
  178 + <Address>0</Address>
  179 + <ByteObject>0</ByteObject>
  180 + <HtxType>0</HtxType>
  181 + <ManyObjects>0</ManyObjects>
  182 + <SizeOfObject>0</SizeOfObject>
  183 + <BreakByAccess>0</BreakByAccess>
  184 + <BreakIfRCount>0</BreakIfRCount>
  185 + <Filename>..\IAP\ymodem.c</Filename>
  186 + <ExecCommand></ExecCommand>
  187 + <Expression></Expression>
  188 + </Bp>
  189 + <Bp>
  190 + <Number>2</Number>
  191 + <Type>0</Type>
  192 + <LineNumber>308</LineNumber>
  193 + <EnabledFlag>1</EnabledFlag>
  194 + <Address>0</Address>
  195 + <ByteObject>0</ByteObject>
  196 + <HtxType>0</HtxType>
  197 + <ManyObjects>0</ManyObjects>
  198 + <SizeOfObject>0</SizeOfObject>
  199 + <BreakByAccess>0</BreakByAccess>
  200 + <BreakIfRCount>0</BreakIfRCount>
  201 + <Filename>..\IAP\ymodem.c</Filename>
  202 + <ExecCommand></ExecCommand>
  203 + <Expression></Expression>
  204 + </Bp>
  205 + </Breakpoint>
157 <WatchWindow1> 206 <WatchWindow1>
158 <Ww> 207 <Ww>
159 <count>0</count> 208 <count>0</count>
160 <WinNumber>1</WinNumber> 209 <WinNumber>1</WinNumber>
161 - <ItemText>dev_param.ota_server_url</ItemText> 210 + <ItemText>0x08010000</ItemText>
162 </Ww> 211 </Ww>
163 <Ww> 212 <Ww>
164 <count>1</count> 213 <count>1</count>
165 <WinNumber>1</WinNumber> 214 <WinNumber>1</WinNumber>
166 - <ItemText>handle</ItemText> 215 + <ItemText>packet_data</ItemText>
167 </Ww> 216 </Ww>
168 <Ww> 217 <Ww>
169 <count>2</count> 218 <count>2</count>
170 <WinNumber>1</WinNumber> 219 <WinNumber>1</WinNumber>
171 - <ItemText>mTick</ItemText> 220 + <ItemText>FileName</ItemText>
172 </Ww> 221 </Ww>
173 <Ww> 222 <Ww>
174 <count>3</count> 223 <count>3</count>
175 <WinNumber>1</WinNumber> 224 <WinNumber>1</WinNumber>
176 - <ItemText>curTick</ItemText> 225 + <ItemText>file_size</ItemText>
177 </Ww> 226 </Ww>
178 <Ww> 227 <Ww>
179 <count>4</count> 228 <count>4</count>
180 <WinNumber>1</WinNumber> 229 <WinNumber>1</WinNumber>
181 - <ItemText>UART_RX_BUF[42321]</ItemText> 230 + <ItemText>size,0x0A</ItemText>
182 </Ww> 231 </Ww>
183 <Ww> 232 <Ww>
184 <count>5</count> 233 <count>5</count>
185 <WinNumber>1</WinNumber> 234 <WinNumber>1</WinNumber>
186 - <ItemText>UART_RX_BUF[42322]</ItemText> 235 + <ItemText>(unsigned char *)buf_ptr[1024]</ItemText>
187 </Ww> 236 </Ww>
188 <Ww> 237 <Ww>
189 <count>6</count> 238 <count>6</count>
190 <WinNumber>1</WinNumber> 239 <WinNumber>1</WinNumber>
191 - <ItemText>UART_RX_BUF[42323]</ItemText> 240 + <ItemText>buf_1k</ItemText>
192 </Ww> 241 </Ww>
193 <Ww> 242 <Ww>
194 <count>7</count> 243 <count>7</count>
195 <WinNumber>1</WinNumber> 244 <WinNumber>1</WinNumber>
196 - <ItemText>UART_RX_BUF[42324]</ItemText> 245 + <ItemText>*(uint32_t*)WriteAddr</ItemText>
197 </Ww> 246 </Ww>
198 <Ww> 247 <Ww>
199 <count>8</count> 248 <count>8</count>
200 <WinNumber>1</WinNumber> 249 <WinNumber>1</WinNumber>
201 - <ItemText>UART_RX_BUF[42325]</ItemText> 250 + <ItemText>handle</ItemText>
202 </Ww> 251 </Ww>
203 <Ww> 252 <Ww>
204 <count>9</count> 253 <count>9</count>
205 <WinNumber>1</WinNumber> 254 <WinNumber>1</WinNumber>
206 - <ItemText>UART_RX_BUF[42326]</ItemText> 255 + <ItemText>flag</ItemText>
207 </Ww> 256 </Ww>
208 <Ww> 257 <Ww>
209 <count>10</count> 258 <count>10</count>
210 <WinNumber>1</WinNumber> 259 <WinNumber>1</WinNumber>
211 - <ItemText>UART_RX_BUF[42327]</ItemText> 260 + <ItemText>pBuffer</ItemText>
212 </Ww> 261 </Ww>
213 <Ww> 262 <Ww>
214 <count>11</count> 263 <count>11</count>
215 <WinNumber>1</WinNumber> 264 <WinNumber>1</WinNumber>
216 - <ItemText>UART_RX_BUF[42328]</ItemText> 265 + <ItemText>FileName</ItemText>
217 </Ww> 266 </Ww>
218 <Ww> 267 <Ww>
219 <count>12</count> 268 <count>12</count>
220 <WinNumber>1</WinNumber> 269 <WinNumber>1</WinNumber>
221 - <ItemText>UART_RX_BUF[42329]</ItemText> 270 + <ItemText>buf_rx5</ItemText>
222 </Ww> 271 </Ww>
223 <Ww> 272 <Ww>
224 <count>13</count> 273 <count>13</count>
225 <WinNumber>1</WinNumber> 274 <WinNumber>1</WinNumber>
226 - <ItemText>UART_RX_BUF[42330]</ItemText> 275 + <ItemText>buf_rx1</ItemText>
227 </Ww> 276 </Ww>
228 <Ww> 277 <Ww>
229 <count>14</count> 278 <count>14</count>
230 <WinNumber>1</WinNumber> 279 <WinNumber>1</WinNumber>
231 - <ItemText>UART_RX_BUF[UART_RX_CNT-1]</ItemText>  
232 - </Ww>  
233 - <Ww>  
234 - <count>15</count>  
235 - <WinNumber>1</WinNumber>  
236 - <ItemText>UART_RX_BUF[UART_RX_CNT-2]</ItemText>  
237 - </Ww>  
238 - <Ww>  
239 - <count>16</count>  
240 - <WinNumber>1</WinNumber>  
241 - <ItemText>((uint16_t)0x0020)</ItemText> 280 + <ItemText>buf_rx5[i]</ItemText>
242 </Ww> 281 </Ww>
243 </WatchWindow1> 282 </WatchWindow1>
244 <MemoryWindow1> 283 <MemoryWindow1>
@@ -253,7 +292,7 @@ @@ -253,7 +292,7 @@
253 <Mm> 292 <Mm>
254 <WinNumber>2</WinNumber> 293 <WinNumber>2</WinNumber>
255 <SubType>0</SubType> 294 <SubType>0</SubType>
256 - <ItemText>0x08010000</ItemText> 295 + <ItemText>0x08004000</ItemText>
257 <AccSizeX>0</AccSizeX> 296 <AccSizeX>0</AccSizeX>
258 </Mm> 297 </Mm>
259 </MemoryWindow2> 298 </MemoryWindow2>
@@ -347,6 +386,18 @@ @@ -347,6 +386,18 @@
347 <RteFlg>0</RteFlg> 386 <RteFlg>0</RteFlg>
348 <bShared>0</bShared> 387 <bShared>0</bShared>
349 </File> 388 </File>
  389 + <File>
  390 + <GroupNumber>2</GroupNumber>
  391 + <FileNumber>3</FileNumber>
  392 + <FileType>1</FileType>
  393 + <tvExp>0</tvExp>
  394 + <tvExpOptDlg>0</tvExpOptDlg>
  395 + <bDave2>0</bDave2>
  396 + <PathWithFileName>..\HARDWARE\LED\led.c</PathWithFileName>
  397 + <FilenameWithoutPath>led.c</FilenameWithoutPath>
  398 + <RteFlg>0</RteFlg>
  399 + <bShared>0</bShared>
  400 + </File>
350 </Group> 401 </Group>
351 402
352 <Group> 403 <Group>
@@ -357,7 +408,7 @@ @@ -357,7 +408,7 @@
357 <RteFlg>0</RteFlg> 408 <RteFlg>0</RteFlg>
358 <File> 409 <File>
359 <GroupNumber>3</GroupNumber> 410 <GroupNumber>3</GroupNumber>
360 - <FileNumber>3</FileNumber> 411 + <FileNumber>4</FileNumber>
361 <FileType>1</FileType> 412 <FileType>1</FileType>
362 <tvExp>0</tvExp> 413 <tvExp>0</tvExp>
363 <tvExpOptDlg>0</tvExpOptDlg> 414 <tvExpOptDlg>0</tvExpOptDlg>
@@ -369,7 +420,7 @@ @@ -369,7 +420,7 @@
369 </File> 420 </File>
370 <File> 421 <File>
371 <GroupNumber>3</GroupNumber> 422 <GroupNumber>3</GroupNumber>
372 - <FileNumber>4</FileNumber> 423 + <FileNumber>5</FileNumber>
373 <FileType>1</FileType> 424 <FileType>1</FileType>
374 <tvExp>0</tvExp> 425 <tvExp>0</tvExp>
375 <tvExpOptDlg>0</tvExpOptDlg> 426 <tvExpOptDlg>0</tvExpOptDlg>
@@ -381,18 +432,6 @@ @@ -381,18 +432,6 @@
381 </File> 432 </File>
382 <File> 433 <File>
383 <GroupNumber>3</GroupNumber> 434 <GroupNumber>3</GroupNumber>
384 - <FileNumber>5</FileNumber>  
385 - <FileType>1</FileType>  
386 - <tvExp>0</tvExp>  
387 - <tvExpOptDlg>0</tvExpOptDlg>  
388 - <bDave2>0</bDave2>  
389 - <PathWithFileName>..\SYSTEM\CRC\crc.c</PathWithFileName>  
390 - <FilenameWithoutPath>crc.c</FilenameWithoutPath>  
391 - <RteFlg>0</RteFlg>  
392 - <bShared>0</bShared>  
393 - </File>  
394 - <File>  
395 - <GroupNumber>3</GroupNumber>  
396 <FileNumber>6</FileNumber> 435 <FileNumber>6</FileNumber>
397 <FileType>1</FileType> 436 <FileType>1</FileType>
398 <tvExp>0</tvExp> 437 <tvExp>0</tvExp>
@@ -410,18 +449,6 @@ @@ -410,18 +449,6 @@
410 <tvExp>0</tvExp> 449 <tvExp>0</tvExp>
411 <tvExpOptDlg>0</tvExpOptDlg> 450 <tvExpOptDlg>0</tvExpOptDlg>
412 <bDave2>0</bDave2> 451 <bDave2>0</bDave2>
413 - <PathWithFileName>..\SYSTEM\usart\timer4.c</PathWithFileName>  
414 - <FilenameWithoutPath>timer4.c</FilenameWithoutPath>  
415 - <RteFlg>0</RteFlg>  
416 - <bShared>0</bShared>  
417 - </File>  
418 - <File>  
419 - <GroupNumber>3</GroupNumber>  
420 - <FileNumber>8</FileNumber>  
421 - <FileType>1</FileType>  
422 - <tvExp>0</tvExp>  
423 - <tvExpOptDlg>0</tvExpOptDlg>  
424 - <bDave2>0</bDave2>  
425 <PathWithFileName>..\SYSTEM\usart\usart1.c</PathWithFileName> 452 <PathWithFileName>..\SYSTEM\usart\usart1.c</PathWithFileName>
426 <FilenameWithoutPath>usart1.c</FilenameWithoutPath> 453 <FilenameWithoutPath>usart1.c</FilenameWithoutPath>
427 <RteFlg>0</RteFlg> 454 <RteFlg>0</RteFlg>
@@ -429,7 +456,7 @@ @@ -429,7 +456,7 @@
429 </File> 456 </File>
430 <File> 457 <File>
431 <GroupNumber>3</GroupNumber> 458 <GroupNumber>3</GroupNumber>
432 - <FileNumber>9</FileNumber> 459 + <FileNumber>8</FileNumber>
433 <FileType>1</FileType> 460 <FileType>1</FileType>
434 <tvExp>0</tvExp> 461 <tvExp>0</tvExp>
435 <tvExpOptDlg>0</tvExpOptDlg> 462 <tvExpOptDlg>0</tvExpOptDlg>
@@ -439,18 +466,6 @@ @@ -439,18 +466,6 @@
439 <RteFlg>0</RteFlg> 466 <RteFlg>0</RteFlg>
440 <bShared>0</bShared> 467 <bShared>0</bShared>
441 </File> 468 </File>
442 - <File>  
443 - <GroupNumber>3</GroupNumber>  
444 - <FileNumber>10</FileNumber>  
445 - <FileType>1</FileType>  
446 - <tvExp>0</tvExp>  
447 - <tvExpOptDlg>0</tvExpOptDlg>  
448 - <bDave2>0</bDave2>  
449 - <PathWithFileName>..\SYSTEM\usart\timer3.c</PathWithFileName>  
450 - <FilenameWithoutPath>timer3.c</FilenameWithoutPath>  
451 - <RteFlg>0</RteFlg>  
452 - <bShared>0</bShared>  
453 - </File>  
454 </Group> 469 </Group>
455 470
456 <Group> 471 <Group>
@@ -461,7 +476,7 @@ @@ -461,7 +476,7 @@
461 <RteFlg>0</RteFlg> 476 <RteFlg>0</RteFlg>
462 <File> 477 <File>
463 <GroupNumber>4</GroupNumber> 478 <GroupNumber>4</GroupNumber>
464 - <FileNumber>11</FileNumber> 479 + <FileNumber>9</FileNumber>
465 <FileType>2</FileType> 480 <FileType>2</FileType>
466 <tvExp>0</tvExp> 481 <tvExp>0</tvExp>
467 <tvExpOptDlg>0</tvExpOptDlg> 482 <tvExpOptDlg>0</tvExpOptDlg>
@@ -481,7 +496,7 @@ @@ -481,7 +496,7 @@
481 <RteFlg>0</RteFlg> 496 <RteFlg>0</RteFlg>
482 <File> 497 <File>
483 <GroupNumber>5</GroupNumber> 498 <GroupNumber>5</GroupNumber>
484 - <FileNumber>12</FileNumber> 499 + <FileNumber>10</FileNumber>
485 <FileType>1</FileType> 500 <FileType>1</FileType>
486 <tvExp>0</tvExp> 501 <tvExp>0</tvExp>
487 <tvExpOptDlg>0</tvExpOptDlg> 502 <tvExpOptDlg>0</tvExpOptDlg>
@@ -493,7 +508,7 @@ @@ -493,7 +508,7 @@
493 </File> 508 </File>
494 <File> 509 <File>
495 <GroupNumber>5</GroupNumber> 510 <GroupNumber>5</GroupNumber>
496 - <FileNumber>13</FileNumber> 511 + <FileNumber>11</FileNumber>
497 <FileType>1</FileType> 512 <FileType>1</FileType>
498 <tvExp>0</tvExp> 513 <tvExp>0</tvExp>
499 <tvExpOptDlg>0</tvExpOptDlg> 514 <tvExpOptDlg>0</tvExpOptDlg>
@@ -505,7 +520,7 @@ @@ -505,7 +520,7 @@
505 </File> 520 </File>
506 <File> 521 <File>
507 <GroupNumber>5</GroupNumber> 522 <GroupNumber>5</GroupNumber>
508 - <FileNumber>14</FileNumber> 523 + <FileNumber>12</FileNumber>
509 <FileType>1</FileType> 524 <FileType>1</FileType>
510 <tvExp>0</tvExp> 525 <tvExp>0</tvExp>
511 <tvExpOptDlg>0</tvExpOptDlg> 526 <tvExpOptDlg>0</tvExpOptDlg>
@@ -517,7 +532,7 @@ @@ -517,7 +532,7 @@
517 </File> 532 </File>
518 <File> 533 <File>
519 <GroupNumber>5</GroupNumber> 534 <GroupNumber>5</GroupNumber>
520 - <FileNumber>15</FileNumber> 535 + <FileNumber>13</FileNumber>
521 <FileType>1</FileType> 536 <FileType>1</FileType>
522 <tvExp>0</tvExp> 537 <tvExp>0</tvExp>
523 <tvExpOptDlg>0</tvExpOptDlg> 538 <tvExpOptDlg>0</tvExpOptDlg>
@@ -529,7 +544,7 @@ @@ -529,7 +544,7 @@
529 </File> 544 </File>
530 <File> 545 <File>
531 <GroupNumber>5</GroupNumber> 546 <GroupNumber>5</GroupNumber>
532 - <FileNumber>16</FileNumber> 547 + <FileNumber>14</FileNumber>
533 <FileType>1</FileType> 548 <FileType>1</FileType>
534 <tvExp>0</tvExp> 549 <tvExp>0</tvExp>
535 <tvExpOptDlg>0</tvExpOptDlg> 550 <tvExpOptDlg>0</tvExpOptDlg>
@@ -541,7 +556,7 @@ @@ -541,7 +556,7 @@
541 </File> 556 </File>
542 <File> 557 <File>
543 <GroupNumber>5</GroupNumber> 558 <GroupNumber>5</GroupNumber>
544 - <FileNumber>17</FileNumber> 559 + <FileNumber>15</FileNumber>
545 <FileType>1</FileType> 560 <FileType>1</FileType>
546 <tvExp>0</tvExp> 561 <tvExp>0</tvExp>
547 <tvExpOptDlg>0</tvExpOptDlg> 562 <tvExpOptDlg>0</tvExpOptDlg>
@@ -553,19 +568,7 @@ @@ -553,19 +568,7 @@
553 </File> 568 </File>
554 <File> 569 <File>
555 <GroupNumber>5</GroupNumber> 570 <GroupNumber>5</GroupNumber>
556 - <FileNumber>18</FileNumber>  
557 - <FileType>1</FileType>  
558 - <tvExp>0</tvExp>  
559 - <tvExpOptDlg>0</tvExpOptDlg>  
560 - <bDave2>0</bDave2>  
561 - <PathWithFileName>..\FWLIB\src\stm32f4xx_tim.c</PathWithFileName>  
562 - <FilenameWithoutPath>stm32f4xx_tim.c</FilenameWithoutPath>  
563 - <RteFlg>0</RteFlg>  
564 - <bShared>0</bShared>  
565 - </File>  
566 - <File>  
567 - <GroupNumber>5</GroupNumber>  
568 - <FileNumber>19</FileNumber> 571 + <FileNumber>16</FileNumber>
569 <FileType>1</FileType> 572 <FileType>1</FileType>
570 <tvExp>0</tvExp> 573 <tvExp>0</tvExp>
571 <tvExpOptDlg>0</tvExpOptDlg> 574 <tvExpOptDlg>0</tvExpOptDlg>
@@ -575,18 +578,6 @@ @@ -575,18 +578,6 @@
575 <RteFlg>0</RteFlg> 578 <RteFlg>0</RteFlg>
576 <bShared>0</bShared> 579 <bShared>0</bShared>
577 </File> 580 </File>
578 - <File>  
579 - <GroupNumber>5</GroupNumber>  
580 - <FileNumber>20</FileNumber>  
581 - <FileType>1</FileType>  
582 - <tvExp>0</tvExp>  
583 - <tvExpOptDlg>0</tvExpOptDlg>  
584 - <bDave2>0</bDave2>  
585 - <PathWithFileName>..\FWLIB\src\stm32f4xx_fsmc.c</PathWithFileName>  
586 - <FilenameWithoutPath>stm32f4xx_fsmc.c</FilenameWithoutPath>  
587 - <RteFlg>0</RteFlg>  
588 - <bShared>0</bShared>  
589 - </File>  
590 </Group> 581 </Group>
591 582
592 <Group> 583 <Group>
@@ -597,7 +588,7 @@ @@ -597,7 +588,7 @@
597 <RteFlg>0</RteFlg> 588 <RteFlg>0</RteFlg>
598 <File> 589 <File>
599 <GroupNumber>6</GroupNumber> 590 <GroupNumber>6</GroupNumber>
600 - <FileNumber>21</FileNumber> 591 + <FileNumber>17</FileNumber>
601 <FileType>1</FileType> 592 <FileType>1</FileType>
602 <tvExp>0</tvExp> 593 <tvExp>0</tvExp>
603 <tvExpOptDlg>0</tvExpOptDlg> 594 <tvExpOptDlg>0</tvExpOptDlg>
@@ -607,26 +598,26 @@ @@ -607,26 +598,26 @@
607 <RteFlg>0</RteFlg> 598 <RteFlg>0</RteFlg>
608 <bShared>0</bShared> 599 <bShared>0</bShared>
609 </File> 600 </File>
610 - </Group>  
611 -  
612 - <Group>  
613 - <GroupName>README</GroupName>  
614 - <tvExp>0</tvExp>  
615 - <tvExpOptDlg>0</tvExpOptDlg>  
616 - <cbSel>0</cbSel>  
617 - <RteFlg>0</RteFlg>  
618 <File> 601 <File>
619 - <GroupNumber>7</GroupNumber>  
620 - <FileNumber>22</FileNumber>  
621 - <FileType>5</FileType> 602 + <GroupNumber>6</GroupNumber>
  603 + <FileNumber>18</FileNumber>
  604 + <FileType>1</FileType>
622 <tvExp>0</tvExp> 605 <tvExp>0</tvExp>
623 <tvExpOptDlg>0</tvExpOptDlg> 606 <tvExpOptDlg>0</tvExpOptDlg>
624 <bDave2>0</bDave2> 607 <bDave2>0</bDave2>
625 - <PathWithFileName>..\readme.txt</PathWithFileName>  
626 - <FilenameWithoutPath>readme.txt</FilenameWithoutPath> 608 + <PathWithFileName>..\IAP\ymodem.c</PathWithFileName>
  609 + <FilenameWithoutPath>ymodem.c</FilenameWithoutPath>
627 <RteFlg>0</RteFlg> 610 <RteFlg>0</RteFlg>
628 <bShared>0</bShared> 611 <bShared>0</bShared>
629 </File> 612 </File>
630 </Group> 613 </Group>
631 614
  615 + <Group>
  616 + <GroupName>README</GroupName>
  617 + <tvExp>1</tvExp>
  618 + <tvExpOptDlg>0</tvExpOptDlg>
  619 + <cbSel>0</cbSel>
  620 + <RteFlg>0</RteFlg>
  621 + </Group>
  622 +
632 </ProjectOpt> 623 </ProjectOpt>
USER/IAP.uvprojx
@@ -336,7 +336,7 @@ @@ -336,7 +336,7 @@
336 <v6Rtti>0</v6Rtti> 336 <v6Rtti>0</v6Rtti>
337 <VariousControls> 337 <VariousControls>
338 <MiscControls></MiscControls> 338 <MiscControls></MiscControls>
339 - <Define>STM32F40_41xxx,USE_STDPERIPH_DRIVER,USE_HSE_BYPASS</Define> 339 + <Define>STM32F40_41xxx,USE_STDPERIPH_DRIVER,USE_HSE_BYPASS,USE_FULL_ASSERT</Define>
340 <Undefine></Undefine> 340 <Undefine></Undefine>
341 <IncludePath>..\CORE;..\SYSTEM\delay;..\SYSTEM\sys;..\SYSTEM\usart;..\HARDWARE\LED;..\FWLIB\inc;..\IAP;..\HARDWARE\STMFLASH;..\HARDWARE\MALLOC;..\HARDWARE\FLASH;..\HARDWARE\HTTP;..\HARDWARE\TIMER;..\USER;..\SYSTEM\TIMER;..\SYSTEM\CRC;..\SYSTEM\fsmc</IncludePath> 341 <IncludePath>..\CORE;..\SYSTEM\delay;..\SYSTEM\sys;..\SYSTEM\usart;..\HARDWARE\LED;..\FWLIB\inc;..\IAP;..\HARDWARE\STMFLASH;..\HARDWARE\MALLOC;..\HARDWARE\FLASH;..\HARDWARE\HTTP;..\HARDWARE\TIMER;..\USER;..\SYSTEM\TIMER;..\SYSTEM\CRC;..\SYSTEM\fsmc</IncludePath>
342 </VariousControls> 342 </VariousControls>
@@ -397,6 +397,11 @@ @@ -397,6 +397,11 @@
397 <FileType>1</FileType> 397 <FileType>1</FileType>
398 <FilePath>..\HARDWARE\FLASH\flash.c</FilePath> 398 <FilePath>..\HARDWARE\FLASH\flash.c</FilePath>
399 </File> 399 </File>
  400 + <File>
  401 + <FileName>led.c</FileName>
  402 + <FileType>1</FileType>
  403 + <FilePath>..\HARDWARE\LED\led.c</FilePath>
  404 + </File>
400 </Files> 405 </Files>
401 </Group> 406 </Group>
402 <Group> 407 <Group>
@@ -413,21 +418,11 @@ @@ -413,21 +418,11 @@
413 <FilePath>..\SYSTEM\delay\delay.c</FilePath> 418 <FilePath>..\SYSTEM\delay\delay.c</FilePath>
414 </File> 419 </File>
415 <File> 420 <File>
416 - <FileName>crc.c</FileName>  
417 - <FileType>1</FileType>  
418 - <FilePath>..\SYSTEM\CRC\crc.c</FilePath>  
419 - </File>  
420 - <File>  
421 <FileName>uart5.c</FileName> 421 <FileName>uart5.c</FileName>
422 <FileType>1</FileType> 422 <FileType>1</FileType>
423 <FilePath>..\SYSTEM\usart\uart5.c</FilePath> 423 <FilePath>..\SYSTEM\usart\uart5.c</FilePath>
424 </File> 424 </File>
425 <File> 425 <File>
426 - <FileName>timer4.c</FileName>  
427 - <FileType>1</FileType>  
428 - <FilePath>..\SYSTEM\usart\timer4.c</FilePath>  
429 - </File>  
430 - <File>  
431 <FileName>usart1.c</FileName> 426 <FileName>usart1.c</FileName>
432 <FileType>1</FileType> 427 <FileType>1</FileType>
433 <FilePath>..\SYSTEM\usart\usart1.c</FilePath> 428 <FilePath>..\SYSTEM\usart\usart1.c</FilePath>
@@ -437,11 +432,6 @@ @@ -437,11 +432,6 @@
437 <FileType>1</FileType> 432 <FileType>1</FileType>
438 <FilePath>..\SYSTEM\usart\debug.c</FilePath> 433 <FilePath>..\SYSTEM\usart\debug.c</FilePath>
439 </File> 434 </File>
440 - <File>  
441 - <FileName>timer3.c</FileName>  
442 - <FileType>1</FileType>  
443 - <FilePath>..\SYSTEM\usart\timer3.c</FilePath>  
444 - </File>  
445 </Files> 435 </Files>
446 </Group> 436 </Group>
447 <Group> 437 <Group>
@@ -488,20 +478,10 @@ @@ -488,20 +478,10 @@
488 <FilePath>..\FWLIB\src\stm32f4xx_flash.c</FilePath> 478 <FilePath>..\FWLIB\src\stm32f4xx_flash.c</FilePath>
489 </File> 479 </File>
490 <File> 480 <File>
491 - <FileName>stm32f4xx_tim.c</FileName>  
492 - <FileType>1</FileType>  
493 - <FilePath>..\FWLIB\src\stm32f4xx_tim.c</FilePath>  
494 - </File>  
495 - <File>  
496 <FileName>system_stm32f4xx.c</FileName> 481 <FileName>system_stm32f4xx.c</FileName>
497 <FileType>1</FileType> 482 <FileType>1</FileType>
498 <FilePath>.\system_stm32f4xx.c</FilePath> 483 <FilePath>.\system_stm32f4xx.c</FilePath>
499 </File> 484 </File>
500 - <File>  
501 - <FileName>stm32f4xx_fsmc.c</FileName>  
502 - <FileType>1</FileType>  
503 - <FilePath>..\FWLIB\src\stm32f4xx_fsmc.c</FilePath>  
504 - </File>  
505 </Files> 485 </Files>
506 </Group> 486 </Group>
507 <Group> 487 <Group>
@@ -512,17 +492,15 @@ @@ -512,17 +492,15 @@
512 <FileType>1</FileType> 492 <FileType>1</FileType>
513 <FilePath>..\IAP\iap.c</FilePath> 493 <FilePath>..\IAP\iap.c</FilePath>
514 </File> 494 </File>
  495 + <File>
  496 + <FileName>ymodem.c</FileName>
  497 + <FileType>1</FileType>
  498 + <FilePath>..\IAP\ymodem.c</FilePath>
  499 + </File>
515 </Files> 500 </Files>
516 </Group> 501 </Group>
517 <Group> 502 <Group>
518 <GroupName>README</GroupName> 503 <GroupName>README</GroupName>
519 - <Files>  
520 - <File>  
521 - <FileName>readme.txt</FileName>  
522 - <FileType>5</FileType>  
523 - <FilePath>..\readme.txt</FilePath>  
524 - </File>  
525 - </Files>  
526 </Group> 504 </Group>
527 </Groups> 505 </Groups>
528 </Target> 506 </Target>
USER/main.c
@@ -12,86 +12,51 @@ @@ -12,86 +12,51 @@
12 #include "usart1.h" 12 #include "usart1.h"
13 #include "uart5.h" 13 #include "uart5.h"
14 #include "iap.h" 14 #include "iap.h"
  15 +#include "led.h"
15 #include "flash.h" 16 #include "flash.h"
16 - 17 +#include "ymodem.h"
17 18
18 int main(void) 19 int main(void)
19 { 20 {
20 uint32_t handle; 21 uint32_t handle;
  22 + uint8_t ret;
21 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4 23 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4
22 -  
23 delay_init(); 24 delay_init();
24 - uart1_init(); 25 + usart1_init();
25 uart5_init(); 26 uart5_init();
  27 + LED_Init();
26 28
27 - Detection_Update(); //本地升级  
28 -  
29 - handle = STMFLASH_ReadWord(FLAG_BASE_ADDR); 29 + display_bootloader_extry_information();
30 30
31 - //检测是否OTA  
32 - //检测是否本地  
33 - //执行 31 + handle = STMFLASH_ReadWord(FLAG_BASE_ADDR);
34 switch(handle) //选择加载那一部分的固件 32 switch(handle) //选择加载那一部分的固件
35 { 33 {
36 - case BOOTLOADER_RUN: //运行段  
37 - printf("\r\n**********Runing Firmware **********\r\n");  
38 -  
39 - delay_ms(20);  
40 - Run_Flash_App(APP_RUN_ADDR);  
41 - break;  
42 -  
43 - case BOOTLOADER_LOAD: //升级段  
44 - printf("\r\n**********Loading Firmware **********\r\n");  
45 -  
46 - #if 0  
47 - handle = APP_RUN_ADDR;  
48 - STMFLASH_Write(APP_BACK_ADDR,(uint32_t *)handle,128*1024);  
49 - delay_ms(10);  
50 - #endif  
51 -  
52 - handle = APP_LOAD_ADDR;  
53 - STMFLASH_Write(APP_RUN_ADDR,(uint32_t *)handle,192*1024);  
54 - delay_ms(10);  
55 -  
56 - handle = BOOTLOADER_RUN;  
57 - STMFLASH_Write(FLAG_BASE_ADDR,(uint32_t *)&handle,4);  
58 -  
59 - Run_Flash_App(APP_RUN_ADDR);  
60 - break;  
61 -  
62 - #if 0  
63 - case BOOTLOADER_BACK: //回滚段  
64 - printf("\r\n**********Backup Firmware **********\r\n");  
65 -  
66 - handle = APP_BACK_ADDR;  
67 - STMFLASH_Write(APP_RUN_ADDR,(uint32_t *)handle,128*1024);  
68 - delay_ms(10);  
69 -  
70 - handle = BOOTLOADER_RUN;  
71 - STMFLASH_Write(FLAG_BASE_ADDR,(uint32_t *)&handle,4);  
72 - delay_ms(10);  
73 -  
74 - Run_Flash_App(APP_RUN_ADDR);  
75 - break;  
76 - #endif  
77 -  
78 - case BOOTLOADER_DEFAULT: //利于出厂(默认加载这一段)  
79 - printf("\r\n**********Default Firmware **********\r\n");  
80 -  
81 - handle = BOOTLOADER_RUN;  
82 - STMFLASH_Write(FLAG_BASE_ADDR,(uint32_t *)&handle,4);  
83 -  
84 - Run_Flash_App(APP_RUN_ADDR);  
85 - break;  
86 - 34 + case BOOTLOADER_LOAD: //升级段
  35 + load_process();
  36 + break;
  37 + case BOOTLOADER_RUN: //运行段
  38 + ret= uart_boot_detect();
  39 + if(LOCAL_BOOT_NONE == ret)
  40 + {
  41 + app_run();
  42 + }
  43 + else
  44 + {
  45 + printf("User instuction deteced!\r\n");
  46 + uart_boot();
  47 + }
  48 + break;
  49 + case BOOTLOADER_DEFAULT:
87 default : 50 default :
88 - printf("\r\n**********Don^t Having Firmware **********\r\n"); 51 + printf("No valid firmware detected!\r\n");
  52 + uart_boot();
89 break; 53 break;
90 } 54 }
  55 +
91 56
92 - while(1) //预留通过网口升级的接口(CH395Q) 57 + while(1)
93 { 58 {
94 - printf("\r\n********IDLE********\r\n"); 59 + printf("unreachable!\r\n");
95 delay_ms(5000); 60 delay_ms(5000);
96 } 61 }
97 } 62 }