diff --git a/Core/Inc/main.h b/Core/Inc/main.h
index 671c2492c4aa2f13ad4ea8b4ddcbd078d7a6043d..feb307badd2e6ca8436f9b65d497f5eb1c3912e3 100644
--- a/Core/Inc/main.h
+++ b/Core/Inc/main.h
@@ -93,10 +93,6 @@ void Error_Handler(void);
 #define USB_PowerSwitchOn_GPIO_Port GPIOG
 #define USB_OverCurrent_Pin GPIO_PIN_7
 #define USB_OverCurrent_GPIO_Port GPIOG
-#define LED1_Pin GPIO_PIN_8
-#define LED1_GPIO_Port GPIOC
-#define LED2_Pin GPIO_PIN_9
-#define LED2_GPIO_Port GPIOC
 #define USB_SOF_Pin GPIO_PIN_8
 #define USB_SOF_GPIO_Port GPIOA
 #define USB_VBUS_Pin GPIO_PIN_9
@@ -111,10 +107,6 @@ void Error_Handler(void);
 #define TMS_GPIO_Port GPIOA
 #define TCK_Pin GPIO_PIN_14
 #define TCK_GPIO_Port GPIOA
-#define LED3_Pin GPIO_PIN_10
-#define LED3_GPIO_Port GPIOC
-#define LED4_Pin GPIO_PIN_11
-#define LED4_GPIO_Port GPIOC
 #define btn1_Pin GPIO_PIN_4
 #define btn1_GPIO_Port GPIOD
 #define btn1_EXTI_IRQn EXTI4_IRQn
diff --git a/Core/Src/main.c b/Core/Src/main.c
index 112eb151861409a21f9ba5a4773a58949aa5694b..7923db85fb488835020840a307e1de90a6dc923e 100644
--- a/Core/Src/main.c
+++ b/Core/Src/main.c
@@ -24,9 +24,12 @@
 /* Private includes ----------------------------------------------------------*/
 /* USER CODE BEGIN Includes */
 #include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
 #include "ws2812b.h"
 #include "queue.h"
 #include "semphr.h"
+//#define DEBUG
 /* USER CODE END Includes */
 
 /* Private typedef -----------------------------------------------------------*/
@@ -101,6 +104,10 @@ SemaphoreHandle_t SemBtn1Handle;
 SemaphoreHandle_t SemBtn2Handle;
 SemaphoreHandle_t SemBtn3Handle;
 SemaphoreHandle_t SemBtn4Handle;
+SemaphoreHandle_t SemBtnRelease1Handle;
+SemaphoreHandle_t SemBtnRelease2Handle;
+SemaphoreHandle_t SemBtnRelease3Handle;
+SemaphoreHandle_t SemBtnRelease4Handle;
 SemaphoreHandle_t SemStartGameHandle;
 
 typedef enum { false, true } bool;
@@ -113,6 +120,15 @@ typedef struct matrix_s {
 	uint16_t delay;
 } matrix_s;
 
+typedef struct activeLED_s {
+	uint8_t leds;
+	uint16_t delay;
+} activeLED_s;
+
+typedef struct point_s {
+	uint16_t p;
+} point_s;
+
 /* USER CODE END PV */
 
 /* Private function prototypes -----------------------------------------------*/
@@ -123,7 +139,7 @@ static void MX_USART3_UART_Init(void);
 static void MX_USB_OTG_FS_PCD_Init(void);
 static void MX_TIM2_Init(void);
 void Levels(void *argument);
-void Task02(void *argument);
+void LEDMatrix(void *argument);
 void Validate(void *argument);
 void Display(void *argument);
 
@@ -131,19 +147,11 @@ void Display(void *argument);
 extern int rand(void);
 extern TIM_HandleTypeDef htim7;
 
-void lcd_init(void);
-void lcd_put_cur(int, int);
-void lcd_send_data(char);
-void ldc_send_cmd(char);
-void send_to_lcd(char,int);
-void lcd_send_string(char*);
-void lcd_clear(void);
-
 /* USER CODE END PFP */
 
 /* Private user code ---------------------------------------------------------*/
 /* USER CODE BEGIN 0 */
-
+uint8_t CarRet[]={'\r', '\n'};
 /* USER CODE END 0 */
 
 /**
@@ -179,20 +187,6 @@ int main(void)
   MX_USB_OTG_FS_PCD_Init();
   MX_TIM2_Init();
   /* USER CODE BEGIN 2 */
-	
-
-//	lcd_init();
-//	lcd_clear();
-//	lcd_put_cur(0, 0);
-//  lcd_send_string("HELLO ");
-// // lcd_send_string("WORLD ");
-// // lcd_send_string("FROM");
-// // HAL_Delay(1000);
-//  lcd_put_cur(1, 0);
-//  lcd_send_string("CONTROLLERSTECH");
-//	lcd_clear();
- // HAL_Delay(2000);
- // lcd_clear();
 
   /* USER CODE END 2 */
 
@@ -210,15 +204,19 @@ int main(void)
 
   /* creation of SemBtn1 */
   SemBtn1Handle = xSemaphoreCreateBinary();
+	SemBtnRelease1Handle = xSemaphoreCreateBinary();
 
   /* creation of SemBtn2 */
   SemBtn2Handle = xSemaphoreCreateBinary();
+	SemBtnRelease2Handle = xSemaphoreCreateBinary();
 
   /* creation of SemBtn3 */
   SemBtn3Handle = xSemaphoreCreateBinary();
+	SemBtnRelease3Handle = xSemaphoreCreateBinary();
 
   /* creation of SemBtn4 */
   SemBtn4Handle = xSemaphoreCreateBinary();
+	SemBtnRelease4Handle = xSemaphoreCreateBinary();
 
   /* creation of SemStartGame */
   SemStartGameHandle = xSemaphoreCreateBinary();
@@ -234,7 +232,7 @@ int main(void)
   toLEDMatrixHandle = osMessageQueueNew (16, sizeof(matrix_s), &toLEDMatrix_attributes);
 
   /* creation of fromLEDMatrix */
-  fromLEDMatrixHandle = osMessageQueueNew (16, sizeof(matrix_s), &fromLEDMatrix_attributes);
+  fromLEDMatrixHandle = osMessageQueueNew (16, sizeof(activeLED_s), &fromLEDMatrix_attributes);
 
   /* creation of toDisplayQueue */
   toDisplayQueueHandle = osMessageQueueNew (16, sizeof(uint16_t), &toDisplayQueue_attributes);
@@ -248,18 +246,17 @@ int main(void)
   Task1Handle = osThreadNew(Levels, NULL, &Task1_attributes);
 
   /* creation of Task2 */
-  Task2Handle = osThreadNew(Task02, NULL, &Task2_attributes);
+  Task2Handle = osThreadNew(LEDMatrix, NULL, &Task2_attributes);
 
   /* creation of Task3 */
-//  Task3Handle = osThreadNew(Validate, NULL, &Task3_attributes);
+  Task3Handle = osThreadNew(Validate, NULL, &Task3_attributes);
 
-//  /* creation of Task4 */
-//  Task4Handle = osThreadNew(Display, NULL, &Task4_attributes);
+  /* creation of Task4 */
+  Task4Handle = osThreadNew(Display, NULL, &Task4_attributes);
 
   /* USER CODE BEGIN RTOS_THREADS */
   /* add threads, ... */
-//	osThreadTerminate(Task1Handle);
-//	osThreadTerminate(Task3Handle);
+
   /* USER CODE END RTOS_THREADS */
 
   /* USER CODE BEGIN RTOS_EVENTS */
@@ -510,9 +507,6 @@ static void MX_GPIO_Init(void)
   /*Configure GPIO pin Output Level */
   HAL_GPIO_WritePin(USB_PowerSwitchOn_GPIO_Port, USB_PowerSwitchOn_Pin, GPIO_PIN_RESET);
 
-  /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(GPIOC, LED1_Pin|LED2_Pin|LED3_Pin|LED4_Pin, GPIO_PIN_RESET);
-
   /*Configure GPIO pins : LCD_D7_Pin LCD_D4_Pin LCD_D5_Pin LCD_D6_Pin */
   GPIO_InitStruct.Pin = LCD_D7_Pin|LCD_D4_Pin|LCD_D5_Pin|LCD_D6_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
