yincheng.zhong
2024-08-21 903a245a364052d5ba612e3e53b685fca26a09d4
4G 打印调通,能正常联网
已删除11个文件
已修改21个文件
293552 ■■■■■ 文件已修改
MK8000ADC.rar 补丁 | 查看 | 原始文档 | blame | 历史
iar/settings/uwb_simple_example_MK8000 Release.jlink 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iar/uwb_simple_example.ewd 1530 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iar/uwb_simple_example.ewp 1226 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iar/uwb_simple_example.eww 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/JLinkLog.txt 269539 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Listings/uwb_simple_example.map 9573 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/ExtDll.iex 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/uwb_simple_example.build_log.htm 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/uwb_simple_example.hex 4356 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/uwb_simple_example.htm 3726 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/uwb_simple_example.lnp 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/uwb_simple_example_MK8000 Release.dep 1384 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/dw_app_anchor.c 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/hal/UART.c 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/hido/Include/HIDO_Timer.h 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/internet/inc/AIR780EDriver.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/internet/src/AIR780EDriver.c 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/internet/src/AIR780EFSM.c 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/lis3dh_driver.c 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_trace.c 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/main/main.c 357 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/mk_4G.c 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/simple_ss_twr_dw_init.c 280 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/simple_ss_twr_dw_resp.c 316 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/sn74hc595.c 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/sn74hc595.h 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/uwb_simple_example.uvguix.zhyin 545 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/uwb_simple_example.uvoptx 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/uwb_simple_example.uvprojx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pin_config.c 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user_config.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
MK8000ADC.rar
Binary files differ
iar/settings/uwb_simple_example_MK8000 Release.jlink
ÎļþÒÑɾ³ý
iar/uwb_simple_example.ewd
ÎļþÒÑɾ³ý
iar/uwb_simple_example.ewp
ÎļþÒÑɾ³ý
iar/uwb_simple_example.eww
ÎļþÒÑɾ³ý
keil/JLinkLog.txt
ÎļþÌ«´ó
keil/Listings/uwb_simple_example.map
ÎļþÌ«´ó
keil/Objects/ExtDll.iex
ÎļþÒÑɾ³ý
keil/Objects/uwb_simple_example.build_log.htm
ÎļþÒÑɾ³ý
keil/Objects/uwb_simple_example.hex
ÎļþÒÑɾ³ý
keil/Objects/uwb_simple_example.htm
ÎļþÒÑɾ³ý
keil/Objects/uwb_simple_example.lnp
ÎļþÒÑɾ³ý
keil/Objects/uwb_simple_example_MK8000 Release.dep
ÎļþÒÑɾ³ý
keil/dw_app_anchor.c
@@ -24,31 +24,31 @@
    memcpy(&anc_distoffset[i],distoffset,2);
    anc_clockoffset[i] = anc_clockoffset_from_MK;//MK8000修改
}
void CalculateDists(int64_t poll_tx_ts)
void CalculateDists(int64_t poll_tx_ts)
{
for(int i=0;i<MAX_NEARBASE_NUM;i++)
    for(int i=0; i<MAX_NEARBASE_NUM; i++)
    {
        //rec_anc_signalpower[i] = exsistbase_list[i];
      if(exsistbase_list[i]==KEEP_TIMES)
      {
         // exsistbase_list[i]--;
        if(exsistbase_list[i]==KEEP_TIMES)
        {
            // exsistbase_list[i]--;
#ifdef _UWB_4G
            clockOffsetRatio = anc_clockoffset[i] * (FREQ_OFFSET_MULTIPLIER * HERTZ_TO_PPM_MULTIPLIER_CHAN_2 / 1.0e6) ;
#else
            clockOffsetRatio = anc_clockoffset[i] * (FREQ_OFFSET_MULTIPLIER * HERTZ_TO_PPM_MULTIPLIER_CHAN_5 / 1.0e6) ;//MK8000修改
#endif
          rtd_init = tag_resprx[i] - (uint32_t)poll_tx_ts;
          rtd_resp = anc_resptx[i] - anc_pollrx[i];
          tof = ((rtd_init - rtd_resp * (1 - clockOffsetRatio)) / 2.0) * DWT_TIME_UNITS;
          distance = tof * SPEED_OF_LIGHT;
          if(distance>-10&&distance<1000)
          {
            nearbase_distlist[i]  = distance*100+anc_distoffset[i];
          }
      }else{
         // nearbase_distlist[i] = 0x1ffff;
      }
            rtd_init = tag_resprx[i] - (uint32_t)poll_tx_ts;
            rtd_resp = anc_resptx[i] - anc_pollrx[i];
            tof = ((rtd_init - rtd_resp * (1 - clockOffsetRatio)) / 2.0) * DWT_TIME_UNITS;
            distance = tof * SPEED_OF_LIGHT;
            if(distance>-10&&distance<1000)
            {
                nearbase_distlist[i]  = distance*100+anc_distoffset[i];
            }
        } else {
            // nearbase_distlist[i] = 0x1ffff;
        }
    }
}
keil/include/components/hal/UART.c
@@ -146,7 +146,7 @@
    l_astUartInfo[_eUartID].m_mutexLock =  osMutexCreate(HIDO_NULL);
#endif
    
struct UART_CFG_T uart_cfg =
    struct UART_CFG_T uart_cfg =
    {
        .parity = UART_PARITY_NONE,
        .stop = UART_STOP_BITS_1,
@@ -337,25 +337,14 @@
 *******************************************************************************/
static void uart_receive_callback(void *dev, uint32_t err_code)
{
    E_UartID eUartID = (E_UartID) 0;
    E_UartID eUartID = UART_ID_4G;
    HIDO_UINT8 u8RecvByte = l_astUartInfo[eUartID].m_u8RxValue;
    for (eUartID = (E_UartID) 0; eUartID < UART_ID_LAST; eUartID++)
    {
        if (l_astUartInfo[eUartID].m_eUartPort == *(enum UART_DEV_T *)dev)
        {
            if(UART_RX_MODE_INT == l_astUartInfo[eUartID].m_eRxMode)
            {
                HIDO_UINT8 u8RecvByte = l_astUartInfo[eUartID].m_u8RxValue;
    HIDO_ArraryQueueIn(&l_astUartInfo[eUartID].m_stRxArraryQueue, &u8RecvByte);
                HIDO_ArraryQueueIn(&l_astUartInfo[eUartID].m_stRxArraryQueue, &u8RecvByte);
                /* å¯åЍINT接收 */
                uart_receive(l_astUartInfo[eUartID].m_eUartPort, &l_astUartInfo[eUartID].m_u8RxValue, 1, uart_receive_callback);
            }
            break;
        }
    }
    /* å¯åЍINT接收 */
    uart_receive(l_astUartInfo[eUartID].m_eUartPort, &l_astUartInfo[eUartID].m_u8RxValue, 1, uart_receive_callback);
}
/*******************************************************************************
keil/include/components/hido/Include/HIDO_Timer.h
@@ -14,8 +14,8 @@
    HIDO_TimerFunc m_fnTimerProc;
}HIDO_TimerStruct;
#define HIDO_TIMER_TICK_S(s)     ((s) * 2)
#define HIDO_TIMER_TICK_MS(ms)   ((ms) / 500)
#define HIDO_TIMER_TICK_S(s)     ((s) * 1)
#define HIDO_TIMER_TICK_MS(ms)   ((ms) / 1000)
#define HIDO_TIMER_TYPE_ONCE      0
#define HIDO_TIMER_TYPE_LOOP      1
keil/include/components/internet/inc/AIR780EDriver.h
@@ -12,6 +12,7 @@
 *******************************************************************************/
#include "Socket.h"
#include "HIDO_TypeDef.h"
#include "sn74hc595.h"
/*******************************************************************************
 *                                  Macro                                      *
keil/include/components/internet/src/AIR780EDriver.c
@@ -333,11 +333,13 @@
    {
        if((_pstATDevice->m_u32LineLen > 0) && (_pstATDevice->m_pcLineBuf[_pstATDevice->m_u32LineLen - 1] == '\n'))
        {
            HIDO_Debug( "[AT Recv] %s", _pstATDevice->m_pcLineBuf);
            LOG_INFO(TRACE_MODULE_APP, "[AT Recv] %s", _pstATDevice->m_pcLineBuf);
            //HIDO_Debug( "[AT Recv] %s", _pstATDevice->m_pcLineBuf);
        }
        else
        {
            HIDO_Debug("[AT Recv] %s\r\n", _pstATDevice->m_pcLineBuf);
            LOG_INFO(TRACE_MODULE_APP, "[AT Recv] %s\r\n", _pstATDevice->m_pcLineBuf);
            //HIDO_Debug("[AT Recv] %s\r\n", _pstATDevice->m_pcLineBuf);
        }
    }
@@ -364,11 +366,13 @@
        {
            if((_u32Len > 0) && (_pu8Data[_u32Len - 1] == '\n'))
            {
                HIDO_Debug("[AT Send] %s", _pu8Data);
                // HIDO_Debug("[AT Send] %s", _pu8Data);
                LOG_INFO(TRACE_MODULE_APP, "[AT Send] %s", _pu8Data);
            }
            else
            {
                HIDO_Debug("[AT Send] %s\r\n", _pu8Data);
                // HIDO_Debug("[AT Send] %s\r\n", _pu8Data);
                LOG_INFO(TRACE_MODULE_APP, "[AT Send] %s", _pu8Data);
            }
        }
    }
@@ -407,7 +411,7 @@
 *******************************************************************************/
HIDO_INT32 AIR780EDriver_PowerOn(void)
{
    gpio_pin_set(l_stAIR780EPin[AIR780E_PIN_3V8_EN]);
    air780_power_state = 1;
    return HIDO_OK;
}
@@ -423,7 +427,7 @@
 *******************************************************************************/
HIDO_INT32 AIR780EDriver_PowerOff(void)
{
    gpio_pin_clr(l_stAIR780EPin[AIR780E_PIN_3V8_EN]);
    air780_power_state = 0;
    return HIDO_OK;
}
@@ -524,7 +528,8 @@
    vsnprintf(acBuff, sizeof(acBuff), _pcFmt, _ap);
    
  //  HIDO_Log(HIDO_LOG_LEVEL_DEBUG, "%s", acBuff);
    HIDO_Debug(acBuff);
    //HIDO_Debug(acBuff);
    LOG_INFO(TRACE_MODULE_APP, acBuff);
    return HIDO_OK;
}
@@ -546,21 +551,6 @@
}
/*******************************************************************************
 * Function Name     : AIR780EDriver_TimerPoll
 * Description       :
 * Input             :
 * Output            :
 * Return            :
 * Author            : æœé”®
 * Modified Date:    : 2018å¹´5月22日
 *******************************************************************************/
void AIR780EDriver_TimerPoll(void)
{
    //HIDO_TimerPollByID(l_stDriverData.m_u32FSMTimerID);
    //HIDO_TimerPollByID(l_stAIR780EDevice.m_u32TimerID);
}
/*******************************************************************************
 * Function Name     : AIR780EDriver_Init
 * Description       :
 * Input             :
@@ -574,13 +564,14 @@
    ST_UartInit stUartInit;
    /* ä¸²å£åˆå§‹åŒ– */
    stUartInit.m_eRxMode = UART_RX_MODE_DMA;
    stUartInit.m_eRxMode = UART_RX_MODE_INT;
    stUartInit.m_eTxMode = UART_TX_MODE_POLL;
    stUartInit.m_pu8RxBuf = l_au8AIR780EUartRxBuf;
    stUartInit.m_u32RxBufSize = AIR780E_UART_RX_BUF_SIZE;
    stUartInit.m_pu8TxBuf = l_au8AIR780EUartTxBuf;
    stUartInit.m_u32TxBufSize = AIR780E_UART_TX_BUF_SIZE;
    stUartInit.m_u32TxQueueMemberCnt = AIR780E_UART_TX_QUEUE_MEMBER_CNT;
    stUartInit.m_u32BaudRate = 115200;
    if(Uart_Init(UART_ID_4G, &stUartInit) != HIDO_OK)
    {
        return HIDO_ERR;
keil/include/components/internet/src/AIR780EFSM.c
@@ -106,52 +106,6 @@
            Socket_OnRecv(u32ID);
            break;
        }
#ifdef TTS
        case AIR780E_EVENT_QTTS:
        {
            HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg;
            if (strcmp((HIDO_CHAR *) pstData->m_pData, "+CTTS:0\r\n") != 0)
            {
                break;
            }
            AIR780EAudio_TTSOver();
            break;
        }
        case AIR780E_EVENT_QLTONE:
        {
            HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg;
            if (strcmp((HIDO_CHAR *) pstData->m_pData, "+QLTONE: 0\r\n") != 0)
            {
                break;
            }
            AIR780EAudio_TONEOver();
            break;
        }
 #endif
#ifdef __AIR780E_MQTT__
        case AIR780E_EVENT_QMTRECV:
        {
            HIDO_UINT32 u32ClientID = 0;
            HIDO_UINT32 u32MsgID = 0;
            HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg;
            if (HIDO_UtilParseFormat((HIDO_UINT8 *) pstData->m_pData, pstData->m_u32Len, "+QMTRECV: %d,%d\r\n",
                    &u32ClientID, &u32MsgID) != 2)
            {
                break;
            }
            MQTT_HaveRecvData(u32ClientID);
            break;
        }
#endif
        default:
        {
            return HIDO_EVENT_NO_PROC;
@@ -253,8 +207,6 @@
    {
        AIR780E_SUB_STATE_POWER_OFF,
        AIR780E_SUB_STATE_POWER_ON,
        AIR780E_SUB_STATE_PWRKEY_RESET,
        AIR780E_SUB_STATE_PWRKEY_SET,
    } l_eAIR780ESubState;
    HIDO_ATLiteDeviceStruct *pstATDevice = (HIDO_ATLiteDeviceStruct *) _pstFSM->m_pPrivateData;
@@ -273,7 +225,7 @@
            l_eAIR780ESubState = AIR780E_SUB_STATE_POWER_OFF;
            AIR780EDriver_PowerOff();
            HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(3), _pstFSM, AIR780E_EVENT_DELAY);
            HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(1), _pstFSM, AIR780E_EVENT_DELAY);
            break;
        }
        case HIDO_EVENT_EXIT:
@@ -291,25 +243,10 @@
                {
                    l_eAIR780ESubState = AIR780E_SUB_STATE_POWER_ON;
                    AIR780EDriver_PowerOn();
                    HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(1), _pstFSM, AIR780E_EVENT_DELAY);
                    HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(10), _pstFSM, AIR780E_EVENT_DELAY);
                    break;
                }
                case AIR780E_SUB_STATE_POWER_ON:
                {
                    l_eAIR780ESubState = AIR780E_SUB_STATE_PWRKEY_RESET;
                    AIR780EDriver_PWRKEYReset();
                    //Uart_ReConfigBaudRate(UART_ID_4G, 921600);
                    HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(1), _pstFSM, AIR780E_EVENT_DELAY);
                    break;
                }
                case AIR780E_SUB_STATE_PWRKEY_RESET:
                {
                    l_eAIR780ESubState = AIR780E_SUB_STATE_PWRKEY_SET;
                    AIR780EDriver_PWRKEYSet();
                    HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_MS(800), _pstFSM, AIR780E_EVENT_DELAY);
                    break;
                }
                case AIR780E_SUB_STATE_PWRKEY_SET:
                {
                    HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EATCmdTest), HIDO_NULL);
                    break;
@@ -319,108 +256,6 @@
            break;
        }
        case AIR780E_EVENT_RDY:
        {
#if 0
            HIDO_UINT32 Power_r = 0,Open_PJ,dev_id;
            HIDO_CHAR TTS_Open[60];
            if(Power_GetBatteryPercentage() < 5.0)      //低电量自动关机
            {
                GPIOD->BSRR = 0x0004;      //打开TTS电源
                HAL_Delay(800);               //必要延时,延时是为了避免说不出来第一个字
                HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CTTS=2,\"%s\"\r\n", "电量过低");
                HAL_Delay(2000);
                // è°ƒç”¨å…³æœºæŽ¥å£
                while(1)
                {
                    GPIOA->BSRR = 0X0100 << 16;
                }
            }
#endif
#if 0
//            HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+QTTS=2,\"开机\"\r\n");
            Power_r = Power_GetBatteryPercentage();
            dev_id = ((g_com_map[DEV_ID]>>12)&0xf)*1000+((g_com_map[DEV_ID]>>8)&0xf)*100+((g_com_map[DEV_ID]>>4)&0xf)*10+(g_com_map[DEV_ID]&0xf);
            Open_PJ = sprintf(TTS_Open, "设备编号%d剩余电量百分之%d",dev_id, Power_r);
            TTS_Play((HIDO_UINT8 *)TTS_Open, strlen(TTS_Open));
