From 23a65b17a60f3832e354317c8a913cbb27c68031 Mon Sep 17 00:00:00 2001 From: LSMushui Date: Tue, 10 Mar 2026 14:43:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=9B=B4=E6=94=B9=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=BA=91=E5=8F=B0pid=E8=B6=85?= =?UTF-8?q?=E9=99=90=E9=97=AE=E9=A2=98=EF=BC=8C=E4=BF=AE=E5=A4=8D=E4=BA=91?= =?UTF-8?q?=E5=8F=B0=E7=BC=96=E7=A0=81=E5=99=A8=E4=B8=8A=E4=B8=8B=E9=99=90?= =?UTF-8?q?=EF=BC=8C=E5=85=B3=E9=97=AD=E7=A3=81=E5=8A=9B=E8=AE=A1=E8=BE=93?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 云台/云台/.vscode/c_cpp_properties.json | 127 ++++++++++++++++-- 云台/云台/.vscode/keil-assistant.log | 12 +- 云台/云台/CarBody/Gimbal.c | 39 +++--- 云台/云台/CarBody/Visual.c | 54 ++------ .../Control/WaveFiltering_Kalman_Filtering.c | 2 +- 云台/云台/Function/AttitudeAlgorithms.c | 47 ++++++- 云台/云台/Function/AttitudeAlgorithms.h | 1 + 云台/云台/Hardware/BMI088.c | 1 + 云台/云台/Objects/Project.axf | Bin 729072 -> 725204 bytes 云台/云台/Objects/Project.build_log.htm | 88 ++++++------ 云台/云台/Objects/Project.htm | 75 ++++++----- 云台/云台/Objects/Project_Target 1.dep | 28 ++-- 云台/云台/Objects/attitudealgorithms.crf | Bin 451848 -> 452167 bytes 云台/云台/Objects/bmi088.crf | Bin 453157 -> 453157 bytes 云台/云台/Objects/ctoc.crf | Bin 448703 -> 448703 bytes 云台/云台/Objects/gimbal.crf | Bin 462173 -> 462229 bytes 云台/云台/Objects/main.crf | Bin 468866 -> 468918 bytes 云台/云台/Objects/visual.crf | Bin 459428 -> 459688 bytes .../Objects/wavefiltering_kalman_filtering.crf | Bin 8673 -> 8673 bytes 云台/云台/Project.uvguix.LSMushui | 111 ++++++++++----- 云台/云台/User/Parameter.h | 6 +- 云台/云台/User/main.c | 6 +- 底盘/底盘/.vscode/c_cpp_properties.json | 25 ++-- 底盘/底盘/.vscode/keil-assistant.log | 2 + 底盘/底盘/Objects/Project.axf | Bin 601396 -> 601392 bytes 底盘/底盘/Objects/Project.build_log.htm | 68 +++++----- 底盘/底盘/Objects/Project.htm | 2 +- 底盘/底盘/Objects/Project_Target 1.dep | 2 +- 底盘/底盘/Objects/main.crf | Bin 462138 -> 462138 bytes 底盘/底盘/Project.uvguix.LSMushui | 59 ++++---- 底盘/底盘/Project.uvoptx | 2 +- 底盘/底盘/User/main.c | 2 +- 32 files changed, 461 insertions(+), 298 deletions(-) diff --git a/云台/云台/.vscode/c_cpp_properties.json b/云台/云台/.vscode/c_cpp_properties.json index aec2d82..2a46f61 100644 --- a/云台/云台/.vscode/c_cpp_properties.json +++ b/云台/云台/.vscode/c_cpp_properties.json @@ -1,22 +1,121 @@ { "configurations": [ + { + "name": "windows-cygwin-gcc-x64", + "includePath": [ + "${workspaceFolder}/**", + "f:\\桌面\\云台\\Start", + "f:\\桌面\\云台\\Library", + "f:\\桌面\\云台\\System", + "f:\\桌面\\云台\\Algorithm", + "f:\\桌面\\云台\\AHRS", + "f:\\桌面\\云台\\Hardware", + "f:\\桌面\\云台\\Motor", + "f:\\桌面\\云台\\Function", + "f:\\桌面\\云台\\Control", + "f:\\桌面\\云台\\CarBody", + "f:\\桌面\\云台\\User", + "C:\\Keil_v5\\ARM\\ARMCC\\include", + "f:\\桌面\\云台\\Carbody" + ], + "defines": [ + "USE_STDPERIPH_DRIVER", + "STM32F40_41xxx", + "ARM_MATH_CM4", + "__FPU_PRESENT=1U", + "__CC_ARM", + "__arm__", + "__align(x)=", + "__ALIGNOF__(x)=", + "__alignof__(x)=", + "__asm(x)=", + "__forceinline=", + "__restrict=", + "__global_reg(n)=", + "__inline=", + "__int64=long long", + "__INTADDR__(expr)=0", + "__irq=", + "__packed=", + "__pure=", + "__smc(n)=", + "__svc(n)=", + "__svc_indirect(n)=", + "__svc_indirect_r7(n)=", + "__value_in_regs=", + "__weak=", + "__writeonly=", + "__declspec(x)=", + "__attribute__(x)=", + "__nonnull__(x)=", + "__register=", + "__breakpoint(x)=", + "__cdp(x,y,z)=", + "__clrex()=", + "__clz(x)=0U", + "__current_pc()=0U", + "__current_sp()=0U", + "__disable_fiq()=", + "__disable_irq()=", + "__dmb(x)=", + "__dsb(x)=", + "__enable_fiq()=", + "__enable_irq()=", + "__fabs(x)=0.0", + "__fabsf(x)=0.0f", + "__force_loads()=", + "__force_stores()=", + "__isb(x)=", + "__ldrex(x)=0U", + "__ldrexd(x)=0U", + "__ldrt(x)=0U", + "__memory_changed()=", + "__nop()=", + "__pld(...)=", + "__pli(...)=", + "__qadd(x,y)=0", + "__qdbl(x)=0", + "__qsub(x,y)=0", + "__rbit(x)=0U", + "__rev(x)=0U", + "__return_address()=0U", + "__ror(x,y)=0U", + "__schedule_barrier()=", + "__semihost(x,y)=0", + "__sev()=", + "__sqrt(x)=0.0", + "__sqrtf(x)=0.0f", + "__ssat(x,y)=0", + "__strex(x,y)=0U", + "__strexd(x,y)=0", + "__strt(x,y)=", + "__swp(x,y)=0U", + "__usat(x,y)=0U", + "__wfe()=", + "__wfi()=", + "__yield()=", + "__vfp_status(x,y)=0" + ], + "intelliSenseMode": "linux-gcc-x64", + "cStandard": "${default}", + "cppStandard": "${default}", + "compilerPath": "C:/cygwin64/bin/gcc.exe" + }, { "name": "Target 1", "includePath": [ - "d:\\workplace\\New-Infantry-C-Board-Legacy-1\\云台\\云台\\Start", - "d:\\workplace\\New-Infantry-C-Board-Legacy-1\\云台\\云台\\Library", - "d:\\workplace\\New-Infantry-C-Board-Legacy-1\\云台\\云台\\System", - "d:\\workplace\\New-Infantry-C-Board-Legacy-1\\云台\\云台\\Algorithm", - "d:\\workplace\\New-Infantry-C-Board-Legacy-1\\云台\\云台\\AHRS", - "d:\\workplace\\New-Infantry-C-Board-Legacy-1\\云台\\云台\\Hardware", - "d:\\workplace\\New-Infantry-C-Board-Legacy-1\\云台\\云台\\Motor", - "d:\\workplace\\New-Infantry-C-Board-Legacy-1\\云台\\云台\\Function", - "d:\\workplace\\New-Infantry-C-Board-Legacy-1\\云台\\云台\\Control", - "d:\\workplace\\New-Infantry-C-Board-Legacy-1\\云台\\云台\\CarBody", - "d:\\workplace\\New-Infantry-C-Board-Legacy-1\\云台\\云台\\User", - "C:\\Keil_v5\\ARM\\ARMCC\\include", - "C:\\Keil_v5\\ARM\\ARMCC\\include\\rw", - "d:\\workplace\\New-Infantry-C-Board-Legacy-1\\云台\\云台\\Carbody" + "c:\\Users\\LSMushui\\Desktop\\RM\\test-rope\\云台\\云台\\Start", + "c:\\Users\\LSMushui\\Desktop\\RM\\test-rope\\云台\\云台\\Library", + "c:\\Users\\LSMushui\\Desktop\\RM\\test-rope\\云台\\云台\\System", + "c:\\Users\\LSMushui\\Desktop\\RM\\test-rope\\云台\\云台\\Algorithm", + "c:\\Users\\LSMushui\\Desktop\\RM\\test-rope\\云台\\云台\\AHRS", + "c:\\Users\\LSMushui\\Desktop\\RM\\test-rope\\云台\\云台\\Hardware", + "c:\\Users\\LSMushui\\Desktop\\RM\\test-rope\\云台\\云台\\Motor", + "c:\\Users\\LSMushui\\Desktop\\RM\\test-rope\\云台\\云台\\Function", + "c:\\Users\\LSMushui\\Desktop\\RM\\test-rope\\云台\\云台\\Control", + "c:\\Users\\LSMushui\\Desktop\\RM\\test-rope\\云台\\云台\\CarBody", + "c:\\Users\\LSMushui\\Desktop\\RM\\test-rope\\云台\\云台\\User", + "c:\\Users\\LSMushui\\Desktop\\RM\\test-rope\\云台\\云台\\Carbody" ], "defines": [ "USE_STDPERIPH_DRIVER", diff --git a/云台/云台/.vscode/keil-assistant.log b/云台/云台/.vscode/keil-assistant.log index 049b4c1..8520a9c 100644 --- a/云台/云台/.vscode/keil-assistant.log +++ b/云台/云台/.vscode/keil-assistant.log @@ -95,15 +95,13 @@ [info] Log at : 2025/10/23|09:40:31|GMT+0800 -[info] Log at : 2025/12/6|19:19:47|GMT+0800 +[info] Log at : 2026/1/11|17:02:33|GMT+0800 -[info] Log at : 2025/12/8|13:08:58|GMT+0800 +[info] Log at : 2026/1/25|08:06:12|GMT+0800 -[info] Log at : 2025/12/10|18:02:38|GMT+0800 +[info] Log at : 2026/2/1|23:42:36|GMT+0800 -[info] Log at : 2025/12/10|18:02:47|GMT+0800 +[info] Log at : 2026/3/9|14:44:08|GMT+0800 -[info] Log at : 2025/12/10|18:23:26|GMT+0800 - -[info] Log at : 2025/12/11|19:32:44|GMT+0800 +[info] Log at : 2026/3/10|13:56:39|GMT+0800 diff --git a/云台/云台/CarBody/Gimbal.c b/云台/云台/CarBody/Gimbal.c index 23b4cf0..b9c53a5 100644 --- a/云台/云台/CarBody/Gimbal.c +++ b/云台/云台/CarBody/Gimbal.c @@ -12,7 +12,7 @@ #include "Visual.h" #include "WaveFiltering_Kalman_Filtering.h" -KFP kfp_PITCH={0.02,0,0,0,0.01,0.543};//卡尔曼滤波器结构体 +KFP kfp_PITCH={0.02,0,0,0,0.001,0.543};//卡尔曼滤波器结构体 @@ -71,14 +71,14 @@ void Gimbal_Init(void) PID_PositionSetOUTRange(&Gimbal_YawAngleSpeedPID,-30000,30000); PID_PositionStructureInit(&Gimbal_PitchAnglePositionPID,0);//Pitch轴陀螺仪闭环 - PID_PositionSetParameter(&Gimbal_PitchAnglePositionPID,15,0,10); + PID_PositionSetParameter(&Gimbal_PitchAnglePositionPID,15,0,100); PID_PositionSetEkRange(&Gimbal_PitchAnglePositionPID,-1,1); - PID_PositionSetOUTRange(&Gimbal_PitchAnglePositionPID,-150,150); + PID_PositionSetOUTRange(&Gimbal_PitchAnglePositionPID,-200,200); PID_PositionStructureInit(&Gimbal_PitchAngleSpeedPID,300); PID_PositionSetParameter(&Gimbal_PitchAngleSpeedPID,150,0.001,5); PID_PositionSetEkRange(&Gimbal_PitchAngleSpeedPID,-5,5); - PID_PositionSetOUTRange(&Gimbal_PitchAngleSpeedPID,-60000,60000); + PID_PositionSetOUTRange(&Gimbal_PitchAngleSpeedPID,-30000,30000); PID_PositionStructureInit(&Gimbal_L_FrictionWheelPID,0);//左摩擦轮 PID_PositionSetParameter(&Gimbal_L_FrictionWheelPID,16,0,30); @@ -131,14 +131,16 @@ void Gimbal_PitchControl(void) { float use_pitch=0,lastpitch=0,lastyaw=0; if(Remote_StartFlag==2)Gimbal_PitchAnglePositionPID.Need_Value=0;//遥控器刚建立连接时,复位Pitch轴角度 - if(((Remote_RxData.Remote_L_UD>1050 && RefereeSystem_Status==0) || (1024+Remote_RxData.Remote_Mouse_DU*3)<1000) )//&& AttitudeAlgorithms_DegRoll1050 && RefereeSystem_Status==0) || (1024+Remote_RxData.Remote_Mouse_DU*3)<1000) && GM6020_MotorStatus[Gimbal_PitchMotor-0x205].Position>Pitch_GM6020PositionUpperLinit) { Gimbal_PitchAnglePositionPID.Need_Value-=Gimbal_LeverSpeedMapRate/8192.0f*360.0f;//通过遥控器或者鼠标获取俯仰情况 //if(GM6020_MotorStatus[Gimbal_PitchMotor-0x205].Angle<=Pitch_GM6020PositionUpperLinit) //Gimbal_PitchAnglePositionPID.Need_Value=0; } - else if(((Remote_RxData.Remote_L_UD<1000 && RefereeSystem_Status==0) || (1024+Remote_RxData.Remote_Mouse_DU*3)>1050) )//&& AttitudeAlgorithms_DegRoll>Pitch_GM6020AngleLowerLinit) + else if(((Remote_RxData.Remote_L_UD<1000 && RefereeSystem_Status==0) || (1024+Remote_RxData.Remote_Mouse_DU*3)>1050) && GM6020_MotorStatus[Gimbal_PitchMotor-0x205].Position=Pitch_GM6020PositionLowerLinit) @@ -149,29 +151,28 @@ void Gimbal_PitchControl(void) use_pitch=0.5f*Visual_Pitch; use_yaw=0.5f*Visual_Yaw; - if(use_pitch > 10 && use_pitch < -10) use_pitch=0; //防止UART干扰数据移位疯车 - if(use_yaw > 10 && use_yaw < -10) use_yaw=0; //何移位? //pitch if(GM6020_MotorStatus[Gimbal_PitchMotor-0x205].Position>Pitch_GM6020PositionUpperLinit && Visual_Pitch>0) - Gimbal_PitchAnglePositionPID.Need_Value+=(float)use_pitch-lastpitch;//修改了pitch轴自瞄的实现方式 + Gimbal_PitchAnglePositionPID.Need_Value=AttitudeAlgorithms_DegRoll-(float)use_pitch-lastpitch; if(GM6020_MotorStatus[Gimbal_PitchMotor-0x205].Position1050 && RefereeSystem_Status==0) || 1024+PC_Spin*PC_Mouse_RLSensitivity>1050 || use_yaw !=0 )//根据摇杆改变偏航 { if(PC_Spin==0) - Gimbal_YawAnglePositionPID.Need_Value-=Gimbal_LeverSpeedMapRate*Gimbal_YawPitchSpeedRate*Gimbal_YawPitchSpeedRate*0.0439453125f*((Remote_RxData.Remote_L_RL-1024)/660.0f)-(float)use_yaw; + Gimbal_YawAnglePositionPID.Need_Value-=Gimbal_LeverSpeedMapRate*Gimbal_YawPitchSpeedRate*Gimbal_YawPitchSpeedRate*0.0439453125f*((Remote_RxData.Remote_L_RL-1024)/660.0f)+(float)use_yaw; else - Gimbal_YawAnglePositionPID.Need_Value-=Gimbal_LeverSpeedMapRate*Gimbal_YawPitchSpeedRate*Gimbal_YawPitchSpeedRate*0.0439453125f*(PC_Spin*PC_Mouse_RLSensitivity/660.0f*2)-(float)use_yaw; + Gimbal_YawAnglePositionPID.Need_Value-=Gimbal_LeverSpeedMapRate*Gimbal_YawPitchSpeedRate*Gimbal_YawPitchSpeedRate*0.0439453125f*(PC_Spin*PC_Mouse_RLSensitivity/660.0f*2)+(float)use_yaw; } else if((Remote_RxData.Remote_L_RL<1000 && RefereeSystem_Status==0) || 1024+PC_Spin*PC_Mouse_RLSensitivity<1000 || use_yaw !=0) { if(PC_Spin==0) - Gimbal_YawAnglePositionPID.Need_Value+=Gimbal_LeverSpeedMapRate*Gimbal_YawPitchSpeedRate*Gimbal_YawPitchSpeedRate*0.0439453125f*((1024-Remote_RxData.Remote_L_RL)/660.0f)-(float)use_yaw; + Gimbal_YawAnglePositionPID.Need_Value+=Gimbal_LeverSpeedMapRate*Gimbal_YawPitchSpeedRate*Gimbal_YawPitchSpeedRate*0.0439453125f*((1024-Remote_RxData.Remote_L_RL)/660.0f)+(float)use_yaw; else - Gimbal_YawAnglePositionPID.Need_Value-=Gimbal_LeverSpeedMapRate*Gimbal_YawPitchSpeedRate*Gimbal_YawPitchSpeedRate*0.0439453125f*(PC_Spin*PC_Mouse_RLSensitivity/660.0f*2)-(float)use_yaw; + Gimbal_YawAnglePositionPID.Need_Value-=Gimbal_LeverSpeedMapRate*Gimbal_YawPitchSpeedRate*Gimbal_YawPitchSpeedRate*0.0439453125f*(PC_Spin*PC_Mouse_RLSensitivity/660.0f*2)+(float)use_yaw; } - //Visual_Yaw=0; + Visual_Yaw=0; use_yaw=0; //串级PID闭环Yaw角 diff --git a/云台/云台/CarBody/Visual.c b/云台/云台/CarBody/Visual.c index ca6b057..92ba8ca 100644 --- a/云台/云台/CarBody/Visual.c +++ b/云台/云台/CarBody/Visual.c @@ -10,11 +10,7 @@ #include "PID.h" #include #include -<<<<<<< HEAD #include "BMI088.h" -======= -#include ->>>>>>> a6eb3f5ed5724a064e8286c2f8cd26fa9d4816e5 uint32_t Visual_Time=0;//视觉数据send时间 uint32_t Time_Out=0;//超时时间 @@ -24,16 +20,14 @@ int yaw=0 , pitch=0; static char dataType; // 存储类型字段('r'/'b'/'u') uint8_t USART_RX_BUF[100];//视觉数据jieshou缓冲区 -extern PID_PositionInitTypedef Gimbal_PitchAnglePositionPID,Gimbal_YawAnglePositionPID,Gimbal_YawAngleSpeedPID; - - +extern PID_PositionInitTypedef Gimbal_YawAnglePositionPID,Gimbal_YawAngleSpeedPID,Gimbal_PitchAnglePositionPID,Gimbal_PitchAngleSpeedPID;//Pitch轴GM6020电机PID; +extern float BMI088_GyroZeroOffset[3],BMI088_GyroWithoutOffset[3]; int16_t Visual_GetYaw,Visual_GetPitch,Visual_GetRoll,Visual_GetDelay;//视觉数据偏航角,视觉数据俯仰角 float Visual_Yaw,Visual_Pitch; uint8_t Visual_RxHEXPacket[4],Visual_ReceiveFlag;//视觉数据接收缓冲区,视觉数据接收完成标志位 -static uint8_t pitch_need_acc = 0; /* *函数简介:视觉初始化 *参数说明:无 @@ -74,38 +68,20 @@ void Visual_SendData(void) UART2_SendByte((uint8_t)1); UART2_SendByte((uint8_t)1); */ - //UART2_Printf("%d,%d,%f,%f\n",GM6020_MotorStatus[0].Speed,GM6020_MotorStatus[0].Angle,Gimbal_YawAnglePositionPID.OUT,Gimbal_YawAngleSpeedPID.OUT); -<<<<<<< HEAD + UART2_Printf("%lld",GM6020_MotorStatus[GM6020_2-0x205].Position); + UART2_Printf(",%f",Gimbal_PitchAnglePositionPID.Need_Value); + UART2_Printf(",%f",Gimbal_PitchAngleSpeedPID.Need_Value); + UART2_Printf(",%f\n",Gimbal_PitchAngleSpeedPID.OUT); //UART2_Printf("%f,%f,%f\n",AttitudeAlgorithms_DegPitch,AttitudeAlgorithms_DegYaw,BMI088_Temperature); - if(Visual_Pitch !=0 || Visual_Yaw != 0) UART2_Printf("%f,%f\n",Visual_Pitch,Visual_Yaw); -======= - //UART2_Printf("%d,%f,%f\n",Visual_ReceiveFlag,Visual_Yaw,Visual_Pitch); ->>>>>>> a6eb3f5ed5724a064e8286c2f8cd26fa9d4816e5 + //UART2_Printf("%f,%f,%f,%f,%f,%f\n",BMI088_Gyro[0],BMI088_Gyro[1],BMI088_GyroZeroOffset[0],BMI088_GyroZeroOffset[1],BMI088_GyroWithoutOffset[0],BMI088_GyroWithoutOffset[1]); //UART2_SendByte((uint8_t)'\n'); - //*if(Visual_ReceiveFlag == 1) - //UART2_Printf("%f %f %f %f \n",Visual_Yaw,Visual_Pitch,Visual_GetRoll,Visual_GetDelay);//*0.0030518509475997f*/ + //if(Visual_ReceiveFlag == 1) + //UART2_Printf("%f %f %f %f \n",Visual_Yaw,Visual_Pitch,Visual_GetRoll,Visual_GetDelay);//*0.0030518509475997f //if(Visual_ReceiveFlag == 1) //UART2_Printf("%f %f %f %f\n",Visual_Yaw,Visual_Pitch,AttitudeAlgorithms_DegYaw);//*0.0030518509475997f - // if (abs(Gimbal_PitchAnglePositionPID.Need_Value)>=20){ - // pitch_need_acc++; - // if (pitch_need_acc >= 40) { - // pitch_need_acc = 0; - // Gimbal_PitchAnglePositionPID.Need_Value *= 0.95f; - // } - // } - - - if (Gimbal_PitchAnglePositionPID.Need_Value>=8) - { - Gimbal_PitchAnglePositionPID.Need_Value=8; - } - else if(Gimbal_PitchAnglePositionPID.Need_Value<=-22) - { - Gimbal_PitchAnglePositionPID.Need_Value=-22; - } - - UART2_Printf("%f\n",Gimbal_PitchAnglePositionPID.Need_Value); + + @@ -146,7 +122,7 @@ char Visual_Type = '\0'; // 存储类型(r/b/u) uint8_t Visual_ReceiveFlag = 0; // 接收完成标志 // 静态变量(函数内部状态) -static char Visual_RxBuffer[64]; // 接收缓冲区(足够容纳最长帧) +static char Visual_RxBuffer[32]; // 接收缓冲区(足够容纳最长帧) static uint8_t RxState = 0; // 状态机:0-等待#,1-接收数据,2-解析 static uint8_t RxIndex = 0; // 缓冲区索引 static uint32_t RxTimeoutTick = 0;// 超时计时器(毫秒) @@ -225,10 +201,8 @@ static uint32_t RxTimeoutTick = 0;// 超时计时器(毫秒) Visual_GetPitch = pitch; // 角度转换(根据实际需求调整系数) - // Visual_Yaw = -(float)yaw * 0.03051850947599f; - // Visual_Pitch = -(float)pitch * 0.03051850947599f; - Visual_Yaw = (float)yaw * 0.03051850947599f; - Visual_Pitch = (float)pitch * 0.03051850947599f; + Visual_Yaw = -(float)yaw * 0.03051850947599f; + Visual_Pitch = -(float)pitch * 0.03051850947599f; Visual_ReceiveFlag = 1; // 置位完成标志 } diff --git a/云台/云台/Control/WaveFiltering_Kalman_Filtering.c b/云台/云台/Control/WaveFiltering_Kalman_Filtering.c index bbb654d..9cd23d7 100644 --- a/云台/云台/Control/WaveFiltering_Kalman_Filtering.c +++ b/云台/云台/Control/WaveFiltering_Kalman_Filtering.c @@ -29,4 +29,4 @@ float kalmanFilter(KFP *kfp,float input) kfp->LastP = (1-kfp->Kg) * kfp->Now_P; return kfp->out; } - \ No newline at end of file + diff --git a/云台/云台/Function/AttitudeAlgorithms.c b/云台/云台/Function/AttitudeAlgorithms.c index 99c04c6..40c01b5 100644 --- a/云台/云台/Function/AttitudeAlgorithms.c +++ b/云台/云台/Function/AttitudeAlgorithms.c @@ -5,14 +5,43 @@ #include "ahrs_lib.h" #include "WaveFiltering_Kalman_Filtering.h" -KFP kfp={0.02,0,0,0,0.01,0.543};//卡尔曼滤波器结构体 - +KFP kfp_Pitch={0.02,0,0,0,0.01,0.543};//陀螺仪Pitch轴卡尔曼滤波器结构体 +KFP kfp_Yaw={0.02,0,0,0,0.01,0.543};//陀螺仪yaw轴卡尔曼滤波器结构体 +//KFP kfp_Pitch={0.02,0,0,0,0.01,0.96};//陀螺仪Pitch轴卡尔曼滤波器结构体 +//KFP kfp_Yaw={0.02,0,0,0,0.01,0.96};//陀螺仪yaw轴卡尔曼滤波器结构体 float AttitudeAlgorithms_q[4];//姿态解算四元数 float AttitudeAlgorithms_RadYaw,AttitudeAlgorithms_RadPitch,AttitudeAlgorithms_RadRoll;//弧度制角度 float AttitudeAlgorithms_DegYaw,AttitudeAlgorithms_DegPitch,AttitudeAlgorithms_DegRoll;//角度制角度 +float BMI088_GyroZeroOffset[3];//陀螺仪初始零偏 +float BMI088_GyroWithoutOffset[3];//消除零偏后的陀螺仪数据 +float fake_IST8310[3]={0,0,0}; +/* + *函数简介:BMI088清除零偏 + *参数说明:无 + *返回类型:无 + *备注:采集前100次数据取平均值消除零偏 + */ +void ZeroOffset_Calibration(void) +{ + + uint16_t BMI088_CountFlag; + for (BMI088_CountFlag=0; BMI088_CountFlag < 1000; BMI088_CountFlag++) + { + BMI088_GyroZeroOffset[0]=BMI088_GyroZeroOffset[0]+BMI088_Gyro[0]; + } + BMI088_GyroZeroOffset[0]=BMI088_GyroZeroOffset[0]/1000; + + for (BMI088_CountFlag=0; BMI088_CountFlag < 1000; BMI088_CountFlag++) + { + BMI088_GyroZeroOffset[1]=BMI088_GyroZeroOffset[1]+BMI088_Gyro[1]; + } + BMI088_GyroZeroOffset[1]=BMI088_GyroZeroOffset[1]/1000; + + +} /* *函数简介:姿态解算初始化 *参数说明:无 @@ -49,6 +78,8 @@ void AttitudeAlgorithms_Init(void) IST8310_Init();//初始化IST8310 BMI088_Init();//初始化BMI088 + + AHRS_init(AttitudeAlgorithms_q,BMI088_Accel,IST8310_MagneticField);//AHRS初始化 TIM_Cmd(TIM11,ENABLE);//启动定时器 @@ -70,7 +101,13 @@ void TIM1_TRG_COM_TIM11_IRQHandler(void) { TIM_ClearITPendingBit(TIM11,TIM_IT_Update);//清除标志位 - AHRS_update(AttitudeAlgorithms_q,0.001f,BMI088_Gyro,BMI088_Accel,IST8310_MagneticField); + BMI088_GyroWithoutOffset[0]=BMI088_Gyro[0]+BMI088_GyroZeroOffset[0]; + BMI088_GyroWithoutOffset[1]=BMI088_Gyro[1]+BMI088_GyroZeroOffset[1]; + BMI088_GyroWithoutOffset[2]=BMI088_Gyro[2]; + //debug + //AHRS_update(AttitudeAlgorithms_q,0.001f,BMI088_Gyro,BMI088_Accel,IST8310_MagneticField); + + AHRS_update(AttitudeAlgorithms_q,0.001f,BMI088_GyroWithoutOffset,BMI088_Accel,fake_IST8310); get_angle(AttitudeAlgorithms_q,&AttitudeAlgorithms_RadYaw,&AttitudeAlgorithms_RadPitch,&AttitudeAlgorithms_RadRoll); AttitudeAlgorithms_LastDegYaw=AttitudeAlgorithms_ThisDegYaw; @@ -78,8 +115,8 @@ void TIM1_TRG_COM_TIM11_IRQHandler(void) AttitudeAlgorithms_DegPitch=AttitudeAlgorithms_RadPitch*57.295779513082320876798154814105f;//转换为角度制 AttitudeAlgorithms_DegRoll=AttitudeAlgorithms_RadRoll*57.295779513082320876798154814105f;//转换为角度制 - AttitudeAlgorithms_DegPitch=kalmanFilter(&kfp,AttitudeAlgorithms_DegPitch); - AttitudeAlgorithms_DegRoll=kalmanFilter(&kfp,AttitudeAlgorithms_DegRoll); + AttitudeAlgorithms_DegPitch=kalmanFilter(&kfp_Pitch,AttitudeAlgorithms_DegPitch); + AttitudeAlgorithms_DegRoll=kalmanFilter(&kfp_Yaw,AttitudeAlgorithms_DegRoll); if(AttitudeAlgorithms_YawFirstFlag==0)//获取带圈数的角度制偏航角 diff --git a/云台/云台/Function/AttitudeAlgorithms.h b/云台/云台/Function/AttitudeAlgorithms.h index f3ce03d..94c1706 100644 --- a/云台/云台/Function/AttitudeAlgorithms.h +++ b/云台/云台/Function/AttitudeAlgorithms.h @@ -5,5 +5,6 @@ extern float AttitudeAlgorithms_RadYaw,AttitudeAlgorithms_RadPitch,AttitudeAlgor extern float AttitudeAlgorithms_DegYaw,AttitudeAlgorithms_DegPitch,AttitudeAlgorithms_DegRoll;//角度制角度 void AttitudeAlgorithms_Init(void);//姿态解算初始化 +void ZeroOffset_Calibration(void); #endif diff --git a/云台/云台/Hardware/BMI088.c b/云台/云台/Hardware/BMI088.c index 7598843..8f63837 100644 --- a/云台/云台/Hardware/BMI088.c +++ b/云台/云台/Hardware/BMI088.c @@ -343,6 +343,7 @@ void BMI088_Init(void) BMI088_SPI_AccelWriteRegister(BMI088_INT1_INT2_MAP_DATA,0x04);BMI088_Delay_us(300);//配置INT1中断映射为数据就绪中断 BMI088_SPI_GyroWriteRegister(BMI088_GYRO_RANGE,0x00);BMI088_Delay_us(300);//配置陀螺仪量程±2000°/s + //BMI088_SPI_GyroWriteRegister(BMI088_GYRO_BANDWIDTH,0x81);BMI088_Delay_us(300); BMI088_SPI_GyroWriteRegister(BMI088_GYRO_BANDWIDTH,0x82);BMI088_Delay_us(300);//配置陀螺仪滤波器带宽116Hz,1000Hz输出(写此寄存器,写入数据最高位需要为1) BMI088_SPI_GyroWriteRegister(BMI088_GYRO_LPM1,0x00);BMI088_Delay_us(300);//配置陀螺仪主电源模式为正常模式 BMI088_SPI_GyroWriteRegister(BMI088_GYRO_INT_CTRL,0x80);BMI088_Delay_us(300);//使能陀螺仪数据就绪中断 diff --git a/云台/云台/Objects/Project.axf b/云台/云台/Objects/Project.axf index 2e53ffdae5febf46c8929d28ccbc5ad74ae59a7a..5c593148411e6ef5106cc86e5fd7173e68b21702 100644 GIT binary patch delta 74061 zcmc${eS8!}@&`P%o0rWJ!sZ3?zHDBA5ME3myo!)FLP8RZceK$l+ObO^D72`5Ul6Q(^lSoRCEK(O~br;FDgCx^m@+8yy zLnYJ3Y{~R_sAT$gxnz=V_}n`|G7ama;`fh}OnWD8e5&Wh&6(!tNs{SxF!`xu<5RKL z{nJ$FlJ?6v`gM3Rig?px$+S`)Porp!ype|Z^}bs&z5E}kZnb=Zx*PUSlz*k4{fiBf zt!BSZmQPc_mHKmrrzvbit5?}}-^1sc9>}^}H|x6}rG%E#K26E3^-p^lyuA0_E16Ep z&zo{-kNlhIVLDQOpI<%=i)uf7-teI1uw{S03x)^xTufctbg>NA9P^%w*=Fyir~fNo z#h_@?DiX?eietKJ%Gm%r^C zOh3xMb&fN1zAi@utfB^aTRd$NdzrE6)Ak7YNO9L&j7@9W4NVWXNli0ae8&3Z_-0>k zK7djN(2i{Dei$ldQ|c*`WIG9U_TbmDUpi73!@ORWuXpK1PsqJ2cl7Rg9c66Brda%X z;n#{^lhN2T9KWl*jZNM77w`c2J)R3y}`t*>9bZj zD5x*3mPZ9e(=GC}pioMd7YFqqtNcVzIE|9`2gQ(7|7DPoyzjo|-88cPo8V}olX6?g z6Vxa_-gTbi#p{&NdLpx_j=EL1k=iEkQcMKW&j3p?p-62K*se%z7L-9q zt<@;IAiY6Qc1Fq}ux6z06*v=8iv^BiEiuMyYO=K%vyFzPTKR!)J@QLLmRFO5nE5m( z^E`p?oyE)xoy^mm%tt$!4-q(T(A_MzcI#IXDPXP`bF>ML!ANxxcqzt$bXO-wFM;g@ zoXN@YN;{i|E$;<&pScEgn_AoDyF+{CpAlKQy5GV{4KZws27y=A{Q_8uVOzW-uxyL> z1&(d;y1=ozN90SPJ-Xa^6@CDJm~}M<&73Cp2pjKvPb=;6YMLvr2#X%=->UlBnU+p_ zq{A2lQYC*ws%5`d7R7WziH4S$d(GKNEg{m%SEN`UVDjN4Uicl?YHXB*pXSKlg!P~_ z**km~y(W(e?;1I`&C)m|dsxoKR>@*-NtP(V>%{g~DzgktHn}?dWjZ8xkLc%pktAD_ zJU$|l*30uEG7QuvzY_6JBKgtCo7Bwu_ambzA_zLJ_AxdEu&$`fl@_&5zqh;+Z6(?) zcejRz7hF%Xt#9#?Bz${Igl`{-b{U#7>c?Aq`TAXeEIY1?^2#1E)zx?H`ET;BLznth z_D<+!s=mt3IlNV_>S7zi&AAb>0`c42!VSf4(zTU)uAyoEmBC;x2@yugh%`y-TMW`1 z)Gq!CdLL;2*+NYN>Yqp`HyW zUlQLhv|G^c6Z|Aw6|OzFF5?<%mTb#$9hJkAZ;n3EPPQI7rW*goZ5Mi&W3%fnNM@_} zmYNRA3zDM^Kex#nlDiqcZj*N<_jL5X$~;AdVFk8^)cE2%%oD$(neTDN;bSrK7_;rd z4D$?Vl-|DW!fg@XTqrfaa#1o*2PV0_8L1<mctBn#ScJ?Xb3Pyg$j1o087VsoWQ${=xG2{fm}i{jdIH*n zaL*9Ym6jrL&V%2i-edG-}!HSyI{U?{dRRM|X`rieF3|O};Hs z)9lvk%}Tq})Y_s>pI#4cyD$&aX6o8)7v`Fq#BU|TTjpd-OAY9{+b&d?X9?%3$UeF{ z_1B2B)#-+_Gmx9Tx7?Avr`2DQ{+%jGztxrP`Rz_e(CO*fslV^0hM)Z7B-@&Z&1rt8 zCuVPehkkQmvN`EunVG#czOfL@nBH)DJXqQHj_bfl6%%+iHyeDCQh$GJ;g*P+OOj+d zouTo{0xz4{!OT*#r8^A?#)gsEsmm#0(uq_-@;e&T1`@8@hz^+HqBbeIngb-;`w<(` z0#6SRRQoR;HD9`Dx#D*=S-?pMDUuLc^bn;rn|-r&vtu7~K+ZH6VX0t`wv%%i{+>Kr7^b z4DRJviD8C2yygxDw5Nhj|~=XPf$-sTExIJ2WGYYN*OiUDI%IE*Nfy2Qh;Kf&zt@j}pP7K=5$r zOm1t;gJ{(eb45+EolMo5jB%?;j;ki0rK>g3Dl)QRxTwf5a68(eBEy9;Lo_9Z2qpSE zw3^sNO>B*QoI>4e@(o6*x{J05u1Ptro*I*$f=P4-Yizp^XO7eS&1Q}isSrUQ44+wa zB?##N4Ii03eot#y2gm9PqVg*tIU7NA7Vn9kfJoj#i;*1wc~6H$$PHe&%DmkTmO4aF^w$ zRlYF#!Or)$>xHj2|0Lg+l|k9^`&qLMA?@`8#-x+MVw9I;*BI*Bg30Zays>F_l@loGalKM@`a*a^rqak zI3xVQt5WQ+oT0!rA!Zwl-*2xB&X$^TOGACx3HCtB zc2$10cx2?pE69xL0>qE7VQ2h)iC>1lkh@Iim&+<7lo?W49VtY#z>$EQE)cclij>gW z&?(0s>7G}l7&Cq+UXhNN@LP+#D<^_typfKF8bFWp6DD&CWt;i9#}#!)qroFAq#*dgi;$W81P-k-?@2XDQnw>Jiu3*hh1ejKPLxW z^tmfcCz*2vr)-h_=0XmSst&|iJm{*U-ZvLA#Za3eaO&*Jkr~goqXh02QTP@xy>vyL zZ-)uYaA3~C*vxAv`tj!1ZxZ;Mv}%-Lz8L5nWjkRGZum*E6xmAv_`# zvrSm`QK%(4AlBWDXu6|Vb05cbDqCBGbBx6c@eT01b+}gJ+KFpBu5bHSq;JMA&$lJG zYH;nrB}pk6yTtFlj7@U#r6pxleefcFE=iTE0l6kPFZI zRc@O+Dmu578m~3mu8_?a`RXWe2)4oPkEpGHel70YP;TCCHI-yquYnArr3a( zC^%ri6;rHVOgK`0SLCE=vGVGvVKhVDF*Teb7Z<;pDyS=&ndJoUjzm)@!z3>qnOrk>UGxc}w{VjvBFv6q$44 zC;yDttcdN`n|HQF2%i*lVAhr9buDSR&O8X$U|e%LNj5m8vBX}A{I z7yzN(2?jXnk!vB1WikSo*N3lNZFXps<=5Jp7vXwY_Ny2|FUe^Yk+e;oR#6b+cTEjK!m`?%Z)(-k zZOv!l{48UV{82@CpRpaZ9M(b05goMb1Nos2$>!e}fnY~6N93HqH;Te$dY0ca$B2!ylOmE&~!bCvV0q**dDpI ztYpxSxYFAE)>TWqU!&C5{FOOYife7Yw?3}sWh1><|JkB72C~;rTQb35uwRk4-<>Fb zz4R%Abgz8(GP~ieR=HtWx0~}@usq!IIcm!*k=EwXEz2&}0XAsxEiJgdB*)zOCE4ZHJ98ZJ_4OBwz)R+1g1T(Wo{N>{mgWb5_Y(N`k=Jxl$KM6Kw?^;6 zw>JOYvL3BYE6pFnNlUJH+d|RDLbtay zFTLKg@oMu|?N^!?T)onK_-cFeo2?kf=h*k6)67Y=b_Sg(OPXUjNH%};;7;f+*?T3M zAJXm3FM{iTTD@(?Fp#DGdd7aG`PTL?v7bBwzEVBcETzhm?;cIX^0vDdQA>TWV~|&D zKi(6^h0e=?j)WDzY1Jyp#1Ti|&XP2>TE6|>RUuuv#f|VcbQ%>#3B8~DDf1$(Uz>!I80^B(%n5dAi84x9l^ zTJVa82)`k?>X6tsQ8JatZ$25^H7Z{+VZf5Gn2@re%ud{LxLw}3IkkS{$FnwEX5WSXNS zF|it!xiVEPU{2d`adUdf;g7|QjxBT9hN=EpE}7WLbX`sX*4u_<4+lNV*4ySaz+<^> z0`rjKw$ZhiCBO7oq_-EaR(bEHV7c+JRPS>okS5dCU@RntDUs2urb?!_P$n(d@erj2 zFEvaLcIfW5R9>KjVyAbF5{a(xjM6=@AxA=|QYCN=X33Y3SI6Im#<6n1=7{iaVrc7w0*Zthha4(^WgpOt5vetdWVF{OnI}PiC9o%qi)}zDZ0Z$DG zuYpR#|Da-Tv%(R3SYeTSw=i^qR=8!1{MV-v4J{e+>8EZtlw~kP%jE^zx<{Wvk)@)@ zogLa{<|s`+H1nI=U|`%+%#_DJ6(U~(bY>>&jOxjC+r8xY?IGTKDkM{}sPHa%{Ps}q z^PpHQ;7#&MzzKlW{I&Al?V%hfZhxS=1g_jw(}Gon*}+GkZ<=OFruhiIN_WIWN8#@0 zd|?%pMz`Scq3jrJ;wX9Vj?nTF3^U_Uo_TBsk8Hqf42H3nE~Nn0I}O7lZ-Ao!>m8WO zCt*DOK`Za&ElG#u-cJu1uAB7eK*@B-rB!D}_TPlr-px%KHt@6C3}G=PU{Z|=>Kocxza?-Jlf$bsk}cBD+A z%xZb%UqaI^YNLT}w0IO@7ij^$7U{I$<*U5zGv1G`rm3|gcsVq(X>{x4Z~qeKy$>GR zpSgN(h1;8W3UL&}6*IxfqERN?Etwud+81_YGtPk-oEI>%#!T=T4nPRYxj%{6$7pxcHGKNelE@+Rml^d zn@=0$cK~ENIq#$#^L(VB-y^3z z9~sCv!&29re_WpTd?fT<^L#IS?|nYBB89azN~WIR!p+6j+64*j@VR-eUcvdNZh$`k z3^va44H`UD@zIA0es_49pPfY++Li|+AalbbAvYn=KAQ`9|FwUt96{byH_}uy3J2- zL3OlJwSIi}O@ZN;M6ehaH>DyDw-+Q#o6 z-lP3UnUy46yHApW{^MW&w>@8Y)3fqJuiotVs}KFnCp6HKh}N<%nvpzM3VPFr4lpW8 zMGcjLPWsS6pKi65VT@U_Xy5=T=m#Hq-6ynGEw^M5muvN*LyQvTmMlU!e_uKbOweC_ zP-+Gjv-;8zpRTo#!IVioNGc$C*l$Te2ACPW#eFtk`m2`;x^% zvGcz4391CK9kd$*lcU2Rx(err)6f8CKWHMsmQFD zB?TQc(KR1q;t#?8)(kgGWN7rTgeWTiaxh}hQ9oMcYfRi9VzCzIXathAI8(2N7t(ne z-h^~Er{$5aMGqn~ZA8fjx>~G-u9AgrB@5k37HTCoyw*Lc$V^Y7VJc@|7w17zP>R1XZo8N9bXd?^W{PB` zDywQM78X{_u3Us)DQG+hj(SPNtQ|S z>xZn+0UZZS3Nu_x9`L7c!Q}bKq3B$y8%x%rNyUXZV>Hmqigr&PpgXon1@p8%3EA0& zL-kCHMms>|6r$0ppd&6!CDwAIG~!H^*rpL{V7yAJK?&B(0$oU7PHQ~S6${nkDUv-i z&8=eJ`%^P2_Io7UC^MrVbF`G;98c5|Ue+{wdUDnj6*4h2KtS^K!`&Q*JJSm$L*l0B zzV3$6gu%Eux?q#bP5rI;PBg^o24(Nn(_u(Y(6~fdGbR-k7wYb8V=!lm>hrUCB+`e6 z1k^1fKgZQ-odf8w$(ZX7)M6lgkmY^4hzNL{;G+=7T_8{5Ts>zf13Bu*YKR-b zP+F3%bgByKN@of%SRpb5iCuyn>B! z=LLCTR>o+Zev?sDFe}Z8*=#g6I5{{OAZi>923u9~F%vXjF~+@ZG}iS}1%8A%Soi-S zQc!KM!x(qWXtfvHi?wkP1`S}is7MV%U{L`V7pV;elWMTqQpUJ-dcHcC8sj$T1Uh1q zhEQGG7`Iu4xhpu(_n@EL1Nw#_b9)ewv`xX`h?The<(MA;!4f z0agr!>3SpAVM5DKE4HhHIBF!|LWWiOt5rm1p043KwS)_?K_GPLn*>y#^WQ8$Ekr_X z1el+dUZ6MOc7ZA6$y}?B&G>L4t6w6KTL6-bkjbknYA5J1Sm+ub(-4I^;*F`$k#Q^ublK=8m519O4S>#V!y_11$rwvzD@8fOiheAu7NDj6CYyu90WD(r)no zp|8#OkG?!A!#3%H+AdeW8{x?7Mz13OiGESWhx&285Auak@9T#3iDb_z%FifGFP}d* zd9-VEUfGR~pw#;QVOB(31GoivF;k=`y{z{9(fJzQWVNRi7i$1wU}r3g){;%{buJWR zv74j;E!ZPlH;vtnZkU#-e&gv3^nOxd^wr<7~#$(#Uj3Y7OYIhW6A2M00Da2 zNkNB^g&-&&=3{&Ra;#h6nlL&85wD~qz%}83@5y(ajP`yHweXVPJQUKiAWdM!M6ENz za)OukhB&ho*#o%H_Rqq+xz6v&M?VYmDN;FoE0QAr!}p`9Tp8nRfNv?ia>`aGP$LQ!V<1d3mT<{(EM8U`OjCi9mShcL=vMj3T zAIYopbZ5-d*LdW=>EPulpi6Sa=P6caAUf0)o{vCqt7;ntbyKYwc6|WJ#4=l?!gWJz+}zH)v3@SoFSCOn&BM8usm|s0Lxk@O_cEo z*>=3E!xF_oRYsOJ+H#cv=naH*34n2$CP~I`hN_lwn{44>#o&=*+UNJTs z^2(Q0EOa&M?nrtcwc9rgnyWk=y!WD;0*g=kq(T?@mMHoRJS_Po4|EZ4%( zl?GFNg8}}Kot|8Xg^y}O3&R6ka0tT#0edllJmjO;P&Tzqtj}Cz@y374H6L~DUlz@F zVV0wvwh$bhV2WUUZVTyS zQPl45!0Ir4J6ZKclbmZ)-jq`t5({D7Tj249`Y>*>PMV+>3xW6N<)mu`!mMd|h0fI# zW_Lh(p3OQ*L;$c_JgV)`ieO6)i%*?hUu+`j=_I7}c_0PpB3&13Y=E(<;s|STnzNh1 z1z5b3FjG~)31>UU@*$E#G@BtV&zhcV*Eg%|3?yr;iy0W80VNC!)PSiBq-a1H1A{bR zCIf>t01l9AAEE(O3=GwP8f&^E*FH>xYB?)e*I}uEbS0JxNYz5P2$QOM2=`!6)dUeW z31U?j1k@_1Y9suDiB)}!ajBcsY*i%$(<-Rygy55%rr6DC61vl0I~x8i7duNDI!dym z2b88)RnM5~8m^Yd(A%Bi#9OkslN3zSofFdYoZ~b$gbK&#zMPS-Z9R!_%r3z5@J4Kv zjxMreWMv>k00UGYOaK@(I44Q~h=LeEkX)RTKU%L2Hg@txk5dI=JlW99@BWSM!ShP(5En--7_q7T~QQ7O4%eVqWL<1@bZZIvpHCQHCCtkKnWxC8uKSXXjvknJ#|G zI=?LVg_fN?+?DTag|WQS)Clri`2+RxDT(ah#=!bcI&V z8W==>Vtqtl8lTQ#HG_ZX18OY$$d?>-azrXBDXi{0rdVyvTfatuH0wt+~lMJ^^VR-`AQuK*uK`t>aUyxy~J>p-5|Z z2llmcCORdgGN2d91mKjB&48Yhhgbl6mGEAD$hSK&`mm3Vq0tP`DqP~k4Ad}Ftqz?? zodGyL(J`(GNyoTmB^~3MngmAIhGP}zr>jz{g1R0{RZu9wch{Dyu&RNWp+sqY62jmt zV0{+C93^0V8p3&VMA(zwsB0=RwidxP2s<~t ztJKt6EF<-a#pd*0{OPXYANHmr(Bb!D zoAKWw8yg5L;WpWEI`Wq3iF6FP`zN@2{U7))X3%kNi>yZy>9a1z`hT4Mg=o9{{+X3l zPdBWm8gZyCO1|@K562rsk%q*rMr==4RLm@$SYEZb0ylrLc$BQ;s_$?|cv(l!RkKV; zm14AFGJj4FP}3GpS5@DkLb!=Bw{&rh3WQm6wG{eHrHVt3DVnJ!Fs$%tT`?K zGn@;+wmbJ$Cc>WkgkqO4?79OK(&PnS$2vZcXn-McyLaaQ_j(mAo>!{Z7`Le^s+^Fh znX{g_LF1|?YRC0-Ktohdt0;y8t)2<)_3Z0j&m{MHipr_=R4e8bhC2#+Js~0$#~N@{ z4U2uWC_Y~1jOzKd3#+T-hre0v@YMX*a4P2vPPuq_dCjV-F0YmBxmnn{_(Y;WL*kUkW;!Ja$5I8PP_b&A*UZQp!y-FR6pdD=7*eg`XK{O zKV-n^hYV0Aww=dWXS1<45)s% zeJ+x!A2L$)LryvUkO8M3GT`(>1~fn9q?;cy=<-8`QsH~4^0a?B#(DC&8l1p+yN|oi zv*np_PLpORPUv8|KDrf_rGgxEv}eXQ?U>yY8F=D{=V2C%tj5G zB>9VO}1SUg@oE?)eOXNe^8>XU63A(fb=biy5S_ET|WDBokwF< zfzPTUNlM%!Z~S*3N>Ut=lxa&M_UZg(IRi3Ei!#$n?UnO!7DDJ2BE?#^$}#6dI|;+H zv87XT+W7}Pia3Ll{B@-eaqN)`fA!rh(O6^RYx4dJHRf`nQZYiVlKWj;8E8AU zborAYr~MYKEVWXV$KzpqK(^&}$oP*z3GYs)Sjad-;s&LqJ3ZEEEzum|Nm5^#F0b)e zxx9bjT;6hUk>xio-(?1mn?$kQP++Y`*?Tsk+bw_#U!q5TpXmFdM5%`0J@T~Qhxz&u z6!0MvoHzr50UWR2bG3E%I?$d zExJG7waP57EyuY7vkRE8717WmFhk`!p+@7SP2 zaFpH3B_jnZVFp^z*V$ulIC`0lruohfC4_>)zjiC{80el%PbJDw;t-m_%geiRey!w1 zrWtd}7rI7h_OBPP9NdQSTRKvgpwAO0qgMU`*w_+sdmjc-79B zlQw^LRfXsucFb)Wx$z%{pjRYxfCcIKIY~o@mX2AruzE_x!s>!qvldk#q_Pu{vHcH- zCRNtXLC~esEoQo1MpZ+j8J0qS!RIL3YRwQ&mEMXD_6DSvq6t5hf zWbjvh^P*WN!#4-zlhG;u9(AQBvb)6!doi3zfo@z23CdV-UIl<7Xod z8M~%N5rm!)L8#&iLJy-0IfGCJv>=p|Y7ojP5rlF=1fiS|K`0vTm~z&KwhZu8r6yFV z%sm#4wPX)u{r4${eaSJ*Q#l;h77y$=)sM9d9>jh)Iz`kzQ~5TOx++hZ$a9ylj38;w zDs+k6?p?zC7YSX0nXFR2^&`*I-N|3Pq@k-({AG3S!i0ypYonOE#)-LWr#g2fs&m&* zJa?Jj(C4l*%8JhP@OV!ZtYH=0+sF781?`d0-;E!Ngh4W%)Dvg51d8lZCIrw**A%N< z3ZURFhhp9P=vF1L3q9y@(mFSqq&yxfTK|6>NMTJ3qz~ONkZw>1()H>27r(U8fDCzus72HV>qotolH@N0O)itDABrh~^CP)G#=lFXi>Yitk0T{5BXK?&}); z_9*M|AXAE`qN@5rMp?Mj)3(1hQX^ zK+XtlIz}L4JVqdXw`mc`QRSU*T9xXlk?=A$>Foh-1EcY86!Z*F9_WGMp#U-G+Lb3G z=pK)?IDS<1zr*_+fXVx-PQSxO?MxbPT&6(8u8P+iDe%(0|&QsV=#%m=)X`KwsS z9O8wHX@pluTQNyax^xc5YK;^!RUq}`JI_0OTo zM}28dq9^7hV23cWdif_p8Ur-y^J2t|#DMIg{cQlA@&wagwP7-&*2b~nr$?5Pghu~aR=QWdNI zNdCsd$Qm24*rS{nNNYVdTgnUA(ZQ-Q*79SnyTFfo8LB)6#hdqH=vcyqBJenAtfkL5 z{;uLjOYza_yuI4bN7*pkFw3Lu8=^@Xfn^_zh6p>>@_GS(H`w{RU_5_+jBozzV%rBR zC4*_6#|2GeDoF=caj5{fq4>P5&=6WX(v#haF<7j_V4()(wLvd(F9_Nzk=_c-#9v7p zK`)6XEDtFU4yEv6{IKPr72=f$Qssih*af!y42gGwxN@0f`5Nh|oUT#R=nYckLQX4Z zhtlcrzabbn-x-f6c9Be*IZtJQ?1o_!GWROohEp`X zqs$vl-SM-2I7QM@<@w=s(AytRU4E*}zM0~ti{vu(QDCR8l7v@HIhEon+Zk4MW^e$& zZVwm>!KVR*rwH{+%d1cYUZ+MN+xQymaPDS`?#?LIQ>Cg{xR7@;^U1K$Zv35z;z!U2 zK4-vZ++E7$5ftN4(~@Z&OVtf1N$+CvaZ_R!gPP%3skIE_E`w;JDgcXSFDzeDS-Y%M zh%8-#<*bDpz~`gm$8T9AtafA0!*Bg|%M>%1YL!u*x`jfAaRo+z;S^EESQ1~s;4WC9qqtnyLb-SgbxY*pmr<1|Y1xHErHlvS3?l@;S>h3;(z#6EeU`IFH&(2F^<{0$d))!DwQ%RgI@QZgZ4hDgl1CoG?B!hf!72(ZS|Hf(vwwh+rnw= zO|j=K*;9(-9@rP<~4XI5czl5`3@-z+|= zR&KK}UWpq;pD0<`)Dy0LOvoGKNgh9r&#zJ`1GiBhV7=s1G%>>^OwW!oxydT<#EhTy z=eHH?VrD0Zru$4-R6e^Rs~m%|i>FSNr1JbMOs`jE)qC%0nRZPjR!Qr^p!NGE8}_~E93vSK{lv-tMJXRtfJNN#fBQhu~u z+=dJ1A&=iO2V~CtnH5Xbdvo5#!OHp~3J>O&(3R-Y#66bhl!HYyAoyM5HE4Jq8cwOL zo?C%Cpf4-!MKmzrIVlNhXrKRKIDQpL71*2%P@AHkUa=w!UZP=1Ct2=fdQ3FNSWnH% z1Ih2WQo4ZWdqh2To@(Rj+54RQN|e?KbdQ_sJ~okV4!cI|w#Ak6DoP7*>OidZyp57U z`Dr3WJMd;xqLNwLa-NfcEauV$%^!9}nj z@-`;8W5pc;72nq#U$``Tbcwxu#$4PBu-r0{1tp1m<&7c=>*a04yG$TfICW`ZNoo3o zEXi`~1g7(XKZyZAif4ZgR`yJ$CH*|L&Fbk0wMr$^cI@J7iOJ&kVuvqzy&>ldz6qFt1|%>{^6X zyb_rTgxdmxQG7U*i`C$ zvyR)$N~psl>x5XhqfQ?(f_p_JmNeod=mF)*R7zBCE1`8B&9NEMKERa_42ksy8sx|3 z2vr=r{LJa)GA0bb-@}bdi6o%J6dPLQR|wQKpwu=UaZ&Sq?2N zF2Ah`1M^3Mg@iQ*)u^JhjI(OSN@NK8G)T(G3R>xLyJ|PyKgI8$;ungI`h;kk!AHAY zm|wl5LOZS{kxurV)9%Mq#vTJsenV9mURX7i86*B!`E3dswmZl_~#^_ z4XX`L+N6MzDjaLO0c-0fuwr&#$~8=hyIzPm)Jl5n_gi7D4{!|)MI}E}dd;S2|E+3O zP+Ds|k8|WP*trC?+0LagNA}h&q|T9g_8})jlhS)mhdJ__r4-er6feoi$d)Xxl(56^ zQ!dS+9wGb}1ysW(5Y^&2ut7|k?;{or#%DXRL-4+jgaG$B`F+XT4m+@ z8a|+SM7o5$>8>dGh~%@O4ow>;&7r9^nTrHX2`6xhl`~gzyQ{`#Z9Sjp;+M^J!!mDQ zgqxzHt`kl1!TtVH{Ww}idDRSwbmG2B-8>2nyLSp^R#p=SYqj%?JEgSF2*UTnKBwkW ztw(R;ci#2Km5Hsg^~mi`=}jHxGq*dX=TVJ^=F>p{#kI79 z>@~`_3#hwU&)lbq?apGqWdVE$+vytb1H+%oO5mNCsirNWyL)+R)2LwxX!$B^S z;=hRcnRVpl044BQxLDMkxQWGVJjNEhN;ZMbCT8;!QJ|0V4Gg6u)sjz;o*9C`onucbcPknkPe-i#rk%OdI)R!~zhU#vXExfO5YULK(&X@f#{(8C^&X7KwY z*Op*grn`IVJ#3`uO41UHO?p1BGn9rUuu#ns^7r0{A#S^}atYzpiAe6`WTPzOi8aAPZN0TIAhx@O%Qf)BFHUkaxQBEv@G3%c4^EQ*7TdZ8X1OM4)oThYH zN)Z7EZpG2BjdPeiHZIln%UMcyc^m-wMVd=+owGqoD-J{ZxQ+*vVl=6|4JSAGoGa;+ zwWxN9cAO}qdhz^P)xsRs5pQE7y2Cf3D15w3S&Qe-KzU`%(hi#hJd4Du2bc6&gx|tX zH5gY*c@3jYEj5aL8AU4Hmyx&kE?9N73O8Ie`S=7eVjUx5MBWBYhA9s%Ba?tPsc_RC zKR=arvx@NF>t|9CTLr>_4cM+_JVWgfzVpXNr7TuKa`Z-$jt8YIy#&>9K{cyR`$ic1+yWlCwX(Dg#9`|^31Mvpb$>`59XdpyKgME~h*GwUSq-WqCB>5Ai z&|S3N<3Qfj3ol7czzYmx!R86&-Mc6bZt2-~OiJ?d4##OeT27%p%i~abt@877ij6)7 zxs`m>jF&W*7*K=lugkFFP zWw?WS=C1m0Ss(syS(n^oeXYqlsidu@RUWNghnL>&!d2G;cKb}JtfRdXzgff=7rk{_V(Kppp;rrUAB!sC`Ezh{}P(#R~Z5XeUQ?iJ<4ltK3d0F>C04k1oh>g_iIN^9{`Hl=96QvIgn6 zOqBy~vN8{k_Akbprps{oCxQnyS;zUXO9-2n7Gz~fq!Y~482%4_{O0PV%#-;YCrWqc zH%=lwf0eGEzjES1y5Hl;UVcNi9sCY3zx4)+a^t7kOsCixr2KLRS@qf4-)*)&qx`mx z?sp4m9$Qc2;6f&a9wvuJA72i+SsA!F)(5g5Fwi6)<=g9~u02W5cpH@vqxAQKaWfU$ zB-$uFu!7@*uO6c4PT%YGl*;~GSQ!NUitAWk45j}x&`>|6ZIxfBL*4t)b5mGI#^Qww zE9Tb@QnxPyu(H=tc*2@@G@IP0@JKbIK6OJ4RZ;tZx?xhd3#g8hLJu)3*xhD@9iY)? zg@=&F=YXeZ?GNMLr?hRP_~^b| z6`u804wIyE2Gm*a95{_rMm|C|nkkrg>=N7i;a%SSF|32@$nTYKnff?tnbE}Rs#;8Q zc$S*2F%Fv;Itn*;8I|OQ!V}Ys3UWiGsHn@}b%V`b2dbmZI+`pDoW2E(ZnKY(=Fb7; ztlYsIOE*z`m$SlX{I@tL1_ym<6FEF??zF&Pz8-@GWRmKjA7gW8`!jy<^Lgg0oPRKhQA6nYuwZUQO}h^l?DGq zNI0~T1G^g7r9p{#>Q4fyeR%i#r?|Ec1lv!PN1veXoov|4Qa@43g56k-UD!f39%qxI zSY>X(|0qZ);P8ZjHj$4OqL<>1i*P;CX;Q%%+qq9}r3Cs&d3US0k?bZU-P0t>f7I|P z{=i`=3wg>w`A!*X{q_7Zwf=^omCDyoQiQ>8u2{x(a!m}F%U}^m4d&k$LiJk=Y+c+EEHG%es;Qj4br)inj#ZK7GTm9yJv zmD`|<#bdbg=nm@YYn#WN<-D?Y2Su4aoy&liQTcoa4K;iPQ$9`IJ3k2={<1)fRbK2L z_j(+wYOy}LhAU+VbX|q#6})_ueWhjrV=77x}Tq&4gMqML%7_7?g@v|x)?jk>GR6gHDy_DF)*skH) zcx00VjSk`3%xqAbR)dey{~lgZ=sA})t%`-Cc^n?fV3N0C?-pkCg@I0xkGAQc4i9=h zHo$mz9I6hFwUdkNIpWS!QSHLTGt}p4f5V`OCGli#A};KfRZ*>Uc@b|}z@X9>zarW+ zZrtpEf2ke8<8*qa8_o*i1kLJOFrD77Sa#D*l&Pd*Y>k{1?!Lh-7LH`cpC@8h&eafZ zeYML=6zUs-Q=FsPN$K|z?uD%qj6&Z6BWN z3dI@)zwU;JKTvE7v1a)Ev2vqchH{ysROP0 z_o!Y7+7-JHrUqvDqf)bnqI)i9P8j9HHpwFZI*f2wL-WU^?A=56x|ywDFZDCbU8vl> zmtqV{7AiaT(rUxXg-V}SuzXmzP|1CTM&nV&jjvE>ugME}+&d}m)Vu9nNtWA0Mk8nN zBJ0E}bZ@?=?q7$6+HPFgX;2-DtosZ;coEc)4nv7fvj?@{PlI6T(Hi_0NAstn=P}Dq zl$w1MX4Y{H5lYQ{n5vJyj6mY0eN^pngAxatO}`i7zk$-hH(HE8$=HcKB-ZLU@c?ThjD}f7Rx$@;Jw8G;k&VS$Z zJFd4gpv0#{k2;kQ2XS!7Mw@PR!l5ejsmjJz>0XbIZty=wZ2{YqOtAghfX!D;RdpE9 zvr8hyFu+kl-QUomU#L}{{2PUvDypIS#$68O(j64Vi%Rb1p&UDC-8>uZj=JIFWm1mT z)6&_Vn!iT3(NeY@b}Lh1Ja6Mv;Zz;+5JKmQJpQ*_>R3*)j9$jY>J&OiVZJKxf?_*J zsp{~$_#jogdHMB&6gns~3zf%cTI`d)_|7{yctxnOJPe!PxHiF#mBrQb(Po$Kl%!Wx zvtqLo6M0u<$w8X$(YSmBuof(KG5@Uw>ZlB`7oF;bAC&T+o3o>pP zQok3O#loZqlohXc=(CZB@TbDN?_vYIA-RR`U6tX7X|Bf&7yc8miMWc#K+nGu)sqkQ zZb}P946kSU<8F@nIm#;nm8HiWiK$?BJFe}_@-4!1BpORtR?q9Ja{Rxr3Qq^@7nP{z`cvBLDO!q#tz!)S-Umu&bXSwTJ3RUeHI7T-^I0hET+MGmB7DKaP~yZ)jIw>6y%2~7?&4~G=gXI zU;}N${2xl3#6u|jAj$?!iSeouZidh)QXte_iK_qCO1KS~N$*kUgmWwtH|s{IGArjV zDO#`)i#=igJy428Z(_0Y`Dhv2|F}n?{D*=##;Z2Go21lZ*!oJ%gWLX~Ogl#1qb@T; z*ZKI0<#<#Ew@C46R116bSANg}=LJohm|LSV`F)BGk3!MPIhC_O98iL z4)_?&j6;!Fh$wwNrtV$OLxS_Z9@)5kanABjrEP}MKftw9WfS@d*o2^@lTB{`_=G9z z-~SV(^PuoOxLUww2+dAmcKjy#mhy==m9?TGb9p}`;1XBJC z754BL!R$hjSa?Gt^ceLw4iEWlEx6R_L(k5O5z|M8zDi`G8{(Go+ti?jv(yt!HxMkD z!2~6WWjS@#4iTtPj+CdgeoA+{Im{!U(LL4(v;~eUbC^@3DK#J`GY@|PC0Y8fPzIb7 zTVM2pc(a&T<(Dt1+ihNPkcNNR!qMo3wH>7Xz@gz!Hw*(s!eu23mYZ{JBx)j1_afDQ^Oda#)G^2U*QJE;UXxl~DI7p{}7WPAsG8 zHsz6jVDD75xW_HoY&^~KG_F%%KI%CGR=Pgwo4F<}tgNkY{XD~PW6|k#JU#32)focHk z_K<-IKXnuOzAh9`ehaZ4?-O&?X5q@4gz9ZHkV1Z{i8aqjn=u#R16M?+4C~=))!|CX z*VwsfQ8s=5 z_6znEuYd6;cNh3Cq1hX}N+1e%7Z&Q0YO8A`(sTEzV*J^lUqB2#--#-C9C2BFEC2DxLL>5y77HXS^qEUN9TpUqdaX1)S)@q;WmTY zs0&2>bX#PmNu+1)Q`v^IC4Pk^^xFa_HLIvHJg$z|C7IQEO-6TJMn;}QdZtC$_&tRS z5#xHfL?j{YYSMB~)!>nqjhi|}ZPHGf2-ocgouZ1F>pOM#0O+t&7pvU;HTM5L`GMwn zT$mJ3!z~|N_-lB#N4IuLqgET}tkGuz9t|5%YF~)=e_^4b6K{v4IkT!4&cmbdLAyCn zooM_?yh3D#G#T5uI0J)6RvWRWv)VDad?B7&@3P}=tWq|va)|olG~^pU(A^%D+6;wW z!L|HGrP_#|)s^Bds>+f`FK~|Sp&_A|H380kP2}zYJAL5m1T=pXnF;a zzu?4e9EgQ@(AY z2R+7JUS$ZUah)oKlpO|orjw5nz1%OXKj}F~S%!Gn4I3uQ(Y=0iB1&_L)otT{D!*K! zUQ{Avd9=+e$axJ{b{U4^Q_7iNDLi#SCrQ%rCY%-OAZer%;gr+|D7Vdu1X-h&BwV&97NN_e+23`T>Nm2am^LFI zJ|}r>;UsJgL4t31g}=-gwx=GyaLugwzmw1cNuWG4h9C)8^tH#Wl7I(swEd^49rW_Y zS7qoTzhDsD_AJ8cV;Z1Ozcmq~>l^%OhbrcQWfk*LWaMeeOvEG)ds4jR^vGhiPYO&C zhIYEj9|aYscX;P3W;{Bd%Y0ERlN${cl@%Zbb`Ia|l=REEh&WZ!1Mlu?CwTZAT+K}^ z9aF<|O7ySw`OK48PqHkQRTTL>wyZ#_Bd;k-BZnf;KTLBKt{wEM^&pYiS{p;=?G3mU z34*IeJ&5FIjA+AS$_kQd=s|o(P>|=D`J1V0sp#vqx*#;nr~CrjG~9@uh5n?NPyg2( z6TW%|&9)2pc$~ZTyvKC%={L<0W%gSo{V+(v_sTHD9^mgtaMg~?K=2&DT006Rs5q8J^JH|UUXEdZ))Y?;2^Fm^tZut z4fuTtEX^NUnQb5AF!vCAS0J>!519FBB@aDnL7(J5cioJpPEI?FZWxrf4hsDtXF*`^ zCgBw;N6H0tO%r&-n;7xR+U<|y=(2Jo0r8`RN8c|i+a{4CgJ?bNMDezRsa*^Uj@$wr zxei_O@09KOA&Btdg;&f}f5>I#4&@A$>M#oVQD*L}NM&K`7qtVdBD5Fz2_3M$Onpj% z;EL~)F+pT5^CwQ45u(-kqg3V_K6x1Nw8eK9Md?qIw`QzzmKI(Njz&DzG>&XHer$2! z#G)+Osk$JdPe|Tl-SniAh7-pZ7lrJs+X6w6_2}UuIP)d9$bq|yN|fCU^sUNG0}3us z?|a)q$74$B(%Y)gF9x@TGW#}++}+vu4yMp?p2cV3BJ}R<^}4Zb{#wO|HjU-llL z%%{K9`l-1Uk3bAC)%(OLVj#L!t)u0tw!AhQ-%`JRr8MIcQqm*JDru@z9q`>xp`uHF z#t|rKyjDbS5^Ezv*UfHoWoTLG0-==RqA2k5YWc zP+ai(<5C$H+H#^TmT$^Z*N#>MN8}TZoe>j~ic!bjf~IfD*y5oRQQ7HgYW8HJ08;pb z2$sa}@vyR&s?ZibyYNjLg*d#zufu2^Ejvy@itR-U#!oD{d;9|vhZfQH>!^5iho}P2 zk6`f?Zm8g8Lo<6i`KfT0%4vtcGB0KI5MnOAT}I0xDYqhdg%=&M?Zn_wYtzyZKGr%R zyr#3T5?bLPoVPV7(6P3J*w*jghkK~3Qn(zLI{Bq*7=%(>%6vgS4)LH6OA!|u!QBjZ ziS<&TF;k9vABfiNgCY6J_-?iWOpONFSF6LMc5tijU0pUe>ctdUH&B$RhKso=i^@=O1!6qnhPQ_hpY0SGY<%dwW1XGxh_cqKT5a#&Gp%Uw~u z3Y-W_bt)olWlrb}ghH8DN@+ufveqfmCOQJUWKO#a70;>k#7%qJZ%-+vs)}{u1B0!ZeWFEd~ExF~}#25d)%Ax`Qr5wjvwyBbE} zkX|Zr|Lalg=+FCBVMEMad}kFFv{Oecs~&B@0k-VH(pi(GE!iu9=`5k7{fiT*Of7Ofza11Q#;#` zsouiJ49MH3tSe>0i?rt zQ+!J)01SH;1p)|M^i1vQEYGdR;vClzcfaW}JDrX&+YMjm1epHaeBQf3Vo(#I?zR4xMVJj^DFYP zgArZD`twZGHJ5^UoR3ao3AxW{-?$=CFo!hDb7QEtc#lMQ zhJlypjp%iq4C8eO@KF} zSp`hypTak15`w^-eX+wO4^$~CL8NgXP&-J`!Kh$6X$}O7qj&iC;mEs?Y@41+*@gh{ z)bzzvRyS>c_N#0?t~p?95D8t~KMEJc{>URDB@HAZ)b1e~V?tY_wj*xQ9pgpq?K ztzD%=P8($GmC{mSd`UK%5!IA5LRs&$-VwKo5m)uLlqu8U%)DynBfi zn`&y!6$(lWlIX-2*`r4_5u?zw=e2!XrMi*EV#lq6xjc;cW-^cPdh4wBG6Hos#3KZl z3N=p$J=m_v@=jpIpoy*;{@ALXKQ0(i-+smwiQrzq*Zm;U`lo457H=r1oYl%+{`gRi z%h`|-{pf5=b)e~o3#ZJ2Q6T!@QC01rjyac?X-ypjYej`) zQDjXY!^3NoIcIc2T4Qw?(ysTotR3%zG>}vJ*)VJjNK*)ZjB2tNFiUl28|y9DL7H zOy)6jos5b77Kn1OiEA4@(RLfgghBM6$QDEnLma{ zs)D@bCbo8Z@%B+_)Jzp+AWG2?$-;Dr{h#mSGaIl<^<^`1`^yh=s~&Ow(IKV9?B%(A zJuhsCdVZGT`V61mki~VPvzPWE4af2AqGAwIY(xC95Ro7sW&s*D-C0N1BH76+G-eCR z9JZZ-c}jm5ER)WAftlM}9^Ph>RgHhth?R?*ar=Ou=jR)-TJj=D6|+q1FTipsePO-z zW6bk_J;5_^ zo@e7WWSLrXaA(yA;y_;@C*cJyY;Q_;`$Q;ZCNdk(yK?Z|MTx|nzDs!7?4?O~y=hz) zvl^7#KD?JmtOt=IIP7<3yM<0=XuIZg&1SJ3qp`Y@y7g}yqAwA1u-QnSD7f1PbBx5n zh4xVn|MeOUYxy&i3yojp1*yVsm)~$2T#n<;g^FVxasjP znlKvP%NyL>zg2#jcewjv5#3dMuVIw}-QoT`idNF8JKS2CO%Z??*P*`<>_CP7>(E`z z`KD})di=qa*^9eVa9<@A%OUZYJ`Zny{ut?@HFCFJ?6t$<;Gj2!2E7mhTQ!qcmltqA zS>M3ZHzDlfMyG_8P_2V5y*qPQY`#{!kBAhu5M-)%R<73?_nhxrxX{W@$c zyOK@kFOqaB86+0yP}ldLkl64>%~@6TToNzPQ_cUs=TRNxPYZnaAX-%YUx*Nk8v|E5 z?I5N_P_gt-=r5K$5(L-P`Vh%a1O8(}JkIh*$JRC~v_wChG6R|NI&ajH)v7rxIH0Ep z>74p*4~!k6_egn|Pi@Jv_y!I}9@UsXS8cG*W9626KA2H&k;HUeg7z>afezcNIdSHl@ z^o0N)F}tZG;#lU6Aqj|IEqvR|K^!r&8Smmds#@_;rdF(iEpB#mR^p$xW3Gs|rD<3{ z$WOFm^UA#Qv9%Ab*w{L4@H`m)!ZeRNTz5~Mgx9%cVQBS!zrAb1UYSL^2Y2>Xz~*tX z_pfQr35&x04ww|TfpAup(w~Pxtdqi%{@%s@OXDo0jxCyUZ^ygupj831ZbXVoL`E6A zkc|#wRTz@`?H%m##K7F>@JIXC4WNH;R4<;%;9Kf@x&wZj$s(ul zUpujP%;UcGcQG8k^|+V+-kCjQ?(vQ7!X}$+#KZiju51=7?ZZcPV;wBogg*>NEgF16 zH`bb8>Bc&mvv_`Yb|*Vm$mexu&zlQ*Y60ua_T}(#1?;X0ub?u)M`M@Ca9)~;TV0eepe5bG$*v@9xQdGne_=-OWBQ-CMB~3I0Zy-xFuL(WU@41gP zjIV?E)^*j#za1#fVGp?4;a`WV4KKJ4j$89__p$hHcR)7K)kd`iWNbmQC%M4?2A`%pE zD!zBgZD#aoSFU1F-hb8VqX zLB(-V)tN6sETA3y!onR%6d=q}!m}OIU7he-4W5tzu0;GB?rQx%^`@&0GhuZF&mYNJ zn}+Yi2zJ9^&fv$#pfb$k*<+FRI(+t6_N4h7j~<7rah}f}2f_m9@z9m>!Q@^pmWb12yRNr%Lxldbr|r;)H#t@v^J-QJ4VS%}}ut@vA0@!)U9qs;AlVIh0K!*+DU z^ELJi%3;-u$l=WAm$6sP5q#A$ltxFM{u1it)w}q{m)I=x1)lygimEAJ^)lfOGn>zQmAz~3=N(qD&FpMn-`}f{64-6I7TI|}e|;@`-R#2eS%dUmgQlz+G$kvPq(y#`a&`S{mh-|748HMYPsOZdGTgmfc*_`%IA zjE8N66}(ir5%M8???$-JDWC^lw+(~tNBAM1ihjq<@-E`N`H(s{-0 z`041oe>>Y&nXT%=6F ztgwC@Wg<}#}umP-v5GC$EhXd15ytJfm}aqdtCU&+!)cl^dBpgU8`82mZ*RJcVNLpKgy8gBH<-#QcXpv6Jei z0cJ!M@{}b!^?E(nlRT?|?QEVuf!-YHYRk$bMXYguXUA$`JU^Q-RKo^(Qvd+;(9{z54jf!---H)?2%cCf&VeS7f)0fmFImxUuvwA-hMn(GM_ zN}H*s(?tRdm_@JmEjqj-#U|pb~&J~UA*^ocXcZb7p9Z2yq?dv?yhe+zmUbb zo^QSGt{HJrBPvbG2CFK+aUFfd@q>7fE⫬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 XWw`k^h~kz+MTi~uv~wEr(C7aE*GDTq delta 78482 zcmc$He_T|>`v1&XSe6BG`60hq7w`unCMYSI$xjg!WCc_-6HrhnL{v02b+N3h)U?y> zSXpXW*Gfynx>}mnwX(9((z31<-D_oC^-|a3hoay2Gv}OTwR^qn=b!JsUT1fnXJ($~ znP;AP=9xKj&K}>A(0m|aUF1Z2ln<-JB{Ali%xsLaIA&qpSzUK#+rpX2kk3s0hB4DG zIm~n-1n_ibV%L2BF@c$e^;hvd3Yf`%()y?RtlyAjUN(uD-T)CkdHqu{-XGnnLf-Ov z9w?mvu8(KfWM+Cy9?w(x7GQ^ZKemjSUj8?0sFRQJo>GrV@~`}7-w_hC)xB!WHa5T8 z)_6vGnulI!^(foywf{`>ec2ZpW}g0$#kGEAZ2qaW@o5jq!!z`5W=fHtH;v^%@^7Yx z_#KV+c<1wB$2<0)l^(S0x4b&wob=$%^Jxz>pD)8zW!`x{$L!fWFDkI(bc zfEO>b1E+sbo1OrP5^>$wzIMc02X@@_Wa~Ra1}=?EPX^9j^Y)k&`MYj`e3SfJw^-?& z%W}BiO1?_oA98SkG5^^ePXJ=D^mTIUda~$hUXz9mOy6=s-ZT zI(UqKwm(w$bQE0JTxMvNu7t~_#XW8|H1EAEH6Q3;%`;k!V~n|8IagZtbns{iWyf^% z+z%0Rc-mQrvJck=6SG-fWd|CfiPpFBmF|7{hjL%b9sMR=K^>c+xe&h|_#KB|lflq@ z8-7=L8k)1|7w~lXJjPYhlVZHU zk>))h?z5L5ZgamY^74>A`Mx4c7uR19CtWasSH(3tiT`$)bWFNvgE^zWk@}~=k+}bo ze+lW`{e_Fb!yX>J7>#bumwShf_gdS=w|O+*AukJ!8Wq~6+S-{`pPg(!hJ70ImC`J) zdSvrxAJjP2TCvNVlh_)>R=mPujKEB8^NjYu@02z}6BBkiLH;(hH=iqeh7IF8<9A0EN?%d^8X zrIt(bE8%~~u=-QPKsB@R{fH3J4K5ef=Svd@@r!_3haV6ch zrqzQne0wsEZzJQ|q~`gJYV6VHpWL$wL+UHpGp?^`(?v4Q z>^8ZkyKOXe=ab;!k6(irB4j4fZ8UPF=BL_+fH)H@49tKuXKPv|R)y9Tw`267?Durw7X*kEsR`Jc6f0E}WMM>e8 z<#kEHlHX-{TT&m#w2MSjG#FYSZLp>n-yxd#9Yu6^6Am9V1wLlexf$jekZ9iJP3NYE ze|xUf{K|P|o(4?$pg|};THuExWk z9*vas@~-n9s5c6E!_67MbaV1c&2jMNOC8^yOGRd?`6gtxcWgS>-+VJt(&fhUeyG^j z+=w=%0P{h(drKIT3- zd}8z4s3?-nA0XumhCZTVG>Y!+_&2oj1}-b0ZK&7{6}y?k0X>JQVSfj8o@x>>@C?ie znYjL%C~p}Y;vfTI>~IEacq0qfAu^UZ0e25)Ww(vS^`7YDvfHweewR9$9o#l*C4MoH zG<&tOW~J>)%R`r0bH6rqI`w#P)46*vjix=Y>D=AsX7Rg%;Kv(s*dhr-dDFRN=HvELfXcK)`+5%|@@oOQ6zb~JGJ`6lx( z=Pm8tU)KuUx9952iRa7AWWT+eZp%5iifTw-Re_d$*Gzdua-bvN>*=EGuP_L`zUk8` zTK!v5-zMr$%3({SIK$BiIcZCI-11|SM2X+gt2UIN1{Ga}884dfijeBy10(^Z% z!>42|I~}N)tqIWC0N<~#Z4wnv7J`h(N&DS1_UKQ(0n9czd|kTbt7K9C)$<2M<4s@p z7w{s4E4uIlb5P!v_WSr5pN7}{!kFJzeYH9cwUY5ut3V{4Hwh-2&V`9KFfc;KvXkCwLsK^XyihO zYYJ!QSD3#&SMM|puTygcl~)~_x>Ju<=cL_#bZ-?1ZiY<~fjxpib@;*a+&ohh-*j$f zxIgUV)|{izU?TEKlPjC1IGIwNW@w+RY16qWqV7&uSK0Xn^8}5?1VJND&~WHPrZ?q+ zwQAToq9vo8MAepLxwIs^vn8LUsx8qPGVCttRt75+LiBfNEm22@ zttrmQRBuU{Xh~dn160^7T4FQDYAuNsM8dDq#-?*NbA;%eKv60XmQvU5kF=j=d12rY zs#(*msyPLr(6sh|-1R85A1$$*w}hKsVX@)aVcAz&CbwJmlYK44MN^*BR#-z8OS?OZ zY>Tnp@N8pJ8C#M?c0<$RBDpPPG~Xtt59{YWr-McN%ibe;^2o-1Bc9T{sHdcdhcq zk;!8VsM=gA^d?nf%%q7WaJ$utSK)RzakPwSu(9TgS0d1FPsHUfBf~ zcF$w67h5h~k)KY_;8W!9(`WHMjrkb^IWLiyWzOXr<$q;{NWEI+%{jdq6SB%UzgJ!} z>cMUkFL&17EBDUMk*adXZo-feMv zSv6Z%oo%bW+%jLjf6SBoA-V6^yZJ5hi(|w1xW;$JDjrfrgFMY1BUL!$yX@KgP5FKM zP@jD;o4Qx;&*^BH*yuC9x8yw$Hjss@N*-2}>+^euSBy{ecw`Tg*A(^TPs*W(b_>yuL+%MjkUw;D%}C zMhM&pfg3Jx!*e7@^Pk#>3e*sR8Ui+}+Xo9wGDhUOHxdLsL32uF@cRRu-qQQ)0hmLX ztOO04(4Zp8#YK_P=)QHM;P!*4+z@{rdGFvF-%&=U;`|T~E z9W-P32@;#m^$1VHoDr0B5VHeJ-DP!t7~MdD7p>A4!DQ;mY;di{wF=jFH&kXc;FqS) z5?mW_F_xUUPWT_uh@wPnzvY%Q`u5YVY6!ZKfE%=t!7})NYFL zjt)brqfH(+b-3Za*3sC;2uT{*N_NDWPqcZF#|)LySP)NRuim#4o&$tRXvqd|pNwA# zaH9O#)YzD^wg#K$I?v~AAULJX3#5t3lSuhzMam(h}3!n|4eLms`G+ zXWu%250{^~br#Q&4bz53eA5vS*XP)kmPHq@wA|GeD)bg{j5o379rA=}N&E)+zG?k< zmAq@(^Zb;2OX-Skcee64<1tIl!Ke=Sf}cvG`qn}rW+;T*)s>c5(jSHtHRBW%a}ZY( zuCE#glofHw`-*&5`3o}{cAq>RynClQ8|vYm7wA%OsKWtAeREhQ+063en$uuRH zrnw`c$q#r>0kvHUYBB@rCZJ1~x;4>E>Mx*wUNSbpMi#}zN%Eg70tb6w=C{1s(en38 zP&Ko>3jYS`WYV3~k82cE>VK8bRYdf7|I)>l`^8$NqveT99W6U>{Uk?K4vqRtTVxZ- zSP^Zx$eRZzT5`Qtt;#T9&|GYJUY=W75FL0)jXOfKFSk^;>FJJ^kSnSz>*en%!!lN0 za&6Q6tJ<{isy0=2wh3G~WVh@e10BkHX4<6rcgSDOyn(05-m@~fe`Efv2opalSIiIeA{cpY4kbQslpzNEnEeM6$S|-S2>mu?;U(CoJ3n=rVXH#3tD;o6DMUQO1Y!(wY zwykC0CBw;r<|~Oj+pCGi^d4)=PD1&W?QJdQOO{^VO)SCuH**Y&ZEN|kv9a!D1OIp9 zjQaZ}zM=8l!U>YJp@KP6S%CHpP0OXhaDY)SA{I@9`7oxL5_WwXA7f ze7*s&q`~*J4nw3%3<-7cM?ursXV>cP;sXr^xr;nTwsjHRlY#GxK3ly6o|t=c~=F zEuR4IA@J`bulc-=|10pGTKP_VTg%8cjE+ChX=@n-JW0sRu5{X3`T#GPpOnWh{Y~<` zBIhg{$A6NQWd(@ueq45kW8K9|EhAdnTHbEuw)U3emoK%v)7sJEXuI4J*WTU|fk@^= zyQeJ}Vi*m5iD$8Eg36ss| z?82CV1zc|NXusSt1k?;DmG5x$a7YQKlPt&LBuyv^u& zq?Vcd6|R*e z#wpjpB^pd3Q~q4%TbR;q?g^oOjTO7)6iHRU{|tJ0K1Y+o1%)L>v4m;_|b?7DJVq^(1j~>sYU9X z=mJw?mVgR`6Xl6(GGOAWQ!N1;BS$|P*qd^PYq><7;MIUBZNo*q94SXDv7?5Ubt;HT zwU;v!nW8RJGhn^TNQOd`CmHlE`xNjP>ardcNKu#R(kusDEbn?U(39##%Ey#RVGOs4 zC|~a;N|P+7<@5~^n89w{5D~Txx0i_ewPkk7>rtjg-m#&lf8rR1A*k}A`tQnLBd>|R zJ=4ZQ4)6`(3+1H8LOd(-n5mCE_sKy1fLsnZ8E_(OIK=Z&loTo6F7J9QLYgvG{`j$Q z&uu6$MNWDl#G6PT2CGGY0%hCdCjPM8@9|jA3%H3ECm#c`$XsRun->Bb8y-K%J&Q*& zlU<&>DbO<%DL>-s>ETSJIa3MF)IL3h_3W{YV-cuCJsB}16jnF#Kj2Z(YUNUuk)S9NrwND1a)8F&tB;Ml`?)A}vS|MQc0Hl_f5C)gL3}n{)nm;Z|)hEf})EA z*(G8G>WmM`yEcb-?nbV!=!E0)cYya*=halD7a}2-qax8u{3k`#eKoR#gPc4Nr$gErt6^M$hR6q)U_b7{A*9lQY%x9|5cn1}gv5HSkiv`T(W+>)P^VHt25%-G8C+O65(JjDF6nMv4o)LH_1owpChV;Ni6@hnV1UfX~Z74%cT_m5|8q1H! z{?CSZUb;5SVUJnJC7YyD8=$0>NP9u^q<9Zc#v~|`l%T_L=s@Vx2{&Uvy28hC zhuamFAgL?-cZ@HM-cZ3HrN0v);2_K|t_&@(DS{Jmk&q{s$iF}P0FRSbJQpkdyj*_n zIjd*hVr<09Nq-KKzkV)4T6%}v{@iVzSxcGejBp=I|7^mN<(@x}mFj27pZ@taZj*1` z7Aw`=E>GW9%b9!(!1m?x@7t{2RcP`d&P>zg@h^l7-v|hU-f4*hCj+JiQKu7}0+=jM z?;;g1*FGN{L)lfxR{cq*-=JP3MrUf}=bn%Eq-2eJ;`yP`l)8ZNXBG68tTfz1Zbo(a zl$RwBcp*ZRx5@c0MEDbK-W}@5Aj7MY7rzhzNA{-|`r>>43n7(9Q6kv@vqLU*A!#sl z=GAb??9Q=8`8n6X!vWJ|r`J!@;1rD>_G4Zg8bytr0#4L8gf&jtdjYPJ*Sy#_iAtP7 z32GhD@&M5^$fBD^3gA<*a-mx@k?AJ-YP!0F(4; z8!LD8l{R|HYj*^L<+D2mN=H5A&v)$LHH|A@S}DO+|#Xb*RIb!;WSqL&dhj4j(vTn)km1D-66yzmLakzX;+~rv zYrXh;#!!FDOyapf2)4zGA12f!6@{X^z4-gYa-k4x0daWOi+^Ygtyk+UTtI?->BWyw zDN%3X0@OR}#Xlm!)_U0&E)arU_TrzQi2+*#CTU0n3$S3NN2uKbg<3Hte$3b-@UYx} zuPuDAiGOB{v*#8U)tA>Vn9l+PB02D0f4OpRKU0l~pD+##{EPhP-rkO)}nm7j`tOSmSeGwDah7yf&`%DgbHA=N-I(T$tqy8 z<`fe<2l(}}=7}_tan_>oI;8|kYlIRhtRr6_k?XWTJ!a`Fl)ZvLI|ZN zP1eHfL`^7_%h8G6Ga4c`R|Gv||-wQy9?sKSY(vJzRqL?6i! zYcpI74j66b60^=PUX)*6U6V0q5et~-V~A}q7?hBJ$IP4~FFQB8z?r)ixjPMpzl5k{ zeLBg)F1I7|sKJ_@FN6Xa52RIL4Y4adoDvLTmWACh_zbbDP@+hbkT2|u=I_eE`)zUW zdKqFjdKiv{syw_pdECeXvV9G)n>`F?Lj#V>)Ak1^&H#MSgV{6F$8~miir1XoRI+|kRqx+JDf`}DQuJJA-0HCI74$q>KN8tNk4IF|uyPcL-n4b4wX*XTgL zBt31hX6qsafqZ^?X;J;W%JSKrOy2P0AA-r}R*N;y*(_$wai%?hcM>rn!wHZ+9U$p+ zPCdKx&p>Nmbc3tJE|fa!!j+89*QN9YP@qX~v7(Fgj35AdMkor|vorPPL;}n#$a84b zY$)lH+Y2Cab@@4j?z7g1YdqlXTcyuC8p0 z2J7}1M6k27LkXIgmp)Fn<4D6-F_wk$r=JBl3jC#5Ax7b(2~Os5RKX6F=tC&Mupw5} ziHl0$an_)AA{EvPrVx;;dR{4Z1VQPEdLzSryZR0JZ5E6N8qk zPbI6hY#m-F8D8$KGV0dJ2yw;M07L8}YT?n@MNW1{bX2~M!z6Q5GW=U^`fHCVXHe<5 zUP3iTL+lyJu%(a6!n>0Nrl8>!_)DXK)FQ6kH(GaTT8e%u7aB7-;6f+7N`{?1VZQah=2-o z@*4!Gg+KiuynyqwGYa(n*eo!GG=po>+YDP|zjuQj!95_l$i+C<5NS=<-6pe+9W`02-~q>6+zDc3pk*L*)>4>#QAUS? zR6vViLYX}~FTKd6LFaq$?O@oNU^DzPfgCWRu?$grdN9@_C|{JHS(;H^dwWu+7N!OB z*HCH4fJnpU0aVF|N}?YWRFb#67dli9<_Az@(+#0kgkgi!2^sO0p7gNV^GD@tc$3wh zUR+FoTz)vxLnJJR!-u{f%s&E=bpr(vZBao)w4_Qz15_defJje-nkx>6XATeHe*=Yc z1A|BmZ7D(&w4_Qw15^qc;A^$#7EoIL=5V;<#Snf5bnZ=p14o2asJEw}c(PrG&^JZ) zQKR&k0@NmGqd|)GRijgiOD)y{y$ELVqC$;Us5LKhtd@>6v?r2UF(stav^Ccein)Z@ zM?<8}UND97Lq6!bq+V92vM}GS3uVvGRFfWtw~~mC0VWDFBb(R*N+!csNvhv-nR8gc zC&)sGk`G0x)xoi7a#3dX=+ba!H1k9#KLw_TlH*`-u&OWREnkEhMGt=|mmLrFDo9t+ z`5##Mm-4X_p`O&*FXi(mLXAagmhb1G@_`RLk)7~)xQEEKo(MG|5-%D>MMs_p!PpTi z(=X+i5Bu1=hw)Z0z4u0oRaX&njvz>Ox9CgxZG3*6GYTDaT34!#ZiA6EImb$LggpI-Eg}#hU5# zRagf(8-#VLvrMF6N6OXOlE3-P=!l7=7%4MbbGW1s0D5;~`2k>@CRn237mWlKw0iIe zh0g?yWGe-RdeE7swKK1Lapk;D6L>R%zmLYgI}8m`X*y`bMb{42nD$A9oyE6D^3PEG zxse;VULM8md3hKRnn>80aHc_2-#~!%9)aggoGrSh40V6FhV@m{u4rj`#x?gjjV}DYnX*k)_*H zU1vYk8(zBk4^^;V_YA5mqVcL~A0ZT{-pCz99;#5Rc@c#OTv2+i-Z6-zIBarkC%hWn zId*hbR){L=sv5A8oEhb=) zMy!N@!5T1?fMg9QBj832s32g72B6!=+J|aD4FM?{P)EQp4X7s|$)RtHEfSzE#8LsN zQV2t!vZ@@y1_)Fo5&ch~DhmQ>F6ye%h|Z^6RUYbkk*i9C7}}x2s!)hR$uf#vEMs_2 z{!%wXe0zpR=gfeh2?p5dNN$Vfdr;L+}!nh&H{DK<|OB@$#E=#Q+c0;d?>1Wh&N^in(IniwV$fyuJt^o{7nggrzWg(86Q zE-V2kAjB}<#ZKtb@n{scp6H41kth22r^oVka9ERH{2w`l8O4S$u?aJZWdZRbj^|HA z;oJ9fB9tJ$5gB=9W|Cq>V04pJD1aP#FRQ%>f!>!$#!+90&EH{6+~bg97&z{v5vd6$;~ZQ1 z@K(^d*^yI&dA+>BV(Srz_Vno&H>4bZKZ>hkUvy^(v^#u}B4l5OgEG{*oajp+dDn)yM6h~Fpa+znri zb;psF#$$i`7ssQzZ+*QYvFmq%r=li{lFPp7?KsMLgcSdh0sFa?l@+BE%WD=?;*Kh# zwbHmbceo-vtfOvMvrI^pVxUtoUrG;B(-unC%(+8_a4X>U(gk%Y5NaK(r7*CnRUC#@ zQH7d>Zz~m}l}N@}b2|adAe{jAscA@4A#74lDDGs2ZEApmo9zFO7{@8b2TAd-cxL_I z+f}q+cB$TC-2SPoaYCYH&UWH9M`t_HI%=l_5~6upL*X;DcE-83Gr_f;iLUJwjZ@pH zHq6NkTkv{2!6FU)7)LkW@Qbq#=FB-b0x+j$>LjJZ$gQ%{RORTpRb0Y}m{y$l@bK`M zSu>}+p4rD{V~^oG#{H%EKTFuKD4$;s#7AJP8ixjWSm!LLSMet6*jZ}I*E*gOfg-+8 zQFMw0pPllu?;LJeYYtksF9dQqsj*3GB4iSA?~GC9HMlHP%WcuNsAf_;2mf zt(D4jS}Q@F)=H4mS_x3C^_40lRcj@rYOR!VS}OrgYbC&GtpsS+N=X-MC9u<42})xR zp9zr%o}OLSb)&4qQJA#;u11+ZC^2zJX)a>fZy5KJ>?)i;r+&^n7Ldt#tQ7cH`RCIW z{4=@W`?35L`HAmu!1o8=55YJ8At+E4xu~jqW_?i|oE{5!MYjAL6DCBo+UML+2|@&9 z>GoRwLql@cMLrIZ8wM~ID9eT)Z}VzoyqgsNlwAMgeWqTVhhmgf$)0B%ZYbe2jt#9I zc$E?c-^dHnaeT~~wO)oPH_evU+YJh(jV=X>24v?d?M zmgdURKL^IV&UjFWeP-QY%n~0m-lIFxLlAWyXFQlr3F2`3_i;2O|oMR+jmZDn>i z@6R*jo@cXohVo4~xAK>ij&L4g7FtKKGhC@1$Rm}qXkP0^AD+TV{Y%rp;wz;&n!n`r zCgWoa@keB@^L3{AoR`8SJtD6-f4>_fFT^rts{qLZa>Bo!@Y=`tXhZxK`Qv|`@S4W? zZHD;WN|O&?Z5l4|72FWtCXf8(fX~Mg-;C{CIuS_iu*vbiR=IK9%T&u)J&vfx-(yg^ zTlq=iI!=mzS~+j!kD51fj+2Bq8_Sg&5kTA*7$dn4WT@`-&r^w_;_)bXkPWKS>%i+3Bd&}ue!D}b9M!@ zyd)oN3pdZ>9FL4*2Lfsz#BE9%PHMU#)tTLltz3vc+}pUWeGNCG6K4@QwjIVDrC7?m zJ(RP4+#QoU)04Aa%RusegM92#mE$E0R#GyZ=Sj~f$cN+tkncLxD2m(hH0A zGTs7Hn4RY=V-}d=5(Fk19Ut|m&{ds^I_OFnjabiiF+*Ob3Q-gqU- ze1n0%E=Fjv{LU43yjW;DXG>Q?QTr5sZ|;DM>%Dn6O&6IM@QRW1*ZseQ)AzT~cTB)O zbjv>F80RZTbbT($L2sV&Ms*=OD8wl%B!1Vxu2U!jh24tHz$5ude_l{_?W8{gF2hTPAf?su=`=zlCQk={LG16r+x&~?U;Ymlca_dJm4Kh$5GV7riSl% zzzG2hrG4bdH@Xo@uR{-B!ja@_Lg{~qQ2P1KQ2G-L4QD7#fEG$qQVpdkB|_;>7*2>_ zs}A?=fD)nfDdi_4e|&V;o7_wab&c?2EXxO@efS(^^78M3l_OrfD!=OlaSELE!c#)d zcE(s5ZX|1aC|M=Tik0+e-a|fl#T{p98Nu1E0bR8PruQD+-HW(CZ1h*=6^UWU0 zNpH6t-tm8Vu-*58@>^mO#gRz3A5;i(_K)>C_3>#5&VJ@r$nr(Sujr(R5+x?7^|sqr)hldY$Nm4*Ob z6>*)uRDKEIff0w}vB2KXEk#4&_q<$u4?Cnp1@eZR>rlAn`29)`#+vcKf#FSVSw0-( zj4tF3DaQi2!wuUy18NL&0|{4p)3w4KRLY}xPj>^c!|OcRzEy}*?$H9V10oPRqy}P9 zA`p974a9C0f!N(zAa+;;Vtdp;EJ6fg&xt^6isv5!v6uf4h-FNbEfP?6r~DsEoc+_AJlE?(5|J`eZ{L%0cNA)c+!+(m`*ei*;Yjri^qo<}(i%JGNPl~R^i zDP_5?lziY-yJ23y$F5q;2t1Z~-BGbCf(IId?g!a7MA&G;D5kJ+1l51gji~=@iYN1h zvBlq~El)rQ%ag5QdE)bwwmiX9s;ueB?{;JUZAQC8hq!9=Fb{Z5X!Mw#IHg4sUd-@g zXYyA~;n01DGYQ=sMM&nb@fG8{-mQB6id^OX=!R+pe{}Ez>*Rb%kOrB>TU?TIt^5x_{-a|e6GO+ZP9vek8(5a zx41#534~US!tnaD^7p>H!y9zWpmUHZBm44j#djC4O7FT34};o;ELDf}a1!rDhI&wW zvL9dN#WK6j~jhSLI9xhvr z?Ti@9rg-{(H;uki(uFQqnlg6)f6$FS&YI}SDrnsPnU?-$j9M}kJVvQ(xq;tb)b*D7 z#$s_XgJgNNAAKts^u0KfzJ1Z{F_vTa#!C~Z!BI*>6!%cp;z2z(VqV|b==$4;)T+Mp zy&#*u14a|sQ!3eY13-3MBCnd%b;-*fgkjd`tA~25&J3T3z^*$}A4H3>jL#t+_=xU` zQr32pW{>GQht1d$IbKJ?z7#>1<_>)OpS_tFrVp$RUD1tY!7yp zVk|qb`irsrWT)@TneUq7479~js5 zo+*Y0Ho*g{E64hP{p0}x{>r%C_js67Id&7@As!b_P0!v~S&Qe*QTgC4Rjj&v#*E4u6~_DXSoQ4kSt>*iYnGOl&a0fipay~w zGjE`{;ix2bANWv-O(tTv;WneZ2KPF-w7%GIPRm86Ag$+4M{bVcL4)N>g{N?wBT%AK zcm!Xq+?>MqdM?Go#Tm-Q6dpTGB=MZ}K9WXN3bm*f-b5FcU^~HTTL>HkF!(;h+n|$% z%2QO{QF9Q{8VaQC1D-(dlZMnN}0|PVVnw zjpf2^8-beUi2DNs<0c<<&CkPmxP!E9{OHJ$o97D+RnD6?XI|;Ta&(@^dFbumZYB{+ zodOnv!jxI_$`@AGFD@0uRl!FHJZafkv=>mpzZ?9PFw<+euC7%&mgN$)7KFbegb;FObxl3aO5UzAJ_I~{lw%|KE@k-$(PdAK;2}ZO0*l90#_^@{ z{s_Kz^v}zgsltJGParq7LEs;3%r)zR=0(j{|C%OS3EWF$X7i8|sd1bKSL5Y2rA zJ5Bm2KvU*d*XEViaH{%*q5@_QWg=^a)4Us zM9r8pp9=pojlbb}5}lo;yqM0T(nS)^18>20>f>!Mq$jHe_Bf@n9ZFp_kJ5!|dJNJA zg@%E51_s}kO79H*#blDg(~y9d5lyZsudl9OPyv6TA`=CY#&@Y^oO%vkPhguoqkP`H zYS_#*d3aTU4W@&&SPs7@rRz?VUcnH6YZaQ6`rV^hJQ(g&MKwWk`lvKZyH1l{^AL>d zDAD|u^JPYRWo<>##L}Gd+KL+Nq;tK*1&xKy#0|me-4erbg@Q!tcgogLybnJmT7OH| zC8al3oW@l~L{4GpY%H3X*(s);9Vw;@sN%F>Fr(`X=oK0CqK|FF;2)e%GftRaKC3dj z91gydk6tQK=cDQTy349RXoT`z*@iKhz zxqxp>1o(KECd{v#H&uCZET4Vdt_;lMBV)F~A7RyFQ$b+{#StxZ-eM zm^@3VaY7MpR3(+>7LIq?fL^HC*_@NgG143{bHf-GVcedY0rLej4{n-Kg;*jcU@uGk z(!l2!Csxm202f_6ue^3X<9b;O499SuqZChNleIF1i!v6>oJn^Ozh{%+_3?Vh$%TvP zRTXgh^d1aP1HC#DxZK)`%0)VkUL^@!F=9y^>?y9EfiQu>Nl$|fIVHLP;tuLwCDqOc z1)emVfzT%*^pyHJw^!D(fVY&Dc0Sm5FTLVf{b+ql$|&i&=IO0OGjSck`-7-&Z_pJ` z1lKN1i0eg`dNZYGDGw9+p3-#|^kN>^o037U1qv7Cj4H90&$zu3t@W8i1{10*F6KRZ;*D64 zLkyYH!jjUA3E9lDek*iPHsKX;^fRd{5#fX62U+-XY3? z(pgPSrDmFvqyaw1hxiCVETJ zR3KcmNM3dbP(q6-ok}EpF7WhmQK1|2>uN~59oK4-_9G?o79KZ3$88{~Iu-W~fv!S+ zNC>CmNR~Z5$}b;ds*-QvA^fzm;}(AZbv<0_RNgBR%XSQFVIIP)o!#JRcvEpq#cQd* z6<*+=^2t=}{T`gk{rCw=$MetW$ErmBU@|GTTe+9=>{Q-E8F4G`HsmXvYD#Hw`Sco0 zRR>DQRnTfv=cZ+RqGmK8Lz$b$Lmr*Z=iJnF$4~FsqZjtILWQZ{asHH&I1TF%9eqjb zA2D&=HLdG(=}mq|aTN!FE@H*IC8Ks)qOg4SY+8rtB_gpgD?Vq**Ia*6*;&d%yw4EH zvz-5=94+PjJV#J{5z$c7-I(*}y@Smuc*kQ8&}-uSEv}0QH?JKdW?U~d)mKSsfpwfJ z<9E2>r%AVGZ^XnJOnzEBRh;@F4xl)>i5bbsPp_~P%_>eGXHs)7S zGZ3ecuR+^_OKN}>QzR9=pNit9JAKs7b0gr`n8-{Y;3^J*W)N`9))kXkQ(0b1CtSE* zWVf#fI99o#_rpne886hbkEkQo=%-UxV+}p~xMmlj6l(-38)xu2*By@O_1K)qEzZng zmfe$SuxwOPD|qi7yTw={O*-R;JzUvR0h%vw_4f4^hjly+XHA5Q@}i?Vo`yu_Ullx9 zv79manzRD-gtGan`SiC$yiOT;#uTm-xa6&jtmHkl0%ZZEHyU0$0lHnp%?IwoGtNo6lUkJY!& z#BSX;Qy5D^KwVv3TSuqWk1=mR(-J$EQpaF94P-f0d}>|Rd{L%^5_r;q@>Wouukvv< zzc-`nzJOjDx)3iCJ?eT)CUw1}G|b{Xy!G5HWqmad>G}LEjLjt>@#uwimi;w083_8c zGUd%GzT6E{rWcs5#Z`tI2&t`{=NVzXrS>`VF=NiD752=yUTCEd!H-0EOykIUQExfi zxL-%FP^H(bZU@KC5&xWWdo_>pc4i7r{fW~r)L1Ms)CW0UV_)hpJ<0JJdrK8W6=PJ_ zl}>MVC2p-(iSdlY2N{)*7JG;IaJ__wpR#Ed5AH?6dD=X4fBhO1b*7)cW?=T;(7nrI_asx@SmssB}RIo)P@gT`-?0%8N zDb?55TqNleDLTjvap;}6Mr@Hia+NqwNLVu~R}}AXAFh`;qRJCZ^0X0WdO*l&l;3Fr zpixTsy*x;Xs^!bwh+FBMy+?2*N5M4jm0+66x<|bG`ExzP7mG1`E-C)A`NM96MYQiz zg=;4fzNoxa%VUFd94+wFkA*A0*Yfq(^{MOT@curk$HRUFRwS7dcF&PgR!MK3ZoqYclz}K~h*A0O4(}izu4k<7t_DIi_i}F~>~H2kC3GR5 z>4teW_hqKqI4oVG!C{Bea0id|*nX|9eO+`Nsdi$w#eB9KY$AK(9viOK7_ix>JhF(# zL>&Q}YC51xE4$waP*(`a(;54_^4TKZ8@q=I|0i~KusVfnYAn_wFDjcC^Y~FFEY7c4 z2o(UuC*yQ=<$T(VW|mtj$)?Jt%$|-nRSN4}fFe_>)y3R&i{^5Lwn+omwYW`7c!-f+ zr91M^%DyGMPyVVuO7O}5mf$xR3I2|>`Z=u}TgF#bbbSiKy2V7VJ--BjQorZ?C2pKl zK2O}F6_4pSV_vjRuZ*0?WaVpVE?$QiG{VH5r ziRLBcp=I3KN5|!W=H$#d3uSx!IKrYkD`0GjO&F~Dfc;eKjrUB`F(Em2le_! zT#0?b;z#9{1|Ait-d1alJrQfO6?hoPi>l z-B@oP0_~HyP7(cYIL~mUKaO!df0Zh~jokmeZgeR9PsC1K$?>4SN#c<%^i`$nCANXX zRS|`s%PdE3Z|;5k-s?H|M_2K2xN|dp6?eF?YCHwup3B5-sQwV}F^Nwyst=6fStFYM z?DOW#z-+|0UhXi&6tiUJP#h(}#*j8k?wE;S6nRsqx^+ltAw6)4Wtw>SMV+sHQgz7c zg^X?t?Sqi7Fbivh1WaBRB%b1}bo|Q{;!qEZ>bWT-Oy+`l^D1lWZ&Ww&1F##UqlT!c z3ofOGs;JLhP$?>E4^Y=k&JLiio}BxN+1c(gJ3osu`t1BL(&BSidFui0xL(gGxexN# z?oUI5o(B4-Si~PJR9W^QZ@9VZBPHbqL`?&+Wjp{KsYrYsH!9H!yn~gItGRbnB55KQ z!Og#iF;+={8r&?Lg+IAbDpqqFf}2Hx=XE9ZTZ15?_y+Vti_(7$@9$Vdv?k7}sYk$) zq$;lvduBQcXG`MIoMac&U==wSEAotF?Z$(!)Xgdz8_&{wdPx=ZJD{ z4R5$^V-~LEz5H*720RV)r@o|iQvCC4xx)>&R|3l%iCgvu2hs>q#y!L%dh574Y9y(> z;3mdiB0yF9%~&U_Q`SC&yD0U7pBo)r0$xAkdL$9O@SDWfBGl%;IERCteT2Aa!$Iqq z=djPHqqL4$<$}^W<~A3U)-icNT{9d4fx5b5`dr;J(B?3d(L1IO()2l_M6LfHqv6^0 zJl%f~G=zJ5bYo1^JE=9n)##8jWacJjLT#R;&S@C(4$MJ8K3Fdl%jhaf&D92vVR9e+_ zmC`?6O~qxu5p2$I?BwYh#Tyi1jCww8tXFG`$!|1{w5HNoy5acfPq(O-wh_zo$|sNU z;C?#p5=fWeb}n|7X*td9HWU565phB zJb_I|3!eWB{*%&YBdlzt439H=BcJ1jcP>l7D8iLD6l8ILtKDE!%KvQ&^x=9=VyHSi ziSSKb@8FXdnqxrt6cNVK;Dqw!lh}T;hbptTBUUGBZiIbj0&&|Zh?#0qK&^%IcMQgi z{M^Kpl+uE_%38b)jB&k49W+u6OsRTUrl@*}b~@%^WT>Ar_(8`i-D|n0a%m?wE43SW z?R9lOcN27fin!wpz^lsoO+40Tr<34m<(Hk%JyCH(MMuz}k{%cXh;dSX;Czcxy_v_D zj;dsR|F=OzZy|%A+G{bdD(PEzKiurSeGBi4!wyb~uG_BYr$HhJ&n{BCT9x#t(Jp#x zkou_-GPrT9uFS$rhtOB`MDdKok8!=9RHvoq;|An2cy|hX*4SrwSd`Cvv2iq+x{V6r z4;>cFs9!J-J$L(DWyLdisTJJXQ}`9D48!^j4j~|x5C3b>jNgg~&;ySNjohHrZsh|* za&W(?y0CIqdPM~e$m5JI-7mi_Ox!QWp9~AS7D3mIVN?==yNtNjfl=x@i9d>HcHDgL zsG(fXS@oaTzDr0o#3CuS0d#4X8%vITFr$)SOon*SU?i4Bci^nUJntw)d5-&qoc>R& zjp6DEflr>}UR-Uj8~n<^>r-3@!H?QI)u>qJds_!`J%b)2|AUsN6SA|pS>gXDUl0Tv zn}#b7PgBv(Nsew}>Ul@}Z4=jvG!R1|gj0VMz*RmTdq%kBg2VFg1)fNHm?)-NblveX z{&_w?`cu8q@H~%}HrFf9JkM82FV-sqUf@>gwR$E01wLxTOYrQ8>c|TqJw>&mbqg5lrxfhq;pX57l_AbnBRII*jj>CA=Q$BqS|*sC z=KN0>yGf6E_Xy;A&Ip}$9r*>dHEuY?Dzv1%7#l0ZpjqM(I6^ji4j!#geWIQ{H9`c% zgPmB%d4+)34{l!tcmP%jmDSb1qDPgCcb>xVAOcJYuK z4vs?mG0hYkGZrjaLdzNidU%0_=_OnnpyTS|Ikj;4rOOz59m;5ds;54I+4-AYyw(kU zpM)c>2gzR9;P;Zmd+7XBee2mLReeXPi;()s7%|sQK2Z5vui%c>z*3r@ilOBr%1^KS zk1%aPBailpUryS3lhKI&_9?7xK6;JUxUmx4hIQ0yxQ&|z{PS@^`r~( z8A5zLZ{4-xyP+QX^Wi?Y@`ygfAEMER_FmtGrfz;V+`VrKhdU+Q9PLjFH$>bCgbA4 zY`su34kyq(Jql^8=O`VA^fc#z9m`pN;IuP4v`>ZyeccsnEkq)&Q%S7*B|cx1 z3J-4SLg_^oks#uME)s=~7r2VjDMEY|-jizlhYZLJ)~gQoPbsqa`-l<}%4E=ti$q=2=nD0Tls6kpLn*A19n+RsDA zRS@R~B|bvsTwS}cXzo1hB?vRv3DHP^4aB^bjwDl$9R07XtxELke4QH$f4scVgmb>8 zeUKuxReA4C-m^z5G3$I}?%&H9>()~pa|!$SGB>EVqLV#9-I53DzbY>u;87tqoCK+^ zs-A_T*hKk8fcW?-bKm33-3Wth;W%9ofm^}(AiY*n9yrLOQ*uBoc#U)e@@kN0__y{B z3NJQU1VsU7XiIGh?c&l_MzzXYW9~*+vC zhqx9ItuK}Gzv3X<(W?Zzt~FZ@VKsS#>Yh;s9Kt3}GwO;RbJDe^O?_Id<`AFnhD->3 zOdsH~*#%wCcR)AP=0bOXO+BWv^gTZRy5b#t2jbO(%*gG^*YEI{f;1wd#>yugjJ*KR zWn-LVR)FGolEQh2<14W*UJ?AFlm|UE;G#WoD!S69#$+Uh8_he8rkO$Jj4D^#yF8}k z@YQk+ivELKJ%Rc!auGrN2eVTyUldh8Ibwvlv0c3lWMW`iQ^!N~?^9?_FD=BS&Y60) zT^V?ohi2-LB9);6F549E&7cUeYBFW12Uo8taH@g|lqmN5utTWs%~CwcrYbuQ^X1p= z)#Ug2UDiG5K2HN?QbgvOjDvEs@~UyL)pEq49Dg4h&Be;xBfO!s>ycn&E;BuhE4c_J zb3)=<4c_^Sa|dOXiaXYms^+B6&V`qzy$QYOs%T~WXFSv>H!x<7QTS2bgP&C{e}MS@ z$jtx16upo-BsLS z&`BE$#i1P|KT#YXbE{d$WyOl#6is+qG$DAU)`Y91pQ$u|%;T`obi3QOA5L=I{oyNK7U;DsfKb(*A19l2n~pRU^{ZF#D{BBMPX%mMQKr1 zx;9Vf#TL2nf4q-sJhzR=2qOwz_oD-_7$CvtiQ%m zAD8&o2IB-gD?g~zJ`b<)#bQ=3ycHr;&73oDHeQAl@Fp!nCgPni^q#&MY%)TnaJx-W9yT znsL3tSyG&agrG5TaH(r0$~}CmU#Cy)4!j!A=lqS=&+ht2AaHT4#B;ZK~eaTP|m za;_Ii0}mJPJ{=%^5|s3Bxx!s6Ol0jG9CDDsC$0=)%Ll3wo zUh9UFEbNcB)8WFH5I17tjOw_>@Yh6UjT7Bu)AQC5C*2P{ z*H3wA8xQ8m%C6J=K{ul9$TDmi<0>u%r$&iC>tj^b)Od&9!1bI%#7Dez0Q-j-ci}N6 zC!#dBSUt1(gRODlL3lC7ttcH`;i)?cWs7VaN*1F%>+kFW&ZgS-v)Mo6S z(q9n-0XJpAe1u!`Dlx;*z6B>#b$uPZkc;5+APsnS`F!n7D1Rfw|10fX;B2b?|Np($ zIdklN#$_;=VJ-*bK38U#VT>6jA(wH8&EjZdE_KOTm- zCcf0OM{p8k{9DYejh(I8W2wPvozi*Bb=_ z%l*H1Ky49FE>3(0qIJL?odRmSl{`|0C8OFcH0U-E*y@Va?t6k-)JJ%epY$ZYmoZNu zi7HT3(qSH@LgN-d!#!?SpH8`^&q9c-@jbyR^lR1=H zR1i**Ie0a=s|Mwmt%X+(HUwL9N?D`&@&hE070Q&Y`;H_&u`ZfEf4QwdI`zjGbuiBC zF)-|LrtdU_VSPtW=`?A=hCY_I$6~YIOz7$wW}yaULUcu&K-^l|<_F z>SR6Swg&Rb(RgW3VXsc4u$*WSqfpuBT83!ZFv`JeUC|${fDzQJB*TczyI}-&f!OJi zMzpfRSNf$gd|B&0`u{iQ?PQIoT+=i8``_bhtN*3gQ0qgr{Q}v9hYue)g-xO}P`YEm z_JpMbO0F!pKgnbfeG?MqBgUftCv&I-55w7IEX+Y|U*ZUqV(S}DT{(#&GXkY1kI?_2 zCl#7xNa$$FU-;9WIu&RismM?%T|wq-T>gh%x0@363l6@NumDpou_7sbX-eJoZ0V#B zTOs!uja@27^_WB}n3C?^6pi0ZwAb}}|L@(#aG10o=Q%R#MW(M56XFVK^|p=};aR0g zIoc3x=x2ny=ncJgoE9+*MS42~1E)-wJhB*-jZD+~Fr->KpL;_usX)g`D};LbYsT7f zFlsB)*J1cp=rC)$b)`AU2mYzYrPWG>1!8}&f^if3PMTUgQmy94pdnM_z_yQ5{ft_%qUfBS1>j#PNtLTDg~; zE@XV6XyueHH7%$(3?d9p<<1aUM@_#F{I`IJ-}PeJl7(CyUKd zvaMuCpH7_$^9nk)EErupZn9jF?>H%f6YOJ%#1U#s1_o`2P_)c zL06i~HjC2i7Dc!Gi$yMo{??)jq)rs9X^GQ0QKU|Zi^aB9vP23}q)wNPLAKoaS6e!^ zotg@6^MC@al z_5_5s#}{pS_+-ZfZ*s#W1j7(IaZ;5^B%7;HfWKK7>1ux8*) zorEah+no3D+1Y^n+Y4`-DAv)_m3|fM#DPyf;C}_ywVMOK7vP*n{^L3ItI~g~Csrc` zT{+uK!SLQcVSriHWEEMyWEBEgkF%Tt`jz(%XSM1n**=l-qVKo5lcO#9yWi^#MHm&x z@5S(cInKn%2m|BSQW+Tx?*oGlUAekIp^C%|D8(B_y_HBydV+vAC;Vf^qJ$+C=r%UO ziq~<@Axq{lo?L}RnMxSRdsSg|-OXe$v{_3Pwx9xaD=`%<56%_$!FTLMQOg*cH5YH5Su) zh4Nnp`=#PS3|p+s+)E<7zQsaQTEzNpn)XI3Y+Z#aO}nR5AWi2X=mj{3Q}FW{9~{AA z8lO|)$?&VE%VY?If3ub7^%F#R6(~&<7Dah0g@;E{%N#Ci>)Fv$5F0!QRt^$Wn9_zG ziUT&Zg$PHc&Wo$Cij2}InC>`@AP~<9*7^_lHtzgGk*wJAJ)8E5#k0@;NQIyhdRKZF!&MOY;kAFb%`~;eT zd}mFTZjD!H)0+zPcjpo{15b2}gHvD*YC6XD{M}JlBzIRNGi%d#tJc_=_SUt=$<;Hg zI|&M?0`b0zK#U~JS-?jTIk<_K%iLm6{?|7GewP`44ZJO6w&8I->k&|mzZ)N04-?4B z|2Q9Pacx$o(mWW2rx^V8+N^e~f&Osqx8v_Tj@xl)2K#RqCW5TP!{^qkP+`RTB;x^` z<#=V-VLje3Vk4lFrC6`w-8#(du#^nIlj{cy@ho6;(FBx%IrBB`fE0@-adgMIgUlg! zT0{x-^eHZm@xqu24Ns|a4|!Fi9Aeqhzq7AFYfCKbYeNQB zgT$6wR%R6hWtJs#4OG$Kt)p2o+EjcJfF!LzEY>0hU*o)tSaev;^dp9gVi9;3q8#K( zGec7M3A^=V`~wg~g^VyqLPkf0t&2fscf>h%I;>lTVWnlA?XjYAvFh*5`%0N-JzgXO z-;03Emj9bu(*Uou0^Q#=Sd@%3I|i$AzUHYhEZR$Vmr9N$ZvQT$TeguI9k3-5B3n*d zx2WksIc>=de@^4hzjqXk2m`N{`nfgElJMl#zv0$@th$A)DAXzCNDQVBZn4D+%nfk1Gaz2Gd ztwnI-I2dAE0TlP81umVRh{QuLe{rfn*y(stPutmK<4e5`%lPF6tWk^Ue;@Wb5~~ru zc&_kNCOuiN$lK0&h~_gmODH%zPe0-i&6jv&pmbaRKKSD#4$l3LA;LlT0GtCm{;!aqct&|;uzM@yomFlG79sjt;%?vBweQzius?^e|#5W zCZF7t)vaV%>*U`=vW9`&sz68F6e-jeXRenj4%43r7oPzHI%4G@s%=mX-YL2s?M}+^gr*2_w{Mjo!A_*#6b# zEFSBr{nvt1*aCq#=OCsl`OFrqZrlR9vsecLfZl76Nh%NtDwjPQpmxCfocHLe+8I2W~rD7u=){@1TyAU89C;6aOY{6as_rXRa)_NX~^B9tsrrsTMxU7v}tVh#I zeNg&eS?7aWRp_Q50WXL&1TYZE*I^;k9}la7M_33$JekxqrN4|2Fsl~xobH_L@5pc9 zB33$mP?x^9(Ud5flqW=$N^!4DTcZw2XN&&h`0YwMtEngY!ZKJLo!4#6PV4!;KU=er zI-5C-kH}=(_3pmdEOxujzMsv zlzy7O)t=qX*a&{JJzH+jW^iE+#|OM1hviqNZQMXvEj z(jn7y9otrSU@5g})3h+=sP58T*s)xle9L@R)3>?WQ?^6qL#28+?s%#p5^H)dv4J7ys*y%B}~Q6XAE~ zSMpi9*ntmMH1RFGjoqv3Ykj|WX1#QMGw<4k4S?^7Xp7C;csGz-YJvYdyQ1;`R97eb?{IbI2kDC2_{HwHKgx$J%9V!y zn~DD&E)V{$E!;M8wHH^^$Nxj+-Y!u3yLu-oveZzV%Ovz64UF^job*ymi=*<@CGx^iK*&W!U5$EZ=W^*=sr<(x2r;(^Be4nhq#2EJ|2HVZ(f0tv^eNp}6*P z72$uw)my0R;(y&W4h4x1>W?t6dfq^m%?pZ{lMkQIoKZ2jUKOS$!m)=+qKlUfV4d_R z-zn912>>jbYHO;sb|)#`7~o`+0gH zyG!567Z`jxFPK4|!T{z^&?q-=Rq64ozmUUwZ9ry_R>IZ$V zjb$(B%+r?lyN5l%BHQ^sy@$DU6w@#6WqnzfY~FM{>#ra4dB?LVI+hh%IDtK@U+2vx zB9p%4@6gZtyz3-33Cmu+GYPR>&yyyzLVXcmI2rB2@4hROSw|K|MXEi&T#P%fUiY&$ zm4>>a!<>#7-@^M@6{o&}KRb=x&5U8(Ii0O%sl9z0r?ZJVi@K9X&A=aHeUHyz^&BRx zY=J2KL+6WTBk_0gOS9M=EHQ^?&qkzjbNGDxip>GxY7c*EHp^#GIo#t#RQqv6HJ(o{ zW(J?|G&6k9c-aIui|NYE1#F3am9JWWj99|2Env?hTUI@ZOxnnsmY|3YzJtF|!X8Gn zn=V8Qm-AH%*}zj{hmVBkK&u2f(H+9V-b6t<=(+d7a`$J@^g!jl^^iz z#YoQ7ZoG6cJBG}kSPHkB`NyS5qs2UV3EZsW4=-UmutHbP)9ejwvh2I`H0y*lc6qDi zNZr}|`Q_|Ygwl(n-T0jE;B1ZFhu^gVX?>aRSOE*J^O`H+Pg{QXN_ZaQdv7IMsH2JL z{j89_KtBWd@6W=wbUtnsXa?W43Qqg;=+!8TefT)~$>i^>hHwS1^&I<$p36Uaj@@O_ zq!F~l+`;RwM)TgCPhA72!}kyym+*}V2*7MQp;bs+oYdwM* z&dui`e36fSp1sEg_TtSqu)#(qUcMybGNIv&V&~5Y$dx^bOi#dDnTD#Ek%=9hZ#hN)-$9sQFJ9~W0zH9Dup#`Fw7N*ULq~8MTZ~E3+>nG*(+n*<$Kb{}Bapf25Vu=Eg%e0=92hSP!5i8BnR z3uh(Y&O^q5D$MyLFZsrZW056%(>I2PO~C;YJOIt!832q)8~ufoega>1WCX?RkHuMPy- zaq9iSd&tsN3F4~!=TtC9Pa5%N(=`h9Q%1bE^4dVC_MKDd`a0tJ3vh7(f9=32wmrqK zhG}&$sC*r5f1_z1;k3Sw5F;274U5IRMQF7qIFSPDtqaI6u@@*`bIPcjwEua_2*23B zMJQd`Ra|=cPJB*-A!a$>^Br>F4~?Jt&Y*>$RXjItup;&jfB7`xS@HrlnS%TG`JvNB zUGLbJtRUWjd%5wVe^xU25r>m$T{hw({AF_`#)IU7W{|cA8W?ng)E{do$Cun(zTTOV+2Ku38HH_TO+;bPUrMu^>;Z8jFCTan$*a|WB zxXTnbF|@_q0ZWjEjV3XdktFB&+OtNi94( z4!E&Jm*u^+r`@N#$G1kbc@UveMSq7+`quCyZG9_Hs)DzYgBux*rElYV9dXIdZ;ck_ zJfHI6^0z3aW4FN_g4)ZYzBB3Z8HkdJbGC%p9QBUv7>z_6}`Yig1 zU=a7n@@Im--{DceIzhKtG^Lb5+$H}zGyR3}*8WgnU7ddGtoRsahD$u+9 z<8wxwdH7wd+789r{K`2azVg8`%w2@tkZOF=I6bO1{?MA?WZJboHXUseC3G!>&hwtt zCeU@XYZG65-f)L^-$#op2;cZkZr0;vBpr_$Ye0&&ir=>sZy7I~H)6x5e1J;>()e0H ztrt$FO+n$NI*-WF1$CX2@qEuZ(<3af%IN(4nzjLs{)tP(9zlHj_lDb@_%WsxLi~Zo zi+(U_)%WMldExc&Ppq~H=2PxyhlR5!7gf;T#ouu{rholl#Oa;+@E?rYhTM7QUO}|! zj)?&fX-u`@&NhLyFq;5JW1LLO{>&=#iqOZ6f?F|J>?_cJR(W8V$^{FRWm8@cVu=T7+*t z3`g)6C6E`cLZ+1cXt*nH{?aeixOXrAufZB2J+q#!V^zpxqL#HQ+>G^CE}WZ z%bB*}-&lqMf4#z+T*ify5mCC($9r8i8dfejD?VS*(E4B^^+IeLfg7NYBt$)0Wu#{EPcOjss~CESp!v|gI~I0#1=#$!KrFeiBn5e`@Qu*$h7WP0_8$E=_3}+hFWH9 z;!m92w*q@q1t1u4naX!Pt>r*pLUe*{>g}Tpb6w#)|z!{ z#lx*Xq@rnJ0%|sQ{fsg@_7}VhhI%_s{n=<_&iU1f@^(J#XKYJ9>Nkat|BQCE%QdSi zZ0E24Y{Z1;|85zH?t)iYgsOOvy6M#GR;Ad^^{YmL8TALg)D;0FUq$t83ZtmR(=`Qj z&8(}qCh|`VdxWFKSB>b(b8cEi1dcSGdcPSXn#2?k(^lQG+D)OOwR3H{&1e{?XbBxH zY%6rB;<`_DU9`7CM~l$%dw)U5Cz&p~itT*%FGj5Am_ye*=-8+n%cWOoekm_O5>x8@qn(_S_|eAKKWOpcKZ2%BWuN22Q0QP6btjT1~{2^153eC zleC?0|J8^!Poh7z@Z_&XeE7afx|KIb=ISfWNFMhalH@S@F;qrellB|h-<_teO+kp; z`H)i2b+`yx`ZHBSuM{jw)4mNA;gOHu5h~pjYe`YjQ%K+B0I3~6@tYBM zM@eN}l@~3r94LHMW0fkpsD6~KQtz*BRuXKis*C35b$88PW(?r%L3hMTm2_A^ z&&OZ^)!uKIKbCP2GHqrpUDRV5tJs%V1j^=aX>DDrtRwt@6S1@(xro8Zw6%4}h0TFj zg)pGsgoYwW@4r4?T)z#2L#pcj0Mr70^HDvBbos1U4H&|bR+xfS+RPTSHF(( zxec|Ke0YnuxsJwZf2_hH!tyw)EWE{^ylyl%_n}!k2Cv@YyRREDscSt_3z1s+s?%63 zm^fMvZmmYWq`vaR{Rf(~=?$#%^A=D00|sntsBi#bIeOFX!k$@wV0fO;SQqW?%Y4lr zMpRu4v-~0DkA7g>$kFnJ+mHOvA4X&o)D)#plWTA_35e9PT%CC38))L^K{XIsA5Xb~ zggJ%*Yqr1vgi+XTW~M;z4WoJZ(iXbbj}R4i&vG+T3|Fi%$+<*%AvLfZ%M-&$*%2os z>sqexBmZKaG0k z&X&5kNB8kHe;QHd)>aD3{xqV!o6r@a+=@aQ=%~mut-kQBEaR_%%5`GMkyS3wwbsQ% z+kj=Xj!Zy*q0L|PSa}6Ugbd|!rm|}6O*|Pnmt}Pmd-=kfNO@;F%gDWa^GzczISR>6 zJ=EJctrbkD=@;v9ke}Ar!HN57q!-3bH*O-@={dT1dhj-ny=6pY5AR_4NP`z^feYEp z?Xw9)hkyZ_3`DxP#_zj@=Lu7gPoiu?k599L7N3AfHCB06b504P7LXvV)ncS~4Ao+t zhk!b&Q=mbyF2;KxI+|m88#20bzAkRU_d+C=SZGH|s~YFuri=cXbpBNZ0`Kb~wF=|r z&Q^)ryKKB!Kl$?QI(Avc&8Yt>|EqII6tkSXq6_)PA0*+{^2_06}t?i*}bAt5#rW7$p#67*B#lJET(jK?_*z#~< z(fCe$%`;|rG^FBv1soPw&69LUUmM4!r1rMzu@nYPwxCNrIGHxTk7Z;Tzo47-%*B1J z*1L>HFtcvTM$~O;Xv^T1EUc&ioL!;8Yq7<1kPD;|6JV_{}|`22}hoZ%hMTPE9mD><;G zv4+a5?cwENNRGpkEwlFUTVZCszL)Q_iV@i%=4*?45ixz8OtHH58^wO#Ek`I0ekay_ zvU7^n@sI(}J#E%$O;=l0GIy$#q5dHJHO@-aIheFVSwea-M|%ieYZ*UpnpK2I_m^qa z8%9&2ZL1csKo>W+6blj#tz_0Q=ai^WOH8EK ziiOf_{)TCKlFFY7M2<#fa!dgaR4Ko@$SOBwh)eHM+=N89O}96-)GrldsD8yo6YrlO z>tcOe%(U@K{8=iT1lCg}&t-jH{Isqf01HR{Xj;Xle5uudQ4i{$nu5QpYnt_h#<|=o znm+!D+iYwaTvl3s)NMBO{oyu$ae3*jJ%vcUMg;!HEOI|r0n>YY(klHy8D z)BAJ9q^A#k6^j(GG3kqKO#11PQU0tHpl@RB9t^iJdGMHx$%7IblYWzpNx#{~q`zuo z(qFTf%D-hmbL{N{5KIneTOWZ^Py7BTCOvJBqnHAqopcnFJ_?_SD<(Z{<)fJN^z}Nm zKR7G{XbA?p12Lmc2rRvZ8Af(}gpDZxn*L|k(~Km=q~AO+z+?a|DQJZ+4VXg$aad)5 zc4ksc9?(usipc}olv*+Aqp%u@V$##{K8i_CE2trV9p!FFQlLxet zqhj)amXB0SdRl2xG3jXqP{pLD#V-|;9!qO_{Q`1uJ;VX+8l^5EJ?%54m^@f(W76L! z4A#dC4>0M^6$O~Czg*-E2*|-0%>Ba;4l4_2YM^4$9~&89@*r|lfJr~r#-yjc)bWGE zDnr|BO!}Q(n}9r^P3y_IG60)@_?h&yHM~$u1Fzbc^fkr=>!WN;`g|Lc0p2b)0XgV) zcd!RjY)twO#s%v=_XL>qnfC^m0+?)L((fN1q(}Li5D<`qJ~k!~2HKePBWz6iu{I|C zhKT|HNWas@q(5!rDpdc@*#zXE|Kwl~#@m?m_e=@audp%cBc}!HJvJtN#|LeCs(;;W z0&=i>hRp%E+{UDjnH{WeYGcyBXk$u&O*Y1TjyB3x==p^hGXb-#s>hmz4OENgK;e1< z4jZ9GJceHeUWQ-Hs9F+hCRe8k-aw7qeTLtezC*Y?EN`+Lnvr}TT&S@k@lmiE8xsEr zR%1cpo8XQ7zJ}%-X*3&5dEeZPB4y)F;DI(C0-nx$CzzLdTMfEp)t+#OWrI(?e-5U# zVwAVvgK5PS#ad-eqqS8O*95=FOB*B^js$tT4J!L&4# z;?rPS-AwTnFfE0qI2^e|OIRt622QKRLPl%OLV(CSKx`+;fAFvVlQG;vSy zH1Ke~r7_~6nna4nQHa~hCX)CpxQ~smf=AidUDaCTRCyZ*{@kWd0msNDmi)^GU$${U zRTQP`yr_w}2GbllYicIvsXm6>H?J1xQ;6GuRUbm!8B8lAtMCVaH}m_NnjO5fXhc0{1$Ucq72-)`oZjSl!AHPXnu47vhJ(>Q;q#A$TWW*TVGnRzouqN8o*f8j2Ce zfz{B9I0LK(GQ_uoRku!j7dYQ{U!obWV_I)%l3CbW-N};rHoWPe&6!nH2Y}U`Ea}I9 zX-{aSp9)sDu*&1NUq_r4Na$3-jlW0 z82>5R?1>qwc`0T}eRVTK&ey=Xx_2Qa=L2~uoTaIIDiU9XGj$I|?5q>GXCkf%KFqJA zpj@i~28ky@tOgXskAfeN;|Jmwz;kR|2Ht7oe}b`Irav;L!R0po6|BY^N60@u$E(Ldu25xfdsl^VEU7x#Yk zlux&aYlGF(EaJvs_4JC^OG$bGNqP*|sw7>7B=sN`l%#EOfjTHgeM9(Ou)5VG4@rhg0)jxm5%KeNRL}3ScVOC2t#u9|6-RMM}R6tZpkvPbs+H zt$8+x>mAw#=o7;=PcB%8k7V!}7(`4dx)pjS-bIO8;e}uq1hGm0ejglXJ3;;P zyLr;zqU&v078y@2t%D-i6ijP;=x`An@Me>5&4+PJY zw*|x#!Lz_0AXDl3hr#Nufb<;P19u5{DI@f+fW=*bS9-V|f}=C=38HkcADllk5a403 zx=kPt&x4!cwqUk2_y+iUd7D7`N*+!70X#$MMJ;+5TSdz7C`%KOrQ-1+mC6WQKmt|B zV!)|3ZUj!ZaVv19jXQzWK}j6S{X_KQz_@j_9v_g!p$=w*T<{cF-OG~uQ2p8v_iuvL zy)C&9)$bMVy_z`4;=>TAn_arVauCp;fnFWt{x@QI?@I2C`hhz&;!yVy(5r*47o066 zBxn%gAQz18)?erbh3JRz&$2M;n!$ghpJ#cMw)ok}liHdMz1cErC~J@7I>pot?+o$h z-y!U5fIh-DYN!EL_t+G%c<_1LbL0J`D9p{l>K>c)Sq;#wV<}T(qswy884lD0bcf4@Mal*KY!=gAy_aQ?J{ZRgo4$+aXE5 z;E;r!MwZnUM+R9BGBQnffmFRnrg)g1VWam9b|b!dAtzW0Cg zCRG0>yu}dHAGuG!>Y&UW#{Y!3`Y;}wgCcMtf#>9yalMU3%8fPdtPjqW&(SC{t-;4o z!pRjewU)WI8kJA(ZH?b1{u;d3@8F-|hku%5dh|zll@1WC=1KJ9<2~r-D?WjK4)KNb zbBw=+A2RAd2Q!X-FXC7KH?NY5_j*(+7NbHm?vxBeeJ zsPOf{wU{^0Gi%_Z$@Y0jsZD$+e)0@NSsj$QHNo_B5Kk#YHZ=u*3}%wsgFm(D`}1A! z#`}QHn+SI0R%#RFDMk_Cj$qU;aS->m^rDPaXBhBVdQm!v$AR(kU2qLB?cZhR8DP9) zS9+IL0zoP7-O;S)-9mo`bXr*me*(rGj=EMm4PI^ID4&gx|JRyYVhVar5-VnlDgBWk`J`EC}+YI3wAsmSrDE1g7hH!oe4+-HZ zcJ?AkO6&sgh7jHv!iPinLI^vX2OAg@!Yyp=lLNlYl_*i4eXL!cNSzuxCM?5N;mA?L)YipDS6VbPS(x8!F~XzuXeP8p3-+_)rL+ z4B=lw*h~zzJ35$KYR!TLT2=^m4dFuGzB8JqC;3qPc(;aV_l5A`5T@Nr?8&Gn1#^4| zr-pD|FnhJW!2)e0_j%{U?X z3-B-CRLQ5njf?=(_7iu4k-}ap$x~klH(;SeIj@z^fYcFgR>+neP{44 z=v5gQ0Dd3*oOC}NJkq2T#jO;1FcE^e5Ui38yx>^eTB|bf7&uGZdt2_GmfT;uUk6?U zJswpG|2BbN0(&HH1Al1K?*;!3u1vRbWWeVTn7DVZEcpz$7PuJ00@7auZ>bW9@gLwX z!79Kor1g*BwlWK=gPT>u@q2Tj1H6vf@ z$Ai-%vA&*UECsB6X5(kU<7#0i5UGC$ybG*S6q^ueMYRzjslN(7UK_X4N)VBTxe0Xw z4wArMf>j>ofRBQehuy%lqOi2P^spcJ9dNEpfwAEFb+KHP34&l0IMYb4E!<}^EyQq9R+8_1@ymy2Z7g1|0}~%Jstx+>AoJ= z^mR)-h79-;Jhds-wv- z;Ub0H8HfP*ZOKi+AK_U)ZpMW^9lQ(A_9LbKcJLuEeby_wyvzGq@-N_8?T|&nfAs$h6})S9 zz(QJdxdKy_G zoCP57l z#9acVd@}e7Se1c?!M}i;N&}XHW4mHWaLF%%p9ZV`{ylJ7w?HlU96Sx&NA>^5A@~Ra z6{E}GygLG8yj$SAz^c&I$i#$baH@d!&9jcotX{+Bd+Z;BTeAjPyOx|Eq@J za|o6}pe{HMUSnfD3kHCzN)PIS-vRfOoDQyqDKe_%>;#Sm*OmIg;4B;82OiW5{l9WB zAA$$r;468-GvK0vK#IHrUI_L`{SojMu<9GW2fqVWSyUNm{X4j&be{xH!|cw+R>Py^ zg2(msqL9gkraJ`Dct4XPFDL>Rfukgk13w5>DK;Jaq>Y~fuLi4jU_JPGuqw3w0KWuQ z2JQs^+Y5n8vi%U8wK+Heu09~3zX+}c9w-f>wNYn*(`5wew8H>nP{80O;Arqz>AoF! zB{)&?9boU55U8ed6a*QA12HHDx3lqla2{Bt$YSsya0BV#TJS?)l|rw97lKv0@IH7Y zc)4_cs2%EG7G?~ohT=3F^Z=_Q{1x06tdh`$v>RaK+Tgov+z4C*Rxxf3J`3I~1Iz=j z9-5c3_o)hrAH;52p%P4^bok#sDMFFgYn^`Kfss3 z)4dne92W&AF(u*zpZZwUItbHv;(gO zs}$-D{skN-uOBKICag; zt8qSN0BKV(pOv=hqe1LRaQ%Bw1}H`8{{JEb_uY$nEtB{LSf3E+EW$gW(11m)fB_zG zo{d|ByMjfYL*E@d$i}0<7QYET4p!B2 zH~6-hfg6wg;G|iB&gV<;O7J|Hn zYXsu3T)gdi#CoC;0geV|+Bg}E^5a1SaXr)8fvelN3m7%bLlGqXonW*%aPPGQBOpMX zguvoy;Ak6{fKes=`qkhVaDjBc2|V7$JHR__?)QUtgS$!hxz;lp9biL~~6w)xwb5i;j z4Ib#iG%BfY0alY0$$hRDf{lhXIgkW{!8EfC{t6GLf>X@^F9c7q@hjkMHr@xmVdE3v zT+H)Q{#^slvvI8&ovn#rqhx^b;K{x{!^~Hs`T8G>n!Xj&&F2z)Jyx6h9DLmmMx?LR zInm+*9r&zB8|y<;+)glRHIsq>oIsgmqqbzsUHW z&1NnizTLf-?|#Ek%8N>H$==Ooxx>-AUnoLDJ%OL?}JavOWj`+R`pf>$TXae ztgKXCzp?wI@3+s)cqhEeuxx~r3ylAK%)E_XK5u@)Hy<#=__zOpp&404{Lm#>2IVp4 z`}7+#S7)tT@+(>H)4t26OsCV?G82&@U-^zRW=CNzU-+F_$v5#kbDG1^Muqv&59U7R zE4gTP)E%wbWQhoKe$mXcVwiiyoZ)a}w9KUNPWztw#oWbw1FxC+IvW#+wc9u6y1Ae6 z5x2~)Wb3DV_)W8^j&E!0xc~jq_*UDG`q7LCOI!pL1pM>lU#+nsCKdnn5NfWz6k zrHWpQShoX7nwBooi~k<49Ij~qZ&+Fyzw(onId1+*Gq>q;H*rTfSw^dX+~-Pk$2!?) zkp!oFt~9sqWFuwK_&&ppb)3^jS!K<#W?QD)NYMRc4K>GLeE_H z6e!w^776gui}`M+Gc7A!7KQ~~5so7xEz?S#Nj=?E23w8@MB7);*S(wh!uz{(b!SEz zinb_4DFfjWNiZhWmo~(G(&uI+q~rOjdFLQlS%}H6nVx@_XH%FyFB+%`DxKHo6Vh$GA`P<6l}OrYC=+99y4V{>pUn zm%evb=aVm(Zr|(WW<$oePj+{(O7d%y+|3;6MOKRVAZLi_h&EPC*G_f2k)$nK+hY3E z4EIkC)>;&mBfddi_kIVn((Q=vk4N0gm~YWz?nKn@jFG(b8F#sF`FuEWrnelK>O+m5 z>Od_wMc{k*k;MqSb(-b9@9R?cS8zDSDllL97A!|DFqC&H7rwF2y1#@r9ch`j#{C@1 zXC~4j?=`d$+c&rmQ-+N8m2Py;a`<*_cBknqBa5sq_w9ev{j~#86uEcA_mI#1JoCkG zcPH!2isunuf11 z&+pu4U5?BV5-VSFpFye2koeKh?(6V7O*A+N>YDqgLvPIsK5`%R75wS`m&4g=1ldf@ zri+Dtj!0*;u^OkHuJHMlTqhqvhq8oss~X-JOKX=_4R07Wo<#hes^Rfr)LBOI<5k0( zVA1%nYT->>Project: -C:\Users\LSMushui\Desktop\RM\New-Infantry-C-Board-Legacy\̨\̨\Project.uvprojx +C:\Users\LSMushui\Desktop\RM\test-rope\̨\̨\Project.uvprojx Project File Date: 11/02/2025

Output:

*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'C:\Users\LSMushui\AppData\Local\Keil_v5\ARM\ARMCC\Bin' Rebuild target 'Target 1' assembling startup_stm32f40_41xxx.s... -compiling misc.c... compiling system_stm32f4xx.c... +compiling misc.c... compiling stm32f4xx_crc.c... -compiling stm32f4xx_adc.c... -compiling stm32f4xx_cryp_tdes.c... -compiling stm32f4xx_cryp.c... -compiling stm32f4xx_can.c... -compiling stm32f4xx_dcmi.c... -compiling stm32f4xx_dsi.c... -compiling stm32f4xx_flash_ramfunc.c... -compiling stm32f4xx_cryp_aes.c... compiling stm32f4xx_cec.c... -compiling stm32f4xx_fmpi2c.c... -compiling stm32f4xx_dac.c... compiling stm32f4xx_cryp_des.c... -compiling stm32f4xx_dfsdm.c... +compiling stm32f4xx_fmpi2c.c... +compiling stm32f4xx_cryp_tdes.c... +compiling stm32f4xx_can.c... +compiling stm32f4xx_cryp.c... compiling stm32f4xx_exti.c... -compiling stm32f4xx_dbgmcu.c... -compiling stm32f4xx_gpio.c... -compiling stm32f4xx_dma2d.c... +compiling stm32f4xx_adc.c... compiling stm32f4xx_fsmc.c... +compiling stm32f4xx_dbgmcu.c... +compiling stm32f4xx_flash_ramfunc.c... +compiling stm32f4xx_dfsdm.c... +compiling stm32f4xx_dsi.c... +compiling stm32f4xx_dac.c... +compiling stm32f4xx_gpio.c... compiling stm32f4xx_dma.c... +compiling stm32f4xx_dma2d.c... compiling stm32f4xx_flash.c... -compiling stm32f4xx_hash_md5.c... +compiling stm32f4xx_dcmi.c... +compiling stm32f4xx_cryp_aes.c... compiling stm32f4xx_hash.c... +compiling stm32f4xx_hash_md5.c... compiling stm32f4xx_hash_sha1.c... +compiling stm32f4xx_iwdg.c... compiling stm32f4xx_lptim.c... compiling stm32f4xx_i2c.c... -compiling stm32f4xx_iwdg.c... -compiling stm32f4xx_pwr.c... compiling stm32f4xx_qspi.c... -compiling stm32f4xx_ltdc.c... compiling stm32f4xx_rng.c... -compiling stm32f4xx_rcc.c... +compiling stm32f4xx_pwr.c... +compiling stm32f4xx_ltdc.c... compiling stm32f4xx_sai.c... +compiling stm32f4xx_rcc.c... compiling stm32f4xx_sdio.c... compiling stm32f4xx_spdifrx.c... -compiling Delay.c... -compiling TIM.c... -compiling stm32f4xx_syscfg.c... -compiling stm32f4xx_wwdg.c... -compiling AHRS_middleware.c... -compiling user_lib.c... -compiling stm32f4xx_spi.c... -compiling stm32f4xx_usart.c... -compiling UART.c... compiling stm32f4xx_rtc.c... +compiling stm32f4xx_syscfg.c... +compiling TIM.c... +compiling stm32f4xx_spi.c... +compiling Delay.c... +compiling stm32f4xx_wwdg.c... +compiling stm32f4xx_usart.c... +compiling AHRS_middleware.c... +compiling UART.c... +compiling user_lib.c... compiling stm32f4xx_tim.c... +compiling MyI2C.c... compiling WaveFiltering_Kalman_Filtering.c... Control\WaveFiltering_Kalman_Filtering.c(13): warning: #177-D: variable "pDst" was declared but never referenced float pDst,pDst1=1.0f; Control\WaveFiltering_Kalman_Filtering.c(13): warning: #177-D: variable "pDst1" was declared but never referenced float pDst,pDst1=1.0f; -Control\WaveFiltering_Kalman_Filtering.c(32): warning: #1-D: last line of file ends without a newline - -Control\WaveFiltering_Kalman_Filtering.c: 3 warnings, 0 errors -compiling MyI2C.c... +Control\WaveFiltering_Kalman_Filtering.c: 2 warnings, 0 errors +compiling CAN.c... compiling LED.c... compiling Buzzer.c... -compiling CAN.c... compiling Remote.c... compiling IST8310.c... -compiling BMI088.c... compiling Laser.c... +compiling BMI088.c... compiling M3508.c... compiling GM6020.c... compiling M2006.c... @@ -99,32 +97,32 @@ compiling LinkCheck.c... compiling Warming.c... compiling CToC.c... compiling CloseLoopControl.c... -compiling PID.c... compiling AttitudeAlgorithms.c... compiling IMUTemperatureControl.c... +compiling PID.c... compiling RefereeSystem.c... +compiling Keyboard.c... compiling Gimbal.c... CarBody\Gimbal.c(132): warning: #177-D: variable "lastyaw" was declared but never referenced float use_pitch=0,lastpitch=0,lastyaw=0; CarBody\Gimbal.c: 1 warning, 0 errors compiling Visual.c... -CarBody\Visual.c(117): warning: #550-D: variable "Visual_Type" was set but never used +CarBody\Visual.c(119): warning: #550-D: variable "Visual_Type" was set but never used char Visual_Type = '\0'; // 存储类型(r/b/u? -CarBody\Visual.c(120): warning: #550-D: variable "Visual_ReceiveFlag" was set but never used +CarBody\Visual.c(122): warning: #550-D: variable "Visual_ReceiveFlag" was set but never used uint8_t Visual_ReceiveFlag = 0; // 接收完成标志 -CarBody\Visual.c(126): warning: #550-D: variable "RxTimeoutTick" was set but never used +CarBody\Visual.c(128): warning: #550-D: variable "RxTimeoutTick" was set but never used static uint32_t RxTimeoutTick = 0;// 超时计时器(毫秒? -CarBody\Visual.c(290): warning: #1-D: last line of file ends without a newline +CarBody\Visual.c(292): warning: #1-D: last line of file ends without a newline */ CarBody\Visual.c(20): warning: #177-D: variable "dataType" was declared but never referenced static char dataType; // 存储类型字段?'r'/'b'/'u'? CarBody\Visual.c: 5 warnings, 0 errors -compiling Keyboard.c... -compiling stm32f4xx_it.c... compiling main.c... +compiling stm32f4xx_it.c... linking... -Program Size: Code=32220 RO-data=1372 RW-data=580 ZI-data=3372 -".\Objects\Project.axf" - 0 Error(s), 9 Warning(s). +Program Size: Code=32376 RO-data=1372 RW-data=604 ZI-data=3372 +".\Objects\Project.axf" - 0 Error(s), 8 Warning(s).

Software Packages used:

diff --git a/云台/云台/Objects/Project.htm b/云台/云台/Objects/Project.htm index f722c4a..a7d8735 100644 --- a/云台/云台/Objects/Project.htm +++ b/云台/云台/Objects/Project.htm @@ -3,7 +3,7 @@ Static Call Graph - [.\Objects\Project.axf]

Static Call Graph for image .\Objects\Project.axf


-

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Mon Jan 12 16:05:33 2026 +

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Tue Mar 10 14:28:10 2026

Maximum Stack Usage = 280 bytes + Unknown(Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

@@ -121,7 +121,7 @@ Global Symbols

__main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
[Address Reference Count : 1]

  • startup_stm32f40_41xxx.o(.text)
-

_main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001)) +

_main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))

_main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))