@@ -553,17 +547,10 @@ static void MX_GPIO_Init(void)
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   HAL_GPIO_Init(USB_OverCurrent_GPIO_Port, &GPIO_InitStruct);
 
-  /*Configure GPIO pins : LED1_Pin LED2_Pin LED3_Pin LED4_Pin */
-  GPIO_InitStruct.Pin = LED1_Pin|LED2_Pin|LED3_Pin|LED4_Pin;
-  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
-  GPIO_InitStruct.Pull = GPIO_NOPULL;
-  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
-
   /*Configure GPIO pins : btn1_Pin btn2_Pin btn3_Pin btn4_Pin */
   GPIO_InitStruct.Pin = btn1_Pin|btn2_Pin|btn3_Pin|btn4_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
-  GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+  GPIO_InitStruct.Pull = GPIO_PULLUP;
   HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
 
   /* EXTI interrupt init*/
@@ -580,144 +567,56 @@ static void MX_GPIO_Init(void)
 
 /* USER CODE BEGIN 4 */
 
-void send_to_lcd (char data, int rs)
-{
-    HAL_GPIO_WritePin(LCD_RS_GPIO_Port, LCD_RS_Pin, rs);  // rs = 1 for data, rs=0 for command
-    /* write the data to the respective pin */
-    HAL_GPIO_WritePin(LCD_D7_GPIO_Port, LCD_D7_Pin, ((data>>3)&0x01));
-    HAL_GPIO_WritePin(LCD_D6_GPIO_Port, LCD_D6_Pin, ((data>>2)&0x01));
-    HAL_GPIO_WritePin(LCD_D5_GPIO_Port, LCD_D5_Pin, ((data>>1)&0x01));
-    HAL_GPIO_WritePin(LCD_D4_GPIO_Port, LCD_D4_Pin, ((data>>0)&0x01));
-    /* Toggle EN PIN to send the data
-     * if the HCLK > 100 MHz, use the  20 us delay
-     * if the LCD still doesn't work, increase the delay to 50, 80 or 100..
-     */
-    HAL_GPIO_WritePin(LCD_E_GPIO_Port, LCD_E_Pin, 1);
-		vTaskDelay(20);
-    HAL_GPIO_WritePin(LCD_E_GPIO_Port, LCD_E_Pin, 0);
-		vTaskDelay(20);
-}
-	
-void lcd_send_cmd (char cmd)
-{
-    char datatosend;
-    /* send upper nibble first */
-    datatosend = ((cmd>>4)&0x0f);
-    send_to_lcd(datatosend,0);  // RS must be while sending command
-    /* send Lower Nibble */
-    datatosend = ((cmd)&0x0f);
-    send_to_lcd(datatosend, 0);
-}
-
-void lcd_send_data (char data)
-{
-    char datatosend;
-   
-    /* send higher nibble */
-    datatosend = ((data>>4)&0x0f);
-    send_to_lcd(datatosend, 1);  // rs =1 for sending data
-    /* send Lower nibble */
-    datatosend = ((data)&0x0f);
-    send_to_lcd(datatosend, 1);
-}
-
-void lcd_init (void)
-{
-    // 4 bit initialisation
-    HAL_Delay(50);  // wait for >40ms
-    lcd_send_cmd (0x30);
-    HAL_Delay(5);  // wait for >4.1ms
-    lcd_send_cmd (0x30);
-    HAL_Delay(1);  // wait for >100us
-    lcd_send_cmd (0x30);
-    HAL_Delay(10);
-    lcd_send_cmd (0x20);  // 4bit mode
-    HAL_Delay(10);
-
-  // dislay initialisation
-    lcd_send_cmd (0x28); // Function set --> DL=0 (4 bit mode), N = 1 (2 line display) F = 0 (5x8 characters)
-    HAL_Delay(1);
-    lcd_send_cmd (0x08); //Display on/off control --> D=0,C=0, B=0  ---> display off
-    HAL_Delay(1);
-    lcd_send_cmd (0x01);  // clear display
-    HAL_Delay(1);
-    HAL_Delay(1);
-    lcd_send_cmd (0x06); //Entry mode set --> I/D = 1 (increment cursor) & S = 0 (no shift)
-    HAL_Delay(1);
-    lcd_send_cmd (0x0C); //Display on/off control --> D = 1, C and B = 0. (Cursor and blink, last two bits)
-}
-
-void lcd_put_cur(int row, int col)
-{
-    switch (row)
-    {
-        case 0:
-            col |= 0x80;
-            break;
-        case 1:
-            col |= 0xC0;
-            break;
-    }
-
-    lcd_send_cmd (col);
-}
-
-void lcd_send_string (char *str)
-{
-	while (*str) lcd_send_data (*str++);
-}
-
-void lcd_clear (void)
-{
-	lcd_send_cmd(0x01);
-	HAL_Delay(2);
-}
-
-
 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
 {	
-
-	int buttonState;             // the current reading from the input pin
-int lastButtonState = 1;  // the previous reading from the input pin
-	unsigned long lastDebounceTime = 0;  // the last time the output pin was toggled
-unsigned long debounceDelay = 5000;    // the debounce time; increase if the output flickers
-	
-
   if(GPIO_Pin == btn1)
   {
-		if (HAL_GetTick() - lastDebounceTime >= debounceDelay) {
-		HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_8);
-		xSemaphoreGiveFromISR(SemBtn1Handle, NULL);
-    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0|GPIO_PIN_7|GPIO_PIN_14);
-		lastDebounceTime = HAL_GetTick();
+		if(xSemaphoreTakeFromISR(SemBtnRelease1Handle, NULL) == pdTRUE) {
+			xSemaphoreGiveFromISR(SemBtn1Handle, NULL);
+			#ifdef DEBUG
+			uint8_t msg[]={"gB1 "};
+			HAL_UART_Transmit(&huart3,msg,sizeof(msg),10);
+			#endif
 		}
 	}
 	else if(GPIO_Pin == btn2)
   {
-		HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_9);
-		xSemaphoreGiveFromISR(SemBtn2Handle, NULL);
-    //HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_7);
+		if(xSemaphoreTakeFromISR(SemBtnRelease2Handle, NULL) == pdTRUE) {
+			xSemaphoreGiveFromISR(SemBtn2Handle, NULL);
+			#ifdef DEBUG
+			uint8_t msg[]={"gB2 "};
+			HAL_UART_Transmit(&huart3,msg,sizeof(msg),10);
+			#endif
+		}
   }
 	else if(GPIO_Pin == btn3)
   {
-		HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_10);
-		xSemaphoreGiveFromISR(SemBtn3Handle, NULL);
-    //HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_14);
+		if(xSemaphoreTakeFromISR(SemBtnRelease3Handle, NULL) == pdTRUE) {
+			xSemaphoreGiveFromISR(SemBtn3Handle, NULL);
+			#ifdef DEBUG
+			uint8_t msg[]={"gB3 "};
+			HAL_UART_Transmit(&huart3,msg,sizeof(msg),10);
+			#endif
+		}
   }
 	else if(GPIO_Pin == btn4)
   {
-		HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_11);
-		xSemaphoreGiveFromISR(SemBtn4Handle, NULL);
-//	    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0|GPIO_PIN_7|GPIO_PIN_14);
+		if(xSemaphoreTakeFromISR(SemBtnRelease4Handle, NULL) == pdTRUE) {
+			xSemaphoreGiveFromISR(SemBtn4Handle, NULL);
+			#ifdef DEBUG
+			uint8_t msg[]={"gB4 "};
+			HAL_UART_Transmit(&huart3,msg,sizeof(msg),10);
+			#endif
+		}
   }
 		else if(GPIO_Pin == USER_Btn_Pin)
   {
 		srand( xTaskGetTickCountFromISR() );
 		xSemaphoreGiveFromISR(SemStartGameHandle, NULL);
-//	    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0|GPIO_PIN_7|GPIO_PIN_14);
-	    //HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_7|GPIO_PIN_14, GPIO_PIN_RESET);
-		//HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11);
-		HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_9);
+		xSemaphoreGiveFromISR(SemBtnRelease1Handle, NULL);
+		xSemaphoreGiveFromISR(SemBtnRelease2Handle, NULL);
+		xSemaphoreGiveFromISR(SemBtnRelease3Handle, NULL);
+		xSemaphoreGiveFromISR(SemBtnRelease4Handle, NULL);
   }	
 }
 