#endif
            break;
        }
        default:
        {
            return HIDO_EVENT_NO_PROC;
        }
    }
    return HIDO_EVENT_OK;
}
/*******************************************************************************
 * State Name        : AIR780EWaitReady
 * Parent State      : AIR780EInit
 * Description       :
 * Author            : www.hido-studio.com
 * Modified Date:    : 2018-05-01
 *******************************************************************************/
extern int Last4G;
HIDO_FSM_STATE_IMPLEMENT(AIR780EWaitReady, HIDO_FSM_STATE(AIR780EInit), HIDO_NULL)
{
    static HIDO_BOOL bReady = HIDO_FALSE;
    static HIDO_UINT32 u32RetryCnt = 0,Power_r = 0,Open_PJ,dev_id;
    HIDO_ATLiteDeviceStruct *pstATDevice = (HIDO_ATLiteDeviceStruct *) _pstFSM->m_pPrivateData;
    HIDO_UINT32 u32FSMTimerID = ((ST_AIR780EDriverData *)pstATDevice->m_pUserData)->m_u32FSMTimerID;
    HIDO_CHAR TTS_Open[60];
    switch (_u32Event)
    {
        case HIDO_EVENT_ENTRY:
        {
            HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(10),
                    _pstFSM, AIR780E_EVENT_DELAY);
            break;
        }
        case HIDO_EVENT_EXIT:
        {
            HIDO_ATLiteCmdSendOver(pstATDevice);
            HIDO_TimerCancel(u32FSMTimerID);
            break;
        }
        case AIR780E_EVENT_RDY:
        {
#if 0
            if(Power_GetBatteryPercentage() < 5.0)      //低电量自动关机
            {
                GPIOD->BSRR = 0x0004;      //打开TTS电源
                HAL_Delay(800);               //必要延时,延时是为了避免说不出来第一个字
                HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CTTS=2,\"%s\"\r\n", "电量过低");
                HAL_Delay(2000);
                // è°ƒç”¨å…³æœºæŽ¥å£
                while(1)
                {
                    GPIOA->BSRR = 0X0100 << 16;
                }
            }
//            HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+QTTS=2,\"开机\"\r\n");
            Power_r = Power_GetBatteryPercentage();
            dev_id = ((g_com_map[DEV_ID]>>12)&0xf)*1000+((g_com_map[DEV_ID]>>8)&0xf)*100+((g_com_map[DEV_ID]>>4)&0xf)*10+(g_com_map[DEV_ID]&0xf);
            Open_PJ = sprintf(TTS_Open, "设备编号%d剩余电量百分之%d",dev_id, Power_r);
            TTS_Play((HIDO_UINT8 *)TTS_Open, strlen(TTS_Open));
#endif
            break;
        }
        case HIDO_AT_EVENT_OK:
        case AIR780E_EVENT_DELAY:
        case HIDO_AT_EVENT_TIMEOUT:
        {
            HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EATCmdTest), HIDO_NULL);
            break;
@@ -443,12 +278,8 @@
 *******************************************************************************/
HIDO_FSM_STATE_IMPLEMENT(AIR780EATCmdTest, HIDO_FSM_STATE(AIR780EInit), HIDO_NULL)
{
#define USE_115200
//#define USE_921600
    static HIDO_UINT32 l_u32ReadyCnt = 0;
    static HIDO_UINT32 l_u32TimeoutCnt = 0;
    static HIDO_UINT32 l_u32BaudRate = 0;
    static HIDO_BOOL l_bConfigBaudRate = HIDO_FALSE;
    HIDO_ATLiteDeviceStruct *pstATDevice = (HIDO_ATLiteDeviceStruct *) _pstFSM->m_pPrivateData;
    HIDO_UINT32 u32FSMTimerID = ((ST_AIR780EDriverData *)pstATDevice->m_pUserData)->m_u32FSMTimerID;
@@ -456,15 +287,6 @@
    {
        case HIDO_EVENT_ENTRY:
        {
#ifdef USE_115200
            l_u32BaudRate = 115200;
#else
            l_u32BaudRate = 921600;
#endif
            Uart_ReConfigBaudRate(UART_ID_4G, l_u32BaudRate);
            l_bConfigBaudRate = HIDO_FALSE;
            l_u32ReadyCnt = 0;
            l_u32TimeoutCnt = 0;
            HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(1), _pstFSM, AIR780E_EVENT_DELAY);
@@ -478,43 +300,13 @@
        }
        case HIDO_AT_EVENT_OK:
        {
            if (HIDO_TRUE == l_bConfigBaudRate)
            {
#ifdef USE_115200
            l_u32BaudRate = 115200;
#else
            l_u32BaudRate = 921600;
#endif
                Uart_ReConfigBaudRate(UART_ID_4G, l_u32BaudRate);
                HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(1), _pstFSM, AIR780E_EVENT_DELAY);
                break;
            }
            l_u32TimeoutCnt = 0;
            l_u32ReadyCnt++;
            if (l_u32ReadyCnt >= 1)
            {
#ifdef USE_115200
                if (921600 == l_u32BaudRate)
#else
                if (115200 == l_u32BaudRate)
#endif
                {
                    l_bConfigBaudRate = HIDO_TRUE;
#ifdef USE_115200
                    HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+IPR=115200;&W\r\n");
#else
                    HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+IPR=921600;&W\r\n");
#endif
                }
                else
                {
                    /* ä¸Šç”µæˆåŠŸ */
                    Module_PowerEvent(MODULE_MAIN, MODULE_STATE_POWER_ON);
                    HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EWaitSimCardReady), HIDO_NULL);
                }
                /* ä¸Šç”µæˆåŠŸ */
                Module_PowerEvent(MODULE_MAIN, MODULE_STATE_POWER_ON);
                HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EWaitSimCardReady), HIDO_NULL);
            }
            else
            {
@@ -535,18 +327,6 @@
            if (5 == l_u32TimeoutCnt)
            {
#ifdef USE_115200
                l_u32BaudRate = 921600;
#else
                l_u32BaudRate = 115200;
#endif
                Uart_ReConfigBaudRate(UART_ID_4G, l_u32BaudRate);
                HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(1), _pstFSM,
                        AIR780E_EVENT_DELAY);
            }
            else if (l_u32TimeoutCnt > 10)
            {
                HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EPowerOn), HIDO_NULL);
            }
            else
@@ -559,17 +339,7 @@
        }
        case AIR780E_EVENT_DELAY:
        {
            if (HIDO_TRUE == l_bConfigBaudRate)
            {
                /* ä¸Šç”µæˆåŠŸ */
                Module_PowerEvent(MODULE_MAIN, MODULE_STATE_POWER_ON);
                HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EWaitSimCardReady), HIDO_NULL);
                break;
            }
            else
            {
                HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "ATE0\r\n");
            }
            HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "ATE0\r\n");
            break;
        }
        case AIR780E_EVENT_POLL:
keil/include/drivers/lis3dh_driver.c
@@ -181,6 +181,7 @@
AxesRaw_t lis2dhdata;
//OLED初始化IIC
uint8_t t11;
void IIC2_Init(void)
{                         
//    GPIO_InitTypeDef GPIO_InitStructure= {0};
@@ -198,13 +199,11 @@
        
        gpio_pin_set_dir(SDA_PIN , GPIO_DIR_OUT, 1);
        io_open_drain_set(SDA_PIN, 1);
    io_pull_set(SDA_PIN , IO_PULL_UP, IO_PULL_UP_NONE);//输出高阻态
        io_pull_set(SDA_PIN , IO_HIGH_Z, IO_PULL_UP_NONE);//输出高阻态
        
        gpio_pin_set_dir(SCL_PIN , GPIO_DIR_OUT, 1);
        io_open_drain_set(SCL_PIN, 1);//设置开漏输出
    io_pull_set(SCL_PIN , IO_PULL_UP, IO_PULL_UP_NONE);
        io_pull_set(SCL_PIN , IO_HIGH_Z, IO_PULL_UP_NONE);
}
uint8_t lisid;
@@ -284,7 +283,7 @@
    LIS3DH_WriteReg(LIS3DH_INT1_CFG, 0xaa);  /* INT1_CFG(30h): ??,6D X/Y/Z???????? */
    g_com_map[IMU_THRES]=2;
    LIS3DH_WriteReg(LIS3DH_INT1_THS, (uint8_t)g_com_map[IMU_THRES]);      /* INT1_THS(32h): ?????? 0x10: 16*2(FS)  0x20: 32*16(FS) */
 LIS3DH_WriteReg(LIS3DH_INT1_DURATION, 0x01);      /* INT1_DURATION(33h): 1LSB=1/ODR  ??ODR=100HZ  ??1LSB=10ms ???? 1s,??100->0x64 */
    LIS3DH_WriteReg(LIS3DH_INT1_DURATION, 0x01);      /* INT1_DURATION(33h): 1LSB=1/ODR  ??ODR=100HZ  ??1LSB=10ms ???? 1s,??100->0x64 */
    /* Start sensor */
    LIS3DH_WriteReg(0x20, 0x5f);  /* CTRL_REG1(20h): Start sensor at ODR 100Hz Low-power mode */
    
@@ -516,15 +515,17 @@
//等待应答信号到来
//返回值:1,接收应答失败
//        0,接收应答成功
uint8_t IIC2_Wait_Ack(void)
{
    uint8_t ucErrTime=0;
//  IIC2_SDA_IN();      //SDA设置为输入
 gpio_pin_set_dir(SDA_PIN , GPIO_DIR_IN, 1);
     SDA_1;
    delay_us(6);       
    SCL_1;
    delay_us(6);    
    while(IIC2_READ_SDA)
    {
        ucErrTime++;
@@ -534,6 +535,7 @@
            return 1;
        }
    }
    gpio_pin_set_dir(SDA_PIN , GPIO_DIR_OUT, 1);
    SCL_0;//时钟输出0
    return 0;  