[Calls]

  • >>   __scatterload @@ -131,17 +131,17 @@ Global Symbols

    [Called By]
    • >>   __scatterload
    -

    _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) +

    _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) -

    _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) +

    _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) -

    _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) +

    _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) -

    __rt_lib_shutdown_fini (Thumb, 0 bytes, Stack size unknown bytes, entry12b.o(.ARM.Collect$$$$0000000E)) +

    __rt_lib_shutdown_fini (Thumb, 0 bytes, Stack size unknown bytes, entry12b.o(.ARM.Collect$$$$0000000E)) -

    __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000F)) +

    __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000F)) -

    __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$00000011)) +

    __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$00000011))

    Reset_Handler (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32f40_41xxx.o(.text))
    [Address Reference Count : 1]

    • startup_stm32f40_41xxx.o(RESET) @@ -368,9 +368,9 @@ Global Symbols
    • >>   __aeabi_memclr
    -

    __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

    __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) -

    __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

    __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

    __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text))

    [Calls]

    • >>   __aeabi_memset @@ -382,7 +382,7 @@ Global Symbols

      [Called By]
      • >>   AHRS_update
      -

      __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

      __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

      _memset$wrapper (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED)

      [Calls]

      • >>   __aeabi_memset @@ -432,7 +432,7 @@ Global Symbols

        [Called By]
        • >>   Visual_SendData
        -

        __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) +

        __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)

        __aeabi_uidivmod (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)

        [Called By]

        • >>   _printf_core @@ -457,7 +457,7 @@ Global Symbols
        • >>   __aeabi_d2ulz
        -

        _ll_shift_l (Thumb, 0 bytes, Stack size 0 bytes, llshl.o(.text), UNUSED) +

        _ll_shift_l (Thumb, 0 bytes, Stack size 0 bytes, llshl.o(.text), UNUSED)

        strtol (Thumb, 112 bytes, Stack size 32 bytes, strtol.o(.text))

        [Stack]

        • Max Depth = 72
        • Call Chain = strtol ⇒ _strtoul @@ -469,9 +469,9 @@ Global Symbols
          [Called By]
          • >>   atoi
          -

          __I$use$fp (Thumb, 0 bytes, Stack size 0 bytes, iusefp.o(.text), UNUSED) +

          __I$use$fp (Thumb, 0 bytes, Stack size 0 bytes, iusefp.o(.text), UNUSED) -

          _float_round (Thumb, 18 bytes, Stack size 0 bytes, fepilogue.o(.text), UNUSED) +

          _float_round (Thumb, 18 bytes, Stack size 0 bytes, fepilogue.o(.text), UNUSED)

          _float_epilogue (Thumb, 92 bytes, Stack size 4 bytes, fepilogue.o(.text))

          [Stack]

          • Max Depth = 4
          • Call Chain = _float_epilogue @@ -527,7 +527,7 @@ Global Symbols
            [Called By]
            • >>   _main_scatterload
            -

            __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) +

            __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)

            __aeabi_llsr (Thumb, 32 bytes, Stack size 0 bytes, llushr.o(.text))

            [Called By]

            • >>   _double_epilogue @@ -535,13 +535,13 @@ Global Symbols
            • >>   __aeabi_d2ulz
            -

            _ll_ushift_r (Thumb, 0 bytes, Stack size 0 bytes, llushr.o(.text), UNUSED) +

            _ll_ushift_r (Thumb, 0 bytes, Stack size 0 bytes, llushr.o(.text), UNUSED)

            __aeabi_lasr (Thumb, 36 bytes, Stack size 0 bytes, llsshr.o(.text), UNUSED)

            [Called By]

            • >>   __aeabi_dadd
            -

            _ll_sshift_r (Thumb, 0 bytes, Stack size 0 bytes, llsshr.o(.text), UNUSED) +

            _ll_sshift_r (Thumb, 0 bytes, Stack size 0 bytes, llsshr.o(.text), UNUSED)

            __rt_ctype_table (Thumb, 4 bytes, Stack size 0 bytes, ctype_o.o(.text))

            [Called By]

            • >>   strtol @@ -575,9 +575,9 @@ Global Symbols

              [Called By]
              • >>   _strtoul
              -

              __decompress (Thumb, 0 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED) +

              __decompress (Thumb, 0 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED) -

              __decompress1 (Thumb, 86 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED) +

              __decompress1 (Thumb, 86 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED)

              AHRS_asinf (Thumb, 24 bytes, Stack size 16 bytes, ahrs_middleware.o(i.AHRS_asinf))

              [Stack]

              • Max Depth = 48
              • Call Chain = AHRS_asinf ⇒ __hardfp_asinf ⇒ sqrtf @@ -1302,7 +1302,7 @@ Global Symbols
                [Called By]
                • >>   TIM6_DAC_IRQHandler
                -

                Gimbal_PitchControl (Thumb, 540 bytes, Stack size 24 bytes, gimbal.o(i.Gimbal_PitchControl)) +

                Gimbal_PitchControl (Thumb, 444 bytes, Stack size 24 bytes, gimbal.o(i.Gimbal_PitchControl))

                [Stack]

                • Max Depth = 24
                • Call Chain = Gimbal_PitchControl

                [Calls]
                • >>   PID_PositionCalc @@ -1319,7 +1319,7 @@ Global Symbols
                  [Called By]
                  • >>   Gimbal_MoveControl
                  -

                  Gimbal_YawControl (Thumb, 508 bytes, Stack size 8 bytes, gimbal.o(i.Gimbal_YawControl)) +

                  Gimbal_YawControl (Thumb, 518 bytes, Stack size 8 bytes, gimbal.o(i.Gimbal_YawControl))

                  [Stack]

                  • Max Depth = 64
                  • Call Chain = Gimbal_YawControl ⇒ GM6020_CAN2SetLIDVoltage ⇒ CAN_TransmitStatus

                  [Calls]
                  • >>   PID_PositionCalc @@ -1407,7 +1407,7 @@ Global Symbols

                    [Called By]
                    • >>   Remote_Init
                    -

                    IWDG_ReloadCounter (Thumb, 10 bytes, Stack size 0 bytes, stm32f4xx_iwdg.o(i.IWDG_ReloadCounter)) +

                    IWDG_ReloadCounter (Thumb, 10 bytes, Stack size 0 bytes, stm32f4xx_iwdg.o(i.IWDG_ReloadCounter))

                    [Called By]

                    • >>   main
                    @@ -2038,7 +2038,7 @@ Global Symbols

                  [Address Reference Count : 1]
                  • startup_stm32f40_41xxx.o(.text)
                  -

                  TIM1_TRG_COM_TIM11_IRQHandler (Thumb, 308 bytes, Stack size 8 bytes, attitudealgorithms.o(i.TIM1_TRG_COM_TIM11_IRQHandler)) +

                  TIM1_TRG_COM_TIM11_IRQHandler (Thumb, 366 bytes, Stack size 8 bytes, attitudealgorithms.o(i.TIM1_TRG_COM_TIM11_IRQHandler))

                  [Stack]

                  • Max Depth = 280
                  • Call Chain = TIM1_TRG_COM_TIM11_IRQHandler ⇒ AHRS_update ⇒ accel_comple_filter ⇒ accel_update_kp_ki ⇒ AHRS_invSqrt ⇒ __hardfp_sqrtf

                  [Calls]
                  • >>   TIM_GetITStatus @@ -2342,8 +2342,8 @@ Global Symbols
                    [Called By]
                    • >>   main
                    -

                    Visual_SendData (Thumb, 86 bytes, Stack size 32 bytes, visual.o(i.Visual_SendData)) -

                    [Stack]

                    • Max Depth = 184
                    • Call Chain = Visual_SendData ⇒ UART2_Printf ⇒ UART2_SendString ⇒ UART2_SendByte +

                      Visual_SendData (Thumb, 116 bytes, Stack size 24 bytes, visual.o(i.Visual_SendData)) +

                      [Stack]

                      • Max Depth = 176
                      • Call Chain = Visual_SendData ⇒ UART2_Printf ⇒ UART2_SendString ⇒ UART2_SendByte

                      [Calls]
                      • >>   UART2_Printf
                      • >>   __aeabi_f2d @@ -2453,16 +2453,20 @@ Global Symbols
                        [Called By]
                        • >>   TIM7_IRQHandler
                        +

                        ZeroOffset_Calibration (Thumb, 110 bytes, Stack size 0 bytes, attitudealgorithms.o(i.ZeroOffset_Calibration)) +

                        [Called By]

                        • >>   main +
                        +

                        __0vsprintf (Thumb, 30 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf), UNUSED)

                        [Calls]

                        • >>   _sputc
                        • >>   _printf_core
                        -

                        __1vsprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf), UNUSED) +

                        __1vsprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf), UNUSED) -

                        __2vsprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf), UNUSED) +

                        __2vsprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf), UNUSED) -

                        __c89vsprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf), UNUSED) +

                        __c89vsprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf), UNUSED)

                        vsprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf))

                        [Stack]

                        • Max Depth = 24
                        • Call Chain = vsprintf @@ -2482,7 +2486,7 @@ Global Symbols
                        • >>   atoi
                        -

                        __rt_errno_addr (Thumb, 0 bytes, Stack size 0 bytes, errno.o(i.__aeabi_errno_addr), UNUSED) +

                        __rt_errno_addr (Thumb, 0 bytes, Stack size 0 bytes, errno.o(i.__aeabi_errno_addr), UNUSED)

                        __hardfp_asinf (Thumb, 258 bytes, Stack size 16 bytes, asinf.o(i.__hardfp_asinf))

                        [Stack]

                        • Max Depth = 32
                        • Call Chain = __hardfp_asinf ⇒ sqrtf @@ -2569,11 +2573,11 @@ Global Symbols
                        • >>   __hardfp_cosf
                        -

                        __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) +

                        __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) -

                        __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) +

                        __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) -

                        __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) +

                        __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)

                        __set_errno (Thumb, 6 bytes, Stack size 0 bytes, errno.o(i.__set_errno))

                        [Called By]

                        • >>   sqrtf @@ -2597,16 +2601,17 @@ Global Symbols

                          [Called By]
                          • >>   TIM1_TRG_COM_TIM11_IRQHandler
                          -

                          main (Thumb, 132 bytes, Stack size 0 bytes, main.o(i.main)) +

                          main (Thumb, 142 bytes, Stack size 0 bytes, main.o(i.main))

                          [Stack]

                          • Max Depth = 204
                          • Call Chain = main ⇒ AttitudeAlgorithms_Init ⇒ AHRS_init ⇒ angle_to_quat ⇒ AHRS_sinf ⇒ __hardfp_sinf ⇒ __mathlib_rredf2
                          -
                          [Calls]
                          • >>   IWDG_ReloadCounter +
                            [Calls]
                            • >>   IWDG_ReloadCounter
                            • >>   Remote_Init
                            • >>   LED_BON
                            • >>   UART2_Printf
                            • >>   Delay_us
                            • >>   Delay_s
                            • >>   RefereeSystem_Init +
                            • >>   ZeroOffset_Calibration
                            • >>   AttitudeAlgorithms_Init
                            • >>   CloseLoopControl_Init
                            • >>   CToC_MasterSendData diff --git a/云台/云台/Objects/Project_Target 1.dep b/云台/云台/Objects/Project_Target 1.dep index d490360..8b7b6d8 100644 --- a/云台/云台/Objects/Project_Target 1.dep +++ b/云台/云台/Objects/Project_Target 1.dep @@ -1926,7 +1926,7 @@ I (.\System\UART.h)(0x669D08B6) I (.\Function\Warming.h)(0x66A19ADE) I (.\CarBody\RefereeSystem.h)(0x66A1C17E) F (.\Hardware\Remote.h)(0x67DE79C2)() -F (.\Hardware\BMI088.c)(0x65F6838A)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\AHRS -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186 -IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -DARM_MATH_CM4 -D__FPU_PRESENT="1U" -o .\objects\bmi088.o --omf_browse .\objects\bmi088.crf --depend .\objects\bmi088.d) +F (.\Hardware\BMI088.c)(0x6975623B)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\AHRS -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186 -IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -DARM_MATH_CM4 -D__FPU_PRESENT="1U" -o .\objects\bmi088.o --omf_browse .\objects\bmi088.crf --depend .\objects\bmi088.d) I (.\Start\stm32f4xx.h)(0x66256792) I (.\Start\core_cm4.h)(0x64D03162) I (C:\Users\LSMushui\AppData\Local\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E8E3CC2) @@ -2273,7 +2273,7 @@ I (.\Library\stm32f4xx_dcmi.h)(0x64D03164) I (.\Library\stm32f4xx_fsmc.h)(0x64D03164) I (.\Hardware\Remote.h)(0x67DE79C2) I (Function\CToC.h)(0x669D31F6) -I (.\User\Parameter.h)(0x69301917) +I (.\User\Parameter.h)(0x697F8867) I (.\CarBody\RefereeSystem.h)(0x66A1C17E) F (.\Function\CToC.h)(0x669D31F6)() F (.\Function\CloseLoopControl.c)(0x68AEFC16)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\AHRS -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186 -IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -DARM_MATH_CM4 -D__FPU_PRESENT="1U" -o .\objects\closeloopcontrol.o --omf_browse .\objects\closeloopcontrol.crf --depend .\objects\closeloopcontrol.d) @@ -2318,7 +2318,7 @@ I (Function\Warming.h)(0x66A19ADE) I (.\CarBody\Gimbal.h)(0x67B825A8) I (.\CarBody\Visual.h)(0x67B846AB) F (.\Function\CloseLoopControl.h)(0x65B10F2C)() -F (.\Function\AttitudeAlgorithms.c)(0x67B86322)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\AHRS -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186 -IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -DARM_MATH_CM4 -D__FPU_PRESENT="1U" -o .\objects\attitudealgorithms.o --omf_browse .\objects\attitudealgorithms.crf --depend .\objects\attitudealgorithms.d) +F (.\Function\AttitudeAlgorithms.c)(0x69AFB9F0)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\AHRS -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186 -IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -DARM_MATH_CM4 -D__FPU_PRESENT="1U" -o .\objects\attitudealgorithms.o --omf_browse .\objects\attitudealgorithms.crf --depend .\objects\attitudealgorithms.d) I (.\Start\stm32f4xx.h)(0x66256792) I (.\Start\core_cm4.h)(0x64D03162) I (C:\Users\LSMushui\AppData\Local\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E8E3CC2) @@ -2360,7 +2360,7 @@ I (.\AHRS\AHRS_MiddleWare.h)(0x64E14258) I (.\AHRS\struct_typedef.h)(0x64E14258) I (.\Control\WaveFiltering_Kalman_Filtering.h)(0x67B835FF) I (C:\Users\LSMushui\AppData\Local\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5E8E3CC2) -F (.\Function\AttitudeAlgorithms.h)(0x660A3E88)() +F (.\Function\AttitudeAlgorithms.h)(0x6970B202)() F (.\Function\IMUTemperatureControl.c)(0x69635FAB)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\AHRS -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186 -IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -DARM_MATH_CM4 -D__FPU_PRESENT="1U" -o .\objects\imutemperaturecontrol.o --omf_browse .\objects\imutemperaturecontrol.crf --depend .\objects\imutemperaturecontrol.d) I (.\Start\stm32f4xx.h)(0x66256792) I (.\Start\core_cm4.h)(0x64D03162) @@ -2437,12 +2437,12 @@ I (.\Library\stm32f4xx_dcmi.h)(0x64D03164) I (.\Library\stm32f4xx_fsmc.h)(0x64D03164) I (Control\PID.h)(0x68BF8A63) F (.\Control\PID.h)(0x68BF8A63)() -F (.\Control\WaveFiltering_Kalman_Filtering.c)(0x67B836EC)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\AHRS -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186 -IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -DARM_MATH_CM4 -D__FPU_PRESENT="1U" -o .\objects\wavefiltering_kalman_filtering.o --omf_browse .\objects\wavefiltering_kalman_filtering.crf --depend .\objects\wavefiltering_kalman_filtering.d) +F (.\Control\WaveFiltering_Kalman_Filtering.c)(0x6970BD73)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\AHRS -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186 -IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -DARM_MATH_CM4 -D__FPU_PRESENT="1U" -o .\objects\wavefiltering_kalman_filtering.o --omf_browse .\objects\wavefiltering_kalman_filtering.crf --depend .\objects\wavefiltering_kalman_filtering.d) I (Control\WaveFiltering_Kalman_Filtering.h)(0x67B835FF) I (C:\Users\LSMushui\AppData\Local\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E8E3CC2) I (C:\Users\LSMushui\AppData\Local\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5E8E3CC2) F (.\Control\WaveFiltering_Kalman_Filtering.h)(0x67B835FF)() -F (.\CarBody\Gimbal.c)(0x6964AB09)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\AHRS -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186 -IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -DARM_MATH_CM4 -D__FPU_PRESENT="1U" -o .\objects\gimbal.o --omf_browse .\objects\gimbal.crf --depend .\objects\gimbal.d) +F (.\CarBody\Gimbal.c)(0x697F878B)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\AHRS -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186 -IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -DARM_MATH_CM4 -D__FPU_PRESENT="1U" -o .\objects\gimbal.o --omf_browse .\objects\gimbal.crf --depend .\objects\gimbal.d) I (.\Start\stm32f4xx.h)(0x66256792) I (.\Start\core_cm4.h)(0x64D03162) I (C:\Users\LSMushui\AppData\Local\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E8E3CC2) @@ -2477,10 +2477,10 @@ I (.\Library\stm32f4xx_can.h)(0x64D03164) I (.\Library\stm32f4xx_dac.h)(0x64D03164) I (.\Library\stm32f4xx_dcmi.h)(0x64D03164) I (.\Library\stm32f4xx_fsmc.h)(0x64D03164) -I (.\User\Parameter.h)(0x69301917) +I (.\User\Parameter.h)(0x697F8867) I (.\Control\PID.h)(0x68BF8A63) I (.\Hardware\Remote.h)(0x67DE79C2) -I (.\Function\AttitudeAlgorithms.h)(0x660A3E88) +I (.\Function\AttitudeAlgorithms.h)(0x6970B202) I (.\Motor\M3508.h)(0x669D1100) I (.\Motor\M2006.h)(0x669D1190) I (.\Motor\GM6020.h)(0x669D1130) @@ -2531,7 +2531,7 @@ I (.\Function\Warming.h)(0x66A19ADE) I (.\Hardware\Remote.h)(0x67DE79C2) F (.\CarBody\RefereeSystem.h)(0x66A1C17E)() F (.\Carbody\RefereeSystem_CRCTable.h)(0x66A1BDA0)() -F (.\CarBody\Visual.c)(0x69649AAC)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\AHRS -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186 -IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -DARM_MATH_CM4 -D__FPU_PRESENT="1U" -o .\objects\visual.o --omf_browse .\objects\visual.crf --depend .\objects\visual.d) +F (.\CarBody\Visual.c)(0x697F8634)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\AHRS -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186 -IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -DARM_MATH_CM4 -D__FPU_PRESENT="1U" -o .\objects\visual.o --omf_browse .\objects\visual.crf --depend .\objects\visual.d) I (.\Start\stm32f4xx.h)(0x66256792) I (.\Start\core_cm4.h)(0x64D03162) I (C:\Users\LSMushui\AppData\Local\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E8E3CC2) @@ -2569,7 +2569,7 @@ I (.\Library\stm32f4xx_fsmc.h)(0x64D03164) I (CarBody\Visual.h)(0x67B846AB) I (.\System\UART.h)(0x669D08B6) I (CarBody\Gimbal.h)(0x67B825A8) -I (.\Function\AttitudeAlgorithms.h)(0x660A3E88) +I (.\Function\AttitudeAlgorithms.h)(0x6970B202) I (.\System\Delay.h)(0x64FBE4AA) I (.\Hardware\Buzzer.h)(0x6513BE16) I (.\Motor\GM6020.h)(0x669D1130) @@ -2616,7 +2616,7 @@ I (.\Library\stm32f4xx_fsmc.h)(0x64D03164) I (.\System\UART.h)(0x669D08B6) I (.\Hardware\Remote.h)(0x67DE79C2) F (.\CarBody\Keyboard.h)(0x66A1BD42)() -F (.\User\main.c)(0x69634FEE)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\AHRS -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186 -IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -DARM_MATH_CM4 -D__FPU_PRESENT="1U" -o .\objects\main.o --omf_browse .\objects\main.crf --depend .\objects\main.d) +F (.\User\main.c)(0x6970AF7D)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\AHRS -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186 -IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -DARM_MATH_CM4 -D__FPU_PRESENT="1U" -o .\objects\main.o --omf_browse .\objects\main.crf --depend .\objects\main.d) I (.\Start\stm32f4xx.h)(0x66256792) I (.\Start\core_cm4.h)(0x64D03162) I (C:\Users\LSMushui\AppData\Local\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E8E3CC2) @@ -2672,15 +2672,15 @@ I (.\Function\LinkCheck.h)(0x65FBCE1A) I (.\Function\CloseLoopControl.h)(0x65B10F2C) I (.\Function\CToC.h)(0x669D31F6) I (.\Function\IMUTemperatureControl.h)(0x65C36CAE) -I (.\Function\AttitudeAlgorithms.h)(0x660A3E88) +I (.\Function\AttitudeAlgorithms.h)(0x6970B202) I (.\Function\Warming.h)(0x66A19ADE) -I (User\Parameter.h)(0x69301917) +I (User\Parameter.h)(0x697F8867) I (.\CarBody\Gimbal.h)(0x67B825A8) I (.\CarBody\Visual.h)(0x67B846AB) I (.\CarBody\RefereeSystem.h)(0x66A1C17E) I (.\CarBody\Keyboard.h)(0x66A1BD42) F (.\User\RM_C.h)(0x66A2BE9A)() -F (.\User\Parameter.h)(0x69301917)() +F (.\User\Parameter.h)(0x697F8867)() F (.\User\stm32f4xx_conf.h)(0x64D03180)() F (.\User\stm32f4xx_it.c)(0x64D032D2)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\AHRS -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186 -IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -DARM_MATH_CM4 -D__FPU_PRESENT="1U" -o .\objects\stm32f4xx_it.o --omf_browse .\objects\stm32f4xx_it.crf --depend .\objects\stm32f4xx_it.d) I (User\stm32f4xx_it.h)(0x64D03180) diff --git a/云台/云台/Objects/attitudealgorithms.crf b/云台/云台/Objects/attitudealgorithms.crf index a5254d631de7c5aa2147770b55681e0246c6d56d..6c28ba67921f544fa225fbc883cf1187a70cbc53 100644 GIT binary patch delta 1664 zcmaJ?U2IfE6rP!#oo?$2OaEx;vYnQeQjRD;0$V6nsnV8$^bbwP#CCygyM=URd)tZv zy+$J@#Gq($4aWFT@RtNMCi4Ii-!uq3l&af%1q)TF7>$WRF+SkA+eL{F-Q*vIb-LgId^wOc1AlITHC@amMtZJ z+QlRg@=`+P{-@Yc8`%}xmWUX!cpv%It|%hDS*4V)%W6*g1GVviK4ZhKNHil=2;y}cz*dnB1%TEy;PV_sGLV1YpCsT*{w!mV7uYI@3YK{ ze7R>*g;H7tnm#Bd5o{(yxyeO^}!@R;^h&Omg&mNoN~U+q+|NttK26_Lneha zXlv0PLaQ~Y$GMBVOkoFlT_)|-ZBzV{{IZqku12dtOB3M{#9PtQRH^T|#s6N-(T!_Z z?aiP8Hwz`9VVe1_ULW?#`N97S-63M@{ad|XdS;?{tZ2LU>6sW8^k41X>vSecyT0{= zH^672oHziTUJadMN^oq%&~v**%d|YuHA_#~TZ4Bs{>@TUQQ=9A0J8J^JP$v6yk3ez~>quvo-#2idyiuoz^1 zcV_9SF4tqPiydB$L$BA>N5l~2xP#qVzbP!radPkJmbb)ff@994_0x#h?o!9CrlX?7 zUB$=NfQxXI$E_nr#UYNv|3WW0Ci1eX>RBDuHqsniC1E40L4341xK=_V3nM<(9DGnh z1H0duP2On^*2>@;6zi%p>5%p8386Ud-?YY0h~5yQYmSecZcb5b$4@?;hOo(`mvrQ$ z_^cu`gS^sS<~8X-YiUyC@+~GkVAUrD6t{BdIB9nr_*CcUBeJEF#yn@ujL$~m$!7o~h?nRvz4 z`AHEP9z<`*q*K`3r~;paL4FhQMFp7>hWHI^bWFi438{)8&PTD6uN2Idh#^7S(Ea+h z+fQ52{pPl7&?YB~BozcCn3PSR)_BV4XD~=%kc~LQvx%Jw84QN7685%JMjQomq}y@{ zg9Q{8Ft_*>l+4K-jIoae}1=$jM7{nO#GMrZle*BVxoOH2KN07@3isW-n0r^fr zNJ24#VhY6`C}&Vkq1-e4Dv~A?tdQMEx}u=UJx{z`JXl!A@I0Z0Uv%=wRRwht>KQH{ z?*h*OHt}CDcT&NVvI;xU2IfE6rPzqcXqqoEk)W*x7}TaWi4e7*rY;PBWZ0Lt?df9jr{aNghY^t5yixx z2O~G(0X0%7RR@TbRJJAsO{f|tJ`nXq5?W0ti*EN)poaSQYQlro=(&X&<3n%q-F)Yp z@0>d`=j2`(uY2ucU8q>bnBWYjZT9(SDCrM=@Xhpj$>?c2l<^{`s)Hj^lSlw+;99>pcw!iqHU9K(t>t}cbMzffCF?m{C9KnM+nG7+~JrYqzLtd z2Oa*X>t{zeb~=2}RQw8`MN&1iP)kS>=8X-+n+cTQS<(FTH~hH{DC{#c>nuO7^s>B? zs|e(bo7s$|;<5i1`cILwCbPvF^DSg4=%u#x@Dq|t;1AZZxv)O&dL(i#01;Ep`yk=VJFOyhm&%KAej^pm3GQ zxr^9`xmbsa9p|+7w8P)lYtKm=Xcz|dz&W|kW1#t{j6kEq|1fo<@~agq!t7{o%A$-l zfL(Bg=BvLqB^~~{Th5O4rUJCmrpq>l)a}h-H?)wUU}IPj#|?al!YlLPMt+LI@8`o!e2}i^2OBFC zZWlo+Rh;7+1?D*BL^UasbIK-h5PRtRVzDb($;OC!!>wVijWKUZXn<&LPzjn6OhVqR zW>;-YD?~xpP932}U?U7s?v#zK>T#-j&Biu`j|kk#aT}kYl eG?!a_xXnk>c{;(gjU5U%bF{_7MW7!aOa23W+F=v` diff --git a/云台/云台/Objects/bmi088.crf b/云台/云台/Objects/bmi088.crf index 5d1b9e92e85a2f9a8e75b4a21ba20ada03e735e1..190d226fc2d588ac5f73e813511731c569d3aef5 100644 GIT binary patch delta 2690 zcmbVOYiv|S6rQ>F&VUQu+NzZD(A!F;D@IHxP%4k|EFp%ZDPnR#Xw?ES@`FDb4KdpW zwLxCiR>lNkmC!dU0TEkh94-D2G5x_d+DY%#7)k3=bSV5 z%z4h;iq?@8ts`qjb6@Dlxs#m0Z~EFaUYy1$kO5@6Y1}F}^JI@vNX0#bUW6ScKm|f2 zK&D&OYQ-_%Q55X33Tcpw52VhNXMyN*E zi%^Gf2%yYOylRyXAERHa$L$&p;7Wrw)_`oIT$Rs81;uG#O4LHKiHZv-{~5tM?hj;d zBJ?8MNAO%I#e>Tbwnw27R|soV5?bxYO`?X7&D5M}$GfZVTFWLg^s+&o9nT7qy_mH- z`cyQ2+s#R5gJ^OWW;+rA`tk$9Nq|nddIHNCa{`v88b!7}q9YTY|50DF-0%dp)c3NN znizA((Iy(whLhB@WQ$LnLLQUVpUFu07<7s&vseQUcp3Dv)lViSxofi7D4#DH^+NZ{ z9F{wn*2(5O)^HlBQf}m6&n8Ayrd}X-<07^3&WJ|oxzt|;=DBMeHkW$mo|h*Uv%=s* z<|G~(rr7^LPWrm`Kb`7T?(rpTwc&ZSTh3m_Ldl->zA4-%lk!+byca#rK#5$M$L>BF z8;NfBu{x0nDuw*y|L;1Um0#zx=L#CJ;JU}WrqC^=^Q@a5tKOzEiSpC^3AQM~{%k^s z@c^6jfsE;y!qG`|r@zWFO)u!fvZ#QCQU(fIs@bF}o}NyWPvx=aV}gIn-MXClY2YFK zZk8=8*yDkR^z^nHx02Og^hLM#x2nOwZ=I3=f?tKSC*%AXC<4^Pbe`9rl`f zf^3@VUulb-Sd8fHmEfM9#~0AC(c9&W8cb@Y`nS_UdS4}yJ&|SP9>nYJm^)`apEzWk zR}Zh>;D$Rmy}$V?l{;VJH8I5*FIOz$xdV1{&}~`7SFnB$!oGhKygQZ^bK`fq%a`!| z8D96i?~WkUhEmsGJ{lHhog!tD%JySw2Tqp zOH*VQD1HU{5PbL;s0KDPS~OYtNwXuS+2VINx56??;f=$N$g;sH0~|8IAw%2;Wg(nV zWYTwF!*_ba4lq{%R0*^TlvN7>s!jSHG~yAxqZBk{KwC^Y0fgT>VulU246p@mn#N5K z9@WBKAgBVWHjP`#M~-RX7Ss4v9`53klCh(7BkBIpZKJzooJ{EEpAM+ba}Ra%Z8QkI zExHZsgc?eeBkmZs*axN02KJI8Hk-EC4Q#D?jI=qBb6b=`AV_5<#dq2ru^psMuxW!D zMlL&|7T9*2fwdqLwE)eaxZ;STpa`R49V$WqXzhmp-#Kt(GA?Zkl8z;={v(Y_zo(8=H4+u&Ogi?YsgcP@; z#SG`+l}cVp}zENnJ~Do#1zZ^=J+92`UH<5V!;l z2;aCP+RWlHL%bKO4f*4JGeVxcZ(3TDd^3ed~J@y$IP6@tI_NsdErH#9qEVYx#OKm z#(UlLL_S1|?4;z@ksI{{O#~+qZpoY}Jbhv_E=@I#?Rv(G41E8CzRq_$rtqcK+jJ<@ z5cD&5f@EaKGdw{($G)=Q6!Da-flLO%r=TafGKJTRct3-Fwg$+=9Cu9`A7@#?s297t z(|N{F-8JOhclfx+Ws;v{aq*gOlcFk7Ggwb(pf>&)!6081_U?`nvW%oeEWM^Aet;`(EvnFK6<)NZ)$j6jsZKWjs0DkDgk7hg`ah z_lz1a60heIyfQ|q7X9T@EEXAqHtu@&{9>_!4|I@sL=Jk_l+y1m z?{b$f5mm{4!)$OT7K#kh7u<34q)3l7J9YiK+fpM!G~R_7`PS{I72)x`8`sz5y_;eo zzlF;#nbs}}#FSGL7}kI$km`5kIFMO*o^dr zsmGu%M*_Q0aU1C~^kEy)e%w%RY7F^Mh zkC5^V9D-oD{VPB`W+?))vs5K%1uwty>LYHy!xR sup4pJ?m&-W7vrkKfnw9XhkkTA_=gX#CM?nqSgfB-J@b;un9gGV1pF diff --git a/云台/云台/Objects/ctoc.crf b/云台/云台/Objects/ctoc.crf index 3d9358e20ec0f74955b92fa5366c4745b21521d6..3a01b39d15298ad88a9ac8e9bca139c92b7f6cf1 100644 GIT binary patch delta 49 ycmdnLQF{MI=?yY$T+b)`JI%%b1RtB#*xJ?D7=f4xh?#+y1&CRrG_)!5i(UIGAwo(;PI diff --git a/云台/云台/Objects/gimbal.crf b/云台/云台/Objects/gimbal.crf index ff5c3398615ec4a3fdcb6d3128afca7b788902cb..f0f876f79e5503e65986a11536abed39912644d0 100644 GIT binary patch delta 6069 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 delta 5972 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 HlkEQksijd` diff --git a/云台/云台/Objects/main.crf b/云台/云台/Objects/main.crf index b4b3aac8b1c7ffc7ea576764f4f12a7ee9dc8813..91ad93a065ed92cd958841dc2fc2f4bf01dc7399 100644 GIT binary patch delta 1395 zcmYk+e{54#6bJBo-(FvTtaLxvK*nT;ZIXz=kO3jQ+uJ=|jM2mx6Z8*~cWN0OERL0Q zHM)Q76;u?4@B_J^|h8SW@l(fWTN@AiBMMVSz{B9$QO>Xje=l(e7 z+}C#b+4@6g>!atwLReCGCs~}_A1#F<%P*Wh;|P3CZMYP2BR{RZIr^C2Fekh{a^w5k zv+XN}!YhZu62rnMD-4Bg`_j|~Q8^_bg_yV?oy|Pj(b1F6CEHS6oeQ(6TxX_RTr6C; zX3q=c2RPjRbT*spO+6zXD%J|BX_Ueq;PR2^vd&!l67gKIQjmkV9AKv>m&&EZ?qbDQ zD6lk@eM&SH$B#wAsqS27GM8B8@NV z`K=(`eeiw8?Xpd>5&%mV$ZlkME+PD+pfoT~vM<`LFp3`ISYxN{+bhs{kzq{`HkZY2b#hg47P& z^i_ybz%5^eDG3->5jqb%&uSc<1D3Oj(YL?~R+aP(@B*tU`WkqVRlbJ4f?i@(OJ{(U ztR~Qxz{{*A(igxhtR~Utz$#XCbQ)OAYBHSy`dHP|31AJYDRc~Yl~n^B0bXN8Q~=hp zYNUg}I#x||0L`uEIGT%FRDquJ8#o>`vJ-rr<9G#&p^Y358<~dQ;CRHycI@hBja}NJ z5W;V=wvFt7HjQX_>07J=!%H2pnRSRh0|r<}={T^3^*A~Tyv;g>m+FYEtSjhH$;pd% zSXYh|xQ%rc3UtJF*44BR*ui={?FHUtT|;|-ovdp|UdkZrNwgD@_gL4_4&Z&(lW809 z0qc6&3hZKiCv5?Cvz|hmfjz7nXcN9uAF`f`?^K=1%g0Lf&26(8MzQg9Ol+#IHT2~AF=8Px8jU8=qR`1D({1ijmRs-#Buf_43EN`y#=2^|?`XqamwEmopKUvZE9~Y6TC;$Ke delta 1343 zcmYk+Yiv|S6bJB`%k90p+wJxZQYt;R6(0l@4Wf5;wilzu=tsX0l6&g*MNy!ntY|;& z2r4KAm5K$5fJiF}2ra_$7BwcmB8f4IyM8GeKM9HtL|*#et!dokCcim*=FFM7vwQGV z?ebH#(bHieEGhgGEKUwbbD_wpt2_5O0-taC&WF56|H#Qt3&XR0v%=dW=eDl-yfFM} z#b|itXjtO0@Jz^zhHd+N#=UIcQ1>%G2XQ&T&eBve)h>2tOUFY+i;~?>h{kN?cqE)$oLbPF>RKWeWG9YCqwR~^7xgr^ zb}j7c7B^-q1cmAw3yX!?+83sh%}u6&RG1)Q_Pn#cg9H*Q{J7i!#fk zv#!@}Fmg^Ny4I;#Vb3wLxBu31x2~jEte!W`G19L#awIda+>O|FjghfTXSF-Swd;&* z$!x53dmVeCk#qZRX>h08lZ|||e{O>tuejOB*|}ozeK5NiC2lhE?*5?$cPL$Dq{>Ca z*}#)VdKMi<(z(EkA*sU1yK=7hCGbj(3_-sJUYU^&bUyIPjkKZP0uOl>^n2h{8Y!SZ z0uN=cL4O7wy1fEj2t2fP3HmGWCK-7Vx)^xr>x{gB_5ThO)>jto$~odvpo*vyxEv^l zI)E#Ia;Xit8mJJp0M`N)rpJJP0u>H?l6ur#fO2>kxei46u&UabPp+5;_XJ&N_yd z>WD3@ODO|vWnEV2ZyW3KG#Yfo8>}m67}(CblJ){`vaX^%zz){cg_knOdNK_mGQ_%u zb^vd&ouC${4(qA38Q8_TjyB;=?Ph%g?i614++3;H!@3@$=_W1x zdyRYmyLp#2uKi4CFY87lZ^xv4tfwK(GjawFWSA2;kc34)BWZ*aIFLu6{hYwB;vwig zPT*)Cgbr{bWaRxQagY-@Paij~9VIf{gc3~_{fMMP++?@pvs`hQn{br(K}QOjlZ%O? z>_^C-ipk2z!?|j4jQtV>EdMs?-!Z|Ti7%}DW{$HTBY&pl&yxOZYdUs)g8ee;J8k0+ HQ`G+p*u|NF diff --git a/云台/云台/Objects/visual.crf b/云台/云台/Objects/visual.crf index 6388c27554ce38be7bf71a3653c66a6ed7ea1037..5b510397d6ae7fa64caf00364dc88acdae95fe0f 100644 GIT binary patch delta 5254 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 delta 4934 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 Y=A_cL79qL@k=>MbI-=qK%}9s;0n=|Gj{pDw diff --git a/云台/云台/Objects/wavefiltering_kalman_filtering.crf b/云台/云台/Objects/wavefiltering_kalman_filtering.crf index 671126ccc278fe860ee98108f93d9ee0fb190d21..0cae9a0b3ed8730cdcc14e0b3e62f0563f5c9764 100644 GIT binary patch delta 23 dcmaFp{Lp!WG9%aLUx!Y!F#tjDW?jZD3IKYI2 0 - 1079 - 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000008000000010000000100000053433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C4E65772D496E66616E7472792D432D426F6172642D4C65676163795CD4C6CCA85CD4C6CCA85C436172426F64795C47696D62616C2E63000000000847696D62616C2E6300000000C5D4F200FFFFFFFF53433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C4E65772D496E66616E7472792D432D426F6172642D4C65676163795CD4C6CCA85CD4C6CCA85C436172426F64795C56697375616C2E63000000000856697375616C2E6300000000FFDC7800FFFFFFFF4E433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C4E65772D496E66616E7472792D432D426F6172642D4C65676163795CD4C6CCA85CD4C6CCA85C557365725C6D61696E2E6300000000066D61696E2E6300000000BECEA100FFFFFFFF54433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C4E65772D496E66616E7472792D432D426F6172642D4C65676163795CD4C6CCA85CD4C6CCA85C48617264776172655C424D493038382E630000000008424D493038382E6300000000F0A0A100FFFFFFFF52433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C4E65772D496E66616E7472792D432D426F6172642D4C65676163795CD4C6CCA85CD4C6CCA85C414852535C757365725F6C69622E63000000000A757365725F6C69622E6300000000BCA8E100FFFFFFFF59433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C4E65772D496E66616E7472792D432D426F6172642D4C65676163795CD4C6CCA85CD4C6CCA85C414852535C414852535F6D6964646C65776172652E630000000011414852535F6D6964646C65776172652E63000000009CC1B600FFFFFFFF63433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C4E65772D496E66616E7472792D432D426F6172642D4C65676163795CD4C6CCA85CD4C6CCA85C46756E6374696F6E5C494D5554656D7065726174757265436F6E74726F6C2E630000000017494D5554656D7065726174757265436F6E74726F6C2E6300000000F7B88600FFFFFFFF50433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C4E65772D496E66616E7472792D432D426F6172642D4C65676163795CD4C6CCA85CD4C6CCA85C436F6E74726F6C5C5049442E6800000000055049442E6800000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000003601000066000000AB0600005D020000 + 1483 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000D000000000000000100000041433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C746573742D726F70655CD4C6CCA85CD4C6CCA85C436172426F64795C47696D62616C2E63000000000847696D62616C2E6300000000C5D4F200FFFFFFFF41433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C746573742D726F70655CD4C6CCA85CD4C6CCA85C436172426F64795C56697375616C2E63000000000856697375616C2E6300000000FFDC7800FFFFFFFF3C433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C746573742D726F70655CD4C6CCA85CD4C6CCA85C557365725C6D61696E2E6300000000066D61696E2E6300000000BECEA100FFFFFFFF42433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C746573742D726F70655CD4C6CCA85CD4C6CCA85C48617264776172655C424D493038382E630000000008424D493038382E6300000000F0A0A100FFFFFFFF40433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C746573742D726F70655CD4C6CCA85CD4C6CCA85C414852535C757365725F6C69622E63000000000A757365725F6C69622E6300000000BCA8E100FFFFFFFF47433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C746573742D726F70655CD4C6CCA85CD4C6CCA85C414852535C414852535F6D6964646C65776172652E630000000011414852535F6D6964646C65776172652E63000000009CC1B600FFFFFFFF51433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C746573742D726F70655CD4C6CCA85CD4C6CCA85C46756E6374696F6E5C494D5554656D7065726174757265436F6E74726F6C2E630000000017494D5554656D7065726174757265436F6E74726F6C2E6300000000F7B88600FFFFFFFF4E433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C746573742D726F70655CD4C6CCA85CD4C6CCA85C46756E6374696F6E5C4174746974756465416C676F726974686D732E6300000000144174746974756465416C676F726974686D732E6300000000D9ADC200FFFFFFFF4E433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C746573742D726F70655CD4C6CCA85CD4C6CCA85C46756E6374696F6E5C4174746974756465416C676F726974686D732E6800000000144174746974756465416C676F726974686D732E6800000000A5C2D700FFFFFFFF59433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C746573742D726F70655CD4C6CCA85CD4C6CCA85C436F6E74726F6C5C5761766546696C746572696E675F4B616C6D616E5F46696C746572696E672E6300000000205761766546696C746572696E675F4B616C6D616E5F46696C746572696E672E6300000000B3A6BE00FFFFFFFF3D433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C746573742D726F70655CD4C6CCA85CD4C6CCA85C53797374656D5C43414E2E63000000000543414E2E6300000000EAD6A300FFFFFFFF3F433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C746573742D726F70655CD4C6CCA85CD4C6CCA85C4D6F746F725C474D363032302E630000000008474D363032302E6300000000F6FA7D00FFFFFFFF3F433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C746573742D726F70655CD4C6CCA85CD4C6CCA85C4D6F746F725C474D363032302E680000000008474D363032302E6800000000B5E99D00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000003601000066000000AB0600008B020000 @@ -134,7 +134,7 @@ 16 - 470100009F0000005E0500001D010000 + D900000066000000F0040000E4000000 @@ -150,7 +150,7 @@ 0 16 - 03000000660000002F0100002D020000 + 03000000660000002F0100005B020000 16 @@ -170,7 +170,7 @@ 0 16 - 03000000660000002F0100002D020000 + 03000000660000002F0100005B020000 16 @@ -450,7 +450,7 @@ 0 16 - 03000000660000002F0100002D020000 + 03000000660000002F0100005B020000 16 @@ -470,7 +470,7 @@ 0 16 - 03000000660000002F0100002D020000 + 03000000660000002F0100005B020000 16 @@ -490,7 +490,7 @@ 0 16 - 000000005E020000AB0600006E030000 + 000000008C020000AB0600006E030000 16 @@ -530,7 +530,7 @@ 0 16 - 0300000061020000A806000055030000 + 030000008F0200007D07000055030000 16 @@ -1150,7 +1150,7 @@ 0 16 - 03000000660000002F0100002D020000 + 03000000660000002F010000D3020000 16 @@ -1170,7 +1170,7 @@ 0 16 - 0300000061020000A806000055030000 + 030000008F0200007D07000055030000 16 @@ -1190,7 +1190,7 @@ 0 16 - 0300000061020000A806000055030000 + 030000008F0200007D07000055030000 16 @@ -1250,7 +1250,7 @@ 0 16 - 0300000061020000A806000055030000 + 030000008F0200007D07000055030000 16 @@ -1270,7 +1270,7 @@ 0 16 - 0300000061020000A806000055030000 + 030000008F0200007D07000055030000 16 @@ -1799,14 +1799,14 @@ 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFD9000000CD000000F0040000D1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000470100009F0000005E0500001D010000D90000004F000000F0040000CD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF170400004F0000001B040000E1010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000890400009F0000005E050000310200001B0400004F000000F0040000E101000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF320100004F0000003601000046020000010000000200001004000000010000002DFFFFFFCD050000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000006E0000009F000000A001000096020000000000004F00000032010000460200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000CD010000F0040000D101000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000006E000000210200005E050000B302000000000000D1010000F00400006302000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF78020000D10100007C0200006302000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000046020000AB0600004A0200000100000001000010040000000100000068FDFFFF7C000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000006E0000009A02000019070000BE030000000000004A020000AB0600006E0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFD9000000CD000000F0040000D1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000D900000066000000F0040000E4000000D90000004F000000F0040000CD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF170400004F0000001B040000E1010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000001B04000066000000F0040000F80100001B0400004F000000F0040000E101000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF320100004F0000003601000074020000010000000200001004000000010000002DFFFFFFCD050000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000003201000003030000000000004F00000032010000740200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000CD010000F0040000D101000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB0900000180008000000000000000000000E8010000F00400007A02000000000000D1010000F00400006302000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF78020000D10100007C0200006302000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000074020000AB06000078020000010000000100001004000000010000000EFEFFFF22010000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000000703000080070000FD0300000000000078020000AB0600006E0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File 2537 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000000460000000000000000000000000000000001000000010000000180FE880000000000004500000000000000000000000000000000010000000100000001800B810000000000001300000000000000000000000000000000010000000100000001800C810000000000001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -1822,7 +1822,7 @@ Build 976 - 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 583 @@ -1862,30 +1862,30 @@ 0 100 - 1 + 0 .\CarBody\Gimbal.c 0 - 139 - 162 + 30 + 31 1 0 .\CarBody\Visual.c - 60 - 188 - 202 + 82 + 22 + 23 1 0 .\User\main.c - 8 - 45 - 43 + 30 + 1 + 22 1 0 @@ -1893,7 +1893,7 @@ .\Hardware\BMI088.c 0 - 1 + 36 65 1 @@ -1901,7 +1901,7 @@ .\AHRS\user_lib.c - 0 + 21 1 1 1 @@ -1920,17 +1920,62 @@ .\Function\IMUTemperatureControl.c 67 - 61 + 57 86 1 0 - .\Control\PID.h - 0 - 21 - 27 + .\Function\AttitudeAlgorithms.c + 48 + 75 + 104 + 1 + + 0 + + + .\Function\AttitudeAlgorithms.h + 34 + 1 + 8 + 1 + + 0 + + + .\Control\WaveFiltering_Kalman_Filtering.c + 27 + 1 + 13 + 1 + + 0 + + + .\System\CAN.c + 50 + 4 + 16 + 1 + + 0 + + + .\Motor\GM6020.c + 45 + 8 + 9 + 1 + + 0 + + + .\Motor\GM6020.h + 10 + 1 + 20 1 0 diff --git a/云台/云台/User/Parameter.h b/云台/云台/User/Parameter.h index 7eb2245..24ac970 100644 --- a/云台/云台/User/Parameter.h +++ b/云台/云台/User/Parameter.h @@ -4,9 +4,9 @@ /*=============================================结构参数=============================================*/ #define Yaw_GM6020PositionValue 4000//Yaw轴编码器值4050 #define Pitch_GM6020PositionValue 3245//Pitch轴编码器值 -#define Pitch_GM6020PositionLowerLinit 3665//Pitch轴编码器值下限 -#define Pitch_GM6020PositionUpperLinit 2565//Pitch轴编码器值上限 -#define Pitch_GM6020AngleLowerLinit 15.0f//Pitch轴编码器值下限 +#define Pitch_GM6020PositionLowerLinit 3990//Pitch轴编码器值下限 +#define Pitch_GM6020PositionUpperLinit 2220//Pitch轴编码器值上限 +#define Pitch_GM6020AngleLowerLinit 20.0f//Pitch轴编码器值下限 #define Pitch_GM6020AngleUpperLinit -10.0f//Pitch轴编码器值上限 /*=============================================云台参数=============================================*/ diff --git a/云台/云台/User/main.c b/云台/云台/User/main.c index 3fba466..74ed91e 100644 --- a/云台/云台/User/main.c +++ b/云台/云台/User/main.c @@ -17,7 +17,9 @@ int main(void) { Warming_Init();//报警初始化 LED_BON();//蓝灯点亮表示代码在运行 + Delay_s(1);//等待车身稳定以便于陀螺仪消除零偏 AttitudeAlgorithms_Init();//姿态解算初始化 + ZeroOffset_Calibration();//零偏校准 Delay_s(1);//延时,等待校准和模块启动 LinkCheck_Init();//连接检测初始化 RefereeSystem_Init();//图传链路初始化 @@ -40,11 +42,7 @@ int main(void) CToC_MasterSendData();//CToC发送遥控器摇杆数据 -<<<<<<< HEAD - Visual_SendData();//开启串口调试 -======= Visual_SendData(); ->>>>>>> a6eb3f5ed5724a064e8286c2f8cd26fa9d4816e5 if(Delay_Count) //每次大循环只执行一次 diff --git a/底盘/底盘/.vscode/c_cpp_properties.json b/底盘/底盘/.vscode/c_cpp_properties.json index 0ceecbc..183c59a 100644 --- a/底盘/底盘/.vscode/c_cpp_properties.json +++ b/底盘/底盘/.vscode/c_cpp_properties.json @@ -100,21 +100,16 @@ { "name": "Target 1", "includePath": [ - "f:\\桌面\\V1.0\\new-infantry\\底盘\\底盘\\Start", - "f:\\桌面\\V1.0\\new-infantry\\底盘\\底盘\\Library", - "f:\\桌面\\V1.0\\new-infantry\\底盘\\底盘\\System", - "f:\\桌面\\V1.0\\new-infantry\\底盘\\底盘\\Algorithm", - "f:\\桌面\\V1.0\\new-infantry\\底盘\\底盘\\Hardware", - "f:\\桌面\\V1.0\\new-infantry\\底盘\\底盘\\Motor", - "f:\\桌面\\V1.0\\new-infantry\\底盘\\底盘\\Function", - "f:\\桌面\\V1.0\\new-infantry\\底盘\\底盘\\Control", - "f:\\桌面\\V1.0\\new-infantry\\底盘\\底盘\\CarBody", - "f:\\桌面\\V1.0\\new-infantry\\底盘\\底盘\\User", - "C:\\Keil_v5\\ARM\\ARMCC\\include", - "C:\\Keil_v5\\ARM\\ARMCC\\include\\arm_linux", - "C:\\Keil_v5\\ARM\\ARMCC\\include\\arm_linux_compat", - "C:\\Keil_v5\\ARM\\ARMCC\\include\\libcxx", - "C:\\Keil_v5\\ARM\\ARMCC\\include\\rw" + "c:\\Users\\LSMushui\\Desktop\\RM\\New-Infantry-C-Board-Legacy\\底盘\\底盘\\Start", + "c:\\Users\\LSMushui\\Desktop\\RM\\New-Infantry-C-Board-Legacy\\底盘\\底盘\\Library", + "c:\\Users\\LSMushui\\Desktop\\RM\\New-Infantry-C-Board-Legacy\\底盘\\底盘\\System", + "c:\\Users\\LSMushui\\Desktop\\RM\\New-Infantry-C-Board-Legacy\\底盘\\底盘\\Algorithm", + "c:\\Users\\LSMushui\\Desktop\\RM\\New-Infantry-C-Board-Legacy\\底盘\\底盘\\Hardware", + "c:\\Users\\LSMushui\\Desktop\\RM\\New-Infantry-C-Board-Legacy\\底盘\\底盘\\Motor", + "c:\\Users\\LSMushui\\Desktop\\RM\\New-Infantry-C-Board-Legacy\\底盘\\底盘\\Function", + "c:\\Users\\LSMushui\\Desktop\\RM\\New-Infantry-C-Board-Legacy\\底盘\\底盘\\Control", + "c:\\Users\\LSMushui\\Desktop\\RM\\New-Infantry-C-Board-Legacy\\底盘\\底盘\\CarBody", + "c:\\Users\\LSMushui\\Desktop\\RM\\New-Infantry-C-Board-Legacy\\底盘\\底盘\\User" ], "defines": [ "USE_STDPERIPH_DRIVER", diff --git a/底盘/底盘/.vscode/keil-assistant.log b/底盘/底盘/.vscode/keil-assistant.log index dc84892..bb638a4 100644 --- a/底盘/底盘/.vscode/keil-assistant.log +++ b/底盘/底盘/.vscode/keil-assistant.log @@ -29,3 +29,5 @@ [info] Log at : 2025/10/17|12:12:21|GMT+0800 +[info] Log at : 2026/2/1|21:52:40|GMT+0800 + diff --git a/底盘/底盘/Objects/Project.axf b/底盘/底盘/Objects/Project.axf index 6a35f0fee101cfc299838f70f1b0b2b3427a8639..d571d082d33f6bebaeca8d45fb31c25d303e34e3 100644 GIT binary patch delta 1375 zcmYjQe@I<*6yN=RuY2eFTyy1OE;V$Gq0_;;@7MLExGl?aVYVS73X6B&ebyK+a;z1s z#m1l@!i3n4MM)YADkUA-X=BBpXrWt-O5Y~6rgH?d9}5JtLF?T6eW`yOxaXcgB62XEDOjGx2_)uU~5!89DE@1IGs1R1Lc))}G7+tG^ol-_p?qY3_ib8N%$~g13 zCIeG=It<%&vKxbD4!8+FK*timgvLW*J*1@`ev;C1lFM2ZG{CqNp~SLZ=N{(nBI@8& z8BF7z9lCil-PH^ZBe9&NTrA!NtFg8PYBk4y?1cT&3@7Z|8kMbjjb<9(4ZEaaYx47- zf^I>5ZLrOdk@ylTLHgzy=o5HxFPOCcS+ESeXM>u=v-@}o`*r>lEPD@(s>OY;d$YNX0`JTk3qhzmqv|mu_tXerrq0bvm^zl`nnnE zh95Z9S|X74zRw9}G-9P_doK)|rX5PxAb(ELNy3!NRtIvLr1=V&rBJ$+n0rlzk)0L(%R8F%X4gQxKQg2|_-@$WorZ<#k%IN- zcdrhpFZmMDn1+pSu2Fa3X{GA$@O+?w9$%$WQdl|E9K6kUO?!I2MCrTLNe1n>8rWa! zRX5|*k6?nFd)4RcCiK~9Zi70-w+PuO8rq~9B|Ysxts$*YPCH}yFcnL&)kf2f6~C(0K&{lExoe}8y zGtcwP?BS{9V^hlqm&SJ9Vb+a}Hm%ER`i^q`m2zI=qw@hi2A>$8IF<8>*@F-`CGpe% zo}ujTi3%7&w#O206tO}-T}>PU!zrr!^pUMNq>E)S%!|*i!&4$<;3}|tvqCemMt8<= zf{T4SES?r$C$LQnHsFKw0&gMpqZ1t3i;>NdhxseFGXQup}vS zcHM^c)N&Kr8hE8bm_wYiUl%VnVoY3Kifbg5Z^ZMBxKPA5VH3En_dl!`8Zl0sb_oox z*c&mEU1+=sXF+pB-vDzLEAR~HfiJAZSQB0v?-qlt%=~;ab^&DVjFdP-Nej=ikc<-n zedyp_DzPVv9bov58%Z3>VTB95qT<}yia!DbzLH5dwBsb`wyjXd?`2dTf@&hR+%G{J zu!C;yzygC>^X-;wzV>upgY}SCdJwoJdDFS z?Rx~<*l53`dVaMTM|4qIX|{@QxAG`AtuR-HQ8@e543oFU^s!8J$ILEHKp~qsX58KFk8i$zkyz~RlgwkC{fvkIW zUi#(d*my0c6s&rQ?c$G+#? zpJoJ}A2pbL3on4)qlnSbx22kF!BGR*_zn-m+RtkQqu9xXpo@bfJa^*_V>KJ$?~KIOs>gil7Z=kNz!Xc*^c7!9VyqGiCuH9c&qSieZZzLxQMq}MYZsZr{1@d^_UJ9<2O#zqaf;e+HIMNe ix+9#*GP6&o-_oWAT2fqDZQh>zBW>30sk`=Q(d&OJFT-g7 diff --git a/底盘/底盘/Objects/Project.build_log.htm b/底盘/底盘/Objects/Project.build_log.htm index 791c50a..c5b7fa4 100644 --- a/底盘/底盘/Objects/Project.build_log.htm +++ b/底盘/底盘/Objects/Project.build_log.htm @@ -29,69 +29,69 @@ Project File Date: 11/02/2025 Rebuild target 'Target 1' assembling startup_stm32f40_41xxx.s... compiling misc.c... -compiling stm32f4xx_dbgmcu.c... -compiling stm32f4xx_dfsdm.c... -compiling stm32f4xx_cryp_tdes.c... -compiling system_stm32f4xx.c... -compiling stm32f4xx_cryp.c... compiling stm32f4xx_adc.c... compiling stm32f4xx_can.c... -compiling stm32f4xx_dma2d.c... -compiling stm32f4xx_dsi.c... -compiling stm32f4xx_dcmi.c... -compiling stm32f4xx_flash_ramfunc.c... -compiling stm32f4xx_cryp_des.c... -compiling stm32f4xx_cec.c... -compiling stm32f4xx_cryp_aes.c... -compiling stm32f4xx_fmpi2c.c... -compiling stm32f4xx_gpio.c... -compiling stm32f4xx_exti.c... -compiling stm32f4xx_crc.c... -compiling stm32f4xx_fsmc.c... compiling stm32f4xx_flash.c... +compiling stm32f4xx_dcmi.c... compiling stm32f4xx_dac.c... +compiling stm32f4xx_fsmc.c... +compiling stm32f4xx_crc.c... +compiling system_stm32f4xx.c... +compiling stm32f4xx_cryp_tdes.c... +compiling stm32f4xx_cryp.c... +compiling stm32f4xx_flash_ramfunc.c... +compiling stm32f4xx_cec.c... +compiling stm32f4xx_fmpi2c.c... +compiling stm32f4xx_dsi.c... +compiling stm32f4xx_dbgmcu.c... +compiling stm32f4xx_exti.c... +compiling stm32f4xx_dfsdm.c... +compiling stm32f4xx_cryp_des.c... +compiling stm32f4xx_dma2d.c... +compiling stm32f4xx_gpio.c... compiling stm32f4xx_dma.c... +compiling stm32f4xx_cryp_aes.c... compiling stm32f4xx_hash.c... -compiling stm32f4xx_hash_md5.c... -compiling stm32f4xx_iwdg.c... compiling stm32f4xx_hash_sha1.c... +compiling stm32f4xx_hash_md5.c... compiling stm32f4xx_i2c.c... +compiling stm32f4xx_iwdg.c... compiling stm32f4xx_lptim.c... compiling stm32f4xx_pwr.c... compiling stm32f4xx_qspi.c... compiling stm32f4xx_ltdc.c... compiling stm32f4xx_rng.c... -compiling stm32f4xx_rcc.c... -compiling stm32f4xx_sai.c... compiling stm32f4xx_spdifrx.c... -compiling Delay.c... -compiling TIM.c... compiling stm32f4xx_syscfg.c... -compiling stm32f4xx_wwdg.c... -compiling stm32f4xx_rtc.c... -compiling stm32f4xx_spi.c... compiling stm32f4xx_sdio.c... -compiling UART.c... +compiling stm32f4xx_sai.c... +compiling stm32f4xx_wwdg.c... +compiling stm32f4xx_spi.c... +compiling TIM.c... +compiling Delay.c... +compiling stm32f4xx_rcc.c... compiling stm32f4xx_usart.c... -compiling CAN.c... +compiling stm32f4xx_rtc.c... compiling stm32f4xx_tim.c... +compiling UART.c... compiling LED.c... compiling Buzzer.c... +compiling CAN.c... compiling Remote.c... -compiling GM6020.c... -compiling CToC.c... compiling M3508.c... +compiling GM6020.c... compiling Warming.c... compiling LinkCheck.c... compiling CloseLoopControl.c... +compiling CToC.c... compiling PID.c... compiling RefereeSystem.c... -compiling Mecanum.c... compiling RefereeSystem_CRCTable.c... -compiling UI.c... compiling Ultra_CAP.c... -compiling UI_Base.c... +compiling Mecanum.c... +compiling UI.c... compiling stm32f4xx_it.c... +compiling UI_Base.c... compiling main.c... compiling UI_Library.c... linking... @@ -108,7 +108,7 @@ Package Vendor: Keil

                              Collection of Component include folders:

                              Collection of Component Files used:

                              -Build Time Elapsed: 00:00:04 +Build Time Elapsed: 00:00:05 diff --git a/底盘/底盘/Objects/Project.htm b/底盘/底盘/Objects/Project.htm index 50d203c..ea05cf1 100644 --- a/底盘/底盘/Objects/Project.htm +++ b/底盘/底盘/Objects/Project.htm @@ -3,7 +3,7 @@ Static Call Graph - [.\Objects\Project.axf]

                              Static Call Graph for image .\Objects\Project.axf


                              -

                              #<CALLGRAPH># ARM Linker, 5060960: Last Updated: Sun Nov 02 21:03:24 2025 +

                              #<CALLGRAPH># ARM Linker, 5060960: Last Updated: Wed Jan 21 18:47:23 2026

                              Maximum Stack Usage = 232 bytes + Unknown(Cycles, Untraceable Function Pointers)

                              Call chain for Maximum Stack Depth:

                              diff --git a/底盘/底盘/Objects/Project_Target 1.dep b/底盘/底盘/Objects/Project_Target 1.dep index 0930898..7ad90e5 100644 --- a/底盘/底盘/Objects/Project_Target 1.dep +++ b/底盘/底盘/Objects/Project_Target 1.dep @@ -2407,7 +2407,7 @@ I (CarBody\UI_Base.h)(0x664C499A) I (C:\Users\LSMushui\AppData\Local\Keil_v5\ARM\ARMCC\include\string.h)(0x5E8E3CC2) I (.\System\UART.h)(0x669CFA98) F (.\CarBody\UI_Library.h)(0x66A113C6)() -F (.\User\main.c)(0x66A10DEC)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186 -IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -o .\objects\main.o --omf_browse .\objects\main.crf --depend .\objects\main.d) +F (.\User\main.c)(0x6970AEB5)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186 -IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -o .\objects\main.o --omf_browse .\objects\main.crf --depend .\objects\main.d) I (.\Start\stm32f4xx.h)(0x64F48C00) I (.\Start\core_cm4.h)(0x64D03162) I (C:\Users\LSMushui\AppData\Local\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E8E3CC2) diff --git a/底盘/底盘/Objects/main.crf b/底盘/底盘/Objects/main.crf index c709cc754fda6101751ed99138ea0e6acdc6d435..f66f402a39613aedae62c6ba849b7d4c1e2d465d 100644 GIT binary patch delta 53 zcmdlrOJ>(BnGOFqxVGLsbefF;2-Y-naJF-BG6FFZ5HkZY3lOscG23(BnGOFqxZcce*~-QM1l-LWob4Q(j6lo;#LPg<0>rF9%(k6_lii2~0Jw4t AumAu6 diff --git a/底盘/底盘/Project.uvguix.LSMushui b/底盘/底盘/Project.uvguix.LSMushui index 67a4d54..e7ab661 100644 --- a/底盘/底盘/Project.uvguix.LSMushui +++ b/底盘/底盘/Project.uvguix.LSMushui @@ -15,7 +15,7 @@ 38003 Registers - 124 79 + 140 63 346 @@ -40,7 +40,7 @@ 1506 Symbols - 71 71 71 + 80 80 80 1936 @@ -93,8 +93,8 @@ 2 3 - -1 - -1 + -32000 + -32000 -1 @@ -110,8 +110,8 @@ 0 - 385 - 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000002000000010000000100000054433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C4E65772D496E66616E7472792D432D426F6172642D4C65676163795CB5D7C5CC5CB5D7C5CC5C436172426F64795C4D6563616E756D2E6300000000094D6563616E756D2E6300000000C5D4F200FFFFFFFF4F433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C4E65772D496E66616E7472792D432D426F6172642D4C65676163795CB5D7C5CC5CB5D7C5CC5C53797374656D5C43414E2E63000000000543414E2E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000D900000066000000AB06000003030000 + 487 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000003000000020000000100000054433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C4E65772D496E66616E7472792D432D426F6172642D4C65676163795CB5D7C5CC5CB5D7C5CC5C436172426F64795C4D6563616E756D2E6300000000094D6563616E756D2E6300000000C5D4F200FFFFFFFF4F433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C4E65772D496E66616E7472792D432D426F6172642D4C65676163795CB5D7C5CC5CB5D7C5CC5C53797374656D5C43414E2E63000000000543414E2E6300000000FFDC7800FFFFFFFF4E433A5C55736572735C4C534D75736875695C4465736B746F705C524D5C4E65772D496E66616E7472792D432D426F6172642D4C65676163795CB5D7C5CC5CB5D7C5CC5C557365725C6D61696E2E6300000000066D61696E2E6300000000BECEA100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000D900000066000000800700007B030000 @@ -150,7 +150,7 @@ 0 16 - 0300000066000000D2000000D3020000 + 0300000066000000D20000004B030000 16 @@ -170,7 +170,7 @@ 0 16 - 0300000066000000D2000000D3020000 + 0300000066000000D20000004B030000 16 @@ -450,7 +450,7 @@ 0 16 - 0300000066000000D2000000D3020000 + 0300000066000000D20000004B030000 16 @@ -470,7 +470,7 @@ 0 16 - 0300000066000000D2000000D3020000 + 0300000066000000D20000004B030000 16 @@ -490,7 +490,7 @@ 0 16 - 0000000004030000AB0600006E030000 + 000000007C03000080070000E6030000 16 @@ -530,7 +530,7 @@ 0 16 - 03000000070300007D07000055030000 + 030000007F030000A8060000CD030000 16 @@ -1150,7 +1150,7 @@ 0 16 - 0300000066000000D20000004B030000 + 0300000066000000D2000000D3020000 16 @@ -1170,7 +1170,7 @@ 0 16 - 03000000070300007D07000055030000 + 030000007F030000A8060000CD030000 16 @@ -1190,7 +1190,7 @@ 0 16 - 03000000070300007D07000055030000 + 030000007F030000A8060000CD030000 16 @@ -1250,7 +1250,7 @@ 0 16 - 03000000070300007D07000055030000 + 030000007F030000A8060000CD030000 16 @@ -1270,7 +1270,7 @@ 0 16 - 03000000070300007D07000055030000 + 030000007F030000A8060000CD030000 16 @@ -1730,7 +1730,7 @@ 0 16 - 000000006E030000AB06000081030000 + 00000000E603000080070000F9030000 16 @@ -1799,14 +1799,14 @@ 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFD9000000CD000000F0040000D1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000D900000066000000F0040000E4000000D90000004F000000F0040000CD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF170400004F0000001B040000E1010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000001B04000066000000F0040000F80100001B0400004F000000F0040000E101000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFD50000004F000000D9000000EC020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000D50000007B030000000000004F000000D5000000EC0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000CD010000F0040000D101000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB0900000180008000000000000000000000E8010000F00400007A02000000000000D1010000F00400006302000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF78020000D10100007C0200006302000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000EC020000AB060000F0020000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000007F03000080070000FD03000000000000F0020000AB0600006E0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFD9000000CD000000F0040000D1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000D900000066000000F0040000E4000000D90000004F000000F0040000CD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF170400004F0000001B040000E1010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000001B04000066000000F0040000F80100001B0400004F000000F0040000E101000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFD50000004F000000D900000064030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000D500000003030000000000004F000000D5000000640300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000CD010000F0040000D101000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB0900000180008000000000000000000000E8010000F00400007A02000000000000D1010000F00400006302000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF78020000D10100007C0200006302000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000640300008007000068030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000000000000007030000AB06000085030000000000006803000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File 2537 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -1838,7 +1838,7 @@ Debug 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -1851,8 +1851,8 @@ 0 - 1707 - 960 + 1920 + 1080 @@ -1862,7 +1862,7 @@ 0 100 - 1 + 2 .\CarBody\Mecanum.c 0 @@ -1875,12 +1875,21 @@ .\System\CAN.c 0 - 1 + 7 1 1 0 + + .\User\main.c + 11 + 1 + 10 + 1 + + 0 + diff --git a/底盘/底盘/Project.uvoptx b/底盘/底盘/Project.uvoptx index 0796aae..9e3e9f5 100644 --- a/底盘/底盘/Project.uvoptx +++ b/底盘/底盘/Project.uvoptx @@ -1975,7 +1975,7 @@ User - 0 + 1 0 0 0 diff --git a/底盘/底盘/User/main.c b/底盘/底盘/User/main.c index 6cc656d..ac46cd1 100644 --- a/底盘/底盘/User/main.c +++ b/底盘/底盘/User/main.c @@ -7,7 +7,7 @@ int main() { Warming_Init();//报警初始化 LED_BON();//蓝灯点亮表示代码在运行 - Delay_s(2);//延时,等待校准和模块启动 + Delay_s(4);//延时,等待校准和模块启动 RefereeSystem_Init();//裁判系统数据接收初始化 LinkCheck_Init();//连接检测初始化 Ultra_CAP_Init();//超电初始化