@@ -737,7 +636,6 @@ void Levels(void *argument)
 	int random;
 	int rand1;
 	int rand2;
-	int rand3;
 	int counter=0;
 	int number;
 	int delay = 758;
@@ -820,160 +718,165 @@ void Levels(void *argument)
   /* USER CODE END 5 */
 }
 
-/* USER CODE BEGIN Header_Task02 */
+/* USER CODE BEGIN Header_LEDMatrix */
 /**
 * @brief Function implementing the Task2 thread.
 * @param argument: Not used
 * @retval None
 */
-/* USER CODE END Header_Task02 */
-void Task02(void *argument)
+/* USER CODE END Header_LEDMatrix */
+void LEDMatrix(void *argument)
 {
-  /* USER CODE BEGIN Task02 */
-
-	// init constants & variables
-	enum ROW { ROW1, ROW2, ROW3, ROW4 };
-	const uint8_t ROWS = 4;
-	const uint8_t FIELDS = 16; // 4 rows and 4 columns = 16
-		uint32_t colors[] = {
-		WHITE
-		,BLUE
-		,PURPLE
-		,RED
-		,GREEN
-		,ORANGE
-		,TURQUOISE
-		,YELLOW
-		,SPRINGGREEN
-		,OCEAN
-		,CYAN
-		,RASPBERRY
-	};
-	uint32_t led_matrix[] = { 
-		0,0,0,0,
-		0,0,0,0,
-		0,0,0,0,
-		0,0,0,0
-	};
-
-	uint8_t num_colors = sizeof(colors) / sizeof(uint32_t);
-	LED led = *get_instance();
-	const uint8_t gameRowXOR = 0xf;
-	uint16_t delay = 400;
-	bool isRunning = false;
-	bool scrollOut = false;
-	uint8_t scrollCounter = 0;
-	
-	// init Matrix
-	const uint8_t say_hi[] = {1,2,3,6,9,10,11,12,14,15};
-	const uint8_t say_hi_length = sizeof(say_hi) / sizeof(uint8_t);
-	for(uint8_t i=0; i < say_hi_length-3; i++) led_matrix[say_hi[i]] = TURQUOISE;
-	for(uint8_t i=say_hi_length-3; i < say_hi_length; i++) led_matrix[say_hi[i]] = RED;
-
-	/* Infinite loop */
-	while(1) {
-
-		// set led matrix to current colors
-		led.LED_set_all_off(0);
-		uint8_t LEDMatrixIndex = 0;
-		for(uint8_t cube = 0; cube < FIELDS;) {
-				for(uint8_t column = 0; column <= 6; column+=2) {
-					led.LED_set_RGB_32(LEDMatrixIndex  						  , led_matrix[cube]);
-					led.LED_set_RGB_32(LEDMatrixIndex ^ gameRowXOR  , led_matrix[cube]);
-					led.LED_set_RGB_32(LEDMatrixIndex+1  					  , led_matrix[cube]);
-					led.LED_set_RGB_32(LEDMatrixIndex+1 ^ gameRowXOR, led_matrix[cube]);
-					cube++;
-					LEDMatrixIndex += 2;
-				}
-				LEDMatrixIndex += 8;
-		}
-		led.LED_transmit();
-		// end set colors
-
-		// try to take Semaphore from IRQ if user pressed USER_BTN to start game
-		if ( scrollOut || xSemaphoreTake( SemStartGameHandle, ( TickType_t ) 10 ) == pdTRUE ) {
-			//scroll out "Hi"
-			scrollOut = true;
-			scrollCounter++;
-			if (scrollCounter > 5) {
-				isRunning = true;
-				// release Levels Semaphore
-				xSemaphoreGive( SemLevelsHandle );
-			}
-		}
-		// end take sem from IRQ
-		
-		if (isRunning) {
-			// check matrix if set a color
-			// 3,7,11,15 = last elements in each row
-			uint8_t activeLEDs = 0;
-			if (led_matrix[3] > 0) activeLEDs += 1;
-			if (led_matrix[7] > 0) activeLEDs += 2;
-			if (led_matrix[11] > 0) activeLEDs += 4;
-			if (led_matrix[15] > 0) activeLEDs += 8;
-			if (activeLEDs > 0) xQueueSend(fromLEDMatrixHandle, &activeLEDs, (portTickType) 1);
-			// end check last row
-		}
-		
-		if (isRunning || scrollOut) {
-			// shift matrix to next LED in each row after vTaskDelay
-			for(uint8_t row = 0; row < FIELDS; row+=ROWS) {
-				for(uint8_t i = row+ROW4; i > row; i--) {
-					led_matrix[i] = led_matrix[i-1];
-					//if (i%1 == 0) 
-						led_matrix[i-1] = OFF;
-				}
-			}
-			// end shifting down
-		}
-		
-		if (isRunning) {
-			// checking queue for new incoming elements			
-			matrix_s recvQueue;
-			if (xQueueReceive(toLEDMatrixHandle, &recvQueue, (portTickType) 10 ) == true)
-			{
-				// player lost, showing "ToT", reseting values
-				if (recvQueue.hasLost) {
-					const uint8_t say_tot[] = {
-						1,9,10,11,12,13,14,17, // 8
-						20,21,25,28,35,38,42,  // 7
-						43,46,49,50,51,52,53,54,62}; // 9
-					led.LED_set_all_off(0);
-					const uint8_t say_tot_length = sizeof(say_tot) / sizeof(uint8_t);
-					for(uint8_t i=0; i < 8; i++) led.LED_set_RGB_32(say_tot[i], TURQUOISE);
-					for(uint8_t i=15; i < say_tot_length; i++) led.LED_set_RGB_32(say_tot[i], RED);
-					for(uint8_t i=8; i < 8+8; i++) led.LED_set_RGB_32(say_tot[i], YELLOW);
-					led.LED_transmit();
-
-					isRunning = false;
-					delay = 250;
-					for(uint8_t i = 0; i < FIELDS; i++) led_matrix[i] = 0; // Reset game table
-					xSemaphoreGive( SemStartGameHandle );
-				}
-				// end "hasLost"
-				
-				// set color if received a specific 1-bit
-				// first in row: 0, 4, 8, 12
-				if (recvQueue.nextLED > 0) {
-					for(uint8_t i=ROW1; i <= ROW4; i++) {
-							uint8_t checkBit = 1 << i;
-							if ((recvQueue.nextLED & checkBit) == checkBit) {
-								// select a random color from color_array
-								uint32_t newColor = colors[rand() % num_colors];
-								led_matrix[i*4] = newColor;
-							}
-					}
-					delay = recvQueue.delay;
-				}
-				// end set nextLED
-				xSemaphoreGive( SemLevelsHandle );
-			}
-			// end queue check
-		}
-		// end isRunning
-		vTaskDelay(delay);
-	}
-  /* USER CODE END Task02 */
+  /* USER CODE BEGIN LEDMatrix */
+
+    // init constants & variables
+    enum ROW { ROW1, ROW2, ROW3, ROW4 };
+    const uint8_t ROWS = 4;
+    const uint8_t FIELDS = 16; // 4 rows and 4 columns = 16
+        uint32_t colors[] = {
+        WHITE
+        ,BLUE
+        ,PURPLE
+        ,RED
+        ,GREEN
+        ,ORANGE
+        ,TURQUOISE
+        ,YELLOW
+        ,SPRINGGREEN
+        ,OCEAN
+        ,CYAN
+        ,RASPBERRY
+    };
+    uint32_t led_matrix[] = { 
+        0,0,0,0,
+        0,0,0,0,
+        0,0,0,0,
+        0,0,0,0
+    };
+
+    uint8_t num_colors = sizeof(colors) / sizeof(uint32_t);
+    LED led = *get_instance();
+    const uint8_t gameRowXOR = 0xf;
+    uint16_t delay = 400;
+    bool isRunning = false;
+    bool scrollOut = false;
+    uint8_t scrollCounter = 0;
+    
+    // init Matrix
+    const uint8_t say_hi[] = {1,2,3,6,9,10,11,12,14,15};
+    const uint8_t say_hi_length = sizeof(say_hi) / sizeof(uint8_t);
+    for(uint8_t i=0; i < say_hi_length-3; i++) led_matrix[say_hi[i]] = TURQUOISE;
+    for(uint8_t i=say_hi_length-3; i < say_hi_length; i++) led_matrix[say_hi[i]] = RED;
+
+    /* Infinite loop */
+    while(1) {
+
+        // set led matrix to current colors
+        led.LED_set_all_off(0);
+        uint8_t LEDMatrixIndex = 0;
+        for(uint8_t cube = 0; cube < FIELDS;) {
+                for(uint8_t column = 0; column <= 6; column+=2) {
+                    led.LED_set_RGB_32(LEDMatrixIndex, led_matrix[cube]);
+                    led.LED_set_RGB_32(LEDMatrixIndex ^ gameRowXOR  , led_matrix[cube]);
+                    led.LED_set_RGB_32(LEDMatrixIndex+1, led_matrix[cube]);
+                    led.LED_set_RGB_32(LEDMatrixIndex+1 ^ gameRowXOR, led_matrix[cube]);
+                    cube++;
+                    LEDMatrixIndex += 2;
+                }
+                LEDMatrixIndex += 8;
+        }
+        led.LED_transmit();
+        // end set colors
+
+        // try to take Semaphore from IRQ if user pressed USER_BTN to start game
+        if ( scrollOut || xSemaphoreTake( SemStartGameHandle, ( TickType_t ) 10 ) == pdTRUE ) {
+            //scroll out "Hi"
+            scrollOut = true;
+            scrollCounter++;
+            if (scrollCounter > 5) {
+                isRunning = true;
+                // release Levels Semaphore
+                xSemaphoreGive( SemLevelsHandle );
+            }
+        }
+        // end take sem from IRQ
+        
+        if (isRunning) {
+            // check matrix if set a color
+            // 3,7,11,15 = last elements in each row
+            activeLED_s activeLEDs;
+            activeLEDs.leds = 0;
+            activeLEDs.delay = delay;
+            if (led_matrix[3] > 0)  activeLEDs.leds += 1;
+            if (led_matrix[7] > 0)  activeLEDs.leds += 2;
+            if (led_matrix[11] > 0) activeLEDs.leds += 4;
+            if (led_matrix[15] > 0) activeLEDs.leds += 8;
+            
+            if (activeLEDs.leds > 0) xQueueSend(fromLEDMatrixHandle, &activeLEDs, (portTickType) 1);
+            // end check last row
+        }
+        
+        if (isRunning || scrollOut) {
+            // shift matrix to next LED in each row after vTaskDelay
+            for(uint8_t row = 0; row < FIELDS; row+=ROWS) {
+                for(uint8_t i = row+ROW4; i > row; i--) {
+                    led_matrix[i] = led_matrix[i-1];
+                    //if (i%1 == 0) 
+                        led_matrix[i-1] = OFF;
+                }
+            }
+            // end shifting down
+        }
+        
+        if (isRunning) {
+            // checking queue for new incoming elements            
+            matrix_s recvQueue;
+            if (xQueueReceive(toLEDMatrixHandle, &recvQueue, (portTickType) 10 ) == true)
+            {
+                // player lost, showing "ToT", reseting values
+                if (recvQueue.hasLost) {
+                        while(true) {
+                        const uint8_t say_tot[] = {
+                            1,9,10,11,12,13,14,17, // 8
+                            20,21,25,28,35,38,42,  // 7
+                            43,46,49,50,51,52,53,54,62}; // 9
+                        led.LED_set_all_off(0);
+                        const uint8_t say_tot_length = sizeof(say_tot) / sizeof(uint8_t);
+                        for(uint8_t i=0; i < 8; i++) led.LED_set_RGB_32(say_tot[i], TURQUOISE);
+                        for(uint8_t i=15; i < say_tot_length; i++) led.LED_set_RGB_32(say_tot[i], RED);
+                        for(uint8_t i=8; i < 8+8; i++) led.LED_set_RGB_32(say_tot[i], YELLOW);
+                        led.LED_transmit();
+                        delay = 250;
+                        vTaskDelay(delay);
+                        led.LED_set_all_off(0);
+                        led.LED_transmit();
+                        vTaskDelay(delay);
+                    }
+                }
+                // end "hasLost"
+                
+                // set color if received a specific 1-bit
+                // first in row: 0, 4, 8, 12
+                if (recvQueue.nextLED > 0) {
+                    for(uint8_t i=ROW1; i <= ROW4; i++) {
+                            uint8_t checkBit = 1 << i;
+                            if ((recvQueue.nextLED & checkBit) == checkBit) {
+                                // select a random color from color_array
+                                uint32_t newColor = colors[rand() % num_colors];
+                                led_matrix[i*4] = newColor;
+                            }
+                    }
+                    delay = recvQueue.delay;
+                }
+                // end set nextLED
+                xSemaphoreGive( SemLevelsHandle );
+            }
+            // end queue check
+        }
+        // end isRunning
+        vTaskDelay(delay);
+    }
+  /* USER CODE END LEDMatrix */
 }
 
 /* USER CODE BEGIN Header_Validate */