keil/include/drivers/mk_trace.c
@@ -50,7 +50,7 @@
#if TRACE_EN
#ifndef BACKTRACE_EN
#define BACKTRACE_EN (0)
#define BACKTRACE_EN (1)
#endif
#ifndef TRACE_BUF_SIZE
keil/include/main/main.c
@@ -69,7 +69,7 @@
#define TEST_UART_MODE TEST_UART_DMA_MODE
#define NUM_SAMPLES 1
#define BIND_TRIGGER_TIME 60000
#define BIND_TRIGGER_TIME 60000
extern uint8_t mUsartReceivePack[100];
extern uint8_t mUsart2ReceivePack[150];
extern uint8_t state5V_prase_flag,gps_prase_flag;
@@ -89,9 +89,9 @@
typedef enum
{        UN_BIND=0,
        LINK_SUCCESS,
        SEARCH_DEV,
}Operation_step;
        LINK_SUCCESS,
        SEARCH_DEV,
} Operation_step;
Operation_step Operation_state;
@@ -109,39 +109,39 @@
    .high_pulse_time = 4,
    .settle_time = 1,
};
 struct UART_CFG_T test_uart_cfg =
    {
        .parity = UART_PARITY_NONE,
        .stop = UART_STOP_BITS_1,
        .data = UART_DATA_BITS_8,
        .flow = UART_FLOW_CONTROL_NONE,
        .rx_level = UART_RXFIFO_CHAR_1,
        .tx_level = UART_TXFIFO_EMPTY,
        .baud = BAUD_115200,
struct UART_CFG_T test_uart_cfg =
{
    .parity = UART_PARITY_NONE,
    .stop = UART_STOP_BITS_1,
    .data = UART_DATA_BITS_8,
    .flow = UART_FLOW_CONTROL_NONE,
    .rx_level = UART_RXFIFO_CHAR_1,
    .tx_level = UART_TXFIFO_EMPTY,
    .baud = BAUD_115200,
#if (TEST_UART_MODE == TEST_UART_POLL_MODE)
        .dma_en = false,
        .int_rx = false,
        .int_tx = false,
    .dma_en = false,
    .int_rx = false,
    .int_tx = false,
#elif (TEST_UART_MODE == TEST_UART_INTERUPT_MODE)
        .dma_en = false,
        .int_rx = true,
        .int_tx = true,
    .dma_en = false,
    .int_rx = true,
    .int_tx = true,
#elif (TEST_UART_MODE == TEST_UART_DMA_MODE)
        .dma_en = true,
        .int_rx = false,
        .int_tx = false,
    .dma_en = true,
    .int_rx = false,
    .int_tx = false,
#endif
        };
};
static void uart_receive_callback(void *dev, uint32_t err_code)
{
uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
{
    uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
}
static void adc_callback(void *data, uint32_t number)
{
    uint32_t *result = (uint32_t *)data;
    for (uint16_t i = 0; i < number; i++)
    {
//        LOG_INFO(TRACE_MODULE_APP, "The voltage measured %d mv\r\n",
//        LOG_INFO(TRACE_MODULE_APP, "The voltage measured %d mv\r\n",
//        ADC_INTERNAL_VREF_MV + adc_code_to_mv((int16_t)*result, ADC_INTERNAL_VREF_MV));
        fVoltage_mv=ADC_INTERNAL_VREF_MV + adc_code_to_mv((int16_t)*result, ADC_INTERNAL_VREF_MV);
        fVoltage_mv=fVoltage_mv*2;
@@ -158,7 +158,7 @@
            bat_percent = ((fVoltage_mv - 3300) /8);
        }
    }
         LOG_INFO(TRACE_MODULE_APP, "The voltage is %%%d \r\n",bat_percent);
    LOG_INFO(TRACE_MODULE_APP, "The voltage is %%%d \r\n",bat_percent);
}
//void UartInit(void)
//{
@@ -169,107 +169,107 @@
//}
static void sleep_timer_callback(void *dev, uint32_t time)
{
        nomove_count++;
        send_messgae_count+=g_com_map[COM_INTERVAL];
        //if(send_messgae_count>=g_com_map[4G_INTERNAL]){
        //send_message_count=0;
        //send_flag=1;
    //}
        if(Operation_state==LINK_SUCCESS){//成功时清0错误计数
        link_error_count=0;
        g_start_send_flag=1;
        }
        if(Operation_state==SEARCH_DEV){
    nomove_count++;
    send_messgae_count+=g_com_map[COM_INTERVAL];
    //if(send_messgae_count>=g_com_map[4G_INTERNAL]){
    //send_message_count=0;
    //send_flag=1;
    //}
    if(Operation_state==LINK_SUCCESS) { //成功时清0错误计数
        link_error_count=0;
        g_start_send_flag=1;
    }
    if(Operation_state==SEARCH_DEV) {
//        if(first_search_flag){//当第一次连接断开产生时才开始计数
            //link_error_count=0;
        //link_error_count=0;
//        }
        link_error_count++;
        if(link_error_count==60)
        link_error_count=0;
        //link_error_count+=g_com_map[COM_INTERVAL];
            //if(link_error_count>=g_com_map[4G_INTERNAL])
            //link_error_count=0;
        updata_led_power_state();//更新灯状态
    }
        link_error_count++;
        if(link_error_count==60)
            link_error_count=0;
        //link_error_count+=g_com_map[COM_INTERVAL];
        //if(link_error_count>=g_com_map[4G_INTERNAL])
        //link_error_count=0;
        update_led_power_state();//更新灯状态
    }
    HIDO_TimerTick();
}
static void voltage_input_handler(enum IO_PIN_T pin)
{
}
static void move_handler(enum IO_PIN_T pin)
{
nomove_count=0;
    nomove_count=0;
}
void Program_Init(void)
{
Usart1ParseDataCallback = UsartParseDataHandler;//需改为默认为gps处理,UsartParseDataHandler为升级处理当调试时候改为
parameter_init_anchor();//g_com_map表初始化角色默认为基站
dev_id=g_com_map[DEV_ID];//这里不太对
group_id=g_com_map[GROUP_ID];//组ID
tag_frequency = 1000/g_com_map[COM_INTERVAL];//测距频率这个存的是测距时间
memcpy(&disoffset,&g_com_map[DIST_OFFSET],2);
warning_distance=g_com_map[STATIONARY_TIME];
prewarning_distance=g_com_map[ALARM_DISTANCE2];
send_struct.warnDistence=warning_distance;
send_struct.alarmDistence=prewarning_distance;//更新报警距离
memcpy(&send_struct.gunLableId,&g_com_map[BIND_DEV_ID],2);//更新绑定ID
send_struct.tagId=dev_id;//更新设备ID
{
    Usart1ParseDataCallback = UsartParseDataHandler;//需改为默认为gps处理,UsartParseDataHandler为升级处理当调试时候改为
    parameter_init_anchor();//g_com_map表初始化角色默认为基站
    dev_id=g_com_map[DEV_ID];//这里不太对
    group_id=g_com_map[GROUP_ID];//组ID
    tag_frequency = 1000/g_com_map[COM_INTERVAL];//测距频率这个存的是测距时间
    memcpy(&disoffset,&g_com_map[DIST_OFFSET],2);
    warning_distance=g_com_map[STATIONARY_TIME];
    prewarning_distance=g_com_map[ALARM_DISTANCE2];
    send_struct.warnDistence=warning_distance;
    send_struct.alarmDistence=prewarning_distance;//更新报警距离
    memcpy(&send_struct.gunLableId,&g_com_map[BIND_DEV_ID],2);//更新绑定ID
    send_struct.tagId=dev_id;//更新设备ID
}
void IdleTask(void)
{
    if(gpio_pin_get_val(INPUT_5V_Pin))
    {
        if(state5v==0)
        {
            state5v=1;
            state5V_prase_flag=state5v;
            gps_prase_flag=0;//解除gps解析
            uart1_change_from_gps_to_debug();
            uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);//开启dma
            //UartInit();
        }
        //UART_CheckSend();
    }else{
    if(gpio_pin_get_val(INPUT_5V_Pin))
    {
        if(state5v==0)
        {
            state5v=1;
            state5V_prase_flag=state5v;
            gps_prase_flag=0;//解除gps解析
            uart1_change_from_gps_to_debug();
            uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);//开启dma
            //UartInit();
        }
        //UART_CheckSend();
    } else {
        if(state5v==1)
        {
          state5v=0;
                    state5V_prase_flag=state5v;
                    gps_prase_flag=1;//恢复gps解析
                    uart1_change_from_debug_to_gps();
                    uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);//开启dma
                    //UartDeinit();
            state5v=0;
            state5V_prase_flag=state5v;
            gps_prase_flag=1;//恢复gps解析
            uart1_change_from_debug_to_gps();
            uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);//开启dma
            //UartDeinit();
        }
                UART_CheckReceive();
}
        UART_CheckReceive();
    }
}
int bind_check(void)
{
if(g_com_map[BIND_DEV_ID]!=0x00)
{
    return 1;
    if(g_com_map[BIND_DEV_ID]!=0x00)
    {
        return 1;
//绑定信息为1说明设备已经被下发绑定
}else{
    return 0;
    } else {
        return 0;
//绑定信息为0说明设备未被绑定
}
    }
}
void check_if_in_search(void)
{
if(link_success_flag==1){//如果第一次测距收包成功那么则进入连接测距模式
        Operation_state=LINK_SUCCESS;
            }else{//否则进入搜索模式
        Operation_state=SEARCH_DEV;
        if(first_search_flag==0)
        first_search_flag=1;
    }
    if(link_success_flag==1) { //如果第一次测距收包成功那么则进入连接测距模式
        Operation_state=LINK_SUCCESS;
    } else { //否则进入搜索模式
        Operation_state=SEARCH_DEV;
        if(first_search_flag==0)
            first_search_flag=1;
    }
}
@@ -277,12 +277,11 @@
{
    board_clock_run();
    board_pins_config();
        IIC2_Init();
    board_debug_console_open(TRACE_PORT_UART0);
        // Reset reason
    board_debug_console_open(TRACE_PORT_UART1);
    // Reset reason
    reset_cause_get();
    reset_cause_clear();
    // Load calibration parameters from NVM
    uint32_t internal_flash = (REG_READ(0x40000018) >> 17) & 0x1;
    uint32_t external_flash = (REG_READ(0x40010030) >> 28) & 0x3;
@@ -302,101 +301,101 @@
    // Disable watchdog timer
    wdt_close(WDT_ID0);
  //  LOG_INFO(TRACE_MODULE_APP, "UWB simple example\r\n");
    //  LOG_INFO(TRACE_MODULE_APP, "UWB simple example\r\n");
    // open system timer
    //sys_timer_open();
    // TODO 4G
    Uart_Register(UART_ID_4G, UART_ID1);
    AIR780EDriver_PinRegister(AIR780E_PIN_3V8_EN, IO_PIN_5);
    AIR780EDriver_PinRegister(AIR780E_PIN_PWRKEY, IO_PIN_6);
    Uart_Register(UART_ID_4G, UART_ID0);
    Internet_Init();
    gpio_open();
    //board_led_init();
//        adc_open(&usr_adc_cfg);
        IIC2_Init();
        Accelerometer_Init(); //加速度计初始化必须在IO_control_init之前因为复用SDA引脚
        IO_control_init();
        //adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样
        uart_open(UART_ID1, &test_uart_cfg);
        gps_air780_power_change(1,1);//开启gps,4G
        Program_Init();
         uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
    IIC2_Init();
    Accelerometer_Init();
    IO_control_init();
//加速度计初始化必须在IO_control_init之前因为复用SDA引脚
    //adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样
   // uart_open(UART_ID1, &test_uart_cfg);
    gps_air780_power_change(1,1);//开启gps,4G
    Program_Init();
    uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
// Initialize low power mode
    power_init();
LOG_INFO(TRACE_MODULE_APP, "测试数据");
//            g_com_map[BIND_DEV_ID]=0x1122;//测试
        if(bind_check())//绑定后才提前开启测距
        {link_success_flag=temp_main();//上机开启接收2s绑定成功则进行下面轮询测距流程,不成功则1分后再次开启2s接收
            check_if_in_search();
        }else{
        send_struct.bindState=false;
        Operation_state=UN_BIND;
        }
        sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback);
        //sleep_timer_start(__MS_TO_32K_CNT(g_com_map[COM_INTERVAL]));//测试
        sleep_timer_start(__MS_TO_32K_CNT(1000));//测试
        board_5V_input_init(voltage_input_handler);
        board_acceleration_detection_init(move_handler);
    if(bind_check())//绑定后才提前开启测距
    {   link_success_flag=temp_main();//上机开启接收2s绑定成功则进行下面轮询测距流程,不成功则1分后再次开启2s接收
        check_if_in_search();
    } else {
        send_struct.bindState=false;
        Operation_state=UN_BIND;
    }
    sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback);
    //sleep_timer_start(__MS_TO_32K_CNT(g_com_map[COM_INTERVAL]));//测试
    sleep_timer_start(__MS_TO_32K_CNT(1000));//测试
    board_5V_input_init(voltage_input_handler);
    board_acceleration_detection_init(move_handler);
    while (1)
    {
        // TODO
        Internet_Poll();
        HIDO_ATLitePoll();
         HIDO_ATLitePoll();
        HIDO_TimerPoll();
    switch(Operation_state){
        case LINK_SUCCESS:
        {//连接成功进行轮询测距
            if(g_start_send_flag){
            g_start_send_flag = 0;
            uwb_led_on();
            simple_main();
            uwb_led_off();
            IdleTask();
            }else{
            IdleTask();
            }
        }
        break;
        case SEARCH_DEV:
        {//接包不成功或者通讯失败进入搜索模式
            if(link_error_count==0||first_search_flag){
            first_search_flag=0;
            uwb_led_on();
            link_success_flag=temp_main();//第一次开启接收2s绑定失败后则进行下面1分钟后重新开启2s绑定流程
            uwb_led_off();
            if(link_success_flag)
            Operation_state=LINK_SUCCESS;
        }
            IdleTask();
        }
        break;
        case UN_BIND:
        {uwb_led_off();//关闭uwb指示灯
            IdleTask();
        }
    break;
    }
        //3种情况后都要发包和休眠
        //if(send_flag){
        //message_construct();
        //send_udp;
    //air780_success_state=0;//关闭4G成功发送灯
        //blink_led(&air780_success_state);//成功测距闪烁4G状态灯
    //air780_success_state=0;
        //}
        switch(Operation_state) {
        case LINK_SUCCESS:
        {   //连接成功进行轮询测距
            if(g_start_send_flag) {
                g_start_send_flag = 0;
                uwb_led_on();
                simple_main();
                uwb_led_off();
                IdleTask();
            } else {
                IdleTask();
            }
        }
        break;
        case SEARCH_DEV:
        {   //接包不成功或者通讯失败进入搜索模式
            if(link_error_count==0||first_search_flag) {
                first_search_flag=0;
                uwb_led_on();
                link_success_flag=temp_main();//第一次开启接收2s绑定失败后则进行下面1分钟后重新开启2s绑定流程
                uwb_led_off();
                if(link_success_flag)
                    Operation_state=LINK_SUCCESS;
            }
            IdleTask();
        }
        break;
        case UN_BIND:
        {   uwb_led_off();//关闭uwb指示灯
            IdleTask();
        }
        break;
        }
        //3种情况后都要发包和休眠
        //if(send_flag){
        //message_construct();
        //send_udp;
        //air780_success_state=0;//关闭4G成功发送灯
        //blink_led(&air780_success_state);//成功测距闪烁4G状态灯
        //air780_success_state=0;
        //}
#ifdef DEBUG_MODE
            if(!gpio_pin_get_val(INPUT_5V_Pin)){
                        trace_flush();
        if(!gpio_pin_get_val(INPUT_5V_Pin)) {
            trace_flush();
            uint32_t lock = int_lock();
                        //LOG_INFO(TRACE_MODULE_APP, "进入低功耗");
            //LOG_INFO(TRACE_MODULE_APP, "进入低功耗");
            power_enter_power_down_mode(0);
            int_unlock(lock);
            }
        }
#endif
    }
}
keil/mk_4G.c
@@ -3,50 +3,50 @@
#include "sn74hc595.h"
void bind_reset(void)
{
g_com_map[BIND_DEV_ID]=0x00;//重置默认下发ID保存
save_com_map_to_flash();
    g_com_map[BIND_DEV_ID]=0x00;//重置默认下发ID保存
    save_com_map_to_flash();
}
void message_construct()
{
//sprintf(send_buf,"$message,%d,%d,%d,%d,%d,%d,%%f,%lf,%lf,%lf,%lf,%d,%d",Commend_SendDate.messgetype,Commend_SendDate.tagId,Commend_SendDate.bindState,
    //Commend_SendDate.gunLableId,Commend_SendDate.alarmType,Commend_SendDate.power,Commend_SendDate.warnDistance,Commend_SendDate.alarmDistance,Commend_SendDate.lng,Commend_SendDate.lat
    //Commend_SendDate.applyId,Commend_SendDate.result);
    //send 4G
    //Commend_SendDate.gunLableId,Commend_SendDate.alarmType,Commend_SendDate.power,Commend_SendDate.warnDistance,Commend_SendDate.alarmDistance,Commend_SendDate.lng,Commend_SendDate.lat
    //Commend_SendDate.applyId,Commend_SendDate.result);
    //send 4G
}
void message_from_4G_Handler(void)
{
//sscanf(4G_api_buf,"$%*[^,],%d,%d,%d,%d,%lf,%lf,%d",Commend_Datestruct.type,Commend_Datestruct.applyID,Commend_Datestruct.tagId,
    //Commend_Datestruct.gunLableId,Commend_Datestruct.warnDistance,Commend_Datestruct.alarmDistance,Commend_Datestruct.frequency);
/*根据指令去执行
    switch(Commend_Datestruct.type)
    case BIND_SUCCESS:
    {
     g_com_map[DEV_ID]=Commend_Datestruct.tagId;
     g_com_map[BIND_DEV_ID]=Commend_Datestruct.gunLableId;
     g_com_map[STATIONARY_TIME]=Commend_Datestruct.warnDistance;
     g_com_map[ALARM_DISTANCE2]=Commend_Datestruct.alarmDistance;//这个距离double和uint格式不符
     g_com_map[SEND_4G_FREQUENCY]=1000/Commend_Datestruct.frequency;
    }
    break;
    case UNBIND:
    bind_resetbreak();
    case OPEN_GNSS:
     gnss_forceopen();
    case CLOSE_VIBRATION:
     vibration_close();
    case QUARY_INFORMATION:
    //??
    case CHANGE_POLL_FREQUENCY:
    g_com_map[SEND_4G_FREQUENCY]=Commend_Datestruct.frequency;
    break;
    save_com_map_to_flash();
    */
    //Commend_Datestruct.gunLableId,Commend_Datestruct.warnDistance,Commend_Datestruct.alarmDistance,Commend_Datestruct.frequency);
    /*根据指令去执行
        switch(Commend_Datestruct.type)
        case BIND_SUCCESS:
        {
         g_com_map[DEV_ID]=Commend_Datestruct.tagId;
         g_com_map[BIND_DEV_ID]=Commend_Datestruct.gunLableId;
         g_com_map[STATIONARY_TIME]=Commend_Datestruct.warnDistance;
         g_com_map[ALARM_DISTANCE2]=Commend_Datestruct.alarmDistance;//这个距离double和uint格式不符
         g_com_map[SEND_4G_FREQUENCY]=1000/Commend_Datestruct.frequency;
        }
        break;
        case UNBIND:
        bind_resetbreak();
        case OPEN_GNSS:
         gnss_forceopen();
        case CLOSE_VIBRATION:
         vibration_close();
        case QUARY_INFORMATION:
        //??
        case CHANGE_POLL_FREQUENCY:
        g_com_map[SEND_4G_FREQUENCY]=Commend_Datestruct.frequency;
        break;
        save_com_map_to_flash();
        */
}
void gnss_forceopen(void)
{
gps_air780_power_change(1, air780_power_state);
    gps_air780_power_change(1, air780_power_state);
}
keil/simple_ss_twr_dw_init.c
@@ -161,7 +161,7 @@
        memcpy(rx_buf, rx_report->pkt_data, rx_length);
        /* Calculate rx timestamp */
        resp_rx_ts_i64 = ranging_rx_time_correct(rx_report);
                receive_flag=1;
        receive_flag=1;
    }
    else
    {
@@ -172,9 +172,9 @@
        /* UWB_TO_ERR      Receive timeout           */
        /* UWB_STS_ERR     STS error                 */
        rx_length = 0;
                receive_flag=2;
        receive_flag=2;
    }
}
/* TX done process handler. */
@@ -201,102 +201,102 @@
//注意:因为新注册的标签并不知道基站已经收到了,所以要在下一包立刻将新的标签ID发出,否则标签会一直抢占基站的poll包。
//方法是将新注册的标签添加到下次发送的标签列表头部,其他标签依次向后挪动。
uint16_t AddNewTagIntoList(uint16_t tagid)
{
     uint16_t newindex_cal = taglist_current_index+25;//当前索引+25,为下次索引要发出的值的最大值,如果总数小于这个值,即可放到最后面。
      if(newindex_cal>=taglist_total_num) //如果当前索引是最后一包,那么就加到总索引的后面,如果不是就加到下一次起始索引位置。
      {
uint16_t AddNewTagIntoList(uint16_t tagid)
{
    uint16_t newindex_cal = taglist_current_index+25;//当前索引+25,为下次索引要发出的值的最大值,如果总数小于这个值,即可放到最后面。
    if(newindex_cal>=taglist_total_num) //如果当前索引是最后一包,那么就加到总索引的后面,如果不是就加到下一次起始索引位置。
    {
        newindex_cal = taglist_total_num;
      }else{
         for(uint16_t i=taglist_total_num;i>newindex_cal;i--)  //从后往前挪地方??就是插入
            {
                taglist_id[i]=taglist_id[i-1];
                taglist_dist[i]=taglist_dist[i-1];
                taglist_keeptime[i]=taglist_keeptime[i-1];
            }
      }
      taglist_total_num++;
      taglist_id[newindex_cal] = tagid;
      taglist_dist[newindex_cal] = 0;
      taglist_keeptime[newindex_cal] = TAG_KEEPTIMES;
      return newindex_cal;
    } else {
        for(uint16_t i=taglist_total_num; i>newindex_cal; i--) //从后往前挪地方??就是插入
        {
            taglist_id[i]=taglist_id[i-1];
            taglist_dist[i]=taglist_dist[i-1];
            taglist_keeptime[i]=taglist_keeptime[i-1];
        }
    }
    taglist_total_num++;
    taglist_id[newindex_cal] = tagid;
    taglist_dist[newindex_cal] = 0;
    taglist_keeptime[newindex_cal] = TAG_KEEPTIMES;
    return newindex_cal;
}
uint8_t FindNearBasePos(uint16_t baseid)//寻找当前列表中的基站返回索引
{
    uint8_t i;
    for(i=0;i<nearbase_num;i++)
    {
        if(baseid==nearbaseid_list[i])
            return i;
    }
    if(i==nearbase_num)
        return nearbase_num;
    uint8_t i;
    for(i=0; i<nearbase_num; i++)
    {
        if(baseid==nearbaseid_list[i])
            return i;
    }
    if(i==nearbase_num)
        return nearbase_num;
}
void AnchorListUpdate(void)
{
    next_nearbase_num = 0;
            int j=0;
            for(int i=0;i<nearbase_num;i++)
            {
                if(exsistbase_list[i]>0)
                {
          exsistbase_list[i]--;
                    next_nearbase_num++;
                    true_exsistbase_list[j]=exsistbase_list[i];
                    true_nearbase_idlist[j]=nearbaseid_list[i];
                    true_nearbase_distlist[j++]=nearbase_distlist[i];
                }
                nearbase_num = next_nearbase_num;//更新现存基站数
                last_nearbase_num = next_nearbase_num;//更新当前基站数
            }
    next_nearbase_num = 0;
    int j=0;
    for(int i=0; i<nearbase_num; i++)
    {
        if(exsistbase_list[i]>0)
        {
            exsistbase_list[i]--;
            next_nearbase_num++;
            true_exsistbase_list[j]=exsistbase_list[i];
            true_nearbase_idlist[j]=nearbaseid_list[i];
            true_nearbase_distlist[j++]=nearbase_distlist[i];
        }
        nearbase_num = next_nearbase_num;//更新现存基站数
        last_nearbase_num = next_nearbase_num;//更新当前基站数
    }
}
void Rank_ANchor_list_by_dis(void)//按照目前的基站距离进行冒泡排序用临时数组方式将最近的放到最前面,最远的放到最后面
{
for(int i=0;i<last_nearbase_num-1;i++)
            {
                for(int j=0;j<last_nearbase_num-1;j++)
                {
                    if(true_nearbase_distlist[j]>true_nearbase_distlist[j+1])
                    {
                        uint32_t temp_dist,temp_id,temp_exsis;
                        temp_dist=true_nearbase_distlist[j];
                        temp_id = true_nearbase_idlist[j];
                        temp_exsis=true_exsistbase_list[j];
                        true_nearbase_distlist[j]=true_nearbase_distlist[j+1];
                        true_nearbase_idlist[j]=true_nearbase_idlist[j+1];
                        true_exsistbase_list[j]=true_exsistbase_list[j+1];
                        true_nearbase_distlist[j+1]=temp_dist;
                        true_nearbase_idlist[j+1]=temp_id;
                        true_exsistbase_list[j+1]=temp_exsis;
                    }
                }
            }
            for (int i=0;i<last_nearbase_num;i++)
            {
                nearbaseid_list[i]=true_nearbase_idlist[i];
                nearbase_distlist[i]=true_nearbase_distlist[i];
                exsistbase_list[i] = true_exsistbase_list[i];
            }
    for(int i=0; i<last_nearbase_num-1; i++)
    {
        for(int j=0; j<last_nearbase_num-1; j++)
        {
            if(true_nearbase_distlist[j]>true_nearbase_distlist[j+1])
            {
                uint32_t temp_dist,temp_id,temp_exsis;
                temp_dist=true_nearbase_distlist[j];
                temp_id = true_nearbase_idlist[j];
                temp_exsis=true_exsistbase_list[j];
                true_nearbase_distlist[j]=true_nearbase_distlist[j+1];
                true_nearbase_idlist[j]=true_nearbase_idlist[j+1];
                true_exsistbase_list[j]=true_exsistbase_list[j+1];
                true_nearbase_distlist[j+1]=temp_dist;
                true_nearbase_idlist[j+1]=temp_id;
                true_exsistbase_list[j+1]=temp_exsis;
            }
        }
    }
    for (int i=0; i<last_nearbase_num; i++)
    {
        nearbaseid_list[i]=true_nearbase_idlist[i];
        nearbase_distlist[i]=true_nearbase_distlist[i];
        exsistbase_list[i] = true_exsistbase_list[i];
    }
}
uint16_t CmpTagInList(uint16_t tagid)//找这个新一包的基站在不在现存的taglist中在的话对应位置更新存活时间,不在就增加(确保有效数量小于最大设置数)
{
    uint16_t temp;
    for(uint8_t i=0;i<taglist_total_num;i++)
    {
        if(memcmp(&tagid,&taglist_id[i],2)==0)
    for(uint8_t i=0; i<taglist_total_num; i++)
    {
        if(memcmp(&tagid,&taglist_id[i],2)==0)
        {
            taglist_keeptime[i] = TAG_KEEPTIMES;
            return i;
            return i;
        }
    }
    }
    if(taglist_total_num<MAX_TAG_LIST_NUM)
    temp = AddNewTagIntoList(tagid);
    return temp;
        temp = AddNewTagIntoList(tagid);
    return temp;
}
int simple_main(void)
{
@@ -330,70 +330,72 @@
//    // Enable sleep timer
//    sleep_timer_open(true, SLEEP_TIMER_MODE_ONESHOT, NULL);
//#endif
        uwb_poll_buffer_construct();
        temp_tag_num=0;//临时数量为0
        poll_tx_en_start_u32 = phy_timer_count_get();
        uwb_tx(uwb_sendbuffer,sizeof(uwb_sendbuffer),0,0);//立即发送
        poll_tx_ts_i64 = ranging_tx_time_correct(poll_tx_en_start_u32 + phy_start_time_gap());//修正时间戳
        while(mac_is_busy());//等待发送完成
        resp_rx_en_start_u32 = poll_tx_en_start_u32 + US_TO_PHY_TIMER_COUNT(POLL_TX_TO_RESP_RX_DLY_US);//设置发送多少s后接收按target独立时间起点算+ US_TO_PHY_TIMER_COUNT(POLL_TX_TO_RESP_RX_DLY_US为发送后要多久开启接收时间
        start_receive_count=phy_timer_count_get();
        poll_timeout=tag_num_tosend*50000+50000;//多一个多0.4ms默认0.4ms计算为0.125*4*100000
        end_receive_count=start_receive_count+poll_timeout;
        if(end_receive_count>=124800000)
    {end_receive_count-=124800000;}
    current_count=phy_timer_count_get();
    uwb_rx(1, resp_rx_en_start_u32, RESP_RX_TIMEOUT_US);//开启接受并设置接收超时
        while(current_count<end_receive_count||current_count>end_receive_count+62400000)//循环接受包体,若为124.8K则是+62400000
        {
        current_count=phy_timer_count_get();//不断刷新当前计数器值
        if(receive_flag==1)//成功接收数据
        {
            receive_flag=0;
            //获取发射端时钟偏差
            test2=phy_freq_offset_get();
            //接收成功则判断是否为同一组
            if (rx_buf[MESSAGE_TYPE_IDX] == MBX_RESPONSE&&!memcmp(&rx_buf[TAG_ID_IDX],&dev_id,2)&&rx_buf[GROUP_ID_IDX]==group_id) //判断接收到的数据是否是response数据
                            {
                                                                memcpy(&rec_nearbaseid,&rx_buf[ANCHOR_ID_IDX],2);
                                                                if(last_nearbase_num==0)
                                                                {
                                                                    nearbaseid_list[0]=rec_nearbaseid;
                                                                    nearbase_num=1;
                                                                    exsistbase_list[0]=KEEP_TIMES;
                                  SetANCTimestap(0,&rx_buf[RESP_MSG_POLL_RX_TS_IDX],&rx_buf[RESP_MSG_RESP_TX_TS_IDX],(uint32_t)resp_rx_ts_i64,&rx_buf[RESP_MSG_ANC_DISTOFFSET],test2);//这个是改过的参数
                                                                }
    uwb_poll_buffer_construct();
    temp_tag_num=0;//临时数量为0
    poll_tx_en_start_u32 = phy_timer_count_get();
    uwb_tx(uwb_sendbuffer,sizeof(uwb_sendbuffer),0,0);//立即发送
    poll_tx_ts_i64 = ranging_tx_time_correct(poll_tx_en_start_u32 + phy_start_time_gap());//修正时间戳
    while(mac_is_busy());//等待发送完成
    resp_rx_en_start_u32 = poll_tx_en_start_u32 + US_TO_PHY_TIMER_COUNT(POLL_TX_TO_RESP_RX_DLY_US);//设置发送多少s后接收按target独立时间起点算+ US_TO_PHY_TIMER_COUNT(POLL_TX_TO_RESP_RX_DLY_US为发送后要多久开启接收时间
    start_receive_count=phy_timer_count_get();
    poll_timeout=tag_num_tosend*50000+50000;//多一个多0.4ms默认0.4ms计算为0.125*4*100000
    end_receive_count=start_receive_count+poll_timeout;
    if(end_receive_count>=124800000)
    {
        end_receive_count-=124800000;
    }
    current_count=phy_timer_count_get();
    uwb_rx(1, resp_rx_en_start_u32, RESP_RX_TIMEOUT_US);//开启接受并设置接收超时
    while(current_count<end_receive_count||current_count>end_receive_count+62400000)//循环接受包体,若为124.8K则是+62400000
    {
        current_count=phy_timer_count_get();//不断刷新当前计数器值
        if(receive_flag==1)//成功接收数据
        {
            receive_flag=0;
            //获取发射端时钟偏差
            test2=phy_freq_offset_get();
            //接收成功则判断是否为同一组
            if (rx_buf[MESSAGE_TYPE_IDX] == MBX_RESPONSE&&!memcmp(&rx_buf[TAG_ID_IDX],&dev_id,2)&&rx_buf[GROUP_ID_IDX]==group_id) //判断接收到的数据是否是response数据
            {
                memcpy(&rec_nearbaseid,&rx_buf[ANCHOR_ID_IDX],2);
                if(last_nearbase_num==0)
                {
                    nearbaseid_list[0]=rec_nearbaseid;
                    nearbase_num=1;
                    exsistbase_list[0]=KEEP_TIMES;
                    SetANCTimestap(0,&rx_buf[RESP_MSG_POLL_RX_TS_IDX],&rx_buf[RESP_MSG_RESP_TX_TS_IDX],(uint32_t)resp_rx_ts_i64,&rx_buf[RESP_MSG_ANC_DISTOFFSET],test2);//这个是改过的参数
                }
//                                                                if(rec_nearbaseid==nearbaseid_list[0])
//                                                                    {
//                                     exsistbase_list[0]=KEEP_TIMES;
//                                   SetANCTimestap(0,&rx_buf[RESP_MSG_POLL_RX_TS_IDX],&rx_buf[RESP_MSG_RESP_TX_TS_IDX],(uint32_t)resp_rx_ts_i64,&rx_buf[RESP_MSG_ANC_DISTOFFSET],test2);//这个是改过的参数
//                                                                    }
                                                                else
                                {
                                    rec_nearbasepos=FindNearBasePos(rec_nearbaseid);
                                    SetANCTimestap(rec_nearbasepos,&rx_buf[RESP_MSG_POLL_RX_TS_IDX],&rx_buf[RESP_MSG_RESP_TX_TS_IDX],(uint32_t)resp_rx_ts_i64,&rx_buf[RESP_MSG_ANC_DISTOFFSET],test2);
                                    if(rec_nearbasepos>=last_nearbase_num)          //发现新的基站
                                    {
                                        //get_newbase=1;
                                        nearbase_num++;
                                        nearbaseid_list[rec_nearbasepos] = rec_nearbaseid;
                                    }
                                    exsistbase_list[rec_nearbasepos]=KEEP_TIMES;//更新存活时间
              }
                             memset(rx_buf, 0, sizeof(rx_buf));//清空接收到的用完的数组
                                rx_length=0;//清0长度
                                uwb_rx(0, 0, 0);//立即开启接受并设置0超时
        }else if(receive_flag==2){//接收出错
        receive_flag=0;
        uwb_rx(0, 0, 0);//立即开启接受并设置0超时
        }
        }
        //关闭UWBapi
         uwb_close();
         CalculateDists(poll_tx_ts_i64); //计算距离
         AnchorListUpdate();//更新存活基站列表
         Rank_ANchor_list_by_dis();//冒泡排序重新按距离重新排列基站列表最小距离存货基站放到最前面
        }
                else
                {
                    rec_nearbasepos=FindNearBasePos(rec_nearbaseid);
                    SetANCTimestap(rec_nearbasepos,&rx_buf[RESP_MSG_POLL_RX_TS_IDX],&rx_buf[RESP_MSG_RESP_TX_TS_IDX],(uint32_t)resp_rx_ts_i64,&rx_buf[RESP_MSG_ANC_DISTOFFSET],test2);
                    if(rec_nearbasepos>=last_nearbase_num)          //发现新的基站
                    {
                        //get_newbase=1;
                        nearbase_num++;
                        nearbaseid_list[rec_nearbasepos] = rec_nearbaseid;
                    }
                    exsistbase_list[rec_nearbasepos]=KEEP_TIMES;//更新存活时间
                }
                memset(rx_buf, 0, sizeof(rx_buf));//清空接收到的用完的数组
                rx_length=0;//清0长度
                uwb_rx(0, 0, 0);//立即开启接受并设置0超时
            } else if(receive_flag==2) { //接收出错
                receive_flag=0;
                uwb_rx(0, 0, 0);//立即开启接受并设置0超时
            }
        }
        //关闭UWBapi
        uwb_close();
        CalculateDists(poll_tx_ts_i64); //计算距离
        AnchorListUpdate();//更新存活基站列表
        Rank_ANchor_list_by_dis();//冒泡排序重新按距离重新排列基站列表最小距离存货基站放到最前面
    }
}
#endif
keil/simple_ss_twr_dw_resp.c
@@ -15,7 +15,7 @@
extern int temp_main(void);
extern void IO_LED_control_change(uint8_t data);
extern void IO_control_init(void);
extern void blink_led(uint8_t*state);
extern void updata_led_power_state(void);
/*receive buffer*/
static uint8_t rx_buf[150];
@@ -52,9 +52,9 @@
extern uint8_t recev_error_num;
typedef enum
{        UN_BIND=0,
        LINK_SUCCESS,
        SEARCH_DEV,
}Operation_step;
        LINK_SUCCESS,
        SEARCH_DEV,
} Operation_step;
extern Operation_step Operation_state;
extern int16_t first_search_flag;
/* Ranging period */
@@ -208,14 +208,14 @@
        /* Received data does not contain FCS */
        rx_length = rx_report->pkt_len;
        memcpy(rx_buf, rx_report->pkt_data, rx_length);
                memcpy(&rx_rpt, rx_report, sizeof(struct MAC_HW_REPORT_T));
        memcpy(&rx_rpt, rx_report, sizeof(struct MAC_HW_REPORT_T));
        /* Calculate rx timestamp */
                temp_count= phy_timer_count_get();
         poll_rx_en_start_u32 = rx_rpt.timestamp - phy_shr_duration();
         poll_rx_ts_i64 = ranging_rx_time_correct(&rx_rpt);
                 poll_rx_num++;
                receive_flag=1;
                recev_error_num=0;
        temp_count= phy_timer_count_get();
        poll_rx_en_start_u32 = rx_rpt.timestamp - phy_shr_duration();
        poll_rx_ts_i64 = ranging_rx_time_correct(&rx_rpt);
        poll_rx_num++;
        receive_flag=1;
        recev_error_num=0;
    }
    else
    {
@@ -226,14 +226,14 @@
        /* UWB_TO_ERR      Receive timeout           */
        /* UWB_STS_ERR     STS error                 */
        memcpy(&rx_rpt, rx_report, sizeof(struct MAC_HW_REPORT_T));
              rx_length = 0;
                recev_error_num++;
                if(recev_error_num==20){
                recev_error_num=0;
                first_search_flag=1;//首次进入搜索标志
                Operation_state=SEARCH_DEV;
                }
                receive_flag=2;
        rx_length = 0;
        recev_error_num++;
        if(recev_error_num==20) {
            recev_error_num=0;
            first_search_flag=1;//首次进入搜索标志
            Operation_state=SEARCH_DEV;
        }
        receive_flag=2;
    }
}
@@ -246,10 +246,10 @@
    /** UWB TX success */
    if (tx_report->err_code == UWB_TX_OK)
    {
            temp_count= phy_timer_count_get();
            temp_internal=temp_count;
            resp_tx_num++;
            LOG_INFO(TRACE_MODULE_APP, "poll_rx_num is %d,resp_tx_num is %d\r\n",poll_rx_num,resp_tx_num);
        temp_count= phy_timer_count_get();
        temp_internal=temp_count;
        resp_tx_num++;
        LOG_INFO(TRACE_MODULE_APP, "poll_rx_num is %d,resp_tx_num is %d\r\n",poll_rx_num,resp_tx_num);
    }
}
uint32_t start_receive_count,end_receive_count,poll_timeout,current_count,temp_resp;
@@ -262,77 +262,77 @@
void PushAnchorDataArray(uint16_t ancid,uint16_t dist,uint8_t battary)
{
    uint8_t i;
    for(i=0;i<anchordata_num;i++)
    for(i=0; i<anchordata_num; i++)
    {
        if(anchordata_id[i] == ancid)//查询标签是否在自己已通讯列表中
        {
            break;
        }
    }
    if(i==anchordata_num)
    {
        if(anchordata_num<TAG_NUM_IN_SYS-1)
        anchordata_num++;
            anchordata_num++;
    }
    anchordata_id[i] = ancid;//与之通信的标签id存入当前表中
    anchordata_dist[i] = dist;
    anchordata_bat[i] = battary;
    anchordata_bat[i] = battary;
}
uint16_t CmpTagInList(uint16_t tagid)
{uint16_t i;
    for(i=0;i<taglist_num;i++)
    {
        if(memcmp(&tagid,&anchordata_id[i],2)==0)
            break;
    }
    if(i==taglist_num)
        return taglist_num;
{   uint16_t i;
    for(i=0; i<taglist_num; i++)
    {
        if(memcmp(&tagid,&anchordata_id[i],2)==0)
            break;
    }
    if(i==taglist_num)
        return taglist_num;
    //tagofflinetime[i] = 0;
    return i;
    return i;
}
static void resp_msg_set_ts(uint8_t *ts_field, int64_t ts)
{
    int i,ts2;
        ts2=(int32_t)ts;
    ts2=(int32_t)ts;
    for (i = 0; i < 4; i++)
    {
    ts_field[i] = (uint8_t)ts2;
    ts2 >>= 8;
        ts_field[i] = (uint8_t)ts2;
        ts2 >>= 8;
    }
}
uint8_t Anchor_RecNearPoll(uint8_t ancrec_nearbasepos)//根据自己是否为新基站定制消息去发送,根据是否抢占判断
{
            temp_count2=poll_rx_en_start_u32;
            memcpy(&send_buffer[GROUP_ID_IDX],&group_id,1);//组id
            memcpy(&send_buffer[ANCHOR_ID_IDX],&dev_id,2);//自身id
            memcpy(&send_buffer[TAG_ID_IDX],&tag_id_recv,2);//接受者id
            send_buffer[MESSAGE_TYPE_IDX]=MBX_RESPONSE;
    temp_count2=poll_rx_en_start_u32;
    memcpy(&send_buffer[GROUP_ID_IDX],&group_id,1);//组id
    memcpy(&send_buffer[ANCHOR_ID_IDX],&dev_id,2);//自身id
    memcpy(&send_buffer[TAG_ID_IDX],&tag_id_recv,2);//接受者id
    send_buffer[MESSAGE_TYPE_IDX]=MBX_RESPONSE;
    if(rec_nearbase_num == ancrec_nearbasepos)//抢占模式自己为新基站
    {
        random_time = (phy_timer_count_get()%1000);//多基站抢占一个位置时避免一个也收不到的情况就每一个随机错开几十uS
        //resp_tx_time = (poll_rx_ts+((random_time+rec_nearbase_num*20 + POLL_RX_TO_RESP_TX_DLY_UUS+ancrec_nearbasepos*DELAY_BETWEEN_TWO_FRAME_UUS) * UUS_TO_DWT_TIME)) >> 8;//计算Response发送时间T3。
            // (resp_tx_en_start_u32) is the moment when TX enable
       resp_tx_en_start_u32 = random_time+poll_rx_en_start_u32+ US_TO_PHY_TIMER_COUNT(POLL_RX_TO_RESP_TX_DLY_US)+rec_nearbase_num*US_TO_PHY_TIMER_COUNT(DELAY_BETWEEN_TWO_FRAME_UUS);//后面的需要根据已有基站数量进行更改,如果是抢占自己最后一个回复,要有底数
    }else{
              //resp_tx_time = (poll_rx_ts + ((rec_nearbase_num*20+POLL_RX_TO_RESP_TX_DLY_UUS+ancrec_nearbasepos*DELAY_BETWEEN_TWO_FRAME_UUS) * UUS_TO_DWT_TIME)) >> 8;//计算Response发送时间T3。
             resp_tx_en_start_u32 = poll_rx_en_start_u32 + US_TO_PHY_TIMER_COUNT(POLL_RX_TO_RESP_TX_DLY_US)+(ancrec_nearbasepos+1)*US_TO_PHY_TIMER_COUNT(DELAY_BETWEEN_TWO_FRAME_UUS);//后面的需要根据已有基站数量进行更改,自己非抢占
        // (resp_tx_en_start_u32) is the moment when TX enable
        resp_tx_en_start_u32 = random_time+poll_rx_en_start_u32+ US_TO_PHY_TIMER_COUNT(POLL_RX_TO_RESP_TX_DLY_US)+rec_nearbase_num*US_TO_PHY_TIMER_COUNT(DELAY_BETWEEN_TWO_FRAME_UUS);//后面的需要根据已有基站数量进行更改,如果是抢占自己最后一个回复,要有底数
    } else {
        //resp_tx_time = (poll_rx_ts + ((rec_nearbase_num*20+POLL_RX_TO_RESP_TX_DLY_UUS+ancrec_nearbasepos*DELAY_BETWEEN_TWO_FRAME_UUS) * UUS_TO_DWT_TIME)) >> 8;//计算Response发送时间T3。
        resp_tx_en_start_u32 = poll_rx_en_start_u32 + US_TO_PHY_TIMER_COUNT(POLL_RX_TO_RESP_TX_DLY_US)+(ancrec_nearbasepos+1)*US_TO_PHY_TIMER_COUNT(DELAY_BETWEEN_TWO_FRAME_UUS);//后面的需要根据已有基站数量进行更改,自己非抢占
    }//此处设置绝对时间将poll u32改为phy_timer_count_get()
        resp_tx_ts_i64 = ranging_tx_time_correct(resp_tx_en_start_u32 + phy_shr_duration());//修正时间戳
            /* Write all timestamps in the final message. See NOTE 8 below. */
     resp_msg_set_ts(&send_buffer[RESP_MSG_POLL_RX_TS_IDX], poll_rx_ts_i64);
         resp_msg_set_ts(&send_buffer[RESP_MSG_RESP_TX_TS_IDX], resp_tx_ts_i64);//此处时间戳int64直接转换为uint64不知道会不会有错误
     memcpy(&send_buffer[RESP_MSG_ANC_DISTOFFSET],&disoffset,2);//差个修正offset,修正有符号但是这个com表为无符号的,传过去直接赋给Int16_t相当于还原了
        temp_resp_i64=resp_tx_ts_i64;
        temp_count3= phy_timer_count_get();
        temp_flag=uwb_tx(send_buffer, 40,1 ,resp_tx_en_start_u32);//立即发送测试size大小
        temp_count1=phy_timer_count_get();
        while(mac_is_busy());
    resp_tx_ts_i64 = ranging_tx_time_correct(resp_tx_en_start_u32 + phy_shr_duration());//修正时间戳
    /* Write all timestamps in the final message. See NOTE 8 below. */
    resp_msg_set_ts(&send_buffer[RESP_MSG_POLL_RX_TS_IDX], poll_rx_ts_i64);
    resp_msg_set_ts(&send_buffer[RESP_MSG_RESP_TX_TS_IDX], resp_tx_ts_i64);//此处时间戳int64直接转换为uint64不知道会不会有错误
    memcpy(&send_buffer[RESP_MSG_ANC_DISTOFFSET],&disoffset,2);//差个修正offset,修正有符号但是这个com表为无符号的,传过去直接赋给Int16_t相当于还原了
    temp_resp_i64=resp_tx_ts_i64;
    temp_count3= phy_timer_count_get();
    temp_flag=uwb_tx(send_buffer, 40,1 ,resp_tx_en_start_u32);//立即发送测试size大小
    temp_count1=phy_timer_count_get();
    while(mac_is_busy());
}
int simple_main(void)
{
@@ -348,7 +348,7 @@
        .thres_fap_detect = 40,
        .nth_scale_factor = 4,
        .ranging_performance_mode = 0,
         .skip_weakest_port_en = 0,
        .skip_weakest_port_en = 0,
    };
    phy_adv_params_configure(&adv_config);
@@ -359,19 +359,19 @@
    // Register rx interrupt callback function
    mac_register_process_handler(tx_int_callback, rx_int_callback);
        //#if LOW_POWER_EN
    //#if LOW_POWER_EN
//    // Initialize low power mode
//    power_init();
//    // Enable sleep timer
//    sleep_timer_open(true, SLEEP_TIMER_MODE_ONESHOT, NULL);
//#endif
            uint8_t i;
            uint16_t tempid;
        temp_count3=phy_timer_count_get();
        uwb_rx(0, 0, RX_SYNC_WIN_US);//开启接收
        while(mac_is_busy());
        temp_count2=phy_timer_count_get();
    uint8_t i;
    uint16_t tempid;
    temp_count3=phy_timer_count_get();
    uwb_rx(0, 0, RX_SYNC_WIN_US);//开启接收
    while(mac_is_busy());
    temp_count2=phy_timer_count_get();
//        start_receive_count=phy_timer_count_get();
//    poll_timeout=rec_nearbase_num*US_TO_PHY_TIMER_COUNT(DELAY_BETWEEN_TWO_FRAME_UUS)+US_TO_PHY_TIMER_COUNT(DELAY_DEFAULT);//多一个多0.4ms默认0.4ms计算为0.125*4*100000,默认开启1mss
//    end_receive_count=start_receive_count+poll_timeout;
@@ -380,49 +380,49 @@
//    current_count=phy_timer_count_get();
//        while(current_count<end_receive_count||current_count>end_receive_count+HALF_SECOND_TIME)//循环接受包体,若为124.8K则是+62400000
//        {
        if(receive_flag==1)//成功接收
        {
            if(group_id==rx_buf[GROUP_ID_IDX]&&rx_buf[MESSAGE_TYPE_IDX] == MBX_POLL)//判断是否是和自己是同一组通讯的且为poll包
            {      temp_count2=phy_timer_count_get();
                frame_seq_nb2 = rx_buf[SEQUENCE_IDX];//获取包序
                battary = rx_buf[BATTARY_IDX];
                rec_nearbase_num=rx_buf[FZ_NEARBASENUM_INDEX];  //标签传过来的他与基站交互的基站id数目
                                memcpy(&tag_id_recv,&rx_buf[TAG_ID_IDX],2);
                memcpy(rec_ancidlist,&rx_buf[FZ_NEARBASEID_INDEX],2*rec_nearbase_num);
                memcpy(rec_ancdistlist,&rx_buf[FZ_NEARBASEID_INDEX+2*rec_nearbase_num],2*rec_nearbase_num);
                memcpy(&rec_antdelay,&rx_buf[FZ_NEARBASEID_INDEX+rec_nearbase_num*4],2);
                for(i=0;i<rec_nearbase_num;i++)
    if(receive_flag==1)//成功接收
    {
        if(group_id==rx_buf[GROUP_ID_IDX]&&rx_buf[MESSAGE_TYPE_IDX] == MBX_POLL)//判断是否是和自己是同一组通讯的且为poll包
        {   temp_count2=phy_timer_count_get();
            frame_seq_nb2 = rx_buf[SEQUENCE_IDX];//获取包序
            battary = rx_buf[BATTARY_IDX];
            rec_nearbase_num=rx_buf[FZ_NEARBASENUM_INDEX];  //标签传过来的他与基站交互的基站id数目
            memcpy(&tag_id_recv,&rx_buf[TAG_ID_IDX],2);
            memcpy(rec_ancidlist,&rx_buf[FZ_NEARBASEID_INDEX],2*rec_nearbase_num);
            memcpy(rec_ancdistlist,&rx_buf[FZ_NEARBASEID_INDEX+2*rec_nearbase_num],2*rec_nearbase_num);
            memcpy(&rec_antdelay,&rx_buf[FZ_NEARBASEID_INDEX+rec_nearbase_num*4],2);
            for(i=0; i<rec_nearbase_num; i++)
            {
                if(rec_ancidlist[i] == dev_id)
                {
                    if(rec_ancidlist[i] == dev_id)
                    {
                        PushAnchorDataArray(tag_id_recv,rec_ancdistlist[i],battary);
                    }
                    PushAnchorDataArray(tag_id_recv,rec_ancdistlist[i],battary);
                }
                for(i=0;i<rec_nearbase_num;i++)
                {
                     memcpy(&tempid,&rx_buf[FZ_NEARBASEID_INDEX+i*2],2);
                    if(tempid==dev_id)//也是比id如果有就更新没有就抢占
                    {
                        seize_anchor=0;  //非抢占。已存在列表中
                        Anchor_RecNearPoll(i);
                        break;
                    }
                }
                    if(i==rec_nearbase_num)
                    {
                        seize_anchor=1;   //抢占anchor
                        Anchor_RecNearPoll(i);
                    }
            }
            }else if (receive_flag==2)//接受失败
        {
            }
            for(i=0; i<rec_nearbase_num; i++)
            {
                memcpy(&tempid,&rx_buf[FZ_NEARBASEID_INDEX+i*2],2);
                if(tempid==dev_id)//也是比id如果有就更新没有就抢占
                {
                    seize_anchor=0;  //非抢占。已存在列表中
                    Anchor_RecNearPoll(i);
                    break;
                }
            }
            if(i==rec_nearbase_num)
            {
                seize_anchor=1;   //抢占anchor
                Anchor_RecNearPoll(i);
            }
        }
    } else if (receive_flag==2)//接受失败
    {
//        //清除错误标志位重新开启接收进行同步
//        uwb_rx(0, 0, RX_SYNC_WIN_US);//开启接收
//        while(mac_is_busy());
        }
        //receive_flag=0;
    }
    //receive_flag=0;
}
@@ -441,7 +441,7 @@
        .thres_fap_detect = 40,
        .nth_scale_factor = 4,
        .ranging_performance_mode = 0,
         .skip_weakest_port_en = 0,
        .skip_weakest_port_en = 0,
    };
    phy_adv_params_configure(&adv_config);
