diff --git a/DebugVarEdit.exe b/DebugVarEdit.exe
index 0c27b2b..5aaac85 100644
Binary files a/DebugVarEdit.exe and b/DebugVarEdit.exe differ
diff --git a/README.md b/README.md
index 11f9238..b518019 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,12 @@
-# DebugVarEdit — Утилита для генерации отладочных переменных C-проекта
+# DebugVarEdit — Утилита для генерации переменных для отладки
**DebugVarEdit** — графическое приложение для Windows, предназначенное для настройки и генерации отладочных переменных (`debug_vars.c`) на основе исходного C-проекта. Работает с `makefile` проекта, сохраняет изменения в XML и позволяет удобно редактировать переменные и их типы через интерфейс.
Программа — один исполняемый файл `DebugVarEdit.exe`, не требующий установки и дополнительных зависимостей.
> Требуется Windows 7 или новее.
+
+> [Для разработчиков](#для-разработчиков)
---
## Как использовать
@@ -85,20 +87,20 @@
```bash
Src
+├── build/
+│ └── build_and_clean.py # Билдинг проекта в .exe (через nuitka или pyinstaller)
├── DebugVarEdit_GUI.py # Главное окно
-├── var_table.py # Таблица выбранных переменных
-├── var_selector_window.py # Окно выбора переменных
-├── var_selector_table.py # Таблица переменных в окне выбора переменных
-├── scan_progress_gui.py # Отображение процесса сканирования переменных
-├── scan_vars.py # Сканирование переменных среди .c/.h файлов
-├── generate_debug_vars.py # Генерация debug_vars.c
+├── var_table.py # Таблица выбранных переменных
+├── var_selector_window.py # Окно выбора переменных
+├── var_selector_table.py # Таблица переменных в окне выбора переменных
+├── scan_progress_gui.py # Отображение процесса сканирования переменных
+├── scan_vars.py # Сканирование переменных среди .c/.h файлов
+├── generate_debug_vars.py # Генерация debug_vars.c
├── myXML.py # Утилиты для XML
-├── makefile_parser.py # Парсинг makefile на .c/.h файлы
+├── makefile_parser.py # Парсинг makefile на .c/.h файлы
├── var_setup.py # Подготовка переменных для окна выбора переменных
├── libclang.dll # Бибилиотека clang
├── icon.ico # Иконка
-build
-├── build_and_clean.py # Билдинг проекта в .exe (через nuitka или pyinstaller)
```
### Зависимости
diff --git a/Src/DebugVarEdit_GUI.py b/Src/DebugVarEdit_GUI.py
index 286f255..4c1c88a 100644
--- a/Src/DebugVarEdit_GUI.py
+++ b/Src/DebugVarEdit_GUI.py
@@ -10,8 +10,8 @@ from enum import IntEnum
import threading
from generate_debug_vars import run_generate
import var_setup
-from var_selector_window import var_selector_windowDialog
-from var_table import var_tableWidget, rows
+from var_selector_window import VariableSelectorDialog
+from var_table import VariableTableWidget, rows
from scan_progress_gui import ProcessOutputWindow
import scan_vars
import myXML
@@ -134,7 +134,7 @@ class VarEditor(QWidget):
btn_open_output = QPushButton(open_output_title)
btn_open_output.clicked.connect(self.__open_output_file_with_program)
# Таблица
- self.table = var_tableWidget()
+ self.table = VariableTableWidget()
# Основной layout
layout = QVBoxLayout()
layout.addLayout(xml_layout)
@@ -208,7 +208,7 @@ class VarEditor(QWidget):
# Создаём окно с кнопкой "Готово"
self.proc_win = ProcessOutputWindow(self.proj_path, self.makefile_path, self.xml_path,
- on_done_callback=self.__after_scan_vars_finished)
+ self.__after_scan_vars_finished, self)
self.proc_win.start_scan()
@@ -442,8 +442,9 @@ class VarEditor(QWidget):
if not self.vars_list:
QMessageBox.warning(self, "Нет переменных", f"Сначала загрузите переменные ({scan_title}).")
return
-
- dlg = var_selector_windowDialog(self.table, self.vars_list, self.structs, self.typedef_map, self.xml_path, self)
+
+ self.update()
+ dlg = VariableSelectorDialog(self.table, self.vars_list, self.structs, self.typedef_map, self.xml_path, self)
if dlg.exec_():
self.write_to_xml()
self.update()
diff --git a/Src/README_DEVELOP.md b/Src/README_DEVELOP.md
new file mode 100644
index 0000000..da109f9
--- /dev/null
+++ b/Src/README_DEVELOP.md
@@ -0,0 +1,55 @@
+# Для разработчиков
+
+### Структура проекта:
+
+```bash
+Src
+├── build/
+│ └── build_and_clean.py # Билдинг проекта в .exe (через nuitka или pyinstaller)
+├── DebugVarEdit_GUI.py # Главное окно
+├── var_table.py # Таблица выбранных переменных
+├── var_selector_window.py # Окно выбора переменных
+├── var_selector_table.py # Таблица переменных в окне выбора переменных
+├── scan_progress_gui.py # Отображение процесса сканирования переменных
+├── scan_vars.py # Сканирование переменных среди .c/.h файлов
+├── generate_debug_vars.py # Генерация debug_vars.c
+├── myXML.py # Утилиты для XML
+├── makefile_parser.py # Парсинг makefile на .c/.h файлы
+├── var_setup.py # Подготовка переменных для окна выбора переменных
+├── libclang.dll # Бибилиотека clang
+├── icon.ico # Иконка
+```
+
+### Зависимости
+
+Для запуска приложения:
+- **Python 3.7+**
+- **clang** — используется для парсинга C-кода (требуется `libclang.dll`)
+- **PySide2** — GUI-фреймворк
+- **lxml** — работа с XML
+> Python 3.7 и PySide2 рекомендуется для совместимости с Windows 7
+
+Для сборки `.exe`:
+- **Nuitka** — создает полностью автономный `.exe` без внешних зависимостей
+- **PyInstaller** — создает `.exe` с зависимостью от `pythonXX.dll` (Python должен быть установлен)
+
+
+### Сборка:
+Если вы хотите собрать `DebugVarEdit.exe` самостоятельно из исходников, используйте скрипт **build/build_and_clean.py**. Он автоматически собирает проект с помощью Nuitka или PyInstaller:
+- Собирает проект в `DebugVarEdit.exe` в корневой папке.
+- Включает:
+ - все необходимые `.dll` (например, `libclang.dll`),
+ - иконку (`icon.ico`),
+ - плагины PySide2.
+- Очищает временные папки после сборки:
+ - `build_temp`
+ - `__pycache__`
+ - `DebugVarEdit_GUI.*`
+
+> Все пути, имена файлов, временные папки и выбор между Nuitka и PyInstaller можно настроить в начале файла `build_and_clean.py`.
+
+### Установка зависимостей
+
+```bash
+pip install PySide2 lxml nuitka pyinstaller
+```
\ No newline at end of file
diff --git a/build/build_and_clean.py b/Src/build/build_and_clean.py
similarity index 100%
rename from build/build_and_clean.py
rename to Src/build/build_and_clean.py
diff --git a/Src/scan_progress_gui.py b/Src/scan_progress_gui.py
index 79e5ec3..350dd87 100644
--- a/Src/scan_progress_gui.py
+++ b/Src/scan_progress_gui.py
@@ -7,7 +7,7 @@ import contextlib
import io
import json
from scan_vars import run_scan
-from var_table import var_tableWidget, rows
+from var_table import VariableTableWidget, rows
from PySide2.QtWidgets import (
QApplication, QWidget, QTableWidget, QTableWidgetItem,
@@ -73,13 +73,13 @@ class EmittingStream(QObject):
self._buffer = ""
-
class ProcessOutputWindow(QDialog):
- def __init__(self, proj_path, makefile_path, xml_path, on_done_callback=None):
- super().__init__()
+ def __init__(self, proj_path, makefile_path, xml_path, on_done_callback=None, parent=None):
+ super().__init__(parent)
self.setWindowTitle("Поиск переменных...")
self.resize(600, 480)
self.setModal(True)
+ self.setAttribute(Qt.WA_DeleteOnClose)
self.proj_path = proj_path
self.makefile_path = makefile_path
diff --git a/Src/var_selector_table.py b/Src/var_selector_table.py
index e0d9456..201450a 100644
--- a/Src/var_selector_table.py
+++ b/Src/var_selector_table.py
@@ -244,7 +244,6 @@ class VariableSelectWidget(QWidget):
def filter_tree(self):
text = self.search_input.text().strip().lower()
- print(f"[{self.objectName()}] Filtering tree with text: '{text}'")
path_parts = split_path(text) if text else []
if '.' not in text and '->' not in text and '[' not in text and text != '':
@@ -358,8 +357,6 @@ class VariableSelectWidget(QWidget):
self.completer.setModel(QStringListModel(completions))
self.completer.complete()
- print(f"[{self.objectName()}] Updating completions for text: '{text}' -> {len(completions)} completions found.")
- print(f" Completions: {completions[:5]}") # Вывести первые 5 для проверки
return completions
@@ -469,7 +466,6 @@ class VariableSelectWidget(QWidget):
def on_search_text_changed(self, text):
sender_widget = self.sender()
sender_name = sender_widget.objectName() if sender_widget else "Unknown Sender"
- print(f"[{self.objectName()}] (Sender: {sender_name}) Search text changed: '{text}'")
self.completer.setWidget(self.search_input)
self.filter_tree()
diff --git a/Src/var_selector_window.py b/Src/var_selector_window.py
index 190ea2f..8eb3361 100644
--- a/Src/var_selector_window.py
+++ b/Src/var_selector_window.py
@@ -15,7 +15,7 @@ import var_selector_table
array_re = re.compile(r'^(\w+)\[(\d+)\]$')
-class var_selector_windowDialog(QDialog):
+class VariableSelectorDialog(QDialog):
def __init__(self, table, all_vars, structs, typedefs, xml_path=None, parent=None):
super().__init__(parent)
self.setWindowTitle("Выбор переменных")
@@ -62,11 +62,29 @@ class var_selector_windowDialog(QDialog):
self.selected_vars_widget.tree.itemDoubleClicked.connect(self.on_rigth_tree_double_click)
self.selected_vars_widget.setObjectName("RightTable")
+ # Подписи над таблицами
+ label_all = QLabel("Все переменные")
+ label_all.setStyleSheet("font-weight: bold; font-size: 14px;")
+
+ label_selected = QLabel("Выбранные переменные")
+ label_selected.setStyleSheet("font-weight: bold; font-size: 14px;")
+
# --- Лэйауты ---
main_layout = QVBoxLayout(self) # главный вертикальный layout окна
- tables_layout = QHBoxLayout() # горизонтальный layout с таблицами и кнопками
+ # Чекбокс автодополнения — первый в главном layout
+ main_layout.addWidget(self.autocomplete_checkbox)
+
+ # Подписи над таблицами
+ labels_layout = QHBoxLayout()
+ labels_layout.addWidget(label_all)
+ labels_layout.addStretch()
+ labels_layout.addWidget(label_selected)
+ main_layout.addLayout(labels_layout)
+
+ # Горизонтальный layout с таблицами и кнопками
+ tables_layout = QHBoxLayout()
# Левая таблица
self.vars_widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
@@ -101,7 +119,7 @@ class var_selector_windowDialog(QDialog):
self.btn_accept.clicked.connect(self.on_apply_clicked)
# Соединяем чекбокс с методом виджета
- self.autocomplete_checkbox.stateChanged.connect(self.vars_widget.set_autocomplete)
+ self.autocomplete_checkbox.stateChanged.connect(self.set_autocomplete_tables)
# Устанавливаем начальное состояние автодополнения в виджете
self.vars_widget.set_autocomplete(self.autocomplete_checkbox.isChecked())
self.selected_vars_widget.set_autocomplete(self.autocomplete_checkbox.isChecked())
@@ -224,13 +242,6 @@ class var_selector_windowDialog(QDialog):
self.accept()
-
- def save_checkbox_state(self):
- self.settings.setValue("autocomplete_enabled", self.autocomplete_checkbox.isChecked())
-
-
-
-
# Обнови on_left_tree_double_click:
def on_left_tree_double_click(self, item, column):
selected_names = [item.text(0)]
@@ -373,3 +384,9 @@ class var_selector_windowDialog(QDialog):
def save_checkbox_state(self):
self.settings.setValue("autocomplete_enabled", self.autocomplete_checkbox.isChecked())
+
+
+
+ def set_autocomplete_tables(self, state):
+ self.vars_widget.set_autocomplete(state)
+ self.selected_vars_widget.set_autocomplete(state)
\ No newline at end of file
diff --git a/Src/var_table.py b/Src/var_table.py
index 44e4dfb..81be6bb 100644
--- a/Src/var_table.py
+++ b/Src/var_table.py
@@ -60,8 +60,14 @@ class FilterDialog(QDialog):
return [cb.text() for cb in self.checkboxes if cb.isChecked()]
-
-class var_tableWidget(QTableWidget):
+class CtrlScrollComboBox(QComboBox):
+ def wheelEvent(self, event):
+ if event.modifiers() & Qt.ControlModifier:
+ super().wheelEvent(event)
+ else:
+ event.ignore()
+
+class VariableTableWidget(QTableWidget):
def __init__(self, parent=None):
super().__init__(0, 8, parent)
# Таблица переменных
@@ -82,11 +88,12 @@ class var_tableWidget(QTableWidget):
self.pt_types_all = [t.replace('pt_', '') for t in self.type_options]
self.iq_types_all = ['iq_none', 'iq'] + [f'iq{i}' for i in range(1, 31)]
# Задаём базовые iq-типы (без префикса 'iq_')
- self.iq_types = ['iq_none', 'iq24', 'iq19', 'iq15', 'iq10']
+ self.iq_types = ['iq_none', 'iq', 'iq10', 'iq15', 'iq19', 'iq24']
# Фильтруем типы из type_map.values() исключая те, что содержат 'arr' или 'ptr'
- self.type_options = [t for t in set(type_map.values()) if 'arr' not in t and 'ptr' not in t]
+ type_options = [t for t in dict.fromkeys(type_map.values()) if 'arr' not in t and 'ptr' not in t and
+ 'struct' not in t and 'union' not in t and '64' not in t]
# Формируем display_type_options без префикса 'pt_'
- self.pt_types = [t.replace('pt_', '') for t in self.type_options]
+ self.pt_types = [t.replace('pt_', '') for t in type_options]
self._iq_type_filter = list(self.iq_types) # Текущий фильтр iq типов (по умолчанию все)
self._pt_type_filter = list(self.pt_types)
@@ -117,9 +124,6 @@ class var_tableWidget(QTableWidget):
def populate(self, vars_list, structs, on_change_callback):
self.var_list = vars_list
- self.type_options = list(dict.fromkeys(type_map.values()))
- self.pt_types = [t.replace('pt_', '') for t in self.type_options]
- iq_types = ['iq_none', 'iq'] + [f'iq{i}' for i in range(1, 31)]
# --- ДО: удаляем отображение структур и union-переменных
for var in vars_list:
@@ -168,7 +172,7 @@ class var_tableWidget(QTableWidget):
self.setItem(row, rows.type, origin_item)
# pt_type
- pt_combo = QComboBox()
+ pt_combo = CtrlScrollComboBox()
pt_combo.addItems(self.pt_types)
value = var['pt_type'].replace('pt_', '')
if value not in self.pt_types:
@@ -176,11 +180,10 @@ class var_tableWidget(QTableWidget):
pt_combo.setCurrentText(value)
pt_combo.currentTextChanged.connect(on_change_callback)
pt_combo.setStyleSheet(style_with_padding)
- pt_combo.wheelEvent = lambda e: e.ignore()
self.setCellWidget(row, rows.pt_type, pt_combo)
# iq_type
- iq_combo = QComboBox()
+ iq_combo = CtrlScrollComboBox()
iq_combo.addItems(self.iq_types)
value = var['iq_type'].replace('t_', '')
if value not in self.iq_types:
@@ -188,17 +191,15 @@ class var_tableWidget(QTableWidget):
iq_combo.setCurrentText(value)
iq_combo.currentTextChanged.connect(on_change_callback)
iq_combo.setStyleSheet(style_with_padding)
- iq_combo.wheelEvent = lambda e: e.ignore()
self.setCellWidget(row, rows.iq_type, iq_combo)
# return_type
- ret_combo = QComboBox()
+ ret_combo = CtrlScrollComboBox()
ret_combo.addItems(self.iq_types)
value = var['return_type'].replace('t_', '')
ret_combo.setCurrentText(value)
ret_combo.currentTextChanged.connect(on_change_callback)
ret_combo.setStyleSheet(style_with_padding)
- ret_combo.wheelEvent = lambda e: e.ignore()
self.setCellWidget(row, rows.ret_type, ret_combo)
# short_name
@@ -276,7 +277,7 @@ class var_tableWidget(QTableWidget):
def on_header_clicked(self, logicalIndex):
if logicalIndex == rows.pt_type:
- dlg = FilterDialog(self, self.pt_types_all, self._pt_type_filter, "Выберите Pointer Types")
+ dlg = FilterDialog(self, self.pt_types_all, self._pt_type_filter, "Выберите базовые типы")
if dlg.exec_():
self._pt_type_filter = dlg.get_selected()
self.update_comboboxes({rows.pt_type: self._pt_type_filter})
@@ -309,6 +310,7 @@ class var_tableWidget(QTableWidget):
current = combo.currentText()
combo.blockSignals(True)
combo.clear()
+
combo.addItems(allowed_items)
if current in allowed_items:
combo.setCurrentText(current)
diff --git a/debug_vars.c b/debug_vars.c
deleted file mode 100644
index 5e6d95d..0000000
--- a/debug_vars.c
+++ /dev/null
@@ -1,341 +0,0 @@
-//
-#include "debug_tools.h"
-
-
-//
-#include "vector.h"
-#include "errors.h"
-#include "RS_Functions_modbus.h"
-#include "xp_project.h"
-#include "adc_tools.h"
-#include "pwm_vector_regul.h"
-#include "log_can.h"
-#include "f281xpwm.h"
-#include "v_pwm24.h"
-#include "xp_write_xpwm_time.h"
-#include "dq_to_alphabeta_cos.h"
-#include "teta_calc.h"
-#include "rotation_speed.h"
-#include "detect_phase_break2.h"
-#include "RS_Functions.h"
-#include "Spartan2E_Functions.h"
-#include "xp_controller.h"
-#include "xp_rotation_sensor.h"
-#include "x_serial_bus.h"
-#include "x_parallel_bus.h"
-#include "xPeriphSP6_loader.h"
-#include "log_params.h"
-#include "CAN_Setup.h"
-#include "CRC_Functions.h"
-#include "log_to_memory.h"
-#include "global_time.h"
-#include "svgen_dq.h"
-#include "pid_reg3.h"
-#include "IQmathLib.h"
-#include "doors_control.h"
-#include "isolation.h"
-#include "main22220.h"
-#include "optical_bus.h"
-#include "alarm_log_can.h"
-#include "bender.h"
-#include "can_watercool.h"
-#include "detect_phase_break.h"
-#include "modbus_read_table.h"
-#include "rmp_cntl_my1.h"
-
-
-//
-extern int ADC0finishAddr;
-extern int ADC0startAddr;
-extern int ADC1finishAddr;
-extern int ADC1startAddr;
-extern int ADC2finishAddr;
-extern int ADC2startAddr;
-extern int ADC_f[2][16];
-extern int ADC_sf[2][16];
-extern int ADDR_FOR_ALL;
-extern int BUSY;
-extern BENDER Bender[2];
-extern int CAN_answer_wait[32];
-extern int CAN_count_cycle_input_units[8];
-extern int CAN_no_answer[32];
-extern int CAN_refresh_cicle[32];
-extern int CAN_request_sent[32];
-extern int CAN_timeout[32];
-extern int CAN_timeout_cicle[32];
-extern int CNTRL_ADDR;
-extern const int CNTRL_ADDR_UNIVERSAL;
-extern _iq CONST_15;
-extern _iq CONST_23;
-extern int CanOpenUnites[30];
-extern int CanTimeOutErrorTR;
-extern XControll_reg Controll;
-extern int Dpwm;
-extern int Dpwm2;
-extern int Dpwm4;
-extern int EvaTimer1InterruptCount;
-extern int EvaTimer2InterruptCount;
-extern int EvbTimer3InterruptCount;
-extern int EvbTimer4InterruptCount;
-extern int Fpwm;
-extern int IN0finishAddr;
-extern int IN0startAddr;
-extern int IN1finishAddr;
-extern int IN1startAddr;
-extern int IN2finishAddr;
-extern int IN2startAddr;
-extern float IQ_OUT_NOM;
-extern long I_OUT_1_6_NOMINAL_IQ;
-extern long I_OUT_1_8_NOMINAL_IQ;
-extern float I_OUT_NOMINAL;
-extern long I_OUT_NOMINAL_IQ;
-extern long I_ZPT_NOMINAL_IQ;
-extern _iq Id_out_max_full;
-extern _iq Id_out_max_low_speed;
-extern _iq Iq_out_max;
-extern _iq Iq_out_nom;
-extern const unsigned long K_LEM_ADC[20];
-extern float KmodTerm;
-extern int ROTfinishAddr;
-extern unsigned int RS_Len[70];
-extern const unsigned int R_ADC[20];
-extern int RotPlaneStartAddr;
-extern _iq SQRT_32;
-extern int Unites[8][128];
-extern int VAR_FREQ_PWM_XTICS;
-extern int VAR_PERIOD_MAX_XTICS;
-extern int VAR_PERIOD_MIN_BR_XTICS;
-extern int VAR_PERIOD_MIN_XTICS;
-extern int Zpwm;
-extern WINDING a;
-extern volatile AddrToSent addrToSent;
-extern unsigned int adr_read_from_modbus3;
-extern ALARM_LOG_CAN alarm_log_can;
-extern ALARM_LOG_CAN_SETUP alarm_log_can_setup;
-extern ANALOG_VALUE analog;
-extern int ar_sa_all[3][6][4][7];
-extern _iq ar_tph[7];
-extern int block_size_counter_fast;
-extern int block_size_counter_slow;
-extern _iq break_result_1;
-extern _iq break_result_2;
-extern _iq break_result_3;
-extern _iq break_result_4;
-extern Byte byte;
-extern long c_s;
-extern int calibration1;
-extern int calibration2;
-extern test_functions callfunc;
-extern CANOPEN_CAN_SETUP canopen_can_setup;
-extern unsigned int capnum0;
-extern unsigned int capnum1;
-extern unsigned int capnum2;
-extern unsigned int capnum3;
-extern unsigned int chNum;
-extern BREAK_PHASE_I chanell1;
-extern BREAK_PHASE_I chanell2;
-extern int cmd_3_or_16;
-extern int compress_size;
-extern ControlReg controlReg;
-extern COS_FI_STRUCT cos_fi;
-extern unsigned int count_error_sync;
-extern int count_modbus_table_changed;
-extern int count_run_pch;
-extern WORD crc_16_tab[256];
-extern char crypt[34];
-extern int cur_position_buf_modbus16_can;
-extern CYCLE cycle[32];
-extern int delta_capnum;
-extern int delta_error;
-extern volatile DOORS_STATUS doors;
-extern int enable_can;
-extern int enable_can_recive_after_units_box;
-extern _iq err_level_adc;
-extern _iq err_level_adc_on_go;
-extern unsigned int err_main;
-extern int err_modbus16;
-extern int err_modbus3;
-extern ERRORS errors;
-extern FLAG f;
-extern volatile int fail;
-extern FAULTS faults;
-extern FIFO fifo;
-extern ANALOG_VALUE filter;
-extern int flag_buf;
-extern int flag_enable_can_from_mpu;
-extern int flag_enable_can_from_terminal;
-extern int flag_on_off_pch;
-extern unsigned int flag_received_first_mess_from_MPU;
-extern unsigned int flag_reverse;
-extern unsigned int flag_send_answer_rs;
-extern int flag_test_tabe_filled;
-extern int flag_we_int_pwm_on;
-extern _iq freq1;
-extern float freqTerm;
-extern GLOBAL_TIME global_time;
-extern int hb_logs_data;
-extern int i;
-extern BREAK2_PHASE i1_out;
-extern BREAK2_PHASE i2_out;
-extern int init_log[3];
-extern _iq19 iq19_k_norm_ADC[20];
-extern _iq19 iq19_zero_ADC[20];
-extern _iq iq_alfa_coef;
-extern _iq iq_k_norm_ADC[20];
-extern IQ_LOGSPARAMS iq_logpar;
-extern _iq iq_max;
-extern _iq iq_norm_ADC[20];
-extern ISOLATION isolation1;
-extern ISOLATION isolation2;
-extern _iq k1;
-extern float kI_D;
-extern float kI_D_Inv31;
-extern float kI_Q;
-extern float kI_Q_Inv31;
-extern float kP_D;
-extern float kP_D_Inv31;
-extern float kP_Q;
-extern float kP_Q_Inv31;
-extern _iq koef_Base_stop_run;
-extern _iq koef_Iabc_filter;
-extern _iq koef_Im_filter;
-extern _iq koef_Im_filter_long;
-extern _iq koef_K_stop_run;
-extern _iq koef_Krecup;
-extern _iq koef_Min_recup;
-extern _iq koef_TemperBSU_long_filter;
-extern _iq koef_Ud_fast_filter;
-extern _iq koef_Ud_long_filter;
-extern _iq koef_Wlong;
-extern _iq koef_Wout_filter;
-extern _iq koef_Wout_filter_long;
-extern long koeff_Fs_filter;
-extern long koeff_Idq_filter;
-extern _iq koeff_Iq_filter;
-extern long koeff_Iq_filter_slow;
-extern long koeff_Ud_filter;
-extern long koeff_Uq_filter;
-extern volatile unsigned long length;
-extern _iq level_on_off_break[13][2];
-extern logcan_TypeDef log_can;
-extern LOG_CAN_SETUP log_can_setup;
-extern TYPE_LOG_PARAMS log_params;
-extern long logbuf_sync1[10];
-extern LOGSPARAMS logpar;
-extern int m_PWM;
-extern MAILBOXS_CAN_SETUP mailboxs_can_setup;
-extern int manufactorerAndProductID;
-extern MODBUS_REG_STRUCT * modbus_table_can_in;
-extern MODBUS_REG_STRUCT * modbus_table_can_out;
-extern MODBUS_REG_STRUCT modbus_table_in[450];
-extern MODBUS_REG_STRUCT modbus_table_out[450];
-extern MODBUS_REG_STRUCT * modbus_table_rs_in;
-extern MODBUS_REG_STRUCT * modbus_table_rs_out;
-extern MODBUS_REG_STRUCT modbus_table_test[450];
-extern MPU_CAN_SETUP mpu_can_setup;
-extern NEW_CYCLE_FIFO new_cycle_fifo;
-extern int no_write;
-extern int no_write_slow;
-extern int number_modbus_table_changed;
-extern OPTICAL_BUS_DATA optical_read_data;
-extern OPTICAL_BUS_DATA optical_write_data;
-extern MODBUS_REG_STRUCT options_controller[200];
-extern _iq pidCur_Ki;
-extern PIDREG3 pidD;
-extern PIDREG3 pidD2;
-extern PIDREG3 pidFvect;
-extern int pidFvectKi_test;
-extern int pidFvectKp_test;
-extern PIDREG3 pidPvect;
-extern PIDREG3 pidQ;
-extern PIDREG3 pidQ2;
-extern PIDREG_KOEFFICIENTS pidReg_koeffs;
-extern PIDREG3 pidTetta;
-extern POWER_RATIO power_ratio;
-extern int prev_flag_buf;
-extern unsigned int prev_status_received;
-extern T_project project;
-extern PWMGEND pwmd;
-extern T_controller_read r_c_sbus;
-extern T_controller_read r_controller;
-extern FIFO refo;
-extern TMS_TO_TERMINAL_STRUCT reply;
-extern TMS_TO_TERMINAL_TEST_ALL_STRUCT reply_test_all;
-extern RMP_MY1 rmp_freq;
-extern RMP_MY1 rmp_wrot;
-extern T_rotation_sensor rotation_sensor;
-extern ROTOR_VALUE rotor;
-extern RS_DATA_STRUCT rs_a;
-extern RS_DATA_STRUCT rs_b;
-extern unsigned int sincronisationFault;
-extern char size_cmd15;
-extern char size_cmd16;
-extern int size_fast_done;
-extern int size_slow_done;
-extern int stop_log;
-extern int stop_log_slow;
-extern SVGENDQ svgen_dq_1;
-extern SVGENDQ svgen_dq_2;
-extern SVGEN_PWM24 svgen_pwm24_1;
-extern SVGEN_PWM24 svgen_pwm24_2;
-extern unsigned int temp;
-extern _iq temperature_limit_koeff;
-extern INVERTER_TEMPERATURES temperature_warning_BI1;
-extern INVERTER_TEMPERATURES temperature_warning_BI2;
-extern RECTIFIER_TEMPERATURES temperature_warning_BV1;
-extern RECTIFIER_TEMPERATURES temperature_warning_BV2;
-extern TERMINAL_CAN_SETUP terminal_can_setup;
-extern TETTA_CALC tetta_calc;
-extern int timCNT_alg;
-extern int timCNT_prev;
-extern unsigned int time;
-extern float time_alg;
-extern long time_pause_enable_can_from_mpu;
-extern long time_pause_enable_can_from_terminal;
-extern int time_pause_logs;
-extern int time_pause_titles;
-extern volatile int tryNumb;
-extern UNITES_CAN_SETUP unites_can_setup;
-extern VECTOR_CONTROL vect_control;
-extern WaterCooler water_cooler;
-extern _iq winding_displacement;
-extern Word word;
-extern WordReversed wordReversed;
-extern WordToReverse wordToReverse;
-extern X_PARALLEL_BUS x_parallel_bus_project;
-extern X_SERIAL_BUS x_serial_bus_project;
-extern unsigned int xeeprom_controll_fast;
-extern unsigned int xeeprom_controll_store;
-extern XPWM_TIME xpwm_time;
-extern _iq zadan_Id_min;
-extern int zero_ADC[20];
-
-
-//
-int DebugVar_Qnt = 23;
-#pragma DATA_SECTION(dbg_vars,".dbgvar_info")
-DebugVar_t dbg_vars[] = {\
-{(char *)&ADC0finishAddr, pt_int16, t_iq_none, t_iq_none, "ADC0finish" }, \
-{(char *)&IQ_OUT_NOM, pt_float, t_iq_none, t_iq10, "IQ_OUT_NOM" }, \
-{(char *)&KmodTerm, pt_float, t_iq_none, t_iq10, "KmodTerm" }, \
-{(char *)&freqTerm, pt_float, t_iq_none, t_iq10, "freqTerm" }, \
-{(char *)&ADC_sf[0][0], pt_int16, t_iq_none, t_iq_none, "ADC_sf00" }, \
-{(char *)&ADC_sf[0][1], pt_int16, t_iq_none, t_iq_none, "ADC_sf01" }, \
-{(char *)&ADC_sf[0][2], pt_int16, t_iq_none, t_iq_none, "ADC_sf02" }, \
-{(char *)&ADC_sf[0][3], pt_int16, t_iq_none, t_iq_none, "ADC_sf03" }, \
-{(char *)&ADC_sf[0][4], pt_int16, t_iq_none, t_iq_none, "ADC_sf04" }, \
-{(char *)&ADC_sf[0][5], pt_int16, t_iq_none, t_iq_none, "ADC_sf05" }, \
-{(char *)&ADC_sf[0][6], pt_int16, t_iq_none, t_iq_none, "ADC_sf06" }, \
-{(char *)&ADC_sf[0][7], pt_int16, t_iq_none, t_iq_none, "ADC_sf07" }, \
-{(char *)&ADC_sf[0][8], pt_int16, t_iq_none, t_iq_none, "ADC_sf08" }, \
-{(char *)&ADC_sf[0][9], pt_int16, t_iq_none, t_iq_none, "ADC_sf09" }, \
-{(char *)&ADC_sf[0][10], pt_int16, t_iq_none, t_iq_none, "ADC_sf010" }, \
-{(char *)&ADC_sf[0][11], pt_int16, t_iq_none, t_iq_none, "ADC_sf011" }, \
-{(char *)&ADC_sf[0][12], pt_int16, t_iq_none, t_iq_none, "ADC_sf012" }, \
-{(char *)&ADC_sf[0][13], pt_int16, t_iq_none, t_iq_none, "ADC_sf013" }, \
-{(char *)&ADC_sf[0][14], pt_int16, t_iq_none, t_iq_none, "ADC_sf014" }, \
-{(char *)&ADC_sf[0][15], pt_int16, t_iq_none, t_iq_none, "ADC_sf015" }, \
-{(char *)&Bender[0].KOhms, pt_uint16, t_iq_none, t_iq_none, "Bend0.KOhm" }, \
-{(char *)&Bender[0].Times, pt_uint16, t_iq_none, t_iq_none, "Bend0.Time" }, \
-{(char *)&Bender[0].Error.all, pt_uint16, t_iq_none, t_iq_none, "Bend0.Err" }, \
-};
diff --git a/structs.xml b/structs.xml
deleted file mode 100644
index 648c043..0000000
--- a/structs.xml
+++ /dev/null
@@ -1,20181 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vars.xml b/vars.xml
deleted file mode 100644
index e6873e1..0000000
--- a/vars.xml
+++ /dev/null
@@ -1,4908 +0,0 @@
-
-
-
-
- true
- true
- ADC0finish
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/myXilinx/x_example_all.c
- false
- false
-
-
- false
- false
- ADC0startAddr
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/myXilinx/x_example_all.c
- false
- false
-
-
- false
- true
- ADC1finishAddr
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/myXilinx/x_example_all.c
- false
- false
-
-
- false
- false
- ADC1startAddr
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/myXilinx/x_example_all.c
- false
- false
-
-
- false
- false
- ADC2finishAddr
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/x_example_all.c
- false
- false
-
-
- false
- false
- ADC2startAddr
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/x_example_all.c
- false
- false
-
-
- false
- false
- ADDR_FOR_ALL
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/RS_Functions.c
- false
- false
-
-
- false
- false
- BUSY
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- Bender
- pt_arr_struct
- t_iq_none
-
- BENDER[2]
- Src/myLibs/bender.c
- false
- false
-
-
- false
- false
- CAN_answer_wait
- pt_arr_int16
- t_iq_none
-
- int[32]
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- CAN_count_cycle_input_units
- pt_arr_int16
- t_iq_none
-
- int[8]
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- CAN_no_answer
- pt_arr_int16
- t_iq_none
-
- int[32]
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- CAN_refresh_cicle
- pt_arr_int16
- t_iq_none
-
- int[32]
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- CAN_request_sent
- pt_arr_int16
- t_iq_none
-
- int[32]
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- CAN_timeout
- pt_arr_int16
- t_iq_none
-
- int[32]
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- CAN_timeout_cicle
- pt_arr_int16
- t_iq_none
-
- int[32]
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- CNTRL_ADDR
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/RS_Functions.c
- false
- false
-
-
- false
- false
- CNTRL_ADDR_UNIVERSAL
- pt_int16
- t_iq_none
-
- const int
- Src/myXilinx/RS_Functions.c
- false
- false
-
-
- false
- false
- CONST_15
- pt_int32
- t_iq
-
- _iq
- Src/myLibs/mathlib.c
- false
- false
-
-
- false
- false
- CONST_23
- pt_int32
- t_iq
-
- _iq
- Src/myLibs/mathlib.c
- false
- false
-
-
- false
- false
- CanOpenUnites
- pt_arr_int16
- t_iq_none
-
- int[30]
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- CanTimeOutErrorTR
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- Controll
- pt_union
- t_iq_none
-
- XControll_reg
- Src/myXilinx/Spartan2E_Functions.c
- false
- false
-
-
- false
- false
- Dpwm
- pt_int16
- t_iq_none
-
- int
- Src/main/PWMTMSHandle.c
- false
- false
-
-
- false
- false
- Dpwm2
- pt_int16
- t_iq_none
-
- int
- Src/main/PWMTMSHandle.c
- false
- false
-
-
- false
- false
- Dpwm4
- pt_int16
- t_iq_none
-
- int
- Src/main/PWMTMSHandle.c
- false
- false
-
-
- false
- false
- EvaTimer1InterruptCount
- pt_int16
- t_iq_none
-
- int
- Src/main/281xEvTimersInit.c
- false
- false
-
-
- false
- false
- EvaTimer2InterruptCount
- pt_int16
- t_iq_none
-
- int
- Src/main/281xEvTimersInit.c
- false
- false
-
-
- false
- false
- EvbTimer3InterruptCount
- pt_int16
- t_iq_none
-
- int
- Src/main/281xEvTimersInit.c
- false
- false
-
-
- false
- false
- EvbTimer4InterruptCount
- pt_int16
- t_iq_none
-
- int
- Src/main/281xEvTimersInit.c
- false
- false
-
-
- false
- false
- Fpwm
- pt_int16
- t_iq_none
-
- int
- Src/main/PWMTMSHandle.c
- false
- false
-
-
- false
- false
- Gott
- pt_arr_int8
- t_iq_none
-
- char[8][16]
- Src/myLibs/bender.c
- false
- true
-
-
- false
- false
- IN0finishAddr
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/x_example_all.c
- false
- false
-
-
- false
- false
- IN0startAddr
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/x_example_all.c
- false
- false
-
-
- false
- false
- IN1finishAddr
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/x_example_all.c
- false
- false
-
-
- false
- false
- IN1startAddr
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/x_example_all.c
- false
- false
-
-
- false
- false
- IN2finishAddr
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/x_example_all.c
- false
- false
-
-
- false
- false
- IN2startAddr
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/x_example_all.c
- false
- false
-
-
- true
- true
- IQ_OUT_NOM
- pt_float
- t_iq_none
- t_iq10
- float
- Src/main/params_i_out.c
- false
- false
-
-
- false
- false
- I_OUT_1_6_NOMINAL_IQ
- pt_int32
- t_iq_none
-
- long
- Src/main/params_i_out.c
- false
- false
-
-
- false
- false
- I_OUT_1_8_NOMINAL_IQ
- pt_int32
- t_iq_none
-
- long
- Src/main/params_i_out.c
- false
- false
-
-
- false
- false
- I_OUT_NOMINAL
- pt_float
- t_iq_none
-
- float
- Src/main/params_i_out.c
- false
- false
-
-
- false
- false
- I_OUT_NOMINAL_IQ
- pt_int32
- t_iq_none
-
- long
- Src/main/params_i_out.c
- false
- false
-
-
- false
- false
- I_ZPT_NOMINAL_IQ
- pt_int32
- t_iq_none
-
- long
- Src/main/params_i_out.c
- false
- false
-
-
- false
- false
- Id_out_max_full
- pt_int32
- t_iq
-
- _iq
- Src/VectorControl/regul_power.c
- false
- false
-
-
- false
- false
- Id_out_max_low_speed
- pt_int32
- t_iq
-
- _iq
- Src/VectorControl/regul_power.c
- false
- false
-
-
- false
- false
- Iq_out_max
- pt_int32
- t_iq
-
- _iq
- Src/main/params_i_out.c
- false
- false
-
-
- false
- false
- Iq_out_nom
- pt_int32
- t_iq
-
- _iq
- Src/main/params_i_out.c
- false
- false
-
-
- false
- false
- K_LEM_ADC
- pt_arr_uint32
- t_iq_none
-
- const unsigned long[20]
- Src/main/adc_tools.c
- false
- false
-
-
- true
- true
- Kmo
- pt_float
- t_iq_none
- t_iq10
- float
- Src/myXilinx/RS_Functions.c
- false
- false
-
-
- false
- false
- ROTfinishAddr
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/x_example_all.c
- false
- false
-
-
- false
- false
- RS_Len
- pt_arr_uint16
- t_iq_none
-
- unsigned int[70]
- Src/myXilinx/RS_Functions.c
- false
- false
-
-
- false
- false
- R_ADC
- pt_arr_uint16
- t_iq_none
-
- const unsigned int[20]
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- RotPlaneStartAddr
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/x_example_all.c
- false
- false
-
-
- false
- false
- SQRT_32
- pt_int32
- t_iq
-
- _iq
- Src/myLibs/mathlib.c
- false
- false
-
-
- false
- false
- Unites
- pt_arr_int16
- t_iq_none
-
- int[8][128]
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- VAR_FREQ_PWM_XTICS
- pt_int16
- t_iq_none
-
- int
- Src/main/PWMTools.c
- false
- false
-
-
- false
- false
- VAR_PERIOD_MAX_XTICS
- pt_int16
- t_iq_none
-
- int
- Src/main/PWMTools.c
- false
- false
-
-
- false
- false
- VAR_PERIOD_MIN_BR_XTICS
- pt_int16
- t_iq_none
-
- int
- Src/main/PWMTools.c
- false
- false
-
-
- false
- false
- VAR_PERIOD_MIN_XTICS
- pt_int16
- t_iq_none
-
- int
- Src/main/PWMTools.c
- false
- false
-
-
- false
- false
- Zpwm
- pt_int16
- t_iq_none
-
- int
- Src/main/PWMTMSHandle.c
- false
- false
-
-
- false
- false
- a
- pt_struct
- t_iq_none
-
- WINDING
- Src/main/PWMTools.c
- false
- false
-
-
- false
- false
- addrToSent
- pt_union
- t_iq_none
-
- volatile AddrToSent
- Src/myXilinx/xPeriphSP6_loader.c
- false
- false
-
-
- false
- false
- adr_read_from_modbus3
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/myXilinx/RS_Functions_modbus.c
- false
- false
-
-
- false
- false
- alarm_log_can
- pt_struct
- t_iq_none
-
- ALARM_LOG_CAN
- Src/myLibs/alarm_log_can.c
- false
- false
-
-
- false
- false
- alarm_log_can_setup
- pt_struct
- t_iq_none
-
- ALARM_LOG_CAN_SETUP
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- analog
- pt_struct
- t_iq_none
-
- ANALOG_VALUE
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- ar_sa_all
- pt_arr_int16
- t_iq_none
-
- int[3][6][4][7]
- Src/main/v_pwm24.c
- false
- false
-
-
- false
- false
- ar_tph
- pt_int32
- t_iq
-
- _iq[7]
- Src/main/v_pwm24.c
- false
- false
-
-
- false
- false
- biTemperatureLimits
- pt_arr_int16
- t_iq_none
-
- int[12]
- Src/main/init_protect_levels.c
- false
- true
-
-
- false
- false
- biTemperatureWarnings
- pt_arr_int16
- t_iq_none
-
- int[12]
- Src/main/init_protect_levels.c
- false
- true
-
-
- false
- false
- block_size_counter_fast
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/log_to_memory.c
- false
- false
-
-
- false
- false
- block_size_counter_slow
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/log_to_memory.c
- false
- false
-
-
- false
- false
- break_result_1
- pt_int32
- t_iq
-
- _iq
- Src/main/break_regul.c
- false
- false
-
-
- false
- false
- break_result_2
- pt_int32
- t_iq
-
- _iq
- Src/main/break_regul.c
- false
- false
-
-
- false
- false
- break_result_3
- pt_int32
- t_iq
-
- _iq
- Src/main/break_regul.c
- false
- false
-
-
- false
- false
- break_result_4
- pt_int32
- t_iq
-
- _iq
- Src/main/break_regul.c
- false
- false
-
-
- false
- false
- bvTemperatureLimits
- pt_arr_int16
- t_iq_none
-
- int[12]
- Src/main/init_protect_levels.c
- false
- true
-
-
- false
- false
- bvTemperatureWarnings
- pt_arr_int16
- t_iq_none
-
- int[12]
- Src/main/init_protect_levels.c
- false
- true
-
-
- false
- false
- byte
- pt_union
- t_iq_none
-
- Byte
- Src/myXilinx/xPeriphSP6_loader.c
- false
- false
-
-
- false
- false
- c_s
- pt_int32
- t_iq_none
-
- long
- Src/main/rotation_speed.c
- false
- false
-
-
- false
- false
- calibration1
- pt_int16
- t_iq_none
-
- int
- Src/main/isolation.c
- false
- false
-
-
- false
- false
- calibration2
- pt_int16
- t_iq_none
-
- int
- Src/main/isolation.c
- false
- false
-
-
- false
- false
- callfunc
- pt_struct
- t_iq_none
-
- test_functions
- Src/main/Main.c
- false
- false
-
-
- false
- false
- canopen_can_setup
- pt_struct
- t_iq_none
-
- CANOPEN_CAN_SETUP
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- capnum0
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/main/sync_tools.c
- false
- false
-
-
- false
- false
- capnum1
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/main/sync_tools.c
- false
- false
-
-
- false
- false
- capnum2
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/main/sync_tools.c
- false
- false
-
-
- false
- false
- capnum3
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/main/sync_tools.c
- false
- false
-
-
- false
- false
- chNum
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/myXilinx/x_example_all.c
- false
- false
-
-
- false
- false
- chanell1
- pt_struct
- t_iq_none
-
- BREAK_PHASE_I
- Src/main/detect_phase.c
- false
- false
-
-
- false
- false
- chanell2
- pt_struct
- t_iq_none
-
- BREAK_PHASE_I
- Src/main/detect_phase.c
- false
- false
-
-
- false
- false
- cmd_3_or_16
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/RS_Functions_modbus.c
- false
- false
-
-
- false
- false
- cmd_crc
- pt_arr_int8
- t_iq_none
-
- char[4]
- Src/myLibs/bender.c
- false
- true
-
-
- false
- false
- cmd_finish1
- pt_int8
- t_iq_none
-
- char
- Src/myLibs/bender.c
- false
- True
-
-
- false
- false
- cmd_finish2
- pt_int8
- t_iq_none
-
- char
- Src/myLibs/bender.c
- false
- True
-
-
- false
- false
- cmd_start
- pt_arr_int8
- t_iq_none
-
- char[5]
- Src/myLibs/bender.c
- false
- true
-
-
- false
- false
- cmd_txt
- pt_arr_int8
- t_iq_none
-
- char[4][8]
- Src/myLibs/bender.c
- false
- true
-
-
- false
- false
- compress_size
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/alarm_log_can.c
- false
- false
-
-
- false
- false
- controlReg
- pt_union
- t_iq_none
-
- ControlReg
- Src/myXilinx/xPeriphSP6_loader.c
- false
- false
-
-
- false
- false
- cos_fi
- pt_struct
- t_iq_none
-
- COS_FI_STRUCT
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- count_error_sync
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/main/sync_tools.c
- false
- false
-
-
- false
- false
- count_modbus_table_changed
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/modbus_fill_table.c
- false
- false
-
-
- false
- false
- count_run_pch
- pt_int16
- t_iq_none
-
- int
- Src/main/PWMTools.c
- false
- false
-
-
- false
- false
- counterSBWriteErrors
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/myXilinx/x_serial_bus.c
- false
- True
-
-
- false
- false
- crc_16_tab
- pt_arr_uint16
- t_iq_none
-
- WORD[256]
- Src/myXilinx/CRC_Functions.c
- false
- false
-
-
- false
- false
- crypt
- pt_arr_int8
- t_iq_none
-
- char[34]
- Src/myLibs/bender.c
- false
- false
-
-
- false
- false
- cur_position_buf_modbus16
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/message_modbus.c
- false
- True
-
-
- false
- false
- cur_position_buf_modbus16_can
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/message_modbus.c
- false
- false
-
-
- false
- false
- cur_position_buf_modbus3
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/message_modbus.c
- false
- True
-
-
- false
- false
- cycle
- pt_arr_struct
- t_iq_none
-
- CYCLE[32]
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- data_to_umu1_7f
- pt_int16
- t_iq_none
-
- int
- Src/main/init_protect_levels.c
- false
- True
-
-
- false
- false
- data_to_umu1_8
- pt_int16
- t_iq_none
-
- int
- Src/main/init_protect_levels.c
- false
- True
-
-
- false
- false
- data_to_umu2_7f
- pt_int16
- t_iq_none
-
- int
- Src/main/init_protect_levels.c
- false
- True
-
-
- false
- false
- data_to_umu2_8
- pt_int16
- t_iq_none
-
- int
- Src/main/init_protect_levels.c
- false
- True
-
-
- false
- false
- delta_capnum
- pt_int16
- t_iq_none
-
- int
- Src/main/sync_tools.c
- false
- false
-
-
- false
- false
- delta_error
- pt_int16
- t_iq_none
-
- int
- Src/main/sync_tools.c
- false
- false
-
-
- false
- false
- doors
- pt_union
- t_iq_none
-
- volatile DOORS_STATUS
- Src/main/doors_control.c
- false
- false
-
-
- false
- false
- dq_to_ab
- pt_struct
- t_iq_none
-
- DQ_TO_ALPHABETA
- Src/main/v_pwm24.c
- false
- true
-
-
- false
- false
- enable_can
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/message_modbus.c
- false
- false
-
-
- false
- false
- enable_can_recive_after_units_box
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- err_level_adc
- pt_int32
- t_iq
-
- _iq
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- err_level_adc_on_go
- pt_int32
- t_iq
-
- _iq
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- err_main
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/main/Main.c
- false
- false
-
-
- false
- false
- err_modbus16
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/RS_Functions_modbus.c
- false
- false
-
-
- false
- false
- err_modbus3
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/RS_Functions_modbus.c
- false
- false
-
-
- false
- false
- errors
- pt_struct
- t_iq_none
-
- ERRORS
- Src/main/errors.c
- false
- false
-
-
- false
- false
- f
- pt_struct
- t_iq_none
-
- FLAG
- Src/main/Main.c
- false
- false
-
-
- false
- false
- fail
- pt_int16
- t_iq_none
-
- volatile int
- Src/myXilinx/xPeriphSP6_loader.c
- false
- false
-
-
- false
- false
- faults
- pt_struct
- t_iq_none
-
- FAULTS
- Src/main/errors.c
- false
- false
-
-
- false
- false
- fifo
- pt_struct
- t_iq_none
-
- FIFO
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- filter
- pt_struct
- t_iq_none
-
- ANALOG_VALUE
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- flag_buf
- pt_int16
- t_iq_none
-
- int
- Src/main/rotation_speed.c
- false
- false
-
-
- false
- false
- flag_enable_can_from_mpu
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- flag_enable_can_from_terminal
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- flag_on_off_pch
- pt_int16
- t_iq_none
-
- int
- Src/main/PWMTools.c
- false
- false
-
-
- false
- false
- flag_received_first_mess_from_MPU
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/myXilinx/RS_Functions_modbus.c
- false
- false
-
-
- false
- false
- flag_reverse
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/myLibs/modbus_read_table.c
- false
- false
-
-
- false
- false
- flag_send_answer_rs
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/myXilinx/RS_Functions_modbus.c
- false
- false
-
-
- false
- false
- flag_test_tabe_filled
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/modbus_fill_table.c
- false
- false
-
-
- false
- false
- flag_we_int_pwm_on
- pt_int16
- t_iq_none
-
- int
- Src/main/PWMTools.c
- false
- false
-
-
- false
- false
- freq1
- pt_int32
- t_iq
-
- _iq
- Src/main/PWMTools.c
- false
- false
-
-
- true
- true
- freqT
- pt_float
- t_iq_none
- t_iq10
- float
- Src/myXilinx/RS_Functions.c
- false
- false
-
-
- false
- false
- global_time
- pt_struct
- t_iq_none
-
- GLOBAL_TIME
- Src/main/global_time.c
- false
- false
-
-
- false
- false
- hb_logs_data
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/log_to_memory.c
- false
- false
-
-
- false
- false
- i
- pt_int16
- t_iq_none
-
- int
- Src/main/PWMTools.c
- false
- false
-
-
- false
- false
- i1_out
- pt_struct
- t_iq_none
-
- BREAK2_PHASE
- Src/main/errors.c
- false
- false
-
-
- false
- false
- i2_out
- pt_struct
- t_iq_none
-
- BREAK2_PHASE
- Src/main/errors.c
- false
- false
-
-
- false
- false
- init_log
- pt_arr_int16
- t_iq_none
-
- int[3]
- Src/myLibs/log_can.c
- false
- false
-
-
- false
- false
- iq19_k_norm_ADC
- pt_int32
- t_iq19
-
- _iq19[20]
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- iq19_zero_ADC
- pt_int32
- t_iq19
-
- _iq19[20]
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- iq_alfa_coef
- pt_int32
- t_iq
-
- _iq
- Src/main/v_pwm24.c
- false
- false
-
-
- false
- false
- iq_k_norm_ADC
- pt_int32
- t_iq
-
- _iq[20]
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- iq_logpar
- pt_struct
- t_iq_none
-
- IQ_LOGSPARAMS
- Src/myLibs/log_to_memory.c
- false
- false
-
-
- false
- false
- iq_max
- pt_int32
- t_iq
-
- _iq
- Src/myLibs/svgen_dq_v2.c
- false
- false
-
-
- false
- false
- iq_norm_ADC
- pt_int32
- t_iq
-
- _iq[20]
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- isolation1
- pt_struct
- t_iq_none
-
- ISOLATION
- Src/main/isolation.c
- false
- false
-
-
- false
- false
- isolation2
- pt_struct
- t_iq_none
-
- ISOLATION
- Src/main/isolation.c
- false
- false
-
-
- false
- false
- k1
- pt_int32
- t_iq
-
- _iq
- Src/main/PWMTools.c
- false
- false
-
-
- false
- false
- kI_D
- pt_float
- t_iq_none
-
- float
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- kI_D_Inv31
- pt_float
- t_iq_none
-
- float
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- kI_Q
- pt_float
- t_iq_none
-
- float
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- kI_Q_Inv31
- pt_float
- t_iq_none
-
- float
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- kP_D
- pt_float
- t_iq_none
-
- float
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- kP_D_Inv31
- pt_float
- t_iq_none
-
- float
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- kP_Q
- pt_float
- t_iq_none
-
- float
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- kP_Q_Inv31
- pt_float
- t_iq_none
-
- float
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- kan
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/bender.c
- false
- True
-
-
- false
- false
- koef_Base_stop_run
- pt_int32
- t_iq
-
- _iq
- Src/main/break_regul.c
- false
- false
-
-
- false
- false
- koef_Iabc_filter
- pt_int32
- t_iq
-
- _iq
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- koef_Im_filter
- pt_int32
- t_iq
-
- _iq
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- koef_Im_filter_long
- pt_int32
- t_iq
-
- _iq
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- koef_K_stop_run
- pt_int32
- t_iq
-
- _iq
- Src/main/break_regul.c
- false
- false
-
-
- false
- false
- koef_Krecup
- pt_int32
- t_iq
-
- _iq
- Src/main/break_regul.c
- false
- false
-
-
- false
- false
- koef_Min_recup
- pt_int32
- t_iq
-
- _iq
- Src/main/break_regul.c
- false
- false
-
-
- false
- false
- koef_TemperBSU_long_filter
- pt_int32
- t_iq
-
- _iq
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- koef_Ud_fast_filter
- pt_int32
- t_iq
-
- _iq
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- koef_Ud_long_filter
- pt_int32
- t_iq
-
- _iq
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- koef_Wlong
- pt_int32
- t_iq
-
- _iq
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- koef_Wout_filter
- pt_int32
- t_iq
-
- _iq
- Src/main/rotation_speed.c
- false
- false
-
-
- false
- false
- koef_Wout_filter_long
- pt_int32
- t_iq
-
- _iq
- Src/main/rotation_speed.c
- false
- false
-
-
- false
- false
- koeff_Fs_filter
- pt_int32
- t_iq_none
-
- long
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- koeff_Idq_filter
- pt_int32
- t_iq_none
-
- long
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- koeff_Iq_filter
- pt_int32
- t_iq
-
- _iq
- Src/VectorControl/regul_power.c
- false
- false
-
-
- false
- false
- koeff_Iq_filter_slow
- pt_int32
- t_iq_none
-
- long
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- koeff_Ud_filter
- pt_int32
- t_iq_none
-
- long
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- koeff_Uq_filter
- pt_int32
- t_iq_none
-
- long
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- kom
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/bender.c
- false
- True
-
-
- false
- false
- length
- pt_uint32
- t_iq_none
-
- volatile unsigned long
- Src/myXilinx/xPeriphSP6_loader.c
- false
- false
-
-
- false
- false
- level_on_off_break
- pt_int32
- t_iq
-
- _iq[13][2]
- Src/main/break_tools.c
- false
- false
-
-
- false
- false
- log_can
- pt_struct
- t_iq_none
-
- logcan_TypeDef
- Src/myLibs/log_can.c
- false
- false
-
-
- false
- false
- log_can_setup
- pt_struct
- t_iq_none
-
- LOG_CAN_SETUP
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- log_params
- pt_struct
- t_iq_none
-
- TYPE_LOG_PARAMS
- Src/myLibs/log_params.c
- false
- false
-
-
- false
- false
- logbuf_sync1
- pt_arr_int32
- t_iq_none
-
- long[10]
- Src/main/sync_tools.c
- false
- false
-
-
- false
- false
- logpar
- pt_struct
- t_iq_none
-
- LOGSPARAMS
- Src/myLibs/log_to_memory.c
- false
- false
-
-
- false
- false
- mPWM_a
- pt_int16
- t_iq_none
-
- int
- Src/main/PWMTMSHandle.c
- false
- True
-
-
- false
- false
- mPWM_b
- pt_int16
- t_iq_none
-
- int
- Src/main/PWMTMSHandle.c
- false
- True
-
-
- false
- false
- m_PWM
- pt_int16
- t_iq_none
-
- int
- Src/main/PWMTMSHandle.c
- false
- false
-
-
- false
- false
- mailboxs_can_setup
- pt_struct
- t_iq_none
-
- MAILBOXS_CAN_SETUP
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- manufactorerAndProductID
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/xPeriphSP6_loader.c
- false
- false
-
-
- false
- false
- modbus_table_can_in
- pt_ptr_union
- t_iq_none
-
- MODBUS_REG_STRUCT *
- Src/myLibs/modbus_table.c
- false
- false
-
-
- false
- false
- modbus_table_can_out
- pt_ptr_union
- t_iq_none
-
- MODBUS_REG_STRUCT *
- Src/myLibs/modbus_table.c
- false
- false
-
-
- false
- false
- modbus_table_in
- pt_arr_union
- t_iq_none
-
- MODBUS_REG_STRUCT[450]
- Src/myLibs/modbus_table.c
- false
- false
-
-
- false
- false
- modbus_table_out
- pt_arr_union
- t_iq_none
-
- MODBUS_REG_STRUCT[450]
- Src/myLibs/modbus_table.c
- false
- false
-
-
- false
- false
- modbus_table_rs_in
- pt_ptr_union
- t_iq_none
-
- MODBUS_REG_STRUCT *
- Src/myLibs/modbus_table.c
- false
- false
-
-
- false
- false
- modbus_table_rs_out
- pt_ptr_union
- t_iq_none
-
- MODBUS_REG_STRUCT *
- Src/myLibs/modbus_table.c
- false
- false
-
-
- false
- false
- modbus_table_test
- pt_arr_union
- t_iq_none
-
- MODBUS_REG_STRUCT[450]
- Src/myLibs/modbus_table.c
- false
- false
-
-
- false
- false
- mpu_can_setup
- pt_struct
- t_iq_none
-
- MPU_CAN_SETUP
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- mzz_limit_100
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/modbus_read_table.c
- false
- True
-
-
- false
- false
- mzz_limit_1000
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/modbus_read_table.c
- false
- True
-
-
- false
- false
- mzz_limit_1100
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/modbus_read_table.c
- false
- True
-
-
- false
- false
- mzz_limit_1200
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/modbus_read_table.c
- false
- True
-
-
- false
- false
- mzz_limit_1400
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/modbus_read_table.c
- false
- True
-
-
- false
- false
- mzz_limit_1500
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/modbus_read_table.c
- false
- True
-
-
- false
- false
- mzz_limit_2000
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/modbus_read_table.c
- false
- True
-
-
- false
- false
- mzz_limit_500
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/modbus_read_table.c
- false
- True
-
-
- false
- false
- new_cycle_fifo
- pt_struct
- t_iq_none
-
- NEW_CYCLE_FIFO
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- no_write
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/log_to_memory.c
- false
- false
-
-
- false
- false
- no_write_slow
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/log_to_memory.c
- false
- false
-
-
- false
- false
- number_modbus_table_changed
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/modbus_fill_table.c
- false
- false
-
-
- false
- false
- optical_read_data
- pt_struct
- t_iq_none
-
- OPTICAL_BUS_DATA
- Src/main/optical_bus.c
- false
- false
-
-
- false
- false
- optical_write_data
- pt_struct
- t_iq_none
-
- OPTICAL_BUS_DATA
- Src/main/optical_bus.c
- false
- false
-
-
- false
- false
- options_controller
- pt_arr_union
- t_iq_none
-
- MODBUS_REG_STRUCT[200]
- Src/myXilinx/RS_Functions_modbus.c
- false
- false
-
-
- false
- false
- pidCur_Ki
- pt_int32
- t_iq
-
- _iq
- Src/main/v_pwm24.c
- false
- false
-
-
- false
- false
- pidD
- pt_struct
- t_iq_none
-
- PIDREG3
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- pidD2
- pt_struct
- t_iq_none
-
- PIDREG3
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- pidFvect
- pt_struct
- t_iq_none
-
- PIDREG3
- Src/VectorControl/regul_turns.c
- false
- false
-
-
- false
- false
- pidFvectKi_test
- pt_int16
- t_iq_none
-
- int
- Src/main/message2.c
- false
- false
-
-
- false
- false
- pidFvectKp_test
- pt_int16
- t_iq_none
-
- int
- Src/main/message2.c
- false
- false
-
-
- false
- false
- pidPvect
- pt_struct
- t_iq_none
-
- PIDREG3
- Src/VectorControl/regul_power.c
- false
- false
-
-
- false
- false
- pidQ
- pt_struct
- t_iq_none
-
- PIDREG3
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- pidQ2
- pt_struct
- t_iq_none
-
- PIDREG3
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- pidReg_koeffs
- pt_struct
- t_iq_none
-
- PIDREG_KOEFFICIENTS
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- pidTetta
- pt_struct
- t_iq_none
-
- PIDREG3
- Src/VectorControl/teta_calc.c
- false
- false
-
-
- false
- false
- power_ratio
- pt_struct
- t_iq_none
-
- POWER_RATIO
- Src/myLibs/modbus_read_table.c
- false
- false
-
-
- false
- false
- prev_flag_buf
- pt_int16
- t_iq_none
-
- int
- Src/main/rotation_speed.c
- false
- false
-
-
- false
- false
- prev_status_received
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/myLibs/log_can.c
- false
- false
-
-
- false
- false
- pwmd
- pt_struct
- t_iq_none
-
- PWMGEND
- Src/main/PWMTMSHandle.c
- false
- false
-
-
- false
- false
- r_c_sbus
- pt_struct
- t_iq_none
-
- T_controller_read
- Src/myXilinx/x_serial_bus.c
- false
- false
-
-
- false
- false
- r_controller
- pt_struct
- t_iq_none
-
- T_controller_read
- Src/myXilinx/xp_hwp.c
- false
- false
-
-
- false
- false
- refo
- pt_struct
- t_iq_none
-
- FIFO
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- reply
- pt_struct
- t_iq_none
-
- TMS_TO_TERMINAL_STRUCT
- Src/myXilinx/RS_Functions_modbus.c
- false
- false
-
-
- false
- false
- reply_test_all
- pt_struct
- t_iq_none
-
- TMS_TO_TERMINAL_TEST_ALL_STRUCT
- Src/myXilinx/RS_Functions_modbus.c
- false
- false
-
-
- false
- false
- return_var
- pt_int32
- t_iq_none
-
- long
- Src/main/Main.c
- false
- false
-
-
- false
- false
- rmp_freq
- pt_struct
- t_iq_none
-
- RMP_MY1
- Src/main/PWMTools.c
- false
- false
-
-
- false
- false
- rmp_wrot
- pt_struct
- t_iq_none
-
- RMP_MY1
- Src/main/rotation_speed.c
- false
- false
-
-
- false
- false
- rotation_sensor
- pt_struct
- t_iq_none
-
- T_rotation_sensor
- Src/myXilinx/xp_rotation_sensor.c
- false
- false
-
-
- false
- false
- rotor
- pt_struct
- t_iq_none
-
- ROTOR_VALUE
- Src/main/rotation_speed.c
- false
- false
-
-
- false
- false
- rs_a
- pt_struct
- t_iq_none
-
- RS_DATA_STRUCT
- Src/myXilinx/RS_Functions.c
- false
- false
-
-
- false
- false
- rs_b
- pt_struct
- t_iq_none
-
- RS_DATA_STRUCT
- Src/myXilinx/RS_Functions.c
- false
- false
-
-
- false
- false
- sincronisationFault
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/myLibs/modbus_read_table.c
- false
- false
-
-
- false
- false
- size_cmd15
- pt_int8
- t_iq_none
-
- char
- Src/myXilinx/RS_Functions.c
- false
- false
-
-
- false
- false
- size_cmd16
- pt_int8
- t_iq_none
-
- char
- Src/myXilinx/RS_Functions.c
- false
- false
-
-
- false
- false
- size_fast_done
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/log_to_memory.c
- false
- false
-
-
- false
- false
- size_slow_done
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/log_to_memory.c
- false
- false
-
-
- false
- false
- stop_log
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/log_to_memory.c
- false
- false
-
-
- false
- false
- stop_log_slow
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/log_to_memory.c
- false
- false
-
-
- false
- false
- svgen_dq_1
- pt_struct
- t_iq_none
-
- SVGENDQ
- Src/main/v_pwm24.c
- false
- false
-
-
- false
- false
- svgen_dq_2
- pt_struct
- t_iq_none
-
- SVGENDQ
- Src/main/v_pwm24.c
- false
- false
-
-
- false
- false
- svgen_pwm24_1
- pt_struct
- t_iq_none
-
- SVGEN_PWM24
- Src/main/v_pwm24.c
- false
- false
-
-
- false
- false
- svgen_pwm24_2
- pt_struct
- t_iq_none
-
- SVGEN_PWM24
- Src/main/v_pwm24.c
- false
- false
-
-
- false
- false
- temp
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/main/sync_tools.c
- false
- false
-
-
- false
- false
- temperature_limit_koeff
- pt_int32
- t_iq
-
- _iq
- Src/main/errors_temperature.c
- false
- false
-
-
- false
- false
- temperature_warning_BI1
- pt_union
- t_iq_none
-
- INVERTER_TEMPERATURES
- Src/main/errors.c
- false
- false
-
-
- false
- false
- temperature_warning_BI2
- pt_union
- t_iq_none
-
- INVERTER_TEMPERATURES
- Src/main/errors.c
- false
- false
-
-
- false
- false
- temperature_warning_BV1
- pt_union
- t_iq_none
-
- RECTIFIER_TEMPERATURES
- Src/main/errors.c
- false
- false
-
-
- false
- false
- temperature_warning_BV2
- pt_union
- t_iq_none
-
- RECTIFIER_TEMPERATURES
- Src/main/errors.c
- false
- false
-
-
- false
- false
- terminal_can_setup
- pt_struct
- t_iq_none
-
- TERMINAL_CAN_SETUP
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- tetta_calc
- pt_struct
- t_iq_none
-
- TETTA_CALC
- Src/VectorControl/teta_calc.c
- false
- false
-
-
- false
- false
- timCNT_alg
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/Spartan2E_Functions.c
- false
- false
-
-
- false
- false
- timCNT_prev
- pt_int16
- t_iq_none
-
- int
- Src/myXilinx/Spartan2E_Functions.c
- false
- false
-
-
- false
- false
- time
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/myXilinx/Spartan2E_Functions.c
- false
- false
-
-
- false
- false
- timePauseBENDER_Messages
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/main/main22220.c
- false
- True
-
-
- false
- false
- timePauseCAN_Messages
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/main/main22220.c
- false
- True
-
-
- false
- false
- time_alg
- pt_float
- t_iq_none
-
- float
- Src/myXilinx/Spartan2E_Functions.c
- false
- false
-
-
- false
- false
- time_pause_enable_can_from_mpu
- pt_int32
- t_iq_none
-
- long
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- time_pause_enable_can_from_terminal
- pt_int32
- t_iq_none
-
- long
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- time_pause_logs
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/log_can.c
- false
- false
-
-
- false
- false
- time_pause_titles
- pt_int16
- t_iq_none
-
- int
- Src/myLibs/log_can.c
- false
- false
-
-
- false
- false
- tryNumb
- pt_int16
- t_iq_none
-
- volatile int
- Src/myXilinx/xPeriphSP6_loader.c
- false
- false
-
-
- false
- false
- unites_can_setup
- pt_struct
- t_iq_none
-
- UNITES_CAN_SETUP
- Src/myLibs/CAN_Setup.c
- false
- false
-
-
- false
- false
- var_numb
- pt_int32
- t_iq_none
-
- long
- Src/main/Main.c
- false
- false
-
-
- false
- false
- vect_control
- pt_struct
- t_iq_none
-
- VECTOR_CONTROL
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- water_cooler
- pt_struct
- t_iq_none
-
- WaterCooler
- Src/myLibs/can_watercool.c
- false
- false
-
-
- false
- false
- winding_displacement
- pt_int32
- t_iq
-
- _iq
- Src/main/v_pwm24.c
- false
- false
-
-
- false
- false
- word
- pt_union
- t_iq_none
-
- Word
- Src/myXilinx/xPeriphSP6_loader.c
- false
- false
-
-
- false
- false
- wordReversed
- pt_union
- t_iq_none
-
- WordReversed
- Src/myXilinx/xPeriphSP6_loader.c
- false
- false
-
-
- false
- false
- wordToReverse
- pt_union
- t_iq_none
-
- WordToReverse
- Src/myXilinx/xPeriphSP6_loader.c
- false
- false
-
-
- false
- false
- x_parallel_bus_project
- pt_struct
- t_iq_none
-
- X_PARALLEL_BUS
- Src/myXilinx/x_parallel_bus.c
- false
- false
-
-
- false
- false
- x_serial_bus_project
- pt_struct
- t_iq_none
-
- X_SERIAL_BUS
- Src/myXilinx/x_serial_bus.c
- false
- false
-
-
- false
- false
- xeeprom_controll_fast
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/myXilinx/Spartan2E_Functions.c
- false
- false
-
-
- false
- false
- xeeprom_controll_store
- pt_uint16
- t_iq_none
-
- unsigned int
- Src/myXilinx/Spartan2E_Functions.c
- false
- false
-
-
- false
- false
- xpwm_time
- pt_struct
- t_iq_none
-
- XPWM_TIME
- Src/myXilinx/xp_write_xpwm_time.c
- false
- false
-
-
- false
- false
- zadan_Id_min
- pt_int32
- t_iq
-
- _iq
- Src/VectorControl/pwm_vector_regul.c
- false
- false
-
-
- false
- false
- zero_ADC
- pt_arr_int16
- t_iq_none
-
- int[20]
- Src/main/adc_tools.c
- false
- false
-
-
- true
- true
- ADC_sf00
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/main/adc_tools.c
- false
- false
-
-
- true
- true
- ADC_sf01
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/main/adc_tools.c
- false
- false
-
-
- true
- true
- ADC_sf02
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/main/adc_tools.c
- false
- false
-
-
- true
- true
- ADC_sf03
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/main/adc_tools.c
- false
- false
-
-
- true
- true
- ADC_sf04
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/main/adc_tools.c
- false
- false
-
-
- true
- true
- ADC_sf05
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/main/adc_tools.c
- false
- false
-
-
- true
- true
- ADC_sf06
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/main/adc_tools.c
- false
- false
-
-
- true
- true
- ADC_sf07
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/main/adc_tools.c
- false
- false
-
-
- true
- true
- ADC_sf08
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/main/adc_tools.c
- false
- false
-
-
- true
- true
- ADC_sf09
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/main/adc_tools.c
- false
- false
-
-
- true
- true
- ADC_sf010
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/main/adc_tools.c
- false
- false
-
-
- true
- true
- ADC_sf011
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/main/adc_tools.c
- false
- false
-
-
- true
- true
- ADC_sf012
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/main/adc_tools.c
- false
- false
-
-
- true
- true
- ADC_sf013
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/main/adc_tools.c
- false
- false
-
-
- true
- true
- ADC_sf014
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/main/adc_tools.c
- false
- false
-
-
- true
- true
- ADC_sf015
- pt_int16
- t_iq_none
- t_iq_none
- int
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- ADC_f
- pt_arr_int16
- t_iq_none
-
- int[2][16]
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- ADC_sf
- pt_arr_int16
- t_iq_none
-
- int[2][16]
- Src/main/adc_tools.c
- false
- false
-
-
- false
- false
- project
- pt_struct
- t_iq_none
-
- T_project
- Src/myXilinx/xp_project.c
- false
- false
-
-
- true
- true
- Bend0.KOhm
- pt_uint16
- t_iq_none
- t_iq_none
- unsigned int
- Src/myLibs/bender.c
- false
- false
-
-
- true
- true
- Bend0.Time
- pt_uint16
- t_iq_none
- t_iq_none
- unsigned int
- Src/myLibs/bender.c
- false
- false
-
-
- true
- true
- Bend0.Err
- pt_uint16
- t_iq_none
- t_iq_none
- unsigned int
- Src/myLibs/bender.c
- false
- false
-
- truetrueproject.controller.buildpt_uint16t_iq_nonet_iq_noneunsigned intSrc/myXilinx/xp_project.cfalsefalsetruetrueproject.controller.read.errors.allpt_uint16t_iq_nonet_iq_noneUInt16Src/myXilinx/xp_project.cfalsefalse
-
- Src/myXilinx/xp_project.h
- Src/myXilinx/RS_Functions_modbus.h
- Src/VectorControl/teta_calc.h
- Src/main/vector.h
- Src/main/v_pwm24.h
- Src/main/errors.h
- Src/VectorControl/pwm_vector_regul.h
- Src/main/f281xpwm.h
- Src/main/adc_tools.h
- Src/main/rotation_speed.h
- Src/myXilinx/xp_write_xpwm_time.h
- Src/myLibs/log_can.h
- Src/VectorControl/dq_to_alphabeta_cos.h
- Src/myXilinx/xPeriphSP6_loader.h
- Src/myXilinx/x_serial_bus.h
- Src/myXilinx/Spartan2E_Functions.h
- Src/myXilinx/x_parallel_bus.h
- Src/myXilinx/xp_rotation_sensor.h
- Src/myXilinx/xp_controller.h
- Src/myXilinx/RS_Functions.h
- Src/myLibs/svgen_dq.h
- Src/myLibs/detect_phase_break2.h
- Src/myLibs/pid_reg3.h
- Src/myLibs/log_to_memory.h
- Src/main/global_time.h
- Src/myLibs/log_params.h
- Src/myXilinx/CRC_Functions.h
- Src/myLibs/CAN_Setup.h
- Src/myLibs/IQmathLib.h
- Src/main/doors_control.h
- Src/main/isolation.h
- Src/main/main22220.h
- Src/main/optical_bus.h
- Src/myLibs/alarm_log_can.h
- Src/myLibs/bender.h
- Src/myLibs/can_watercool.h
- Src/myLibs/detect_phase_break.h
- Src/myLibs/modbus_read_table.h
- Src/myLibs/rmp_cntl_my1.h
-
-
-
- int
- Src/myXilinx/x_example_all.c
-
-
- int
- Src/myXilinx/x_example_all.c
-
-
- int
- Src/myXilinx/x_example_all.c
-
-
- int
- Src/myXilinx/x_example_all.c
-
-
- int
- Src/myXilinx/x_example_all.c
-
-
- int
- Src/myXilinx/x_example_all.c
-
-
- int[2][16]
- Src/main/adc_tools.c
-
-
- int[2][16]
- Src/main/adc_tools.c
-
-
- int
- Src/myXilinx/RS_Functions.c
-
-
- int
- Src/myLibs/CAN_Setup.c
-
-
- BENDER[2]
- Src/myLibs/bender.c
-
-
- int[32]
- Src/myLibs/CAN_Setup.c
-
-
- int[8]
- Src/myLibs/CAN_Setup.c
-
-
- int[32]
- Src/myLibs/CAN_Setup.c
-
-
- int[32]
- Src/myLibs/CAN_Setup.c
-
-
- int[32]
- Src/myLibs/CAN_Setup.c
-
-
- int[32]
- Src/myLibs/CAN_Setup.c
-
-
- int[32]
- Src/myLibs/CAN_Setup.c
-
-
- int
- Src/myXilinx/RS_Functions.c
-
-
- const int
- Src/myXilinx/RS_Functions.c
-
-
- _iq
- Src/myLibs/mathlib.c
-
-
- _iq
- Src/myLibs/mathlib.c
-
-
- int[30]
- Src/myLibs/CAN_Setup.c
-
-
- int
- Src/myLibs/CAN_Setup.c
-
-
- XControll_reg
- Src/myXilinx/Spartan2E_Functions.c
-
-
- int
- Src/main/PWMTMSHandle.c
-
-
- int
- Src/main/PWMTMSHandle.c
-
-
- int
- Src/main/PWMTMSHandle.c
-
-
- int
- Src/main/281xEvTimersInit.c
-
-
- int
- Src/main/281xEvTimersInit.c
-
-
- int
- Src/main/281xEvTimersInit.c
-
-
- int
- Src/main/281xEvTimersInit.c
-
-
- int
- Src/main/PWMTMSHandle.c
-
-
- int
- Src/myXilinx/x_example_all.c
-
-
- int
- Src/myXilinx/x_example_all.c
-
-
- int
- Src/myXilinx/x_example_all.c
-
-
- int
- Src/myXilinx/x_example_all.c
-
-
- int
- Src/myXilinx/x_example_all.c
-
-
- int
- Src/myXilinx/x_example_all.c
-
-
- float
- Src/main/params_i_out.c
-
-
- long
- Src/main/params_i_out.c
-
-
- long
- Src/main/params_i_out.c
-
-
- float
- Src/main/params_i_out.c
-
-
- long
- Src/main/params_i_out.c
-
-
- long
- Src/main/params_i_out.c
-
-
- _iq
- Src/VectorControl/regul_power.c
-
-
- _iq
- Src/VectorControl/regul_power.c
-
-
- _iq
- Src/main/params_i_out.c
-
-
- _iq
- Src/main/params_i_out.c
-
-
- const unsigned long[20]
- Src/main/adc_tools.c
-
-
- float
- Src/myXilinx/RS_Functions.c
-
-
- int
- Src/myXilinx/x_example_all.c
-
-
- unsigned int[70]
- Src/myXilinx/RS_Functions.c
-
-
- const unsigned int[20]
- Src/main/adc_tools.c
-
-
- int
- Src/myXilinx/x_example_all.c
-
-
- _iq
- Src/myLibs/mathlib.c
-
-
- int[8][128]
- Src/myLibs/CAN_Setup.c
-
-
- int
- Src/main/PWMTools.c
-
-
- int
- Src/main/PWMTools.c
-
-
- int
- Src/main/PWMTools.c
-
-
- int
- Src/main/PWMTools.c
-
-
- int
- Src/main/PWMTMSHandle.c
-
-
- WINDING
- Src/main/PWMTools.c
-
-
- volatile AddrToSent
- Src/myXilinx/xPeriphSP6_loader.c
-
-
- unsigned int
- Src/myXilinx/RS_Functions_modbus.c
-
-
- ALARM_LOG_CAN
- Src/myLibs/alarm_log_can.c
-
-
- ALARM_LOG_CAN_SETUP
- Src/myLibs/CAN_Setup.c
-
-
- ANALOG_VALUE
- Src/main/adc_tools.c
-
-
- int[3][6][4][7]
- Src/main/v_pwm24.c
-
-
- _iq[7]
- Src/main/v_pwm24.c
-
-
- int
- Src/myLibs/log_to_memory.c
-
-
- int
- Src/myLibs/log_to_memory.c
-
-
- _iq
- Src/main/break_regul.c
-
-
- _iq
- Src/main/break_regul.c
-
-
- _iq
- Src/main/break_regul.c
-
-
- _iq
- Src/main/break_regul.c
-
-
- Byte
- Src/myXilinx/xPeriphSP6_loader.c
-
-
- long
- Src/main/rotation_speed.c
-
-
- int
- Src/main/isolation.c
-
-
- int
- Src/main/isolation.c
-
-
- test_functions
- Src/main/Main.c
-
-
- CANOPEN_CAN_SETUP
- Src/myLibs/CAN_Setup.c
-
-
- unsigned int
- Src/main/sync_tools.c
-
-
- unsigned int
- Src/main/sync_tools.c
-
-
- unsigned int
- Src/main/sync_tools.c
-
-
- unsigned int
- Src/main/sync_tools.c
-
-
- unsigned int
- Src/myXilinx/x_example_all.c
-
-
- BREAK_PHASE_I
- Src/main/detect_phase.c
-
-
- BREAK_PHASE_I
- Src/main/detect_phase.c
-
-
- int
- Src/myXilinx/RS_Functions_modbus.c
-
-
- int
- Src/myLibs/alarm_log_can.c
-
-
- ControlReg
- Src/myXilinx/xPeriphSP6_loader.c
-
-
- COS_FI_STRUCT
- Src/VectorControl/pwm_vector_regul.c
-
-
- unsigned int
- Src/main/sync_tools.c
-
-
- int
- Src/myLibs/modbus_fill_table.c
-
-
- int
- Src/main/PWMTools.c
-
-
- WORD[256]
- Src/myXilinx/CRC_Functions.c
-
-
- char[34]
- Src/myLibs/bender.c
-
-
- int
- Src/myLibs/message_modbus.c
-
-
- CYCLE[32]
- Src/myLibs/CAN_Setup.c
-
-
- int
- Src/main/sync_tools.c
-
-
- int
- Src/main/sync_tools.c
-
-
- volatile DOORS_STATUS
- Src/main/doors_control.c
-
-
- int
- Src/myLibs/message_modbus.c
-
-
- int
- Src/myLibs/CAN_Setup.c
-
-
- _iq
- Src/main/adc_tools.c
-
-
- _iq
- Src/main/adc_tools.c
-
-
- unsigned int
- Src/main/Main.c
-
-
- int
- Src/myXilinx/RS_Functions_modbus.c
-
-
- int
- Src/myXilinx/RS_Functions_modbus.c
-
-
- ERRORS
- Src/main/errors.c
-
-
- FLAG
- Src/main/Main.c
-
-
- volatile int
- Src/myXilinx/xPeriphSP6_loader.c
-
-
- FAULTS
- Src/main/errors.c
-
-
- FIFO
- Src/myLibs/CAN_Setup.c
-
-
- ANALOG_VALUE
- Src/main/adc_tools.c
-
-
- int
- Src/main/rotation_speed.c
-
-
- int
- Src/myLibs/CAN_Setup.c
-
-
- int
- Src/myLibs/CAN_Setup.c
-
-
- int
- Src/main/PWMTools.c
-
-
- unsigned int
- Src/myXilinx/RS_Functions_modbus.c
-
-
- unsigned int
- Src/myLibs/modbus_read_table.c
-
-
- unsigned int
- Src/myXilinx/RS_Functions_modbus.c
-
-
- int
- Src/myLibs/modbus_fill_table.c
-
-
- int
- Src/main/PWMTools.c
-
-
- _iq
- Src/main/PWMTools.c
-
-
- float
- Src/myXilinx/RS_Functions.c
-
-
- GLOBAL_TIME
- Src/main/global_time.c
-
-
- int
- Src/myLibs/log_to_memory.c
-
-
- int
- Src/main/PWMTools.c
-
-
- BREAK2_PHASE
- Src/main/errors.c
-
-
- BREAK2_PHASE
- Src/main/errors.c
-
-
- int[3]
- Src/myLibs/log_can.c
-
-
- _iq19[20]
- Src/main/adc_tools.c
-
-
- _iq19[20]
- Src/main/adc_tools.c
-
-
- _iq
- Src/main/v_pwm24.c
-
-
- _iq[20]
- Src/main/adc_tools.c
-
-
- IQ_LOGSPARAMS
- Src/myLibs/log_to_memory.c
-
-
- _iq
- Src/myLibs/svgen_dq_v2.c
-
-
- _iq[20]
- Src/main/adc_tools.c
-
-
- ISOLATION
- Src/main/isolation.c
-
-
- ISOLATION
- Src/main/isolation.c
-
-
- _iq
- Src/main/PWMTools.c
-
-
- float
- Src/VectorControl/pwm_vector_regul.c
-
-
- float
- Src/VectorControl/pwm_vector_regul.c
-
-
- float
- Src/VectorControl/pwm_vector_regul.c
-
-
- float
- Src/VectorControl/pwm_vector_regul.c
-
-
- float
- Src/VectorControl/pwm_vector_regul.c
-
-
- float
- Src/VectorControl/pwm_vector_regul.c
-
-
- float
- Src/VectorControl/pwm_vector_regul.c
-
-
- float
- Src/VectorControl/pwm_vector_regul.c
-
-
- _iq
- Src/main/break_regul.c
-
-
- _iq
- Src/main/adc_tools.c
-
-
- _iq
- Src/main/adc_tools.c
-
-
- _iq
- Src/main/adc_tools.c
-
-
- _iq
- Src/main/break_regul.c
-
-
- _iq
- Src/main/break_regul.c
-
-
- _iq
- Src/main/break_regul.c
-
-
- _iq
- Src/main/adc_tools.c
-
-
- _iq
- Src/main/adc_tools.c
-
-
- _iq
- Src/main/adc_tools.c
-
-
- _iq
- Src/main/adc_tools.c
-
-
- _iq
- Src/main/rotation_speed.c
-
-
- _iq
- Src/main/rotation_speed.c
-
-
- long
- Src/VectorControl/pwm_vector_regul.c
-
-
- long
- Src/VectorControl/pwm_vector_regul.c
-
-
- _iq
- Src/VectorControl/regul_power.c
-
-
- long
- Src/VectorControl/pwm_vector_regul.c
-
-
- long
- Src/VectorControl/pwm_vector_regul.c
-
-
- long
- Src/VectorControl/pwm_vector_regul.c
-
-
- volatile unsigned long
- Src/myXilinx/xPeriphSP6_loader.c
-
-
- _iq[13][2]
- Src/main/break_tools.c
-
-
- logcan_TypeDef
- Src/myLibs/log_can.c
-
-
- LOG_CAN_SETUP
- Src/myLibs/CAN_Setup.c
-
-
- TYPE_LOG_PARAMS
- Src/myLibs/log_params.c
-
-
- long[10]
- Src/main/sync_tools.c
-
-
- LOGSPARAMS
- Src/myLibs/log_to_memory.c
-
-
- int
- Src/main/PWMTMSHandle.c
-
-
- MAILBOXS_CAN_SETUP
- Src/myLibs/CAN_Setup.c
-
-
- int
- Src/myXilinx/xPeriphSP6_loader.c
-
-
- MODBUS_REG_STRUCT *
- Src/myLibs/modbus_table.c
-
-
- MODBUS_REG_STRUCT *
- Src/myLibs/modbus_table.c
-
-
- MODBUS_REG_STRUCT[450]
- Src/myLibs/modbus_table.c
-
-
- MODBUS_REG_STRUCT[450]
- Src/myLibs/modbus_table.c
-
-
- MODBUS_REG_STRUCT *
- Src/myLibs/modbus_table.c
-
-
- MODBUS_REG_STRUCT *
- Src/myLibs/modbus_table.c
-
-
- MODBUS_REG_STRUCT[450]
- Src/myLibs/modbus_table.c
-
-
- MPU_CAN_SETUP
- Src/myLibs/CAN_Setup.c
-
-
- NEW_CYCLE_FIFO
- Src/myLibs/CAN_Setup.c
-
-
- int
- Src/myLibs/log_to_memory.c
-
-
- int
- Src/myLibs/log_to_memory.c
-
-
- int
- Src/myLibs/modbus_fill_table.c
-
-
- OPTICAL_BUS_DATA
- Src/main/optical_bus.c
-
-
- OPTICAL_BUS_DATA
- Src/main/optical_bus.c
-
-
- MODBUS_REG_STRUCT[200]
- Src/myXilinx/RS_Functions_modbus.c
-
-
- _iq
- Src/main/v_pwm24.c
-
-
- PIDREG3
- Src/VectorControl/pwm_vector_regul.c
-
-
- PIDREG3
- Src/VectorControl/pwm_vector_regul.c
-
-
- PIDREG3
- Src/VectorControl/regul_turns.c
-
-
- int
- Src/main/message2.c
-
-
- int
- Src/main/message2.c
-
-
- PIDREG3
- Src/VectorControl/regul_power.c
-
-
- PIDREG3
- Src/VectorControl/pwm_vector_regul.c
-
-
- PIDREG3
- Src/VectorControl/pwm_vector_regul.c
-
-
- PIDREG_KOEFFICIENTS
- Src/VectorControl/pwm_vector_regul.c
-
-
- PIDREG3
- Src/VectorControl/teta_calc.c
-
-
- POWER_RATIO
- Src/myLibs/modbus_read_table.c
-
-
- int
- Src/main/rotation_speed.c
-
-
- unsigned int
- Src/myLibs/log_can.c
-
-
- T_project
- Src/myXilinx/xp_project.c
-
-
- PWMGEND
- Src/main/PWMTMSHandle.c
-
-
- T_controller_read
- Src/myXilinx/x_serial_bus.c
-
-
- T_controller_read
- Src/myXilinx/xp_hwp.c
-
-
- FIFO
- Src/myLibs/CAN_Setup.c
-
-
- TMS_TO_TERMINAL_STRUCT
- Src/myXilinx/RS_Functions_modbus.c
-
-
- TMS_TO_TERMINAL_TEST_ALL_STRUCT
- Src/myXilinx/RS_Functions_modbus.c
-
-
- RMP_MY1
- Src/main/PWMTools.c
-
-
- RMP_MY1
- Src/main/rotation_speed.c
-
-
- T_rotation_sensor
- Src/myXilinx/xp_rotation_sensor.c
-
-
- ROTOR_VALUE
- Src/main/rotation_speed.c
-
-
- RS_DATA_STRUCT
- Src/myXilinx/RS_Functions.c
-
-
- RS_DATA_STRUCT
- Src/myXilinx/RS_Functions.c
-
-
- unsigned int
- Src/myLibs/modbus_read_table.c
-
-
- char
- Src/myXilinx/RS_Functions.c
-
-
- char
- Src/myXilinx/RS_Functions.c
-
-
- int
- Src/myLibs/log_to_memory.c
-
-
- int
- Src/myLibs/log_to_memory.c
-
-
- int
- Src/myLibs/log_to_memory.c
-
-
- int
- Src/myLibs/log_to_memory.c
-
-
- SVGENDQ
- Src/main/v_pwm24.c
-
-
- SVGENDQ
- Src/main/v_pwm24.c
-
-
- SVGEN_PWM24
- Src/main/v_pwm24.c
-
-
- SVGEN_PWM24
- Src/main/v_pwm24.c
-
-
- unsigned int
- Src/main/sync_tools.c
-
-
- _iq
- Src/main/errors_temperature.c
-
-
- INVERTER_TEMPERATURES
- Src/main/errors.c
-
-
- INVERTER_TEMPERATURES
- Src/main/errors.c
-
-
- RECTIFIER_TEMPERATURES
- Src/main/errors.c
-
-
- RECTIFIER_TEMPERATURES
- Src/main/errors.c
-
-
- TERMINAL_CAN_SETUP
- Src/myLibs/CAN_Setup.c
-
-
- TETTA_CALC
- Src/VectorControl/teta_calc.c
-
-
- int
- Src/myXilinx/Spartan2E_Functions.c
-
-
- int
- Src/myXilinx/Spartan2E_Functions.c
-
-
- unsigned int
- Src/myXilinx/Spartan2E_Functions.c
-
-
- float
- Src/myXilinx/Spartan2E_Functions.c
-
-
- long
- Src/myLibs/CAN_Setup.c
-
-
- long
- Src/myLibs/CAN_Setup.c
-
-
- int
- Src/myLibs/log_can.c
-
-
- int
- Src/myLibs/log_can.c
-
-
- volatile int
- Src/myXilinx/xPeriphSP6_loader.c
-
-
- UNITES_CAN_SETUP
- Src/myLibs/CAN_Setup.c
-
-
- VECTOR_CONTROL
- Src/VectorControl/pwm_vector_regul.c
-
-
- WaterCooler
- Src/myLibs/can_watercool.c
-
-
- _iq
- Src/main/v_pwm24.c
-
-
- Word
- Src/myXilinx/xPeriphSP6_loader.c
-
-
- WordReversed
- Src/myXilinx/xPeriphSP6_loader.c
-
-
- WordToReverse
- Src/myXilinx/xPeriphSP6_loader.c
-
-
- X_PARALLEL_BUS
- Src/myXilinx/x_parallel_bus.c
-
-
- X_SERIAL_BUS
- Src/myXilinx/x_serial_bus.c
-
-
- unsigned int
- Src/myXilinx/Spartan2E_Functions.c
-
-
- unsigned int
- Src/myXilinx/Spartan2E_Functions.c
-
-
- XPWM_TIME
- Src/myXilinx/xp_write_xpwm_time.c
-
-
- _iq
- Src/VectorControl/pwm_vector_regul.c
-
-
- int[20]
- Src/main/adc_tools.c
-
-
-