@@ -990,36 +893,50 @@ void Validate(void *argument)
   /* Infinite loop */
   for(;;)
   {
-		int recv;
-		int points;
-		if(xQueueReceive(fromLEDMatrixHandle, &recv , (portTickType)0) == true)
+		activeLED_s recv;
+		point_s points;
+		if(xQueueReceive(fromLEDMatrixHandle, &recv , (portTickType)10) == true)
 		{
-			bool B1;
-			bool B2;
-			bool B3;
-			bool B4;
+			uint16_t delay = recv.delay;
+			bool B1=false;
+			bool B2=false;
+			bool B3=false;
+			bool B4=false;
+			bool gavepoints = false; // erkennen ob Punkte gesetzt wurden.
 			
-			for(int i = 1 ; i < 3; i++)
+			for(int i = 1 ; i < 4; i++)
 			{
-				points = 5 * i % 11;
-				vTaskDelay(points * 50);
+				points.p = (((i+1) % 2) + 1) * 5;
+				vTaskDelay(delay /(((i%2)+1)*2)-31);
 				
-				if(xSemaphoreTake(SemBtn1Handle,10))
+				if(xSemaphoreTake(SemBtn1Handle,10)) {
 					B1 = true;
-				if(xSemaphoreTake(SemBtn2Handle,10))
+				}
+				if(xSemaphoreTake(SemBtn2Handle,10)) {
 					B2 = true;
-				if(xSemaphoreTake(SemBtn3Handle,10))
+				}
+				if(xSemaphoreTake(SemBtn3Handle,10)) {
 					B3 = true;
-				if(xSemaphoreTake(SemBtn4Handle,10))
+				}
+				if(xSemaphoreTake(SemBtn4Handle,10)) {
 					B4 = true;
+				}
 				
-				switch(recv) 
+				if(gavepoints)
+				{
+					B1=false;
+					B2=false;
+					B3=false;
+					B4=false;
+				}
+				switch(recv.leds) 
 				{
 					case 1:
 					{
 						if(B1 && !B2 && !B3 && !B4)
 						{
 							xQueueSend(toDisplayQueueHandle, &points, (portTickType)1); // Punkte ans Display senden  
+							gavepoints = true;
 						}
 						break;
 					}
@@ -1028,6 +945,7 @@ void Validate(void *argument)
 						if(!B1 && B2 && !B3 && !B4)
 						{
 							xQueueSend(toDisplayQueueHandle, &points, (portTickType)1); // Punkte ans Display senden 
+							gavepoints = true;
 						}
 						break;
 					}
@@ -1036,6 +954,7 @@ void Validate(void *argument)
 						if(B1 && B2 && !B3 && !B4)
 						{
 							xQueueSend(toDisplayQueueHandle, &points, (portTickType)1); // Punkte ans Display senden  
+							gavepoints = true;
 						}
 						break;
 					}
@@ -1044,6 +963,7 @@ void Validate(void *argument)
 						if(!B1 && !B2 && B3 && !B4)
 						{
 							xQueueSend(toDisplayQueueHandle, &points, (portTickType)1); // Punkte ans Display senden 
+							gavepoints = true;
 						}
 						break;
 					}
@@ -1052,6 +972,7 @@ void Validate(void *argument)
 						if(B1 && !B2 && B3 && !B4)
 						{
 							xQueueSend(toDisplayQueueHandle, &points, (portTickType)1); // Punkte ans Display senden 
+							gavepoints = true;
 						}
 						break;
 					}