@@ -452,61 +452,61 @@
    // Register rx interrupt callback function
    mac_register_process_handler(tx_int_callback, rx_int_callback);
        //#if LOW_POWER_EN
    //#if LOW_POWER_EN
//    // Initialize low power mode
//    power_init();
//    // Enable sleep timer
//    sleep_timer_open(true, SLEEP_TIMER_MODE_ONESHOT, NULL);
//#endif
            uint8_t i;
            uint16_t tempid;
        temp_count3=phy_timer_count_get();
        uwb_rx(0, 0, RX_SYNC_WIN_US_TEMP);//开启接收
        while(mac_is_busy());
        temp_count2=phy_timer_count_get();
        if(receive_flag==1)//成功接收
        {
            if(group_id==rx_buf[GROUP_ID_IDX]&&rx_buf[MESSAGE_TYPE_IDX] == MBX_POLL)//判断是否是和自己是同一组通讯的且为poll包
            {      temp_count2=phy_timer_count_get();
                frame_seq_nb2 = rx_buf[SEQUENCE_IDX];//获取包序
                battary = rx_buf[BATTARY_IDX];
                rec_nearbase_num=rx_buf[FZ_NEARBASENUM_INDEX];  //标签传过来的他与基站交互的基站id数目
                                memcpy(&tag_id_recv,&rx_buf[TAG_ID_IDX],2);
                memcpy(rec_ancidlist,&rx_buf[FZ_NEARBASEID_INDEX],2*rec_nearbase_num);
                memcpy(rec_ancdistlist,&rx_buf[FZ_NEARBASEID_INDEX+2*rec_nearbase_num],2*rec_nearbase_num);
                memcpy(&rec_antdelay,&rx_buf[FZ_NEARBASEID_INDEX+rec_nearbase_num*4],2);
                for(i=0;i<rec_nearbase_num;i++)
    uint8_t i;
    uint16_t tempid;
    temp_count3=phy_timer_count_get();
    uwb_rx(0, 0, RX_SYNC_WIN_US_TEMP);//开启接收
    while(mac_is_busy());
    temp_count2=phy_timer_count_get();
    if(receive_flag==1)//成功接收
    {
        if(group_id==rx_buf[GROUP_ID_IDX]&&rx_buf[MESSAGE_TYPE_IDX] == MBX_POLL)//判断是否是和自己是同一组通讯的且为poll包
        {   temp_count2=phy_timer_count_get();
            frame_seq_nb2 = rx_buf[SEQUENCE_IDX];//获取包序
            battary = rx_buf[BATTARY_IDX];
            rec_nearbase_num=rx_buf[FZ_NEARBASENUM_INDEX];  //标签传过来的他与基站交互的基站id数目
            memcpy(&tag_id_recv,&rx_buf[TAG_ID_IDX],2);
            memcpy(rec_ancidlist,&rx_buf[FZ_NEARBASEID_INDEX],2*rec_nearbase_num);
            memcpy(rec_ancdistlist,&rx_buf[FZ_NEARBASEID_INDEX+2*rec_nearbase_num],2*rec_nearbase_num);
            memcpy(&rec_antdelay,&rx_buf[FZ_NEARBASEID_INDEX+rec_nearbase_num*4],2);
            for(i=0; i<rec_nearbase_num; i++)
            {
                if(rec_ancidlist[i] == dev_id)
                {
                    if(rec_ancidlist[i] == dev_id)
                    {
                        PushAnchorDataArray(tag_id_recv,rec_ancdistlist[i],battary);
                    }
                    PushAnchorDataArray(tag_id_recv,rec_ancdistlist[i],battary);
                }
                for(i=0;i<rec_nearbase_num;i++)
                {
                     memcpy(&tempid,&rx_buf[FZ_NEARBASEID_INDEX+i*2],2);
                    if(tempid==dev_id)//也是比id如果有就更新没有就抢占
                    {
                        seize_anchor=0;  //非抢占。已存在列表中
                        Anchor_RecNearPoll(i);
                        break;
                    }
                }
                    if(i==rec_nearbase_num)
                    {
                        seize_anchor=1;   //抢占anchor
                        Anchor_RecNearPoll(i);
                    }
            }
            return 1;//返回发送成功标志
            }else if (receive_flag==2)//接受失败
        {
        return 0;//返回绑定失败标志
        }
        //receive_flag=0;
            }
            for(i=0; i<rec_nearbase_num; i++)
            {
                memcpy(&tempid,&rx_buf[FZ_NEARBASEID_INDEX+i*2],2);
                if(tempid==dev_id)//也是比id如果有就更新没有就抢占
                {
                    seize_anchor=0;  //非抢占。已存在列表中
                    Anchor_RecNearPoll(i);
                    break;
                }
            }
            if(i==rec_nearbase_num)
            {
                seize_anchor=1;   //抢占anchor
                Anchor_RecNearPoll(i);
            }
        }
        return 1;//返回发送成功标志
    } else if (receive_flag==2)//接受失败
    {
        return 0;//返回绑定失败标志
    }
    //receive_flag=0;
}
//}
#endif
keil/sn74hc595.c
@@ -3,61 +3,61 @@
void IO_control_init(void)
{
//SDA->SER
io_open_drain_set(SER_PIN, 0);
io_pin_mux_set(SER_PIN,IO_FUNC0);//把原先io SDA变为普通GPIO
gpio_pin_set_dir(SER_PIN , GPIO_DIR_OUT, 0);//复用原先GPIO引脚为SER
io_pull_set(SER_PIN , IO_PULL_DOWN, IO_PULL_UP_LEVEL4);
    io_open_drain_set(SER_PIN, 0);
    io_pin_mux_set(SER_PIN,IO_FUNC0);//把原先io SDA变为普通GPIO
    gpio_pin_set_dir(SER_PIN , GPIO_DIR_OUT, 0);//复用原先GPIO引脚为SER
    io_pull_set(SER_PIN , IO_PULL_DOWN, IO_PULL_UP_LEVEL4);
//SRCLK
io_pin_mux_set(SRCLK_PIN,IO_FUNC0);
gpio_pin_set_dir(SRCLK_PIN , GPIO_DIR_OUT, 0);
io_pull_set(SRCLK_PIN , IO_PULL_DOWN, IO_PULL_UP_LEVEL4);
    io_pin_mux_set(SRCLK_PIN,IO_FUNC0);
    gpio_pin_set_dir(SRCLK_PIN , GPIO_DIR_OUT, 0);
    io_pull_set(SRCLK_PIN , IO_PULL_DOWN, IO_PULL_UP_LEVEL4);
//RCLK
io_pin_mux_set(RCLK_PIN,IO_FUNC0);
gpio_pin_set_dir(RCLK_PIN , GPIO_DIR_OUT, 0);
io_pull_set(RCLK_PIN , IO_PULL_DOWN, IO_PULL_UP_LEVEL4);
    io_pin_mux_set(RCLK_PIN,IO_FUNC0);
    gpio_pin_set_dir(RCLK_PIN , GPIO_DIR_OUT, 0);
    io_pull_set(RCLK_PIN , IO_PULL_DOWN, IO_PULL_UP_LEVEL4);
}
void IO_LED_control_change(uint8_t data)
{
for(int i=0;i<8;i++){
    uint8_t temp=data&1;
    if(temp)//写入低位数据
        SER_1;
    else
        SER_0;
    SRCLK_1;//将数据放入移位寄存器
    SRCLK_0;
    data>>=1;
}
RCLK_1;//将数据存入存储器并输出
RCLK_0;
    for(int i=0; i<8; i++) {
        uint8_t temp=data&1;
        if(temp)//写入低位数据
            SER_1;
        else
            SER_0;
        SRCLK_1;//将数据放入移位寄存器
        SRCLK_0;
        data>>=1;
    }
    RCLK_1;//将数据存入存储器并输出
    RCLK_0;
}
//高电平开启power,低电平关闭power
void gps_air780_power_change(uint8_t gps_state,uint8_t air_state)
{
gps_power_state=gps_state;
air780_power_state=air_state;
updata_led_power_state();//更新控制引脚
    gps_power_state=gps_state;
    air780_power_state=air_state;
    update_led_power_state();//更新控制引脚
}
void updata_led_power_state(void)
void update_led_power_state(void)
{
uint8_t control_state=air780_power_state<<7|gps_power_state<<6|motor_power_state<<5|uwb_state<<4|gps_success_state<<3|air780_success_state<<2|chaging_state<<1|changed_state;
IO_LED_control_change(control_state);
    uint8_t control_state=air780_power_state<<7|gps_power_state<<6|motor_power_state<<5|uwb_state<<4|gps_success_state<<3|air780_success_state<<2|chaging_state<<1|changed_state;
    IO_LED_control_change(control_state);
}
void blink_led(uint8_t*state)
{*state=~*state;
updata_led_power_state();
delay_us(100);
*state=~*state;
updata_led_power_state();
{   *state=~*state;
    update_led_power_state();
    delay_us(100);
    *state=~*state;
    update_led_power_state();
}
void uwb_led_on(void)
{
        uwb_state=1;//uwb亮起
        updata_led_power_state();
    uwb_state=1;//uwb亮起
    update_led_power_state();
}
void uwb_led_off(void)
{
        uwb_state=0;//uwb灭
        updata_led_power_state();
    uwb_state=0;//uwb灭
    update_led_power_state();
}
keil/sn74hc595.h
@@ -9,8 +9,8 @@
void gps_air780_power_change(uint8_t gps_state,uint8_t air_state);
void IO_LED_control_change(uint8_t data);
void IO_control_init(void);
void updata_led_power_state(void);
void blink_led(uint8_t*state);
void update_led_power_state(void);
void uwb_led_off(void);
void uwb_led_on(void);
extern uint8_t gps_power_state,motor_power_state,uwb_state,air780_power_state,gps_success_state,chaging_state,changed_state,air780_success_state;
keil/uwb_simple_example.uvguix.zhyin
@@ -15,17 +15,17 @@
    <View>
      <WinId>38003</WinId>
      <ViewName>Registers</ViewName>
      <TableColWidths>140 100</TableColWidths>
      <TableColWidths>184 184</TableColWidths>
    </View>
    <View>
      <WinId>346</WinId>
      <ViewName>Code Coverage</ViewName>
      <TableColWidths>1010 656</TableColWidths>
      <TableColWidths>1010 164</TableColWidths>
    </View>
    <View>
      <WinId>204</WinId>
      <ViewName>Performance Analyzer</ViewName>
      <TableColWidths>1170 175 175 146</TableColWidths>
      <TableColWidths>1170 175 175 100</TableColWidths>
    </View>
  </SECTreeCtrl>
@@ -46,7 +46,7 @@
      <WinId>1936</WinId>
      <ViewName>Watch 1</ViewName>
      <UserString></UserString>
      <TableColWidths>200 133 133</TableColWidths>
      <TableColWidths>200 184 133</TableColWidths>
    </View>
    <View>
      <WinId>1937</WinId>
@@ -70,7 +70,7 @@
      <WinId>466</WinId>
      <ViewName>Source Browser</ViewName>
      <UserString>500</UserString>
      <TableColWidths>300</TableColWidths>
      <TableColWidths>166</TableColWidths>
    </View>
  </TreeListPane>
@@ -93,8 +93,8 @@
      <flags>2</flags>
      <showCmd>3</showCmd>
      <MinPosition>
        <xPos>-1</xPos>
        <yPos>-1</yPos>
        <xPos>-32000</xPos>
        <yPos>-32000</yPos>
      </MinPosition>
      <MaxPosition>
        <xPos>-1</xPos>
@@ -110,8 +110,8 @@
    <MDIClientArea>
      <RegID>0</RegID>
      <MDITabState>
        <Len>1325</Len>
        <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000E000000040000000100000023453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C6D6B5F34472E6300000000076D6B5F34472E6300000000C5D4F200FFFFFFFF2F453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C6D61696E5C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF46453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C636F6D706F6E656E74735C696E7465726E65745C7372635C496E7465726E65742E63000000000A496E7465726E65742E6300000000BECEA100FFFFFFFF44453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C636F6D706F6E656E74735C696E7465726E65745C7372635C536F636B65742E630000000008536F636B65742E6300000000F0A0A100FFFFFFFF3B453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C6C69733364685F6472697665722E63000000000F6C69733364685F6472697665722E6300000000BCA8E100FFFFFFFF3B453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C6C69733364685F6472697665722E68000000000F6C69733364685F6472697665722E68000000009CC1B600FFFFFFFF4B453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C636F6D706F6E656E74735C696E7465726E65745C7372635C414952373830454472697665722E63000000000F414952373830454472697665722E6300000000F7B88600FFFFFFFF36453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C6D6B5F74726163652E63000000000A6D6B5F74726163652E6300000000D9ADC200FFFFFFFF24453A5C4749545C4368696E6155574250726F6A6563745C757365725F636F6E6669672E68000000000D757365725F636F6E6669672E6800000000A5C2D700FFFFFFFF35453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C6D6B5F6770696F2E6300000000096D6B5F6770696F2E6300000000B3A6BE00FFFFFFFF33453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C55736172742E63000000000755736172742E6300000000EAD6A300FFFFFFFF39453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C636F6D706F6E656E74735C68616C5C554152542E630000000006554152542E6300000000F6FA7D00FFFFFFFF33453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C6D6B5F696F2E6800000000076D6B5F696F2E6800000000B5E99D00FFFFFFFF33453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C6D6B5F696F2E6300000000076D6B5F696F2E63000000005FC3CF00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000069030000</Data>
        <Len>3165</Len>
        <Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000023000000010000000100000023453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C6D6B5F34472E6300000000076D6B5F34472E6300000000C5D4F200FFFFFFFF2F453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C6D61696E5C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF46453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C636F6D706F6E656E74735C696E7465726E65745C7372635C496E7465726E65742E63000000000A496E7465726E65742E6300000000BECEA100FFFFFFFF44453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C636F6D706F6E656E74735C696E7465726E65745C7372635C536F636B65742E630000000008536F636B65742E6300000000F0A0A100FFFFFFFF3B453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C6C69733364685F6472697665722E63000000000F6C69733364685F6472697665722E6300000000BCA8E100FFFFFFFF3B453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C6C69733364685F6472697665722E68000000000F6C69733364685F6472697665722E68000000009CC1B600FFFFFFFF4B453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C636F6D706F6E656E74735C696E7465726E65745C7372635C414952373830454472697665722E63000000000F414952373830454472697665722E6300000000F7B88600FFFFFFFF36453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C6D6B5F74726163652E63000000000A6D6B5F74726163652E6300000000D9ADC200FFFFFFFF24453A5C4749545C4368696E6155574250726F6A6563745C757365725F636F6E6669672E68000000000D757365725F636F6E6669672E6800000000A5C2D700FFFFFFFF35453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C6D6B5F6770696F2E6300000000096D6B5F6770696F2E6300000000B3A6BE00FFFFFFFF33453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C55736172742E63000000000755736172742E6300000000EAD6A300FFFFFFFF39453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C636F6D706F6E656E74735C68616C5C554152542E630000000006554152542E6300000000F6FA7D00FFFFFFFF33453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C6D6B5F696F2E6800000000076D6B5F696F2E6800000000B5E99D00FFFFFFFF33453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C6D6B5F696F2E6300000000076D6B5F696F2E63000000005FC3CF00FFFFFFFF31453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C626F6172645C626F6172642E630000000007626F6172642E6300000000C1838300FFFFFFFF27453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C736E373468633539352E63000000000B736E373468633539352E6300000000CACAD500FFFFFFFF35453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C6D6B5F6770696F2E6800000000096D6B5F6770696F2E6800000000C5D4F200FFFFFFFF4A453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C646576696365735C4D4B383030585C536F757263655C737461727475705F4D4B383030582E630000000010737461727475705F4D4B383030582E6300000000FFDC7800FFFFFFFF34453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C6D6B5F7577622E6300000000086D6B5F7577622E6300000000BECEA100FFFFFFFF48453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C636F6D706F6E656E74735C696E7465726E65745C7372635C4149523738304546534D2E63000000000C4149523738304546534D2E6300000000F0A0A100FFFFFFFF49453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C636F6D706F6E656E74735C6869646F5C496E636C7564655C4849444F5F41544C6974652E68000000000D4849444F5F41544C6974652E6800000000BCA8E100FFFFFFFF35453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C6D6B5F756172742E6800000000096D6B5F756172742E68000000009CC1B600FFFFFFFF33453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C73696D706C655F73735F7477725F64775F726573702E63000000001773696D706C655F73735F7477725F64775F726573702E6300000000F7B88600FFFFFFFF3F453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C73657269616C5F61745F636D645F6170702E63000000001373657269616C5F61745F636D645F6170702E6300000000D9ADC200FFFFFFFF46453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C636F6D706F6E656E74735C696E7465726E65745C696E635C496E7465726E65742E68000000000A496E7465726E65742E6800000000A5C2D700FFFFFFFF4B453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C636F6D706F6E656E74735C696E7465726E65745C696E635C414952373830454472697665722E68000000000F414952373830454472697665722E6800000000B3A6BE00FFFFFFFF27453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C736E373468633539352E68000000000B736E373468633539352E6800000000EAD6A300FFFFFFFF48453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C636F6D706F6E656E74735C6869646F5C496E636C7564655C4849444F5F54696D65722E68000000000C4849444F5F54696D65722E6800000000F6FA7D00FFFFFFFF39453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C636F6D706F6E656E74735C68616C5C554152542E680000000006554152542E6800000000B5E99D00FFFFFFFF23453A5C4749545C4368696E6155574250726F6A6563745C70696E5F636F6E6669672E63000000000C70696E5F636F6E6669672E63000000005FC3CF00FFFFFFFF44453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C636F6D706F6E656E74735C696E7465726E65745C7372635C4D6F64756C652E6300000000084D6F64756C652E6300000000C1838300FFFFFFFF31453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C626F6172645C626F6172642E680000000007626F6172642E6800000000CACAD500FFFFFFFF36453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C6D6B5F74726163652E68000000000A6D6B5F74726163652E6800000000C5D4F200FFFFFFFF37453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C647269766572735C6D6B5F636F6D6D6F6E2E68000000000B6D6B5F636F6D6D6F6E2E6800000000FFDC7800FFFFFFFF46453A5C4749545C4368696E6155574250726F6A6563745C6B65696C5C696E636C7564655C636F6D706F6E656E74735C6869646F5C496E636C7564655C4849444F5F4C6F672E68000000000A4849444F5F4C6F672E6800000000BECEA100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F400000066000000800700000A030000</Data>
      </MDITabState>
    </MDIClientArea>
    <ViewEx>
@@ -150,7 +150,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000ED00000039030000</Data>
          <Data>0300000066000000ED000000DA020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -170,7 +170,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000ED00000039030000</Data>
          <Data>0300000066000000ED000000DA020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -306,7 +306,7 @@
        <IsActivated>0</IsActivated>
        <MRUWidth>32767</MRUWidth>
        <PinState>0</PinState>
        <RecentFrameAlignment>32768</RecentFrameAlignment>
        <RecentFrameAlignment>16384</RecentFrameAlignment>
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
@@ -450,7 +450,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000ED00000039030000</Data>
          <Data>0300000066000000ED000000DA020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -470,7 +470,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000ED00000039030000</Data>
          <Data>0300000066000000ED000000DA020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -490,7 +490,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>030000006D0300007D070000CD030000</Data>
          <Data>030000000E0300007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -530,7 +530,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>030000006D0300007D070000CD030000</Data>
          <Data>030000000E0300007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1150,7 +1150,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000ED00000039030000</Data>
          <Data>0300000066000000ED000000DA020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1170,7 +1170,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>030000006D0300007D070000CD030000</Data>
          <Data>030000000E0300007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1190,7 +1190,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>030000006D0300007D070000CD030000</Data>
          <Data>030000000E0300007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1250,7 +1250,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>030000006D0300007D070000CD030000</Data>
          <Data>030000000E0300007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1270,7 +1270,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>030000006D0300007D070000CD030000</Data>
          <Data>030000000E0300007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1799,14 +1799,14 @@
      </Window>
      <DockMan>
        <Len>3312</Len>
        <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000052030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000069030000000000004F000000F0000000520300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000520300008007000056030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000006D03000080070000FD030000000000005603000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
        <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000F3020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F00000000A030000000000004F000000F0000000F30200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000F302000080070000F70200000100000001000010040000000100000002FDFFFF8E000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000000E03000080070000FD03000000000000F702000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
      </DockMan>
      <ToolBar>
        <RegID>59392</RegID>
        <Name>File</Name>
        <Buttons>
          <Len>2818</Len>
          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000055344415F309600000000000000140004494E495400055344415F300854524143455F454E0C4241434B54524143455F454E075344415F50494E124C49533344485F47657457484F5F414D5F490C6770696F5F70696E5F736574055344415F31106770696F5F70696E5F6765745F76616C0D494943325F524541445F5344410A494D555F454E41424C4502B5CD04B5E7C1BF086275662066756C6C0B6275666665722066756C6C086275666666756C6C09627566662066756C6C0535B7D6D6D313666C61675F6C6F72615F776169745F73796E630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
          <Len>2727</Len>
          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001248656C6C6F2066726F6D204D4B53454D492196000000000000000B001248656C6C6F2066726F6D204D4B53454D49210D746573745F756172745F63666700084C4F475F494E464F074F475F494E464F0741542053656E640854524143455F454E18626F6172645F64656275675F636F6E736F6C655F6F70656E08455F55617274494415756172745F726563656976655F63616C6C6261636B0341545F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020000001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
        </Buttons>
        <OriginalItems>
          <Len>1423</Len>
@@ -1822,7 +1822,7 @@
        <Name>Build</Name>
        <Buttons>
          <Len>988</Len>
          <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000002001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000E4D4B383030302052656C65617365960000000000000001000E4D4B383030302052656C65617365000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
          <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000E4D4B383030302052656C65617365960000000000000001000E4D4B383030302052656C65617365000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
        </Buttons>
        <OriginalItems>
          <Len>583</Len>
@@ -1861,7 +1861,7 @@
      <Window>
        <RegID>-1</RegID>
        <PaneID>-1</PaneID>
        <IsVisible>1</IsVisible>
        <IsVisible>0</IsVisible>
        <IsFloating>0</IsFloating>
        <IsTabbed>0</IsTabbed>
        <IsActivated>0</IsActivated>
@@ -1871,11 +1871,11 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>F40000004F00000080070000DF000000</Data>
          <Data>F40000004F00000094050000DF000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>F40000006600000080070000F6000000</Data>
          <Data>F40000006600000094050000F6000000</Data>
        </RectRecentFloat>
      </Window>
      <Window>
@@ -1891,7 +1891,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000ED00000091020000</Data>
          <Data>030000006600000077010000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1911,7 +1911,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000ED00000091020000</Data>
          <Data>030000006600000077010000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1921,21 +1921,21 @@
      <Window>
        <RegID>1465</RegID>
        <PaneID>1465</PaneID>
        <IsVisible>1</IsVisible>
        <IsVisible>0</IsVisible>
        <IsFloating>0</IsFloating>
        <IsTabbed>0</IsTabbed>
        <IsActivated>0</IsActivated>
        <MRUWidth>32767</MRUWidth>
        <PinState>0</PinState>
        <RecentFrameAlignment>4096</RecentFrameAlignment>
        <RecentFrameAlignment>16384</RecentFrameAlignment>
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>C7030000C50200007D07000039030000</Data>
          <Data>6A0700004F0000004C090000E6030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>70000000870000003803000017010000</Data>
          <Data>EE05000023020000AA0900009B020000</Data>
        </RectRecentFloat>
      </Window>
      <Window>
@@ -1947,15 +1947,15 @@
        <IsActivated>0</IsActivated>
        <MRUWidth>32767</MRUWidth>
        <PinState>0</PinState>
        <RecentFrameAlignment>4096</RecentFrameAlignment>
        <RecentFrameAlignment>32768</RecentFrameAlignment>
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>C7030000C50200007D07000039030000</Data>
          <Data>9B050000660000007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>70000000870000003803000017010000</Data>
          <Data>EE05000023020000AA0900009B020000</Data>
        </RectRecentFloat>
      </Window>
      <Window>
@@ -1967,15 +1967,15 @@
        <IsActivated>0</IsActivated>
        <MRUWidth>32767</MRUWidth>
        <PinState>0</PinState>
        <RecentFrameAlignment>4096</RecentFrameAlignment>
        <RecentFrameAlignment>32768</RecentFrameAlignment>
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>C7030000C50200007D07000039030000</Data>
          <Data>9B050000660000007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>70000000870000003803000017010000</Data>
          <Data>EE05000023020000AA0900009B020000</Data>
        </RectRecentFloat>
      </Window>
      <Window>
@@ -1987,21 +1987,21 @@
        <IsActivated>0</IsActivated>
        <MRUWidth>32767</MRUWidth>
        <PinState>0</PinState>
        <RecentFrameAlignment>4096</RecentFrameAlignment>
        <RecentFrameAlignment>32768</RecentFrameAlignment>
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>C7030000C50200007D07000039030000</Data>
          <Data>9B050000660000007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>70000000870000003803000017010000</Data>
          <Data>EE05000023020000AA0900009B020000</Data>
        </RectRecentFloat>
      </Window>
      <Window>
        <RegID>1506</RegID>
        <PaneID>1506</PaneID>
        <IsVisible>0</IsVisible>
        <IsVisible>1</IsVisible>
        <IsFloating>0</IsFloating>
        <IsTabbed>0</IsTabbed>
        <IsActivated>0</IsActivated>
@@ -2011,7 +2011,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7A060000630000006A070000D6020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2031,7 +2031,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>F7000000660000007D070000C6000000</Data>
          <Data>F70000006600000091050000C6000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2041,21 +2041,21 @@
      <Window>
        <RegID>1935</RegID>
        <PaneID>1935</PaneID>
        <IsVisible>1</IsVisible>
        <IsVisible>0</IsVisible>
        <IsFloating>0</IsFloating>
        <IsTabbed>0</IsTabbed>
        <IsActivated>0</IsActivated>
        <MRUWidth>32767</MRUWidth>
        <PinState>0</PinState>
        <RecentFrameAlignment>32768</RecentFrameAlignment>
        <RecentFrameAlignment>16384</RecentFrameAlignment>
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>C7030000C50200007D07000039030000</Data>
          <Data>6A0700004F0000004C090000E6030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>70000000870000006001000052010000</Data>
          <Data>EE05000023020000AA0900009B020000</Data>
        </RectRecentFloat>
      </Window>
      <Window>
@@ -2067,15 +2067,15 @@
        <IsActivated>0</IsActivated>
        <MRUWidth>32767</MRUWidth>
        <PinState>0</PinState>
        <RecentFrameAlignment>4096</RecentFrameAlignment>
        <RecentFrameAlignment>16384</RecentFrameAlignment>
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>C7030000C50200007D07000039030000</Data>
          <Data>6A0700004F0000004C090000E6030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>70000000870000006001000052010000</Data>
          <Data>EE05000023020000AA0900009B020000</Data>
        </RectRecentFloat>
      </Window>
      <Window>
@@ -2087,15 +2087,15 @@
        <IsActivated>0</IsActivated>
        <MRUWidth>32767</MRUWidth>
        <PinState>0</PinState>
        <RecentFrameAlignment>4096</RecentFrameAlignment>
        <RecentFrameAlignment>32768</RecentFrameAlignment>
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>C7030000C50200007D07000039030000</Data>
          <Data>9B050000660000007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>70000000870000006001000052010000</Data>
          <Data>EE05000023020000AA0900009B020000</Data>
        </RectRecentFloat>
      </Window>
      <Window>
@@ -2107,15 +2107,15 @@
        <IsActivated>0</IsActivated>
        <MRUWidth>32767</MRUWidth>
        <PinState>0</PinState>
        <RecentFrameAlignment>4096</RecentFrameAlignment>
        <RecentFrameAlignment>32768</RecentFrameAlignment>
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>C7030000C50200007D07000039030000</Data>
          <Data>9B050000660000007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>70000000870000003803000017010000</Data>
          <Data>EE05000023020000AA0900009B020000</Data>
        </RectRecentFloat>
      </Window>
      <Window>
@@ -2127,15 +2127,15 @@
        <IsActivated>0</IsActivated>
        <MRUWidth>32767</MRUWidth>
        <PinState>0</PinState>
        <RecentFrameAlignment>4096</RecentFrameAlignment>
        <RecentFrameAlignment>32768</RecentFrameAlignment>
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>C7030000C50200007D07000039030000</Data>
          <Data>9B050000660000007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>70000000870000003803000017010000</Data>
          <Data>EE05000023020000AA0900009B020000</Data>
        </RectRecentFloat>
      </Window>
      <Window>
@@ -2147,15 +2147,15 @@
        <IsActivated>0</IsActivated>
        <MRUWidth>32767</MRUWidth>
        <PinState>0</PinState>
        <RecentFrameAlignment>4096</RecentFrameAlignment>
        <RecentFrameAlignment>32768</RecentFrameAlignment>
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>C7030000C50200007D07000039030000</Data>
          <Data>9B050000660000007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>70000000870000003803000017010000</Data>
          <Data>EE05000023020000AA0900009B020000</Data>
        </RectRecentFloat>
      </Window>
      <Window>
@@ -2167,15 +2167,15 @@
        <IsActivated>0</IsActivated>
        <MRUWidth>32767</MRUWidth>
        <PinState>0</PinState>
        <RecentFrameAlignment>4096</RecentFrameAlignment>
        <RecentFrameAlignment>32768</RecentFrameAlignment>
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>C7030000C50200007D07000039030000</Data>
          <Data>9B050000660000007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>70000000870000003803000017010000</Data>
          <Data>EE05000023020000AA0900009B020000</Data>
        </RectRecentFloat>
      </Window>
      <Window>
@@ -2191,7 +2191,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000ED00000091020000</Data>
          <Data>030000006600000077010000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2211,7 +2211,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000ED00000091020000</Data>
          <Data>030000006600000077010000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2231,7 +2231,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>030000006D0300007D070000CD030000</Data>
          <Data>030000006D03000067070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2251,7 +2251,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>00000000AE020000C003000052030000</Data>
          <Data>00000000DA0200006A07000052030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2271,7 +2271,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>000000006A03000080070000E6030000</Data>
          <Data>000000006A0300006A070000E6030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2281,7 +2281,7 @@
      <Window>
        <RegID>203</RegID>
        <PaneID>203</PaneID>
        <IsVisible>1</IsVisible>
        <IsVisible>0</IsVisible>
        <IsFloating>0</IsFloating>
        <IsTabbed>0</IsTabbed>
        <IsActivated>0</IsActivated>
@@ -2291,7 +2291,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>F40000006300000080070000DF000000</Data>
          <Data>F70000006600000091050000C6000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2311,7 +2311,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>F7000000660000007D070000C6000000</Data>
          <Data>F70000006600000091050000C6000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2351,7 +2351,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2367,15 +2367,15 @@
        <IsActivated>0</IsActivated>
        <MRUWidth>32767</MRUWidth>
        <PinState>0</PinState>
        <RecentFrameAlignment>4096</RecentFrameAlignment>
        <RecentFrameAlignment>32768</RecentFrameAlignment>
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>C7030000C50200007D07000039030000</Data>
          <Data>9B050000660000007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>70000000870000003803000017010000</Data>
          <Data>EE05000023020000AA0900009B020000</Data>
        </RectRecentFloat>
      </Window>
      <Window>
@@ -2391,7 +2391,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>F7000000660000007D070000C6000000</Data>
          <Data>F70000006600000091050000C6000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2411,7 +2411,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>F7000000660000007D070000C6000000</Data>
          <Data>F70000006600000091050000C6000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2431,7 +2431,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>F7000000660000007D070000C6000000</Data>
          <Data>F70000006600000091050000C6000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2451,7 +2451,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>F7000000660000007D070000C6000000</Data>
          <Data>F70000006600000091050000C6000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2471,7 +2471,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2491,7 +2491,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2511,7 +2511,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2531,7 +2531,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2551,7 +2551,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2571,7 +2571,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2591,7 +2591,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2611,7 +2611,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2631,7 +2631,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2651,7 +2651,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2671,7 +2671,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2691,7 +2691,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2711,7 +2711,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2731,7 +2731,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2751,7 +2751,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2771,7 +2771,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2791,7 +2791,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2811,7 +2811,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2831,7 +2831,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2851,7 +2851,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2871,7 +2871,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2891,7 +2891,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000ED00000091020000</Data>
          <Data>030000006600000077010000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2911,7 +2911,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>030000006D0300007D070000CD030000</Data>
          <Data>030000006D03000067070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2931,7 +2931,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>030000006D0300007D070000CD030000</Data>
          <Data>030000006D03000067070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2947,15 +2947,15 @@
        <IsActivated>0</IsActivated>
        <MRUWidth>32767</MRUWidth>
        <PinState>0</PinState>
        <RecentFrameAlignment>4096</RecentFrameAlignment>
        <RecentFrameAlignment>32768</RecentFrameAlignment>
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>C7030000C50200007D07000039030000</Data>
          <Data>9B050000660000007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>70000000870000006001000052010000</Data>
          <Data>EE05000023020000AA0900009B020000</Data>
        </RectRecentFloat>
      </Window>
      <Window>
@@ -2967,15 +2967,15 @@
        <IsActivated>0</IsActivated>
        <MRUWidth>32767</MRUWidth>
        <PinState>0</PinState>
        <RecentFrameAlignment>4096</RecentFrameAlignment>
        <RecentFrameAlignment>32768</RecentFrameAlignment>
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>C7030000C50200007D07000039030000</Data>
          <Data>9B050000660000007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>70000000870000006001000052010000</Data>
          <Data>EE05000023020000AA0900009B020000</Data>
        </RectRecentFloat>
      </Window>
      <Window>
@@ -2991,7 +2991,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>030000006D0300007D070000CD030000</Data>
          <Data>030000006D03000067070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3011,7 +3011,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>030000006D0300007D070000CD030000</Data>
          <Data>030000006D03000067070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3031,7 +3031,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>F7000000660000007D070000C6000000</Data>
          <Data>F70000006600000091050000C6000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3051,7 +3051,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3071,7 +3071,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3091,7 +3091,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3111,7 +3111,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3131,7 +3131,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3151,7 +3151,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3171,7 +3171,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3191,7 +3191,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3211,7 +3211,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3231,7 +3231,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3251,7 +3251,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3271,7 +3271,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3291,7 +3291,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3311,7 +3311,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3331,7 +3331,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3351,7 +3351,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3371,7 +3371,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3391,7 +3391,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3411,7 +3411,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3431,7 +3431,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>A3040000660000008D05000010020000</Data>
          <Data>7D0600006600000067070000BD020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3451,7 +3451,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0000000000000000D10300001C000000</Data>
          <Data>0200000000000000D30300001C000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3511,7 +3511,7 @@
        <RecentRowIndex>2</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>000000001C0000006F02000038000000</Data>
          <Data>020000001C0000007102000038000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3527,27 +3527,27 @@
        <IsActivated>0</IsActivated>
        <MRUWidth>32767</MRUWidth>
        <PinState>0</PinState>
        <RecentFrameAlignment>4096</RecentFrameAlignment>
        <RecentFrameAlignment>32768</RecentFrameAlignment>
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>C7030000C50200007D07000039030000</Data>
          <Data>9B050000660000007D070000CD030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>70000000870000006001000052010000</Data>
          <Data>EE05000023020000AA0900009B020000</Data>
        </RectRecentFloat>
      </Window>
      <DockMan>
        <Len>3311</Len>
        <Data>000000000B000000000000000020000001000000FFFFFFFFFFFFFFFFF4000000DF00000080070000E3000000010000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000001000000F40000006600000080070000F6000000F40000004F00000080070000DF0000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000AA020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F0000000C1020000000000004F000000F0000000AA0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF04000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF00000000AA02000080070000AE02000001000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000001000000C4030000C50200008007000069030000C4030000AE020000800700005203000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF000000000000000001000000000000000100000001000000FFFFFFFFC0030000AE020000C40300005203000001000000020000100400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000520300008007000056030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000006D03000080070000FD030000000000005603000080070000E60300000000000040820056060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
        <Len>3426</Len>
        <Data>000000000C000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000094050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000094050000F6000000F40000004F00000094050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000001000000FFFFFFFFFFFFFFFF760600004F0000007A060000D6020000010000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000010000007A060000660000006A070000ED0200007A0600004F0000006A070000D602000000000000404100562B0000000753796D626F6C7301000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF7A0100004F0000007E010000D60200000100000002000010040000000100000012FFFFFF7D050000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000007A010000ED020000000000004F0000007A010000D60200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF00000000D60200006A070000DA020000010000000100001004000000010000003EFEFFFF3F00000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFFC0030000DA020000C40300005203000000000000020000000400000000000000000000000000000000000000000000000000000001000000C600000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000520300006A07000056030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000006D0300006A070000FD03000000000000560300006A070000E60300000000000040820056060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000040000000000000FFFFFFFFFFFFFFFF940500004F00000098050000E603000000000000020000000400000001000000C3FCFFFF4403000000000000000000000000000001000000FFFFFFFF0C0000009307000094070000950700009607000091070000B5010000B801000038030000BA050000BB050000BC050000CB09000001800040000000000000980500006600000080070000FD030000980500004F00000080070000E603000000000000404100460C0000000755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFF9307000001000000FFFFFFFF9307000000000000030000008F07000000400000010000006A070000660000004C090000FD0300000100000000000000000000009007000000400000010000006A070000660000004C090000FD030000000000000000000001000000B905000000400000010000006A070000660000004C090000FD03000000000000010000000000000000000000</Data>
      </DockMan>
      <ToolBar>
        <RegID>59392</RegID>
        <Name>File</Name>
        <Buttons>
          <Len>2838</Len>
          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000854524143455F454E96000000000000001400055344415F300854524143455F454E0C4241434B54524143455F454E075344415F50494E124C49533344485F47657457484F5F414D5F490C6770696F5F70696E5F736574055344415F31106770696F5F70696E5F6765745F76616C0D494943325F524541445F5344410A494D555F454E41424C4502B5CD04B5E7C1BF086275662066756C6C0B6275666665722066756C6C086275666666756C6C09627566662066756C6C0535B7D6D6D313666C61675F6C6F72615F776169745F73796E630D5254434D5041434B44454C4159085557425F3131304B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000300150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
          <Len>2727</Len>
          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001248656C6C6F2066726F6D204D4B53454D492196000000000000000B001248656C6C6F2066726F6D204D4B53454D49210D746573745F756172745F63666700084C4F475F494E464F074F475F494E464F0741542053656E640854524143455F454E18626F6172645F64656275675F636F6E736F6C655F6F70656E08455F55617274494415756172745F726563656976655F63616C6C6261636B0341545F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
        </Buttons>
        <OriginalItems>
          <Len>1423</Len>
@@ -3579,7 +3579,7 @@
        <Name>Debug</Name>
        <Buttons>
          <Len>2362</Len>
          <Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
          <Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000004002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000004002800000000000000000000000000000000010000000100000001801B80000000000400290000000000000000000000000000000001000000010000000180E57F0000000004002A00000000000000000000000000000000010000000100000001801C800000000004002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000004002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020000002E0000000000000000000000000000000001000000010000000180E8880000020001003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
        </Buttons>
        <OriginalItems>
          <Len>898</Len>
@@ -3603,21 +3603,21 @@
    <ActiveMDIGroup>0</ActiveMDIGroup>
    <MDIGroup>
      <Size>100</Size>
      <ActiveTab>4</ActiveTab>
      <ActiveTab>1</ActiveTab>
      <Doc>
        <Name>.\mk_4G.c</Name>
        <ColumnNumber>4</ColumnNumber>
        <TopLine>1</TopLine>
        <CurrentLine>42</CurrentLine>
        <ColumnNumber>19</ColumnNumber>
        <TopLine>11</TopLine>
        <CurrentLine>43</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>.\include\main\main.c</Name>
        <ColumnNumber>13</ColumnNumber>
        <TopLine>282</TopLine>
        <CurrentLine>320</CurrentLine>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>320</TopLine>
        <CurrentLine>330</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
@@ -3625,26 +3625,26 @@
      <Doc>
        <Name>.\include\components\internet\src\Internet.c</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>72</TopLine>
        <CurrentLine>110</CurrentLine>
        <TopLine>41</TopLine>
        <CurrentLine>49</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>.\include\components\internet\src\Socket.c</Name>
        <ColumnNumber>29</ColumnNumber>
        <TopLine>35</TopLine>
        <CurrentLine>15</CurrentLine>
        <ColumnNumber>21</ColumnNumber>
        <TopLine>784</TopLine>
        <CurrentLine>821</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>.\include\drivers\lis3dh_driver.c</Name>
        <ColumnNumber>11</ColumnNumber>
        <TopLine>176</TopLine>
        <CurrentLine>205</CurrentLine>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>293</TopLine>
        <CurrentLine>300</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
@@ -3652,33 +3652,33 @@
      <Doc>
        <Name>include\drivers\lis3dh_driver.h</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>39</TopLine>
        <CurrentLine>53</CurrentLine>
        <TopLine>233</TopLine>
        <CurrentLine>265</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>.\include\components\internet\src\AIR780EDriver.c</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>219</TopLine>
        <CurrentLine>226</CurrentLine>
        <ColumnNumber>69</ColumnNumber>
        <TopLine>360</TopLine>
        <CurrentLine>370</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>.\include\drivers\mk_trace.c</Name>
        <ColumnNumber>12</ColumnNumber>
        <TopLine>43</TopLine>
        <CurrentLine>50</CurrentLine>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>1087</TopLine>
        <CurrentLine>1097</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\user_config.h</Name>
        <ColumnNumber>19</ColumnNumber>
        <ColumnNumber>16</ColumnNumber>
        <TopLine>59</TopLine>
        <CurrentLine>60</CurrentLine>
        <Folding>1</Folding>
@@ -3687,9 +3687,9 @@
      </Doc>
      <Doc>
        <Name>.\include\drivers\mk_gpio.c</Name>
        <ColumnNumber>1</ColumnNumber>
        <TopLine>62</TopLine>
        <CurrentLine>69</CurrentLine>
        <ColumnNumber>5</ColumnNumber>
        <TopLine>89</TopLine>
        <CurrentLine>108</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
@@ -3706,8 +3706,8 @@
      <Doc>
        <Name>.\include\components\hal\UART.c</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>366</TopLine>
        <CurrentLine>385</CurrentLine>
        <TopLine>424</TopLine>
        <CurrentLine>342</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
@@ -3715,7 +3715,7 @@
      <Doc>
        <Name>include\drivers\mk_io.h</Name>
        <ColumnNumber>13</ColumnNumber>
        <TopLine>85</TopLine>
        <TopLine>81</TopLine>
        <CurrentLine>105</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
@@ -3723,13 +3723,202 @@
      </Doc>
      <Doc>
        <Name>.\include\drivers\mk_io.c</Name>
        <ColumnNumber>82</ColumnNumber>
        <ColumnNumber>5</ColumnNumber>
        <TopLine>54</TopLine>
        <CurrentLine>83</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>.\include\board\board.c</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>88</TopLine>
        <CurrentLine>110</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>.\sn74hc595.c</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>23</TopLine>
        <CurrentLine>39</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>include\drivers\mk_gpio.h</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>55</TopLine>
        <CurrentLine>62</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>.\include\devices\MK800X\Source\startup_MK800X.c</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>232</TopLine>
        <CurrentLine>246</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>.\include\drivers\mk_uwb.c</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>698</TopLine>
        <CurrentLine>724</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>.\include\components\internet\src\AIR780EFSM.c</Name>
        <ColumnNumber>17</ColumnNumber>
        <TopLine>221</TopLine>
        <CurrentLine>253</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>include\components\hido\Include\HIDO_ATLite.h</Name>
        <ColumnNumber>10</ColumnNumber>
        <TopLine>71</TopLine>
        <CurrentLine>102</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>include\drivers\mk_uart.h</Name>
        <ColumnNumber>4</ColumnNumber>
        <TopLine>57</TopLine>
        <CurrentLine>83</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>.\simple_ss_twr_dw_resp.c</Name>
        <ColumnNumber>4</ColumnNumber>
        <TopLine>466</TopLine>
        <CurrentLine>337</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>.\include\drivers\serial_at_cmd_app.c</Name>
        <ColumnNumber>14</ColumnNumber>
        <TopLine>43</TopLine>
        <CurrentLine>44</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>include\components\internet\inc\Internet.h</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>1</TopLine>
        <CurrentLine>1</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>include\components\internet\inc\AIR780EDriver.h</Name>
        <ColumnNumber>16</ColumnNumber>
        <TopLine>2</TopLine>
        <CurrentLine>15</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>.\sn74hc595.h</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>1</TopLine>
        <CurrentLine>16</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>include\components\hido\Include\HIDO_Timer.h</Name>
        <ColumnNumber>46</ColumnNumber>
        <TopLine>1</TopLine>
        <CurrentLine>18</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>include\components\hal\UART.h</Name>
        <ColumnNumber>14</ColumnNumber>
        <TopLine>15</TopLine>
        <CurrentLine>44</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\pin_config.c</Name>
        <ColumnNumber>39</ColumnNumber>
        <TopLine>38</TopLine>
        <CurrentLine>53</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>.\include\components\internet\src\Module.c</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>316</TopLine>
        <CurrentLine>1</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>include\board\board.h</Name>
        <ColumnNumber>17</ColumnNumber>
        <TopLine>14</TopLine>
        <CurrentLine>44</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>include\drivers\mk_trace.h</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>88</TopLine>
        <CurrentLine>1</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>include\drivers\mk_common.h</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>154</TopLine>
        <CurrentLine>1</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>include\components\hido\Include\HIDO_Log.h</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>1</TopLine>
        <CurrentLine>1</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
    </MDIGroup>
  </MDIGroups>
keil/uwb_simple_example.uvoptx
@@ -120,7 +120,7 @@
        <SetRegEntry>
          <Number>0</Number>
          <Key>DLGUARM</Key>
          <Name>d</Name>
          <Name></Name>
        </SetRegEntry>
        <SetRegEntry>
          <Number>0</Number>
@@ -445,12 +445,57 @@
          <WinNumber>1</WinNumber>
          <ItemText>lisid</ItemText>
        </Ww>
        <Ww>
          <count>59</count>
          <WinNumber>1</WinNumber>
          <ItemText>nomove_count</ItemText>
        </Ww>
        <Ww>
          <count>60</count>
          <WinNumber>1</WinNumber>
          <ItemText>AIR780EDriver_FSMDebug</ItemText>
        </Ww>
        <Ww>
          <count>61</count>
          <WinNumber>1</WinNumber>
          <ItemText>u32Baud,0x0A</ItemText>
        </Ww>
        <Ww>
          <count>62</count>
          <WinNumber>1</WinNumber>
          <ItemText>uart_cfg</ItemText>
        </Ww>
        <Ww>
          <count>63</count>
          <WinNumber>1</WinNumber>
          <ItemText>l_astUartInfo</ItemText>
        </Ww>
        <Ww>
          <count>64</count>
          <WinNumber>1</WinNumber>
          <ItemText>_eUartID</ItemText>
        </Ww>
        <Ww>
          <count>65</count>
          <WinNumber>1</WinNumber>
          <ItemText>nomove_count</ItemText>
        </Ww>
        <Ww>
          <count>66</count>
          <WinNumber>1</WinNumber>
          <ItemText>l_astUartInfo[eUartID].m_u8RxValue</ItemText>
        </Ww>
        <Ww>
          <count>67</count>
          <WinNumber>1</WinNumber>
          <ItemText>l_astUartInfo</ItemText>
        </Ww>
      </WatchWindow1>
      <MemoryWindow1>
        <Mm>
          <WinNumber>1</WinNumber>
          <SubType>10</SubType>
          <ItemText>0x0402E000</ItemText>
          <ItemText>dev</ItemText>
          <AccSizeX>0</AccSizeX>
        </Mm>
      </MemoryWindow1>
@@ -460,7 +505,7 @@
      <DebugFlag>
        <trace>0</trace>
        <periodic>1</periodic>
        <aLwin>1</aLwin>
        <aLwin>0</aLwin>
        <aCover>0</aCover>
        <aSer1>0</aSer1>
        <aSer2>0</aSer2>
@@ -945,7 +990,7 @@
  <Group>
    <GroupName>Main</GroupName>
    <tvExp>1</tvExp>
    <tvExp>0</tvExp>
    <tvExpOptDlg>0</tvExpOptDlg>
    <cbSel>0</cbSel>
    <RteFlg>0</RteFlg>
@@ -1161,7 +1206,7 @@
  <Group>
    <GroupName>Simple</GroupName>
    <tvExp>0</tvExp>
    <tvExp>1</tvExp>
    <tvExpOptDlg>0</tvExpOptDlg>
    <cbSel>0</cbSel>
    <RteFlg>0</RteFlg>
@@ -1285,7 +1330,7 @@
  <Group>
    <GroupName>HidoLib</GroupName>
    <tvExp>1</tvExp>
    <tvExp>0</tvExp>
    <tvExpOptDlg>0</tvExpOptDlg>
    <cbSel>0</cbSel>
    <RteFlg>0</RteFlg>
keil/uwb_simple_example.uvprojx
@@ -313,7 +313,7 @@
          </ArmAdsMisc>
          <Cads>
            <interw>1</interw>
            <Optim>3</Optim>
            <Optim>1</Optim>
            <oTime>0</oTime>
            <SplitLS>0</SplitLS>
            <OneElfS>1</OneElfS>
@@ -339,7 +339,7 @@
              <MiscControls>-Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter</MiscControls>
              <Define>UWB_EN,STD_LIBC</Define>
              <Undefine></Undefine>
              <IncludePath>..;.\include\board;.\include\CMSIS\Include;.\include\components\algo\inc;.\include\components\crc;.\include\components\libc;.\include\components\wsf\include;.\include\components\wsf\include\platform;.\include\devices\MK800X\Include;.\include\drivers;.\include\components\hido\Include;.\include\components\internet\inc;.\include\components\hal</IncludePath>
              <IncludePath>..;.\include\board;.\include\CMSIS\Include;.\include\components\algo\inc;.\include\components\crc;.\include\components\libc;.\include\components\wsf\include;.\include\components\wsf\include\platform;.\include\devices\MK800X\Include;.\include\drivers;.\include\components\hido\Include;.\include\components\internet\inc;.\include\components\hal;..\keil</IncludePath>
            </VariousControls>
          </Cads>
          <Aads>
pin_config.c
@@ -49,25 +49,25 @@
    io_pin_mux_set(IO_PIN_6, IO_FUNC4);
//    // UART1 RX/TX已修改复用引脚为ADC留出空间调试串口
//    io_pin_mux_set(IO_PIN_10, IO_FUNC4);
//    io_pin_mux_set(IO_PIN_9, IO_FUNC4);
    io_pin_mux_set(IO_PIN_10, IO_FUNC4);
    io_pin_mux_set(IO_PIN_9, IO_FUNC4);
    
        // UART1 RX/TX GPS端口
        io_pin_mux_set(IO_PIN_14, IO_FUNC4);
    io_pin_mux_set(IO_PIN_13, IO_FUNC4);
//        io_pin_mux_set(IO_PIN_14, IO_FUNC4);
//    io_pin_mux_set(IO_PIN_13, IO_FUNC4);
    // Single ADC, If IO0 is set to negative input, the positive input is Vref, and vice versa
    io_pin_mux_set(IO_PIN_0, IO_FUNC1);
    io_pull_set(IO_PIN_0, IO_HIGH_Z, IO_PULL_UP_NONE);
}
void uart1_change_from_gps_to_debug(void)
{
io_pin_mux_set(IO_PIN_14, IO_FUNC0);//把原先uart变为普通GPIO
io_pin_mux_set(IO_PIN_13, IO_FUNC0);
uart_close(UART_ID1);//解绑原来串口1
// UART1 RX/TX已修改复用引脚为ADC留出空间调试串口
io_pin_mux_set(IO_PIN_10,IO_FUNC4);
io_pin_mux_set(IO_PIN_9,IO_FUNC4);
uart_open(UART_ID1, &test_uart_cfg);
    io_pin_mux_set(IO_PIN_14, IO_FUNC0);//把原先uart变为普通GPIO
    io_pin_mux_set(IO_PIN_13, IO_FUNC0);
    uart_close(UART_ID1);//解绑原来串口1
    // UART1 RX/TX已修改复用引脚为ADC留出空间调试串口
    io_pin_mux_set(IO_PIN_10,IO_FUNC4);
    io_pin_mux_set(IO_PIN_9,IO_FUNC4);
    uart_open(UART_ID1, &test_uart_cfg);
}
void uart1_change_from_debug_to_gps(void)
user_config.h
@@ -57,7 +57,7 @@
/* =========================================================================================================================== */
/** Enable trace output */
#define TRACE_EN (0)
#define TRACE_EN (1)
/** Enable exception reboot */
#ifndef TRACE_REBOOT_EN