Index: ModuleDemo/BlueTooth/BT_MultConnect/prj/GCC/c.bat
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/prj/GCC/c.bat	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/prj/GCC/c.bat	(working copy)
@@ -0,0 +1,3 @@
+cls
+make clean
+make
\ No newline at end of file
Index: ModuleDemo/BlueTooth/BT_MultConnect/prj/GCC/makefile
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/prj/GCC/makefile	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/prj/GCC/makefile	(working copy)
@@ -0,0 +1,236 @@
+
+ifeq ($(OS),Windows_NT)
+DIR = C:/gcc-arm-none-eabi-7-2018-q2-update-win32
+else
+DIR = /usr/gcc-arm-none-eabi-7-2018-q2-update
+endif
+
+ARCH = $(DIR)/bin/arm-none-eabi
+GCC = $(ARCH)-gcc
+LD = $(ARCH)-ld
+AS = $(ARCH)-as
+OBJCOPY = $(ARCH)-objcopy
+OBJDUMP = "$(ARCH)-objdump"
+LIB_PATH = ../../../../../Librarier
+USER_PATH = ../../user
+
+
+all : output/out.hex
+
+
+CORE_OBJS =  $(LIB_PATH)/startup/flash_start_gcc \
+             $(LIB_PATH)/core/system \
+             $(LIB_PATH)/core/bt_code \
+             $(LIB_PATH)/core/misc \
+             $(LIB_PATH)/sdk/yc_gpio \
+             $(LIB_PATH)/sdk/yc_uart \
+             $(LIB_PATH)/sdk/yc_lpm \
+             $(LIB_PATH)/sdk/yc_sysctrl \
+             $(LIB_PATH)/sdk/yc_bt \
+             $(LIB_PATH)/sdk/yc_systick \
+             $(LIB_PATH)/sdk/yc_ipc \
+             $(LIB_PATH)/sdk/yc_otp \
+             $(LIB_PATH)/sdk/yc_timer
+
+
+USER_OBJS = $(USER_PATH)/main
+
+
+OBJS = $(CORE_OBJS) $(USER_OBJS)
+
+INC_DIR = -I $(LIB_PATH)/core \
+          -I $(LIB_PATH)/sdk
+
+
+CFLAG =  -mthumb -mcpu=cortex-m0 -c -g -Os $(INC_DIR) $(DEF) -fno-toplevel-reorder -ffunction-sections -fdata-sections
+LDFLAG = -T output/ld.script -Map=output/memmap  $(LIB_PATH)/sdk/libyc_qspi.a -lc -lm -lgcc -L "$(DIR)/lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m"  -L "$(DIR)/arm-none-eabi/lib/thumb/v6-m"
+
+define ldscript =
+/* Linker script to configure memory regions.
+ * Need modifying for a specific board.
+ *   FLASH.ORIGIN: starting address of flash
+ *   FLASH.LENGTH: length of flash
+ *   RAM.ORIGIN: starting address of RAM bank 0
+ *   RAM.LENGTH: length of RAM bank 0
+ */
+MEMORY
+{
+  FLASH (rx) : ORIGIN = 0x1000000, LENGTH = 0x80000 /* 512K */
+  RAM (rwx) : ORIGIN = 0x20000, LENGTH = 0x10000 /* 64K */
+}
+
+/* Linker script to place sections and symbol values. Should be used together
+ * with other linker script that defines memory regions FLASH and RAM.
+ * It references following symbols, which must be defined in code:
+ *   Reset_Handler : Entry of reset handler
+ *
+ * It defines following symbols, which code can use without definition:
+ *   __exidx_start
+ *   __exidx_end
+ *   __copy_table_start__
+ *   __copy_table_end__
+ *   __zero_table_start__
+ *   __zero_table_end__
+ *   __etext
+ *   __data_start__
+ *   __preinit_array_start
+ *   __preinit_array_end
+ *   __init_array_start
+ *   __init_array_end
+ *   __fini_array_start
+ *   __fini_array_end
+ *   __data_end__
+ *   __bss_start__
+ *   __bss_end__
+ *   __end__
+ *   end
+ *   __HeapLimit
+ *   __StackLimit
+ *   __StackTop
+ *   __stack
+ */
+ENTRY(Reset_Handler)
+
+SECTIONS
+{
+	.text :
+	{
+		*flash_start*.o
+		*(.text*)
+
+		KEEP(*(.init))
+		KEEP(*(.fini))
+
+		/* .ctors */
+		*crtbegin.o(.ctors)
+		*crtbegin?.o(.ctors)
+		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
+		*(SORT(.ctors.*))
+		*(.ctors)
+
+		/* .dtors */
+ 		*crtbegin.o(.dtors)
+ 		*crtbegin?.o(.dtors)
+ 		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
+ 		*(SORT(.dtors.*))
+ 		*(.dtors)
+
+		*(.rodata*)
+
+		KEEP(*(.eh_frame*))
+	} > FLASH
+
+
+
+	.ARM.extab :
+	{
+		*(.ARM.extab* .gnu.linkonce.armextab.*)
+	} > FLASH
+
+
+	.ARM.exidx :
+	{
+		*(.ARM.exidx* .gnu.linkonce.armexidx.*)
+	} > FLASH
+
+	 . = ALIGN(4);
+	__exidx_start = .;
+
+	__etext = .;
+
+	.data : AT (__etext)
+	{
+		__data_start__ = .;
+		*(vtable)
+		*(.data*)
+
+		. = ALIGN(4);
+		/* preinit data */
+		PROVIDE_HIDDEN (__preinit_array_start = .);
+		KEEP(*(.preinit_array))
+		PROVIDE_HIDDEN (__preinit_array_end = .);
+
+		. = ALIGN(4);
+		/* init data */
+		PROVIDE_HIDDEN (__init_array_start = .);
+		KEEP(*(SORT(.init_array.*)))
+		KEEP(*(.init_array))
+		PROVIDE_HIDDEN (__init_array_end = .);
+
+
+		. = ALIGN(4);
+		/* finit data */
+		PROVIDE_HIDDEN (__fini_array_start = .);
+		KEEP(*(SORT(.fini_array.*)))
+		KEEP(*(.fini_array))
+		PROVIDE_HIDDEN (__fini_array_end = .);
+
+		KEEP(*(.jcr*))
+		. = ALIGN(4);
+		/* All data end */
+		__data_end__ = .;
+
+	} > RAM
+
+	.bss :
+	{
+		. = ALIGN(4);
+		__bss_start__ = .;
+		*(.bss*)
+		*(COMMON)
+		. = ALIGN(4);
+		__bss_end__ = .;
+	} > RAM
+
+	.heap (COPY):
+	{
+		__end__ = .;
+		PROVIDE(end = .);
+		*(.heap*)
+		__HeapLimit = .;
+	} > RAM
+
+	/* .stack_dummy section doesn't contains any symbols. It is only
+	 * used for linker to calculate size of stack sections, and assign
+	 * values to stack symbols later */
+	.stack_dummy (COPY):
+	{
+		*(.stack*)
+	} > RAM
+
+	/* Set stack top to end of RAM, and stack limit move down by
+	 * size of stack_dummy section */
+	__StackTop = ORIGIN(RAM) + LENGTH(RAM);
+	__StackLimit = __StackTop - SIZEOF(.stack_dummy);
+	PROVIDE(__stack = __StackTop);
+
+	/* Check if data + heap + stack exceeds RAM limit */
+	ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
+}
+endef
+
+
+output/out.hex : output/out
+	$(OBJCOPY) $^ -O ihex $@
+
+
+output/out : $(addprefix output/, $(addsuffix .o, $(OBJS)))
+	$(file >output/ld.script, $(ldscript))
+	$(LD) $(addprefix output/obj/,$(addsuffix .o, $(notdir $(OBJS)))) -o $@ $(LDFLAG)
+	$(OBJDUMP) -S $@ > output/disasm
+
+output/%.o : %.c
+	$(GCC) $< $(CFLAG) -o output/obj/$(notdir $@)
+
+output/%.o : %.s
+	$(AS) $^ -mthumb -mcpu=cortex-m0 -o output/obj/$(notdir $@)
+
+
+clean :
+ifeq ($(OS),Windows_NT)
+	del /Q output\*.*
+	del /Q output\obj\*.*
+else
+	rm -rf output/*
+	rm -rf output/obj/*
+endif
Index: ModuleDemo/BlueTooth/BT_MultConnect/prj/MDK/Objects/YC3121_keil.sct
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/prj/MDK/Objects/YC3121_keil.sct	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/prj/MDK/Objects/YC3121_keil.sct	(working copy)
@@ -0,0 +1,55 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x00000000 0x0001fff  {    ; load region size_region
+  ER_IROM1 0x00000000 0x00001fff  {  ; load address = execution address
+   startup.o (RESET, +First)
+   startup.o (|.text|,+RO)
+;   *(InRoot$$Sections)
+  }
+  ;ER_IROM2 0x4000   {
+  ;rom_main.o (+RO)
+  ;}
+  
+  ;ER_IROM3 0x100000 {
+	  ;*(InRoot$$Sections)
+  ;}
+	
+  ;ER_IROM4 0x100400   {
+  ;flash_start.o (+RO)
+  ;.ANY (+RO) 
+  ;}
+  
+  ;RW_IRAM1 0x000d0000 0x0010000  {  ; RW data
+   ;.ANY (+RW +ZI)
+  ;}
+  
+;  ARM_LIB_STACK 0xE0000 EMPTY -0x10000{}
+}
+
+;LR_IROM2 0x4000 0x4000{
+;	ER_IROM2 0x4000 {
+;	  rom_main.o (+RO)
+;	}
+;}
+
+LR_IROM3 0x1000200 0x200{
+	ER_IROM3 0x1000200 {
+	  flash_start.o (|.flash_start|,+RO)
+	}
+}
+
+LR_IROM4 0x1000400 0x1000000{
+	ER_IROM4 0x1000400 {
+;	  flash_start.o (|.flash_start|,+RO)
+	  *(InRoot$$Sections)
+	  .ANY (+RO)
+	}
+	
+	
+	 RW_IRAM2 0x00020000 0x010000  {  ; RW data
+	.ANY (+RW +ZI)
+	}
+}
+
Index: ModuleDemo/BlueTooth/BT_MultConnect/prj/MDK/YC3121.BAT
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/prj/MDK/YC3121.BAT	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/prj/MDK/YC3121.BAT	(working copy)
@@ -0,0 +1,26 @@
+SET PATH=C:\Keil_v5\ARM\ARMCC\Bin;C:\Program Files (x86)\GnuWin32\bin;C:\Program Files (x86)\RBTools\bin;C:\Program Files (x86)\GnuWin32\bin;C:\Program Files (x86)\GnuWin32\bin;C:\Perl\bin\;c\jre;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\TortoiseSVN\bin;c:\jre;C:\Users\15773\AppData\Local\Microsoft\WindowsApps;D:\Microsoft VS Code\bin;D:\altera\13.1\modelsim_ase\win32aloem;C:\Program Files (x86)\SEGGER\JLink;C:\Users\15773\AppData\Local\BypassRuntm;D:\MentorGraphics\PADSVX.2\SDD_HOME\svn\win32\bin;D:\msys64\mingw32;D:\msys64\mingw32\bin;C:\Program Files\Microsoft VS Code\bin;D:\MinGW\bin;C:\Keil_v5\UV4;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Users\chenkun\AppData\Local\Programs\Python\Python37;C:\gcc-arm-none-eabi-7-2018-q2-update-win32\gcc-arm-none-eabi-7-2018-q2-update-win32\make.exe;C:\Keil_v5\UV4\UV4.exe;C:\miniconda\Scripts;C:\miniconda;C:\Users\chenkun\AppData\Local\Microsoft\WindowsApps;C:\Program Files\JetBrains\PyCharm Community Edition 2020.2.3\bin;C:\Program Files (x86)\GnuWin32\bin;C:\Program Files (x86)\GnuWin32\bin;C:\Users\chenkun\AppData\Local\Microsoft\WindowsApps;C:\Program Files\JetBrains\PyCharm Community Edition 2020.2.3\bin;;C:\miniconda;C:\miniconda\Scripts;
+SET ARMCC5_ASMOPT=--diag_suppress=9931
+SET ARMCC5_CCOPT=--diag_suppress=9931
+SET ARMCC5_LINKOPT=--diag_suppress=9931
+SET CPU_TYPE=ARMCM0
+SET CPU_VENDOR=ARM
+SET UV2_TARGET=YC3121
+SET CPU_CLOCK=0x00B71B00
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\misc.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\system.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\bt_code.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\main.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\yc_bt_mult.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\yc_gpio.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\yc_uart.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\yc_systick.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\yc_ipc.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\yc_otp.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\yc_timer.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\yc_lpm.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\yc_sysctrl.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmAsm" --Via ".\objects\flash_start._ia"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmAsm" --Via ".\objects\startup._ia"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmLink" --Via ".\Objects\YC3121_Keil.lnp"
+"C:\Keil_v5\ARM\ARMCC\Bin\fromelf.exe" ".\Objects\YC3121_Keil.axf" --i32combined --output ".\Objects\YC3121_Keil.hex"
+fromelf.exe --text -a -c --output=YC3121_Keil_asm.txt ".\Objects\YC3121_Keil.axf"
Index: ModuleDemo/BlueTooth/BT_MultConnect/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/prj/MDK/YC3121_Keil.uvoptx	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/prj/MDK/YC3121_Keil.uvoptx	(working copy)
@@ -0,0 +1,426 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+  <SchemaVersion>1.0</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Extensions>
+    <cExt>*.c</cExt>
+    <aExt>*.s*; *.src; *.a*</aExt>
+    <oExt>*.obj; *.o</oExt>
+    <lExt>*.lib</lExt>
+    <tExt>*.txt; *.h; *.inc</tExt>
+    <pExt>*.plm</pExt>
+    <CppX>*.cpp</CppX>
+    <nMigrate>0</nMigrate>
+  </Extensions>
+
+  <DaveTm>
+    <dwLowDateTime>0</dwLowDateTime>
+    <dwHighDateTime>0</dwHighDateTime>
+  </DaveTm>
+
+  <Target>
+    <TargetName>YC3121</TargetName>
+    <ToolsetNumber>0x4</ToolsetNumber>
+    <ToolsetName>ARM-ADS</ToolsetName>
+    <TargetOption>
+      <CLKADS>12000000</CLKADS>
+      <OPTTT>
+        <gFlags>1</gFlags>
+        <BeepAtEnd>1</BeepAtEnd>
+        <RunSim>0</RunSim>
+        <RunTarget>1</RunTarget>
+        <RunAbUc>0</RunAbUc>
+      </OPTTT>
+      <OPTHX>
+        <HexSelection>1</HexSelection>
+        <FlashByte>65535</FlashByte>
+        <HexRangeLowAddress>0</HexRangeLowAddress>
+        <HexRangeHighAddress>0</HexRangeHighAddress>
+        <HexOffset>0</HexOffset>
+      </OPTHX>
+      <OPTLEX>
+        <PageWidth>79</PageWidth>
+        <PageLength>66</PageLength>
+        <TabStop>8</TabStop>
+        <ListingPath>.\Listings\</ListingPath>
+      </OPTLEX>
+      <ListingPage>
+        <CreateCListing>1</CreateCListing>
+        <CreateAListing>1</CreateAListing>
+        <CreateLListing>1</CreateLListing>
+        <CreateIListing>0</CreateIListing>
+        <AsmCond>1</AsmCond>
+        <AsmSymb>1</AsmSymb>
+        <AsmXref>0</AsmXref>
+        <CCond>1</CCond>
+        <CCode>0</CCode>
+        <CListInc>0</CListInc>
+        <CSymb>0</CSymb>
+        <LinkerCodeListing>0</LinkerCodeListing>
+      </ListingPage>
+      <OPTXL>
+        <LMap>1</LMap>
+        <LComments>1</LComments>
+        <LGenerateSymbols>1</LGenerateSymbols>
+        <LLibSym>1</LLibSym>
+        <LLines>1</LLines>
+        <LLocSym>1</LLocSym>
+        <LPubSym>1</LPubSym>
+        <LXref>0</LXref>
+        <LExpSel>0</LExpSel>
+      </OPTXL>
+      <OPTFL>
+        <tvExp>1</tvExp>
+        <tvExpOptDlg>0</tvExpOptDlg>
+        <IsCurrentTarget>1</IsCurrentTarget>
+      </OPTFL>
+      <CpuCode>7</CpuCode>
+      <DebugOpt>
+        <uSim>0</uSim>
+        <uTrg>1</uTrg>
+        <sLdApp>1</sLdApp>
+        <sGomain>1</sGomain>
+        <sRbreak>1</sRbreak>
+        <sRwatch>1</sRwatch>
+        <sRmem>1</sRmem>
+        <sRfunc>1</sRfunc>
+        <sRbox>1</sRbox>
+        <tLdApp>1</tLdApp>
+        <tGomain>1</tGomain>
+        <tRbreak>1</tRbreak>
+        <tRwatch>1</tRwatch>
+        <tRmem>1</tRmem>
+        <tRfunc>0</tRfunc>
+        <tRbox>1</tRbox>
+        <tRtrace>1</tRtrace>
+        <sRSysVw>1</sRSysVw>
+        <tRSysVw>1</tRSysVw>
+        <sRunDeb>0</sRunDeb>
+        <sLrtime>0</sLrtime>
+        <bEvRecOn>1</bEvRecOn>
+        <bSchkAxf>0</bSchkAxf>
+        <bTchkAxf>0</bTchkAxf>
+        <nTsel>4</nTsel>
+        <sDll></sDll>
+        <sDllPa></sDllPa>
+        <sDlgDll></sDlgDll>
+        <sDlgPa></sDlgPa>
+        <sIfile></sIfile>
+        <tDll></tDll>
+        <tDllPa></tDllPa>
+        <tDlgDll></tDlgDll>
+        <tDlgPa></tDlgPa>
+        <tIfile>..\..\..\..\..\ConfigFiles\MDK\flash.ini</tIfile>
+        <pMon>Segger\JL2CM3.dll</pMon>
+      </DebugOpt>
+      <TargetDriverDllRegistry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGUARM</Key>
+          <Name>d</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>PWSTATINFO</Key>
+          <Name>200,50,700</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMRTXEVENTFLAGS</Key>
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGTARM</Key>
+          <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMDBGFLAGS</Key>
+          <Name></Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>JL2CM3</Key>
+          <Name>-U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000 -FCA000 -FN1 -FF0YC3121 -FS01000200 -FL01000000</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>UL2CM3</Key>
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</Name>
+        </SetRegEntry>
+      </TargetDriverDllRegistry>
+      <Breakpoint/>
+      <Tracepoint>
+        <THDelay>0</THDelay>
+      </Tracepoint>
+      <DebugFlag>
+        <trace>0</trace>
+        <periodic>0</periodic>
+        <aLwin>1</aLwin>
+        <aCover>0</aCover>
+        <aSer1>0</aSer1>
+        <aSer2>0</aSer2>
+        <aPa>0</aPa>
+        <viewmode>1</viewmode>
+        <vrSel>0</vrSel>
+        <aSym>0</aSym>
+        <aTbox>0</aTbox>
+        <AscS1>0</AscS1>
+        <AscS2>0</AscS2>
+        <AscS3>0</AscS3>
+        <aSer3>0</aSer3>
+        <eProf>0</eProf>
+        <aLa>0</aLa>
+        <aPa1>0</aPa1>
+        <AscS4>0</AscS4>
+        <aSer4>0</aSer4>
+        <StkLoc>0</StkLoc>
+        <TrcWin>0</TrcWin>
+        <newCpu>0</newCpu>
+        <uProt>0</uProt>
+      </DebugFlag>
+      <LintExecutable></LintExecutable>
+      <LintConfigFile></LintConfigFile>
+      <bLintAuto>0</bLintAuto>
+      <bAutoGenD>0</bAutoGenD>
+      <LntExFlags>0</LntExFlags>
+      <pMisraName></pMisraName>
+      <pszMrule></pszMrule>
+      <pSingCmds></pSingCmds>
+      <pMultCmds></pMultCmds>
+      <pMisraNamep></pMisraNamep>
+      <pszMrulep></pszMrulep>
+      <pSingCmdsp></pSingCmdsp>
+      <pMultCmdsp></pMultCmdsp>
+    </TargetOption>
+  </Target>
+
+  <Group>
+    <GroupName>core</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>1</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>1</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\misc.c</PathWithFileName>
+      <FilenameWithoutPath>misc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>2</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\system.c</PathWithFileName>
+      <FilenameWithoutPath>system.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>3</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\user\bt_code.c</PathWithFileName>
+      <FilenameWithoutPath>bt_code.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>main</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>4</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\user\main.c</PathWithFileName>
+      <FilenameWithoutPath>main.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>5</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\user\yc_bt_mult.c</PathWithFileName>
+      <FilenameWithoutPath>yc_bt_mult.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>sdk</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>6</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_gpio.c</PathWithFileName>
+      <FilenameWithoutPath>yc_gpio.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>7</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_uart.c</PathWithFileName>
+      <FilenameWithoutPath>yc_uart.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>8</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_systick.c</PathWithFileName>
+      <FilenameWithoutPath>yc_systick.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>9</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_ipc.c</PathWithFileName>
+      <FilenameWithoutPath>yc_ipc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>10</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_otp.c</PathWithFileName>
+      <FilenameWithoutPath>yc_otp.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>11</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_timer.c</PathWithFileName>
+      <FilenameWithoutPath>yc_timer.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>12</FileNumber>
+      <FileType>4</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_qspi.lib</PathWithFileName>
+      <FilenameWithoutPath>yc_qspi.lib</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>13</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_lpm.c</PathWithFileName>
+      <FilenameWithoutPath>yc_lpm.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>14</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</PathWithFileName>
+      <FilenameWithoutPath>yc_sysctrl.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>startup</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>15</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\startup\flash_start.s</PathWithFileName>
+      <FilenameWithoutPath>flash_start.s</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>16</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\startup\startup.s</PathWithFileName>
+      <FilenameWithoutPath>startup.s</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+</ProjectOpt>
Index: ModuleDemo/BlueTooth/BT_MultConnect/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/prj/MDK/YC3121_Keil.uvprojx	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/prj/MDK/YC3121_Keil.uvprojx	(working copy)
@@ -0,0 +1,492 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
+
+  <SchemaVersion>2.1</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Targets>
+    <Target>
+      <TargetName>YC3121</TargetName>
+      <ToolsetNumber>0x4</ToolsetNumber>
+      <ToolsetName>ARM-ADS</ToolsetName>
+      <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+      <uAC6>0</uAC6>
+      <TargetOption>
+        <TargetCommonOption>
+          <Device>ARMCM0</Device>
+          <Vendor>ARM</Vendor>
+          <PackID>ARM.CMSIS.5.5.1</PackID>
+          <PackURL>http://www.keil.com/pack/</PackURL>
+          <Cpu>IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0") CLOCK(12000000) ESEL ELITTLE</Cpu>
+          <FlashUtilSpec></FlashUtilSpec>
+          <StartupFile></StartupFile>
+          <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</FlashDriverDll>
+          <DeviceId>0</DeviceId>
+          <RegisterFile>$$Device:ARMCM0$Device\ARM\ARMCM0\Include\ARMCM0.h</RegisterFile>
+          <MemoryEnv></MemoryEnv>
+          <Cmp></Cmp>
+          <Asm></Asm>
+          <Linker></Linker>
+          <OHString></OHString>
+          <InfinionOptionDll></InfinionOptionDll>
+          <SLE66CMisc></SLE66CMisc>
+          <SLE66AMisc></SLE66AMisc>
+          <SLE66LinkerMisc></SLE66LinkerMisc>
+          <SFDFile>$$Device:ARMCM0$Device\ARM\SVD\ARMCM0.svd</SFDFile>
+          <bCustSvd>0</bCustSvd>
+          <UseEnv>0</UseEnv>
+          <BinPath></BinPath>
+          <IncludePath></IncludePath>
+          <LibPath></LibPath>
+          <RegisterFilePath></RegisterFilePath>
+          <DBRegisterFilePath></DBRegisterFilePath>
+          <TargetStatus>
+            <Error>0</Error>
+            <ExitCodeStop>0</ExitCodeStop>
+            <ButtonStop>0</ButtonStop>
+            <NotGenerated>0</NotGenerated>
+            <InvalidFlash>1</InvalidFlash>
+          </TargetStatus>
+          <OutputDirectory>.\Objects\</OutputDirectory>
+          <OutputName>YC3121_Keil</OutputName>
+          <CreateExecutable>1</CreateExecutable>
+          <CreateLib>0</CreateLib>
+          <CreateHexFile>1</CreateHexFile>
+          <DebugInformation>1</DebugInformation>
+          <BrowseInformation>1</BrowseInformation>
+          <ListingPath>.\Listings\</ListingPath>
+          <HexFormatSelection>1</HexFormatSelection>
+          <Merge32K>0</Merge32K>
+          <CreateBatchFile>1</CreateBatchFile>
+          <BeforeCompile>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopU1X>0</nStopU1X>
+            <nStopU2X>0</nStopU2X>
+          </BeforeCompile>
+          <BeforeMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopB1X>0</nStopB1X>
+            <nStopB2X>0</nStopB2X>
+          </BeforeMake>
+          <AfterMake>
+            <RunUserProg1>1</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name>fromelf.exe --text -a -c --output=@L_asm.txt "!L"</UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopA1X>0</nStopA1X>
+            <nStopA2X>0</nStopA2X>
+          </AfterMake>
+          <SelectedForBatchBuild>0</SelectedForBatchBuild>
+          <SVCSIdString></SVCSIdString>
+        </TargetCommonOption>
+        <CommonProperty>
+          <UseCPPCompiler>0</UseCPPCompiler>
+          <RVCTCodeConst>0</RVCTCodeConst>
+          <RVCTZI>0</RVCTZI>
+          <RVCTOtherData>0</RVCTOtherData>
+          <ModuleSelection>0</ModuleSelection>
+          <IncludeInBuild>1</IncludeInBuild>
+          <AlwaysBuild>0</AlwaysBuild>
+          <GenerateAssemblyFile>0</GenerateAssemblyFile>
+          <AssembleAssemblyFile>0</AssembleAssemblyFile>
+          <PublicsOnly>0</PublicsOnly>
+          <StopOnExitCode>3</StopOnExitCode>
+          <CustomArgument></CustomArgument>
+          <IncludeLibraryModules></IncludeLibraryModules>
+          <ComprImg>1</ComprImg>
+        </CommonProperty>
+        <DllOption>
+          <SimDllName>SARMCM3.DLL</SimDllName>
+          <SimDllArguments>  </SimDllArguments>
+          <SimDlgDll>DARMCM1.DLL</SimDlgDll>
+          <SimDlgDllArguments>-pCM0</SimDlgDllArguments>
+          <TargetDllName>SARMCM3.DLL</TargetDllName>
+          <TargetDllArguments> </TargetDllArguments>
+          <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
+          <TargetDlgDllArguments>-pCM0</TargetDlgDllArguments>
+        </DllOption>
+        <DebugOption>
+          <OPTHX>
+            <HexSelection>1</HexSelection>
+            <HexRangeLowAddress>0</HexRangeLowAddress>
+            <HexRangeHighAddress>0</HexRangeHighAddress>
+            <HexOffset>0</HexOffset>
+            <Oh166RecLen>16</Oh166RecLen>
+          </OPTHX>
+        </DebugOption>
+        <Utilities>
+          <Flash1>
+            <UseTargetDll>1</UseTargetDll>
+            <UseExternalTool>0</UseExternalTool>
+            <RunIndependent>1</RunIndependent>
+            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+            <Capability>1</Capability>
+            <DriverSelection>4100</DriverSelection>
+          </Flash1>
+          <bUseTDR>0</bUseTDR>
+          <Flash2>Segger\JL2CM3.dll</Flash2>
+          <Flash3>"" ()</Flash3>
+          <Flash4></Flash4>
+          <pFcarmOut></pFcarmOut>
+          <pFcarmGrp></pFcarmGrp>
+          <pFcArmRoot></pFcArmRoot>
+          <FcArmLst>0</FcArmLst>
+        </Utilities>
+        <TargetArmAds>
+          <ArmAdsMisc>
+            <GenerateListings>0</GenerateListings>
+            <asHll>1</asHll>
+            <asAsm>1</asAsm>
+            <asMacX>1</asMacX>
+            <asSyms>1</asSyms>
+            <asFals>1</asFals>
+            <asDbgD>1</asDbgD>
+            <asForm>1</asForm>
+            <ldLst>0</ldLst>
+            <ldmm>1</ldmm>
+            <ldXref>1</ldXref>
+            <BigEnd>0</BigEnd>
+            <AdsALst>1</AdsALst>
+            <AdsACrf>1</AdsACrf>
+            <AdsANop>0</AdsANop>
+            <AdsANot>0</AdsANot>
+            <AdsLLst>1</AdsLLst>
+            <AdsLmap>1</AdsLmap>
+            <AdsLcgr>1</AdsLcgr>
+            <AdsLsym>1</AdsLsym>
+            <AdsLszi>1</AdsLszi>
+            <AdsLtoi>1</AdsLtoi>
+            <AdsLsun>1</AdsLsun>
+            <AdsLven>1</AdsLven>
+            <AdsLsxf>1</AdsLsxf>
+            <RvctClst>0</RvctClst>
+            <GenPPlst>0</GenPPlst>
+            <AdsCpuType>"Cortex-M0"</AdsCpuType>
+            <RvctDeviceName></RvctDeviceName>
+            <mOS>0</mOS>
+            <uocRom>0</uocRom>
+            <uocRam>0</uocRam>
+            <hadIROM>1</hadIROM>
+            <hadIRAM>1</hadIRAM>
+            <hadXRAM>0</hadXRAM>
+            <uocXRam>0</uocXRam>
+            <RvdsVP>0</RvdsVP>
+            <RvdsMve>0</RvdsMve>
+            <hadIRAM2>0</hadIRAM2>
+            <hadIROM2>0</hadIROM2>
+            <StupSel>8</StupSel>
+            <useUlib>1</useUlib>
+            <EndSel>1</EndSel>
+            <uLtcg>0</uLtcg>
+            <nSecure>0</nSecure>
+            <RoSelD>3</RoSelD>
+            <RwSelD>3</RwSelD>
+            <CodeSel>0</CodeSel>
+            <OptFeed>0</OptFeed>
+            <NoZi1>0</NoZi1>
+            <NoZi2>0</NoZi2>
+            <NoZi3>0</NoZi3>
+            <NoZi4>1</NoZi4>
+            <NoZi5>0</NoZi5>
+            <Ro1Chk>0</Ro1Chk>
+            <Ro2Chk>0</Ro2Chk>
+            <Ro3Chk>0</Ro3Chk>
+            <Ir1Chk>1</Ir1Chk>
+            <Ir2Chk>0</Ir2Chk>
+            <Ra1Chk>0</Ra1Chk>
+            <Ra2Chk>0</Ra2Chk>
+            <Ra3Chk>0</Ra3Chk>
+            <Im1Chk>1</Im1Chk>
+            <Im2Chk>0</Im2Chk>
+            <OnChipMemories>
+              <Ocm1>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm1>
+              <Ocm2>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm2>
+              <Ocm3>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm3>
+              <Ocm4>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm4>
+              <Ocm5>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm5>
+              <Ocm6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm6>
+              <IRAM>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x20000</Size>
+              </IRAM>
+              <IROM>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x40000</Size>
+              </IROM>
+              <XRAM>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </XRAM>
+              <OCR_RVCT1>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT1>
+              <OCR_RVCT2>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT2>
+              <OCR_RVCT3>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT3>
+              <OCR_RVCT4>
+                <Type>1</Type>
+                <StartAddress>0x1000000</StartAddress>
+                <Size>0x80000</Size>
+              </OCR_RVCT4>
+              <OCR_RVCT5>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT5>
+              <OCR_RVCT6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT6>
+              <OCR_RVCT7>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT7>
+              <OCR_RVCT8>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT8>
+              <OCR_RVCT9>
+                <Type>0</Type>
+                <StartAddress>0x20000</StartAddress>
+                <Size>0x10000</Size>
+              </OCR_RVCT9>
+              <OCR_RVCT10>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT10>
+            </OnChipMemories>
+            <RvctStartVector></RvctStartVector>
+          </ArmAdsMisc>
+          <Cads>
+            <interw>1</interw>
+            <Optim>1</Optim>
+            <oTime>0</oTime>
+            <SplitLS>0</SplitLS>
+            <OneElfS>0</OneElfS>
+            <Strict>0</Strict>
+            <EnumInt>0</EnumInt>
+            <PlainCh>0</PlainCh>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <wLevel>1</wLevel>
+            <uThumb>0</uThumb>
+            <uSurpInc>0</uSurpInc>
+            <uC99>1</uC99>
+            <uGnu>0</uGnu>
+            <useXO>0</useXO>
+            <v6Lang>1</v6Lang>
+            <v6LangP>1</v6LangP>
+            <vShortEn>1</vShortEn>
+            <vShortWch>1</vShortWch>
+            <v6Lto>0</v6Lto>
+            <v6WtE>0</v6WtE>
+            <v6Rtti>0</v6Rtti>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define>__USEKEILCOMPILE__</Define>
+              <Undefine></Undefine>
+              <IncludePath>..\..\..\..\..\Librarier\sdk;..\..\..\..\..\Librarier\core;..\..\user</IncludePath>
+            </VariousControls>
+          </Cads>
+          <Aads>
+            <interw>1</interw>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <thumb>0</thumb>
+            <SplitLS>0</SplitLS>
+            <SwStkChk>0</SwStkChk>
+            <NoWarn>0</NoWarn>
+            <uSurpInc>0</uSurpInc>
+            <useXO>0</useXO>
+            <uClangAs>0</uClangAs>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define></Define>
+              <Undefine></Undefine>
+              <IncludePath></IncludePath>
+            </VariousControls>
+          </Aads>
+          <LDads>
+            <umfTarg>0</umfTarg>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <noStLib>0</noStLib>
+            <RepFail>1</RepFail>
+            <useFile>0</useFile>
+            <TextAddressRange>0x00000000</TextAddressRange>
+            <DataAddressRange>0xd0000</DataAddressRange>
+            <pXoBase></pXoBase>
+            <ScatterFile>.\Objects\YC3121_keil.sct</ScatterFile>
+            <IncludeLibs></IncludeLibs>
+            <IncludeLibsPath></IncludeLibsPath>
+            <Misc></Misc>
+            <LinkerInputFile></LinkerInputFile>
+            <DisabledWarnings></DisabledWarnings>
+          </LDads>
+        </TargetArmAds>
+      </TargetOption>
+      <Groups>
+        <Group>
+          <GroupName>core</GroupName>
+          <Files>
+            <File>
+              <FileName>misc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\misc.c</FilePath>
+            </File>
+            <File>
+              <FileName>system.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\system.c</FilePath>
+            </File>
+            <File>
+              <FileName>bt_code.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\user\bt_code.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>main</GroupName>
+          <Files>
+            <File>
+              <FileName>main.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\user\main.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_bt_mult.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\user\yc_bt_mult.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>sdk</GroupName>
+          <Files>
+            <File>
+              <FileName>yc_gpio.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_gpio.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_uart.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_uart.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_systick.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_systick.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_ipc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_ipc.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_otp.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_otp.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_timer.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_timer.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_qspi.lib</FileName>
+              <FileType>4</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_qspi.lib</FilePath>
+            </File>
+            <File>
+              <FileName>yc_lpm.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_lpm.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_sysctrl.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>startup</GroupName>
+          <Files>
+            <File>
+              <FileName>flash_start.s</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\..\..\..\..\Librarier\startup\flash_start.s</FilePath>
+            </File>
+            <File>
+              <FileName>startup.s</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\..\..\..\..\Librarier\startup\startup.s</FilePath>
+            </File>
+          </Files>
+        </Group>
+      </Groups>
+    </Target>
+  </Targets>
+
+  <RTE>
+    <apis/>
+    <components/>
+    <files/>
+  </RTE>
+
+</Project>
Index: ModuleDemo/BlueTooth/BT_MultConnect/user/bt_code.c
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/user/bt_code.c	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/user/bt_code.c	(working copy)
@@ -0,0 +1,577 @@
+const unsigned char bt_code[] = {
+0x00,0x02,0xaa,0x55,0x22,0x1f,0xc2,0x84,0x00,0x2f,0xc0,0x00,0x81,0xa3,0xc0,0x02,
+0x00,0xf8,0xc0,0x02,0x81,0x16,0xc0,0x15,0x00,0x5f,0xc0,0x15,0x80,0x88,0xc0,0x16,
+0x00,0xd3,0xc0,0x17,0x01,0x13,0xc0,0x1a,0x01,0x46,0xc0,0x1e,0x01,0x49,0xc0,0x1f,
+0x01,0xad,0xc0,0x22,0x80,0xc0,0xc0,0x24,0x01,0xa9,0xc0,0x28,0x01,0xae,0xc0,0x2e,
+0x01,0xba,0xc0,0x2f,0x81,0xdf,0xc0,0x30,0x01,0xe4,0xc0,0x2e,0x81,0xc5,0xc0,0x2f,
+0x01,0xd4,0xc0,0x37,0x02,0x21,0xc0,0x38,0x02,0x02,0xc0,0x38,0x82,0x05,0xc0,0x42,
+0x82,0x40,0xc0,0x44,0x82,0x61,0xc0,0x4a,0x01,0x91,0xc0,0x51,0x02,0x6a,0xc0,0x51,
+0x81,0x9c,0xc0,0x53,0x01,0x4c,0xc0,0x53,0x81,0x6e,0xc0,0x55,0x81,0x6c,0xc0,0x56,
+0x02,0x71,0xc0,0x5a,0x00,0x4d,0xc0,0x5a,0x80,0x50,0xc0,0x5c,0x02,0x72,0xc0,0x5d,
+0x83,0x47,0xc0,0x5e,0x04,0x49,0xc0,0x60,0x04,0xb0,0xc0,0x6d,0x84,0xb9,0xc0,0x6e,
+0x84,0xc0,0xc0,0x6f,0x04,0xc5,0xc0,0x6f,0x84,0xcb,0xc0,0x71,0x84,0xa9,0xc0,0x75,
+0x84,0xd8,0xc0,0x78,0x81,0x6f,0xc0,0x7a,0x81,0x84,0xc0,0x7b,0x01,0x8c,0x20,0x20,
+0x4a,0x8b,0xc0,0x01,0x84,0xe2,0xc0,0x02,0x84,0xee,0xc0,0x03,0x04,0xf7,0xc0,0x03,
+0x84,0xfd,0xc0,0x04,0x05,0x06,0xc0,0x05,0x85,0x19,0xc0,0x09,0x85,0x2c,0xc0,0x0a,
+0x05,0xc7,0xc0,0x0e,0x05,0xdc,0xc0,0x0f,0x06,0x05,0xc0,0x0f,0x86,0x30,0xc0,0x11,
+0x06,0xb5,0xc0,0x11,0x86,0x9a,0xc0,0x12,0x86,0xab,0xc0,0x14,0x05,0x29,0xc0,0x19,
+0x06,0xdd,0xc0,0x1d,0x06,0xdf,0xc0,0x1f,0x06,0xf7,0xc0,0x20,0x87,0x09,0xc0,0x26,
+0x86,0xde,0xc0,0x28,0x87,0x1c,0xc0,0x29,0x07,0x25,0xc0,0x31,0x04,0x83,0xc0,0x33,
+0x04,0xa6,0xc0,0x3c,0x84,0xd0,0xc0,0x46,0x86,0x1a,0xc0,0x4c,0x87,0x0f,0xc0,0x4f,
+0x87,0x13,0xc0,0x50,0x87,0x14,0x20,0x20,0x4a,0x8b,0x58,0x00,0x00,0x00,0x67,0xf0,
+0x46,0x3a,0x20,0x60,0x00,0x00,0x1a,0x22,0x7e,0x00,0x67,0xe2,0x02,0x28,0x6f,0xe2,
+0x02,0x28,0x20,0x7a,0x00,0x00,0x1f,0xe0,0xff,0xff,0x67,0xe2,0x02,0x28,0x6f,0xe4,
+0x41,0xfe,0x20,0x40,0x7d,0x77,0x20,0x20,0x00,0x52,0x20,0x40,0x7c,0xcf,0x20,0x40,
+0x00,0xb6,0x1f,0xe2,0x0c,0x00,0xef,0xe4,0x00,0x06,0x67,0xe4,0x46,0x52,0x20,0x60,
+0x00,0x00,0x79,0x20,0x00,0x09,0x1a,0x22,0x7e,0x00,0x67,0xe4,0x00,0x1e,0x18,0x00,
+0x72,0x50,0xd8,0xa0,0x04,0x3b,0x1a,0x20,0x8c,0x01,0xef,0xe2,0x00,0x06,0x1a,0x22,
+0x0c,0x00,0xc2,0x80,0x00,0x59,0xd8,0xa0,0x00,0x30,0x20,0x40,0x7c,0xcf,0x20,0x40,
+0x00,0xb6,0x1f,0xe2,0x0c,0x00,0xd8,0xa0,0x45,0x2f,0xdf,0x20,0x00,0x0e,0x20,0x40,
+0x7c,0xcf,0xef,0xec,0x00,0x06,0x67,0xec,0x42,0x18,0xef,0xe4,0x00,0x06,0x67,0xe4,
+0x42,0x22,0xef,0xe2,0x00,0x06,0x67,0xe2,0x42,0x26,0xef,0xe2,0x00,0x06,0x67,0xe2,
+0x43,0x36,0xef,0xe4,0x00,0x06,0x67,0xe4,0x46,0x52,0xef,0xe2,0x00,0x06,0x67,0xe2,
+0x49,0xc0,0xd8,0xa0,0x40,0xd2,0xdf,0x20,0x00,0x20,0x20,0x40,0x7c,0xcf,0xdf,0x20,
+0x00,0x17,0xd8,0xa0,0x4a,0xeb,0x20,0x40,0x7c,0xcf,0x20,0x20,0x42,0x12,0x20,0x40,
+0x7c,0xcf,0x20,0x40,0x00,0xb6,0x1f,0xe2,0x0a,0x00,0x6f,0xe4,0x46,0x52,0xe7,0xe4,
+0x00,0x05,0x20,0x60,0x00,0x00,0x6f,0xe4,0x00,0x1e,0x98,0x00,0x0a,0x00,0x18,0x00,
+0x72,0x50,0xd8,0xc0,0x04,0x3b,0x20,0x3b,0x7c,0xcf,0xd8,0xc0,0x00,0x30,0x20,0x40,
+0x7c,0xcf,0x20,0x40,0x00,0xb6,0x1f,0xe2,0x0a,0x00,0xd8,0xc0,0x45,0x2f,0xdf,0x20,
+0x00,0x0e,0x20,0x40,0x7c,0xcf,0x6f,0xec,0x42,0x18,0xe7,0xec,0x00,0x05,0x6f,0xe4,
+0x42,0x22,0xe7,0xe4,0x00,0x05,0x6f,0xe2,0x42,0x26,0xe7,0xe2,0x00,0x05,0x6f,0xe2,
+0x43,0x36,0xe7,0xe2,0x00,0x05,0x6f,0xe4,0x46,0x52,0xe7,0xe4,0x00,0x05,0x6f,0xe2,
+0x49,0xc0,0xe7,0xe2,0x00,0x05,0xd8,0xc0,0x40,0xd2,0xdf,0x20,0x00,0x20,0x20,0x40,
+0x7c,0xcf,0xdf,0x20,0x00,0x17,0xd8,0xc0,0x4a,0xeb,0x20,0x20,0x7c,0xcf,0xd8,0xa0,
+0x00,0x30,0x18,0x00,0x72,0x50,0x20,0x40,0x7c,0xaf,0xd8,0xa0,0x45,0x2f,0xdf,0x20,
+0x00,0x0e,0x20,0x40,0x7c,0xaf,0x58,0x00,0x00,0x00,0x67,0xec,0x42,0x18,0x67,0xe4,
+0x42,0x22,0x67,0xe2,0x42,0x26,0x67,0xe2,0x43,0x36,0x67,0xe4,0x46,0x52,0x67,0xe2,
+0x49,0xc0,0xd8,0xa0,0x40,0xd2,0xdf,0x20,0x00,0x20,0x20,0x20,0x7c,0xaf,0x6f,0xe4,
+0x00,0x1e,0xd8,0x40,0x4b,0x02,0x98,0x46,0x7e,0x00,0x1f,0xe6,0xfc,0x50,0x20,0x40,
+0x7d,0x61,0x18,0x07,0xfe,0x00,0x1f,0xef,0xfe,0x52,0xd8,0x40,0x4d,0x32,0x98,0x40,
+0xfe,0x00,0x20,0x60,0x00,0x00,0x20,0x40,0x74,0x38,0x58,0x00,0x00,0x00,0x67,0xec,
+0x42,0x18,0x67,0xe4,0x42,0x22,0x67,0xe2,0x42,0x26,0x67,0xe2,0x00,0x30,0x67,0xec,
+0x00,0x32,0x67,0xe2,0x43,0x36,0x67,0xe4,0x46,0x52,0x67,0xe2,0x4a,0xeb,0x67,0xe2,
+0x4a,0xed,0x67,0xe2,0x4a,0xeb,0x70,0x4a,0xec,0x01,0xdf,0x20,0x00,0x05,0x1f,0x2f,
+0xf2,0x04,0xd8,0xa0,0x4a,0xee,0x20,0x40,0x7c,0xaf,0x20,0x40,0x60,0xe5,0x20,0x20,
+0x44,0x40,0x20,0x40,0x00,0xd5,0x20,0x20,0x42,0x3a,0x68,0x42,0x4a,0xd9,0xd8,0xe0,
+0x00,0x00,0xa8,0x4f,0xff,0xff,0x20,0x20,0x80,0xe6,0xf9,0x20,0x04,0x00,0x60,0x42,
+0x4a,0xd9,0x18,0xe2,0x7e,0x00,0x67,0xe2,0x00,0x15,0x1f,0xef,0xa2,0x50,0x1f,0xe0,
+0xfe,0x01,0x67,0xe2,0x00,0x46,0xdf,0xe0,0x4b,0x02,0x9a,0x20,0xa2,0x00,0x6f,0xe2,
+0x4a,0xda,0x1f,0xe0,0xfe,0x01,0x67,0xe2,0x4a,0xda,0x20,0x20,0x42,0x4c,0x18,0xe0,
+0x8e,0x01,0x28,0xe0,0x1e,0x08,0x24,0x20,0x80,0xd7,0x20,0x20,0x42,0x4a,0x6f,0xe4,
+0x00,0x1e,0xda,0x20,0x4b,0x02,0x9a,0x26,0x7e,0x00,0x1f,0xe6,0xfc,0x50,0x20,0x40,
+0x7d,0x61,0x18,0x07,0xfe,0x00,0x98,0x00,0x0e,0x00,0x6f,0xe2,0x4a,0xd9,0xf9,0x3f,
+0xfe,0x00,0x67,0xe2,0x4a,0xd9,0x6f,0xe2,0x4a,0xda,0x1f,0xe0,0xff,0xff,0x67,0xe2,
+0x4a,0xda,0x20,0x60,0x00,0x00,0x20,0x40,0x40,0x34,0x20,0x40,0x4c,0x86,0x20,0x40,
+0x00,0xff,0x20,0x40,0x01,0x04,0x20,0x40,0x40,0x1d,0x20,0x40,0x4b,0x3f,0x20,0x20,
+0x40,0x0f,0x6f,0xe2,0x4a,0xda,0xc1,0x03,0x80,0x00,0x6f,0xe2,0x4a,0xe5,0x24,0x7a,
+0x00,0x00,0x20,0x20,0x42,0xf4,0x6f,0xe2,0x4a,0xda,0xc1,0x03,0x80,0x00,0x6f,0xe2,
+0x4a,0xdd,0x24,0x7a,0x00,0x00,0x6f,0xe2,0x4a,0xe5,0x24,0x7a,0x00,0x00,0x6f,0xe2,
+0x40,0x93,0xc4,0x00,0x80,0x00,0x18,0x00,0x0e,0x05,0x20,0x40,0x7c,0xf1,0x24,0x7a,
+0x00,0x00,0x78,0x48,0x7c,0x00,0x68,0x44,0x40,0xb1,0x18,0x42,0x36,0x00,0x20,0x20,
+0x43,0x6f,0xda,0x20,0x4b,0x02,0xdf,0x20,0x00,0x07,0x20,0x20,0x42,0x60,0x20,0x40,
+0x01,0x19,0x24,0x22,0x81,0x31,0x20,0x20,0x40,0x25,0xda,0x60,0x01,0x1b,0x20,0x20,
+0x42,0x5d,0xc3,0x00,0xc2,0x62,0x20,0x40,0x42,0xaf,0x20,0x40,0x42,0x93,0x98,0x46,
+0x7e,0x00,0x1f,0xe0,0xfe,0x01,0x20,0x21,0x01,0x28,0x6a,0x42,0x4a,0xea,0x1a,0x43,
+0xa4,0x00,0x1a,0x40,0xa4,0x05,0x9a,0x40,0xfe,0x00,0x24,0x21,0x42,0x62,0x70,0x4a,
+0xea,0x00,0x20,0x20,0x42,0x89,0x98,0x00,0x24,0x00,0x6f,0xe2,0x4a,0xea,0x1f,0xe0,
+0xfe,0x01,0x67,0xe2,0x4a,0xea,0x1a,0x20,0x8c,0x02,0xef,0xe4,0x00,0x06,0x20,0x3a,
+0x42,0x89,0x20,0x40,0x42,0xbb,0x20,0x20,0x01,0x1c,0x20,0x40,0x02,0x15,0x24,0x7a,
+0x00,0x00,0x20,0x40,0x01,0x36,0x1f,0x26,0x7c,0x00,0x20,0x20,0x40,0x2d,0xdf,0x20,
+0x00,0x07,0x68,0x42,0x00,0x15,0x18,0x40,0x84,0x01,0x18,0x46,0x7c,0x06,0x20,0x21,
+0x01,0x3c,0xd8,0x40,0x00,0x00,0x60,0x42,0x00,0x15,0x18,0x4f,0xfe,0x50,0xda,0x20,
+0x4b,0x02,0x9a,0x20,0xa2,0x00,0xef,0xe2,0x00,0x11,0xc2,0x80,0x81,0x44,0xc3,0x80,
+0x00,0x00,0xc3,0x81,0x80,0x00,0xc2,0x00,0x01,0x38,0x20,0x60,0x00,0x00,0x20,0x40,
+0x42,0x3f,0x20,0x62,0x80,0x00,0x20,0x20,0x43,0x2f,0x70,0x4a,0xd8,0x00,0x20,0x40,
+0x48,0xa5,0x20,0x20,0x43,0xcc,0x58,0x00,0x00,0x00,0x1c,0xe2,0x7c,0x00,0x20,0x22,
+0x81,0x56,0x6f,0xe2,0x81,0x24,0x68,0x42,0x81,0x25,0x98,0x46,0x7c,0x00,0x20,0x21,
+0x01,0x54,0x18,0x42,0x7e,0x00,0x9c,0xe6,0x7e,0x00,0x1f,0xe0,0xfe,0x01,0x1f,0xe0,
+0xfe,0x08,0x37,0xd9,0x82,0x00,0x9e,0x20,0xfe,0x00,0x68,0x48,0x41,0x5c,0x98,0x40,
+0xfe,0x00,0x68,0x46,0x41,0x70,0x98,0x4f,0xfe,0x00,0x1f,0xec,0xfe,0x00,0x1f,0xf1,
+0xfe,0x00,0x1f,0xe0,0xfe,0x6e,0xd8,0x40,0x0e,0xa6,0x98,0x46,0xfc,0x00,0x20,0x40,
+0x7d,0x61,0x18,0x07,0xfe,0x00,0x1f,0xf0,0x7e,0x00,0x18,0x07,0x04,0x00,0x98,0x41,
+0xfe,0x00,0x68,0x4c,0x41,0x64,0x20,0x40,0x7d,0x07,0x18,0x42,0x32,0x00,0x6f,0xec,
+0x4b,0x0a,0x20,0x20,0x48,0x50,0x6f,0xe2,0x4b,0x02,0x20,0x20,0x4b,0x74,0x20,0x60,
+0x00,0x00,0x79,0x3f,0x80,0x2c,0x70,0x44,0xe1,0x00,0x20,0x40,0x79,0x64,0x20,0x40,
+0x5f,0xf8,0x78,0x57,0x7c,0x00,0x20,0x40,0x5a,0xc0,0x20,0x21,0x57,0x83,0x20,0x40,
+0x4c,0x27,0x20,0x40,0x57,0xed,0x20,0x40,0x58,0x63,0x24,0x2c,0x57,0x75,0x20,0x56,
+0x85,0xb2,0x6f,0xe2,0x4a,0xd3,0x24,0x5a,0x01,0x81,0x20,0x40,0x57,0x91,0x20,0x36,
+0xd7,0x62,0xc5,0x16,0x57,0x62,0x20,0x20,0x57,0x6f,0x79,0x20,0x00,0x2c,0x78,0x56,
+0xfc,0x00,0x20,0x60,0x00,0x00,0x78,0x37,0x7c,0x00,0x20,0x40,0x58,0x9b,0x20,0x56,
+0x85,0xb2,0x6f,0xe2,0x4a,0xd3,0x24,0x5a,0x01,0x81,0x20,0x36,0xd7,0x62,0xc5,0x16,
+0x57,0x62,0x20,0x20,0x57,0x6f,0x20,0x40,0x57,0x84,0x20,0x40,0x00,0xea,0xd8,0xa0,
+0x04,0x3b,0x18,0x00,0x72,0x50,0x20,0x20,0x7c,0xaf,0x18,0x42,0x7e,0x00,0x20,0x40,
+0x7d,0x2b,0x1c,0x30,0x7e,0x00,0x79,0x20,0x7e,0x2c,0x20,0x40,0x7d,0x14,0x79,0x3f,
+0xfe,0x2c,0x20,0x40,0x4a,0x76,0x20,0x40,0x7d,0x14,0x20,0x74,0x00,0x00,0x20,0x40,
+0x01,0xa0,0x20,0x20,0x4a,0x2f,0x1b,0x42,0x7e,0x00,0x20,0x40,0x01,0x9f,0x20,0x20,
+0x4a,0xe9,0x20,0x40,0x7d,0x14,0x98,0x00,0x0c,0x00,0x79,0x3f,0x8c,0x10,0x20,0x20,
+0x7d,0x1f,0x20,0x40,0x68,0xc4,0x20,0x40,0x60,0xd7,0x20,0x40,0x01,0xa7,0x20,0x20,
+0x40,0x0a,0x20,0x75,0x80,0x00,0x20,0x20,0x7b,0x9a,0x70,0x0a,0x95,0x02,0x20,0x40,
+0x7b,0xab,0x20,0x40,0x00,0xea,0x20,0x20,0x00,0xa6,0x20,0x20,0x43,0xdf,0x78,0x28,
+0x7c,0x00,0x6f,0xe4,0x00,0x3e,0x1f,0xe3,0x7e,0x00,0xd8,0x40,0x05,0x00,0x98,0x40,
+0xfe,0x00,0x20,0x40,0x4a,0x23,0x20,0x40,0x48,0xe6,0x18,0x00,0x48,0x03,0x20,0x40,
+0x48,0xc8,0x20,0x40,0x44,0x26,0x20,0x40,0x49,0xf0,0x20,0x20,0x44,0xff,0x79,0x3f,
+0x80,0x00,0x6f,0xe2,0x01,0x7e,0x1f,0xe1,0x7e,0x03,0xd8,0xa0,0x05,0x4d,0xc0,0x01,
+0xc5,0xb6,0xc5,0x08,0xc5,0xe0,0x6f,0xe2,0x4a,0xdc,0x20,0x3a,0x45,0xb0,0x20,0x40,
+0x02,0xeb,0x24,0x22,0xc6,0x39,0x20,0x20,0x45,0xb0,0xc5,0x07,0xc6,0x1c,0x6f,0xe4,
+0x01,0x5d,0xd8,0x40,0x01,0xe0,0x98,0x46,0x7c,0x00,0x20,0x21,0x46,0x39,0x6f,0xe2,
+0x02,0x5f,0xc2,0x80,0xc6,0x49,0xc3,0x00,0x45,0xc5,0xc3,0x00,0x81,0xcf,0x20,0x20,
+0x46,0x49,0x70,0x02,0x5d,0x02,0x6f,0xe4,0x02,0x5b,0xc0,0x80,0x46,0x49,0xd8,0xa0,
+0x12,0x00,0x20,0x20,0x45,0xe0,0xc5,0x07,0xc6,0x1c,0x6f,0xe4,0x01,0x5d,0xd8,0x40,
+0x01,0xe0,0x98,0x46,0x7c,0x00,0x20,0x21,0x46,0x39,0x6f,0xe2,0x02,0x5d,0xc0,0x00,
+0xc5,0xd9,0xc0,0x01,0x01,0xdd,0x20,0x20,0x46,0x49,0xd8,0xa0,0x12,0x00,0x20,0x20,
+0x45,0xde,0x09,0x80,0x00,0x10,0x20,0x23,0x46,0x33,0x6f,0xe2,0x43,0x35,0xc0,0x00,
+0xc6,0x33,0x20,0x20,0x45,0xe9,0x6f,0xe2,0x02,0x5d,0xc0,0x00,0x81,0xe8,0xc0,0x01,
+0x01,0xf8,0x20,0x20,0x4a,0x8b,0x6f,0xe4,0x02,0x59,0x68,0x44,0x01,0x5d,0x98,0x40,
+0xfe,0x00,0x67,0xe4,0x02,0x59,0xc0,0x00,0x4a,0x8b,0x68,0x44,0x10,0x00,0x18,0x40,
+0x84,0x04,0x98,0x46,0x7c,0x00,0x20,0x42,0x81,0xf2,0x20,0x20,0x46,0x09,0x6f,0xe2,
+0x00,0x46,0x67,0xe2,0x4a,0xdc,0x20,0x20,0x47,0x43,0x6f,0xe2,0x00,0x46,0x67,0xe2,
+0x4a,0xdc,0x20,0x20,0x47,0x47,0x6f,0xe4,0x02,0x5b,0x68,0x44,0x01,0x5d,0x98,0x40,
+0xfe,0x00,0x67,0xe4,0x02,0x5b,0xc0,0x00,0x4a,0x8b,0x68,0x44,0x12,0x00,0x18,0x40,
+0x84,0x04,0x98,0x46,0x7c,0x00,0x20,0x42,0x81,0xf5,0x20,0x20,0x46,0x09,0x20,0x40,
+0x02,0xeb,0x24,0x62,0x80,0x00,0x20,0x20,0x47,0x25,0x6f,0xe2,0x02,0x66,0xc0,0x00,
+0x82,0x0f,0x70,0x02,0x66,0x00,0x6f,0xe2,0x02,0x5f,0xc4,0x00,0x80,0x00,0xd8,0xc0,
+0x12,0x00,0x20,0x40,0x51,0x53,0x6f,0xe2,0x02,0x66,0xc0,0x00,0x82,0x13,0x20,0x60,
+0x00,0x00,0x20,0x40,0x47,0x37,0x6f,0xe2,0x02,0x5f,0x24,0x7a,0x00,0x00,0x20,0x20,
+0x02,0xe9,0x20,0x40,0x47,0x3d,0x20,0x20,0x02,0x10,0x6f,0xe2,0x04,0x3b,0xc3,0x00,
+0x7d,0xc9,0x68,0x48,0x04,0x57,0x20,0x40,0x4a,0x7a,0x98,0x46,0x16,0x00,0x58,0x00,
+0x06,0x40,0x99,0x66,0x7c,0x00,0x24,0x21,0x7d,0xc9,0x58,0x00,0x02,0xbc,0x99,0x66,
+0x7c,0x00,0x20,0x21,0x7d,0xc9,0x20,0x20,0x7d,0xc7,0x78,0x37,0x7c,0x00,0x6f,0xe2,
+0x00,0x30,0xc2,0x80,0xc7,0x0b,0x6f,0xe2,0x4a,0xd8,0x1f,0xe0,0xfe,0x01,0x67,0xe2,
+0x4a,0xd8,0x68,0x48,0x00,0x4d,0x20,0x40,0x02,0x18,0x24,0x3a,0x02,0x3c,0x6f,0xe2,
+0x4a,0xd8,0x1f,0xe6,0x7c,0x03,0x24,0x21,0x02,0x37,0x6f,0xe2,0x4a,0xe5,0x20,0x40,
+0x04,0x9f,0x20,0x22,0xfd,0xc7,0x6f,0xe2,0x00,0x47,0xc3,0x81,0x80,0x00,0x6f,0xe2,
+0x00,0x48,0x24,0x7a,0x00,0x00,0x6f,0xe2,0x00,0x4b,0xc3,0x83,0x00,0x00,0x20,0x20,
+0x46,0xfa,0x6f,0xe2,0x4a,0xe0,0x24,0x3a,0x46,0xfa,0x6f,0xe2,0x4a,0xe5,0x20,0x40,
+0x04,0x9f,0x24,0x22,0xc6,0xfa,0x6f,0xe2,0x4a,0xd8,0x1f,0xe6,0x7c,0x12,0x24,0x21,
+0x46,0xfa,0x20,0x20,0x7d,0xc7,0x20,0x30,0x82,0x50,0x70,0x89,0x55,0xd4,0x20,0x00,
+0x00,0x04,0x70,0x89,0x55,0xd2,0x20,0x00,0x00,0x04,0x70,0x89,0x55,0xd1,0x20,0x00,
+0x00,0x04,0x6f,0xe2,0x41,0xdf,0xc0,0x00,0x02,0x4e,0xc0,0x00,0x82,0x5e,0xc0,0x01,
+0x02,0x4e,0xc0,0x01,0x82,0x5e,0xc0,0x02,0x02,0x5e,0xc0,0x10,0x02,0x5e,0x70,0x89,
+0x55,0xd0,0x70,0x89,0x56,0xe0,0x18,0x00,0x2a,0x08,0x18,0x00,0x2a,0x00,0x78,0x50,
+0xfc,0x00,0x78,0x50,0x7c,0x00,0x78,0x2f,0x7c,0x00,0x70,0x89,0x02,0x00,0x70,0x89,
+0x01,0x00,0x70,0x89,0x00,0x00,0x70,0x89,0x03,0x00,0x70,0x89,0x04,0x70,0x6f,0xe2,
+0x89,0x06,0x79,0x20,0x7e,0x00,0x67,0xe2,0x89,0x06,0x20,0x60,0x00,0x00,0x70,0x89,
+0x55,0xd0,0x70,0x89,0x56,0xc0,0x20,0x20,0x02,0x50,0x60,0x42,0x00,0x17,0x20,0x40,
+0x49,0x2a,0x20,0x40,0x49,0x80,0x58,0x00,0x05,0x00,0x20,0x40,0x4a,0x8e,0x6f,0xe2,
+0x89,0x06,0x79,0x20,0x7e,0x00,0x67,0xe2,0x89,0x06,0x20,0x20,0x49,0x37,0x70,0x89,
+0x06,0x7c,0x20,0x75,0x80,0x00,0x58,0x00,0x00,0x00,0x67,0xe4,0x41,0xdd,0x1c,0x43,
+0x7e,0x00,0x67,0xe8,0x40,0x94,0x20,0x60,0x00,0x00,0x20,0x20,0x4b,0x7f,0x58,0x00,
+0x02,0x98,0x67,0xe4,0x41,0xf4,0x58,0x00,0x00,0x00,0x67,0xe4,0x41,0xf6,0x67,0xe4,
+0x41,0xf2,0x67,0xe4,0x41,0xfe,0x58,0x00,0x03,0x19,0x67,0xe4,0x41,0xfa,0x58,0x00,
+0x03,0x2b,0x67,0xe4,0x41,0xea,0x58,0x00,0x03,0x2f,0x67,0xe4,0x45,0x41,0x20,0x40,
+0x4d,0xaf,0x20,0x40,0x4d,0xbc,0x20,0x40,0x4c,0x2a,0x20,0x20,0x50,0x4d,0x6f,0xe2,
+0x4a,0xe0,0x20,0x7a,0x00,0x00,0x68,0x48,0x4a,0xe1,0x1c,0x42,0x7e,0x00,0x98,0x46,
+0x7e,0x00,0x24,0x21,0x02,0x8b,0xd8,0x40,0x03,0xe8,0x98,0x46,0x7c,0x00,0x24,0x61,
+0x00,0x00,0x70,0x4a,0xe0,0x00,0x20,0x60,0x00,0x00,0x6f,0xe2,0x4a,0xe5,0x20,0x7a,
+0x00,0x00,0x68,0x48,0x4a,0xe6,0x1c,0x42,0x7e,0x00,0x98,0x46,0x7e,0x00,0x24,0x21,
+0x02,0x96,0xd8,0x40,0x06,0x40,0x98,0x46,0x7c,0x00,0x24,0x61,0x00,0x00,0x70,0x4a,
+0xe5,0x00,0x20,0x60,0x00,0x00,0x20,0x40,0x7b,0xc1,0x20,0x40,0x02,0x8d,0x20,0x40,
+0x02,0x82,0x20,0x40,0x04,0x9b,0x20,0x40,0x56,0x48,0x24,0x7a,0x00,0x00,0x6f,0xe4,
+0x4f,0xfc,0x68,0x44,0x4f,0xfe,0x98,0x46,0x7c,0x00,0x20,0x62,0x80,0x00,0x20,0x20,
+0x4e,0x41,0x6f,0xe2,0x0a,0x95,0xc0,0x04,0x83,0x01,0xc0,0x01,0x02,0xdd,0xc0,0x0a,
+0x03,0x09,0xc0,0x02,0x82,0xcd,0xc0,0x04,0x02,0xb4,0xc0,0x0c,0x67,0xfd,0xc0,0x05,
+0x82,0xb0,0xc0,0x00,0x82,0xae,0xc0,0x0a,0x82,0xb1,0x20,0x20,0x4d,0xdf,0x20,0x40,
+0x4e,0x2c,0x20,0x20,0x4c,0xaa,0x20,0x60,0x00,0x00,0x20,0x40,0x4c,0xe8,0x20,0x40,
+0x02,0xc3,0x20,0x20,0x4e,0x1f,0x20,0x40,0x02,0xf6,0x6f,0xe4,0x46,0x52,0x79,0x20,
+0x7e,0x04,0x67,0xe4,0x46,0x52,0x70,0x0a,0xff,0x00,0x58,0x00,0x00,0x07,0x20,0x40,
+0x50,0xa5,0x6f,0xe2,0x00,0x46,0x1f,0xf2,0x7e,0x00,0x68,0x42,0x45,0x3c,0x98,0x41,
+0xfe,0x00,0xe7,0xe2,0x00,0x0a,0x6f,0xec,0x00,0x40,0xe7,0xec,0x00,0x0a,0x20,0x20,
+0x67,0xb9,0x6f,0xe2,0x4a,0xda,0x1f,0xeb,0xfe,0x00,0xd8,0x40,0x00,0x1a,0x98,0x40,
+0x84,0x00,0x60,0x44,0x40,0xaf,0x1f,0xeb,0xfe,0x00,0xd8,0x40,0x00,0x60,0x98,0x40,
+0x84,0x00,0x60,0x44,0x40,0xb3,0x20,0x60,0x00,0x00,0x20,0x40,0x02,0xc3,0x6f,0xe2,
+0x00,0x46,0x67,0xe2,0x4a,0xdd,0x6f,0xe2,0x4a,0xde,0x20,0x5a,0x4e,0x32,0x20,0x20,
+0x4d,0xd7,0xda,0x20,0x4a,0xee,0xdf,0x20,0x00,0x04,0xef,0xe2,0x00,0x11,0x1f,0xe1,
+0x04,0x1f,0x60,0x42,0x04,0xf8,0x2f,0xef,0xfe,0x07,0x20,0x40,0x82,0xf8,0x1a,0x20,
+0xa2,0x05,0xc2,0x00,0x02,0xd5,0x20,0x60,0x00,0x00,0x70,0x49,0xc0,0x00,0x20,0x40,
+0x02,0xc3,0x20,0x40,0x02,0xd3,0x6f,0xe2,0x4a,0xde,0x20,0x5a,0x4e,0x2f,0x58,0x00,
+0x00,0x00,0x67,0xe4,0x46,0x52,0x20,0x40,0x02,0xf4,0x20,0x40,0x02,0xef,0x20,0x40,
+0x02,0xeb,0x24,0x62,0x80,0x00,0x70,0x02,0x5f,0x00,0x70,0x4a,0xdc,0x00,0x20,0x60,
+0x00,0x00,0x6f,0xe2,0x4a,0xdc,0x68,0x42,0x00,0x46,0x98,0x46,0x7c,0x00,0x20,0x60,
+0x00,0x00,0x20,0x40,0x04,0xa2,0x24,0x62,0x80,0x00,0x58,0x00,0x00,0x00,0x67,0xe6,
+0x42,0x32,0x20,0x20,0x04,0xc3,0x20,0x40,0x04,0x9e,0x24,0x62,0x80,0x00,0x70,0x4a,
+0xdd,0x00,0x20,0x60,0x00,0x00,0x70,0x0a,0xff,0x03,0x58,0x00,0x00,0x01,0x20,0x40,
+0x50,0xa5,0x6f,0xe2,0x00,0x46,0x1f,0xf2,0x7e,0x00,0x68,0x42,0x04,0xf8,0x98,0x41,
+0xfe,0x00,0xe7,0xe2,0x00,0x0a,0x20,0x20,0x67,0xb9,0x20,0x40,0x02,0xf8,0x6f,0xe2,
+0x4a,0xed,0x24,0x7a,0x00,0x00,0x6f,0xe4,0x46,0x52,0x79,0x3f,0xfe,0x04,0x67,0xe4,
+0x46,0x52,0x70,0x49,0xc0,0x32,0x20,0x60,0x00,0x00,0x20,0x40,0x4c,0xe4,0x20,0x40,
+0x06,0xbf,0x20,0x40,0x4e,0x29,0x20,0x40,0x02,0xc3,0x6f,0xe2,0x4a,0xde,0x20,0x3a,
+0x4d,0x6b,0x20,0x20,0x4d,0x75,0xc6,0x84,0x80,0x00,0x6f,0xe2,0x49,0xc0,0x20,0x7a,
+0x00,0x00,0x1f,0xe0,0xff,0xff,0x67,0xe2,0x49,0xc0,0x24,0x7a,0x00,0x00,0x6f,0xe4,
+0x46,0x52,0xc2,0x80,0x7c,0x0c,0x20,0x60,0x00,0x00,0x20,0x40,0x4f,0x11,0x20,0x74,
+0x00,0x00,0x1a,0x22,0x7e,0x00,0x67,0xe4,0x46,0x71,0x20,0x40,0x03,0x25,0x67,0xe2,
+0x46,0x70,0x68,0x44,0x04,0x74,0x60,0x44,0x46,0x73,0x20,0x40,0x5b,0x6c,0x24,0x3a,
+0x4a,0x8b,0x6f,0xe2,0x04,0x9e,0x20,0x20,0x50,0x42,0x6f,0xe2,0x4a,0xce,0x24,0x3a,
+0x03,0x29,0x1f,0x22,0x7e,0x00,0x20,0x60,0x00,0x00,0x1a,0x42,0x7e,0x00,0x20,0x60,
+0x00,0x00,0x20,0x40,0x05,0x80,0x24,0x34,0x4d,0x4b,0x20,0x20,0x4d,0xbd,0x20,0x20,
+0x4d,0xc8,0x20,0x40,0x4d,0xd7,0x70,0x0a,0xff,0x07,0x6f,0xe4,0x04,0xfb,0x20,0x7a,
+0x00,0x00,0xd8,0x40,0x00,0xfe,0x20,0x40,0x7d,0xb5,0x1f,0xe2,0x72,0x00,0x6f,0xe4,
+0x04,0xfb,0x9f,0x26,0x7e,0x00,0x67,0xe4,0x04,0xfb,0x1f,0x20,0xfe,0x01,0x20,0x40,
+0x50,0xa5,0x6f,0xe2,0x00,0x46,0x1f,0xf2,0x7e,0x00,0x68,0x42,0x04,0xf8,0x98,0x41,
+0xfe,0x00,0xe7,0xe2,0x00,0x0a,0x6f,0xe4,0x04,0xfd,0x1f,0xe2,0x0c,0x00,0x20,0x40,
+0x67,0xc1,0x18,0xc2,0x7e,0x00,0x67,0xe4,0x04,0xfd,0x20,0x40,0x67,0xb9,0x20,0x20,
+0x03,0x30,0x6f,0xe2,0x0a,0xff,0xc0,0x02,0x83,0xb9,0xc0,0x04,0x83,0x59,0xc0,0x14,
+0x83,0x6d,0xc0,0x13,0x84,0x47,0xc0,0x06,0x03,0xe2,0xc0,0x3b,0x03,0xeb,0xc0,0x3b,
+0x83,0xf1,0xc0,0x3c,0x03,0xf6,0xc0,0x0a,0x84,0x30,0xc0,0x7f,0x04,0x33,0xc0,0x08,
+0x83,0xb1,0xc0,0x14,0x03,0xae,0xc0,0x18,0x03,0xab,0xc0,0x1c,0x83,0x6a,0xc0,0x1b,
+0x03,0x5c,0xc0,0x09,0x03,0x66,0x20,0x20,0x4e,0x5c,0x20,0x40,0x03,0x94,0x24,0x7a,
+0x00,0x00,0x20,0x20,0x4e,0xd9,0x20,0x40,0x03,0x94,0x24,0x7a,0x00,0x00,0x20,0x20,
+0x4f,0xd1,0x6f,0xe2,0x0b,0x00,0xc0,0x84,0x50,0x1c,0x1a,0x22,0x06,0x00,0xef,0xf0,
+0x00,0x03,0x67,0xf0,0x44,0x68,0x20,0x40,0x50,0x1f,0x20,0x20,0x5e,0x9f,0x20,0x40,
+0x03,0x94,0x24,0x7a,0x00,0x00,0x20,0x40,0x50,0x1f,0x20,0x20,0x7c,0x2c,0xe8,0x42,
+0x00,0x03,0x60,0x42,0x4a,0xde,0x20,0x20,0x50,0x1f,0x20,0x40,0x03,0x80,0x24,0x7a,
+0x00,0x00,0x6f,0xe4,0x46,0x52,0xc3,0x02,0x03,0xb7,0x6f,0xe2,0x45,0x3d,0xc0,0x00,
+0x03,0xb7,0x1a,0x22,0x06,0x00,0xe8,0xe2,0x00,0x03,0x18,0xe1,0x0e,0x0f,0x60,0xe2,
+0x04,0xf8,0x20,0x40,0x07,0x6b,0x24,0x20,0x83,0xb7,0x20,0x40,0x07,0x96,0x70,0x0b,
+0x01,0x01,0xef,0xe2,0x00,0x03,0x68,0x42,0x45,0x3b,0x98,0x40,0x84,0x00,0x60,0x42,
+0x45,0x3b,0x20,0x20,0x07,0x82,0x1a,0x22,0x6e,0x00,0xe8,0x42,0x00,0x03,0x18,0x51,
+0x84,0x00,0x20,0x40,0x03,0x8d,0x24,0x22,0x83,0xa3,0x70,0x0b,0x01,0x00,0xc5,0x84,
+0xfd,0xc7,0x1e,0xe2,0x22,0x00,0xef,0xe2,0x00,0x11,0x1f,0xf1,0xfe,0x00,0x20,0x40,
+0x04,0x9f,0x20,0x22,0xfd,0xc9,0x20,0x20,0x7d,0xc7,0xda,0x60,0x03,0x8f,0x20,0x20,
+0x42,0x5d,0xc3,0x00,0x42,0x62,0x1a,0x20,0x8c,0x01,0xef,0xe2,0x00,0x06,0xc2,0x80,
+0x42,0x62,0x20,0x20,0x42,0x72,0x1a,0x22,0x6e,0x00,0x20,0x40,0x03,0x9c,0x24,0x22,
+0x83,0xa3,0x70,0x0b,0x01,0x00,0x20,0x40,0x5c,0x70,0x24,0x3a,0x7d,0xc7,0x70,0x0b,
+0x01,0x01,0x20,0x20,0x7d,0xc9,0xda,0x60,0x03,0x9e,0x20,0x20,0x42,0x5d,0x1a,0x20,
+0x8c,0x01,0xef,0xe2,0x00,0x06,0xc2,0x80,0x7d,0xbd,0x20,0x40,0x7d,0xbb,0x20,0x20,
+0x42,0x62,0x20,0x40,0x03,0xb7,0x20,0x20,0x7d,0xc7,0x70,0x0b,0x01,0x00,0xc5,0x84,
+0xfd,0xc7,0x20,0x40,0x04,0x9e,0x24,0x22,0xfd,0xc7,0x70,0x0b,0x01,0x01,0x20,0x20,
+0x7d,0xc9,0x20,0x40,0x03,0xa5,0x24,0x7a,0x00,0x00,0x20,0x20,0x4f,0x94,0x20,0x40,
+0x03,0xa5,0x24,0x7a,0x00,0x00,0x20,0x20,0x4f,0x4a,0x20,0x40,0x03,0x80,0x24,0x7a,
+0x00,0x00,0x20,0x40,0x66,0x9e,0x24,0x7a,0x00,0x00,0x70,0x0b,0x01,0x01,0x20,0x20,
+0x7c,0x0c,0x70,0x0b,0x01,0x01,0x20,0x20,0x50,0x1c,0x20,0x40,0x03,0x80,0x24,0x7a,
+0x00,0x00,0x1a,0x22,0x06,0x00,0xe8,0xe2,0x00,0x03,0x18,0xe1,0x0e,0x0f,0x60,0xe2,
+0x04,0xf8,0x20,0x40,0x07,0x6b,0x24,0x20,0x83,0xb7,0x20,0x40,0x07,0x96,0x6f,0xe2,
+0x46,0x52,0xc3,0x02,0x03,0xb7,0x6f,0xe2,0x45,0x3a,0x20,0x7a,0x00,0x00,0x6f,0xe4,
+0x45,0x45,0xc0,0x80,0x03,0xcf,0x6f,0xe2,0x0b,0x00,0x1f,0xe0,0xff,0xff,0x67,0xe4,
+0x45,0x45,0x1a,0x22,0x06,0x00,0xef,0xe2,0x00,0x03,0x18,0x62,0x7e,0x00,0x67,0xe4,
+0x45,0x43,0x20,0x40,0x03,0xd5,0x6f,0xe2,0x04,0xf8,0x1f,0xe3,0xfe,0x00,0x67,0xe2,
+0x45,0x2f,0x20,0x40,0x6b,0x0c,0x20,0x20,0x07,0x82,0x20,0x40,0x4e,0xcb,0xd8,0x40,
+0x00,0x7f,0x20,0x40,0x7d,0xb5,0x67,0xe4,0x46,0x6a,0x20,0x20,0x4e,0xc6,0x6f,0xe2,
+0x46,0x79,0xc3,0x82,0x80,0x00,0x20,0x40,0x66,0x9e,0x24,0x7a,0x00,0x00,0x70,0x00,
+0x7c,0x18,0x20,0x20,0x50,0xda,0x70,0x0b,0x01,0x00,0x20,0x20,0x50,0xbd,0x1a,0x22,
+0x06,0x00,0xef,0xe2,0x00,0x03,0xc0,0x00,0x4f,0x1c,0xc0,0x00,0xcf,0x1f,0xc0,0x01,
+0x4f,0x25,0xc0,0x01,0x83,0xe9,0x20,0x20,0x50,0x1c,0x58,0x00,0x00,0x01,0x20,0x20,
+0x4f,0x20,0xd8,0x40,0x00,0x0c,0x20,0x40,0x5b,0x4d,0x18,0xc0,0x8b,0xfe,0x58,0x00,
+0x00,0x00,0xe7,0xe4,0x00,0x05,0x20,0x20,0x50,0x1f,0x20,0x40,0x03,0xfa,0x20,0x40,
+0x04,0x17,0x58,0x00,0x00,0x00,0xe7,0xe4,0x00,0x05,0x20,0x20,0x04,0x29,0xef,0xe2,
+0x00,0x03,0x20,0x40,0x03,0xfe,0x20,0x40,0x04,0x05,0x20,0x20,0x04,0x29,0x20,0x40,
+0x04,0x1b,0x58,0x28,0x00,0x02,0xe7,0xe6,0x00,0x05,0x20,0x60,0x00,0x00,0x67,0xe2,
+0x0a,0x96,0x20,0x40,0x04,0x1b,0x59,0x28,0x03,0x02,0xe7,0xe8,0x00,0x05,0x6f,0xe2,
+0x0a,0x96,0xe7,0xe6,0x00,0x05,0x20,0x60,0x00,0x00,0x20,0x40,0x04,0x1b,0x20,0x40,
+0x04,0x17,0x20,0x40,0x04,0x17,0x58,0x00,0x00,0x00,0xe7,0xe4,0x00,0x05,0x18,0x40,
+0x85,0xff,0x20,0x40,0x5b,0x4d,0x18,0xc0,0x8c,0x04,0xef,0xe2,0x00,0x06,0xc2,0x82,
+0x04,0x12,0xc2,0x82,0x84,0x12,0x18,0x40,0x84,0x01,0x20,0x60,0x00,0x00,0x20,0x40,
+0x04,0x1b,0x5a,0x29,0x02,0x02,0xe7,0xf0,0x00,0x05,0x18,0x40,0x85,0xff,0x20,0x60,
+0x00,0x00,0xef,0xe2,0x00,0x03,0x1f,0xe2,0x72,0x00,0xe7,0xe2,0x00,0x05,0x20,0x20,
+0x67,0xed,0x20,0x40,0x04,0x1e,0xe0,0x44,0x00,0x05,0x20,0x60,0x00,0x00,0x6f,0xe4,
+0x44,0x8e,0x98,0x00,0x0c,0x00,0xef,0xe4,0x00,0x06,0x20,0x7a,0x00,0x00,0x1f,0xe0,
+0x84,0x01,0xef,0xe2,0x00,0x06,0x98,0xc0,0x8c,0x00,0xef,0xe2,0x00,0x06,0x98,0xc0,
+0x8c,0x00,0x18,0xc2,0x0a,0x00,0x20,0x20,0x04,0x20,0x60,0x44,0x0a,0x9e,0x70,0x0a,
+0xff,0x29,0x58,0x00,0x00,0x02,0x20,0x40,0x50,0xa5,0x68,0x44,0x0a,0x9e,0xe0,0x44,
+0x00,0x0a,0x20,0x20,0x67,0xb9,0xef,0xe6,0x00,0x03,0x67,0xe6,0x40,0xaa,0x20,0x20,
+0x50,0x1f,0xef,0xe2,0x00,0x03,0xc0,0x00,0x04,0x3e,0xc0,0x00,0x84,0x38,0xc0,0x01,
+0x04,0x44,0x20,0x20,0x50,0x1c,0xef,0xe4,0x00,0x03,0x1f,0xe2,0x24,0x00,0xef,0xe2,
+0x00,0x03,0x1f,0xe2,0x22,0x00,0xd8,0x40,0x00,0x00,0x20,0x20,0x50,0x2a,0xef,0xe4,
+0x00,0x03,0x1f,0xe2,0x0a,0x00,0xef,0xe2,0x00,0x03,0x1f,0xe2,0x72,0x00,0x20,0x40,
+0x67,0xda,0x20,0x20,0x50,0x1f,0xef,0xe2,0x00,0x03,0x1f,0xe2,0x2c,0x00,0x20,0x20,
+0x50,0x1f,0x20,0x40,0x50,0x1f,0x20,0x20,0x4d,0x85,0x6f,0xe2,0x46,0x79,0xc2,0x81,
+0x85,0x92,0x6f,0xe2,0x46,0x79,0xc3,0x83,0x80,0x00,0x18,0x40,0xff,0xfd,0xd8,0x40,
+0x00,0xc8,0x20,0x40,0x7d,0xb5,0x68,0x42,0x46,0x7a,0x20,0x40,0x7d,0xb5,0x1f,0xe2,
+0x22,0x00,0x18,0x42,0x7e,0x00,0x9a,0x26,0x7e,0x00,0x67,0xe2,0x46,0x7a,0x68,0x44,
+0x46,0x7b,0x18,0x40,0x85,0xff,0x20,0x40,0x5b,0x4d,0x20,0x3a,0x04,0x66,0xe8,0x48,
+0x00,0x06,0x59,0x28,0x03,0x02,0x98,0x46,0x7c,0x00,0x24,0x22,0x84,0x66,0xef,0xe2,
+0x00,0x06,0xc2,0x82,0x84,0x62,0xc2,0x82,0x4f,0x01,0x20,0x20,0x04,0x66,0x20,0x40,
+0x06,0xc5,0x68,0x44,0x46,0x7b,0x20,0x40,0x5e,0x4d,0x20,0x20,0x4f,0x03,0x70,0x46,
+0x7a,0x00,0x70,0x0b,0x01,0x01,0x20,0x40,0x50,0xe0,0x20,0x20,0x50,0x1c,0x20,0x40,
+0x56,0x48,0x24,0x7a,0x00,0x00,0x6f,0xe4,0x4f,0xfc,0x68,0x44,0x4f,0xfe,0x98,0x46,
+0x7c,0x00,0x20,0x22,0x84,0x71,0x20,0x20,0x4e,0x41,0x6f,0xe2,0x45,0x3d,0xc1,0x00,
+0x00,0x00,0x20,0x40,0x07,0x6f,0x24,0x62,0x80,0x00,0x62,0x24,0x0a,0xaa,0x1a,0x20,
+0x8c,0x00,0xef,0xe2,0x00,0x06,0x1f,0xe1,0x7e,0x1f,0x1f,0xe3,0xfe,0x00,0x67,0xe2,
+0x45,0x2f,0x20,0x40,0x69,0x33,0x6a,0x24,0x0a,0xaa,0x1a,0x22,0x0c,0x00,0x20,0x40,
+0x07,0x9d,0x20,0x40,0x6a,0xec,0x6a,0x24,0x0a,0xaa,0x1a,0x22,0x0a,0x00,0x20,0x20,
+0x07,0x89,0x20,0x40,0x04,0x95,0x6f,0xe2,0x4a,0xdd,0x20,0x3a,0x04,0x88,0x6f,0xe2,
+0x00,0x47,0xc3,0x81,0x80,0x00,0x20,0x40,0x4c,0x8f,0x20,0x40,0x03,0x10,0x20,0x40,
+0x04,0x9b,0x20,0x40,0x04,0x6a,0x20,0x40,0x56,0x48,0x24,0x7a,0x00,0x00,0x20,0x40,
+0x51,0x83,0x20,0x40,0x56,0x48,0x24,0x7a,0x00,0x00,0x20,0x40,0x53,0x3e,0x20,0x40,
+0x56,0x48,0x24,0x7a,0x00,0x00,0x20,0x20,0x6a,0x59,0x20,0x40,0x04,0x9e,0x24,0x62,
+0x80,0x00,0x20,0x40,0x66,0xfd,0x20,0x40,0x75,0x91,0x20,0x40,0x75,0x6a,0x20,0x60,
+0x00,0x00,0x20,0x40,0x05,0xb2,0x20,0x21,0x4d,0x54,0x20,0x20,0x4d,0x56,0x6f,0xe2,
+0x4a,0xdd,0x68,0x42,0x00,0x46,0x98,0x46,0x7c,0x00,0x20,0x60,0x00,0x00,0x6f,0xe2,
+0x4a,0xdb,0x68,0x42,0x00,0x46,0x98,0x46,0x7c,0x00,0x20,0x60,0x00,0x00,0x20,0x40,
+0x04,0xa2,0x24,0x62,0x80,0x00,0x20,0x20,0x6b,0x82,0x20,0x40,0x56,0x49,0x24,0x3a,
+0x4a,0x8b,0x20,0x40,0x56,0x4f,0x20,0x40,0x56,0x66,0x6f,0xe2,0x00,0x46,0x67,0xe2,
+0x4a,0xdb,0x20,0x60,0x00,0x00,0x18,0xc2,0x22,0x00,0x6f,0xe2,0x00,0x46,0x67,0xe2,
+0x4a,0xe5,0x1c,0x42,0x7e,0x00,0x67,0xe8,0x4a,0xe6,0x20,0x40,0x56,0x48,0x24,0x7a,
+0x00,0x00,0x1a,0x22,0x0c,0x00,0x20,0x20,0x51,0x56,0xda,0x40,0x00,0x00,0x20,0x40,
+0x56,0x49,0x24,0x3a,0x4a,0x8b,0x20,0x40,0x56,0x58,0xda,0x40,0x14,0x00,0xd8,0xe0,
+0x00,0x00,0x20,0x20,0x56,0x21,0x20,0x40,0x56,0x38,0x6f,0xe6,0x42,0x32,0x24,0x7a,
+0x00,0x00,0x70,0x4a,0xdb,0x00,0x20,0x60,0x00,0x00,0x20,0x40,0x56,0x3f,0x20,0x20,
+0x04,0xc1,0x6f,0xe2,0x4a,0xdb,0x24,0x7a,0x00,0x00,0x6f,0xe6,0x42,0x32,0x20,0x60,
+0x00,0x00,0x6f,0xe2,0x4a,0xdb,0x20,0x3a,0x56,0x4c,0x20,0x40,0x04,0xa2,0x20,0x22,
+0xd6,0x4c,0x20,0x20,0x7d,0xc7,0x6f,0xe2,0x4a,0xde,0x20,0x3a,0x6c,0xd1,0x6f,0xe2,
+0x4a,0xdf,0x68,0x44,0x45,0x47,0x98,0x40,0x8a,0x00,0x6f,0xe2,0x4a,0xec,0xe7,0xe2,
+0x00,0x05,0x20,0x20,0x6c,0xd1,0x6f,0xe2,0x4a,0xce,0x24,0x3a,0x57,0x09,0x20,0x40,
+0x57,0x09,0x70,0x49,0xcb,0x01,0x70,0x49,0xcc,0x00,0x58,0x00,0x00,0x00,0x67,0xf0,
+0x49,0xc1,0x58,0x00,0x00,0x1b,0x67,0xe4,0x49,0xc9,0x20,0x60,0x00,0x00,0x20,0x40,
+0x49,0xba,0x78,0x23,0xfc,0x00,0x78,0x24,0xfc,0x00,0x09,0x80,0x00,0x08,0x19,0x89,
+0x7e,0x00,0x67,0xe2,0x02,0xd5,0x09,0x80,0x00,0x08,0x19,0x89,0x7e,0x00,0xe7,0xe2,
+0x00,0x05,0x1f,0xe2,0x72,0x00,0x20,0x3a,0x58,0x8b,0x20,0x20,0x58,0x87,0x20,0x40,
+0x58,0xa3,0x20,0x40,0x49,0x15,0x68,0x42,0x00,0x17,0x20,0x40,0x49,0x1c,0x20,0x00,
+0x05,0xdc,0x20,0x40,0x49,0x21,0x78,0x28,0x7c,0x00,0xd9,0x60,0x15,0x7c,0x20,0x20,
+0x58,0x69,0x20,0x40,0x57,0xaf,0x20,0x40,0x04,0xfa,0x20,0x20,0x58,0xa7,0x20,0x36,
+0x82,0x66,0xc5,0x16,0x02,0x66,0x20,0x20,0x57,0xbe,0x6f,0xe2,0x4a,0xce,0x24,0x3a,
+0x58,0xb3,0x6f,0xe2,0x49,0xcb,0x08,0x00,0x86,0x08,0xef,0xe2,0x00,0x06,0x1f,0xe2,
+0x72,0x00,0x08,0x00,0x86,0x08,0x20,0x22,0xd8,0xbc,0x20,0x20,0x58,0xb9,0x6f,0xe2,
+0x4a,0xe5,0x24,0x7a,0x00,0x00,0x6f,0xe2,0x4a,0xce,0x24,0x3a,0x58,0xc4,0x6f,0xe2,
+0x44,0x56,0xc0,0x00,0xd8,0xd3,0x6f,0xe2,0x44,0x57,0x1f,0xf2,0x7e,0x00,0x1f,0xeb,
+0xfe,0x00,0x67,0xe2,0x49,0xcb,0x68,0x42,0x43,0x41,0x18,0x40,0xfe,0x06,0x67,0xe2,
+0x49,0xcc,0x6f,0xec,0x44,0x72,0x67,0xec,0x49,0xcd,0x18,0x42,0x72,0x00,0xd8,0xc0,
+0x43,0x42,0x20,0x40,0x7c,0xcf,0x20,0x20,0x58,0xde,0x6f,0xe2,0x4a,0xce,0x24,0x3a,
+0x58,0xf7,0xd8,0x40,0x00,0x04,0x6f,0xe2,0x44,0x57,0x7d,0x3a,0x04,0x06,0x60,0x42,
+0x49,0xcb,0x68,0x42,0x43,0x61,0x18,0x40,0xfe,0x06,0x67,0xe2,0x49,0xcc,0x6f,0xec,
+0x44,0x72,0x67,0xec,0x49,0xcd,0xd8,0xc0,0x43,0x62,0x18,0x42,0x72,0x00,0x20,0x40,
+0x7c,0xcf,0x20,0x40,0x58,0xa1,0x20,0x20,0x5a,0xe2,0x6f,0xe2,0x04,0x3b,0xc3,0x80,
+0x00,0x00,0x20,0x20,0x5b,0x09,0x20,0x40,0x5a,0xc9,0xc6,0x16,0x00,0x00,0x20,0x40,
+0x59,0x9a,0x6f,0xe2,0x02,0xd5,0x2f,0xef,0xfe,0x04,0x79,0x20,0x80,0x2a,0x1f,0xe3,
+0x7e,0x00,0x98,0x42,0xfe,0x00,0x2f,0xef,0xfe,0x02,0x79,0x20,0x80,0x0f,0xc6,0x07,
+0x80,0x00,0x6f,0xe2,0x02,0xd6,0x20,0x3a,0x05,0x3f,0x6f,0xe2,0x04,0x3b,0xc3,0x02,
+0x05,0x3f,0x20,0x40,0x73,0x42,0x20,0x40,0x72,0xb2,0x7d,0x3a,0x00,0x0f,0x24,0x7a,
+0x00,0x00,0x68,0x42,0x04,0x52,0x79,0x40,0x04,0x02,0x60,0x42,0x04,0x52,0x6f,0xe2,
+0x4a,0xce,0x24,0x7a,0x00,0x00,0x20,0x20,0x05,0x45,0x6f,0xe2,0x02,0xd6,0x20,0x7a,
+0x00,0x00,0x6f,0xe2,0x02,0xd5,0x2f,0xe0,0x06,0x01,0x20,0x20,0x85,0x6d,0x2f,0xe0,
+0x06,0x02,0x20,0x20,0x85,0x4d,0x20,0x60,0x00,0x00,0x6f,0xe4,0x02,0xd9,0xc1,0x82,
+0x00,0x00,0xef,0xe6,0x00,0x06,0x67,0xe6,0x04,0x73,0x79,0x20,0x00,0x0f,0xc0,0x09,
+0x05,0x61,0xc0,0x29,0x05,0x63,0xc0,0x0b,0x05,0x5a,0xc0,0x0c,0x5e,0x3b,0xc0,0x01,
+0x5c,0xa1,0xc0,0x0f,0x06,0xbf,0x79,0x3f,0x80,0x0f,0x20,0x60,0x00,0x00,0x58,0x00,
+0x0b,0x1e,0x67,0xe4,0x49,0xc5,0x20,0x40,0x05,0x66,0x1f,0x20,0xf3,0xfe,0xda,0x20,
+0x02,0xe0,0x20,0x40,0x5a,0xbe,0x20,0x20,0x05,0x86,0x20,0x40,0x05,0x63,0x20,0x20,
+0x05,0x7d,0x20,0x40,0x05,0x66,0xda,0x20,0x02,0xde,0x20,0x20,0x5a,0xbe,0x6f,0xe2,
+0x02,0xd6,0x1f,0xe0,0xf3,0xf9,0x1f,0xe0,0xff,0xfc,0x67,0xe4,0x49,0xc1,0xe8,0x44,
+0x00,0x06,0x60,0x44,0x49,0xc3,0x20,0x60,0x00,0x00,0x79,0x20,0x00,0x0f,0x20,0x40,
+0x05,0x75,0x6f,0xe2,0x04,0x73,0xc0,0x09,0x05,0x7d,0xc0,0x0b,0x05,0x7c,0xc1,0x29,
+0x00,0x00,0x79,0x3f,0x80,0x0f,0x20,0x60,0x00,0x00,0x6f,0xe2,0x02,0xd6,0x68,0x44,
+0x49,0xc1,0x98,0x40,0x84,0x00,0x60,0x44,0x49,0xc1,0x1f,0xe2,0x72,0x00,0xda,0x20,
+0x02,0xd7,0x20,0x20,0x5a,0xbe,0x20,0x20,0x05,0x86,0x20,0x40,0x05,0x80,0x24,0x74,
+0x00,0x00,0x20,0x20,0x5e,0x13,0x20,0x40,0x7d,0xc1,0x6f,0xe4,0x49,0xc3,0x68,0x44,
+0x49,0xc1,0x98,0x46,0x7c,0x00,0x24,0x62,0x80,0x00,0x20,0x20,0x7d,0xbf,0x6f,0xe4,
+0x49,0xc5,0x1f,0xe2,0x0a,0x00,0x6f,0xe2,0x02,0xd6,0x1f,0xe2,0x72,0x00,0x20,0x40,
+0x7c,0xdc,0x18,0xa2,0x7e,0x00,0x67,0xe4,0x49,0xc5,0x20,0x40,0x05,0x80,0x24,0x74,
+0x00,0x00,0xd8,0xe0,0x00,0x03,0x20,0x40,0x50,0xe6,0x20,0x20,0x05,0x92,0x20,0x40,
+0x5c,0x74,0x24,0x7a,0x00,0x00,0x70,0x0b,0x22,0x17,0x58,0x00,0x0b,0x1e,0x67,0xe4,
+0x49,0xc7,0x68,0x44,0x0b,0x1e,0x18,0x40,0x84,0x04,0x58,0x00,0x00,0xf9,0x20,0x40,
+0x7d,0xb5,0x1f,0xe0,0xa5,0xfc,0x18,0x00,0x02,0x02,0x1f,0xe2,0x22,0x00,0x20,0x40,
+0x5c,0x32,0x6f,0xe4,0x49,0xc7,0x1f,0xe2,0x0c,0x00,0x1a,0x22,0x72,0x00,0x20,0x40,
+0x7c,0xcf,0x18,0xc2,0x7e,0x00,0x67,0xe4,0x49,0xc7,0x6f,0xe4,0x0b,0x1e,0x9a,0x46,
+0x7e,0x00,0x67,0xe4,0x0b,0x1e,0x20,0x3a,0x05,0xae,0xd8,0x40,0x00,0xf9,0x20,0x40,
+0x7d,0xb5,0x1f,0xe2,0x24,0x00,0x18,0x00,0x02,0x01,0x20,0x20,0x05,0x9d,0x58,0x00,
+0x00,0x00,0x67,0xe4,0x49,0xc5,0xd8,0xe0,0x00,0x03,0x20,0x20,0x50,0xe2,0x70,0x4a,
+0xd3,0x00,0x68,0x44,0x4f,0xf0,0x6f,0xe4,0x4f,0xf2,0x98,0x46,0x22,0x00,0x68,0x44,
+0x4f,0xf4,0x6f,0xe4,0x4f,0xf6,0x60,0x44,0x4a,0xd6,0x67,0xe4,0x4a,0xd4,0x98,0x46,
+0x7e,0x00,0x20,0x21,0x05,0xc2,0x20,0x22,0x85,0xc2,0x1a,0x22,0x04,0x00,0x6f,0xe4,
+0x4a,0xd4,0x98,0x40,0xfe,0x00,0x68,0x44,0x4a,0xd6,0x98,0x46,0x7e,0x00,0xd8,0x40,
+0x03,0x00,0x98,0x46,0x7c,0x00,0x24,0x61,0x00,0x00,0x70,0x4a,0xd3,0x01,0x20,0x60,
+0x00,0x00,0x68,0x42,0x04,0x52,0x28,0x4c,0x00,0x05,0x20,0x60,0x80,0x00,0x6f,0xe2,
+0x02,0xd5,0x1f,0xe3,0xfe,0x00,0x98,0x42,0xfe,0x00,0xc4,0x01,0x80,0x00,0x79,0x3f,
+0x84,0x05,0x79,0x40,0x04,0x03,0x60,0x42,0x04,0x52,0x28,0x40,0x06,0x03,0x24,0x60,
+0x80,0x00,0x6f,0xe2,0x4a,0xce,0x24,0x3a,0x05,0xd7,0x6f,0xe2,0x49,0xcd,0x20,0x20,
+0x05,0xd8,0x6f,0xe2,0x43,0xb0,0xc0,0x02,0xd9,0xac,0x6f,0xe2,0x44,0x97,0xc0,0x01,
+0x59,0xb0,0x20,0x60,0x00,0x00,0x6f,0xe2,0x04,0x52,0xc3,0x82,0x80,0x00,0x20,0x40,
+0x5a,0x1c,0x6f,0xe2,0x4a,0xce,0x24,0x3a,0x59,0xfc,0x20,0x40,0x5c,0x53,0x20,0x3a,
+0x5a,0x3e,0xef,0xe2,0x00,0x06,0xe8,0x42,0x00,0x06,0x18,0x42,0x22,0x00,0x9a,0x26,
+0x7e,0x00,0x20,0x40,0x06,0x01,0x20,0x40,0x7d,0xb5,0x1f,0xe2,0x04,0x00,0xef,0xe2,
+0x00,0x06,0x1f,0xe2,0x02,0x00,0x1a,0x22,0x7e,0x00,0x98,0xc0,0x8c,0x00,0xd8,0xa0,
+0x49,0xcd,0x18,0x42,0x72,0x00,0x20,0x40,0x7c,0xcf,0x20,0x40,0x5a,0x2e,0x20,0x40,
+0x5a,0x40,0x20,0x40,0x5c,0x53,0xef,0xe2,0x00,0x06,0x1f,0xe2,0x22,0x00,0x18,0xc2,
+0x26,0x00,0xe8,0x42,0x00,0x06,0x18,0x42,0x24,0x00,0x9a,0x46,0x7e,0x00,0x20,0x40,
+0x06,0x01,0x20,0x40,0x7d,0xb5,0x9a,0x40,0xfe,0x00,0xe7,0xe2,0x00,0x13,0x9a,0x26,
+0x7c,0x00,0x24,0x62,0x80,0x00,0x20,0x20,0x5c,0x76,0x18,0xc2,0x0a,0x00,0x68,0x44,
+0x49,0xc9,0x18,0xa2,0x0c,0x00,0x20,0x60,0x00,0x00,0x6f,0xe2,0x4a,0xce,0x24,0x3a,
+0x5a,0x41,0x60,0x42,0x49,0xcc,0x68,0x42,0x04,0x52,0x79,0x20,0x04,0x05,0x18,0x41,
+0x7e,0xfc,0x98,0x21,0xfe,0x00,0x67,0xe2,0x04,0x52,0x1f,0xe1,0x7e,0x1f,0x28,0x0f,
+0xfe,0x29,0x79,0x20,0xfe,0x04,0x67,0xe2,0x49,0xcb,0x6f,0xe2,0x49,0xcb,0x28,0x20,
+0x06,0x01,0x24,0x20,0x86,0x16,0x6f,0xe2,0x49,0xcc,0x20,0x7a,0x00,0x00,0x6f,0xe2,
+0x04,0x3b,0xc4,0x02,0x00,0x00,0x20,0x40,0x73,0x42,0x20,0x20,0x72,0x99,0x6f,0xe2,
+0x4a,0xce,0x24,0x3a,0x72,0x9a,0xda,0x60,0x49,0xcb,0x68,0x4a,0x43,0xd5,0x20,0x40,
+0x72,0x77,0x18,0x00,0x70,0x08,0x98,0x00,0x5e,0x00,0x18,0x00,0x22,0x00,0x20,0x40,
+0x72,0x63,0x20,0x40,0x72,0xe8,0xda,0x60,0x49,0xcd,0x6f,0xe2,0x49,0xcc,0x1f,0xe0,
+0xa5,0xff,0x9a,0x60,0x8a,0x00,0x18,0x00,0x70,0x0c,0x1d,0xe2,0x7e,0x00,0xe7,0xe8,
+0x00,0x05,0x20,0x40,0x72,0x8e,0x6f,0xe2,0x49,0xcc,0x1f,0xe0,0xfe,0x04,0x67,0xe2,
+0x49,0xcc,0x20,0x20,0x72,0xae,0xc6,0x07,0x80,0x00,0xc6,0x16,0x00,0x00,0x20,0x40,
+0x5c,0x70,0x24,0x7a,0x00,0x00,0x6f,0xe2,0x02,0xd5,0x1f,0xe1,0x7e,0x03,0x67,0xe2,
+0x44,0xde,0xef,0xe2,0x00,0x06,0x67,0xe2,0x44,0xdd,0x20,0x7a,0x00,0x00,0x18,0xc2,
+0x7e,0x00,0x67,0xe4,0x44,0xdf,0x6f,0xe2,0x44,0xde,0xc0,0x01,0x86,0x74,0x20,0x40,
+0x06,0x46,0xd8,0xe0,0x00,0x03,0x24,0x34,0x4b,0xec,0x20,0x40,0x4b,0xf0,0x70,0x4a,
+0xe0,0x01,0x1c,0x42,0x7e,0x00,0x67,0xe8,0x4a,0xe1,0x20,0x20,0x5a,0x6b,0x6f,0xe2,
+0x44,0xde,0xc0,0x01,0x06,0x4a,0xc0,0x00,0x86,0x5e,0x20,0x60,0x00,0x00,0x6f,0xe4,
+0x44,0xdf,0x1f,0xe2,0x0c,0x00,0xef,0xe4,0x00,0x06,0x67,0xe4,0x44,0xce,0xef,0xe4,
+0x00,0x06,0x20,0x40,0x5a,0x7a,0x24,0x74,0x00,0x00,0x68,0x42,0x44,0xdd,0x60,0x42,
+0x44,0xd0,0x6f,0xe4,0x44,0xce,0x1f,0xe0,0xfe,0x04,0x98,0x46,0x7c,0x00,0x20,0x22,
+0xfd,0xbf,0x6f,0xe2,0x44,0xdd,0x1f,0xe2,0x72,0x00,0xd8,0xa0,0x0c,0x29,0x6f,0xe4,
+0x44,0xdf,0x1f,0xe2,0x0c,0x00,0x20,0x40,0x7c,0xdc,0x20,0x20,0x7d,0xc1,0x20,0x40,
+0x5a,0x99,0x24,0x74,0x00,0x00,0x6f,0xe2,0x44,0xd0,0xd8,0xa0,0x0c,0x29,0x98,0xa0,
+0xa2,0x00,0x68,0x42,0x44,0xdd,0x98,0x40,0xfe,0x00,0x67,0xe2,0x44,0xd0,0x6f,0xe2,
+0x44,0xdd,0x1f,0xe2,0x72,0x00,0x1a,0x22,0x0a,0x00,0x6f,0xe4,0x44,0xdf,0x1f,0xe2,
+0x0c,0x00,0x20,0x40,0x7c,0xcf,0x58,0x00,0x0c,0x29,0x67,0xe4,0x44,0xdf,0x6f,0xe4,
+0x44,0xce,0x1f,0xe0,0xfe,0x04,0x68,0x42,0x44,0xd0,0x98,0x46,0x7c,0x00,0x20,0x22,
+0xfd,0xbf,0x20,0x20,0x7d,0xc1,0x6f,0xe2,0x02,0xd7,0xc0,0x04,0x06,0x78,0xc0,0x0a,
+0x06,0x84,0x20,0x20,0x60,0x45,0xda,0x20,0x00,0x09,0xda,0x40,0x00,0x09,0x20,0x40,
+0x5c,0x22,0x58,0x00,0x00,0x21,0xe7,0xf0,0x00,0x05,0x6f,0xe2,0x02,0xd8,0x1f,0xe1,
+0x7e,0x20,0x20,0x3a,0x06,0x82,0x70,0x4a,0xce,0x00,0x20,0x60,0x00,0x00,0x70,0x4a,
+0xce,0x01,0x20,0x60,0x00,0x00,0xef,0xe4,0x00,0x06,0x67,0xe4,0x49,0xc9,0x20,0x20,
+0x06,0x87,0xda,0x20,0x00,0x09,0xda,0x40,0x00,0x15,0x20,0x40,0x5c,0x22,0x58,0x00,
+0x00,0xfb,0xe7,0xe4,0x00,0x05,0x58,0x00,0x08,0x48,0xe7,0xe4,0x00,0x05,0x58,0x00,
+0x00,0xfb,0xe7,0xe4,0x00,0x05,0x58,0x00,0x08,0x48,0xe7,0xe4,0x00,0x05,0x20,0x60,
+0x00,0x00,0x6f,0xe2,0x4a,0xce,0x20,0x3a,0x06,0x97,0xd8,0xc0,0x43,0xae,0x20,0x20,
+0x06,0x98,0xd8,0xc0,0x49,0xcb,0xd8,0xa0,0x0a,0xce,0x20,0x20,0x06,0xa9,0x6f,0xe2,
+0x43,0x40,0x20,0x7a,0x00,0x00,0x6f,0xe2,0x4a,0xe5,0x24,0x7a,0x00,0x00,0xd8,0xe0,
+0x00,0x00,0x20,0x40,0x7c,0xf1,0x24,0x7a,0x00,0x00,0x20,0x40,0x06,0x93,0x20,0x40,
+0x5a,0xd5,0x6f,0xe2,0x4a,0xce,0x20,0x3a,0x06,0xa7,0xd8,0xa0,0x43,0xae,0x20,0x20,
+0x06,0xa8,0xd8,0xa0,0x49,0xcb,0xd8,0xc0,0x0a,0xce,0xdf,0x20,0x00,0x27,0x20,0x20,
+0x7c,0xcf,0x18,0x0a,0x7e,0x00,0xd8,0x40,0x00,0x1f,0x98,0x41,0x7e,0x00,0x1f,0xe0,
+0xfe,0x03,0x20,0x40,0x5a,0xef,0x6f,0xe2,0x0a,0xbe,0x68,0x42,0x44,0x5f,0x98,0x46,
+0x7c,0x00,0x24,0x22,0xda,0xd5,0x20,0x20,0x5a,0xec,0xef,0xe4,0x00,0x06,0xc0,0x02,
+0x06,0xba,0xc0,0x03,0x5e,0xd4,0xc0,0x02,0xde,0x96,0x20,0x60,0x00,0x00,0xef,0xe6,
+0x00,0x06,0x67,0xe6,0x04,0x73,0xc0,0x08,0x06,0xc1,0xc0,0x04,0x06,0xca,0x20,0x20,
+0x5c,0x8d,0xd8,0xe0,0x00,0x07,0x20,0x20,0x50,0xe2,0x20,0x40,0x5e,0x91,0x20,0x40,
+0x5a,0xb3,0xd9,0x60,0x00,0x01,0x20,0x20,0x5d,0xde,0xd8,0xe0,0x00,0x07,0x20,0x20,
+0x50,0xe6,0x20,0x40,0x5c,0xa9,0x67,0xe4,0x44,0x78,0x20,0x20,0x5c,0xa2,0x20,0x40,
+0x5e,0x91,0x20,0x40,0x5a,0xbb,0x20,0x20,0x06,0xcd,0x68,0x44,0x44,0x2c,0x60,0x44,
+0x0a,0x9e,0x20,0x40,0x5b,0x36,0x20,0x40,0x5b,0x4d,0x18,0xc0,0x8d,0xfe,0x18,0xc2,
+0x7e,0x00,0x67,0xe4,0x04,0x98,0x68,0x44,0x44,0x44,0x58,0x00,0x2a,0x00,0x98,0x46,
+0x7c,0x00,0x20,0x22,0x86,0xd9,0x20,0x20,0x5d,0x2d,0xd8,0x40,0x2a,0x00,0x20,0x40,
+0x5b,0x5c,0x20,0x3a,0x5e,0x56,0x20,0x20,0x5d,0x8b,0x20,0x60,0x00,0x00,0x20,0x20,
+0x68,0x46,0x6f,0xe2,0x00,0x7d,0xc0,0x08,0x06,0xf0,0xc0,0x0b,0x86,0xf6,0xc0,0x1e,
+0x86,0xed,0xc0,0x04,0x06,0xe9,0xc0,0x03,0x86,0xe6,0x20,0x20,0x60,0xfe,0x20,0x40,
+0x62,0x17,0x70,0x00,0x72,0x05,0x20,0x60,0x00,0x00,0x20,0x40,0x63,0xdb,0x70,0x04,
+0xd0,0x01,0x20,0x40,0x62,0x2f,0x20,0x20,0x7c,0x12,0x20,0x40,0x62,0xf2,0x70,0x09,
+0xb3,0x00,0x20,0x60,0x00,0x00,0x68,0x42,0x05,0x4e,0x18,0x46,0x7c,0x06,0x20,0x21,
+0x06,0xf4,0x20,0x20,0x62,0x06,0x70,0x00,0x7e,0x24,0x20,0x20,0x61,0x34,0x20,0x20,
+0x62,0xd2,0x78,0x54,0x7c,0x00,0x20,0x40,0x66,0xa3,0x6f,0xe2,0x00,0x48,0x20,0x7a,
+0x00,0x00,0xc2,0x83,0x86,0xfd,0x20,0x20,0x63,0xf2,0xc0,0x42,0x07,0x00,0xc0,0x41,
+0x87,0x03,0x20,0x20,0x64,0x21,0x20,0x40,0x07,0x06,0x6f,0xe2,0x00,0x48,0x20,0x20,
+0x64,0x7b,0x20,0x40,0x07,0x06,0x6f,0xe2,0x00,0x48,0x20,0x20,0x64,0xef,0x6f,0xe2,
+0x46,0x2c,0x20,0x3a,0x65,0x0d,0x20,0x20,0x65,0x06,0x6f,0xe2,0x40,0x9e,0x79,0x3f,
+0xfe,0x03,0x67,0xe2,0x40,0x9e,0x58,0x00,0x00,0x01,0x67,0xe4,0x04,0xca,0x20,0x60,
+0x00,0x00,0x6f,0xe2,0x44,0x90,0x20,0x3a,0x5e,0xd0,0x20,0x40,0x74,0x38,0x20,0x20,
+0x79,0x32,0x20,0x20,0x02,0xa3,0xda,0x20,0x46,0x42,0x20,0x40,0x7d,0x9c,0x20,0x7a,
+0x00,0x00,0xc0,0x00,0xfb,0xff,0xc0,0x01,0x7c,0x04,0xc0,0x06,0xfc,0x16,0xc0,0x07,
+0x7c,0x1c,0x20,0x60,0x00,0x00,0x6f,0xe2,0x46,0x51,0xc0,0x00,0x07,0x1f,0x20,0x20,
+0x6a,0x0d,0x6f,0xe4,0x02,0x60,0x1f,0xe2,0x0c,0x00,0x20,0x40,0x69,0x79,0x6f,0xe2,
+0x04,0xf8,0xc0,0x00,0x07,0x25,0x20,0x20,0x07,0x2b,0x6f,0xe2,0x04,0xf9,0xc0,0x1f,
+0xe9,0x3e,0xc0,0x39,0xe9,0x47,0xc0,0x77,0x87,0x32,0xc0,0x29,0xea,0x07,0x20,0x60,
+0x00,0x00,0x6f,0xe2,0x04,0xf9,0xc0,0x39,0xe9,0xe2,0xc0,0x1f,0xe9,0xe6,0xc0,0x77,
+0x87,0xa7,0xc0,0x7f,0x87,0xa9,0xc0,0x29,0x87,0xbb,0x20,0x60,0x00,0x00,0x6f,0xe4,
+0x04,0xfd,0x1f,0xe2,0x0c,0x00,0x20,0x40,0x69,0x84,0x6f,0xe2,0x04,0xff,0xc0,0x20,
+0x87,0x3c,0xc0,0x20,0x69,0x6e,0xc0,0x38,0x87,0x3f,0xc0,0x38,0x07,0x52,0xc0,0x24,
+0xe9,0xbe,0x20,0x20,0x6a,0x58,0x20,0x40,0x69,0x70,0x20,0x40,0x07,0x7f,0x20,0x20,
+0x69,0x68,0x20,0x40,0x69,0x72,0x20,0x20,0x69,0xa9,0x6f,0xe2,0x45,0x3c,0x1f,0xe2,
+0x04,0x00,0x79,0x20,0x04,0x07,0x20,0x40,0x07,0x4d,0xe0,0x42,0x00,0x05,0x20,0x60,
+0x00,0x00,0x6f,0xe2,0x04,0xf8,0x20,0x7a,0x00,0x00,0xd8,0x40,0x00,0x00,0x20,0x40,
+0x07,0x4d,0xe0,0x42,0x00,0x05,0x20,0x60,0x00,0x00,0xd8,0xa0,0x4a,0xee,0x1f,0xe0,
+0xff,0xff,0x1f,0xef,0xfe,0x05,0x98,0xa0,0x8a,0x00,0x20,0x60,0x00,0x00,0x20,0x40,
+0x07,0x41,0x20,0x40,0x07,0x84,0x6f,0xe2,0x4a,0xed,0x1f,0xe0,0xfe,0x01,0x67,0xe2,
+0x4a,0xed,0x20,0x40,0x07,0x5c,0x70,0x0a,0x95,0x08,0x20,0x40,0x7b,0xab,0x20,0x40,
+0x69,0x72,0x20,0x20,0x69,0xba,0x68,0x42,0x4a,0xeb,0x6f,0xe2,0x45,0x3c,0x1f,0xe0,
+0x8f,0xff,0xf9,0x20,0x04,0x00,0x60,0x42,0x4a,0xeb,0xd8,0xe0,0x00,0x00,0xa8,0x4f,
+0xff,0xff,0x20,0x20,0x87,0x67,0x18,0xe0,0xfe,0x01,0x67,0xe2,0x4a,0xec,0x20,0x60,
+0x00,0x00,0x18,0xe0,0x8e,0x01,0x18,0xe6,0x7c,0x03,0x20,0x21,0x07,0x62,0x20,0x60,
+0x00,0x00,0x18,0xe0,0x8f,0xff,0x6f,0xe2,0x4a,0xeb,0xaf,0xef,0xff,0xff,0x20,0x60,
+0x00,0x00,0xd8,0xe0,0x00,0x00,0x6f,0xe2,0x4a,0xeb,0x20,0x3a,0x7d,0xbb,0xaf,0xef,
+0xff,0xff,0x24,0x20,0x87,0x7b,0x18,0xef,0xfe,0x05,0xda,0x20,0x4a,0xee,0x9a,0x20,
+0xa2,0x00,0x1a,0x20,0x8c,0x02,0xef,0xe2,0x00,0x06,0x20,0x3a,0x07,0x7b,0x20,0x20,
+0x7d,0xbd,0x18,0xe0,0x8e,0x01,0x18,0xe6,0x7c,0x03,0x24,0x21,0x7d,0xbb,0x20,0x20,
+0x07,0x70,0x6f,0xe2,0x45,0x2f,0x1f,0xe3,0x7e,0x00,0x20,0x20,0x07,0x85,0x6f,0xe2,
+0x04,0xf8,0x20,0x20,0x07,0x85,0x6f,0xe2,0x45,0x3c,0x1f,0xe0,0xff,0xff,0x1f,0xef,
+0xfe,0x05,0xd8,0xa0,0x4a,0xee,0x98,0xa0,0x8a,0x00,0x18,0xa0,0x8a,0x01,0x6f,0xe2,
+0x45,0x3a,0xe7,0xe2,0x00,0x05,0x6f,0xe2,0x45,0x3b,0xe7,0xe2,0x00,0x05,0x6f,0xe2,
+0x45,0x37,0xe7,0xe2,0x00,0x05,0x6f,0xe2,0x45,0x38,0xe7,0xe2,0x00,0x05,0x20,0x60,
+0x00,0x00,0x6f,0xe2,0x45,0x2f,0x1f,0xe3,0x7e,0x00,0x20,0x20,0x07,0x99,0x6f,0xe2,
+0x04,0xf8,0x20,0x20,0x07,0x99,0x6f,0xe2,0x45,0x3c,0x1f,0xe0,0xff,0xff,0x1f,0xef,
+0xfe,0x05,0xd8,0xc0,0x4a,0xee,0x98,0xc0,0x8c,0x00,0x18,0xc0,0x8c,0x01,0xef,0xe2,
+0x00,0x06,0x67,0xe2,0x45,0x3a,0xef,0xe2,0x00,0x06,0x67,0xe2,0x45,0x3b,0xef,0xe2,
+0x00,0x06,0x67,0xe2,0x45,0x37,0xef,0xe2,0x00,0x06,0x67,0xe2,0x45,0x38,0x20,0x60,
+0x00,0x00,0x20,0x40,0x07,0x96,0x20,0x20,0x07,0xb2,0x20,0x40,0x07,0x96,0x6f,0xe4,
+0x04,0xfd,0x1f,0xe2,0x0c,0x00,0x1f,0xe0,0xfe,0x01,0x67,0xe4,0x04,0xfd,0xef,0xe2,
+0x00,0x06,0x68,0x42,0x45,0x3a,0x98,0x40,0xfe,0x00,0x67,0xe2,0x45,0x3a,0x6f,0xe2,
+0x04,0xf7,0x1f,0xeb,0x7e,0x00,0x67,0xe2,0x45,0x2f,0x20,0x40,0x6b,0x01,0x20,0x40,
+0x69,0x33,0x20,0x40,0x6a,0xe9,0x20,0x40,0x07,0x82,0x20,0x40,0x6b,0x0a,0x20,0x20,
+0x6a,0x58,0x20,0x40,0x07,0x47,0x68,0xe2,0x04,0xf8,0x60,0xe2,0x4a,0xec,0x18,0xe0,
+0x8f,0xff,0x6f,0xe2,0x4a,0xeb,0xf9,0x3f,0xfe,0x00,0x67,0xe2,0x4a,0xeb,0x6f,0xe2,
+0x4a,0xed,0x1f,0xe0,0xff,0xff,0x67,0xe2,0x4a,0xed,0x70,0x0a,0x95,0x09,0x20,0x40,
+0x7b,0xab,0x20,0x20,0x6a,0x07,0xb4,0x54,0xaa,0x55,0x40,0x00,0x00,0x40,0x32,0x00,
+0x00,0x00,0x00,0x5c,0x10,0x50,0x20,0x01,0x01,0xf0,0x01,0x40,0x03,0x00,0x20,0x02,
+0x10,0x00,0xcc,0x18,0x30,0x19,0x01,0x00,0x00,0xe8,0x08,0x08,0x62,0x00,0xe8,0x09,
+0x18,0xd0,0x2c,0x01,0x04,0x44,0x02,0x20,0x06,0x00,0x44,0x00,0x00,0x02,0x00,0x20,
+0x00,0x82,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xaa,0x55,
+0x01,0x00,0x92,0x40,0x0a,0xaa,0x55,0x01,0x00,0x54,0x46,0x40,0xaa,0x55,0x01,0x00,
+0x06,0x42,0x13,0xaa,0x55,0x01,0x00,0x5b,0x41,0x01,0xaa,0x55,0x08,0x00,0x98,0x40,
+0xff,0xfb,0x8f,0xfa,0x8b,0x85,0x59,0x83,0xaa,0x55,0x01,0x00,0xde,0x4a,0x01,0xaa,
+0x55,0x03,0x00,0x14,0x42,0xd1,0x48,0x07,0xaa,0x55,0x03,0x00,0x3e,0x45,0x7f,0x00,
+0x03,0xaa,0x55,0x01,0x00,0x3d,0x45,0x01,0xaa,0x55,0x03,0x00,0x2d,0x46,0x03,0x00,
+0x04,0xaa,0x55,0x01,0x00,0x2c,0x46,0x01,0xaa,0x55,0x06,0x00,0x57,0x46,0x04,0x30,
+0x30,0x30,0x30,0x30,0xaa,0x55,0x10,0x00,0xf0,0x4f,0x00,0x1c,0xff,0x1f,0x00,0x1c,
+0x00,0x1c,0x2d,0x0d,0x85,0x0f,0x2d,0x0d,0x2d,0x0d,0xaa,0x55,0x03,0x00,0xd0,0x4a,
+0x00,0x80,0x02,0xaa,0x55,0x02,0x00,0x68,0x46,0x10,0x0b,0xaa,0x55,0x01,0x00,0x6c,
+0x46,0x07,0xaa,0x55,0x01,0x00,0x6f,0x46,0x07,0xaa,0x55,0x03,0x00,0xaa,0x40,0x24,
+0x04,0x04,0xaa,0x55,0x01,0x00,0x79,0x46,0x00,0xaa,0x55,0x01,0x00,0xbf,0x49,0x00,
+0xaa,0x55,0x01,0x00,0x91,0x40,0x00,0xaa,0x55,0x03,0x00,0x54,0x41,0x00,0x01,0x08,
+0xaa,0x55,0x01,0x00,0x74,0x41,0x02,0xaa,0x55,0x01,0x00,0x93,0x40,0x00,0xaa,0x55,
+0x01,0x00,0x6d,0x46,0x00,0xaa,0x55,0x06,0x00,0xa0,0x40,0xa7,0xac,0x2a,0x21,0x10,
+0x55,0xaa,0x55,0x07,0x00,0xe7,0x44,0x06,0x59,0x69,0x63,0x68,0x69,0x70,0xaa,0x55,
+0x03,0x00,0xe4,0x41,0x20,0x00,0x02,0xaa,0x55,0x01,0x00,0xe8,0x41,0x01,0xaa,0x55,
+0x01,0x00,0x90,0x44,0x01,0xaa,0x55,0x01,0x00,0x5f,0x44,0x07,0xaa,0x55,0x01,0x00,
+0x98,0x44,0x00,0xaa,0x55,0x04,0x00,0x75,0x46,0x2d,0x00,0x2f,0x00,0xaa,0x55,0x01,
+0x00,0x40,0x43,0x00,0xaa,0x55,0x02,0x00,0x54,0x44,0x20,0x03,0xaa,0x55,0x01,0x00,
+0x6e,0x46,0x01,0xaa,0x55,0x06,0x00,0x72,0x44,0x21,0xac,0x01,0x33,0x02,0x3a,0xaa,
+0x55,0x0b,0x00,0x81,0x43,0x0a,0x59,0x69,0x63,0x68,0x69,0x70,0x2d,0x6c,0x65,0x20,
+0xaa,0x55,0x04,0x00,0x41,0x43,0x03,0x02,0x01,0x02,0xaa,0x55,0x12,0x00,0x61,0x43,
+0x0e,0x02,0x01,0x02,0x0d,0x09,0x33,0x31,0x32,0x31,0x20,0x4d,0x6f,0x75,0x20,0x42,
+0x6c,0x65,0xaa,0x55,0x07,0x00,0x25,0x44,0x02,0x03,0x00,0x05,0x10,0x02,0x03,0xaa,
+0x55,0x08,0x00,0x68,0x44,0x08,0x00,0x10,0x00,0x00,0x00,0x2c,0x01,0xaa,0x55,0x01,
+0x00,0x78,0x44,0xf0,0xaa,0x55,0x01,0x00,0x7a,0x44,0x17,0xaa,0x55,0x02,0x00,0xcc,
+0x44,0x31,0x00,0xaa,0x55,0x01,0x00,0xd1,0x40,0x01,0xaa,0x55,0x0c,0x00,0x49,0x45,
+0x05,0x03,0x00,0x12,0x00,0x01,0x01,0x00,0x01,0x11,0x03,0x00,0xaa,0x55,0x01,0x00,
+0x5f,0x45,0x00,0xaa,0x55,0x01,0x00,0xdf,0x4a,0x96,0xaa,0x55,0x02,0x00,0x47,0x45,
+0x83,0x46,0xaa,0x55,0xb6,0x00,0x83,0x46,0x03,0x12,0x00,0x01,0x00,0x00,0x01,0x00,
+0x01,0x00,0x01,0x36,0x00,0x52,0x09,0x00,0x00,0x0a,0x00,0x01,0x00,0x01,0x09,0x00,
+0x01,0x35,0x03,0x19,0x12,0x00,0x09,0x00,0x04,0x35,0x0d,0x35,0x06,0x19,0x01,0x00,
+0x09,0x00,0x01,0x35,0x03,0x19,0x00,0x01,0x09,0x00,0x09,0x35,0x08,0x35,0x06,0x19,
+0x12,0x00,0x09,0x01,0x00,0x09,0x02,0x00,0x09,0x01,0x03,0x09,0x02,0x01,0x09,0x05,
+0xac,0x09,0x02,0x02,0x09,0x02,0x39,0x09,0x02,0x03,0x09,0x06,0x44,0x09,0x02,0x04,
+0x28,0x01,0x09,0x02,0x05,0x09,0x00,0x02,0x03,0x11,0x01,0x00,0x03,0x01,0x00,0x00,
+0x01,0x00,0x03,0x36,0x00,0x46,0x09,0x00,0x00,0x0a,0x00,0x01,0x00,0x03,0x09,0x00,
+0x01,0x35,0x03,0x19,0x11,0x01,0x09,0x00,0x02,0x0a,0x00,0x00,0x00,0x00,0x09,0x00,
+0x04,0x35,0x0c,0x35,0x03,0x19,0x01,0x00,0x35,0x05,0x19,0x00,0x03,0x08,0x01,0x09,
+0x00,0x06,0x35,0x09,0x09,0x65,0x6e,0x09,0x00,0x6a,0x09,0x01,0x00,0x09,0x01,0x00,
+0x25,0x0a,0x53,0x50,0x50,0x20,0x73,0x6c,0x61,0x76,0x65,0x00,0x00,0x00,0xaa,0x55,
+0x02,0x00,0x8e,0x44,0x41,0x47,0xaa,0x55,0x4e,0x01,0x41,0x47,0x01,0x00,0x02,0x00,
+0x28,0x02,0x01,0x18,0x02,0x00,0x02,0x03,0x28,0x01,0x20,0x03,0x00,0x02,0x05,0x2a,
+0x01,0x00,0x04,0x00,0x02,0x02,0x29,0x02,0x01,0x00,0x05,0x00,0x02,0x00,0x28,0x02,
+0x00,0x18,0x06,0x00,0x02,0x03,0x28,0x01,0x4e,0x07,0x00,0x02,0x00,0x2a,0x13,0x59,
+0x69,0x63,0x68,0x69,0x70,0x2d,0x6c,0x65,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+0x20,0x20,0x08,0x00,0x02,0x03,0x28,0x01,0x4e,0x09,0x00,0x02,0x01,0x2a,0x02,0x00,
+0x00,0x0a,0x00,0x02,0x03,0x28,0x01,0x02,0x0b,0x00,0x02,0x04,0x2a,0x08,0x10,0x00,
+0x20,0x00,0x05,0x00,0x2c,0x01,0x0c,0x00,0x02,0x00,0x28,0x10,0x55,0xe4,0x05,0xd2,
+0xaf,0x9f,0xa9,0x8f,0xe5,0x4a,0x7d,0xfe,0x43,0x53,0x53,0x49,0x0d,0x00,0x02,0x03,
+0x28,0x01,0x12,0x0e,0x00,0x10,0x16,0x96,0x24,0x47,0xc6,0x23,0x61,0xba,0xd9,0x4b,
+0x4d,0x1e,0x43,0x53,0x53,0x49,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x02,0x02,0x29,
+0x02,0x00,0x00,0x10,0x00,0x02,0x03,0x28,0x01,0x08,0x11,0x00,0x10,0xb3,0x9b,0x72,
+0x34,0xbe,0xec,0xd4,0xa8,0xf4,0x43,0x41,0x88,0x43,0x53,0x53,0x49,0x14,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x12,0x00,0x02,0x03,0x28,0x01,0x04,0x13,0x00,0x10,0xfe,0x69,0xca,0x9a,
+0x56,0x19,0xf6,0xab,0x02,0x4d,0xaa,0x6d,0x43,0x53,0x53,0x49,0x14,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x14,0x00,0x02,0x03,0x28,0x01,0x1a,0x15,0x00,0x10,0x18,0x03,0xa6,0x28,0x5e,
+0xd8,0xec,0x91,0x1c,0x48,0xa3,0xac,0x43,0x53,0x53,0x49,0x14,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x16,0x00,0x02,0x02,0x29,0x02,0x00,0x00,0x00,0x00,0xaa,0x55,0x07,0x00,0x76,0x41,
+0x0f,0x84,0xf0,0x0a,0x0b,0xb2,0x32,0xaa,0x55,0x02,0x00,0x57,0x41,0x8b,0x0b,0xaa,
+0x55,0x08,0x00,0xa1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xaa,0x55,0x02,
+0x00,0xbd,0x40,0x02,0x24,0xaa,0x55,0x08,0x00,0xad,0x40,0x03,0x00,0x10,0x00,0x03,
+0x00,0x30,0x00,0xaa,0x55,0x02,0x00,0xbb,0x40,0x20,0x00,0xaa,0x55,0x04,0x00,0xb7,
+0x40,0x20,0x00,0x00,0x20,0xaa,0x55,0x04,0x00,0xbf,0x40,0x80,0x04,0x00,0x10,0xaa,
+0x55,0x05,0x00,0xe2,0x44,0x08,0x0e,0x05,0x04,0x00,0xaa,0x55,0x02,0x00,0x02,0x42,
+0x30,0x1f,0xaa,0x55,0x01,0x00,0x10,0x42,0x20,0xaa,0x55,0x01,0x00,0xe0,0x41,0x01,
+0xaa,0x55,0x0f,0x00,0x40,0x40,0x4b,0xba,0x55,0xd0,0x56,0xe0,0x57,0x88,0x58,0x6c,
+0x59,0x10,0x07,0xff,0xff,0xaa,0x55,0x02,0x00,0xc3,0x40,0x40,0x40,0xf6,0x2d
+};
Index: ModuleDemo/BlueTooth/BT_MultConnect/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/user/main.c	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/user/main.c	(working copy)
@@ -0,0 +1,604 @@
+/**
+  ******************************************************************************
+  * @file    3121Demo\ModuleDemo\BlueTooth\BT&BLE\user\main.c
+  * @author  Yichip Application Team
+  * @version V1.0.0
+  * @date    18-Feb-2020
+  * @brief   BT&BLE test program.
+  ******************************************************************************
+  * @attention
+  *
+  * COPYRIGHT 2019 Yichip Microelectronics
+  *
+  * The purpose of this firmware is to provide guidance to customers engaged in
+	* programming work to guide them smoothly to product development,
+	* so as to save their time.
+	*
+	* Therefore, Yichip microelectronics shall not be responsible for any direct,
+	* indirect or consequential damages caused by any content of this gu jiang
+	* and/or contained in this code used by the customer in its products.
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "yc3121.h"
+#include "yc_gpio.h"
+#include "yc_uart.h"
+#include "yc_bt_mult.h"
+#include "yc_systick.h"
+#include "yc_qspi.h"
+#include "yc_ipc.h"
+#include "board_config.h"
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+#define IPC_UART UART0
+#define UART_TO_IPC_BAUDRATE	921600
+//#define UART_TO_IPC
+
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+void UART_Configuration(void);
+
+
+
+// byte0： uuid length
+//byte1-16: uuid
+// 49535343-FE78-4AE5-8FA9-9FAFD205E455
+uint8_t ble_service_uuid_lsps[] = {0x10,0x55,0xe4,0x05,0xd2,0xaf,0x9f,0xa9,0x8f,0xe5,0x4a,0x7d,0xfe,0x43,0x53,0x53,0x49};
+
+/*
+byte0: characterisitic
+byte1:characterisitic uuid length
+byte2-17:characterisitic uuid
+byte18:write/read payload length
+byte19-20:write/read payload
+*/
+//49535343-1E4D-4BD9-BA61-23C647249616
+uint8_t ble_Characteristic_uuid_lsps_tx[] = {0x10,0x10,0x16,0x96,0x24,0x47,0xc6,0x23,0x61,0xba,0xd9,0x4b,0x4d,0x1e,0x43,0x53,0x53,0x49,0x01,0x00};
+//49535343-8841-43F4-A8D4-ECBE34729BB3
+uint8_t ble_Characteristic_uuid_lsps_rx[] = {0x0c,0x10,0xb3,0x9b,0x72,0x34,0xbe,0xec,0xd4,0xa8,0xf4,0x43,0x41,0x88,0x43,0x53,0x53,0x49,0x01,0x00};
+//49535343-aca3-481c-91ec-d85e28a60318
+uint8_t ble_Characteristic_uuid_flow_ctrl[] = {0x18,0x10,0x18,0x03,0xa6,0x28,0x5e,0xd8,0xec,0x91,0x1c,0x48,0xa3,0xac,0x43,0x53,0x53,0x49,0x01,0x00};
+
+
+#define IFLASH_NVRAM_ADDR 0x1000000+((512-4)*1024)
+#define NVRAM_LEN 170//Nvram 长度170bytes,每组Nvram长度为34bytes,最多可存储5组配对信息
+
+uint16_t ble_send_handle=0x2a;
+uint8_t bt_cod[3] = {0x24,0x04,0x04};
+uint8_t NvramData[NVRAM_LEN]={0};
+
+
+
+/* write flash 往FLASH写入蓝牙配对信息 */
+
+uint8_t   ReserveNV(uint8_t* nvram);
+extern tick SystickCount;
+
+#ifdef UART_TO_IPC
+HCI_TypeDef HCI_Tx;
+HCI_TypeDef HCI_Rx;
+uint8_t ipc_tx_buf[256];
+uint8_t ipc_rx_buf[256];
+#endif
+
+void BT_IRQHandler()
+{
+	while(IPC_have_data())
+	{
+		#ifdef UART_TO_IPC
+		if(TRUE==IPC_ReadBtData(&HCI_Rx))
+		{
+			UART_SendBuf(IPC_UART,(uint8_t*)&HCI_Rx,3);
+			UART_SendBuf(IPC_UART,HCI_Rx.p_data,HCI_Rx.DataLen);
+		}
+		#else
+		BT_ParseBTData();
+		#endif
+	}
+
+	BT_CONFIG &= (~(1<<BT_INIT_FLAG));
+}
+
+void SYSTICK_IRQHandler()
+{
+	SystickCount++;
+	if(SystickCount>=TICK_MAX_VALUE)	SystickCount=0;
+}
+
+
+
+static uint8_t hex_lookup[16] = { '0', '1', '2', '3', '4', '5', '6', '7','8','9', 'a', 'b', 'c', 'd', 'e', 'f' };
+
+static void array2hex(uint8_t* in, int inlen, uint8_t* out)
+{
+	int i;
+	for (i = 0; i < inlen; ++i)
+	{
+		out[2 * i] = hex_lookup[in[inlen-1-i] >> 4];
+		out[2 * i + 1] = hex_lookup[in[inlen-1-i] & 0x0f];
+	}
+}
+
+void genBleAdvData(uint8_t *ble_name,int ble_name_len,uint8_t *ble_mac,uint8_t *ble_adv_data)
+{
+    int index=0;
+    //property
+    ble_adv_data[index++]=0x02;
+    ble_adv_data[index++]=0x01;
+    ble_adv_data[index++]=0x02;
+    //name
+    ble_adv_data[index++]=(ble_name_len+1);
+    ble_adv_data[index++]=0x09;//name flag
+    for(int i=0;i<ble_name_len;i++)
+    {
+        ble_adv_data[index++]=ble_name[i];
+    }
+    //manufacturer info
+    ble_adv_data[index++]=0x09;
+    ble_adv_data[index++]=0xff;//manufacturer info flag
+    ble_adv_data[index++]=0x00;
+    ble_adv_data[index++]=0x00;
+    for(int i=0;i<6;i++)
+    {
+        ble_adv_data[index++]=ble_mac[5-i];
+    }
+    //fill
+    while(index<31)
+    {
+        ble_adv_data[index++]=0x00;
+    }
+}
+
+
+/**
+  * @brief  Main program
+  * @param  None
+  * @retval None
+  */
+int main(void)
+{
+	uint8_t bt_name[15] = "YC3121bt";
+	uint8_t bt_addr[6] =  {0x00,0x00,0x00,0x33,0x22,0x10};
+	uint8_t chip_id[6]={0};
+    uint8_t ble_adv_data[31]={0x02,0x01,0x02,0x00};
+	uint16_t temp_handle;
+
+	int UARTCMD = 0;
+	uint8_t getbtstatus = 0;
+	int i = 0;
+	#ifdef UART_TO_IPC
+	HCI_Tx.p_data=ipc_tx_buf;
+	HCI_Rx.p_data=ipc_rx_buf;
+	#endif
+	UART_Configuration();
+	MyPrintf("bt ble demo\n");
+	SysTick_Config(CPU_MHZ/100);
+
+	BT_Init();
+	enable_intr(INTR_BT);
+
+	read_chipid(chip_id);
+	array2hex(chip_id,3,bt_name+8);
+	bt_name[14]='\0';
+	memcpy(bt_addr,chip_id,3);
+
+	#ifndef UART_TO_IPC
+	if(BT_SetBleName(bt_name,sizeof(bt_name)-1)==TRUE)
+		MyPrintf("SetBleName_suc ble name:%s\n",bt_name);
+	else
+		MyPrintf("SetBleName_failed\n");
+
+	if(BT_SetBtName(bt_name,sizeof(bt_name)-1) == TRUE)//bt与ble名字地址可以设置成一样
+		MyPrintf("SetbtName_suc\n");
+	else
+		MyPrintf("SetbtName_fail\n");
+
+	if(BT_SetBleAddr(bt_addr) == TRUE)
+		MyPrintf("SetBleAddr_suc\n");
+	else
+		MyPrintf("SetBleAddr_fail\n");
+
+	if(BT_SetBtAddr(bt_addr) == TRUE)
+		MyPrintf("SetBtAddr_suc\n");
+	else
+		MyPrintf("SetBtAddr_fail\n");
+
+	if(BT_SetParingMode(0x03) == TRUE)//设置配对模式为confirmkey
+		MyPrintf("set confirmkey mode success\n");
+	else
+		MyPrintf("set confirmkey mode failed\n");
+
+	if(BT_SetCOD(bt_cod) == TRUE) //设置COD
+		MyPrintf("set COD sucess\n");
+	else
+		MyPrintf("set COD failed\n");
+
+	if(BT_SetLpmMode(0x00) == TRUE) //设置低功耗模式
+		MyPrintf("set lpm mode sucess\n");
+	else
+		MyPrintf("set lpm mode failed\n");
+
+
+	if(BT_DeleteService() == TRUE) //  删除用户自定义服务
+		MyPrintf("delete service sucess\n");
+	else
+		MyPrintf("delete service failed\n");
+
+	temp_handle=BT_AddBleService(ble_service_uuid_lsps,sizeof(ble_service_uuid_lsps));
+	if( temp_handle!= 0)  //增加服务 返回handle无需保存
+		MyPrintf("add service sucess,handle=%04x\n",temp_handle);
+	else
+		MyPrintf("add service failed,return=%04x\n",temp_handle);
+
+	ble_send_handle=BT_AddBleCharacteristic(ble_Characteristic_uuid_lsps_tx,sizeof(ble_Characteristic_uuid_lsps_tx));
+	if( ble_send_handle!= 0)  //增加服务特征  write返回的handle需要保存，发数据使用
+		MyPrintf("add Characteristic tx sucess,handle=%04x\n",ble_send_handle);
+	else
+		MyPrintf("add Characteristic tx failed,return=%04x\n",ble_send_handle);
+
+	temp_handle=BT_AddBleCharacteristic(ble_Characteristic_uuid_lsps_rx,sizeof(ble_Characteristic_uuid_lsps_rx));
+	if( temp_handle!= 0)
+		MyPrintf("add Characteristic rx sucess;handle=%04x\n",temp_handle);
+	else
+		MyPrintf("add Characteristic rx failed,return=%04x\n",temp_handle);
+
+	temp_handle=BT_AddBleCharacteristic(ble_Characteristic_uuid_flow_ctrl,sizeof(ble_Characteristic_uuid_flow_ctrl));
+	if( temp_handle!= 0)
+		MyPrintf("add Characteristic flow_ctrl sucess;handle=%04x\n",temp_handle);
+	else
+		MyPrintf("add Characteristic flow_ctrl failed,return=%04x\n",temp_handle);
+
+    genBleAdvData(bt_name,sizeof(bt_name)-1,bt_addr,ble_adv_data);
+    if(BT_SetLEAdvData(ble_adv_data,sizeof(ble_adv_data)) == TRUE)
+		MyPrintf("BT_SetLEAdvData sucess\n");
+	else
+		MyPrintf("BT_SetLEAdvData failed\n");
+
+    if(BT_SetLEScanData(ble_adv_data,sizeof(ble_adv_data)) == TRUE)
+		MyPrintf("BT_SetLEScanData sucess\n");
+	else
+		MyPrintf("BT_SetLEScanData failed\n");
+
+	if(BT_SetVisibility(0x01,0x01,0x01) == TRUE)  //设置可发现
+		MyPrintf("SetVisibility sucess\n");
+	else
+		MyPrintf("SetVisibility failed\n");
+
+    if(BT_ConfigMultiConnect(0x01) == TRUE)       //  设置是否开启多连接     0x00：单链接模式  0x01:多连接模式      默认为多连接模式
+        MyPrintf("MultiMode Set sucess\n");
+    else
+        MyPrintf("MultiMode Set failed\n");
+
+	MyPrintf("bt version=%x\n",BT_GetVersion());
+
+	qspi_flash_read(IFLASH_NVRAM_ADDR,NvramData,NVRAM_LEN);
+	if(NvramData[34*0] > 0x05||NvramData[34*1] > 0x05||NvramData[34*2] > 0x05||NvramData[34*3] > 0x05||NvramData[34*4] > 0x05)
+	{
+		memset(NvramData,0x00,NVRAM_LEN);
+	}
+	i=0;
+	if(BT_SetNVRAM(NvramData,NVRAM_LEN) == TRUE)
+	{
+		MyPrintf("set nvram success:\n");
+		while(i<NVRAM_LEN)
+			MyPrintf("0x%02X ",NvramData[i++]);
+		MyPrintf("\n");
+	}
+	else
+		MyPrintf("set nvram failed\n");
+	#else
+	MyPrintf("uart baud rate is:%d\n",UART_TO_IPC_BAUDRATE);
+	#endif
+
+	while (1)
+	{
+		//uart cmd to ipc
+		#ifdef UART_TO_IPC
+		if(UART_IsRXFIFONotEmpty(IPC_UART))
+		{
+			HCI_Tx.type = UART_ReceiveData(IPC_UART);
+			while(!UART_IsRXFIFONotEmpty(IPC_UART));
+			HCI_Tx.opcode = UART_ReceiveData(IPC_UART);
+			while(!UART_IsRXFIFONotEmpty(IPC_UART));
+			HCI_Tx.DataLen = UART_ReceiveData(IPC_UART);
+			i=0;
+			while(i<HCI_Tx.DataLen)
+			{
+				while(!UART_IsRXFIFONotEmpty(IPC_UART));
+				HCI_Tx.p_data[i++] = UART_ReceiveData(IPC_UART);
+			}
+			IPC_TxData(&HCI_Tx);
+		}
+		#else
+		BT_Progress();
+		#endif
+	}
+}
+
+/**
+  * @brief  Serial port 0 initialization function.
+  * @param  None
+  * @retval None
+  */
+void UART_Configuration(void)
+{
+	UART_InitTypeDef UART_InitStruct;
+
+	/* Configure serial ports 0 RX and TX for IO. */
+	GPIO_Config(UART0_TX_PORT, UART0_TX_PIN, UART0_TXD);
+	GPIO_Config(UART0_RX_PORT, UART0_RX_PIN, UART0_RXD);
+
+	/* USARTx configured as follow:
+  - BaudRate = 115200 baud
+  - Word Length = 8 Bits
+  - Stop Bit = 1 Stop Bit
+  - Parity = No Parity
+  - Hardware flow control disabled (RTS and CTS signals)
+  - Receive and transmit enabled
+  */
+	#ifdef UART_TO_IPC
+	UART_InitStruct.BaudRate = UART_TO_IPC_BAUDRATE;			//Configure serial port baud rate, the baud rate defaults to 128000.
+	#else
+	UART_InitStruct.BaudRate = UARTBAUD;
+	#endif
+	UART_InitStruct.DataBits = Databits_8b;
+	UART_InitStruct.StopBits = StopBits_1;
+	UART_InitStruct.Parity = Parity_None;
+	UART_InitStruct.FlowCtrl = FlowCtrl_None;
+	UART_InitStruct.Mode = Mode_duplex;
+
+	UART_Init(UART0, &UART_InitStruct);
+}
+
+
+/**
+  * @brief  deal with data from bt core event
+  * @param  None
+  * @retval None
+  */
+
+
+void BT_Progress()
+{
+	int eventCmd= BT_GetEventOpcode();
+    if(eventCmd != 0xffffffff)
+        MyPrintf("eventCmd = 0x%x\n",eventCmd);
+	switch(eventCmd)
+	{
+		case BT_DATA:
+			{
+				uint8_t i = 0;
+				uint8_t btData[MAX_BLUETOOTH_DATA_LEN];
+				int BtDataLen=0;
+				BtDataLen=BT_ReadBTData(btData);
+				if(BtDataLen>0)
+				{
+					MyPrintf("received %d bytes bt data:\n",BtDataLen);
+					for(int i=0;i<BtDataLen;i++)	MyPrintf("%02x ",btData[i]);
+					MyPrintf("\n");
+					BT_SendSppData(btData,BtDataLen);
+					MyPrintf("send %d bytes bt data:\n",BtDataLen);
+					for(int i=0;i<BtDataLen;i++)	MyPrintf("%02x ",btData[i]);
+					MyPrintf("\n");
+					#if (MEM_SPP_FLOWCTRL_FLAG_VALUE==0x01)
+					if(BT_SetSppFlowcontrol(btData[0],1) != TRUE)	MyPrintf("set Flowcontrol failed\n");
+					#endif
+				}
+				else	MyPrintf("read bt data error\r\n");
+			}
+		break;
+
+		case BLE_DATA:
+			{
+				uint8_t bleData[MAX_BLUETOOTH_DATA_LEN]={0};
+				int BleDataLen=0;
+				BleDataLen=BT_ReadBTData(bleData);
+				if(BleDataLen>0)
+				{
+					MyPrintf("received %d bytes ble data[handle:%02x %02x]:\n",BleDataLen-2,bleData[0],bleData[1]);
+					for(int i=0;i<(BleDataLen-2);i++)	MyPrintf("%02x ",bleData[2+i]);
+					MyPrintf("\n");
+
+					//add handle
+					bleData[0]=(ble_send_handle&0xff);
+					bleData[1]=((ble_send_handle>>8)&0xff);
+
+					BT_SendBleData(bleData,BleDataLen);
+
+					MyPrintf("send %d bytes ble data[%02x %02x]:\n",BleDataLen-2,bleData[0],bleData[1]);
+					for(int i=0;i<(BleDataLen-2);i++)	MyPrintf("%02x ",bleData[2+i]);
+					MyPrintf("\n");
+				}
+				else	MyPrintf("read ble data error\r\n");
+			}
+		break;
+
+		case BT_CONNECTED:
+            MyPrintf("bt connected\n");
+            {
+                uint8_t i = 0;
+                uint8_t btData[MAX_BLUETOOTH_DATA_LEN];
+                int BtDataLen=0;
+                BtDataLen=BT_ReadBTData(btData);
+                if(BtDataLen>0)
+                {
+                    MyPrintf("received %d bytes bt data:\n",BtDataLen);
+                    for(int i=1;i<BtDataLen;i++)	MyPrintf("0x%02x ",btData[i]);
+                    MyPrintf("\n");
+                    MyPrintf("byte1==>connect device handle\n");
+                    MyPrintf("0x%02x\n ",btData[0]);
+                    MyPrintf("byte2-%d==>connect device mac addr\n",BtDataLen-1);
+                    for(int i=1;i<BtDataLen;i++)	MyPrintf("0x%02x ",btData[i]);
+                    MyPrintf("\n");
+                }
+                else	MyPrintf("read bt data error\r\n");
+            }
+		break;
+
+		case BLE_CONNECTED:
+            MyPrintf("ble connected\n");
+		break;
+
+		case BT_DISCONNECTED:
+			MyPrintf("bt disconnected\n");
+            {
+                uint8_t i = 0;
+                uint8_t btData[MAX_BLUETOOTH_DATA_LEN];
+                int BtDataLen=0;
+                BtDataLen=BT_ReadBTData(btData);
+                if(BtDataLen>0)
+                {
+                    MyPrintf("received %d bytes bt data:\n",BtDataLen);
+                    for(int i=1;i<BtDataLen;i++)	MyPrintf("0x%02x ",btData[i]);
+                    MyPrintf("\n");
+
+                    MyPrintf("byte==>disconnect device handle\n");
+                    MyPrintf("0x%02x\n ",btData[0]);
+                }
+                else	MyPrintf("read bt data error\r\n");
+            }
+		break;
+
+		case BLE_DISCONNECTED:
+			MyPrintf("ble disconnected\n");
+		break;
+
+		case NVRAM_DATA:
+			{
+				uint8_t NvramData[MAX_BLUETOOTH_DATA_LEN];
+				int NvramDataLen=0;
+				NvramDataLen=BT_ReadBTData(NvramData);
+				if(NvramDataLen>0)
+				{
+					MyPrintf("receive %dbytes Nvramdata:",NvramDataLen);
+					for(int i=0;i<NvramDataLen;i++)
+					{
+						MyPrintf("%02X ",NvramData[i]);
+					}
+					MyPrintf("\n");
+					ReserveNV(NvramData);//将最新的5个设备信息（NVRAM） 写入flash ,
+				}
+				else
+					MyPrintf("read Nvram data error\r\n");
+			}
+		break;
+
+		case CONFIRM_GKEY:
+			{
+				uint8_t GkeyData[MAX_BLUETOOTH_DATA_LEN];
+				int GkeyDataLen=0;
+				GkeyDataLen=BT_ReadBTData(GkeyData);
+				if(GkeyDataLen>0)
+				{
+					MyPrintf("receive %dbytes CONFIRM_GKEY:",GkeyDataLen);
+					for(int i=0;i<GkeyDataLen;i++)
+					{
+						MyPrintf("%02X ",GkeyData[i]);
+					}
+					MyPrintf("\n");
+				}
+				else	MyPrintf("read CONFIRM_GKEY data error\r\n");
+
+				if(BT_ConfirmGkey(0) == TRUE)//BT_ConfirmGkey参数为0则继续配对，1则取消配对。
+					MyPrintf("set confirmkey  success");
+				else
+					MyPrintf("set confirmkey  failed\n");
+		}
+		break;
+
+		case PASSKEY:
+			MyPrintf("request Passkey");
+		break;
+
+		case PAIRING_COMPLETED:
+			{
+				uint8_t PairingData[MAX_BLUETOOTH_DATA_LEN];
+				int PairingDataLen=0;
+				PairingDataLen=BT_ReadBTData(PairingData);
+				if(PairingDataLen>0)
+				{
+					MyPrintf("receive %dbytes paring data:",PairingDataLen);
+					for(int i=0;i<PairingDataLen;i++)
+					{
+						MyPrintf("%02X ",PairingData[i]);
+					}
+					MyPrintf("\n");
+				}
+				else	MyPrintf("read PAIRING_COMPLETED data error\r\n");
+			}
+		break;
+
+		case PAIRING_STATE:
+			{
+				uint8_t PairingData[MAX_BLUETOOTH_DATA_LEN];
+				int PairingDataLen=0;
+				uint16_t pairing_status=0;
+				PairingDataLen=BT_ReadBTData(PairingData);
+				if(PairingDataLen==2)
+				{
+					pairing_status |=PairingData[0];
+					pairing_status |=(PairingData[1]<<8);
+					switch(pairing_status)
+					{
+						case 0x0001:
+							MyPrintf("BT Pairing Success\r\n");
+						break;
+
+						case 0x0101:
+							MyPrintf("BT Pairing fail\r\n");
+						break;
+
+						case 0x0080:
+							MyPrintf("BLE Pairing Success\r\n");
+						break;
+
+						case 0x0180:
+							MyPrintf("BLE Pairing fail\r\n");
+						break;
+
+						default:
+							MyPrintf("unknown pairing_status[%04x]\r\n",pairing_status);
+						break;
+					}
+				}
+				else	MyPrintf("read PAIRING_STATE data error\r\n");
+			}
+		break;
+
+		case -1:
+			//no event
+		break;
+
+		default:
+		{
+			MyPrintf("unknown event:%02x\r\n",eventCmd);
+			uint8_t unknownData[MAX_BLUETOOTH_DATA_LEN];
+			int unknownDataLen=0;
+			unknownDataLen=BT_ReadBTData(unknownData);
+			if(unknownDataLen>0)
+			{
+				MyPrintf("datalen:%d\r\n",unknownDataLen);
+				for(int i=0;i<unknownDataLen;i++)
+				{
+					MyPrintf("%02X ",unknownData[i]);
+				}
+				MyPrintf("\n");
+			}
+		}
+		break;
+	}
+}
+
+uint8_t  ReserveNV(uint8_t* nvram)
+{
+	MyPrintf("new nvram data,updata to flash\r\n");
+	qspi_flash_sectorerase(IFLASH_NVRAM_ADDR);
+	return qspi_flash_write(IFLASH_NVRAM_ADDR,nvram,NVRAM_LEN);
+}
+
+/************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/
+
Index: ModuleDemo/BlueTooth/BT_MultConnect/user/yc_bt_mult.h
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/user/yc_bt_mult.h	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/user/yc_bt_mult.h	(working copy)
@@ -0,0 +1,685 @@
+/**
+  ******************************************************************************
+  * @file    yc_bt.h
+  * @author  Yichip
+  * @version V1.1
+  * @date    28-May-2020
+  * @brief   Yichip bluetooth encapsulation.The HCI protocol refers to YC Dual mode module spec-v4.15
+*
+  ******************************************************************************
+  */
+
+
+#ifndef __YC_BT_H__
+#define __YC_BT_H__
+
+#include "yc_uart.h"
+#include "yc_ipc.h"
+
+
+#define HCI_CMD                           0x01
+#define HCI_EVENT                         0x02
+#define MAX_BLUETOOTH_DATA_LEN            255
+#define MAX_TCP_DATA_LEN                  235
+#define MAX_BIG_DATA_LEN                  1360
+
+
+
+/*BIT judge*/
+#define BIT_SET_BT_ADDR                   0
+#define BIT_SET_BLE_ADDR                  1
+#define BIT_SET_VISIBILITY                2
+#define BIT_SET_BT_NAME                   3
+#define BIT_SET_BLE_NAME                  4
+#define BIT_SEND_SPP_DATA                 5
+#define BIT_SEND_BLE_DATA                 6
+#define BIT_STATUS_REQUEST                7
+#define BIT_SET_PAIRING_MODE              8
+#define BIT_SET_PINCODE                   9
+#define BIT_GET_VERSION                   10
+#define BIT_BT_DISCONNECT                 11
+#define BIT_BLE_DISCONNECT                12
+#define BIT_SET_NVRAM                     13
+#define BIT_SET_TXPOWER                   14
+#define BIT_ENTER_SLEEP_MODE              15
+#define BIT_CONFIRM_GKEY                  16
+#define BIT_POWER_SET                     17
+#define BIT_GET_CREADIT_GIVEN             18
+#define BIT_PASSKEY_ENTRY                 19
+#define BIT_LE_SET_PARING                 20
+#define BIT_LE_SET_ADV_DATA               21
+#define BIT_LE_SET_SCAN_DATA              22
+#define BIT_LE_SEND_CONN_UPDATE           23
+#define BIT_LE_SET_ADV_PARM               24
+#define BIT_REJECT_JUSTWORK               25
+#define BIT_LE_SET_FIXED_PASSKEY          26
+#define BIT_SET_PSCAN_INTERVAL            27
+#define BIT_MODULE_READY                  28
+#define	BIT_SET_COD                       29
+#define BIT_SET_CREDIT                    30
+#define BIT_DELETE_SERVICE                31
+#define BIT_ADD_UUID                      32
+#define BIT_DNS_REQ                       33
+#define BIT_CONNECT_BNEP                  34
+#define BIT_CONNECT_TCP                   35
+#define BIT_BNEP_SEND_TCP_DATA            36
+#define BIT_DISCONNECT_TCP                37
+#define BIT_BNEP_SEND_UDP_DATA            38
+#define BIT_BNEP_SEND_TCP_BIG_DATA        39
+#define BIT_BNEP_SEND_TCP_BIG_DATA_FINISH 40
+#define BIT_BNEP_SEND_TCP_BIG_DATA_STATUS 41
+#define BIT_SET_LPM_MODE                  42
+#define BIT_SET_MULT_MODE                 43
+/*CMD*/
+#define HCI_CMD_SET_BT_ADDR               0x00  //设置 BT3.0 地址
+#define HCI_CMD_SET_BLE_ADDR              0x01  //设置 BLE 地址
+#define HCI_CMD_SET_VISIBILITY            0x02  //设置可发现和广播
+#define HCI_CMD_SET_BT_NAME               0x03  //设置 BT3.0 名称
+#define HCI_CMD_SET_BLE_NAME              0x04  //设置 BLE 名称
+#define HCI_CMD_SEND_SPP_DATA             0x05  //发送 BT3.0（SPP）数据
+#define HCI_CMD_SEND_BLE_DATA             0x09  //发送 BLE 数据
+#define HCI_CMD_STATUS_REQUEST            0x0B  //请求蓝牙状态
+#define HCI_CMD_SET_PAIRING_MODE          0x0C  //设置配对模式
+#define HCI_CMD_SET_PINCODE               0x0D  //设置配对码
+#define HCI_CMD_VERSION_REQUEST           0x10  //查询模块固件版本
+#define HCI_CMD_BT_DISCONNECT             0x11  //断开 BT3.0 连接
+#define HCI_CMD_BLE_DISCONNECT            0x12  //断开 BLE 连接
+#define HCI_CMD_SET_NVRAM                 0x26  //下发 NV 数据
+#define HCI_CMD_ENTER_SLEEP_MODE          0x27  //进入睡眠模式
+#define HCI_CMD_CONFIRM_GKEY              0x28  //Numeric Comparison 配对方式中对密钥的比较（见HCI_EVENT_GKEY注释）
+#define HCI_CMD_GET_CREADIT_GIVEN         0x29
+#define HCI_CMD_PASSKEY_ENTRY             0x30  //passkey配对方式中对密钥的比较
+#define HCI_CMD_LE_SET_PAIRING            0x33
+#define HCI_CMD_LE_SET_ADV_DATA           0x34
+#define HCI_CMD_LE_SET_SCAN_DATA          0x35
+#define HCI_CMD_LE_SEND_CONN_UPDATE_REQ   0x36
+#define HCI_CMD_LE_SET_ADV_PARM           0x37
+#define HCI_CMD_SET_MULTI_PICONET         0x39  //是否开启多连接模式指令   0：不开启 1：开启  默认为多连接模式
+#define HCI_CMD_SET_TX_POWER              0x42
+#define HCI_CMD_REJECT_JUSTWORK           0x49
+#define HCI_CMD_LE_SET_FIXED_PASSKEY      0x61
+#define	HCI_CMD_DELETE_CUSTOMIZE_SERVICE  0x76
+#define	HCI_CMD_ADD_SERVICE_UUID          0x77
+#define	HCI_CMD_ADD_CHARACTERISTIC_UUID   0x78
+#define	HCI_CMD_SET_COD                   0x15  //设置 COD
+#define HCI_CMD_CONNECT_BNEP              0x7e //建立BNEP连接
+#define HCI_CMD_CONNECT_TCP               0x7f //建立TCP连接
+#define HCI_CMD_DISCONNECT_TCP            0x80 //断开TCP连接
+#define HCI_CMD_BNEP_SEND_TCP_DATA        0x81 //发送TCP数据
+#define HCI_CMD_DNS_REQ                   0x82 //域名解析指令
+#define HCI_CMD_SEND_UDP_DATA             0x84 //发送UDP数据
+#define HCI_CMD_SEND_BIG_DATA             0x85 //发送TCP大包数据
+#define HCI_CMD_SET_LPM_MODE              0xff //开关低功耗
+
+
+/*EVENT*/
+#define HCI_EVENT_BT_CONNECTED            0x00  /**BT3.0 连接建立*/
+#define HCI_EVENT_BLE_CONNECTED           0x02  /**BLE 连接建立*/
+#define HCI_EVENT_BT_DISCONNECTED         0x03  /**BT3.0 连接断开*/
+#define HCI_EVENT_BLE_DISCONNECTED        0x05  /**BLE 连接断开*/
+#define HCI_EVENT_CMD_COMPLETE            0x06  /**命令已完成*/
+#define HCI_EVENT_SPP_DATA_RECEIVED       0x07  /**接收到 BT3.0 数据（SPP）*/
+#define HCI_EVENT_BLE_DATA_RECEIVED       0x08  /**接收到 BLE 数据*/
+#define HCI_EVENT_I_AM_READY              0x09  /**模块准备好*/
+#define HCI_EVENT_STAUS_RESPONSE          0x0A  /**状态回复*/
+#define HCI_EVENT_NVRAM_CHANGED           0x0D  /**上传 NVRAM 数据*/
+#define HCI_EVENT_GKEY                    0x0E  /**HCI 包格式错误*/
+#define HCI_EVENT_UART_EXCEPTION          0x0F  /*cmd format error*/
+#define HCI_EVENT_GET_PASSKEY             0x10  /**PASSKEY 配对方式中通知MCU 返回密钥,MCU收到此事件后需发送HCI_CMD_PASSKEY_ENTRY指令回复蓝牙模块*/
+#define HCI_EVENT_PAIRING_COMPLETED       0x11  /**配对完成的事件，通知 MCU配对完成*/
+#define HCI_EVENT_LE_PAIRING_STATE        0x14  /**上报配对状态*/
+#define	HCI_EVENT_UUID_HANDLE             0x29
+#define HCI_EVENT_BNEP_CONNECT            0x2c  /**通知MCU BNEP连接成功*/
+#define HCI_EVENT_BNEP_DISCONNECT         0x2d  /**通知MCU BNEP断开连接*/
+#define HCI_EVENT_BNEP_CONNECT_FAIL       0x2e  /**通知MCU BNEP连接失败原因*/
+#define HCI_EVENT_TCP_CONNECT             0x2f /**通知MCU TCP连接成功*/
+#define HCI_EVENT_TCP_DISCONNECT          0x30 /**通知MCU TCP断开连接*/
+#define HCI_EVENT_BNEP_RECEIVE_TCP_DATA   0x31  /*接收到TCP数据*/
+#define HCI_EVNET_TCP_FAIL                0x32  /*TCP连接或者断开失败*/
+#define HCI_EVENT_TCP_CONNECT_LOG         0x33  /*TCP连接LOG*/
+#define HCI_EVENT_BNEP_CHIP_ERROR         0x34  /*芯片不支持BNEP*/
+#define HCI_EVENT_DNS_RSP                 0x35  /*DNS返回的ip地址*/
+#define HCI_EVENT_BB_DISCONNECT           0x36  /*经典蓝牙baseband断开后返回的事件*/
+#define HCI_EVENT_BT_NAME                 0x37  /*BT master name*/
+#define HCI_EVENT_UDP_INFO                0x38  /*UDP信息头,包含远端IP、本地IP、远端端口、本地端口,后面会紧随一包UDP数据*/
+#define HCI_EVENT_BNEP_RECEIVE_UDP_DATA   0x39  /*接收到UDP数据*/
+#define HCI_EVENT_BIG_DATA_FINISH         0x3a  /*大数据分包发送完成事件*/
+#define HCI_EVENT_BIG_DATA_STATUS         0x3b  /*大数据分包发送状态*/
+
+
+/**
+  * @brief  event code enum definition
+  */
+typedef enum
+{
+	BT_CONNECTED        		=HCI_EVENT_BT_CONNECTED,
+	BLE_CONNECTED       		=HCI_EVENT_BLE_CONNECTED,
+	BT_DISCONNECTED     		=HCI_EVENT_BT_DISCONNECTED,
+	BLE_DISCONNECTED    		=HCI_EVENT_BLE_DISCONNECTED,
+	BT_DATA             		=HCI_EVENT_SPP_DATA_RECEIVED,
+	BLE_DATA            		=HCI_EVENT_BLE_DATA_RECEIVED,
+	NVRAM_DATA          		=HCI_EVENT_NVRAM_CHANGED,
+	CONFIRM_GKEY        		=HCI_EVENT_GKEY,
+	PASSKEY             		=HCI_EVENT_GET_PASSKEY,
+	PAIRING_COMPLETED   		=HCI_EVENT_PAIRING_COMPLETED,
+	PAIRING_STATE        		=HCI_EVENT_LE_PAIRING_STATE,
+	BNEP_CONNECT        		=HCI_EVENT_BNEP_CONNECT,
+	TCP_CONNECT         		=HCI_EVENT_TCP_CONNECT,
+	BNEP_RECEIVE_TCP_DATA		=HCI_EVENT_BNEP_RECEIVE_TCP_DATA,
+	TCP_DISCONNECT       		=HCI_EVENT_TCP_DISCONNECT,
+	BNEP_DISCONNECT      		=HCI_EVENT_BNEP_DISCONNECT,
+	BNEP_CONNECT_FAIL    		=HCI_EVENT_BNEP_CONNECT_FAIL,
+	TCP_FAIL             		=HCI_EVNET_TCP_FAIL,
+	TCP_CONNECT_LOG      		=HCI_EVENT_TCP_CONNECT_LOG,
+	BNEP_CHIP_ERROR      		=HCI_EVENT_BNEP_CHIP_ERROR,
+	DNS_RSP              		=HCI_EVENT_DNS_RSP,
+	BB_DISCONNECT        		=HCI_EVENT_BB_DISCONNECT,
+	BT_NAME              		=HCI_EVENT_BT_NAME,
+	UDP_INFO             		=HCI_EVENT_UDP_INFO,
+	BNEP_RECEIVE_UDP_DATA		=HCI_EVENT_BNEP_RECEIVE_UDP_DATA
+
+}BT_EventCodeEnum;
+
+
+
+typedef struct
+{
+	uint8_t* pBuf;
+    	int BufSize;
+    	int count;		 /*!< count of valid data */
+    	int ReadIndex;
+    	int WriteIndex;
+} BT_BufTypeDef;
+
+
+
+Boolean BT_ConfigMultiConnect(uint8_t connectmode);
+
+/**
+  * @brief   Set the address of the bluetooth 3.0 device
+  * @param  bt_addr: pointer to  address(6 bytes)
+  * @retval TRUE:set addr success.
+  *         FALSE:set addr failed
+  */
+Boolean BT_SetBtAddr(uint8_t * bt_addr);
+
+
+/**
+  * @brief  Set the address of the bluetooth 4.0 device
+  * @param  bt_addr: pointer to  address(6 bytes)
+  * @retval TRUE:set addr success.
+  *         FALSE:set addr failed
+  */
+Boolean BT_SetBleAddr(uint8_t * bt_addr);
+
+
+/**
+  * @brief   Set the name of the bluetooth 3.0 device
+  * @param  bt_addr: pointer to  address information.
+  *         name_len: name length,not include '\0'
+  * @retval TRUE:set name success.
+  *         FALSE:set name failed
+  */
+Boolean BT_SetBtName(uint8_t * bt_name, uint16_t name_len);
+
+
+/**
+  * @brief   Set the name of the bluetooth 4.0 device
+  * @param  ble_name: pointer to  name information.
+  *         name_len: name length,not include '\0'
+  * @retval TRUE:set name success.
+  *         FALSE:set name failed
+  */
+Boolean BT_SetBleName(uint8_t* ble_name, uint16_t name_len);
+
+
+/**
+  * @brief  Set visibility mode.
+  * @param  bt_discoverable: 0--bt_discoverable OFF;1--bt_discoverable ON.
+  *         bt_connectability:0--bt_connectability OFF;1--bt_connectability ON.
+  *         ble_discoverable:0--ble_discoverable OFF;1--ble_discoverable ON.
+  * @retval TRUE:set visibility success.
+  *         FALSE:set visibility failed
+  */
+Boolean BT_SetVisibility(Boolean bt_discoverable, Boolean bt_connectability, Boolean ble_discoverable);
+
+
+/**
+  * @brief  Bt send spp(bt3.0) data
+  * @param  spp_data: pointer to  spp data
+  *         len: spp data length(max len is 255)
+  * @retval TRUE:send spp data success.
+  *         FALSE:send spp data failed
+  */
+Boolean BT_SendSppData(uint8_t * spp_data, uint16_t len);
+
+
+/**
+  * @brief  Send ble data
+  * @param  ble_data: pointer to  ble data ,includes two bytes handle(byte0-byte1 is ble handle).
+  *         len: data length(max len is 255)
+  * @retval TRUE:send ble data success.
+  *         FALSE:send ble data failed
+  */
+  Boolean BT_SendBleData(uint8_t * ble_data, uint16_t len);
+
+
+/**
+  * @brief  get bluetooth connect status
+  * @param  None
+  * @retval bit0:BT 3.0 Can be discover
+  *         bit1:BT 3.0 Can be connected
+  *         bit2:BT 4.0 Can be discover and connected
+  *         bit4:BT 3.0 connected
+  *         bit5:BT 4.0 connected
+  *         bit7:get status timer out
+  */
+uint8_t Bt_GetBtStatus(void);
+
+
+
+/**
+  * @brief  set classic bluetooth paring mode
+  * @param  mode:the paramater can be one of the following value
+                0x00:pincode
+                0x01:just work
+                0x02:passkey
+                0x03:confirm
+  * @retval	   ture or FALSE
+  */
+  Boolean BT_SetParingMode(uint8_t mode);
+
+
+
+/**
+  * @brief  set classic bluetooth paring PIN code
+  * @param  Pincode:the pointer ponint to pincode data
+            len: normally the value can be 0x01~0x10,
+  * @retval	   ture or FALSE
+  */
+Boolean BT_SetPincode(uint8_t* Pincode,uint8_t len);
+
+
+
+/**
+  * @brief  get the bluetooth module firmware version number
+  * @param  none
+  * @retval firmware version number(the value is 1~65535),0 is fail
+  *
+  */
+uint32_t BT_GetVersion(void);
+
+
+/**
+  * @brief  bt disconnect
+  * @param  none
+  * @retval TRUE:bt disconnected success.
+  *         FALSE:bt disconnected failed
+  */
+Boolean BT_BtDisconnect(void);
+
+/**
+  * @brief  Set NVRAM
+  * @param  NvData:the pointer point to NVRAMData
+	* 				len:bnep is 34(one group),other is 170(5*34=170 five group).
+  * @retval TRUE:bt disconnected success.
+  *         FALSE:bt disconnected failed
+  */
+Boolean BT_SetNVRAM(uint8_t * NvData,int len);
+
+
+/**
+  * @brief  Bt Enter Sleep mode(enter_hibernate)
+  * @param  none
+  * @retval TRUE:enter sleep mode success
+  *
+  */
+Boolean BT_EnterSleepMode(void);
+
+
+/**
+  * @brief  Bt set LPM mode
+  * @param  mode:0x00-close LPM mode; 0x01-open LPM mode
+  * @retval TRUE or FALSE
+  *
+  */
+Boolean BT_SetLpmMode(uint8_t mode);
+
+
+
+/**
+  * @brief  Numeric Comparison key matching in paring mode
+  * @param  mismatching:the paramater can be the follwing value
+                        0x00: key match
+                        0x01: key mismatch
+  * @retval TRUE:set ConfirmGkey success
+  *         FALSE:set ConfirmGkey failed
+ */
+Boolean BT_ConfirmGkey(uint8_t isMatching);
+
+
+/**
+  * @brief  set spp flow control
+  * @param  packetNum:the flow control packet number
+  * @retval TRUE:success
+  *         FALSE:failed
+ */
+Boolean BT_SetSppFlowcontrol(uint8_t handle,uint8_t packetNum);
+
+
+/**
+  * @brief  Comparison of keys in  PASSKEY paring
+  * @param  key_data: point to key data,length is 4 bytes,(data in hexadecimal form,
+  *                   starting with high bytes;for example ,218372(10) = 0x35504 ->key_data[]={0x00,0x03,0x55,0x04})
+  * @retval TRUE:set passkey success
+  *         FALSE:set passkey  failed
+  */
+Boolean BT_PasskeyEntry(uint8_t *key_data);
+
+/**
+  * @brief  Set ble paring mode
+  * @param  mode: the paramater can be the follwing value
+  *               0x00:none
+  *               0x01:just work
+  *               0x02:pass key
+  *               0x81:secure connect just work
+  *               0x82:secure connect numeric
+  *               0x83:secure connect pass key
+  * @retval TRUE:set ble paring success
+  *         FALSE:set ble paring  failed
+  */
+Boolean BT_SetLEParing(uint8_t mode);
+
+/**
+  * @brief    Send ble adv data
+  * @param    adv_data: pointer to adv data.
+	*  					DataLen: data length(must be 0x1f)
+  * @retval	  TRUE:set ble adv  data success.
+  *           FALSE:set ble adv data failed
+  */
+Boolean BT_SetLEAdvData(uint8_t*  adv_data, int DataLen);
+
+
+/**
+  * @brief  set ble scan data
+  * @param  scan_data: pointer to  scan data.
+  *         DataLen: data length(length < 0x20)
+  * @retval TRUE:set ble scan  data success.
+  *         FALSE:set ble scan data failed
+  */
+Boolean BT_SetLEScanData(uint8_t* scan_data, int DataLen);
+
+/**
+  * @brief  ble send update ble connect parameter data
+  * @param  data:
+  *             byte0-byte1:min connect interval
+  *             byte2-byte3:max connect interval
+  *             byte4-byte5:Slave  latency
+  *             byte6-byte7:Connection Supervision Timeout
+  *         len:len must be 8
+  * @retval TRUE:success.
+  *         FALSE:failed
+  */
+Boolean BT_SetLESendConnUpdate(uint8_t *data,int len);
+
+
+/**
+  * @brief  Set ble adv interval
+  * @param  ble_adv_interval: ble adv interval is ble_adv_interval*0.625ms
+  * @retval TRUE:set ble adv parm success.
+  *         FALSE:set ble adv parm failed
+  */
+Boolean BT_SetLEAdvInterval(uint16_t ble_adv_interval);
+
+/**
+  * @brief  Set reject just work
+  * @param  justwork:
+  *                 0:turn off reject just work
+  *                 1:turn on reject just work
+  * @retval TRUE:set ble scan  data success.
+  *         FALSE:set ble scan data failed
+  */
+Boolean BT_RejectJustWork(uint8_t justwork);
+
+
+/**
+  * @brief  Set fixed passkey
+  * @param  key: pointer to key data ,key length is 5 bytes
+  * @retval TRUE:set fixed passkey  success.
+  *         FALSE:set ble fixed passkey failed
+  */
+Boolean BT_Set_FixedPasskey(uint8_t* key);
+
+
+/**
+  * @brief  ble disconnect
+  * @param  none
+  * @retval TRUE:ble disconnected success.
+  *         FALSE:ble disconnected failed
+  */
+Boolean BT_BleDisconnect(void);
+
+
+/**
+  * @brief  Set spp(bt3.0) class of device
+  * @param  bt_cod:cod buf(must be 3 byte)
+  * @retval TRUE:success.
+  *         FALSE:failed
+  */
+Boolean BT_SetCOD(uint8_t* bt_cod);
+
+
+
+
+/**
+  * @brief  Set RF tx power
+  * @param  power: 0:0db
+  *                1:3db
+  *                2:5db
+  *                3:-3db
+  *                4:-5db
+  * @retval TRUE:set SetTxPower  success.
+  *         FALSE:set SetTxPower failed
+  */
+Boolean BT_SetTxPower(uint8_t power);
+
+
+/**
+  * @brief  Delete ble custom Service
+  * @param  none
+  * @retval TRUE:success.
+  *         FALSE:failed
+  */
+Boolean BT_DeleteService(void);
+
+
+/**
+  * @brief  add ble custom Service
+  * @param  ble_service_uuid:
+	*														byte0: uuid length(2 or 16)
+	*														byte1-2(16): uuid
+	*					service_uuid_len: sizeof(ble_service_uuid)
+  * @retval 0:failed
+  *         other:Service handle
+  */
+uint16_t BT_AddBleService(uint8_t* ble_service_uuid, uint16_t service_uuid_len);
+
+
+/**
+  * @brief  add ble custom Characteristic
+  * @param  ble_Characteristic_uuid:
+	*														byte0: characterisitic attribute
+	*																	bit0		Broadcast
+	*																	bit1		Read
+	*																	bit2		Write without Response
+	*																	bit3		Write
+	*																	bit4		Notify
+	*																	bit5		Indicate
+	*																	bit6		Authentication Signed Write
+	*																	bit7		Extended Properties
+	*														byte1:			characterisitic uuid length(2 or 16)
+	*														byte2-3(17):characterisitic uuid
+	*														byte4(18):	write/read payload length(1--20;default:1)
+	*														byte5(19)-x:write/read payload(default:00)
+	*					service_Characteristic_payload_len: sizeof(ble_Characteristic_uuid)
+  * @retval 0:failed
+  *         other:Characteristic handle
+  */
+uint16_t BT_AddBleCharacteristic(uint8_t* ble_Characteristic_uuid, uint16_t service_Characteristic_payload_len);
+
+/**
+  * @brief  Read the received bluetooth data from receive buffer
+  * @param  pbuf:the output buffer,255 bytes is enough
+  *
+  * @retval The data length of the readed,0 is fail
+  */
+int BT_ReadBTData(uint8_t* pbuf);
+
+
+/**
+  * @brief   get event opcode of bluetooth module
+  *
+  * @param  none
+  *
+  * @retval -1		:no data
+  *         other	:event opcode
+  */
+int BT_GetEventOpcode(void);
+
+
+/**
+  * @brief   parse bluetooth module data packet according to yichip HCI protocol from ipc buf,you shoud call it at BT_UART IRQHandler function
+  * @param  Unone
+  *
+  * @retval none
+  */
+void BT_ParseBTData(void);
+
+
+
+
+/**
+  * @brief   Handling user events about bluetooth module,This is not an interrupt function,A circular call is required to detect bluetooth data
+  *
+  * @param  none
+  *
+  * @retval none
+  */
+void BT_Progress(void);
+
+
+/**
+  * @brief  BT Init
+  * @param  none
+  * @retval TRUE:success
+  *         FALSE:fail
+  */
+Boolean BT_Init(void);
+
+/**
+  * @brief  BT_WakeupInit (M0 Sleep,Bt lpm Sleep)
+  * @param  none
+  * @retval TRUE:success
+  *         FALSE:fail
+  */
+Boolean BT_WakeupInit(void);
+
+/**
+  * @brief  DNS(domain name resolution)
+  * @param  dns_data: pointer to  domain name(www.baidu.com).
+            DataLen: data length(max 62 bytes)
+  * @retval TRUE:success
+  *         FALSE:fail
+  */
+Boolean BT_DnsReq( uint8_t *dns_data,int len);
+/**
+  * @brief  Connect Bnep
+  * @param   *phone_mac_addr: pointer to phone_mac_addr.
+	           Byte0~Byte5   The MAC address you want to connect to your phone
+						 Byte6~Byte21  Link key
+						 (phone MAC and Link key from NVRAM event,all zero is connect last pair phone)
+             len: data length(must be 22 byte)
+  * @retval TRUE:success
+  *         FALSE:fail
+  */
+Boolean BT_ConnectBnep( uint8_t *phone_mac_addr,int len);
+
+/**
+  * @brief  disconnect Bnep
+  * @param   none
+  * @retval TRUE:success
+  *         FALSE:fail
+  */
+Boolean BT_disconnectBnep();
+
+
+
+/**
+  * @brief  Connect Tcp
+  * @param  tcp_ip_addr: pointer to  tcp_ip_addr.
+	          Byte0  TCP connect handle(0x00 or 0x01)
+						Byte1~Byte4  IP address(192.168.1.1 is c0 a8 01 01)
+						Byte5~Byte6  port number(8888 is 22 b8)
+            len: data length(must be 7 byte)
+  * @retval TRUE:success
+  *         FALSE:fail
+  */
+Boolean BT_ConnectTcp( uint8_t *tcp_ip_addr,int len);
+
+
+
+/**
+  * @brief  Send  TcpData
+  * @param  tcpdata: pointer to  tcpdata.
+	          Byte0  TCP handle
+						Byte1~ByteN  The TCP data need to send(max 235 bytes)
+            len: data length(max value 1+235)
+  * @retval TRUE:success
+  *         FALSE:fail
+  */
+Boolean BT_BnepSendTcpData( uint8_t *tcpdata,int len);
+
+
+/**
+  * @brief  Send  Tcp big packet Data
+  * @param  tcpdata: pointer to  tcpdata.
+	          Byte0  TCP handle
+						Byte1~ByteN  The TCP data need to send(max 1460 bytes)
+            len: data length(max value 1+1460)
+  * @retval TRUE:success
+  *         FALSE:fail
+  */
+Boolean BT_BnepSendTcpBigData( uint8_t *tcpdata,int len);
+
+
+/**
+  * @brief  Send  UDP Data
+  * @param  tcpdata: pointer to  udpdata.
+	          Byte0~Byte3  UDP remote IP(192.168.1.1 is c0 a8 01 01)
+						Byte4~Byte5  UDP local port(8888 is 22 b8)
+						Byte6~Byte7  UDP remote port(12345 is 30 39)
+						Byte8~ByteN  The UDP data need to send(max 247 bytes)
+            len: data length(max value 255)
+  * @retval TRUE:success
+  *         FALSE:fail
+  */
+Boolean BT_BnepSendUdpData( uint8_t *udpdata,int len);
+
+
+
+/**
+  * @brief  Disconnect  Tcp
+  * @param  tcp_handle: the want to disconnect TCP handle(0x00 or 0x01)
+  * @retval TRUE:success
+  *         FALSE:fail
+  */
+Boolean BT_DisconnectTcp(uint8_t tcp_handle);
+
+
+
+
+
+
+
+#endif
+
Index: ModuleDemo/BlueTooth/BT_MultConnect/user/yc_bt_mult.c
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/user/yc_bt_mult.c	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/BT_MultConnect/user/yc_bt_mult.c	(working copy)
@@ -0,0 +1,1487 @@
+#include "yc_bt_mult.h"
+#include "yc_systick.h"
+#include "yc_timer.h"
+#include "yc_ipc.h"
+
+#define BT_LOG	0
+#define     BT_ERROR_LOG
+
+
+
+static tick StartTick;
+static uint32_t HCI_CMD_BIT_FLAG[2]={0};
+#define BTTIMEOUT 500
+#define BT_BUFSIZE 2048
+uint8_t rcvbuf[BT_BUFSIZE]={0};
+extern uint8_t ipcrecbuf[IPCREVSIZE];
+
+static BT_BufTypeDef BluetoothBuf;
+static uint8_t CmdRepData[5];
+static int PacketNum=0;
+
+
+extern IPC_TypeDef *IpcTx;
+extern IPC_TypeDef *IpcRx;
+extern uint8_t bt_lpm_mode;
+
+HCI_TypeDef hci_bt;
+
+void BT_BIT_SET(uint32_t* a,int b)
+{
+	if(b<32)
+	{
+		a[0] |= (1<<b);
+	}
+	else
+	{
+		a[1] |= (1<<(b-32));
+	}
+}
+
+void BT_BIT_CLEAR(uint32_t* a,int b)
+{
+	if(b<32)
+	{
+		a[0] &= ~(1<<b);
+	}
+	else
+	{
+		a[1] &= ~(1<<(b-32));
+	}
+}
+
+Boolean BT_BIT_GET(uint32_t* a,int b)
+{
+	if(b<32)
+	{
+		return (Boolean)((a[0]&(1<<b))>>b);
+	}
+	else
+	{
+		return (Boolean)((a[1]&(1<<(b-32)))>>(b-32));
+	}
+}
+
+static void SkipData(int Num)
+{
+	BluetoothBuf.ReadIndex+=Num;
+	if(BluetoothBuf.ReadIndex>=BluetoothBuf.BufSize)	BluetoothBuf.ReadIndex-=BluetoothBuf.BufSize;
+	NVIC_DisableIRQ(BT_IRQn);
+	BluetoothBuf.count-=Num;
+	NVIC_EnableIRQ(BT_IRQn);
+}
+
+static void SaveData(uint8_t* data,int len)
+{
+	int i;
+	if(BluetoothBuf.count+len>BluetoothBuf.BufSize)
+	{
+		#ifdef BT_ERROR_LOG
+		MyPrintf("BluetoothBuf full\r\n");
+		#endif
+		return;
+	}
+	for(i=0;i<len;i++)
+	{
+		BluetoothBuf.pBuf[BluetoothBuf.WriteIndex]=data[i];
+		BluetoothBuf.count++;
+		BluetoothBuf.WriteIndex++;
+		if(BluetoothBuf.WriteIndex>=BluetoothBuf.BufSize)	BluetoothBuf.WriteIndex=0;
+	}
+}
+
+//#define PrintLog
+#define DOMAIN_MAX_LEN	62
+Boolean BNEP_DomainConvert(unsigned char * domainString, unsigned char domainStringLen, unsigned char *newDomainString,int* newDomainStringIndex)
+{
+	#ifdef PrintLog
+	MyPrintf("input domain:%s \n", domainString);
+	#endif
+	unsigned char domainCount = 0;
+	*newDomainStringIndex = 1;
+	int newDomainDelimiterIndex = 0;
+	#ifdef PrintLog
+	MyPrintf("domain hex:\n");
+	for (int i = 0; i < domainStringLen; i++)
+	{
+		MyPrintf("%02X ", domainString[i]);
+	}
+	MyPrintf("\n");
+	#endif
+	while(domainStringLen--)
+	{
+		domainCount++;
+		if (*domainString == '.')
+		{
+			newDomainString[newDomainDelimiterIndex] = domainCount-1;
+			newDomainDelimiterIndex = *newDomainStringIndex;
+			(*newDomainStringIndex)++;
+			if((*newDomainStringIndex)>=DOMAIN_MAX_LEN)	return FALSE;
+			domainCount = 0;
+		}
+		else
+		{
+			newDomainString[(*newDomainStringIndex)++] = *domainString;
+			if((*newDomainStringIndex)>=DOMAIN_MAX_LEN)	return FALSE;
+		}
+		domainString++;
+	}
+	newDomainString[newDomainDelimiterIndex] = domainCount;
+	newDomainString[(*newDomainStringIndex)++] = 00;
+	if((*newDomainStringIndex)>=DOMAIN_MAX_LEN)	return FALSE;
+	#ifdef PrintLog
+	MyPrintf("format Domain:\n");
+	for (int  i = 0; i < *newDomainStringIndex; i++)
+	{
+	MyPrintf("%02X ", newDomainString[i]);
+	}
+	MyPrintf("\n");
+	#endif
+	return TRUE;
+}
+
+Boolean BT_Init()
+{
+    BluetoothBuf.BufSize =  BT_BUFSIZE;
+    BluetoothBuf.pBuf = rcvbuf;
+    BluetoothBuf.count = 0;
+    BluetoothBuf.ReadIndex = 0;
+    BluetoothBuf.WriteIndex =0;
+    HCI_CMD_BIT_FLAG[0]=0;//全局变量问题优化
+    HCI_CMD_BIT_FLAG[1]=0;
+    StartTick=0;
+    PacketNum=0;
+    int i;
+    for(i=0;i<5;i++)	CmdRepData[i]=0;
+    for(i=0;i<BT_BUFSIZE;i++)	rcvbuf[i]=0;
+    hci_bt.p_data =  ipcrecbuf;
+    IpcInit();
+    #ifdef BT_ERROR_LOG
+    MyPrintf("BT_Init end\n");
+    #endif
+    return TRUE;
+}
+
+Boolean BT_WakeupInit()
+{
+    BluetoothBuf.BufSize =  BT_BUFSIZE;
+    BluetoothBuf.pBuf = rcvbuf;
+    BluetoothBuf.count = 0;
+    BluetoothBuf.ReadIndex = 0;
+    BluetoothBuf.WriteIndex =0;
+    hci_bt.p_data =  ipcrecbuf;
+    enable_intr(INTR_BT);
+    bt_lpm_mode = 1;
+    BT_SetLpmMode(0x00);
+    #ifdef BT_ERROR_LOG
+    MyPrintf("BT_Wakeup Init end\n");
+    #endif
+    return TRUE;
+}
+
+static uint8_t GetData(Boolean UpdataAnalyzeIndex)
+{
+    uint8_t TempData;
+    TempData=BluetoothBuf.pBuf[BluetoothBuf.ReadIndex];
+    if(UpdataAnalyzeIndex)
+    {
+        NVIC_DisableIRQ(BT_IRQn);
+        BluetoothBuf.count--;
+        NVIC_EnableIRQ(BT_IRQn);
+        BluetoothBuf.ReadIndex++;
+        if(BluetoothBuf.ReadIndex>=BluetoothBuf.BufSize)	BluetoothBuf.ReadIndex=0;
+    }
+    return TempData;
+}
+
+
+static Boolean  SendCMD(HCI_TypeDef* msg)
+{
+	if((msg->DataLen+3) > IPC_get_available_size())
+	{
+		#ifdef BT_ERROR_LOG
+		MyPrintf("IPC BT Tx FULL\n");
+		#endif
+		return FALSE;
+	}
+	msg->type=HCI_CMD;
+#if BT_LOG
+	MyPrintf("Print Send Data Pack:\n");
+	PrintHCIPack(msg, "Send");//打印发送包
+#endif
+	IPC_TxData(msg);
+return TRUE;
+}
+
+Boolean BT_ConfigMultiConnect(uint8_t connectmode)
+{
+    HCI_TypeDef msg;
+    msg.opcode = HCI_CMD_SET_MULTI_PICONET;
+    msg.DataLen = 1;
+    uint8_t multflag = connectmode;
+    msg.p_data = &multflag;
+    BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_MULT_MODE);
+    SendCMD(&msg);
+    StartTick=SysTick_GetTick();
+    do
+    {
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_MULT_MODE))
+		{
+			return TRUE;
+		}
+    }while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));//ms
+    return FALSE;
+}
+
+Boolean BT_SetBtAddr(uint8_t *bt_addr)
+{
+    HCI_TypeDef msg;
+    msg.opcode = HCI_CMD_SET_BT_ADDR;
+    msg.DataLen = 6;
+    msg.p_data = bt_addr;
+    BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_BT_ADDR);
+    SendCMD(&msg);
+    StartTick=SysTick_GetTick();
+    do
+    {
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_BT_ADDR))
+		{
+			return TRUE;
+		}
+    }while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));//ms
+    return FALSE;
+}
+
+
+Boolean BT_SetBleAddr(uint8_t * bt_addr)
+{
+    HCI_TypeDef msg;
+    msg.opcode = HCI_CMD_SET_BLE_ADDR;
+    msg.DataLen = 6;
+    msg.p_data = bt_addr;
+    BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_BLE_ADDR);
+    SendCMD(&msg);
+    StartTick=SysTick_GetTick();
+    do
+    {
+        if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_BLE_ADDR))
+        {
+            return TRUE;
+        }
+    }  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));//ms
+    return FALSE;
+}
+
+Boolean BT_SetVisibility(Boolean bt_discoverable, Boolean bt_connectability, Boolean ble_discoverable)
+{
+    HCI_TypeDef msg;
+    uint8_t visibility_data = 0;
+    if (bt_discoverable == 1)
+        visibility_data = visibility_data | 0x01;
+    if (bt_connectability == 1)
+        visibility_data = visibility_data | 0x02;
+    if (ble_discoverable == 1)
+        visibility_data = visibility_data | 0x04;
+
+    msg.opcode = HCI_CMD_SET_VISIBILITY;
+    msg.DataLen = 0x01;
+    msg.p_data = &visibility_data;
+    BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_VISIBILITY);
+    SendCMD(&msg);
+    StartTick=SysTick_GetTick();
+    do
+    {
+        if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_VISIBILITY))
+        {
+            return TRUE;
+        }
+    }  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+    return FALSE;
+}
+
+Boolean BT_SetBtName(uint8_t * bt_name, uint16_t name_len)
+{
+    HCI_TypeDef msg;
+    msg.opcode = HCI_CMD_SET_BT_NAME;
+    msg.DataLen = name_len;
+    msg.p_data  = bt_name;
+    BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_BT_NAME);
+    SendCMD(&msg);
+    StartTick=SysTick_GetTick();
+    do
+	{
+        if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_BT_NAME))
+        {
+            return TRUE;
+        }
+    }  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+    return FALSE;
+}
+
+
+Boolean BT_SetBleName(uint8_t* ble_name, uint16_t name_len)
+{
+    HCI_TypeDef msg;
+    msg.opcode = HCI_CMD_SET_BLE_NAME;
+    msg.DataLen = name_len;
+    msg.p_data  = ble_name;
+    BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_BLE_NAME);
+    SendCMD(&msg);
+    StartTick=SysTick_GetTick();
+    do
+    {
+        if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_BLE_NAME))
+        {
+            return TRUE;
+        }
+    }  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+    return FALSE;
+}
+
+
+Boolean BT_SendSppData(uint8_t * spp_data, uint16_t DataLen)
+{
+    if(DataLen==0||DataLen>MAX_BLUETOOTH_DATA_LEN)	return FALSE;
+    HCI_TypeDef msg;
+    msg.opcode = HCI_CMD_SEND_SPP_DATA;
+    msg.DataLen = DataLen;
+    msg.p_data = spp_data;
+    BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SEND_SPP_DATA);
+    SendCMD(&msg);
+    StartTick=SysTick_GetTick();
+    do
+    {
+        if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SEND_SPP_DATA))
+        {
+            return TRUE;
+        }
+    }  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+    return FALSE;
+}
+
+Boolean BT_SendBleData(uint8_t * ble_data, uint16_t DataLen)
+{
+    if(DataLen<2||DataLen>MAX_BLUETOOTH_DATA_LEN)	return FALSE;
+    HCI_TypeDef msg;
+    msg.opcode = HCI_CMD_SEND_BLE_DATA;
+    msg.DataLen = DataLen;
+
+    msg.p_data = ble_data;
+    BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SEND_BLE_DATA);
+    SendCMD(&msg);
+    StartTick=SysTick_GetTick();
+    do
+    {
+        if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SEND_BLE_DATA))
+        {
+            return TRUE;
+        }
+    }  while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
+    return FALSE;
+}
+
+
+uint8_t Bt_GetBtStatus(void)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_STATUS_REQUEST;
+	msg.DataLen = 0;
+	msg.p_data=NULL;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_STATUS_REQUEST);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_STATUS_REQUEST))
+		{
+			return CmdRepData[0];
+		}
+	} while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));//ms
+  return 0x80;
+}
+
+Boolean BT_SetParingMode(uint8_t mode)
+{
+	uint8_t tmode = mode ;
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_SET_PAIRING_MODE;
+	msg.DataLen = 1;
+	msg.p_data = &tmode;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_PAIRING_MODE);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_PAIRING_MODE))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
+	return FALSE;
+}
+
+Boolean BT_SetPincode(uint8_t* Pincode,uint8_t DataLen)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_SET_PINCODE;
+	msg.DataLen = DataLen;
+	msg.p_data = Pincode;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_PINCODE);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_PINCODE))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return FALSE;
+}
+
+
+
+Boolean BT_BtDisconnect(void)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_BT_DISCONNECT;
+	msg.DataLen = 0;
+	msg.p_data = NULL;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_BT_DISCONNECT);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_BT_DISCONNECT))
+		{
+			return TRUE;
+		}
+	}while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
+	return FALSE;
+}
+
+uint32_t BT_GetVersion(void)
+{
+	HCI_TypeDef msg;
+	uint32_t TempVersion=0;
+	msg.opcode = HCI_CMD_VERSION_REQUEST;
+	msg.DataLen = 0;
+	msg.p_data = NULL;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_GET_VERSION);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_GET_VERSION))
+		{
+			TempVersion=(CmdRepData[0]<<8) |(CmdRepData[1]);
+			return TempVersion;
+		}
+	}while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
+	return 0;
+}
+
+
+Boolean BT_BleDisconnect(void)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_BLE_DISCONNECT;
+	msg.DataLen = 0;
+	msg.p_data = NULL;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_BLE_DISCONNECT);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_BLE_DISCONNECT))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
+	return FALSE;
+}
+
+
+Boolean BT_SetNVRAM(uint8_t * NvData,int len)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_SET_NVRAM;
+	msg.DataLen = len;
+	msg.p_data = NvData;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_NVRAM);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_NVRAM))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
+	return FALSE;
+}
+
+
+Boolean BT_EnterSleepMode(void)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_ENTER_SLEEP_MODE;
+	msg.DataLen = 0;
+	msg.p_data = NULL;
+	SendCMD(&msg);
+	return TRUE;
+}
+
+Boolean BT_SetLpmMode(uint8_t mode)
+{
+	HCI_TypeDef msg;
+	uint8_t temp_mode=mode;
+	msg.opcode = HCI_CMD_SET_LPM_MODE;
+	msg.DataLen =1;
+	msg.p_data = &temp_mode;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_LPM_MODE);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_LPM_MODE))
+		{
+			bt_lpm_mode = mode;
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
+	return FALSE;
+}
+
+
+Boolean BT_ConfirmGkey(uint8_t isMatching)
+{
+	HCI_TypeDef msg;
+	uint8_t tmismatching = isMatching;
+	msg.opcode = HCI_CMD_CONFIRM_GKEY;
+	msg.DataLen =1;
+	msg.p_data = &tmismatching;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_CONFIRM_GKEY);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_CONFIRM_GKEY))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
+	return FALSE;
+}
+
+Boolean BT_SetSppFlowcontrol(uint8_t handle,uint8_t packetNum)
+{
+    uint8_t temp_packetNum[2];
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_GET_CREADIT_GIVEN;
+	msg.DataLen= 2;
+    temp_packetNum[0]= handle;
+    temp_packetNum[1]= packetNum;
+	msg.p_data = temp_packetNum;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_GET_CREADIT_GIVEN);
+	SendCMD(&msg);
+	return TRUE;//no event responce
+}
+
+
+Boolean BT_PasskeyEntry(uint8_t *key_data)
+{
+#define PKLEN 0x04
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_PASSKEY_ENTRY;
+	msg.DataLen = PKLEN;
+	msg.p_data = key_data;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_PASSKEY_ENTRY);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_PASSKEY_ENTRY))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return FALSE;
+}
+
+Boolean BT_SetLEParing(uint8_t mode)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_LE_SET_PAIRING;
+	msg.DataLen = 1;
+	uint8_t temp_mode=mode;
+	msg.p_data = &temp_mode;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_LE_SET_PARING);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_LE_SET_PARING))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return FALSE;
+}
+
+Boolean BT_SetLEAdvData(uint8_t* adv_data, int DataLen)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_LE_SET_ADV_DATA;
+	msg.DataLen = DataLen;
+	msg.p_data = adv_data;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_LE_SET_ADV_DATA);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_LE_SET_ADV_DATA))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return FALSE;
+}
+
+Boolean BT_SetLEScanData(uint8_t* scan_data, int DataLen)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_LE_SET_SCAN_DATA;
+	msg.DataLen = DataLen;
+	msg.p_data = scan_data;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_LE_SET_SCAN_DATA);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_LE_SET_SCAN_DATA))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return FALSE;
+}
+
+Boolean BT_SetLESendConnUpdate(uint8_t *data,int len)
+{
+	if(0x08 != len)
+		return FALSE;
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_LE_SEND_CONN_UPDATE_REQ;
+	msg.DataLen = len;
+	msg.p_data = data;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_LE_SEND_CONN_UPDATE);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_LE_SEND_CONN_UPDATE))
+		{
+			return TRUE;
+		}
+	} while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return FALSE;
+}
+
+Boolean BT_SetLEAdvInterval(uint16_t ble_adv_interval)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_LE_SET_ADV_PARM;
+	msg.DataLen = 2;
+    uint8_t ble_adv_interval_buf[2];
+    ble_adv_interval_buf[0]=(ble_adv_interval&0xff);
+    ble_adv_interval_buf[1]=((ble_adv_interval>>8)&0xff);
+	msg.p_data = ble_adv_interval_buf;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_LE_SET_ADV_PARM);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_LE_SET_ADV_PARM))
+		{
+			return TRUE;
+		}
+	} while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return FALSE;
+}
+
+
+
+Boolean BT_RejectJustWork(uint8_t justwork)
+{
+	uint8_t td = justwork;
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_REJECT_JUSTWORK;
+	msg.DataLen = 0x01;
+	msg.p_data = &td;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_REJECT_JUSTWORK);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_REJECT_JUSTWORK))
+		{
+			return TRUE;
+		}
+	} while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return FALSE;
+}
+
+Boolean BT_SetTxPower(uint8_t power)
+{
+	uint8_t tpower = power;
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_SET_TX_POWER;
+	msg.DataLen = 0x01;
+	msg.p_data = &tpower;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_TXPOWER);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_TXPOWER))
+		{
+			return TRUE;
+		}
+	} while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return FALSE;
+}
+
+Boolean BT_Set_FixedPasskey(uint8_t* key)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_LE_SET_FIXED_PASSKEY;
+	msg.DataLen = 0x05;
+	msg.p_data = key;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_LE_SET_FIXED_PASSKEY);
+	SendCMD(&msg);
+  StartTick=SysTick_GetTick();
+  do
+  {
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_LE_SET_FIXED_PASSKEY))
+		{
+			return TRUE;
+		}
+	} while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return FALSE;
+}
+
+Boolean BT_SetCOD(uint8_t * bt_cod)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_SET_COD;
+	msg.DataLen = 3;
+	msg.p_data = bt_cod;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_COD);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_COD))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));//ms
+	return FALSE;
+}
+
+
+Boolean BT_DeleteService(void)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_DELETE_CUSTOMIZE_SERVICE;
+	msg.DataLen = 0;
+	msg.p_data = NULL;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_DELETE_SERVICE);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_DELETE_SERVICE))
+		{
+			return TRUE;
+		}
+	}while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
+	return FALSE;
+}
+
+uint16_t BT_AddBleService(uint8_t* ble_service_uuid, uint16_t service_uuid_len)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_ADD_SERVICE_UUID;
+	msg.DataLen = service_uuid_len;
+	msg.p_data  = ble_service_uuid;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_ADD_UUID);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_ADD_UUID))
+		{
+			return (uint16_t)(CmdRepData[0]|(CmdRepData[1]<<8));
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return 0x00;
+}
+
+
+
+
+uint16_t BT_AddBleCharacteristic(uint8_t* ble_Characteristic_uuid, uint16_t service_Characteristic_payload_len)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_ADD_CHARACTERISTIC_UUID;
+	msg.DataLen = service_Characteristic_payload_len;
+	msg.p_data  = ble_Characteristic_uuid;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_ADD_UUID);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_ADD_UUID))
+		{
+			return (uint16_t)(CmdRepData[0]|(CmdRepData[1]<<8));
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return 0x00;
+}
+
+Boolean BT_DnsReq( uint8_t *dns_data,int len)
+{
+	uint8_t format_dns[DOMAIN_MAX_LEN];
+	int format_dns_len;
+	if(TRUE != BNEP_DomainConvert(dns_data,len,format_dns,&format_dns_len))
+	{
+		return FALSE;
+	}
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_DNS_REQ;
+	msg.DataLen = format_dns_len;
+	msg.p_data = format_dns;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_DNS_REQ);
+  SendCMD(&msg);
+  StartTick=SysTick_GetTick();
+  do
+  {
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_DNS_REQ))
+		{
+			return TRUE;
+		}
+  }while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));//ms
+	return FALSE;
+}
+
+Boolean BT_ConnectBnep( uint8_t *phone_mac_addr,int len)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_CONNECT_BNEP;
+	msg.DataLen = len;
+	msg.p_data = phone_mac_addr;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_CONNECT_BNEP);
+  SendCMD(&msg);
+  StartTick=SysTick_GetTick();
+  do
+  {
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_CONNECT_BNEP))
+		{
+			return TRUE;
+		}
+  }while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));//ms
+	return FALSE;
+}
+
+Boolean BT_disconnectBnep()
+{
+	return BT_BtDisconnect();
+}
+
+Boolean BT_ConnectTcp(uint8_t *tcp_ip_addr,int len)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_CONNECT_TCP;
+	msg.DataLen = len;
+	msg.p_data = tcp_ip_addr;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_CONNECT_TCP);
+  SendCMD(&msg);
+  StartTick=SysTick_GetTick();
+  do
+  {
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_CONNECT_TCP))
+		{
+			return TRUE;
+		}
+  }while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));//ms
+	return FALSE;
+}
+
+
+
+Boolean BT_BnepSendTcpData( uint8_t *tcpdata,int len)
+{
+	if((len-1)>MAX_TCP_DATA_LEN)	return FALSE;
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_BNEP_SEND_TCP_DATA;
+	msg.DataLen = len;
+	msg.p_data = tcpdata;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_BNEP_SEND_TCP_DATA);
+  SendCMD(&msg);
+  StartTick=SysTick_GetTick();
+  do
+  {
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_BNEP_SEND_TCP_DATA))
+		{
+			return TRUE;
+		}
+  }while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));//ms
+	return FALSE;
+}
+
+#define BIG_DATA_HEAD_LEN	5
+Boolean BT_BnepSendTcpBigData( uint8_t *tcpdata,int len)
+{
+	if((len-1)>MAX_BIG_DATA_LEN)	return FALSE;
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_SEND_BIG_DATA;
+	int sendedLen=0;
+	int packetLen;
+	uint8_t firstPacketData[MAX_BLUETOOTH_DATA_LEN];
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_BNEP_SEND_TCP_BIG_DATA_FINISH);
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_BNEP_SEND_TCP_BIG_DATA_STATUS);
+	while(sendedLen<(len-1))
+	{
+		if(sendedLen==0)
+		{
+			packetLen=(len-1)>(MAX_BLUETOOTH_DATA_LEN-BIG_DATA_HEAD_LEN)?(MAX_BLUETOOTH_DATA_LEN-BIG_DATA_HEAD_LEN):(len-1);
+			msg.DataLen=packetLen+BIG_DATA_HEAD_LEN;
+			firstPacketData[0]=tcpdata[0];//handle
+
+			firstPacketData[1]=((len-1)&0xff);
+			firstPacketData[2]=(((len-1)>>8)&0xff);//big packet len
+
+			firstPacketData[3]=0;
+			firstPacketData[4]=0;//reserved
+			memcpy((uint8_t*)&firstPacketData[5],(uint8_t*)&tcpdata[1],packetLen);
+			msg.p_data = firstPacketData;
+		}
+		else
+		{
+			packetLen=((len-1)-sendedLen)>MAX_BLUETOOTH_DATA_LEN?MAX_BLUETOOTH_DATA_LEN:((len-1)-sendedLen);
+			msg.DataLen=packetLen;
+			msg.p_data =(uint8_t*)&tcpdata[sendedLen+1];
+		}
+
+		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_BNEP_SEND_TCP_BIG_DATA);
+		SendCMD(&msg);
+		StartTick=SysTick_GetTick();
+		while(!BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_BNEP_SEND_TCP_BIG_DATA))
+		{
+			if(SysTick_IsTimeOut(StartTick,BTTIMEOUT))
+			{
+				return FALSE;
+			}
+		}
+		sendedLen +=packetLen;
+	}
+	//wait big data finish
+	StartTick=SysTick_GetTick();
+	while(!BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_BNEP_SEND_TCP_BIG_DATA_FINISH))
+	{
+		if(SysTick_IsTimeOut(StartTick,BTTIMEOUT))
+		{
+			return FALSE;
+		}
+	}
+	//wait big data status
+	StartTick=SysTick_GetTick();
+	while(!BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_BNEP_SEND_TCP_BIG_DATA_STATUS))
+	{
+		if(SysTick_IsTimeOut(StartTick,BTTIMEOUT))
+		{
+			return FALSE;
+		}
+	}
+	return TRUE;
+}
+
+
+Boolean BT_BnepSendUdpData( uint8_t *udpdata,int len)
+{
+	if(len<8||len>MAX_BLUETOOTH_DATA_LEN)	return FALSE;
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_SEND_UDP_DATA;
+	msg.DataLen = len;
+	msg.p_data = udpdata;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_BNEP_SEND_UDP_DATA);
+  SendCMD(&msg);
+  StartTick=SysTick_GetTick();
+  do
+  {
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_BNEP_SEND_UDP_DATA))
+		{
+			return TRUE;
+		}
+  }while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));//ms
+	return FALSE;
+}
+
+
+Boolean BT_DisconnectTcp(uint8_t tcp_handle)
+{
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_DISCONNECT_TCP;
+	msg.DataLen = 1;
+    uint8_t temp_tcp_handle=tcp_handle;
+	msg.p_data = &temp_tcp_handle;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_DISCONNECT_TCP);
+  SendCMD(&msg);
+  StartTick=SysTick_GetTick();
+  do
+  {
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_DISCONNECT_TCP))
+		{
+			return TRUE;
+		}
+  }while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));//ms
+	return FALSE;
+}
+
+void BT_ParseBTData()
+{
+	//此判断用于防止接收包buf满
+	if(BluetoothBuf.BufSize - BluetoothBuf.count < 258)
+	{
+		#if BT_LOG
+		MyPrintf("BluetoothBuf full2");
+		MyPrintf("BluetoothBuf.BufSize: %d,BluetoothBuf.count: %d\n",BluetoothBuf.BufSize,BluetoothBuf.count);
+		#endif
+		return;
+	}
+
+	if(TRUE==IPC_ReadBtData(&hci_bt))//The packet header has been receive
+	{
+		#ifdef SDK_DEBUG
+	//	PrintHCIPack(&hci_bt, "Receive");
+		#endif
+		if(hci_bt.type==HCI_EVENT)
+		{
+
+			StartTick=SysTick_GetTick();//处理tx被rx阻塞时的timeout
+			switch(hci_bt.opcode)
+			{
+				case HCI_EVENT_SPP_DATA_RECEIVED:
+//					SaveData((uint8_t *)&hci_bt,hci_bt.DataLen+3);
+					SaveData((uint8_t*)&hci_bt,3);
+					SaveData(hci_bt.p_data,hci_bt.DataLen);
+					PacketNum++;
+					break;
+
+				case HCI_EVENT_BLE_DATA_RECEIVED:
+//					SaveData((uint8_t *)&hci_bt,hci_bt.DataLen+3);
+					SaveData((uint8_t*)&hci_bt,3);
+					SaveData(hci_bt.p_data,hci_bt.DataLen);
+					PacketNum++;
+					break;
+
+				case HCI_EVENT_BNEP_RECEIVE_TCP_DATA:
+//					SaveData((uint8_t *)&hci_bt,hci_bt.DataLen+3);
+					SaveData((uint8_t*)&hci_bt,3);
+					SaveData(hci_bt.p_data,hci_bt.DataLen);
+					PacketNum++;
+					break;
+
+				case HCI_EVENT_BNEP_RECEIVE_UDP_DATA:
+//					SaveData((uint8_t *)&hci_bt,hci_bt.DataLen+3);
+					SaveData((uint8_t*)&hci_bt,3);
+					SaveData(hci_bt.p_data,hci_bt.DataLen);
+					PacketNum++;
+					break;
+
+				case HCI_EVENT_BT_CONNECTED:
+				case HCI_EVENT_BLE_CONNECTED:
+				case HCI_EVENT_GKEY:
+				case HCI_EVENT_BT_DISCONNECTED:
+				case HCI_EVENT_BLE_DISCONNECTED:
+				case HCI_EVENT_NVRAM_CHANGED:
+				case HCI_EVENT_GET_PASSKEY:
+				case HCI_EVENT_PAIRING_COMPLETED:
+				case HCI_EVENT_LE_PAIRING_STATE:
+				case HCI_EVENT_BNEP_CONNECT:
+				case HCI_EVENT_BNEP_DISCONNECT:
+				case HCI_EVENT_BNEP_CONNECT_FAIL:
+				case HCI_EVENT_TCP_CONNECT:
+				case HCI_EVENT_TCP_DISCONNECT:
+				case HCI_EVNET_TCP_FAIL:
+				case HCI_EVENT_TCP_CONNECT_LOG:
+				case HCI_EVENT_BNEP_CHIP_ERROR:
+				case HCI_EVENT_DNS_RSP:
+				case HCI_EVENT_BB_DISCONNECT:
+				case HCI_EVENT_BT_NAME:
+				case HCI_EVENT_UDP_INFO:
+
+
+			//		SaveData((uint8_t *)&hci_bt,hci_bt.DataLen+3);
+					SaveData((uint8_t*)&hci_bt,3);
+					SaveData(hci_bt.p_data,hci_bt.DataLen);
+					PacketNum++;
+					break;
+
+				case HCI_EVENT_CMD_COMPLETE:
+					switch(hci_bt.p_data[0])
+					{
+						case HCI_CMD_SET_BT_ADDR:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_SET_BT_ADDR);
+							}
+							break;
+
+						case HCI_CMD_SET_BLE_ADDR:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_SET_BLE_ADDR);
+							}
+							break;
+
+						case HCI_CMD_SET_VISIBILITY:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_SET_VISIBILITY);
+							}
+							break;
+
+						case HCI_CMD_SET_BT_NAME:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_SET_BT_NAME);
+							}
+							break;
+						case HCI_CMD_SET_BLE_NAME:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_SET_BLE_NAME);
+							}
+							break;
+
+						case HCI_CMD_SEND_SPP_DATA:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_SEND_SPP_DATA);
+							}
+							break;
+
+						case HCI_CMD_SEND_BLE_DATA:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_SEND_BLE_DATA);
+							}
+							break;
+
+						case HCI_CMD_SET_PAIRING_MODE:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_SET_PAIRING_MODE);
+							}
+							break;
+
+						case HCI_CMD_SET_PINCODE:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_SET_PINCODE);
+							}
+							break;
+
+						case HCI_CMD_VERSION_REQUEST:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_GET_VERSION);
+								CmdRepData[0] = hci_bt.p_data[2];
+								CmdRepData[1] = hci_bt.p_data[3];
+							}
+							break;
+
+						case HCI_CMD_LE_SET_PAIRING:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_LE_SET_PARING);
+							}
+							break;
+
+						case HCI_CMD_BT_DISCONNECT:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_BT_DISCONNECT);
+							}
+							break;
+
+						case HCI_CMD_BLE_DISCONNECT:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_BLE_DISCONNECT);
+							}
+							break;
+						case HCI_CMD_SET_NVRAM:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_SET_NVRAM);
+							}
+							break;
+
+						case HCI_CMD_CONFIRM_GKEY:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_CONFIRM_GKEY);
+							}
+							break;
+
+						case HCI_CMD_SET_LPM_MODE:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_SET_LPM_MODE);
+							}
+							break;
+
+						case HCI_CMD_PASSKEY_ENTRY:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_PASSKEY_ENTRY);
+							}
+							break;
+
+						case HCI_CMD_LE_SET_ADV_DATA:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_LE_SET_ADV_DATA);
+							}
+						break;
+
+						case HCI_CMD_LE_SET_SCAN_DATA:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_LE_SET_SCAN_DATA);
+							}
+						break;
+
+						case HCI_CMD_LE_SEND_CONN_UPDATE_REQ:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_LE_SEND_CONN_UPDATE);
+							}
+						break;
+
+						case HCI_CMD_LE_SET_ADV_PARM:
+						if(!hci_bt.p_data[1])
+						{
+							 BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_LE_SET_ADV_PARM);
+						}
+						break;
+
+                        case HCI_CMD_SET_MULTI_PICONET:
+                        if(!hci_bt.p_data[1])
+						{
+							 BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_SET_MULT_MODE);
+						}
+						break;
+
+                        case HCI_CMD_SET_TX_POWER:
+						if(!hci_bt.p_data[1])
+						{
+							 BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_SET_TXPOWER);
+						}
+						break;
+
+						case HCI_CMD_REJECT_JUSTWORK:
+						if(!hci_bt.p_data[1])
+						{
+							 BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_REJECT_JUSTWORK);
+						}
+						break;
+
+						case HCI_CMD_SET_COD:
+						if(!hci_bt.p_data[1])
+						{
+							BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_SET_COD);
+						}
+						break;
+
+						case HCI_CMD_DELETE_CUSTOMIZE_SERVICE:
+						if(!hci_bt.p_data[1])
+						{
+							BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_DELETE_SERVICE);
+						}
+						break;
+
+						case HCI_CMD_LE_SET_FIXED_PASSKEY:
+						if(!hci_bt.p_data[1])
+						{
+							 BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_LE_SET_FIXED_PASSKEY);
+						}
+						break;
+
+						case HCI_CMD_CONNECT_BNEP:
+						if(!hci_bt.p_data[1])
+						{
+							 BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_CONNECT_BNEP);
+						}
+						break;
+
+						case HCI_CMD_CONNECT_TCP:
+						if(!hci_bt.p_data[1])
+						{
+							 BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_CONNECT_TCP);
+						}
+						break;
+
+						case HCI_CMD_DISCONNECT_TCP:
+						if(!hci_bt.p_data[1])
+						{
+							 BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_DISCONNECT_TCP);
+						}
+						break;
+
+						case HCI_CMD_BNEP_SEND_TCP_DATA:
+						if(!hci_bt.p_data[1])
+						{
+							 BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_BNEP_SEND_TCP_DATA);
+						}
+						break;
+
+						case HCI_CMD_SEND_UDP_DATA:
+						if(!hci_bt.p_data[1])
+						{
+							 BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_BNEP_SEND_UDP_DATA);
+						}
+						break;
+
+						case HCI_CMD_SEND_BIG_DATA:
+						if(!hci_bt.p_data[1])
+						{
+							 BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_BNEP_SEND_TCP_BIG_DATA);
+						}
+						break;
+
+						case HCI_CMD_DNS_REQ:
+						if(!hci_bt.p_data[1])
+						{
+							 BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_DNS_REQ);
+						}
+						break;
+
+						default:
+						#ifdef BT_ERROR_LOG
+						MyPrintf("bt 06 cmd err\n");
+						#endif
+							break;
+					}
+					break;
+
+				case HCI_EVENT_I_AM_READY:
+					BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_MODULE_READY);
+					break;
+
+				case HCI_EVENT_STAUS_RESPONSE:
+					BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_STATUS_REQUEST);
+					CmdRepData[0] = hci_bt.p_data[0];
+					break;
+
+				case HCI_EVENT_UUID_HANDLE:
+					BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_ADD_UUID);
+					CmdRepData[0] = hci_bt.p_data[0];
+					CmdRepData[1] = hci_bt.p_data[1];
+					break;
+
+				case HCI_EVENT_BIG_DATA_FINISH:
+					if(hci_bt.p_data[0]==0x00)
+					{
+						BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_BNEP_SEND_TCP_BIG_DATA_FINISH);
+					}
+					break;
+
+				case HCI_EVENT_BIG_DATA_STATUS:
+					if(hci_bt.p_data[0]==0x03||hci_bt.p_data[0]==0x04)
+					{
+						BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_BNEP_SEND_TCP_BIG_DATA_STATUS);
+					}
+					break;
+
+				default:
+				#ifdef BT_ERROR_LOG
+				MyPrintf("bt event err");
+				#endif
+					break;
+			}
+			IPC_HOLD_BT = 0;
+			WAKEUP_BT &= ~(1<<WAKEUP_BT_FLAG);
+		}
+		else
+		{
+			#ifdef BT_ERROR_LOG
+			MyPrintf("bt 02 err");
+			#endif
+		}
+	}
+	else
+	{
+		#ifdef BT_ERROR_LOG
+		MyPrintf("receive bt data err");
+		#endif
+	}
+}
+
+int BT_GetEventOpcode()
+{
+	if(PacketNum<=0)	return -1;
+	uint8_t TempOpcode;
+	int TempIndex=BluetoothBuf.ReadIndex+1;
+	if(TempIndex==BluetoothBuf.BufSize)	TempIndex=0;
+	TempOpcode=BluetoothBuf.pBuf[TempIndex];
+
+	/*这几个事件用户不用取数据，所以跳过数据包，维护读指针，
+	其他需要用户获取数据的事件则在BT_ReadBTData中维护指针*/
+	if(	/*TempOpcode==BT_CONNECTED||\*/
+		TempOpcode==BLE_CONNECTED||\
+		/*TempOpcode==BT_DISCONNECTED||\*/
+		TempOpcode==BLE_DISCONNECTED||\
+	  TempOpcode==BNEP_CONNECT||\
+	  TempOpcode==BNEP_DISCONNECT||\
+	  TempOpcode==BNEP_CHIP_ERROR||\
+		TempOpcode==HCI_EVENT_BB_DISCONNECT||\
+		TempOpcode==PASSKEY)
+	{
+		SkipData(3);
+	}
+	NVIC_DisableIRQ(BT_IRQn);
+	PacketNum--;
+	NVIC_EnableIRQ(BT_IRQn);
+	return TempOpcode;
+}
+
+
+
+int BT_ReadBTData(uint8_t* pbuf)
+{
+	uint8_t OpCode;
+	int len=0;
+	int i=0;
+	if(BluetoothBuf.count<3)	return 0;
+	SkipData(1);
+	OpCode=GetData(TRUE);
+	len=GetData(TRUE);
+//	if(OpCode==BLE_DATA)
+//	{
+//		len-=2;//ble handle 处理
+//		SkipData(2);
+//	}
+	for(i=0;i<len;i++)
+	{
+		pbuf[i]=GetData(TRUE);
+	}
+	return len;
+}
+
+
+
Index: ModuleDemo/BlueTooth/HCI/prj/GCC/c.bat
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/HCI/prj/GCC/c.bat	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/HCI/prj/GCC/c.bat	(working copy)
@@ -0,0 +1,3 @@
+cls
+make clean
+make
\ No newline at end of file
Index: ModuleDemo/BlueTooth/HCI/prj/GCC/makefile
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/HCI/prj/GCC/makefile	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/HCI/prj/GCC/makefile	(working copy)
@@ -0,0 +1,236 @@
+
+ifeq ($(OS),Windows_NT)
+DIR = C:/gcc-arm-none-eabi-7-2018-q2-update-win32
+else
+DIR = /usr/gcc-arm-none-eabi-7-2018-q2-update
+endif
+
+ARCH = $(DIR)/bin/arm-none-eabi
+GCC = $(ARCH)-gcc
+LD = $(ARCH)-ld
+AS = $(ARCH)-as
+OBJCOPY = $(ARCH)-objcopy
+OBJDUMP = "$(ARCH)-objdump"
+LIB_PATH = ../../../../../Librarier
+USER_PATH = ../../user
+
+
+all : output/out.hex
+
+
+CORE_OBJS =  $(LIB_PATH)/startup/flash_start_gcc \
+             $(LIB_PATH)/core/system \
+             $(LIB_PATH)/core/bt_code \
+             $(LIB_PATH)/core/misc \
+             $(LIB_PATH)/sdk/yc_gpio \
+             $(LIB_PATH)/sdk/yc_uart \
+             $(LIB_PATH)/sdk/yc_lpm \
+             $(LIB_PATH)/sdk/yc_sysctrl \
+             $(LIB_PATH)/sdk/yc_bt \
+             $(LIB_PATH)/sdk/yc_systick \
+             $(LIB_PATH)/sdk/yc_ipc \
+             $(LIB_PATH)/sdk/yc_otp \
+             $(LIB_PATH)/sdk/yc_timer
+
+
+USER_OBJS = $(USER_PATH)/main
+
+
+OBJS = $(CORE_OBJS) $(USER_OBJS)
+
+INC_DIR = -I $(LIB_PATH)/core \
+          -I $(LIB_PATH)/sdk
+
+
+CFLAG =  -mthumb -mcpu=cortex-m0 -c -g -Os $(INC_DIR) $(DEF) -fno-toplevel-reorder -ffunction-sections -fdata-sections
+LDFLAG = -T output/ld.script -Map=output/memmap  $(LIB_PATH)/sdk/libyc_qspi.a -lc -lm -lgcc -L "$(DIR)/lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m"  -L "$(DIR)/arm-none-eabi/lib/thumb/v6-m"
+
+define ldscript =
+/* Linker script to configure memory regions.
+ * Need modifying for a specific board.
+ *   FLASH.ORIGIN: starting address of flash
+ *   FLASH.LENGTH: length of flash
+ *   RAM.ORIGIN: starting address of RAM bank 0
+ *   RAM.LENGTH: length of RAM bank 0
+ */
+MEMORY
+{
+  FLASH (rx) : ORIGIN = 0x1000000, LENGTH = 0x80000 /* 512K */
+  RAM (rwx) : ORIGIN = 0x20000, LENGTH = 0x10000 /* 64K */
+}
+
+/* Linker script to place sections and symbol values. Should be used together
+ * with other linker script that defines memory regions FLASH and RAM.
+ * It references following symbols, which must be defined in code:
+ *   Reset_Handler : Entry of reset handler
+ *
+ * It defines following symbols, which code can use without definition:
+ *   __exidx_start
+ *   __exidx_end
+ *   __copy_table_start__
+ *   __copy_table_end__
+ *   __zero_table_start__
+ *   __zero_table_end__
+ *   __etext
+ *   __data_start__
+ *   __preinit_array_start
+ *   __preinit_array_end
+ *   __init_array_start
+ *   __init_array_end
+ *   __fini_array_start
+ *   __fini_array_end
+ *   __data_end__
+ *   __bss_start__
+ *   __bss_end__
+ *   __end__
+ *   end
+ *   __HeapLimit
+ *   __StackLimit
+ *   __StackTop
+ *   __stack
+ */
+ENTRY(Reset_Handler)
+
+SECTIONS
+{
+	.text :
+	{
+		*flash_start*.o
+		*(.text*)
+
+		KEEP(*(.init))
+		KEEP(*(.fini))
+
+		/* .ctors */
+		*crtbegin.o(.ctors)
+		*crtbegin?.o(.ctors)
+		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
+		*(SORT(.ctors.*))
+		*(.ctors)
+
+		/* .dtors */
+ 		*crtbegin.o(.dtors)
+ 		*crtbegin?.o(.dtors)
+ 		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
+ 		*(SORT(.dtors.*))
+ 		*(.dtors)
+
+		*(.rodata*)
+
+		KEEP(*(.eh_frame*))
+	} > FLASH
+
+
+
+	.ARM.extab :
+	{
+		*(.ARM.extab* .gnu.linkonce.armextab.*)
+	} > FLASH
+
+
+	.ARM.exidx :
+	{
+		*(.ARM.exidx* .gnu.linkonce.armexidx.*)
+	} > FLASH
+
+	 . = ALIGN(4);
+	__exidx_start = .;
+
+	__etext = .;
+
+	.data : AT (__etext)
+	{
+		__data_start__ = .;
+		*(vtable)
+		*(.data*)
+
+		. = ALIGN(4);
+		/* preinit data */
+		PROVIDE_HIDDEN (__preinit_array_start = .);
+		KEEP(*(.preinit_array))
+		PROVIDE_HIDDEN (__preinit_array_end = .);
+
+		. = ALIGN(4);
+		/* init data */
+		PROVIDE_HIDDEN (__init_array_start = .);
+		KEEP(*(SORT(.init_array.*)))
+		KEEP(*(.init_array))
+		PROVIDE_HIDDEN (__init_array_end = .);
+
+
+		. = ALIGN(4);
+		/* finit data */
+		PROVIDE_HIDDEN (__fini_array_start = .);
+		KEEP(*(SORT(.fini_array.*)))
+		KEEP(*(.fini_array))
+		PROVIDE_HIDDEN (__fini_array_end = .);
+
+		KEEP(*(.jcr*))
+		. = ALIGN(4);
+		/* All data end */
+		__data_end__ = .;
+
+	} > RAM
+
+	.bss :
+	{
+		. = ALIGN(4);
+		__bss_start__ = .;
+		*(.bss*)
+		*(COMMON)
+		. = ALIGN(4);
+		__bss_end__ = .;
+	} > RAM
+
+	.heap (COPY):
+	{
+		__end__ = .;
+		PROVIDE(end = .);
+		*(.heap*)
+		__HeapLimit = .;
+	} > RAM
+
+	/* .stack_dummy section doesn't contains any symbols. It is only
+	 * used for linker to calculate size of stack sections, and assign
+	 * values to stack symbols later */
+	.stack_dummy (COPY):
+	{
+		*(.stack*)
+	} > RAM
+
+	/* Set stack top to end of RAM, and stack limit move down by
+	 * size of stack_dummy section */
+	__StackTop = ORIGIN(RAM) + LENGTH(RAM);
+	__StackLimit = __StackTop - SIZEOF(.stack_dummy);
+	PROVIDE(__stack = __StackTop);
+
+	/* Check if data + heap + stack exceeds RAM limit */
+	ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
+}
+endef
+
+
+output/out.hex : output/out
+	$(OBJCOPY) $^ -O ihex $@
+
+
+output/out : $(addprefix output/, $(addsuffix .o, $(OBJS)))
+	$(file >output/ld.script, $(ldscript))
+	$(LD) $(addprefix output/obj/,$(addsuffix .o, $(notdir $(OBJS)))) -o $@ $(LDFLAG)
+	$(OBJDUMP) -S $@ > output/disasm
+
+output/%.o : %.c
+	$(GCC) $< $(CFLAG) -o output/obj/$(notdir $@)
+
+output/%.o : %.s
+	$(AS) $^ -mthumb -mcpu=cortex-m0 -o output/obj/$(notdir $@)
+
+
+clean :
+ifeq ($(OS),Windows_NT)
+	del /Q output\*.*
+	del /Q output\obj\*.*
+else
+	rm -rf output/*
+	rm -rf output/obj/*
+endif
Index: ModuleDemo/BlueTooth/HCI/prj/MDK/Objects/YC3121_keil.sct
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/HCI/prj/MDK/Objects/YC3121_keil.sct	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/HCI/prj/MDK/Objects/YC3121_keil.sct	(working copy)
@@ -0,0 +1,55 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x00000000 0x0001fff  {    ; load region size_region
+  ER_IROM1 0x00000000 0x00001fff  {  ; load address = execution address
+   startup.o (RESET, +First)
+   startup.o (|.text|,+RO)
+;   *(InRoot$$Sections)
+  }
+  ;ER_IROM2 0x4000   {
+  ;rom_main.o (+RO)
+  ;}
+  
+  ;ER_IROM3 0x100000 {
+	  ;*(InRoot$$Sections)
+  ;}
+	
+  ;ER_IROM4 0x100400   {
+  ;flash_start.o (+RO)
+  ;.ANY (+RO) 
+  ;}
+  
+  ;RW_IRAM1 0x000d0000 0x0010000  {  ; RW data
+   ;.ANY (+RW +ZI)
+  ;}
+  
+;  ARM_LIB_STACK 0xE0000 EMPTY -0x10000{}
+}
+
+;LR_IROM2 0x4000 0x4000{
+;	ER_IROM2 0x4000 {
+;	  rom_main.o (+RO)
+;	}
+;}
+
+LR_IROM3 0x1000200 0x200{
+	ER_IROM3 0x1000200 {
+	  flash_start.o (|.flash_start|,+RO)
+	}
+}
+
+LR_IROM4 0x1000400 0x1000000{
+	ER_IROM4 0x1000400 {
+;	  flash_start.o (|.flash_start|,+RO)
+	  *(InRoot$$Sections)
+	  .ANY (+RO)
+	}
+	
+	
+	 RW_IRAM2 0x00020000 0x010000  {  ; RW data
+	.ANY (+RW +ZI)
+	}
+}
+
Index: ModuleDemo/BlueTooth/HCI/prj/MDK/YC3121.BAT
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/HCI/prj/MDK/YC3121.BAT	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/HCI/prj/MDK/YC3121.BAT	(working copy)
@@ -0,0 +1,25 @@
+SET PATH=C:\Keil_v5\ARM\ARMCC\Bin;C:\Program Files (x86)\GnuWin32\bin;C:\Program Files (x86)\RBTools\bin;C:\Program Files (x86)\GnuWin32\bin;C:\Program Files (x86)\GnuWin32\bin;C:\Perl\bin\;c\jre;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\TortoiseSVN\bin;c:\jre;C:\Users\15773\AppData\Local\Microsoft\WindowsApps;D:\Microsoft VS Code\bin;D:\altera\13.1\modelsim_ase\win32aloem;C:\Program Files (x86)\SEGGER\JLink;C:\Users\15773\AppData\Local\BypassRuntm;D:\MentorGraphics\PADSVX.2\SDD_HOME\svn\win32\bin;D:\msys64\mingw32;D:\msys64\mingw32\bin;C:\Program Files\Microsoft VS Code\bin;D:\MinGW\bin;C:\Keil_v5\UV4;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Users\chenkun\AppData\Local\Programs\Python\Python37;C:\gcc-arm-none-eabi-7-2018-q2-update-win32\gcc-arm-none-eabi-7-2018-q2-update-win32\make.exe;C:\Keil_v5\UV4\UV4.exe;C:\miniconda\Scripts;C:\miniconda;C:\Users\chenkun\AppData\Local\Microsoft\WindowsApps;C:\Program Files\JetBrains\PyCharm Community Edition 2020.2.3\bin;C:\Program Files (x86)\GnuWin32\bin;C:\Program Files (x86)\GnuWin32\bin;C:\Users\chenkun\AppData\Local\Microsoft\WindowsApps;C:\Program Files\JetBrains\PyCharm Community Edition 2020.2.3\bin;;C:\miniconda;C:\miniconda\Scripts;
+SET ARMCC5_ASMOPT=--diag_suppress=9931
+SET ARMCC5_CCOPT=--diag_suppress=9931
+SET ARMCC5_LINKOPT=--diag_suppress=9931
+SET CPU_TYPE=ARMCM0
+SET CPU_VENDOR=ARM
+SET UV2_TARGET=YC3121
+SET CPU_CLOCK=0x00B71B00
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\misc.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\system.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\bt_code.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\main.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\yc_gpio.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\yc_uart.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\yc_ipc.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\yc_otp.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\yc_timer.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\yc_lpm.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\yc_sysctrl.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\yc_hci.__i"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmAsm" --Via ".\objects\flash_start._ia"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmAsm" --Via ".\objects\startup._ia"
+"C:\Keil_v5\ARM\ARMCC\Bin\ArmLink" --Via ".\Objects\YC3121_Keil.lnp"
+"C:\Keil_v5\ARM\ARMCC\Bin\fromelf.exe" ".\Objects\YC3121_Keil.axf" --i32combined --output ".\Objects\YC3121_Keil.hex"
+fromelf.exe --text -a -c --output=YC3121_Keil_asm.txt ".\Objects\YC3121_Keil.axf"
Index: ModuleDemo/BlueTooth/HCI/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/HCI/prj/MDK/YC3121_Keil.uvoptx	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/HCI/prj/MDK/YC3121_Keil.uvoptx	(working copy)
@@ -0,0 +1,402 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+  <SchemaVersion>1.0</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Extensions>
+    <cExt>*.c</cExt>
+    <aExt>*.s*; *.src; *.a*</aExt>
+    <oExt>*.obj; *.o</oExt>
+    <lExt>*.lib</lExt>
+    <tExt>*.txt; *.h; *.inc</tExt>
+    <pExt>*.plm</pExt>
+    <CppX>*.cpp</CppX>
+    <nMigrate>0</nMigrate>
+  </Extensions>
+
+  <DaveTm>
+    <dwLowDateTime>0</dwLowDateTime>
+    <dwHighDateTime>0</dwHighDateTime>
+  </DaveTm>
+
+  <Target>
+    <TargetName>YC3121</TargetName>
+    <ToolsetNumber>0x4</ToolsetNumber>
+    <ToolsetName>ARM-ADS</ToolsetName>
+    <TargetOption>
+      <CLKADS>12000000</CLKADS>
+      <OPTTT>
+        <gFlags>1</gFlags>
+        <BeepAtEnd>1</BeepAtEnd>
+        <RunSim>0</RunSim>
+        <RunTarget>1</RunTarget>
+        <RunAbUc>0</RunAbUc>
+      </OPTTT>
+      <OPTHX>
+        <HexSelection>1</HexSelection>
+        <FlashByte>65535</FlashByte>
+        <HexRangeLowAddress>0</HexRangeLowAddress>
+        <HexRangeHighAddress>0</HexRangeHighAddress>
+        <HexOffset>0</HexOffset>
+      </OPTHX>
+      <OPTLEX>
+        <PageWidth>79</PageWidth>
+        <PageLength>66</PageLength>
+        <TabStop>8</TabStop>
+        <ListingPath>.\Listings\</ListingPath>
+      </OPTLEX>
+      <ListingPage>
+        <CreateCListing>1</CreateCListing>
+        <CreateAListing>1</CreateAListing>
+        <CreateLListing>1</CreateLListing>
+        <CreateIListing>0</CreateIListing>
+        <AsmCond>1</AsmCond>
+        <AsmSymb>1</AsmSymb>
+        <AsmXref>0</AsmXref>
+        <CCond>1</CCond>
+        <CCode>0</CCode>
+        <CListInc>0</CListInc>
+        <CSymb>0</CSymb>
+        <LinkerCodeListing>0</LinkerCodeListing>
+      </ListingPage>
+      <OPTXL>
+        <LMap>1</LMap>
+        <LComments>1</LComments>
+        <LGenerateSymbols>1</LGenerateSymbols>
+        <LLibSym>1</LLibSym>
+        <LLines>1</LLines>
+        <LLocSym>1</LLocSym>
+        <LPubSym>1</LPubSym>
+        <LXref>0</LXref>
+        <LExpSel>0</LExpSel>
+      </OPTXL>
+      <OPTFL>
+        <tvExp>1</tvExp>
+        <tvExpOptDlg>0</tvExpOptDlg>
+        <IsCurrentTarget>1</IsCurrentTarget>
+      </OPTFL>
+      <CpuCode>7</CpuCode>
+      <DebugOpt>
+        <uSim>0</uSim>
+        <uTrg>1</uTrg>
+        <sLdApp>1</sLdApp>
+        <sGomain>1</sGomain>
+        <sRbreak>1</sRbreak>
+        <sRwatch>1</sRwatch>
+        <sRmem>1</sRmem>
+        <sRfunc>1</sRfunc>
+        <sRbox>1</sRbox>
+        <tLdApp>1</tLdApp>
+        <tGomain>1</tGomain>
+        <tRbreak>1</tRbreak>
+        <tRwatch>1</tRwatch>
+        <tRmem>1</tRmem>
+        <tRfunc>0</tRfunc>
+        <tRbox>1</tRbox>
+        <tRtrace>1</tRtrace>
+        <sRSysVw>1</sRSysVw>
+        <tRSysVw>1</tRSysVw>
+        <sRunDeb>0</sRunDeb>
+        <sLrtime>0</sLrtime>
+        <bEvRecOn>1</bEvRecOn>
+        <bSchkAxf>0</bSchkAxf>
+        <bTchkAxf>0</bTchkAxf>
+        <nTsel>4</nTsel>
+        <sDll></sDll>
+        <sDllPa></sDllPa>
+        <sDlgDll></sDlgDll>
+        <sDlgPa></sDlgPa>
+        <sIfile></sIfile>
+        <tDll></tDll>
+        <tDllPa></tDllPa>
+        <tDlgDll></tDlgDll>
+        <tDlgPa></tDlgPa>
+        <tIfile>..\..\..\..\..\ConfigFiles\MDK\flash.ini</tIfile>
+        <pMon>Segger\JL2CM3.dll</pMon>
+      </DebugOpt>
+      <TargetDriverDllRegistry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGUARM</Key>
+          <Name>d</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>PWSTATINFO</Key>
+          <Name>200,50,700</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMRTXEVENTFLAGS</Key>
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGTARM</Key>
+          <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMDBGFLAGS</Key>
+          <Name></Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>JL2CM3</Key>
+          <Name>-U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000 -FCA000 -FN1 -FF0YC3121 -FS01000200 -FL01000000</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>UL2CM3</Key>
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</Name>
+        </SetRegEntry>
+      </TargetDriverDllRegistry>
+      <Breakpoint/>
+      <Tracepoint>
+        <THDelay>0</THDelay>
+      </Tracepoint>
+      <DebugFlag>
+        <trace>0</trace>
+        <periodic>0</periodic>
+        <aLwin>1</aLwin>
+        <aCover>0</aCover>
+        <aSer1>0</aSer1>
+        <aSer2>0</aSer2>
+        <aPa>0</aPa>
+        <viewmode>1</viewmode>
+        <vrSel>0</vrSel>
+        <aSym>0</aSym>
+        <aTbox>0</aTbox>
+        <AscS1>0</AscS1>
+        <AscS2>0</AscS2>
+        <AscS3>0</AscS3>
+        <aSer3>0</aSer3>
+        <eProf>0</eProf>
+        <aLa>0</aLa>
+        <aPa1>0</aPa1>
+        <AscS4>0</AscS4>
+        <aSer4>0</aSer4>
+        <StkLoc>0</StkLoc>
+        <TrcWin>0</TrcWin>
+        <newCpu>0</newCpu>
+        <uProt>0</uProt>
+      </DebugFlag>
+      <LintExecutable></LintExecutable>
+      <LintConfigFile></LintConfigFile>
+      <bLintAuto>0</bLintAuto>
+      <bAutoGenD>0</bAutoGenD>
+      <LntExFlags>0</LntExFlags>
+      <pMisraName></pMisraName>
+      <pszMrule></pszMrule>
+      <pSingCmds></pSingCmds>
+      <pMultCmds></pMultCmds>
+      <pMisraNamep></pMisraNamep>
+      <pszMrulep></pszMrulep>
+      <pSingCmdsp></pSingCmdsp>
+      <pMultCmdsp></pMultCmdsp>
+    </TargetOption>
+  </Target>
+
+  <Group>
+    <GroupName>core</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>1</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\misc.c</PathWithFileName>
+      <FilenameWithoutPath>misc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>2</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\system.c</PathWithFileName>
+      <FilenameWithoutPath>system.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>3</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\user\bt_code.c</PathWithFileName>
+      <FilenameWithoutPath>bt_code.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>main</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>4</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\user\main.c</PathWithFileName>
+      <FilenameWithoutPath>main.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>sdk</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>5</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_gpio.c</PathWithFileName>
+      <FilenameWithoutPath>yc_gpio.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>6</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_uart.c</PathWithFileName>
+      <FilenameWithoutPath>yc_uart.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>7</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_ipc.c</PathWithFileName>
+      <FilenameWithoutPath>yc_ipc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>8</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_otp.c</PathWithFileName>
+      <FilenameWithoutPath>yc_otp.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>9</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_timer.c</PathWithFileName>
+      <FilenameWithoutPath>yc_timer.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>10</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_lpm.c</PathWithFileName>
+      <FilenameWithoutPath>yc_lpm.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>11</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</PathWithFileName>
+      <FilenameWithoutPath>yc_sysctrl.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>12</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\user\yc_hci.c</PathWithFileName>
+      <FilenameWithoutPath>yc_hci.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>startup</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>13</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\startup\flash_start.s</PathWithFileName>
+      <FilenameWithoutPath>flash_start.s</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>14</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\startup\startup.s</PathWithFileName>
+      <FilenameWithoutPath>startup.s</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+</ProjectOpt>
Index: ModuleDemo/BlueTooth/HCI/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/HCI/prj/MDK/YC3121_Keil.uvprojx	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/HCI/prj/MDK/YC3121_Keil.uvprojx	(working copy)
@@ -0,0 +1,482 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
+
+  <SchemaVersion>2.1</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Targets>
+    <Target>
+      <TargetName>YC3121</TargetName>
+      <ToolsetNumber>0x4</ToolsetNumber>
+      <ToolsetName>ARM-ADS</ToolsetName>
+      <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+      <uAC6>0</uAC6>
+      <TargetOption>
+        <TargetCommonOption>
+          <Device>ARMCM0</Device>
+          <Vendor>ARM</Vendor>
+          <PackID>ARM.CMSIS.5.5.1</PackID>
+          <PackURL>http://www.keil.com/pack/</PackURL>
+          <Cpu>IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0") CLOCK(12000000) ESEL ELITTLE</Cpu>
+          <FlashUtilSpec></FlashUtilSpec>
+          <StartupFile></StartupFile>
+          <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</FlashDriverDll>
+          <DeviceId>0</DeviceId>
+          <RegisterFile>$$Device:ARMCM0$Device\ARM\ARMCM0\Include\ARMCM0.h</RegisterFile>
+          <MemoryEnv></MemoryEnv>
+          <Cmp></Cmp>
+          <Asm></Asm>
+          <Linker></Linker>
+          <OHString></OHString>
+          <InfinionOptionDll></InfinionOptionDll>
+          <SLE66CMisc></SLE66CMisc>
+          <SLE66AMisc></SLE66AMisc>
+          <SLE66LinkerMisc></SLE66LinkerMisc>
+          <SFDFile>$$Device:ARMCM0$Device\ARM\SVD\ARMCM0.svd</SFDFile>
+          <bCustSvd>0</bCustSvd>
+          <UseEnv>0</UseEnv>
+          <BinPath></BinPath>
+          <IncludePath></IncludePath>
+          <LibPath></LibPath>
+          <RegisterFilePath></RegisterFilePath>
+          <DBRegisterFilePath></DBRegisterFilePath>
+          <TargetStatus>
+            <Error>0</Error>
+            <ExitCodeStop>0</ExitCodeStop>
+            <ButtonStop>0</ButtonStop>
+            <NotGenerated>0</NotGenerated>
+            <InvalidFlash>1</InvalidFlash>
+          </TargetStatus>
+          <OutputDirectory>.\Objects\</OutputDirectory>
+          <OutputName>YC3121_Keil</OutputName>
+          <CreateExecutable>1</CreateExecutable>
+          <CreateLib>0</CreateLib>
+          <CreateHexFile>1</CreateHexFile>
+          <DebugInformation>1</DebugInformation>
+          <BrowseInformation>1</BrowseInformation>
+          <ListingPath>.\Listings\</ListingPath>
+          <HexFormatSelection>1</HexFormatSelection>
+          <Merge32K>0</Merge32K>
+          <CreateBatchFile>1</CreateBatchFile>
+          <BeforeCompile>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopU1X>0</nStopU1X>
+            <nStopU2X>0</nStopU2X>
+          </BeforeCompile>
+          <BeforeMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopB1X>0</nStopB1X>
+            <nStopB2X>0</nStopB2X>
+          </BeforeMake>
+          <AfterMake>
+            <RunUserProg1>1</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name>fromelf.exe --text -a -c --output=@L_asm.txt "!L"</UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopA1X>0</nStopA1X>
+            <nStopA2X>0</nStopA2X>
+          </AfterMake>
+          <SelectedForBatchBuild>0</SelectedForBatchBuild>
+          <SVCSIdString></SVCSIdString>
+        </TargetCommonOption>
+        <CommonProperty>
+          <UseCPPCompiler>0</UseCPPCompiler>
+          <RVCTCodeConst>0</RVCTCodeConst>
+          <RVCTZI>0</RVCTZI>
+          <RVCTOtherData>0</RVCTOtherData>
+          <ModuleSelection>0</ModuleSelection>
+          <IncludeInBuild>1</IncludeInBuild>
+          <AlwaysBuild>0</AlwaysBuild>
+          <GenerateAssemblyFile>0</GenerateAssemblyFile>
+          <AssembleAssemblyFile>0</AssembleAssemblyFile>
+          <PublicsOnly>0</PublicsOnly>
+          <StopOnExitCode>3</StopOnExitCode>
+          <CustomArgument></CustomArgument>
+          <IncludeLibraryModules></IncludeLibraryModules>
+          <ComprImg>1</ComprImg>
+        </CommonProperty>
+        <DllOption>
+          <SimDllName>SARMCM3.DLL</SimDllName>
+          <SimDllArguments>  </SimDllArguments>
+          <SimDlgDll>DARMCM1.DLL</SimDlgDll>
+          <SimDlgDllArguments>-pCM0</SimDlgDllArguments>
+          <TargetDllName>SARMCM3.DLL</TargetDllName>
+          <TargetDllArguments> </TargetDllArguments>
+          <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
+          <TargetDlgDllArguments>-pCM0</TargetDlgDllArguments>
+        </DllOption>
+        <DebugOption>
+          <OPTHX>
+            <HexSelection>1</HexSelection>
+            <HexRangeLowAddress>0</HexRangeLowAddress>
+            <HexRangeHighAddress>0</HexRangeHighAddress>
+            <HexOffset>0</HexOffset>
+            <Oh166RecLen>16</Oh166RecLen>
+          </OPTHX>
+        </DebugOption>
+        <Utilities>
+          <Flash1>
+            <UseTargetDll>1</UseTargetDll>
+            <UseExternalTool>0</UseExternalTool>
+            <RunIndependent>1</RunIndependent>
+            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+            <Capability>1</Capability>
+            <DriverSelection>4100</DriverSelection>
+          </Flash1>
+          <bUseTDR>0</bUseTDR>
+          <Flash2>Segger\JL2CM3.dll</Flash2>
+          <Flash3>"" ()</Flash3>
+          <Flash4></Flash4>
+          <pFcarmOut></pFcarmOut>
+          <pFcarmGrp></pFcarmGrp>
+          <pFcArmRoot></pFcArmRoot>
+          <FcArmLst>0</FcArmLst>
+        </Utilities>
+        <TargetArmAds>
+          <ArmAdsMisc>
+            <GenerateListings>0</GenerateListings>
+            <asHll>1</asHll>
+            <asAsm>1</asAsm>
+            <asMacX>1</asMacX>
+            <asSyms>1</asSyms>
+            <asFals>1</asFals>
+            <asDbgD>1</asDbgD>
+            <asForm>1</asForm>
+            <ldLst>0</ldLst>
+            <ldmm>1</ldmm>
+            <ldXref>1</ldXref>
+            <BigEnd>0</BigEnd>
+            <AdsALst>1</AdsALst>
+            <AdsACrf>1</AdsACrf>
+            <AdsANop>0</AdsANop>
+            <AdsANot>0</AdsANot>
+            <AdsLLst>1</AdsLLst>
+            <AdsLmap>1</AdsLmap>
+            <AdsLcgr>1</AdsLcgr>
+            <AdsLsym>1</AdsLsym>
+            <AdsLszi>1</AdsLszi>
+            <AdsLtoi>1</AdsLtoi>
+            <AdsLsun>1</AdsLsun>
+            <AdsLven>1</AdsLven>
+            <AdsLsxf>1</AdsLsxf>
+            <RvctClst>0</RvctClst>
+            <GenPPlst>0</GenPPlst>
+            <AdsCpuType>"Cortex-M0"</AdsCpuType>
+            <RvctDeviceName></RvctDeviceName>
+            <mOS>0</mOS>
+            <uocRom>0</uocRom>
+            <uocRam>0</uocRam>
+            <hadIROM>1</hadIROM>
+            <hadIRAM>1</hadIRAM>
+            <hadXRAM>0</hadXRAM>
+            <uocXRam>0</uocXRam>
+            <RvdsVP>0</RvdsVP>
+            <RvdsMve>0</RvdsMve>
+            <hadIRAM2>0</hadIRAM2>
+            <hadIROM2>0</hadIROM2>
+            <StupSel>8</StupSel>
+            <useUlib>1</useUlib>
+            <EndSel>1</EndSel>
+            <uLtcg>0</uLtcg>
+            <nSecure>0</nSecure>
+            <RoSelD>3</RoSelD>
+            <RwSelD>3</RwSelD>
+            <CodeSel>0</CodeSel>
+            <OptFeed>0</OptFeed>
+            <NoZi1>0</NoZi1>
+            <NoZi2>0</NoZi2>
+            <NoZi3>0</NoZi3>
+            <NoZi4>1</NoZi4>
+            <NoZi5>0</NoZi5>
+            <Ro1Chk>0</Ro1Chk>
+            <Ro2Chk>0</Ro2Chk>
+            <Ro3Chk>0</Ro3Chk>
+            <Ir1Chk>1</Ir1Chk>
+            <Ir2Chk>0</Ir2Chk>
+            <Ra1Chk>0</Ra1Chk>
+            <Ra2Chk>0</Ra2Chk>
+            <Ra3Chk>0</Ra3Chk>
+            <Im1Chk>1</Im1Chk>
+            <Im2Chk>0</Im2Chk>
+            <OnChipMemories>
+              <Ocm1>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm1>
+              <Ocm2>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm2>
+              <Ocm3>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm3>
+              <Ocm4>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm4>
+              <Ocm5>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm5>
+              <Ocm6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm6>
+              <IRAM>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x20000</Size>
+              </IRAM>
+              <IROM>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x40000</Size>
+              </IROM>
+              <XRAM>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </XRAM>
+              <OCR_RVCT1>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT1>
+              <OCR_RVCT2>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT2>
+              <OCR_RVCT3>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT3>
+              <OCR_RVCT4>
+                <Type>1</Type>
+                <StartAddress>0x1000000</StartAddress>
+                <Size>0x80000</Size>
+              </OCR_RVCT4>
+              <OCR_RVCT5>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT5>
+              <OCR_RVCT6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT6>
+              <OCR_RVCT7>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT7>
+              <OCR_RVCT8>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT8>
+              <OCR_RVCT9>
+                <Type>0</Type>
+                <StartAddress>0x20000</StartAddress>
+                <Size>0x10000</Size>
+              </OCR_RVCT9>
+              <OCR_RVCT10>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT10>
+            </OnChipMemories>
+            <RvctStartVector></RvctStartVector>
+          </ArmAdsMisc>
+          <Cads>
+            <interw>1</interw>
+            <Optim>1</Optim>
+            <oTime>0</oTime>
+            <SplitLS>0</SplitLS>
+            <OneElfS>0</OneElfS>
+            <Strict>0</Strict>
+            <EnumInt>0</EnumInt>
+            <PlainCh>0</PlainCh>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <wLevel>1</wLevel>
+            <uThumb>0</uThumb>
+            <uSurpInc>0</uSurpInc>
+            <uC99>1</uC99>
+            <uGnu>0</uGnu>
+            <useXO>0</useXO>
+            <v6Lang>1</v6Lang>
+            <v6LangP>1</v6LangP>
+            <vShortEn>1</vShortEn>
+            <vShortWch>1</vShortWch>
+            <v6Lto>0</v6Lto>
+            <v6WtE>0</v6WtE>
+            <v6Rtti>0</v6Rtti>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define>__USEKEILCOMPILE__</Define>
+              <Undefine></Undefine>
+              <IncludePath>..\..\..\..\..\Librarier\sdk;..\..\..\..\..\Librarier\core;..\..\user</IncludePath>
+            </VariousControls>
+          </Cads>
+          <Aads>
+            <interw>1</interw>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <thumb>0</thumb>
+            <SplitLS>0</SplitLS>
+            <SwStkChk>0</SwStkChk>
+            <NoWarn>0</NoWarn>
+            <uSurpInc>0</uSurpInc>
+            <useXO>0</useXO>
+            <uClangAs>0</uClangAs>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define></Define>
+              <Undefine></Undefine>
+              <IncludePath></IncludePath>
+            </VariousControls>
+          </Aads>
+          <LDads>
+            <umfTarg>0</umfTarg>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <noStLib>0</noStLib>
+            <RepFail>1</RepFail>
+            <useFile>0</useFile>
+            <TextAddressRange>0x00000000</TextAddressRange>
+            <DataAddressRange>0xd0000</DataAddressRange>
+            <pXoBase></pXoBase>
+            <ScatterFile>.\Objects\YC3121_keil.sct</ScatterFile>
+            <IncludeLibs></IncludeLibs>
+            <IncludeLibsPath></IncludeLibsPath>
+            <Misc></Misc>
+            <LinkerInputFile></LinkerInputFile>
+            <DisabledWarnings></DisabledWarnings>
+          </LDads>
+        </TargetArmAds>
+      </TargetOption>
+      <Groups>
+        <Group>
+          <GroupName>core</GroupName>
+          <Files>
+            <File>
+              <FileName>misc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\misc.c</FilePath>
+            </File>
+            <File>
+              <FileName>system.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\system.c</FilePath>
+            </File>
+            <File>
+              <FileName>bt_code.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\user\bt_code.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>main</GroupName>
+          <Files>
+            <File>
+              <FileName>main.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\user\main.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>sdk</GroupName>
+          <Files>
+            <File>
+              <FileName>yc_gpio.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_gpio.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_uart.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_uart.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_ipc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_ipc.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_otp.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_otp.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_timer.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_timer.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_lpm.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_lpm.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_sysctrl.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_hci.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\user\yc_hci.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>startup</GroupName>
+          <Files>
+            <File>
+              <FileName>flash_start.s</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\..\..\..\..\Librarier\startup\flash_start.s</FilePath>
+            </File>
+            <File>
+              <FileName>startup.s</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\..\..\..\..\Librarier\startup\startup.s</FilePath>
+            </File>
+          </Files>
+        </Group>
+      </Groups>
+    </Target>
+  </Targets>
+
+  <RTE>
+    <apis/>
+    <components/>
+    <files/>
+  </RTE>
+
+</Project>
Index: ModuleDemo/BlueTooth/HCI/user/bt_code.c
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/HCI/user/bt_code.c	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/HCI/user/bt_code.c	(working copy)
@@ -0,0 +1,288 @@
+const unsigned char bt_code[] = {
+0x00,0x02,0xaa,0x55,0x42,0x0c,0xc2,0x84,0x00,0x07,0xc0,0x00,0x80,0x16,0xc0,0x42,
+0x80,0x1c,0xc0,0x44,0x80,0x3d,0xc0,0x51,0x00,0x46,0xc0,0x5c,0x00,0x4d,0x20,0x20,
+0x4a,0x8b,0xc0,0x01,0x81,0xfc,0xc0,0x02,0x82,0x0c,0xc0,0x03,0x02,0x15,0xc0,0x08,
+0x02,0x1a,0xc0,0x0c,0x02,0x28,0xc0,0x0d,0x82,0x62,0xc0,0x0e,0x02,0x7b,0xc0,0x0f,
+0x82,0x8b,0xc0,0x15,0x82,0xd2,0xc0,0x1d,0x02,0xd7,0xc0,0x1f,0x02,0xe0,0xc0,0x20,
+0x82,0xf2,0xc0,0x29,0x02,0xf8,0xc0,0x4c,0x83,0x0c,0x20,0x20,0x4a,0x8b,0x20,0x40,
+0x68,0xc4,0x20,0x40,0x60,0xd7,0x20,0x40,0x00,0x1a,0x20,0x20,0x40,0x0a,0x20,0x75,
+0x80,0x00,0x20,0x20,0x7b,0x9a,0x20,0x30,0x80,0x2c,0x70,0x89,0x55,0xd4,0x20,0x00,
+0x00,0x04,0x70,0x89,0x55,0xd2,0x20,0x00,0x00,0x04,0x70,0x89,0x55,0xd1,0x20,0x00,
+0x00,0x04,0x6f,0xe2,0x41,0xdf,0xc0,0x00,0x00,0x2a,0xc0,0x00,0x80,0x3a,0xc0,0x01,
+0x00,0x2a,0xc0,0x01,0x80,0x3a,0xc0,0x02,0x00,0x3a,0xc0,0x10,0x00,0x3a,0x70,0x89,
+0x55,0xd0,0x70,0x89,0x56,0xe0,0x18,0x00,0x2a,0x08,0x18,0x00,0x2a,0x00,0x78,0x50,
+0xfc,0x00,0x78,0x50,0x7c,0x00,0x78,0x2f,0x7c,0x00,0x70,0x89,0x02,0x00,0x70,0x89,
+0x01,0x00,0x70,0x89,0x00,0x00,0x70,0x89,0x03,0x00,0x70,0x89,0x04,0x70,0x6f,0xe2,
+0x89,0x06,0x79,0x20,0x7e,0x00,0x67,0xe2,0x89,0x06,0x20,0x60,0x00,0x00,0x70,0x89,
+0x55,0xd0,0x70,0x89,0x56,0xc0,0x20,0x20,0x00,0x2c,0x60,0x42,0x00,0x17,0x20,0x40,
+0x49,0x2a,0x20,0x40,0x49,0x80,0x58,0x00,0x05,0x00,0x20,0x40,0x4a,0x8e,0x6f,0xe2,
+0x89,0x06,0x79,0x20,0x7e,0x00,0x67,0xe2,0x89,0x06,0x20,0x20,0x49,0x37,0x70,0x89,
+0x06,0x7c,0x20,0x75,0x80,0x00,0x58,0x00,0x00,0x00,0x67,0xe4,0x41,0xdd,0x1c,0x43,
+0x7e,0x00,0x67,0xe8,0x40,0x94,0x20,0x60,0x00,0x00,0x58,0x00,0x00,0x8d,0x67,0xe4,
+0x41,0xf4,0x58,0x00,0x00,0x59,0x67,0xe4,0x41,0xf6,0x58,0x00,0x00,0x72,0x67,0xe4,
+0x41,0xfe,0x58,0x00,0x00,0x7c,0x67,0xe4,0x41,0xfa,0x20,0x40,0x4d,0xaf,0x20,0x40,
+0x4d,0xbc,0x20,0x40,0x4c,0x2a,0x20,0x20,0x50,0x4d,0x1a,0x62,0x7e,0x00,0xc0,0x04,
+0x80,0x61,0xc0,0x01,0x00,0x5f,0xc0,0x0a,0x4e,0x29,0xc0,0x0a,0x80,0x63,0x20,0x20,
+0x4d,0xdf,0x70,0x4b,0x15,0x00,0x20,0x20,0x4d,0xfb,0x70,0x4b,0x15,0x06,0x20,0x20,
+0x4e,0x08,0x70,0x4b,0xa6,0x00,0x20,0x40,0x00,0x66,0x20,0x20,0x4e,0x1f,0x6f,0xf0,
+0x4b,0x88,0xc4,0x02,0x00,0x00,0x70,0x4b,0xa4,0x04,0x70,0x4b,0xa3,0x05,0x20,0x40,
+0x01,0xe0,0x58,0x00,0x00,0x00,0xe7,0xe2,0x00,0x0a,0x6f,0xe4,0x4b,0x2b,0xe7,0xe4,
+0x00,0x0a,0x6f,0xe2,0x4b,0x1d,0xe7,0xe2,0x00,0x0a,0x20,0x20,0x67,0xb9,0x20,0x40,
+0x00,0x74,0x20,0x20,0x50,0xc3,0x6f,0xe2,0x4b,0x15,0x20,0x7a,0x00,0x00,0x1f,0xe0,
+0xff,0xff,0x67,0xe2,0x4b,0x15,0x24,0x7a,0x00,0x00,0x6f,0xe4,0x46,0x52,0xc2,0x80,
+0x4d,0x64,0x20,0x60,0x00,0x00,0x20,0x40,0x4f,0x11,0x20,0x74,0x00,0x00,0x1a,0x22,
+0x7e,0x00,0x67,0xe4,0x46,0x71,0x1a,0x42,0x7e,0x00,0x67,0xe2,0x46,0x70,0x68,0x44,
+0x04,0x74,0x60,0x44,0x46,0x73,0x20,0x40,0x5b,0x6c,0x24,0x3a,0x4a,0x8b,0x6f,0xe2,
+0x04,0x9e,0xc0,0x81,0x50,0x42,0xe8,0x44,0x00,0x06,0x58,0x00,0x29,0x02,0x98,0x46,
+0x7c,0x00,0x20,0x62,0x80,0x00,0x20,0x20,0x50,0x42,0x20,0x40,0x50,0xd3,0x20,0x40,
+0x56,0x48,0x24,0x7a,0x00,0x00,0x20,0x20,0x00,0x91,0x6f,0xe4,0x4f,0xfc,0x68,0x44,
+0x4f,0xfe,0x98,0x46,0x7c,0x00,0x20,0x22,0xce,0x3a,0x20,0x40,0x67,0xf7,0xef,0xe2,
+0x00,0x03,0xc0,0x00,0x80,0x9f,0xc0,0x01,0x00,0xad,0x20,0x40,0x7c,0x9c,0x20,0x20,
+0x00,0x9b,0x20,0x40,0x67,0xf7,0x6f,0xe4,0x4f,0xfe,0x67,0xe4,0x4f,0xfc,0x20,0x60,
+0x00,0x00,0xef,0xe4,0x00,0x03,0x67,0xe4,0x4b,0xa8,0xd8,0x40,0x03,0xff,0x98,0x41,
+0x04,0x00,0x60,0x44,0x4b,0x2d,0x1f,0xeb,0x7e,0x00,0x1f,0xec,0xfe,0x00,0x67,0xe2,
+0x4b,0x2f,0xef,0xe2,0x00,0x03,0x1f,0xe0,0xff,0xff,0x9a,0x26,0x7c,0x00,0x20,0x61,
+0x00,0x00,0x20,0x40,0x00,0xcd,0x20,0x20,0x01,0xdb,0x20,0x40,0x5c,0x70,0x24,0x7a,
+0x00,0x00,0x6f,0xe4,0x4f,0xfc,0x68,0x44,0x4f,0xfe,0x98,0x46,0x7e,0x00,0x1f,0xe0,
+0xa3,0xfb,0x24,0x61,0x00,0x00,0x20,0x40,0x00,0xc6,0xef,0xe4,0x00,0x03,0x1a,0x20,
+0xa2,0x01,0x9a,0x26,0x7c,0x00,0x20,0x61,0x00,0x00,0x1f,0xe2,0x22,0x00,0x1f,0xe2,
+0x24,0x00,0x20,0x40,0x5c,0x30,0x1a,0x42,0x72,0x00,0x20,0x40,0x67,0xda,0x20,0x40,
+0x67,0xf7,0x18,0x60,0x86,0x03,0xef,0xe4,0x00,0x03,0x98,0x60,0x86,0x00,0x6f,0xe2,
+0x4b,0xa6,0x1f,0xe0,0xfe,0x01,0x67,0xe2,0x4b,0xa6,0x20,0x20,0x67,0xf3,0xef,0xe4,
+0x00,0x03,0x1f,0xec,0xfe,0x00,0x1f,0xf1,0xfe,0x00,0x18,0x00,0x02,0x01,0xc1,0x00,
+0x80,0x00,0x18,0x00,0x02,0x02,0x20,0x60,0x00,0x00,0x6f,0xe2,0x4b,0x2f,0xc0,0x00,
+0x80,0xd7,0xc0,0x01,0x00,0xe4,0xc0,0x01,0x80,0xe5,0xc0,0x02,0x00,0xf7,0xc0,0x02,
+0x81,0x15,0xc0,0x03,0x01,0x16,0xc0,0x04,0x01,0x17,0xc0,0x1f,0x81,0x9d,0x20,0x20,
+0x01,0xec,0x6f,0xe2,0x4b,0x2d,0xc0,0x03,0x00,0xdb,0xc0,0x0e,0x80,0xe1,0x20,0x20,
+0x01,0xec,0xef,0xe4,0x00,0x03,0xef,0xe2,0x00,0x03,0x67,0xe2,0x4b,0x1d,0x1f,0xe2,
+0x26,0x00,0x20,0x40,0x60,0x74,0x20,0x20,0x01,0xe4,0xef,0xe4,0x00,0x03,0x20,0x40,
+0x01,0xe4,0x20,0x20,0x60,0x81,0x20,0x20,0x01,0xec,0x6f,0xe2,0x4b,0x2d,0xc0,0x00,
+0x80,0xe9,0xc0,0x01,0x80,0xec,0x20,0x20,0x01,0xec,0xef,0xf0,0x00,0x03,0x67,0xf0,
+0x4b,0x30,0x20,0x20,0x01,0xf0,0x20,0x40,0x00,0xee,0x20,0x20,0x01,0xf0,0x58,0x00,
+0x00,0x3f,0x67,0xf0,0x4b,0x88,0x5f,0xff,0xff,0xff,0x67,0xf0,0x4b,0x30,0x6f,0xec,
+0x4b,0x90,0x67,0xec,0x44,0x72,0x58,0x00,0x00,0x00,0x67,0xec,0x4b,0x96,0x20,0x60,
+0x00,0x00,0x6f,0xe2,0x4b,0x2d,0xc0,0x00,0x80,0xff,0xc0,0x01,0x01,0x04,0xc0,0x01,
+0x81,0x0a,0xc0,0x02,0x01,0x14,0xc0,0x02,0x81,0x14,0xc0,0x04,0x81,0x0f,0x20,0x20,
+0x01,0xec,0x70,0x4b,0xaa,0x00,0x6f,0xf0,0x4b,0x40,0x67,0xf0,0x4b,0xab,0xdf,0x20,
+0x00,0x09,0x20,0x20,0x01,0xf3,0x70,0x4b,0xaa,0x00,0xd8,0xc0,0x4b,0x48,0xd8,0xa0,
+0x4b,0xab,0x20,0x40,0x7c,0x8e,0xdf,0x20,0x00,0x41,0x20,0x20,0x01,0xf3,0x70,0x4b,
+0xaa,0x00,0x6f,0xf0,0x40,0x98,0x67,0xf0,0x4b,0xab,0xdf,0x20,0x00,0x09,0x20,0x20,
+0x01,0xf3,0x70,0x4b,0xaa,0x00,0x6f,0xec,0x4b,0x90,0x67,0xec,0x4b,0xab,0xdf,0x20,
+0x00,0x07,0x20,0x20,0x01,0xf3,0x20,0x20,0x01,0xec,0x20,0x20,0x01,0xec,0x20,0x20,
+0x01,0xec,0x6f,0xe2,0x4b,0x2d,0xc0,0x00,0x81,0x2c,0xc0,0x01,0x01,0x2f,0xc0,0x01,
+0x81,0x34,0xc0,0x02,0x81,0x39,0xc0,0x03,0x01,0x40,0xc0,0x04,0x01,0x5e,0xc0,0x04,
+0x81,0x63,0xc0,0x05,0x01,0x68,0xc0,0x05,0x81,0x6b,0xc0,0x06,0x01,0x77,0xc0,0x06,
+0x81,0x7b,0xc0,0x07,0x01,0x90,0xc0,0x09,0x81,0x9c,0xc0,0x0b,0x01,0x93,0xc0,0x0b,
+0x81,0x9c,0xc0,0x0c,0x01,0x9c,0xc0,0x0c,0x81,0x9c,0xc0,0x0d,0x01,0x9c,0xc0,0x0d,
+0x81,0x9c,0x20,0x20,0x01,0xec,0xef,0xf0,0x00,0x03,0x67,0xf0,0x4b,0x88,0x20,0x20,
+0x01,0xf0,0x70,0x4b,0xaa,0x00,0x58,0x04,0x00,0x1b,0x67,0xe6,0x4b,0xab,0xdf,0x20,
+0x00,0x04,0x20,0x20,0x01,0xf3,0x70,0x4b,0xaa,0x00,0x58,0x00,0x00,0x01,0x67,0xf0,
+0x4b,0xab,0xdf,0x20,0x00,0x09,0x20,0x20,0x01,0xf3,0x6f,0xe2,0x43,0x40,0x24,0x3a,
+0x01,0xee,0x6f,0xe2,0x43,0x3b,0x24,0x3a,0x01,0xee,0xef,0xec,0x00,0x03,0x67,0xec,
+0x4b,0x96,0x20,0x20,0x01,0xf0,0x6f,0xe2,0x43,0x40,0x24,0x3a,0x01,0xee,0xef,0xe4,
+0x00,0x03,0x67,0xe4,0x44,0x54,0xef,0xe4,0x00,0x03,0xef,0xe2,0x00,0x03,0x20,0x40,
+0x01,0x50,0x60,0x42,0x44,0x56,0xef,0xe2,0x00,0x03,0x20,0x5a,0x01,0x58,0x24,0x5a,
+0x01,0x5c,0xef,0xe2,0x00,0x03,0xef,0xec,0x00,0x03,0xef,0xe2,0x00,0x03,0x67,0xe2,
+0x44,0x5f,0x20,0x20,0x01,0xf0,0xd8,0x40,0x00,0x00,0xc1,0x00,0x00,0x00,0xd8,0x40,
+0x00,0x02,0xc1,0x01,0x80,0x00,0xd8,0x40,0x00,0x06,0xc1,0x01,0x00,0x00,0xd8,0x40,
+0x00,0x01,0x20,0x60,0x00,0x00,0x68,0x4c,0x4b,0x90,0x60,0x4c,0x44,0x72,0x70,0x44,
+0x57,0x00,0x20,0x60,0x00,0x00,0x70,0x44,0x57,0x01,0x20,0x60,0x00,0x00,0xef,0xe2,
+0x00,0x03,0x67,0xe2,0x43,0x41,0x1f,0xe2,0x72,0x00,0x20,0x40,0x67,0xda,0x20,0x20,
+0x01,0xf0,0xef,0xe2,0x00,0x03,0x67,0xe2,0x43,0x61,0x1f,0xe2,0x72,0x00,0x20,0x40,
+0x67,0xda,0x20,0x20,0x01,0xf0,0xef,0xe2,0x00,0x03,0x67,0xe2,0x43,0x40,0x20,0x20,
+0x01,0xf0,0x6f,0xe2,0x43,0x3b,0x24,0x3a,0x01,0xee,0xef,0xe2,0x00,0x03,0x67,0xe2,
+0x44,0x70,0xef,0xe4,0x00,0x03,0x67,0xe4,0x43,0x3c,0xef,0xe4,0x00,0x03,0x67,0xe4,
+0x43,0x3e,0xef,0xe2,0x00,0x03,0x67,0xe2,0x44,0x71,0xef,0xe2,0x00,0x03,0x20,0x20,
+0x01,0xf0,0xef,0xe2,0x00,0x03,0x67,0xe2,0x43,0x3b,0xef,0xe2,0x00,0x03,0x20,0x20,
+0x01,0xf0,0xef,0xe4,0x00,0x03,0x67,0xe4,0x43,0x3c,0xef,0xe4,0x00,0x03,0x67,0xe4,
+0x43,0x3e,0xef,0xe2,0x00,0x03,0xef,0xe2,0x00,0x03,0xef,0xec,0x00,0x03,0x67,0xec,
+0x44,0x61,0xef,0xe2,0x00,0x03,0x67,0xe2,0x44,0x60,0xef,0xe4,0x00,0x03,0x1f,0xeb,
+0xfe,0x00,0x67,0xe4,0x43,0x39,0xef,0xe4,0x00,0x03,0xef,0xe4,0x00,0x03,0x67,0xe4,
+0x04,0x67,0xef,0xe4,0x00,0x03,0x67,0xe4,0x44,0x6e,0x70,0x43,0x3b,0x01,0x70,0x4b,
+0xa5,0x01,0x20,0x20,0x01,0xe4,0x70,0x43,0x3b,0x00,0x70,0x4b,0xa5,0x00,0x20,0x20,
+0x01,0xf0,0xef,0xe4,0x00,0x03,0x20,0x40,0x01,0xe4,0x20,0x20,0x01,0x96,0xda,0x20,
+0x00,0x09,0xda,0x40,0x00,0x08,0x20,0x40,0x5c,0x22,0x58,0x00,0x00,0x01,0xe7,0xf0,
+0x00,0x05,0x20,0x60,0x00,0x00,0x20,0x20,0x01,0xec,0x6f,0xe2,0x4b,0x2d,0xc0,0x0a,
+0x01,0xa7,0xc0,0x0a,0x81,0xae,0xc0,0x0b,0x01,0xb5,0xc0,0x0b,0x81,0xbb,0xc0,0x0c,
+0x01,0xc3,0xc0,0x0c,0x81,0xc8,0xc0,0x0d,0x01,0xcb,0xc0,0x0d,0x81,0xd8,0x20,0x20,
+0x01,0xec,0x70,0x4b,0x9c,0x01,0x70,0x4b,0x9e,0x55,0xe8,0x42,0x00,0x03,0x60,0x42,
+0x4b,0x9d,0xef,0xe2,0x00,0x03,0x67,0xe2,0x4b,0x9e,0x20,0x20,0x01,0xf0,0x20,0x40,
+0x01,0xf0,0x68,0x42,0x41,0x77,0x18,0x41,0x04,0xe0,0xef,0xe2,0x00,0x03,0x98,0x41,
+0xfe,0x00,0x67,0xe2,0x41,0x77,0x20,0x20,0x49,0xe6,0x20,0x40,0x01,0xf0,0xef,0xe2,
+0x00,0x03,0x67,0xe2,0x41,0xdf,0x6f,0xe2,0x4b,0x9d,0xc1,0x7f,0x80,0x00,0x20,0x20,
+0x49,0x41,0x20,0x40,0x01,0xbd,0x20,0x20,0x01,0xf0,0xe8,0x42,0x00,0x03,0x60,0x42,
+0x4b,0x9f,0x6f,0xe2,0x4b,0x9d,0xc1,0x7f,0x80,0x00,0x60,0x42,0x89,0x56,0x20,0x60,
+0x00,0x00,0x70,0x4b,0xa0,0x01,0xef,0xe2,0x00,0x03,0x1f,0xe0,0xff,0xfe,0x67,0xe2,
+0x4b,0xa1,0x20,0x20,0x01,0xe4,0x70,0x4b,0x9c,0x00,0x70,0x89,0x08,0x01,0x20,0x20,
+0x01,0xf0,0x6f,0xe2,0x4b,0xa0,0x20,0x3a,0x01,0xee,0x20,0x40,0x01,0xf0,0x20,0x20,
+0x01,0xcf,0x58,0x00,0xfc,0x18,0x67,0xe4,0x4b,0xa8,0x70,0x4b,0xa0,0x00,0x70,0x4b,
+0xaa,0x00,0x6f,0xe8,0x4b,0x3c,0x67,0xe8,0x4b,0xab,0xdf,0x20,0x00,0x05,0x20,0x20,
+0x01,0xf3,0x20,0x20,0x48,0xf5,0xef,0xec,0x00,0x03,0x67,0xec,0x4b,0x90,0x20,0x20,
+0x01,0xf0,0x20,0x40,0x67,0xf7,0x18,0x60,0x86,0x03,0xef,0xe2,0x00,0x03,0x98,0x60,
+0x86,0x00,0x20,0x20,0x67,0xf3,0x20,0x40,0x67,0xb5,0x6f,0xe6,0x4b,0xa2,0xe7,0xe6,
+0x00,0x0a,0x20,0x60,0x00,0x00,0x70,0x4b,0xa3,0x0f,0x70,0x4b,0xa4,0x04,0x20,0x40,
+0x01,0xe0,0x58,0x00,0x00,0x00,0xe7,0xe2,0x00,0x0a,0x6f,0xe6,0x4b,0xa7,0xe7,0xe6,
+0x00,0x0a,0x20,0x20,0x67,0xb9,0x70,0x4b,0xaa,0x01,0x20,0x20,0x01,0xf1,0x70,0x4b,
+0xaa,0x0c,0x20,0x20,0x01,0xf1,0x70,0x4b,0xaa,0x00,0xdf,0x20,0x00,0x01,0x20,0x20,
+0x01,0xf3,0x70,0x4b,0xa3,0x0e,0x1f,0x20,0xfe,0x03,0x67,0xe2,0x4b,0xa4,0x20,0x40,
+0x01,0xe0,0x6f,0xe6,0x4b,0xa7,0xe7,0xe6,0x00,0x0a,0xd8,0xc0,0x4b,0xaa,0x20,0x40,
+0x67,0xc1,0x20,0x20,0x67,0xb9,0x20,0x40,0x49,0xba,0x78,0x23,0xfc,0x00,0x78,0x24,
+0xfc,0x00,0x09,0x80,0x00,0x08,0x19,0x89,0x7e,0x00,0x67,0xe2,0x02,0xd5,0x09,0x80,
+0x00,0x08,0x19,0x89,0x7e,0x00,0xe7,0xe2,0x00,0x05,0x1f,0xe1,0x72,0x3f,0x20,0x22,
+0xd8,0x8b,0x1f,0xe6,0x7c,0x33,0x24,0x41,0x02,0x0a,0x20,0x20,0x58,0x87,0xdf,0x20,
+0x00,0x33,0x20,0x60,0x00,0x00,0x20,0x40,0x58,0xa3,0x20,0x40,0x49,0x15,0x68,0x42,
+0x00,0x17,0x20,0x40,0x49,0x1c,0x20,0x00,0x05,0xdc,0x20,0x40,0x49,0x21,0x78,0x28,
+0x7c,0x00,0xd9,0x60,0x15,0x7c,0x20,0x20,0x58,0x69,0x20,0x40,0x57,0xaf,0x20,0x40,
+0x02,0x18,0x20,0x20,0x58,0xa7,0x20,0x36,0x80,0x42,0x20,0x20,0x57,0xbe,0x20,0x40,
+0x59,0x57,0x20,0x20,0x02,0x1c,0x6f,0xf0,0x4b,0x88,0xc4,0x01,0x00,0x00,0x70,0x4b,
+0xa4,0x0a,0x70,0x4b,0xa3,0x3e,0x20,0x40,0x01,0xe0,0x58,0x00,0x00,0x03,0xe7,0xe4,
+0x00,0x0a,0x6f,0xe4,0x4b,0x2b,0xe7,0xe4,0x00,0x0a,0x6f,0xec,0x43,0xa8,0xe7,0xec,
+0x00,0x0a,0x20,0x20,0x67,0xb9,0x6f,0xec,0x02,0xd7,0x67,0xec,0x04,0x4b,0x6f,0xe2,
+0x00,0x02,0x1f,0xe0,0xfe,0x01,0x67,0xe2,0x00,0x02,0x20,0x40,0x59,0xf3,0x1a,0x22,
+0x7e,0x00,0x67,0xe2,0x44,0x60,0x6f,0xe2,0x4b,0xa5,0xc0,0x00,0xd9,0xe5,0x20,0x20,
+0x02,0x33,0x6f,0xf0,0x4b,0x88,0xc4,0x00,0x80,0x00,0x20,0x40,0x02,0x50,0x58,0x00,
+0x00,0x02,0xe7,0xe2,0x00,0x0a,0x58,0x00,0x00,0x01,0xe7,0xe2,0x00,0x0a,0x20,0x40,
+0x02,0x56,0xe0,0x42,0x00,0x0a,0x20,0x40,0x59,0xf3,0x1a,0x22,0x7e,0x00,0xe7,0xe2,
+0x00,0x0a,0x68,0x42,0x02,0xd6,0x18,0x40,0x85,0xfa,0xef,0xec,0x00,0x06,0xe7,0xec,
+0x00,0x0a,0xe0,0x42,0x00,0x0a,0x18,0x42,0x72,0x00,0x20,0x40,0x67,0xc1,0x6f,0xe2,
+0x00,0x18,0x1f,0xf1,0x84,0x00,0x18,0x4f,0x84,0x0a,0x1f,0xe1,0x7e,0x0f,0x98,0x40,
+0x84,0x00,0x18,0x46,0x7e,0x00,0xe7,0xe2,0x00,0x0a,0x20,0x40,0x67,0xb9,0xdf,0x20,
+0x00,0x04,0x20,0x20,0x7c,0x9d,0xd8,0x40,0x00,0x06,0x6f,0xe2,0x02,0xd6,0x98,0x40,
+0x84,0x00,0x60,0x42,0x4b,0xa4,0x70,0x4b,0xa3,0x3e,0x20,0x20,0x01,0xe0,0x6f,0xe2,
+0x02,0xd5,0x1f,0xe1,0x7e,0x0f,0xd8,0x40,0x00,0x00,0xc1,0x00,0x00,0x00,0xd8,0x40,
+0x00,0x01,0xc1,0x00,0x80,0x00,0xd8,0x40,0x00,0x02,0xc1,0x03,0x00,0x00,0xd8,0x40,
+0x00,0x03,0xc1,0x01,0x00,0x00,0xd8,0x40,0x00,0x04,0xc1,0x02,0x00,0x00,0x20,0x40,
+0x59,0xee,0xd8,0x40,0x00,0x00,0x20,0x20,0x02,0x65,0x6f,0xf0,0x4b,0x88,0xc4,0x00,
+0x00,0x00,0x70,0x4b,0xa4,0x13,0x70,0x4b,0xa3,0x3e,0x20,0x40,0x01,0xe0,0x58,0x00,
+0x00,0x01,0xe7,0xe4,0x00,0x0a,0xe0,0x44,0x00,0x0a,0x60,0x44,0x4b,0x2b,0xe0,0x42,
+0x00,0x0a,0x6f,0xe2,0x44,0x60,0xe7,0xe2,0x00,0x0a,0x6f,0xec,0x04,0x4b,0xe7,0xec,
+0x00,0x0a,0x6f,0xe4,0x04,0x3d,0x1f,0xeb,0x7e,0x00,0xe7,0xe4,0x00,0x0a,0x6f,0xe8,
+0x04,0x67,0xe7,0xe8,0x00,0x0a,0x6f,0xe2,0x04,0x72,0xe7,0xe2,0x00,0x0a,0x20,0x20,
+0x67,0xb9,0x20,0x40,0x59,0xf9,0x6f,0xe2,0x4b,0xa6,0x20,0x7a,0x00,0x00,0x1f,0xe0,
+0xff,0xff,0x67,0xe2,0x4b,0xa6,0x20,0x20,0x02,0x81,0x70,0x4b,0xa4,0x05,0x70,0x4b,
+0xa3,0x13,0x20,0x40,0x01,0xe0,0x58,0x00,0x00,0x01,0xe7,0xe2,0x00,0x0a,0x6f,0xe4,
+0x4b,0x2b,0xe7,0xe4,0x00,0x0a,0x58,0x00,0x00,0x01,0xe7,0xe4,0x00,0x0a,0x20,0x20,
+0x67,0xb9,0xc6,0x07,0x80,0x00,0x20,0x40,0x5c,0x70,0x24,0x7a,0x00,0x00,0x6f,0xe2,
+0x02,0xd5,0x1f,0xe1,0x7e,0x03,0x67,0xe2,0x44,0xde,0xef,0xe2,0x00,0x06,0x1f,0xe1,
+0x7e,0x1f,0x67,0xe2,0x44,0xdd,0x20,0x7a,0x00,0x00,0x18,0xc2,0x7e,0x00,0x67,0xe4,
+0x44,0xdf,0x6f,0xe2,0x44,0xde,0xc0,0x01,0x82,0xaa,0x20,0x20,0x02,0x9a,0x20,0x40,
+0x67,0xb5,0x58,0x00,0x00,0x02,0xe7,0xe2,0x00,0x0a,0x6f,0xe4,0x4b,0x2b,0x68,0x42,
+0x02,0xd5,0x18,0x41,0x04,0x03,0x18,0x4d,0x04,0x00,0x18,0x52,0x04,0x00,0x98,0x41,
+0xfe,0x00,0xe7,0xe4,0x00,0x0a,0x68,0x42,0x02,0xd6,0x18,0x41,0x04,0x1f,0xe0,0x44,
+0x00,0x0a,0x18,0x42,0x72,0x00,0x20,0x40,0x67,0xd4,0x20,0x20,0x67,0xb9,0x6f,0xe2,
+0x02,0xd7,0xc0,0x01,0x02,0xb0,0xc0,0x04,0x02,0xb3,0xc0,0x04,0x82,0xb5,0xc0,0x06,
+0x02,0xc4,0x20,0x20,0x60,0x45,0xef,0xe2,0x00,0x06,0x67,0xe2,0x4b,0x1d,0x20,0x20,
+0x60,0x6f,0x20,0x40,0x02,0xb5,0x20,0x20,0x60,0x7a,0xef,0xf0,0x00,0x06,0x67,0xf0,
+0x4b,0x1e,0x20,0x20,0x02,0xb8,0x6f,0xf0,0x4b,0x88,0xc4,0x01,0x80,0x00,0x70,0x4b,
+0xa4,0x0c,0x70,0x4b,0xa3,0x3e,0x20,0x40,0x01,0xe0,0x58,0x00,0x00,0x04,0xe7,0xe4,
+0x00,0x0a,0x6f,0xe4,0x4b,0x2b,0xe7,0xe4,0x00,0x0a,0x6f,0xf0,0x4b,0x1e,0xe7,0xf0,
+0x00,0x0a,0x20,0x20,0x67,0xb9,0xef,0xea,0x00,0x06,0x67,0xea,0x4b,0x26,0x20,0x34,
+0x82,0xc8,0x20,0x20,0x60,0x81,0x70,0x4b,0xa4,0x08,0x70,0x4b,0xa3,0x0c,0x20,0x40,
+0x01,0xe0,0x58,0x00,0x00,0x00,0xe7,0xe2,0x00,0x0a,0x6f,0xe4,0x4b,0x2b,0xe7,0xe4,
+0x00,0x0a,0x6f,0xea,0x4b,0x26,0xe7,0xea,0x00,0x0a,0x20,0x20,0x67,0xb9,0x20,0x40,
+0x5b,0x31,0xd8,0x40,0x00,0x01,0x6f,0xe4,0x44,0x8c,0x67,0xe4,0x04,0x69,0x20,0x20,
+0x02,0x65,0x6f,0xe2,0x00,0x7d,0xc0,0x08,0x02,0xda,0x20,0x20,0x60,0xfe,0x68,0x42,
+0x05,0x4e,0x18,0x46,0x7c,0x06,0x20,0x21,0x02,0xde,0x20,0x20,0x62,0x06,0x70,0x00,
+0x7e,0x24,0x20,0x20,0x61,0x34,0x78,0x54,0x7c,0x00,0x20,0x40,0x66,0xa3,0x6f,0xe2,
+0x00,0x48,0x20,0x7a,0x00,0x00,0xc2,0x83,0x82,0xe6,0x20,0x20,0x63,0xf2,0xc0,0x42,
+0x02,0xe9,0xc0,0x41,0x82,0xec,0x20,0x20,0x64,0x21,0x20,0x40,0x02,0xef,0x6f,0xe2,
+0x00,0x48,0x20,0x20,0x64,0x7b,0x20,0x40,0x02,0xef,0x6f,0xe2,0x00,0x48,0x20,0x20,
+0x64,0xef,0x6f,0xe2,0x46,0x2c,0x20,0x3a,0x65,0x0d,0x20,0x20,0x65,0x06,0x6f,0xe2,
+0x40,0x9e,0x79,0x3f,0xfe,0x03,0x67,0xe2,0x40,0x9e,0x58,0x00,0x00,0x01,0x67,0xe4,
+0x04,0xca,0x20,0x60,0x00,0x00,0x6f,0xe2,0x04,0xf9,0xc0,0x1f,0xe9,0x3e,0xc0,0x39,
+0xe9,0x47,0xc0,0x77,0x82,0xfe,0xc0,0x29,0xea,0x05,0x20,0x60,0x00,0x00,0x6f,0xe4,
+0x04,0xfd,0x1f,0xe2,0x0c,0x00,0x20,0x40,0x69,0x84,0x6f,0xe2,0x04,0xff,0xc0,0x20,
+0xe9,0x66,0xc0,0x20,0x69,0x6e,0xc0,0x38,0xe9,0xa7,0xc0,0x38,0x03,0x08,0xc0,0x24,
+0xe9,0xbe,0x20,0x20,0x6a,0x58,0x70,0x0a,0x95,0x08,0x20,0x40,0x7b,0xab,0x20,0x40,
+0x69,0x72,0x20,0x20,0x69,0xba,0x6f,0xe2,0x44,0x90,0x20,0x3a,0x5e,0xd0,0x20,0x40,
+0x74,0x38,0x20,0x20,0x79,0x32,0xe7,0xad,0xaa,0x55,0x40,0x00,0x00,0x40,0x02,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x02,
+0x00,0x00,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x68,0x00,
+0x01,0x99,0x00,0x08,0x00,0x44,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xaa,0x55,
+0x01,0x00,0x92,0x40,0x0a,0xaa,0x55,0x01,0x00,0x54,0x46,0x40,0xaa,0x55,0x01,0x00,
+0x06,0x42,0x13,0xaa,0x55,0x08,0x00,0x98,0x40,0xff,0xfb,0x8f,0xf8,0x8b,0x85,0x59,
+0x83,0xaa,0x55,0x03,0x00,0x14,0x42,0x6b,0x4a,0x05,0xaa,0x55,0x04,0x00,0x3d,0x45,
+0x00,0x7f,0x00,0x07,0xaa,0x55,0x03,0x00,0x2d,0x46,0x03,0x00,0x04,0xaa,0x55,0x01,
+0x00,0x2c,0x46,0x01,0xaa,0x55,0x06,0x00,0x57,0x46,0x04,0x30,0x30,0x30,0x30,0x30,
+0xaa,0x55,0x10,0x00,0xf0,0x4f,0x00,0x1c,0xff,0x1f,0x00,0x1c,0x00,0x1c,0x00,0x4c,
+0xe0,0x4f,0x00,0x4c,0x00,0x4c,0xaa,0x55,0x01,0x00,0xa2,0x4b,0x04,0xaa,0x55,0x02,
+0x00,0x68,0x46,0x00,0x05,0xaa,0x55,0x01,0x00,0x6c,0x46,0x03,0xaa,0x55,0x01,0x00,
+0x6f,0x46,0x07,0xaa,0x55,0x03,0x00,0xaa,0x40,0x24,0x04,0x04,0xaa,0x55,0x01,0x00,
+0x79,0x46,0x00,0xaa,0x55,0x01,0x00,0x91,0x40,0x00,0xaa,0x55,0x03,0x00,0x54,0x41,
+0x00,0x01,0x08,0xaa,0x55,0x01,0x00,0x74,0x41,0x02,0xaa,0x55,0x01,0x00,0x93,0x40,
+0x00,0xaa,0x55,0x01,0x00,0x6d,0x46,0x28,0xaa,0x55,0x06,0x00,0xa0,0x40,0xa7,0x2a,
+0x2a,0x21,0x10,0x3a,0xaa,0x55,0x0c,0x00,0xe7,0x44,0x0b,0x33,0x31,0x32,0x31,0x20,
+0x4d,0x6f,0x75,0x20,0x42,0x74,0xaa,0x55,0x03,0x00,0xe4,0x41,0x20,0x00,0x01,0xaa,
+0x55,0x01,0x00,0xe8,0x41,0x00,0xaa,0x55,0x01,0x00,0x90,0x44,0x01,0xaa,0x55,0x01,
+0x00,0x5f,0x44,0x07,0xaa,0x55,0x01,0x00,0x98,0x44,0x00,0xaa,0x55,0x04,0x00,0x75,
+0x46,0x2d,0x00,0x2f,0x00,0xaa,0x55,0x01,0x00,0x40,0x43,0x00,0xaa,0x55,0x02,0x00,
+0x54,0x44,0x40,0x00,0xaa,0x55,0x01,0x00,0x6e,0x46,0x05,0xaa,0x55,0x06,0x00,0x72,
+0x44,0x21,0x22,0x01,0x33,0x02,0x3a,0xaa,0x55,0x0d,0x00,0x81,0x43,0x0c,0x33,0x31,
+0x32,0x31,0x20,0x4d,0x6f,0x75,0x20,0x42,0x6c,0x65,0xaa,0x55,0x04,0x00,0x41,0x43,
+0x03,0x02,0x01,0x02,0xaa,0x55,0x16,0x00,0x61,0x43,0x0e,0x02,0x01,0x02,0x11,0x09,
+0x59,0x69,0x63,0x68,0x69,0x70,0x20,0x31,0x30,0x32,0x31,0x73,0x20,0x4d,0x6f,0x75,
+0xaa,0x55,0x07,0x00,0x25,0x44,0x02,0x03,0x00,0x05,0x10,0x02,0x03,0xaa,0x55,0x08,
+0x00,0x68,0x44,0x08,0x00,0x10,0x00,0x00,0x00,0x2c,0x01,0xaa,0x55,0x01,0x00,0x78,
+0x44,0xb9,0xaa,0x55,0x01,0x00,0x7a,0x44,0x17,0xaa,0x55,0x02,0x00,0xcc,0x44,0x31,
+0x00,0xaa,0x55,0x01,0x00,0xd1,0x40,0x01,0xaa,0x55,0x0c,0x00,0x49,0x45,0x05,0x03,
+0x00,0x12,0x00,0x01,0x01,0x00,0x01,0x11,0x03,0x00,0xaa,0x55,0x01,0x00,0x5f,0x45,
+0x00,0xaa,0x55,0x02,0x00,0x47,0x45,0x83,0x46,0xaa,0x55,0xb8,0x00,0x83,0x46,0x03,
+0x12,0x00,0x01,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x36,0x00,0x52,0x09,0x00,0x00,
+0x0a,0x00,0x01,0x00,0x01,0x09,0x00,0x01,0x35,0x03,0x19,0x12,0x00,0x09,0x00,0x04,
+0x35,0x0d,0x35,0x06,0x19,0x01,0x00,0x09,0x00,0x01,0x35,0x03,0x19,0x00,0x01,0x09,
+0x00,0x09,0x35,0x08,0x35,0x06,0x19,0x12,0x00,0x09,0x01,0x00,0x09,0x02,0x00,0x09,
+0x01,0x03,0x09,0x02,0x01,0x09,0x05,0xac,0x09,0x02,0x02,0x09,0x02,0x39,0x09,0x02,
+0x03,0x09,0x06,0x44,0x09,0x02,0x04,0x28,0x01,0x09,0x02,0x05,0x09,0x00,0x02,0x03,
+0x11,0x01,0x00,0x03,0x01,0x00,0x00,0x01,0x00,0x03,0x36,0x00,0x46,0x09,0x00,0x00,
+0x0a,0x00,0x01,0x00,0x03,0x09,0x00,0x01,0x35,0x03,0x19,0x11,0x01,0x09,0x00,0x02,
+0x0a,0x00,0x00,0x00,0x00,0x09,0x00,0x04,0x35,0x0c,0x35,0x03,0x19,0x01,0x00,0x35,
+0x05,0x19,0x00,0x03,0x08,0x01,0x09,0x00,0x06,0x35,0x09,0x09,0x65,0x6e,0x09,0x00,
+0x6a,0x09,0x01,0x00,0x09,0x01,0x00,0x25,0x0a,0x53,0x50,0x50,0x20,0x73,0x6c,0x61,
+0x76,0x65,0x00,0x00,0x00,0x01,0x00,0xaa,0x55,0x02,0x00,0x8e,0x44,0xaf,0x47,0xaa,
+0x55,0x35,0x02,0xaf,0x47,0x01,0x00,0x02,0x00,0x28,0x02,0x00,0x18,0x02,0x00,0x02,
+0x03,0x28,0x01,0x02,0x03,0x00,0x02,0x01,0x2a,0x02,0xc8,0x00,0x04,0x00,0x02,0x03,
+0x28,0x01,0x0a,0x05,0x00,0x02,0x00,0x2a,0x14,0x41,0x73,0x74,0x20,0x4c,0x45,0x20,
+0x4d,0x6f,0x75,0x73,0x65,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x06,0x00,0x02,
+0x03,0x28,0x01,0x02,0x07,0x00,0x02,0x04,0x2a,0x08,0x06,0x00,0x06,0x00,0x64,0x00,
+0x2c,0x01,0x08,0x00,0x02,0x03,0x28,0x01,0x02,0x09,0x00,0x02,0x02,0x2a,0x01,0x01,
+0x0a,0x00,0x02,0x03,0x28,0x01,0x08,0x0b,0x00,0x02,0x03,0x2a,0x06,0x00,0x00,0x00,
+0x00,0x00,0x00,0x0c,0x00,0x02,0x00,0x28,0x02,0x01,0x18,0x0d,0x00,0x02,0x03,0x28,
+0x01,0x20,0x0e,0x00,0x02,0x05,0x2a,0x00,0x0f,0x00,0x02,0x02,0x29,0x02,0x00,0x00,
+0x10,0x00,0x02,0x00,0x28,0x02,0x04,0x18,0x11,0x00,0x02,0x03,0x28,0x01,0x16,0x12,
+0x00,0x02,0x07,0x2a,0x01,0x00,0x13,0x00,0x02,0x02,0x29,0x02,0x00,0x00,0x14,0x00,
+0x02,0x00,0x28,0x02,0x0f,0x18,0x15,0x00,0x02,0x03,0x28,0x01,0x12,0x16,0x00,0x02,
+0x19,0x2a,0x01,0x38,0x17,0x00,0x02,0x00,0x28,0x02,0x0a,0x18,0x18,0x00,0x02,0x03,
+0x28,0x01,0x02,0x19,0x00,0x02,0x23,0x2a,0x03,0x00,0x00,0x00,0x1a,0x00,0x02,0x03,
+0x28,0x01,0x02,0x1b,0x00,0x02,0x29,0x2a,0x08,0x46,0x6c,0x61,0x67,0x74,0x72,0x69,
+0x70,0x1c,0x00,0x02,0x03,0x28,0x01,0x02,0x1d,0x00,0x02,0x24,0x2a,0x06,0x79,0x69,
+0x63,0x68,0x69,0x70,0x1e,0x00,0x02,0x03,0x28,0x01,0x02,0x1f,0x00,0x02,0x25,0x2a,
+0x04,0x63,0x6f,0x6d,0x33,0x20,0x00,0x02,0x03,0x28,0x01,0x02,0x21,0x00,0x02,0x26,
+0x2a,0x03,0x31,0x2e,0x30,0x22,0x00,0x02,0x03,0x28,0x01,0x02,0x23,0x00,0x02,0x28,
+0x2a,0x03,0x31,0x2e,0x30,0x24,0x00,0x02,0x03,0x28,0x01,0x02,0x25,0x00,0x02,0x2a,
+0x2a,0x03,0x31,0x2e,0x30,0x26,0x00,0x02,0x03,0x28,0x01,0x02,0x27,0x00,0x02,0x25,
+0x2a,0x04,0x63,0x6f,0x6d,0x33,0x28,0x00,0x02,0x00,0x28,0x10,0x55,0xe4,0x05,0xd2,
+0xaf,0x9f,0xa9,0x8f,0xe5,0x4a,0x7d,0xfe,0x43,0x53,0x53,0x49,0x29,0x00,0x02,0x03,
+0x28,0x01,0x12,0x2a,0x00,0x10,0x16,0x96,0x24,0x47,0xc6,0x23,0x61,0xba,0xd9,0x4b,
+0x4d,0x1e,0x43,0x53,0x53,0x49,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x02,0x02,0x29,
+0x02,0x00,0x00,0x2c,0x00,0x02,0x03,0x28,0x01,0x08,0x2d,0x00,0x10,0xb3,0x9b,0x72,
+0x34,0xbe,0xec,0xd4,0xa8,0xf4,0x43,0x41,0x88,0x43,0x53,0x53,0x49,0x14,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x2e,0x00,0x02,0x03,0x28,0x01,0x04,0x2f,0x00,0x10,0xfe,0x69,0xca,0x9a,
+0x56,0x19,0xf6,0xab,0x02,0x4d,0xaa,0x6d,0x43,0x53,0x53,0x49,0x14,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x30,0x00,0x02,0x03,0x28,0x01,0x1a,0x31,0x00,0x10,0x18,0x03,0xa6,0x28,0x5e,
+0xd8,0xec,0x91,0x1c,0x48,0xa3,0xac,0x43,0x53,0x53,0x49,0x14,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x32,0x00,0x02,0x02,0x29,0x02,0x00,0x00,0x00,0x00,0xaa,0x55,0x07,0x00,0x76,0x41,
+0x0f,0x84,0x30,0x0a,0x0b,0xb2,0x32,0xaa,0x55,0x02,0x00,0x57,0x41,0x8b,0x0b,0xaa,
+0x55,0x08,0x00,0xa1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xaa,0x55,0x02,
+0x00,0xbd,0x40,0x02,0x24,0xaa,0x55,0x08,0x00,0xad,0x40,0x40,0x00,0x00,0x02,0x32,
+0x00,0x00,0x02,0xaa,0x55,0x02,0x00,0xbb,0x40,0x20,0x00,0xaa,0x55,0x04,0x00,0xb7,
+0x40,0x20,0x00,0x00,0x20,0xaa,0x55,0x04,0x00,0xbf,0x40,0x80,0x04,0x00,0x10,0xaa,
+0x55,0x05,0x00,0xe2,0x44,0x08,0x0e,0x05,0x04,0x00,0xaa,0x55,0x02,0x00,0x02,0x42,
+0x30,0x1f,0xaa,0x55,0x01,0x00,0x10,0x42,0x20,0xaa,0x55,0x01,0x00,0xe0,0x41,0x01,
+0xaa,0x55,0x0f,0x00,0x16,0x4b,0x4b,0xba,0x55,0xd0,0x56,0xe0,0x57,0x88,0x58,0x6c,
+0x59,0x10,0x07,0xff,0xff,0xaa,0x55,0x02,0x00,0xc3,0x40,0x16,0x4b,0x79,0x3b
+};
Index: ModuleDemo/BlueTooth/HCI/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/HCI/user/main.c	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/HCI/user/main.c	(working copy)
@@ -0,0 +1,130 @@
+/**
+  ******************************************************************************
+  * @file    3121Demo\ModuleDemo\BlueTooth\HCI_demo\user\main.c
+  * @author  Yichip Application Team
+  * @version V1.0.0
+  * @date    18-Feb-2020
+  * @brief   BT&BLE test program.
+  ******************************************************************************
+  * @attention
+  *
+  * COPYRIGHT 2019 Yichip Microelectronics
+  *
+  * The purpose of this firmware is to provide guidance to customers engaged in
+	* programming work to guide them smoothly to product development,
+	* so as to save their time.
+	*
+	* Therefore, Yichip microelectronics shall not be responsible for any direct,
+	* indirect or consequential damages caused by any content of this gu jiang
+	* and/or contained in this code used by the customer in its products.
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "yc3121.h"
+#include "yc_gpio.h"
+#include "yc_uart.h"
+#include "yc_hci.h"
+#include "board_config.h"
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+#define HCI_UART UART0
+#define UART_TO_HCI_BAUDRATE	921600
+
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+void UART_Configuration(void);
+
+
+void BT_IRQHandler()
+{
+	while(IPC_have_data())
+	{
+        uint8_t hci_data[HCI_BUF_SIZE];
+        int hci_len=sizeof(hci_data);
+		if(TRUE==HCI_RX(hci_data,&hci_len))
+		{
+			UART_SendBuf(HCI_UART,hci_data,hci_len);
+		}
+	}
+	BT_CONFIG &= (~(1<<BT_INIT_FLAG));
+}
+
+
+/**
+  * @brief  Main program
+  * @param  None
+  * @retval None
+  */
+int main(void)
+{
+    uint8_t hci_cmd[HCI_BUF_SIZE];
+    int hci_cmd_len,i;
+	UART_Configuration();
+	MyPrintf("hci demo\n");
+
+	HCI_Init();
+	enable_intr(INTR_BT);
+
+	MyPrintf("uart baud rate is:%d\n",UART_TO_HCI_BAUDRATE);
+
+	while (1)
+	{
+		if(UART_IsRXFIFONotEmpty(HCI_UART))
+		{
+			hci_cmd[0] = UART_ReceiveData(HCI_UART);
+			while(!UART_IsRXFIFONotEmpty(HCI_UART));
+			hci_cmd[1] = UART_ReceiveData(HCI_UART);
+			while(!UART_IsRXFIFONotEmpty(HCI_UART));
+			hci_cmd[2] = UART_ReceiveData(HCI_UART);
+            while(!UART_IsRXFIFONotEmpty(HCI_UART));
+			hci_cmd[3] = UART_ReceiveData(HCI_UART);
+            hci_cmd_len=hci_cmd[3];
+			i=0;
+			while(i<hci_cmd_len)
+			{
+				while(!UART_IsRXFIFONotEmpty(HCI_UART));
+				hci_cmd[4+i] = UART_ReceiveData(HCI_UART);
+                i++;
+			}
+			HCI_TX(hci_cmd,4+i);
+		}
+	}
+}
+
+/**
+  * @brief  Serial port 0 initialization function.
+  * @param  None
+  * @retval None
+  */
+void UART_Configuration(void)
+{
+	UART_InitTypeDef UART_InitStruct;
+
+	/* Configure serial ports 0 RX and TX for IO. */
+	GPIO_Config(UART0_TX_PORT, UART0_TX_PIN, UART0_TXD);
+	GPIO_Config(UART0_RX_PORT, UART0_RX_PIN, UART0_RXD);
+
+	/* USARTx configured as follow:
+  - BaudRate = 115200 baud
+  - Word Length = 8 Bits
+  - Stop Bit = 1 Stop Bit
+  - Parity = No Parity
+  - Hardware flow control disabled (RTS and CTS signals)
+  - Receive and transmit enabled
+  */
+	UART_InitStruct.BaudRate = UART_TO_HCI_BAUDRATE;			//Configure serial port baud rate, the baud rate defaults to 128000.
+	UART_InitStruct.DataBits = Databits_8b;
+	UART_InitStruct.StopBits = StopBits_1;
+	UART_InitStruct.Parity = Parity_None;
+	UART_InitStruct.FlowCtrl = FlowCtrl_None;
+	UART_InitStruct.Mode = Mode_duplex;
+
+	UART_Init(UART0, &UART_InitStruct);
+}
+
+/************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/
+
Index: ModuleDemo/BlueTooth/HCI/user/yc_hci.h
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/HCI/user/yc_hci.h	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/HCI/user/yc_hci.h	(working copy)
@@ -0,0 +1,50 @@
+#ifndef __YC_HCI_H__
+#define __YC_HCI_H__
+
+#include "yc_ipc.h"
+
+#define     HCI_DEBUG
+
+#define HCI_TYPE_CMD     0x01
+#define HCI_TYPE_ACL     0x02
+#define HCI_TYPE_SCO     0x03
+#define HCI_TYPE_EVENT   0x04
+#define HCI_TYPE_ISO     0x05
+
+#define HCI_BUF_SIZE     1024
+
+
+/**
+* @brief   HCI init
+*
+* @param    none
+*
+* @retval   none
+*/
+void HCI_Init(void);
+
+/**
+* @brief   receive HCI packet
+*
+* @param   *buf: receive data buf
+*
+* @param   *len: input:buf len;output:receive len
+*
+* @retval	 TRUE or FALSE
+*/
+Boolean HCI_RX(uint8_t *buf, int *len);
+
+/**
+* @brief   sebd HCI packet
+*
+* @param   *buf: send packet data buf
+*
+* @param   len: send len
+*
+* @retval	 TRUE or FALSE
+*/
+Boolean HCI_TX(uint8_t *buf, int len);
+
+#endif
+
+
Index: ModuleDemo/BlueTooth/HCI/user/yc_hci.c
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/HCI/user/yc_hci.c	(nonexistent)
+++ /YC3121_demo/ModuleDemo/BlueTooth/HCI/user/yc_hci.c	(working copy)
@@ -0,0 +1,116 @@
+#include "yc_hci.h"
+
+
+void HCI_Init(void)
+{
+    IpcInit();
+}
+
+
+Boolean HCI_RX(uint8_t *buf, int *len)
+{
+    uint32_t temp_len=1;
+    uint32_t head_len;
+    if(*len<5)
+    {
+        *len=0;
+        return FALSE;
+    }
+    if(IPC_GetBtData(buf,&temp_len)==FALSE)
+    {
+        *len=0;
+        return FALSE;
+    }
+    switch(buf[0])
+    {
+        case HCI_TYPE_EVENT:
+        head_len=3;
+        temp_len=2;
+        if(IPC_GetBtData(buf+1,&temp_len)==FALSE)
+        {
+            *len=0;
+            return FALSE;
+        }
+        temp_len=buf[2];
+        if(*len<(temp_len+head_len))
+        {
+            *len=0;
+            return FALSE;
+        }
+        break;
+
+        case HCI_TYPE_ACL:
+        head_len=5;
+        temp_len=4;
+        if(IPC_GetBtData(buf+1,&temp_len)==FALSE)
+        {
+            *len=0;
+            return FALSE;
+        }
+        temp_len=(buf[3]|(buf[4]<<8));
+        if(*len<(temp_len+head_len))
+        {
+            *len=0;
+            return FALSE;
+        }
+        break;
+
+        case HCI_TYPE_SCO:
+        head_len=4;
+        temp_len=3;
+        if(IPC_GetBtData(buf+1,&temp_len)==FALSE)
+        {
+            *len=0;
+            return FALSE;
+        }
+        temp_len=buf[3];
+        if(*len<(temp_len+head_len))
+        {
+            *len=0;
+            return FALSE;
+        }
+        break;
+
+        case HCI_TYPE_ISO:
+        head_len=5;
+        temp_len=4;
+        if(IPC_GetBtData(buf+1,&temp_len)==FALSE)
+        {
+            *len=0;
+            return FALSE;
+        }
+        temp_len=(buf[3]|((buf[4]&0x3f)<<8));
+        if(*len<(temp_len+head_len))
+        {
+            *len=0;
+            return FALSE;
+        }
+        break;
+
+        default:
+            #ifdef HCI_DEBUG
+            MyPrintf("HCI error type:%02x\r\n",buf[0]);
+            #endif
+            *len=0;
+        return FALSE;
+    }
+    *len=temp_len;
+    if(IPC_GetBtData(buf+head_len,&temp_len)==FALSE)
+    {
+        *len=0;
+        return FALSE;
+    }
+    if(*len != temp_len)
+    {
+        *len=0;
+        return FALSE;
+    }
+    *len=temp_len+head_len;
+    return TRUE;
+}
+
+
+Boolean HCI_TX(uint8_t *buf, int len)
+{
+    return IPC_PutBtData(buf,len);
+}