@@ -1060,6 +981,7 @@ void Validate(void *argument)
 						if(!B1 && B2 && B3 && !B4)
 						{
 							xQueueSend(toDisplayQueueHandle, &points, (portTickType)1); // Punkte ans Display senden 
+							gavepoints = true;
 						}
 						break;
 					}
@@ -1068,6 +990,7 @@ void Validate(void *argument)
 						if(B1 && B2 && B3 && !B4)
 						{
 							xQueueSend(toDisplayQueueHandle, &points, (portTickType)1); // Punkte ans Display senden 
+							gavepoints = true;
 						}
 						break;
 					}
@@ -1076,6 +999,7 @@ void Validate(void *argument)
 						if(!B1 && !B2 && !B3 && B4)
 						{
 							xQueueSend(toDisplayQueueHandle, &points, (portTickType)1); // Punkte ans Display senden 
+							gavepoints = true;
 						}
 						break;
 					}
@@ -1084,6 +1008,7 @@ void Validate(void *argument)
 						if(B1 && !B2 && !B3 && B4)
 						{
 							xQueueSend(toDisplayQueueHandle, &points, (portTickType)1); // Punkte ans Display senden 
+							gavepoints = true;
 						}
 						break;
 					}
@@ -1092,6 +1017,7 @@ void Validate(void *argument)
 						if(!B1 && B2 && !B3 && B4)
 						{
 							xQueueSend(toDisplayQueueHandle, &points, (portTickType)1); // Punkte ans Display senden 
+							gavepoints = true;
 						}
 						break;
 					}
@@ -1100,6 +1026,7 @@ void Validate(void *argument)
 						if(B1 && B2 && !B3 && B4)
 						{
 							xQueueSend(toDisplayQueueHandle, &points, (portTickType)1); // Punkte ans Display senden 
+							gavepoints = true;
 						}
 						break;
 					}
@@ -1108,6 +1035,7 @@ void Validate(void *argument)
 						if(!B1 && !B2 && B3 && B4)
 						{
 							xQueueSend(toDisplayQueueHandle, &points, (portTickType)1); // Punkte ans Display senden 
+							gavepoints = true;
 						}	
 						break;
 					}
@@ -1116,6 +1044,7 @@ void Validate(void *argument)
 						if(B1 && !B2 && B3 && B4)
 						{
 							xQueueSend(toDisplayQueueHandle, &points, (portTickType)1); // Punkte ans Display senden 
+							gavepoints = true;
 						}	
 						break;
 					}
@@ -1124,6 +1053,7 @@ void Validate(void *argument)
 						if(!B1 && B2 && B3 && B4)
 						{
 							xQueueSend(toDisplayQueueHandle, &points, (portTickType)1); // Punkte ans Display senden 
+							gavepoints = true;
 						}	
 						break;
 					}
@@ -1132,16 +1062,33 @@ void Validate(void *argument)
 						if(B1 && B2 && B3 && B4)
 						{
 							xQueueSend(toDisplayQueueHandle, &points, (portTickType)1); // Punkte ans Display senden 
+							gavepoints = true;
 						}	
 						break;
 					}
 					default: 
 					{
-						 xQueueSend(toDisplayQueueHandle, 0, (portTickType)1); // Punkte ans Display senden  
 						break;
 					}
 				}
 			}
+			xSemaphoreGiveFromISR(SemBtnRelease1Handle, NULL);
+			xSemaphoreGiveFromISR(SemBtnRelease2Handle, NULL);
+			xSemaphoreGiveFromISR(SemBtnRelease3Handle, NULL);
+			xSemaphoreGiveFromISR(SemBtnRelease4Handle, NULL);
+		if(!gavepoints) 
+			{
+				matrix_s sendQueue;
+				while (xQueueReceive(toLEDMatrixHandle, &sendQueue, (portTickType) 10 ) == true) { vTaskDelay(1); }
+					sendQueue.nextLED= 0;
+					sendQueue.isRunning = false;
+					sendQueue.hasLost = true;
+					sendQueue.delay = 1;
+				xQueueSend( toLEDMatrixHandle, &sendQueue, ( TickType_t ) 10 );
+				points.p=0;
+				xQueueSend(toDisplayQueueHandle, &points, (portTickType)10); // 0 ans Display senden, sodass der die LOST Message bekommt 
+				while(1) { vTaskDelay(1); }
+			}
 		}
   }
   /* USER CODE END Validate */
@@ -1157,28 +1104,31 @@ void Validate(void *argument)
 void Display(void *argument)
 {
   /* USER CODE BEGIN Display */
+		point_s rec;
+		rec.p = 1;// Initialisierung mit 1 damit am Anfang nicht die Todesnachricht ausgegeben wird
+		uint16_t points = 0;
   /* Infinite loop */
   for(;;)
   { 
-		int rec = 1; // Initialisierung mit 1 damit am Anfang nicht die Todesnachricht ausgegeben wird
-		int points = 0;
-		char punkte[] = "1000";
-    if(xQueueReceive(toDisplayQueueHandle, &rec , (portTickType)0) == true)
-		{
-			points += rec;
-			punkte[0] = points / 100;
-			punkte[1] = (points %100) / 10;
-			punkte[2] = points % 10;
-		}
-	//	LCD_init();
-	//	LCD_setCursor(0,0);
-		
-	//	LCD_print(punkte);
-		if(rec == 0)
+
+    if(xQueueReceive(toDisplayQueueHandle, &rec , (portTickType)10) == true)
 		{
-	//		LCD_print("You are dead");
+			points += rec.p;
+			uint8_t lenPoints = log10(points) + 1;
+			uint8_t charPoints[lenPoints];
+			sprintf((char *) charPoints,"%d",points);
+			uint8_t PointsMessage[]={" points"};
+
+			if(rec.p == 0)
+			{
+				uint8_t DeadMessage[]={"You are Dead, you reached "};
+				HAL_UART_Transmit(&huart3,DeadMessage,sizeof(DeadMessage),1000);
+			}
+			HAL_UART_Transmit(&huart3,charPoints,sizeof(charPoints),1000);
+			HAL_UART_Transmit(&huart3,PointsMessage,sizeof(PointsMessage),1000);
+			HAL_UART_Transmit(&huart3,CarRet,sizeof(CarRet),1000);
 		}
-  }
+	}
   /* USER CODE END Display */
 }
 
diff --git a/F413_FreeRTOS_LED_Matrix_Game.ioc b/F413_FreeRTOS_LED_Matrix_Game.ioc
index 3a25561d109294828e0b73ea8af163418255c7f2..c3df331b60eeb3200c9d4941f22b10ae3f59db62 100644
--- a/F413_FreeRTOS_LED_Matrix_Game.ioc
+++ b/F413_FreeRTOS_LED_Matrix_Game.ioc
@@ -13,8 +13,8 @@ Dma.TIM2_CH1.0.Priority=DMA_PRIORITY_VERY_HIGH
 Dma.TIM2_CH1.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
 FREERTOS.FootprintOK=true
 FREERTOS.IPParameters=Tasks01,FootprintOK,configUSE_PREEMPTION,configUSE_OS2_TIMER,Queues01
-FREERTOS.Queues01=toLEDMatrix,16,matrix_s,0,Dynamic,NULL,NULL;fromLEDMatrix,16,matrix_s,0,Dynamic,NULL,NULL;toDisplayQueue,16,uint16_t,0,Dynamic,NULL,NULL
-FREERTOS.Tasks01=Task1,24,128,Levels,Default,NULL,Dynamic,NULL,NULL;Task2,24,128,Task02,Default,NULL,Dynamic,NULL,NULL;Task3,24,128,Validate,Default,NULL,Dynamic,NULL,NULL;Task4,8,128,Display,Default,NULL,Dynamic,NULL,NULL
+FREERTOS.Queues01=toLEDMatrix,16,matrix_s,0,Dynamic,NULL,NULL;fromLEDMatrix,16,activeLED_s,0,Dynamic,NULL,NULL;toDisplayQueue,16,uint16_t,0,Dynamic,NULL,NULL
+FREERTOS.Tasks01=Task1,24,128,Levels,Default,NULL,Dynamic,NULL,NULL;Task2,24,128,LEDMatrix,Default,NULL,Dynamic,NULL,NULL;Task3,24,128,Validate,Default,NULL,Dynamic,NULL,NULL;Task4,8,128,Display,Default,NULL,Dynamic,NULL,NULL
 FREERTOS.configUSE_OS2_TIMER=1
 FREERTOS.configUSE_PREEMPTION=1
 File.Version=6
@@ -43,35 +43,31 @@ Mcu.Pin15=PD8
 Mcu.Pin16=PD9
 Mcu.Pin17=PG6
 Mcu.Pin18=PG7
-Mcu.Pin19=PC8
+Mcu.Pin19=PA8
 Mcu.Pin2=PE5
-Mcu.Pin20=PC9
-Mcu.Pin21=PA8
-Mcu.Pin22=PA9
-Mcu.Pin23=PA10
-Mcu.Pin24=PA11
-Mcu.Pin25=PA12
-Mcu.Pin26=PA13
-Mcu.Pin27=PA14
-Mcu.Pin28=PC10
-Mcu.Pin29=PC11
+Mcu.Pin20=PA9
+Mcu.Pin21=PA10
+Mcu.Pin22=PA11
+Mcu.Pin23=PA12
+Mcu.Pin24=PA13
+Mcu.Pin25=PA14
+Mcu.Pin26=PD4
+Mcu.Pin27=PD5
+Mcu.Pin28=PD6
+Mcu.Pin29=PD7
 Mcu.Pin3=PE6
-Mcu.Pin30=PD4
-Mcu.Pin31=PD5
-Mcu.Pin32=PD6
-Mcu.Pin33=PD7
-Mcu.Pin34=PB3
-Mcu.Pin35=PB7
-Mcu.Pin36=VP_FREERTOS_VS_CMSIS_V2
-Mcu.Pin37=VP_SYS_VS_tim7
-Mcu.Pin38=VP_TIM2_VS_ClockSourceINT
+Mcu.Pin30=PB3
+Mcu.Pin31=PB7
+Mcu.Pin32=VP_FREERTOS_VS_CMSIS_V2
+Mcu.Pin33=VP_SYS_VS_tim7
+Mcu.Pin34=VP_TIM2_VS_ClockSourceINT
 Mcu.Pin4=PC13
 Mcu.Pin5=PC14-OSC32_IN
 Mcu.Pin6=PC15-OSC32_OUT
 Mcu.Pin7=PF7
 Mcu.Pin8=PF8
 Mcu.Pin9=PF9
-Mcu.PinsNb=39
+Mcu.PinsNb=35
 Mcu.ThirdPartyNb=0
 Mcu.UserConstants=
 Mcu.UserName=STM32F413ZHTx
@@ -155,14 +151,6 @@ PB7.GPIOParameters=GPIO_Label
 PB7.GPIO_Label=LED_blue
 PB7.Locked=true
 PB7.Signal=GPIO_Output
-PC10.GPIOParameters=GPIO_Label
-PC10.GPIO_Label=LED3
-PC10.Locked=true
-PC10.Signal=GPIO_Output
-PC11.GPIOParameters=GPIO_Label
-PC11.GPIO_Label=LED4
-PC11.Locked=true
-PC11.Signal=GPIO_Output
 PC13.GPIOParameters=GPIO_Label
 PC13.GPIO_Label=USER_Btn [B1]
 PC13.Locked=true
@@ -173,32 +161,24 @@ PC14-OSC32_IN.Signal=RCC_OSC32_IN
 PC15-OSC32_OUT.Locked=true
 PC15-OSC32_OUT.Mode=LSE-External-Oscillator
 PC15-OSC32_OUT.Signal=RCC_OSC32_OUT
-PC8.GPIOParameters=GPIO_Label
-PC8.GPIO_Label=LED1
-PC8.Locked=true
-PC8.Signal=GPIO_Output
-PC9.GPIOParameters=GPIO_Label
-PC9.GPIO_Label=LED2
-PC9.Locked=true
-PC9.Signal=GPIO_Output
 PD4.GPIOParameters=GPIO_PuPd,GPIO_Label
 PD4.GPIO_Label=btn1
-PD4.GPIO_PuPd=GPIO_PULLDOWN
+PD4.GPIO_PuPd=GPIO_PULLUP
 PD4.Locked=true
 PD4.Signal=GPXTI4
 PD5.GPIOParameters=GPIO_PuPd,GPIO_Label
 PD5.GPIO_Label=btn2
-PD5.GPIO_PuPd=GPIO_PULLDOWN
+PD5.GPIO_PuPd=GPIO_PULLUP
 PD5.Locked=true
 PD5.Signal=GPXTI5
 PD6.GPIOParameters=GPIO_PuPd,GPIO_Label
 PD6.GPIO_Label=btn3
-PD6.GPIO_PuPd=GPIO_PULLDOWN
+PD6.GPIO_PuPd=GPIO_PULLUP
 PD6.Locked=true
 PD6.Signal=GPXTI6
 PD7.GPIOParameters=GPIO_PuPd,GPIO_Label
 PD7.GPIO_Label=btn4
-PD7.GPIO_PuPd=GPIO_PULLDOWN
+PD7.GPIO_PuPd=GPIO_PULLUP
 PD7.Locked=true
 PD7.Signal=GPXTI7
 PD8.GPIOParameters=GPIO_Label
diff --git a/MDK-ARM/F413_FreeRTOS_LED_Matrix_Game.uvguix.TiSpOkEs b/MDK-ARM/F413_FreeRTOS_LED_Matrix_Game.uvguix.TiSpOkEs
index dca19f082b256ced98fa5b6e1a5184ac7b6c923a..0f1ca3a8fff1c2a2311f319e4cd9a53cd145b18a 100644
--- a/MDK-ARM/F413_FreeRTOS_LED_Matrix_Game.uvguix.TiSpOkEs
+++ b/MDK-ARM/F413_FreeRTOS_LED_Matrix_Game.uvguix.TiSpOkEs
@@ -15,17 +15,17 @@
     <View>
       <WinId>38003</WinId>
       <ViewName>Registers</ViewName>
-      <TableColWidths>133 85</TableColWidths>
+      <TableColWidths>133 160</TableColWidths>
     </View>
     <View>
       <WinId>346</WinId>
       <ViewName>Code Coverage</ViewName>
-      <TableColWidths>952 160</TableColWidths>
+      <TableColWidths>952 636</TableColWidths>
     </View>
     <View>
       <WinId>204</WinId>
       <ViewName>Performance Analyzer</ViewName>
-      <TableColWidths>1112</TableColWidths>
+      <TableColWidths>1156 166 166 100</TableColWidths>
     </View>
   </SECTreeCtrl>
 
@@ -70,7 +70,7 @@
       <WinId>466</WinId>
       <ViewName>Source Browser</ViewName>
       <UserString>500</UserString>
-      <TableColWidths>300</TableColWidths>
+      <TableColWidths>166</TableColWidths>
     </View>
   </TreeListPane>
 
@@ -110,8 +110,8 @@
     <MDIClientArea>
       <RegID>0</RegID>
       <MDITabState>
-        <Len>765</Len>
-        <Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000005000000000000000100000059433A5C55736572735C546953704F6B45735C53544D3332437562655C437562654D585F50726F6A656374735C463431335F4672656552544F535F4C45445F4D61747269785F47616D655C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF59433A5C55736572735C546953704F6B45735C53544D3332437562655C437562654D585F50726F6A656374735C463431335F4672656552544F535F4C45445F4D61747269785F47616D655C436F72655C496E635C6D61696E2E6800000000066D61696E2E6800000000FFDC7800FFFFFFFF61433A5C55736572735C546953704F6B45735C53544D3332437562655C437562654D585F50726F6A656374735C463431335F4672656552544F535F4C45445F4D61747269785F47616D655C436F72655C5372635C73746D3332663478785F69742E63000000000E73746D3332663478785F69742E6300000000BECEA100FFFFFFFF5C433A5C55736572735C546953704F6B45735C53544D3332437562655C437562654D585F50726F6A656374735C463431335F4672656552544F535F4C45445F4D61747269785F47616D655C436F72655C5372635C777332383132622E630000000009777332383132622E6300000000F0A0A100FFFFFFFF5C433A5C55736572735C546953704F6B45735C53544D3332437562655C437562654D585F50726F6A656374735C463431335F4672656552544F535F4C45445F4D61747269785F47616D655C436F72655C496E635C777332383132622E680000000009777332383132622E6800000000BCA8E100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD50001000000000000000200000096FAFFFFF6F7FFFF7005000003FDFFFF</Data>
+        <Len>1053</Len>
+        <Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000007000000000000000100000059433A5C55736572735C546953704F6B45735C53544D3332437562655C437562654D585F50726F6A656374735C463431335F4672656552544F535F4C45445F4D61747269785F47616D655C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF59433A5C55736572735C546953704F6B45735C53544D3332437562655C437562654D585F50726F6A656374735C463431335F4672656552544F535F4C45445F4D61747269785F47616D655C436F72655C496E635C6D61696E2E6800000000066D61696E2E6800000000FFDC7800FFFFFFFF61433A5C55736572735C546953704F6B45735C53544D3332437562655C437562654D585F50726F6A656374735C463431335F4672656552544F535F4C45445F4D61747269785F47616D655C436F72655C5372635C73746D3332663478785F69742E63000000000E73746D3332663478785F69742E6300000000BECEA100FFFFFFFF5C433A5C55736572735C546953704F6B45735C53544D3332437562655C437562654D585F50726F6A656374735C463431335F4672656552544F535F4C45445F4D61747269785F47616D655C436F72655C5372635C777332383132622E630000000009777332383132622E6300000000F0A0A100FFFFFFFF5C433A5C55736572735C546953704F6B45735C53544D3332437562655C437562654D585F50726F6A656374735C463431335F4672656552544F535F4C45445F4D61747269785F47616D655C436F72655C496E635C777332383132622E680000000009777332383132622E6800000000BCA8E100FFFFFFFF67433A5C55736572735C546953704F6B45735C53544D3332437562655C437562654D585F50726F6A656374735C463431335F4672656552544F535F4C45445F4D61747269785F47616D655C4D444B2D41524D5C737461727475705F73746D33326634313378782E730000000015737461727475705F73746D33326634313378782E73000000009CC1B600FFFFFFFF79433A5C55736572735C546953704F6B45735C53544D3332437562655C437562654D585F50726F6A656374735C463431335F4672656552544F535F4C45445F4D61747269785F47616D655C4D6964646C6577617265735C54686972645F50617274795C4672656552544F535C536F757263655C7461736B732E6300000000077461736B732E6300000000F7B88600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD50001000000000000000200000096FAFFFFF6F7FFFF7005000003FDFFFF</Data>
       </MDITabState>
     </MDIClientArea>
     <ViewEx>
@@ -1805,8 +1805,8 @@
         <RegID>59392</RegID>
         <Name>File</Name>
         <Buttons>
-          <Len>2774</Len>
-          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000077361795F746F749600000000000000140006626572656974033230300564656C617900097363726F6C6C6F757408636865636B426974067461736B3032033530350773656E647175650D73656D737461727467616D65680C73656D737461727467616D651253656D537461727447616D6548616E646C650472616E64054F4345414E06427574746F6E06627574746F6E0475736572057372616E640679656C6C6F7704756172740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
+          <Len>2793</Len>
+          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001366726F6D4C45444D617472697848616E646C65960000000000000012001366726F6D4C45444D617472697848616E646C650766726F6D6C65640011746F4C45444D617472697848616E646C65086D61747269785F7304555345520C6163746976654C4544735F730B6163746976654C45445F73096163746976656C6564076E6578744C45440973656E6451756575650A6163746976656C6564730A636F6E66696775726564044C454433044C454432044C45443104746F646F0875696E7431365F74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
         </Buttons>
         <OriginalItems>
           <Len>1423</Len>
@@ -1822,7 +1822,7 @@
         <Name>Build</Name>
         <Buttons>
           <Len>1018</Len>
-          <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000001D463431335F4672656552544F535F4C45445F4D61747269785F47616D65960000000000000001001D463431335F4672656552544F535F4C45445F4D61747269785F47616D65000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
+          <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000001D463431335F4672656552544F535F4C45445F4D61747269785F47616D65960000000000000001001D463431335F4672656552544F535F4C45445F4D61747269785F47616D65000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
         </Buttons>
         <OriginalItems>
           <Len>583</Len>
@@ -1838,7 +1838,7 @@
         <Name>Debug</Name>
         <Buttons>
           <Len>2373</Len>
-          <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
+          <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
         </Buttons>
         <OriginalItems>
           <Len>898</Len>
@@ -3546,8 +3546,8 @@
         <RegID>59392</RegID>
         <Name>File</Name>
         <Buttons>
-          <Len>2817</Len>
-          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000A6E756D5F636F6C6F7273960000000000000014000A6E756D5F636F6C6F72730572616E64280472616E64044E554C4C0462746E33000668756172743306697372756E6E046C6564731366726F6D4C45444D617472697848616E646C65056C65643174066C656432746F0D53656D42746E3148616E646C6514746F446973706C6179517565756548616E646C650956616C6964617465280856616C696461746511746F4C45444D617472697848616E646C6503746F741253656D537461727447616D6548616E646C6509737461727467616D650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000300150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
+          <Len>2793</Len>
+          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001366726F6D4C45444D617472697848616E646C65960000000000000012001366726F6D4C45444D617472697848616E646C650766726F6D6C65640011746F4C45444D617472697848616E646C65086D61747269785F7304555345520C6163746976654C4544735F730B6163746976654C45445F73096163746976656C6564076E6578744C45440973656E6451756575650A6163746976656C6564730A636F6E66696775726564044C454433044C454432044C45443104746F646F0875696E7431365F74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000300150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000000180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
         </Buttons>
         <OriginalItems>
           <Len>1423</Len>
@@ -3606,9 +3606,9 @@
       <ActiveTab>0</ActiveTab>
       <Doc>
         <Name>../Core/Src/main.c</Name>
-        <ColumnNumber>30</ColumnNumber>
-        <TopLine>727</TopLine>
-        <CurrentLine>750</CurrentLine>
+        <ColumnNumber>32</ColumnNumber>
+        <TopLine>995</TopLine>
+        <CurrentLine>1050</CurrentLine>
         <Folding>1</Folding>
         <ContractedFolders></ContractedFolders>
         <PaneID>0</PaneID>
@@ -3633,7 +3633,7 @@
       </Doc>
       <Doc>
         <Name>..\Core\Src\ws2812b.c</Name>
-        <ColumnNumber>7</ColumnNumber>
+        <ColumnNumber>10</ColumnNumber>
         <TopLine>1</TopLine>
         <CurrentLine>34</CurrentLine>
         <Folding>1</Folding>
@@ -3643,12 +3643,30 @@
       <Doc>
         <Name>../Core/Inc/ws2812b.h</Name>
         <ColumnNumber>31</ColumnNumber>
-        <TopLine>57</TopLine>
+        <TopLine>41</TopLine>
         <CurrentLine>74</CurrentLine>
         <Folding>1</Folding>
         <ContractedFolders></ContractedFolders>
         <PaneID>0</PaneID>
       </Doc>
+      <Doc>
+        <Name>startup_stm32f413xx.s</Name>
+        <ColumnNumber>0</ColumnNumber>
+        <TopLine>173</TopLine>
+        <CurrentLine>194</CurrentLine>
+        <Folding>1</Folding>
+        <ContractedFolders></ContractedFolders>
+        <PaneID>0</PaneID>
+      </Doc>
+      <Doc>
+        <Name>../Middlewares/Third_Party/FreeRTOS/Source/tasks.c</Name>
+        <ColumnNumber>0</ColumnNumber>
+        <TopLine>3628</TopLine>
+        <CurrentLine>3650</CurrentLine>
+        <Folding>1</Folding>
+        <ContractedFolders></ContractedFolders>
+        <PaneID>0</PaneID>
+      </Doc>
     </MDIGroup>
   </MDIGroups>
 
diff --git a/MDK-ARM/F413_FreeRTOS_LED_Matrix_Game.uvoptx b/MDK-ARM/F413_FreeRTOS_LED_Matrix_Game.uvoptx
index c5730090c49535fbaac2b49494079e35d3d088cb..b6e931c1aebd9f312ce55718a2c4ce84b316aa83 100644
--- a/MDK-ARM/F413_FreeRTOS_LED_Matrix_Game.uvoptx
+++ b/MDK-ARM/F413_FreeRTOS_LED_Matrix_Game.uvoptx
@@ -152,25 +152,25 @@
         <Bp>
           <Number>0</Number>
           <Type>0</Type>
-          <LineNumber>840</LineNumber>
+          <LineNumber>1200</LineNumber>
           <EnabledFlag>1</EnabledFlag>
-          <Address>0</Address>
+          <Address>134232518</Address>
           <ByteObject>0</ByteObject>
           <HtxType>0</HtxType>
           <ManyObjects>0</ManyObjects>
           <SizeOfObject>0</SizeOfObject>
           <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>0</BreakIfRCount>
+          <BreakIfRCount>1</BreakIfRCount>
           <Filename>../Core/Src/main.c</Filename>
           <ExecCommand></ExecCommand>
-          <Expression></Expression>
+          <Expression>\\F413_FreeRTOS_LED_Matrix_Game\../Core/Src/main.c\1200</Expression>
         </Bp>
         <Bp>
           <Number>1</Number>
           <Type>0</Type>
-          <LineNumber>1007</LineNumber>
+          <LineNumber>1187</LineNumber>
           <EnabledFlag>1</EnabledFlag>
-          <Address>134230456</Address>
+          <Address>134232454</Address>
           <ByteObject>0</ByteObject>
           <HtxType>0</HtxType>
           <ManyObjects>0</ManyObjects>
@@ -179,60 +179,60 @@
           <BreakIfRCount>1</BreakIfRCount>
           <Filename>../Core/Src/main.c</Filename>
           <ExecCommand></ExecCommand>
-          <Expression>\\F413_FreeRTOS_LED_Matrix_Game\../Core/Src/main.c\1007</Expression>
+          <Expression>\\F413_FreeRTOS_LED_Matrix_Game\../Core/Src/main.c\1187</Expression>
         </Bp>
         <Bp>
           <Number>2</Number>
           <Type>0</Type>
-          <LineNumber>838</LineNumber>
+          <LineNumber>1010</LineNumber>
           <EnabledFlag>1</EnabledFlag>
-          <Address>0</Address>
+          <Address>134231804</Address>
           <ByteObject>0</ByteObject>
           <HtxType>0</HtxType>
           <ManyObjects>0</ManyObjects>
           <SizeOfObject>0</SizeOfObject>
           <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>0</BreakIfRCount>
+          <BreakIfRCount>1</BreakIfRCount>
           <Filename>../Core/Src/main.c</Filename>
           <ExecCommand></ExecCommand>
-          <Expression></Expression>
+          <Expression>\\F413_FreeRTOS_LED_Matrix_Game\../Core/Src/main.c\1010</Expression>
         </Bp>
         <Bp>
           <Number>3</Number>
           <Type>0</Type>
-          <LineNumber>839</LineNumber>
+          <LineNumber>921</LineNumber>
           <EnabledFlag>1</EnabledFlag>
-          <Address>0</Address>
+          <Address>134230354</Address>
           <ByteObject>0</ByteObject>
           <HtxType>0</HtxType>
           <ManyObjects>0</ManyObjects>
           <SizeOfObject>0</SizeOfObject>
           <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>0</BreakIfRCount>
+          <BreakIfRCount>1</BreakIfRCount>
           <Filename>../Core/Src/main.c</Filename>
           <ExecCommand></ExecCommand>
-          <Expression></Expression>
+          <Expression>\\F413_FreeRTOS_LED_Matrix_Game\../Core/Src/main.c\921</Expression>
         </Bp>
         <Bp>
           <Number>4</Number>
           <Type>0</Type>
-          <LineNumber>1008</LineNumber>
+          <LineNumber>917</LineNumber>
           <EnabledFlag>1</EnabledFlag>
-          <Address>0</Address>
+          <Address>134230302</Address>
           <ByteObject>0</ByteObject>
           <HtxType>0</HtxType>
           <ManyObjects>0</ManyObjects>
           <SizeOfObject>0</SizeOfObject>
           <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>0</BreakIfRCount>
+          <BreakIfRCount>1</BreakIfRCount>
           <Filename>../Core/Src/main.c</Filename>
           <ExecCommand></ExecCommand>
-          <Expression></Expression>
+          <Expression>\\F413_FreeRTOS_LED_Matrix_Game\../Core/Src/main.c\917</Expression>
         </Bp>
         <Bp>
           <Number>5</Number>
           <Type>0</Type>
-          <LineNumber>1014</LineNumber>
+          <LineNumber>945</LineNumber>
           <EnabledFlag>1</EnabledFlag>
           <Address>0</Address>
           <ByteObject>0</ByteObject>
@@ -248,7 +248,7 @@
         <Bp>
           <Number>6</Number>
           <Type>0</Type>
-          <LineNumber>1035</LineNumber>
+          <LineNumber>1195</LineNumber>
           <EnabledFlag>1</EnabledFlag>
           <Address>0</Address>
           <ByteObject>0</ByteObject>
@@ -264,6 +264,22 @@
         <Bp>
           <Number>7</Number>
           <Type>0</Type>
+          <LineNumber>1208</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>0</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>0</BreakIfRCount>
+          <Filename>../Core/Src/main.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression></Expression>
+        </Bp>
+        <Bp>
+          <Number>8</Number>
+          <Type>0</Type>
           <LineNumber>45</LineNumber>
           <EnabledFlag>1</EnabledFlag>
           <Address>0</Address>
@@ -278,7 +294,7 @@
           <Expression></Expression>
         </Bp>
         <Bp>
-          <Number>8</Number>
+          <Number>9</Number>
           <Type>0</Type>
           <LineNumber>148</LineNumber>
           <EnabledFlag>1</EnabledFlag>
@@ -294,7 +310,7 @@
           <Expression></Expression>
         </Bp>
         <Bp>
-          <Number>9</Number>
+          <Number>10</Number>
           <Type>0</Type>
           <LineNumber>277</LineNumber>
           <EnabledFlag>1</EnabledFlag>
@@ -369,9 +385,42 @@
         <Ww>
           <count>11</count>
           <WinNumber>1</WinNumber>
+          <ItemText>recvQueue</ItemText>
+        </Ww>
+        <Ww>
+          <count>12</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>sendQueue</ItemText>
+        </Ww>
+        <Ww>
+          <count>13</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>toLEDMatrixHandle</ItemText>
+        </Ww>
+        <Ww>
+          <count>14</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>fromLEDMatrixHandle</ItemText>
+        </Ww>
+        <Ww>
+          <count>15</count>
+          <WinNumber>1</WinNumber>
           <ItemText>recv</ItemText>
         </Ww>
+        <Ww>
+          <count>16</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>activeLEDs</ItemText>
+        </Ww>
       </WatchWindow1>
+      <MemoryWindow1>
+        <Mm>
+          <WinNumber>1</WinNumber>
+          <SubType>0</SubType>
+          <ItemText>\\F413_FreeRTOS_LED_Matrix_Game\../Core/Src/main.c\toLEDMatrixHandle</ItemText>
+          <AccSizeX>0</AccSizeX>
+        </Mm>
+      </MemoryWindow1>
       <Tracepoint>
         <THDelay>0</THDelay>
       </Tracepoint>